diff --git a/about.html b/about.html new file mode 100644 index 0000000..8158877 --- /dev/null +++ b/about.html @@ -0,0 +1,27 @@ +
+ + +
+

Wavelib is a web implementation of C/C++ 1D Wavelet Transform codebase using Emscripten and javascript.

+
+

Requirements : HTML5 compliant modern web browser with javascript enabled. This webapp uses asm.js and angularjs that are not compatible with + older browsers.

+
+

Inputs : You can enter the data vector using either the file input interface or data input interface. In either case, the input is just a + one dimensional data vector consisting only of numbers and only including common separators like commas or spaces.

+
+ +
+

C/C++ Codebase is available at my github page

+
+
+ +
+ +
+
+
diff --git a/display.html b/display.html index b840533..8a5478a 100644 --- a/display.html +++ b/display.html @@ -19,25 +19,25 @@
@@ -63,12 +63,12 @@

HPR : [{{hp2}} {{$last ? '' : ', '}}]

Decomposition Levels : {{J}}

APPX{{J}} : [{{a1}} {{$last ? '' : ', '}}]

-
-

DET{{j}} : [{{a2}} {{$last ? '' : ', '}}

+
+

DET : [{{a2}} {{$last ? '' : ', '}}]

diff --git a/front.html b/front.html index 64b43d6..3e4a280 100644 --- a/front.html +++ b/front.html @@ -4,6 +4,43 @@
+ +
+
+
+

Test Signals

+
+
+ + +
+
+
+ +
+
+
+

Data Input

+
+
+ + + +
+
+
+
@@ -18,39 +55,7 @@
-
-
-
-

Data Input

-
-
- - - -
-
-
-
-
-
-

Test Signals

-
-
- - -
-
-
+ +
diff --git a/index.html b/index.html index f102b26..907ce11 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - Wavelets Demo + Wavelets Online @@ -19,13 +19,13 @@ - WaveDemo + Wavelib
';return d},t}(),Dygraph.Plugins.RangeSelector=function(){"use strict";var t=function(){this.isIE_=/MSIE/.test(navigator.userAgent)&&!window.opera,this.hasTouchInterface_="undefined"!=typeof TouchEvent,this.isMobileDevice_=/mobile|android/gi.test(navigator.appVersion),this.interfaceCreated_=!1};return t.prototype.toString=function(){return"RangeSelector Plugin"},t.prototype.activate=function(t){return this.dygraph_=t,this.isUsingExcanvas_=t.isUsingExcanvas_,this.getOption_("showRangeSelector")&&this.createInterface_(),{layout:this.reserveSpace_,predraw:this.renderStaticLayer_,didDrawChart:this.renderInteractiveLayer_}},t.prototype.destroy=function(){this.bgcanvas_=null,this.fgcanvas_=null,this.leftZoomHandle_=null,this.rightZoomHandle_=null,this.iePanOverlay_=null},t.prototype.getOption_=function(t,e){return this.dygraph_.getOption(t,e)},t.prototype.setDefaultOption_=function(t,e){this.dygraph_.attrs_[t]=e},t.prototype.createInterface_=function(){this.createCanvases_(),this.isUsingExcanvas_&&this.createIEPanOverlay_(),this.createZoomHandles_(),this.initInteraction_(),this.getOption_("animatedZooms")&&(console.warn("Animated zooms and range selector are not compatible; disabling animatedZooms."),this.dygraph_.updateOptions({animatedZooms:!1},!0)),this.interfaceCreated_=!0,this.addToGraph_()},t.prototype.addToGraph_=function(){var t=this.graphDiv_=this.dygraph_.graphDiv;t.appendChild(this.bgcanvas_),t.appendChild(this.fgcanvas_),t.appendChild(this.leftZoomHandle_),t.appendChild(this.rightZoomHandle_)},t.prototype.removeFromGraph_=function(){var t=this.graphDiv_;t.removeChild(this.bgcanvas_),t.removeChild(this.fgcanvas_),t.removeChild(this.leftZoomHandle_),t.removeChild(this.rightZoomHandle_),this.graphDiv_=null},t.prototype.reserveSpace_=function(t){this.getOption_("showRangeSelector")&&t.reserveSpaceBottom(this.getOption_("rangeSelectorHeight")+4)},t.prototype.renderStaticLayer_=function(){this.updateVisibility_()&&(this.resize_(),this.drawStaticLayer_())},t.prototype.renderInteractiveLayer_=function(){this.updateVisibility_()&&!this.isChangingRange_&&(this.placeZoomHandles_(),this.drawInteractiveLayer_())},t.prototype.updateVisibility_=function(){var t=this.getOption_("showRangeSelector");if(t)this.interfaceCreated_?this.graphDiv_&&this.graphDiv_.parentNode||this.addToGraph_():this.createInterface_();else if(this.graphDiv_){this.removeFromGraph_();var e=this.dygraph_;setTimeout(function(){e.width_=0,e.resize()},1)}return t},t.prototype.resize_=function(){function t(t,e,a){var i=Dygraph.getContextPixelRatio(e);t.style.top=a.y+"px",t.style.left=a.x+"px",t.width=a.w*i,t.height=a.h*i,t.style.width=a.w+"px",t.style.height=a.h+"px",1!=i&&e.scale(i,i)}var e=this.dygraph_.layout_.getPlotArea(),a=0;this.dygraph_.getOptionForAxis("drawAxis","x")&&(a=this.getOption_("xAxisHeight")||this.getOption_("axisLabelFontSize")+2*this.getOption_("axisTickSize")),this.canvasRect_={x:e.x,y:e.y+e.h+a+4,w:e.w,h:this.getOption_("rangeSelectorHeight")},t(this.bgcanvas_,this.bgcanvas_ctx_,this.canvasRect_),t(this.fgcanvas_,this.fgcanvas_ctx_,this.canvasRect_)},t.prototype.createCanvases_=function(){this.bgcanvas_=Dygraph.createCanvas(),this.bgcanvas_.className="dygraph-rangesel-bgcanvas",this.bgcanvas_.style.position="absolute",this.bgcanvas_.style.zIndex=9,this.bgcanvas_ctx_=Dygraph.getContext(this.bgcanvas_),this.fgcanvas_=Dygraph.createCanvas(),this.fgcanvas_.className="dygraph-rangesel-fgcanvas",this.fgcanvas_.style.position="absolute",this.fgcanvas_.style.zIndex=9,this.fgcanvas_.style.cursor="default",this.fgcanvas_ctx_=Dygraph.getContext(this.fgcanvas_)},t.prototype.createIEPanOverlay_=function(){this.iePanOverlay_=document.createElement("div"),this.iePanOverlay_.style.position="absolute",this.iePanOverlay_.style.backgroundColor="white",this.iePanOverlay_.style.filter="alpha(opacity=0)",this.iePanOverlay_.style.display="none",this.iePanOverlay_.style.cursor="move",this.fgcanvas_.appendChild(this.iePanOverlay_)},t.prototype.createZoomHandles_=function(){var t=new Image;t.className="dygraph-rangesel-zoomhandle",t.style.position="absolute",t.style.zIndex=10,t.style.visibility="hidden",t.style.cursor="col-resize",/MSIE 7/.test(navigator.userAgent)?(t.width=7,t.height=14,t.style.backgroundColor="white",t.style.border="1px solid #333333"):(t.width=9,t.height=16,t.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAQCAYAAADESFVDAAAAAXNSR0IArs4c6QAAAAZiS0dEANAAzwDP4Z7KegAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAAd0SU1FB9sHGw0cMqdt1UwAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAaElEQVQoz+3SsRFAQBCF4Z9WJM8KCDVwownl6YXsTmCUsyKGkZzcl7zkz3YLkypgAnreFmDEpHkIwVOMfpdi9CEEN2nGpFdwD03yEqDtOgCaun7sqSTDH32I1pQA2Pb9sZecAxc5r3IAb21d6878xsAAAAAASUVORK5CYII="),this.isMobileDevice_&&(t.width*=2,t.height*=2),this.leftZoomHandle_=t,this.rightZoomHandle_=t.cloneNode(!1)},t.prototype.initInteraction_=function(){var t,e,a,i,r,n,o,s,l,h,p,g,d,u,c=this,y=document,_=0,v=null,f=!1,x=!1,m=!this.isMobileDevice_&&!this.isUsingExcanvas_,D=new Dygraph.IFrameTarp;t=function(t){var e=c.dygraph_.xAxisExtremes(),a=(e[1]-e[0])/c.canvasRect_.w,i=e[0]+(t.leftHandlePos-c.canvasRect_.x)*a,r=e[0]+(t.rightHandlePos-c.canvasRect_.x)*a;return[i,r]},e=function(t){return Dygraph.cancelEvent(t),f=!0,_=t.clientX,v=t.target?t.target:t.srcElement,("mousedown"===t.type||"dragstart"===t.type)&&(Dygraph.addEvent(y,"mousemove",a),Dygraph.addEvent(y,"mouseup",i)),c.fgcanvas_.style.cursor="col-resize",D.cover(),!0},a=function(t){if(!f)return!1;Dygraph.cancelEvent(t);var e=t.clientX-_;if(Math.abs(e)<4)return!0;_=t.clientX;var a,i=c.getZoomHandleStatus_();v==c.leftZoomHandle_?(a=i.leftHandlePos+e,a=Math.min(a,i.rightHandlePos-v.width-3),a=Math.max(a,c.canvasRect_.x)):(a=i.rightHandlePos+e,a=Math.min(a,c.canvasRect_.x+c.canvasRect_.w),a=Math.max(a,i.leftHandlePos+v.width+3));var n=v.width/2;return v.style.left=a-n+"px",c.drawInteractiveLayer_(),m&&r(),!0},i=function(){return f?(f=!1,D.uncover(),Dygraph.removeEvent(y,"mousemove",a),Dygraph.removeEvent(y,"mouseup",i),c.fgcanvas_.style.cursor="default",m||r(),!0):!1},r=function(){try{var e=c.getZoomHandleStatus_();if(c.isChangingRange_=!0,e.isZoomed){var a=t(e);c.dygraph_.doZoomXDates_(a[0],a[1])}else c.dygraph_.resetZoom()}finally{c.isChangingRange_=!1}},n=function(t){if(c.isUsingExcanvas_)return t.srcElement==c.iePanOverlay_;var e=c.leftZoomHandle_.getBoundingClientRect(),a=e.left+e.width/2;e=c.rightZoomHandle_.getBoundingClientRect();var i=e.left+e.width/2;return t.clientX>a&&t.clientX=c.canvasRect_.x+c.canvasRect_.w?(r=c.canvasRect_.x+c.canvasRect_.w,i=r-n):(i+=e,r+=e);var o=c.leftZoomHandle_.width/2;return c.leftZoomHandle_.style.left=i-o+"px",c.rightZoomHandle_.style.left=r-o+"px",c.drawInteractiveLayer_(),m&&h(),!0},l=function(){return x?(x=!1,Dygraph.removeEvent(y,"mousemove",s),Dygraph.removeEvent(y,"mouseup",l),m||h(),!0):!1},h=function(){try{c.isChangingRange_=!0,c.dygraph_.dateWindow_=t(c.getZoomHandleStatus_()),c.dygraph_.drawGraph_(!1)}finally{c.isChangingRange_=!1}},p=function(t){if(!f&&!x){var e=n(t)?"move":"default";e!=c.fgcanvas_.style.cursor&&(c.fgcanvas_.style.cursor=e)}},g=function(t){"touchstart"==t.type&&1==t.targetTouches.length?e(t.targetTouches[0])&&Dygraph.cancelEvent(t):"touchmove"==t.type&&1==t.targetTouches.length?a(t.targetTouches[0])&&Dygraph.cancelEvent(t):i(t)},d=function(t){"touchstart"==t.type&&1==t.targetTouches.length?o(t.targetTouches[0])&&Dygraph.cancelEvent(t):"touchmove"==t.type&&1==t.targetTouches.length?s(t.targetTouches[0])&&Dygraph.cancelEvent(t):l(t)},u=function(t,e){for(var a=["touchstart","touchend","touchmove","touchcancel"],i=0;it;t++){var s=this.getOption_("showInRangeSelector",r[t]);n[t]=s,null!==s&&(o=!0)}if(!o)for(t=0;t1&&(g=h.rollingAverage(g,e.rollPeriod(),p)),l.push(g)}var d=[];for(t=0;t0)&&(v=Math.min(v,x),f=Math.max(f,x))}var m=.25;if(a)for(f=Dygraph.log10(f),f+=f*m,v=Dygraph.log10(v),t=0;tthis.canvasRect_.x||a+10&&t[r][0]>o;)i--,r--}return i>=a?[a,i]:[0,t.length-1]},t.parseFloat=function(t){return null===t?0/0:t}}(),function(){"use strict";Dygraph.DataHandlers.DefaultHandler=function(){};var t=Dygraph.DataHandlers.DefaultHandler;t.prototype=new Dygraph.DataHandler,t.prototype.extractSeries=function(t,e,a){for(var i=[],r=a.get("logscale"),n=0;n=s&&(s=null),i.push([o,s])}return i},t.prototype.rollingAverage=function(t,e){e=Math.min(e,t.length);var a,i,r,n,o,s=[];if(1==e)return t;for(a=0;ai;i++)r=t[i][1],null===r||isNaN(r)||(o++,n+=t[i][1]);s[a]=o?[t[a][0],n/o]:[t[a][0],null]}return s},t.prototype.getExtremeYValues=function(t){for(var e,a=null,i=null,r=0,n=t.length-1,o=r;n>=o;o++)e=t[o][1],null===e||isNaN(e)||((null===i||e>i)&&(i=e),(null===a||a>e)&&(a=e));return[a,i]}}(),function(){"use strict";Dygraph.DataHandlers.DefaultFractionHandler=function(){};var t=Dygraph.DataHandlers.DefaultFractionHandler;t.prototype=new Dygraph.DataHandlers.DefaultHandler,t.prototype.extractSeries=function(t,e,a){for(var i,r,n,o,s,l,h=[],p=100,g=a.get("logscale"),d=0;d=0&&(r-=t[a-e][2][0],n-=t[a-e][2][1]);var s=t[a][0],l=n?r/n:0;i[a]=[s,o*l]}return i}}(),function(){"use strict";Dygraph.DataHandlers.BarsHandler=function(){Dygraph.DataHandler.call(this)},Dygraph.DataHandlers.BarsHandler.prototype=new Dygraph.DataHandler;var t=Dygraph.DataHandlers.BarsHandler;t.prototype.extractSeries=function(){},t.prototype.rollingAverage=function(){},t.prototype.onPointsCreated_=function(t,e){for(var a=0;a=o;o++)if(e=t[o][1],null!==e&&!isNaN(e)){var s=t[o][2][0],l=t[o][2][1];s>e&&(s=e),e>l&&(l=e),(null===i||l>i)&&(i=l),(null===a||a>s)&&(a=s)}return[a,i]},t.prototype.onLineEvaluated=function(t,e,a){for(var i,r=0;r=0){var p=t[s-e];null===p[1]||isNaN(p[1])||(i-=p[2][0],n-=p[1],r-=p[2][1],o-=1)}h[s]=o?[t[s][0],1*n/o,[1*i/o,1*r/o]]:[t[s][0],null,[null,null]]}return h}}(),function(){"use strict";Dygraph.DataHandlers.ErrorBarsHandler=function(){};var t=Dygraph.DataHandlers.ErrorBarsHandler;t.prototype=new Dygraph.DataHandlers.BarsHandler,t.prototype.extractSeries=function(t,e,a){for(var i,r,n,o,s=[],l=a.get("sigma"),h=a.get("logscale"),p=0;pr;r++)n=t[r][1],null===n||isNaN(n)||(l++,s+=n,p+=Math.pow(t[r][2][2],2));l?(h=Math.sqrt(p)/l,g=s/l,d[i]=[t[i][0],g,[g-u*h,g+u*h]]):(o=1==e?t[i][1]:null,d[i]=[t[i][0],o,[o,o]])}return d}}(),function(){"use strict";Dygraph.DataHandlers.FractionsBarsHandler=function(){};var t=Dygraph.DataHandlers.FractionsBarsHandler;t.prototype=new Dygraph.DataHandlers.BarsHandler,t.prototype.extractSeries=function(t,e,a){for(var i,r,n,o,s,l,h,p,g=[],d=100,u=a.get("sigma"),c=a.get("logscale"),y=0;y=0&&(p-=t[n-e][2][2],g-=t[n-e][2][3]);var u=t[n][0],c=g?p/g:0;if(h)if(g){var y=0>c?0:c,_=g,v=l*Math.sqrt(y*(1-y)/_+l*l/(4*_*_)),f=1+l*l/g;i=(y+l*l/(2*g)-v)/f,r=(y+l*l/(2*g)+v)/f,s[n]=[u,y*d,[i*d,r*d]]}else s[n]=[u,0,[0,0]];else o=g?l*Math.sqrt(c*(1-c)/g):1,s[n]=[u,d*c,[d*(c-o),d*(c+o)]]}return s}}(); +//# sourceMappingURL=dygraph-combined.js.map \ No newline at end of file diff --git a/js/ngfile.js b/js/ngfile.js index 93b23f1..9857b31 100644 --- a/js/ngfile.js +++ b/js/ngfile.js @@ -11,10 +11,6 @@ app.config(function($routeProvider){ templateUrl: 'display.html', controller: 'displayController' }) - .when('/report', { - templateUrl: 'report.html', - controller: 'reportController' - }) .when('/about', { templateUrl: 'about.html', controller: 'mainController' @@ -56,6 +52,12 @@ app.controller('mainController', function ($scope, $http, wave) { $scope.dataInput = function () { + + if (typeof $scope.inp1 == 'undefined') { + alert("Please input a valid Data Vector."); + return; + } + var x = $scope.inp1.valueOf().split(/[\s,;\t\r\n]+/); var i; var j = 0; @@ -84,10 +86,30 @@ app.controller('mainController', function ($scope, $http, wave) { $scope.fileInput = function () { var fileinput = document.getElementById('finp1'); + var finp1 = fileinput.files[0]; var reader = new FileReader(); var temp = 3.14159; + if (typeof finp1 == 'undefined') { + alert("Please input a valid Data File. "); + return; + } + + reader.onerror = function (e) { + switch (e.target.error.code) { + case e.target.error.NOT_FOUND_ERR: + alert('File Not Found!'); + break; + case e.target.error.NOT_READABLE_ERR: + alert('File is not readable'); + break; + default: + alert('An error occurred reading this file.'); + }; + return; + } + reader.onload = function (e) { var x = reader.result.split(/[\s,;\t\r\n]+/); @@ -330,6 +352,12 @@ app.controller('displayController', function ($scope, $http, $modal, wave) { var method; var ext = "NULL"; + if (typeof $scope.selected.family == 'undefined' || typeof $scope.selected.wavelet == 'undefined' || + typeof $scope.selected.method == 'undefined' || typeof $scope.selected.level == 'undefined') { + alert("Please Selct All Values : Family, Wavelet, Method and Levels"); + return; + } + if ($scope.selected.method.id == "0") { method = "dwt"; ext = "sym"; @@ -549,50 +577,44 @@ app.controller('reportController', function ($scope, $modalInstance, items, wave //console.log(i + $scope.flength, i); } //console.log(wave.filter); - + //console.log(wave.length); $scope.length = wave.length; $scope.outlength = wave.outLength; $scope.appx = []; - $scope.det = []; + $scope.details = []; for (var i = 0; i < $scope.length[0]; i++) { $scope.appx[i] = wave.output[i]; } + var start = $scope.length[0]; + var end = start + $scope.length[1]; + for (var j = 0; j < J; j++) { + var det = []; - for (var i = $scope.length[0]; i < wave.outLength; i++) { - $scope.det[i - parseInt($scope.length[0])] = wave.output[i]; - } - - $scope.iter = []; - var detlen = wave.outLength - parseInt($scope.length[0]); - $scope.liter = []; - - $scope.liter[i] = 0; - var i2 = 0; - - for (var i = 0; i < J; i++) { - $scope.iter[i] = i; - i2 += wave.output[i + 1]; - $scope.liter[i+1] = i2; - } - - function chunk(array,start,end) { - var newarr = []; - for(var i = start; i < end;i++) { - + for (i = start; i < end; i++) { + det[i - start] = wave.output[i]; } + start = end; + end = start + $scope.length[j + 2]; + $scope.details.push(det); } + //console.log($scope.details); + $scope.items = items; $scope.selected = { item: $scope.items[0] }; - + /* $scope.ok = function () { $modalInstance.close($scope.selected.item); }; - + */ $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }); + +app.controller("TabsController", function ($scope, $window) { + +}); \ No newline at end of file diff --git a/js/wavelib.js b/js/wavelib.js new file mode 100644 index 0000000..a087eb0 --- /dev/null +++ b/js/wavelib.js @@ -0,0 +1,16 @@ +var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB;var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+21072;__ATINIT__.push();allocate([104,97,97,114,0,0,0,0,100,98,49,0,0,0,0,0,100,98,50,0,0,0,0,0,100,98,51,0,0,0,0,0,100,98,52,0,0,0,0,0,100,98,53,0,0,0,0,0,100,98,54,0,0,0,0,0,100,98,55,0,0,0,0,0,100,98,56,0,0,0,0,0,100,98,57,0,0,0,0,0,100,98,49,48,0,0,0,0,100,98,49,50,0,0,0,0,100,98,49,51,0,0,0,0,100,98,49,49,0,0,0,0,100,98,49,52,0,0,0,0,100,98,49,53,0,0,0,0,98,105,111,114,49,46,49,0,98,105,111,114,49,46,51,0,98,105,111,114,49,46,53,0,98,105,111,114,50,46,50,0,98,105,111,114,50,46,52,0,98,105,111,114,50,46,54,0,98,105,111,114,50,46,56,0,98,105,111,114,51,46,49,0,98,105,111,114,51,46,51,0,98,105,111,114,51,46,53,0,98,105,111,114,51,46,55,0,98,105,111,114,51,46,57,0,98,105,111,114,52,46,52,0,98,105,111,114,53,46,53,0,98,105,111,114,54,46,56,0,99,111,105,102,49,0,0,0,99,111,105,102,50,0,0,0,99,111,105,102,51,0,0,0,99,111,105,102,52,0,0,0,99,111,105,102,53,0,0,0,115,121,109,50,0,0,0,0,115,121,109,51,0,0,0,0,115,121,109,52,0,0,0,0,115,121,109,53,0,0,0,0,115,121,109,54,0,0,0,0,115,121,109,55,0,0,0,0,115,121,109,56,0,0,0,0,115,121,109,57,0,0,0,0,115,121,109,49,48,0,0,0,10,32,70,105,108,116,101,114,32,78,111,116,32,105,110,32,68,97,116,97,98,97,115,101,32,0,0,0,0,0,0,0,163,158,61,224,133,83,107,63,121,171,40,243,239,195,137,191,29,180,125,69,173,144,121,191,34,27,37,181,185,219,179,63,166,184,169,72,102,130,160,191,115,249,247,211,132,3,207,191,48,222,190,115,3,184,193,63,40,113,59,20,137,45,231,63,3,186,196,194,145,82,227,63,130,175,167,65,60,126,196,63,130,175,167,65,60,126,196,191,3,186,196,194,145,82,227,63,40,113,59,20,137,45,231,191,48,222,190,115,3,184,193,63,115,249,247,211,132,3,207,63,166,184,169,72,102,130,160,191,34,27,37,181,185,219,179,191,29,180,125,69,173,144,121,191,121,171,40,243,239,195,137,63,163,158,61,224,133,83,107,63,130,175,167,65,60,126,196,63,3,186,196,194,145,82,227,63,40,113,59,20,137,45,231,63,48,222,190,115,3,184,193,63,115,249,247,211,132,3,207,191,166,184,169,72,102,130,160,191,34,27,37,181,185,219,179,63,29,180,125,69,173,144,121,191,121,171,40,243,239,195,137,191,163,158,61,224,133,83,107,63,163,158,61,224,133,83,107,63,121,171,40,243,239,195,137,63,29,180,125,69,173,144,121,191,34,27,37,181,185,219,179,191,166,184,169,72,102,130,160,191,115,249,247,211,132,3,207,63,48,222,190,115,3,184,193,63,40,113,59,20,137,45,231,191,3,186,196,194,145,82,227,63,130,175,167,65,60,126,196,191,179,95,100,59,135,166,81,191,121,200,99,76,81,145,115,63,236,13,249,17,247,37,66,63,175,27,6,100,133,43,160,191,104,223,95,61,244,46,156,63,187,210,77,127,221,245,184,63,131,11,39,98,51,156,192,191,216,240,104,210,61,246,204,191,86,50,169,207,15,45,212,63,178,209,59,250,73,9,232,63,230,52,69,246,234,167,223,63,19,49,220,36,239,141,188,63,19,49,220,36,239,141,188,191,230,52,69,246,234,167,223,63,178,209,59,250,73,9,232,191,86,50,169,207,15,45,212,63,216,240,104,210,61,246,204,63,131,11,39,98,51,156,192,191,187,210,77,127,221,245,184,191,104,223,95,61,244,46,156,63,175,27,6,100,133,43,160,63,236,13,249,17,247,37,66,63,121,200,99,76,81,145,115,191,179,95,100,59,135,166,81,191,19,49,220,36,239,141,188,63,230,52,69,246,234,167,223,63,178,209,59,250,73,9,232,63,86,50,169,207,15,45,212,63,216,240,104,210,61,246,204,191,131,11,39,98,51,156,192,191,187,210,77,127,221,245,184,63,104,223,95,61,244,46,156,63,175,27,6,100,133,43,160,191,236,13,249,17,247,37,66,63,121,200,99,76,81,145,115,63,179,95,100,59,135,166,81,191,179,95,100,59,135,166,81,191,121,200,99,76,81,145,115,191,236,13,249,17,247,37,66,63,175,27,6,100,133,43,160,63,104,223,95,61,244,46,156,63,187,210,77,127,221,245,184,191,131,11,39,98,51,156,192,191,216,240,104,210,61,246,204,63,86,50,169,207,15,45,212,63,178,209,59,250,73,9,232,191,230,52,69,246,234,167,223,63,19,49,220,36,239,141,188,191,196,135,1,52,85,46,55,63,169,212,199,249,160,132,93,191,214,232,90,88,31,39,60,63,168,75,164,130,86,180,137,63,174,111,1,169,234,248,144,191,46,81,207,238,168,120,163,191,125,245,242,39,7,163,180,63,249,191,167,44,82,65,178,63,130,212,213,187,55,173,204,191,97,106,73,14,131,107,194,191,129,89,41,186,233,16,222,63,64,205,148,210,12,85,231,63,89,75,48,116,230,96,217,63,169,197,56,186,28,238,179,63,169,197,56,186,28,238,179,191,89,75,48,116,230,96,217,63,64,205,148,210,12,85,231,191,129,89,41,186,233,16,222,63,97,106,73,14,131,107,194,63,130,212,213,187,55,173,204,191,249,191,167,44,82,65,178,191,125,245,242,39,7,163,180,63,46,81,207,238,168,120,163,63,174,111,1,169,234,248,144,191,168,75,164,130,86,180,137,191,213,232,90,88,31,39,60,63,169,212,199,249,160,132,93,63,196,135,1,52,85,46,55,63,169,197,56,186,28,238,179,63,89,75,48,116,230,96,217,63,64,205,148,210,12,85,231,63,129,89,41,186,233,16,222,63,97,106,73,14,131,107,194,191,130,212,213,187,55,173,204,191,249,191,167,44,82,65,178,63,125,245,242,39,7,163,180,63,46,81,207,238,168,120,163,191,174,111,1,169,234,248,144,191,168,75,164,130,86,180,137,63,214,232,90,88,31,39,60,63,169,212,199,249,160,132,93,191,196,135,1,52,85,46,55,63,196,135,1,52,85,46,55,63,169,212,199,249,160,132,93,63,214,232,90,88,31,39,60,63,166,75,164,130,86,180,137,191,174,111,1,169,234,248,144,191,46,81,207,238,168,120,163,63,125,245,242,39,7,163,180,63,249,191,167,44,82,65,178,191,130,212,213,187,55,173,204,191,97,106,73,14,131,107,194,63,129,89,41,186,233,16,222,63,64,205,148,210,12,85,231,191,89,75,48,116,230,96,217,63,169,197,56,186,28,238,179,191,28,87,4,200,187,203,30,191,201,85,239,141,20,34,70,63,150,170,45,23,80,172,57,191,151,5,51,109,239,242,115,191,130,135,50,223,120,233,129,63,202,39,88,205,21,162,140,63,220,23,139,81,188,146,166,191,48,66,8,15,66,201,145,191,224,144,99,177,203,122,192,63,58,57,14,203,249,246,62,63,113,19,37,135,79,45,210,191,100,39,153,69,129,53,144,191,118,117,219,190,57,187,226,63,209,80,146,89,196,158,229,63,204,206,180,144,22,6,212,63,65,252,162,173,100,220,171,63,65,252,162,173,100,220,171,191,204,206,180,144,22,6,212,63,209,80,146,89,196,158,229,191,118,117,219,190,57,187,226,63,100,39,153,69,129,53,144,63,113,19,37,135,79,45,210,191,58,57,14,203,249,246,62,191,224,144,99,177,203,122,192,63,48,66,8,15,66,201,145,63,220,23,139,81,188,146,166,191,202,39,88,205,21,162,140,191,130,135,50,223,120,233,129,63,151,5,51,109,239,242,115,63,150,170,45,23,80,172,57,191,201,85,239,141,20,34,70,191,28,87,4,200,187,203,30,191,65,252,162,173,100,220,171,63,204,206,180,144,22,6,212,63,209,80,146,89,196,158,229,63,118,117,219,190,57,187,226,63,100,39,153,69,129,53,144,191,113,19,37,135,79,45,210,191,58,57,14,203,249,246,62,63,224,144,99,177,203,122,192,63,48,66,8,15,66,201,145,191,220,23,139,81,188,146,166,191,202,39,88,205,21,162,140,63,130,135,50,223,120,233,129,63,151,5,51,109,239,242,115,191,150,170,45,23,80,172,57,191,201,85,239,141,20,34,70,63,28,87,4,200,187,203,30,191,28,87,4,200,187,203,30,191,201,85,239,141,20,34,70,191,150,170,45,23,80,172,57,191,151,5,51,109,239,242,115,63,130,135,50,223,120,233,129,63,202,39,88,205,21,162,140,191,220,23,139,81,188,146,166,191,48,66,8,15,66,201,145,63,224,144,99,177,203,122,192,63,58,57,14,203,249,246,62,191,113,19,37,135,79,45,210,191,100,39,153,69,129,53,144,63,118,117,219,190,57,187,226,63,209,80,146,89,196,158,229,191,204,206,180,144,22,6,212,63,65,252,162,173,100,220,171,191,76,208,217,158,27,161,4,63,124,52,19,168,61,131,48,191,172,38,198,164,118,50,46,63,245,191,245,187,151,69,94,63,132,235,169,100,123,137,113,191,183,193,122,159,163,88,115,191,12,208,4,190,249,229,150,63,82,246,227,166,49,114,48,63,75,85,242,148,98,80,177,191,218,7,99,148,141,118,159,63,126,16,66,30,98,3,195,63,157,74,218,188,142,202,184,191,87,132,251,102,255,196,210,191,96,96,2,168,156,12,193,63,89,250,230,1,129,8,229,63,111,205,1,6,182,90,227,63,228,139,153,128,249,53,207,63,49,74,63,229,243,126,163,63,49,74,63,229,243,126,163,191,228,139,153,128,249,53,207,63,111,205,1,6,182,90,227,191,89,250,230,1,129,8,229,63,96,96,2,168,156,12,193,191,87,132,251,102,255,196,210,191,157,74,218,188,142,202,184,63,126,16,66,30,98,3,195,63,218,7,99,148,141,118,159,191,75,85,242,148,98,80,177,191,82,246,227,166,49,114,48,191,12,208,4,190,249,229,150,63,183,193,122,159,163,88,115,63,132,235,169,100,123,137,113,191,245,191,245,187,151,69,94,191,172,38,198,164,118,50,46,63,124,52,19,168,61,131,48,63,76,208,217,158,27,161,4,63,49,74,63,229,243,126,163,63,228,139,153,128,249,53,207,63,111,205,1,6,182,90,227,63,89,250,230,1,129,8,229,63,96,96,2,168,156,12,193,63,87,132,251,102,255,196,210,191,157,74,218,188,142,202,184,191,126,16,66,30,98,3,195,63,218,7,99,148,141,118,159,63,75,85,242,148,98,80,177,191,82,246,227,166,49,114,48,63,12,208,4,190,249,229,150,63,183,193,122,159,163,88,115,191,132,235,169,100,123,137,113,191,245,191,245,187,151,69,94,63,172,38,198,164,118,50,46,63,124,52,19,168,61,131,48,191,76,208,217,158,27,161,4,63,76,208,217,158,27,161,4,63,124,52,19,168,61,131,48,63,172,38,198,164,118,50,46,63,245,191,245,187,151,69,94,191,132,235,169,100,123,137,113,191,183,193,122,159,163,88,115,63,12,208,4,190,249,229,150,63,82,246,227,166,49,114,48,191,75,85,242,148,98,80,177,191,218,7,99,148,141,118,159,191,126,16,66,30,98,3,195,63,157,74,218,188,142,202,184,63,87,132,251,102,255,196,210,191,96,96,2,168,156,12,193,191,89,250,230,1,129,8,229,63,111,205,1,6,182,90,227,191,228,139,153,128,249,53,207,63,49,74,63,229,243,126,163,191,68,139,229,45,42,209,235,190,140,192,147,27,161,136,24,63,205,110,68,85,245,135,30,191,47,165,146,9,98,121,70,191,151,183,162,114,96,82,96,63,60,21,170,135,135,220,86,63,139,248,115,109,70,251,133,191,85,57,227,179,125,139,109,63,175,169,202,105,64,1,161,63,204,121,21,213,29,42,158,191,207,3,52,7,227,70,178,191,124,19,160,129,155,210,183,63,100,167,160,119,163,77,192,63,45,58,28,124,196,20,201,191,137,157,192,182,247,250,207,191,199,234,35,73,186,254,209,63,223,179,98,64,219,7,230,63,26,220,27,7,213,222,224,63,30,131,25,105,45,22,200,63,234,55,222,73,101,79,155,63,234,55,222,73,101,79,155,191,30,131,25,105,45,22,200,63,26,220,27,7,213,222,224,191,223,179,98,64,219,7,230,63,199,234,35,73,186,254,209,191,137,157,192,182,247,250,207,191,45,58,28,124,196,20,201,63,100,167,160,119,163,77,192,63,124,19,160,129,155,210,183,191,207,3,52,7,227,70,178,191,204,121,21,213,29,42,158,63,175,169,202,105,64,1,161,63,85,57,227,179,125,139,109,191,139,248,115,109,70,251,133,191,60,21,170,135,135,220,86,191,151,183,162,114,96,82,96,63,47,165,146,9,98,121,70,63,205,110,68,85,245,135,30,191,140,192,147,27,161,136,24,191,68,139,229,45,42,209,235,190,234,55,222,73,101,79,155,63,30,131,25,105,45,22,200,63,26,220,27,7,213,222,224,63,223,179,98,64,219,7,230,63,199,234,35,73,186,254,209,63,137,157,192,182,247,250,207,191,45,58,28,124,196,20,201,191,100,167,160,119,163,77,192,63,124,19,160,129,155,210,183,63,207,3,52,7,227,70,178,191,204,121,21,213,29,42,158,191,175,169,202,105,64,1,161,63,85,57,227,179,125,139,109,63,139,248,115,109,70,251,133,191,60,21,170,135,135,220,86,63,151,183,162,114,96,82,96,63,47,165,146,9,98,121,70,191,205,110,68,85,245,135,30,191,140,192,147,27,161,136,24,63,68,139,229,45,42,209,235,190,68,139,229,45,42,209,235,190,140,192,147,27,161,136,24,191,205,110,68,85,245,135,30,191,47,165,146,9,98,121,70,63,151,183,162,114,96,82,96,63,60,21,170,135,135,220,86,191,139,248,115,109,70,251,133,191,85,57,227,179,125,139,109,191,175,169,202,105,64,1,161,63,204,121,21,213,29,42,158,63,207,3,52,7,227,70,178,191,124,19,160,129,155,210,183,191,100,167,160,119,163,77,192,63,45,58,28,124,196,20,201,63,137,157,192,182,247,250,207,191,199,234,35,73,186,254,209,191,223,179,98,64,219,7,230,63,26,220,27,7,213,222,224,191,30,131,25,105,45,22,200,63,234,55,222,73,101,79,155,191,155,194,125,45,80,167,185,190,203,65,12,241,146,203,234,62,31,63,246,86,74,107,249,190,148,180,184,4,105,51,23,191,164,11,190,49,132,120,57,63,15,4,204,36,199,115,219,62,193,192,110,24,192,218,97,191,108,209,248,209,171,107,98,63,22,165,255,75,132,125,123,63,131,40,62,98,74,76,138,191,107,52,63,81,23,6,137,191,125,80,57,190,141,69,165,63,167,82,28,157,17,56,134,63,152,48,25,130,198,175,184,191,228,89,141,135,234,243,117,63,170,221,86,126,117,91,199,63,57,174,243,240,150,89,152,191,175,90,164,141,68,60,212,191,12,135,217,193,74,235,166,191,241,120,41,92,36,130,224,63,219,110,142,157,197,7,229,63,35,64,46,39,150,38,216,63,205,247,130,6,137,12,188,63,182,249,210,120,153,218,138,63,182,249,210,120,153,218,138,191,205,247,130,6,137,12,188,63,35,64,46,39,150,38,216,191,219,110,142,157,197,7,229,63,241,120,41,92,36,130,224,191,12,135,217,193,74,235,166,191,175,90,164,141,68,60,212,63,57,174,243,240,150,89,152,191,170,221,86,126,117,91,199,191,228,89,141,135,234,243,117,63,152,48,25,130,198,175,184,63,167,82,28,157,17,56,134,63,125,80,57,190,141,69,165,191,107,52,63,81,23,6,137,191,131,40,62,98,74,76,138,63,22,165,255,75,132,125,123,63,108,209,248,209,171,107,98,191,193,192,110,24,192,218,97,191,15,4,204,36,199,115,219,190,164,11,190,49,132,120,57,63,148,180,184,4,105,51,23,63,31,63,246,86,74,107,249,190,203,65,12,241,146,203,234,190,155,194,125,45,80,167,185,190,182,249,210,120,153,218,138,63,205,247,130,6,137,12,188,63,35,64,46,39,150,38,216,63,219,110,142,157,197,7,229,63,241,120,41,92,36,130,224,63,12,135,217,193,74,235,166,191,175,90,164,141,68,60,212,191,57,174,243,240,150,89,152,191,170,221,86,126,117,91,199,63,228,89,141,135,234,243,117,63,152,48,25,130,198,175,184,191,167,82,28,157,17,56,134,63,125,80,57,190,141,69,165,63,107,52,63,81,23,6,137,191,131,40,62,98,74,76,138,191,22,165,255,75,132,125,123,63,108,209,248,209,171,107,98,63,193,192,110,24,192,218,97,191,15,4,204,36,199,115,219,62,164,11,190,49,132,120,57,63,148,180,184,4,105,51,23,191,31,63,246,86,74,107,249,190,203,65,12,241,146,203,234,62,155,194,125,45,80,167,185,190,155,194,125,45,80,167,185,190,203,65,12,241,146,203,234,190,31,63,246,86,74,107,249,190,148,180,184,4,105,51,23,63,164,11,190,49,132,120,57,63,15,4,204,36,199,115,219,190,193,192,110,24,192,218,97,191,108,209,248,209,171,107,98,191,22,165,255,75,132,125,123,63,131,40,62,98,74,76,138,63,107,52,63,81,23,6,137,191,125,80,57,190,141,69,165,191,167,82,28,157,17,56,134,63,152,48,25,130,198,175,184,63,228,89,141,135,234,243,117,63,170,221,86,126,117,91,199,191,57,174,243,240,150,89,152,191,175,90,164,141,68,60,212,63,12,135,217,193,74,235,166,191,241,120,41,92,36,130,224,191,219,110,142,157,197,7,229,63,35,64,46,39,150,38,216,191,205,247,130,6,137,12,188,63,182,249,210,120,153,218,138,191,99,163,141,219,249,131,161,62,237,189,195,164,8,183,211,190,193,215,140,2,248,229,229,62,43,66,85,134,154,21,0,63,172,100,0,54,207,164,37,191,155,21,127,132,109,210,9,63,39,76,226,30,235,140,78,63,143,44,31,27,86,142,85,191,200,125,172,205,37,160,102,191,45,36,23,115,9,184,125,63,104,155,26,3,141,18,112,63,118,181,69,146,67,103,152,191,117,171,227,223,41,127,99,63,70,9,82,68,80,190,172,63,60,153,35,222,198,31,155,191,232,232,200,67,53,22,187,191,205,127,85,4,200,172,178,63,48,28,200,121,18,249,198,63,247,212,106,184,66,228,191,191,93,197,111,32,132,40,212,191,20,15,41,81,178,68,182,63,51,164,190,240,46,216,226,63,128,52,24,0,197,141,227,63,175,175,9,108,191,247,211,63,16,61,138,252,100,54,181,63,8,126,211,116,145,216,130,63,8,126,211,116,145,216,130,191,16,61,138,252,100,54,181,63,175,175,9,108,191,247,211,191,128,52,24,0,197,141,227,63,51,164,190,240,46,216,226,191,20,15,41,81,178,68,182,63,93,197,111,32,132,40,212,63,247,212,106,184,66,228,191,191,48,28,200,121,18,249,198,191,205,127,85,4,200,172,178,63,232,232,200,67,53,22,187,63,60,153,35,222,198,31,155,191,70,9,82,68,80,190,172,191,117,171,227,223,41,127,99,63,118,181,69,146,67,103,152,63,104,155,26,3,141,18,112,63,45,36,23,115,9,184,125,191,200,125,172,205,37,160,102,191,143,44,31,27,86,142,85,63,39,76,226,30,235,140,78,63,155,21,127,132,109,210,9,191,172,100,0,54,207,164,37,191,43,66,85,134,154,21,0,191,193,215,140,2,248,229,229,62,237,189,195,164,8,183,211,62,99,163,141,219,249,131,161,62,8,126,211,116,145,216,130,63,16,61,138,252,100,54,181,63,175,175,9,108,191,247,211,63,128,52,24,0,197,141,227,63,51,164,190,240,46,216,226,63,20,15,41,81,178,68,182,63,93,197,111,32,132,40,212,191,247,212,106,184,66,228,191,191,48,28,200,121,18,249,198,63,205,127,85,4,200,172,178,63,232,232,200,67,53,22,187,191,60,153,35,222,198,31,155,191,70,9,82,68,80,190,172,63,117,171,227,223,41,127,99,63,118,181,69,146,67,103,152,191,104,155,26,3,141,18,112,63,45,36,23,115,9,184,125,63,200,125,172,205,37,160,102,191,143,44,31,27,86,142,85,191,39,76,226,30,235,140,78,63,155,21,127,132,109,210,9,63,172,100,0,54,207,164,37,191,43,66,85,134,154,21,0,63,193,215,140,2,248,229,229,62,237,189,195,164,8,183,211,190,99,163,141,219,249,131,161,62,99,163,141,219,249,131,161,62,237,189,195,164,8,183,211,62,193,215,140,2,248,229,229,62,43,66,85,134,154,21,0,191,172,100,0,54,207,164,37,191,155,21,127,132,109,210,9,191,39,76,226,30,235,140,78,63,143,44,31,27,86,142,85,63,200,125,172,205,37,160,102,191,45,36,23,115,9,184,125,191,104,155,26,3,141,18,112,63,118,181,69,146,67,103,152,63,117,171,227,223,41,127,99,63,70,9,82,68,80,190,172,191,60,153,35,222,198,31,155,191,232,232,200,67,53,22,187,63,205,127,85,4,200,172,178,63,48,28,200,121,18,249,198,191,247,212,106,184,66,228,191,191,93,197,111,32,132,40,212,63,20,15,41,81,178,68,182,63,51,164,190,240,46,216,226,191,128,52,24,0,197,141,227,63,175,175,9,108,191,247,211,191,16,61,138,252,100,54,181,63,8,126,211,116,145,216,130,191,189,12,225,180,176,217,210,62,218,61,187,254,160,40,2,191,3,59,25,93,176,138,12,63,248,109,188,240,21,84,48,63,56,173,253,211,56,67,77,191,91,18,132,60,84,57,52,191,124,248,117,10,210,47,116,63,13,107,52,243,73,94,107,191,88,131,104,90,151,119,143,191,190,138,149,106,81,87,149,63,43,128,106,39,39,11,160,63,21,254,190,219,33,2,177,191,128,149,74,126,56,204,167,191,201,167,11,63,10,45,195,63,185,79,106,139,59,232,176,63,254,202,168,137,255,140,209,191,185,244,43,107,111,197,196,191,89,231,239,204,159,93,218,63,5,18,50,100,37,241,229,63,205,200,152,97,40,203,220,63,30,20,35,196,201,112,194,63,216,95,7,22,153,36,147,63,216,95,7,22,153,36,147,191,30,20,35,196,201,112,194,63,205,200,152,97,40,203,220,191,5,18,50,100,37,241,229,63,89,231,239,204,159,93,218,191,185,244,43,107,111,197,196,191,254,202,168,137,255,140,209,63,185,79,106,139,59,232,176,63,201,167,11,63,10,45,195,191,128,149,74,126,56,204,167,191,21,254,190,219,33,2,177,63,43,128,106,39,39,11,160,63,190,138,149,106,81,87,149,191,88,131,104,90,151,119,143,191,13,107,52,243,73,94,107,63,124,248,117,10,210,47,116,63,91,18,132,60,84,57,52,63,56,173,253,211,56,67,77,191,248,109,188,240,21,84,48,191,3,59,25,93,176,138,12,63,218,61,187,254,160,40,2,63,189,12,225,180,176,217,210,62,216,95,7,22,153,36,147,63,30,20,35,196,201,112,194,63,205,200,152,97,40,203,220,63,5,18,50,100,37,241,229,63,89,231,239,204,159,93,218,63,185,244,43,107,111,197,196,191,254,202,168,137,255,140,209,191,185,79,106,139,59,232,176,63,201,167,11,63,10,45,195,63,128,149,74,126,56,204,167,191,21,254,190,219,33,2,177,191,43,128,106,39,39,11,160,63,190,138,149,106,81,87,149,63,88,131,104,90,151,119,143,191,13,107,52,243,73,94,107,191,124,248,117,10,210,47,116,63,91,18,132,60,84,57,52,191,56,173,253,211,56,67,77,191,248,109,188,240,21,84,48,63,3,59,25,93,176,138,12,63,218,61,187,254,160,40,2,191,189,12,225,180,176,217,210,62,189,12,225,180,176,217,210,62,218,61,187,254,160,40,2,63,3,59,25,93,176,138,12,63,248,109,188,240,21,84,48,191,56,173,253,211,56,67,77,191,91,18,132,60,84,57,52,63,124,248,117,10,210,47,116,63,13,107,52,243,73,94,107,63,88,131,104,90,151,119,143,191,190,138,149,106,81,87,149,191,43,128,106,39,39,11,160,63,21,254,190,219,33,2,177,63,128,149,74,126,56,204,167,191,201,167,11,63,10,45,195,191,185,79,106,139,59,232,176,63,254,202,168,137,255,140,209,63,185,244,43,107,111,197,196,191,89,231,239,204,159,93,218,191,5,18,50,100,37,241,229,63,205,200,152,97,40,203,220,191,30,20,35,196,201,112,194,63,216,95,7,22,153,36,147,191,47,103,196,240,144,252,135,190,36,54,19,180,203,240,188,62,236,178,63,229,104,105,210,190,219,88,79,54,191,173,229,190,218,15,232,162,18,6,18,63,229,0,2,60,63,231,5,191,73,212,16,144,246,89,57,191,251,135,229,217,79,51,71,63,200,198,110,31,14,101,81,63,200,9,68,33,71,137,111,191,158,12,200,19,189,115,72,191,78,161,125,186,96,49,138,63,47,79,146,97,206,255,118,191,102,128,188,166,232,232,158,191,108,113,33,169,3,161,155,63,97,244,157,101,10,72,172,63,133,219,243,71,8,81,178,191,85,60,170,214,36,53,182,191,212,196,3,252,40,235,193,63,58,113,188,50,239,182,193,63,94,75,96,208,133,232,203,191,30,2,175,97,88,99,209,191,246,82,66,174,102,253,203,63,2,50,49,220,176,50,228,63,9,110,161,34,223,188,225,63,32,240,98,127,119,79,208,63,146,176,92,15,70,238,175,63,28,93,227,172,2,119,122,63,28,93,227,172,2,119,122,191,146,176,92,15,70,238,175,63,32,240,98,127,119,79,208,191,9,110,161,34,223,188,225,63,2,50,49,220,176,50,228,191,246,82,66,174,102,253,203,63,30,2,175,97,88,99,209,63,94,75,96,208,133,232,203,191,58,113,188,50,239,182,193,191,212,196,3,252,40,235,193,63,85,60,170,214,36,53,182,63,133,219,243,71,8,81,178,191,97,244,157,101,10,72,172,191,108,113,33,169,3,161,155,63,102,128,188,166,232,232,158,63,47,79,146,97,206,255,118,191,78,161,125,186,96,49,138,191,158,12,200,19,189,115,72,191,200,9,68,33,71,137,111,63,200,198,110,31,14,101,81,63,251,135,229,217,79,51,71,191,73,212,16,144,246,89,57,191,229,0,2,60,63,231,5,63,218,15,232,162,18,6,18,63,219,88,79,54,191,173,229,62,236,178,63,229,104,105,210,190,36,54,19,180,203,240,188,190,47,103,196,240,144,252,135,190,28,93,227,172,2,119,122,63,146,176,92,15,70,238,175,63,32,240,98,127,119,79,208,63,9,110,161,34,223,188,225,63,2,50,49,220,176,50,228,63,246,82,66,174,102,253,203,63,30,2,175,97,88,99,209,191,94,75,96,208,133,232,203,191,58,113,188,50,239,182,193,63,212,196,3,252,40,235,193,63,85,60,170,214,36,53,182,191,133,219,243,71,8,81,178,191,97,244,157,101,10,72,172,63,108,113,33,169,3,161,155,63,102,128,188,166,232,232,158,191,47,79,146,97,206,255,118,191,78,161,125,186,96,49,138,63,158,12,200,19,189,115,72,191,200,9,68,33,71,137,111,191,200,198,110,31,14,101,81,63,251,135,229,217,79,51,71,63,73,212,16,144,246,89,57,191,229,0,2,60,63,231,5,191,218,15,232,162,18,6,18,63,219,88,79,54,191,173,229,190,236,178,63,229,104,105,210,190,36,54,19,180,203,240,188,62,47,103,196,240,144,252,135,190,47,103,196,240,144,252,135,190,36,54,19,180,203,240,188,190,236,178,63,229,104,105,210,190,219,88,79,54,191,173,229,62,218,15,232,162,18,6,18,63,229,0,2,60,63,231,5,63,73,212,16,144,246,89,57,191,251,135,229,217,79,51,71,191,200,198,110,31,14,101,81,63,200,9,68,33,71,137,111,63,158,12,200,19,189,115,72,191,78,161,125,186,96,49,138,191,47,79,146,97,206,255,118,191,102,128,188,166,232,232,158,63,108,113,33,169,3,161,155,63,97,244,157,101,10,72,172,191,133,219,243,71,8,81,178,191,85,60,170,214,36,53,182,63,212,196,3,252,40,235,193,63,58,113,188,50,239,182,193,191,94,75,96,208,133,232,203,191,30,2,175,97,88,99,209,63,246,82,66,174,102,253,203,63,2,50,49,220,176,50,228,191,9,110,161,34,223,188,225,63,32,240,98,127,119,79,208,191,146,176,92,15,70,238,175,63,28,93,227,172,2,119,122,191,21,106,51,22,208,118,112,62,121,183,28,29,41,50,165,190,149,63,228,223,88,99,190,62,102,40,84,193,245,53,204,62,54,110,244,101,249,127,253,190,123,191,32,202,172,11,251,62,225,82,203,166,4,111,36,63,131,214,30,247,128,144,55,191,168,160,36,127,254,121,56,191,84,216,61,60,228,214,95,63,85,12,92,113,0,176,47,191,114,177,47,252,225,146,122,191,55,49,153,91,201,228,116,63,132,112,0,53,81,228,142,63,105,120,160,211,58,79,149,191,140,29,42,151,170,98,154,191,224,99,111,66,50,12,172,63,253,152,119,82,88,88,161,63,149,47,46,242,107,114,188,191,197,227,32,6,32,79,164,191,116,24,13,63,186,86,200,63,45,197,120,51,98,182,176,63,215,216,40,110,13,125,210,191,136,81,137,202,233,186,200,191,190,121,194,176,55,178,213,63,44,41,165,81,128,170,228,63,227,51,29,105,71,135,223,63,205,123,2,111,253,94,202,63,244,155,188,16,192,238,167,63,242,102,162,88,0,151,114,63,242,102,162,88,0,151,114,191,244,155,188,16,192,238,167,63,205,123,2,111,253,94,202,191,227,51,29,105,71,135,223,63,44,41,165,81,128,170,228,191,190,121,194,176,55,178,213,63,136,81,137,202,233,186,200,63,215,216,40,110,13,125,210,191,45,197,120,51,98,182,176,191,116,24,13,63,186,86,200,63,197,227,32,6,32,79,164,63,149,47,46,242,107,114,188,191,253,152,119,82,88,88,161,191,224,99,111,66,50,12,172,63,140,29,42,151,170,98,154,63,105,120,160,211,58,79,149,191,132,112,0,53,81,228,142,191,55,49,153,91,201,228,116,63,114,177,47,252,225,146,122,63,85,12,92,113,0,176,47,191,84,216,61,60,228,214,95,191,168,160,36,127,254,121,56,191,131,214,30,247,128,144,55,63,225,82,203,166,4,111,36,63,123,191,32,202,172,11,251,190,54,110,244,101,249,127,253,190,102,40,84,193,245,53,204,190,149,63,228,223,88,99,190,62,121,183,28,29,41,50,165,62,21,106,51,22,208,118,112,62,242,102,162,88,0,151,114,63,244,155,188,16,192,238,167,63,205,123,2,111,253,94,202,63,227,51,29,105,71,135,223,63,44,41,165,81,128,170,228,63,190,121,194,176,55,178,213,63,136,81,137,202,233,186,200,191,215,216,40,110,13,125,210,191,45,197,120,51,98,182,176,63,116,24,13,63,186,86,200,63,197,227,32,6,32,79,164,191,149,47,46,242,107,114,188,191,253,152,119,82,88,88,161,63,224,99,111,66,50,12,172,63,140,29,42,151,170,98,154,191,105,120,160,211,58,79,149,191,132,112,0,53,81,228,142,63,55,49,153,91,201,228,116,63,114,177,47,252,225,146,122,191,85,12,92,113,0,176,47,191,84,216,61,60,228,214,95,63,168,160,36,127,254,121,56,191,131,214,30,247,128,144,55,191,225,82,203,166,4,111,36,63,123,191,32,202,172,11,251,62,54,110,244,101,249,127,253,190,102,40,84,193,245,53,204,62,149,63,228,223,88,99,190,62,121,183,28,29,41,50,165,190,21,106,51,22,208,118,112,62,21,106,51,22,208,118,112,62,121,183,28,29,41,50,165,62,149,63,228,223,88,99,190,62,102,40,84,193,245,53,204,190,54,110,244,101,249,127,253,190,123,191,32,202,172,11,251,190,225,82,203,166,4,111,36,63,131,214,30,247,128,144,55,63,168,160,36,127,254,121,56,191,84,216,61,60,228,214,95,191,85,12,92,113,0,176,47,191,114,177,47,252,225,146,122,63,55,49,153,91,201,228,116,63,132,112,0,53,81,228,142,191,105,120,160,211,58,79,149,191,140,29,42,151,170,98,154,63,224,99,111,66,50,12,172,63,253,152,119,82,88,88,161,191,149,47,46,242,107,114,188,191,197,227,32,6,32,79,164,63,116,24,13,63,186,86,200,63,45,197,120,51,98,182,176,191,215,216,40,110,13,125,210,191,136,81,137,202,233,186,200,63,190,121,194,176,55,178,213,63,44,41,165,81,128,170,228,191,227,51,29,105,71,135,223,63,205,123,2,111,253,94,202,191,244,155,188,16,192,238,167,63,242,102,162,88,0,151,114,191,218,108,223,204,118,248,144,63,218,108,223,204,118,248,144,191,58,242,238,204,217,28,191,191,58,242,238,204,217,28,191,63,205,59,127,102,158,160,230,63,205,59,127,102,158,160,230,63,58,242,238,204,217,28,191,63,58,242,238,204,217,28,191,191,218,108,223,204,118,248,144,191,218,108,223,204,118,248,144,63,218,108,223,204,118,248,144,63,218,108,223,204,118,248,144,63,58,242,238,204,217,28,191,191,58,242,238,204,217,28,191,191,205,59,127,102,158,160,230,63,205,59,127,102,158,160,230,191,58,242,238,204,217,28,191,63,58,242,238,204,217,28,191,63,218,108,223,204,118,248,144,191,218,108,223,204,118,248,144,191,0,0,0,0,0,0,0,0,218,108,223,204,118,248,160,63,218,108,223,204,118,248,176,191,205,59,127,102,158,160,198,191,3,23,183,25,188,222,218,63,24,236,34,192,222,209,239,63,3,23,183,25,188,222,218,63,205,59,127,102,158,160,198,191,218,108,223,204,118,248,176,191,218,108,223,204,118,248,160,63,0,0,0,0,0,0,0,0,218,108,223,204,118,248,160,191,218,108,223,204,118,248,176,191,205,59,127,102,158,160,198,63,3,23,183,25,188,222,218,63,24,236,34,192,222,209,239,191,3,23,183,25,188,222,218,63,205,59,127,102,158,160,198,63,218,108,223,204,118,248,176,191,218,108,223,204,118,248,160,191,0,0,0,0,0,0,0,0,192,10,31,0,198,72,124,191,192,10,31,0,198,72,140,63,138,47,231,76,168,10,168,63,226,16,235,12,193,147,187,191,119,67,126,54,88,190,197,191,175,7,185,121,72,163,220,63,194,243,33,144,152,239,238,63,175,7,185,121,72,163,220,63,119,67,126,54,88,190,197,191,226,16,235,12,193,147,187,191,138,47,231,76,168,10,168,63,192,10,31,0,198,72,140,63,192,10,31,0,198,72,124,191,0,0,0,0,0,0,0,0,192,10,31,0,198,72,124,63,192,10,31,0,198,72,140,63,138,47,231,76,168,10,168,191,226,16,235,12,193,147,187,191,119,67,126,54,88,190,197,63,175,7,185,121,72,163,220,63,194,243,33,144,152,239,238,191,175,7,185,121,72,163,220,63,119,67,126,54,88,190,197,63,226,16,235,12,193,147,187,191,138,47,231,76,168,10,168,191,192,10,31,0,198,72,140,63,192,10,31,0,198,72,124,63,0,0,0,0,0,0,0,0,104,41,27,64,173,191,88,63,104,41,27,64,173,191,104,191,20,26,29,160,57,132,138,191,65,127,32,72,47,156,157,63,183,148,234,244,157,34,171,63,68,90,121,227,212,68,193,191,44,106,125,204,90,248,196,191,78,23,58,62,197,154,221,63,243,107,225,45,218,115,238,63,78,23,58,62,197,154,221,63,44,106,125,204,90,248,196,191,68,90,121,227,212,68,193,191,183,148,234,244,157,34,171,63,65,127,32,72,47,156,157,63,20,26,29,160,57,132,138,191,104,41,27,64,173,191,104,191,104,41,27,64,173,191,88,63,0,0,0,0,0,0,0,0,104,41,27,64,173,191,88,191,104,41,27,64,173,191,104,191,20,26,29,160,57,132,138,63,65,127,32,72,47,156,157,63,183,148,234,244,157,34,171,191,68,90,121,227,212,68,193,191,44,106,125,204,90,248,196,63,78,23,58,62,197,154,221,63,243,107,225,45,218,115,238,191,78,23,58,62,197,154,221,63,44,106,125,204,90,248,196,63,68,90,121,227,212,68,193,191,183,148,234,244,157,34,171,191,65,127,32,72,47,156,157,63,20,26,29,160,57,132,138,63,104,41,27,64,173,191,104,191,104,41,27,64,173,191,88,191,192,10,31,0,198,72,140,191,16,72,23,128,148,54,165,63,3,23,183,25,188,222,170,63,81,107,172,9,184,37,209,191,151,96,71,179,128,98,178,191,194,243,33,144,152,239,238,63,194,243,33,144,152,239,238,63,151,96,71,179,128,98,178,191,81,107,172,9,184,37,209,191,3,23,183,25,188,222,170,63,16,72,23,128,148,54,165,63,192,10,31,0,198,72,140,191,192,10,31,0,198,72,140,191,16,72,23,128,148,54,165,191,3,23,183,25,188,222,170,63,81,107,172,9,184,37,209,63,151,96,71,179,128,98,178,191,194,243,33,144,152,239,238,191,194,243,33,144,152,239,238,63,151,96,71,179,128,98,178,63,81,107,172,9,184,37,209,191,3,23,183,25,188,222,170,191,16,72,23,128,148,54,165,63,192,10,31,0,198,72,140,63,104,41,27,64,173,191,104,63,14,95,20,240,193,143,130,191,141,234,18,168,88,60,145,191,68,250,20,206,45,29,179,63,230,52,171,77,224,10,160,63,224,192,46,237,48,70,211,191,183,148,234,244,157,34,155,191,243,107,225,45,218,115,238,63,243,107,225,45,218,115,238,63,183,148,234,244,157,34,155,191,224,192,46,237,48,70,211,191,230,52,171,77,224,10,160,63,68,250,20,206,45,29,179,63,141,234,18,168,88,60,145,191,14,95,20,240,193,143,130,191,104,41,27,64,173,191,104,63,104,41,27,64,173,191,104,63,14,95,20,240,193,143,130,63,141,234,18,168,88,60,145,191,68,250,20,206,45,29,179,191,230,52,171,77,224,10,160,63,224,192,46,237,48,70,211,63,183,148,234,244,157,34,155,191,243,107,225,45,218,115,238,191,243,107,225,45,218,115,238,63,183,148,234,244,157,34,155,63,224,192,46,237,48,70,211,191,230,52,171,77,224,10,160,191,68,250,20,206,45,29,179,63,141,234,18,168,88,60,145,63,14,95,20,240,193,143,130,191,104,41,27,64,173,191,104,191,222,62,229,236,27,70,70,191,38,239,171,241,148,180,96,63,71,140,227,24,33,186,116,63,237,248,227,205,31,29,149,191,99,133,236,84,42,231,140,191,242,115,181,168,229,96,185,63,147,165,27,88,208,48,137,63,80,74,35,116,6,126,212,191,98,110,18,144,53,203,96,63,151,73,36,204,228,37,238,63,151,73,36,204,228,37,238,63,98,110,18,144,53,203,96,63,80,74,35,116,6,126,212,191,147,165,27,88,208,48,137,63,242,115,181,168,229,96,185,63,99,133,236,84,42,231,140,191,237,248,227,205,31,29,149,191,71,140,227,24,33,186,116,63,38,239,171,241,148,180,96,63,222,62,229,236,27,70,70,191,222,62,229,236,27,70,70,191,38,239,171,241,148,180,96,191,71,140,227,24,33,186,116,63,237,248,227,205,31,29,149,63,99,133,236,84,42,231,140,191,242,115,181,168,229,96,185,191,147,165,27,88,208,48,137,63,80,74,35,116,6,126,212,63,98,110,18,144,53,203,96,63,151,73,36,204,228,37,238,191,151,73,36,204,228,37,238,63,98,110,18,144,53,203,96,191,80,74,35,116,6,126,212,191,147,165,27,88,208,48,137,191,242,115,181,168,229,96,185,63,99,133,236,84,42,231,140,63,237,248,227,205,31,29,149,191,71,140,227,24,33,186,116,191,38,239,171,241,148,180,96,63,222,62,229,236,27,70,70,63,0,0,0,0,0,0,0,0,119,22,134,86,64,94,163,63,120,245,36,129,254,107,152,191,204,221,29,135,225,81,188,191,37,139,145,78,94,39,216,63,113,240,117,189,78,73,235,63,37,139,145,78,94,39,216,63,204,221,29,135,225,81,188,191,120,245,36,129,254,107,152,191,119,22,134,86,64,94,163,63,0,0,0,0,0,0,0,0,68,236,53,198,158,133,176,191,56,107,217,75,62,213,164,63,252,157,12,24,6,194,218,63,22,130,250,47,70,59,233,191,252,157,12,24,6,194,218,63,56,107,217,75,62,213,164,63,68,236,53,198,158,133,176,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,236,53,198,158,133,176,191,56,107,217,75,62,213,164,191,252,157,12,24,6,194,218,63,22,130,250,47,70,59,233,63,252,157,12,24,6,194,218,63,56,107,217,75,62,213,164,191,68,236,53,198,158,133,176,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,22,134,86,64,94,163,191,120,245,36,129,254,107,152,191,204,221,29,135,225,81,188,63,37,139,145,78,94,39,216,63,113,240,117,189,78,73,235,191,37,139,145,78,94,39,216,63,204,221,29,135,225,81,188,63,120,245,36,129,254,107,152,191,119,22,134,86,64,94,163,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,23,13,181,221,81,164,63,222,199,75,21,25,71,128,63,40,30,147,124,173,226,171,191,142,221,212,157,101,30,214,63,166,252,111,95,184,146,231,63,142,221,212,157,101,30,214,63,40,30,147,124,173,226,171,191,222,199,75,21,25,71,128,63,99,23,13,181,221,81,164,63,0,0,0,0,0,0,0,0,10,60,79,248,48,143,139,191,6,236,164,83,193,19,102,191,175,252,35,243,153,127,193,63,52,2,92,129,236,239,183,191,69,192,78,216,241,131,222,191,51,134,125,9,193,200,236,63,69,192,78,216,241,131,222,191,52,2,92,129,236,239,183,191,175,252,35,243,153,127,193,63,6,236,164,83,193,19,102,191,10,60,79,248,48,143,139,191,0,0,0,0,0,0,0,0,10,60,79,248,48,143,139,63,6,236,164,83,193,19,102,191,175,252,35,243,153,127,193,191,52,2,92,129,236,239,183,191,69,192,78,216,241,131,222,63,51,134,125,9,193,200,236,63,69,192,78,216,241,131,222,63,52,2,92,129,236,239,183,191,175,252,35,243,153,127,193,191,6,236,164,83,193,19,102,191,10,60,79,248,48,143,139,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,23,13,181,221,81,164,63,222,199,75,21,25,71,128,191,40,30,147,124,173,226,171,191,142,221,212,157,101,30,214,191,166,252,111,95,184,146,231,63,142,221,212,157,101,30,214,191,40,30,147,124,173,226,171,191,222,199,75,21,25,71,128,191,99,23,13,181,221,81,164,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,168,110,120,56,70,95,63,183,178,116,20,25,93,95,191,13,34,71,138,254,101,145,191,199,28,140,60,38,113,136,63,185,179,14,84,151,118,169,63,43,54,240,241,132,199,179,191,70,233,230,146,67,20,184,191,101,92,43,138,83,238,218,63,223,35,227,16,246,109,234,63,101,92,43,138,83,238,218,63,70,233,230,146,67,20,184,191,43,54,240,241,132,199,179,191,185,179,14,84,151,118,169,63,199,28,140,60,38,113,136,63,13,34,71,138,254,101,145,191,183,178,116,20,25,93,95,191,120,168,110,120,56,70,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,31,132,220,134,139,141,63,120,106,23,163,35,161,141,191,175,39,10,4,32,39,180,191,92,90,123,155,28,171,164,63,121,164,157,48,10,190,218,63,4,236,213,220,248,72,232,191,121,164,157,48,10,190,218,63,92,90,123,155,28,171,164,63,175,39,10,4,32,39,180,191,120,106,23,163,35,161,141,191,219,31,132,220,134,139,141,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,219,31,132,220,134,139,141,63,120,106,23,163,35,161,141,63,175,39,10,4,32,39,180,191,92,90,123,155,28,171,164,191,121,164,157,48,10,190,218,63,4,236,213,220,248,72,232,63,121,164,157,48,10,190,218,63,92,90,123,155,28,171,164,191,175,39,10,4,32,39,180,191,120,106,23,163,35,161,141,63,219,31,132,220,134,139,141,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,168,110,120,56,70,95,191,183,178,116,20,25,93,95,191,13,34,71,138,254,101,145,63,199,28,140,60,38,113,136,63,185,179,14,84,151,118,169,191,43,54,240,241,132,199,179,191,70,233,230,146,67,20,184,63,101,92,43,138,83,238,218,63],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([223,35,227,16,246,109,234,191,101,92,43,138,83,238,218,63,70,233,230,146,67,20,184,63,43,54,240,241,132,199,179,191,185,179,14,84,151,118,169,191,199,28,140,60,38,113,136,63,13,34,71,138,254,101,145,63,183,178,116,20,25,93,95,191,120,168,110,120,56,70,95,191,20,109,200,38,104,156,71,191,85,242,76,158,23,223,93,191,229,230,134,16,4,252,118,63,221,234,74,112,157,63,152,63,171,197,175,40,48,110,174,191,255,228,142,191,193,148,179,191,174,161,86,131,54,176,218,63,54,152,93,255,212,1,234,63,30,207,105,255,6,182,216,63,240,197,45,231,83,63,177,191,246,20,209,102,228,58,165,191,72,174,183,136,215,199,144,63,72,174,183,136,215,199,144,191,246,20,209,102,228,58,165,191,240,197,45,231,83,63,177,63,30,207,105,255,6,182,216,63,54,152,93,255,212,1,234,191,174,161,86,131,54,176,218,63,255,228,142,191,193,148,179,63,171,197,175,40,48,110,174,191,221,234,74,112,157,63,152,191,229,230,134,16,4,252,118,63,85,242,76,158,23,223,93,63,20,109,200,38,104,156,71,191,72,174,183,136,215,199,144,63,246,20,209,102,228,58,165,191,240,197,45,231,83,63,177,191,30,207,105,255,6,182,216,63,54,152,93,255,212,1,234,63,174,161,86,131,54,176,218,63,255,228,142,191,193,148,179,191,171,197,175,40,48,110,174,191,221,234,74,112,157,63,152,63,229,230,134,16,4,252,118,63,85,242,76,158,23,223,93,191,20,109,200,38,104,156,71,191,20,109,200,38,104,156,71,191,85,242,76,158,23,223,93,63,229,230,134,16,4,252,118,63,221,234,74,112,157,63,152,191,171,197,175,40,48,110,174,191,255,228,142,191,193,148,179,63,174,161,86,131,54,176,218,63,54,152,93,255,212,1,234,191,30,207,105,255,6,182,216,63,240,197,45,231,83,63,177,63,246,20,209,102,228,58,165,191,72,174,183,136,215,199,144,191,166,34,106,36,231,35,2,191,111,157,182,220,155,155,18,191,52,227,181,152,210,141,62,63,203,137,182,164,54,79,82,63,132,68,214,168,39,23,101,191,181,231,71,23,198,114,130,191,66,219,83,83,253,66,144,63,50,103,173,82,50,177,161,63,215,100,82,53,189,17,181,191,27,173,182,29,121,97,178,191,202,196,122,245,69,108,219,63,120,147,111,125,159,102,233,63,170,104,60,26,107,238,217,63,97,13,42,162,144,75,175,191,156,115,243,143,109,214,176,191,210,149,186,203,251,3,152,63,181,29,34,210,164,224,127,63,212,5,20,182,146,19,111,191,212,5,20,182,146,19,111,63,181,29,34,210,164,224,127,63,210,149,186,203,251,3,152,191,156,115,243,143,109,214,176,191,97,13,42,162,144,75,175,63,170,104,60,26,107,238,217,63,120,147,111,125,159,102,233,191,202,196,122,245,69,108,219,63,27,173,182,29,121,97,178,63,215,100,82,53,189,17,181,191,50,103,173,82,50,177,161,191,66,219,83,83,253,66,144,63,181,231,71,23,198,114,130,63,132,68,214,168,39,23,101,191,203,137,182,164,54,79,82,191,52,227,181,152,210,141,62,63,111,157,182,220,155,155,18,63,166,34,106,36,231,35,2,191,212,5,20,182,146,19,111,191,181,29,34,210,164,224,127,63,210,149,186,203,251,3,152,63,156,115,243,143,109,214,176,191,97,13,42,162,144,75,175,191,170,104,60,26,107,238,217,63,120,147,111,125,159,102,233,63,202,196,122,245,69,108,219,63,27,173,182,29,121,97,178,191,215,100,82,53,189,17,181,191,50,103,173,82,50,177,161,63,66,219,83,83,253,66,144,63,181,231,71,23,198,114,130,191,132,68,214,168,39,23,101,191,203,137,182,164,54,79,82,63,52,227,181,152,210,141,62,63,111,157,182,220,155,155,18,191,166,34,106,36,231,35,2,191,166,34,106,36,231,35,2,191,111,157,182,220,155,155,18,63,52,227,181,152,210,141,62,63,203,137,182,164,54,79,82,191,132,68,214,168,39,23,101,191,181,231,71,23,198,114,130,63,66,219,83,83,253,66,144,63,50,103,173,82,50,177,161,191,215,100,82,53,189,17,181,191,27,173,182,29,121,97,178,63,202,196,122,245,69,108,219,63,120,147,111,125,159,102,233,191,170,104,60,26,107,238,217,63,97,13,42,162,144,75,175,63,156,115,243,143,109,214,176,191,210,149,186,203,251,3,152,191,181,29,34,210,164,224,127,63,212,5,20,182,146,19,111,63,208,82,44,196,115,242,189,190,52,102,97,41,28,88,203,190,174,255,46,93,154,95,0,63,155,78,4,117,128,87,16,63,161,215,98,51,166,9,49,191,235,251,62,113,16,77,67,191,136,1,36,132,88,192,84,63,238,46,121,243,84,187,110,63,122,127,83,196,36,45,119,191,102,171,108,11,84,39,143,191,202,102,85,25,42,175,153,63,213,8,52,92,164,35,164,63,203,29,190,35,231,161,184,191,101,251,249,134,127,14,177,191,115,8,158,44,251,204,219,63,253,196,62,240,25,8,233,63,128,197,124,182,105,148,218,63,112,107,124,101,42,182,172,191,57,27,98,249,228,205,180,191,22,143,53,218,154,82,155,63,9,105,61,147,96,116,144,63,158,26,13,130,3,23,126,191,115,81,206,185,149,178,90,191,76,103,29,3,69,61,77,63,76,103,29,3,69,61,77,191,115,81,206,185,149,178,90,191,158,26,13,130,3,23,126,63,9,105,61,147,96,116,144,63,22,143,53,218,154,82,155,191,57,27,98,249,228,205,180,191,112,107,124,101,42,182,172,63,128,197,124,182,105,148,218,63,253,196,62,240,25,8,233,191,115,8,158,44,251,204,219,63,101,251,249,134,127,14,177,63,203,29,190,35,231,161,184,191,213,8,52,92,164,35,164,191,202,102,85,25,42,175,153,63,102,171,108,11,84,39,143,63,122,127,83,196,36,45,119,191,238,46,121,243,84,187,110,191,136,1,36,132,88,192,84,63,235,251,62,113,16,77,67,63,161,215,98,51,166,9,49,191,155,78,4,117,128,87,16,191,174,255,46,93,154,95,0,63,52,102,97,41,28,88,203,62,208,82,44,196,115,242,189,190,76,103,29,3,69,61,77,63,115,81,206,185,149,178,90,191,158,26,13,130,3,23,126,191,9,105,61,147,96,116,144,63,22,143,53,218,154,82,155,63,57,27,98,249,228,205,180,191,112,107,124,101,42,182,172,191,128,197,124,182,105,148,218,63,253,196,62,240,25,8,233,63,115,8,158,44,251,204,219,63,101,251,249,134,127,14,177,191,203,29,190,35,231,161,184,191,213,8,52,92,164,35,164,63,202,102,85,25,42,175,153,63,102,171,108,11,84,39,143,191,122,127,83,196,36,45,119,191,238,46,121,243,84,187,110,63,136,1,36,132,88,192,84,63,235,251,62,113,16,77,67,191,161,215,98,51,166,9,49,191,155,78,4,117,128,87,16,63,174,255,46,93,154,95,0,63,52,102,97,41,28,88,203,190,208,82,44,196,115,242,189,190,208,82,44,196,115,242,189,190,52,102,97,41,28,88,203,62,174,255,46,93,154,95,0,63,155,78,4,117,128,87,16,191,161,215,98,51,166,9,49,191,235,251,62,113,16,77,67,63,136,1,36,132,88,192,84,63,238,46,121,243,84,187,110,191,122,127,83,196,36,45,119,191,102,171,108,11,84,39,143,63,202,102,85,25,42,175,153,63,213,8,52,92,164,35,164,191,203,29,190,35,231,161,184,191,101,251,249,134,127,14,177,63,115,8,158,44,251,204,219,63,253,196,62,240,25,8,233,191,128,197,124,182,105,148,218,63,112,107,124,101,42,182,172,63,57,27,98,249,228,205,180,191,22,143,53,218,154,82,155,191,9,105,61,147,96,116,144,63,158,26,13,130,3,23,126,63,115,81,206,185,149,178,90,191,76,103,29,3,69,61,77,191,145,163,132,249,123,140,121,190,103,207,249,50,75,121,134,190,165,76,134,19,229,79,193,62,53,254,56,101,28,84,207,62,130,181,46,125,181,89,246,190,74,233,216,111,158,172,5,191,179,137,142,72,199,107,34,63,146,103,207,4,19,207,51,63,47,251,220,159,8,233,68,191,49,72,241,77,142,62,91,191,225,36,193,75,39,239,99,63,204,20,137,52,195,180,123,63,42,53,22,73,178,196,130,191,16,151,19,137,110,60,148,191,153,240,47,197,230,187,160,63,158,253,132,242,219,35,165,63,67,146,174,77,233,6,187,191,193,2,203,136,45,195,175,191,13,29,149,7,14,8,220,63,221,79,170,253,250,198,232,63,193,128,181,211,240,250,218,63,44,12,165,199,102,165,170,191,193,173,51,223,17,136,183,191,146,77,228,108,20,216,156,63,227,85,107,207,78,248,151,63,27,133,91,147,159,191,132,191,104,158,3,95,103,9,113,191,71,33,121,189,23,216,97,63,92,34,113,251,34,128,55,63,217,25,201,138,64,204,43,191,217,25,201,138,64,204,43,63,92,34,113,251,34,128,55,63,71,33,121,189,23,216,97,191,104,158,3,95,103,9,113,191,27,133,91,147,159,191,132,63,227,85,107,207,78,248,151,63,146,77,228,108,20,216,156,191,193,173,51,223,17,136,183,191,44,12,165,199,102,165,170,63,193,128,181,211,240,250,218,63,221,79,170,253,250,198,232,191,13,29,149,7,14,8,220,63,193,2,203,136,45,195,175,63,67,146,174,77,233,6,187,191,158,253,132,242,219,35,165,191,153,240,47,197,230,187,160,63,16,151,19,137,110,60,148,63,42,53,22,73,178,196,130,191,204,20,137,52,195,180,123,191,225,36,193,75,39,239,99,63,49,72,241,77,142,62,91,63,47,251,220,159,8,233,68,191,146,103,207,4,19,207,51,191,179,137,142,72,199,107,34,63,74,233,216,111,158,172,5,63,130,181,46,125,181,89,246,190,53,254,56,101,28,84,207,190,165,76,134,19,229,79,193,62,103,207,249,50,75,121,134,62,145,163,132,249,123,140,121,190,217,25,201,138,64,204,43,191,92,34,113,251,34,128,55,63,71,33,121,189,23,216,97,63,104,158,3,95,103,9,113,191,27,133,91,147,159,191,132,191,227,85,107,207,78,248,151,63,146,77,228,108,20,216,156,63,193,173,51,223,17,136,183,191,44,12,165,199,102,165,170,191,193,128,181,211,240,250,218,63,221,79,170,253,250,198,232,63,13,29,149,7,14,8,220,63,193,2,203,136,45,195,175,191,67,146,174,77,233,6,187,191,158,253,132,242,219,35,165,63,153,240,47,197,230,187,160,63,16,151,19,137,110,60,148,191,42,53,22,73,178,196,130,191,204,20,137,52,195,180,123,63,225,36,193,75,39,239,99,63,49,72,241,77,142,62,91,191,47,251,220,159,8,233,68,191,146,103,207,4,19,207,51,63,179,137,142,72,199,107,34,63,74,233,216,111,158,172,5,191,130,181,46,125,181,89,246,190,53,254,56,101,28,84,207,62,165,76,134,19,229,79,193,62,103,207,249,50,75,121,134,190,145,163,132,249,123,140,121,190,145,163,132,249,123,140,121,190,103,207,249,50,75,121,134,62,165,76,134,19,229,79,193,62,53,254,56,101,28,84,207,190,130,181,46,125,181,89,246,190,74,233,216,111,158,172,5,63,179,137,142,72,199,107,34,63,146,103,207,4,19,207,51,191,47,251,220,159,8,233,68,191,49,72,241,77,142,62,91,63,225,36,193,75,39,239,99,63,204,20,137,52,195,180,123,191,42,53,22,73,178,196,130,191,16,151,19,137,110,60,148,63,153,240,47,197,230,187,160,63,158,253,132,242,219,35,165,191,67,146,174,77,233,6,187,191,193,2,203,136,45,195,175,63,13,29,149,7,14,8,220,63,221,79,170,253,250,198,232,191,193,128,181,211,240,250,218,63,44,12,165,199,102,165,170,63,193,173,51,223,17,136,183,191,146,77,228,108,20,216,156,191,227,85,107,207,78,248,151,63,27,133,91,147,159,191,132,63,104,158,3,95,103,9,113,191,71,33,121,189,23,216,97,191,92,34,113,251,34,128,55,63,217,25,201,138,64,204,43,63,96,214,144,42,51,253,155,63,91,171,123,128,91,58,158,63,147,130,208,129,103,9,164,191,141,0,171,191,219,133,201,63,89,129,126,226,39,38,231,63,193,245,76,64,142,73,228,63,18,163,54,117,36,0,145,63,115,12,29,158,38,113,198,191,130,124,22,28,184,155,149,191,72,204,100,57,0,2,148,63,72,204,100,57,0,2,148,191,130,124,22,28,184,155,149,191,115,12,29,158,38,113,198,63,18,163,54,117,36,0,145,63,193,245,76,64,142,73,228,191,89,129,126,226,39,38,231,63,141,0,171,191,219,133,201,191,147,130,208,129,103,9,164,191,91,171,123,128,91,58,158,191,96,214,144,42,51,253,155,63,72,204,100,57,0,2,148,63,130,124,22,28,184,155,149,191,115,12,29,158,38,113,198,191,18,163,54,117,36,0,145,63,193,245,76,64,142,73,228,63,89,129,126,226,39,38,231,63,141,0,171,191,219,133,201,63,147,130,208,129,103,9,164,191,91,171,123,128,91,58,158,63,96,214,144,42,51,253,155,63,96,214,144,42,51,253,155,63,91,171,123,128,91,58,158,191,147,130,208,129,103,9,164,191,141,0,171,191,219,133,201,191,89,129,126,226,39,38,231,63,193,245,76,64,142,73,228,191,18,163,54,117,36,0,145,63,115,12,29,158,38,113,198,63,130,124,22,28,184,155,149,191,72,204,100,57,0,2,148,191,110,203,68,142,48,140,143,63,249,22,186,199,141,152,108,63,167,4,162,148,153,52,190,191,131,12,214,20,81,188,168,191,16,61,197,230,117,109,223,63,140,174,182,49,91,52,233,63,243,72,171,185,162,160,213,63,72,143,212,104,95,152,178,191,158,141,86,78,212,144,149,191,14,249,215,172,46,230,166,63,46,185,82,41,82,246,92,63,183,57,68,178,162,243,127,191,183,57,68,178,162,243,127,63,46,185,82,41,82,246,92,63,14,249,215,172,46,230,166,191,158,141,86,78,212,144,149,191,72,143,212,104,95,152,178,63,243,72,171,185,162,160,213,63,140,174,182,49,91,52,233,191,16,61,197,230,117,109,223,63,131,12,214,20,81,188,168,63,167,4,162,148,153,52,190,191,249,22,186,199,141,152,108,191,110,203,68,142,48,140,143,63,183,57,68,178,162,243,127,191,46,185,82,41,82,246,92,63,14,249,215,172,46,230,166,63,158,141,86,78,212,144,149,191,72,143,212,104,95,152,178,191,243,72,171,185,162,160,213,63,140,174,182,49,91,52,233,63,16,61,197,230,117,109,223,63,131,12,214,20,81,188,168,191,167,4,162,148,153,52,190,191,249,22,186,199,141,152,108,63,110,203,68,142,48,140,143,63,110,203,68,142,48,140,143,63,249,22,186,199,141,152,108,191,167,4,162,148,153,52,190,191,131,12,214,20,81,188,168,63,16,61,197,230,117,109,223,63,140,174,182,49,91,52,233,191,243,72,171,185,162,160,213,63,72,143,212,104,95,152,178,63,158,141,86,78,212,144,149,191,14,249,215,172,46,230,166,191,46,185,82,41,82,246,92,63,183,57,68,178,162,243,127,63,229,213,170,59,44,248,101,63,123,71,247,245,12,41,81,191,246,216,223,238,15,225,137,191,64,29,70,108,117,63,159,63,150,202,57,98,106,97,177,63,192,69,245,58,253,94,169,191,107,5,204,208,30,220,145,63,191,108,39,53,191,39,225,63,74,15,18,121,134,145,232,63,179,223,65,107,232,120,210,63,30,125,204,102,17,237,193,191,247,98,45,23,82,153,187,191,115,175,39,233,11,109,112,63,217,136,56,89,123,7,133,63,217,136,56,89,123,7,133,191,115,175,39,233,11,109,112,63,247,98,45,23,82,153,187,63,30,125,204,102,17,237,193,191,179,223,65,107,232,120,210,191,74,15,18,121,134,145,232,63,191,108,39,53,191,39,225,191,107,5,204,208,30,220,145,63,192,69,245,58,253,94,169,63,150,202,57,98,106,97,177,63,64,29,70,108,117,63,159,191,246,216,223,238,15,225,137,191,123,71,247,245,12,41,81,63,229,213,170,59,44,248,101,63,217,136,56,89,123,7,133,63,115,175,39,233,11,109,112,63,247,98,45,23,82,153,187,191,30,125,204,102,17,237,193,191,179,223,65,107,232,120,210,63,74,15,18,121,134,145,232,63,191,108,39,53,191,39,225,63,107,5,204,208,30,220,145,63,192,69,245,58,253,94,169,191,150,202,57,98,106,97,177,63,64,29,70,108,117,63,159,63,246,216,223,238,15,225,137,191,123,71,247,245,12,41,81,191,229,213,170,59,44,248,101,63,229,213,170,59,44,248,101,63,123,71,247,245,12,41,81,63,246,216,223,238,15,225,137,191,64,29,70,108,117,63,159,191,150,202,57,98,106,97,177,63,192,69,245,58,253,94,169,63,107,5,204,208,30,220,145,63,191,108,39,53,191,39,225,191,74,15,18,121,134,145,232,63,179,223,65,107,232,120,210,191,30,125,204,102,17,237,193,191,247,98,45,23,82,153,187,63,115,175,39,233,11,109,112,63,217,136,56,89,123,7,133,191,107,102,131,188,112,181,107,191,231,128,76,81,188,195,65,191,94,60,48,171,86,58,160,63,179,124,62,84,7,41,127,63,173,2,182,49,119,87,194,191,177,145,159,194,56,95,175,191,244,49,241,181,152,206,222,63,209,17,79,167,180,222,232,63,144,10,231,24,4,83,215,63,209,253,171,23,165,152,170,191,243,87,74,45,78,223,155,191,252,127,110,39,130,40,169,63,205,208,210,42,136,51,111,63,231,194,120,36,74,159,142,191,108,96,58,180,41,218,51,191,3,113,178,183,6,247,94,63,3,113,178,183,6,247,94,191,108,96,58,180,41,218,51,191,231,194,120,36,74,159,142,63,205,208,210,42,136,51,111,63,252,127,110,39,130,40,169,191,243,87,74,45,78,223,155,191,209,253,171,23,165,152,170,63,144,10,231,24,4,83,215,63,209,17,79,167,180,222,232,191,244,49,241,181,152,206,222,63,177,145,159,194,56,95,175,63,173,2,182,49,119,87,194,191,179,124,62,84,7,41,127,191,94,60,48,171,86,58,160,63,231,128,76,81,188,195,65,63,107,102,131,188,112,181,107,191,3,113,178,183,6,247,94,63,108,96,58,180,41,218,51,191,231,194,120,36,74,159,142,191,205,208,210,42,136,51,111,63,252,127,110,39,130,40,169,63,243,87,74,45,78,223,155,191,209,253,171,23,165,152,170,191,144,10,231,24,4,83,215,63,209,17,79,167,180,222,232,63,244,49,241,181,152,206,222,63,177,145,159,194,56,95,175,191,173,2,182,49,119,87,194,191,179,124,62,84,7,41,127,63,94,60,48,171,86,58,160,63,231,128,76,81,188,195,65,191,107,102,131,188,112,181,107,191,107,102,131,188,112,181,107,191,231,128,76,81,188,195,65,63,94,60,48,171,86,58,160,63,179,124,62,84,7,41,127,191,173,2,182,49,119,87,194,191,177,145,159,194,56,95,175,63,244,49,241,181,152,206,222,63,209,17,79,167,180,222,232,191,144,10,231,24,4,83,215,63,209,253,171,23,165,152,170,63,243,87,74,45,78,223,155,191,252,127,110,39,130,40,169,191,205,208,210,42,136,51,111,63,231,194,120,36,74,159,142,63,108,96,58,180,41,218,51,191,3,113,178,183,6,247,94,191,152,155,145,151,221,243,86,63,191,118,14,83,25,79,68,63,103,156,156,92,85,46,139,191,119,80,150,46,26,156,135,191,47,46,227,72,69,243,158,63,0,166,222,180,112,30,67,63,141,167,172,103,118,240,171,191,197,148,230,183,183,143,206,63,24,190,139,77,3,249,230,63,45,245,51,144,60,193,227,63,25,190,30,77,60,15,162,63,16,195,248,213,188,132,200,191,179,151,184,164,223,171,146,191,182,77,186,245,168,200,175,63,252,146,52,193,206,36,130,63,196,245,148,90,83,5,133,191,189,132,8,25,55,2,63,191,158,78,190,45,196,133,81,63,158,78,190,45,196,133,81,191,189,132,8,25,55,2,63,191,196,245,148,90,83,5,133,63,252,146,52,193,206,36,130,63,182,77,186,245,168,200,175,191,179,151,184,164,223,171,146,191,16,195,248,213,188,132,200,63,25,190,30,77,60,15,162,63,45,245,51,144,60,193,227,191,24,190,139,77,3,249,230,63,197,148,230,183,183,143,206,191,141,167,172,103,118,240,171,191,0,166,222,180,112,30,67,191,47,46,227,72,69,243,158,63,119,80,150,46,26,156,135,63,103,156,156,92,85,46,139,191,191,118,14,83,25,79,68,191,152,155,145,151,221,243,86,63,158,78,190,45,196,133,81,63,189,132,8,25,55,2,63,191,196,245,148,90,83,5,133,191,252,146,52,193,206,36,130,63,182,77,186,245,168,200,175,63,179,151,184,164,223,171,146,191,16,195,248,213,188,132,200,191,25,190,30,77,60,15,162,63,45,245,51,144,60,193,227,63,24,190,139,77,3,249,230,63,197,148,230,183,183,143,206,63,141,167,172,103,118,240,171,191,0,166,222,180,112,30,67,63,47,46,227,72,69,243,158,63,119,80,150,46,26,156,135,191,103,156,156,92,85,46,139,191,191,118,14,83,25,79,68,63,152,155,145,151,221,243,86,63,152,155,145,151,221,243,86,63,191,118,14,83,25,79,68,191,103,156,156,92,85,46,139,191,119,80,150,46,26,156,135,63,47,46,227,72,69,243,158,63,0,166,222,180,112,30,67,191,141,167,172,103,118,240,171,191,197,148,230,183,183,143,206,191,24,190,139,77,3,249,230,63,45,245,51,144,60,193,227,191,25,190,30,77,60,15,162,63,16,195,248,213,188,132,200,63,179,151,184,164,223,171,146,191,182,77,186,245,168,200,175,191,252,146,52,193,206,36,130,63,196,245,148,90,83,5,133,63,189,132,8,25,55,2,63,191,158,78,190,45,196,133,81,191,0,254,174,152,145,60,73,63,191,4,210,197,204,17,25,63,143,109,81,142,135,178,129,191,148,66,210,144,66,2,88,191,207,120,252,108,198,131,167,63,201,2,3,149,237,198,135,63,134,219,218,251,78,106,196,191,98,171,28,15,58,37,178,191,191,14,21,13,46,48,222,63,133,97,94,131,211,159,232,63,26,55,135,30,158,144,216,63,216,112,72,36,223,49,162,191,218,227,54,48,0,97,160,191,0,211,18,228,240,152,169,63,44,119,96,202,242,156,119,63,128,68,57,227,236,215,148,191,188,46,84,167,115,91,74,191,91,26,87,165,74,208,114,63,47,118,33,233,64,231,13,63,49,206,95,215,68,26,62,191,49,206,95,215,68,26,62,63,47,118,33,233,64,231,13,63,91,26,87,165,74,208,114,191,188,46,84,167,115,91,74,191,128,68,57,227,236,215,148,63,44,119,96,202,242,156,119,63,0,211,18,228,240,152,169,191,218,227,54,48,0,97,160,191,216,112,72,36,223,49,162,63,26,55,135,30,158,144,216,63,133,97,94,131,211,159,232,191,191,14,21,13,46,48,222,63,98,171,28,15,58,37,178,63,134,219,218,251,78,106,196,191,201,2,3,149,237,198,135,191,207,120,252,108,198,131,167,63,148,66,210,144,66,2,88,63,143,109,81,142,135,178,129,191,191,4,210,197,204,17,25,191,0,254,174,152,145,60,73,63,49,206,95,215,68,26,62,191,47,118,33,233,64,231,13,63,91,26,87,165,74,208,114,63,188,46,84,167,115,91,74,191,128,68,57,227,236,215,148,191,44,119,96,202,242,156,119,63,0,211,18,228,240,152,169,63,218,227,54,48,0,97,160,191,216,112,72,36,223,49,162,191,26,55,135,30,158,144,216,63,133,97,94,131,211,159,232,63,191,14,21,13,46,48,222,63,98,171,28,15,58,37,178,191,134,219,218,251,78,106,196,191,201,2,3,149,237,198,135,63,207,120,252,108,198,131,167,63,148,66,210,144,66,2,88,191,143,109,81,142,135,178,129,191,191,4,210,197,204,17,25,63,0,254,174,152,145,60,73,63,0,254,174,152,145,60,73,63,191,4,210,197,204,17,25,191,143,109,81,142,135,178,129,191,148,66,210,144,66,2,88,63,207,120,252,108,198,131,167,63,201,2,3,149,237,198,135,191,134,219,218,251,78,106,196,191,98,171,28,15,58,37,178,63,191,14,21,13,46,48,222,63,133,97,94,131,211,159,232,191,26,55,135,30,158,144,216,63,216,112,72,36,223,49,162,63,218,227,54,48,0,97,160,191,0,211,18,228,240,152,169,191,44,119,96,202,242,156,119,63,128,68,57,227,236,215,148,63,188,46,84,167,115,91,74,191,91,26,87,165,74,208,114,191,47,118,33,233,64,231,13,63,49,206,95,215,68,26,62,63,10,32,84,104,101,32,68,101,99,111,109,112,111,115,105,116,105,111,110,32,73,116,101,114,97,116,105,111,110,115,32,67,97,110,110,111,116,32,69,120,99,101,101,100,32,49,48,48,46,32,69,120,105,116,105,110,103,32,0,0,0,0,0,0,10,32,69,114,114,111,114,32,45,32,84,104,101,32,83,105,103,110,97,108,32,67,97,110,32,111,110,108,121,32,98,101,32,105,116,101,114,97,116,101,100,32,37,100,32,116,105,109,101,115,32,117,115,105,110,103,32,116,104,105,115,32,119,97,118,101,108,101,116,46,32,69,120,105,116,105,110,103,10,0,10,32,70,111,114,32,83,87,84,32,116,104,101,32,115,105,103,110,97,108,32,108,101,110,103,116,104,32,109,117,115,116,32,98,101,32,97,32,109,117,108,116,105,112,108,101,32,111,102,32,50,94,74,46,32,0,100,98,0,0,0,0,0,0,99,111,105,102,0,0,0,0,10,32,77,79,68,87,84,32,105,115,32,111,110,108,121,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,111,114,116,104,111,103,111,110,97,108,32,119,97,118,101,108,101,116,32,102,97,109,105,108,105,101,115,32,45,32,100,98,44,32,115,121,109,32,97,110,100,32,99,111,105,102,32,0,100,105,114,101,99,116,0,0,102,102,116,0,0,0,0,0,70,70,84,0,0,0,0,0,83,105,103,110,97,108,32,101,120,116,101,110,115,105,111,110,32,99,97,110,32,98,101,32,101,105,116,104,101,114,32,112,101,114,32,111,114,32,115,121,109,0,0,0,0,0,0,0,68,101,99,111,109,112,111,115,105,116,105,111,110,32,70,105,108,116,101,114,115,32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,108,101,110,103,116,104,46,0,0,0,0,0,0,0,0,83,87,84,32,79,110,108,121,32,97,99,99,101,112,116,115,32,116,119,111,32,109,101,116,104,111,100,115,32,45,32,100,105,114,101,99,116,32,97,110,100,32,102,102,116,0,0,0,67,111,110,118,111,108,117,116,105,111,110,32,79,110,108,121,32,97,99,99,101,112,116,115,32,116,119,111,32,109,101,116,104,111,100,115,32,45,32,100,105,114,101,99,116,32,97,110,100,32,102,102,116,0,0,0,100,119,116,0,0,0,0,0,68,87,84,0,0,0,0,0,112,101,114,0,0,0,0,0,115,121,109,0,0,0,0,0,115,119,116,0,0,0,0,0,83,87,84,0,0,0,0,0,109,111,100,119,116,0,0,0,77,79,68,87,84,0,0,0,93,61,127,102,158,160,230,63,0,0,0,0,0,136,57,61,68,23,117,250,82,176,230,63,0,0,0,0,0,0,216,60,254,217,11,117,18,192,230,63,0,0,0,0,0,120,40,189,191,118,212,221,220,207,230,63,0,0,0,0,0,192,30,61,41,26,101,60,178,223,230,63,0,0,0,0,0,0,216,188,227,58,89,152,146,239,230,63,0,0,0,0,0,0,188,188,134,147,81,249,125,255,230,63,0,0,0,0,0,216,47,189,163,45,244,102,116,15,231,63,0,0,0,0,0,136,44,189,195,95,236,232,117,31,231,63,0,0,0,0,0,192,19,61,5,207,234,134,130,47,231,63,0,0,0,0,0,48,56,189,82,129,165,72,154,63,231,63,0,0,0,0,0,192,0,189,252,204,215,53,189,79,231,63,0,0,0,0,0,136,47,61,241,103,66,86,235,95,231,63,0,0,0,0,0,224,3,61,72,109,171,177,36,112,231,63,0,0,0,0,0,208,39,189,56,93,222,79,105,128,231,63,0,0,0,0,0,0,221,188,0,29,172,56,185,144,231,63,0,0,0,0,0,0,227,60,120,1,235,115,20,161,231,63,0,0,0,0,0,0,237,188,96,208,118,9,123,177,231,63,0,0,0,0,0,64,32,61,51,193,48,1,237,193,231,63,0,0,0,0,0,0,160,60,54,134,255,98,106,210,231,63,0,0,0,0,0,144,38,189,59,78,207,54,243,226,231,63,0,0,0,0,0,224,2,189,232,195,145,132,135,243,231,63,0,0,0,0,0,88,36,189,78,27,62,84,39,4,232,63,0,0,0,0,0,0,51,61,26,7,209,173,210,20,232,63,0,0,0,0,0,0,15,61,126,205,76,153,137,37,232,63,0,0,0,0,0,192,33,189,208,66,185,30,76,54,232,63,0,0,0,0,0,208,41,61,181,202,35,70,26,71,232,63,0,0,0,0,0,16,71,61,188,91,159,23,244,87,232,63,0,0,0,0,0,96,34,61,175,145,68,155,217,104,232,63,0,0,0,0,0,196,50,189,149,163,49,217,202,121,232,63,0,0,0,0,0,0,35,189,184,101,138,217,199,138,232,63,0,0,0,0,0,128,42,189,0,88,120,164,208,155,232,63,0,0,0,0,0,0,237,188,35,162,42,66,229,172,232,63,0,0,0,0,0,40,51,61,250,25,214,186,5,190,232,63,0,0,0,0,0,180,66,61,131,67,181,22,50,207,232,63,0,0,0,0,0,208,46,189,76,102,8,94,106,224,232,63,0,0,0,0,0,80,32,189,7,120,21,153,174,241,232,63,0,0,0,0,0,40,40,61,14,44,40,208,254,2,233,63,0,0,0,0,0,176,28,189,150,255,145,11,91,20,233,63,0,0,0,0,0,224,5,189,249,47,170,83,195,37,233,63,0,0,0,0,0,64,245,60,74,198,205,176,55,55,233,63,0,0,0,0,0,32,23,61,174,152,95,43,184,72,233,63,0,0,0,0,0,0,9,189,203,82,200,203,68,90,233,63,0,0,0,0,0,104,37,61,33,111,118,154,221,107,233,63,0,0,0,0,0,208,54,189,42,78,222,159,130,125,233,63,0,0,0,0,0,0,1,189,163,35,122,228,51,143,233,63,0,0,0,0,0,0,45,61,4,6,202,112,241,160,233,63,0,0,0,0,0,164,56,189,137,255,83,77,187,178,233,63,0,0,0,0,0,92,53,61,91,241,163,130,145,196,233,63,0,0,0,0,0,184,38,61,197,184,75,25,116,214,233,63,0,0,0,0,0,0,236,188,142,35,227,25,99,232,233,63,0,0,0,0,0,208,23,61,2,243,7,141,94,250,233,63,0,0,0,0,0,64,22,61,77,229,93,123,102,12,234,63,0,0,0,0,0,0,245,188,246,184,142,237,122,30,234,63,0,0,0,0,0,224,9,61,39,46,74,236,155,48,234,63,0,0,0,0,0,216,42,61,93,10,70,128,201,66,234,63,0,0,0,0,0,240,26,189,155,37,62,178,3,85,234,63,0,0,0,0,0,96,11,61,19,98,244,138,74,103,234,63,0,0,0,0,0,136,56,61,167,179,48,19,158,121,234,63,0,0,0,0,0,32,17,61,141,46,193,83,254,139,234,63,0,0,0,0,0,192,6,61,210,252,121,85,107,158,234,63,0,0,0,0,0,184,41,189,184,111,53,33,229,176,234,63,0,0,0,0,0,112,43,61,129,243,211,191,107,195,234,63,0,0,0,0,0,0,217,60,128,39,60,58,255,213,234,63,0,0,0,0,0,0,228,60,163,210,90,153,159,232,234,63,0,0,0,0,0,144,44,189,103,243,34,230,76,251,234,63,0,0,0,0,0,80,22,61,144,183,141,41,7,14,235,63,0,0,0,0,0,212,47,61,169,137,154,108,206,32,235,63,0,0,0,0,0,112,18,61,75,26,79,184,162,51,235,63,0,0,0,0,0,71,77,61,231,71,183,21,132,70,235,63,0,0,0,0,0,56,56,189,58,89,229,141,114,89,235,63,0,0,0,0,0,0,152,60,106,197,241,41,110,108,235,63,0,0,0,0,0,208,10,61,80,94,251,242,118,127,235,63,0,0,0,0,0,128,222,60,178,73,39,242,140,146,235,63,0,0,0,0,0,192,4,189,3,6,161,48,176,165,235,63,0,0,0,0,0,112,13,189,102,111,154,183,224,184,235,63,0,0,0,0,0,144,13,61,255,193,75,144,30,204,235,63,0,0,0,0,0,160,2,61,111,161,243,195,105,223,235,63,0,0,0,0,0,120,31,189,184,29,215,91,194,242,235,63,0,0,0,0,0,160,16,189,233,178,65,97,40,6,236,63,0,0,0,0,0,64,17,189,224,82,133,221,155,25,236,63,0,0,0,0,0,224,11,61,238,100,250,217,28,45,236,63,0,0,0,0,0,64,9,189,47,208,255,95,171,64,236,63,0,0,0,0,0,208,14,189,21,253,250,120,71,84,236,63,0,0,0,0,0,102,57,61,203,208,87,46,241,103,236,63,0,0,0,0,0,16,26,189,182,193,136,137,168,123,236,63,0,0,0,0,128,69,88,189,51,231,6,148,109,143,236,63,0,0,0,0,0,72,26,189,223,196,81,87,64,163,236,63,0,0,0,0,0,0,203,60,148,144,239,220,32,183,236,63,0,0,0,0,0,64,1,61,137,22,109,46,15,203,236,63,0,0,0,0,0,32,240,60,18,196,93,85,11,223,236,63,0,0,0,0,0,96,243,60,59,171,91,91,21,243,236,63,0,0,0,0,0,144,6,189,188,137,7,74,45,7,237,63,0,0,0,0,0,160,9,61,250,200,8,43,83,27,237,63,0,0,0,0,0,224,21,189,133,138,13,8,135,47,237,63,0,0,0,0,0,40,29,61,3,162,202,234,200,67,237,63,0,0,0,0,0,160,1,61,145,164,251,220,24,88,237,63,0,0,0,0,0,0,223,60,161,230,98,232,118,108,237,63,0,0,0,0,0,160,3,189,78,131,201,22,227,128,237,63,0,0,0,0,0,216,12,189,144,96,255,113,93,149,237,63,0,0,0,0,0,192,244,60,174,50,219,3,230,169,237,63,0,0,0,0,0,144,255,60,37,131,58,214,124,190,237,63,0,0,0,0,0,128,233,60,69,180,1,243,33,211,237,63,0,0,0,0,0,32,245,188,191,5,28,100,213,231,237,63,0,0,0,0,0,112,29,189,236,154,123,51,151,252,237,63,0,0,0,0,0,20,22,189,94,125,25,107,103,17,238,63,0,0,0,0,0,72,11,61,231,163,245,20,70,38,238,63,0,0,0,0,0,206,64,61,92,238,22,59,51,59,238,63,0,0,0,0,0,104,12,61,180,63,139,231,46,80,238,63,0,0,0,0,0,48,9,189,104,109,103,36,57,101,238,63,0,0,0,0,0,0,229,188,68,76,199,251,81,122,238,63,0,0,0,0,0,248,7,189,38,183,205,119,121,143,238,63,0,0,0,0,0,112,243,188,232,144,164,162,175,164,238,63,0,0,0,0,0,208,229,60,228,202,124,134,244,185,238,63,0,0,0,0,0,26,22,61,13,104,142,45,72,207,238,63,0,0,0,0,0,80,245,60,20,133,24,162,170,228,238,63,0,0,0,0,0,64,198,60,19,90,97,238,27,250,238,63,0,0,0,0,0,128,238,188,6,65,182,28,156,15,239,63,0,0,0,0,0,136,250,188,99,185,107,55,43,37,239,63,0,0,0,0,0,144,44,189,117,114,221,72,201,58,239,63,0,0,0,0,0,0,170,60,36,69,110,91,118,80,239,63,0,0,0,0,0,240,244,188,253,68,136,121,50,102,239,63,0,0,0,0,0,128,202,60,56,190,156,173,253,123,239,63,0,0,0,0,0,188,250,60,130,60,36,2,216,145,239,63,0,0,0,0,0,96,212,188,142,144,158,129,193,167,239,63,0,0,0,0,0,12,11,189,17,213,146,54,186,189,239,63,0,0,0,0,0,224,192,188,148,113,143,43,194,211,239,63,0,0,0,0,128,222,16,189,238,35,42,107,217,233,239,63,0,0,0,0,0,67,238,60,0,0,0,0,0,0,240,63,0,0,0,0,0,0,0,0,190,188,90,250,26,11,240,63,0,0,0,0,0,64,179,188,3,51,251,169,61,22,240,63,0,0,0,0,0,23,18,189,130,2,59,20,104,33,240,63,0,0,0,0,0,64,186,60,108,128,119,62,154,44,240,63,0,0,0,0,0,152,239,60,202,187,17,46,212,55,240,63,0,0,0,0,0,64,199,188,137,127,110,232,21,67,240,63,0,0,0,0,0,48,216,60,103,84,246,114,95,78,240,63,0,0,0,0,0,63,26,189,90,133,21,211,176,89,240,63,0,0,0,0,0,132,2,189,149,31,60,14,10,101,240,63,0,0,0,0,0,96,241,60,26,247,221,41,107,112,240,63,0,0,0,0,0,36,21,61,45,168,114,43,212,123,240,63,0,0,0,0,0,160,233,188,208,155,117,24,69,135,240,63,0,0,0,0,0,64,230,60,200,7,102,246,189,146,240,63,0,0,0,0,0,120,0,189,131,243,198,202,62,158,240,63,0,0,0,0,0,0,152,188,48,57,31,155,199,169,240,63,0,0,0,0,0,160,255,60,252,136,249,108,88,181,240,63,0,0,0,0,0,200,250,188,138,108,228,69,241,192,240,63,0,0,0,0,0,192,217,60,22,72,114,43,146,204,240,63,0,0,0,0,0,32,5,61,216,93,57,35,59,216,240,63,0,0,0,0,0,208,250,188,243,209,211,50,236,227,240,63,0,0,0,0,0,172,27,61,166,169,223,95,165,239,240,63,0,0,0,0,0,232,4,189,240,210,254,175,102,251,240,63,0,0,0,0,0,48,13,189,75,35,215,40,48,7,241,63,0,0,0,0,0,80,241,60,91,91,18,208,1,19,241,63,0,0,0,0,0,0,236,60,249,42,94,171,219,30,241,63,0,0,0,0,0,188,22,61,213,49,108,192,189,42,241,63,0,0,0,0,0,64,232,60,125,4,242,20,168,54,241,63,0,0,0,0,0,208,14,189,233,45,169,174,154,66,241,63,0,0,0,0,0,224,232,60,56,49,79,147,149,78,241,63,0,0,0,0,0,64,235,60,113,142,165,200,152,90,241,63,0,0,0,0,0,48,5,61,223,195,113,84,164,102,241,63,0,0,0,0,0,56,3,61,17,82,125,60,184,114,241,63,0,0,0,0,0,212,40,61,159,187,149,134,212,126,241,63,0,0,0,0,0,208,5,189,147,141,140,56,249,138,241,63,0,0,0,0,0,136,28,189,102,93,55,88,38,151,241,63,0,0,0,0,0,240,17,61,167,203,111,235,91,163,241,63,0,0,0,0,0,72,16,61,227,135,19,248,153,175,241,63,0,0,0,0,0,57,71,189,84,93,4,132,224,187,241,63,0,0,0,0,0,228,36,61,67,28,40,149,47,200,241,63,0,0,0,0,0,32,10,189,178,185,104,49,135,212,241,63,0,0,0,0,0,128,227,60,49,64,180,94,231,224,241,63,0,0,0,0,0,192,234,60,56,217,252,34,80,237,241,63,0,0,0,0,0,144,1,61,247,205,56,132,193,249,241,63,0,0,0,0,0,120,27,189,143,141,98,136,59,6,242,63,0,0,0,0,0,148,45,61,30,168,120,53,190,18,242,63,0,0,0,0,0,0,216,60,65,221,125,145,73,31,242,63,0,0,0,0,0,52,43,61,35,19,121,162,221,43,242,63,0,0,0,0,0,248,25,61,231,97,117,110,122,56,242,63,0,0,0,0,0,200,25,189,39,20,130,251,31,69,242,63,0,0,0,0,0,48,2,61,2,166,178,79,206,81,242,63,0,0,0,0,0,72,19,189,176,206,30,113,133,94,242,63,0,0,0,0,0,112,18,61,22,125,226,101,69,107,242,63,0,0,0,0,0,208,17,61,15,224,29,52,14,120,242,63,0,0,0,0,0,238,49,61,62,99,245,225,223,132,242,63,0,0,0,0,0,192,20,189,48,187,145,117,186,145,242,63,0,0,0,0,0,216,19,189,9,223,31,245,157,158,242,63,0,0,0,0,0,176,8,61,155,14,209,102,138,171,242,63,0,0,0,0,0,124,34,189,58,218,218,208,127,184,242,63,0,0,0,0,0,52,42,61,249,26,119,57,126,197,242,63,0,0,0,0,0,128,16,189,217,2,228,166,133,210,242,63,0,0,0,0,0,208,14,189,121,21,100,31,150,223,242,63,0,0,0,0,0,32,244,188,207,46,62,169,175,236,242,63,0,0,0,0,0,152,36,189,34,136,189,74,210,249,242,63,0,0,0,0,0,48,22,189,37,182,49,10,254,6,243,63,0,0,0,0,0,54,50,189,11,165,238,237,50,20,243,63,0,0,0,0,128,223,112,189,184,215,76,252,112,33,243,63,0,0,0,0,0,72,34,189,162,233,168,59,184,46,243,63,0,0,0,0,0,152,37,189,102,23,100,178,8,60,243,63,0,0,0,0,0,208,30,61,39,250,227,102,98,73,243,63,0,0,0,0,0,0,220,188,15,159,146,95,197,86,243,63,0,0,0,0,0,216,48,189,185,136,222,162,49,100,243,63,0,0,0,0,0,200,34,61,57,170,58,55,167,113,243,63,0,0,0,0,0,96,32,61,254,116,30,35,38,127,243,63,0,0,0,0,0,96,22,189,56,216,5,109,174,140,243,63,0,0,0,0,0,224,10,189,195,62,113,27,64,154,243,63,0,0,0,0,0,114,68,189,32,160,229,52,219,167,243,63,0,0,0,0,0,32,8,61,149,110,236,191,127,181,243,63,0,0,0,0,0,128,62,61,242,168,19,195,45,195,243,63,0,0,0,0,0,128,239,60,34,225,237,68,229,208,243,63,0,0,0,0,0,160,23,189,187,52,18,76,166,222,243,63,0,0,0,0,0,48,38,61,204,78,28,223,112,236,243,63,0,0,0,0,0,166,72,189,140,126,172,4,69,250,243,63,0,0,0,0,0,220,60,189,187,160,103,195,34,8,244,63,0,0,0,0,0,184,37,61,149,46,247,33,10,22,244,63,0,0,0,0,0,192,30,61,70,70,9,39,251,35,244,63,0,0,0,0,0,96,19,189,32,169,80,217,245,49,244,63,0,0,0,0,0,152,35,61,235,185,132,63,250,63,244,63,0,0,0,0,0,0,250,60,25,137,97,96,8,78,244,63,0,0,0,0,0,192,246,188,1,210,167,66,32,92,244,63,0,0,0,0,0,192,11,189,22,0,29,237,65,106,244,63,0,0,0,0,0,128,18,189,38,51,139,102,109,120,244,63,0,0,0,0,0,224,48,61,0,60,193,181,162,134,244,63,0,0,0,0,0,64,45,189,4,175,146,225,225,148,244,63,0,0,0,0,0,32,12,61,114,211,215,240,42,163,244,63,0,0,0,0,0,80,30,189,1,184,109,234,125,177,244,63,0,0,0,0,0,128,7,61,225,41,54,213,218,191,244,63,0,0,0,0,0,128,19,189,50,193,23,184,65,206,244,63,0,0,0,0,0,128,0,61,219,221,253,153,178,220,244,63,0,0,0,0,0,112,44,61,150,171,216,129,45,235,244,63,0,0,0,0,0,224,28,189,2,45,157,118,178,249,244,63,0,0,0,0,0,32,25,61,193,49,69,127,65,8,245,63,0,0,0,0,0,192,8,189,42,102,207,162,218,22,245,63,0,0,0,0,0,0,250,188,234,81,63,232,125,37,245,63,0,0,0,0,0,8,74,61,218,78,157,86,43,52,245,63,0,0,0,0,0,216,38,189,26,172,246,244,226,66,245,63,0,0,0,0,0,68,50,189,219,148,93,202,164,81,245,63,0,0,0,0,0,60,72,61,107,17,233,221,112,96,245,63,0,0,0,0,0,176,36,61,222,41,181,54,71,111,245,63,0,0,0,0,0,90,65,61,14,196,226,219,39,126,245,63,0,0,0,0,0,224,41,189,111,199,151,212,18,141,245,63,0,0,0,0,0,8,35,189,76,11,255,39,8,156,245,63,0,0,0,0,0,236,77,61,39,84,72,221,7,171,245,63,0,0,0,0,0,0,196,188,244,122,168,251,17,186,245,63,0,0,0,0,0,8,48,61,11,70,89,138,38,201,245,63,0,0,0,0,0,200,38,189,63,142,153,144,69,216,245,63,0,0,0,0,0,154,70,61,225,32,173,21,111,231,245,63,0,0,0,0,0,64,27,189,202,235,220,32,163,246,245,63,0,0,0,0,0,112,23,61,184,220,118,185,225,5,246,63,0,0,0,0,0,248,38,61,21,247,205,230,42,21,246,63,0,0,0,0,0,0,1,61,49,85,58,176,126,36,246,63,0,0,0,0,0,208,21,189,181,41,25,29,221,51,246,63,0,0,0,0,0,208,18,189,19,195,204,52,70,67,246,63],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([0,0,0,0,0,128,234,188,250,142,188,254,185,82,246,63,0,0,0,0,0,96,40,189,151,51,85,130,56,98,246,63,0,0,0,0,0,254,113,61,142,50,8,199,193,113,246,63,0,0,0,0,0,32,55,189,126,169,76,212,85,129,246,63,0,0,0,0,0,128,230,60,113,148,158,177,244,144,246,63,0,0,0,0,0,120,41,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}var _BDtoIHigh=true;var ___errno_state=0;function ___setErrNo(value){HEAP32[___errno_state>>2]=value;return value}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}Module["_memset"]=_memset;var _BDtoILow=true;var _ceil=Math_ceil;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(lookup.node.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");HEAP32[_stdin>>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=HEAP32[varargs+argIndex>>2],HEAP32[tempDoublePtr+4>>2]=HEAP32[varargs+(argIndex+4)>>2],+HEAPF64[tempDoublePtr>>3]);argIndex+=8}else if(type=="i64"){ret=[HEAP32[varargs+argIndex>>2],HEAP32[varargs+(argIndex+4)>>2]];argIndex+=8}else{assert((argIndex&3)===0);type="i32";ret=HEAP32[varargs+argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break};case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;var currArg=getNextArg("i"+argSize*8);var origArg=currArg;var argText;if(argSize==8){currArg=Runtime.makeBigInt(currArg[0],currArg[1],next==117)}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],null);else argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],true);else argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(argSize==8&&i64Math){if(origArg[1]){argText=(origArg[1]>>>0).toString(16);var lower=(origArg[0]>>>0).toString(16);while(lower.length<8)lower="0"+lower;argText+=lower}else{argText=(origArg[0]>>>0).toString(16)}}else if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&__reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break};case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break};case"%":{ret.push(curr);break};default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function _fprintf(stream,format,varargs){var result=__formatString(format,varargs);var stack=Runtime.stackSave();var ret=_fwrite(allocate(result,"i8",ALLOC_STACK),1,result.length,stream);Runtime.stackRestore(stack);return ret}function _printf(format,varargs){var stdout=HEAP32[_stdout>>2];return _fprintf(stdout,format,varargs)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;var _cos=Math_cos;var _log=Math_log;function _fputs(s,stream){var fd=_fileno(stream);return _write(fd,s,_strlen(s))}function _fputc(c,stream){var chr=unSign(c&255);HEAP8[_fputc.ret>>0]=chr;var fd=_fileno(stream);var ret=_write(fd,_fputc.ret,1);if(ret==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return-1}else{return chr}}function _puts(s){var stdout=HEAP32[_stdout>>2];var ret=_fputs(s,stdout);if(ret<0){return ret}else{var newlineRet=_fputc(10,stdout);return newlineRet<0?-1:ret+1}}function ___errno_location(){return ___errno_state}var _BItoD=true;Module["_strcpy"]=_strcpy;function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler(){setTimeout(Browser.mainLoop.runner,value)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){Module["noExitRuntime"]=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2]=0;FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}__ATINIT__.push((function(){SOCKFS.root=FS.mount(SOCKFS,{},null)}));_fputc.ret=allocate([0],"i8",ALLOC_STATIC);Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Ma(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Na(a){a=a|0;B=a}function Oa(){return B|0}function Pa(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0;if((Qa(a)|0)==1){d=Kb((a<<4)+272|0)|0;e=d+8|0;f=Ra(a,e)|0;c[d+264>>2]=f;g=d+272|0;if((f|0)>0){i=f+-1|0;j=1;k=0;l=0;while(1){m=c[e+(i-l<<2)>>2]|0;n=j;j=Z(m,j)|0;o=-6.283185307179586/+(j|0);if((n|0)>0&(m|0)>1){p=m+-1|0;m=(p|0)>1?p:1;q=Z(n,m)|0;r=k;s=0;while(1){t=r;u=0;while(1){u=u+1|0;v=o*+(Z(u,s)|0);h[g+(t<<4)>>3]=+P(+v);h[g+(t<<4)+8>>3]=+Q(+v);if((u|0)==(p|0))break;else t=t+1|0}s=s+1|0;if((s|0)==(n|0))break;else r=r+m|0}w=k+q|0}else w=k;l=l+1|0;if((l|0)==(f|0))break;else k=w}}c[d+268>>2]=0;x=d;y=a}else{d=~~+Eb(+Y(+(+Fb(+(a|0))/.3010299956639812)));w=d<<((d|0)<((a<<1)+-2|0)&1);d=Kb((w<<4)+272|0)|0;k=d+8|0;f=Ra(w,k)|0;c[d+264>>2]=f;l=d+272|0;if((f|0)>0){g=f+-1|0;j=1;i=0;e=0;while(1){m=c[k+(g-e<<2)>>2]|0;r=j;j=Z(m,j)|0;o=-6.283185307179586/+(j|0);if((r|0)>0&(m|0)>1){n=m+-1|0;m=(n|0)>1?n:1;s=Z(r,m)|0;p=i;t=0;while(1){u=p;z=0;while(1){z=z+1|0;v=o*+(Z(z,t)|0);h[l+(u<<4)>>3]=+P(+v);h[l+(u<<4)+8>>3]=+Q(+v);if((z|0)==(n|0))break;else u=u+1|0}t=t+1|0;if((t|0)==(r|0))break;else p=p+m|0}A=i+s|0}else A=i;e=e+1|0;if((e|0)==(f|0))break;else i=A}}c[d+268>>2]=1;x=d;y=w}c[x>>2]=a;c[x+4>>2]=b;if((b|0)==-1&(y|0)>0)B=0;else return x|0;do{b=x+272+(B<<4)+8|0;h[b>>3]=-+h[b>>3];B=B+1|0}while((B|0)!=(y|0));return x|0}function Qa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;if(!((a|0)%53|0)){b=a;while(1){c=(b|0)/53|0;if(!((c|0)%53|0))b=c;else{d=c;break}}}else d=a;if(!((d|0)%47|0)){a=d;while(1){b=(a|0)/47|0;if(!((b|0)%47|0))a=b;else{e=b;break}}}else e=d;if(!((e|0)%43|0)){d=e;while(1){a=(d|0)/43|0;if(!((a|0)%43|0))d=a;else{f=a;break}}}else f=e;if(!((f|0)%41|0)){e=f;while(1){d=(e|0)/41|0;if(!((d|0)%41|0))e=d;else{g=d;break}}}else g=f;if(!((g|0)%37|0)){f=g;while(1){e=(f|0)/37|0;if(!((e|0)%37|0))f=e;else{h=e;break}}}else h=g;if(!((h|0)%31|0)){g=h;while(1){f=(g|0)/31|0;if(!((f|0)%31|0))g=f;else{i=f;break}}}else i=h;if(!((i|0)%29|0)){h=i;while(1){g=(h|0)/29|0;if(!((g|0)%29|0))h=g;else{j=g;break}}}else j=i;if(!((j|0)%23|0)){i=j;while(1){h=(i|0)/23|0;if(!((h|0)%23|0))i=h;else{k=h;break}}}else k=j;if(!((k|0)%17|0)){j=k;while(1){i=(j|0)/17|0;if(!((i|0)%17|0))j=i;else{l=i;break}}}else l=k;if(!((l|0)%13|0)){k=l;while(1){j=(k|0)/13|0;if(!((j|0)%13|0))k=j;else{m=j;break}}}else m=l;if(!((m|0)%11|0)){l=m;while(1){k=(l|0)/11|0;if(!((k|0)%11|0))l=k;else{n=k;break}}}else n=m;if(!(n&7)){m=n;while(1){l=(m|0)/8|0;if(!(l&7))m=l;else{o=l;break}}}else o=n;if(!((o|0)%7|0)){n=o;while(1){m=(n|0)/7|0;if(!((m|0)%7|0))n=m;else{p=m;break}}}else p=o;if(!((p|0)%5|0)){o=p;while(1){n=(o|0)/5|0;if(!((n|0)%5|0))o=n;else{q=n;break}}}else q=p;if(!(q&3)){p=q;while(1){o=(p|0)/4|0;if(!(o&3))p=o;else{r=o;break}}}else r=q;if(!((r|0)%3|0)){q=r;while(1){p=(q|0)/3|0;if(!((p|0)%3|0))q=p;else{s=p;break}}}else s=r;if(!(s&1))t=s;else{u=s;v=(u|0)==1;w=v&1;return w|0}while(1){s=(t|0)/2|0;if(!(s&1))t=s;else{u=s;break}}v=(u|0)==1;w=v&1;return w|0}function Ra(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;if(!((a|0)%53|0)){d=a;e=0;while(1){f=(d|0)/53|0;c[b+(e<<2)>>2]=53;g=e+1|0;if(!((f|0)%53|0)){d=f;e=g}else{h=f;i=g;break}}}else{h=a;i=0}if(!((h|0)%47|0)){a=h;e=i;while(1){d=(a|0)/47|0;c[b+(e<<2)>>2]=47;g=e+1|0;if(!((d|0)%47|0)){a=d;e=g}else{j=d;k=g;break}}}else{j=h;k=i}if(!((j|0)%43|0)){i=j;h=k;while(1){e=(i|0)/43|0;c[b+(h<<2)>>2]=43;a=h+1|0;if(!((e|0)%43|0)){i=e;h=a}else{l=e;m=a;break}}}else{l=j;m=k}if(!((l|0)%41|0)){k=l;j=m;while(1){h=(k|0)/41|0;c[b+(j<<2)>>2]=41;i=j+1|0;if(!((h|0)%41|0)){k=h;j=i}else{n=h;o=i;break}}}else{n=l;o=m}if(!((n|0)%37|0)){m=n;l=o;while(1){j=(m|0)/37|0;c[b+(l<<2)>>2]=37;k=l+1|0;if(!((j|0)%37|0)){m=j;l=k}else{p=j;q=k;break}}}else{p=n;q=o}if(!((p|0)%31|0)){o=p;n=q;while(1){l=(o|0)/31|0;c[b+(n<<2)>>2]=31;m=n+1|0;if(!((l|0)%31|0)){o=l;n=m}else{r=l;s=m;break}}}else{r=p;s=q}if(!((r|0)%29|0)){q=r;p=s;while(1){n=(q|0)/29|0;c[b+(p<<2)>>2]=29;o=p+1|0;if(!((n|0)%29|0)){q=n;p=o}else{t=n;u=o;break}}}else{t=r;u=s}if(!((t|0)%23|0)){s=t;r=u;while(1){p=(s|0)/23|0;c[b+(r<<2)>>2]=23;q=r+1|0;if(!((p|0)%23|0)){s=p;r=q}else{v=p;w=q;break}}}else{v=t;w=u}if(!((v|0)%19|0)){u=v;t=w;while(1){r=(u|0)/19|0;c[b+(t<<2)>>2]=19;s=t+1|0;if(!((r|0)%19|0)){u=r;t=s}else{x=r;y=s;break}}}else{x=v;y=w}if(!((x|0)%17|0)){w=x;v=y;while(1){t=(w|0)/17|0;c[b+(v<<2)>>2]=17;u=v+1|0;if(!((t|0)%17|0)){w=t;v=u}else{z=t;A=u;break}}}else{z=x;A=y}if(!((z|0)%13|0)){y=z;x=A;while(1){v=(y|0)/13|0;c[b+(x<<2)>>2]=13;w=x+1|0;if(!((v|0)%13|0)){y=v;x=w}else{B=v;C=w;break}}}else{B=z;C=A}if(!((B|0)%11|0)){A=B;z=C;while(1){x=(A|0)/11|0;c[b+(z<<2)>>2]=11;y=z+1|0;if(!((x|0)%11|0)){A=x;z=y}else{D=x;E=y;break}}}else{D=B;E=C}if(!(D&7)){C=D;B=E;while(1){z=(C|0)/8|0;c[b+(B<<2)>>2]=8;A=B+1|0;if(!(z&7)){C=z;B=A}else{F=z;G=A;break}}}else{F=D;G=E}if(!((F|0)%7|0)){E=F;D=G;while(1){B=(E|0)/7|0;c[b+(D<<2)>>2]=7;C=D+1|0;if(!((B|0)%7|0)){E=B;D=C}else{H=B;I=C;break}}}else{H=F;I=G}if(!((H|0)%5|0)){G=H;F=I;while(1){D=(G|0)/5|0;c[b+(F<<2)>>2]=5;E=F+1|0;if(!((D|0)%5|0)){G=D;F=E}else{J=D;K=E;break}}}else{J=H;K=I}if(!(J&3)){I=J;H=K;while(1){F=(I|0)/4|0;c[b+(H<<2)>>2]=4;G=H+1|0;if(!(F&3)){I=F;H=G}else{L=F;M=G;break}}}else{L=J;M=K}if(!((L|0)%3|0)){K=L;J=M;while(1){H=(K|0)/3|0;c[b+(J<<2)>>2]=3;I=J+1|0;if(!((H|0)%3|0)){K=H;J=I}else{N=H;O=I;break}}}else{N=L;O=M}if(!(N&1)){M=N;L=O;while(1){J=(M|0)/2|0;c[b+(L<<2)>>2]=2;K=L+1|0;if(!(J&1)){M=J;L=K}else{P=J;Q=K;break}}}else{P=N;Q=O}if((P|0)>31){R=P;S=Q;T=2}else{U=Q;return U|0}while(1){Q=T*6|0;P=Q+-1|0;O=Q|1;if(!((R|0)%(P|0)|0)){Q=R;N=S;while(1){c[b+(N<<2)>>2]=P;L=N+1|0;M=(Q|0)/(P|0)|0;if(!((M|0)%(P|0)|0)){Q=M;N=L}else{V=M;W=L;break}}}else{V=R;W=S}if(!((V|0)%(O|0)|0)){N=V;Q=W;while(1){c[b+(Q<<2)>>2]=O;P=Q+1|0;L=(N|0)/(O|0)|0;if(!((L|0)%(O|0)|0)){N=L;Q=P}else{X=L;Y=P;break}}}else{X=V;Y=W}if((X|0)>1){R=X;S=Y;T=T+1|0}else{U=Y;break}}return U|0}function Sa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+268>>2]|0;if((e|0)==1){Ua(b,d,a,c[a+4>>2]|0,c[a>>2]|0);return}else if(!e){Ta(d,b,a,c[a+4>>2]|0,c[a>>2]|0,1,0);return}else return}function Ta(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0.0,u=0,v=0.0,w=0,x=0.0,y=0,z=0.0,A=0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0,J=0.0,K=0,L=0.0,M=0.0,N=0.0,O=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0,ma=0,na=0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0,va=0,wa=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0;j=(f|0)>1;if(j)k=c[d+8+(i<<2)>>2]|0;else k=0;switch(f|0){case 7:{l=+h[b>>3];h[a>>3]=l;m=+h[b+8>>3];n=a+8|0;h[n>>3]=m;o=+h[b+(g<<4)>>3];p=a+16|0;h[p>>3]=o;q=+h[b+(g<<4)+8>>3];r=a+24|0;h[r>>3]=q;s=g<<1;t=+h[b+(s<<4)>>3];u=a+32|0;h[u>>3]=t;v=+h[b+(s<<4)+8>>3];s=a+40|0;h[s>>3]=v;w=g*3|0;x=+h[b+(w<<4)>>3];y=a+48|0;h[y>>3]=x;z=+h[b+(w<<4)+8>>3];w=a+56|0;h[w>>3]=z;A=g<<2;B=+h[b+(A<<4)>>3];C=a+64|0;h[C>>3]=B;D=+h[b+(A<<4)+8>>3];A=a+72|0;h[A>>3]=D;E=g*5|0;F=+h[b+(E<<4)>>3];G=a+80|0;h[G>>3]=F;H=+h[b+(E<<4)+8>>3];E=a+88|0;h[E>>3]=H;I=g*6|0;J=+h[b+(I<<4)>>3];K=a+96|0;h[K>>3]=J;L=+h[b+(I<<4)+8>>3];I=a+104|0;h[I>>3]=L;M=o+J;N=o-J;J=L+q;o=q-L;L=t+F;q=t-F;F=v+H;t=v-H;H=x+B;v=x-B;B=z+D;x=z-D;D=M*.62348980185+l-L*.22252093395-H*.9009688679;z=J*.62348980185+m-F*.22252093395-B*.9009688679;O=(e|0)==1;if(O){R=o*-.78183148246-t*.97492791218-x*.43388373911;S=N*-.78183148246-q*.97492791218-v*.43388373911}else{R=o*.78183148246+t*.97492791218+x*.43388373911;S=N*.78183148246+q*.97492791218+v*.43388373911}h[p>>3]=D-R;h[K>>3]=D+R;h[r>>3]=z+S;h[I>>3]=z-S;S=H*.62348980185+(l-M*.22252093395-L*.9009688679);z=B*.62348980185+(m-J*.22252093395-F*.9009688679);R=N*.97492791218;D=q*.43388373911;if(O){T=t*.43388373911-o*.97492791218+x*.78183148246;U=D-R+v*.78183148246}else{T=o*.97492791218-t*.43388373911-x*.78183148246;U=R-D-v*.78183148246}h[u>>3]=S-T;h[G>>3]=S+T;h[s>>3]=z+U;h[E>>3]=z-U;U=L*.62348980185+(l-M*.9009688679)-H*.22252093395;z=F*.62348980185+(m-J*.9009688679)-B*.22252093395;T=N*.43388373911;N=q*.78183148246;if(O){V=t*.78183148246-o*.43388373911-x*.97492791218;W=N-T-v*.97492791218}else{V=o*.43388373911-t*.78183148246+x*.97492791218;W=T-N+v*.97492791218}h[y>>3]=U-V;h[C>>3]=U+V;h[w>>3]=z+W;h[A>>3]=z-W;h[a>>3]=M+L+H+l;h[n>>3]=J+F+B+m;return}case 8:{m=+h[b>>3];h[a>>3]=m;B=+h[b+8>>3];n=a+8|0;h[n>>3]=B;F=+h[b+(g<<4)>>3];A=a+16|0;h[A>>3]=F;J=+h[b+(g<<4)+8>>3];w=a+24|0;h[w>>3]=J;C=g<<1;l=+h[b+(C<<4)>>3];y=a+32|0;h[y>>3]=l;H=+h[b+(C<<4)+8>>3];C=a+40|0;h[C>>3]=H;O=g*3|0;L=+h[b+(O<<4)>>3];E=a+48|0;h[E>>3]=L;M=+h[b+(O<<4)+8>>3];O=a+56|0;h[O>>3]=M;s=g<<2;W=+h[b+(s<<4)>>3];G=a+64|0;h[G>>3]=W;z=+h[b+(s<<4)+8>>3];s=a+72|0;h[s>>3]=z;u=g*5|0;V=+h[b+(u<<4)>>3];I=a+80|0;h[I>>3]=V;U=+h[b+(u<<4)+8>>3];u=a+88|0;h[u>>3]=U;r=g*6|0;v=+h[b+(r<<4)>>3];K=a+96|0;h[K>>3]=v;N=+h[b+(r<<4)+8>>3];r=a+104|0;h[r>>3]=N;p=g*7|0;T=+h[b+(p<<4)>>3];X=a+112|0;h[X>>3]=T;x=+h[b+(p<<4)+8>>3];p=a+120|0;h[p>>3]=x;t=m+W;o=m-W;W=B+z;m=B-z;z=F+T;B=F-T;T=x+J;F=J-x;x=L+V;J=L-V;V=M+U;L=M-U;U=l+v;M=l-v;v=H+N;l=H-N;h[a>>3]=t+z+x+U;h[n>>3]=W+T+V+v;h[G>>3]=t-z-x+U;h[s>>3]=W-T-V+v;N=B+J;H=F+L;q=(z-x)*.7071067811865476;x=o+q;z=(T-V)*.7071067811865476;V=m+z;s=(e|0)==1;if(s){Y=H*-.7071067811865476-l;_=N*-.7071067811865476-M}else{Y=H*.7071067811865476+l;_=N*.7071067811865476+M}h[A>>3]=x-Y;h[w>>3]=V+_;h[X>>3]=x+Y;h[p>>3]=V-_;_=t-U;U=W-v;v=s?L-F:F-L;L=s?J-B:B-J;h[y>>3]=_-v;h[C>>3]=L+U;h[K>>3]=v+_;h[r>>3]=U-L;L=o-q;q=m-z;z=N*.7071067811865476;if(s){$=l-H*.7071067811865476;aa=M-z}else{$=H*.7071067811865476-l;aa=z-M}h[E>>3]=L-$;h[O>>3]=q+aa;h[I>>3]=L+$;h[u>>3]=q-aa;return}case 5:{aa=+h[b>>3];h[a>>3]=aa;q=+h[b+8>>3];u=a+8|0;h[u>>3]=q;$=+h[b+(g<<4)>>3];I=a+16|0;h[I>>3]=$;L=+h[b+(g<<4)+8>>3];O=a+24|0;h[O>>3]=L;E=g<<1;M=+h[b+(E<<4)>>3];s=a+32|0;h[s>>3]=M;z=+h[b+(E<<4)+8>>3];E=a+40|0;h[E>>3]=z;r=g*3|0;l=+h[b+(r<<4)>>3];K=a+48|0;h[K>>3]=l;H=+h[b+(r<<4)+8>>3];r=a+56|0;h[r>>3]=H;C=g<<2;N=+h[b+(C<<4)>>3];y=a+64|0;h[y>>3]=N;m=+h[b+(C<<4)+8>>3];C=a+72|0;h[C>>3]=m;o=$+N;U=$-N;N=m+L;$=L-m;m=M+l;L=M-l;l=z+H;M=z-H;p=(e|0)==1;if(p){ba=$*.95105651629+M*.58778525229;ca=U*.95105651629+L*.58778525229}else{ba=$*-.95105651629-M*.58778525229;ca=U*-.95105651629-L*.58778525229}H=o*.30901699437-m*.80901699437+aa;z=N*.30901699437-l*.80901699437+q;h[I>>3]=ba+H;h[O>>3]=z-ca;h[y>>3]=H-ba;h[C>>3]=ca+z;z=U*.58778525229;U=L*.95105651629;if(p){da=$*.58778525229-M*.95105651629;ea=z-U}else{da=M*.95105651629-$*.58778525229;ea=U-z}z=m*.30901699437-o*.80901699437+aa;U=l*.30901699437-N*.80901699437+q;h[s>>3]=da+z;h[E>>3]=U-ea;h[K>>3]=z-da;h[r>>3]=ea+U;h[a>>3]=o+m+aa;h[u>>3]=N+l+q;return}case 1:{h[a>>3]=+h[b>>3];h[a+8>>3]=+h[b+8>>3];return}case 2:{q=+h[b>>3];h[a>>3]=q;l=+h[b+8>>3];u=a+8|0;h[u>>3]=l;N=+h[b+(g<<4)>>3];aa=+h[b+(g<<4)+8>>3];h[a>>3]=q+N;h[u>>3]=l+aa;h[a+16>>3]=q-N;h[a+24>>3]=l-aa;return}case 3:{aa=+h[b>>3];h[a>>3]=aa;l=+h[b+8>>3];u=a+8|0;h[u>>3]=l;N=+h[b+(g<<4)>>3];r=a+16|0;h[r>>3]=N;q=+h[b+(g<<4)+8>>3];K=a+24|0;h[K>>3]=q;E=g<<1;m=+h[b+(E<<4)>>3];o=+h[b+(E<<4)+8>>3];U=N+m;ea=o+q;da=+(e|0)*.86602540378;z=da*(N-m);m=da*(q-o);o=aa-U*.5;q=l-ea*.5;h[a>>3]=U+aa;h[u>>3]=ea+l;h[r>>3]=o+m;h[K>>3]=q-z;h[a+32>>3]=o-m;h[a+40>>3]=z+q;return}case 4:{q=+h[b>>3];h[a>>3]=q;z=+h[b+8>>3];K=a+8|0;h[K>>3]=z;m=+h[b+(g<<4)>>3];r=a+16|0;h[r>>3]=m;o=+h[b+(g<<4)+8>>3];u=a+24|0;h[u>>3]=o;E=g<<1;l=+h[b+(E<<4)>>3];s=a+32|0;h[s>>3]=l;ea=+h[b+(E<<4)+8>>3];E=a+40|0;h[E>>3]=ea;p=g*3|0;aa=+h[b+(p<<4)>>3];U=+h[b+(p<<4)+8>>3];da=q+l;N=z+ea;$=q-l;l=z-ea;ea=m+aa;z=U+o;q=+(e|0);M=q*(m-aa);aa=q*(o-U);h[a>>3]=da+ea;h[K>>3]=N+z;h[r>>3]=$+aa;h[u>>3]=l-M;h[s>>3]=da-ea;h[E>>3]=N-z;h[a+48>>3]=$-aa;h[a+56>>3]=l+M;return}default:switch(k|0){case 2:{E=(f|0)/2|0;s=g<<1;u=i+1|0;Ta(a,b,d,e,E,s,u);Ta(a+(E<<4)|0,b+(g<<4)|0,d,e,E,s,u);if(!j)return;j=E+-1|0;u=0;do{s=j+u|0;M=+h[d+272+(s<<4)>>3];l=+h[d+272+(s<<4)+8>>3];s=u+E|0;r=a+(u<<4)|0;aa=+h[r>>3];K=a+(u<<4)+8|0;$=+h[K>>3];p=a+(s<<4)|0;z=+h[p>>3];C=a+(s<<4)+8|0;N=+h[C>>3];ea=M*z-l*N;da=l*z+M*N;h[r>>3]=aa+ea;h[K>>3]=$+da;h[p>>3]=aa-ea;h[C>>3]=$-da;u=u+1|0}while((u|0)<(E|0));return}case 3:{E=(f|0)/3|0;u=g*3|0;j=i+1|0;Ta(a,b,d,e,E,u,j);Ta(a+(E<<4)|0,b+(g<<4)|0,d,e,E,u,j);Ta(a+(E<<1<<4)|0,b+(g<<1<<4)|0,d,e,E,u,j);if((f|0)<=2)return;j=E+-1|0;da=+(e|0)*.86602540378;u=0;do{C=u<<1;p=j+C|0;$=+h[d+272+(p<<4)>>3];ea=+h[d+272+(p<<4)+8>>3];p=C+E|0;aa=+h[d+272+(p<<4)>>3];N=+h[d+272+(p<<4)+8>>3];p=u+E|0;C=p+E|0;K=a+(u<<4)|0;M=+h[K>>3];r=a+(u<<4)+8|0;z=+h[r>>3];s=a+(p<<4)|0;l=+h[s>>3];y=a+(p<<4)+8|0;U=+h[y>>3];o=$*l-ea*U;q=ea*l+$*U;p=a+(C<<4)|0;U=+h[p>>3];O=a+(C<<4)+8|0;$=+h[O>>3];l=aa*U-N*$;ea=N*U+aa*$;$=o+l;aa=q+ea;U=da*(o-l);l=da*(q-ea);ea=M-$*.5;q=z-aa*.5;h[K>>3]=M+$;h[r>>3]=z+aa;h[s>>3]=l+ea;h[y>>3]=q-U;h[p>>3]=ea-l;h[O>>3]=U+q;u=u+1|0}while((u|0)<(E|0));return}case 4:{E=(f|0)/4|0;u=g<<2;j=i+1|0;Ta(a,b,d,e,E,u,j);O=a+(E<<4)|0;Ta(O,b+(g<<4)|0,d,e,E,u,j);p=E<<1;Ta(a+(p<<4)|0,b+(g<<1<<4)|0,d,e,E,u,j);y=E*3|0;Ta(a+(y<<4)|0,b+(g*3<<4)|0,d,e,E,u,j);da=+h[a>>3];j=a+8|0;q=+h[j>>3];U=+h[O>>3];u=a+(E<<4)+8|0;l=+h[u>>3];s=a+(p<<4)|0;ea=+h[s>>3];r=a+(p<<4)+8|0;aa=+h[r>>3];p=a+(y<<4)|0;z=+h[p>>3];K=a+(y<<4)+8|0;$=+h[K>>3];M=da+ea;o=q+aa;N=da-ea;ea=q-aa;aa=U+z;q=l+$;da=+(e|0);m=da*(U-z);z=da*(l-$);h[a>>3]=M+aa;h[j>>3]=o+q;h[O>>3]=N+z;h[u>>3]=ea-m;h[s>>3]=M-aa;h[r>>3]=o-q;h[p>>3]=N-z;h[K>>3]=ea+m;if((f|0)<=7)return;K=E+-1|0;p=1;do{r=p*3|0;s=K+r|0;m=+h[d+272+(s<<4)>>3];ea=+h[d+272+(s<<4)+8>>3];s=r+E|0;z=+h[d+272+(s<<4)>>3];N=+h[d+272+(s<<4)+8>>3];r=s+1|0;q=+h[d+272+(r<<4)>>3];o=+h[d+272+(r<<4)+8>>3];r=p+E|0;s=r+E|0;u=s+E|0;O=a+(p<<4)|0;aa=+h[O>>3];j=a+(p<<4)+8|0;M=+h[j>>3];y=a+(r<<4)|0;$=+h[y>>3];C=a+(r<<4)+8|0;l=+h[C>>3];U=m*$-ea*l;L=ea*$+m*l;r=a+(s<<4)|0;l=+h[r>>3];I=a+(s<<4)+8|0;m=+h[I>>3];$=z*l-N*m;ea=N*l+z*m;s=a+(u<<4)|0;m=+h[s>>3];X=a+(u<<4)+8|0;z=+h[X>>3];l=q*m-o*z;N=o*m+q*z;z=aa+$;q=M+ea;m=aa-$;$=M-ea;ea=U+l;M=L+N;aa=da*(U-l);l=da*(L-N);h[O>>3]=z+ea;h[j>>3]=q+M;h[y>>3]=m+l;h[C>>3]=$-aa;h[r>>3]=z-ea;h[I>>3]=q-M;h[s>>3]=m-l;h[X>>3]=$+aa;p=p+1|0}while((p|0)<(E|0));return}case 5:{E=(f|0)/5|0;p=g*5|0;K=i+1|0;Ta(a,b,d,e,E,p,K);X=a+(E<<4)|0;Ta(X,b+(g<<4)|0,d,e,E,p,K);s=E<<1;Ta(a+(s<<4)|0,b+(g<<1<<4)|0,d,e,E,p,K);I=E*3|0;Ta(a+(I<<4)|0,b+(g*3<<4)|0,d,e,E,p,K);r=E<<2;Ta(a+(r<<4)|0,b+(g<<2<<4)|0,d,e,E,p,K);da=+h[a>>3];K=a+8|0;aa=+h[K>>3];$=+h[X>>3];p=a+(E<<4)+8|0;l=+h[p>>3];C=a+(s<<4)|0;m=+h[C>>3];y=a+(s<<4)+8|0;M=+h[y>>3];s=a+(I<<4)|0;q=+h[s>>3];j=a+(I<<4)+8|0;ea=+h[j>>3];I=a+(r<<4)|0;z=+h[I>>3];O=a+(r<<4)+8|0;N=+h[O>>3];L=$+z;U=l+N;o=m+q;ca=M+ea;ba=$-z;z=l-N;N=m-q;q=M-ea;h[a>>3]=o+(da+L);h[K>>3]=ca+(aa+U);ea=+(e|0);M=ea*(N*.58778525229+ba*.95105651629);m=ea*(q*.58778525229+z*.95105651629);l=da+(L*.30901699437-o*.80901699437);$=aa+(U*.30901699437-ca*.80901699437);h[X>>3]=l+m;h[p>>3]=$-M;h[I>>3]=l-m;h[O>>3]=M+$;$=ea*(ba*.58778525229-N*.95105651629);N=ea*(z*.58778525229-q*.95105651629);q=da+(o*.30901699437-L*.80901699437);L=aa+(ca*.30901699437-U*.80901699437);h[C>>3]=q+N;h[y>>3]=L-$;h[s>>3]=q-N;h[j>>3]=$+L;if((f|0)<=9)return;j=E+-1|0;if((e|0)==1){s=1;do{y=s<<2;C=j+y|0;L=+h[d+272+(C<<4)>>3];$=+h[d+272+(C<<4)+8>>3];C=y+E|0;N=+h[d+272+(C<<4)>>3];q=+h[d+272+(C<<4)+8>>3];y=C+1|0;U=+h[d+272+(y<<4)>>3];ca=+h[d+272+(y<<4)+8>>3];y=C+2|0;aa=+h[d+272+(y<<4)>>3];o=+h[d+272+(y<<4)+8>>3];y=s+E|0;C=y+E|0;O=C+E|0;I=O+E|0;p=a+(s<<4)|0;da=+h[p>>3];X=a+(s<<4)+8|0;z=+h[X>>3];K=a+(y<<4)|0;ea=+h[K>>3];r=a+(y<<4)+8|0;ba=+h[r>>3];M=L*ea-$*ba;m=$*ea+L*ba;y=a+(C<<4)|0;ba=+h[y>>3];u=a+(C<<4)+8|0;L=+h[u>>3];ea=N*ba-q*L;$=q*ba+N*L;C=a+(O<<4)|0;L=+h[C>>3];w=a+(O<<4)+8|0;N=+h[w>>3];ba=U*L-ca*N;q=ca*L+U*N;O=a+(I<<4)|0;N=+h[O>>3];A=a+(I<<4)+8|0;U=+h[A>>3];L=aa*N-o*U;ca=o*N+aa*U;U=M+L;aa=m+ca;N=ea+ba;o=$+q;l=M-L;L=m-ca;ca=ea-ba;ba=$-q;h[p>>3]=N+(da+U);h[X>>3]=o+(z+aa);q=ca*.58778525229+l*.95105651629;$=ba*.58778525229+L*.95105651629;ea=da+(U*.30901699437-N*.80901699437);m=z+(aa*.30901699437-o*.80901699437);h[K>>3]=ea+$;h[r>>3]=m-q;h[O>>3]=ea-$;h[A>>3]=m+q;q=l*.58778525229-ca*.95105651629;ca=L*.58778525229-ba*.95105651629;ba=da+(N*.30901699437-U*.80901699437);U=z+(o*.30901699437-aa*.80901699437);h[y>>3]=ba+ca;h[u>>3]=U-q;h[C>>3]=ba-ca;h[w>>3]=U+q;s=s+1|0}while((s|0)<(E|0));return}else{s=1;do{w=s<<2;C=j+w|0;q=+h[d+272+(C<<4)>>3];U=+h[d+272+(C<<4)+8>>3];C=w+E|0;ca=+h[d+272+(C<<4)>>3];ba=+h[d+272+(C<<4)+8>>3];w=C+1|0;aa=+h[d+272+(w<<4)>>3];o=+h[d+272+(w<<4)+8>>3];w=C+2|0;z=+h[d+272+(w<<4)>>3];N=+h[d+272+(w<<4)+8>>3];w=s+E|0;C=w+E|0;u=C+E|0;y=u+E|0;A=a+(s<<4)|0;da=+h[A>>3];O=a+(s<<4)+8|0;L=+h[O>>3];r=a+(w<<4)|0;l=+h[r>>3];K=a+(w<<4)+8|0;m=+h[K>>3];$=q*l-U*m;ea=U*l+q*m;w=a+(C<<4)|0;m=+h[w>>3];X=a+(C<<4)+8|0;q=+h[X>>3];l=ca*m-ba*q;U=ba*m+ca*q;C=a+(u<<4)|0;q=+h[C>>3];p=a+(u<<4)+8|0;ca=+h[p>>3];m=aa*q-o*ca;ba=o*q+aa*ca;u=a+(y<<4)|0;ca=+h[u>>3];I=a+(y<<4)+8|0;aa=+h[I>>3];q=z*ca-N*aa;o=N*ca+z*aa;aa=$+q;z=ea+o;ca=l+m;N=U+ba;M=$-q;q=ea-o;o=l-m;m=U-ba;h[A>>3]=ca+(da+aa);h[O>>3]=N+(L+z);ba=M*-.95105651629-o*.58778525229;U=q*-.95105651629-m*.58778525229;l=da+(aa*.30901699437-ca*.80901699437);ea=L+(z*.30901699437-N*.80901699437);h[r>>3]=l+U;h[K>>3]=ea-ba;h[u>>3]=l-U;h[I>>3]=ea+ba;ba=o*.95105651629-M*.58778525229;M=m*.95105651629-q*.58778525229;q=da+(ca*.30901699437-aa*.80901699437);aa=L+(N*.30901699437-z*.80901699437);h[w>>3]=q+M;h[X>>3]=aa-ba;h[C>>3]=q-M;h[p>>3]=aa+ba;s=s+1|0}while((s|0)<(E|0));return}break}case 7:{E=(f|0)/7|0;s=g*7|0;j=i+1|0;Ta(a,b,d,e,E,s,j);p=a+(E<<4)|0;Ta(p,b+(g<<4)|0,d,e,E,s,j);C=E<<1;Ta(a+(C<<4)|0,b+(g<<1<<4)|0,d,e,E,s,j);X=E*3|0;Ta(a+(X<<4)|0,b+(g*3<<4)|0,d,e,E,s,j);w=E<<2;Ta(a+(w<<4)|0,b+(g<<2<<4)|0,d,e,E,s,j);I=E*5|0;Ta(a+(I<<4)|0,b+(g*5<<4)|0,d,e,E,s,j);u=E*6|0;Ta(a+(u<<4)|0,b+(g*6<<4)|0,d,e,E,s,j);ba=+h[a>>3];j=a+8|0;aa=+h[j>>3];M=+h[p>>3];s=a+(E<<4)+8|0;q=+h[s>>3];K=a+(C<<4)|0;z=+h[K>>3];r=a+(C<<4)+8|0;N=+h[r>>3];C=a+(X<<4)|0;L=+h[C>>3];O=a+(X<<4)+8|0;ca=+h[O>>3];X=a+(w<<4)|0;da=+h[X>>3];A=a+(w<<4)+8|0;m=+h[A>>3];w=a+(I<<4)|0;o=+h[w>>3];y=a+(I<<4)+8|0;ea=+h[y>>3];I=a+(u<<4)|0;U=+h[I>>3];G=a+(u<<4)+8|0;l=+h[G>>3];$=M+U;H=M-U;U=q+l;M=q-l;l=z+o;q=z-o;o=N+ea;z=N-ea;ea=L+da;N=L-da;da=ca+m;L=ca-m;h[a>>3]=ea+(l+(ba+$));h[j>>3]=da+(o+(aa+U));m=ba+$*.62348980185-l*.22252093395-ea*.9009688679;ca=aa+U*.62348980185-o*.22252093395-da*.9009688679;j=(e|0)==1;if(j){fa=M*-.78183148246-z*.97492791218-L*.43388373911;ga=H*-.78183148246-q*.97492791218-N*.43388373911}else{fa=L*.43388373911+(z*.97492791218+M*.78183148246);ga=N*.43388373911+(q*.97492791218+H*.78183148246)}h[p>>3]=m-fa;h[s>>3]=ca+ga;h[I>>3]=m+fa;h[G>>3]=ca-ga;ga=ea*.62348980185+(ba-$*.22252093395-l*.9009688679);ca=da*.62348980185+(aa-U*.22252093395-o*.9009688679);fa=H*.97492791218;m=q*.43388373911;if(j){ha=L*.78183148246+(z*.43388373911-M*.97492791218);ia=N*.78183148246+(m-fa)}else{ha=M*.97492791218-z*.43388373911-L*.78183148246;ia=fa-m-N*.78183148246}h[K>>3]=ga-ha;h[r>>3]=ca+ia;h[w>>3]=ga+ha;h[y>>3]=ca-ia;ia=l*.62348980185+(ba-$*.9009688679)-ea*.22252093395;ea=o*.62348980185+(aa-U*.9009688679)-da*.22252093395;da=H*.43388373911;H=q*.78183148246;if(j){ja=z*.78183148246-M*.43388373911-L*.97492791218;ka=H-da-N*.97492791218}else{ja=L*.97492791218+(M*.43388373911-z*.78183148246);ka=N*.97492791218+(da-H)}h[C>>3]=ia-ja;h[O>>3]=ea+ka;h[X>>3]=ia+ja;h[A>>3]=ea-ka;if((f|0)<=13)return;A=E+-1|0;X=1;do{O=X*6|0;C=A+O|0;ka=+h[d+272+(C<<4)>>3];ea=+h[d+272+(C<<4)+8>>3];C=O+E|0;ja=+h[d+272+(C<<4)>>3];ia=+h[d+272+(C<<4)+8>>3];O=C+1|0;H=+h[d+272+(O<<4)>>3];da=+h[d+272+(O<<4)+8>>3];O=C+2|0;N=+h[d+272+(O<<4)>>3];z=+h[d+272+(O<<4)+8>>3];O=C+3|0;M=+h[d+272+(O<<4)>>3];L=+h[d+272+(O<<4)+8>>3];O=C+4|0;q=+h[d+272+(O<<4)>>3];U=+h[d+272+(O<<4)+8>>3];O=X+E|0;C=O+E|0;y=C+E|0;w=y+E|0;r=w+E|0;K=r+E|0;G=a+(X<<4)|0;aa=+h[G>>3];I=a+(X<<4)+8|0;o=+h[I>>3];s=a+(O<<4)|0;$=+h[s>>3];p=a+(O<<4)+8|0;ba=+h[p>>3];l=ka*$-ea*ba;ca=ea*$+ka*ba;O=a+(C<<4)|0;ba=+h[O>>3];u=a+(C<<4)+8|0;ka=+h[u>>3];$=ja*ba-ia*ka;ea=ia*ba+ja*ka;C=a+(y<<4)|0;ka=+h[C>>3];n=a+(y<<4)+8|0;ja=+h[n>>3];ba=H*ka-da*ja;ia=da*ka+H*ja;y=a+(w<<4)|0;ja=+h[y>>3];la=a+(w<<4)+8|0;H=+h[la>>3];ka=N*ja-z*H;da=z*ja+N*H;w=a+(r<<4)|0;H=+h[w>>3];ma=a+(r<<4)+8|0;N=+h[ma>>3];ja=M*H-L*N;z=L*H+M*N;r=a+(K<<4)|0;N=+h[r>>3];na=a+(K<<4)+8|0;M=+h[na>>3];H=q*N-U*M;L=U*N+q*M;M=l+H;q=l-H;H=ca+L;l=ca-L;L=$+ja;ca=$-ja;ja=ea+z;$=ea-z;z=ba+ka;ea=ba-ka;ka=ia+da;ba=ia-da;h[G>>3]=z+(L+(aa+M));h[I>>3]=ka+(ja+(o+H));da=aa+M*.62348980185-L*.22252093395-z*.9009688679;ia=o+H*.62348980185-ja*.22252093395-ka*.9009688679;if(j){oa=l*-.78183148246-$*.97492791218-ba*.43388373911;pa=q*-.78183148246-ca*.97492791218-ea*.43388373911}else{oa=ba*.43388373911+($*.97492791218+l*.78183148246);pa=ea*.43388373911+(ca*.97492791218+q*.78183148246)}h[s>>3]=da-oa;h[p>>3]=ia+pa;h[r>>3]=da+oa;h[na>>3]=ia-pa;ia=z*.62348980185+(aa-M*.22252093395-L*.9009688679);da=ka*.62348980185+(o-H*.22252093395-ja*.9009688679);N=q*.97492791218;U=ca*.43388373911;if(j){qa=ba*.78183148246+($*.43388373911-l*.97492791218);ra=ea*.78183148246+(U-N)}else{qa=l*.97492791218-$*.43388373911-ba*.78183148246;ra=N-U-ea*.78183148246}h[O>>3]=ia-qa;h[u>>3]=da+ra;h[w>>3]=ia+qa;h[ma>>3]=da-ra;da=L*.62348980185+(aa-M*.9009688679)-z*.22252093395;z=ja*.62348980185+(o-H*.9009688679)-ka*.22252093395;ka=q*.43388373911;q=ca*.78183148246;if(j){sa=$*.78183148246-l*.43388373911-ba*.97492791218;ta=q-ka-ea*.97492791218}else{sa=ba*.97492791218+(l*.43388373911-$*.78183148246);ta=ea*.97492791218+(ka-q)}h[C>>3]=da-sa;h[n>>3]=z+ta;h[y>>3]=da+sa;h[la>>3]=z-ta;X=X+1|0}while((X|0)<(E|0));return}case 8:{E=(f|0)/8|0;X=g<<3;j=i+1|0;Ta(a,b,d,e,E,X,j);Ta(a+(E<<4)|0,b+(g<<4)|0,d,e,E,X,j);Ta(a+(E<<1<<4)|0,b+(g<<1<<4)|0,d,e,E,X,j);Ta(a+(E*3<<4)|0,b+(g*3<<4)|0,d,e,E,X,j);Ta(a+(E<<2<<4)|0,b+(g<<2<<4)|0,d,e,E,X,j);Ta(a+(E*5<<4)|0,b+(g*5<<4)|0,d,e,E,X,j);Ta(a+(E*6<<4)|0,b+(g*6<<4)|0,d,e,E,X,j);Ta(a+(E*7<<4)|0,b+(g*7<<4)|0,d,e,E,X,j);if((f|0)<=7)return;j=E+-1|0;X=(e|0)==1;A=0;do{la=A*7|0;y=j+la|0;ta=+h[d+272+(y<<4)>>3];sa=+h[d+272+(y<<4)+8>>3];y=la+E|0;ra=+h[d+272+(y<<4)>>3];qa=+h[d+272+(y<<4)+8>>3];la=y+1|0;pa=+h[d+272+(la<<4)>>3];oa=+h[d+272+(la<<4)+8>>3];la=y+2|0;z=+h[d+272+(la<<4)>>3];da=+h[d+272+(la<<4)+8>>3];la=y+3|0;q=+h[d+272+(la<<4)>>3];ka=+h[d+272+(la<<4)+8>>3];la=y+4|0;ea=+h[d+272+(la<<4)>>3];$=+h[d+272+(la<<4)+8>>3];la=y+5|0;l=+h[d+272+(la<<4)>>3];ba=+h[d+272+(la<<4)+8>>3];la=A+E|0;y=la+E|0;n=y+E|0;C=n+E|0;ma=C+E|0;w=ma+E|0;u=w+E|0;O=a+(A<<4)|0;ca=+h[O>>3];na=a+(A<<4)+8|0;H=+h[na>>3];r=a+(la<<4)|0;o=+h[r>>3];p=a+(la<<4)+8|0;ja=+h[p>>3];M=ta*o-sa*ja;aa=sa*o+ta*ja;la=a+(y<<4)|0;ja=+h[la>>3];s=a+(y<<4)+8|0;ta=+h[s>>3];o=ra*ja-qa*ta;sa=qa*ja+ra*ta;y=a+(n<<4)|0;ta=+h[y>>3];I=a+(n<<4)+8|0;ra=+h[I>>3];ja=pa*ta-oa*ra;qa=oa*ta+pa*ra;n=a+(C<<4)|0;ra=+h[n>>3];G=a+(C<<4)+8|0;pa=+h[G>>3];ta=z*ra-da*pa;oa=da*ra+z*pa;C=a+(ma<<4)|0;pa=+h[C>>3];K=a+(ma<<4)+8|0;z=+h[K>>3];ra=q*pa-ka*z;da=ka*pa+q*z;ma=a+(w<<4)|0;z=+h[ma>>3];ua=a+(w<<4)+8|0;q=+h[ua>>3];pa=ea*z-$*q;ka=$*z+ea*q;w=a+(u<<4)|0;q=+h[w>>3];va=a+(u<<4)+8|0;ea=+h[va>>3];z=l*q-ba*ea;$=ba*q+l*ea;ea=ca+ta;l=ca-ta;ta=H+oa;ca=H-oa;oa=M+z;H=M-z;z=aa+$;M=aa-$;$=ja+ra;aa=ja-ra;ra=qa-da;ja=qa+da;da=o+pa;qa=o-pa;pa=sa-ka;o=sa+ka;h[O>>3]=da+($+(ea+oa));h[na>>3]=o+(ja+(ta+z));h[n>>3]=da+(ea-oa-$);h[G>>3]=o+(ta-z-ja);ka=aa+H;sa=ra+M;q=(oa-$)*.7071067811865476;$=l+q;oa=(z-ja)*.7071067811865476;ja=ca+oa;if(X){wa=sa*-.7071067811865476-pa;xa=ka*-.7071067811865476-qa}else{wa=pa+sa*.7071067811865476;xa=qa+ka*.7071067811865476}h[r>>3]=$-wa;h[p>>3]=ja+xa;h[w>>3]=$+wa;h[va>>3]=ja-xa;ja=ea-da;da=ta-o;o=X?aa-H:H-aa;aa=X?ra-M:M-ra;h[la>>3]=ja-aa;h[s>>3]=da+o;h[ma>>3]=ja+aa;h[ua>>3]=da-o;o=l-q;q=ca-oa;oa=ka*.7071067811865476;if(X){ya=pa-sa*.7071067811865476;za=qa-oa}else{ya=sa*.7071067811865476-pa;za=oa-qa}h[y>>3]=o-ya;h[I>>3]=q+za;h[C>>3]=o+ya;h[K>>3]=q-za;A=A+1|0}while((A|0)<(E|0));return}default:{E=k+-1|0;A=E<<3;X=Kb(A)|0;j=Kb(A)|0;K=Kb(A)|0;C=Kb(A)|0;A=k<<3;I=Kb(A)|0;y=Kb(A)|0;A=(f|0)/(k|0)|0;f=Z(k,g)|0;if((k|0)>0){ua=i+1|0;i=0;do{Ta(a+((Z(i,A)|0)<<4)|0,b+((Z(i,g)|0)<<4)|0,d,e,A,f,ua);i=i+1|0}while((i|0)!=(k|0))}i=(E|0)/2|0;ua=(E|0)>1;if(ua){za=+(k|0);f=1;while(1){ya=+(f|0)*6.283185307179586/za;g=f+-1|0;h[K+(g<<3)>>3]=+P(+ya);h[C+(g<<3)>>3]=+Q(+ya);if((f|0)<(i|0))f=f+1|0;else break}if(ua){f=i+-1|0;g=0;do{b=f-g|0;ma=g+i|0;h[C+(ma<<3)>>3]=-+h[C+(b<<3)>>3];h[K+(ma<<3)>>3]=+h[K+(b<<3)>>3];g=g+1|0}while((g|0)<(i|0))}}if((A|0)>0){g=A+-1|0;f=(k|0)>1;za=+(e|0);e=0;do{b=a+(e<<4)|0;h[I>>3]=+h[b>>3];ma=a+(e<<4)+8|0;h[y>>3]=+h[ma>>3];if(f){s=0;la=g+(Z(e,E)|0)|0;while(1){ya=+h[d+272+(la<<4)>>3];xa=+h[d+272+(la<<4)+8>>3];s=s+1|0;va=(Z(s,A)|0)+e|0;wa=+h[a+(va<<4)>>3];q=+h[a+(va<<4)+8>>3];h[I+(s<<3)>>3]=wa*ya-xa*q;h[y+(s<<3)>>3]=q*ya+wa*xa;if((s|0)==(E|0))break;else la=la+1|0}}if(ua){la=0;do{s=la;la=la+1|0;xa=+h[I+(la<<3)>>3];va=E-s|0;wa=+h[I+(va<<3)>>3];h[X+(s<<3)>>3]=xa+wa;ya=+h[y+(la<<3)>>3];q=+h[y+(va<<3)>>3];va=s+i|0;h[j+(va<<3)>>3]=ya-q;h[j+(s<<3)>>3]=ya+q;h[X+(va<<3)>>3]=xa-wa}while((la|0)<(i|0));wa=+h[I>>3];xa=+h[y>>3];if(ua){la=0;q=xa;ya=wa;while(1){o=ya+ +h[X+(la<<3)>>3];qa=q+ +h[j+(la<<3)>>3];la=la+1|0;if((la|0)>=(i|0)){Aa=o;Ba=qa;break}else{q=qa;ya=o}}h[b>>3]=Aa;h[ma>>3]=Ba;if(ua){la=0;do{va=la;la=la+1|0;ya=xa;q=wa;o=0.0;qa=0.0;s=0;while(1){w=s;s=s+1|0;p=Z(s,la)|0;while(1)if((p|0)<(k|0)){Ca=p;break}else p=p-k|0;p=Ca+-1|0;oa=+h[K+(p<<3)>>3];pa=q+oa*+h[X+(w<<3)>>3];sa=ya+oa*+h[j+(w<<3)>>3];oa=+h[C+(p<<3)>>3];p=w+i|0;ka=qa-oa*+h[X+(p<<3)>>3];ca=o-oa*+h[j+(p<<3)>>3];if((s|0)>=(i|0)){Da=pa;Ea=sa;Fa=ka;Ga=ca;break}else{ya=sa;q=pa;o=ca;qa=ka}}qa=za*Fa;o=za*Ga;s=(Z(la,A)|0)+e|0;h[a+(s<<4)>>3]=Da-o;h[a+(s<<4)+8>>3]=Ea+qa;s=(Z(E-va|0,A)|0)+e|0;h[a+(s<<4)>>3]=Da+o;h[a+(s<<4)+8>>3]=Ea-qa}while((la|0)<(i|0))}}else{Ha=xa;Ia=wa;Ja=95}}else{Ha=+h[y>>3];Ia=+h[I>>3];Ja=95}if((Ja|0)==95){Ja=0;h[b>>3]=Ia;h[ma>>3]=Ha}e=e+1|0}while((e|0)!=(A|0))}Lb(X);Lb(j);Lb(K);Lb(C);Lb(I);Lb(y);return}}}}function Ua(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0.0,y=0.0,z=0,A=0,B=0,C=0;g=d+268|0;c[g>>2]=0;i=+(f|0);j=~~+Eb(+Y(+(+Fb(i)/.3010299956639812)));k=d+4|0;l=c[k>>2]|0;m=c[d>>2]|0;n=f<<1;o=j<<((j|0)<(n+-2|0)&1);c[d>>2]=o;j=o<<4;p=Kb(j)|0;q=Kb(j)|0;r=Kb(j)|0;s=Kb(j)|0;j=Kb(f<<4)|0;t=3.141592653589793/i;u=(f|0)>0;if(u){v=0;w=0;while(1){i=t*+(w|0);x=+P(+i);h[j+(v<<4)>>3]=x;y=+Q(+i);h[j+(v<<4)+8>>3]=y;h[r+(v<<4)>>3]=x;h[r+(v<<4)+8>>3]=y;z=(v<<1|1)+w|0;while(1)if((z|0)>(n|0))z=z-n|0;else{A=z;break}z=v+1|0;if((z|0)==(f|0))break;else{v=z;w=A}}}A=o-f|0;w=A+1|0;if((A|0)>=(f|0)){A=f;do{v=r+(A<<4)|0;A=A+1|0;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0}while((A|0)<(w|0))}if((w|0)<(o|0)){A=w;do{w=o-A|0;h[r+(A<<4)>>3]=+h[j+(w<<4)>>3];h[r+(A<<4)+8>>3]=+h[j+(w<<4)+8>>3];A=A+1|0}while((A|0)!=(o|0))}t=1.0/+(o|0);A=(o|0)>0;if(A){w=0;do{v=r+(w<<4)+8|0;h[v>>3]=t*+h[v>>3];v=r+(w<<4)|0;h[v>>3]=t*+h[v>>3];w=w+1|0}while((w|0)!=(o|0))}Ta(q,r,d,l,o,1,0);w=(e|0)==1;if(w){if(u){v=0;do{t=+h[a+(v<<4)>>3];y=+h[j+(v<<4)>>3];x=+h[a+(v<<4)+8>>3];i=+h[j+(v<<4)+8>>3];h[r+(v<<4)>>3]=t*y+x*i;h[r+(v<<4)+8>>3]=x*y-t*i;v=v+1|0}while((v|0)!=(f|0))}}else if(u){v=0;do{i=+h[a+(v<<4)>>3];t=+h[j+(v<<4)>>3];y=+h[a+(v<<4)+8>>3];x=+h[j+(v<<4)+8>>3];h[r+(v<<4)>>3]=i*t-y*x;h[r+(v<<4)+8>>3]=i*x+y*t;v=v+1|0}while((v|0)!=(f|0))}if((o|0)>(f|0)){v=f;do{a=r+(v<<4)|0;v=v+1|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while((v|0)!=(o|0))}v=c[g>>2]|0;if((v|0)==1)Ua(r,p,d,c[k>>2]|0,c[d>>2]|0);else if(!v)Ta(p,r,d,c[k>>2]|0,c[d>>2]|0,1,0);if(w){if(A){v=0;do{a=p+(v<<4)|0;t=+h[a>>3];y=+h[q+(v<<4)>>3];n=p+(v<<4)+8|0;x=+h[n>>3];i=+h[q+(v<<4)+8>>3];h[n>>3]=y*x+t*i;h[a>>3]=t*y-x*i;v=v+1|0}while((v|0)!=(o|0));B=24}}else if(A){v=0;do{a=p+(v<<4)|0;i=+h[a>>3];x=+h[q+(v<<4)>>3];n=p+(v<<4)+8|0;y=+h[n>>3];t=+h[q+(v<<4)+8>>3];h[n>>3]=x*y-i*t;h[a>>3]=i*x+y*t;v=v+1|0}while((v|0)!=(o|0));B=24}if((B|0)==24?A:0){B=0;do{v=d+272+(B<<4)+8|0;h[v>>3]=-+h[v>>3];B=B+1|0}while((B|0)!=(o|0))}B=0-e|0;c[k>>2]=B;e=c[g>>2]|0;if((e|0)==1)Ua(p,s,d,B,c[d>>2]|0);else if(!e)Ta(s,p,d,B,c[d>>2]|0,1,0);if(w){if(u){w=0;do{t=+h[s+(w<<4)>>3];y=+h[j+(w<<4)>>3];x=+h[s+(w<<4)+8>>3];i=+h[j+(w<<4)+8>>3];h[b+(w<<4)>>3]=t*y+x*i;h[b+(w<<4)+8>>3]=x*y-t*i;w=w+1|0}while((w|0)!=(f|0))}}else if(u){u=0;do{i=+h[s+(u<<4)>>3];t=+h[j+(u<<4)>>3];y=+h[s+(u<<4)+8>>3];x=+h[j+(u<<4)+8>>3];h[b+(u<<4)>>3]=i*t-y*x;h[b+(u<<4)+8>>3]=i*x+y*t;u=u+1|0}while((u|0)!=(f|0))}c[k>>2]=l;c[d>>2]=m;c[g>>2]=1;if(A)C=0;else{Lb(p);Lb(s);Lb(r);Lb(q);Lb(j);return}do{A=d+272+(C<<4)+8|0;h[A>>3]=-+h[A>>3];C=C+1|0}while((C|0)!=(o|0));Lb(p);Lb(s);Lb(r);Lb(q);Lb(j);return}function Va(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0;d=(a|0)/2|0;e=Kb((d<<4)+24|0)|0;c[e>>2]=Pa(d,b)|0;if((a|0)<=1)return e|0;f=+(a|0);a=e+8|0;b=0;do{g=+(b|0)*6.283185307179586/f;h[a+(b<<4)>>3]=+P(+g);h[a+(b<<4)+8>>3]=+Q(+g);b=b+1|0}while((b|0)<(d|0));return e|0}function Wa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0;e=c[a>>2]|0;f=c[e>>2]|0;g=f<<1;i=f<<4;j=Kb(i)|0;k=Kb(i)|0;if((f|0)>0){i=0;do{l=i<<1;h[j+(i<<4)>>3]=+h[b+(l<<3)>>3];h[j+(i<<4)+8>>3]=+h[b+((l|1)<<3)>>3];i=i+1|0}while((i|0)!=(f|0))}Sa(e,j,k);m=+h[k>>3];n=+h[k+8>>3];h[d>>3]=m+n;h[d+8>>3]=0.0;e=(f|0)>1;if(e)o=1;else{h[d+(f<<4)>>3]=m-n;h[d+(f<<4)+8>>3]=0.0;Lb(j);Lb(k);return}do{p=+h[k+(o<<4)+8>>3];i=f-o|0;q=+h[k+(i<<4)+8>>3];r=p+q;s=+h[k+(i<<4)>>3];t=+h[k+(o<<4)>>3];u=s-t;i=a+8+(o<<4)|0;v=+h[a+8+(o<<4)+8>>3];h[d+(o<<4)>>3]=(s+t+r*+h[i>>3]+u*v)*.5;h[d+(o<<4)+8>>3]=(p-q+u*+h[i>>3]-r*v)*.5;o=o+1|0}while((o|0)!=(f|0));h[d+(f<<4)>>3]=m-n;h[d+(f<<4)+8>>3]=0.0;if(e)w=1;else{Lb(j);Lb(k);return}do{e=g-w|0;h[d+(e<<4)>>3]=+h[d+(w<<4)>>3];h[d+(e<<4)+8>>3]=-+h[d+(w<<4)+8>>3];w=w+1|0}while((w|0)!=(f|0));Lb(j);Lb(k);return}function Xa(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0;e=c[a>>2]|0;f=c[e>>2]|0;g=f<<4;i=Kb(g)|0;j=Kb(g)|0;g=(f|0)>0;if(g)k=0;else{Sa(e,i,j);Lb(i);Lb(j);return}do{l=+h[b+(k<<4)+8>>3];m=f-k|0;n=+h[b+(m<<4)+8>>3];o=-l-n;p=+h[b+(m<<4)>>3];q=+h[b+(k<<4)>>3];r=q-p;s=+h[a+8+(k<<4)>>3];t=+h[a+8+(k<<4)+8>>3];h[i+(k<<4)>>3]=p+q+o*s-r*t;h[i+(k<<4)+8>>3]=l-n+r*s+o*t;k=k+1|0}while((k|0)!=(f|0));Sa(e,i,j);if(g)u=0;else{Lb(i);Lb(j);return}do{g=u<<1;h[d+(g<<3)>>3]=+h[j+(u<<4)>>3];h[d+((g|1)<<3)>>3]=+h[j+(u<<4)+8>>3];u=u+1|0}while((u|0)!=(f|0));Lb(i);Lb(j);return}function Ya(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=Kb(20)|0;e=a+-1+b|0;while(1){if(!((e|0)%7|0)){f=e;while(1){g=(f|0)/7|0;if(!((g|0)%7|0))f=g;else{h=g;break}}}else h=e;if(!((h|0)%3|0)){f=h;while(1){g=(f|0)/3|0;if(!((g|0)%3|0))f=g;else{i=g;break}}}else i=h;if(!((i|0)%5|0)){f=i;while(1){g=(f|0)/5|0;if(!((g|0)%5|0))f=g;else{j=g;break}}}else j=i;if(!(j&1)){f=j;while(1){g=(f|0)/2|0;if(!(g&1))f=g;else{k=g;break}}}else k=j;if((e&1|0)!=0|(k|0)!=1)e=e+1|0;else{l=e;break}}c[d+16>>2]=l;c[d+8>>2]=a;c[d+12>>2]=b;c[d>>2]=Va(l,1)|0;c[d+4>>2]=Va(l,-1)|0;return d|0}function Za(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0.0,p=0;f=b+-1|0;g=f+d|0;if((b|0)<(d|0)){if((b|0)>0){i=1;j=0;while(1){k=e+(j<<3)|0;h[k>>3]=0.0;l=0.0;m=0;do{l=l+ +h[c+(m<<3)>>3]*+h[a+(j-m<<3)>>3];h[k>>3]=l;m=m+1|0}while((m|0)!=(i|0));j=j+1|0;if((j|0)==(b|0))break;else i=i+1|0}}if((g|0)<=(b|0))return;l=+(d|0);i=d+-1|0;j=0;m=b;while(1){k=e+(m<<3)|0;h[k>>3]=0.0;j=j+1|0;n=+(j+b|0);o=n>3]*+h[a+(m-p<<3)>>3];h[k>>3]=n;p=p+1|0}while(+(p|0)0){m=1;i=0;while(1){j=e+(i<<3)|0;h[j>>3]=0.0;l=0.0;p=0;do{l=l+ +h[a+(p<<3)>>3]*+h[c+(i-p<<3)>>3];h[j>>3]=l;p=p+1|0}while((p|0)!=(m|0));i=i+1|0;if((i|0)==(d|0))break;else m=m+1|0}}if((g|0)<=(d|0))return;l=+(b|0);b=0;g=d;while(1){m=e+(g<<3)|0;h[m>>3]=0.0;b=b+1|0;o=+(b+d|0);n=o>3]*+h[c+(g-i<<3)>>3];h[m>>3]=o;i=i+1|0}while(+(i|0)>2]|0;g=c[a+8>>2]|0;i=c[a+12>>2]|0;j=g+-1+i|0;k=f<<4;l=Kb(k)|0;m=Kb(k)|0;n=Kb(k)|0;o=Kb(k)|0;p=Kb(k)|0;q=Kb(k)|0;k=(f|0)>0;if(k){r=0;do{if((r|0)<(g|0))s=+h[b+(r<<3)>>3];else s=0.0;h[l+(r<<3)>>3]=s;if((r|0)<(i|0))t=+h[d+(r<<3)>>3];else t=0.0;h[m+(r<<3)>>3]=t;r=r+1|0}while((r|0)!=(f|0));Wa(c[a>>2]|0,l,o);Wa(c[a>>2]|0,m,p);if(k){k=0;do{t=+h[o+(k<<4)>>3];s=+h[p+(k<<4)>>3];u=+h[o+(k<<4)+8>>3];v=+h[p+(k<<4)+8>>3];h[n+(k<<4)>>3]=t*s-u*v;h[n+(k<<4)+8>>3]=u*s+t*v;k=k+1|0}while((k|0)!=(f|0))}}else{Wa(c[a>>2]|0,l,o);Wa(c[a>>2]|0,m,p)}Xa(c[a+4>>2]|0,n,q);if((j|0)<=0){Lb(l);Lb(m);Lb(n);Lb(o);Lb(p);Lb(q);return}v=+(f|0);f=g+i+-1|0;i=0;do{h[e+(i<<3)>>3]=+h[q+(i<<3)>>3]/v;i=i+1|0}while((i|0)!=(f|0));Lb(l);Lb(m);Lb(n);Lb(o);Lb(p);Lb(q);return}function $a(a){a=a|0;Lb(a);return}function ab(a){a=a|0;var b=0;do if((Jb(a,8)|0)!=0?(Jb(a,16)|0)!=0:0)if(Jb(a,24)|0)if(Jb(a,32)|0)if(Jb(a,40)|0)if(Jb(a,48)|0)if(Jb(a,56)|0)if(Jb(a,64)|0)if(Jb(a,72)|0)if(Jb(a,80)|0)if(Jb(a,88)|0)if(Jb(a,96)|0)if(Jb(a,104)|0)if(Jb(a,112)|0)if(Jb(a,120)|0)if(Jb(a,128)|0)if(Jb(a,136)|0)if(Jb(a,144)|0)if(!(Jb(a,152)|0))b=10;else{if(!(Jb(a,160)|0)){b=6;break}if(!(Jb(a,168)|0)){b=10;break}if(!(Jb(a,176)|0)){b=14;break}if(!(Jb(a,184)|0)){b=18;break}if(!(Jb(a,192)|0)){b=4;break}if(!(Jb(a,200)|0)){b=8;break}if(!(Jb(a,208)|0)){b=12;break}if(!(Jb(a,216)|0)){b=16;break}if(!(Jb(a,224)|0)){b=20;break}if(!(Jb(a,232)|0)){b=10;break}if(!(Jb(a,240)|0)){b=12;break}if(!(Jb(a,248)|0)){b=18;break}if(!(Jb(a,256)|0)){b=6;break}if(!(Jb(a,264)|0)){b=12;break}if(!(Jb(a,272)|0)){b=18;break}if(!(Jb(a,280)|0)){b=24;break}if(!(Jb(a,288)|0)){b=30;break}if(!(Jb(a,296)|0)){b=4;break}if(!(Jb(a,304)|0)){b=6;break}if(!(Jb(a,312)|0)){b=8;break}if(!(Jb(a,320)|0)){b=10;break}if(!(Jb(a,328)|0)){b=12;break}if(!(Jb(a,336)|0)){b=14;break}if(!(Jb(a,344)|0)){b=16;break}if(!(Jb(a,352)|0)){b=18;break}if(!(Jb(a,360)|0)){b=20;break}oa(368)|0;b=-1}else b=6;else b=2;else b=30;else b=28;else b=22;else b=26;else b=24;else b=20;else b=18;else b=16;else b=14;else b=12;else b=10;else b=8;else b=6;else b=4;else b=2;while(0);return b|0}function bb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+320|0;j=g+160|0;k=g;if((Jb(a,8)|0)!=0?(Jb(a,16)|0)!=0:0){if(!(Jb(a,24)|0)){h[b>>3]=-.12940952255092145;h[d>>3]=-.48296291314469025;h[e>>3]=.48296291314469025;h[f>>3]=-.12940952255092145;h[b+8>>3]=.22414386804185735;h[d+8>>3]=.836516303737469;h[e+8>>3]=.836516303737469;h[f+8>>3]=-.22414386804185735;h[b+16>>3]=.836516303737469;h[d+16>>3]=-.22414386804185735;h[e+16>>3]=.22414386804185735;h[f+16>>3]=.836516303737469;h[b+24>>3]=.48296291314469025;h[d+24>>3]=-.12940952255092145;h[e+24>>3]=-.12940952255092145;h[f+24>>3]=-.48296291314469025;l=4;i=g;return l|0}if(!(Jb(a,32)|0)){h[b>>3]=.035226291882100656;h[d>>3]=-.3326705529509569;h[e>>3]=.3326705529509569;h[f>>3]=.035226291882100656;h[b+8>>3]=-.08544127388224149;h[d+8>>3]=.8068915093133388;h[e+8>>3]=.8068915093133388;h[f+8>>3]=.08544127388224149;h[b+16>>3]=-.13501102001039084;h[d+16>>3]=-.4598775021193313;h[e+16>>3]=.4598775021193313;h[f+16>>3]=-.13501102001039084;h[b+24>>3]=.4598775021193313;h[d+24>>3]=-.13501102001039084;h[e+24>>3]=-.13501102001039084;h[f+24>>3]=-.4598775021193313;h[b+32>>3]=.8068915093133388;h[d+32>>3]=.08544127388224149;h[e+32>>3]=-.08544127388224149;h[f+32>>3]=.8068915093133388;h[b+40>>3]=.3326705529509569;h[d+40>>3]=.035226291882100656;h[e+40>>3]=.035226291882100656;h[f+40>>3]=-.3326705529509569;l=6;i=g;return l|0}if(!(Jb(a,40)|0)){h[b>>3]=-.010597401784997278;h[d>>3]=-.23037781330885523;h[e>>3]=.23037781330885523;h[f>>3]=-.010597401784997278;h[b+8>>3]=.032883011666982945;h[d+8>>3]=.7148465705525415;h[e+8>>3]=.7148465705525415;h[f+8>>3]=-.032883011666982945;h[b+16>>3]=.030841381835986965;h[d+16>>3]=-.6308807679295904;h[e+16>>3]=.6308807679295904;h[f+16>>3]=.030841381835986965;h[b+24>>3]=-.18703481171888114;h[d+24>>3]=-.02798376941698385;h[e+24>>3]=-.02798376941698385;h[f+24>>3]=.18703481171888114;h[b+32>>3]=-.02798376941698385;h[d+32>>3]=.18703481171888114;h[e+32>>3]=-.18703481171888114;h[f+32>>3]=-.02798376941698385;h[b+40>>3]=.6308807679295904;h[d+40>>3]=.030841381835986965;h[e+40>>3]=.030841381835986965;h[f+40>>3]=-.6308807679295904;h[b+48>>3]=.7148465705525415;h[d+48>>3]=-.032883011666982945;h[e+48>>3]=.032883011666982945;h[f+48>>3]=.7148465705525415;h[b+56>>3]=.23037781330885523;h[d+56>>3]=-.010597401784997278;h[e+56>>3]=-.010597401784997278;h[f+56>>3]=-.23037781330885523;l=8;i=g;return l|0}if(!(Jb(a,48)|0)){m=0;do{h[b+(m<<3)>>3]=+h[400+(m<<3)>>3];h[d+(m<<3)>>3]=+h[480+(m<<3)>>3];h[e+(m<<3)>>3]=+h[560+(m<<3)>>3];h[f+(m<<3)>>3]=+h[640+(m<<3)>>3];m=m+1|0}while((m|0)!=10);l=10;i=g;return l|0}if(!(Jb(a,56)|0)){m=0;do{h[b+(m<<3)>>3]=+h[720+(m<<3)>>3];h[d+(m<<3)>>3]=+h[816+(m<<3)>>3];h[e+(m<<3)>>3]=+h[912+(m<<3)>>3];h[f+(m<<3)>>3]=+h[1008+(m<<3)>>3];m=m+1|0}while((m|0)!=12);l=12;i=g;return l|0}if(!(Jb(a,64)|0)){m=0;do{h[b+(m<<3)>>3]=+h[1104+(m<<3)>>3];h[d+(m<<3)>>3]=+h[1216+(m<<3)>>3];h[e+(m<<3)>>3]=+h[1328+(m<<3)>>3];h[f+(m<<3)>>3]=+h[1440+(m<<3)>>3];m=m+1|0}while((m|0)!=14);l=14;i=g;return l|0}if(!(Jb(a,72)|0)){m=0;do{h[b+(m<<3)>>3]=+h[1552+(m<<3)>>3];h[d+(m<<3)>>3]=+h[1680+(m<<3)>>3];h[e+(m<<3)>>3]=+h[1808+(m<<3)>>3];h[f+(m<<3)>>3]=+h[1936+(m<<3)>>3];m=m+1|0}while((m|0)!=16);l=16;i=g;return l|0}if(!(Jb(a,80)|0)){m=0;do{h[b+(m<<3)>>3]=+h[2064+(m<<3)>>3];h[d+(m<<3)>>3]=+h[2208+(m<<3)>>3];h[e+(m<<3)>>3]=+h[2352+(m<<3)>>3];h[f+(m<<3)>>3]=+h[2496+(m<<3)>>3];m=m+1|0}while((m|0)!=18);l=18;i=g;return l|0}if(!(Jb(a,88)|0)){m=0;do{h[b+(m<<3)>>3]=+h[2640+(m<<3)>>3];h[d+(m<<3)>>3]=+h[2800+(m<<3)>>3];h[e+(m<<3)>>3]=+h[2960+(m<<3)>>3];h[f+(m<<3)>>3]=+h[3120+(m<<3)>>3];m=m+1|0}while((m|0)!=20);l=20;i=g;return l|0}if(!(Jb(a,96)|0)){m=0;do{h[b+(m<<3)>>3]=+h[3280+(m<<3)>>3];h[d+(m<<3)>>3]=+h[3472+(m<<3)>>3];h[e+(m<<3)>>3]=+h[3664+(m<<3)>>3];h[f+(m<<3)>>3]=+h[3856+(m<<3)>>3];m=m+1|0}while((m|0)!=24);l=24;i=g;return l|0}if(!(Jb(a,104)|0)){m=0;do{h[b+(m<<3)>>3]=+h[4048+(m<<3)>>3];h[d+(m<<3)>>3]=+h[4256+(m<<3)>>3];h[e+(m<<3)>>3]=+h[4464+(m<<3)>>3];h[f+(m<<3)>>3]=+h[4672+(m<<3)>>3];m=m+1|0}while((m|0)!=26);l=26;i=g;return l|0}if(!(Jb(a,112)|0)){m=0;do{h[b+(m<<3)>>3]=+h[4880+(m<<3)>>3];h[d+(m<<3)>>3]=+h[5056+(m<<3)>>3];h[e+(m<<3)>>3]=+h[5232+(m<<3)>>3];h[f+(m<<3)>>3]=+h[5408+(m<<3)>>3];m=m+1|0}while((m|0)!=22);l=22;i=g;return l|0}if(!(Jb(a,120)|0)){m=0;do{h[b+(m<<3)>>3]=+h[5584+(m<<3)>>3];h[d+(m<<3)>>3]=+h[5808+(m<<3)>>3];h[e+(m<<3)>>3]=+h[6032+(m<<3)>>3];h[f+(m<<3)>>3]=+h[6256+(m<<3)>>3];m=m+1|0}while((m|0)!=28);l=28;i=g;return l|0}if(!(Jb(a,128)|0)){m=0;do{h[b+(m<<3)>>3]=+h[6480+(m<<3)>>3];h[d+(m<<3)>>3]=+h[6720+(m<<3)>>3];h[e+(m<<3)>>3]=+h[6960+(m<<3)>>3];h[f+(m<<3)>>3]=+h[7200+(m<<3)>>3];m=m+1|0}while((m|0)!=30);l=30;i=g;return l|0}if(!(Jb(a,136)|0)){h[b>>3]=.7071067811865476;h[d>>3]=-.7071067811865476;h[e>>3]=.7071067811865476;h[f>>3]=.7071067811865476;h[b+8>>3]=.7071067811865476;h[d+8>>3]=.7071067811865476;h[e+8>>3]=.7071067811865476;h[f+8>>3]=-.7071067811865476;l=2;i=g;return l|0}if(!(Jb(a,144)|0)){h[b>>3]=-.08838834764831845;h[d>>3]=0.0;h[e>>3]=0.0;h[f>>3]=-.08838834764831845;h[b+8>>3]=.08838834764831845;h[d+8>>3]=0.0;h[e+8>>3]=0.0;h[f+8>>3]=-.08838834764831845;h[b+16>>3]=.7071067811865476;h[d+16>>3]=-.7071067811865476;h[e+16>>3]=.7071067811865476;h[f+16>>3]=.7071067811865476;h[b+24>>3]=.7071067811865476;h[d+24>>3]=.7071067811865476;h[e+24>>3]=.7071067811865476;h[f+24>>3]=-.7071067811865476;h[b+32>>3]=.08838834764831845;h[d+32>>3]=0.0;h[e+32>>3]=0.0;h[f+32>>3]=.08838834764831845;h[b+40>>3]=-.08838834764831845;h[d+40>>3]=0.0;h[e+40>>3]=0.0;h[f+40>>3]=.08838834764831845;l=6;i=g;return l|0}if(!(Jb(a,152)|0)){n=j;o=n+80|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[j+32>>3]=-.7071067811865476;h[j+40>>3]=.7071067811865476;n=k;o=n+80|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[k+32>>3]=.7071067811865476;h[k+40>>3]=.7071067811865476;m=0;do{h[b+(m<<3)>>3]=+h[7440+(m<<3)>>3];h[d+(m<<3)>>3]=+h[j+(m<<3)>>3];h[e+(m<<3)>>3]=+h[k+(m<<3)>>3];h[f+(m<<3)>>3]=+h[7520+(m<<3)>>3];m=m+1|0}while((m|0)!=10);l=10;i=g;return l|0}if(!(Jb(a,160)|0)){h[b>>3]=0.0;h[d>>3]=0.0;h[e>>3]=0.0;h[f>>3]=0.0;h[b+8>>3]=-.1767766952966369;h[d+8>>3]=.3535533905932738;h[e+8>>3]=.3535533905932738;h[f+8>>3]=.1767766952966369;h[b+16>>3]=.3535533905932738;h[d+16>>3]=-.7071067811865476;h[e+16>>3]=.7071067811865476;h[f+16>>3]=.3535533905932738;h[b+24>>3]=1.0606601717798214;h[d+24>>3]=.3535533905932738;h[e+24>>3]=.3535533905932738;h[f+24>>3]=-1.0606601717798214;h[b+32>>3]=.3535533905932738;h[d+32>>3]=0.0;h[e+32>>3]=0.0;h[f+32>>3]=.3535533905932738;h[b+40>>3]=-.1767766952966369;h[d+40>>3]=0.0;h[e+40>>3]=0.0;h[f+40>>3]=.1767766952966369;l=6;i=g;return l|0}if(!(Jb(a,168)|0)){n=j;o=n+80|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[j+24>>3]=.3535533905932738;h[j+32>>3]=-.7071067811865476;h[j+40>>3]=.3535533905932738;n=k;o=n+80|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[k+24>>3]=.3535533905932738;h[k+32>>3]=.7071067811865476;h[k+40>>3]=.3535533905932738;m=0;do{h[b+(m<<3)>>3]=+h[7600+(m<<3)>>3];h[d+(m<<3)>>3]=+h[j+(m<<3)>>3];h[e+(m<<3)>>3]=+h[k+(m<<3)>>3];h[f+(m<<3)>>3]=+h[7680+(m<<3)>>3];m=m+1|0}while((m|0)!=10);l=10;i=g;return l|0}if(!(Jb(a,176)|0)){n=j;o=n+112|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[j+40>>3]=.3535533905932738;h[j+48>>3]=-.7071067811865476;h[j+56>>3]=.3535533905932738;n=k;o=n+112|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[k+40>>3]=.3535533905932738;h[k+48>>3]=.7071067811865476;h[k+56>>3]=.3535533905932738;m=0;do{h[b+(m<<3)>>3]=+h[7760+(m<<3)>>3];h[d+(m<<3)>>3]=+h[j+(m<<3)>>3];h[e+(m<<3)>>3]=+h[k+(m<<3)>>3];h[f+(m<<3)>>3]=+h[7872+(m<<3)>>3];m=m+1|0}while((m|0)!=14);l=14;i=g;return l|0}if(!(Jb(a,184)|0)){Nb(j|0,0,144)|0;h[j+56>>3]=.3535533905932738;h[j+64>>3]=-.7071067811865476;h[j+72>>3]=.3535533905932738;Nb(k|0,0,144)|0;h[k+56>>3]=.3535533905932738;h[k+64>>3]=.7071067811865476;h[k+72>>3]=.3535533905932738;m=0;do{h[b+(m<<3)>>3]=+h[7984+(m<<3)>>3];h[d+(m<<3)>>3]=+h[j+(m<<3)>>3];h[e+(m<<3)>>3]=+h[k+(m<<3)>>3];h[f+(m<<3)>>3]=+h[8128+(m<<3)>>3];m=m+1|0}while((m|0)!=18);l=18;i=g;return l|0}if(!(Jb(a,192)|0)){h[b>>3]=-.3535533905932738;h[d>>3]=-.1767766952966369;h[e>>3]=.1767766952966369;h[f>>3]=-.3535533905932738;h[b+8>>3]=1.0606601717798214;h[d+8>>3]=.5303300858899107;h[e+8>>3]=.5303300858899107;h[f+8>>3]=-1.0606601717798214;h[b+16>>3]=1.0606601717798214;h[d+16>>3]=-.5303300858899107;h[e+16>>3]=.5303300858899107;h[f+16>>3]=1.0606601717798214;h[b+24>>3]=-.3535533905932738;h[d+24>>3]=.1767766952966369;h[e+24>>3]=.1767766952966369;h[f+24>>3]=.3535533905932738;l=4;i=g;return l|0}if(!(Jb(a,200)|0)){h[b>>3]=.06629126073623884;h[d>>3]=0.0;h[e>>3]=0.0;h[f>>3]=.06629126073623884;h[b+8>>3]=-.19887378220871652;h[d+8>>3]=0.0;h[e+8>>3]=0.0;h[f+8>>3]=.19887378220871652;h[b+16>>3]=-.15467960838455727;h[d+16>>3]=-.1767766952966369;h[e+16>>3]=.1767766952966369;h[f+16>>3]=-.15467960838455727;h[b+24>>3]=.9943689110435825;h[d+24>>3]=.5303300858899107;h[e+24>>3]=.5303300858899107;h[f+24>>3]=-.9943689110435825;h[b+32>>3]=.9943689110435825;h[d+32>>3]=-.5303300858899107;h[e+32>>3]=.5303300858899107;h[f+32>>3]=.9943689110435825;h[b+40>>3]=-.15467960838455727;h[d+40>>3]=.1767766952966369;h[e+40>>3]=.1767766952966369;h[f+40>>3]=.15467960838455727;h[b+48>>3]=-.19887378220871652;h[d+48>>3]=0.0;h[e+48>>3]=0.0;h[f+48>>3]=-.19887378220871652;h[b+56>>3]=.06629126073623884;h[d+56>>3]=0.0;h[e+56>>3]=0.0;h[f+56>>3]=-.06629126073623884;l=8;i=g;return l|0}if(!(Jb(a,208)|0)){n=j;o=n+96|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[j+32>>3]=-.1767766952966369;h[j+40>>3]=.5303300858899107;h[j+48>>3]=-.5303300858899107;h[j+56>>3]=.1767766952966369;n=k;o=n+96|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[k+32>>3]=.1767766952966369;h[k+40>>3]=.5303300858899107;h[k+48>>3]=.5303300858899107;h[k+56>>3]=.1767766952966369;m=0;do{h[b+(m<<3)>>3]=+h[8272+(m<<3)>>3];h[d+(m<<3)>>3]=+h[j+(m<<3)>>3];h[e+(m<<3)>>3]=+h[k+(m<<3)>>3];h[f+(m<<3)>>3]=+h[8368+(m<<3)>>3];m=m+1|0}while((m|0)!=12);l=12;i=g;return l|0}if(!(Jb(a,216)|0)){n=j;o=n+128|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[j+48>>3]=-.1767766952966369;h[j+56>>3]=.5303300858899107;h[j+64>>3]=-.5303300858899107;h[j+72>>3]=.1767766952966369;n=k;o=n+128|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));h[k+48>>3]=.1767766952966369;h[k+56>>3]=.5303300858899107;h[k+64>>3]=.5303300858899107;h[k+72>>3]=.1767766952966369;n=0;do{h[b+(n<<3)>>3]=+h[8464+(n<<3)>>3];h[d+(n<<3)>>3]=+h[j+(n<<3)>>3];h[e+(n<<3)>>3]=+h[k+(n<<3)>>3];h[f+(n<<3)>>3]=+h[8592+(n<<3)>>3];n=n+1|0}while((n|0)!=16);l=16;i=g;return l|0}if(!(Jb(a,224)|0)){Nb(j|0,0,160)|0;h[j+64>>3]=-.1767766952966369;h[j+72>>3]=.5303300858899107;h[j+80>>3]=-.5303300858899107;h[j+88>>3]=.1767766952966369;Nb(k|0,0,160)|0;h[k+64>>3]=.1767766952966369;h[k+72>>3]=.5303300858899107;h[k+80>>3]=.5303300858899107;h[k+88>>3]=.1767766952966369;n=0;do{h[b+(n<<3)>>3]=+h[8720+(n<<3)>>3];h[d+(n<<3)>>3]=+h[j+(n<<3)>>3];h[e+(n<<3)>>3]=+h[k+(n<<3)>>3];h[f+(n<<3)>>3]=+h[8880+(n<<3)>>3];n=n+1|0}while((n|0)!=20);l=20;i=g;return l|0}if(!(Jb(a,232)|0)){n=0;do{h[b+(n<<3)>>3]=+h[9040+(n<<3)>>3];h[d+(n<<3)>>3]=+h[9120+(n<<3)>>3];h[e+(n<<3)>>3]=+h[9200+(n<<3)>>3];h[f+(n<<3)>>3]=+h[9280+(n<<3)>>3];n=n+1|0}while((n|0)!=10);l=10;i=g;return l|0}if(!(Jb(a,240)|0)){n=0;do{h[b+(n<<3)>>3]=+h[9360+(n<<3)>>3];h[d+(n<<3)>>3]=+h[9456+(n<<3)>>3];h[e+(n<<3)>>3]=+h[9552+(n<<3)>>3];h[f+(n<<3)>>3]=+h[9648+(n<<3)>>3];n=n+1|0}while((n|0)!=12);l=12;i=g;return l|0}if(!(Jb(a,248)|0)){n=0;do{h[b+(n<<3)>>3]=+h[9744+(n<<3)>>3];h[d+(n<<3)>>3]=+h[9888+(n<<3)>>3];h[e+(n<<3)>>3]=+h[10032+(n<<3)>>3];h[f+(n<<3)>>3]=+h[10176+(n<<3)>>3];n=n+1|0}while((n|0)!=18);l=18;i=g;return l|0}if(!(Jb(a,256)|0)){h[b>>3]=-.01565572813546454;h[d>>3]=.0727326195128539;h[e>>3]=-.0727326195128539;h[f>>3]=-.01565572813546454;h[b+8>>3]=-.0727326195128539;h[d+8>>3]=.3378976624578092;h[e+8>>3]=.3378976624578092;h[f+8>>3]=.0727326195128539;h[b+16>>3]=.38486484686420286;h[d+16>>3]=-.8525720202122554;h[e+16>>3]=.8525720202122554;h[f+16>>3]=.38486484686420286;h[b+24>>3]=.8525720202122554;h[d+24>>3]=.38486484686420286;h[e+24>>3]=.38486484686420286;h[f+24>>3]=-.8525720202122554;h[b+32>>3]=.3378976624578092;h[d+32>>3]=.0727326195128539;h[e+32>>3]=-.0727326195128539;h[f+32>>3]=.3378976624578092;h[b+40>>3]=-.0727326195128539;h[d+40>>3]=-.01565572813546454;h[e+40>>3]=-.01565572813546454;h[f+40>>3]=.0727326195128539;l=6;i=g;return l|0}if(!(Jb(a,264)|0)){n=0;do{h[b+(n<<3)>>3]=+h[10320+(n<<3)>>3];h[d+(n<<3)>>3]=+h[10416+(n<<3)>>3];h[e+(n<<3)>>3]=+h[10512+(n<<3)>>3];h[f+(n<<3)>>3]=+h[10608+(n<<3)>>3];n=n+1|0}while((n|0)!=12);l=12;i=g;return l|0}if(!(Jb(a,272)|0)){n=0;do{h[b+(n<<3)>>3]=+h[10704+(n<<3)>>3];h[d+(n<<3)>>3]=+h[10848+(n<<3)>>3];h[e+(n<<3)>>3]=+h[10992+(n<<3)>>3];h[f+(n<<3)>>3]=+h[11136+(n<<3)>>3];n=n+1|0}while((n|0)!=18);l=18;i=g;return l|0}if(!(Jb(a,280)|0)){n=0;do{h[b+(n<<3)>>3]=+h[11280+(n<<3)>>3];h[d+(n<<3)>>3]=+h[11472+(n<<3)>>3];h[e+(n<<3)>>3]=+h[11664+(n<<3)>>3];h[f+(n<<3)>>3]=+h[11856+(n<<3)>>3];n=n+1|0}while((n|0)!=24);l=24;i=g;return l|0}if(!(Jb(a,288)|0)){n=0;do{h[b+(n<<3)>>3]=+h[12048+(n<<3)>>3];h[d+(n<<3)>>3]=+h[12288+(n<<3)>>3];h[e+(n<<3)>>3]=+h[12528+(n<<3)>>3];h[f+(n<<3)>>3]=+h[12768+(n<<3)>>3];n=n+1|0}while((n|0)!=30);l=30;i=g;return l|0}if(!(Jb(a,296)|0)){h[b>>3]=-.12940952255092145;h[d>>3]=-.48296291314469025;h[e>>3]=.48296291314469025;h[f>>3]=-.12940952255092145;h[b+8>>3]=.22414386804185735;h[d+8>>3]=.836516303737469;h[e+8>>3]=.836516303737469;h[f+8>>3]=-.22414386804185735;h[b+16>>3]=.836516303737469;h[d+16>>3]=-.22414386804185735;h[e+16>>3]=.22414386804185735;h[f+16>>3]=.836516303737469;h[b+24>>3]=.48296291314469025;h[d+24>>3]=-.12940952255092145;h[e+24>>3]=-.12940952255092145;h[f+24>>3]=-.48296291314469025;l=4;i=g;return l|0}if(!(Jb(a,304)|0)){h[b>>3]=.035226291882100656;h[d>>3]=-.3326705529509569;h[e>>3]=.3326705529509569;h[f>>3]=.035226291882100656;h[b+8>>3]=-.08544127388224149;h[d+8>>3]=.8068915093133388;h[e+8>>3]=.8068915093133388;h[f+8>>3]=.08544127388224149;h[b+16>>3]=-.13501102001039084;h[d+16>>3]=-.4598775021193313;h[e+16>>3]=.4598775021193313;h[f+16>>3]=-.13501102001039084;h[b+24>>3]=.4598775021193313;h[d+24>>3]=-.13501102001039084;h[e+24>>3]=-.13501102001039084;h[f+24>>3]=-.4598775021193313;h[b+32>>3]=.8068915093133388;h[d+32>>3]=.08544127388224149;h[e+32>>3]=-.08544127388224149;h[f+32>>3]=.8068915093133388;h[b+40>>3]=.3326705529509569;h[d+40>>3]=.035226291882100656;h[e+40>>3]=.035226291882100656;h[f+40>>3]=-.3326705529509569;l=6;i=g;return l|0}if(!(Jb(a,312)|0)){h[b>>3]=-.07576571478927333;h[d>>3]=-.0322231006040427;h[e>>3]=.0322231006040427;h[f>>3]=-.07576571478927333;h[b+8>>3]=-.02963552764599851;h[d+8>>3]=-.012603967262037833;h[e+8>>3]=-.012603967262037833;h[f+8>>3]=.02963552764599851;h[b+16>>3]=.49761866763201545;h[d+16>>3]=.09921954357684722;h[e+16>>3]=-.09921954357684722;h[f+16>>3]=.49761866763201545;h[b+24>>3]=.8037387518059161;h[d+24>>3]=.29785779560527736;h[e+24>>3]=.29785779560527736;h[f+24>>3]=-.8037387518059161;h[b+32>>3]=.29785779560527736;h[d+32>>3]=-.8037387518059161;h[e+32>>3]=.8037387518059161;h[f+32>>3]=.29785779560527736;h[b+40>>3]=-.09921954357684722;h[d+40>>3]=.49761866763201545;h[e+40>>3]=.49761866763201545;h[f+40>>3]=.09921954357684722;h[b+48>>3]=-.012603967262037833;h[d+48>>3]=.02963552764599851;h[e+48>>3]=-.02963552764599851;h[f+48>>3]=-.012603967262037833;h[b+56>>3]=.0322231006040427;h[d+56>>3]=-.07576571478927333;h[e+56>>3]=-.07576571478927333;h[f+56>>3]=-.0322231006040427;l=8;i=g;return l|0}if(!(Jb(a,320)|0)){n=0;do{h[b+(n<<3)>>3]=+h[13008+(n<<3)>>3];h[d+(n<<3)>>3]=+h[13088+(n<<3)>>3];h[e+(n<<3)>>3]=+h[13168+(n<<3)>>3];h[f+(n<<3)>>3]=+h[13248+(n<<3)>>3];n=n+1|0}while((n|0)!=10);l=10;i=g;return l|0}if(!(Jb(a,328)|0)){n=0;do{h[b+(n<<3)>>3]=+h[13328+(n<<3)>>3];h[d+(n<<3)>>3]=+h[13424+(n<<3)>>3];h[e+(n<<3)>>3]=+h[13520+(n<<3)>>3];h[f+(n<<3)>>3]=+h[13616+(n<<3)>>3];n=n+1|0}while((n|0)!=12);l=12;i=g;return l|0}if(!(Jb(a,336)|0)){n=0;do{h[b+(n<<3)>>3]=+h[13712+(n<<3)>>3];h[d+(n<<3)>>3]=+h[13824+(n<<3)>>3];h[e+(n<<3)>>3]=+h[13936+(n<<3)>>3];h[f+(n<<3)>>3]=+h[14048+(n<<3)>>3];n=n+1|0}while((n|0)!=14);l=14;i=g;return l|0}if(!(Jb(a,344)|0)){n=0;do{h[b+(n<<3)>>3]=+h[14160+(n<<3)>>3];h[d+(n<<3)>>3]=+h[14288+(n<<3)>>3];h[e+(n<<3)>>3]=+h[14416+(n<<3)>>3];h[f+(n<<3)>>3]=+h[14544+(n<<3)>>3];n=n+1|0}while((n|0)!=16);l=16;i=g;return l|0}if(!(Jb(a,352)|0)){n=0;do{h[b+(n<<3)>>3]=+h[14672+(n<<3)>>3];h[d+(n<<3)>>3]=+h[14816+(n<<3)>>3];h[e+(n<<3)>>3]=+h[14960+(n<<3)>>3];h[f+(n<<3)>>3]=+h[15104+(n<<3)>>3];n=n+1|0}while((n|0)!=18);l=18;i=g;return l|0}if(!(Jb(a,360)|0)){a=0;do{h[b+(a<<3)>>3]=+h[15248+(a<<3)>>3];h[d+(a<<3)>>3]=+h[15408+(a<<3)>>3];h[e+(a<<3)>>3]=+h[15568+(a<<3)>>3];h[f+(a<<3)>>3]=+h[15728+(a<<3)>>3];a=a+1|0}while((a|0)!=20);l=20;i=g;return l|0}else{oa(368)|0;l=-1;i=g;return l|0}}h[b>>3]=.7071;h[d>>3]=-.7071;h[e>>3]=.7071;h[f>>3]=.7071;h[b+8>>3]=.7071;h[d+8>>3]=.7071;h[e+8>>3]=.7071;h[f+8>>3]=-.7071;l=2;i=g;return l|0}function cb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;if((c|0)<0){e=-1;return e|0}if(!c){if((b|0)>0)f=0;else{e=b;return e|0}do{h[d+(f<<3)>>3]=+h[a+(f<<3)>>3];f=f+1|0}while((f|0)!=(b|0));e=b;return e|0}f=Z(b+-1|0,c)|0;b=f+1|0;if((f|0)>-1){g=0;i=1;j=0}else{e=b;return e|0}while(1){f=i+-1|0;k=d+(g<<3)|0;h[k>>3]=0.0;if(!f){h[k>>3]=+h[a+(j<<3)>>3];l=c;m=j+1|0}else{l=f;m=j}g=g+1|0;if((g|0)>=(b|0)){e=b;break}else{i=l;j=m}}return e|0}function db(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;if((c|0)<0){e=-1;return e|0}if(!c){if((b|0)>0)f=0;else{e=b;return e|0}do{h[d+(f<<3)>>3]=+h[a+(f<<3)>>3];f=f+1|0}while((f|0)!=(b|0));e=b;return e|0}f=Z(c,b)|0;if((f|0)>0){g=0;i=1;j=0}else{e=f;return e|0}while(1){b=i+-1|0;k=d+(g<<3)|0;h[k>>3]=0.0;if(!b){h[k>>3]=+h[a+(j<<3)>>3];l=c;m=j+1|0}else{l=b;m=j}g=g+1|0;if((g|0)==(f|0)){e=f;break}else{i=l;j=m}}return e|0}function eb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if((c|0)<0){e=-1;return e|0}if(!c){if((b|0)>0)f=0;else{e=b;return e|0}do{h[d+(f<<3)>>3]=+h[a+(f<<3)>>3];f=f+1|0}while((f|0)!=(b|0));e=b;return e|0}else{f=(b+-1|0)/(c|0)|0;b=f+1|0;if((f|0)>-1)g=0;else{e=b;return e|0}do{h[d+(g<<3)>>3]=+h[a+((Z(g,c)|0)<<3)>>3];g=g+1|0}while((g|0)<(b|0));e=b;return e|0}return 0}function fb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0;if((b|0)>0){e=0;do{h[d+(e+c<<3)>>3]=+h[a+(e<<3)>>3];e=e+1|0}while((e|0)!=(b|0))}if(!(b&1))f=b;else{h[d+(c+b<<3)>>3]=+h[a+(b+-1<<3)>>3];f=b+1|0}if((c|0)<=0)return f|0;b=f+c|0;a=b+-1|0;e=c+-1|0;g=0;i=0;while(1){j=+h[d+(i+c<<3)>>3];h[d+(e+g<<3)>>3]=+h[d+(a+g<<3)>>3];h[d+(i+b<<3)>>3]=j;k=i+1|0;if((k|0)==(c|0))break;else{g=~i;i=k}}return f|0}function gb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0;if((b|0)>0){e=0;do{h[d+(e+c<<3)>>3]=+h[a+(e<<3)>>3];e=e+1|0}while((e|0)!=(b|0))}if((c|0)<=0)return b|0;e=c+b|0;a=e+-1|0;f=c+-1|0;g=0;i=0;while(1){j=+h[d+(a+g<<3)>>3];h[d+(f+g<<3)>>3]=+h[d+(i+c<<3)>>3];h[d+(i+e<<3)>>3]=j;k=i+1|0;if((k|0)==(c|0))break;else{g=~i;i=k}}return b|0}function hb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=(c|0)>-1?c:0-c|0;if((d|0)>(b|0))e=Z((d|0)%(b|0)|0,c>>31|1)|0;else e=c;if((e|0)<0)f=(e+b|0)%(b|0)|0;else f=e;e=f<<3;c=Kb(e)|0;d=(f|0)>0;if(d)Qb(c|0,a|0,e|0)|0;e=b-f|0;if((e|0)>0){b=0;do{h[a+(b<<3)>>3]=+h[a+(b+f<<3)>>3];b=b+1|0}while((b|0)!=(e|0))}if(!d){Lb(c);return}Qb(a+(e<<3)|0,c|0,f<<3|0)|0;Lb(c);return}function ib(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)>0){c=1;d=0;while(1){e=c<<1;d=d+1|0;if((d|0)==(b|0)){f=e;break}else c=e}}else f=1;return ((a|0)%(f|0)|0|0)==0|0}function jb(a,b){a=a|0;b=b|0;return ~~(+X(+(+(a|0)/(+(b|0)+-1.0)))/.6931471805599453)|0}function kb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=(a|0)!=0;if(b)d=ab(a)|0;else d=0;e=Kb((d<<5)+88|0)|0;c[e+52>>2]=d;c[e+68>>2]=d;c[e+64>>2]=d;c[e+60>>2]=d;c[e+56>>2]=d;Rb(e|0,a|0)|0;f=e+88|0;if(b){b=d<<1;g=d*3|0;bb(a,f,f+(d<<3)|0,f+(b<<3)|0,f+(g<<3)|0)|0;h=b;i=g}else{h=d<<1;i=d*3|0}c[e+72>>2]=f;c[e+76>>2]=f+(d<<3);c[e+80>>2]=f+(h<<3);c[e+84>>2]=f+(i<<3);return e|0}function lb(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+16|0;h=g;j=c[b+52>>2]|0;if((f|0)>100){oa(15888)|0;Ea(-1)}k=jb(e,j)|0;if((k|0)<(f|0)){c[h>>2]=k;pa(15952,h|0)|0;Ea(-1)}do if(!d){h=(Z(f<<1,j+1|0)|0)+e|0;l=Kb((h<<3)+488|0)|0;c[l+24>>2]=h;h=l+44|0;a[h>>0]=115;a[h+1>>0]=121;a[h+2>>0]=109;a[h+3>>0]=0;m=l}else{if((Jb(d,16416)|0)!=0?(Jb(d,16424)|0)!=0:0){if((Jb(d,16448)|0)!=0?(Jb(d,16456)|0)!=0:0){if((Jb(d,16464)|0)!=0?(Jb(d,16472)|0)!=0:0){m=0;break}if(((Db(b,16088)|0)==0?(Db(b,16440)|0)==0:0)?(Db(b,16096)|0)==0:0){oa(16104)|0;Ea(-1)}l=Z(f+1|0,e)|0;h=Kb((l<<3)+488|0)|0;c[h+24>>2]=l;l=h+44|0;a[l>>0]=112;a[l+1>>0]=101;a[l+2>>0]=114;a[l+3>>0]=0;m=h;break}if(!(ib(e,f)|0)){oa(16032)|0;Ea(-1)}else{h=Z(f+1|0,e)|0;l=Kb((h<<3)+488|0)|0;c[l+24>>2]=h;h=l+44|0;a[h>>0]=112;a[h+1>>0]=101;a[h+2>>0]=114;a[h+3>>0]=0;m=l;break}}l=(Z(f<<1,j+1|0)|0)+e|0;h=Kb((l<<3)+488|0)|0;c[h+24>>2]=l;l=h+44|0;a[l>>0]=115;a[l+1>>0]=121;a[l+2>>0]=109;a[l+3>>0]=0;m=h}while(0);c[m>>2]=b;c[m+20>>2]=e;c[m+32>>2]=f;c[m+36>>2]=k;Rb(m+8|0,d|0)|0;c[m+40>>2]=e&1^1;c[m+4>>2]=0;k=m+54|0;a[k>>0]=a[16184]|0;a[k+1>>0]=a[16185]|0;a[k+2>>0]=a[16186]|0;a[k+3>>0]=a[16187]|0;a[k+4>>0]=a[16188]|0;a[k+5>>0]=a[16189]|0;a[k+6>>0]=a[16190]|0;c[m+68>>2]=0;c[m+28>>2]=f+2;c[m+484>>2]=m+488;if((Jb(d,16416)|0)!=0?(Jb(d,16424)|0)!=0:0){if((((Jb(d,16448)|0)!=0?(Jb(d,16456)|0)!=0:0)?(Jb(d,16464)|0)!=0:0)?(Jb(d,16472)|0)!=0:0){i=g;return m|0}d=Z(f+1|0,e)|0;if((d|0)<=0){i=g;return m|0}Nb(m+488|0,0,d<<3|0)|0;i=g;return m|0}d=j+1|0;if(((Z(f<<1,d)|0)+e|0)<=0){i=g;return m|0}Nb(m+488|0,0,((Z(d,f)|0)<<4)+(e<<3)|0)|0;i=g;return m|0}function mb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0,W=0.0,X=0.0;d=i;i=i+16|0;e=d;f=a+20|0;g=c[f>>2]|0;j=c[a+32>>2]|0;k=a+76|0;c[a+76+(j+1<<2)>>2]=g;l=a+24|0;c[l>>2]=0;m=a+72|0;if(!(g&1)){c[m>>2]=0;n=g<<3;o=Kb(n)|0;p=0;q=o;r=Kb(n)|0;s=g}else{c[m>>2]=1;m=g+1|0;g=m<<3;n=Kb(g)|0;p=1;q=n;r=Kb(g)|0;s=m}m=c[f>>2]|0;if((m|0)>0)Qb(q|0,b|0,((m|0)>1?m<<3:8)|0)|0;if((p|0)==1)h[q+(s+-1<<3)>>3]=+h[q+(s+-2<<3)>>3];p=c[(c[a>>2]|0)+56>>2]|0;m=a+44|0;if(Jb(m,16432)|0){if(Jb(m,16440)|0){pa(16208,e|0)|0;Ea(-1)}e=(j|0)>0;if(!e){m=c[a+80>>2]|0;c[k>>2]=m;c[l>>2]=m;Lb(q);Lb(r);i=d;return}m=p+-2|0;p=s;b=j;while(1){p=~~+Y(+(+(m+p|0)*.5));c[a+76+(b<<2)>>2]=p;f=(c[l>>2]|0)+p|0;c[l>>2]=f;if((b|0)<=1){t=f;break}else b=b+-1|0}b=c[a+80>>2]|0;c[k>>2]=b;p=t+b|0;c[l>>2]=p;if(!e){Lb(q);Lb(r);i=d;return}e=a+54|0;b=j+-1|0;t=a+488|0;m=p;p=0;f=s;do{g=a+76+(j-p<<2)|0;n=c[g>>2]|0;m=m-n|0;if((Jb(e,16192)|0)!=0?(Jb(e,16200)|0)!=0:0){o=c[a>>2]|0;u=c[o+56>>2]|0;if((n|0)>0){v=(u|0)>0;w=o+72|0;x=o+76|0;o=(f<<1)+-1|0;y=0;do{z=y<<1;A=z|1;B=r+(y<<3)|0;h[B>>3]=0.0;C=a+488+(y+m<<3)|0;h[C>>3]=0.0;if(v){D=z^-2;z=o-A|0;E=0.0;F=0.0;G=0;while(1){H=A-G|0;I=(H|0)<(f|0);do if((H|0)>-1&I){J=+h[q+(H<<3)>>3];K=E+ +h[(c[w>>2]|0)+(G<<3)>>3]*J;h[B>>3]=K;L=F+ +h[(c[x>>2]|0)+(G<<3)>>3]*J;h[C>>3]=L;M=L;N=K}else{if((H|0)<0){K=+h[q+(G+D<<3)>>3];L=E+ +h[(c[w>>2]|0)+(G<<3)>>3]*K;h[B>>3]=L;J=F+ +h[(c[x>>2]|0)+(G<<3)>>3]*K;h[C>>3]=J;M=J;N=L;break}if(I){M=F;N=E;break}L=+h[q+(z+G<<3)>>3];J=E+ +h[(c[w>>2]|0)+(G<<3)>>3]*L;h[B>>3]=J;K=F+ +h[(c[x>>2]|0)+(G<<3)>>3]*L;h[C>>3]=K;M=K;N=J}while(0);G=G+1|0;if((G|0)==(u|0))break;else{E=N;F=M}}}y=y+1|0}while((y|0)!=(n|0))}}else vb(a,q,f,r,a+488+(m<<3)|0);f=c[g>>2]|0;y=(n|0)>0;if((p|0)==(b|0)){if(y)Qb(t|0,r|0,n<<3|0)|0}else if(y)Qb(q|0,r|0,n<<3|0)|0;p=p+1|0}while((p|0)!=(j|0));Lb(q);Lb(r);i=d;return}p=(j|0)>0;if(p){O=s;P=j}else{t=c[a+80>>2]|0;c[k>>2]=t;c[l>>2]=t;Lb(q);Lb(r);i=d;return}while(1){O=~~+Y(+(+(O|0)*.5));c[a+76+(P<<2)>>2]=O;t=(c[l>>2]|0)+O|0;c[l>>2]=t;if((P|0)<=1){Q=t;break}else P=P+-1|0}P=c[a+80>>2]|0;c[k>>2]=P;k=Q+P|0;c[l>>2]=k;if(!p){Lb(q);Lb(r);i=d;return}p=a+54|0;l=j+-1|0;P=a+488|0;Q=k;k=0;O=s;do{s=a+76+(j-k<<2)|0;t=c[s>>2]|0;Q=Q-t|0;if((Jb(p,16192)|0)!=0?(Jb(p,16200)|0)!=0:0){b=c[a>>2]|0;f=c[b+56>>2]|0;m=(f|0)/2|0;e=(O|0)%2|0;if((t|0)>0){y=(f|0)>0;u=b+72|0;x=b+76|0;b=(e|0)==0;w=(e|0)==1;e=q+(O+-1<<3)|0;o=~O;v=0;do{G=(v<<1)+m|0;C=r+(v<<3)|0;h[C>>3]=0.0;B=a+488+(v+Q<<3)|0;h[B>>3]=0.0;a:do if(y){if(b){M=0.0;N=0.0;z=0;while(1){D=G-z|0;A=(D|0)<(O|0);do if((D|0)>=(m|0)&A){F=+h[q+(D<<3)>>3];E=M+ +h[(c[u>>2]|0)+(z<<3)>>3]*F;h[C>>3]=E;J=N+ +h[(c[x>>2]|0)+(z<<3)>>3]*F;h[B>>3]=J;R=J;S=E}else{if((D|0)<(m|0)&(D|0)>-1){E=+h[q+(D<<3)>>3];J=M+ +h[(c[u>>2]|0)+(z<<3)>>3]*E;h[C>>3]=J;F=N+ +h[(c[x>>2]|0)+(z<<3)>>3]*E;h[B>>3]=F;R=F;S=J;break}if((D|0)<0){J=+h[q+(D+O<<3)>>3];F=M+ +h[(c[u>>2]|0)+(z<<3)>>3]*J;h[C>>3]=F;E=N+ +h[(c[x>>2]|0)+(z<<3)>>3]*J;h[B>>3]=E;R=E;S=F;break}if(A){R=N;S=M;break}F=+h[q+(D-O<<3)>>3];E=M+ +h[(c[u>>2]|0)+(z<<3)>>3]*F;h[C>>3]=E;J=N+ +h[(c[x>>2]|0)+(z<<3)>>3]*F;h[B>>3]=J;R=J;S=E}while(0);z=z+1|0;if((z|0)==(f|0))break a;else{M=S;N=R}}}else{T=0.0;U=0.0;V=0}while(1){z=G-V|0;do if(!((z|0)>=(m|0)&(z|0)<(O|0))){if((z|0)<(m|0)&(z|0)>-1){N=+h[q+(z<<3)>>3];M=T+ +h[(c[u>>2]|0)+(V<<3)>>3]*N;h[C>>3]=M;E=U+ +h[(c[x>>2]|0)+(V<<3)>>3]*N;h[B>>3]=E;W=E;X=M;break}if((z|0)<0){M=+h[q+(z+O<<3)>>3];E=T+ +h[(c[u>>2]|0)+(V<<3)>>3]*M;h[C>>3]=E;N=U+ +h[(c[x>>2]|0)+(V<<3)>>3]*M;h[B>>3]=N;W=N;X=E;break}if(!(w&(z|0)>=(O|0))){W=U;X=T;break}E=+h[(c[u>>2]|0)+(V<<3)>>3];if((z|0)==(O|0)){N=+h[e>>3];M=T+E*N;h[C>>3]=M;J=U+ +h[(c[x>>2]|0)+(V<<3)>>3]*N;h[B>>3]=J;W=J;X=M;break}else{M=+h[q+(z+o<<3)>>3];J=T+E*M;h[C>>3]=J;E=U+ +h[(c[x>>2]|0)+(V<<3)>>3]*M;h[B>>3]=E;W=E;X=J;break}}else{J=+h[q+(z<<3)>>3];E=T+ +h[(c[u>>2]|0)+(V<<3)>>3]*J;h[C>>3]=E;M=U+ +h[(c[x>>2]|0)+(V<<3)>>3]*J;h[B>>3]=M;W=M;X=E}while(0);V=V+1|0;if((V|0)==(f|0))break;else{T=X;U=W}}}while(0);v=v+1|0}while((v|0)!=(t|0))}}else vb(a,q,O,r,a+488+(Q<<3)|0);O=c[s>>2]|0;v=(t|0)>0;if((k|0)==(l|0)){if(v)Qb(P|0,r|0,t<<3|0)|0}else if(v)Qb(q|0,r|0,t<<3|0)|0;k=k+1|0}while((k|0)!=(j|0));Lb(q);Lb(r);i=d;return}function nb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0,V=0.0,W=0,X=0,Y=0,Z=0,_=0;d=i;i=i+32|0;e=d+16|0;f=d;g=d+8|0;j=c[a+32>>2]|0;k=c[a+76>>2]|0;l=a+20|0;m=Kb((c[l>>2]<<3)+8|0)|0;n=a+44|0;do if(!(Jb(n,16432)|0)){o=a+54|0;if((Jb(o,16192)|0)!=0?(Jb(o,16200)|0)!=0:0){if(Jb(a+54|0,16184)|0){p=48;break}q=c[a+80>>2]|0;r=c[a>>2]|0;s=(c[r+68>>2]|0)+(c[r+64>>2]|0)|0;t=(s|0)/2|0;u=Kb((t+(c[a+76+(j<<2)>>2]|0)<<4)+-8|0)|0;if((k|0)>0){v=c[a+484>>2]|0;w=0;do{h[m+(w<<3)>>3]=+h[v+(w<<3)>>3];w=w+1|0}while((w|0)!=(k|0))}if((j|0)>0){w=c[a+484>>2]|0;v=(s|0)/4|0;x=(s|0)>3;y=r+80|0;z=r+84|0;A=0-v|0;B=u+((v<<3)+-8)|0;C=q;D=0;E=k;while(1){F=C+-1|0;G=v+F|0;if((G|0)>0){H=t+F|0;F=0;I=-2;J=-1;do{I=I+2|0;J=J+2|0;K=u+(I<<3)|0;h[K>>3]=0.0;L=u+(J<<3)|0;h[L>>3]=0.0;if(x){M=F+C|0;N=0;do{O=N<<1;P=F-N|0;Q=(P|0)<(C|0);do if(!((P|0)>-1&Q)){if((P|0)<(H|0)&(Q^1)){R=c[y>>2]|0;S=P-C|0;T=+h[m+(S<<3)>>3];U=c[z>>2]|0;V=+h[w+(S+E<<3)>>3];h[K>>3]=+h[K>>3]+(+h[R+(O<<3)>>3]*T+ +h[U+(O<<3)>>3]*V);S=O|1;h[L>>3]=+h[L>>3]+(+h[R+(S<<3)>>3]*T+ +h[U+(S<<3)>>3]*V);break}if((P|0)<0&(P|0)>(A|0)){S=c[y>>2]|0;U=M-N|0;V=+h[m+(U<<3)>>3];R=c[z>>2]|0;T=+h[w+(U+E<<3)>>3];h[K>>3]=+h[K>>3]+(+h[S+(O<<3)>>3]*V+ +h[R+(O<<3)>>3]*T);U=O|1;h[L>>3]=+h[L>>3]+(+h[S+(U<<3)>>3]*V+ +h[R+(U<<3)>>3]*T)}}else{U=c[y>>2]|0;T=+h[m+(P<<3)>>3];R=c[z>>2]|0;V=+h[w+(P+E<<3)>>3];h[K>>3]=+h[K>>3]+(+h[U+(O<<3)>>3]*T+ +h[R+(O<<3)>>3]*V);S=O|1;h[L>>3]=+h[L>>3]+(+h[U+(S<<3)>>3]*T+ +h[R+(S<<3)>>3]*V)}while(0);N=N+1|0}while((N|0)<(v|0))}F=F+1|0}while((F|0)!=(G|0))}if((v|0)<=((C<<1)+-1+v|0))Qb(m|0,B|0,C<<4|0)|0;E=C+E|0;G=D+1|0;if((G|0)==(j|0))break;else{C=c[a+76+(D+2<<2)>>2]|0;D=G}}}Lb(u);break}D=c[a+80>>2]|0;C=c[a+76+(j<<2)>>2]|0;E=C<<1;B=c[a>>2]|0;v=((c[B+68>>2]|0)+(c[B+64>>2]|0)|0)/2|0;w=Kb(C<<4)|0;C=Kb(v+E<<3)|0;z=((v<<1)+E<<3)+-8|0;E=Kb(z)|0;v=Kb(z)|0;if((k|0)>0){z=c[a+484>>2]|0;y=0;do{h[m+(y<<3)>>3]=+h[z+(y<<3)>>3];y=y+1|0}while((y|0)!=(k|0))}a:do if((j|0)>0){y=a+484|0;z=a+4|0;u=a+68|0;A=B;x=D;t=0;q=k;while(1){r=(c[y>>2]|0)+(q<<3)|0;s=(c[A+68>>2]|0)+(c[A+64>>2]|0)|0;G=(s|0)/2|0;F=x<<1;db(m,x,2,w)|0;H=(s|0)/4|0;fb(w,F,H,C)|0;s=G+F|0;J=c[a>>2]|0;if((c[J+64>>2]|0)!=(c[J+68>>2]|0))break;if((Jb(o,16192)|0)!=0?(Jb(o,16200)|0)!=0:0)W=J;else{c[z>>2]=Ya(s,G)|0;c[u>>2]=1;W=c[a>>2]|0}wb(a,C,s,c[W+80>>2]|0,G,E);db(r,x,2,w)|0;fb(w,F,H,C)|0;wb(a,C,s,c[(c[a>>2]|0)+84>>2]|0,G,v);if((G|0)<=(s+-1|0)){s=1-G|0;H=F+-1+G|0;F=G+-1|0;do{h[m+(s+F<<3)>>3]=+h[E+(F<<3)>>3]+ +h[v+(F<<3)>>3];F=F+1|0}while((F|0)!=(H|0))}H=c[a>>2]|0;do if((c[H+64>>2]|0)==(c[H+68>>2]|0)){if((Jb(o,16192)|0)!=0?(Jb(o,16200)|0)!=0:0)break;$a(c[z>>2]|0);c[u>>2]=0}while(0);H=t+1|0;if((H|0)>=(j|0))break a;F=x+q|0;A=c[a>>2]|0;x=c[a+76+(t+2<<2)>>2]|0;t=H;q=F}pa(16256,g|0)|0;Ea(-1)}while(0);Lb(w);Lb(E);Lb(v);Lb(C)}else p=48;while(0);do if((p|0)==48){if(Jb(n,16440)|0){pa(16208,e|0)|0;Ea(-1)}if(!(Jb(a+54|0,16184)|0)){g=c[a+80>>2]|0;W=c[a>>2]|0;o=W+64|0;D=W+68|0;B=((c[D>>2]|0)+(c[o>>2]|0)|0)/2|0;q=Kb((B+(c[a+76+(j<<2)>>2]|0)<<4)+-16|0)|0;if((k|0)>0){t=c[a+484>>2]|0;x=0;do{h[m+(x<<3)>>3]=+h[t+(x<<3)>>3];x=x+1|0}while((x|0)!=(k|0))}if((j|0)>0){x=c[a+484>>2]|0;t=W+80|0;C=W+84|0;v=B+-2|0;E=q+((B<<3)+-16)|0;w=2-B|0;A=g;u=0;z=k;while(1){b:do if((A|0)>0){y=(c[o>>2]|0)+(c[D>>2]|0)|0;F=(y|0)/4|0;if((y|0)>3){X=-2;Y=-1;Z=0}else{y=-2;H=-1;s=0;while(1){y=y+2|0;H=H+2|0;h[q+(y<<3)>>3]=0.0;h[q+(H<<3)>>3]=0.0;s=s+1|0;if((s|0)==(A|0))break b}}do{X=X+2|0;Y=Y+2|0;s=q+(X<<3)|0;h[s>>3]=0.0;H=q+(Y<<3)|0;h[H>>3]=0.0;y=0;do{G=y<<1;r=Z-y|0;if((r|0)>-1&(r|0)<(A|0)){J=c[t>>2]|0;V=+h[m+(r<<3)>>3];I=c[C>>2]|0;T=+h[x+(r+z<<3)>>3];h[s>>3]=+h[s>>3]+(+h[J+(G<<3)>>3]*V+ +h[I+(G<<3)>>3]*T);r=G|1;h[H>>3]=+h[H>>3]+(+h[J+(r<<3)>>3]*V+ +h[I+(r<<3)>>3]*T)}y=y+1|0}while((y|0)<(F|0));Z=Z+1|0}while((Z|0)!=(A|0))}while(0);if((v|0)<(A<<1|0))Qb(m|0,E|0,w+(A<<1)<<3|0)|0;z=A+z|0;F=u+1|0;if((F|0)==(j|0))break;else{A=c[a+76+(u+2<<2)>>2]|0;u=F}}}Lb(q);break}u=a+54|0;if((Jb(u,16192)|0)!=0?(Jb(u,16200)|0)!=0:0){pa(16208,e|0)|0;Ea(-1)}A=c[(c[a>>2]|0)+56>>2]|0;z=(c[a+76+(j<<2)>>2]<<1)+-1|0;w=Kb(z<<3)|0;E=(z+A<<3)+-8|0;z=Kb(E)|0;v=Kb(E)|0;if((k|0)>0){E=c[a+484>>2]|0;x=0;do{h[m+(x<<3)>>3]=+h[E+(x<<3)>>3];x=x+1|0}while((x|0)!=(k|0))}c:do if((j|0)>0){x=a+4|0;E=a+68|0;q=a+484|0;C=A+-2|0;t=2-A|0;D=0;o=k;while(1){D=D+1|0;g=a+76+(D<<2)|0;B=c[g>>2]|0;cb(m,B,2,w)|0;W=c[g>>2]|0;g=W<<1;F=g+-1|0;y=c[a>>2]|0;if((c[y+64>>2]|0)!=(c[y+68>>2]|0))break;if((Jb(u,16192)|0)!=0?(Jb(u,16200)|0)!=0:0)_=y;else{c[x>>2]=Ya(F,A)|0;c[E>>2]=1;_=c[a>>2]|0}wb(a,w,F,c[_+80>>2]|0,A,z);cb((c[q>>2]|0)+(o<<3)|0,B,2,w)|0;wb(a,w,F,c[(c[a>>2]|0)+84>>2]|0,A,v);if((C|0)<(g|0)){g=W<<1;W=C;do{h[m+(t+W<<3)>>3]=+h[z+(W<<3)>>3]+ +h[v+(W<<3)>>3];W=W+1|0}while((W|0)!=(g|0))}o=B+o|0;g=c[a>>2]|0;do if((c[g+64>>2]|0)==(c[g+68>>2]|0)){if((Jb(u,16192)|0)!=0?(Jb(u,16200)|0)!=0:0)break;$a(c[x>>2]|0);c[E>>2]=0}while(0);if((D|0)>=(j|0))break c}pa(16256,f|0)|0;Ea(-1)}while(0);Lb(w);Lb(z);Lb(v)}while(0);f=c[l>>2]|0;if((f|0)<=0){Lb(m);i=d;return}Qb(b|0,m|0,((f|0)>1?f<<3:8)|0)|0;Lb(m);i=d;return}function ob(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0.0,Q=0,R=0,S=0,T=0,U=0;d=i;i=i+16|0;e=d+8|0;f=d;if(Jb(a+8|0,16448)|0){pa(16312,e|0)|0;Ea(-1)}if(!(Jb(a+54|0,16184)|0)){g=c[a+20>>2]|0;j=c[a+32>>2]|0;c[a+76+(j<<2)>>2]=g;c[a+76>>2]=g;k=j+1|0;l=Z(k,g)|0;c[a+76+(k<<2)>>2]=l;k=a+24|0;c[k>>2]=l;if((j|0)>1){l=1;do{c[a+76+(l<<2)>>2]=g;l=l+1|0}while((l|0)!=(j|0))}l=g<<3;m=Kb(l)|0;n=Kb(l)|0;l=(g|0)>0;if(l){o=0;do{h[a+488+(o<<3)>>3]=+h[b+(o<<3)>>3];o=o+1|0}while((o|0)!=(g|0))}if((j|0)>0){o=(g|0)%2|0;p=(o|0)==0;q=(o|0)==1;o=a+488+(g+-1<<3)|0;r=~g;s=1;t=0;u=c[k>>2]|0;do{u=u-g|0;s=s<<((t|0)>0&1);k=c[a>>2]|0;v=Z(c[k+56>>2]|0,s)|0;w=(v|0)/2|0;if(l){x=(v|0)>0;y=k+72|0;z=k+76|0;k=0;do{A=k+w|0;B=m+(k<<3)|0;h[B>>3]=0.0;C=n+(k<<3)|0;h[C>>3]=0.0;if(x){D=0.0;E=0.0;F=0;G=-1;while(1){H=F;while(1)if((H|0)<(g|0)){I=H;break}else H=H-g|0;G=G+1|0;H=A-I|0;do if(!((H|0)>=(w|0)&(H|0)<(g|0))){if((H|0)<(w|0)&(H|0)>-1){J=+h[a+488+(H<<3)>>3];K=D+ +h[(c[y>>2]|0)+(G<<3)>>3]*J;h[B>>3]=K;L=E+J*+h[(c[z>>2]|0)+(G<<3)>>3];h[C>>3]=L;M=L;N=K;break}if((H|0)<0){K=+h[a+488+(H+g<<3)>>3];L=D+ +h[(c[y>>2]|0)+(G<<3)>>3]*K;h[B>>3]=L;J=E+K*+h[(c[z>>2]|0)+(G<<3)>>3];h[C>>3]=J;M=J;N=L;break}O=(H|0)>=(g|0);if(p&O){L=+h[a+488+(H-g<<3)>>3];J=D+ +h[(c[y>>2]|0)+(G<<3)>>3]*L;h[B>>3]=J;K=E+L*+h[(c[z>>2]|0)+(G<<3)>>3];h[C>>3]=K;M=K;N=J;break}if(q&O){J=+h[(c[y>>2]|0)+(G<<3)>>3];if((A-G|0)==(g|0)){K=+h[o>>3];L=D+J*K;h[B>>3]=L;P=E+K*+h[(c[z>>2]|0)+(G<<3)>>3];h[C>>3]=P;M=P;N=L;break}else{L=+h[a+488+(H+r<<3)>>3];P=D+J*L;h[B>>3]=P;J=E+L*+h[(c[z>>2]|0)+(G<<3)>>3];h[C>>3]=J;M=J;N=P;break}}else{M=E;N=D}}else{P=+h[a+488+(H<<3)>>3];J=D+ +h[(c[y>>2]|0)+(G<<3)>>3]*P;h[B>>3]=J;L=E+P*+h[(c[z>>2]|0)+(G<<3)>>3];h[C>>3]=L;M=L;N=J}while(0);F=I+s|0;if((F|0)>=(v|0))break;else{D=N;E=M}}}k=k+1|0}while((k|0)!=(g|0));Q=0;do{h[a+488+(Q<<3)>>3]=+h[m+(Q<<3)>>3];h[a+488+(Q+u<<3)>>3]=+h[n+(Q<<3)>>3];Q=Q+1|0}while((Q|0)!=(g|0))}t=t+1|0}while((t|0)!=(j|0))}Lb(m);Lb(n);i=d;return}else{n=a+54|0;if((Jb(n,16192)|0)!=0?(Jb(n,16200)|0)!=0:0){pa(16312,e|0)|0;Ea(-1)}e=c[a+20>>2]|0;m=c[a+32>>2]|0;c[a+76+(m<<2)>>2]=e;c[a+76>>2]=e;j=m+1|0;t=Z(j,e)|0;c[a+76+(j<<2)>>2]=t;j=a+24|0;c[j>>2]=t;if((m|0)>1){t=1;g=1;while(1){Q=t<<1;c[a+76+(g<<2)>>2]=e;g=g+1|0;if((g|0)==(m|0)){R=Q;break}else t=Q}}else R=1;t=c[(c[a>>2]|0)+52>>2]|0;g=Z(t,R<<3)|0;Q=Kb(g)|0;u=Kb(g)|0;g=(e|0)%2|0;s=Kb((Z(t,R)|0)+e+g<<3)|0;I=((Z(R<<1,t)|0)+e+g<<3)+-1|0;R=Kb(I)|0;r=Kb(I)|0;I=(e|0)>0;if(I){o=0;do{h[a+488+(o<<3)>>3]=+h[b+(o<<3)>>3];o=o+1|0}while((o|0)!=(e|0))}a:do if((m|0)>0){o=a+488|0;b=g+e|0;q=a+4|0;p=a+68|0;l=(t|0)>0;k=1;v=0;z=c[j>>2]|0;while(1){z=z-e|0;if((v|0)<=0)if(l){y=c[a>>2]|0;w=c[y+72>>2]|0;x=c[y+76>>2]|0;y=0;do{h[Q+(y<<3)>>3]=+h[w+(y<<3)>>3];h[u+(y<<3)>>3]=+h[x+(y<<3)>>3];y=y+1|0}while((y|0)!=(t|0));S=k;T=t}else{S=k;T=t}else{y=k<<1;x=Z(y,t)|0;w=c[a>>2]|0;db(c[w+72>>2]|0,c[w+56>>2]|0,y,Q)|0;w=c[a>>2]|0;db(c[w+76>>2]|0,c[w+60>>2]|0,y,u)|0;S=y;T=x}fb(o,e,(T|0)/2|0,s)|0;x=c[a>>2]|0;if((c[x+56>>2]|0)!=(c[x+60>>2]|0))break;if((Jb(n,16192)|0)!=0?(Jb(n,16200)|0)!=0:0)U=T+b|0;else{x=T+b|0;c[q>>2]=Ya(x,T)|0;c[p>>2]=1;U=x}wb(a,s,U,Q,T,R);wb(a,s,U,u,T,r);x=c[a>>2]|0;do if((c[x+56>>2]|0)==(c[x+60>>2]|0)){if((Jb(n,16192)|0)!=0?(Jb(n,16200)|0)!=0:0)break;$a(c[q>>2]|0);c[p>>2]=0}while(0);if(I){x=0;do{y=x+T|0;h[a+488+(x<<3)>>3]=+h[R+(y<<3)>>3];h[a+488+(x+z<<3)>>3]=+h[r+(y<<3)>>3];x=x+1|0}while((x|0)!=(e|0))}v=v+1|0;if((v|0)>=(m|0))break a;else k=S}pa(16256,f|0)|0;Ea(-1)}while(0);Lb(Q);Lb(u);Lb(s);Lb(R);Lb(r);i=d;return}}function pb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;d=i;i=i+16|0;e=d;f=c[a+20>>2]|0;g=c[a+32>>2]|0;j=c[(c[a>>2]|0)+64>>2]|0;k=f<<3;l=Kb(k)|0;m=Kb(k)|0;n=Kb(k)|0;o=Kb(k)|0;p=Kb(k)|0;q=Kb(k)|0;r=Kb(k)|0;s=j+f+((f|0)%2|0)<<3;t=Kb(s)|0;u=Kb(s)|0;s=(j<<1)+f<<3;v=Kb(s)|0;w=Kb(s)|0;s=Kb(k)|0;x=Kb(k)|0;if((g|0)<=0){Lb(l);Lb(m);Lb(n);Lb(o);Lb(r);Lb(t);Lb(u);Lb(v);Lb(w);Lb(s);Lb(x);Lb(p);Lb(q);i=d;return}k=(f|0)>0;y=g+-1|0;z=(j|0)/2|0;A=a+54|0;B=a+4|0;C=a+68|0;D=j+-1|0;E=1-j|0;F=a+484|0;G=f<<3;H=0;a:while(1){I=f+(Z(f,H)|0)|0;if(k)Nb(b|0,0,G|0)|0;if(!H){if(k){J=c[F>>2]|0;Qb(l|0,J|0,G|0)|0;Qb(m|0,J+(f<<3)|0,G|0)|0}}else if(k)Qb(m|0,(c[F>>2]|0)+(I<<3)|0,G|0)|0;I=~~+Ab(1.0,y-H|0);if((I|0)>0){J=0;do{K=(J|0)<(f|0);if(K){L=J;M=0;while(1){h[n+(M<<3)>>3]=+h[l+(L<<3)>>3];h[o+(M<<3)>>3]=+h[m+(L<<3)>>3];N=M+1|0;L=L+I|0;if((L|0)>=(f|0)){O=N;P=M;break}else M=N}if((P|0)>-1){M=(P>>>1)+1|0;L=0;N=0;while(1){h[p+(N<<3)>>3]=+h[n+(L<<3)>>3];h[q+(N<<3)>>3]=+h[o+(L<<3)>>3];N=N+1|0;if((N|0)==(M|0)){Q=O;R=M;break}else L=L+2|0}}else{Q=O;R=0}}else{Q=0;R=0}db(p,R,2,r)|0;L=R<<1;fb(r,L,z,t)|0;db(q,R,2,r)|0;fb(r,L,z,u)|0;M=L+j|0;L=c[a>>2]|0;do if((c[L+64>>2]|0)==(c[L+68>>2]|0)){if((Jb(A,16192)|0)!=0?(Jb(A,16200)|0)!=0:0){S=22;break}c[B>>2]=Ya(M,j)|0;c[C>>2]=1;T=c[a>>2]|0}else S=22;while(0);if((S|0)==22){S=0;if((c[L+56>>2]|0)==(c[L+60>>2]|0))T=L;else{S=23;break a}}wb(a,t,M,c[T+80>>2]|0,j,v);wb(a,u,M,c[(c[a>>2]|0)+84>>2]|0,j,w);N=M+-1|0;if((j|0)<=(N|0)){U=D;do{h[s+(E+U<<3)>>3]=+h[v+(U<<3)>>3]+ +h[w+(U<<3)>>3];U=U+1|0}while((U|0)<(N|0))}if((Q|0)>1){N=((Q+-2|0)>>>1)+1|0;U=1;M=0;while(1){h[p+(M<<3)>>3]=+h[n+(U<<3)>>3];h[q+(M<<3)>>3]=+h[o+(U<<3)>>3];M=M+1|0;if((M|0)==(N|0)){V=N;break}else U=U+2|0}}else V=0;db(p,V,2,r)|0;U=V<<1;fb(r,U,z,t)|0;db(q,V,2,r)|0;fb(r,U,z,u)|0;N=U+j|0;wb(a,t,N,c[(c[a>>2]|0)+80>>2]|0,j,v);wb(a,u,N,c[(c[a>>2]|0)+84>>2]|0,j,w);M=N+-1|0;if((j|0)<=(M|0)){N=D;do{h[x+(E+N<<3)>>3]=+h[v+(N<<3)>>3]+ +h[w+(N<<3)>>3];N=N+1|0}while((N|0)<(M|0))}hb(x,U,-1);if(K){M=J;N=0;while(1){h[b+(M<<3)>>3]=(+h[s+(N<<3)>>3]+ +h[x+(N<<3)>>3])*.5;M=M+I|0;if((M|0)>=(f|0))break;else N=N+1|0}}J=J+1|0}while((J|0)<(I|0))}if(k)Qb(l|0,b|0,G|0)|0;H=H+1|0;if((H|0)>=(g|0)){S=35;break}}if((S|0)==23){pa(16256,e|0)|0;Ea(-1)}else if((S|0)==35){Lb(l);Lb(m);Lb(n);Lb(o);Lb(r);Lb(t);Lb(u);Lb(v);Lb(w);Lb(s);Lb(x);Lb(p);Lb(q);i=d;return}}function qb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0;d=c[a+20>>2]|0;e=c[a+32>>2]|0;c[a+76+(e<<2)>>2]=d;c[a+76>>2]=d;f=e+1|0;g=Z(f,d)|0;c[a+76+(f<<2)>>2]=g;f=a+24|0;c[f>>2]=g;if((e|0)>1){g=1;do{c[a+76+(g<<2)>>2]=d;g=g+1|0}while((g|0)!=(e|0))}g=d<<3;i=Kb(g)|0;j=Kb(g)|0;g=(d|0)>0;if(g){k=0;do{h[a+488+(k<<3)>>3]=+h[b+(k<<3)>>3];k=k+1|0}while((k|0)!=(d|0))}if((e|0)<=0){Lb(i);Lb(j);return}k=1;b=0;l=c[f>>2]|0;do{l=l-d|0;k=k<<((b|0)>0&1);f=c[a>>2]|0;m=c[f+56>>2]|0;n=Kb(m<<4)|0;if((m|0)>0){o=c[f+72>>2]|0;p=c[f+76>>2]|0;f=0;do{h[n+(f<<3)>>3]=+h[o+(f<<3)>>3]/1.4142135623730951;h[n+(f+m<<3)>>3]=+h[p+(f<<3)>>3]/1.4142135623730951;f=f+1|0}while((f|0)!=(m|0))}if(g){q=+h[n>>3];r=+h[n+(m<<3)>>3];f=(m|0)>1;p=0;do{s=+h[a+488+(p<<3)>>3];t=q*s;o=i+(p<<3)|0;h[o>>3]=t;u=r*s;v=j+(p<<3)|0;h[v>>3]=u;if(f){s=t;t=u;w=1;x=p;while(1){y=x-k|0;while(1)if((y|0)<(d|0)){z=y;break}else y=y-d|0;while(1)if((z|0)<0)z=z+d|0;else{A=z;break}u=+h[a+488+(A<<3)>>3];B=s+ +h[n+(w<<3)>>3]*u;C=t+ +h[n+(w+m<<3)>>3]*u;y=w+1|0;if((y|0)==(m|0)){D=B;E=C;break}else{s=B;t=C;w=y;x=A}}h[o>>3]=D;h[v>>3]=E}p=p+1|0}while((p|0)!=(d|0));Lb(n);if(g){p=0;do{h[a+488+(p<<3)>>3]=+h[i+(p<<3)>>3];h[a+488+(p+l<<3)>>3]=+h[j+(p<<3)>>3];p=p+1|0}while((p|0)!=(d|0))}}else Lb(n);b=b+1|0}while((b|0)!=(e|0));Lb(i);Lb(j);return}function rb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0.0;d=c[a+20>>2]|0;e=c[a+32>>2]|0;f=~~+Eb(+(e|0)+-1.0);g=Kb(d<<3)|0;i=(d|0)>0;if(i){j=c[a+484>>2]|0;k=0;do{h[b+(k<<3)>>3]=+h[j+(k<<3)>>3];k=k+1|0}while((k|0)!=(d|0))}if((e|0)<=0){Lb(g);return}k=d<<3;j=f;f=0;l=d;while(1){j=(f|0)>0?(j|0)/2|0:j;m=c[a>>2]|0;n=c[m+56>>2]|0;o=Kb(n<<4)|0;if((n|0)>0){p=c[m+72>>2]|0;q=c[m+76>>2]|0;m=0;do{h[o+(m<<3)>>3]=+h[p+(m<<3)>>3]/1.4142135623730951;h[o+(m+n<<3)>>3]=+h[q+(m<<3)>>3]/1.4142135623730951;m=m+1|0}while((m|0)!=(n|0))}if(i){r=+h[o>>3];s=+h[o+(n<<3)>>3];m=(n|0)>1;q=0;do{t=r*+h[b+(q<<3)>>3]+s*+h[a+488+(q+l<<3)>>3];p=g+(q<<3)|0;h[p>>3]=t;if(m){u=t;v=1;w=q;while(1){x=w+j|0;while(1)if((x|0)<(d|0)){y=x;break}else x=x-d|0;while(1)if((y|0)<0)y=y+d|0;else{z=y;break}t=u+(+h[o+(v<<3)>>3]*+h[b+(z<<3)>>3]+ +h[o+(v+n<<3)>>3]*+h[a+488+(z+l<<3)>>3]);x=v+1|0;if((x|0)==(n|0)){A=t;break}else{u=t;v=x;w=z}}h[p>>3]=A}q=q+1|0}while((q|0)!=(d|0));Lb(o);if(i)Qb(b|0,g|0,k|0)|0}else Lb(o);f=f+1|0;if((f|0)==(e|0))break;else l=l+d|0}Lb(g);return}function sb(b,c){b=b|0;c=c|0;var d=0,e=0;d=i;i=i+16|0;if(!(Jb(c,16440)|0)){e=b+44|0;a[e>>0]=115;a[e+1>>0]=121;a[e+2>>0]=109;a[e+3>>0]=0;i=d;return}if(Jb(c,16432)|0){pa(16208,d|0)|0;Ea(-1)}c=b+44|0;a[c>>0]=112;a[c+1>>0]=101;a[c+2>>0]=114;a[c+3>>0]=0;i=d;return}function tb(a){a=a|0;Lb(a);return}function ub(a){a=a|0;Lb(a);return}function vb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=i;i=i+32|0;h=g+16|0;j=g;k=g+8|0;l=c[a>>2]|0;m=c[l+56>>2]|0;n=(c[l+60>>2]|0)+m|0;l=(n|0)/2|0;o=a+44|0;if(!(Jb(o,16432)|0)){p=Kb(l+d+((d|0)%2|0)<<3)|0;q=fb(b,d,(n|0)/4|0,p)|0;n=q+l|0;r=c[a>>2]|0;s=r+56|0;t=Kb(((c[s>>2]|0)+n<<3)+-8|0)|0;u=c[s>>2]|0;if((u|0)!=(c[r+60>>2]|0)){pa(16256,k|0)|0;Ea(-1)}k=a+54|0;if((Jb(k,16192)|0)!=0?(Jb(k,16200)|0)!=0:0){v=r;w=u}else{c[a+4>>2]=Ya(n,u)|0;c[a+68>>2]=1;u=c[a>>2]|0;v=u;w=c[u+56>>2]|0}wb(a,p,n,c[v+72>>2]|0,w,t);w=t+(l<<3)|0;eb(w,q,2,e)|0;l=c[a>>2]|0;wb(a,p,n,c[l+76>>2]|0,c[l+60>>2]|0,t);eb(w,q,2,f)|0;x=t;y=p}else{if(Jb(o,16440)|0){pa(16208,h|0)|0;Ea(-1)}h=m+-1|0;o=h<<1;p=Kb(o+d<<3)|0;t=gb(b,d,h,p)|0;d=Kb(t+(h*3|0)<<3)|0;h=c[a>>2]|0;b=c[h+56>>2]|0;if((b|0)!=(c[h+60>>2]|0)){pa(16256,j|0)|0;Ea(-1)}j=a+54|0;if((Jb(j,16192)|0)!=0?(Jb(j,16200)|0)!=0:0){z=t+o|0;A=h;B=b}else{b=t+o|0;c[a+4>>2]=Ya(b,m)|0;c[a+68>>2]=1;o=c[a>>2]|0;z=b;A=o;B=c[o+56>>2]|0}wb(a,p,z,c[A+72>>2]|0,B,d);B=d+(m<<3)|0;A=m+-2+t|0;eb(B,A,2,e)|0;e=c[a>>2]|0;wb(a,p,z,c[e+76>>2]|0,c[e+60>>2]|0,d);eb(B,A,2,f)|0;x=d;y=p}p=c[a>>2]|0;if((c[p+56>>2]|0)!=(c[p+60>>2]|0)){Lb(y);Lb(x);i=g;return}p=a+54|0;if((Jb(p,16192)|0)!=0?(Jb(p,16200)|0)!=0:0){Lb(y);Lb(x);i=g;return}$a(c[a+4>>2]|0);c[a+68>>2]=0;Lb(y);Lb(x);i=g;return}function wb(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;i=i+16|0;j=h;k=a+54|0;if(!(Jb(k,16184)|0)){Za(b,d,e,f,g);i=h;return}if((Jb(k,16192)|0)!=0?(Jb(k,16200)|0)!=0:0){pa(16360,j|0)|0;Ea(-1)}if(!(c[a+68>>2]|0)){j=Ya(d,f)|0;f=a+4|0;c[f>>2]=j;_a(j,b,e,g);$a(c[f>>2]|0);i=h;return}else{_a(c[a+4>>2]|0,b,e,g);i=h;return}}function xb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((Jb(b,16416)|0)!=0?(Jb(b,16424)|0)!=0:0){if((Jb(b,16448)|0)!=0?(Jb(b,16456)|0)!=0:0){if((Jb(b,16464)|0)!=0?(Jb(b,16472)|0)!=0:0){f=0;return f|0}f=Z(d+1|0,a)|0;return f|0}f=Z(d+1|0,a)|0;return f|0}if(!(Jb(e,16432)|0)){if((d|0)>0){b=a;g=0;h=d;while(1){i=~~+Y(+(+(b|0)*.5));j=i+g|0;if((h|0)>1){b=i;g=j;h=h+-1|0}else{k=i;l=j;break}}}else{k=a;l=0}f=l+k|0;return f|0}if(Jb(e,16440)|0){f=0;return f|0}if((d|0)>0){e=c+-2|0;c=a;k=0;l=d;while(1){d=~~+Y(+(+(e+c|0)*.5));h=d+k|0;if((l|0)>1){c=d;k=h;l=l+-1|0}else{m=d;n=h;break}}}else{m=a;n=0}f=n+m|0;return f|0}function yb(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;l=kb(d)|0;d=c[l+52>>2]|0;if((d|0)>0){m=c[l+72>>2]|0;n=c[l+76>>2]|0;o=c[l+80>>2]|0;p=d<<1;q=c[l+84>>2]|0;r=d*3|0;s=0;do{h[k+(s<<3)>>3]=+h[m+(s<<3)>>3];h[k+(d+s<<3)>>3]=+h[n+(s<<3)>>3];h[k+(p+s<<3)>>3]=+h[o+(s<<3)>>3];h[k+(r+s<<3)>>3]=+h[q+(s<<3)>>3];s=s+1|0}while((s|0)<(d|0))}d=lb(l,e,b,f)|0;do if((Jb(e,16416)|0)!=0?(Jb(e,16424)|0)!=0:0){if((Jb(e,16448)|0)!=0?(Jb(e,16456)|0)!=0:0){if((Jb(e,16464)|0)!=0?(Jb(e,16472)|0)!=0:0)break;qb(d,a);break}ob(d,a)}else t=6;while(0);if((t|0)==6){sb(d,g);mb(d,a)}a=d+28|0;if((c[a>>2]|0)>0){g=0;do{c[j+(g<<2)>>2]=c[d+76+(g<<2)>>2];g=g+1|0}while((g|0)<(c[a>>2]|0))}a=c[d+24>>2]|0;if((a|0)<=0){tb(l);ub(d);return}g=c[d+484>>2]|0;j=0;do{h[i+(j<<3)>>3]=+h[g+(j<<3)>>3];j=j+1|0}while((j|0)<(a|0));tb(l);ub(d);return}function zb(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0;m=kb(d)|0;d=lb(m,e,j,f)|0;if((b|0)>0){f=c[d+484>>2]|0;j=0;do{h[f+(j<<3)>>3]=+h[a+(j<<3)>>3];j=j+1|0}while((j|0)!=(b|0))}c[d+28>>2]=l;if((l|0)>0){b=0;do{c[d+76+(b<<2)>>2]=c[k+(b<<2)>>2];b=b+1|0}while((b|0)!=(l|0))}if((Jb(e,16416)|0)!=0?(Jb(e,16424)|0)!=0:0){if((Jb(e,16448)|0)!=0?(Jb(e,16456)|0)!=0:0){if((Jb(e,16464)|0)!=0?(Jb(e,16472)|0)!=0:0){tb(m);ub(d);return}rb(d,i);tb(m);ub(d);return}pb(d,i);tb(m);ub(d);return}sb(d,g);nb(d,i);tb(m);ub(d);return}function Ab(a,b){a=+a;b=b|0;return +(+Gb(a,b))}function Bb(b,c){b=b|0;c=c|0;var d=0;d=Cb(b,c)|0;return ((a[d>>0]|0)==(c&255)<<24>>24?d:0)|0}function Cb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=d&255;if(!e){f=b+(Pb(b|0)|0)|0;return f|0}a:do if(!(b&3))g=b;else{h=d&255;i=b;while(1){j=a[i>>0]|0;if(j<<24>>24==0?1:j<<24>>24==h<<24>>24){f=i;break}j=i+1|0;if(!(j&3)){g=j;break a}else i=j}return f|0}while(0);b=Z(e,16843009)|0;e=c[g>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009)){i=e;h=g;while(1){j=i^b;if((j&-2139062144^-2139062144)&j+-16843009){k=h;break b}j=h+4|0;i=c[j>>2]|0;if((i&-2139062144^-2139062144)&i+-16843009){k=j;break}else h=j}}else k=g;while(0);g=d&255;d=k;while(1){k=a[d>>0]|0;if(k<<24>>24==0?1:k<<24>>24==g<<24>>24){f=d;break}else d=d+1|0}return f|0}function Db(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;f=i;i=i+1056|0;g=f+1024|0;h=f;j=a[e>>0]|0;if(!(j<<24>>24)){k=b;i=f;return k|0}l=Bb(b,j<<24>>24)|0;if(!l){k=0;i=f;return k|0}b=a[e+1>>0]|0;if(!(b<<24>>24)){k=l;i=f;return k|0}m=l+1|0;n=a[m>>0]|0;if(!(n<<24>>24)){k=0;i=f;return k|0}o=a[e+2>>0]|0;if(!(o<<24>>24)){p=b&255|(j&255)<<8;q=m;m=n;r=l;s=d[l>>0]<<8|n&255;while(1){t=s&65535;if((t|0)==(p|0)){u=r;v=m;break}w=q+1|0;x=a[w>>0]|0;if(!(x<<24>>24)){u=q;v=0;break}else{y=q;q=w;m=x;s=x&255|t<<8;r=y}}k=v<<24>>24!=0?u:0;i=f;return k|0}u=l+2|0;v=a[u>>0]|0;if(!(v<<24>>24)){k=0;i=f;return k|0}r=a[e+3>>0]|0;if(!(r<<24>>24)){s=(b&255)<<16|(j&255)<<24|(o&255)<<8;m=(v&255)<<8|(n&255)<<16|d[l>>0]<<24;if((m|0)==(s|0)){z=u;A=v}else{q=u;u=m;while(1){m=q+1|0;p=a[m>>0]|0;u=(p&255|u)<<8;if(p<<24>>24==0|(u|0)==(s|0)){z=m;A=p;break}else q=m}}k=A<<24>>24!=0?z+-2|0:0;i=f;return k|0}z=l+3|0;A=a[z>>0]|0;if(!(A<<24>>24)){k=0;i=f;return k|0}if(!(a[e+4>>0]|0)){q=(b&255)<<16|(j&255)<<24|(o&255)<<8|r&255;r=(v&255)<<8|(n&255)<<16|A&255|d[l>>0]<<24;if((r|0)==(q|0)){B=z;C=A}else{A=z;z=r;while(1){r=A+1|0;n=a[r>>0]|0;z=n&255|z<<8;if(n<<24>>24==0|(z|0)==(q|0)){B=r;C=n;break}else A=r}}k=C<<24>>24!=0?B+-3|0:0;i=f;return k|0};c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+28>>2]=0;B=j;j=0;while(1){if(!(a[l+j>>0]|0)){D=0;break}C=g+(((B&255)>>>5&255)<<2)|0;c[C>>2]=c[C>>2]|1<<(B&31);C=j+1|0;c[h+((B&255)<<2)>>2]=C;B=a[e+C>>0]|0;if(!(B<<24>>24)){E=C;F=j;G=23;break}else j=C}a:do if((G|0)==23){b:do if(E>>>0>1){j=1;B=-1;C=0;c:while(1){A=j;q=C;z=1;while(1){r=A;n=q;d:while(1){v=r;o=1;while(1){b=a[e+(o+B)>>0]|0;s=a[e+v>>0]|0;if(b<<24>>24!=s<<24>>24){H=v;I=b;J=s;K=n;break d}if((o|0)==(z|0))break;o=o+1|0;v=o+n|0;if(v>>>0>=E>>>0){L=B;M=z;break c}}n=n+z|0;r=n+1|0;if(r>>>0>=E>>>0){L=B;M=z;break c}}r=H-B|0;if((I&255)<=(J&255)){N=K;break}n=H+1|0;if(n>>>0>>0){A=n;q=H;z=r}else{L=B;M=r;break c}}j=N+2|0;if(j>>>0>=E>>>0){L=N;M=1;break}else{B=N;C=N+1|0}}C=1;B=-1;j=0;while(1){z=C;q=j;A=1;while(1){r=z;n=q;e:while(1){v=r;o=1;while(1){s=a[e+(o+B)>>0]|0;b=a[e+v>>0]|0;if(s<<24>>24!=b<<24>>24){O=v;P=s;Q=b;R=n;break e}if((o|0)==(A|0))break;o=o+1|0;v=o+n|0;if(v>>>0>=E>>>0){S=L;T=B;U=M;V=A;break b}}n=n+A|0;r=n+1|0;if(r>>>0>=E>>>0){S=L;T=B;U=M;V=A;break b}}r=O-B|0;if((P&255)>=(Q&255)){W=R;break}n=O+1|0;if(n>>>0>>0){z=n;q=O;A=r}else{S=L;T=B;U=M;V=r;break b}}C=W+2|0;if(C>>>0>=E>>>0){S=L;T=W;U=M;V=1;break}else{B=W;j=W+1|0}}}else{S=-1;T=-1;U=1;V=1}while(0);j=(T+1|0)>>>0>(S+1|0)>>>0;B=j?V:U;C=j?T:S;j=C+1|0;if(!(Ib(e,e+B|0,j)|0)){A=E-B|0;q=E|63;if((E|0)==(B|0)){X=q;Y=E}else{z=l;r=0;n=l;f:while(1){v=z;do if((n-v|0)>>>0>>0){o=Hb(n,0,q)|0;if(o)if((o-v|0)>>>0>>0){D=0;break a}else{Z=o;break}else{Z=n+q|0;break}}else Z=n;while(0);v=a[z+F>>0]|0;if(!(1<<(v&31)&c[g+(((v&255)>>>5&255)<<2)>>2])){z=z+E|0;r=0;n=Z;continue}o=c[h+((v&255)<<2)>>2]|0;v=E-o|0;if((E|0)!=(o|0)){z=z+((r|0)!=0&v>>>0>>0?A:v)|0;r=0;n=Z;continue}v=j>>>0>r>>>0?j:r;o=a[e+v>>0]|0;g:do if(!(o<<24>>24))_=j;else{b=o;s=v;while(1){if(b<<24>>24!=(a[z+s>>0]|0)){$=s;break}s=s+1|0;b=a[e+s>>0]|0;if(!(b<<24>>24)){_=j;break g}}z=z+($-C)|0;r=0;n=Z;continue f}while(0);do{if(_>>>0<=r>>>0){D=z;break a}_=_+-1|0}while((a[e+_>>0]|0)==(a[z+_>>0]|0));z=z+B|0;r=A;n=Z}}}else{n=E-C+-1|0;X=E|63;Y=(C>>>0>n>>>0?C:n)+1|0}n=e+j|0;A=l;r=l;h:while(1){B=A;do if((r-B|0)>>>0>>0){z=Hb(r,0,X)|0;if(z)if((z-B|0)>>>0>>0){D=0;break a}else{aa=z;break}else{aa=r+X|0;break}}else aa=r;while(0);B=a[A+F>>0]|0;if(!(1<<(B&31)&c[g+(((B&255)>>>5&255)<<2)>>2])){A=A+E|0;r=aa;continue}z=c[h+((B&255)<<2)>>2]|0;if((E|0)!=(z|0)){A=A+(E-z)|0;r=aa;continue}z=a[n>>0]|0;i:do if(!(z<<24>>24))ba=j;else{B=z;q=j;while(1){if(B<<24>>24!=(a[A+q>>0]|0)){ca=q;break}q=q+1|0;B=a[e+q>>0]|0;if(!(B<<24>>24)){ba=j;break i}}A=A+(ca-C)|0;r=aa;continue h}while(0);do{if(!ba){D=A;break a}ba=ba+-1|0}while((a[e+ba>>0]|0)==(a[A+ba>>0]|0));A=A+Y|0;r=aa}}while(0);k=D;i=f;return k|0}function Eb(a){a=+a;var b=0,d=0,e=0,f=0,j=0.0,l=0.0,m=0.0,n=0.0;b=i;i=i+16|0;d=b;h[k>>3]=a;e=c[k+4>>2]|0;f=e&2147483647;do if(f>>>0>1083174911){if(((e|0)>-1|(e|0)==-1&(c[k>>2]|0)>>>0>4294967295)&f>>>0>1083179007){j=a*89884656743115795.0e291;i=b;return +j}if(f>>>0>2146435071){j=-1.0/a;i=b;return +j}if((e|0)<0)if(!(a<=-1075.0)){if(!(a+-4503599627370496.0+4503599627370496.0!=a))break;g[d>>2]=-1.401298464324817e-045/a;break}else{g[d>>2]=-1.401298464324817e-045/a;j=0.0;i=b;return +j}}else if(f>>>0<1016070144){j=a+1.0;i=b;return +j}while(0);l=a+26388279066624.0;h[k>>3]=l;f=(c[k>>2]|0)+128|0;d=f<<1&510;m=+h[16480+(d<<3)>>3];n=a-(l+-26388279066624.0)-+h[16480+((d|1)<<3)>>3];j=+Gb(m+m*n*(n*(n*(n*(n*1.3333559164630223e-003+.009618129842126066)+.0555041086648214)+.2402265069591)+.6931471805599453),(f&-256|0)/256|0);i=b;return +j}function Fb(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;h[k>>3]=a;b=c[k>>2]|0;d=c[k+4>>2]|0;e=(d|0)<0;do if(!(e|d>>>0<1048576)){if(d>>>0>2146435071){f=a;return +f}if((b|0)==0&0==0&(d|0)==1072693248){f=0.0;return +f}else{g=b;i=d;j=d;l=-1023}}else{if((b|0)==0&(d&2147483647|0)==0){f=-1.0/(a*a);return +f}if(!e){h[k>>3]=a*18014398509481984.0;m=c[k+4>>2]|0;g=c[k>>2]|0;i=m;j=m;l=-1077;break}f=(a-a)/0.0;return +f}while(0);i=j+614242|0;c[k>>2]=g;c[k+4>>2]=(i&1048575)+1072079006;a=+h[k>>3]+-1.0;n=a*(a*.5);o=a/(a+2.0);p=o*o;q=p*p;h[k>>3]=a-n;g=c[k+4>>2]|0;c[k>>2]=0;c[k+4>>2]=g;r=+h[k>>3];s=o*(n+(q*(q*(q*.15313837699209373+.22222198432149784)+.3999999999940942)+p*(q*(q*(q*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))+(a-r-n);n=r*.4342944818781689;a=+(l+(i>>>20)|0);q=a*.30102999566361177;p=q+n;f=p+(n+(q-p)+(s*.4342944818781689+(a*3.694239077158931e-013+(r+s)*2.5082946711645275e-011)));return +f}function Gb(a,b){a=+a;b=b|0;var d=0.0,e=0,f=0,g=0,i=0.0;if((b|0)>1023){d=a*89884656743115795.0e291;e=b+-1023|0;if((e|0)>1023){f=b+-2046|0;g=(f|0)>1023?1023:f;i=d*89884656743115795.0e291}else{g=e;i=d}}else if((b|0)<-1022){d=a*2.2250738585072014e-308;e=b+1022|0;if((e|0)<-1022){f=b+2044|0;g=(f|0)<-1022?-1022:f;i=d*2.2250738585072014e-308}else{g=e;i=d}}else{g=b;i=a}b=Ob(g+1023|0,0,52)|0;g=B;c[k>>2]=b;c[k+4>>2]=g;return +(i*+h[k>>3])}function Hb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=d&255;g=(e|0)!=0;a:do if(g&(b&3|0)!=0){h=d&255;i=e;j=b;while(1){if((a[j>>0]|0)==h<<24>>24){k=i;l=j;m=6;break a}n=j+1|0;o=i+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){i=o;j=n}else{q=o;r=p;s=n;m=5;break}}}else{q=e;r=g;s=b;m=5}while(0);if((m|0)==5)if(r){k=q;l=s;m=6}else{t=0;u=s}b:do if((m|0)==6){s=d&255;if((a[l>>0]|0)==s<<24>>24){t=k;u=l}else{q=Z(f,16843009)|0;c:do if(k>>>0>3){r=k;b=l;while(1){g=c[b>>2]^q;if((g&-2139062144^-2139062144)&g+-16843009){v=r;w=b;break}g=b+4|0;e=r+-4|0;if(e>>>0>3){r=e;b=g}else{x=e;y=g;m=11;break c}}z=v;A=w}else{x=k;y=l;m=11}while(0);if((m|0)==11)if(!x){t=0;u=y;break}else{z=x;A=y}while(1){if((a[A>>0]|0)==s<<24>>24){t=z;u=A;break b}q=A+1|0;z=z+-1|0;if(!z){t=0;u=q;break}else A=q}}}while(0);return ((t|0)!=0?u:0)|0}function Ib(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!d){e=0;return e|0}else{f=d;g=b;h=c}while(1){c=a[g>>0]|0;b=a[h>>0]|0;if(c<<24>>24!=b<<24>>24){i=c;j=b;break}f=f+-1|0;if(!f){e=0;k=5;break}else{g=g+1|0;h=h+1|0}}if((k|0)==5)return e|0;e=(i&255)-(j&255)|0;return e|0}function Jb(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24){f=d;g=e}else{e=b;b=c;do{e=e+1|0;b=b+1|0;c=a[e>>0]|0;d=a[b>>0]|0}while(!(c<<24>>24==0?1:c<<24>>24!=d<<24>>24));f=c;g=d}return (f&255)-(g&255)|0}function Kb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ua=0,va=0,wa=0,ya=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0;do if(a>>>0<245){b=a>>>0<11?16:a+11&-8;d=b>>>3;e=c[5144]|0;f=e>>>d;if(f&3){g=(f&1^1)+d|0;h=g<<1;i=20616+(h<<2)|0;j=20616+(h+2<<2)|0;h=c[j>>2]|0;k=h+8|0;l=c[k>>2]|0;do if((i|0)!=(l|0)){if(l>>>0<(c[5148]|0)>>>0)xa();m=l+12|0;if((c[m>>2]|0)==(h|0)){c[m>>2]=i;c[j>>2]=l;break}else xa()}else c[5144]=e&~(1<>2]=l|3;j=h+(l|4)|0;c[j>>2]=c[j>>2]|1;n=k;return n|0}j=c[5146]|0;if(b>>>0>j>>>0){if(f){l=2<>>12&16;m=l>>>i;l=m>>>5&8;o=m>>>l;m=o>>>2&4;p=o>>>m;o=p>>>1&2;q=p>>>o;p=q>>>1&1;r=(l|i|m|o|p)+(q>>>p)|0;p=r<<1;q=20616+(p<<2)|0;o=20616+(p+2<<2)|0;p=c[o>>2]|0;m=p+8|0;i=c[m>>2]|0;do if((q|0)!=(i|0)){if(i>>>0<(c[5148]|0)>>>0)xa();l=i+12|0;if((c[l>>2]|0)==(p|0)){c[l>>2]=q;c[o>>2]=i;s=c[5146]|0;break}else xa()}else{c[5144]=e&~(1<>2]=b|3;i=p+b|0;c[p+(b|4)>>2]=e|1;c[p+j>>2]=e;if(s){j=c[5149]|0;o=s>>>3;q=o<<1;d=20616+(q<<2)|0;f=c[5144]|0;k=1<>2]|0;if(h>>>0<(c[5148]|0)>>>0)xa();else{t=o;u=h}}else{c[5144]=f|k;t=20616+(q+2<<2)|0;u=d}c[t>>2]=j;c[u+12>>2]=j;c[j+8>>2]=u;c[j+12>>2]=d}c[5146]=e;c[5149]=i;n=m;return n|0}i=c[5145]|0;if(i){e=(i&0-i)+-1|0;i=e>>>12&16;d=e>>>i;e=d>>>5&8;j=d>>>e;d=j>>>2&4;q=j>>>d;j=q>>>1&2;k=q>>>j;q=k>>>1&1;f=c[20880+((e|i|d|j|q)+(k>>>q)<<2)>>2]|0;q=(c[f+4>>2]&-8)-b|0;k=f;j=f;while(1){f=c[k+16>>2]|0;if(!f){d=c[k+20>>2]|0;if(!d){v=q;w=j;break}else x=d}else x=f;f=(c[x+4>>2]&-8)-b|0;d=f>>>0>>0;q=d?f:q;k=x;j=d?x:j}j=c[5148]|0;if(w>>>0>>0)xa();k=w+b|0;if(w>>>0>=k>>>0)xa();q=c[w+24>>2]|0;m=c[w+12>>2]|0;do if((m|0)==(w|0)){p=w+20|0;r=c[p>>2]|0;if(!r){d=w+16|0;f=c[d>>2]|0;if(!f){y=0;break}else{z=f;A=d}}else{z=r;A=p}while(1){p=z+20|0;r=c[p>>2]|0;if(r){z=r;A=p;continue}p=z+16|0;r=c[p>>2]|0;if(!r){B=z;C=A;break}else{z=r;A=p}}if(C>>>0>>0)xa();else{c[C>>2]=0;y=B;break}}else{p=c[w+8>>2]|0;if(p>>>0>>0)xa();r=p+12|0;if((c[r>>2]|0)!=(w|0))xa();d=m+8|0;if((c[d>>2]|0)==(w|0)){c[r>>2]=m;c[d>>2]=p;y=m;break}else xa()}while(0);do if(q){m=c[w+28>>2]|0;j=20880+(m<<2)|0;if((w|0)==(c[j>>2]|0)){c[j>>2]=y;if(!y){c[5145]=c[5145]&~(1<>>0<(c[5148]|0)>>>0)xa();m=q+16|0;if((c[m>>2]|0)==(w|0))c[m>>2]=y;else c[q+20>>2]=y;if(!y)break}m=c[5148]|0;if(y>>>0>>0)xa();c[y+24>>2]=q;j=c[w+16>>2]|0;do if(j)if(j>>>0>>0)xa();else{c[y+16>>2]=j;c[j+24>>2]=y;break}while(0);j=c[w+20>>2]|0;if(j)if(j>>>0<(c[5148]|0)>>>0)xa();else{c[y+20>>2]=j;c[j+24>>2]=y;break}}while(0);if(v>>>0<16){q=v+b|0;c[w+4>>2]=q|3;j=w+(q+4)|0;c[j>>2]=c[j>>2]|1}else{c[w+4>>2]=b|3;c[w+(b|4)>>2]=v|1;c[w+(v+b)>>2]=v;j=c[5146]|0;if(j){q=c[5149]|0;m=j>>>3;j=m<<1;p=20616+(j<<2)|0;d=c[5144]|0;r=1<>2]|0;if(f>>>0<(c[5148]|0)>>>0)xa();else{D=m;E=f}}else{c[5144]=d|r;D=20616+(j+2<<2)|0;E=p}c[D>>2]=q;c[E+12>>2]=q;c[q+8>>2]=E;c[q+12>>2]=p}c[5146]=v;c[5149]=k}n=w+8|0;return n|0}else F=b}else F=b}else if(a>>>0<=4294967231){p=a+11|0;q=p&-8;j=c[5145]|0;if(j){r=0-q|0;d=p>>>8;if(d)if(q>>>0>16777215)G=31;else{p=(d+1048320|0)>>>16&8;f=d<>>16&4;m=f<>>16&2;i=14-(d|p|f)+(m<>>15)|0;G=q>>>(i+7|0)&1|i<<1}else G=0;i=c[20880+(G<<2)>>2]|0;a:do if(!i){H=r;I=0;J=0;K=86}else{f=r;m=0;p=q<<((G|0)==31?0:25-(G>>>1)|0);d=i;e=0;while(1){h=c[d+4>>2]&-8;o=h-q|0;if(o>>>0>>0)if((h|0)==(q|0)){L=o;M=d;N=d;K=90;break a}else{O=o;P=d}else{O=f;P=e}o=c[d+20>>2]|0;d=c[d+16+(p>>>31<<2)>>2]|0;h=(o|0)==0|(o|0)==(d|0)?m:o;if(!d){H=O;I=h;J=P;K=86;break}else{f=O;m=h;p=p<<1;e=P}}}while(0);if((K|0)==86){if((I|0)==0&(J|0)==0){i=2<>>12&16;b=i>>>r;i=b>>>5&8;k=b>>>i;b=k>>>2&4;e=k>>>b;k=e>>>1&2;p=e>>>k;e=p>>>1&1;Q=c[20880+((i|r|b|k|e)+(p>>>e)<<2)>>2]|0;R=0}else{Q=I;R=J}if(!Q){S=H;T=R}else{L=H;M=Q;N=R;K=90}}if((K|0)==90)while(1){K=0;e=(c[M+4>>2]&-8)-q|0;p=e>>>0>>0;k=p?e:L;e=p?M:N;p=c[M+16>>2]|0;if(p){L=k;M=p;N=e;K=90;continue}M=c[M+20>>2]|0;if(!M){S=k;T=e;break}else{L=k;N=e;K=90}}if((T|0)!=0?S>>>0<((c[5146]|0)-q|0)>>>0:0){j=c[5148]|0;if(T>>>0>>0)xa();e=T+q|0;if(T>>>0>=e>>>0)xa();k=c[T+24>>2]|0;p=c[T+12>>2]|0;do if((p|0)==(T|0)){b=T+20|0;r=c[b>>2]|0;if(!r){i=T+16|0;m=c[i>>2]|0;if(!m){U=0;break}else{V=m;W=i}}else{V=r;W=b}while(1){b=V+20|0;r=c[b>>2]|0;if(r){V=r;W=b;continue}b=V+16|0;r=c[b>>2]|0;if(!r){X=V;Y=W;break}else{V=r;W=b}}if(Y>>>0>>0)xa();else{c[Y>>2]=0;U=X;break}}else{b=c[T+8>>2]|0;if(b>>>0>>0)xa();r=b+12|0;if((c[r>>2]|0)!=(T|0))xa();i=p+8|0;if((c[i>>2]|0)==(T|0)){c[r>>2]=p;c[i>>2]=b;U=p;break}else xa()}while(0);do if(k){p=c[T+28>>2]|0;j=20880+(p<<2)|0;if((T|0)==(c[j>>2]|0)){c[j>>2]=U;if(!U){c[5145]=c[5145]&~(1<>>0<(c[5148]|0)>>>0)xa();p=k+16|0;if((c[p>>2]|0)==(T|0))c[p>>2]=U;else c[k+20>>2]=U;if(!U)break}p=c[5148]|0;if(U>>>0

>>0)xa();c[U+24>>2]=k;j=c[T+16>>2]|0;do if(j)if(j>>>0

>>0)xa();else{c[U+16>>2]=j;c[j+24>>2]=U;break}while(0);j=c[T+20>>2]|0;if(j)if(j>>>0<(c[5148]|0)>>>0)xa();else{c[U+20>>2]=j;c[j+24>>2]=U;break}}while(0);b:do if(S>>>0>=16){c[T+4>>2]=q|3;c[T+(q|4)>>2]=S|1;c[T+(S+q)>>2]=S;k=S>>>3;if(S>>>0<256){j=k<<1;p=20616+(j<<2)|0;b=c[5144]|0;i=1<>2]|0;if(r>>>0<(c[5148]|0)>>>0)xa();else{Z=k;_=r}}else{c[5144]=b|i;Z=20616+(j+2<<2)|0;_=p}c[Z>>2]=e;c[_+12>>2]=e;c[T+(q+8)>>2]=_;c[T+(q+12)>>2]=p;break}p=S>>>8;if(p)if(S>>>0>16777215)$=31;else{j=(p+1048320|0)>>>16&8;i=p<>>16&4;b=i<>>16&2;r=14-(p|j|i)+(b<>>15)|0;$=S>>>(r+7|0)&1|r<<1}else $=0;r=20880+($<<2)|0;c[T+(q+28)>>2]=$;c[T+(q+20)>>2]=0;c[T+(q+16)>>2]=0;i=c[5145]|0;b=1<<$;if(!(i&b)){c[5145]=i|b;c[r>>2]=e;c[T+(q+24)>>2]=r;c[T+(q+12)>>2]=e;c[T+(q+8)>>2]=e;break}b=c[r>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(S|0)){r=S<<(($|0)==31?0:25-($>>>1)|0);i=b;while(1){j=i+16+(r>>>31<<2)|0;p=c[j>>2]|0;if(!p){aa=j;ba=i;break}if((c[p+4>>2]&-8|0)==(S|0)){ca=p;break c}else{r=r<<1;i=p}}if(aa>>>0<(c[5148]|0)>>>0)xa();else{c[aa>>2]=e;c[T+(q+24)>>2]=ba;c[T+(q+12)>>2]=e;c[T+(q+8)>>2]=e;break b}}else ca=b;while(0);b=ca+8|0;i=c[b>>2]|0;r=c[5148]|0;if(i>>>0>=r>>>0&ca>>>0>=r>>>0){c[i+12>>2]=e;c[b>>2]=e;c[T+(q+8)>>2]=i;c[T+(q+12)>>2]=ca;c[T+(q+24)>>2]=0;break}else xa()}else{i=S+q|0;c[T+4>>2]=i|3;b=T+(i+4)|0;c[b>>2]=c[b>>2]|1}while(0);n=T+8|0;return n|0}else F=q}else F=q}else F=-1;while(0);T=c[5146]|0;if(T>>>0>=F>>>0){S=T-F|0;ca=c[5149]|0;if(S>>>0>15){c[5149]=ca+F;c[5146]=S;c[ca+(F+4)>>2]=S|1;c[ca+T>>2]=S;c[ca+4>>2]=F|3}else{c[5146]=0;c[5149]=0;c[ca+4>>2]=T|3;S=ca+(T+4)|0;c[S>>2]=c[S>>2]|1}n=ca+8|0;return n|0}ca=c[5147]|0;if(ca>>>0>F>>>0){S=ca-F|0;c[5147]=S;ca=c[5150]|0;c[5150]=ca+F;c[ca+(F+4)>>2]=S|1;c[ca+4>>2]=F|3;n=ca+8|0;return n|0}do if(!(c[5262]|0)){ca=ma(30)|0;if(!(ca+-1&ca)){c[5264]=ca;c[5263]=ca;c[5265]=-1;c[5266]=-1;c[5267]=0;c[5255]=0;c[5262]=(za(0)|0)&-16^1431655768;break}else xa()}while(0);ca=F+48|0;S=c[5264]|0;T=F+47|0;ba=S+T|0;aa=0-S|0;S=ba&aa;if(S>>>0<=F>>>0){n=0;return n|0}$=c[5254]|0;if(($|0)!=0?(_=c[5252]|0,Z=_+S|0,Z>>>0<=_>>>0|Z>>>0>$>>>0):0){n=0;return n|0}d:do if(!(c[5255]&4)){$=c[5150]|0;e:do if($){Z=21024;while(1){_=c[Z>>2]|0;if(_>>>0<=$>>>0?(U=Z+4|0,(_+(c[U>>2]|0)|0)>>>0>$>>>0):0){da=Z;ea=U;break}Z=c[Z+8>>2]|0;if(!Z){K=174;break e}}Z=ba-(c[5147]|0)&aa;if(Z>>>0<2147483647){U=ja(Z|0)|0;_=(U|0)==((c[da>>2]|0)+(c[ea>>2]|0)|0);X=_?Z:0;if(_)if((U|0)==(-1|0))fa=X;else{ga=U;ha=X;K=194;break d}else{ia=U;ka=Z;la=X;K=184}}else fa=0}else K=174;while(0);do if((K|0)==174){$=ja(0)|0;if(($|0)!=(-1|0)){q=$;X=c[5263]|0;Z=X+-1|0;if(!(Z&q))na=S;else na=S-q+(Z+q&0-X)|0;X=c[5252]|0;q=X+na|0;if(na>>>0>F>>>0&na>>>0<2147483647){Z=c[5254]|0;if((Z|0)!=0?q>>>0<=X>>>0|q>>>0>Z>>>0:0){fa=0;break}Z=ja(na|0)|0;q=(Z|0)==($|0);X=q?na:0;if(q){ga=$;ha=X;K=194;break d}else{ia=Z;ka=na;la=X;K=184}}else fa=0}else fa=0}while(0);f:do if((K|0)==184){X=0-ka|0;do if(ca>>>0>ka>>>0&(ka>>>0<2147483647&(ia|0)!=(-1|0))?(Z=c[5264]|0,$=T-ka+Z&0-Z,$>>>0<2147483647):0)if((ja($|0)|0)==(-1|0)){ja(X|0)|0;fa=la;break f}else{oa=$+ka|0;break}else oa=ka;while(0);if((ia|0)==(-1|0))fa=la;else{ga=ia;ha=oa;K=194;break d}}while(0);c[5255]=c[5255]|4;pa=fa;K=191}else{pa=0;K=191}while(0);if((((K|0)==191?S>>>0<2147483647:0)?(fa=ja(S|0)|0,S=ja(0)|0,fa>>>0>>0&((fa|0)!=(-1|0)&(S|0)!=(-1|0))):0)?(oa=S-fa|0,S=oa>>>0>(F+40|0)>>>0,S):0){ga=fa;ha=S?oa:pa;K=194}if((K|0)==194){pa=(c[5252]|0)+ha|0;c[5252]=pa;if(pa>>>0>(c[5253]|0)>>>0)c[5253]=pa;pa=c[5150]|0;g:do if(pa){oa=21024;do{S=c[oa>>2]|0;fa=oa+4|0;ia=c[fa>>2]|0;if((ga|0)==(S+ia|0)){qa=S;ra=fa;sa=ia;ua=oa;K=204;break}oa=c[oa+8>>2]|0}while((oa|0)!=0);if(((K|0)==204?(c[ua+12>>2]&8|0)==0:0)?pa>>>0>>0&pa>>>0>=qa>>>0:0){c[ra>>2]=sa+ha;oa=(c[5147]|0)+ha|0;ia=pa+8|0;fa=(ia&7|0)==0?0:0-ia&7;ia=oa-fa|0;c[5150]=pa+fa;c[5147]=ia;c[pa+(fa+4)>>2]=ia|1;c[pa+(oa+4)>>2]=40;c[5151]=c[5266];break}oa=c[5148]|0;if(ga>>>0>>0){c[5148]=ga;va=ga}else va=oa;oa=ga+ha|0;ia=21024;while(1){if((c[ia>>2]|0)==(oa|0)){wa=ia;ya=ia;K=212;break}ia=c[ia+8>>2]|0;if(!ia){Aa=21024;break}}if((K|0)==212)if(!(c[ya+12>>2]&8)){c[wa>>2]=ga;ia=ya+4|0;c[ia>>2]=(c[ia>>2]|0)+ha;ia=ga+8|0;oa=(ia&7|0)==0?0:0-ia&7;ia=ga+(ha+8)|0;fa=(ia&7|0)==0?0:0-ia&7;ia=ga+(fa+ha)|0;S=oa+F|0;la=ga+S|0;ka=ia-(ga+oa)-F|0;c[ga+(oa+4)>>2]=F|3;h:do if((ia|0)!=(pa|0)){if((ia|0)==(c[5149]|0)){T=(c[5146]|0)+ka|0;c[5146]=T;c[5149]=la;c[ga+(S+4)>>2]=T|1;c[ga+(T+S)>>2]=T;break}T=ha+4|0;ca=c[ga+(T+fa)>>2]|0;if((ca&3|0)==1){na=ca&-8;ea=ca>>>3;i:do if(ca>>>0>=256){da=c[ga+((fa|24)+ha)>>2]|0;aa=c[ga+(ha+12+fa)>>2]|0;do if((aa|0)==(ia|0)){ba=fa|16;X=ga+(T+ba)|0;$=c[X>>2]|0;if(!$){Z=ga+(ba+ha)|0;ba=c[Z>>2]|0;if(!ba){Ba=0;break}else{Ca=ba;Da=Z}}else{Ca=$;Da=X}while(1){X=Ca+20|0;$=c[X>>2]|0;if($){Ca=$;Da=X;continue}X=Ca+16|0;$=c[X>>2]|0;if(!$){Ea=Ca;Fa=Da;break}else{Ca=$;Da=X}}if(Fa>>>0>>0)xa();else{c[Fa>>2]=0;Ba=Ea;break}}else{X=c[ga+((fa|8)+ha)>>2]|0;if(X>>>0>>0)xa();$=X+12|0;if((c[$>>2]|0)!=(ia|0))xa();Z=aa+8|0;if((c[Z>>2]|0)==(ia|0)){c[$>>2]=aa;c[Z>>2]=X;Ba=aa;break}else xa()}while(0);if(!da)break;aa=c[ga+(ha+28+fa)>>2]|0;X=20880+(aa<<2)|0;do if((ia|0)!=(c[X>>2]|0)){if(da>>>0<(c[5148]|0)>>>0)xa();Z=da+16|0;if((c[Z>>2]|0)==(ia|0))c[Z>>2]=Ba;else c[da+20>>2]=Ba;if(!Ba)break i}else{c[X>>2]=Ba;if(Ba)break;c[5145]=c[5145]&~(1<>>0>>0)xa();c[Ba+24>>2]=da;X=fa|16;Z=c[ga+(X+ha)>>2]|0;do if(Z)if(Z>>>0>>0)xa();else{c[Ba+16>>2]=Z;c[Z+24>>2]=Ba;break}while(0);Z=c[ga+(T+X)>>2]|0;if(!Z)break;if(Z>>>0<(c[5148]|0)>>>0)xa();else{c[Ba+20>>2]=Z;c[Z+24>>2]=Ba;break}}else{Z=c[ga+((fa|8)+ha)>>2]|0;aa=c[ga+(ha+12+fa)>>2]|0;da=20616+(ea<<1<<2)|0;do if((Z|0)!=(da|0)){if(Z>>>0>>0)xa();if((c[Z+12>>2]|0)==(ia|0))break;xa()}while(0);if((aa|0)==(Z|0)){c[5144]=c[5144]&~(1<>>0>>0)xa();X=aa+8|0;if((c[X>>2]|0)==(ia|0)){Ga=X;break}xa()}while(0);c[Z+12>>2]=aa;c[Ga>>2]=Z}while(0);Ha=ga+((na|fa)+ha)|0;Ia=na+ka|0}else{Ha=ia;Ia=ka}ea=Ha+4|0;c[ea>>2]=c[ea>>2]&-2;c[ga+(S+4)>>2]=Ia|1;c[ga+(Ia+S)>>2]=Ia;ea=Ia>>>3;if(Ia>>>0<256){T=ea<<1;ca=20616+(T<<2)|0;da=c[5144]|0;X=1<>2]|0;if($>>>0>=(c[5148]|0)>>>0){Ja=ea;Ka=$;break}xa()}while(0);c[Ja>>2]=la;c[Ka+12>>2]=la;c[ga+(S+8)>>2]=Ka;c[ga+(S+12)>>2]=ca;break}T=Ia>>>8;do if(!T)La=0;else{if(Ia>>>0>16777215){La=31;break}X=(T+1048320|0)>>>16&8;da=T<>>16&4;$=da<>>16&2;ea=14-(na|X|da)+($<>>15)|0;La=Ia>>>(ea+7|0)&1|ea<<1}while(0);T=20880+(La<<2)|0;c[ga+(S+28)>>2]=La;c[ga+(S+20)>>2]=0;c[ga+(S+16)>>2]=0;ca=c[5145]|0;ea=1<>2]=la;c[ga+(S+24)>>2]=T;c[ga+(S+12)>>2]=la;c[ga+(S+8)>>2]=la;break}ea=c[T>>2]|0;j:do if((c[ea+4>>2]&-8|0)!=(Ia|0)){T=Ia<<((La|0)==31?0:25-(La>>>1)|0);ca=ea;while(1){da=ca+16+(T>>>31<<2)|0;$=c[da>>2]|0;if(!$){Ma=da;Na=ca;break}if((c[$+4>>2]&-8|0)==(Ia|0)){Oa=$;break j}else{T=T<<1;ca=$}}if(Ma>>>0<(c[5148]|0)>>>0)xa();else{c[Ma>>2]=la;c[ga+(S+24)>>2]=Na;c[ga+(S+12)>>2]=la;c[ga+(S+8)>>2]=la;break h}}else Oa=ea;while(0);ea=Oa+8|0;ca=c[ea>>2]|0;T=c[5148]|0;if(ca>>>0>=T>>>0&Oa>>>0>=T>>>0){c[ca+12>>2]=la;c[ea>>2]=la;c[ga+(S+8)>>2]=ca;c[ga+(S+12)>>2]=Oa;c[ga+(S+24)>>2]=0;break}else xa()}else{ca=(c[5147]|0)+ka|0;c[5147]=ca;c[5150]=la;c[ga+(S+4)>>2]=ca|1}while(0);n=ga+(oa|8)|0;return n|0}else Aa=21024;while(1){S=c[Aa>>2]|0;if(S>>>0<=pa>>>0?(la=c[Aa+4>>2]|0,ka=S+la|0,ka>>>0>pa>>>0):0){Pa=S;Qa=la;Ra=ka;break}Aa=c[Aa+8>>2]|0}oa=Pa+(Qa+-39)|0;ka=Pa+(Qa+-47+((oa&7|0)==0?0:0-oa&7))|0;oa=pa+16|0;la=ka>>>0>>0?pa:ka;ka=la+8|0;S=ga+8|0;ia=(S&7|0)==0?0:0-S&7;S=ha+-40-ia|0;c[5150]=ga+ia;c[5147]=S;c[ga+(ia+4)>>2]=S|1;c[ga+(ha+-36)>>2]=40;c[5151]=c[5266];S=la+4|0;c[S>>2]=27;c[ka>>2]=c[5256];c[ka+4>>2]=c[5257];c[ka+8>>2]=c[5258];c[ka+12>>2]=c[5259];c[5256]=ga;c[5257]=ha;c[5259]=0;c[5258]=ka;ka=la+28|0;c[ka>>2]=7;if((la+32|0)>>>0>>0){ia=ka;do{ka=ia;ia=ia+4|0;c[ia>>2]=7}while((ka+8|0)>>>0>>0)}if((la|0)!=(pa|0)){ia=la-pa|0;c[S>>2]=c[S>>2]&-2;c[pa+4>>2]=ia|1;c[la>>2]=ia;ka=ia>>>3;if(ia>>>0<256){fa=ka<<1;ca=20616+(fa<<2)|0;ea=c[5144]|0;T=1<>2]|0;if(Z>>>0<(c[5148]|0)>>>0)xa();else{Sa=ka;Ta=Z}}else{c[5144]=ea|T;Sa=20616+(fa+2<<2)|0;Ta=ca}c[Sa>>2]=pa;c[Ta+12>>2]=pa;c[pa+8>>2]=Ta;c[pa+12>>2]=ca;break}ca=ia>>>8;if(ca)if(ia>>>0>16777215)Ua=31;else{fa=(ca+1048320|0)>>>16&8;T=ca<>>16&4;ea=T<>>16&2;Z=14-(ca|fa|T)+(ea<>>15)|0;Ua=ia>>>(Z+7|0)&1|Z<<1}else Ua=0;Z=20880+(Ua<<2)|0;c[pa+28>>2]=Ua;c[pa+20>>2]=0;c[oa>>2]=0;T=c[5145]|0;ea=1<>2]=pa;c[pa+24>>2]=Z;c[pa+12>>2]=pa;c[pa+8>>2]=pa;break}ea=c[Z>>2]|0;k:do if((c[ea+4>>2]&-8|0)!=(ia|0)){Z=ia<<((Ua|0)==31?0:25-(Ua>>>1)|0);T=ea;while(1){fa=T+16+(Z>>>31<<2)|0;ca=c[fa>>2]|0;if(!ca){Va=fa;Wa=T;break}if((c[ca+4>>2]&-8|0)==(ia|0)){Xa=ca;break k}else{Z=Z<<1;T=ca}}if(Va>>>0<(c[5148]|0)>>>0)xa();else{c[Va>>2]=pa;c[pa+24>>2]=Wa;c[pa+12>>2]=pa;c[pa+8>>2]=pa;break g}}else Xa=ea;while(0);ea=Xa+8|0;ia=c[ea>>2]|0;oa=c[5148]|0;if(ia>>>0>=oa>>>0&Xa>>>0>=oa>>>0){c[ia+12>>2]=pa;c[ea>>2]=pa;c[pa+8>>2]=ia;c[pa+12>>2]=Xa;c[pa+24>>2]=0;break}else xa()}}else{ia=c[5148]|0;if((ia|0)==0|ga>>>0>>0)c[5148]=ga;c[5256]=ga;c[5257]=ha;c[5259]=0;c[5153]=c[5262];c[5152]=-1;ia=0;do{ea=ia<<1;oa=20616+(ea<<2)|0;c[20616+(ea+3<<2)>>2]=oa;c[20616+(ea+2<<2)>>2]=oa;ia=ia+1|0}while((ia|0)!=32);ia=ga+8|0;oa=(ia&7|0)==0?0:0-ia&7;ia=ha+-40-oa|0;c[5150]=ga+oa;c[5147]=ia;c[ga+(oa+4)>>2]=ia|1;c[ga+(ha+-36)>>2]=40;c[5151]=c[5266]}while(0);ha=c[5147]|0;if(ha>>>0>F>>>0){ga=ha-F|0;c[5147]=ga;ha=c[5150]|0;c[5150]=ha+F;c[ha+(F+4)>>2]=ga|1;c[ha+4>>2]=F|3;n=ha+8|0;return n|0}}c[(ta()|0)>>2]=12;n=0;return n|0}function Lb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;if(!a)return;b=a+-8|0;d=c[5148]|0;if(b>>>0>>0)xa();e=c[a+-4>>2]|0;f=e&3;if((f|0)==1)xa();g=e&-8;h=a+(g+-8)|0;do if(!(e&1)){i=c[b>>2]|0;if(!f)return;j=-8-i|0;k=a+j|0;l=i+g|0;if(k>>>0>>0)xa();if((k|0)==(c[5149]|0)){m=a+(g+-4)|0;n=c[m>>2]|0;if((n&3|0)!=3){o=k;p=l;break}c[5146]=l;c[m>>2]=n&-2;c[a+(j+4)>>2]=l|1;c[h>>2]=l;return}n=i>>>3;if(i>>>0<256){i=c[a+(j+8)>>2]|0;m=c[a+(j+12)>>2]|0;q=20616+(n<<1<<2)|0;if((i|0)!=(q|0)){if(i>>>0>>0)xa();if((c[i+12>>2]|0)!=(k|0))xa()}if((m|0)==(i|0)){c[5144]=c[5144]&~(1<>>0>>0)xa();q=m+8|0;if((c[q>>2]|0)==(k|0))r=q;else xa()}else r=m+8|0;c[i+12>>2]=m;c[r>>2]=i;o=k;p=l;break}i=c[a+(j+24)>>2]|0;m=c[a+(j+12)>>2]|0;do if((m|0)==(k|0)){q=a+(j+20)|0;n=c[q>>2]|0;if(!n){s=a+(j+16)|0;t=c[s>>2]|0;if(!t){u=0;break}else{v=t;w=s}}else{v=n;w=q}while(1){q=v+20|0;n=c[q>>2]|0;if(n){v=n;w=q;continue}q=v+16|0;n=c[q>>2]|0;if(!n){x=v;y=w;break}else{v=n;w=q}}if(y>>>0>>0)xa();else{c[y>>2]=0;u=x;break}}else{q=c[a+(j+8)>>2]|0;if(q>>>0>>0)xa();n=q+12|0;if((c[n>>2]|0)!=(k|0))xa();s=m+8|0;if((c[s>>2]|0)==(k|0)){c[n>>2]=m;c[s>>2]=q;u=m;break}else xa()}while(0);if(i){m=c[a+(j+28)>>2]|0;q=20880+(m<<2)|0;if((k|0)==(c[q>>2]|0)){c[q>>2]=u;if(!u){c[5145]=c[5145]&~(1<>>0<(c[5148]|0)>>>0)xa();m=i+16|0;if((c[m>>2]|0)==(k|0))c[m>>2]=u;else c[i+20>>2]=u;if(!u){o=k;p=l;break}}m=c[5148]|0;if(u>>>0>>0)xa();c[u+24>>2]=i;q=c[a+(j+16)>>2]|0;do if(q)if(q>>>0>>0)xa();else{c[u+16>>2]=q;c[q+24>>2]=u;break}while(0);q=c[a+(j+20)>>2]|0;if(q)if(q>>>0<(c[5148]|0)>>>0)xa();else{c[u+20>>2]=q;c[q+24>>2]=u;o=k;p=l;break}else{o=k;p=l}}else{o=k;p=l}}else{o=b;p=g}while(0);if(o>>>0>=h>>>0)xa();b=a+(g+-4)|0;u=c[b>>2]|0;if(!(u&1))xa();if(!(u&2)){if((h|0)==(c[5150]|0)){d=(c[5147]|0)+p|0;c[5147]=d;c[5150]=o;c[o+4>>2]=d|1;if((o|0)!=(c[5149]|0))return;c[5149]=0;c[5146]=0;return}if((h|0)==(c[5149]|0)){d=(c[5146]|0)+p|0;c[5146]=d;c[5149]=o;c[o+4>>2]=d|1;c[o+d>>2]=d;return}d=(u&-8)+p|0;x=u>>>3;do if(u>>>0>=256){y=c[a+(g+16)>>2]|0;w=c[a+(g|4)>>2]|0;do if((w|0)==(h|0)){v=a+(g+12)|0;r=c[v>>2]|0;if(!r){f=a+(g+8)|0;e=c[f>>2]|0;if(!e){z=0;break}else{A=e;B=f}}else{A=r;B=v}while(1){v=A+20|0;r=c[v>>2]|0;if(r){A=r;B=v;continue}v=A+16|0;r=c[v>>2]|0;if(!r){C=A;D=B;break}else{A=r;B=v}}if(D>>>0<(c[5148]|0)>>>0)xa();else{c[D>>2]=0;z=C;break}}else{v=c[a+g>>2]|0;if(v>>>0<(c[5148]|0)>>>0)xa();r=v+12|0;if((c[r>>2]|0)!=(h|0))xa();f=w+8|0;if((c[f>>2]|0)==(h|0)){c[r>>2]=w;c[f>>2]=v;z=w;break}else xa()}while(0);if(y){w=c[a+(g+20)>>2]|0;l=20880+(w<<2)|0;if((h|0)==(c[l>>2]|0)){c[l>>2]=z;if(!z){c[5145]=c[5145]&~(1<>>0<(c[5148]|0)>>>0)xa();w=y+16|0;if((c[w>>2]|0)==(h|0))c[w>>2]=z;else c[y+20>>2]=z;if(!z)break}w=c[5148]|0;if(z>>>0>>0)xa();c[z+24>>2]=y;l=c[a+(g+8)>>2]|0;do if(l)if(l>>>0>>0)xa();else{c[z+16>>2]=l;c[l+24>>2]=z;break}while(0);l=c[a+(g+12)>>2]|0;if(l)if(l>>>0<(c[5148]|0)>>>0)xa();else{c[z+20>>2]=l;c[l+24>>2]=z;break}}}else{l=c[a+g>>2]|0;w=c[a+(g|4)>>2]|0;y=20616+(x<<1<<2)|0;if((l|0)!=(y|0)){if(l>>>0<(c[5148]|0)>>>0)xa();if((c[l+12>>2]|0)!=(h|0))xa()}if((w|0)==(l|0)){c[5144]=c[5144]&~(1<>>0<(c[5148]|0)>>>0)xa();y=w+8|0;if((c[y>>2]|0)==(h|0))E=y;else xa()}else E=w+8|0;c[l+12>>2]=w;c[E>>2]=l}while(0);c[o+4>>2]=d|1;c[o+d>>2]=d;if((o|0)==(c[5149]|0)){c[5146]=d;return}else F=d}else{c[b>>2]=u&-2;c[o+4>>2]=p|1;c[o+p>>2]=p;F=p}p=F>>>3;if(F>>>0<256){u=p<<1;b=20616+(u<<2)|0;d=c[5144]|0;E=1<>2]|0;if(h>>>0<(c[5148]|0)>>>0)xa();else{G=p;H=h}}else{c[5144]=d|E;G=20616+(u+2<<2)|0;H=b}c[G>>2]=o;c[H+12>>2]=o;c[o+8>>2]=H;c[o+12>>2]=b;return}b=F>>>8;if(b)if(F>>>0>16777215)I=31;else{H=(b+1048320|0)>>>16&8;G=b<>>16&4;u=G<>>16&2;E=14-(b|H|G)+(u<>>15)|0;I=F>>>(E+7|0)&1|E<<1}else I=0;E=20880+(I<<2)|0;c[o+28>>2]=I;c[o+20>>2]=0;c[o+16>>2]=0;G=c[5145]|0;u=1<>2]|0;b:do if((c[H+4>>2]&-8|0)!=(F|0)){b=F<<((I|0)==31?0:25-(I>>>1)|0);d=H;while(1){h=d+16+(b>>>31<<2)|0;p=c[h>>2]|0;if(!p){J=h;K=d;break}if((c[p+4>>2]&-8|0)==(F|0)){L=p;break b}else{b=b<<1;d=p}}if(J>>>0<(c[5148]|0)>>>0)xa();else{c[J>>2]=o;c[o+24>>2]=K;c[o+12>>2]=o;c[o+8>>2]=o;break a}}else L=H;while(0);H=L+8|0;d=c[H>>2]|0;b=c[5148]|0;if(d>>>0>=b>>>0&L>>>0>=b>>>0){c[d+12>>2]=o;c[H>>2]=o;c[o+8>>2]=d;c[o+12>>2]=L;c[o+24>>2]=0;break}else xa()}else{c[5145]=G|u;c[E>>2]=o;c[o+24>>2]=E;c[o+12>>2]=o;c[o+8>>2]=o}while(0);o=(c[5152]|0)+-1|0;c[5152]=o;if(!o)M=21032;else return;while(1){o=c[M>>2]|0;if(!o)break;else M=o+8|0}c[5152]=-1;return}function Mb(){}function Nb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;g=b&3;h=d|d<<8|d<<16|d<<24;i=f&~3;if(g){g=b+4-g|0;while((b|0)<(g|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(i|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function Ob(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){B=b<>>32-c;return a<>0]|0)c=c+1|0;return c-b|0}function Qb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return ka(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function Rb(b,c){b=b|0;c=c|0;var d=0;do{a[b+d>>0]=a[c+d>>0];d=d+1|0}while(a[c+(d-1)>>0]|0);return b|0} + +// EMSCRIPTEN_END_FUNCS +return{_filtcoef:bb,_free:Lb,_wave_transform:yb,_wtoutputlength:xb,_memset:Nb,_malloc:Kb,_memcpy:Qb,_strlen:Pb,_inv_wave_transform:zb,_filtlength:ab,_strcpy:Rb,_bitshift64Shl:Ob,runPostSets:Mb,stackAlloc:Ga,stackSave:Ha,stackRestore:Ia,establishStackSpace:Ja,setThrew:Ka,setTempRet0:Na,getTempRet0:Oa}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _wtoutputlength=Module["_wtoutputlength"]=asm["_wtoutputlength"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _wave_transform=Module["_wave_transform"]=asm["_wave_transform"];var _filtcoef=Module["_filtcoef"]=asm["_filtcoef"];var _memset=Module["_memset"]=asm["_memset"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _strlen=Module["_strlen"]=asm["_strlen"];var _inv_wave_transform=Module["_inv_wave_transform"]=asm["_inv_wave_transform"];var _filtlength=Module["_filtlength"]=asm["_filtlength"];var _strcpy=Module["_strcpy"]=asm["_strcpy"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=null;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run() + + + + diff --git a/stylesheets/free.css b/stylesheets/free.css index 9add815..e0d24c1 100644 --- a/stylesheets/free.css +++ b/stylesheets/free.css @@ -104,8 +104,8 @@ footer { } .large-Modal .modal-dialog{ - width:400px; - height: 400px; + width:640px; + height: 480px; position: absolute; top:0; bottom: 0; left: 0; right: 0; margin: auto;