From f337b52be313e07daaa9ac7e78b176e1d7dd1304 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Tue, 20 Nov 2018 12:31:19 -0500 Subject: [PATCH] started integrating batariBASIC --- presets/vcs/bb/helloworld.bas | 24 + src/platform/vcs.ts | 8 +- src/worker/asmjs/bb2600basic.js | 37 + src/worker/fs/fs2600basic.data | 4214 +++++++++++++++++++++++++ src/worker/fs/fs2600basic.js | 200 ++ src/worker/fs/fs2600basic.js.metadata | 1 + src/worker/workermain.ts | 81 +- 7 files changed, 4558 insertions(+), 7 deletions(-) create mode 100644 presets/vcs/bb/helloworld.bas create mode 100644 src/worker/asmjs/bb2600basic.js create mode 100644 src/worker/fs/fs2600basic.data create mode 100644 src/worker/fs/fs2600basic.js create mode 100644 src/worker/fs/fs2600basic.js.metadata diff --git a/presets/vcs/bb/helloworld.bas b/presets/vcs/bb/helloworld.bas new file mode 100644 index 00000000..3a5d2db2 --- /dev/null +++ b/presets/vcs/bb/helloworld.bas @@ -0,0 +1,24 @@ + rem Hello World + + playfield: +................................ +......X.X.XXX.X...X...XXX....... +......X.X.X...X...X...X.X....... +......XXX.XX..X...X...X.X....... +......X.X.X...X...X...X.X....... +......X.X.XXX.XXX.XXX.XXX....... +................................ +.....X...X.XXX.XX..X...XX....... +.....X...X.X.X.X.X.X...X.X...... +.....X.X.X.X.X.XX..X...X.X...... +.....XX.XX.XXX.X.X.XXX.XX....... +end + + COLUPF = 22 + COLUBK = 2 + +mainloop + drawscreen + score = score + 1 + goto mainloop + diff --git a/src/platform/vcs.ts b/src/platform/vcs.ts index 9cbbae5c..3c45da51 100644 --- a/src/platform/vcs.ts +++ b/src/platform/vcs.ts @@ -41,6 +41,7 @@ const VCS_PRESETS = [ // {id:'examples/testlibrary', name:'VCS Library Demo'}, // {id:'examples/music2', name:'Pitch-Accurate Music'}, // {id:'examples/fullgame', name:'Thru Hike: The Game', title:'Thru Hike'}, + {id:'bb/helloworld.bas', name:'Hello World (batariBASIC)'}, ]; Javatari.AUTO_START = false; @@ -95,7 +96,7 @@ class VCSPlatform extends BasePlatform { //console.log(Javatari.room.console.isRunning(), Javatari.room.console.isPowerOn); return Javatari.room && Javatari.room.console.isRunning(); } - pause() { + pause() { Javatari.room.console.pause(); Javatari.room.speaker.mute(); } @@ -114,7 +115,7 @@ class VCSPlatform extends BasePlatform { step() { Javatari.room.console.debugSingleStepCPUClock(); } stepBack() { Javatari.room.console.debugStepBackInstruction(); } runEval(evalfunc) { Javatari.room.console.debugEval(evalfunc); } - + setupDebug(callback) { Javatari.room.console.onBreakpointHit = (state) => { state.c.PC = (state.c.PC - 1) & 0xffff; @@ -132,7 +133,7 @@ class VCSPlatform extends BasePlatform { Javatari.room.console.onBreakpointHit = null; if (this.isRunning()) Javatari.room.speaker.play(); } - + reset() { Javatari.room.console.powerOff(); Javatari.room.console.resetDebug(); @@ -205,6 +206,7 @@ class VCSPlatform extends BasePlatform { return "\n" + dumpRAM(ram, 0x80, 0x80); } getToolForFilename(fn) { + if (fn.endsWith(".bb") || fn.endsWith(".bas")) return "bataribasic"; return "dasm"; } getDefaultExtension() { return ".a"; }; diff --git a/src/worker/asmjs/bb2600basic.js b/src/worker/asmjs/bb2600basic.js new file mode 100644 index 00000000..5f77d549 --- /dev/null +++ b/src/worker/asmjs/bb2600basic.js @@ -0,0 +1,37 @@ + +var bb2600basic = (function() { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + return ( +function(bb2600basic) { + bb2600basic = bb2600basic || {}; + +var Module=typeof bb2600basic!=="undefined"?bb2600basic:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}else{return scriptDirectory+path}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename)}return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",abort);Module["quit"]=(function(status){process["exit"](status)});Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}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}if(typeof quit==="function"){Module["quit"]=(function(status){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module["readAsync"]=function readAsync(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);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}else{}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(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 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret}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)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function getMemory(size){if(!staticSealed)return staticAlloc(size);if(!runtimeInitialized)return dynamicAlloc(size);return _malloc(size)}function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+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 UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{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)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}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){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&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}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}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}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"}))}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(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){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 -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["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)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}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["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+354256;__ATINIT__.push();memoryInitializer="data:application/octet-stream;base64,AAAAAAAAAAACAAAACAAAABAAAAAgAAAAMAAAAHAAAAAYAAAAWAAAAAoAAAASAAAAIgAAADIAAABSAAAAYgAAAHIAAAALAAAAGgAAAFoAAAAWAAAAJgAAADYAAABWAAAAZgAAAHYAAAAJAAAA/wAAAAAAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzTAAAAABEACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABEwkLCwAACQYLAAALAAYRAAAAERERAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAADQAAAAQNAAAAAAkOAAAAAAAOAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEhISAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAACgAAAAAKAAAAAAkLAAAAAAALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRlQhIhkNAQIDEUscDBAECx0SHidobm9wcWIgBQYPExQVGggWBygkFxgJCg4bHyUjg4J9JiorPD0+P0NHSk1YWVpbXF1eX2BhY2RlZmdpamtscnN0eXp7fAAAAAAAAAAAAElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAAAAAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUBAAAAyAoAAAkAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAACAAAA6FwFAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABICwAABQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAIAAADIZwUAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgLAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAPhgBQAABAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAK/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJRnBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX3CJAP8JLw9kZWZhdWx0LmluYwAyNjAwYmFzaWNfdmFyaWFibGVfcmVkZWZzLmgAaTpyOgB1c2FnZTogJXMgLXIgPHZhcmlhYmxlIHJlZGVmcyBmaWxlPiAtaSA8aW5jbHVkZXMgcGF0aD4KAGdhbWUKACglZCkgV2FybmluZzogbG9uZyBsaW5lCgBMMCVkAC4lcyA7ICVzCgAgICAgICAgZWNobyAiICAgICIsWyhzY29yZXRhYmxlIC0gKildZCAsICJieXRlcyBvZiBST00gc3BhY2UgbGVmdAAgaW4gYmFuayAyACBpbiBiYW5rIDQAIGluIGJhbmsgOAAiKQoAIAoAMjYwMCBCYXNpYyBjb21waWxhdGlvbiBjb21wbGV0ZS4KAAlKTVAgKCRGRkZDKQoAdmJsYW5rX2JCX2NvZGUKAAlMREEgIzAKAAlMREEgACBqc3IgJXMKACBzdGEgdGVtcDcKACBsZGEgIz4ocmV0X3BvaW50JWQtMSkKACBwaGEKACBsZGEgIzwocmV0X3BvaW50JWQtMSkKACBsZGEgIz4oJXMtMSkKACBsZGEgIzwoJXMtMSkKACBsZGEgdGVtcDcKACB0eGEKACBsZHggIyVkCgAgam1wIEJTX2pzcgoAcmV0X3BvaW50JWQKACVzCgAlcyx4CgAjAAlMRFggAGludmFsaWQAIGlmICg8KikgPiAyMjMKAAlyZXBlYXQgKDI3Ny08KikKCS5ieXRlIDAKAAlyZXBlbmQKCWVuZGlmCgBwZmNvbG9ybGFiZWwlZAoARXJyb3I6IE1pc3NpbmcgImVuZCIga2V5d29yZCBhdCBlbmQgb2YgcGZoZWlnaHQgZGVjbGFyYXRpb24KACBsZGEgIyVzCiBzdGEgcGxheWZpZWxkcG9zCgAgLmJ5dGUgJXMKACBsZGEgIz4ocGZjb2xvcmxhYmVsJWQtMjEpCgAgc3RhIHBmY29sb3J0YWJsZSsxCgAgbGRhICM8KHBmY29sb3JsYWJlbCVkLTIxKQoAIHN0YSBwZmNvbG9ydGFibGUKAFBGaGVpZ2h0cyBrZXJuZWwgb3B0aW9uIG5vdCBzZXQAIGlmICg8KikgPiAyMDYKAAlhbGlnbiAyNTYKCWVuZGlmCgAgaWYgKDwqKSA8IDg4CgAJcmVwZWF0ICg4OC0oPCopKQoJLmJ5dGUgMAoAcGxheWZpZWxkY29sb3JhbmRoZWlnaHQKACAuYnl0ZSAlcywwLDAsMAoARXJyb3I6IE1pc3NpbmcgImVuZCIga2V5d29yZCBhdCBlbmQgb2YgcGZjb2xvciBkZWNsYXJhdGlvbgoAIGxkYSAjJXMKIHN0YSBDT0xVUEYKAFdhcm5pbmc6IHNpemUgb2Ygc3Vic2VxdWVudCBwZmNvbG9yIHRhYmxlcyBzaG91bGQgbWF0Y2gKACVzLCVzJXMAIGxkYSAjPihwZmNvbG9ybGFiZWwlZC0lZCkKACBsZGEgIzwocGZjb2xvcmxhYmVsJWQtJWQpCgBQRmNvbG9ycyBrZXJuZWwgb3B0aW9uIG5vdCBzZXQAKCVkKTogJXMKAEVycm9yOiBNaXNzaW5nICJlbmQiIGtleXdvcmQgYXQgZW5kIG9mIHBsYXlmaWVsZCBkZWNsYXJhdGlvbgoACUxEQSAjPFBGMV9kYXRhJWQKAAlTVEEgUEYxcG9pbnRlcgoACUxEQSAjPlBGMV9kYXRhJWQKAAlTVEEgUEYxcG9pbnRlcisxCgAJTERBICM8UEYyX2RhdGElZAoACVNUQSBQRjJwb2ludGVyCgAJTERBICM+UEYyX2RhdGElZAoACVNUQSBQRjJwb2ludGVyKzEKACAgaWZjb25zdCBwZnJlcwoAICAgIGxkeCAjNCpwZnJlcy0xCgAgIGVsc2UKAAkgIGxkeCAjNDcKACAgZW5kaWYKAAlqbXAgcGZsYWJlbCVkCgBQRl9kYXRhJWQKAAkuYnl0ZSAlJQAxADAALCAlJQAKAHBmbGFiZWwlZAoACWxkYSBQRl9kYXRhJWQseAoACXN0YSBwbGF5ZmllbGQtMTI4LHgKAAlzdGEgcGxheWZpZWxkLHgKAAlkZXgKAAlicGwgcGZsYWJlbCVkCgAgbGR4ICMxCgBzd2l0Y2hyZXNldAAAIGxkYSAjMQoAIGJpdCBTV0NIQgoAc3dpdGNoc2VsZWN0AAAgbGRhICMyCgBzd2l0Y2hsZWZ0YgAAIGxkYSAjJDQwCgBzd2l0Y2hyaWdodGIAACBsZGEgIyQ4MAoAc3dpdGNoYncAACBsZGEgIzgKAGpveTB1cAAAIGxkYSAjJDEwCgAgYml0IFNXQ0hBCgBqb3kwZG93bgAAIGxkYSAjJDIwCgBqb3kwbGVmdAAAam95MHJpZ2h0AABqb3kxdXAAAGpveTFkb3duAABqb3kxbGVmdAAAIGxkYSAjNAoAam95MXJpZ2h0AABqb3kwZmlyZQAAIGJpdCBJTlBUNAoAam95MWZpcmUAACBiaXQgSU5QVDUKAGludmFsaWQgY29uc29sZSBzd2l0Y2gvY29udHJvbGxlciByZWZlcmVuY2UKAGluY2x1ZGVzLwAvaW5jbHVkZXMvAGJhbmtzdy5hc20AYmFuayBub3Qgc3VwcG9ydGVkCgAgZWNobyAiICAgICIsWyhzdGFydF9iYW5rJWQgLSAqKV1kICwgImJ5dGVzIG9mIFJPTSBzcGFjZSBsZWZ0IGluIGJhbmsgJWQiKQoAcgBDYW5ub3Qgb3BlbiBiYW5rc3cuYXNtIGZvciByZWFkaW5nCgA7c2l6ZT0AYnNjb2RlX2xlbmd0aCA9ICVkACBPUkcgJCVkRkY0LWJzY29kZV9sZW5ndGgKACBST1JHICQlWEY0LWJzY29kZV9sZW5ndGgKAHN0YXJ0X2JhbmslZAAlcwAgT1JHICQlZEZGQwoAIFJPUkcgJCVYRkMKACAud29yZCBzdGFydF9iYW5rJWQKACBPUkcgJCVkMDAwCgAgUk9SRyAkJVgwMAoAIHJlcGVhdCAyNTYKIC5ieXRlICRmZgogcmVwZW5kCgA7IGJCLmFzbSBmaWxlIGlzIHNwbGl0IGhlcmUKADAuJXMAIyVkCgAjMAoAMmsAAFJPTTJrID0gMQA4awAAYmFua3N3aXRjaF9ob3RzcG90ID0gJDFGRjgAYmFua3N3aXRjaCA9IDgAYnNfbWFzayA9IDEAOGtTQwAAc3VwZXJjaGlwID0gMQBzdXBlcmNoaXAuaW5jAGJhbmtzd2l0Y2guaW5jADE2awAAYmFua3N3aXRjaF9ob3RzcG90ID0gJDFGRjYAYmFua3N3aXRjaCA9IDE2AGJzX21hc2sgPSAzADE2a1NDAAAzMmsAAGJhbmtzd2l0Y2hfaG90c3BvdCA9ICQxRkY0AGJhbmtzd2l0Y2ggPSAzMgBic19tYXNrID0gNwAzMmtTQwAANGsAAFdhcm5pbmc6IHVuc3VwcG9ydGVkIFJPTSBzaXplOiAlcyBVc2luZyA0ay4KAENhbm5vdCBvcGVuICVzIGZvciByZWFkaW5nCgBpbmNsdWRlcy5iQgB3AENhbm5vdCBvcGVuIGluY2x1ZGVzLmJCIGZvciB3cml0aW5nCgBiYi5hc20AACBpbmNsdWRlICVzCgAgaWYgKCg+KCorJWQpKSA+ICg+KikpCiBBTElHTiAyNTYKIGVuZGlmCgBQRjFfZGF0YSVkCgAgLmJ5dGUgJSUAUEYyX2RhdGElZAoACWxkeCAjMAoACXN0eCB0ZW1wMQoAdGVtcDIACXN0YSB0ZW1wMgoACWFzbAoAICByb2wgdGVtcDEKAAljbGMKAAlhZGMgAAl0YXgKAAlsZGEgdGVtcDEKAAlhZGMgIzAKAAlzdGEgdGVtcDEKAAl0eGEKAAlzZWMKAAlzYmMgAAlzYmMgIzAKAAlMRFkgIyVkCgAJanNyIG11bCVkCgBXYXJuaW5nIC0gdGhlcmUgc2VlbXMgdG8gYmUgYSBwcm9ibGVtLiAgWW91ciBjb2RlIG1heSBub3QgcnVuIHByb3Blcmx5LgoASWYgeW91IGFyZSBzZWVpbmcgdGhpcyBtZXNzYWdlLCBwbGVhc2UgcmVwb3J0IGl0IC0gaXQgY291bGQgYmUgYSBidWcuCgAJbHNyCgAJanNyIGRpdiVkCgBleHRyYW5lb3VzIGVuZCBrZXl3b3JkIGVuY291bnRlcmVkCgAJU1RBIHRlbXAxCgAJU1RZIHRlbXAyCgBtaXNzaW5nICIpIiBhdCBlbmQgb2YgZnVuY3Rpb24gY2FsbAoAKCVkKSBXYXJuaW5nOiBmdW5jdGlvbiBjYWxsIHdpdGggbm8gYXJndW1lbnRzCgAJTERZIAAJU1RBIHRlbXAlZAoACWxkeCAjJXMKAAlsZGEgKDAseCkKAAlpbmMgMCx4CgAJYm5lICorNAoACWluYyAxLHgKACVzID0gJXMACWxkYSAjPCVzX2JlZ2luCgAJc3RhICVzCgAJbGRhICM+JXNfYmVnaW4KAAlzdGEgJXMrMQoACUpNUCAuc2tpcCVzCgAlc19iZWdpbgoARXJyb3I6IE1pc3NpbmcgImVuZCIga2V5d29yZCBhdCBlbmQgb2YgZGF0YQoACS5ieXRlICVzCgAuc2tpcCVzCgAgAGNvbnN0ACVzX2xlbmd0aAA9AC5za2lwJXMtJXMACUxEWCAlcwoACUxEQSAuJXNqdW1wdGFibGVoaSx4CgAJUEhBCgAJTERBIC4lc2p1bXB0YWJsZWxvLHgKAAlSVFMKAC4lc2p1bXB0YWJsZWhpCgAJLmJ5dGUgPiguJXMtMSkKAC4lc2p1bXB0YWJsZWxvCgAJLmJ5dGUgPCguJXMtMSkKAAlTVEEgJXMKACVzZm9yJXMALiVzCgBzdGVwAAAoJWQpIG5leHQgd2l0aG91dCBmb3IKADEAAAlMREEgJXMKAAlDTVAgAAlJTkMgJXMKAC0xAAAyNTUAAAlERUMgJXMKAAlDTEMKAAlBREMgACVzX2ZhaWxzYWZlACsxAAlCTUkgLiVzYmNzCgAuJXNiY3MKACBpZiAoKCogLSAuJXMpIDwgMTI3KSAmJiAoKCogLSAuJXMpID4gLTEyOCkKCUJFUSAuJXMKACBlbHNlCglibmUgLiVkc2tpcCVzCglqbXAgLiVzCgAuJWRza2lwJXMKACBlbmRpZgoACWJlcSAuJXMKACBpZiAoKCogLSAuJXMpIDwgMTI3KSAmJiAoKCogLSAuJXMpID4gLTEyOCkKCUJORSAuJXMKACBlbHNlCgliZXEgLiVkc2tpcCVzCglqbXAgLiVzCgAJYm5lIC4lcwoAIGlmICgoKiAtIC4lcykgPCAxMjcpICYmICgoKiAtIC4lcykgPiAtMTI4KQoJYmNzIC4lcwoAIGVsc2UKCWJjYyAuJWRza2lwJXMKCWptcCAuJXMKAAliY3MgLiVzCgAgaWYgKCgqIC0gLiVzKSA8IDEyNykgJiYgKCgqIC0gLiVzKSA+IC0xMjgpCgliY2MgLiVzCgAgZWxzZQoJYmNzIC4lZHNraXAlcwoJam1wIC4lcwoACWJjYyAuJXMKAHRoaXNiYW5rAABvdGhlcmJhbmsAAAlKTVAgQlNfcmV0dXJuCgAJdHN4CgAJbGRhIDIseCA7IGNoZWNrIHJldHVybiBhZGRyZXNzCgAJZW9yICMoPiopIDsgdnMuIGN1cnJlbnQgUENICgAJYW5kICMkRTAgOyAgbWFzayBvZmYgYWxsIGJ1dCB0b3AgMyBiaXRzCgAJYmVxICorNiA7IGlmIGVxdWFsLCBkbyBub3JtYWwgcmV0dXJuCgAJdHlhCgAJYmVxICorNSA7IGlmIGVxdWFsLCBkbyBub3JtYWwgcmV0dXJuCgBwZnJlYWQARXJyb3I6IHBmcGl4ZWwgbm90IHN1cHBvcnRlZCBpbiBtdWx0aXNwcml0ZSBrZXJuZWwKAAlMRFggIwBmbGlwADIKAG9mZgAxCgAwCgBwZnBpeGVsAEVycm9yOiBwZmhsaW5lIG5vdCBzdXBwb3J0ZWQgaW4gbXVsdGlzcHJpdGUga2VybmVsCgAJU1RBIHRlbXAzCgBwZmhsaW5lAEVycm9yOiBwZnZsaW5lIG5vdCBzdXBwb3J0ZWQgaW4gbXVsdGlzcHJpdGUga2VybmVsCgBwZnZsaW5lAEVycm9yOiBwZnNjcm9sbCBzdXBwb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gbXVsdGlzcHJpdGUga2VybmVsCgAJTERBICMAbGVmdAByaWdodAB1cHVwAAA2CgBkb3duZG93bgA4CgB1cAAAZG93bgA0CgAoJWQpIHBmc2Nyb2xsIGRpcmVjdGlvbiB1bmtub3duCgBwZnNjcm9sbABFcnJvcjogTWlzc2luZyAiZW5kIiBrZXl3b3JkIGF0IGVuZCBvZiBpbmxpbmUgYXNtCgBwbGF5ZXIlc18lYwoAcGxheWVyY29sb3Ilc18lYwoACUxEQSAjPCVzCgAJU1RBIHBsYXllciVjcG9pbnRlcmxvCgAJU1RBIHBsYXllciVjY29sb3IKAAlMREEgIz4lcwoACVNUQSBwbGF5ZXIlY3BvaW50ZXJoaQoACVNUQSBwbGF5ZXIlY2NvbG9yKzEKACBpZiAoPCopIDwgMTAwCgAJcmVwZWF0ICgxMDAtPCopCgkuYnl0ZSAwCgAJLmJ5dGUgMAoARXJyb3I6IE1pc3NpbmcgImVuZCIga2V5d29yZCBhdCBlbmQgb2YgcGxheWVyIGRlY2xhcmF0aW9uCgAJLmJ5dGUgJXMAIGlmICg8KikgPiAoPCgqKyVkKSkKAAlyZXBlYXQgKCQxMDAtPCopCgkuYnl0ZSAwCgAJTERBICMlZAoACVNUQSBwbGF5ZXIlY2hlaWdodAoAbGl2ZXNfXyVzCgAJU1RBIGxpZmVwb2ludGVyCgAJTERBIGxpZmVwb2ludGVyKzEKAAlBTkQgIyRFMAoACU9SQSAjKD4lcykmKCQxRikKAAlTVEEgbGlmZXBvaW50ZXIrMQoAIGlmICg8KikgPiAoPCgqKzgpKQoARXJyb3I6IE5vdCBlbm91Z2ggZGF0YSBvciBtaXNzaW5nICJlbmQiIGtleXdvcmQgYXQgZW5kIG9mIGxpdmVzIGRlY2xhcmF0aW9uCgBpbmRleC1pbnZhbGlkAGpveQAAc3dpdGNoAAAJQkVRIAAJQk5FIAAuY29uZHBhcnQlZAoAcGZyZWFkAABjb2xsaXNpb24oAABjb2xsaXNpb24obWlzc2lsZTAscGxheWVyMSkAAAlCSVQgQ1hNMFAKAGNvbGxpc2lvbihtaXNzaWxlMCxwbGF5ZXIwKQAAY29sbGlzaW9uKG1pc3NpbGUxLHBsYXllcjApAAAJQklUIENYTTFQCgBjb2xsaXNpb24obWlzc2lsZTEscGxheWVyMSkAAGNvbGxpc2lvbihwbGF5ZXIwLHBsYXlmaWVsZCkAAAlCSVQgQ1hQMEZCCgBjb2xsaXNpb24ocGxheWVyMCxiYWxsKQAAY29sbGlzaW9uKHBsYXllcjEscGxheWZpZWxkKQAACUJJVCBDWFAxRkIKAGNvbGxpc2lvbihwbGF5ZXIxLGJhbGwpAABjb2xsaXNpb24obWlzc2lsZTAscGxheWZpZWxkKQAACUJJVCBDWE0wRkIKAGNvbGxpc2lvbihtaXNzaWxlMCxiYWxsKQAAY29sbGlzaW9uKG1pc3NpbGUxLHBsYXlmaWVsZCkAAAlCSVQgQ1hNMUZCCgBjb2xsaXNpb24obWlzc2lsZTEsYmFsbCkAAGNvbGxpc2lvbihiYWxsLHBsYXlmaWVsZCkAAAlCSVQgQ1hCTFBGCgBjb2xsaXNpb24ocGxheWVyMCxwbGF5ZXIxKQAACUJJVCBDWFBQTU0KAGNvbGxpc2lvbihtaXNzaWxlMCxtaXNzaWxlMSkAAGNvbGxpc2lvbihwbGF5ZXIxLG1pc3NpbGUwKQAAY29sbGlzaW9uKHBsYXllcjAsbWlzc2lsZTApAABjb2xsaXNpb24ocGxheWVyMCxtaXNzaWxlMSkAAGNvbGxpc2lvbihwbGF5ZXIxLG1pc3NpbGUxKQAAY29sbGlzaW9uKHBsYXlmaWVsZCxwbGF5ZXIwKQAAY29sbGlzaW9uKGJhbGwscGxheWVyMCkAAGNvbGxpc2lvbihwbGF5ZmllbGQscGxheWVyMSkAAGNvbGxpc2lvbihiYWxsLHBsYXllcjEpAABjb2xsaXNpb24ocGxheWZpZWxkLG1pc3NpbGUwKQAAY29sbGlzaW9uKGJhbGwsbWlzc2lsZTApAABjb2xsaXNpb24ocGxheWZpZWxkLG1pc3NpbGUxKQAAY29sbGlzaW9uKGJhbGwsbWlzc2lsZTEpAABjb2xsaXNpb24ocGxheWZpZWxkLGJhbGwpAABjb2xsaXNpb24ocGxheWVyMSxwbGF5ZXIwKQAAY29sbGlzaW9uKG1pc3NpbGUxLG1pc3NpbGUwKQAAKCVkKSBFcnJvcjogVW5rbm93biBjb2xsaXNpb24gdHlwZTogJXMKAAlCTUkgAAlCVlMgAAlCUEwgAAlCVkMgACglZCkgRXJyb3I6IHZhcmlhYmxlcyBpbiBiaXQgYWNjZXNzIG5vdCBzdXBwb3J0ZWQKAAlCSVQgACVjAAlMU1IKAAlBTkQgIyVkCgAJQkNTIAAJQkNDIAA8PgAAICAgICBCTkUgADw+ACAgICAgQkVRIAAgICAgIEJDUyAAICAgICBCQ0MgACBpZiAoKCogLSAuJXMpIDwgMTI3KSAmJiAoKCogLSAuJXMpID4gLTEyOCkKCWJ2YyAuJXMKACBlbHNlCglidnMgLiVkc2tpcCVzCglqbXAgLiVzCgAJYnZjIC4lcwoAIGlmICgoKiAtIC4lcykgPCAxMjcpICYmICgoKiAtIC4lcykgPiAtMTI4KQoJYnBsIC4lcwoAIGVsc2UKCWJtaSAuJWRza2lwJXMKCWptcCAuJXMKAAlicGwgLiVzCgAgaWYgKCgqIC0gLiVzKSA8IDEyNykgJiYgKCgqIC0gLiVzKSA+IC0xMjgpCglidnMgLiVzCgAgZWxzZQoJYnZjIC4lZHNraXAlcwoJam1wIC4lcwoACWJ2cyAuJXMKACBpZiAoKCogLSAuJXMpIDwgMTI3KSAmJiAoKCogLSAuJXMpID4gLTEyOCkKCWJtaSAuJXMKACBlbHNlCglicGwgLiVkc2tpcCVzCglqbXAgLiVzCgAJYm1pIC4lcwoAc3RhY2twdWxsAAAJVEFZCgAJUExBCgAJVFNYCgAJU1RZICQwMCx4CgAJU0VDCgAJU0JDICQxMDAseAoACUlOWAoACVRYUwoACSVzICQxMDAseAoACSVzIAA7IGNvbXBsZXggc3RhdGVtZW50IGRldGVjdGVkCgBBcmVnAHN0YWNrcHVsbABDYW5ub3QgZXZhbHVhdGUgZXhwcmVzc2lvbgoACU9SQSAjJWQKAHsAICBQSFAKAAogIFBMUAoACS5ieXRlICRGMCwgJDAzCgAJLmJ5dGUgJEQwLCAkMDMKAAkuYnl0ZSAkMEMKACglZCkgRXJyb3I6IGNhbiBvbmx5IGFzc2lnbiAwLCAxIG9yIGFub3RoZXIgYml0IHRvIGEgYml0CgAJU1RBIAAgIFNFQwoACVNCQyAlcwoAJWYACVNUWCAACUxEQSAjJXMKAHJhbmQAACAgICAgICAgbGRhIHJhbmQKACAgICAgICAgbHNyCgAgaWZjb25zdCByYW5kMTYKACAgICAgICAgcm9sIHJhbmQxNgoAICAgICAgICBiY2MgKis0CgAgICAgICAgIGVvciAjJEI0CgAgICAgICAgIHN0YSByYW5kCgAgICAgICAgIGVvciByYW5kMTYKAHJhbmRvbWl6ZQBzY29yZQAAc2NvcmVjAAAJU0VECgAJTERBIHNjb3JlKzIKAAlBREMgJXMKAAlBREMgIyQlZCVkCgAJU1RBIHNjb3JlKzIKAAlMREEgc2NvcmUrMQoACUFEQyAjMAoACVNUQSBzY29yZSsxCgAJTERBIHNjb3JlCgAJU1RBIHNjb3JlCgAJQ0xECgAJU0JDICMkJWQlZAoACVNCQyAjMAoACUxEQSAjJCVkJWQKAEFyZWcAAAlBREMgIzE2CgAJU0JDICMxNgoACUlOQyAACURFQyAAQXJlZwoACUNMQyAKAAlMRFkgJXMKAEFkZDQ0dG84OABBZGQ4OHRvNDQACUFEQyAjJWQKACtDTEMKCUFEQwAJU0VDIAoACVNCQyAAU3ViNDRmcm9tODgAU3ViODhmcm9tNDQACVNCQyAjJWQKAC1TRUMKCVNCQwAmQU5EAF5FT1IAfE9SQQAqTERZAG11bDE2AG11bDgAL0xEWQBkaXYxNgBkaXY4AHNyZWFkAAAoJWQpIEVycm9yOiBpbnZhbGlkIG9wZXJhdG9yOiAlcwoAICBBU0wKACAgTFNSCgAgIExEWCAAIGpzciBBc3NpZ244OHRvNDQAYnMAICBKU1IgQXNzaWduNDR0bzg4ACAgU1RYIABiYW5rACBqbXAgLiVzCgAgbGRhICM+KC4lcy0xKQoAIGxkYSAjPCguJXMtMSkKACBqc3IgLiVzCgB0dgAAbnRzYwAAb3ZlcnNjYW5fdGltZSA9IDM3AHZibGFua190aW1lID0gNDMAcGFsAABvdmVyc2Nhbl90aW1lID0gODIAdmJsYW5rX3RpbWUgPSA1NwBzZXQgVFY6IGludmFsaWQgVFYgdHlwZQoAc21hcnRicmFuY2hpbmcAAHJvbXNpemUAAG9wdGltaXphdGlvbgAAc3BlZWQAAHNpemUAAG5vaW5saW5lZGF0YQAAaW5saW5lcmFuZAAAbm9uZQAAa2VybmFsAABUaGUgcHJvcGVyIHNwZWxsaW5nIGlzICJrZXJuZWwuIiAgV2l0aCBhbiBlLiAgUGxlYXNlIG1ha2UgYSBub3RlIG9mIHRoaXMgdG8gc2F2ZSB5b3Vyc2VsZiBmcm9tIGZ1cnRoZXIgZW1iYXJhc3NtZW50LgoAa2VybmVsX29wdGlvbnMAAHJlYWRwYWRkbGUAAHJlYWRwYWRkbGUgPSAxAHBsYXllcjFjb2xvcnMAAHBsYXllcjFjb2xvcnMgPSAxAHBsYXllcmNvbG9ycwAAcGxheWVyY29sb3JzID0gMQBub19ibGFua19saW5lcwAAbm9fYmxhbmtfbGluZXMgPSAxAHBmY29sb3JzAABwZmhlaWdodHMAAGJhY2tncm91bmRjaGFuZ2UAAGJhY2tncm91bmRjaGFuZ2UgPSAxAHNldCBrZXJuZWxfb3B0aW9uczogT3B0aW9ucyB1bmtub3duIG9yIGludmFsaWQKAFBGaGVpZ2h0cyA9IDEAUEZjb2xvcnMgPSAxAFBGY29sb3JhbmRoZWlnaHQgPSAxAHNldCBrZXJuZWxfb3B0aW9uczogcmVhZHBhZGRsZSBtdXN0IGJlIHVzZWQgd2l0aCBub19ibGFua19saW5lcwoAc2V0IGtlcm5lbF9vcHRpb25zOiBJbnZhbGlkIGNhbWJpbmF0aW9uIG9mIG9wdGlvbnMKAGtlcm5lbAAAbXVsdGlzcHJpdGUAAG11bHRpc3ByaXRlID0gMQBtdWx0aXNwcml0ZS5pbmMAbXVsdGlzcHJpdGVfbm9faW5jbHVkZQAAc2V0IGtlcm5lbDoga2VybmVsIG5hbWUgdW5rbm93biBvciB1bnNwZWNpZmllZAoAZGVidWcAAGN5Y2xlc2NvcmUAAGRlYnVnc2NvcmUgPSAxAGN5Y2xlcwAAZGVidWdjeWNsZXMgPSAxAHNldCBkZWJ1ZzogZGVidWdnaW5nIG1vZGUgdW5rbm93bgoAbGVnYWN5AABsZWdhY3kgPSAlZABzZXQ6IHVua25vd24gcGFyYW1ldGVyCgAJcGxhCgBkcmF3c2NyZWVuAENhbm5vdCBvcGVuICVzIGZvciB3cml0aW5nCgA7IFRoaXMgZmlsZSBjb250YWlucyB2YXJpYWJsZSBtYXBwaW5nIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgcHJvamVjdC4KAHJlbQAAaWYAAGVsc2UAAD4AADwAPD0AAD49ACYmAAB0aGVuJWQAaWYAfHwAAHRoZW4AAHRoZW4AJWRPUgA6AGdvdG8Ac2tpcGVsc2UlZAAlZDogQ2Fubm90IGZpbmQgZW5kIG9mIGxpbmUgLSBzdGF0ZW1lbnQgbWF5IGhhdmUgYmVlbiB0cnVuY2F0ZWQKAGNvbmRwYXJ0JWQAJWR0aGVuAGVuZAAAaW5jbHVkZXNmaWxlAABpbmNsdWRlAABpbmxpbmUAAGZ1bmN0aW9uAABnb3RvAABiYW5rAABzZGF0YQAAZGF0YQAAb24AAGNvbnN0AABkaW0AAGZvcgAAbmV4dAAAZ29zdWIAAHBmcGl4ZWwAAHBmaGxpbmUAAHBmY2xlYXIAAHBmdmxpbmUAAHBmc2Nyb2xsAABkcmF3c2NyZWVuAABhc20AAHBvcAAAc2V0AAByZXR1cm4AAHJlYm9vdAAAdmJsYW5rAABwZmNvbG9yczoAAHBmaGVpZ2h0czoAAHBsYXlmaWVsZDoAAGxpdmVzOgAAcGxheWVyMDoAAHBsYXllcjE6AABwbGF5ZXIyOgAAcGxheWVyMzoAAHBsYXllcjQ6AABwbGF5ZXI1OgAAcGxheWVyMGNvbG9yOgAAcGxheWVyMWNvbG9yOgAAPQAAbGV0AABFcnJvcjogVW5rbm93biBrZXl3b3JkOiAlcwoALnNraXBlbHNlJWQKAC0rICAgMFgweAAobnVsbCkALTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYATkFOAC4AOiB1bnJlY29nbml6ZWQgb3B0aW9uOiAAOiBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQ6IAByd2EAaW5maW5pdHkAbmFu";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___lock(){}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};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"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}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){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){err(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.length: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 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/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),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&292)>>2}}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)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),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.flagsForNode(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;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){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 perms=["r","w","rw"][flag&3];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(FS.flagsToPermissionString(flags)!=="r"||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}),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}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(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)}),mkdirTree:(function(path,mode){var dirs=path.split("/");var d="";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 usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";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]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}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.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},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.defineProperties(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>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21524:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function ___wait(){}function __exit(status){exit(status)}function _exit(status){__exit(status)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}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;Module["FS_unlink"]=FS.unlink;__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()}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;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}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:(function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]=0;c[u>>2]=b;c[v>>2]=d;c[e+1152>>2]=0;c[A>>2]=0;c[G>>2]=0;c[H>>2]=3520;c[I>>2]=3532;c[J>>2]=0;a:while(1){d=sd(c[u>>2]|0,c[v>>2]|0,3560)|0;c[x>>2]=d;if((d|0)==-1)break;switch(c[x>>2]|0){case 63:{K=6;break a;break}case 105:{c[J>>2]=Zb(500)|0;bd(c[J>>2]|0,c[88538]|0)|0;break}case 114:{c[I>>2]=Zb(100)|0;bd(c[I>>2]|0,c[88538]|0)|0;break}default:{}}}if((K|0)==6){K=c[721]|0;c[t>>2]=c[c[v>>2]>>2];Od(K,3565,t)|0;ga(1)}c[88384]=0;Td(3621,s)|0;Wb(c[F>>2]|0);Va(c[J>>2]|0);c[w>>2]=Zb(200)|0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=50)break;J=Zb(50)|0;c[(c[w>>2]|0)+(c[x>>2]<<2)>>2]=J;c[x>>2]=(c[x>>2]|0)+1}while(1){c[x>>2]=0;while(1){if((c[x>>2]|0)>=50)break;c[y>>2]=0;while(1){if((c[y>>2]|0)>=50)break;a[(c[(c[w>>2]|0)+(c[x>>2]<<2)>>2]|0)+(c[y>>2]|0)>>0]=0;c[y>>2]=(c[y>>2]|0)+1}c[x>>2]=(c[x>>2]|0)+1}c[B>>2]=Cd(D,500,c[689]|0)|0;cb();bd(E,D)|0;if(!(c[B>>2]|0))break;c[x>>2]=0;c[y>>2]=0;c[z>>2]=0;while(1){if(!(a[D+(c[x>>2]|0)>>0]|0))break;J=c[x>>2]|0;c[x>>2]=J+1;a[C>>0]=a[D+J>>0]|0;if((a[C>>0]|0)==32){if(!(c[G>>2]|0)){c[y>>2]=(c[y>>2]|0)+1;c[z>>2]=0}c[G>>2]=(c[G>>2]|0)+1}else{c[G>>2]=0;J=a[C>>0]|0;s=c[(c[w>>2]|0)+(c[y>>2]<<2)>>2]|0;t=c[z>>2]|0;c[z>>2]=t+1;a[s+t>>0]=J}}if((c[y>>2]|0)>40){J=c[721]|0;c[r>>2]=db()|0;Od(J,3627,r)|0}if(!(a[c[c[w>>2]>>2]>>0]|0)){J=c[c[w>>2]>>2]|0;t=c[A>>2]|0;c[A>>2]=t+1;c[q>>2]=t;lc(J,3652,q)|0}if(jc(c[c[w>>2]>>2]|0,12885,3)|0){c[p>>2]=c[c[w>>2]>>2];c[p+4>>2]=E;Td(3657,p)|0}Yb(c[w>>2]|0)}Ha()|0;c[88384]=Ia()|0;Wa();Td(3667,o)|0;if((c[88384]|0)==8)Td(3733,n)|0;if((c[88384]|0)==16)Td(3744,m)|0;if((c[88384]|0)!=32){Td(3766,j)|0;Td(3770,i)|0;Td(3770,h)|0;Td(3770,g)|0;L=c[F>>2]|0;M=c[I>>2]|0;Xb(L,M);N=c[H>>2]|0;Sa(N);O=c[721]|0;Od(O,3773,f)|0;k=e;return 0}Td(3755,l)|0;Td(3766,j)|0;Td(3770,i)|0;Td(3770,h)|0;Td(3770,g)|0;L=c[F>>2]|0;M=c[I>>2]|0;Xb(L,M);N=c[H>>2]|0;Sa(N);O=c[721]|0;Od(O,3773,f)|0;k=e;return 0}function sa(){var a=0;a=k;k=k+16|0;Td(3807,a)|0;k=a;return}function ta(){return c[88385]|0}function ua(){var a=0;a=k;k=k+16|0;Td(3821,a)|0;k=a;return}function va(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;d=k;k=k+80|0;e=d+64|0;f=d+56|0;g=d+72|0;h=d;i=d+68|0;c[g>>2]=b;c[i>>2]=0;wa();if(a[c[(c[g>>2]|0)+8>>2]>>0]|0?(a[c[(c[g>>2]|0)+8>>2]>>0]|0)!=58:0){c[i>>2]=xa(c[(c[g>>2]|0)+8>>2]|0,h)|0;if(c[i>>2]|0)ya(h);Td(3846,e)|0;za(c[(c[g>>2]|0)+8>>2]|0,c[i>>2]|0);j=c[g>>2]|0;l=j+4|0;m=c[l>>2]|0;Aa(m);n=c[g>>2]|0;o=n+4|0;p=c[o>>2]|0;Ba(p);k=d;return}Td(3837,f)|0;j=c[g>>2]|0;l=j+4|0;m=c[l>>2]|0;Aa(m);n=c[g>>2]|0;o=n+4|0;p=c[o>>2]|0;Ba(p);k=d;return}function wa(){bd(18400,4029)|0;return}function xa(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;e=k;k=k+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;c[f>>2]=b;c[g>>2]=d;c[j>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=50)break;if(!(a[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)){l=4;break}if((a[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)==91){l=6;break}c[h>>2]=(c[h>>2]|0)+1}if((l|0)==4)c[h>>2]=50;else if((l|0)==6)c[j>>2]=1;if((c[h>>2]|0)>=50){m=c[j>>2]|0;k=e;return m|0}bd(c[g>>2]|0,(c[f>>2]|0)+(c[h>>2]|0)+1|0)|0;l=c[g>>2]|0;a[l+((Zc(c[g>>2]|0)|0)-1)>>0]=0;l=c[g>>2]|0;if((a[l+((Zc(c[g>>2]|0)|0)-2)>>0]|0)==93){l=c[g>>2]|0;a[l+((Zc(c[g>>2]|0)|0)-2)>>0]=0}l=c[g>>2]|0;if((a[l+((Zc(c[g>>2]|0)|0)-1)>>0]|0)==93){l=c[g>>2]|0;a[l+((Zc(c[g>>2]|0)|0)-1)>>0]=0}c[i>>2]=c[h>>2];while(1){if((c[i>>2]|0)>=50)break;a[(c[f>>2]|0)+(c[i>>2]|0)>>0]=0;c[i>>2]=(c[i>>2]|0)+1}m=c[j>>2]|0;k=e;return m|0}function ya(a){a=a|0;var b=0,d=0,e=0;b=k;k=k+16|0;d=b+8|0;e=b+12|0;c[e>>2]=a;Td(4023,b)|0;Ca(c[e>>2]|0)|0;c[d>>2]=c[e>>2];Td(4011,d)|0;k=b;return}function za(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=k;k=k+32|0;e=d+8|0;f=d;g=d+16|0;h=d+12|0;c[g>>2]=a;c[h>>2]=b;b=c[g>>2]|0;if(c[h>>2]|0){c[e>>2]=b;Td(4015,e)|0;k=d;return}else{Ca(b)|0;c[f>>2]=c[g>>2];Td(4011,f)|0;k=d;return}}function Aa(b){b=b|0;var d=0,e=0;d=k;k=k+16|0;e=d;c[e>>2]=b;while(1){b=c[e>>2]|0;if((a[b+((Zc(c[e>>2]|0)|0)-1)>>0]|0)!=10?(b=c[e>>2]|0,(a[b+((Zc(c[e>>2]|0)|0)-1)>>0]|0)!=13):0)break;b=c[e>>2]|0;a[b+((Zc(c[e>>2]|0)|0)-1)>>0]=0}k=d;return}function Ba(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;b=k;k=k+144|0;d=b+128|0;e=b+120|0;f=b+112|0;g=b+104|0;h=b+96|0;i=b+88|0;j=b+80|0;l=b+72|0;m=b+64|0;n=b+56|0;o=b+48|0;p=b+40|0;q=b+32|0;r=b+24|0;s=b+16|0;t=b+8|0;u=b;v=b+132|0;c[v>>2]=a;if(c[88386]|0?(c[88387]|0)!=(c[88388]|0):0){Td(3861,t)|0;t=(c[88389]|0)+1|0;c[88389]=t;c[s>>2]=t;Td(3873,s)|0;Td(3897,r)|0;c[q>>2]=c[88389];Td(3903,q)|0;Td(3897,p)|0;c[o>>2]=c[v>>2];Td(3927,o)|0;Td(3897,n)|0;c[m>>2]=c[v>>2];Td(3942,m)|0;Td(3897,l)|0;Td(3957,j)|0;Td(3897,i)|0;Td(3969,h)|0;Td(3897,g)|0;c[f>>2]=c[88388];Td(3975,f)|0;Td(3985,e)|0;c[d>>2]=c[88389];Td(3998,d)|0;k=b;return}c[u>>2]=c[v>>2];Td(3852,u)|0;k=b;return}function Ca(a){a=a|0;var b=0,d=0,e=0,f=0;b=k;k=k+16|0;d=b+8|0;e=b+4|0;c[d>>2]=a;c[e>>2]=Da(c[d>>2]|0)|0;if(!(c[e>>2]|0)){f=c[e>>2]|0;k=b;return f|0}Td(4021,b)|0;f=c[e>>2]|0;k=b;return f|0}function Da(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=k;k=k+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=b;c[g>>2]=0;while(1){h=c[f>>2]|0;if((c[g>>2]|0)>=(c[88390]|0))break;if(!(ic(h,13392+((c[g>>2]|0)*100|0)|0)|0)){i=4;break}c[g>>2]=(c[g>>2]|0)+1}if((i|0)==4){c[e>>2]=1;j=c[e>>2]|0;k=d;return j|0}if(((a[h>>0]|0)!=36?(a[c[f>>2]>>0]|0)!=37:0)?(a[c[f>>2]>>0]|0)>=58:0){c[e>>2]=0;j=c[e>>2]|0;k=d;return j|0}c[e>>2]=1;j=c[e>>2]|0;k=d;return j|0}function Ea(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=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;d=k;k=k+528|0;e=d+480|0;f=d+472|0;g=d+464|0;h=d+456|0;i=d+448|0;j=d+440|0;l=d+432|0;m=d+416|0;n=d+408|0;o=d+400|0;p=d+392|0;q=d+384|0;r=d+376|0;s=d+368|0;t=d+360|0;u=d+352|0;v=d+344|0;w=d+336|0;x=d+328|0;y=d+320|0;z=d+312|0;A=d+304|0;B=d+296|0;C=d+288|0;D=d+280|0;E=d+272|0;F=d+264|0;G=d+256|0;H=d+248|0;I=d+240|0;J=d+232|0;K=d+224|0;L=d+216|0;M=d+512|0;N=d+112|0;O=d;P=d+508|0;Q=d+504|0;R=d+500|0;S=d+496|0;T=d+492|0;c[M>>2]=b;c[P>>2]=0;c[Q>>2]=0;c[R>>2]=0;c[S>>2]=0;b=(ed(c[(c[M>>2]|0)+4>>2]|0,13098,9)|0)!=0;M=c[88391]&48;if(!b){if((M|0)==32){b=c[88392]|0;c[88392]=b+1;lc(18464+(b*50|0)|0,4037,L)|0;L=c[88392]|0;c[88392]=L+1;lc(18464+(L*50|0)|0,4053,K)|0;K=c[88392]|0;c[88392]=K+1;lc(18464+(K*50|0)|0,4080,J)|0;J=18464+((c[88392]|0)*50|0)|0;c[I>>2]=c[88392];lc(J,4096,I)|0;c[T>>2]=c[88392];c[88392]=(c[88392]|0)+1;while(1){if(Cd(N,100,c[689]|0)|0){if((a[N>>0]|0)<58?(a[N>>0]|0)>47:0)U=7}else U=7;if((U|0)==7?(U=0,(a[N>>0]|0)!=101):0){U=8;break}c[88385]=(c[88385]|0)+1;if(!(jc(N,12885,3)|0))break;Aa(N);if(c[R>>2]|0){I=c[88392]|0;c[88392]=I+1;c[G>>2]=N;lc(18464+(I*50|0)|0,4201,G)|0}else{c[H>>2]=N;Td(4173,H)|0}c[R>>2]=(c[R>>2]|0)+1}if((U|0)==8){Fa(4112);ga(1)}c[F>>2]=c[T>>2];Td(4212,F)|0;Td(4240,E)|0;c[D>>2]=c[T>>2];Td(4261,D)|0;Td(4289,C)|0;k=d;return}if((c[88391]&48|0)!=48){Fa(4308);ga(1)}C=c[88392]|0;c[88392]=C+1;lc(18464+(C*50|0)|0,4340,B)|0;B=c[88392]|0;c[88392]=B+1;lc(18464+(B*50|0)|0,4356,A)|0;A=c[88392]|0;c[88392]=A+1;lc(18464+(A*50|0)|0,4375,z)|0;z=c[88392]|0;c[88392]=z+1;lc(18464+(z*50|0)|0,4390,y)|0;y=c[88392]|0;c[88392]=y+1;lc(18464+(y*50|0)|0,4080,x)|0;x=c[88392]|0;c[88392]=x+1;lc(18464+(x*50|0)|0,4418,w)|0;c[88393]=c[88392];while(1){if(Cd(N,100,c[689]|0)|0){if((a[N>>0]|0)<58?(a[N>>0]|0)>47:0)U=21}else U=21;if((U|0)==21?(U=0,(a[N>>0]|0)!=101):0){U=22;break}c[88385]=(c[88385]|0)+1;if(!(jc(N,12885,3)|0)){U=76;break}Aa(N);if(c[R>>2]|0){w=c[88392]|0;c[88392]=w+1;c[u>>2]=N;lc(18464+(w*50|0)|0,4443,u)|0}else{c[v>>2]=N;Td(4173,v)|0}c[R>>2]=(c[R>>2]|0)+1}if((U|0)==22){Fa(4112);ga(1)}else if((U|0)==76){k=d;return}}if((M|0)!=16){if((c[88391]&48|0)!=48){Fa(4663);ga(1)}while(1){if(Cd(N,100,c[689]|0)|0){if((a[N>>0]|0)<58?(a[N>>0]|0)>47:0)U=61}else U=61;if((U|0)==61?(U=0,(a[N>>0]|0)!=101):0){U=62;break}c[88385]=(c[88385]|0)+1;if(!(jc(N,12885,3)|0)){U=76;break}Aa(N);if(c[R>>2]|0){c[Q>>2]=0;c[P>>2]=0;while(1){if(!((c[Q>>2]|0)!=0^1))break;M=18464+(((c[88393]|0)+(c[S>>2]|0)|0)*50|0)|0;v=c[P>>2]|0;c[P>>2]=v+1;if((a[M+v>>0]|0)==44)c[Q>>2]=(c[Q>>2]|0)+1;if((c[P>>2]|0)>99){U=71;break}}if((U|0)==71){U=0;Fa(4542)}bd(O,18464+(((c[88393]|0)+(c[S>>2]|0)|0)*50|0)|0)|0;a[O+((c[P>>2]|0)-1)>>0]=0;if((c[P>>2]|0)<100){v=c[88393]|0;M=c[S>>2]|0;c[S>>2]=M+1;u=O+(c[P>>2]|0)+1|0;c[e>>2]=O;c[e+4>>2]=N;c[e+8>>2]=u;lc(18464+((v+M|0)*50|0)|0,4599,e)|0}}else{c[f>>2]=N;Td(4520,f)|0}c[R>>2]=(c[R>>2]|0)+1}if((U|0)==62){Fa(4460);ga(1)}else if((U|0)==76){k=d;return}}if(!(c[88394]|0)){f=c[88392]|0;c[88392]=f+1;lc(18464+(f*50|0)|0,4340,t)|0;t=c[88392]|0;c[88392]=t+1;lc(18464+(t*50|0)|0,4356,s)|0;s=c[88392]|0;c[88392]=s+1;lc(18464+(s*50|0)|0,4375,r)|0;r=c[88392]|0;c[88392]=r+1;lc(18464+(r*50|0)|0,4390,q)|0;q=c[88392]|0;c[88392]=q+1;lc(18464+(q*50|0)|0,4080,p)|0;p=18464+((c[88392]|0)*50|0)|0;c[o>>2]=c[88392];lc(p,4096,o)|0;c[88392]=(c[88392]|0)+1}c[S>>2]=1;while(1){if(Cd(N,100,c[689]|0)|0){if((a[N>>0]|0)<58?(a[N>>0]|0)>47:0)U=35}else U=35;if((U|0)==35?(U=0,(a[N>>0]|0)!=101):0){U=36;break}c[88385]=(c[88385]|0)+1;if(!(jc(N,12885,3)|0))break;Aa(N);do if(c[R>>2]|0){if((c[88394]|0)==1){o=c[88392]|0;c[88392]=o+1;c[l>>2]=N;lc(18464+(o*50|0)|0,4443,l)|0;break}c[Q>>2]=0;c[P>>2]=0;while(1){if((c[Q>>2]|0)==(((c[88394]|0)+3|0)%4|0|0))break;o=18464+(((c[88393]|0)+(c[S>>2]|0)|0)*50|0)|0;p=c[P>>2]|0;c[P>>2]=p+1;if((a[o+p>>0]|0)==44)c[Q>>2]=(c[Q>>2]|0)+1;if((c[P>>2]|0)>99){U=48;break}}if((U|0)==48){U=0;Fa(4542)}bd(O,18464+(((c[88393]|0)+(c[S>>2]|0)|0)*50|0)|0)|0;a[O+((c[P>>2]|0)-1)>>0]=0;if((c[P>>2]|0)<100){p=c[88393]|0;o=c[S>>2]|0;c[S>>2]=o+1;q=O+(c[P>>2]|0)+1|0;c[m>>2]=O;c[m+4>>2]=N;c[m+8>>2]=q;lc(18464+((p+o|0)*50|0)|0,4599,m)|0}}else{c[n>>2]=N;Td(4520,n)|0;if(!(c[88394]|0))c[88393]=(c[88392]|0)-1;c[88394]=((c[88394]|0)+1|0)%4|0;c[R>>2]=(c[R>>2]|0)+1}while(0)}if((U|0)==36){Fa(4460);ga(1)}U=85-(c[88394]|0)-(((c[88394]<<1|c[88394]<<2)^4)&4)|0;c[j>>2]=c[88393];c[j+4>>2]=U;Td(4607,j)|0;Td(4240,i)|0;i=85-(c[88394]|0)-(((c[88394]<<1|c[88394]<<2)^4)&4)|0;c[h>>2]=c[88393];c[h+4>>2]=i;Td(4635,h)|0;Td(4289,g)|0;k=d;return}function Fa(a){a=a|0;var b=0,d=0,e=0,f=0;b=k;k=k+16|0;d=b;e=b+8|0;c[e>>2]=a;a=c[721]|0;f=c[e>>2]|0;c[d>>2]=c[88385];c[d+4>>2]=f;Od(a,4694,d)|0;k=b;return}function Ga(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=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;e=k;k=k+5408|0;f=e+5376|0;g=e+5368|0;h=e+5360|0;i=e+5352|0;j=e+5344|0;l=e+5336|0;m=e+5328|0;n=e+5320|0;o=e+5312|0;p=e+5304|0;q=e+5296|0;r=e+5288|0;s=e+5280|0;t=e+5272|0;u=e+5264|0;v=e+5256|0;w=e+5248|0;x=e+5240|0;y=e+5232|0;z=e+5224|0;A=e+5216|0;B=e+5208|0;C=e+5200|0;D=e+5192|0;E=e+5184|0;F=e+5176|0;G=e+5168|0;H=e+5160|0;I=e+5152|0;J=e+5144|0;K=e+5136|0;L=e+5128|0;M=e+5120|0;N=e+5112|0;O=e+5396|0;P=e+5401|0;Q=e+5400|0;R=e+5392|0;S=e+5388|0;T=e+5384|0;U=e+5380|0;V=e+5008|0;W=e;c[O>>2]=b;a[P>>0]=46;a[Q>>0]=88;c[U>>2]=0;if((d[c[(c[O>>2]|0)+8>>2]>>0]|0)>32)a[P>>0]=a[c[(c[O>>2]|0)+8>>2]>>0]|0;if((d[c[(c[O>>2]|0)+12>>2]>>0]|0)>32)a[Q>>0]=a[c[(c[O>>2]|0)+12>>2]>>0]|0;while(1){if(Cd(V,100,c[689]|0)|0){if((a[V>>0]|0)<58?(a[V>>0]|0)>47:0)X=9}else X=9;if((X|0)==9?(X=0,(a[V>>0]|0)!=101):0){X=10;break}c[88385]=(c[88385]|0)+1;O=(jc(V,12885,3)|0)!=0;Y=(c[88395]|0)!=0;if(!O)break;if(Y){c[268464+(c[88396]<<10)+(c[319664+(c[88396]<<2)>>2]<<2)>>2]=0;c[R>>2]=0;while(1){if((c[R>>2]|0)>=32)break;if((a[V+(c[R>>2]|0)>>0]|0)!=(a[P>>0]|0)?(a[V+(c[R>>2]|0)>>0]|0)!=(a[Q>>0]|0):0)break;O=268464+(c[88396]<<10)+(c[319664+(c[88396]<<2)>>2]<<2)|0;c[O>>2]=c[O>>2]<<1;if((a[V+(c[R>>2]|0)>>0]|0)==(a[Q>>0]|0)){O=268464+(c[88396]<<10)+(c[319664+(c[88396]<<2)>>2]<<2)|0;c[O>>2]=c[O>>2]|1}c[R>>2]=(c[R>>2]|0)+1}O=319664+(c[88396]<<2)|0;c[O>>2]=(c[O>>2]|0)+1}else{O=c[U>>2]|0;c[U>>2]=O+1;bd(W+(O*100|0)|0,V)|0}}if((X|0)==10){Fa(4704);ga(1)}if(Y){c[N>>2]=c[88396];Td(4766,N)|0;Td(4785,M)|0;c[L>>2]=c[88396];Td(4802,L)|0;Td(4821,K)|0;c[J>>2]=c[88396];Td(4840,J)|0;Td(4859,I)|0;c[H>>2]=c[88396];Td(4876,H)|0;Td(4895,G)|0;c[88396]=(c[88396]|0)+1;k=e;return}Td(4914,F)|0;Td(4931,E)|0;Td(4951,D)|0;Td(4959,C)|0;Td(4971,B)|0;c[A>>2]=c[88396];Td(4980,A)|0;c[z>>2]=c[88396];Td(4996,z)|0;c[S>>2]=0;while(1){if((c[S>>2]|0)>=(c[U>>2]|0))break;Td(5007,y)|0;c[T>>2]=0;while(1){if((c[T>>2]|0)>=8)break;if((a[W+((c[S>>2]|0)*100|0)+(c[T>>2]|0)>>0]|0)==(a[Q>>0]|0))Td(5017,x)|0;else Td(5019,w)|0;c[T>>2]=(c[T>>2]|0)+1}Td(5021,v)|0;c[T>>2]=15;while(1){if((c[T>>2]|0)<8)break;if((a[W+((c[S>>2]|0)*100|0)+(c[T>>2]|0)>>0]|0)==(a[Q>>0]|0))Td(5017,u)|0;else Td(5019,t)|0;c[T>>2]=(c[T>>2]|0)+-1}Td(5021,s)|0;c[T>>2]=16;while(1){if((c[T>>2]|0)>=24)break;if((a[W+((c[S>>2]|0)*100|0)+(c[T>>2]|0)>>0]|0)==(a[Q>>0]|0))Td(5017,r)|0;else Td(5019,q)|0;c[T>>2]=(c[T>>2]|0)+1}Td(5021,p)|0;c[T>>2]=31;while(1){if((c[T>>2]|0)<24)break;if((a[W+((c[S>>2]|0)*100|0)+(c[T>>2]|0)>>0]|0)==(a[Q>>0]|0))Td(5017,o)|0;else Td(5019,n)|0;c[T>>2]=(c[T>>2]|0)+-1}Td(5026,m)|0;c[S>>2]=(c[S>>2]|0)+1}c[l>>2]=c[88396];Td(5028,l)|0;c[j>>2]=c[88396];Td(5039,j)|0;if(c[88397]|0)Td(5057,i)|0;else Td(5079,h)|0;Td(5097,g)|0;c[f>>2]=c[88396];Td(5103,f)|0;c[88396]=(c[88396]|0)+1;k=e;return}function Ha(){return c[88387]|0}function Ia(){return c[88386]|0}function Ja(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+144|0;d=b+128|0;e=b+64|0;f=b+48|0;g=b+32|0;h=b+16|0;i=b;j=b+132|0;c[j>>2]=a;if((c[88386]|0)==0|(c[88387]|0)==1){c[i>>2]=c[j>>2];Td(3852,i)|0;k=b;return}else{Td(3861,b+8|0)|0;i=(c[88389]|0)+1|0;c[88389]=i;c[h>>2]=i;Td(3873,h)|0;Td(3897,b+24|0)|0;c[g>>2]=c[88389];Td(3903,g)|0;Td(3897,b+40|0)|0;c[f>>2]=c[j>>2];Td(3927,f)|0;Td(3897,b+56|0)|0;c[e>>2]=c[j>>2];Td(3942,e)|0;Td(3897,b+72|0)|0;Td(3957,b+80|0)|0;Td(3897,b+88|0)|0;Td(3969,b+96|0)|0;Td(3897,b+104|0)|0;Td(5119,b+112|0)|0;Td(3985,b+120|0)|0;c[d>>2]=c[88389];Td(3998,d)|0;k=b;return}}function Ka(a){a=a|0;var b=0,d=0;b=k;k=k+240|0;d=b+236|0;c[d>>2]=a;if(!(jc(c[d>>2]|0,5128,11)|0)){Td(5141,b)|0;Td(5150,b+8|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5162,12)|0)){Td(5176,b+16|0)|0;Td(5150,b+24|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5185,11)|0)){Td(5198,b+32|0)|0;Td(5150,b+40|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5209,12)|0)){Td(5223,b+48|0)|0;Td(5150,b+56|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5234,8)|0)){Td(5244,b+64|0)|0;Td(5150,b+72|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5253,6)|0)){Td(5261,b+80|0)|0;Td(5272,b+88|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5284,8)|0)){Td(5294,b+96|0)|0;Td(5272,b+104|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5305,8)|0)){Td(5198,b+112|0)|0;Td(5272,b+120|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5315,9)|0)){Td(5223,b+128|0)|0;Td(5272,b+136|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5326,6)|0)){Td(5141,b+144|0)|0;Td(5272,b+152|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5334,8)|0)){Td(5176,b+160|0)|0;Td(5272,b+168|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5344,8)|0)){Td(5354,b+176|0)|0;Td(5272,b+184|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5363,9)|0)){Td(5244,b+192|0)|0;Td(5272,b+200|0)|0;k=b;return}if(!(jc(c[d>>2]|0,5374,8)|0)){Td(5223,b+208|0)|0;Td(5384,b+216|0)|0;k=b;return}if(jc(c[d>>2]|0,5396,8)|0){Fa(5418);k=b;return}else{Td(5223,b+224|0)|0;Td(5406,b+232|0)|0;k=b;return}}function La(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=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;d=k;k=k+1152|0;e=d+1128|0;f=d+1120|0;g=d+1112|0;h=d+1104|0;i=d+1096|0;j=d+1088|0;l=d+1080|0;m=d+1072|0;n=d+1064|0;o=d+1056|0;p=d+1048|0;q=d+1040|0;r=d+1032|0;s=d+1024|0;t=d+1016|0;u=d+1140|0;v=d+1136|0;w=d+512|0;x=d;y=d+1132|0;c[u>>2]=b;if((c[u>>2]|0)==1){k=d;return}a[x>>0]=0;bd(x,319872)|0;if((a[319872+((Zc(319872)|0)-1)>>0]|0)!=92?(a[319872+((Zc(319872)|0)-1)>>0]|0)!=47:0)Sd(x,5473)|0;else Sd(x,5463)|0;Sd(x,5484)|0;c[88387]=c[u>>2];if((c[88387]|0)>(c[88388]|0))Fa(5495);u=(c[88387]|0)-1|0;c[t>>2]=(c[88387]|0)-1;c[t+4>>2]=u;Td(5515,t)|0;t=td(5484,5591)|0;c[v>>2]=t;if((t|0)==0?(t=td(x,5591)|0,c[v>>2]=t,(t|0)==0):0){Od(c[721]|0,5593,s)|0;ga(1)}do if(!(Cd(w,500,c[v>>2]|0)|0))break;while((jc(w,5629,6)|0)!=0);c[y>>2]=Ud(w+6|0)|0;if((c[88387]|0)==2){s=c[88398]|0;c[88398]=s+1;c[r>>2]=c[y>>2];lc(320384+(s*100|0)|0,5636,r)|0}c[q>>2]=(c[88387]|0)-1;Td(5655,q)|0;c[p>>2]=(15-((c[88386]|0)/2|0)+((c[88387]|0)-1<<1)<<4)+15;Td(5682,p)|0;c[o>>2]=(c[88387]|0)-1;Td(5709,o)|0;while(1){if(!(Cd(w,500,c[v>>2]|0)|0))break;if((a[w>>0]|0)==32){c[n>>2]=w;Td(5722,n)|0}}zd(c[v>>2]|0)|0;c[m>>2]=(c[88387]|0)-1;Td(5725,m)|0;c[l>>2]=(15-((c[88386]|0)/2|0)+((c[88387]|0)-1<<1)<<4)+15;Td(5738,l)|0;c[j>>2]=(c[88387]|0)-1;Td(5751,j)|0;c[i>>2]=(c[88387]|0)-1;Td(5751,i)|0;c[h>>2]=c[88387];Td(5772,h)|0;c[g>>2]=15-((c[88386]|0)/2|0)+(c[88387]<<1)<<4;Td(5785,g)|0;if(c[88397]|0)Td(5798,f)|0;if((c[88387]|0)!=(c[88388]|0)){k=d;return}Td(5830,e)|0;k=d;return}function Ma(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0.0;d=k;k=k+80|0;e=d+56|0;f=d+64|0;g=d+60|0;h=d;c[f>>2]=b;c[g>>2]=Na(c[f>>2]|0)|0;a[(c[f>>2]|0)+(c[g>>2]|0)>>0]=0;c[e>>2]=(c[f>>2]|0)+(c[g>>2]|0)+1;lc(h,5859,e)|0;i=+Xd(h);k=d;return +i}function Na(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=k;k=k+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=b;c[g>>2]=0;while(1){if((c[g>>2]|0)>=50){h=8;break}if(!(a[(c[f>>2]|0)+(c[g>>2]|0)>>0]|0)){h=4;break}i=c[g>>2]|0;if((a[(c[f>>2]|0)+(c[g>>2]|0)>>0]|0)==46){h=6;break}c[g>>2]=i+1}if((h|0)==4){c[e>>2]=50;j=c[e>>2]|0;k=d;return j|0}else if((h|0)==6){c[e>>2]=i;j=c[e>>2]|0;k=d;return j|0}else if((h|0)==8){c[e>>2]=c[g>>2];j=c[e>>2]|0;k=d;return j|0}return 0}function Oa(a){a=a|0;var b=0,d=0,e=0,f=0;b=k;k=k+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=0;while(1){f=c[d>>2]|0;if((c[e>>2]|0)>=50)break;_b(c[f+(c[e>>2]<<2)>>2]|0);c[e>>2]=(c[e>>2]|0)+1}_b(f);k=b;return}function Pa(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+96|0;d=b+72|0;e=b+64|0;f=b+56|0;g=b+80|0;h=b;i=b+76|0;c[g>>2]=a;c[i>>2]=0;while(1){if((c[i>>2]|0)>=(c[88399]|0))break;bd(h,332884+((c[i>>2]|0)*50|0)|0)|0;if(!(ic(330384+((c[i>>2]|0)*50|0)|0,c[g>>2]|0)|0)){j=4;break}c[i>>2]=(c[i>>2]|0)+1}if((j|0)==4){c[f>>2]=h;Td(4011,f)|0;k=b;return}if((Na(c[g>>2]|0)|0)<50){c[e>>2]=~~(+Ma(c[g>>2]|0)*256.0);Td(5864,e)|0;k=b;return}else{Td(5869,d)|0;k=b;return}}function Qa(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=k;k=k+16|0;d=b+8|0;e=b+4|0;f=b;c[e>>2]=a;Aa(c[e>>2]|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[88399]|0))break;if(!(ic(c[e>>2]|0,330384+((c[f>>2]|0)*50|0)|0)|0)){g=4;break}c[f>>2]=(c[f>>2]|0)+1}if((g|0)==4){c[d>>2]=8;h=c[d>>2]|0;k=b;return h|0}c[f>>2]=0;while(1){i=c[e>>2]|0;if((c[f>>2]|0)>=(c[88400]|0))break;if(!(ic(i,335392+((c[f>>2]|0)*50|0)|0)|0)){g=9;break}c[f>>2]=(c[f>>2]|0)+1}if((g|0)==9){c[d>>2]=4;h=c[d>>2]|0;k=b;return h|0}if((Na(i)|0)<50){c[d>>2]=12;h=c[d>>2]|0;k=b;return h|0}else{c[d>>2]=0;h=c[d>>2]|0;k=b;return h|0}return 0}function Ra(a){a=a|0;var b=0,d=0,e=0;b=k;k=k+16|0;d=b;e=b+4|0;c[e>>2]=a;if(!(jc(c[e>>2]|0,5873,2)|0)){a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,5877)|0;k=b;return}if(!(jc(c[e>>2]|0,5887,2)|0)){c[88386]=8;c[88388]=2;a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,5891)|0;a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,5918)|0;a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,5933)|0;if(jc(c[e>>2]|0,5945,4)|0){Sa(5979);k=b;return}else{a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,5951)|0;Sa(5965);c[88397]=1;k=b;return}}if(!(jc(c[e>>2]|0,5994,2)|0)){c[88386]=16;c[88388]=4;a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,5999)|0;a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,6026)|0;a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,6042)|0;if(jc(c[e>>2]|0,6054,5)|0){Sa(5979);k=b;return}else{a=c[88398]|0;c[88398]=a+1;bd(320384+(a*100|0)|0,5951)|0;Sa(5965);c[88397]=1;k=b;return}}if(jc(c[e>>2]|0,6061,2)|0){if(!(jc(c[e>>2]|0,6128,2)|0)){k=b;return}a=c[721]|0;c[d>>2]=c[e>>2];Od(a,6132,d)|0;k=b;return}c[88386]=32;c[88388]=8;d=c[88398]|0;c[88398]=d+1;bd(320384+(d*100|0)|0,6066)|0;d=c[88398]|0;c[88398]=d+1;bd(320384+(d*100|0)|0,6093)|0;d=c[88398]|0;c[88398]=d+1;bd(320384+(d*100|0)|0,6109)|0;if(jc(c[e>>2]|0,6121,5)|0){Sa(5979);k=b;return}else{e=c[88398]|0;c[88398]=e+1;bd(320384+(e*100|0)|0,5951)|0;Sa(5965);c[88397]=1;k=b;return}}function Sa(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=k;k=k+1056|0;e=d+1024|0;f=d+1016|0;g=d+1044|0;h=d+1040|0;i=d+1036|0;j=d+512|0;l=d;m=d+1032|0;n=d+1028|0;c[g>>2]=b;Aa(c[g>>2]|0);if(c[88401]|0){k=d;return}c[88401]=1;a[l>>0]=0;bd(l,319872)|0;if((a[319872+((Zc(319872)|0)-1)>>0]|0)!=92?(a[319872+((Zc(319872)|0)-1)>>0]|0)!=47:0)Sd(l,5473)|0;else Sd(l,5463)|0;Sd(l,c[g>>2]|0)|0;b=td(c[g>>2]|0,5591)|0;c[h>>2]=b;if((b|0)==0?(b=td(l,5591)|0,c[h>>2]=b,(b|0)==0):0){b=c[721]|0;c[f>>2]=c[g>>2];Od(b,6177,f)|0;ga(1)}f=td(6205,6217)|0;c[i>>2]=f;if(!f){Od(c[721]|0,6219,e)|0;ga(1)}while(1){if(!(Cd(j,500,c[h>>2]|0)|0))break;c[m>>2]=0;while(1){if((c[m>>2]|0)>=500)break;if((a[j+(c[m>>2]|0)>>0]|0)==59){o=16;break}if((a[j+(c[m>>2]|0)>>0]|0)==10){o=18;break}if((a[j+(c[m>>2]|0)>>0]|0)==13){o=20;break}if((a[j+(c[m>>2]|0)>>0]|0)>32){o=22;break}c[n>>2]=0;c[m>>2]=(c[m>>2]|0)+1}if((o|0)==16){o=0;c[n>>2]=0}else if((o|0)==18){o=0;c[n>>2]=0}else if((o|0)==20){o=0;c[n>>2]=0}else if((o|0)==22){o=0;c[n>>2]=1}if(c[n>>2]|0){if((ed(j,6256,6)|0)==0?a[340400]|0:0)jd(340400,c[i>>2]|0)|0;jd(j,c[i>>2]|0)|0}}zd(c[h>>2]|0)|0;zd(c[i>>2]|0)|0;k=d;return}function Ta(a){a=a|0;var b=0,d=0;b=k;k=k+16|0;d=b;c[d>>2]=a;Sd(340400,c[d>>2]|0)|0;k=b;return}function Ua(a){a=a|0;var b=0,d=0,e=0;b=k;k=k+16|0;d=b;e=b+4|0;c[e>>2]=a;c[d>>2]=c[e>>2];Td(6264,d)|0;k=b;return}function Va(b){b=b|0;var d=0,e=0;d=k;k=k+16|0;e=d;c[e>>2]=b;if(c[e>>2]|0)bd(319872,c[e>>2]|0)|0;else a[319872]=0;a[340400]=0;k=d;return}function Wa(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;a=k;k=k+112|0;b=a+96|0;d=a+88|0;e=a+80|0;f=a+72|0;g=a+64|0;h=a+56|0;i=a+48|0;j=a+40|0;l=a+32|0;m=a+24|0;n=a+16|0;o=a+8|0;p=a;q=a+108|0;r=a+104|0;s=a+100|0;if(!(c[88387]|0))c[88387]=1;c[q>>2]=c[88387];while(1){if((c[q>>2]|0)>=(c[88388]|0))break;La((c[q>>2]|0)+1|0);c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[88392]|0))break;c[p>>2]=18464+((c[q>>2]|0)*50|0);Td(5722,p)|0;c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[88396]|0))break;a:do if(c[88395]|0){c[o>>2]=c[319664+(c[q>>2]<<2)>>2];Td(6277,o)|0;c[n>>2]=c[q>>2];Td(6319,n)|0;c[r>>2]=(c[319664+(c[q>>2]<<2)>>2]|0)-1;while(1){if((c[r>>2]|0)<0)break;Td(6331,m)|0;c[s>>2]=15;while(1){if((c[s>>2]|0)<=7)break;if(c[268464+(c[q>>2]<<10)+(c[r>>2]<<2)>>2]&1<>2]|0)Td(5017,l)|0;else Td(5019,j)|0;c[s>>2]=(c[s>>2]|0)+-1}Td(5026,i)|0;c[r>>2]=(c[r>>2]|0)+-1}c[h>>2]=c[319664+(c[q>>2]<<2)>>2];Td(6277,h)|0;c[g>>2]=c[q>>2];Td(6341,g)|0;c[r>>2]=(c[319664+(c[q>>2]<<2)>>2]|0)-1;while(1){if((c[r>>2]|0)<0)break a;Td(6331,f)|0;c[s>>2]=0;while(1){if((c[s>>2]|0)>=8)break;if(c[268464+(c[q>>2]<<10)+(c[r>>2]<<2)>>2]&1<>2]|0)Td(5017,e)|0;else Td(5019,d)|0;c[s>>2]=(c[s>>2]|0)+1}Td(5026,b)|0;c[r>>2]=(c[r>>2]|0)+-1}}while(0);c[q>>2]=(c[q>>2]|0)+1}k=a;return}function Xa(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=k;k=k+16|0;d=b+4|0;e=b;c[e>>2]=a;if((c[e>>2]|0)<11){c[d>>2]=1;f=c[d>>2]|0;k=b;return f|0}if(!((c[e>>2]|0)%2|0)){c[d>>2]=1;f=c[d>>2]|0;k=b;return f|0}a:do{if((c[e>>2]|0)==1)break;a=c[e>>2]|0;do if((c[e>>2]|0)%9|0|0){g=c[e>>2]|0;if(!((a|0)%7|0)){c[e>>2]=(g|0)/7|0;break}h=c[e>>2]|0;if(!((g|0)%5|0)){c[e>>2]=(h|0)/5|0;break}g=c[e>>2]|0;if(!((h|0)%3|0)){c[e>>2]=(g|0)/3|0;break}if((g|0)%2|0|0)break a;c[e>>2]=(c[e>>2]|0)/2|0}else c[e>>2]=(a|0)/9|0;while(0)}while(!(((c[e>>2]|0)%2|0|0)==0?(c[88402]&1|0)!=1:0));if((c[e>>2]|0)==1){c[d>>2]=1;f=c[d>>2]|0;k=b;return f|0}else{c[d>>2]=0;f=c[d>>2]|0;k=b;return f|0}return 0}function Ya(a){a=a|0;var b=0,d=0,e=0,f=0;b=k;k=k+16|0;d=b+4|0;e=b;c[e>>2]=a;while(1){if((c[e>>2]|0)==1)break;if((c[e>>2]|0)%2|0|0)break;c[e>>2]=(c[e>>2]|0)/2|0}if((c[e>>2]|0)==1){c[d>>2]=1;f=c[d>>2]|0;k=b;return f|0}else{c[d>>2]=0;f=c[d>>2]|0;k=b;return f|0}return 0}function Za(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=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,ja=0,ka=0,la=0,ma=0,na=0,oa=0;d=k;k=k+512|0;e=d+488|0;f=d+480|0;g=d+472|0;h=d+464|0;i=d+456|0;j=d+448|0;l=d+440|0;m=d+432|0;n=d+424|0;o=d+416|0;p=d+408|0;q=d+400|0;r=d+392|0;s=d+384|0;t=d+376|0;u=d+368|0;v=d+360|0;w=d+352|0;x=d+344|0;y=d+336|0;z=d+328|0;A=d+320|0;B=d+312|0;C=d+304|0;D=d+296|0;E=d+288|0;F=d+280|0;G=d+272|0;H=d+264|0;I=d+256|0;J=d+248|0;K=d+240|0;L=d+232|0;M=d+224|0;N=d+216|0;O=d+208|0;P=d+200|0;Q=d+192|0;R=d+184|0;S=d+176|0;T=d+168|0;U=d+160|0;V=d+152|0;W=d+144|0;X=d+136|0;Y=d+128|0;Z=d+120|0;_=d+112|0;$=d+104|0;aa=d+96|0;ba=d+88|0;ca=d+80|0;da=d+72|0;ea=d+64|0;fa=d+56|0;ga=d+48|0;ha=d+40|0;ia=d+32|0;ja=d+24|0;ka=d+16|0;la=d+504|0;ma=d+500|0;na=d+496|0;oa=d+492|0;c[la>>2]=a;c[ma>>2]=b;c[na>>2]=Ud(c[(c[la>>2]|0)+24>>2]|0)|0;c[oa>>2]=0;if((c[ma>>2]|0)==16){Td(6353,d)|0;Td(6362,d+8|0)|0}while(1){if((c[na>>2]|0)==1)break;do if((c[na>>2]|0)%9|0|0){if(!((c[na>>2]|0)%7|0)){if(c[oa>>2]|0){bd(c[(c[la>>2]|0)+16>>2]|0,6374)|0;Td(6380,X)|0}c[na>>2]=(c[na>>2]|0)/7|0;Td(6392,W)|0;if((c[ma>>2]|0)==16)Td(6398,V)|0;Td(6392,U)|0;if((c[ma>>2]|0)==16)Td(6398,T)|0;Td(6392,S)|0;if((c[ma>>2]|0)==16)Td(6398,R)|0;Td(6468,Q)|0;Td(6474,P)|0;Ca(c[(c[la>>2]|0)+16>>2]|0)|0;c[O>>2]=c[(c[la>>2]|0)+16>>2];Td(4011,O)|0;if((c[ma>>2]|0)==16){Td(6423,N)|0;Td(6429,M)|0;Td(6480,L)|0;Td(6450,K)|0;Td(6462,J)|0}c[oa>>2]=1;break}if(!((c[na>>2]|0)%5|0)){if(c[oa>>2]|0){bd(c[(c[la>>2]|0)+16>>2]|0,6374)|0;Td(6380,I)|0}c[na>>2]=(c[na>>2]|0)/5|0;Td(6392,H)|0;if((c[ma>>2]|0)==16)Td(6398,G)|0;Td(6392,F)|0;if((c[ma>>2]|0)==16)Td(6398,E)|0;Td(6411,D)|0;Td(6417,C)|0;Ca(c[(c[la>>2]|0)+16>>2]|0)|0;c[B>>2]=c[(c[la>>2]|0)+16>>2];Td(4011,B)|0;if((c[ma>>2]|0)==16){Td(6423,A)|0;Td(6429,z)|0;Td(6441,y)|0;Td(6450,x)|0;Td(6462,w)|0}c[oa>>2]=1;break}if((c[na>>2]|0)%3|0|0){b=c[na>>2]|0;if((c[na>>2]|0)%2|0|0){c[h>>2]=b;Td(6489,h)|0;c[g>>2]=c[ma>>2];Td(6499,g)|0;Od(c[721]|0,6511,f)|0;Od(c[721]|0,6584,e)|0;break}c[na>>2]=(b|0)/2|0;Td(6392,j)|0;if((c[ma>>2]|0)!=16)break;Td(6398,i)|0;break}if(c[oa>>2]|0){bd(c[(c[la>>2]|0)+16>>2]|0,6374)|0;Td(6380,v)|0}c[na>>2]=(c[na>>2]|0)/3|0;Td(6392,u)|0;if((c[ma>>2]|0)==16)Td(6398,t)|0;Td(6411,s)|0;Td(6417,r)|0;Ca(c[(c[la>>2]|0)+16>>2]|0)|0;c[q>>2]=c[(c[la>>2]|0)+16>>2];Td(4011,q)|0;if((c[ma>>2]|0)==16){Td(6423,p)|0;Td(6429,o)|0;Td(6441,n)|0;Td(6450,m)|0;Td(6462,l)|0}c[oa>>2]=1}else{if(c[oa>>2]|0){bd(c[(c[la>>2]|0)+16>>2]|0,6374)|0;Td(6380,ka)|0}c[na>>2]=(c[na>>2]|0)/9|0;Td(6392,ja)|0;if((c[ma>>2]|0)==16)Td(6398,ia)|0;Td(6392,ha)|0;if((c[ma>>2]|0)==16)Td(6398,ga)|0;Td(6392,fa)|0;if((c[ma>>2]|0)==16)Td(6398,ea)|0;Td(6411,da)|0;Td(6417,ca)|0;Ca(c[(c[la>>2]|0)+16>>2]|0)|0;c[ba>>2]=c[(c[la>>2]|0)+16>>2];Td(4011,ba)|0;if((c[ma>>2]|0)==16){Td(6423,aa)|0;Td(6429,$)|0;Td(6441,_)|0;Td(6450,Z)|0;Td(6462,Y)|0}c[oa>>2]=1}while(0)}k=d;return}function _a(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;d=k;k=k+80|0;e=d+56|0;f=d+48|0;g=d+40|0;h=d+32|0;i=d+24|0;j=d+16|0;l=d+68|0;m=d+64|0;n=d+60|0;c[l>>2]=a;c[m>>2]=b;c[n>>2]=Ud(c[(c[l>>2]|0)+24>>2]|0)|0;if((c[m>>2]|0)==16){Td(6353,d)|0;Td(6362,d+8|0)|0}while(1){if((c[n>>2]|0)==1)break;l=c[n>>2]|0;if(!((c[n>>2]|0)%2|0|0)){c[n>>2]=(l|0)/2|0;Td(6655,j)|0;if((c[m>>2]|0)==16)Td(6398,i)|0}else{c[h>>2]=l;Td(6489,h)|0;c[g>>2]=c[m>>2];Td(6661,g)|0;Od(c[721]|0,6511,f)|0;Od(c[721]|0,6584,e)|0}}k=d;return}function $a(){if(!(c[88403]|0))Fa(6673);c[88403]=0;return}function ab(a){a=a|0;var b=0,d=0,e=0;b=k;k=k+32|0;d=b;e=b+20|0;c[e>>2]=a;c[88403]=1;c[d>>2]=c[(c[e>>2]|0)+8>>2];Td(4011,d)|0;Td(6709,b+8|0)|0;Td(6721,b+16|0)|0;k=b;return}function bb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=k;k=k+160|0;e=d+136|0;f=d+128|0;g=d+120|0;h=d+112|0;i=d+104|0;j=d+152|0;l=d+148|0;m=d+144|0;n=d+48|0;o=d+140|0;p=d;c[j>>2]=b;c[m>>2]=0;c[o>>2]=0;c[l>>2]=6;while(1){if((a[c[(c[j>>2]|0)+(c[l>>2]<<2)>>2]>>0]|0)==41)break;if((a[c[(c[j>>2]|0)+(c[l>>2]<<2)>>2]>>0]|0)!=44){b=c[l>>2]|0;q=c[o>>2]|0;c[o>>2]=q+1;c[p+(q<<2)>>2]=b}if((c[l>>2]|0)>45)Fa(6733);c[l>>2]=(c[l>>2]|0)+1}if(!(c[o>>2]|0)){l=c[721]|0;c[i>>2]=c[88385];Od(l,6770,i)|0}while(1){if(!(c[o>>2]|0))break;c[m>>2]=0;i=c[j>>2]|0;l=(c[o>>2]|0)+-1|0;c[o>>2]=l;b=xa(c[i+(c[p+(l<<2)>>2]<<2)>>2]|0,n)|0;c[m>>2]=c[m>>2]|b;if(c[m>>2]|0)ya(n);if((c[o>>2]|0)==1)Td(6817,h)|0;else Td(3846,g)|0;za(c[(c[j>>2]|0)+(c[p+(c[o>>2]<<2)>>2]<<2)>>2]|0,c[m>>2]|0);if((c[o>>2]|0)>1){c[f>>2]=(c[o>>2]|0)+1;Td(6823,f)|0}}c[e>>2]=c[(c[j>>2]|0)+16>>2];Td(3852,e)|0;bd(18400,4029)|0;k=d;return}function cb(){c[88385]=(c[88385]|0)+1;return}function db(){return c[88385]|0}function eb(a){a=a|0;var b=0,d=0,e=0,f=0;b=k;k=k+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=0;do{if((c[e>>2]|0)>=48)break;a=c[d>>2]|0;f=c[e>>2]|0;c[e>>2]=f+1}while((jc(c[a+(f<<2)>>2]|0,12768,4)|0)!=0);f=fb(c[d>>2]|0,c[e>>2]|0)|0;k=b;return f|0}function fb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k;k=k+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=b;c[h>>2]=d;if((a[c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]>>0]|0)>47?(a[c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]>>0]|0)<59:0)c[f>>2]=0;else i=4;do if((i|0)==4){if((a[c[(c[g>>2]|0)+((c[h>>2]|0)+1<<2)>>2]>>0]|0)==58?jc(c[(c[g>>2]|0)+((c[h>>2]|0)+2<<2)>>2]|0,12723,3)|0:0){c[f>>2]=1;break}if((a[c[(c[g>>2]|0)+((c[h>>2]|0)+1<<2)>>2]>>0]|0)==58?(jc(c[(c[g>>2]|0)+((c[h>>2]|0)+2<<2)>>2]|0,12723,3)|0)==0:0){c[f>>2]=0;break}if(!(jc(c[(c[g>>2]|0)+((c[h>>2]|0)+1<<2)>>2]|0,12732,4)|0)){c[f>>2]=0;break}if(a[c[(c[g>>2]|0)+((c[h>>2]|0)+1<<2)>>2]>>0]|0){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13036,10)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13122,6)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13190,13)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13205,13)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13130,8)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13140,8)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13150,8)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13160,8)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13170,8)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13180,8)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13110,10)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13087,9)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13098,10)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13048,3)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,12723,3)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,12977,4)|0)){c[f>>2]=1;break}if(!(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13071,6)|0)){c[f>>2]=1;break}if(jc(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,13063,6)|0){c[f>>2]=0;break}else{c[f>>2]=1;break}}while(0);k=e;return c[f>>2]|0}function gb(a){a=a|0;var b=0,d=0,e=0,f=0;b=k;k=k+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=0;do{if((c[e>>2]|0)>=48)break;a=c[d>>2]|0;f=c[e>>2]|0;c[e>>2]=f+1}while((jc(c[a+(f<<2)>>2]|0,12732,4)|0)!=0);f=fb(c[d>>2]|0,c[e>>2]|0)|0;k=b;return f|0}function hb(a){a=a|0;var b=0,d=0,e=0;b=k;k=k+48|0;d=b;e=b+36|0;c[e>>2]=a;c[d>>2]=c[(c[e>>2]|0)+24>>2];Td(6836,d)|0;Td(6846,b+8|0)|0;Td(6858,b+16|0)|0;Td(6868,b+24|0)|0;Td(6878,b+32|0)|0;bd(18400,4029)|0;k=b;return}function ib(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=k;k=k+288|0;e=d+264|0;f=d+256|0;g=d+248|0;h=d+240|0;i=d+232|0;j=d+224|0;l=d+216|0;m=d+208|0;n=d+200|0;o=d+272|0;p=d;q=d+268|0;c[o>>2]=b;Aa(c[(c[o>>2]|0)+16>>2]|0);b=c[88398]|0;c[88398]=b+1;r=c[(c[o>>2]|0)+16>>2]|0;c[n>>2]=c[(c[o>>2]|0)+8>>2];c[n+4>>2]=r;lc(320384+(b*100|0)|0,6888,n)|0;c[m>>2]=c[(c[o>>2]|0)+8>>2];Td(6896,m)|0;c[l>>2]=c[(c[o>>2]|0)+16>>2];Td(6913,l)|0;c[j>>2]=c[(c[o>>2]|0)+8>>2];Td(6922,j)|0;c[i>>2]=c[(c[o>>2]|0)+16>>2];Td(6939,i)|0;c[h>>2]=c[c[o>>2]>>2];Td(6950,h)|0;c[g>>2]=c[(c[o>>2]|0)+8>>2];Td(6964,g)|0;while(1){if(Cd(p,200,c[689]|0)|0){if((a[p>>0]|0)<58?(a[p>>0]|0)>47:0)s=5}else s=5;if((s|0)==5?(s=0,(a[p>>0]|0)!=101):0){s=6;break}c[88385]=(c[88385]|0)+1;if(!(jc(p,12885,3)|0)){s=17;break}jb(p);c[q>>2]=0;while(1){if((c[q>>2]|0)>=200)break;if((a[p+(c[q>>2]|0)>>0]|0)>32)break;if((a[p+(c[q>>2]|0)>>0]|0)<14)c[q>>2]=200;c[q>>2]=(c[q>>2]|0)+1}if((c[q>>2]|0)<200){c[f>>2]=p;Td(7019,f)|0}}if((s|0)==6){Fa(6974);ga(1)}else if((s|0)==17){c[e>>2]=c[c[o>>2]>>2];Td(7030,e)|0;k=d;return}}function jb(b){b=b|0;var d=0,e=0,f=0,g=0;d=k;k=k+16|0;e=d+4|0;f=d;c[e>>2]=b;c[f>>2]=(Zc(c[e>>2]|0)|0)-1;while(1){if((c[f>>2]|0)<=0){g=10;break}if((((a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)!=44?(a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)!=32:0)?(a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)!=10:0)?(a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)!=13:0){g=10;break}if((a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)==44){g=8;break}c[f>>2]=(c[f>>2]|0)+-1}if((g|0)==8){a[(c[e>>2]|0)+(c[f>>2]|0)>>0]=32;k=d;return}else if((g|0)==10){k=d;return}}function kb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=k;k=k+272|0;e=d+240|0;f=d+232|0;g=d+224|0;h=d+216|0;i=d+208|0;j=d+200|0;l=d+260|0;m=d;n=d+256|0;o=d+252|0;p=d+248|0;c[l>>2]=b;c[n>>2]=Zb(200)|0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=50)break;b=$b(50,1)|0;c[(c[n>>2]|0)+(c[p>>2]<<2)>>2]=b;c[p>>2]=(c[p>>2]|0)+1}c[o>>2]=c[n>>2];Aa(c[(c[l>>2]|0)+8>>2]|0);if(!(c[88402]&4)){c[j>>2]=c[c[l>>2]>>2];Td(6950,j)|0}c[i>>2]=c[(c[l>>2]|0)+8>>2];Td(4011,i)|0;while(1){if(Cd(m,200,c[689]|0)|0){if((a[m>>0]|0)<58?(a[m>>0]|0)>47:0)q=10}else q=10;if((q|0)==10?(q=0,(a[m>>0]|0)!=101):0){q=11;break}c[88385]=(c[88385]|0)+1;if(!(jc(m,12885,3)|0)){q=22;break}jb(m);c[p>>2]=0;while(1){if((c[p>>2]|0)>=200)break;if((a[m+(c[p>>2]|0)>>0]|0)>32)break;if((a[m+(c[p>>2]|0)>>0]|0)<14)c[p>>2]=200;c[p>>2]=(c[p>>2]|0)+1}if((c[p>>2]|0)<200){c[h>>2]=m;Td(7019,h)|0}}if((q|0)==11){Fa(6974);ga(1)}else if((q|0)==22){c[g>>2]=c[c[l>>2]>>2];Td(7030,g)|0;bd(c[c[n>>2]>>2]|0,7039)|0;bd(c[(c[n>>2]|0)+4>>2]|0,7041)|0;g=c[(c[n>>2]|0)+8>>2]|0;c[f>>2]=c[(c[l>>2]|0)+8>>2];lc(g,7047,f)|0;bd(c[(c[n>>2]|0)+12>>2]|0,7057)|0;f=c[(c[n>>2]|0)+16>>2]|0;g=c[(c[l>>2]|0)+8>>2]|0;c[e>>2]=c[c[l>>2]>>2];c[e+4>>2]=g;lc(f,7059,e)|0;bd(c[(c[n>>2]|0)+20>>2]|0,5026)|0;a[c[(c[n>>2]|0)+24>>2]>>0]=0;Yb(c[n>>2]|0);Oa(c[o>>2]|0);k=d;return}}function lb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k;k=k+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;c[f>>2]=b;c[g>>2]=d;c[h>>2]=49;while(1){if((c[h>>2]|0)<=(c[g>>2]|0))break;c[i>>2]=0;while(1){if((c[i>>2]|0)>=50)break;a[(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0)+(c[i>>2]|0)>>0]=a[(c[(c[f>>2]|0)+((c[h>>2]|0)-1<<2)>>2]|0)+(c[i>>2]|0)>>0]|0;c[i>>2]=(c[i>>2]|0)+1}c[h>>2]=(c[h>>2]|0)+-1}k=e;return}function mb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;f=k;k=k+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;l=f;c[g>>2]=b;c[h>>2]=d;c[i>>2]=e;c[j>>2]=c[h>>2];while(1){if((c[j>>2]|0)>=(50-(c[i>>2]|0)|0))break;c[l>>2]=0;while(1){if((c[l>>2]|0)>=50)break;a[(c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]|0)+(c[l>>2]|0)>>0]=a[(c[(c[g>>2]|0)+((c[j>>2]|0)+(c[i>>2]|0)<<2)>>2]|0)+(c[l>>2]|0)>>0]|0;c[l>>2]=(c[l>>2]|0)+1}c[j>>2]=(c[j>>2]|0)+1}k=f;return}function nb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=k;k=k+96|0;e=d+72|0;f=d+64|0;g=d+56|0;h=d+48|0;i=d+24|0;j=d+8|0;l=d;m=d+84|0;n=d+80|0;o=d+76|0;c[m>>2]=b;c[o>>2]=4;if(ic(c[(c[m>>2]|0)+8>>2]|0,18400)|0){c[l>>2]=c[(c[m>>2]|0)+8>>2];Td(7070,l)|0}c[j>>2]=c[c[m>>2]>>2];Td(7079,j)|0;Td(7102,d+16|0)|0;c[i>>2]=c[c[m>>2]>>2];Td(7108,i)|0;Td(7102,d+32|0)|0;Td(7131,d+40|0)|0;c[h>>2]=c[c[m>>2]>>2];Td(7137,h)|0;while(1){if((a[c[(c[m>>2]|0)+(c[o>>2]<<2)>>2]>>0]|0)==58)break;if(!(a[c[(c[m>>2]|0)+(c[o>>2]<<2)>>2]>>0]|0))break;c[n>>2]=0;while(1){p=c[m>>2]|0;q=c[o>>2]|0;if((c[n>>2]|0)>=50)break;if(!((a[(c[p+(q<<2)>>2]|0)+(c[n>>2]|0)>>0]|0)!=10?(a[(c[(c[m>>2]|0)+(c[o>>2]<<2)>>2]|0)+(c[n>>2]|0)>>0]|0)!=13:0))a[(c[(c[m>>2]|0)+(c[o>>2]<<2)>>2]|0)+(c[n>>2]|0)>>0]=0;c[n>>2]=(c[n>>2]|0)+1}c[o>>2]=q+1;c[g>>2]=c[p+(q<<2)>>2];Td(7153,g)|0}c[f>>2]=c[c[m>>2]>>2];Td(7170,f)|0;c[o>>2]=4;while(1){if((a[c[(c[m>>2]|0)+(c[o>>2]<<2)>>2]>>0]|0)==58){r=23;break}if(!(a[c[(c[m>>2]|0)+(c[o>>2]<<2)>>2]>>0]|0)){r=23;break}c[n>>2]=0;while(1){s=c[m>>2]|0;t=c[o>>2]|0;if((c[n>>2]|0)>=50)break;if(!((a[(c[s+(t<<2)>>2]|0)+(c[n>>2]|0)>>0]|0)!=10?(a[(c[(c[m>>2]|0)+(c[o>>2]<<2)>>2]|0)+(c[n>>2]|0)>>0]|0)!=13:0))a[(c[(c[m>>2]|0)+(c[o>>2]<<2)>>2]|0)+(c[n>>2]|0)>>0]=0;c[n>>2]=(c[n>>2]|0)+1}c[o>>2]=t+1;c[e>>2]=c[s+(t<<2)>>2];Td(7186,e)|0}if((r|0)==23){k=d;return}}function ob(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=k;k=k+48|0;e=d+32|0;f=d+24|0;g=d+16|0;h=d+8|0;i=d+36|0;c[i>>2]=b;if(ic(c[(c[i>>2]|0)+16>>2]|0,18400)|0){Td(3846,d)|0;Ca(c[(c[i>>2]|0)+16>>2]|0)|0;c[h>>2]=c[(c[i>>2]|0)+16>>2];Td(4011,h)|0}c[g>>2]=c[(c[i>>2]|0)+8>>2];Td(7203,g)|0;a[341408+((c[88404]|0)*50|0)>>0]=0;g=341408+((c[88404]|0)*50|0)|0;h=c[(c[i>>2]|0)+8>>2]|0;c[f>>2]=c[c[i>>2]>>2];c[f+4>>2]=h;lc(g,7212,f)|0;c[e>>2]=341408+((c[88404]|0)*50|0);Td(7220,e)|0;a[343920+((c[88404]|0)*50|0)>>0]=0;bd(343920+((c[88404]|0)*50|0)|0,c[(c[i>>2]|0)+24>>2]|0)|0;a[346432+((c[88404]|0)*50|0)>>0]=0;bd(346432+((c[88404]|0)*50|0)|0,c[(c[i>>2]|0)+8>>2]|0)|0;a[348944+((c[88404]|0)*50|0)>>0]=0;e=(ed(c[(c[i>>2]|0)+28>>2]|0,7225,4)|0)!=0;f=348944+((c[88404]|0)*50|0)|0;if(e){bd(f,5017)|0;j=c[88404]|0;l=j+1|0;c[88404]=l;k=d;return}else{bd(f,c[(c[i>>2]|0)+32>>2]|0)|0;j=c[88404]|0;l=j+1|0;c[88404]=l;k=d;return}}function pb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=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;b=k;k=k+272|0;d=b+240|0;e=b+232|0;f=b+224|0;g=b+216|0;h=b+208|0;i=b+200|0;j=b+192|0;l=b+184|0;m=b+176|0;n=b+168|0;o=b+160|0;p=b+152|0;q=b+144|0;r=b+136|0;s=b+128|0;t=b+120|0;u=b+112|0;v=b+104|0;w=b+96|0;x=b+88|0;y=b+80|0;z=b+72|0;A=b+64|0;B=b+256|0;C=b+252|0;D=b+248|0;E=b+244|0;F=b;c[B>>2]=a;c[C>>2]=0;c[D>>2]=0;c[E>>2]=0;wa();if(!(c[88404]|0)){a=c[721]|0;c[A>>2]=c[88385];Od(a,7231,A)|0;ga(1)}c[88404]=(c[88404]|0)+-1;A=(jc(348944+((c[88404]|0)*50|0)|0,7254,2)|0)!=0;a=c[88404]|0;do if(A){if(jc(348944+(a*50|0)|0,7281,3)|0?jc(348944+((c[88404]|0)*50|0)|0,7285,4)|0:0){c[r>>2]=346432+((c[88404]|0)*50|0);Td(7257,r)|0;Td(7299,q)|0;Td(7305,p)|0;c[C>>2]=Ca(348944+((c[88404]|0)*50|0)|0)|0;c[o>>2]=348944+((c[88404]|0)*50|0);Td(4011,o)|0;do if(c[C>>2]|0?Da(343920+((c[88404]|0)*50|0)|0)|0:0){G=((Ud(348944+((c[88404]|0)*50|0)|0)|0)&128|0)!=0;H=Ud(348944+((c[88404]|0)*50|0)|0)|0;if(G){if((256-(H&255)|0)<(Ud(343920+((c[88404]|0)*50|0)|0)|0))break;c[E>>2]=1;c[n>>2]=341408+((c[88404]|0)*50|0);lc(F,7311,n)|0;qb(F);break}else{if((H+(Ud(343920+((c[88404]|0)*50|0)|0)|0)|0)<=255)break;c[E>>2]=1;c[m>>2]=341408+((c[88404]|0)*50|0);lc(F,7311,m)|0;rb(F);break}}while(0);c[l>>2]=346432+((c[88404]|0)*50|0);Td(7203,l)|0;Td(7266,j)|0;c[D>>2]=Ca(343920+((c[88404]|0)*50|0)|0)|0;if(c[D>>2]|0?((Ud(348944+((c[88404]|0)*50|0)|0)|0)&128|0)==0:0)Sd(343920+((c[88404]|0)*50|0)|0,7323)|0;c[i>>2]=343920+((c[88404]|0)*50|0);Td(4011,i)|0;H=348944+((c[88404]|0)*50|0)|0;if(!(c[C>>2]|0)){c[h>>2]=H;Td(7070,h)|0;c[g>>2]=c[c[B>>2]>>2];Td(7326,g)|0;qb(341408+((c[88404]|0)*50|0)|0);Td(7299,f)|0;c[e>>2]=c[c[B>>2]>>2];Td(7339,e)|0;rb(341408+((c[88404]|0)*50|0)|0);break}G=((Ud(H)|0)&128|0)!=0;H=341408+((c[88404]|0)*50|0)|0;if(G){rb(H);break}qb(H);if(c[D>>2]|0)break;tb(341408+((c[88404]|0)*50|0)|0);break}c[v>>2]=346432+((c[88404]|0)*50|0);Td(7290,v)|0;H=(jc(343920+((c[88404]|0)*50|0)|0,7254,2)|0)!=0;G=c[88404]|0;if(H){c[u>>2]=346432+(G*50|0);Td(7257,u)|0;Td(7266,t)|0;Ca(343920+((c[88404]|0)*50|0)|0)|0;c[s>>2]=343920+((c[88404]|0)*50|0);Td(4011,s)|0;rb(341408+((c[88404]|0)*50|0)|0);break}else{sb(341408+(G*50|0)|0);break}}else{c[z>>2]=346432+(a*50|0);Td(7257,z)|0;Td(7266,y)|0;Ca(343920+((c[88404]|0)*50|0)|0)|0;c[x>>2]=343920+((c[88404]|0)*50|0);Td(4011,x)|0;c[w>>2]=346432+((c[88404]|0)*50|0);Td(7272,w)|0;qb(341408+((c[88404]|0)*50|0)|0)}while(0);if(!(c[E>>2]|0)){k=b;return}c[d>>2]=F;Td(7220,d)|0;k=b;return}function qb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+64|0;d=b+48|0;e=b+32|0;f=b+16|0;g=b;h=b+52|0;c[h>>2]=a;Aa(c[h>>2]|0);a=c[h>>2]|0;if(c[88405]|0){i=c[h>>2]|0;j=c[h>>2]|0;c[g>>2]=a;c[g+4>>2]=i;c[g+8>>2]=j;Td(7651,g)|0;g=c[h>>2]|0;j=c[h>>2]|0;c[f>>2]=c[88406];c[f+4>>2]=g;c[f+8>>2]=j;Td(7705,f)|0;f=c[88406]|0;c[88406]=f+1;j=c[h>>2]|0;c[e>>2]=f;c[e+4>>2]=j;Td(7432,e)|0;Td(7443,b+40|0)|0;k=b;return}else{c[d>>2]=a;Td(7736,d)|0;k=b;return}}function rb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+64|0;d=b+48|0;e=b+32|0;f=b+16|0;g=b;h=b+52|0;c[h>>2]=a;Aa(c[h>>2]|0);a=c[h>>2]|0;if(c[88405]|0){i=c[h>>2]|0;j=c[h>>2]|0;c[g>>2]=a;c[g+4>>2]=i;c[g+8>>2]=j;Td(7556,g)|0;g=c[h>>2]|0;j=c[h>>2]|0;c[f>>2]=c[88406];c[f+4>>2]=g;c[f+8>>2]=j;Td(7610,f)|0;f=c[88406]|0;c[88406]=f+1;j=c[h>>2]|0;c[e>>2]=f;c[e+4>>2]=j;Td(7432,e)|0;Td(7443,b+40|0)|0;k=b;return}else{c[d>>2]=a;Td(7641,d)|0;k=b;return}}function sb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+64|0;d=b+48|0;e=b+32|0;f=b+16|0;g=b;h=b+52|0;c[h>>2]=a;Aa(c[h>>2]|0);a=c[h>>2]|0;if(c[88405]|0){i=c[h>>2]|0;j=c[h>>2]|0;c[g>>2]=a;c[g+4>>2]=i;c[g+8>>2]=j;Td(7461,g)|0;g=c[h>>2]|0;j=c[h>>2]|0;c[f>>2]=c[88406];c[f+4>>2]=g;c[f+8>>2]=j;Td(7515,f)|0;f=c[88406]|0;c[88406]=f+1;j=c[h>>2]|0;c[e>>2]=f;c[e+4>>2]=j;Td(7432,e)|0;Td(7443,b+40|0)|0;k=b;return}else{c[d>>2]=a;Td(7546,d)|0;k=b;return}}function tb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+64|0;d=b+48|0;e=b+32|0;f=b+16|0;g=b;h=b+52|0;c[h>>2]=a;Aa(c[h>>2]|0);a=c[h>>2]|0;if(c[88405]|0){i=c[h>>2]|0;j=c[h>>2]|0;c[g>>2]=a;c[g+4>>2]=i;c[g+8>>2]=j;Td(7347,g)|0;g=c[h>>2]|0;j=c[h>>2]|0;c[f>>2]=c[88406];c[f+4>>2]=g;c[f+8>>2]=j;Td(7401,f)|0;f=c[88406]|0;c[88406]=f+1;j=c[h>>2]|0;c[e>>2]=f;c[e+4>>2]=j;Td(7432,e)|0;Td(7443,b+40|0)|0;k=b;return}else{c[d>>2]=a;Td(7451,d)|0;k=b;return}}function ub(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=k;k=k+64|0;e=d+60|0;f=d+56|0;g=d+52|0;h=d;c[e>>2]=b;c[f>>2]=Na(c[(c[e>>2]|0)+16>>2]|0)|0;if((c[f>>2]|0)<50){Aa(c[(c[e>>2]|0)+16>>2]|0);bd(h,c[(c[e>>2]|0)+16>>2]|0)|0;c[g>>2]=h+(c[f>>2]|0)+1;a[h+(c[f>>2]|0)>>0]=0;if(ic(c[g>>2]|0,h)|0){bd(332884+((c[88399]|0)*50|0)|0,c[g>>2]|0)|0;h=c[88399]|0;c[88399]=h+1;bd(330384+(h*50|0)|0,c[(c[e>>2]|0)+8>>2]|0)|0}else{bd(337892+((c[88400]|0)*50|0)|0,c[g>>2]|0)|0;g=c[88400]|0;c[88400]=g+1;bd(335392+(g*50|0)|0,c[(c[e>>2]|0)+8>>2]|0)|0}a[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]|0)>>0]=0}c[f>>2]=2;a[320384+((c[88398]|0)*100|0)>>0]=0;while(1){i=c[88398]|0;if(!(a[c[(c[e>>2]|0)+(c[f>>2]<<2)>>2]>>0]|0))break;g=c[e>>2]|0;h=c[f>>2]|0;c[f>>2]=h+1;Sd(320384+(i*100|0)|0,c[g+(h<<2)>>2]|0)|0;Sd(320384+((c[88398]|0)*100|0)|0,7039)|0}c[88398]=i+1;k=d;return}function vb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=k;k=k+16|0;e=d+4|0;f=d;c[e>>2]=b;c[f>>2]=2;a[320384+((c[88398]|0)*100|0)>>0]=0;while(1){g=c[88398]|0;if(!(a[c[(c[e>>2]|0)+(c[f>>2]<<2)>>2]>>0]|0))break;b=c[e>>2]|0;h=c[f>>2]|0;c[f>>2]=h+1;Sd(320384+(g*100|0)|0,c[b+(h<<2)>>2]|0)|0;Sd(320384+((c[88398]|0)*100|0)|0,7039)|0}c[88398]=g+1;g=c[88390]|0;c[88390]=g+1;bd(13392+(g*100|0)|0,c[(c[e>>2]|0)+8>>2]|0)|0;k=d;return}function wb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=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;d=k;k=k+176|0;e=d+160|0;f=d+152|0;g=d+144|0;h=d+136|0;i=d+128|0;j=d+120|0;l=d+112|0;m=d+104|0;n=d+96|0;o=d+88|0;p=d+80|0;q=d+72|0;r=d+64|0;s=d+56|0;t=d+172|0;u=d+168|0;v=d;w=d+164|0;c[t>>2]=b;c[u>>2]=0;c[w>>2]=0;do if(jc(c[(c[t>>2]|0)+8>>2]|0,7746,8)|0?jc(c[(c[t>>2]|0)+12>>2]|0,7746,8)|0:0){if(jc(c[(c[t>>2]|0)+8>>2]|0,7756,9)|0?jc(c[(c[t>>2]|0)+12>>2]|0,7756,9)|0:0)break;c[w>>2]=2}else x=3;while(0);if((x|0)==3)c[w>>2]=1;if(((a[c[(c[t>>2]|0)+8>>2]>>0]|0?(a[c[(c[t>>2]|0)+8>>2]>>0]|0)!=32:0)?jc(c[(c[t>>2]|0)+8>>2]|0,7746,8)|0:0)?jc(c[(c[t>>2]|0)+8>>2]|0,7756,9)|0:0){x=xa(c[(c[t>>2]|0)+8>>2]|0,v)|0;c[u>>2]=c[u>>2]|x;if(c[u>>2]&1|0)ya(v);if(c[w>>2]|0)Td(3846,r)|0;else Td(6817,s)|0;za(c[(c[t>>2]|0)+8>>2]|0,c[u>>2]&1)}if((c[w>>2]|0)==1){Td(7131,q)|0;k=d;return}if((c[w>>2]|0)==2){Td(7767,p)|0;k=d;return}if(c[88386]|0){Td(7783,o)|0;Td(7789,n)|0;Td(7822,m)|0;Td(7852,l)|0;if(a[c[(c[t>>2]|0)+8>>2]>>0]|0?(a[c[(c[t>>2]|0)+8>>2]>>0]|0)!=32:0){Td(7894,j)|0;Td(7933,i)|0}else Td(7939,h)|0;Td(7767,g)|0}if(a[c[(c[t>>2]|0)+8>>2]>>0]|0?(a[c[(c[t>>2]|0)+8>>2]>>0]|0)!=32:0)Td(7933,f)|0;Td(7131,e)|0;k=d;return}function xb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;b=k;k=k+144|0;d=b+128|0;e=b+136|0;f=b+64|0;g=b;h=b+132|0;c[e>>2]=a;c[h>>2]=0;wa();a=xa(c[(c[e>>2]|0)+12>>2]|0,f)|0;c[h>>2]=c[h>>2]|a;a=(xa(c[(c[e>>2]|0)+16>>2]|0,g)|0)<<1;c[h>>2]=c[h>>2]|a;if(c[h>>2]&1|0)ya(f);Td(3846,b+120|0)|0;za(c[(c[e>>2]|0)+16>>2]|0,c[h>>2]&1);if(!(c[h>>2]&2)){Td(6817,d)|0;i=c[e>>2]|0;j=i+24|0;l=c[j>>2]|0;m=c[h>>2]|0;n=m&2;za(l,n);Ba(7978);k=b;return}ya(g);Td(6817,d)|0;i=c[e>>2]|0;j=i+24|0;l=c[j>>2]|0;m=c[h>>2]|0;n=m&2;za(l,n);Ba(7978);k=b;return}function yb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=k;k=k+176|0;d=b+168|0;e=b+64|0;f=b;g=b+164|0;c[d>>2]=a;c[g>>2]=0;if((c[88407]|0)==1){Fa(7985);ga(1)}wa();a=xa(c[(c[d>>2]|0)+8>>2]|0,e)|0;c[g>>2]=c[g>>2]|a;a=(xa(c[(c[d>>2]|0)+12>>2]|0,f)|0)<<1;c[g>>2]=c[g>>2]|a;if(c[g>>2]&1|0)ya(e);Td(3846,b+120|0)|0;za(c[(c[d>>2]|0)+8>>2]|0,c[g>>2]&1);if(c[g>>2]&2|0)ya(f);Td(6817,b+128|0)|0;za(c[(c[d>>2]|0)+12>>2]|0,c[g>>2]&2);Td(8037,b+136|0)|0;if(!(jc(c[(c[d>>2]|0)+16>>2]|0,8044,2)|0)){Td(8049,b+144|0)|0;Ba(8062);k=b;return}if(jc(c[(c[d>>2]|0)+16>>2]|0,8052,2)|0){Td(8059,b+160|0)|0;Ba(8062);k=b;return}else{Td(8056,b+152|0)|0;Ba(8062);k=b;return}}function zb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=k;k=k+256|0;d=b+248|0;e=b+128|0;f=b+64|0;g=b;h=b+244|0;c[d>>2]=a;c[h>>2]=0;if((c[88407]|0)==1){Fa(8070);ga(1)}wa();a=xa(c[(c[d>>2]|0)+8>>2]|0,e)|0;c[h>>2]=c[h>>2]|a;a=(xa(c[(c[d>>2]|0)+12>>2]|0,f)|0)<<1;c[h>>2]=c[h>>2]|a;a=(xa(c[(c[d>>2]|0)+16>>2]|0,g)|0)<<2;c[h>>2]=c[h>>2]|a;if(c[h>>2]&4|0)ya(g);Td(3846,b+184|0)|0;za(c[(c[d>>2]|0)+16>>2]|0,c[h>>2]&4);Td(8122,b+192|0)|0;if(c[h>>2]&1|0)ya(e);Td(3846,b+200|0)|0;za(c[(c[d>>2]|0)+8>>2]|0,c[h>>2]&1);if(c[h>>2]&2|0)ya(f);Td(6817,b+208|0)|0;za(c[(c[d>>2]|0)+12>>2]|0,c[h>>2]&2);Td(8037,b+216|0)|0;if(!(jc(c[(c[d>>2]|0)+20>>2]|0,8044,2)|0)){Td(8049,b+224|0)|0;Ba(8134);k=b;return}if(jc(c[(c[d>>2]|0)+20>>2]|0,8052,2)|0){Td(8059,b+240|0)|0;Ba(8134);k=b;return}else{Td(8056,b+232|0)|0;Ba(8134);k=b;return}}function Ab(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=k;k=k+256|0;d=b+248|0;e=b+128|0;f=b+64|0;g=b;h=b+244|0;c[d>>2]=a;c[h>>2]=0;if((c[88407]|0)==1){Fa(8142);ga(1)}wa();a=xa(c[(c[d>>2]|0)+8>>2]|0,e)|0;c[h>>2]=c[h>>2]|a;a=(xa(c[(c[d>>2]|0)+12>>2]|0,f)|0)<<1;c[h>>2]=c[h>>2]|a;a=(xa(c[(c[d>>2]|0)+16>>2]|0,g)|0)<<2;c[h>>2]=c[h>>2]|a;if(c[h>>2]&4|0)ya(g);Td(3846,b+184|0)|0;za(c[(c[d>>2]|0)+16>>2]|0,c[h>>2]&4);Td(8122,b+192|0)|0;if(c[h>>2]&1|0)ya(e);Td(3846,b+200|0)|0;za(c[(c[d>>2]|0)+8>>2]|0,c[h>>2]&1);if(c[h>>2]&2|0)ya(f);Td(6817,b+208|0)|0;za(c[(c[d>>2]|0)+12>>2]|0,c[h>>2]&2);Td(8037,b+216|0)|0;if(!(jc(c[(c[d>>2]|0)+20>>2]|0,8044,2)|0)){Td(8049,b+224|0)|0;Ba(8194);k=b;return}if(jc(c[(c[d>>2]|0)+20>>2]|0,8052,2)|0){Td(8059,b+240|0)|0;Ba(8194);k=b;return}else{Td(8056,b+232|0)|0;Ba(8194);k=b;return}}function Bb(a){a=a|0;var b=0,d=0,e=0;b=k;k=k+64|0;d=b+56|0;e=b+60|0;c[e>>2]=a;if((c[88407]|0)==1){Fa(8202);ga(1)}wa();Td(8269,b)|0;if(!(jc(c[(c[e>>2]|0)+8>>2]|0,8276,2)|0)){Td(8059,b+8|0)|0;Ba(8353);k=b;return}if(!(jc(c[(c[e>>2]|0)+8>>2]|0,8281,2)|0)){Td(8056,b+16|0)|0;Ba(8353);k=b;return}if(!(jc(c[(c[e>>2]|0)+8>>2]|0,8287,4)|0)){Td(8293,b+24|0)|0;Ba(8353);k=b;return}if(!(jc(c[(c[e>>2]|0)+8>>2]|0,8296,6)|0)){Td(8305,b+32|0)|0;Ba(8353);k=b;return}if(!(jc(c[(c[e>>2]|0)+8>>2]|0,8308,2)|0)){Td(8049,b+40|0)|0;Ba(8353);k=b;return}if(jc(c[(c[e>>2]|0)+8>>2]|0,8312,2)|0){e=c[721]|0;c[d>>2]=c[88385];Od(e,8320,d)|0;ga(1)}Td(8317,b+48|0)|0;Ba(8353);k=b;return}function Cb(){var b=0,d=0,e=0,f=0;b=k;k=k+112|0;d=b+104|0;e=b;while(1){if(Cd(e,100,c[689]|0)|0){if((a[e>>0]|0)<58?(a[e>>0]|0)>47:0)f=5}else f=5;if((f|0)==5?(f=0,(a[e>>0]|0)!=101):0){f=6;break}c[88385]=(c[88385]|0)+1;if(!(jc(e,12885,3)|0)){f=9;break}c[d>>2]=e;Td(4011,d)|0}if((f|0)==6){Fa(8362);ga(1)}else if((f|0)==9){k=b;return}}function Db(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=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=k;k=k+352|0;e=d+320|0;f=d+312|0;g=d+304|0;h=d+296|0;i=d+288|0;j=d+280|0;l=d+272|0;m=d+256|0;n=d+224|0;o=d+216|0;p=d+208|0;q=d+200|0;r=d+192|0;s=d+184|0;t=d+176|0;u=d+168|0;v=d+340|0;w=d+336|0;x=d+328|0;y=d+112|0;z=d;A=d+344|0;B=d+324|0;c[v>>2]=b;c[w>>2]=0;c[d+332>>2]=0;c[x>>2]=0;a[A>>0]=a[(c[(c[v>>2]|0)+4>>2]|0)+6>>0]|0;if((a[(c[(c[v>>2]|0)+4>>2]|0)+7>>0]|0)==99)c[x>>2]=1;b=c[c[v>>2]>>2]|0;v=a[A>>0]|0;if(c[x>>2]|0){c[t>>2]=b;c[t+4>>2]=v;lc(y,8426,t)|0}else{c[u>>2]=b;c[u+4>>2]=v;lc(y,8413,u)|0}c[s>>2]=y;Td(8444,s)|0;s=a[A>>0]|0;if(c[x>>2]|0){c[q>>2]=s;Td(8479,q)|0}else{c[r>>2]=s;Td(8455,r)|0}c[p>>2]=y;Td(8499,p)|0;p=a[A>>0]|0;if(c[x>>2]|0){c[n>>2]=p;Td(8534,n)|0}else{c[o>>2]=p;Td(8510,o)|0}o=c[88392]|0;c[88392]=o+1;c[B>>2]=o;c[88392]=(c[88392]|0)+2;if((c[88407]|0)==1){o=c[88392]|0;c[88392]=o+1;lc(18464+(o*50|0)|0,8556,d+232|0)|0;o=c[88392]|0;c[88392]=o+1;lc(18464+(o*50|0)|0,8572,d+240|0)|0;o=c[88392]|0;c[88392]=o+1;lc(18464+(o*50|0)|0,4080,d+248|0)|0}o=c[88392]|0;c[88392]=o+1;c[m>>2]=y;lc(18464+(o*50|0)|0,4011,m)|0;m=c[88392]|0;c[88392]=m+1;lc(18464+(m*50|0)|0,8599,d+264|0)|0;while(1){if(Cd(z,100,c[689]|0)|0){if((a[z>>0]|0)<58?(a[z>>0]|0)>47:0)C=18}else C=18;if((C|0)==18?(C=0,(a[z>>0]|0)!=101):0){C=19;break}c[88385]=(c[88385]|0)+1;if(!(jc(z,12885,3)|0))break;c[w>>2]=(c[w>>2]|0)+1;m=c[88392]|0;c[88392]=m+1;c[l>>2]=z;lc(18464+(m*50|0)|0,8668,l)|0}if((C|0)==19){Fa(8609);ga(1)}C=18464+((c[B>>2]|0)*50|0)|0;c[j>>2]=(c[w>>2]|0)+1;lc(C,8678,j)|0;lc(18464+(((c[B>>2]|0)+1|0)*50|0)|0,8700,i)|0;lc(18464+(((c[B>>2]|0)+2|0)*50|0)|0,4080,h)|0;if((c[88407]|0)!=1){if(!(c[x>>2]|0)){c[f>>2]=c[w>>2];Td(8728,f)|0}}else{c[g>>2]=(c[w>>2]|0)+2;Td(8728,g)|0}if(c[x>>2]|0){k=d;return}c[e>>2]=a[A>>0];Td(8738,e)|0;k=d;return}function Eb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=k;k=k+272|0;e=d+256|0;f=d+248|0;g=d+208|0;h=d+176|0;i=d+168|0;j=d+268|0;l=d+260|0;m=d+112|0;n=d;c[j>>2]=b;c[d+264>>2]=8;c[l>>2]=0;if(!(c[88408]|0))c[88408]=1;c[i>>2]=c[c[j>>2]>>2];lc(m,8759,i)|0;Aa(m);c[h>>2]=m;Td(8444,h)|0;Td(8770,d+184|0)|0;Td(8788,d+192|0)|0;Td(8808,d+200|0)|0;c[g>>2]=m;Td(8819,g)|0;Td(8838,d+216|0)|0;g=c[88392]|0;c[88392]=g+1;lc(18464+(g*50|0)|0,8858,d+224|0)|0;g=c[88392]|0;c[88392]=g+1;lc(18464+(g*50|0)|0,8700,d+232|0)|0;g=c[88392]|0;c[88392]=g+1;lc(18464+(g*50|0)|0,4080,d+240|0)|0;g=c[88392]|0;c[88392]=g+1;c[f>>2]=m;lc(18464+(g*50|0)|0,4011,f)|0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=9){o=12;break}if(Cd(n,100,c[689]|0)|0){if((a[n>>0]|0)<58?(a[n>>0]|0)>47:0)o=8}else o=8;if((o|0)==8?(o=0,(a[n>>0]|0)!=101):0){o=9;break}c[88385]=(c[88385]|0)+1;if(!(jc(n,12885,3)|0)){o=12;break}f=c[88392]|0;c[88392]=f+1;c[e>>2]=n;lc(18464+(f*50|0)|0,8668,e)|0;c[l>>2]=(c[l>>2]|0)+1}if((o|0)==9){Fa(8879);ga(1)}else if((o|0)==12){k=d;return}}function Fb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=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,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,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,La=0,Ma=0,Na=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0;d=k;k=k+880|0;e=d+832|0;f=d+824|0;g=d+816|0;h=d+808|0;i=d+800|0;j=d+792|0;l=d+784|0;m=d+776|0;n=d+768|0;o=d+760|0;p=d+752|0;q=d+744|0;r=d+736|0;s=d+728|0;t=d+720|0;u=d+712|0;v=d+704|0;w=d+696|0;x=d+688|0;y=d+680|0;z=d+672|0;A=d+664|0;B=d+656|0;C=d+648|0;D=d+640|0;E=d+632|0;F=d+624|0;G=d+616|0;H=d+608|0;I=d+600|0;J=d+592|0;K=d+584|0;L=d+576|0;M=d+568|0;N=d+560|0;O=d+552|0;P=d+544|0;Q=d+536|0;R=d+528|0;S=d+520|0;T=d+512|0;U=d+504|0;V=d+496|0;W=d+488|0;X=d+480|0;Y=d+472|0;Z=d+464|0;_=d+456|0;$=d+448|0;aa=d+440|0;ba=d+432|0;ca=d+424|0;da=d+416|0;ea=d+408|0;fa=d+400|0;ha=d+392|0;ia=d+384|0;ja=d+376|0;ka=d+368|0;la=d+360|0;ma=d+352|0;na=d+344|0;oa=d+336|0;pa=d+328|0;qa=d+320|0;ra=d+312|0;sa=d+304|0;ta=d+296|0;ua=d+288|0;va=d+280|0;wa=d+272|0;Aa=d+264|0;Ba=d+256|0;Ca=d+248|0;Da=d+240|0;Ea=d+232|0;Fa=d+224|0;Ga=d+216|0;Ha=d+208|0;Ia=d+200|0;Ja=d+192|0;La=d+184|0;Ma=d+872|0;Na=d+868|0;Pa=d+128|0;Qa=d+64|0;Ra=d+864|0;Sa=d+860|0;Ta=d+856|0;Ua=d+852|0;Va=d+848|0;Wa=d+844|0;Xa=d;Ya=d+840|0;Za=d+836|0;c[Ma>>2]=b;c[Na>>2]=0;c[Ra>>2]=0;c[Va>>2]=0;c[Wa>>2]=0;bd(Xa,8956)|0;c[Ya>>2]=Zb(200)|0;c[Ua>>2]=0;while(1){if((c[Ua>>2]|0)>=50)break;b=Zb(50)|0;c[(c[Ya>>2]|0)+(c[Ua>>2]<<2)>>2]=b;c[Ua>>2]=(c[Ua>>2]|0)+1}c[Za>>2]=c[Ya>>2];c[Ua>>2]=0;while(1){if((c[Ua>>2]|0)>=50)break;c[Ta>>2]=0;while(1){if((c[Ta>>2]|0)>=50)break;a[(c[(c[Ya>>2]|0)+(c[Ta>>2]<<2)>>2]|0)+(c[Ua>>2]|0)>>0]=0;c[Ta>>2]=(c[Ta>>2]|0)+1}c[Ua>>2]=(c[Ua>>2]|0)+1}a:do if((a[c[(c[Ma>>2]|0)+8>>2]>>0]|0)==33){c[Ra>>2]=1;c[Sa>>2]=0;while(1){if((c[Sa>>2]|0)>=49)break a;a[(c[(c[Ma>>2]|0)+8>>2]|0)+(c[Sa>>2]|0)>>0]=a[(c[(c[Ma>>2]|0)+8>>2]|0)+((c[Sa>>2]|0)+1)>>0]|0;c[Sa>>2]=(c[Sa>>2]|0)+1}}while(0);if(jc(c[(c[Ma>>2]|0)+8>>2]|0,8970,3)|0?jc(c[(c[Ma>>2]|0)+8>>2]|0,8975,6)|0:0){b=(jc(c[(c[Ma>>2]|0)+8>>2]|0,9008,6)|0)!=0;_a=c[Ma>>2]|0;if(!b){xb(_a);b=(eb(c[Ma>>2]|0)|0)!=0;$a=(c[Ra>>2]|0)!=0;if(!b){b=c[(c[Ma>>2]|0)+36>>2]|0;if($a)sb(b);else tb(b);Oa(c[Za>>2]|0);k=d;return}if($a)Td(8983,Fa)|0;else Td(8989,Ea)|0;c[Da>>2]=c[c[Ma>>2]>>2];Td(7030,Da)|0;c[Sa>>2]=8;while(1){if((c[Sa>>2]|0)>=50)break;c[Ua>>2]=0;while(1){if((c[Ua>>2]|0)>=50)break;a[(c[(c[Ya>>2]|0)+((c[Sa>>2]|0)-8<<2)>>2]|0)+(c[Ua>>2]|0)>>0]=a[(c[(c[Ma>>2]|0)+(c[Sa>>2]<<2)>>2]|0)+(c[Ua>>2]|0)>>0]|0;c[Ua>>2]=(c[Ua>>2]|0)+1}c[Sa>>2]=(c[Sa>>2]|0)+1}Da=c[88409]|0;c[88409]=Da+1;c[Ca>>2]=Da;Td(8995,Ca)|0;Yb(c[Ya>>2]|0);c[Ba>>2]=c[c[Ma>>2]>>2];Td(7030,Ba)|0;Oa(c[Za>>2]|0);k=d;return}if(!(jc(c[_a+8>>2]|0,9016,10)|0)){do if(jc(c[(c[Ma>>2]|0)+8>>2]|0,9028,27)|0){if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9069,27)|0)){Td(9057,wa)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9098,27)|0)){Td(9127,va)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9139,27)|0)){Td(9127,ua)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9168,28)|0)){Td(9198,ta)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9211,23)|0)){Td(9198,sa)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9236,28)|0)){Td(9266,ra)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9279,23)|0)){Td(9266,qa)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9304,29)|0)){Td(9335,pa)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9348,24)|0)){Td(9335,oa)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9374,29)|0)){Td(9405,na)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9418,24)|0)){Td(9405,ma)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9444,25)|0)){Td(9471,la)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9484,26)|0)){Td(9512,ka)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9525,28)|0)){Td(9512,ja)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9555,27)|0)){Td(9057,ia)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9584,27)|0)){Td(9057,ha)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9613,27)|0)){Td(9127,fa)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9642,27)|0)){Td(9127,ea)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9671,28)|0)){Td(9198,da)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9701,23)|0)){Td(9198,ca)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9726,28)|0)){Td(9266,ba)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9756,23)|0)){Td(9266,aa)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9781,29)|0)){Td(9335,$)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9812,24)|0)){Td(9335,_)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9838,29)|0)){Td(9405,Z)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9869,24)|0)){Td(9405,Y)|0;c[Va>>2]=6;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9895,25)|0)){Td(9471,X)|0;c[Va>>2]=7;break}if(!(jc(c[(c[Ma>>2]|0)+8>>2]|0,9922,26)|0)){Td(9512,W)|0;c[Va>>2]=7;break}if(jc(c[(c[Ma>>2]|0)+8>>2]|0,9950,28)|0){_a=c[721]|0;Ba=(c[(c[Ma>>2]|0)+8>>2]|0)+9|0;c[U>>2]=c[88385];c[U+4>>2]=Ba;Od(_a,9980,U)|0;ga(1)}else{Td(9512,V)|0;c[Va>>2]=6;break}}else{Td(9057,Aa)|0;c[Va>>2]=7}while(0);Aa=(eb(c[Ma>>2]|0)|0)!=0;V=(c[Ra>>2]|0)!=0;U=(c[Va>>2]|0)==7;if(!Aa){Aa=c[(c[Ma>>2]|0)+16>>2]|0;do if(V)if(U){Ib(Aa);break}else{Jb(Aa);break}else if(U){Gb(Aa);break}else{Hb(Aa);break}while(0);Oa(c[Za>>2]|0);k=d;return}do if(V)if(U){Td(10020,T)|0;break}else{Td(10026,S)|0;break}else if(U){Td(10032,R)|0;break}else{Td(10038,Q)|0;break}while(0);c[P>>2]=c[c[Ma>>2]>>2];Td(7030,P)|0;c[Sa>>2]=3;while(1){if((c[Sa>>2]|0)>=50)break;c[Ua>>2]=0;while(1){if((c[Ua>>2]|0)>=50)break;a[(c[(c[Ya>>2]|0)+((c[Sa>>2]|0)-3<<2)>>2]|0)+(c[Ua>>2]|0)>>0]=a[(c[(c[Ma>>2]|0)+(c[Sa>>2]<<2)>>2]|0)+(c[Ua>>2]|0)>>0]|0;c[Ua>>2]=(c[Ua>>2]|0)+1}c[Sa>>2]=(c[Sa>>2]|0)+1}P=c[88409]|0;c[88409]=P+1;c[O>>2]=P;Td(8995,O)|0;Yb(c[Ya>>2]|0);c[N>>2]=c[c[Ma>>2]>>2];Td(7030,N)|0;Oa(c[Za>>2]|0);k=d;return}c[Sa>>2]=0;while(1){if((c[Sa>>2]|0)>=50)break;if(!(a[(c[(c[Ma>>2]|0)+8>>2]|0)+(c[Sa>>2]|0)>>0]|0)){ab=135;break}if((a[(c[(c[Ma>>2]|0)+8>>2]|0)+(c[Sa>>2]|0)>>0]|0)==125)break;c[Sa>>2]=(c[Sa>>2]|0)+1}if((ab|0)==135)c[Sa>>2]=50;if((c[Sa>>2]|0)>=50){bd(Xa,c[(c[Ma>>2]|0)+8>>2]|0)|0;if(!(ic(c[(c[Ma>>2]|0)+8>>2]|0,18400)|0))c[Wa>>2]=1;ab=xa(c[(c[Ma>>2]|0)+8>>2]|0,Pa)|0;c[Na>>2]=c[Na>>2]|ab;if(jc(c[(c[Ma>>2]|0)+12>>2]|0,12768,4)|0){ab=(xa(c[(c[Ma>>2]|0)+16>>2]|0,Qa)|0)<<1;c[Na>>2]=c[Na>>2]|ab}if(!(c[Wa>>2]|0)){if(c[Na>>2]&1|0)ya(Pa);Td(3846,p)|0;za(c[(c[Ma>>2]|0)+8>>2]|0,c[Na>>2]&1);bd(18400,Xa)|0}if(c[Na>>2]&2|0)ya(Qa);if(jc(c[(c[Ma>>2]|0)+12>>2]|0,12768,4)|0){Td(7266,o)|0;za(c[(c[Ma>>2]|0)+16>>2]|0,c[Na>>2]&2)}Na=(eb(c[Ma>>2]|0)|0)!=0;o=(a[c[(c[Ma>>2]|0)+12>>2]>>0]|0)==61;if(!Na){if(o)tb(c[(c[Ma>>2]|0)+24>>2]|0);Na=(jc(c[(c[Ma>>2]|0)+12>>2]|0,10132,2)|0)!=0;Qa=c[Ma>>2]|0;if(Na){if((a[c[Qa+12>>2]>>0]|0)==60)qb(c[(c[Ma>>2]|0)+24>>2]|0)}else sb(c[Qa+24>>2]|0);if((a[c[(c[Ma>>2]|0)+12>>2]>>0]|0)==62)rb(c[(c[Ma>>2]|0)+24>>2]|0);do if(!(jc(c[(c[Ma>>2]|0)+12>>2]|0,12768,4)|0)){Qa=c[(c[Ma>>2]|0)+16>>2]|0;if(c[Ra>>2]|0){tb(Qa);break}else{sb(Qa);break}}while(0);Oa(c[Za>>2]|0);k=d;return}if(o)Td(10136,n)|0;if(ic(c[(c[Ma>>2]|0)+12>>2]|0,10146)|0){if((a[c[(c[Ma>>2]|0)+12>>2]>>0]|0)==60)Td(10159,l)|0}else Td(10149,m)|0;if((a[c[(c[Ma>>2]|0)+12>>2]>>0]|0)==62)Td(10169,j)|0;c[Ta>>2]=5;do if(!(jc(c[(c[Ma>>2]|0)+12>>2]|0,12768,4)|0)){c[Ta>>2]=3;if(c[Ra>>2]|0){Td(8989,i)|0;break}else{Td(8983,h)|0;break}}while(0);c[g>>2]=c[c[Ma>>2]>>2];Td(7030,g)|0;c[Sa>>2]=c[Ta>>2];while(1){if((c[Sa>>2]|0)>=50)break;c[Ua>>2]=0;while(1){if((c[Ua>>2]|0)>=50)break;a[(c[(c[Ya>>2]|0)+((c[Sa>>2]|0)-(c[Ta>>2]|0)<<2)>>2]|0)+(c[Ua>>2]|0)>>0]=a[(c[(c[Ma>>2]|0)+(c[Sa>>2]<<2)>>2]|0)+(c[Ua>>2]|0)>>0]|0;c[Ua>>2]=(c[Ua>>2]|0)+1}c[Sa>>2]=(c[Sa>>2]|0)+1}Ta=c[88409]|0;c[88409]=Ta+1;c[f>>2]=Ta;Td(8995,f)|0;Yb(c[Ya>>2]|0);c[e>>2]=c[c[Ma>>2]>>2];Td(7030,e)|0;Oa(c[Za>>2]|0);k=d;return}c[Va>>2]=(a[(c[(c[Ma>>2]|0)+8>>2]|0)+((c[Sa>>2]|0)-1)>>0]|0)-48;if((c[Va>>2]|0)>9|(c[Va>>2]|0)<0){e=c[721]|0;c[M>>2]=c[88385];Od(e,10044,M)|0;ga(1)}if((c[Va>>2]|0)==7|(c[Va>>2]|0)==6){Td(10095,L)|0;c[Sa>>2]=0;while(1){if((c[Sa>>2]|0)>=50)break;if((a[(c[(c[Ma>>2]|0)+8>>2]|0)+(c[Sa>>2]|0)>>0]|0)==123)break;c[K>>2]=a[(c[(c[Ma>>2]|0)+8>>2]|0)+(c[Sa>>2]|0)>>0];Td(10101,K)|0;c[Sa>>2]=(c[Sa>>2]|0)+1}Td(5026,J)|0;J=(eb(c[Ma>>2]|0)|0)!=0;K=(c[Ra>>2]|0)!=0;L=(c[Va>>2]|0)==7;if(!J){J=c[(c[Ma>>2]|0)+16>>2]|0;do if(K)if(L){Ib(J);break}else{Jb(J);break}else if(L){Gb(J);break}else{Hb(J);break}while(0);Oa(c[Za>>2]|0);k=d;return}do if(K)if(L){Td(10020,I)|0;break}else{Td(10026,H)|0;break}else if(L){Td(10032,G)|0;break}else{Td(10038,F)|0;break}while(0);c[E>>2]=c[c[Ma>>2]>>2];Td(7030,E)|0;c[Sa>>2]=3;while(1){if((c[Sa>>2]|0)>=50)break;c[Ua>>2]=0;while(1){if((c[Ua>>2]|0)>=50)break;a[(c[(c[Ya>>2]|0)+((c[Sa>>2]|0)-3<<2)>>2]|0)+(c[Ua>>2]|0)>>0]=a[(c[(c[Ma>>2]|0)+(c[Sa>>2]<<2)>>2]|0)+(c[Ua>>2]|0)>>0]|0;c[Ua>>2]=(c[Ua>>2]|0)+1}c[Sa>>2]=(c[Sa>>2]|0)+1}E=c[88409]|0;c[88409]=E+1;c[D>>2]=E;Td(8995,D)|0;Yb(c[Ya>>2]|0);c[C>>2]=c[c[Ma>>2]>>2];Td(7030,C)|0;Oa(c[Za>>2]|0);k=d;return}c[Wa>>2]=0;Td(3846,B)|0;c[Sa>>2]=0;while(1){if((c[Sa>>2]|0)>=50)break;if((a[(c[(c[Ma>>2]|0)+8>>2]|0)+(c[Sa>>2]|0)>>0]|0)==123)break;c[A>>2]=a[(c[(c[Ma>>2]|0)+8>>2]|0)+(c[Sa>>2]|0)>>0];Td(10101,A)|0;c[Sa>>2]=(c[Sa>>2]|0)+1}Td(5026,z)|0;if(c[Va>>2]|0){c[x>>2]=1<>2];Td(10110,x)|0}else Td(10104,y)|0;y=(eb(c[Ma>>2]|0)|0)!=0;x=(c[Ra>>2]|0)!=0;z=(c[Va>>2]|0)!=0;if(!y){y=c[(c[Ma>>2]|0)+16>>2]|0;do if(x)if(z){tb(y);break}else{qb(y);break}else if(z){sb(y);break}else{rb(y);break}while(0);Oa(c[Za>>2]|0);k=d;return}do if(x)if(z){Td(8989,v)|0;break}else{Td(10120,w)|0;break}else if(z){Td(8983,t)|0;break}else{Td(10126,u)|0;break}while(0);c[s>>2]=c[c[Ma>>2]>>2];Td(7030,s)|0;c[Sa>>2]=3;while(1){if((c[Sa>>2]|0)>=50)break;c[Ua>>2]=0;while(1){if((c[Ua>>2]|0)>=50)break;a[(c[(c[Ya>>2]|0)+((c[Sa>>2]|0)-3<<2)>>2]|0)+(c[Ua>>2]|0)>>0]=a[(c[(c[Ma>>2]|0)+(c[Sa>>2]<<2)>>2]|0)+(c[Ua>>2]|0)>>0]|0;c[Ua>>2]=(c[Ua>>2]|0)+1}c[Sa>>2]=(c[Sa>>2]|0)+1}s=c[88409]|0;c[88409]=s+1;c[r>>2]=s;Td(8995,r)|0;Yb(c[Ya>>2]|0);c[q>>2]=c[c[Ma>>2]>>2];Td(7030,q)|0;Oa(c[Za>>2]|0);k=d;return}Ka(c[(c[Ma>>2]|0)+8>>2]|0);q=(eb(c[Ma>>2]|0)|0)!=0;r=(c[Ra>>2]|0)!=0;if(!q){q=c[(c[Ma>>2]|0)+16>>2]|0;if(r)sb(q);else tb(q);Oa(c[Za>>2]|0);k=d;return}if(r)Td(8983,La)|0;else Td(8989,Ja)|0;c[Ia>>2]=c[c[Ma>>2]>>2];Td(7030,Ia)|0;c[Sa>>2]=3;while(1){if((c[Sa>>2]|0)>=50)break;c[Ua>>2]=0;while(1){if((c[Ua>>2]|0)>=50)break;a[(c[(c[Ya>>2]|0)+((c[Sa>>2]|0)-3<<2)>>2]|0)+(c[Ua>>2]|0)>>0]=a[(c[(c[Ma>>2]|0)+(c[Sa>>2]<<2)>>2]|0)+(c[Ua>>2]|0)>>0]|0;c[Ua>>2]=(c[Ua>>2]|0)+1}c[Sa>>2]=(c[Sa>>2]|0)+1}Sa=c[88409]|0;c[88409]=Sa+1;c[Ha>>2]=Sa;Td(8995,Ha)|0;Yb(c[Ya>>2]|0);c[Ga>>2]=c[c[Ma>>2]>>2];Td(7030,Ga)|0;Oa(c[Za>>2]|0);k=d;return}function Gb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+64|0;d=b+48|0;e=b+32|0;f=b+16|0;g=b;h=b+52|0;c[h>>2]=a;Aa(c[h>>2]|0);a=c[h>>2]|0;if(c[88405]|0){i=c[h>>2]|0;j=c[h>>2]|0;c[g>>2]=a;c[g+4>>2]=i;c[g+8>>2]=j;Td(10464,g)|0;g=c[h>>2]|0;j=c[h>>2]|0;c[f>>2]=c[88406];c[f+4>>2]=g;c[f+8>>2]=j;Td(10518,f)|0;f=c[88406]|0;c[88406]=f+1;j=c[h>>2]|0;c[e>>2]=f;c[e+4>>2]=j;Td(7432,e)|0;Td(7443,b+40|0)|0;k=b;return}else{c[d>>2]=a;Td(10549,d)|0;k=b;return}}function Hb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+64|0;d=b+48|0;e=b+32|0;f=b+16|0;g=b;h=b+52|0;c[h>>2]=a;Aa(c[h>>2]|0);a=c[h>>2]|0;if(c[88405]|0){i=c[h>>2]|0;j=c[h>>2]|0;c[g>>2]=a;c[g+4>>2]=i;c[g+8>>2]=j;Td(10369,g)|0;g=c[h>>2]|0;j=c[h>>2]|0;c[f>>2]=c[88406];c[f+4>>2]=g;c[f+8>>2]=j;Td(10423,f)|0;f=c[88406]|0;c[88406]=f+1;j=c[h>>2]|0;c[e>>2]=f;c[e+4>>2]=j;Td(7432,e)|0;Td(7443,b+40|0)|0;k=b;return}else{c[d>>2]=a;Td(10454,d)|0;k=b;return}}function Ib(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+64|0;d=b+48|0;e=b+32|0;f=b+16|0;g=b;h=b+52|0;c[h>>2]=a;Aa(c[h>>2]|0);a=c[h>>2]|0;if(c[88405]|0){i=c[h>>2]|0;j=c[h>>2]|0;c[g>>2]=a;c[g+4>>2]=i;c[g+8>>2]=j;Td(10274,g)|0;g=c[h>>2]|0;j=c[h>>2]|0;c[f>>2]=c[88406];c[f+4>>2]=g;c[f+8>>2]=j;Td(10328,f)|0;f=c[88406]|0;c[88406]=f+1;j=c[h>>2]|0;c[e>>2]=f;c[e+4>>2]=j;Td(7432,e)|0;Td(7443,b+40|0)|0;k=b;return}else{c[d>>2]=a;Td(10359,d)|0;k=b;return}}function Jb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=k;k=k+64|0;d=b+48|0;e=b+32|0;f=b+16|0;g=b;h=b+52|0;c[h>>2]=a;Aa(c[h>>2]|0);a=c[h>>2]|0;if(c[88405]|0){i=c[h>>2]|0;j=c[h>>2]|0;c[g>>2]=a;c[g+4>>2]=i;c[g+8>>2]=j;Td(10179,g)|0;g=c[h>>2]|0;j=c[h>>2]|0;c[f>>2]=c[88406];c[f+4>>2]=g;c[f+8>>2]=j;Td(10233,f)|0;f=c[88406]|0;c[88406]=f+1;j=c[h>>2]|0;c[e>>2]=f;c[e+4>>2]=j;Td(7432,e)|0;Td(7443,b+40|0)|0;k=b;return}else{c[d>>2]=a;Td(10264,d)|0;k=b;return}}function Kb(){return c[88409]|0}function Lb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k;k=k+16|0;f=e;g=e+5|0;h=e+4|0;a[g>>0]=b;a[h>>0]=d;a:do if((a[g>>0]|0)==40)c[f>>2]=0;else{if((a[h>>0]|0)==40){c[f>>2]=0;break}if((a[h>>0]|0)==41){c[f>>2]=1;break}if(!(((a[g>>0]|0)!=94?(a[g>>0]|0)!=124:0)?(a[g>>0]|0)!=38:0))i=10;do if((i|0)==10){if(((a[h>>0]|0)!=94?(a[h>>0]|0)!=124:0)?(a[h>>0]|0)!=38:0)break;c[f>>2]=0;break a}while(0);if((a[g>>0]|0)!=42?(a[g>>0]|0)!=47:0){if((a[h>>0]|0)!=42?(a[h>>0]|0)!=47:0){if((a[g>>0]|0)!=43?(a[g>>0]|0)!=45:0){if((a[h>>0]|0)!=43?(a[h>>0]|0)!=45:0){c[f>>2]=1;break}c[f>>2]=0;break}c[f>>2]=1;break}c[f>>2]=0;break}c[f>>2]=1}while(0);k=e;return c[f>>2]|0}function Mb(b){b=b|0;var d=0,e=0,f=0,g=0;d=k;k=k+16|0;e=d;f=d+4|0;a[f>>0]=b;if(((((((((a[f>>0]|0)!=43?(a[f>>0]|0)!=45:0)?(a[f>>0]|0)!=47:0)?(a[f>>0]|0)!=42:0)?(a[f>>0]|0)!=38:0)?(a[f>>0]|0)!=124:0)?(a[f>>0]|0)!=94:0)?(a[f>>0]|0)!=41:0)?(a[f>>0]|0)!=40:0){c[e>>2]=0;g=c[e>>2]|0;k=d;return g|0}c[e>>2]=1;g=c[e>>2]|0;k=d;return g|0}function Nb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;f=k;k=k+112|0;g=f+96|0;h=f+88|0;i=f+108|0;j=f+104|0;l=f+100|0;c[i>>2]=b;c[j>>2]=d;c[l>>2]=e;e=(jc(c[j>>2]|0,10559,9)|0)!=0;d=c[i>>2]|0;if(e){c[g>>2]=d+1;Td(10643,g)|0;za(c[j>>2]|0,c[l>>2]|0);k=f;return}if((a[d>>0]|0)==45){Td(10570,f)|0;Td(10576,f+8|0)|0;Td(10582,f+16|0)|0;Td(10588,f+24|0)|0;Td(10600,f+32|0)|0;Td(10606,f+40|0)|0;k=f;return}if((a[c[i>>2]>>0]|0)==47){Td(10570,f+48|0)|0;Td(10576,f+56|0)|0;k=f;return}else{Td(10582,f+64|0)|0;Td(10619,f+72|0)|0;Td(10625,f+80|0)|0;c[h>>2]=(c[i>>2]|0)+1;Td(10631,h)|0;k=f;return}}function Ob(b){b=b|0;var e=0,f=0,g=0,i=0,j=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,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,Ea=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,$a=0,ab=0,cb=0,db=0,eb=0,fb=0,gb=0,ib=0,jb=0,kb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,kc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,_c=0,$c=0,ad=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0;e=k;k=k+12096|0;f=e+12016|0;g=e+12008|0;i=e+12e3|0;j=e+11992|0;l=e+11984|0;m=e+11976|0;n=e+11968|0;o=e+11960|0;p=e+11952|0;q=e+11944|0;r=e+11936|0;s=e+11928|0;t=e+11920|0;u=e+11912|0;v=e+11904|0;w=e+11896|0;x=e+11888|0;y=e+11880|0;z=e+11872|0;A=e+11864|0;B=e+11856|0;C=e+11848|0;D=e+11840|0;E=e+11832|0;F=e+11824|0;G=e+11816|0;H=e+11808|0;I=e+11800|0;J=e+11792|0;K=e+11784|0;L=e+11776|0;M=e+11768|0;N=e+11760|0;O=e+11752|0;P=e+11744|0;Q=e+11736|0;R=e+11728|0;S=e+11720|0;T=e+11712|0;U=e+11704|0;V=e+11696|0;W=e+11688|0;X=e+11680|0;Y=e+11672|0;Z=e+11664|0;_=e+11656|0;$=e+11648|0;aa=e+11640|0;ba=e+11632|0;ca=e+11624|0;da=e+11616|0;ea=e+11608|0;fa=e+11600|0;ha=e+11592|0;ia=e+11584|0;ja=e+11576|0;ka=e+11568|0;la=e+11560|0;ma=e+11552|0;na=e+11544|0;oa=e+11536|0;pa=e+11528|0;qa=e+11520|0;ra=e+11512|0;sa=e+11504|0;ta=e+11496|0;ua=e+11488|0;va=e+11480|0;wa=e+11472|0;Ea=e+11464|0;Ga=e+11456|0;Ha=e+11448|0;Ia=e+11440|0;Ka=e+11432|0;La=e+11424|0;Ma=e+11416|0;Na=e+11408|0;Oa=e+11400|0;Ra=e+11392|0;Sa=e+11384|0;Ta=e+11376|0;Ua=e+11368|0;Va=e+11360|0;Wa=e+11352|0;$a=e+11344|0;ab=e+11336|0;cb=e+11328|0;db=e+11320|0;eb=e+11312|0;fb=e+11304|0;gb=e+11296|0;ib=e+11288|0;jb=e+11280|0;kb=e+11272|0;mb=e+11264|0;nb=e+11256|0;ob=e+11248|0;pb=e+11240|0;qb=e+11232|0;rb=e+11224|0;sb=e+11216|0;tb=e+11208|0;ub=e+11200|0;vb=e+11192|0;wb=e+11184|0;xb=e+11176|0;yb=e+11168|0;zb=e+11160|0;Ab=e+11152|0;Bb=e+11144|0;Cb=e+11136|0;Db=e+11128|0;Eb=e+11120|0;Fb=e+11112|0;Gb=e+11104|0;Hb=e+11096|0;Ib=e+11088|0;Jb=e+11080|0;Kb=e+11072|0;Qb=e+11064|0;Rb=e+11056|0;Sb=e+11048|0;Tb=e+11040|0;Ub=e+11032|0;Vb=e+11024|0;Wb=e+11016|0;Xb=e+11008|0;Yb=e+11e3|0;$b=e+10992|0;ac=e+10984|0;bc=e+10976|0;cc=e+10968|0;dc=e+10960|0;ec=e+10952|0;fc=e+10944|0;gc=e+10936|0;hc=e+10928|0;kc=e+10920|0;mc=e+10912|0;nc=e+10904|0;oc=e+10896|0;pc=e+10888|0;qc=e+10880|0;rc=e+10872|0;sc=e+10864|0;tc=e+10856|0;uc=e+10848|0;vc=e+10840|0;wc=e+10832|0;xc=e+10824|0;yc=e+10816|0;zc=e+10808|0;Ac=e+10800|0;Bc=e+10792|0;Cc=e+10784|0;Dc=e+10776|0;Ec=e+10768|0;Fc=e+10760|0;Gc=e+10752|0;Hc=e+10744|0;Ic=e+10736|0;Jc=e+10728|0;Kc=e+10720|0;Lc=e+10712|0;Mc=e+10704|0;Nc=e+10696|0;Oc=e+10688|0;Pc=e+10680|0;Qc=e+10672|0;Rc=e+10664|0;Sc=e+10656|0;Tc=e+10648|0;Uc=e+10640|0;Vc=e+10632|0;Wc=e+10624|0;Xc=e+10616|0;Yc=e+10608|0;_c=e+10600|0;$c=e+10592|0;ad=e+10584|0;cd=e+10576|0;dd=e+10568|0;ed=e+10560|0;fd=e+10552|0;gd=e+10544|0;hd=e+10536|0;id=e+10528|0;jd=e+10520|0;kd=e+10512|0;ld=e+10504|0;md=e+12088|0;nd=e+12084|0;od=e+12080|0;pd=e+12076|0;qd=e+12072|0;rd=e+12068|0;sd=e+10448|0;td=e+10384|0;ud=e+10320|0;vd=e+10288|0;wd=e+12060|0;xd=e+12056|0;yd=e+12052|0;zd=e+10224|0;Ad=e+12048|0;Bd=e+12044|0;Cd=e+12040|0;Dd=e+12036|0;Ed=e+12032|0;Fd=e+224|0;Gd=e+12028|0;Hd=e+12024|0;Id=e+12020|0;Jd=e+112|0;Kd=e;c[md>>2]=b;c[od>>2]=0;c[pd>>2]=0;c[rd>>2]=0;c[e+12064>>2]=0;c[vd>>2]=0;c[vd+4>>2]=0;c[vd+8>>2]=0;c[vd+12>>2]=0;c[vd+16>>2]=0;c[vd+20>>2]=0;c[yd>>2]=0;c[Cd>>2]=0;c[Gd>>2]=0;c[Hd>>2]=0;bd(zd,8956)|0;c[wd>>2]=Zb(200)|0;c[Dd>>2]=c[wd>>2];a:do if(jc(c[(c[md>>2]|0)+8>>2]|0,13220,1)|0)c[wd>>2]=c[md>>2];else{c[nd>>2]=48;while(1){if((c[nd>>2]|0)<=0)break a;c[(c[wd>>2]|0)+((c[nd>>2]|0)+1<<2)>>2]=c[(c[md>>2]|0)+(c[nd>>2]<<2)>>2];c[nd>>2]=(c[nd>>2]|0)+-1}}while(0);if((a[c[(c[wd>>2]|0)+16>>2]>>0]|0)==45?(a[c[(c[wd>>2]|0)+20>>2]>>0]|0)>63:0){lb(c[wd>>2]|0,4);a[c[(c[wd>>2]|0)+16>>2]>>0]=48}c[Ad>>2]=Qa(c[(c[wd>>2]|0)+8>>2]|0)|0;c[Bd>>2]=Qa(c[(c[wd>>2]|0)+16>>2]|0)|0;Aa(c[(c[wd>>2]|0)+16>>2]|0);if(!((a[c[(c[wd>>2]|0)+16>>2]>>0]|0)==45?(a[c[(c[wd>>2]|0)+24>>2]>>0]|0)==58:0))Ld=11;do if(((Ld|0)==11?(a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=58:0)?(a[c[(c[wd>>2]|0)+28>>2]>>0]|0)!=58:0){if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==40?(a[c[(c[wd>>2]|0)+16>>2]>>0]|0)!=40:0)break;if((d[c[(c[wd>>2]|0)+20>>2]>>0]|0)>32?(d[c[(c[wd>>2]|0)+28>>2]>>0]|0)>32:0){Td(10648,ld)|0;c[Ed>>2]=Zb(400)|0;c[nd>>2]=0;while(1){if((c[nd>>2]|0)>=100)break;md=Zb(100)|0;c[(c[Ed>>2]|0)+(c[nd>>2]<<2)>>2]=md;c[qd>>2]=0;while(1){if((c[qd>>2]|0)>=100)break;a[(c[(c[Ed>>2]|0)+(c[nd>>2]<<2)>>2]|0)+(c[qd>>2]|0)>>0]=0;c[qd>>2]=(c[qd>>2]|0)+1}c[nd>>2]=(c[nd>>2]|0)+1}c[Id>>2]=Zb(40)|0;c[nd>>2]=0;while(1){if((c[nd>>2]|0)>=10)break;md=Zb(100)|0;c[(c[Id>>2]|0)+(c[nd>>2]<<2)>>2]=md;c[qd>>2]=0;while(1){if((c[qd>>2]|0)>=100)break;a[(c[(c[Id>>2]|0)+(c[nd>>2]<<2)>>2]|0)+(c[qd>>2]|0)>>0]=0;c[qd>>2]=(c[qd>>2]|0)+1}c[nd>>2]=(c[nd>>2]|0)+1}c[qd>>2]=4;while(1){if(!(a[c[(c[wd>>2]|0)+(c[qd>>2]<<2)>>2]>>0]|0))break;if((a[c[(c[wd>>2]|0)+(c[qd>>2]<<2)>>2]>>0]|0)==58)break;do if((a[c[(c[wd>>2]|0)+(c[qd>>2]<<2)>>2]>>0]|0)!=10?(a[c[(c[wd>>2]|0)+(c[qd>>2]<<2)>>2]>>0]|0)!=13:0){bd(Jd,c[(c[wd>>2]|0)+(c[qd>>2]<<2)>>2]|0)|0;if(!(Mb(a[Jd>>0]|0)|0)){md=c[Ed>>2]|0;b=c[Hd>>2]|0;c[Hd>>2]=b+1;bd(c[md+(b<<2)>>2]|0,Jd)|0;break}while(1){if(!(c[Gd>>2]|0))break;if(!(Lb(a[Fd+(((c[Gd>>2]|0)-1|0)*100|0)>>0]|0,a[Jd>>0]|0)|0))break;bd(Kd,Fd+(((c[Gd>>2]|0)-1|0)*100|0)|0)|0;c[Gd>>2]=(c[Gd>>2]|0)+-1;b=c[Ed>>2]|0;md=c[Hd>>2]|0;c[Hd>>2]=md+1;bd(c[b+(md<<2)>>2]|0,Kd)|0}if(c[Gd>>2]|0?(a[Jd>>0]|0)==41:0){c[Gd>>2]=(c[Gd>>2]|0)+-1;break}md=c[Gd>>2]|0;c[Gd>>2]=md+1;bd(Fd+(md*100|0)|0,Jd)|0}while(0);c[qd>>2]=(c[qd>>2]|0)+1}while(1){if(!(c[Gd>>2]|0))break;bd(Kd,Fd+(((c[Gd>>2]|0)-1|0)*100|0)|0)|0;c[Gd>>2]=(c[Gd>>2]|0)+-1;md=c[Ed>>2]|0;b=c[Hd>>2]|0;c[Hd>>2]=b+1;bd(c[md+(b<<2)>>2]|0,Kd)|0}c[Gd>>2]=0;b:while(1){b=(c[Gd>>2]|0)<(c[Hd>>2]|0);c[nd>>2]=0;if(!b){Ld=72;break}while(1){if((c[nd>>2]|0)>=10)break;c[qd>>2]=0;while(1){if((c[qd>>2]|0)>=100)break;a[(c[(c[Id>>2]|0)+(c[nd>>2]<<2)>>2]|0)+(c[qd>>2]|0)>>0]=0;c[qd>>2]=(c[qd>>2]|0)+1}c[nd>>2]=(c[nd>>2]|0)+1}do if(Mb(a[c[(c[Ed>>2]|0)+(c[Gd>>2]<<2)>>2]>>0]|0)|0){bd(c[(c[Id>>2]|0)+8>>2]|0,10678)|0;bd(c[(c[Id>>2]|0)+12>>2]|0,7057)|0;bd(c[(c[Id>>2]|0)+16>>2]|0,10678)|0;b=c[(c[Id>>2]|0)+20>>2]|0;md=c[Ed>>2]|0;Md=c[Gd>>2]|0;c[Gd>>2]=Md+1;bd(b,c[md+(Md<<2)>>2]|0)|0;bd(c[(c[Id>>2]|0)+24>>2]|0,10683)|0;Ob(c[Id>>2]|0)}else{if(Mb(a[c[(c[Ed>>2]|0)+((c[Gd>>2]|0)+1<<2)>>2]>>0]|0)|0){bd(c[(c[Id>>2]|0)+8>>2]|0,10678)|0;bd(c[(c[Id>>2]|0)+12>>2]|0,7057)|0;bd(c[(c[Id>>2]|0)+16>>2]|0,10678)|0;Md=c[(c[Id>>2]|0)+24>>2]|0;md=c[Ed>>2]|0;b=c[Gd>>2]|0;c[Gd>>2]=b+1;bd(Md,c[md+(b<<2)>>2]|0)|0;b=c[(c[Id>>2]|0)+20>>2]|0;md=c[Ed>>2]|0;Md=c[Gd>>2]|0;c[Gd>>2]=Md+1;bd(b,c[md+(Md<<2)>>2]|0)|0;Ob(c[Id>>2]|0);break}if(Mb(a[c[(c[Ed>>2]|0)+((c[Gd>>2]|0)+2<<2)>>2]>>0]|0)|0){if(c[Gd>>2]|0)Td(7102,kd)|0;bd(c[(c[Id>>2]|0)+8>>2]|0,10678)|0;bd(c[(c[Id>>2]|0)+12>>2]|0,7057)|0;Md=c[(c[Id>>2]|0)+16>>2]|0;md=c[Ed>>2]|0;b=c[Gd>>2]|0;c[Gd>>2]=b+1;bd(Md,c[md+(b<<2)>>2]|0)|0;b=c[(c[Id>>2]|0)+24>>2]|0;md=c[Ed>>2]|0;Md=c[Gd>>2]|0;c[Gd>>2]=Md+1;bd(b,c[md+(Md<<2)>>2]|0)|0;Md=c[(c[Id>>2]|0)+20>>2]|0;md=c[Ed>>2]|0;b=c[Gd>>2]|0;c[Gd>>2]=b+1;bd(Md,c[md+(b<<2)>>2]|0)|0;Ob(c[Id>>2]|0);break}if(!(a[c[(c[Ed>>2]|0)+(c[Gd>>2]<<2)>>2]>>0]|0)){Ld=67;break b}if(!(a[c[(c[Ed>>2]|0)+((c[Gd>>2]|0)+1<<2)>>2]>>0]|0)){Ld=67;break b}if(!(a[c[(c[Ed>>2]|0)+((c[Gd>>2]|0)+2<<2)>>2]>>0]|0)){Ld=67;break b}if(c[Gd>>2]|0)Td(7102,jd)|0;bd(c[(c[Id>>2]|0)+8>>2]|0,10678)|0;bd(c[(c[Id>>2]|0)+12>>2]|0,7057)|0;b=c[(c[Id>>2]|0)+16>>2]|0;md=c[Ed>>2]|0;Md=c[Gd>>2]|0;c[Gd>>2]=Md+1;bd(b,c[md+(Md<<2)>>2]|0)|0;Ob(c[Id>>2]|0)}while(0)}if((Ld|0)==67){Fa(10693);ga(1)}else if((Ld|0)==72){while(1){if((c[nd>>2]|0)>=10)break;c[qd>>2]=0;while(1){if((c[qd>>2]|0)>=100)break;a[(c[(c[Id>>2]|0)+(c[nd>>2]<<2)>>2]|0)+(c[qd>>2]|0)>>0]=0;c[qd>>2]=(c[qd>>2]|0)+1}c[nd>>2]=(c[nd>>2]|0)+1}bd(c[(c[Id>>2]|0)+8>>2]|0,c[(c[wd>>2]|0)+8>>2]|0)|0;bd(c[(c[Id>>2]|0)+12>>2]|0,7057)|0;bd(c[(c[Id>>2]|0)+16>>2]|0,10678)|0;Ob(c[Id>>2]|0);k=e;return}}}while(0);bd(zd,c[(c[wd>>2]|0)+16>>2]|0)|0;if(!(ic(c[(c[wd>>2]|0)+16>>2]|0,18400)|0))c[yd>>2]=1;Id=xa(c[(c[wd>>2]|0)+8>>2]|0,sd)|0;c[rd>>2]=c[rd>>2]|Id;Id=(xa(c[(c[wd>>2]|0)+16>>2]|0,td)|0)<<1;c[rd>>2]=c[rd>>2]|Id;if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=58){Id=(xa(c[(c[wd>>2]|0)+24>>2]|0,ud)|0)<<2;c[rd>>2]=c[rd>>2]|Id}c[nd>>2]=0;while(1){if((c[nd>>2]|0)>=50)break;if(!(a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0]|0)){Ld=86;break}if((a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0]|0)==125)break;c[nd>>2]=(c[nd>>2]|0)+1}if((Ld|0)==86)c[nd>>2]=50;if((c[nd>>2]|0)<50){bd(18400,4029)|0;c[pd>>2]=(a[(c[(c[wd>>2]|0)+8>>2]|0)+((c[nd>>2]|0)-1)>>0]|0)-48;if((c[pd>>2]|0)>9|(c[pd>>2]|0)<0){Id=c[721]|0;c[id>>2]=c[88385];Od(Id,10044,id)|0;ga(1)}do if((a[c[(c[wd>>2]|0)+16>>2]>>0]|0)==48){Td(3846,hd)|0;c[nd>>2]=0;while(1){if((c[nd>>2]|0)>=50)break;if((a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0]|0)==123)break;c[gd>>2]=a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0];Td(10101,gd)|0;c[nd>>2]=(c[nd>>2]|0)+1}Td(5026,fd)|0;c[ed>>2]=255^1<>2];Td(10110,ed)|0}else{if((a[c[(c[wd>>2]|0)+16>>2]>>0]|0)==49){Td(3846,dd)|0;c[nd>>2]=0;while(1){if((c[nd>>2]|0)>=50)break;if((a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0]|0)==123)break;c[cd>>2]=a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0];Td(10101,cd)|0;c[nd>>2]=(c[nd>>2]|0)+1}Td(5026,ad)|0;c[$c>>2]=1<>2];Td(10721,$c)|0;break}id=Rd(c[(c[wd>>2]|0)+16>>2]|0,10731)|0;c[xd>>2]=id;if(!id){id=c[721]|0;c[Nc>>2]=c[88385];Od(id,10794,Nc)|0;ga(1)}id=c[xd>>2]|0;if((a[c[xd>>2]>>0]|0)==33){c[_c>>2]=id+1;Td(7257,_c)|0}else{c[Yc>>2]=id;Td(7257,Yc)|0}id=c[(c[wd>>2]|0)+16>>2]|0;c[Xc>>2]=1<<(a[id+((Zc(c[xd>>2]|0)|0)+1)>>0]|0)-48;Td(10110,Xc)|0;Td(10733,Wc)|0;Td(3846,Vc)|0;c[nd>>2]=0;while(1){if((c[nd>>2]|0)>=50)break;if((a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0]|0)==123)break;c[Uc>>2]=a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0];Td(10101,Uc)|0;c[nd>>2]=(c[nd>>2]|0)+1}Td(10740,Tc)|0;if((a[c[xd>>2]>>0]|0)==33)Td(10748,Sc)|0;else Td(10765,Rc)|0;c[Qc>>2]=255^1<>2];Td(10110,Qc)|0;Td(10782,Pc)|0;c[Oc>>2]=1<>2];Td(10721,Oc)|0}while(0);Td(10852,Mc)|0;c[nd>>2]=0;while(1){if((c[nd>>2]|0)>=50)break;if((a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0]|0)==123)break;c[Lc>>2]=a[(c[(c[wd>>2]|0)+8>>2]|0)+(c[nd>>2]|0)>>0];Td(10101,Lc)|0;c[nd>>2]=(c[nd>>2]|0)+1}Td(5026,Kc)|0;_b(c[Dd>>2]|0);k=e;return}do if((a[c[(c[wd>>2]|0)+16>>2]>>0]|0)!=45){if(!(jc(c[(c[wd>>2]|0)+16>>2]|0,10893,4)|0)){bd(18400,4029)|0;if(c[88402]&8|0){Td(10899,vc)|0;Td(10917,uc)|0;Td(10930,tc)|0;Td(10947,sc)|0;Td(7443,rc)|0;Td(10967,qc)|0;Td(10984,pc)|0;Td(11002,oc)|0;Td(10930,nc)|0;Td(11020,mc)|0;Td(7443,kc)|0;break}else{Ba(11040);break}}if((jc(c[(c[wd>>2]|0)+8>>2]|0,11050,5)|0)==0?jc(c[(c[wd>>2]|0)+8>>2]|0,11057,6)|0:0){bd(18400,4029)|0;do if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==43){Td(11065,hc)|0;Td(7299,gc)|0;c[nd>>2]=5;while(1){if((c[nd>>2]|0)<0)break;if(a[(c[(c[wd>>2]|0)+24>>2]|0)+(c[nd>>2]|0)>>0]|0){Kc=Pb(a[(c[(c[wd>>2]|0)+24>>2]|0)+(c[nd>>2]|0)>>0]|0)|0;c[vd+(c[od>>2]<<2)>>2]=Kc}Kc=Pb(a[(c[(c[wd>>2]|0)+24>>2]|0)+(c[nd>>2]|0)>>0]|0)|0;c[vd+(c[od>>2]<<2)>>2]=Kc;if((c[vd+(c[od>>2]<<2)>>2]|0)<10?(c[vd+(c[od>>2]<<2)>>2]|0)>=0:0)c[od>>2]=(c[od>>2]|0)+1;c[nd>>2]=(c[nd>>2]|0)+-1}Td(11071,fc)|0;if((a[c[(c[wd>>2]|0)+24>>2]>>0]|0)>63){c[ec>>2]=c[(c[wd>>2]|0)+24>>2];Td(11085,ec)|0}else{Kc=c[vd>>2]|0;c[dc>>2]=c[vd+4>>2];c[dc+4>>2]=Kc;Td(11094,dc)|0}Td(11107,cc)|0;Td(11121,bc)|0;if((c[vd>>2]|0)>9)Td(11135,ac)|0;else{Kc=c[vd+8>>2]|0;c[$b>>2]=c[vd+12>>2];c[$b+4>>2]=Kc;Td(11094,$b)|0}Td(11144,Yb)|0;Td(11158,Xb)|0;if((c[vd>>2]|0)>9)Td(11135,Wb)|0;else{Kc=c[vd+16>>2]|0;c[Vb>>2]=c[vd+20>>2];c[Vb+4>>2]=Kc;Td(11094,Vb)|0}Td(11170,Ub)|0;Td(11182,Tb)|0}else{if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=45){c[nd>>2]=5;while(1){if((c[nd>>2]|0)<0)break;if(a[(c[(c[wd>>2]|0)+16>>2]|0)+(c[nd>>2]|0)>>0]|0){Kc=Pb(a[(c[(c[wd>>2]|0)+16>>2]|0)+(c[nd>>2]|0)>>0]|0)|0;c[vd+(c[od>>2]<<2)>>2]=Kc}Kc=Pb(a[(c[(c[wd>>2]|0)+16>>2]|0)+(c[nd>>2]|0)>>0]|0)|0;c[vd+(c[od>>2]<<2)>>2]=Kc;do if((c[vd+(c[od>>2]<<2)>>2]|0)<10){if((c[vd+(c[od>>2]<<2)>>2]|0)<0)break;c[od>>2]=(c[od>>2]|0)+1}while(0);c[nd>>2]=(c[nd>>2]|0)+-1}Kc=c[vd>>2]|0;c[yb>>2]=c[vd+4>>2];c[yb+4>>2]=Kc;Td(11210,yb)|0;Td(11107,xb)|0;Kc=c[vd+8>>2]|0;c[wb>>2]=c[vd+12>>2];c[wb+4>>2]=Kc;Td(11210,wb)|0;Td(11144,vb)|0;Kc=c[vd+16>>2]|0;c[ub>>2]=c[vd+20>>2];c[ub+4>>2]=Kc;Td(11210,ub)|0;Td(11170,tb)|0;break}Td(11065,Sb)|0;Td(10600,Rb)|0;c[nd>>2]=5;while(1){if((c[nd>>2]|0)<0)break;if(a[(c[(c[wd>>2]|0)+24>>2]|0)+(c[nd>>2]|0)>>0]|0){Kc=Pb(a[(c[(c[wd>>2]|0)+24>>2]|0)+(c[nd>>2]|0)>>0]|0)|0;c[vd+(c[od>>2]<<2)>>2]=Kc}Kc=Pb(a[(c[(c[wd>>2]|0)+24>>2]|0)+(c[nd>>2]|0)>>0]|0)|0;c[vd+(c[od>>2]<<2)>>2]=Kc;do if((c[vd+(c[od>>2]<<2)>>2]|0)<10){if((c[vd+(c[od>>2]<<2)>>2]|0)<0)break;c[od>>2]=(c[od>>2]|0)+1}while(0);c[nd>>2]=(c[nd>>2]|0)+-1}Td(11071,Qb)|0;if((c[vd>>2]|0)>9){c[Kb>>2]=c[(c[wd>>2]|0)+24>>2];Td(10865,Kb)|0}else{Kc=c[vd>>2]|0;c[Jb>>2]=c[vd+4>>2];c[Jb+4>>2]=Kc;Td(11188,Jb)|0}Td(11107,Ib)|0;Td(11121,Hb)|0;if((c[vd>>2]|0)>9)Td(11201,Gb)|0;else{Kc=c[vd+8>>2]|0;c[Fb>>2]=c[vd+12>>2];c[Fb+4>>2]=Kc;Td(11188,Fb)|0}Td(11144,Eb)|0;Td(11158,Db)|0;if((c[vd>>2]|0)>9)Td(11201,Cb)|0;else{Kc=c[vd+16>>2]|0;c[Bb>>2]=c[vd+20>>2];c[Bb+4>>2]=Kc;Td(11188,Bb)|0}Td(11170,Ab)|0;Td(11182,zb)|0}while(0);_b(c[Dd>>2]|0);k=e;return}do if((a[c[(c[wd>>2]|0)+24>>2]>>0]|0)==49){if((a[(c[(c[wd>>2]|0)+24>>2]|0)+1>>0]|0)<=57?(a[(c[(c[wd>>2]|0)+24>>2]|0)+1>>0]|0)>=48:0)break;if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=43?(a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=45:0)break;if((jc(c[(c[wd>>2]|0)+8>>2]|0,c[(c[wd>>2]|0)+16>>2]|0,50)|0)==0?jc(c[(c[wd>>2]|0)+8>>2]|0,11223,4)|0:0){if((a[(c[(c[wd>>2]|0)+24>>2]|0)+1>>0]|0?(a[(c[(c[wd>>2]|0)+24>>2]|0)+1>>0]|0)!=32:0)?(a[(c[(c[wd>>2]|0)+24>>2]|0)+1>>0]|0)!=10:0)break;bd(18400,4029)|0;do if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==4){Kc=c[wd>>2]|0;if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==43){c[sb>>2]=c[Kc+8>>2];Td(7257,sb)|0;Td(7299,rb)|0;Td(11229,qb)|0;c[pb>>2]=c[(c[wd>>2]|0)+8>>2];Td(7203,pb)|0;_b(c[Dd>>2]|0);k=e;return}if((a[c[Kc+20>>2]>>0]|0)!=45)break;c[ob>>2]=c[(c[wd>>2]|0)+8>>2];Td(7257,ob)|0;Td(10600,nb)|0;Td(11239,mb)|0;c[kb>>2]=c[(c[wd>>2]|0)+8>>2];Td(7203,kb)|0;_b(c[Dd>>2]|0);k=e;return}while(0);if(c[rd>>2]&1|0)ya(sd);if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==43)Td(11249,jb)|0;else Td(11255,ib)|0;Kc=c[wd>>2]|0;if(c[rd>>2]&1|0){c[fb>>2]=c[Kc+16>>2];Td(4015,fb)|0}else{c[gb>>2]=c[Kc+8>>2];Td(4011,gb)|0}_b(c[Dd>>2]|0);k=e;return}}while(0);if(!(c[yd>>2]|0)){if(c[rd>>2]&2|0)ya(td);if(!((c[Ad>>2]|0)!=0|(c[Bd>>2]|0)!=0?!((c[Ad>>2]|0)==0&(c[Bd>>2]|0)==8):0))Ld=218;if(((Ld|0)==218?(a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=40:0)?jc(c[(c[wd>>2]|0)+16>>2]|0,11261,4)|0:0){Td(3846,eb)|0;za(c[(c[wd>>2]|0)+16>>2]|0,c[rd>>2]&2)}bd(18400,zd)|0}}else{bd(18400,4029)|0;if((c[Ad>>2]|0)==0?(Qa(c[(c[wd>>2]|0)+20>>2]|0)|0)!=12:0)if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)>57){Td(3837,Jc)|0;Td(10858,Ic)|0;c[Hc>>2]=c[(c[wd>>2]|0)+20>>2];Td(10865,Hc)|0;break}else{c[Gc>>2]=256-(Ud(c[(c[wd>>2]|0)+20>>2]|0)|0);Td(8728,Gc)|0;break}if((c[Ad>>2]|0)!=4){if((c[Ad>>2]|0)!=8)break;Td(4023,Ac)|0;Kc=c[(c[wd>>2]|0)+16>>2]|0;h[zc>>3]=256.0-+Xd(c[(c[wd>>2]|0)+20>>2]|0);lc(Kc,10874,zc)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Td(10877,yc)|0;Pa(c[(c[wd>>2]|0)+8>>2]|0);c[xc>>2]=c[(c[wd>>2]|0)+16>>2];Td(10883,xc)|0;c[wc>>2]=c[(c[wd>>2]|0)+8>>2];Td(7203,wc)|0;_b(c[Dd>>2]|0);k=e;return}if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)>57){Td(3837,Fc)|0;Td(10858,Ec)|0;c[Dc>>2]=c[(c[wd>>2]|0)+20>>2];Td(10865,Dc)|0}else{c[Cc>>2]=~~((16.0-+Xd(c[(c[wd>>2]|0)+20>>2]|0))*16.0);Td(8728,Cc)|0}c[Bc>>2]=c[(c[wd>>2]|0)+8>>2];Td(7203,Bc)|0;_b(c[Dd>>2]|0);k=e;return}while(0);c:do if(a[c[(c[wd>>2]|0)+20>>2]>>0]|0?(a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=58:0){c[Cd>>2]=Qa(c[(c[wd>>2]|0)+24>>2]|0)|0;bd(18400,4029)|0;if(c[rd>>2]&4|0)ya(ud);if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==43){if(((c[Ad>>2]|0)==8?(c[Bd>>2]&8|0)==8:0)?(c[Cd>>2]&8|0)==8:0){Td(3846,db)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Td(11267,cb)|0;Td(7305,ab)|0;Pa(c[(c[wd>>2]|0)+24>>2]|0);Td(10852,$a)|0;Pa(c[(c[wd>>2]|0)+8>>2]|0);Td(3846,Wa)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[Va>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,Va)|0;Td(7305,Ua)|0;Ca(c[(c[wd>>2]|0)+24>>2]|0)|0;c[Ta>>2]=c[(c[wd>>2]|0)+24>>2];Td(4011,Ta)|0;break}if((c[Ad>>2]|0)==8?((c[Cd>>2]|0)==4?(c[Bd>>2]&8|0)==8:0):0){c[Sa>>2]=c[(c[wd>>2]|0)+24>>2];Td(11274,Sa)|0;Td(4023,Ra)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Td(3846,Oa)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[Na>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,Na)|0;Ja(11283);Td(10877,Ma)|0;Pa(c[(c[wd>>2]|0)+8>>2]|0);break}if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==8?(c[Cd>>2]&4|0)==4:0){Bc=c[(c[wd>>2]|0)+24>>2]|0;if((c[Cd>>2]|0)==4){c[La>>2]=Bc;Td(11274,La)|0}else{c[Ka>>2]=~~(+Xd(Bc)*16.0);Td(6489,Ka)|0}c[Ia>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,Ia)|0;Td(4023,Ha)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Ja(11293);break}if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==4&(c[Cd>>2]|0)==12){Td(7299,Ga)|0;c[Ea>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,Ea)|0;c[wa>>2]=~~(+Xd(c[(c[wd>>2]|0)+24>>2]|0)*16.0);Td(11303,wa)|0;break}if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==12&(c[Cd>>2]|0)==4){Td(7299,va)|0;c[ua>>2]=c[(c[wd>>2]|0)+24>>2];Td(7257,ua)|0;c[ta>>2]=~~(+Xd(c[(c[wd>>2]|0)+16>>2]|0)*16.0);Td(11303,ta)|0;break}if((c[Bd>>2]|0)==4){c[sa>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,sa)|0}if((c[Cd>>2]|0)==4&(c[Bd>>2]|0)==0){Td(3846,ra)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[qa>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,qa)|0}Nb(11313,c[(c[wd>>2]|0)+24>>2]|0,c[rd>>2]&4);break}if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==45){if(((c[Ad>>2]|0)==8?(c[Bd>>2]&8|0)==8:0)?(c[Cd>>2]&8|0)==8:0){Td(3846,pa)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Td(11323,oa)|0;Td(11330,na)|0;Pa(c[(c[wd>>2]|0)+24>>2]|0);Td(10852,ma)|0;Pa(c[(c[wd>>2]|0)+8>>2]|0);Td(3846,la)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[ka>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,ka)|0;Td(11330,ja)|0;Ca(c[(c[wd>>2]|0)+24>>2]|0)|0;c[ia>>2]=c[(c[wd>>2]|0)+24>>2];Td(4011,ia)|0;break}if((c[Ad>>2]|0)==8?((c[Cd>>2]|0)==4?(c[Bd>>2]&8|0)==8:0):0){c[ha>>2]=c[(c[wd>>2]|0)+24>>2];Td(11274,ha)|0;Td(4023,fa)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Td(3846,ea)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[da>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,da)|0;Ja(11336);Td(10877,ca)|0;Pa(c[(c[wd>>2]|0)+8>>2]|0);break}if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==8?(c[Cd>>2]&4|0)==4:0){Bc=c[(c[wd>>2]|0)+24>>2]|0;if((c[Cd>>2]|0)==4){c[ba>>2]=Bc;Td(11274,ba)|0}else{c[aa>>2]=~~(+Xd(Bc)*16.0);Td(6489,aa)|0}c[$>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,$)|0;Td(4023,_)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Ja(11348);break}if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==4&(c[Cd>>2]|0)==12){Td(10600,Z)|0;c[Y>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,Y)|0;c[X>>2]=~~(+Xd(c[(c[wd>>2]|0)+24>>2]|0)*16.0);Td(11360,X)|0;break}if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==12&(c[Cd>>2]|0)==4){Td(10600,W)|0;c[V>>2]=~~(+Xd(c[(c[wd>>2]|0)+16>>2]|0)*16.0);Td(8728,V)|0;c[U>>2]=c[(c[wd>>2]|0)+24>>2];Td(10865,U)|0;break}if((c[Bd>>2]|0)==4){c[T>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,T)|0}if((c[Cd>>2]|0)==4&(c[Bd>>2]|0)==0){c[S>>2]=c[(c[wd>>2]|0)+16>>2];Td(10883,S)|0}Nb(11370,c[(c[wd>>2]|0)+24>>2]|0,c[rd>>2]&4);break}if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==38){if((c[Bd>>2]|0)==4){c[R>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,R)|0}Nb(11380,c[(c[wd>>2]|0)+24>>2]|0,c[rd>>2]&4);break}if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==94){if((c[Bd>>2]|0)==4){c[Q>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,Q)|0}Nb(11385,c[(c[wd>>2]|0)+24>>2]|0,c[rd>>2]&4);break}if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==124){if((c[Bd>>2]|0)==4){c[P>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,P)|0}Nb(11390,c[(c[wd>>2]|0)+24>>2]|0,c[rd>>2]&4);break}if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==42){if((c[Bd>>2]|0)==4){c[O>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,O)|0}do if(Da(c[(c[wd>>2]|0)+24>>2]|0)|0){if(!(Xa(Ud(c[(c[wd>>2]|0)+24>>2]|0)|0)|0))break;Bc=c[wd>>2]|0;if((a[(c[(c[wd>>2]|0)+20>>2]|0)+1>>0]|0)==42){Za(Bc,16);break c}else{Za(Bc,8);break c}}while(0);Nb(11395,c[(c[wd>>2]|0)+24>>2]|0,c[rd>>2]&4);if((a[(c[(c[wd>>2]|0)+20>>2]|0)+1>>0]|0)==42){Ja(11400);break}else{Ja(11406);break}}if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=47){if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)==58){bd(18400,zd)|0;break}if((a[c[(c[wd>>2]|0)+20>>2]>>0]|0)!=40){Bc=c[721]|0;Cc=c[(c[wd>>2]|0)+20>>2]|0;c[M>>2]=c[88385];c[M+4>>2]=Cc;Od(Bc,11434,M)|0;ga(1)}bd(18400,4029)|0;Bc=(jc(c[(c[wd>>2]|0)+16>>2]|0,11427,5)|0)!=0;Cc=c[wd>>2]|0;if(Bc){bb(Cc);break}else{hb(Cc);break}}if((c[Bd>>2]|0)==4){c[N>>2]=c[(c[wd>>2]|0)+16>>2];Td(7257,N)|0}do if(Da(c[(c[wd>>2]|0)+24>>2]|0)|0){if(!(Ya(Ud(c[(c[wd>>2]|0)+24>>2]|0)|0)|0))break;Cc=c[wd>>2]|0;if((a[(c[(c[wd>>2]|0)+20>>2]|0)+1>>0]|0)==47){_a(Cc,16);break c}else{_a(Cc,8);break c}}while(0);Nb(11411,c[(c[wd>>2]|0)+24>>2]|0,c[rd>>2]&4);if((a[(c[(c[wd>>2]|0)+20>>2]|0)+1>>0]|0)==47){Ja(11416);break}else{Ja(11422);break}}else Ld=313;while(0);do if((Ld|0)==313){if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==0){Td(3846,L)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[K>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,K)|0;Td(11468,J)|0;Td(11468,I)|0;Td(11468,H)|0;Td(11468,G)|0;break}if((c[Ad>>2]|0)==0&(c[Bd>>2]|0)==4){Td(3846,F)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[E>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,E)|0;Td(11475,D)|0;Td(11475,C)|0;Td(11475,B)|0;Td(11475,A)|0;break}if((c[Ad>>2]|0)==4&(c[Bd>>2]|0)==8){Td(3846,z)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[y>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,y)|0;Td(11482,x)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Td(11489,w)|0;if(c[88386]|0)Td(11507,v)|0;Td(5026,u)|0;break}if((c[Ad>>2]|0)==8&(c[Bd>>2]|0)==4){Td(3846,t)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[s>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,s)|0;Td(11510,r)|0;if(c[88386]|0)Td(11507,q)|0;Td(5026,p)|0;Td(11529,o)|0;Pa(c[(c[wd>>2]|0)+8>>2]|0);break}if((c[Ad>>2]|0)==8?(c[Bd>>2]&8|0)==8:0){Td(4023,n)|0;Pa(c[(c[wd>>2]|0)+16>>2]|0);Td(10877,m)|0;Pa(c[(c[wd>>2]|0)+8>>2]|0);Td(3846,l)|0;Ca(c[(c[wd>>2]|0)+16>>2]|0)|0;c[j>>2]=c[(c[wd>>2]|0)+16>>2];Td(4011,j)|0;break}if((c[Ad>>2]|0)==4?(c[Bd>>2]&4|0)==4:0){N=c[(c[wd>>2]|0)+16>>2]|0;if((c[Bd>>2]|0)==4){c[i>>2]=N;Td(7257,i)|0;break}else{c[g>>2]=~~(+Xd(N)*16.0);Td(8728,g)|0;break}}}while(0);if(c[rd>>2]&1|0)ya(sd);if(jc(c[(c[wd>>2]|0)+8>>2]|0,11223,4)|0){Td(10852,f)|0;za(c[(c[wd>>2]|0)+8>>2]|0,c[rd>>2]&1)}_b(c[Dd>>2]|0);k=e;return}function Pb(b){b=b|0;var c=0,e=0;c=k;k=k+16|0;e=c;a[e>>0]=b;k=c;return (d[e>>0]|0)-48|0}function Qb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=k;k=k+112|0;e=d+88|0;f=d+72|0;g=d+24|0;h=d+8|0;i=d+96|0;j=d+92|0;c[i>>2]=b;c[j>>2]=0;b=(jc(c[(c[i>>2]|0)+12>>2]|0,11536,4)|0)!=0;l=c[i>>2]|0;if(b){c[e>>2]=c[l+8>>2];Td(11541,e)|0;k=d;return}else{c[j>>2]=(a[(c[l+12>>2]|0)+4>>0]|0)-48;Td(3861,d)|0;c[h>>2]=c[(c[i>>2]|0)+8>>2];Td(11551,h)|0;Td(3897,d+16|0)|0;c[g>>2]=c[(c[i>>2]|0)+8>>2];Td(11567,g)|0;Td(3897,d+32|0)|0;Td(3957,d+40|0)|0;Td(3897,d+48|0)|0;Td(3969,d+56|0)|0;Td(3897,d+64|0)|0;c[f>>2]=c[j>>2];Td(3975,f)|0;Td(3985,d+80|0)|0;k=d;return}}function Rb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=k;k=k+144|0;e=d+128|0;f=d+120|0;g=d+104|0;h=d+56|0;i=d+40|0;j=d+24|0;l=d+8|0;m=d+136|0;n=d+132|0;c[m>>2]=b;c[n>>2]=0;wa();b=(jc(c[(c[m>>2]|0)+12>>2]|0,11536,4)|0)!=0;o=c[m>>2]|0;if(b){c[e>>2]=c[o+8>>2];Td(11583,e)|0;k=d;return}else{c[n>>2]=(a[(c[o+12>>2]|0)+4>>0]|0)-48;Td(3861,d)|0;o=(c[88389]|0)+1|0;c[88389]=o;c[l>>2]=o;Td(3873,l)|0;Td(3897,d+16|0)|0;c[j>>2]=c[88389];Td(3903,j)|0;Td(3897,d+32|0)|0;c[i>>2]=c[(c[m>>2]|0)+8>>2];Td(11551,i)|0;Td(3897,d+48|0)|0;c[h>>2]=c[(c[m>>2]|0)+8>>2];Td(11567,h)|0;Td(3897,d+64|0)|0;Td(3957,d+72|0)|0;Td(3897,d+80|0)|0;Td(3969,d+88|0)|0;Td(3897,d+96|0)|0;c[g>>2]=c[n>>2];Td(3975,g)|0;Td(3985,d+112|0)|0;c[f>>2]=c[88389];Td(3998,f)|0;k=d;return}}function Sb(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;b=k;k=k+128|0;e=b+104|0;f=b+116|0;g=b+112|0;h=b+108|0;i=b;c[f>>2]=a;a=i;j=16;l=a+104|0;do{c[a>>2]=c[j>>2];a=a+4|0;j=j+4|0}while((a|0)<(l|0));c[g>>2]=Zb(20)|0;g=(ed(c[(c[f>>2]|0)+8>>2]|0,11593,2)|0)!=0;j=c[f>>2]|0;if(!g){if(!(ed(c[j+12>>2]|0,11597,4)|0)){g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,11603)|0;g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,11622)|0;k=b;return}if(ed(c[(c[f>>2]|0)+12>>2]|0,11639,3)|0){Fa(11680);k=b;return}else{g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,11644)|0;g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,11663)|0;k=b;return}}g=(jc(c[j+8>>2]|0,11705,14)|0)!=0;j=c[f>>2]|0;if(!g)if(jc(c[j+12>>2]|0,12956,2)|0){c[88405]=0;k=b;return}else{c[88405]=1;k=b;return}g=(jc(c[j+8>>2]|0,11721,7)|0)!=0;j=c[f>>2]|0;if(!g){Ra(c[j+12>>2]|0);k=b;return}g=(jc(c[j+8>>2]|0,11730,5)|0)!=0;j=c[f>>2]|0;if(!g){if(!(jc(c[j+12>>2]|0,11744,5)|0))c[88402]=1;if(!(jc(c[(c[f>>2]|0)+12>>2]|0,11751,4)|0))c[88402]=2;if(!(jc(c[(c[f>>2]|0)+12>>2]|0,11757,4)|0))c[88402]=c[88402]|4;if(!(jc(c[(c[f>>2]|0)+12>>2]|0,11771,4)|0))c[88402]=c[88402]|8;if(jc(c[(c[f>>2]|0)+12>>2]|0,11783,4)|0){k=b;return}c[88402]=0;k=b;return}if(!(jc(c[j+8>>2]|0,11789,6)|0)){Fa(11797);k=b;return}if(jc(c[(c[f>>2]|0)+8>>2]|0,11915,10)|0){j=(jc(c[(c[f>>2]|0)+8>>2]|0,12330,6)|0)!=0;g=c[f>>2]|0;if(!j){if(!(jc(c[g+12>>2]|0,12338,11)|0)){c[88407]=1;j=c[88398]|0;c[88398]=j+1;bd(320384+(j*100|0)|0,12351)|0;Sa(12367);c[88395]=1;k=b;return}if(jc(c[(c[f>>2]|0)+12>>2]|0,12383,11)|0){Fa(12407);k=b;return}else{c[88407]=1;j=c[88398]|0;c[88398]=j+1;bd(320384+(j*100|0)|0,12351)|0;c[88395]=1;k=b;return}}j=(jc(c[g+8>>2]|0,12455,5)|0)!=0;g=c[f>>2]|0;if(j)if(jc(c[g+8>>2]|0,12548,6)|0){Fa(12568);k=b;return}else{j=c[88398]|0;c[88398]=j+1;c[e>>2]=~~(+Xd(c[(c[f>>2]|0)+12>>2]|0)*100.0);lc(320384+(j*100|0)|0,12556,e)|0;k=b;return}if(!(jc(c[g+12>>2]|0,12462,10)|0)){g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,12474)|0;k=b;return}if(jc(c[(c[f>>2]|0)+12>>2]|0,12489,6)|0){Fa(12513);k=b;return}else{g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,12497)|0;k=b;return}}c[h>>2]=3;c[88391]=0;a:while(1){if((d[c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]>>0]|0|0)<=64)break;if((d[c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]>>0]|0|0)>=123)break;do if(jc(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0,11931,10)|0){if(!(jc(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0,11958,13)|0)){g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,11973)|0;c[88391]=c[88391]|2;break}if(!(jc(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0,11991,12)|0)){g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,12005)|0;g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,11973)|0;c[88391]=c[88391]|6;break}if(!(jc(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0,12022,13)|0)){g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,12038)|0;c[88391]=c[88391]|8;break}if(!(ed(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0,12057,8)|0)){c[88391]=c[88391]|16;break}if(!(ed(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0,12067,9)|0)){c[88391]=c[88391]|32;break}if(ed(c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]|0,12078,10)|0){m=44;break a}g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,12096)|0;c[88391]=c[88391]|64}else{g=c[88398]|0;c[88398]=g+1;bd(320384+(g*100|0)|0,11943)|0;c[88391]=c[88391]|1}while(0);c[h>>2]=(c[h>>2]|0)+1}if((m|0)==44){Fa(12117);ga(1)}do if((c[88391]&48|0)!=32){if((c[88391]&48|0)==16){f=c[88398]|0;c[88398]=f+1;bd(320384+(f*100|0)|0,12179)|0;break}if((c[88391]&48|0)==48){f=c[88398]|0;c[88398]=f+1;bd(320384+(f*100|0)|0,12192)|0}}else{f=c[88398]|0;c[88398]=f+1;bd(320384+(f*100|0)|0,12165)|0}while(0);if((c[88391]|0)==1){Fa(12213);ga(1)}c[h>>2]=0;while(1){if((c[i+(c[h>>2]<<2)>>2]|0)==255){m=56;break}f=c[88391]|0;g=c[h>>2]|0;c[h>>2]=g+1;if((f|0)==(c[i+(g<<2)>>2]|0)){m=74;break}}if((m|0)==56){Fa(12278);ga(1)}else if((m|0)==74){k=b;return}}function Tb(a){a=a|0;var b=0,d=0;b=k;k=k+16|0;d=b;c[d>>2]=a;if(jc(c[(c[d>>2]|0)+8>>2]|0,11705,14)|0){k=b;return}if(jc(c[(c[d>>2]|0)+12>>2]|0,12956,2)|0){c[88405]=0;k=b;return}else{c[88405]=1;k=b;return}}function Ub(){var a=0;a=k;k=k+16|0;Td(12592,a)|0;Td(12592,a+8|0)|0;k=a;return}function Vb(){wa();Ba(12598);return}function Wb(a){a=a|0;var b=0;b=k;k=k+16|0;c[b>>2]=a;k=b;return}function Xb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=k;k=k+32|0;e=d+8|0;f=d;g=d+20|0;h=d+16|0;i=d+12|0;c[g>>2]=a;c[h>>2]=b;b=td(c[h>>2]|0,6217)|0;c[g>>2]=b;if(!b){b=c[721]|0;c[f>>2]=c[h>>2];Od(b,12609,f)|0;ga(1)}bd(320384+((c[88398]|0)*100|0)|0,12637)|0;c[i>>2]=c[88398];while(1){j=c[g>>2]|0;if((c[i>>2]|0)<0)break;c[e>>2]=320384+((c[i>>2]|0)*100|0);Od(j,4011,e)|0;c[i>>2]=(c[i>>2]|0)+-1}zd(j)|0;k=d;return}function Yb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=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;d=k;k=k+240|0;e=d+176|0;f=d+168|0;g=d+160|0;h=d+152|0;i=d+144|0;j=d+136|0;l=d+128|0;m=d+120|0;n=d+112|0;o=d+104|0;p=d+228|0;q=d;r=d+224|0;s=d+220|0;t=d+216|0;u=d+212|0;v=d+208|0;w=d+204|0;x=d+200|0;y=d+196|0;z=d+192|0;A=d+188|0;B=d+184|0;C=d+180|0;c[p>>2]=b;c[v>>2]=0;c[w>>2]=0;c[C>>2]=0;c[r>>2]=Zb(240)|0;c[z>>2]=Zb(240)|0;c[s>>2]=0;while(1){if((c[s>>2]|0)>=60)break;b=$b(60,1)|0;c[(c[z>>2]|0)+(c[s>>2]<<2)>>2]=b;c[s>>2]=(c[s>>2]|0)+1}c[y>>2]=Zb(240)|0;c[s>>2]=0;while(1){if((c[s>>2]|0)>=60)break;b=$b(60,1)|0;c[(c[y>>2]|0)+(c[s>>2]<<2)>>2]=b;c[s>>2]=(c[s>>2]|0)+1}c[B>>2]=0;c[u>>2]=0;while(1){if((c[u>>2]|0)>40)break;if(!(jc(c[(c[p>>2]|0)+((c[u>>2]|0)+1<<2)>>2]|0,12723,3)|0))break;do if(!(jc(c[(c[p>>2]|0)+((c[u>>2]|0)+1<<2)>>2]|0,12728,2)|0)){c[s>>2]=(c[u>>2]|0)+2;while(1){if((c[s>>2]|0)>=50)break;if(!(jc(c[(c[p>>2]|0)+(c[s>>2]<<2)>>2]|0,12728,2)|0))break;if(!(jc(c[(c[p>>2]|0)+(c[s>>2]<<2)>>2]|0,12732,4)|0))c[C>>2]=c[s>>2];c[s>>2]=(c[s>>2]|0)+1}b=(jc(c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0,12738,2)|0)!=0;D=c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0;if(b){if(!(jc(D,12743,2)|0)){bd(c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+2<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+2<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0,12747)|0}}else{bd(D,c[(c[p>>2]|0)+((c[u>>2]|0)+2<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+2<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0,12741)|0}D=(jc(c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0,12750,2)|0)!=0;b=c[p>>2]|0;E=c[u>>2]|0;if(!D){lb(b,E+3|0);D=c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0;F=c[88410]|0;c[88410]=F+1;c[o>>2]=F;lc(D,12754,o)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0,12761)|0;break}D=(jc(c[b+(E+5<<2)>>2]|0,12750,2)|0)!=0;E=c[p>>2]|0;b=c[u>>2]|0;if(!D){lb(E,b+5|0);D=c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0;F=c[88410]|0;c[88410]=F+1;c[n>>2]=F;lc(D,12754,n)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0,12761)|0;break}D=(jc(c[E+(b+3<<2)>>2]|0,12764,2)|0)!=0;b=c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0;if(!D){D=(jc(b,12738,2)|0)!=0;E=c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0;if(D){if(!(jc(E,12743,2)|0)){bd(c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0,12747)|0}}else{bd(E,c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+4<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0,12741)|0}c[s>>2]=2;while(1){if((c[s>>2]|0)>=(48-(c[u>>2]|0)|0))break;bd(c[(c[z>>2]|0)+(c[s>>2]<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+(c[s>>2]|0)+2<<2)>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+1}E=(jc(c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0,12768,4)|0)!=0;D=c[p>>2]|0;F=c[u>>2]|0;if(E){if(!(jc(c[D+(F+7<<2)>>2]|0,12768,4)|0))mb(c[p>>2]|0,(c[u>>2]|0)+3|0,(c[u>>2]|0)+4|0)}else mb(D,F+3|0,(c[u>>2]|0)+2|0);bd(c[(c[p>>2]|0)+((c[u>>2]|0)+3<<2)>>2]|0,12774)|0;F=c[c[z>>2]>>2]|0;D=c[88410]|0;c[88410]=D+1;c[m>>2]=D;lc(F,12779,m)|0;bd(c[(c[z>>2]|0)+4>>2]|0,12761)|0;c[B>>2]=1;break}if(!(jc(b,12764,2)|0)){F=(jc(c[(c[p>>2]|0)+((c[u>>2]|0)+7<<2)>>2]|0,12738,2)|0)!=0;D=c[(c[p>>2]|0)+((c[u>>2]|0)+7<<2)>>2]|0;if(F){if(!(jc(D,12743,2)|0)){bd(c[(c[p>>2]|0)+((c[u>>2]|0)+7<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+8<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+8<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+7<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+7<<2)>>2]|0,12747)|0}}else{bd(D,c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+6<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+8<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+8<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+7<<2)>>2]|0)|0;bd(c[(c[p>>2]|0)+((c[u>>2]|0)+7<<2)>>2]|0,12741)|0}c[s>>2]=2;while(1){if((c[s>>2]|0)>=(46-(c[u>>2]|0)|0))break;bd(c[(c[z>>2]|0)+(c[s>>2]<<2)>>2]|0,c[(c[p>>2]|0)+((c[u>>2]|0)+(c[s>>2]|0)+4<<2)>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+1}b=(jc(c[(c[p>>2]|0)+((c[u>>2]|0)+7<<2)>>2]|0,12768,4)|0)!=0;D=c[p>>2]|0;F=c[u>>2]|0;if(b){if(!(jc(c[D+(F+9<<2)>>2]|0,12768,4)|0))mb(c[p>>2]|0,(c[u>>2]|0)+5|0,(c[u>>2]|0)+4|0)}else mb(D,F+5|0,(c[u>>2]|0)+2|0);bd(c[(c[p>>2]|0)+((c[u>>2]|0)+5<<2)>>2]|0,12774)|0;F=c[c[z>>2]>>2]|0;D=c[88410]|0;c[88410]=D+1;c[l>>2]=D;lc(F,12779,l)|0;bd(c[(c[z>>2]|0)+4>>2]|0,12761)|0;c[B>>2]=1}}while(0);if(c[B>>2]|0)break;c[u>>2]=(c[u>>2]|0)+1}a:do if(c[C>>2]|0){if(c[B>>2]|0)c[x>>2]=c[z>>2];else c[x>>2]=c[p>>2];c[s>>2]=1;while(1){if((c[s>>2]|0)>=50)break;l=(jc(c[(c[x>>2]|0)+(c[s>>2]<<2)>>2]|0,12732,4)|0)!=0;G=c[s>>2]|0;if(!l){H=60;break}c[s>>2]=G+1}if((H|0)==60)c[C>>2]=G;c[s>>2]=c[C>>2];while(1){if((c[s>>2]|0)>=50)break;bd(c[(c[y>>2]|0)+((c[s>>2]|0)-(c[C>>2]|0)<<2)>>2]|0,c[(c[x>>2]|0)+(c[s>>2]<<2)>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+1}if(gb(c[x>>2]|0)|0){l=c[x>>2]|0;m=c[C>>2]|0;c[C>>2]=m+1;bd(c[l+(m<<2)>>2]|0,12784)|0;m=c[x>>2]|0;l=c[C>>2]|0;c[C>>2]=l+1;bd(c[m+(l<<2)>>2]|0,12786)|0;l=c[x>>2]|0;m=c[C>>2]|0;c[C>>2]=m+1;n=c[l+(m<<2)>>2]|0;c[j>>2]=c[88411];lc(n,12791,j)|0}c[s>>2]=c[C>>2];while(1){if((c[s>>2]|0)>=50)break;a[c[(c[x>>2]|0)+(c[s>>2]<<2)>>2]>>0]=0;c[s>>2]=(c[s>>2]|0)+1}if(!(gb(c[y>>2]|0)|0)){bd(c[(c[y>>2]|0)+8>>2]|0,c[(c[y>>2]|0)+4>>2]|0)|0;bd(c[(c[y>>2]|0)+4>>2]|0,12786)|0}if(c[B>>2]|0){c[s>>2]=1;while(1){if((c[s>>2]|0)>=50)break;if(!(jc(c[(c[p>>2]|0)+(c[s>>2]<<2)>>2]|0,12732,4)|0))break;c[s>>2]=(c[s>>2]|0)+1}c[u>>2]=c[s>>2];while(1){if((c[u>>2]|0)>=50)break a;a[c[(c[p>>2]|0)+(c[u>>2]<<2)>>2]>>0]=0;c[u>>2]=(c[u>>2]|0)+1}}}while(0);if(c[B>>2]|0){c[A>>2]=c[z>>2];c[z>>2]=c[p>>2];c[p>>2]=c[A>>2];b:do if(eb(c[z>>2]|0)|0){c[s>>2]=3;do{B=c[z>>2]|0;x=c[s>>2]|0;c[s>>2]=x+1}while((jc(c[B+(x<<2)>>2]|0,12768,4)|0)!=0);if((c[s>>2]|0)>40){c[s>>2]=40;x=c[721]|0;c[i>>2]=ta()|0;Od(x,12802,i)|0}x=c[z>>2]|0;B=c[s>>2]|0;c[s>>2]=B+1;bd(c[x+(B<<2)>>2]|0,12786)|0;B=c[z>>2]|0;x=c[s>>2]|0;c[s>>2]=x+1;j=c[B+(x<<2)>>2]|0;c[h>>2]=(Kb()|0)+1;lc(j,12867,h)|0;while(1){if((c[s>>2]|0)>=50)break b;a[c[(c[z>>2]|0)+(c[s>>2]<<2)>>2]>>0]=0;c[s>>2]=(c[s>>2]|0)+1}}while(0);Yb(c[z>>2]|0)}if(c[C>>2]|0){c[A>>2]=c[y>>2];c[y>>2]=c[p>>2];c[p>>2]=c[A>>2];Yb(c[y>>2]|0)}c[s>>2]=0;while(1){if((c[s>>2]|0)>=50)break;c[(c[r>>2]|0)+(c[s>>2]<<2)>>2]=c[(c[p>>2]|0)+(c[s>>2]<<2)>>2];if((a[c[(c[r>>2]|0)+(c[s>>2]<<2)>>2]>>0]|0)==58)c[v>>2]=(c[v>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+1}if(!(jc(c[c[r>>2]>>2]|0,12768,4)|0)){y=c[c[r>>2]>>2]|0;A=c[88412]|0;c[88412]=A+1;c[g>>2]=A;lc(y,12878,g)|0}wa();c:while(1){c[s>>2]=0;if(!(a[c[(c[r>>2]|0)+4>>2]>>0]|0)){H=196;break}d:do if(jc(c[c[r>>2]>>2]|0,12885,3)|0){g=(jc(c[(c[r>>2]|0)+4>>2]|0,12890,12)|0)!=0;y=c[r>>2]|0;if(!g){Sa(c[y+8>>2]|0);break}g=(jc(c[y+4>>2]|0,12904,7)|0)!=0;y=c[r>>2]|0;if(!g){Ta(c[y+8>>2]|0);break}g=(jc(c[y+4>>2]|0,12913,6)|0)!=0;y=c[r>>2]|0;if(!g){Ua(c[y+8>>2]|0);break}g=(jc(c[y+4>>2]|0,12921,8)|0)!=0;y=c[r>>2]|0;if(!g){ab(y);break}if((a[c[y+4>>2]>>0]|0)==32){H=196;break c}y=(jc(c[(c[r>>2]|0)+4>>2]|0,12728,2)|0)!=0;I=c[r>>2]|0;if(!y){H=114;break c}y=(jc(c[I+4>>2]|0,12931,4)|0)!=0;g=c[r>>2]|0;if(!y){Qb(g);break}y=(jc(c[g+4>>2]|0,12937,4)|0)!=0;g=c[r>>2]|0;if(!y){La(Ud(c[g+8>>2]|0)|0);break}y=(jc(c[g+4>>2]|0,12943,5)|0)!=0;g=c[r>>2]|0;if(!y){ib(g);break}y=(jc(c[g+4>>2]|0,12950,4)|0)!=0;g=c[r>>2]|0;if(!y){kb(g);break}do if(!(jc(c[g+4>>2]|0,12956,2)|0)){if(jc(c[(c[r>>2]|0)+12>>2]|0,12931,4)|0)break;nb(c[r>>2]|0);break d}while(0);g=(jc(c[(c[r>>2]|0)+4>>2]|0,12960,5)|0)!=0;y=c[r>>2]|0;if(!g){vb(y);break}g=(jc(c[y+4>>2]|0,12967,3)|0)!=0;y=c[r>>2]|0;if(!g){ub(y);break}g=(jc(c[y+4>>2]|0,12972,3)|0)!=0;y=c[r>>2]|0;if(!g){ob(y);break}g=(jc(c[y+4>>2]|0,12977,4)|0)!=0;y=c[r>>2]|0;if(!g){pb(y);break}g=(jc(c[y+4>>2]|0,12983,5)|0)!=0;y=c[r>>2]|0;if(!g){Rb(y);break}g=(jc(c[y+4>>2]|0,12990,7)|0)!=0;y=c[r>>2]|0;if(!g){yb(y);break}g=(jc(c[y+4>>2]|0,12999,7)|0)!=0;y=c[r>>2]|0;if(!g){zb(y);break}g=(jc(c[y+4>>2]|0,13008,7)|0)!=0;y=c[r>>2]|0;if(!g){va(y);break}g=(jc(c[y+4>>2]|0,13017,7)|0)!=0;y=c[r>>2]|0;if(!g){Ab(y);break}g=(jc(c[y+4>>2]|0,13026,8)|0)!=0;y=c[r>>2]|0;if(!g){Bb(y);break}if(!(jc(c[y+4>>2]|0,13036,10)|0)){Vb();break}if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13048,3)|0)){Cb();break}if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13053,3)|0)){Ub();break}y=(jc(c[(c[r>>2]|0)+4>>2]|0,12723,3)|0)!=0;J=c[r>>2]|0;if(!y){H=153;break c}y=(jc(c[J+4>>2]|0,13058,3)|0)!=0;g=c[r>>2]|0;if(!y){Sb(g);break}y=(jc(c[g+4>>2]|0,13063,6)|0)!=0;g=c[r>>2]|0;if(!y){wb(g);break}if(!(jc(c[g+4>>2]|0,13071,6)|0)){sa();break}if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13079,6)|0)){ua();break}do if(ed(c[(c[r>>2]|0)+4>>2]|0,13087,9)|0){if(!(ed(c[(c[r>>2]|0)+4>>2]|0,13098,9)|0))break;g=(jc(c[(c[r>>2]|0)+4>>2]|0,13110,10)|0)!=0;y=c[r>>2]|0;if(!g){Ga(y);break d}g=(jc(c[y+4>>2]|0,13122,6)|0)!=0;y=c[r>>2]|0;if(!g){Eb(y);break d}do if(jc(c[y+4>>2]|0,13130,8)|0){if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13140,8)|0))break;if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13150,8)|0))break;if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13160,8)|0))break;if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13170,8)|0))break;if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13180,8)|0))break;if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13190,13)|0))break;if(!(jc(c[(c[r>>2]|0)+4>>2]|0,13205,13)|0))break;g=(jc(c[(c[r>>2]|0)+8>>2]|0,13220,1)|0)!=0;A=c[r>>2]|0;if(!g){Ob(A);break d}if(jc(c[A+4>>2]|0,13223,3)|0){H=182;break c}Ob(c[r>>2]|0);break d}while(0);Db(c[r>>2]|0);break d}while(0);Ea(c[r>>2]|0)}else $a();while(0);if(!(c[v>>2]|0))break;if((c[w>>2]|0)==(c[v>>2]|0))break;c[w>>2]=(c[w>>2]|0)+1;c[s>>2]=0;c[u>>2]=0;while(1){if((c[s>>2]|0)==(c[w>>2]|0))break;y=c[p>>2]|0;A=c[u>>2]|0;c[u>>2]=A+1;if((a[c[y+(A<<2)>>2]>>0]|0)==58)c[s>>2]=(c[s>>2]|0)+1}c[t>>2]=c[u>>2];while(1){if((c[t>>2]|0)>=50)break;c[(c[r>>2]|0)+((c[t>>2]|0)-(c[u>>2]|0)+1<<2)>>2]=c[(c[p>>2]|0)+(c[t>>2]<<2)>>2];c[t>>2]=(c[t>>2]|0)+1}}if((H|0)==114)Fb(I);else if((H|0)==153){Tb(J);k=d;return}else if((H|0)==182){c[f>>2]=c[(c[r>>2]|0)+4>>2];lc(q,13228,f)|0;Fa(q);ga(1)}else if((H|0)==196){k=d;return}if(!(c[C>>2]|0)){k=d;return}C=c[88411]|0;c[88411]=C+1;c[e>>2]=C;Td(13256,e)|0;k=d;return}function Zb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=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,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,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;b=k;k=k+16|0;d=b;do if(a>>>0<245){e=a>>>0<11?16:a+11&-8;f=e>>>3;g=c[88413]|0;h=g>>>f;if(h&3|0){i=(h&1^1)+f|0;j=353692+(i<<1<<2)|0;l=j+8|0;m=c[l>>2]|0;n=m+8|0;o=c[n>>2]|0;if((o|0)==(j|0))c[88413]=g&~(1<>2]=j;c[l>>2]=o}o=i<<3;c[m+4>>2]=o|3;i=m+o+4|0;c[i>>2]=c[i>>2]|1;p=n;k=b;return p|0}n=c[88415]|0;if(e>>>0>n>>>0){if(h|0){i=2<>>12&16;f=i>>>o;i=f>>>5&8;h=f>>>i;f=h>>>2&4;m=h>>>f;h=m>>>1&2;l=m>>>h;m=l>>>1&1;j=(i|o|f|h|m)+(l>>>m)|0;m=353692+(j<<1<<2)|0;l=m+8|0;h=c[l>>2]|0;f=h+8|0;o=c[f>>2]|0;if((o|0)==(m|0)){i=g&~(1<>2]=m;c[l>>2]=o;q=g}o=j<<3;j=o-e|0;c[h+4>>2]=e|3;l=h+e|0;c[l+4>>2]=j|1;c[h+o>>2]=j;if(n|0){o=c[88418]|0;h=n>>>3;m=353692+(h<<1<<2)|0;i=1<>2]|0;s=i}c[s>>2]=o;c[r+12>>2]=o;c[o+8>>2]=r;c[o+12>>2]=m}c[88415]=j;c[88418]=l;p=f;k=b;return p|0}f=c[88414]|0;if(f){l=(f&0-f)+-1|0;j=l>>>12&16;m=l>>>j;l=m>>>5&8;o=m>>>l;m=o>>>2&4;i=o>>>m;o=i>>>1&2;h=i>>>o;i=h>>>1&1;t=c[353956+((l|j|m|o|i)+(h>>>i)<<2)>>2]|0;i=t;h=t;o=(c[t+4>>2]&-8)-e|0;while(1){t=c[i+16>>2]|0;if(!t){m=c[i+20>>2]|0;if(!m)break;else u=m}else u=t;t=(c[u+4>>2]&-8)-e|0;m=t>>>0>>0;i=u;h=m?u:h;o=m?t:o}i=h+e|0;if(i>>>0>h>>>0){t=c[h+24>>2]|0;m=c[h+12>>2]|0;do if((m|0)==(h|0)){j=h+20|0;l=c[j>>2]|0;if(!l){v=h+16|0;w=c[v>>2]|0;if(!w){x=0;break}else{y=w;z=v}}else{y=l;z=j}j=y;l=z;while(1){v=j+20|0;w=c[v>>2]|0;if(!w){A=j+16|0;B=c[A>>2]|0;if(!B)break;else{C=B;D=A}}else{C=w;D=v}j=C;l=D}c[l>>2]=0;x=j}else{v=c[h+8>>2]|0;c[v+12>>2]=m;c[m+8>>2]=v;x=m}while(0);do if(t|0){m=c[h+28>>2]|0;v=353956+(m<<2)|0;if((h|0)==(c[v>>2]|0)){c[v>>2]=x;if(!x){c[88414]=f&~(1<>2]|0)==(h|0)?m:t+20|0)>>2]=x;if(!x)break}c[x+24>>2]=t;m=c[h+16>>2]|0;if(m|0){c[x+16>>2]=m;c[m+24>>2]=x}m=c[h+20>>2]|0;if(m|0){c[x+20>>2]=m;c[m+24>>2]=x}}while(0);if(o>>>0<16){t=o+e|0;c[h+4>>2]=t|3;f=h+t+4|0;c[f>>2]=c[f>>2]|1}else{c[h+4>>2]=e|3;c[i+4>>2]=o|1;c[i+o>>2]=o;if(n|0){f=c[88418]|0;t=n>>>3;m=353692+(t<<1<<2)|0;v=1<>2]|0;F=v}c[F>>2]=f;c[E+12>>2]=f;c[f+8>>2]=E;c[f+12>>2]=m}c[88415]=o;c[88418]=i}p=h+8|0;k=b;return p|0}else G=e}else G=e}else G=e}else if(a>>>0<=4294967231){m=a+11|0;f=m&-8;v=c[88414]|0;if(v){t=0-f|0;w=m>>>8;if(w)if(f>>>0>16777215)H=31;else{m=(w+1048320|0)>>>16&8;A=w<>>16&4;B=A<>>16&2;I=14-(w|m|A)+(B<>>15)|0;H=f>>>(I+7|0)&1|I<<1}else H=0;I=c[353956+(H<<2)>>2]|0;a:do if(!I){J=0;K=0;L=t;M=61}else{A=0;B=t;m=I;w=f<<((H|0)==31?0:25-(H>>>1)|0);N=0;while(1){O=(c[m+4>>2]&-8)-f|0;if(O>>>0>>0)if(!O){P=m;Q=0;R=m;M=65;break a}else{S=m;T=O}else{S=A;T=B}O=c[m+20>>2]|0;m=c[m+16+(w>>>31<<2)>>2]|0;U=(O|0)==0|(O|0)==(m|0)?N:O;if(!m){J=U;K=S;L=T;M=61;break}else{A=S;B=T;w=w<<1;N=U}}}while(0);if((M|0)==61){if((J|0)==0&(K|0)==0){I=2<>>12&16;e=I>>>t;I=e>>>5&8;h=e>>>I;e=h>>>2&4;i=h>>>e;h=i>>>1&2;o=i>>>h;i=o>>>1&1;V=0;W=c[353956+((I|t|e|h|i)+(o>>>i)<<2)>>2]|0}else{V=K;W=J}if(!W){X=V;Y=L}else{P=V;Q=L;R=W;M=65}}if((M|0)==65){i=P;o=Q;h=R;while(1){e=(c[h+4>>2]&-8)-f|0;t=e>>>0>>0;I=t?e:o;e=t?h:i;t=c[h+16>>2]|0;if(!t)Z=c[h+20>>2]|0;else Z=t;if(!Z){X=e;Y=I;break}else{i=e;o=I;h=Z}}}if(((X|0)!=0?Y>>>0<((c[88415]|0)-f|0)>>>0:0)?(h=X+f|0,h>>>0>X>>>0):0){o=c[X+24>>2]|0;i=c[X+12>>2]|0;do if((i|0)==(X|0)){I=X+20|0;e=c[I>>2]|0;if(!e){t=X+16|0;g=c[t>>2]|0;if(!g){_=0;break}else{$=g;aa=t}}else{$=e;aa=I}I=$;e=aa;while(1){t=I+20|0;g=c[t>>2]|0;if(!g){n=I+16|0;N=c[n>>2]|0;if(!N)break;else{ba=N;ca=n}}else{ba=g;ca=t}I=ba;e=ca}c[e>>2]=0;_=I}else{t=c[X+8>>2]|0;c[t+12>>2]=i;c[i+8>>2]=t;_=i}while(0);do if(o){i=c[X+28>>2]|0;t=353956+(i<<2)|0;if((X|0)==(c[t>>2]|0)){c[t>>2]=_;if(!_){t=v&~(1<>2]|0)==(X|0)?t:o+20|0)>>2]=_;if(!_){da=v;break}}c[_+24>>2]=o;t=c[X+16>>2]|0;if(t|0){c[_+16>>2]=t;c[t+24>>2]=_}t=c[X+20>>2]|0;if(t){c[_+20>>2]=t;c[t+24>>2]=_;da=v}else da=v}else da=v;while(0);b:do if(Y>>>0<16){v=Y+f|0;c[X+4>>2]=v|3;o=X+v+4|0;c[o>>2]=c[o>>2]|1}else{c[X+4>>2]=f|3;c[h+4>>2]=Y|1;c[h+Y>>2]=Y;o=Y>>>3;if(Y>>>0<256){v=353692+(o<<1<<2)|0;t=c[88413]|0;i=1<>2]|0;fa=i}c[fa>>2]=h;c[ea+12>>2]=h;c[h+8>>2]=ea;c[h+12>>2]=v;break}v=Y>>>8;if(v)if(Y>>>0>16777215)ga=31;else{i=(v+1048320|0)>>>16&8;t=v<>>16&4;o=t<>>16&2;g=14-(v|i|t)+(o<>>15)|0;ga=Y>>>(g+7|0)&1|g<<1}else ga=0;g=353956+(ga<<2)|0;c[h+28>>2]=ga;t=h+16|0;c[t+4>>2]=0;c[t>>2]=0;t=1<>2]=h;c[h+24>>2]=g;c[h+12>>2]=h;c[h+8>>2]=h;break}t=c[g>>2]|0;c:do if((c[t+4>>2]&-8|0)==(Y|0))ha=t;else{g=Y<<((ga|0)==31?0:25-(ga>>>1)|0);o=t;while(1){ia=o+16+(g>>>31<<2)|0;i=c[ia>>2]|0;if(!i)break;if((c[i+4>>2]&-8|0)==(Y|0)){ha=i;break c}else{g=g<<1;o=i}}c[ia>>2]=h;c[h+24>>2]=o;c[h+12>>2]=h;c[h+8>>2]=h;break b}while(0);t=ha+8|0;I=c[t>>2]|0;c[I+12>>2]=h;c[t>>2]=h;c[h+8>>2]=I;c[h+12>>2]=ha;c[h+24>>2]=0}while(0);p=X+8|0;k=b;return p|0}else G=f}else G=f}else G=-1;while(0);X=c[88415]|0;if(X>>>0>=G>>>0){ha=X-G|0;ia=c[88418]|0;if(ha>>>0>15){Y=ia+G|0;c[88418]=Y;c[88415]=ha;c[Y+4>>2]=ha|1;c[ia+X>>2]=ha;c[ia+4>>2]=G|3}else{c[88415]=0;c[88418]=0;c[ia+4>>2]=X|3;ha=ia+X+4|0;c[ha>>2]=c[ha>>2]|1}p=ia+8|0;k=b;return p|0}ia=c[88416]|0;if(ia>>>0>G>>>0){ha=ia-G|0;c[88416]=ha;X=c[88419]|0;Y=X+G|0;c[88419]=Y;c[Y+4>>2]=ha|1;c[X+4>>2]=G|3;p=X+8|0;k=b;return p|0}if(!(c[88531]|0)){c[88533]=4096;c[88532]=4096;c[88534]=-1;c[88535]=-1;c[88536]=0;c[88524]=0;c[88531]=d&-16^1431655768;ja=4096}else ja=c[88533]|0;d=G+48|0;X=G+47|0;ha=ja+X|0;Y=0-ja|0;ja=ha&Y;if(ja>>>0<=G>>>0){p=0;k=b;return p|0}ga=c[88523]|0;if(ga|0?(da=c[88521]|0,ea=da+ja|0,ea>>>0<=da>>>0|ea>>>0>ga>>>0):0){p=0;k=b;return p|0}d:do if(!(c[88524]&4)){ga=c[88419]|0;e:do if(ga){ea=354100;while(1){da=c[ea>>2]|0;if(da>>>0<=ga>>>0?(da+(c[ea+4>>2]|0)|0)>>>0>ga>>>0:0)break;da=c[ea+8>>2]|0;if(!da){M=128;break e}else ea=da}da=ha-ia&Y;if(da>>>0<2147483647){fa=je(da|0)|0;if((fa|0)==((c[ea>>2]|0)+(c[ea+4>>2]|0)|0))if((fa|0)==(-1|0))ka=da;else{la=da;ma=fa;M=145;break d}else{na=fa;oa=da;M=136}}else ka=0}else M=128;while(0);do if((M|0)==128){ga=je(0)|0;if((ga|0)!=(-1|0)?(f=ga,da=c[88532]|0,fa=da+-1|0,_=((fa&f|0)==0?0:(fa+f&0-da)-f|0)+ja|0,f=c[88521]|0,da=_+f|0,_>>>0>G>>>0&_>>>0<2147483647):0){fa=c[88523]|0;if(fa|0?da>>>0<=f>>>0|da>>>0>fa>>>0:0){ka=0;break}fa=je(_|0)|0;if((fa|0)==(ga|0)){la=_;ma=ga;M=145;break d}else{na=fa;oa=_;M=136}}else ka=0}while(0);do if((M|0)==136){_=0-oa|0;if(!(d>>>0>oa>>>0&(oa>>>0<2147483647&(na|0)!=(-1|0))))if((na|0)==(-1|0)){ka=0;break}else{la=oa;ma=na;M=145;break d}fa=c[88533]|0;ga=X-oa+fa&0-fa;if(ga>>>0>=2147483647){la=oa;ma=na;M=145;break d}if((je(ga|0)|0)==(-1|0)){je(_|0)|0;ka=0;break}else{la=ga+oa|0;ma=na;M=145;break d}}while(0);c[88524]=c[88524]|4;pa=ka;M=143}else{pa=0;M=143}while(0);if(((M|0)==143?ja>>>0<2147483647:0)?(ka=je(ja|0)|0,ja=je(0)|0,na=ja-ka|0,oa=na>>>0>(G+40|0)>>>0,!((ka|0)==(-1|0)|oa^1|ka>>>0>>0&((ka|0)!=(-1|0)&(ja|0)!=(-1|0))^1)):0){la=oa?na:pa;ma=ka;M=145}if((M|0)==145){ka=(c[88521]|0)+la|0;c[88521]=ka;if(ka>>>0>(c[88522]|0)>>>0)c[88522]=ka;ka=c[88419]|0;f:do if(ka){pa=354100;while(1){qa=c[pa>>2]|0;ra=c[pa+4>>2]|0;if((ma|0)==(qa+ra|0)){M=154;break}na=c[pa+8>>2]|0;if(!na)break;else pa=na}if(((M|0)==154?(na=pa+4|0,(c[pa+12>>2]&8|0)==0):0)?ma>>>0>ka>>>0&qa>>>0<=ka>>>0:0){c[na>>2]=ra+la;na=(c[88416]|0)+la|0;oa=ka+8|0;ja=(oa&7|0)==0?0:0-oa&7;oa=ka+ja|0;X=na-ja|0;c[88419]=oa;c[88416]=X;c[oa+4>>2]=X|1;c[ka+na+4>>2]=40;c[88420]=c[88535];break}if(ma>>>0<(c[88417]|0)>>>0)c[88417]=ma;na=ma+la|0;X=354100;while(1){if((c[X>>2]|0)==(na|0)){M=162;break}oa=c[X+8>>2]|0;if(!oa)break;else X=oa}if((M|0)==162?(c[X+12>>2]&8|0)==0:0){c[X>>2]=ma;pa=X+4|0;c[pa>>2]=(c[pa>>2]|0)+la;pa=ma+8|0;oa=ma+((pa&7|0)==0?0:0-pa&7)|0;pa=na+8|0;ja=na+((pa&7|0)==0?0:0-pa&7)|0;pa=oa+G|0;d=ja-oa-G|0;c[oa+4>>2]=G|3;g:do if((ka|0)==(ja|0)){Y=(c[88416]|0)+d|0;c[88416]=Y;c[88419]=pa;c[pa+4>>2]=Y|1}else{if((c[88418]|0)==(ja|0)){Y=(c[88415]|0)+d|0;c[88415]=Y;c[88418]=pa;c[pa+4>>2]=Y|1;c[pa+Y>>2]=Y;break}Y=c[ja+4>>2]|0;if((Y&3|0)==1){ia=Y&-8;ha=Y>>>3;h:do if(Y>>>0<256){ga=c[ja+8>>2]|0;_=c[ja+12>>2]|0;if((_|0)==(ga|0)){c[88413]=c[88413]&~(1<>2]=_;c[_+8>>2]=ga;break}}else{ga=c[ja+24>>2]|0;_=c[ja+12>>2]|0;do if((_|0)==(ja|0)){fa=ja+16|0;da=fa+4|0;f=c[da>>2]|0;if(!f){ca=c[fa>>2]|0;if(!ca){sa=0;break}else{ta=ca;ua=fa}}else{ta=f;ua=da}da=ta;f=ua;while(1){fa=da+20|0;ca=c[fa>>2]|0;if(!ca){ba=da+16|0;aa=c[ba>>2]|0;if(!aa)break;else{va=aa;wa=ba}}else{va=ca;wa=fa}da=va;f=wa}c[f>>2]=0;sa=da}else{fa=c[ja+8>>2]|0;c[fa+12>>2]=_;c[_+8>>2]=fa;sa=_}while(0);if(!ga)break;_=c[ja+28>>2]|0;o=353956+(_<<2)|0;do if((c[o>>2]|0)!=(ja|0)){fa=ga+16|0;c[((c[fa>>2]|0)==(ja|0)?fa:ga+20|0)>>2]=sa;if(!sa)break h}else{c[o>>2]=sa;if(sa|0)break;c[88414]=c[88414]&~(1<<_);break h}while(0);c[sa+24>>2]=ga;_=ja+16|0;o=c[_>>2]|0;if(o|0){c[sa+16>>2]=o;c[o+24>>2]=sa}o=c[_+4>>2]|0;if(!o)break;c[sa+20>>2]=o;c[o+24>>2]=sa}while(0);xa=ja+ia|0;ya=ia+d|0}else{xa=ja;ya=d}ha=xa+4|0;c[ha>>2]=c[ha>>2]&-2;c[pa+4>>2]=ya|1;c[pa+ya>>2]=ya;ha=ya>>>3;if(ya>>>0<256){Y=353692+(ha<<1<<2)|0;ea=c[88413]|0;o=1<>2]|0;Aa=o}c[Aa>>2]=pa;c[za+12>>2]=pa;c[pa+8>>2]=za;c[pa+12>>2]=Y;break}Y=ya>>>8;do if(!Y)Ba=0;else{if(ya>>>0>16777215){Ba=31;break}o=(Y+1048320|0)>>>16&8;ea=Y<>>16&4;_=ea<>>16&2;fa=14-(ha|o|ea)+(_<>>15)|0;Ba=ya>>>(fa+7|0)&1|fa<<1}while(0);Y=353956+(Ba<<2)|0;c[pa+28>>2]=Ba;ia=pa+16|0;c[ia+4>>2]=0;c[ia>>2]=0;ia=c[88414]|0;fa=1<>2]=pa;c[pa+24>>2]=Y;c[pa+12>>2]=pa;c[pa+8>>2]=pa;break}fa=c[Y>>2]|0;i:do if((c[fa+4>>2]&-8|0)==(ya|0))Ca=fa;else{Y=ya<<((Ba|0)==31?0:25-(Ba>>>1)|0);ia=fa;while(1){Da=ia+16+(Y>>>31<<2)|0;ea=c[Da>>2]|0;if(!ea)break;if((c[ea+4>>2]&-8|0)==(ya|0)){Ca=ea;break i}else{Y=Y<<1;ia=ea}}c[Da>>2]=pa;c[pa+24>>2]=ia;c[pa+12>>2]=pa;c[pa+8>>2]=pa;break g}while(0);fa=Ca+8|0;Y=c[fa>>2]|0;c[Y+12>>2]=pa;c[fa>>2]=pa;c[pa+8>>2]=Y;c[pa+12>>2]=Ca;c[pa+24>>2]=0}while(0);p=oa+8|0;k=b;return p|0}pa=354100;while(1){d=c[pa>>2]|0;if(d>>>0<=ka>>>0?(Ea=d+(c[pa+4>>2]|0)|0,Ea>>>0>ka>>>0):0)break;pa=c[pa+8>>2]|0}pa=Ea+-47|0;oa=pa+8|0;d=pa+((oa&7|0)==0?0:0-oa&7)|0;oa=ka+16|0;pa=d>>>0>>0?ka:d;d=pa+8|0;ja=la+-40|0;na=ma+8|0;X=(na&7|0)==0?0:0-na&7;na=ma+X|0;Y=ja-X|0;c[88419]=na;c[88416]=Y;c[na+4>>2]=Y|1;c[ma+ja+4>>2]=40;c[88420]=c[88535];ja=pa+4|0;c[ja>>2]=27;c[d>>2]=c[88525];c[d+4>>2]=c[88526];c[d+8>>2]=c[88527];c[d+12>>2]=c[88528];c[88525]=ma;c[88526]=la;c[88528]=0;c[88527]=d;d=pa+24|0;do{Y=d;d=d+4|0;c[d>>2]=7}while((Y+8|0)>>>0>>0);if((pa|0)!=(ka|0)){d=pa-ka|0;c[ja>>2]=c[ja>>2]&-2;c[ka+4>>2]=d|1;c[pa>>2]=d;Y=d>>>3;if(d>>>0<256){na=353692+(Y<<1<<2)|0;X=c[88413]|0;fa=1<>2]|0;Ga=fa}c[Ga>>2]=ka;c[Fa+12>>2]=ka;c[ka+8>>2]=Fa;c[ka+12>>2]=na;break}na=d>>>8;if(na)if(d>>>0>16777215)Ha=31;else{fa=(na+1048320|0)>>>16&8;X=na<>>16&4;Y=X<>>16&2;ga=14-(na|fa|X)+(Y<>>15)|0;Ha=d>>>(ga+7|0)&1|ga<<1}else Ha=0;ga=353956+(Ha<<2)|0;c[ka+28>>2]=Ha;c[ka+20>>2]=0;c[oa>>2]=0;X=c[88414]|0;Y=1<>2]=ka;c[ka+24>>2]=ga;c[ka+12>>2]=ka;c[ka+8>>2]=ka;break}Y=c[ga>>2]|0;j:do if((c[Y+4>>2]&-8|0)==(d|0))Ia=Y;else{ga=d<<((Ha|0)==31?0:25-(Ha>>>1)|0);X=Y;while(1){Ja=X+16+(ga>>>31<<2)|0;fa=c[Ja>>2]|0;if(!fa)break;if((c[fa+4>>2]&-8|0)==(d|0)){Ia=fa;break j}else{ga=ga<<1;X=fa}}c[Ja>>2]=ka;c[ka+24>>2]=X;c[ka+12>>2]=ka;c[ka+8>>2]=ka;break f}while(0);d=Ia+8|0;Y=c[d>>2]|0;c[Y+12>>2]=ka;c[d>>2]=ka;c[ka+8>>2]=Y;c[ka+12>>2]=Ia;c[ka+24>>2]=0}}else{Y=c[88417]|0;if((Y|0)==0|ma>>>0>>0)c[88417]=ma;c[88525]=ma;c[88526]=la;c[88528]=0;c[88422]=c[88531];c[88421]=-1;c[88426]=353692;c[88425]=353692;c[88428]=353700;c[88427]=353700;c[88430]=353708;c[88429]=353708;c[88432]=353716;c[88431]=353716;c[88434]=353724;c[88433]=353724;c[88436]=353732;c[88435]=353732;c[88438]=353740;c[88437]=353740;c[88440]=353748;c[88439]=353748;c[88442]=353756;c[88441]=353756;c[88444]=353764;c[88443]=353764;c[88446]=353772;c[88445]=353772;c[88448]=353780;c[88447]=353780;c[88450]=353788;c[88449]=353788;c[88452]=353796;c[88451]=353796;c[88454]=353804;c[88453]=353804;c[88456]=353812;c[88455]=353812;c[88458]=353820;c[88457]=353820;c[88460]=353828;c[88459]=353828;c[88462]=353836;c[88461]=353836;c[88464]=353844;c[88463]=353844;c[88466]=353852;c[88465]=353852;c[88468]=353860;c[88467]=353860;c[88470]=353868;c[88469]=353868;c[88472]=353876;c[88471]=353876;c[88474]=353884;c[88473]=353884;c[88476]=353892;c[88475]=353892;c[88478]=353900;c[88477]=353900;c[88480]=353908;c[88479]=353908;c[88482]=353916;c[88481]=353916;c[88484]=353924;c[88483]=353924;c[88486]=353932;c[88485]=353932;c[88488]=353940;c[88487]=353940;Y=la+-40|0;d=ma+8|0;oa=(d&7|0)==0?0:0-d&7;d=ma+oa|0;pa=Y-oa|0;c[88419]=d;c[88416]=pa;c[d+4>>2]=pa|1;c[ma+Y+4>>2]=40;c[88420]=c[88535]}while(0);ma=c[88416]|0;if(ma>>>0>G>>>0){la=ma-G|0;c[88416]=la;ma=c[88419]|0;ka=ma+G|0;c[88419]=ka;c[ka+4>>2]=la|1;c[ma+4>>2]=G|3;p=ma+8|0;k=b;return p|0}}c[(ec()|0)>>2]=12;p=0;k=b;return p|0}function _b(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;if(!a)return;b=a+-8|0;d=c[88417]|0;e=c[a+-4>>2]|0;a=e&-8;f=b+a|0;do if(!(e&1)){g=c[b>>2]|0;if(!(e&3))return;h=b+(0-g)|0;i=g+a|0;if(h>>>0>>0)return;if((c[88418]|0)==(h|0)){j=f+4|0;k=c[j>>2]|0;if((k&3|0)!=3){l=h;m=i;n=h;break}c[88415]=i;c[j>>2]=k&-2;c[h+4>>2]=i|1;c[h+i>>2]=i;return}k=g>>>3;if(g>>>0<256){g=c[h+8>>2]|0;j=c[h+12>>2]|0;if((j|0)==(g|0)){c[88413]=c[88413]&~(1<>2]=j;c[j+8>>2]=g;l=h;m=i;n=h;break}}g=c[h+24>>2]|0;j=c[h+12>>2]|0;do if((j|0)==(h|0)){k=h+16|0;o=k+4|0;p=c[o>>2]|0;if(!p){q=c[k>>2]|0;if(!q){r=0;break}else{s=q;t=k}}else{s=p;t=o}o=s;p=t;while(1){k=o+20|0;q=c[k>>2]|0;if(!q){u=o+16|0;v=c[u>>2]|0;if(!v)break;else{w=v;x=u}}else{w=q;x=k}o=w;p=x}c[p>>2]=0;r=o}else{k=c[h+8>>2]|0;c[k+12>>2]=j;c[j+8>>2]=k;r=j}while(0);if(g){j=c[h+28>>2]|0;k=353956+(j<<2)|0;if((c[k>>2]|0)==(h|0)){c[k>>2]=r;if(!r){c[88414]=c[88414]&~(1<>2]|0)==(h|0)?j:g+20|0)>>2]=r;if(!r){l=h;m=i;n=h;break}}c[r+24>>2]=g;j=h+16|0;k=c[j>>2]|0;if(k|0){c[r+16>>2]=k;c[k+24>>2]=r}k=c[j+4>>2]|0;if(k){c[r+20>>2]=k;c[k+24>>2]=r;l=h;m=i;n=h}else{l=h;m=i;n=h}}else{l=h;m=i;n=h}}else{l=b;m=a;n=b}while(0);if(n>>>0>=f>>>0)return;b=f+4|0;a=c[b>>2]|0;if(!(a&1))return;if(!(a&2)){if((c[88419]|0)==(f|0)){r=(c[88416]|0)+m|0;c[88416]=r;c[88419]=l;c[l+4>>2]=r|1;if((l|0)!=(c[88418]|0))return;c[88418]=0;c[88415]=0;return}if((c[88418]|0)==(f|0)){r=(c[88415]|0)+m|0;c[88415]=r;c[88418]=n;c[l+4>>2]=r|1;c[n+r>>2]=r;return}r=(a&-8)+m|0;x=a>>>3;do if(a>>>0<256){w=c[f+8>>2]|0;t=c[f+12>>2]|0;if((t|0)==(w|0)){c[88413]=c[88413]&~(1<>2]=t;c[t+8>>2]=w;break}}else{w=c[f+24>>2]|0;t=c[f+12>>2]|0;do if((t|0)==(f|0)){s=f+16|0;d=s+4|0;e=c[d>>2]|0;if(!e){k=c[s>>2]|0;if(!k){y=0;break}else{z=k;A=s}}else{z=e;A=d}d=z;e=A;while(1){s=d+20|0;k=c[s>>2]|0;if(!k){j=d+16|0;q=c[j>>2]|0;if(!q)break;else{B=q;C=j}}else{B=k;C=s}d=B;e=C}c[e>>2]=0;y=d}else{o=c[f+8>>2]|0;c[o+12>>2]=t;c[t+8>>2]=o;y=t}while(0);if(w|0){t=c[f+28>>2]|0;h=353956+(t<<2)|0;if((c[h>>2]|0)==(f|0)){c[h>>2]=y;if(!y){c[88414]=c[88414]&~(1<>2]|0)==(f|0)?t:w+20|0)>>2]=y;if(!y)break}c[y+24>>2]=w;t=f+16|0;h=c[t>>2]|0;if(h|0){c[y+16>>2]=h;c[h+24>>2]=y}h=c[t+4>>2]|0;if(h|0){c[y+20>>2]=h;c[h+24>>2]=y}}}while(0);c[l+4>>2]=r|1;c[n+r>>2]=r;if((l|0)==(c[88418]|0)){c[88415]=r;return}else D=r}else{c[b>>2]=a&-2;c[l+4>>2]=m|1;c[n+m>>2]=m;D=m}m=D>>>3;if(D>>>0<256){n=353692+(m<<1<<2)|0;a=c[88413]|0;b=1<>2]|0;F=b}c[F>>2]=l;c[E+12>>2]=l;c[l+8>>2]=E;c[l+12>>2]=n;return}n=D>>>8;if(n)if(D>>>0>16777215)G=31;else{E=(n+1048320|0)>>>16&8;F=n<>>16&4;b=F<>>16&2;a=14-(n|E|F)+(b<>>15)|0;G=D>>>(a+7|0)&1|a<<1}else G=0;a=353956+(G<<2)|0;c[l+28>>2]=G;c[l+20>>2]=0;c[l+16>>2]=0;F=c[88414]|0;b=1<>2]=l;c[l+24>>2]=a;c[l+12>>2]=l;c[l+8>>2]=l}else{E=c[a>>2]|0;b:do if((c[E+4>>2]&-8|0)==(D|0))H=E;else{n=D<<((G|0)==31?0:25-(G>>>1)|0);m=E;while(1){I=m+16+(n>>>31<<2)|0;r=c[I>>2]|0;if(!r)break;if((c[r+4>>2]&-8|0)==(D|0)){H=r;break b}else{n=n<<1;m=r}}c[I>>2]=l;c[l+24>>2]=m;c[l+12>>2]=l;c[l+8>>2]=l;break a}while(0);E=H+8|0;w=c[E>>2]|0;c[w+12>>2]=l;c[E>>2]=l;c[l+8>>2]=w;c[l+12>>2]=H;c[l+24>>2]=0}while(0);l=(c[88421]|0)+-1|0;c[88421]=l;if(l|0)return;l=354108;while(1){H=c[l>>2]|0;if(!H)break;else l=H+8|0}c[88421]=-1;return}function $b(a,b){a=a|0;b=b|0;var d=0,e=0;if(a){d=M(b,a)|0;if((b|a)>>>0>65535)e=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1;else e=d}else e=0;d=Zb(e)|0;if(!d)return d|0;if(!(c[d+-4>>2]&3))return d|0;ie(d|0,0,e|0)|0;return d|0}function ac(a){a=a|0;var b=0,d=0;b=k;k=k+16|0;d=b;c[d>>2]=fc(c[a+60>>2]|0)|0;a=dc(ba(6,d|0)|0)|0;k=b;return a|0}function bc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;f=k;k=k+32|0;g=f+16|0;h=f;c[h>>2]=d;i=h+4|0;j=b+48|0;l=c[j>>2]|0;c[i>>2]=e-((l|0)!=0&1);m=b+44|0;c[h+8>>2]=c[m>>2];c[h+12>>2]=l;c[g>>2]=c[b+60>>2];c[g+4>>2]=h;c[g+8>>2]=2;h=dc(Y(145,g|0)|0)|0;if((h|0)>=1){g=c[i>>2]|0;if(h>>>0>g>>>0){i=c[m>>2]|0;m=b+4|0;c[m>>2]=i;l=i;c[b+8>>2]=l+(h-g);if(!(c[j>>2]|0))n=e;else{c[m>>2]=l+1;a[d+(e+-1)>>0]=a[l>>0]|0;n=e}}else n=h}else{c[b>>2]=c[b>>2]|h&48^16;n=h}k=f;return n|0}function cc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=k;k=k+32|0;f=e;g=e+20|0;c[f>>2]=c[a+60>>2];c[f+4>>2]=0;c[f+8>>2]=b;c[f+12>>2]=g;c[f+16>>2]=d;if((dc(X(140,f|0)|0)|0)<0){c[g>>2]=-1;h=-1}else h=c[g>>2]|0;k=e;return h|0}function dc(a){a=a|0;var b=0;if(a>>>0>4294963200){c[(ec()|0)>>2]=0-a;b=-1}else b=a;return b|0}function ec(){return 354220}function fc(a){a=a|0;return a|0}function gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=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;e=k;k=k+48|0;f=e+32|0;g=e+16|0;h=e;i=a+28|0;j=c[i>>2]|0;c[h>>2]=j;l=a+20|0;m=(c[l>>2]|0)-j|0;c[h+4>>2]=m;c[h+8>>2]=b;c[h+12>>2]=d;b=m+d|0;m=a+60|0;c[g>>2]=c[m>>2];c[g+4>>2]=h;c[g+8>>2]=2;j=dc(Z(146,g|0)|0)|0;a:do if((b|0)!=(j|0)){g=2;n=b;o=h;p=j;while(1){if((p|0)<0)break;n=n-p|0;q=c[o+4>>2]|0;r=p>>>0>q>>>0;s=r?o+8|0:o;t=g+(r<<31>>31)|0;u=p-(r?q:0)|0;c[s>>2]=(c[s>>2]|0)+u;q=s+4|0;c[q>>2]=(c[q>>2]|0)-u;c[f>>2]=c[m>>2];c[f+4>>2]=s;c[f+8>>2]=t;p=dc(Z(146,f|0)|0)|0;if((n|0)==(p|0)){v=3;break a}else{g=t;o=s}}c[a+16>>2]=0;c[i>>2]=0;c[l>>2]=0;c[a>>2]=c[a>>2]|32;if((g|0)==2)w=0;else w=d-(c[o+4>>2]|0)|0}else v=3;while(0);if((v|0)==3){v=c[a+44>>2]|0;c[a+16>>2]=v+(c[a+48>>2]|0);a=v;c[i>>2]=a;c[l>>2]=a;w=d}k=e;return w|0}function hc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=k;k=k+32|0;g=f;c[b+36>>2]=3;if((c[b>>2]&64|0)==0?(c[g>>2]=c[b+60>>2],c[g+4>>2]=21523,c[g+8>>2]=f+16,aa(54,g|0)|0):0)a[b+75>>0]=-1;g=gc(b,d,e)|0;k=f;return g|0}function ic(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=e;g=d}else{d=c;c=b;do{c=c+1|0;d=d+1|0;b=a[c>>0]|0;e=a[d>>0]|0}while(!(b<<24>>24==0?1:b<<24>>24!=e<<24>>24));f=e;g=b}return (g&255)-(f&255)|0}function jc(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!e)f=0;else{g=a[b>>0]|0;a:do if(!(g<<24>>24)){h=c;i=0}else{j=b;k=e;l=c;m=g;while(1){k=k+-1|0;n=a[l>>0]|0;if(!(m<<24>>24==n<<24>>24&((k|0)!=0&n<<24>>24!=0))){h=l;i=m;break a}j=j+1|0;n=l+1|0;m=a[j>>0]|0;if(!(m<<24>>24)){h=n;i=0;break}else l=n}}while(0);f=(i&255)-(d[h>>0]|0)|0}return f|0}function kc(a){a=a|0;return (a+-48|0)>>>0<10|0}function lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=k;k=k+16|0;f=e;c[f>>2]=d;d=mc(a,b,f)|0;k=e;return d|0}function mc(a,b,c){a=a|0;b=b|0;c=c|0;return nc(a,2147483647,b,c)|0}function nc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;g=k;k=k+128|0;h=g+124|0;i=g;j=i;l=3144;m=j+124|0;do{c[j>>2]=c[l>>2];j=j+4|0;l=l+4|0}while((j|0)<(m|0));if((d+-1|0)>>>0>2147483646)if(!d){n=h;o=1;p=4}else{c[(ec()|0)>>2]=75;q=-1}else{n=b;o=d;p=4}if((p|0)==4){p=-2-n|0;d=o>>>0>p>>>0?p:o;c[i+48>>2]=d;o=i+20|0;c[o>>2]=n;c[i+44>>2]=n;p=n+d|0;n=i+16|0;c[n>>2]=p;c[i+28>>2]=p;p=oc(i,e,f)|0;if(!d)q=p;else{d=c[o>>2]|0;a[d+(((d|0)==(c[n>>2]|0))<<31>>31)>>0]=0;q=p}}k=g;return q|0}function oc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=k;k=k+224|0;g=f+208|0;h=f+160|0;i=f+80|0;j=f;l=h;m=l+40|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));c[g>>2]=c[e>>2];if((pc(0,d,g,i,h)|0)<0)n=-1;else{if((c[b+76>>2]|0)>-1)o=qc(b)|0;else o=0;e=c[b>>2]|0;l=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;e=b+48|0;if(!(c[e>>2]|0)){m=b+44|0;p=c[m>>2]|0;c[m>>2]=j;q=b+28|0;c[q>>2]=j;r=b+20|0;c[r>>2]=j;c[e>>2]=80;s=b+16|0;c[s>>2]=j+80;j=pc(b,d,g,i,h)|0;if(!p)t=j;else{ja[c[b+36>>2]&7](b,0,0)|0;u=(c[r>>2]|0)==0?-1:j;c[m>>2]=p;c[e>>2]=0;c[s>>2]=0;c[q>>2]=0;c[r>>2]=0;t=u}}else t=pc(b,d,g,i,h)|0;h=c[b>>2]|0;c[b>>2]=h|l;if(o|0)rc(b);n=(h&32|0)==0?t:-1}k=f;return n|0} +function pc(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=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,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,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,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;j=k;k=k+64|0;l=j+56|0;m=j+40|0;n=j;o=j+48|0;p=j+60|0;c[l>>2]=e;e=(d|0)!=0;q=n+40|0;r=q;s=n+39|0;n=o+4|0;t=0;u=0;v=0;a:while(1){w=t;y=u;while(1){do if((y|0)>-1)if((w|0)>(2147483647-y|0)){c[(ec()|0)>>2]=75;z=-1;break}else{z=w+y|0;break}else z=y;while(0);A=c[l>>2]|0;B=a[A>>0]|0;if(!(B<<24>>24)){C=94;break a}D=B;B=A;b:while(1){switch(D<<24>>24){case 37:{C=10;break b;break}case 0:{E=B;break b;break}default:{}}F=B+1|0;c[l>>2]=F;D=a[F>>0]|0;B=F}c:do if((C|0)==10){C=0;D=B;F=B;while(1){if((a[F+1>>0]|0)!=37){E=D;break c}G=D+1|0;F=F+2|0;c[l>>2]=F;if((a[F>>0]|0)!=37){E=G;break}else D=G}}while(0);w=E-A|0;if(e)sc(d,A,w);if(!w)break;else y=z}y=(kc(a[(c[l>>2]|0)+1>>0]|0)|0)==0;w=c[l>>2]|0;if(!y?(a[w+2>>0]|0)==36:0){H=(a[w+1>>0]|0)+-48|0;I=1;J=3}else{H=-1;I=v;J=1}y=w+J|0;c[l>>2]=y;w=a[y>>0]|0;B=(w<<24>>24)+-32|0;if(B>>>0>31|(1<>2]=F;G=a[F>>0]|0;D=(G<<24>>24)+-32|0;if(D>>>0>31|(1<>24==42){if((kc(a[M+1>>0]|0)|0)!=0?(B=c[l>>2]|0,(a[B+2>>0]|0)==36):0){w=B+1|0;c[i+((a[w>>0]|0)+-48<<2)>>2]=10;N=c[g+((a[w>>0]|0)+-48<<3)>>2]|0;O=1;P=B+3|0}else{if(I|0){Q=-1;break}if(e){B=(c[f>>2]|0)+(4-1)&~(4-1);w=c[B>>2]|0;c[f>>2]=B+4;R=w}else R=0;N=R;O=0;P=(c[l>>2]|0)+1|0}c[l>>2]=P;w=(N|0)<0;S=w?0-N|0:N;T=w?K|8192:K;U=O;V=P}else{w=tc(l)|0;if((w|0)<0){Q=-1;break}S=w;T=K;U=I;V=c[l>>2]|0}do if((a[V>>0]|0)==46){w=V+1|0;if((a[w>>0]|0)!=42){c[l>>2]=w;w=tc(l)|0;W=w;X=c[l>>2]|0;break}if(kc(a[V+2>>0]|0)|0?(w=c[l>>2]|0,(a[w+3>>0]|0)==36):0){B=w+2|0;c[i+((a[B>>0]|0)+-48<<2)>>2]=10;D=c[g+((a[B>>0]|0)+-48<<3)>>2]|0;B=w+4|0;c[l>>2]=B;W=D;X=B;break}if(U|0){Q=-1;break a}if(e){B=(c[f>>2]|0)+(4-1)&~(4-1);D=c[B>>2]|0;c[f>>2]=B+4;Y=D}else Y=0;D=(c[l>>2]|0)+2|0;c[l>>2]=D;W=Y;X=D}else{W=-1;X=V}while(0);D=0;B=X;while(1){if(((a[B>>0]|0)+-65|0)>>>0>57){Q=-1;break a}w=B;B=B+1|0;c[l>>2]=B;Z=a[(a[w>>0]|0)+-65+(336+(D*58|0))>>0]|0;_=Z&255;if((_+-1|0)>>>0>=8)break;else D=_}if(!(Z<<24>>24)){Q=-1;break}w=(H|0)>-1;do if(Z<<24>>24==19)if(w){Q=-1;break a}else C=54;else{if(w){c[i+(H<<2)>>2]=_;F=g+(H<<3)|0;y=c[F+4>>2]|0;G=m;c[G>>2]=c[F>>2];c[G+4>>2]=y;C=54;break}if(!e){Q=0;break a}uc(m,_,f);$=c[l>>2]|0;C=55}while(0);if((C|0)==54){C=0;if(e){$=B;C=55}else aa=0}d:do if((C|0)==55){C=0;w=a[$+-1>>0]|0;y=(D|0)!=0&(w&15|0)==3?w&-33:w;w=T&-65537;G=(T&8192|0)==0?T:w;e:do switch(y|0){case 110:{switch((D&255)<<24>>24){case 0:{c[c[m>>2]>>2]=z;aa=0;break d;break}case 1:{c[c[m>>2]>>2]=z;aa=0;break d;break}case 2:{F=c[m>>2]|0;c[F>>2]=z;c[F+4>>2]=((z|0)<0)<<31>>31;aa=0;break d;break}case 3:{b[c[m>>2]>>1]=z;aa=0;break d;break}case 4:{a[c[m>>2]>>0]=z;aa=0;break d;break}case 6:{c[c[m>>2]>>2]=z;aa=0;break d;break}case 7:{F=c[m>>2]|0;c[F>>2]=z;c[F+4>>2]=((z|0)<0)<<31>>31;aa=0;break d;break}default:{aa=0;break d}}break}case 112:{ba=120;ca=W>>>0>8?W:8;da=G|8;C=67;break}case 88:case 120:{ba=y;ca=W;da=G;C=67;break}case 111:{F=m;ea=c[F>>2]|0;fa=c[F+4>>2]|0;F=wc(ea,fa,q)|0;ga=r-F|0;ha=F;ia=0;ja=13269;ka=(G&8|0)==0|(W|0)>(ga|0)?W:ga+1|0;la=G;ma=ea;na=fa;C=73;break}case 105:case 100:{fa=m;ea=c[fa>>2]|0;ga=c[fa+4>>2]|0;if((ga|0)<0){fa=ae(0,0,ea|0,ga|0)|0;F=x;oa=m;c[oa>>2]=fa;c[oa+4>>2]=F;pa=1;qa=13269;ra=fa;sa=F;C=72;break e}else{pa=(G&2049|0)!=0&1;qa=(G&2048|0)==0?((G&1|0)==0?13269:13271):13270;ra=ea;sa=ga;C=72;break e}break}case 117:{ga=m;pa=0;qa=13269;ra=c[ga>>2]|0;sa=c[ga+4>>2]|0;C=72;break}case 99:{a[s>>0]=c[m>>2];ta=s;ua=0;va=13269;wa=1;xa=w;ya=r;break}case 109:{za=yc(c[(ec()|0)>>2]|0)|0;C=77;break}case 115:{ga=c[m>>2]|0;za=(ga|0)==0?13279:ga;C=77;break}case 67:{c[o>>2]=c[m>>2];c[n>>2]=0;c[m>>2]=o;Aa=-1;C=81;break}case 83:{if(!W){Ac(d,32,S,0,G);Ba=0;C=91}else{Aa=W;C=81}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{aa=Cc(d,+h[m>>3],S,W,G,y)|0;break d;break}default:{ta=A;ua=0;va=13269;wa=W;xa=G;ya=r}}while(0);f:do if((C|0)==67){C=0;y=m;ga=c[y>>2]|0;ea=c[y+4>>2]|0;y=vc(ga,ea,q,ba&32)|0;F=(da&8|0)==0|(ga|0)==0&(ea|0)==0;ha=y;ia=F?0:2;ja=F?13269:13269+(ba>>>4)|0;ka=ca;la=da;ma=ga;na=ea;C=73}else if((C|0)==72){C=0;ha=xc(ra,sa,q)|0;ia=pa;ja=qa;ka=W;la=G;ma=ra;na=sa;C=73}else if((C|0)==77){C=0;ea=zc(za,0,W)|0;ga=(ea|0)==0;ta=za;ua=0;va=13269;wa=ga?W:ea-za|0;xa=w;ya=ga?za+W|0:ea}else if((C|0)==81){C=0;ea=c[m>>2]|0;ga=0;while(1){F=c[ea>>2]|0;if(!F){Ca=ga;break}y=Bc(p,F)|0;Da=(y|0)<0;if(Da|y>>>0>(Aa-ga|0)>>>0){C=85;break}F=y+ga|0;if(Aa>>>0>F>>>0){ea=ea+4|0;ga=F}else{Ca=F;break}}if((C|0)==85){C=0;if(Da){Q=-1;break a}else Ca=ga}Ac(d,32,S,Ca,G);if(!Ca){Ba=0;C=91}else{ea=c[m>>2]|0;F=0;while(1){y=c[ea>>2]|0;if(!y){Ba=Ca;C=91;break f}fa=Bc(p,y)|0;F=fa+F|0;if((F|0)>(Ca|0)){Ba=Ca;C=91;break f}sc(d,p,fa);if(F>>>0>=Ca>>>0){Ba=Ca;C=91;break}else ea=ea+4|0}}}while(0);if((C|0)==73){C=0;w=(ma|0)!=0|(na|0)!=0;ea=(ka|0)!=0|w;F=r-ha+((w^1)&1)|0;ta=ea?ha:q;ua=ia;va=ja;wa=ea?((ka|0)>(F|0)?ka:F):0;xa=(ka|0)>-1?la&-65537:la;ya=r}else if((C|0)==91){C=0;Ac(d,32,S,Ba,G^8192);aa=(S|0)>(Ba|0)?S:Ba;break}F=ya-ta|0;ea=(wa|0)<(F|0)?F:wa;w=ea+ua|0;ga=(S|0)<(w|0)?w:S;Ac(d,32,ga,w,xa);sc(d,va,ua);Ac(d,48,ga,w,xa^65536);Ac(d,48,ea,F,0);sc(d,ta,F);Ac(d,32,ga,w,xa^8192);aa=ga}while(0);t=aa;u=z;v=U}g:do if((C|0)==94)if(!d)if(!v)Q=0;else{U=1;while(1){u=c[i+(U<<2)>>2]|0;if(!u)break;uc(g+(U<<3)|0,u,f);u=U+1|0;if(u>>>0<10)U=u;else{Q=1;break g}}u=U;while(1){if(c[i+(u<<2)>>2]|0){Q=-1;break g}u=u+1|0;if(u>>>0>=10){Q=1;break}}}else Q=z;while(0);k=j;return Q|0}function qc(a){a=a|0;return 1}function rc(a){a=a|0;return}function sc(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))Pc(b,d,a)|0;return}function tc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(!(kc(a[c[b>>2]>>0]|0)|0))d=0;else{e=0;while(1){f=c[b>>2]|0;g=(e*10|0)+-48+(a[f>>0]|0)|0;h=f+1|0;c[b>>2]=h;if(!(kc(a[h>>0]|0)|0)){d=g;break}else e=g}}return d|0}function uc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=f;break a;break}case 10:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a;break}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=f;c[e+4>>2]=0;break a;break}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);f=e;g=c[f>>2]|0;i=c[f+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=g;c[e+4>>2]=i;break a;break}case 13:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=(e&65535)<<16>>16;e=a;c[e>>2]=i;c[e+4>>2]=((i|0)<0)<<31>>31;break a;break}case 14:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=a;c[i>>2]=e&65535;c[i+4>>2]=0;break a;break}case 15:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=(e&255)<<24>>24;e=a;c[e>>2]=i;c[e+4>>2]=((i|0)<0)<<31>>31;break a;break}case 16:{i=(c[d>>2]|0)+(4-1)&~(4-1);e=c[i>>2]|0;c[d>>2]=i+4;i=a;c[i>>2]=e&255;c[i+4>>2]=0;break a;break}case 17:{i=(c[d>>2]|0)+(8-1)&~(8-1);j=+h[i>>3];c[d>>2]=i+8;h[a>>3]=j;break a;break}case 18:{i=(c[d>>2]|0)+(8-1)&~(8-1);j=+h[i>>3];c[d>>2]=i+8;h[a>>3]=j;break a;break}default:break a}while(0);while(0);return}function vc(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0;if((b|0)==0&(c|0)==0)g=e;else{h=e;e=c;c=b;while(1){b=h+-1|0;a[b>>0]=d[800+(c&15)>>0]|0|f;c=ee(c|0,e|0,4)|0;e=x;if((c|0)==0&(e|0)==0){g=b;break}else h=b}}return g|0}function wc(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;if((b|0)==0&(c|0)==0)e=d;else{f=d;d=c;c=b;while(1){b=f+-1|0;a[b>>0]=c&7|48;c=ee(c|0,d|0,3)|0;d=x;if((c|0)==0&(d|0)==0){e=b;break}else f=b}}return e|0}function xc(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,l=0,m=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){e=d;f=b;g=c;do{c=f;f=de(f|0,g|0,10,0)|0;h=g;g=x;i=_d(f|0,g|0,10,0)|0;j=ae(c|0,h|0,i|0,x|0)|0;e=e+-1|0;a[e>>0]=j&255|48}while(h>>>0>9|(h|0)==9&c>>>0>4294967295);k=f;l=e}else{k=b;l=d}if(!k)m=l;else{d=k;k=l;while(1){l=d;d=(d>>>0)/10|0;b=k+-1|0;a[b>>0]=l-(d*10|0)|48;if(l>>>0<10){m=b;break}else k=b}}return m|0}function yc(a){a=a|0;return Kc(a,c[(Jc()|0)+188>>2]|0)|0}function zc(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;f=d&255;g=(e|0)!=0;a:do if(g&(b&3|0)!=0){h=d&255;i=b;j=e;while(1){if((a[i>>0]|0)==h<<24>>24){k=i;l=j;m=6;break a}n=i+1|0;o=j+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){i=n;j=o}else{q=n;r=o;s=p;m=5;break}}}else{q=b;r=e;s=g;m=5}while(0);if((m|0)==5)if(s){k=q;l=r;m=6}else m=16;b:do if((m|0)==6){r=d&255;if((a[k>>0]|0)==r<<24>>24)if(!l){m=16;break}else{t=k;break}q=M(f,16843009)|0;c:do if(l>>>0>3){s=k;g=l;while(1){e=c[s>>2]^q;if((e&-2139062144^-2139062144)&e+-16843009|0){u=g;v=s;break c}e=s+4|0;b=g+-4|0;if(b>>>0>3){s=e;g=b}else{w=e;x=b;m=11;break}}}else{w=k;x=l;m=11}while(0);if((m|0)==11)if(!x){m=16;break}else{u=x;v=w}q=v;g=u;while(1){if((a[q>>0]|0)==r<<24>>24){t=q;break b}g=g+-1|0;if(!g){m=16;break}else q=q+1|0}}while(0);if((m|0)==16)t=0;return t|0}function Ac(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;f=k;k=k+256|0;g=f;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;ie(g|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;d=e;do{sc(a,g,256);d=d+-256|0}while(d>>>0>255);h=b&255}else h=e;sc(a,g,h)}k=f;return}function Bc(a,b){a=a|0;b=b|0;var c=0;if(!a)c=0;else c=Gc(a,b,0)|0;return c|0}function Cc(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=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,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0,J=0.0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0.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.0,ja=0.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,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0;j=k;k=k+560|0;l=j+32|0;m=j+536|0;n=j;o=n;p=j+540|0;c[m>>2]=0;q=p+12|0;r=Dc(e)|0;s=x;if((s|0)<0){t=-e;u=Dc(t)|0;v=t;w=1;y=13286;z=x;A=u}else{v=e;w=(h&2049|0)!=0&1;y=(h&2048|0)==0?((h&1|0)==0?13287:13292):13289;z=s;A=r}do if(0==0&(z&2146435072|0)==2146435072){r=(i&32|0)!=0;A=w+3|0;Ac(b,32,f,A,h&-65537);sc(b,y,w);sc(b,v!=v|0.0!=0.0?(r?13388:13313):r?13305:13309,3);Ac(b,32,f,A,h^8192);B=A}else{e=+Ec(v,m)*2.0;A=e!=0.0;if(A)c[m>>2]=(c[m>>2]|0)+-1;r=i|32;if((r|0)==97){s=i&32;u=(s|0)==0?y:y+9|0;C=w|2;D=12-g|0;do if(!(g>>>0>11|(D|0)==0)){t=8.0;E=D;do{E=E+-1|0;t=t*16.0}while((E|0)!=0);if((a[u>>0]|0)==45){F=-(t+(-e-t));break}else{F=e+t-t;break}}else F=e;while(0);D=c[m>>2]|0;E=(D|0)<0?0-D|0:D;G=xc(E,((E|0)<0)<<31>>31,q)|0;if((G|0)==(q|0)){E=p+11|0;a[E>>0]=48;H=E}else H=G;a[H+-1>>0]=(D>>31&2)+43;D=H+-2|0;a[D>>0]=i+15;G=(g|0)<1;E=(h&8|0)==0;I=n;J=F;while(1){K=~~J;L=I+1|0;a[I>>0]=s|d[800+K>>0];J=(J-+(K|0))*16.0;if((L-o|0)==1?!(E&(G&J==0.0)):0){a[L>>0]=46;N=I+2|0}else N=L;if(!(J!=0.0))break;else I=N}I=N;if((g|0)!=0?(-2-o+I|0)<(g|0):0){G=q;E=D;O=g+2+G-E|0;P=G;Q=E}else{E=q;G=D;O=E-o-G+I|0;P=E;Q=G}G=O+C|0;Ac(b,32,f,G,h);sc(b,u,C);Ac(b,48,f,G,h^65536);E=I-o|0;sc(b,n,E);I=P-Q|0;Ac(b,48,O-(E+I)|0,0,0);sc(b,D,I);Ac(b,32,f,G,h^8192);B=G;break}G=(g|0)<0?6:g;if(A){I=(c[m>>2]|0)+-28|0;c[m>>2]=I;R=e*268435456.0;S=I}else{R=e;S=c[m>>2]|0}I=(S|0)<0?l:l+288|0;E=I;J=R;do{s=~~J>>>0;c[E>>2]=s;E=E+4|0;J=(J-+(s>>>0))*1.0e9}while(J!=0.0);A=I;if((S|0)>0){D=I;C=E;u=S;while(1){s=(u|0)<29?u:29;L=C+-4|0;if(L>>>0>=D>>>0){K=L;L=0;do{T=fe(c[K>>2]|0,0,s|0)|0;U=$d(T|0,x|0,L|0,0)|0;T=x;L=de(U|0,T|0,1e9,0)|0;V=_d(L|0,x|0,1e9,0)|0;W=ae(U|0,T|0,V|0,x|0)|0;c[K>>2]=W;K=K+-4|0}while(K>>>0>=D>>>0);if(L){K=D+-4|0;c[K>>2]=L;X=K}else X=D}else X=D;a:do if(C>>>0>X>>>0){K=C;while(1){W=K+-4|0;if(c[W>>2]|0){Y=K;break a}if(W>>>0>X>>>0)K=W;else{Y=W;break}}}else Y=C;while(0);L=(c[m>>2]|0)-s|0;c[m>>2]=L;if((L|0)>0){D=X;C=Y;u=L}else{Z=X;_=Y;$=L;break}}}else{Z=I;_=E;$=S}if(($|0)<0){u=((G+25|0)/9|0)+1|0;C=(r|0)==102;D=Z;L=_;K=$;while(1){W=0-K|0;V=(W|0)<9?W:9;if(D>>>0>>0){W=(1<>>V;U=0;aa=D;do{ba=c[aa>>2]|0;c[aa>>2]=(ba>>>V)+U;U=M(ba&W,T)|0;aa=aa+4|0}while(aa>>>0>>0);aa=(c[D>>2]|0)==0?D+4|0:D;if(!U){ca=L;da=aa}else{c[L>>2]=U;ca=L+4|0;da=aa}}else{ca=L;da=(c[D>>2]|0)==0?D+4|0:D}aa=C?I:da;T=(ca-aa>>2|0)>(u|0)?aa+(u<<2)|0:ca;K=(c[m>>2]|0)+V|0;c[m>>2]=K;if((K|0)>=0){ea=da;fa=T;break}else{D=da;L=T}}}else{ea=Z;fa=_}if(ea>>>0>>0){L=(A-ea>>2)*9|0;D=c[ea>>2]|0;if(D>>>0<10)ga=L;else{K=L;L=10;while(1){L=L*10|0;u=K+1|0;if(D>>>0>>0){ga=u;break}else K=u}}}else ga=0;K=(r|0)==103;L=(G|0)!=0;D=G-((r|0)==102?0:ga)+((L&K)<<31>>31)|0;if((D|0)<(((fa-A>>2)*9|0)+-9|0)){u=D+9216|0;D=(u|0)/9|0;C=I+4+(D+-1024<<2)|0;E=u-(D*9|0)|0;if((E|0)<8){D=E;E=10;while(1){u=E*10|0;if((D|0)<7){D=D+1|0;E=u}else{ha=u;break}}}else ha=10;E=c[C>>2]|0;D=(E>>>0)/(ha>>>0)|0;r=E-(M(D,ha)|0)|0;u=(C+4|0)==(fa|0);if(!(u&(r|0)==0)){t=(D&1|0)==0?9007199254740992.0:9007199254740994.0;D=ha>>>1;J=r>>>0>>0?.5:u&(r|0)==(D|0)?1.0:1.5;if(!w){ia=J;ja=t}else{D=(a[y>>0]|0)==45;ia=D?-J:J;ja=D?-t:t}D=E-r|0;c[C>>2]=D;if(ja+ia!=ja){r=D+ha|0;c[C>>2]=r;if(r>>>0>999999999){r=C;D=ea;while(1){E=r+-4|0;c[r>>2]=0;if(E>>>0>>0){u=D+-4|0;c[u>>2]=0;ka=u}else ka=D;u=(c[E>>2]|0)+1|0;c[E>>2]=u;if(u>>>0>999999999){r=E;D=ka}else{la=E;ma=ka;break}}}else{la=C;ma=ea}D=(A-ma>>2)*9|0;r=c[ma>>2]|0;if(r>>>0<10){na=la;oa=D;pa=ma}else{E=D;D=10;while(1){D=D*10|0;u=E+1|0;if(r>>>0>>0){na=la;oa=u;pa=ma;break}else E=u}}}else{na=C;oa=ga;pa=ea}}else{na=C;oa=ga;pa=ea}E=na+4|0;qa=oa;ra=fa>>>0>E>>>0?E:fa;sa=pa}else{qa=ga;ra=fa;sa=ea}E=0-qa|0;b:do if(ra>>>0>sa>>>0){D=ra;while(1){r=D+-4|0;if(c[r>>2]|0){ta=D;ua=1;break b}if(r>>>0>sa>>>0)D=r;else{ta=r;ua=0;break}}}else{ta=ra;ua=0}while(0);do if(K){C=G+((L^1)&1)|0;if((C|0)>(qa|0)&(qa|0)>-5){va=i+-1|0;wa=C+-1-qa|0}else{va=i+-2|0;wa=C+-1|0}if(!(h&8)){if(ua?(C=c[ta+-4>>2]|0,(C|0)!=0):0)if(!((C>>>0)%10|0)){D=0;V=10;while(1){V=V*10|0;U=D+1|0;if((C>>>0)%(V>>>0)|0|0){xa=U;break}else D=U}}else xa=0;else xa=9;D=((ta-A>>2)*9|0)+-9|0;if((va|32|0)==102){V=D-xa|0;C=(V|0)>0?V:0;ya=va;za=(wa|0)<(C|0)?wa:C;break}else{C=D+qa-xa|0;D=(C|0)>0?C:0;ya=va;za=(wa|0)<(D|0)?wa:D;break}}else{ya=va;za=wa}}else{ya=i;za=G}while(0);G=(za|0)!=0;A=G?1:h>>>3&1;L=(ya|32|0)==102;if(L){Aa=0;Ba=(qa|0)>0?qa:0}else{K=(qa|0)<0?E:qa;D=xc(K,((K|0)<0)<<31>>31,q)|0;K=q;if((K-D|0)<2){C=D;while(1){V=C+-1|0;a[V>>0]=48;if((K-V|0)<2)C=V;else{Ca=V;break}}}else Ca=D;a[Ca+-1>>0]=(qa>>31&2)+43;C=Ca+-2|0;a[C>>0]=ya;Aa=C;Ba=K-C|0}C=w+1+za+A+Ba|0;Ac(b,32,f,C,h);sc(b,y,w);Ac(b,48,f,C,h^65536);if(L){E=sa>>>0>I>>>0?I:sa;V=n+9|0;U=V;r=n+8|0;u=E;do{T=xc(c[u>>2]|0,0,V)|0;if((u|0)==(E|0))if((T|0)==(V|0)){a[r>>0]=48;Da=r}else Da=T;else if(T>>>0>n>>>0){ie(n|0,48,T-o|0)|0;aa=T;while(1){W=aa+-1|0;if(W>>>0>n>>>0)aa=W;else{Da=W;break}}}else Da=T;sc(b,Da,U-Da|0);u=u+4|0}while(u>>>0<=I>>>0);if(!((h&8|0)==0&(G^1)))sc(b,13317,1);if(u>>>0>>0&(za|0)>0){I=za;U=u;while(1){r=xc(c[U>>2]|0,0,V)|0;if(r>>>0>n>>>0){ie(n|0,48,r-o|0)|0;E=r;while(1){L=E+-1|0;if(L>>>0>n>>>0)E=L;else{Ea=L;break}}}else Ea=r;sc(b,Ea,(I|0)<9?I:9);U=U+4|0;E=I+-9|0;if(!(U>>>0>>0&(I|0)>9)){Fa=E;break}else I=E}}else Fa=za;Ac(b,48,Fa+9|0,9,0)}else{I=ua?ta:sa+4|0;if(sa>>>0>>0&(za|0)>-1){U=n+9|0;V=(h&8|0)==0;u=U;G=0-o|0;E=n+8|0;T=za;L=sa;while(1){A=xc(c[L>>2]|0,0,U)|0;if((A|0)==(U|0)){a[E>>0]=48;Ga=E}else Ga=A;do if((L|0)==(sa|0)){A=Ga+1|0;sc(b,Ga,1);if(V&(T|0)<1){Ha=A;break}sc(b,13317,1);Ha=A}else{if(Ga>>>0<=n>>>0){Ha=Ga;break}ie(n|0,48,Ga+G|0)|0;A=Ga;while(1){K=A+-1|0;if(K>>>0>n>>>0)A=K;else{Ha=K;break}}}while(0);r=u-Ha|0;sc(b,Ha,(T|0)>(r|0)?r:T);A=T-r|0;L=L+4|0;if(!(L>>>0>>0&(A|0)>-1)){Ia=A;break}else T=A}}else Ia=za;Ac(b,48,Ia+18|0,18,0);sc(b,Aa,q-Aa|0)}Ac(b,32,f,C,h^8192);B=C}while(0);k=j;return ((B|0)<(f|0)?f:B)|0}function Dc(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;x=c[j+4>>2]|0;return b|0}function Ec(a,b){a=+a;b=b|0;return +(+Fc(a,b))}function Fc(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,k=0,l=0.0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=ee(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){g=+Fc(a*18446744073709551616.0,b);i=g;k=(c[b>>2]|0)+-64|0}else{i=a;k=0}c[b>>2]=k;l=i;break}case 2047:{l=a;break}default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;l=+h[j>>3]}}return +l}function Gc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;do if(b){if(d>>>0<128){a[b>>0]=d;f=1;break}if(!(c[c[(Hc()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;f=1;break}else{c[(ec()|0)>>2]=84;f=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;f=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;f=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;f=4;break}else{c[(ec()|0)>>2]=84;f=-1;break}}else f=1;while(0);return f|0}function Hc(){return Ic()|0}function Ic(){return 3268}function Jc(){return Ic()|0}function Kc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=0;while(1){if((d[816+f>>0]|0)==(b|0)){g=4;break}h=f+1|0;if((h|0)==87){i=87;g=5;break}else f=h}if((g|0)==4)if(!f)j=912;else{i=f;g=5}if((g|0)==5){g=912;f=i;while(1){i=g;do{b=i;i=i+1|0}while((a[b>>0]|0)!=0);f=f+-1|0;if(!f){j=i;break}else g=i}}return Lc(j,c[e+20>>2]|0)|0}function Lc(a,b){a=a|0;b=b|0;return Mc(a,b)|0}function Mc(a,b){a=a|0;b=b|0;var d=0;if(!b)d=0;else d=Nc(c[b>>2]|0,c[b+4>>2]|0,a)|0;return ((d|0)==0?a:d)|0}function Nc(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;f=(c[b>>2]|0)+1794895138|0;g=Oc(c[b+8>>2]|0,f)|0;h=Oc(c[b+12>>2]|0,f)|0;i=Oc(c[b+16>>2]|0,f)|0;a:do if((g>>>0>>2>>>0?(j=d-(g<<2)|0,h>>>0>>0&i>>>0>>0):0)?((i|h)&3|0)==0:0){j=h>>>2;k=i>>>2;l=0;m=g;while(1){n=m>>>1;o=l+n|0;p=o<<1;q=p+j|0;r=Oc(c[b+(q<<2)>>2]|0,f)|0;s=Oc(c[b+(q+1<<2)>>2]|0,f)|0;if(!(s>>>0>>0&r>>>0<(d-s|0)>>>0)){t=0;break a}if(a[b+(s+r)>>0]|0){t=0;break a}r=ic(e,b+s|0)|0;if(!r)break;s=(r|0)<0;if((m|0)==1){t=0;break a}l=s?l:o;m=s?n:m-n|0}m=p+k|0;l=Oc(c[b+(m<<2)>>2]|0,f)|0;j=Oc(c[b+(m+1<<2)>>2]|0,f)|0;if(j>>>0>>0&l>>>0<(d-j|0)>>>0)t=(a[b+(j+l)>>0]|0)==0?b+j|0:0;else t=0}else t=0;while(0);return t|0}function Oc(a,b){a=a|0;b=b|0;var c=0;c=ge(a|0)|0;return ((b|0)==0?a:c)|0}function Pc(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;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(Qc(e)|0)){h=c[f>>2]|0;i=5}else j=0;else{h=g;i=5}a:do if((i|0)==5){g=e+20|0;f=c[g>>2]|0;k=f;if((h-f|0)>>>0>>0){j=ja[c[e+36>>2]&7](e,b,d)|0;break}b:do if((a[e+75>>0]|0)<0|(d|0)==0){l=0;m=b;n=d;o=k}else{f=d;while(1){p=f+-1|0;if((a[b+p>>0]|0)==10)break;if(!p){l=0;m=b;n=d;o=k;break b}else f=p}p=ja[c[e+36>>2]&7](e,b,f)|0;if(p>>>0>>0){j=p;break a}l=f;m=b+f|0;n=d-f|0;o=c[g>>2]|0}while(0);he(o|0,m|0,n|0)|0;c[g>>2]=(c[g>>2]|0)+n;j=l+n|0}while(0);return j|0}function Qc(b){b=b|0;var d=0,e=0,f=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;e=c[b>>2]|0;if(!(e&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);f=0}else{c[b>>2]=e|32;f=-1}return f|0}function Rc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+20|0;f=c[e>>2]|0;g=(c[a+16>>2]|0)-f|0;a=g>>>0>d>>>0?d:g;he(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function Sc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;if((b|0)!=0&(f|0)>(b|0))c[a+100>>2]=e+b;else c[a+100>>2]=d;return}function Tc(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=b+104|0;f=c[e>>2]|0;if((f|0)!=0?(c[b+108>>2]|0)>=(f|0):0)g=4;else{f=Vc(b)|0;if((f|0)>=0){h=c[e>>2]|0;e=c[b+8>>2]|0;if(h){i=c[b+4>>2]|0;j=h-(c[b+108>>2]|0)|0;h=e;if((e-i|0)<(j|0)){k=h;g=9}else{c[b+100>>2]=i+(j+-1);l=h}}else{k=e;g=9}if((g|0)==9){c[b+100>>2]=e;l=k}k=b+4|0;if(!l)m=c[k>>2]|0;else{e=c[k>>2]|0;k=b+108|0;c[k>>2]=l+1-e+(c[k>>2]|0);m=e}e=m+-1|0;if((f|0)==(d[e>>0]|0|0))n=f;else{a[e>>0]=f;n=f}}else g=4}if((g|0)==4){c[b+100>>2]=0;n=-1}return n|0}function Uc(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Vc(a){a=a|0;var b=0,e=0,f=0;b=k;k=k+16|0;e=b;if((Wc(a)|0)==0?(ja[c[a+32>>2]&7](a,e,1)|0)==1:0)f=d[e>>0]|0;else f=-1;k=b;return f|0}function Wc(b){b=b|0;var d=0,e=0,f=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;e=b+20|0;d=b+28|0;if((c[e>>2]|0)>>>0>(c[d>>2]|0)>>>0)ja[c[b+36>>2]&7](b,0,0)|0;c[b+16>>2]=0;c[d>>2]=0;c[e>>2]=0;e=c[b>>2]|0;if(!(e&4)){d=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=d;c[b+4>>2]=d;f=e<<27>>31}else{c[b>>2]=e|32;f=-1}return f|0}function Xc(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0;g=k;k=k+16|0;h=g;a:do if(!e)i=0;else{do if(f|0){j=(b|0)==0?h:b;l=a[e>>0]|0;if(l<<24>>24>-1){c[j>>2]=l&255;i=l<<24>>24!=0&1;break a}l=(c[c[(Yc()|0)+188>>2]>>2]|0)==0;m=a[e>>0]|0;if(l){c[j>>2]=m<<24>>24&57343;i=1;break a}l=(m&255)+-194|0;if(l>>>0<=50){m=e+1|0;n=c[128+(l<<2)>>2]|0;if(f>>>0<4?n&-2147483648>>>((f*6|0)+-6|0)|0:0)break;l=d[m>>0]|0;m=l>>>3;if((m+-16|m+(n>>26))>>>0<=7){m=l+-128|n<<6;if((m|0)>=0){c[j>>2]=m;i=2;break a}n=(d[e+2>>0]|0)+-128|0;if(n>>>0<=63){l=n|m<<6;if((l|0)>=0){c[j>>2]=l;i=3;break a}m=(d[e+3>>0]|0)+-128|0;if(m>>>0<=63){c[j>>2]=m|l<<6;i=4;break a}}}}}while(0);c[(ec()|0)>>2]=84;i=-1}while(0);k=g;return i|0}function Yc(){return Ic()|0}function Zc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=b;a:do if(!(d&3)){e=b;f=5}else{g=b;h=d;while(1){if(!(a[g>>0]|0)){i=h;break a}j=g+1|0;h=j;if(!(h&3)){e=j;f=5;break}else g=j}}while(0);if((f|0)==5){f=e;while(1){k=c[f>>2]|0;if(!((k&-2139062144^-2139062144)&k+-16843009))f=f+4|0;else break}if(!((k&255)<<24>>24))l=f;else{k=f;while(1){f=k+1|0;if(!(a[f>>0]|0)){l=f;break}else k=f}}i=l}return i-d|0}function _c(a){a=a|0;return (a+-65|0)>>>0<26|0}function $c(a){a=a|0;var b=0;b=(_c(a)|0)==0;return (b?a:a|32)|0}function ad(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=d&255;a:do if(!e)f=b+(Zc(b)|0)|0;else{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 a}j=i+1|0;if(!(j&3)){g=j;break}else i=j}}i=M(e,16843009)|0;h=c[g>>2]|0;b:do if(!((h&-2139062144^-2139062144)&h+-16843009)){j=g;k=h;while(1){l=k^i;if((l&-2139062144^-2139062144)&l+-16843009|0){m=j;break b}l=j+4|0;k=c[l>>2]|0;if((k&-2139062144^-2139062144)&k+-16843009|0){m=l;break}else j=l}}else m=g;while(0);i=d&255;h=m;while(1){j=a[h>>0]|0;if(j<<24>>24==0?1:j<<24>>24==i<<24>>24){f=h;break}else h=h+1|0}}while(0);return f|0}function bd(a,b){a=a|0;b=b|0;cd(a,b)|0;return a|0}function cd(b,d){b=b|0;d=d|0;var 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;e=d;a:do if(!((e^b)&3)){if(!(e&3)){f=d;g=b}else{h=d;i=b;while(1){j=a[h>>0]|0;a[i>>0]=j;if(!(j<<24>>24)){k=i;break a}j=h+1|0;l=i+1|0;if(!(j&3)){f=j;g=l;break}else{h=j;i=l}}}i=c[f>>2]|0;if(!((i&-2139062144^-2139062144)&i+-16843009)){h=g;l=f;j=i;while(1){i=l+4|0;m=h+4|0;c[h>>2]=j;j=c[i>>2]|0;if((j&-2139062144^-2139062144)&j+-16843009|0){n=i;o=m;break}else{h=m;l=i}}}else{n=f;o=g}p=n;q=o;r=10}else{p=d;q=b;r=10}while(0);if((r|0)==10){r=a[p>>0]|0;a[q>>0]=r;if(!(r<<24>>24))k=q;else{r=q;q=p;while(1){q=q+1|0;p=r+1|0;b=a[q>>0]|0;a[p>>0]=b;if(!(b<<24>>24)){k=p;break}else r=p}}}return k|0}function dd(b,c){b=b|0;c=c|0;var d=0;d=ad(b,c)|0;return ((a[d>>0]|0)==(c&255)<<24>>24?d:0)|0}function ed(b,c,e){b=b|0;c=c|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;if(!e)f=0;else{g=a[b>>0]|0;a:do if(!(g<<24>>24)){h=c;i=0}else{j=b;k=e;l=c;m=g;n=g&255;while(1){k=k+-1|0;o=a[l>>0]|0;if(!((k|0)!=0&o<<24>>24!=0)){h=l;i=m;break a}if(m<<24>>24!=o<<24>>24?(o=$c(n)|0,(o|0)!=($c(d[l>>0]|0)|0)):0)break;o=j+1|0;p=l+1|0;q=a[o>>0]|0;if(!(q<<24>>24)){h=p;i=0;break a}else{j=o;l=p;m=q;n=q&255}}h=l;i=a[j>>0]|0}while(0);g=$c(i&255)|0;f=g-($c(d[h>>0]|0)|0)|0}return f|0}function fd(a){a=a|0;return Mc(a,c[(c[(gd()|0)+188>>2]|0)+20>>2]|0)|0}function gd(){return Ic()|0}function hd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[721]|0;g=fd(b)|0;id(f);if(((jd(a,f)|0)>-1?kd(g,Zc(g)|0,1,f)|0:0)?(kd(d,1,e,f)|0)==(e|0):0)ld(10,f)|0;md(f);return}function id(a){a=a|0;var b=0,d=0,e=0;if(qd(a)|0){b=a+76|0;d=a+80|0;do{e=c[b>>2]|0;if(e|0)da(b|0,d|0,e|0,1)}while((qd(a)|0)!=0)}return}function jd(a,b){a=a|0;b=b|0;var c=0;c=Zc(a)|0;return ((kd(a,1,c,b)|0)!=(c|0))<<31>>31|0}function kd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=M(d,b)|0;g=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){d=(qc(e)|0)==0;h=Pc(a,f,e)|0;if(d)i=h;else{rc(e);i=h}}else i=Pc(a,f,e)|0;if((i|0)==(f|0))j=g;else j=(i>>>0)/(b>>>0)|0;return j|0}function ld(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(qc(d)|0)!=0:0){e=b&255;f=b&255;if((f|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=e;i=f}else i=pd(d,b)|0;rc(d);j=i}else k=3;do if((k|0)==3){i=b&255;f=b&255;if((f|0)!=(a[d+75>>0]|0)?(e=d+20|0,h=c[e>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[e>>2]=h+1;a[h>>0]=i;j=f;break}j=pd(d,b)|0}while(0);return j|0}function md(a){a=a|0;var b=0,d=0;b=a+68|0;d=c[b>>2]|0;if((d|0)==1){nd(a);c[b>>2]=0;rc(a)}else c[b>>2]=d+-1;return}function nd(a){a=a|0;var b=0,d=0,e=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;d=a+112|0;if(b|0)c[b+112>>2]=c[d>>2];a=c[d>>2]|0;if(!a)e=(od()|0)+232|0;else e=a+116|0;c[e>>2]=b}return}function od(){return Ic()|0}function pd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;f=k;k=k+16|0;g=f;h=e&255;a[g>>0]=h;i=b+16|0;j=c[i>>2]|0;if(!j)if(!(Qc(b)|0)){l=c[i>>2]|0;m=4}else n=-1;else{l=j;m=4}do if((m|0)==4){j=b+20|0;i=c[j>>2]|0;if(i>>>0>>0?(o=e&255,(o|0)!=(a[b+75>>0]|0)):0){c[j>>2]=i+1;a[i>>0]=h;n=o;break}if((ja[c[b+36>>2]&7](b,g,1)|0)==1)n=d[g>>0]|0;else n=-1}while(0);k=f;return n|0}function qd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=od()|0;d=c[b+52>>2]|0;e=a+76|0;if((c[e>>2]|0)==(d|0)){f=a+68|0;g=c[f>>2]|0;if((g|0)==2147483647)h=-1;else{c[f>>2]=g+1;h=0}}else{if((c[e>>2]|0)<0)c[e>>2]=0;if(!(c[e>>2]|0)){rd(e,d);c[a+68>>2]=1;c[a+112>>2]=0;d=b+232|0;b=c[d>>2]|0;c[a+116>>2]=b;if(b|0)c[b+112>>2]=a;c[d>>2]=a;h=0}else h=-1}return h|0}function rd(a,b){a=a|0;b=b|0;if(!(c[a>>2]|0))c[a>>2]=b;return}function sd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=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;f=k;k=k+16|0;g=f+4|0;h=f;i=c[688]|0;if((i|0)==0|0!=0){c[88537]=0;c[688]=1;j=1}else j=i;a:do if((j|0)<(b|0)?(i=c[d+(j<<2)>>2]|0,l=i,(i|0)!=0):0){if((a[i>>0]|0)!=45){if((a[e>>0]|0)!=45){m=-1;break}c[688]=j+1;c[88538]=l;m=1;break}l=i+1|0;switch(a[l>>0]|0){case 0:{m=-1;break a;break}case 45:{if(!(a[i+2>>0]|0)){c[688]=j+1;m=-1;break a}break}default:{}}n=c[88537]|0;if(!n){c[88537]=1;o=l}else o=i+n|0;n=Xc(g,o,4)|0;if((n|0)<0){c[g>>2]=65533;p=1}else p=n;n=c[688]|0;i=c[d+(n<<2)>>2]|0;l=c[88537]|0;q=i+l|0;r=l+p|0;c[88537]=r;if(!(a[i+r>>0]|0)){c[688]=n+1;c[88537]=0}switch(a[e>>0]|0){case 43:case 45:{s=e+1|0;break}default:s=e}c[h>>2]=0;n=0;while(1){r=Xc(h,s+n|0,4)|0;n=((r|0)>1?r:1)+n|0;i=c[h>>2]|0;t=c[g>>2]|0;u=(i|0)==(t|0);if(!r){v=24;break}if(u){w=i;break}}if((v|0)==24)if(u)w=t;else{if(!((a[s>>0]|0)!=58&1!=0)){m=63;break}hd(c[d>>2]|0,13319,q,p);m=63;break}if((a[s+n>>0]|0)==58){i=s+(n+1)|0;do if((a[i>>0]|0)==58){c[88538]=0;r=c[88537]|0;if((a[i>>0]|0)!=58|(r|0)!=0)x=r;else{m=w;break a}}else{if((c[688]|0)<(b|0)){x=c[88537]|0;break}if((a[s>>0]|0)==58){m=58;break a}if(!1){m=63;break a}hd(c[d>>2]|0,13343,q,p);m=63;break a}while(0);q=c[688]|0;c[688]=q+1;c[88538]=(c[d+(q<<2)>>2]|0)+x;c[88537]=0;m=w}else m=w}else m=-1;while(0);k=f;return m|0}function td(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=k;k=k+48|0;f=e+32|0;g=e+16|0;h=e;if(dd(13375,a[d>>0]|0)|0){i=ud(d)|0;c[h>>2]=b;c[h+4>>2]=i|32768;c[h+8>>2]=438;b=dc($(5,h|0)|0)|0;if((b|0)>=0){if(i&524288|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;_(221,g|0)|0}g=vd(b,d)|0;if(!g){c[f>>2]=b;ba(6,f|0)|0;j=0}else j=g}else j=0}else{c[(ec()|0)>>2]=22;j=0}k=e;return j|0}function ud(b){b=b|0;var c=0,d=0,e=0,f=0;c=(dd(b,43)|0)==0;d=a[b>>0]|0;e=c?d<<24>>24!=114&1:2;c=(dd(b,120)|0)==0;f=c?e:e|128;e=(dd(b,101)|0)==0;b=e?f:f|524288;f=d<<24>>24==114?b:b|64;b=d<<24>>24==119?f|512:f;return (d<<24>>24==97?b|1024:b)|0}function vd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;e=k;k=k+64|0;f=e+40|0;g=e+24|0;h=e+16|0;i=e;j=e+56|0;if(dd(13375,a[d>>0]|0)|0){l=Zb(1156)|0;if(!l)m=0;else{ie(l|0,0,124)|0;if(!(dd(d,43)|0))c[l>>2]=(a[d>>0]|0)==114?8:4;if(dd(d,101)|0){c[i>>2]=b;c[i+4>>2]=2;c[i+8>>2]=1;_(221,i|0)|0}if((a[d>>0]|0)==97){c[h>>2]=b;c[h+4>>2]=3;d=_(221,h|0)|0;if(!(d&1024)){c[g>>2]=b;c[g+4>>2]=4;c[g+8>>2]=d|1024;_(221,g|0)|0}g=c[l>>2]|128;c[l>>2]=g;n=g}else n=c[l>>2]|0;c[l+60>>2]=b;c[l+44>>2]=l+132;c[l+48>>2]=1024;g=l+75|0;a[g>>0]=-1;if((n&8|0)==0?(c[f>>2]=b,c[f+4>>2]=21523,c[f+8>>2]=j,(aa(54,f|0)|0)==0):0)a[g>>0]=10;c[l+32>>2]=1;c[l+36>>2]=3;c[l+40>>2]=2;c[l+12>>2]=1;if(!(c[88540]|0))c[l+76>>2]=-1;wd(l)|0;m=l}}else{c[(ec()|0)>>2]=22;m=0}k=e;return m|0}function wd(a){a=a|0;var b=0,d=0;b=xd()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;yd();return a|0}function xd(){V(354224);return 354232}function yd(){ca(354224);return}function zd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;if((c[a+76>>2]|0)>-1)b=qc(a)|0;else b=0;nd(a);d=(c[a>>2]&1|0)!=0;if(!d){e=xd()|0;f=c[a+52>>2]|0;g=a+56|0;if(f|0)c[f+56>>2]=c[g>>2];h=c[g>>2]|0;if(h|0)c[h+52>>2]=f;if((c[e>>2]|0)==(a|0))c[e>>2]=h;yd()}h=Ad(a)|0;e=ia[c[a+12>>2]&1](a)|0|h;h=c[a+92>>2]|0;if(h|0)_b(h);if(d){if(b|0)rc(a)}else _b(a);return e|0}function Ad(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;do if(a){if((c[a+76>>2]|0)<=-1){b=Bd(a)|0;break}d=(qc(a)|0)==0;e=Bd(a)|0;if(d)b=e;else{rc(a);b=e}}else{if(!(c[785]|0))f=0;else f=Ad(c[785]|0)|0;e=c[(xd()|0)>>2]|0;if(!e)g=f;else{d=e;e=f;while(1){if((c[d+76>>2]|0)>-1)h=qc(d)|0;else h=0;if((c[d+20>>2]|0)>>>0>(c[d+28>>2]|0)>>>0)i=Bd(d)|0|e;else i=e;if(h|0)rc(d);d=c[d+56>>2]|0;if(!d){g=i;break}else e=i}}yd();b=g}while(0);return b|0}function Bd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+20|0;d=a+28|0;if((c[b>>2]|0)>>>0>(c[d>>2]|0)>>>0?(ja[c[a+36>>2]&7](a,0,0)|0,(c[b>>2]|0)==0):0)e=-1;else{f=a+4|0;g=c[f>>2]|0;h=a+8|0;i=c[h>>2]|0;if(g>>>0>>0)ja[c[a+40>>2]&7](a,g-i|0,1)|0;c[a+16>>2]=0;c[d>>2]=0;c[b>>2]=0;c[h>>2]=0;c[f>>2]=0;e=0}return e|0}function Cd(b,e,f){b=b|0;e=e|0;f=f|0;var 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((c[f+76>>2]|0)>-1)g=qc(f)|0;else g=0;h=e+-1|0;if((e|0)<2){e=f+74|0;i=a[e>>0]|0;a[e>>0]=i+255|i;if(g|0)rc(f);if(!h){a[b>>0]=0;j=b}else j=0}else{a:do if(h){i=f+4|0;e=f+8|0;k=h;l=b;while(1){m=c[i>>2]|0;n=m;o=(c[e>>2]|0)-n|0;p=zc(m,10,o)|0;q=(p|0)==0;r=q?o:1-n+p|0;p=r>>>0>>0?r:k;he(l|0,m|0,p|0)|0;m=(c[i>>2]|0)+p|0;c[i>>2]=m;s=l+p|0;r=k-p|0;if(!(q&(r|0)!=0)){t=s;u=17;break a}if(m>>>0>=(c[e>>2]|0)>>>0){q=Vc(f)|0;if((q|0)<0)break;else v=q}else{c[i>>2]=m+1;v=d[m>>0]|0}m=s+1|0;a[s>>0]=v;k=r+-1|0;if((v&255|0)==10|(k|0)==0){t=m;u=17;break a}else l=m}if((s|0)!=(b|0)?(c[f>>2]&16|0)!=0:0){t=s;u=17}else w=0}else{t=b;u=17}while(0);if((u|0)==17)if(!b)w=0;else{a[t>>0]=0;w=b}if(!g)j=w;else{rc(f);j=w}}return j|0}function Dd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=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;switch(e|0){case 0:{g=-149;h=24;i=4;break}case 1:{g=-1074;h=53;i=4;break}case 2:{g=-1074;h=53;i=4;break}default:j=0.0}a:do if((i|0)==4){e=b+4|0;k=b+100|0;do{l=c[e>>2]|0;if(l>>>0<(c[k>>2]|0)>>>0){c[e>>2]=l+1;m=d[l>>0]|0}else m=Tc(b)|0}while((Uc(m)|0)!=0);b:do switch(m|0){case 43:case 45:{l=1-(((m|0)==45&1)<<1)|0;n=c[e>>2]|0;if(n>>>0<(c[k>>2]|0)>>>0){c[e>>2]=n+1;o=d[n>>0]|0;p=l;break b}else{o=Tc(b)|0;p=l;break b}break}default:{o=m;p=1}}while(0);l=0;n=o;while(1){if((n|32|0)!=(a[13379+l>>0]|0)){s=n;t=l;break}do if(l>>>0<7){u=c[e>>2]|0;if(u>>>0<(c[k>>2]|0)>>>0){c[e>>2]=u+1;v=d[u>>0]|0;break}else{v=Tc(b)|0;break}}else v=n;while(0);l=l+1|0;if(l>>>0>=8){s=v;t=8;break}else n=v}c:do switch(t&2147483647|0){case 8:break;case 3:{i=23;break}default:{n=(f|0)!=0;if(n&t>>>0>3)if((t|0)==8)break c;else{i=23;break c}d:do if(!t){l=0;u=s;while(1){if((u|32|0)!=(a[13388+l>>0]|0)){w=l;x=u;break d}do if(l>>>0<2){y=c[e>>2]|0;if(y>>>0<(c[k>>2]|0)>>>0){c[e>>2]=y+1;z=d[y>>0]|0;break}else{z=Tc(b)|0;break}}else z=u;while(0);l=l+1|0;if(l>>>0>=3){w=3;x=z;break}else u=z}}else{w=t;x=s}while(0);switch(w|0){case 3:{u=c[e>>2]|0;if(u>>>0<(c[k>>2]|0)>>>0){c[e>>2]=u+1;A=d[u>>0]|0}else A=Tc(b)|0;if((A|0)!=40){if(!(c[k>>2]|0)){j=q;break a}c[e>>2]=(c[e>>2]|0)+-1;j=q;break a}u=1;while(1){l=c[e>>2]|0;if(l>>>0<(c[k>>2]|0)>>>0){c[e>>2]=l+1;B=d[l>>0]|0}else B=Tc(b)|0;if(!((B+-48|0)>>>0<10|(B+-65|0)>>>0<26)?!((B|0)==95|(B+-97|0)>>>0<26):0)break;u=u+1|0}if((B|0)==41){j=q;break a}l=(c[k>>2]|0)==0;if(!l)c[e>>2]=(c[e>>2]|0)+-1;if(!n){c[(ec()|0)>>2]=22;Sc(b,0);j=0.0;break a}if(!u){j=q;break a}y=u;while(1){y=y+-1|0;if(!l)c[e>>2]=(c[e>>2]|0)+-1;if(!y){j=q;break a}}break}case 0:{if((x|0)==48){y=c[e>>2]|0;if(y>>>0<(c[k>>2]|0)>>>0){c[e>>2]=y+1;C=d[y>>0]|0}else C=Tc(b)|0;if((C|32|0)==120){j=+Ed(b,h,g,p,f);break a}if(!(c[k>>2]|0))D=48;else{c[e>>2]=(c[e>>2]|0)+-1;D=48}}else D=x;j=+Fd(b,D,h,g,p,f);break a;break}default:{if(c[k>>2]|0)c[e>>2]=(c[e>>2]|0)+-1;c[(ec()|0)>>2]=22;Sc(b,0);j=0.0;break a}}}}while(0);if((i|0)==23){y=(c[k>>2]|0)==0;if(!y)c[e>>2]=(c[e>>2]|0)+-1;if((f|0)!=0&t>>>0>3){l=t;do{if(!y)c[e>>2]=(c[e>>2]|0)+-1;l=l+-1|0}while(l>>>0>3)}}j=+(p|0)*r}while(0);return +j}function Ed(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var 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.0,y=0.0,z=0,A=0,B=0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0.0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0.0,aa=0,ba=0.0;h=a+4|0;i=c[h>>2]|0;j=a+100|0;if(i>>>0<(c[j>>2]|0)>>>0){c[h>>2]=i+1;k=d[i>>0]|0}else k=Tc(a)|0;i=k;k=0;a:while(1){switch(i|0){case 46:{l=10;break a;break}case 48:break;default:{m=0;n=i;o=k;p=0;q=0;break a}}r=c[h>>2]|0;if(r>>>0<(c[j>>2]|0)>>>0){c[h>>2]=r+1;s=d[r>>0]|0}else s=Tc(a)|0;i=s;k=1}if((l|0)==10){s=c[h>>2]|0;if(s>>>0<(c[j>>2]|0)>>>0){c[h>>2]=s+1;t=d[s>>0]|0}else t=Tc(a)|0;if((t|0)==48){s=0;i=0;while(1){r=c[h>>2]|0;if(r>>>0<(c[j>>2]|0)>>>0){c[h>>2]=r+1;u=d[r>>0]|0}else u=Tc(a)|0;r=$d(s|0,i|0,-1,-1)|0;v=x;if((u|0)==48){s=r;i=v}else{m=1;n=u;o=1;p=r;q=v;break}}}else{m=1;n=t;o=k;p=0;q=0}}k=0;w=1.0;y=0.0;t=0;u=m;m=n;n=o;o=0;i=0;s=p;p=q;while(1){q=m+-48|0;v=m|32;if(q>>>0>=10){r=(m|0)==46;if(!(r|(v+-97|0)>>>0<6)){z=m;break}if(r)if(!u){A=1;B=k;C=w;D=y;E=t;F=n;G=i;H=o;I=i;J=o}else{z=46;break}else l=24}else l=24;if((l|0)==24){l=0;r=(m|0)>57?v+-87|0:q;do if(!((o|0)<0|(o|0)==0&i>>>0<8))if((o|0)<0|(o|0)==0&i>>>0<14){K=w*.0625;L=k;M=K;N=y+K*+(r|0);O=t;break}else{q=(k|0)!=0|(r|0)==0;L=q?k:1;M=w;N=q?y:y+w*.5;O=t;break}else{L=k;M=w;N=y;O=r+(t<<4)|0}while(0);r=$d(i|0,o|0,1,0)|0;A=u;B=L;C=M;D=N;E=O;F=1;G=s;H=p;I=r;J=x}r=c[h>>2]|0;if(r>>>0<(c[j>>2]|0)>>>0){c[h>>2]=r+1;P=d[r>>0]|0}else P=Tc(a)|0;k=B;w=C;y=D;t=E;u=A;m=P;n=F;o=J;i=I;s=G;p=H}do if(!n){H=(c[j>>2]|0)==0;if(!H)c[h>>2]=(c[h>>2]|0)+-1;if(g){if(!H?(c[h>>2]=(c[h>>2]|0)+-1,!((u|0)==0|H)):0)c[h>>2]=(c[h>>2]|0)+-1}else Sc(a,0);Q=+(f|0)*0.0}else{H=(u|0)==0;G=H?i:s;I=H?o:p;if((o|0)<0|(o|0)==0&i>>>0<8){H=t;J=i;F=o;while(1){P=H<<4;m=J;J=$d(J|0,F|0,1,0)|0;if(!((F|0)<0|(F|0)==0&m>>>0<7)){R=P;break}else{H=P;F=x}}}else R=t;if((z|32|0)==112){F=Gd(a,g)|0;H=x;if((F|0)==0&(H|0)==-2147483648){if(!g){Sc(a,0);Q=0.0;break}if(!(c[j>>2]|0)){S=0;T=0}else{c[h>>2]=(c[h>>2]|0)+-1;S=0;T=0}}else{S=F;T=H}}else if(!(c[j>>2]|0)){S=0;T=0}else{c[h>>2]=(c[h>>2]|0)+-1;S=0;T=0}H=fe(G|0,I|0,2)|0;F=$d(H|0,x|0,-32,-1)|0;H=$d(F|0,x|0,S|0,T|0)|0;F=x;if(!R){Q=+(f|0)*0.0;break}J=0-e|0;P=((J|0)<0)<<31>>31;if((F|0)>(P|0)|(F|0)==(P|0)&H>>>0>J>>>0){c[(ec()|0)>>2]=34;Q=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}J=e+-106|0;P=((J|0)<0)<<31>>31;if((F|0)<(P|0)|(F|0)==(P|0)&H>>>0>>0){c[(ec()|0)>>2]=34;Q=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((R|0)>-1){D=y;J=R;P=H;m=F;while(1){A=!(D>=.5);E=J<<1|(A^1)&1;C=D+(A?D:D+-1.0);A=$d(P|0,m|0,-1,-1)|0;B=x;if((E|0)>-1){D=C;J=E;P=A;m=B}else{U=C;V=E;W=A;X=B;break}}}else{U=y;V=R;W=H;X=F}m=((b|0)<0)<<31>>31;P=ae(32,0,e|0,((e|0)<0)<<31>>31|0)|0;J=$d(P|0,x|0,W|0,X|0)|0;P=x;if((P|0)<(m|0)|(P|0)==(m|0)&J>>>0>>0)if((J|0)>0){Y=J;l=65}else{Z=0;_=84;l=67}else{Y=b;l=65}if((l|0)==65)if((Y|0)<53){Z=Y;_=84-Y|0;l=67}else{$=0.0;aa=Y;ba=+(f|0)}if((l|0)==67){D=+(f|0);$=+Id(+Hd(1.0,_),D);aa=Z;ba=D}J=(V&1|0)==0&(U!=0.0&(aa|0)<32);D=(J?0.0:U)*ba+($+ba*+((V+(J&1)|0)>>>0))-$;if(!(D!=0.0))c[(ec()|0)>>2]=34;Q=+Kd(D,W)}while(0);return +Q}function Fd(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=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,y=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,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,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,ya=0,za=0,Aa=0.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,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0.0,fb=0,gb=0.0,hb=0.0,ib=0.0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0.0,ob=0.0,pb=0.0,qb=0;i=k;k=k+512|0;j=i;l=f+e|0;m=0-l|0;n=a+4|0;o=a+100|0;p=b;b=0;a:while(1){switch(p|0){case 46:{q=7;break a;break}case 48:break;default:{r=0;s=p;t=b;u=0;v=0;break a}}w=c[n>>2]|0;if(w>>>0<(c[o>>2]|0)>>>0){c[n>>2]=w+1;y=d[w>>0]|0}else y=Tc(a)|0;p=y;b=1}if((q|0)==7){y=c[n>>2]|0;if(y>>>0<(c[o>>2]|0)>>>0){c[n>>2]=y+1;A=d[y>>0]|0}else A=Tc(a)|0;if((A|0)==48){y=0;p=0;while(1){w=$d(y|0,p|0,-1,-1)|0;B=x;C=c[n>>2]|0;if(C>>>0<(c[o>>2]|0)>>>0){c[n>>2]=C+1;D=d[C>>0]|0}else D=Tc(a)|0;if((D|0)==48){y=w;p=B}else{r=1;s=D;t=1;u=w;v=B;break}}}else{r=1;s=A;t=b;u=0;v=0}}c[j>>2]=0;b=s+-48|0;A=(s|0)==46;b:do if(A|b>>>0<10){D=j+496|0;p=0;y=0;B=0;w=r;C=t;E=s;F=A;G=b;H=u;I=v;J=0;K=0;c:while(1){do if(F)if(!w){L=p;N=y;O=1;P=B;Q=C;R=J;S=K;T=J;U=K}else break c;else{V=$d(J|0,K|0,1,0)|0;W=x;X=(E|0)!=48;if((y|0)>=125){if(!X){L=p;N=y;O=w;P=B;Q=C;R=H;S=I;T=V;U=W;break}c[D>>2]=c[D>>2]|1;L=p;N=y;O=w;P=B;Q=C;R=H;S=I;T=V;U=W;break}Y=j+(y<<2)|0;if(!p)Z=G;else Z=E+-48+((c[Y>>2]|0)*10|0)|0;c[Y>>2]=Z;Y=p+1|0;_=(Y|0)==9;L=_?0:Y;N=y+(_&1)|0;O=w;P=X?V:B;Q=1;R=H;S=I;T=V;U=W}while(0);W=c[n>>2]|0;if(W>>>0<(c[o>>2]|0)>>>0){c[n>>2]=W+1;$=d[W>>0]|0}else $=Tc(a)|0;G=$+-48|0;F=($|0)==46;if(!(F|G>>>0<10)){aa=L;ba=N;ca=P;da=O;ea=$;fa=Q;ga=R;ha=T;ia=S;ja=U;q=31;break b}else{p=L;y=N;B=P;w=O;C=Q;E=$;H=R;I=S;J=T;K=U}}ka=p;la=y;ma=B;na=J;oa=K;pa=H;qa=I;ra=(C|0)!=0;q=39}else{aa=0;ba=0;ca=0;da=r;ea=s;fa=t;ga=u;ha=0;ia=v;ja=0;q=31}while(0);do if((q|0)==31){v=(da|0)==0;u=v?ha:ga;t=v?ja:ia;v=(fa|0)!=0;if(!(v&(ea|32|0)==101))if((ea|0)>-1){ka=aa;la=ba;ma=ca;na=ha;oa=ja;pa=u;qa=t;ra=v;q=39;break}else{sa=aa;ta=ba;ua=ca;va=ha;wa=ja;xa=v;ya=u;za=t;q=41;break}v=Gd(a,h)|0;s=x;if((v|0)==0&(s|0)==-2147483648){if(!h){Sc(a,0);Aa=0.0;break}if(!(c[o>>2]|0)){Ba=0;Ca=0}else{c[n>>2]=(c[n>>2]|0)+-1;Ba=0;Ca=0}}else{Ba=v;Ca=s}s=$d(Ba|0,Ca|0,u|0,t|0)|0;Da=aa;Ea=ba;Fa=ca;Ga=s;Ha=ha;Ia=x;Ja=ja;q=43}while(0);if((q|0)==39)if(c[o>>2]|0){c[n>>2]=(c[n>>2]|0)+-1;if(ra){Da=ka;Ea=la;Fa=ma;Ga=pa;Ha=na;Ia=qa;Ja=oa;q=43}else q=42}else{sa=ka;ta=la;ua=ma;va=na;wa=oa;xa=ra;ya=pa;za=qa;q=41}if((q|0)==41)if(xa){Da=sa;Ea=ta;Fa=ua;Ga=ya;Ha=va;Ia=za;Ja=wa;q=43}else q=42;do if((q|0)==42){c[(ec()|0)>>2]=22;Sc(a,0);Aa=0.0}else if((q|0)==43){wa=c[j>>2]|0;if(!wa){Aa=+(g|0)*0.0;break}if(((Ja|0)<0|(Ja|0)==0&Ha>>>0<10)&((Ga|0)==(Ha|0)&(Ia|0)==(Ja|0))?(e|0)>30|(wa>>>e|0)==0:0){Aa=+(g|0)*+(wa>>>0);break}wa=(f|0)/-2|0;za=((wa|0)<0)<<31>>31;if((Ia|0)>(za|0)|(Ia|0)==(za|0)&Ga>>>0>wa>>>0){c[(ec()|0)>>2]=34;Aa=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}wa=f+-106|0;za=((wa|0)<0)<<31>>31;if((Ia|0)<(za|0)|(Ia|0)==(za|0)&Ga>>>0>>0){c[(ec()|0)>>2]=34;Aa=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(!Da)Ka=Ea;else{if((Da|0)<9){wa=j+(Ea<<2)|0;za=Da;va=c[wa>>2]|0;while(1){va=va*10|0;if((za|0)>=8)break;else za=za+1|0}c[wa>>2]=va}Ka=Ea+1|0}if((Fa|0)<9?(Fa|0)<=(Ga|0)&(Ga|0)<18:0){if((Ga|0)==9){Aa=+(g|0)*+((c[j>>2]|0)>>>0);break}if((Ga|0)<9){Aa=+(g|0)*+((c[j>>2]|0)>>>0)/+(c[2720+(8-Ga<<2)>>2]|0);break}za=e+27+(M(Ga,-3)|0)|0;C=c[j>>2]|0;if((za|0)>30|(C>>>za|0)==0){Aa=+(g|0)*+(C>>>0)*+(c[2720+(Ga+-10<<2)>>2]|0);break}}C=(Ga|0)%9|0;if(!C){La=Ka;Ma=0;Na=Ga}else{za=(Ga|0)>-1?C:C+9|0;C=c[2720+(8-za<<2)>>2]|0;if(Ka){I=1e9/(C|0)|0;H=0;K=0;J=Ga;B=0;do{y=j+(B<<2)|0;p=c[y>>2]|0;ya=(p>>>0)/(C>>>0)|0;ua=p-(M(ya,C)|0)|0;p=ya+H|0;c[y>>2]=p;H=M(I,ua)|0;ua=(B|0)==(K|0)&(p|0)==0;J=ua?J+-9|0:J;K=ua?K+1&127:K;B=B+1|0}while((B|0)!=(Ka|0));if(!H){Oa=K;Pa=Ka;Qa=J}else{c[j+(Ka<<2)>>2]=H;Oa=K;Pa=Ka+1|0;Qa=J}}else{Oa=0;Pa=0;Qa=Ga}La=Pa;Ma=Oa;Na=9-za+Qa|0}B=0;I=La;C=Ma;va=Na;d:while(1){wa=(va|0)<18;ua=(va|0)==18;p=j+(C<<2)|0;Ra=B;Sa=I;while(1){if(!wa){if(!ua){Ta=va;break d}if((c[p>>2]|0)>>>0>=9007199){Ta=18;break d}}y=0;Ua=Sa;ya=Sa+127|0;while(1){ta=ya&127;sa=j+(ta<<2)|0;xa=fe(c[sa>>2]|0,0,29)|0;qa=$d(xa|0,x|0,y|0,0)|0;xa=x;if(xa>>>0>0|(xa|0)==0&qa>>>0>1e9){pa=de(qa|0,xa|0,1e9,0)|0;ra=_d(pa|0,x|0,1e9,0)|0;oa=ae(qa|0,xa|0,ra|0,x|0)|0;Va=pa;Wa=oa}else{Va=0;Wa=qa}c[sa>>2]=Wa;sa=(ta|0)==(C|0);Xa=(ta|0)!=(Ua+127&127|0)|sa?Ua:(Wa|0)==0?ta:Ua;if(sa)break;else{y=Va;Ua=Xa;ya=ta+-1|0}}Ya=Ra+-29|0;if(!Va){Ra=Ya;Sa=Ua}else break}p=C+127&127;ua=Xa+127&127;wa=j+((Xa+126&127)<<2)|0;if((p|0)==(Xa|0)){c[wa>>2]=c[wa>>2]|c[j+(ua<<2)>>2];Za=ua}else Za=Ua;c[j+(p<<2)>>2]=Va;B=Ya;I=Za;C=p;va=va+9|0}va=Ra;I=C;B=Ta;za=Sa;e:while(1){J=za+1&127;K=j+((za+127&127)<<2)|0;H=va;p=I;ua=B;while(1){wa=(ua|0)==18;ya=(ua|0)>27?9:1;_a=H;$a=p;while(1){y=0;while(1){ta=y+$a&127;if((ta|0)==(za|0)){q=92;break}sa=c[j+(ta<<2)>>2]|0;ta=c[3512+(y<<2)>>2]|0;if(sa>>>0>>0){q=92;break}if(sa>>>0>ta>>>0)break;if((y+1|0)>>>0<2)y=1;else{q=92;break}}if((q|0)==92?(q=0,wa):0)break e;ab=ya+_a|0;if(($a|0)==(za|0)){_a=ab;$a=za}else break}wa=(1<>>ya;bb=0;cb=$a;db=ua;ta=$a;do{sa=j+(ta<<2)|0;qa=c[sa>>2]|0;oa=(qa>>>ya)+bb|0;c[sa>>2]=oa;bb=M(qa&wa,y)|0;qa=(ta|0)==(cb|0)&(oa|0)==0;db=qa?db+-9|0:db;cb=qa?cb+1&127:cb;ta=ta+1&127}while((ta|0)!=(za|0));if(bb|0){if((J|0)!=(cb|0))break;c[K>>2]=c[K>>2]|1}H=ab;p=cb;ua=db}c[j+(za<<2)>>2]=bb;va=ab;I=cb;B=db;za=J}eb=0.0;B=za;I=0;while(1){va=I+$a&127;C=B+1&127;if((va|0)==(B|0)){c[j+(C+-1<<2)>>2]=0;fb=C}else fb=B;eb=eb*1.0e9+ +((c[j+(va<<2)>>2]|0)>>>0);I=I+1|0;if((I|0)==2)break;else B=fb}gb=+(g|0);hb=eb*gb;B=_a+53|0;I=B-f|0;za=(I|0)<(e|0);va=za?((I|0)>0?I:0):e;if((va|0)<53){ib=+Id(+Hd(1.0,105-va|0),hb);jb=+Jd(hb,+Hd(1.0,53-va|0));kb=ib;lb=jb;mb=ib+(hb-jb)}else{kb=0.0;lb=0.0;mb=hb}C=$a+2&127;if((C|0)!=(fb|0)){ua=c[j+(C<<2)>>2]|0;do if(ua>>>0>=5e8){if((ua|0)!=5e8){nb=gb*.75+lb;break}if(($a+3&127|0)==(fb|0)){nb=gb*.5+lb;break}else{nb=gb*.75+lb;break}}else{if((ua|0)==0?($a+3&127|0)==(fb|0):0){nb=lb;break}nb=gb*.25+lb}while(0);if((53-va|0)>1?!(+Jd(nb,1.0)!=0.0):0)ob=nb+1.0;else ob=nb}else ob=lb;gb=mb+ob-kb;do if((B&2147483647|0)>(-2-l|0)){ua=!(+z(+gb)>=9007199254740992.0);C=_a+((ua^1)&1)|0;eb=ua?gb:gb*.5;if((C+50|0)<=(m|0)?!(ob!=0.0&(za&((va|0)!=(I|0)|ua))):0){pb=eb;qb=C;break}c[(ec()|0)>>2]=34;pb=eb;qb=C}else{pb=gb;qb=_a}while(0);Aa=+Kd(pb,qb)}while(0);k=i;return +Aa}function Gd(a,b){a=a|0;b=b|0;var 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;e=a+4|0;f=c[e>>2]|0;g=a+100|0;if(f>>>0<(c[g>>2]|0)>>>0){c[e>>2]=f+1;h=d[f>>0]|0}else h=Tc(a)|0;switch(h|0){case 43:case 45:{f=(h|0)==45&1;i=c[e>>2]|0;if(i>>>0<(c[g>>2]|0)>>>0){c[e>>2]=i+1;j=d[i>>0]|0}else j=Tc(a)|0;i=j+-48|0;if((b|0)!=0&i>>>0>9)if(!(c[g>>2]|0)){k=0;l=-2147483648}else{c[e>>2]=(c[e>>2]|0)+-1;m=14}else{n=f;o=j;p=i;m=12}break}default:{n=0;o=h;p=h+-48|0;m=12}}if((m|0)==12)if(p>>>0>9)m=14;else{p=0;h=o;while(1){p=h+-48+(p*10|0)|0;o=c[e>>2]|0;if(o>>>0<(c[g>>2]|0)>>>0){c[e>>2]=o+1;q=d[o>>0]|0}else q=Tc(a)|0;r=q+-48|0;if(!(r>>>0<10&(p|0)<214748364))break;else h=q}h=((p|0)<0)<<31>>31;if(r>>>0<10){r=q;q=p;o=h;while(1){i=_d(q|0,o|0,10,0)|0;j=x;f=$d(r|0,((r|0)<0)<<31>>31|0,-48,-1)|0;q=$d(f|0,x|0,i|0,j|0)|0;o=x;j=c[e>>2]|0;if(j>>>0<(c[g>>2]|0)>>>0){c[e>>2]=j+1;s=d[j>>0]|0}else s=Tc(a)|0;t=s+-48|0;if(!(t>>>0<10&((o|0)<21474836|(o|0)==21474836&q>>>0<2061584302)))break;else r=s}if(t>>>0<10){do{t=c[e>>2]|0;if(t>>>0<(c[g>>2]|0)>>>0){c[e>>2]=t+1;u=d[t>>0]|0}else u=Tc(a)|0}while((u+-48|0)>>>0<10);v=q;w=o}else{v=q;w=o}}else{v=p;w=h}if(c[g>>2]|0)c[e>>2]=(c[e>>2]|0)+-1;h=(n|0)==0;n=ae(0,0,v|0,w|0)|0;k=h?v:n;l=h?w:x}if((m|0)==14)if(!(c[g>>2]|0)){k=0;l=-2147483648}else{c[e>>2]=(c[e>>2]|0)+-1;k=0;l=-2147483648}x=l;return k|0}function Hd(a,b){a=+a;b=b|0;var d=0.0,e=0,f=0,g=0.0,i=0;if((b|0)<=1023)if((b|0)<-1022){d=a*2.2250738585072014e-308;e=(b|0)<-2044;f=b+2044|0;g=e?d*2.2250738585072014e-308:d;i=e?((f|0)>-1022?f:-1022):b+1022|0}else{g=a;i=b}else{d=a*8988465674311579538646525.0e283;f=(b|0)>2046;e=b+-2046|0;g=f?d*8988465674311579538646525.0e283:d;i=f?((e|0)<1023?e:1023):b+-1023|0}b=fe(i+1023|0,0,52)|0;i=x;c[j>>2]=b;c[j+4>>2]=i;return +(g*+h[j>>3])}function Id(a,b){a=+a;b=+b;return +(+Nd(a,b))}function Jd(a,b){a=+a;b=+b;return +(+Ld(a,b))}function Kd(a,b){a=+a;b=b|0;return +(+Hd(a,b))}function Ld(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=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,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.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;h[j>>3]=b;f=c[j>>2]|0;g=c[j+4>>2]|0;i=ee(d|0,e|0,52)|0;k=i&2047;i=ee(f|0,g|0,52)|0;l=i&2047;i=e&-2147483648;m=fe(f|0,g|0,1)|0;n=x;a:do if(!((m|0)==0&(n|0)==0)?(o=Md(b)|0,p=x&2147483647,!((k|0)==2047|(p>>>0>2146435072|(p|0)==2146435072&o>>>0>0))):0){o=fe(d|0,e|0,1)|0;p=x;if(!(p>>>0>n>>>0|(p|0)==(n|0)&o>>>0>m>>>0))return +((o|0)==(m|0)&(p|0)==(n|0)?a*0.0:a);if(!k){p=fe(d|0,e|0,12)|0;o=x;if((o|0)>-1|(o|0)==-1&p>>>0>4294967295){q=0;r=p;p=o;while(1){o=q+-1|0;r=fe(r|0,p|0,1)|0;p=x;if(!((p|0)>-1|(p|0)==-1&r>>>0>4294967295)){s=o;break}else q=o}}else s=0;q=fe(d|0,e|0,1-s|0)|0;t=s;u=q;v=x}else{t=k;u=d;v=e&1048575|1048576}if(!l){q=fe(f|0,g|0,12)|0;r=x;if((r|0)>-1|(r|0)==-1&q>>>0>4294967295){p=0;o=q;q=r;while(1){r=p+-1|0;o=fe(o|0,q|0,1)|0;q=x;if(!((q|0)>-1|(q|0)==-1&o>>>0>4294967295)){w=r;break}else p=r}}else w=0;p=fe(f|0,g|0,1-w|0)|0;y=w;z=p;A=x}else{y=l;z=f;A=g&1048575|1048576}p=ae(u|0,v|0,z|0,A|0)|0;o=x;q=(o|0)>-1|(o|0)==-1&p>>>0>4294967295;b:do if((t|0)>(y|0)){r=t;B=o;C=q;D=u;E=v;F=p;while(1){if(C)if((F|0)==0&(B|0)==0)break;else{G=F;H=B}else{G=D;H=E}I=fe(G|0,H|0,1)|0;J=x;K=r+-1|0;L=ae(I|0,J|0,z|0,A|0)|0;M=x;N=(M|0)>-1|(M|0)==-1&L>>>0>4294967295;if((K|0)>(y|0)){r=K;B=M;C=N;D=I;E=J;F=L}else{O=K;P=N;Q=L;R=M;S=I;T=J;break b}}U=a*0.0;break a}else{O=t;P=q;Q=p;R=o;S=u;T=v}while(0);if(P)if((Q|0)==0&(R|0)==0){U=a*0.0;break}else{V=R;W=Q}else{V=T;W=S}if(V>>>0<1048576|(V|0)==1048576&W>>>0<0){o=O;p=W;q=V;while(1){F=fe(p|0,q|0,1)|0;E=x;D=o+-1|0;if(E>>>0<1048576|(E|0)==1048576&F>>>0<0){o=D;p=F;q=E}else{X=D;Y=F;Z=E;break}}}else{X=O;Y=W;Z=V}if((X|0)>0){q=$d(Y|0,Z|0,0,-1048576)|0;p=x;o=fe(X|0,0,52)|0;_=p|x;$=q|o}else{o=ee(Y|0,Z|0,1-X|0)|0;_=x;$=o}c[j>>2]=$;c[j+4>>2]=_|i;U=+h[j>>3]}else aa=3;while(0);if((aa|0)==3){ba=a*b;U=ba/ba}return +U}function Md(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;x=c[j+4>>2]|0;return b|0}function Nd(a,b){a=+a;b=+b;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;h[j>>3]=b;f=c[j+4>>2]&-2147483648|e&2147483647;c[j>>2]=d;c[j+4>>2]=f;return +(+h[j>>3])}function Od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=k;k=k+16|0;f=e;c[f>>2]=d;d=oc(a,b,f)|0;k=e;return d|0}function Pd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;e=k;k=k+32|0;f=e;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;g=a[d>>0]|0;do if(!(g<<24>>24))h=0;else{if(!(a[d+1>>0]|0)){i=b;while(1)if((a[i>>0]|0)==g<<24>>24)i=i+1|0;else break;h=i-b|0;break}j=d;l=g;do{m=l&255;n=f+(m>>>5<<2)|0;c[n>>2]=c[n>>2]|1<<(m&31);j=j+1|0;l=a[j>>0]|0}while(l<<24>>24!=0);l=a[b>>0]|0;a:do if(!(l<<24>>24))o=b;else{j=b;i=l;while(1){m=i&255;if(!(c[f+(m>>>5<<2)>>2]&1<<(m&31))){o=j;break a}m=j+1|0;i=a[m>>0]|0;if(!(i<<24>>24)){o=m;break}else j=m}}while(0);h=o-b|0}while(0);k=e;return h|0}function Qd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;e=k;k=k+32|0;f=e;g=a[d>>0]|0;a:do if(g<<24>>24!=0?(a[d+1>>0]|0)!=0:0){ie(f|0,0,32)|0;h=a[d>>0]|0;if(h<<24>>24){i=d;j=h;do{h=j&255;l=f+(h>>>5<<2)|0;c[l>>2]=c[l>>2]|1<<(h&31);i=i+1|0;j=a[i>>0]|0}while(j<<24>>24!=0)}j=a[b>>0]|0;if(!(j<<24>>24))m=b;else{i=b;h=j;while(1){j=h&255;if(c[f+(j>>>5<<2)>>2]&1<<(j&31)|0){m=i;break a}j=i+1|0;h=a[j>>0]|0;if(!(h<<24>>24)){m=j;break}else i=j}}}else n=3;while(0);if((n|0)==3)m=ad(b,g<<24>>24)|0;k=e;return m-b|0}function Rd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if(!b){e=c[88559]|0;if(!e)f=0;else{g=e;h=3}}else{g=b;h=3}do if((h|0)==3){b=g+(Pd(g,d)|0)|0;if(!(a[b>>0]|0)){c[88559]=0;f=0;break}e=b+(Qd(b,d)|0)|0;c[88559]=e;if(!(a[e>>0]|0)){c[88559]=0;f=b;break}else{c[88559]=e+1;a[e>>0]=0;f=b;break}}while(0);return f|0}function Sd(a,b){a=a|0;b=b|0;bd(a+(Zc(a)|0)|0,b)|0;return a|0}function Td(a,b){a=a|0;b=b|0;var d=0,e=0;d=k;k=k+16|0;e=d;c[e>>2]=b;b=oc(c[753]|0,a,e)|0;k=d;return b|0}function Ud(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=b;while(1){d=c+1|0;if(!(Uc(a[c>>0]|0)|0))break;else c=d}b=a[c>>0]|0;switch(b|0){case 45:{e=1;f=5;break}case 43:{e=0;f=5;break}default:{g=0;h=c;i=b}}if((f|0)==5){g=e;h=d;i=a[d>>0]|0}if(!(kc(i)|0))j=0;else{i=0;d=h;while(1){h=(i*10|0)+48-(a[d>>0]|0)|0;d=d+1|0;if(!(kc(a[d>>0]|0)|0)){j=h;break}else i=h}}return ((g|0)==0?0-j|0:j)|0}function Vd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0.0;e=k;k=k+128|0;f=e;g=f;h=g+124|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));g=f+4|0;c[g>>2]=a;h=f+8|0;c[h>>2]=-1;c[f+44>>2]=a;c[f+76>>2]=-1;Sc(f,0);i=+Dd(f,d,1);d=(c[g>>2]|0)-(c[h>>2]|0)+(c[f+108>>2]|0)|0;if(b|0)c[b>>2]=(d|0)==0?a:a+d|0;k=e;return +i}function Wd(a,b){a=a|0;b=b|0;return +(+Vd(a,b,1))}function Xd(a){a=a|0;return +(+Wd(a,0))}function Yd(){}function Zd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=M(d,c)|0;f=a>>>16;a=(e>>>16)+(M(d,f)|0)|0;d=b>>>16;b=M(d,c)|0;return (x=(a>>>16)+(M(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function _d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=Zd(e,a)|0;f=x;return (x=(M(b,a)|0)+(M(d,e)|0)+f|f&0,c|0|0)|0}function $d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return (x=b+d+(e>>>0>>0|0)>>>0,e|0)|0}function ae(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return (x=e,a-c>>>0|0)|0}function be(a){a=a|0;return (a?31-(P(a^a-1)|0)|0:32)|0}function ce(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,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,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;g=a;h=b;i=h;j=d;k=e;l=k;if(!i){m=(f|0)!=0;if(!l){if(m){c[f>>2]=(g>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(g>>>0)/(j>>>0)>>>0;return (x=n,o)|0}else{if(!m){n=0;o=0;return (x=n,o)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;o=0;return (x=n,o)|0}}m=(l|0)==0;do if(j){if(!m){p=(P(l|0)|0)-(P(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<>>(q>>>0)&s;w=0;y=g<>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return (x=n,o)|0}r=j-1|0;if(r&j|0){s=(P(j|0)|0)+33-(P(i|0)|0)|0;q=64-s|0;p=32-s|0;z=p>>31;A=s-32|0;B=A>>31;t=s;u=p-1>>31&i>>>(A>>>0)|(i<>>(s>>>0))&B;v=B&i>>>(s>>>0);w=g<>>(A>>>0))&z|g<>31;break}if(f|0){c[f>>2]=r&g;c[f+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return (x=n,o)|0}else{r=be(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return (x=n,o)|0}}else{if(m){if(f|0){c[f>>2]=(i>>>0)%(j>>>0);c[f+4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return (x=n,o)|0}if(!g){if(f|0){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return (x=n,o)|0}r=l-1|0;if(!(r&l)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=r&i|b&0}n=0;o=i>>>((be(l|0)|0)>>>0);return (x=n,o)|0}r=(P(l|0)|0)-(P(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<>>(s>>>0);v=i>>>(s>>>0);w=0;y=g<>2]=a|0;c[f+4>>2]=h|b&0;n=0;o=0;return (x=n,o)|0}while(0);if(!t){C=y;D=w;E=v;F=u;G=0;H=0}else{b=d|0|0;d=k|e&0;e=$d(b|0,d|0,-1,-1)|0;k=x;h=y;y=w;w=v;v=u;u=t;t=0;do{a=h;h=y>>>31|h<<1;y=t|y<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;ae(e|0,k|0,g|0,a|0)|0;i=x;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=ae(g|0,a|0,l&b|0,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&d|0)|0;w=x;u=u-1|0}while((u|0)!=0);C=h;D=y;E=w;F=v;G=0;H=t}t=D;D=0;if(f|0){c[f>>2]=F;c[f+4>>2]=E}n=(t|0)>>>31|(C|D)<<1|(D<<1|t>>>31)&0|G;o=(t<<1|0>>>31)&-2|H;return (x=n,o)|0}function de(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ce(a,b,c,d,0)|0}function ee(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){x=b>>>c;return a>>>c|(b&(1<>>c-32|0}function fe(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){x=b<>>32-c;return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function he(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return fa(b|0,d|0,e|0)|0;f=b|0;g=b+e|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}h=g&-4|0;e=h-64|0;while((b|0)<=(e|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(h|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{h=g-4|0;while((b|0)<(h|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return f|0}function ie(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;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}g=f&-4|0;h=g-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(h|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return f-e|0}function je(a){a=a|0;var b=0,d=0;b=c[i>>2]|0;d=b+a|0;if((a|0)>0&(d|0)<(b|0)|(d|0)<0){U()|0;W(12);return -1}c[i>>2]=d;if((d|0)>(T()|0)?(S()|0)==0:0){c[i>>2]=b;W(12);return -1}return b|0}function ke(a,b){a=a|0;b=b|0;return ia[a&1](b|0)|0}function le(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ja[a&7](b|0,c|0,d|0)|0}function me(a){a=a|0;Q(0);return 0}function ne(a,b,c){a=a|0;b=b|0;c=c|0;Q(1);return 0} + +// EMSCRIPTEN_END_FUNCS +var ia=[me,ac];var ja=[ne,bc,cc,gc,hc,Rc,ne,ne];return{___errno_location:ec,___muldi3:_d,___udivdi3:de,_bitshift64Lshr:ee,_bitshift64Shl:fe,_free:_b,_i64Add:$d,_i64Subtract:ae,_llvm_bswap_i32:ge,_main:ra,_malloc:Zb,_memcpy:he,_memset:ie,_sbrk:je,dynCall_ii:ke,dynCall_iiii:le,establishStackSpace:na,getTempRet0:qa,runPostSets:Yd,setTempRet0:pa,setThrew:oa,stackAlloc:ka,stackRestore:ma,stackSave:la}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _main=Module["_main"]=asm["_main"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memset=Module["_memset"]=asm["_memset"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];Module["asm"]=asm;Module["getMemory"]=getMemory;Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS"]=FS;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;Module["FS_unlink"]=FS.unlink;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});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 calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(Module["thisProgram"]);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=Module["_main"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);Module["quit"](1,e)}}finally{calledMain=true}};function run(args){args=args||Module["arguments"];if(runDependencies>0){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(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"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}Module["quit"](status,new ExitStatus(status))}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){out(what);err(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}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}Module["noExitRuntime"]=true;run() + + + + + + + return bb2600basic; +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = bb2600basic; + else if (typeof define === 'function' && define['amd']) + define([], function() { return bb2600basic; }); + else if (typeof exports === 'object') + exports["bb2600basic"] = bb2600basic; + \ No newline at end of file diff --git a/src/worker/fs/fs2600basic.data b/src/worker/fs/fs2600basic.data new file mode 100644 index 00000000..1ff169d4 --- /dev/null +++ b/src/worker/fs/fs2600basic.data @@ -0,0 +1,4214 @@ + ifconst bankswitch + if bankswitch == 8 + ORG $2FFC + RORG $FFFC + endif + if bankswitch == 16 + ORG $4FFC + RORG $FFFC + endif + if bankswitch == 32 + ORG $8FFC + RORG $FFFC + endif + else + ifconst ROM2k + ORG $F7FC + else + ORG $FFFC + endif + endif + .word start + .word start +; MACRO.H +; Version 1.05, 13/NOVEMBER/2003 + +VERSION_MACRO = 105 + +; +; THIS FILE IS EXPLICITLY SUPPORTED AS A DASM-PREFERRED COMPANION FILE +; PLEASE DO *NOT* REDISTRIBUTE MODIFIED VERSIONS OF THIS FILE! +; +; This file defines DASM macros useful for development for the Atari 2600. +; It is distributed as a companion machine-specific support package +; for the DASM compiler. Updates to this file, DASM, and associated tools are +; available at at http://www.atari2600.org/dasm +; +; Many thanks to the people who have contributed. If you take issue with the +; contents, or would like to add something, please write to me +; (atari2600@taswegian.com) with your contribution. +; +; Latest Revisions... +; +; 1.05 14/NOV/2003 - Added VERSION_MACRO equate (which will reflect 100x version #) +; This will allow conditional code to verify MACRO.H being +; used for code assembly. +; 1.04 13/NOV/2003 - SET_POINTER macro added (16-bit address load) +; +; 1.03 23/JUN/2003 - CLEAN_START macro added - clears TIA, RAM, registers +; +; 1.02 14/JUN/2003 - VERTICAL_SYNC macro added +; (standardised macro for vertical synch code) +; 1.01 22/MAR/2003 - SLEEP macro added. +; - NO_ILLEGAL_OPCODES switch implemented +; 1.0 22/MAR/2003 Initial release + +; Note: These macros use illegal opcodes. To disable illegal opcode usage, +; define the symbol NO_ILLEGAL_OPCODES (-DNO_ILLEGAL_OPCODES=1 on command-line). +; If you do not allow illegal opcode usage, you must include this file +; *after* including VCS.H (as the non-illegal opcodes access hardware +; registers and require them to be defined first). + +; Available macros... +; SLEEP n - sleep for n cycles +; VERTICAL_SYNC - correct 3 scanline vertical synch code +; CLEAN_START - set machine to known state on startup +; SET_POINTER - load a 16-bit absolute to a 16-bit variable + +;------------------------------------------------------------------------------- +; SLEEP duration +; Original author: Thomas Jentzsch +; Inserts code which takes the specified number of cycles to execute. This is +; useful for code where precise timing is required. +; ILLEGAL-OPCODE VERSION DOES NOT AFFECT FLAGS OR REGISTERS. +; LEGAL OPCODE VERSION MAY AFFECT FLAGS +; Uses illegal opcode (DASM 2.20.01 onwards). + + MAC SLEEP ;usage: SLEEP n (n>1) +.CYCLES SET {1} + + IF .CYCLES < 2 + ECHO "MACRO ERROR: 'SLEEP': Duration must be > 1" + ERR + ENDIF + + IF .CYCLES & 1 + IFNCONST NO_ILLEGAL_OPCODES + nop 0 + ELSE + bit VSYNC + ENDIF +.CYCLES SET .CYCLES - 3 + ENDIF + + REPEAT .CYCLES / 2 + nop + REPEND + ENDM + +;------------------------------------------------------------------------------- +; VERTICAL_SYNC +; Original author: Manuel Polik +; Inserts the code required for a proper 3 scannline +; vertical sync sequence +; +; Note: Alters the accumulator +; +; IN: +; OUT: A = 1 + + MAC VERTICAL_SYNC + LDA #$02 ; A = VSYNC enable + STA WSYNC ; Finish current line + STA VSYNC ; Start vertical sync + STA WSYNC ; 1st line vertical sync + STA WSYNC ; 2nd line vertical sync + LSR ; A = VSYNC disable + STA WSYNC ; 3rd line vertical sync + STA VSYNC ; Stop vertical sync + ENDM + +;------------------------------------------------------------------------------- +; CLEAN_START +; Original author: Andrew Davie +; Standardised start-up code, clears stack, all TIA registers and RAM to 0 +; Sets stack pointer to $FF, and all registers to 0 +; Sets decimal mode off, sets interrupt flag (kind of un-necessary) +; Use as very first section of code on boot (ie: at reset) +; Code written to minimise total ROM usage - uses weird 6502 knowledge :) + + MAC CLEAN_START + sei + cld + + ldx #0 + txa + tay +.CLEAR_STACK dex + txs + pha + bne .CLEAR_STACK ; SP=$FF, X = A = Y = 0 + + ENDM + +;------------------------------------------------------- +; SET_POINTER +; Original author: Manuel Rotschkar +; +; Sets a 2 byte RAM pointer to an absolute address. +; +; Usage: SET_POINTER pointer, address +; Example: SET_POINTER SpritePTR, SpriteData +; +; Note: Alters the accumulator, NZ flags +; IN 1: 2 byte RAM location reserved for pointer +; IN 2: absolute address + + MAC SET_POINTER +.POINTER SET {1} +.ADDRESS SET {2} + + LDA #<.ADDRESS ; Get Lowbyte of Address + STA .POINTER ; Store in pointer + LDA #>.ADDRESS ; Get Hibyte of Address + STA .POINTER+1 ; Store in pointer+1 + + ENDM + +; EOF +; this file is screwed, I accidentally deleted the comments. Restore with version in .99b zip file. +2600basicheader.asm +bB.asm +std_kernel.asm +startup.asm +pf_drawing.asm +pf_scrolling.asm +std_routines.asm +std_overscan.asm +bB2.asm +score_graphics.asm +banksw.asm +2600basicfooter.asm +minikernel ; display up to 6 lives on screen + sta WSYNC + sleep 10 ; can we optimize this? + lda #0 + ldy #7 + sta VDELP0 + sta VDELP1 + ifnconst lives_compact + ifnconst lives_centered + sta RESP0 + endif + lda.w lives + ifnconst lives_centered + sta RESP1 + endif + lsr + lsr + lsr + lsr + ifconst lives_centered + sta RESP0 + endif + lsr + tax + ifconst lives_centered + sta RESP1 + endif + lda lifenusiz0table,x + sta NUSIZ0 + lda lifenusiz1table,x + sta NUSIZ1 + lda lifecolor + sta COLUP0 + sta COLUP1 + lda #$b0 + sta HMP0 + + else + + ifnconst lives_centered + sta.w RESP0 + sta RESP1 + endif + lda lives + lsr + lsr + lsr + lsr + lsr + tax + lda lifenusiz0table,x + ifconst lives_centered + sta RESP0 + sta RESP1 + sta.w NUSIZ0 + else + sta NUSIZ0 + endif + lda lifenusiz1table,x + sta NUSIZ1 + lda lifecolor + sta COLUP0 + sta COLUP1 + lda #$10 + sta HMP1 + + endif + + sta HMOVE ; cycle 73 + +lifeloop + cpx #0 + beq skipall + lda (lifepointer),y + sta GRP0 + cpx #1 + beq skipall + sta GRP1 +skipall + dey + sta WSYNC + bpl lifeloop + iny + sty GRP0 + sty GRP1 + rts + + if (<*) > $F5 + align 256 + endif + ifconst lives_compact +lifenusiz1table + .byte 0 +lifenusiz0table + .byte 0,0,0,1,1,3,3,3 + else +lifenusiz1table + .byte 0 +lifenusiz0table + .byte 0,0,0,2,2,6,6,6 + endif +; VCS.H +; Version 1.05, 13/November/2003 + +VERSION_VCS = 105 + +; THIS IS A PRELIMINARY RELEASE OF *THE* "STANDARD" VCS.H +; THIS FILE IS EXPLICITLY SUPPORTED AS A DASM-PREFERRED COMPANION FILE +; PLEASE DO *NOT* REDISTRIBUTE THIS FILE! +; +; This file defines hardware registers and memory mapping for the +; Atari 2600. It is distributed as a companion machine-specific support package +; for the DASM compiler. Updates to this file, DASM, and associated tools are +; available at at http://www.atari2600.org/dasm +; +; Many thanks to the original author(s) of this file, and to everyone who has +; contributed to understanding the Atari 2600. If you take issue with the +; contents, or naming of registers, please write to me (atari2600@taswegian.com) +; with your views. Please contribute, if you think you can improve this +; file! +; +; Latest Revisions... +; 1.05 13/NOV/2003 - Correction to 1.04 - now functions as requested by MR. +; - Added VERSION_VCS equate (which will reflect 100x version #) +; This will allow conditional code to verify VCS.H being +; used for code assembly. +; 1.04 12/NOV/2003 Added TIA_BASE_WRITE_ADDRESS and TIA_BASE_READ_ADDRESS for +; convenient disassembly/reassembly compatibility for hardware +; mirrored reading/writing differences. This is more a +; readability issue, and binary compatibility with disassembled +; and reassembled sources. Per Manuel Rotschkar's suggestion. +; 1.03 12/MAY/2003 Added SEG segment at end of file to fix old-code compatibility +; which was broken by the use of segments in this file, as +; reported by Manuel Polik on [stella] 11/MAY/2003 +; 1.02 22/MAR/2003 Added TIMINT($285) +; 1.01 Constant offset added to allow use for 3F-style bankswitching +; - define TIA_BASE_ADDRESS as $40 for Tigervision carts, otherwise +; it is safe to leave it undefined, and the base address will +; be set to 0. Thanks to Eckhard Stolberg for the suggestion. +; Note, may use -DLABEL=EXPRESSION to define TIA_BASE_ADDRESS +; - register definitions are now generated through assignment +; in uninitialised segments. This allows a changeable base +; address architecture. +; 1.0 22/MAR/2003 Initial release + + +;------------------------------------------------------------------------------- + +; TIA_BASE_ADDRESS +; The TIA_BASE_ADDRESS defines the base address of access to TIA registers. +; Normally 0, the base address should (externally, before including this file) +; be set to $40 when creating 3F-bankswitched (and other?) cartridges. +; The reason is that this bankswitching scheme treats any access to locations +; < $40 as a bankswitch. + + IFNCONST TIA_BASE_ADDRESS +TIA_BASE_ADDRESS = 0 + ENDIF + +; Note: The address may be defined on the command-line using the -D switch, eg: +; dasm.exe code.asm -DTIA_BASE_ADDRESS=$40 -f3 -v5 -ocode.bin +; *OR* by declaring the label before including this file, eg: +; TIA_BASE_ADDRESS = $40 +; include "vcs.h" + +; Alternate read/write address capability - allows for some disassembly compatibility +; usage ; to allow reassembly to binary perfect copies). This is essentially catering +; for the mirrored ROM hardware registers. + +; Usage: As per above, define the TIA_BASE_READ_ADDRESS and/or TIA_BASE_WRITE_ADDRESS +; using the -D command-line switch, as required. If the addresses are not defined, +; they defaut to the TIA_BASE_ADDRESS. + + IFNCONST TIA_BASE_READ_ADDRESS +TIA_BASE_READ_ADDRESS = TIA_BASE_ADDRESS + ENDIF + + IFNCONST TIA_BASE_WRITE_ADDRESS +TIA_BASE_WRITE_ADDRESS = TIA_BASE_ADDRESS + ENDIF + +;------------------------------------------------------------------------------- + + SEG.U TIA_REGISTERS_WRITE + ORG TIA_BASE_WRITE_ADDRESS + + ; DO NOT CHANGE THE RELATIVE ORDERING OF REGISTERS! + +VSYNC ds 1 ; $00 0000 00x0 Vertical Sync Set-Clear +VBLANK ds 1 ; $01 xx00 00x0 Vertical Blank Set-Clear +WSYNC ds 1 ; $02 ---- ---- Wait for Horizontal Blank +RSYNC ds 1 ; $03 ---- ---- Reset Horizontal Sync Counter +NUSIZ0 ds 1 ; $04 00xx 0xxx Number-Size player/missle 0 +NUSIZ1 ds 1 ; $05 00xx 0xxx Number-Size player/missle 1 +COLUP0 ds 1 ; $06 xxxx xxx0 Color-Luminance Player 0 +COLUP1 ds 1 ; $07 xxxx xxx0 Color-Luminance Player 1 +COLUPF ds 1 ; $08 xxxx xxx0 Color-Luminance Playfield +COLUBK ds 1 ; $09 xxxx xxx0 Color-Luminance Background +CTRLPF ds 1 ; $0A 00xx 0xxx Control Playfield, Ball, Collisions +REFP0 ds 1 ; $0B 0000 x000 Reflection Player 0 +REFP1 ds 1 ; $0C 0000 x000 Reflection Player 1 +PF0 ds 1 ; $0D xxxx 0000 Playfield Register Byte 0 +PF1 ds 1 ; $0E xxxx xxxx Playfield Register Byte 1 +PF2 ds 1 ; $0F xxxx xxxx Playfield Register Byte 2 +RESP0 ds 1 ; $10 ---- ---- Reset Player 0 +RESP1 ds 1 ; $11 ---- ---- Reset Player 1 +RESM0 ds 1 ; $12 ---- ---- Reset Missle 0 +RESM1 ds 1 ; $13 ---- ---- Reset Missle 1 +RESBL ds 1 ; $14 ---- ---- Reset Ball +AUDC0 ds 1 ; $15 0000 xxxx Audio Control 0 +AUDC1 ds 1 ; $16 0000 xxxx Audio Control 1 +AUDF0 ds 1 ; $17 000x xxxx Audio Frequency 0 +AUDF1 ds 1 ; $18 000x xxxx Audio Frequency 1 +AUDV0 ds 1 ; $19 0000 xxxx Audio Volume 0 +AUDV1 ds 1 ; $1A 0000 xxxx Audio Volume 1 +GRP0 ds 1 ; $1B xxxx xxxx Graphics Register Player 0 +GRP1 ds 1 ; $1C xxxx xxxx Graphics Register Player 1 +ENAM0 ds 1 ; $1D 0000 00x0 Graphics Enable Missle 0 +ENAM1 ds 1 ; $1E 0000 00x0 Graphics Enable Missle 1 +ENABL ds 1 ; $1F 0000 00x0 Graphics Enable Ball +HMP0 ds 1 ; $20 xxxx 0000 Horizontal Motion Player 0 +HMP1 ds 1 ; $21 xxxx 0000 Horizontal Motion Player 1 +HMM0 ds 1 ; $22 xxxx 0000 Horizontal Motion Missle 0 +HMM1 ds 1 ; $23 xxxx 0000 Horizontal Motion Missle 1 +HMBL ds 1 ; $24 xxxx 0000 Horizontal Motion Ball +VDELP0 ds 1 ; $25 0000 000x Vertical Delay Player 0 +VDELP1 ds 1 ; $26 0000 000x Vertical Delay Player 1 +VDELBL ds 1 ; $27 0000 000x Vertical Delay Ball +RESMP0 ds 1 ; $28 0000 00x0 Reset Missle 0 to Player 0 +RESMP1 ds 1 ; $29 0000 00x0 Reset Missle 1 to Player 1 +HMOVE ds 1 ; $2A ---- ---- Apply Horizontal Motion +HMCLR ds 1 ; $2B ---- ---- Clear Horizontal Move Registers +CXCLR ds 1 ; $2C ---- ---- Clear Collision Latches + +;------------------------------------------------------------------------------- + + SEG.U TIA_REGISTERS_READ + ORG TIA_BASE_READ_ADDRESS + + ; bit 7 bit 6 +CXM0P ds 1 ; $00 xx00 0000 Read Collision M0-P1 M0-P0 +CXM1P ds 1 ; $01 xx00 0000 M1-P0 M1-P1 +CXP0FB ds 1 ; $02 xx00 0000 P0-PF P0-BL +CXP1FB ds 1 ; $03 xx00 0000 P1-PF P1-BL +CXM0FB ds 1 ; $04 xx00 0000 M0-PF M0-BL +CXM1FB ds 1 ; $05 xx00 0000 M1-PF M1-BL +CXBLPF ds 1 ; $06 x000 0000 BL-PF ----- +CXPPMM ds 1 ; $07 xx00 0000 P0-P1 M0-M1 +INPT0 ds 1 ; $08 x000 0000 Read Pot Port 0 +INPT1 ds 1 ; $09 x000 0000 Read Pot Port 1 +INPT2 ds 1 ; $0A x000 0000 Read Pot Port 2 +INPT3 ds 1 ; $0B x000 0000 Read Pot Port 3 +INPT4 ds 1 ; $0C x000 0000 Read Input (Trigger) 0 +INPT5 ds 1 ; $0D x000 0000 Read Input (Trigger) 1 + +;------------------------------------------------------------------------------- + + SEG.U RIOT + ORG $280 + + ; RIOT MEMORY MAP + +SWCHA ds 1 ; $280 Port A data register for joysticks: + ; Bits 4-7 for player 1. Bits 0-3 for player 2. + +SWACNT ds 1 ; $281 Port A data direction register (DDR) +SWCHB ds 1 ; $282 Port B data (console switches) +SWBCNT ds 1 ; $283 Port B DDR +INTIM ds 1 ; $284 Timer output + +TIMINT ds 1 ; $285 + + ; Unused/undefined registers ($285-$294) + + ds 1 ; $286 + ds 1 ; $287 + ds 1 ; $288 + ds 1 ; $289 + ds 1 ; $28A + ds 1 ; $28B + ds 1 ; $28C + ds 1 ; $28D + ds 1 ; $28E + ds 1 ; $28F + ds 1 ; $290 + ds 1 ; $291 + ds 1 ; $292 + ds 1 ; $293 + +TIM1T ds 1 ; $294 set 1 clock interval +TIM8T ds 1 ; $295 set 8 clock interval +TIM64T ds 1 ; $296 set 64 clock interval +T1024T ds 1 ; $297 set 1024 clock interval + +;------------------------------------------------------------------------------- +; The following required for back-compatibility with code which does not use +; segments. + + SEG + +; EOF +; this file is screwed, I accidentally deleted the comments. Restore with version in .99b zip file. +superchipheader.asm +bB.asm +std_kernel.asm +startup.asm +pf_drawing.asm +pf_scrolling.asm +std_routines.asm +std_overscan.asm +bB2.asm +score_graphics.asm +banksw.asm +2600basicfooter.asm +; Compute mul1*mul2+acc -> acc:mul1 [mul2 is unchanged] +; Routine courtesy of John Payson (AtariAge member supercat) + + ; x and a contain multiplicands, result in a, temp1 contains any overflow + +mul16 + sty temp1 + sta temp2 + ldx #8 + dec temp2 +loopmul + lsr + ror temp1 + bcc noaddmul + adc temp2 +noaddmul + dex + bne loopmul + RETURN + +; div int/int +; numerator in A, denom in temp1 +; returns with quotient in A, remainder in temp1 + +div16 + sty temp1 + ldx #8 +loopdiv + cmp temp1 + bcc toosmalldiv + sbc temp1 ; Note: Carry is, and will remain, set. + rol temp2 + rol + dex + bne loopdiv + beq donediv +toosmalldiv + rol temp2 + rol + dex + bne loopdiv +donediv + sta temp1 + lda temp2 + RETURN +drawscreen + ifconst debugscore + ldx #14 + lda INTIM ; display # cycles left in the score + + ifconst mincycles + lda mincycles + cmp INTIM + lda mincycles + bcc nochange + lda INTIM + sta mincycles +nochange + endif + +; cmp #$2B +; bcs no_cycles_left + bmi cycles_left + ldx #64 + eor #$ff ;make negative +cycles_left + stx scorecolor + and #$7f ; clear sign bit + tax + lda scorebcd,x + sta score+2 + lda scorebcd1,x + sta score+1 + jmp done_debugscore +scorebcd + .byte $00, $64, $28, $92, $56, $20, $84, $48, $12, $76, $40 + .byte $04, $68, $32, $96, $60, $24, $88, $52, $16, $80, $44 + .byte $08, $72, $36, $00, $64, $28, $92, $56, $20, $84, $48 + .byte $12, $76, $40, $04, $68, $32, $96, $60, $24, $88 +scorebcd1 + .byte 0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6 + .byte 7, 7, 8, 8, 9, $10, $10, $11, $12, $12, $13 + .byte $14, $14, $15, $16, $16, $17, $17, $18, $19, $19, $20 + .byte $21, $21, $22, $23, $23, $24, $24, $25, $26, $26 +done_debugscore + endif + + ifconst debugcycles + lda INTIM ; if we go over, it mucks up the background color +; cmp #$2B +; BCC overscan + bmi overscan + sta COLUBK + bcs doneoverscan + endif + + +overscan + lda INTIM ;wait for sync + bmi overscan +doneoverscan +;do VSYNC + lda #2 + sta WSYNC + sta VSYNC + STA WSYNC + STA WSYNC + LDA #0 + STA WSYNC + STA VSYNC + sta VBLANK + ifnconst overscan_time + lda #37+128 + else + lda #overscan_time+128 + endif + sta TIM64T + + ifconst legacy + if legacy < 100 + ldx #4 +adjustloop + lda player0x,x + sec + sbc #14 ;? + sta player0x,x + dex + bpl adjustloop + endif + endif + if (<*)>$F0 + align 256, $EA + endif + sta WSYNC + ldx #4 + SLEEP 3 +HorPosLoop ; 5 + lda player0x,X ;+4 9 + sec ;+2 11 +DivideLoop + sbc #15 + bcs DivideLoop;+4 15 + sta temp1,X ;+4 19 + sta RESP0,X ;+4 23 + sta WSYNC + dex + bpl HorPosLoop;+5 5 + ; 4 + + ldx #4 + ldy temp1,X + lda repostable-256,Y + sta HMP0,X ;+14 18 + + dex + ldy temp1,X + lda repostable-256,Y + sta HMP0,X ;+14 32 + + dex + ldy temp1,X + lda repostable-256,Y + sta HMP0,X ;+14 46 + + dex + ldy temp1,X + lda repostable-256,Y + sta HMP0,X ;+14 60 + + dex + ldy temp1,X + lda repostable-256,Y + sta HMP0,X ;+14 74 + + sta WSYNC + + sta HMOVE ;+3 3 + + + ifconst legacy + if legacy < 100 + ldx #4 +adjustloop2 + lda player0x,x + clc + adc #14 ;? + sta player0x,x + dex + bpl adjustloop2 + endif + endif + + + + +;set score pointers + lax score+2 + jsr scorepointerset + sty scorepointers+5 + stx scorepointers+2 + lax score+1 + jsr scorepointerset + sty scorepointers+4 + stx scorepointers+1 + lax score + jsr scorepointerset + sty scorepointers+3 + stx scorepointers + +vblk +; run possible vblank bB code + ifconst vblank_bB_code + jsr vblank_bB_code + endif +vblk2 + LDA INTIM + bmi vblk2 + jmp kernel + + + .byte $80,$70,$60,$50,$40,$30,$20,$10,$00 + .byte $F0,$E0,$D0,$C0,$B0,$A0,$90 +repostable + +scorepointerset + and #$0F + asl + asl + asl + adc #$d5) + align 256 + endif + ; this is a kludge to prevent page wrapping - fix!!! + +.skipDrawlastP1 + sleep 2 + lda #0 + jmp .continuelastP1 + +.endkerloop ; enter at cycle 59?? + + nop + +.enterfromNBL + ifconst pfres + ldy.w playfield+pfres*4-4 + sty PF1 ;3 + ldy.w playfield+pfres*4-3 + sty PF2 ;3 + ldy.w playfield+pfres*4-1 + sty PF1 ; possibly too early? + ldy.w playfield+pfres*4-2 + sty PF2 ;3 + else + ldy.w playfield+44 + sty PF1 ;3 + ldy.w playfield+45 + sty PF2 ;3 + ldy.w playfield+47 + sty PF1 ; possibly too early? + ldy.w playfield+46 + sty PF2 ;3 + endif + +enterlastkernel + lda ballheight + +; tya + dcp bally +; sleep 4 + +; sbc stack3 + rol + rol + sta ENABL + + lda player1height ;3 + dcp player1y ;5 + bcc .skipDrawlastP1 + ldy player1y ;3 + lda (player1pointer),y ;5; player0pointer must be selected carefully by the compiler + ; so it doesn't cross a page boundary! + +.continuelastP1 + sta GRP1 ;3 + + ifnconst player1colors + lda missile1height ;3 + dcp missile1y ;5 + else + lda (player1color),y + sta COLUP1 + endif + + dex + ;dec temp4 ; might try putting this above PF writes + beq endkernel + + + ifconst pfres + ldy.w playfield+pfres*4-4 + sty PF1 ;3 + ldy.w playfield+pfres*4-3 + sty PF2 ;3 + ldy.w playfield+pfres*4-1 + sty PF1 ; possibly too early? + ldy.w playfield+pfres*4-2 + sty PF2 ;3 + else + ldy.w playfield+44 + sty PF1 ;3 + ldy.w playfield+45 + sty PF2 ;3 + ldy.w playfield+47 + sty PF1 ; possibly too early? + ldy.w playfield+46 + sty PF2 ;3 + endif + + ifnconst player1colors + rol;2 + rol;2 + sta ENAM1 ;3 + else + ifnconst playercolors + sleep 7 + else + lda.w player0colorstore + sta COLUP0 + endif + endif + + lda.w player0height + dcp player0y + bcc .skipDrawlastP0 + ldy player0y + lda (player0pointer),y +.continuelastP0 + sta GRP0 + + + + ifnconst no_blank_lines + lda missile0height ;3 + dcp missile0y ;5 + sbc stack1 + sta ENAM0 ;3 + jmp .endkerloop + else + ifconst readpaddle + ldy currentpaddle + lda INPT0,y + bpl noreadpaddle2 + inc paddle + jmp .endkerloop +noreadpaddle2 + sleep 4 + jmp .endkerloop + else ; no_blank_lines and no paddle reading + sleep 14 + jmp .endkerloop + endif + endif + + +; ifconst donepaddleskip +;paddleskipread + ; this is kind of lame, since it requires 4 cycles from a page boundary crossing + ; plus we get a lo-res paddle read +; bmi donepaddleskip +; endif + +.skipDrawlastP0 + sleep 2 + lda #0 + jmp .continuelastP0 + + ifconst no_blank_lines +no_blank_lines_bailout + ldx #0 + endif + +endkernel + ; 6 digit score routine + stx PF1 + stx PF2 + stx PF0 + clc + + ifconst pfrowheight + lda #pfrowheight+2 + else + ifnconst pfres + lda #10 + else + lda #(96/pfres)+2 ; try to come close to the real size + endif + endif + + sbc playfieldpos + sta playfieldpos + txa + + ifconst shakescreen + bit shakescreen + bmi noshakescreen2 + ldx #$3D +noshakescreen2 + endif + + sta WSYNC,x + +; STA WSYNC ;first one, need one more + sta REFP0 + sta REFP1 + STA GRP0 + STA GRP1 + ; STA PF1 + ; STA PF2 + sta HMCLR + sta ENAM0 + sta ENAM1 + sta ENABL + + lda temp2 ;restore variables that were obliterated by kernel + sta player0y + lda temp3 + sta player1y + ifnconst player1colors + lda temp6 + sta missile1y + endif + ifnconst playercolors + ifnconst readpaddle + lda temp5 + sta missile0y + endif + endif + lda stack2 + sta bally + + ifconst no_blank_lines + sta WSYNC + endif + + lda INTIM + clc + ifnconst vblank_time + adc #43+12+87 + else + adc #vblank_time+12+87 + endif +; sta WSYNC + sta TIM64T + + ifconst minikernel + jsr minikernel + endif + + ; now reassign temp vars for score pointers + +; score pointers contain: +; score1-5: lo1,lo2,lo3,lo4,lo5,lo6 +; swap lo2->temp1 +; swap lo4->temp3 +; swap lo6->temp5 + ifnconst noscore + lda scorepointers+1 +; ldy temp1 + sta temp1 +; sty scorepointers+1 + + lda scorepointers+3 +; ldy temp3 + sta temp3 +; sty scorepointers+3 + + + sta HMCLR + tsx + stx stack1 + ldx #$10 + stx HMP0 + + sta WSYNC + ldx #0 + STx GRP0 + STx GRP1 ; seems to be needed because of vdel + + lda scorepointers+5 +; ldy temp5 + sta temp5,x +; sty scorepointers+5 + lda #>scoretable + sta scorepointers+1 + sta scorepointers+3 + sta scorepointers+5,x + sta temp2,x + sta temp4,x + sta temp6,x + LDY #7 + STA RESP0 + STA RESP1 + + + LDA #$03 + STA NUSIZ0 + STA NUSIZ1,x + STA VDELP0 + STA VDELP1 + LDA #$20 + STA HMP1 + LDA scorecolor +; STA HMCLR +; STA WSYNC; second one + STA HMOVE ; cycle 73 ? + + STA COLUP0 + STA COLUP1 + lda (scorepointers),y + sta GRP0 + ifconst pfscore + lda pfscorecolor + sta COLUPF + endif + lda (scorepointers+8),y + sta WSYNC + sleep 2 + jmp beginscore + + if ((<*)>$d4) + align 256 ; kludge that potentially wastes space! should be fixed! + endif + +loop2 + lda (scorepointers),y ;+5 68 204 + sta GRP0 ;+3 71 213 D1 -- -- -- + ifconst pfscore + lda.w pfscore1 + sta PF1 + else + sleep 7 + endif + ; cycle 0 + lda (scorepointers+$8),y ;+5 5 15 +beginscore + sta GRP1 ;+3 8 24 D1 D1 D2 -- + lda (scorepointers+$6),y ;+5 13 39 + sta GRP0 ;+3 16 48 D3 D1 D2 D2 + lax (scorepointers+$2),y ;+5 29 87 + txs + lax (scorepointers+$4),y ;+5 36 108 + sleep 3 + + ifconst pfscore + lda pfscore2 + sta PF1 + else + sleep 6 + endif + + lda (scorepointers+$A),y ;+5 21 63 + stx GRP1 ;+3 44 132 D3 D3 D4 D2! + tsx + stx GRP0 ;+3 47 141 D5 D3! D4 D4 + sta GRP1 ;+3 50 150 D5 D5 D6 D4! + sty GRP0 ;+3 53 159 D4* D5! D6 D6 + dey + bpl loop2 ;+2 60 180 + + ldx stack1 + txs +; lda scorepointers+1 + ldy temp1 +; sta temp1 + sty scorepointers+1 + + LDA #0 + sta PF1 + STA GRP0 + STA GRP1 + STA VDELP0 + STA VDELP1;do we need these + STA NUSIZ0 + STA NUSIZ1 + +; lda scorepointers+3 + ldy temp3 +; sta temp3 + sty scorepointers+3 + +; lda scorepointers+5 + ldy temp5 +; sta temp5 + sty scorepointers+5 + endif ;noscore + LDA #%11000010 + sta WSYNC + STA VBLANK + RETURN + + ifconst shakescreen +doshakescreen + bit shakescreen + bmi noshakescreen + sta WSYNC +noshakescreen + ldx missile0height + inx + rts + endif + + processor 6502 + include "vcs.h" + include "macro.h" + include "2600basic_variable_redefs.h" + +player0x = $80 +player1x = $81 +missile0x = $82 +missile1x = $83 +ballx = $84 + +objecty = $85 +player0y = $85 +player1y = $86 +missile1height = $87 +missile1y = $88 +bally = $89 + +player1color = $87 ; replaces missile 1 + +player0pointer = $8A ;uses $8A-$8B +player0pointerlo = $8A +player0pointerhi = $8B +player1pointer = $8C ; $8C-$8D +player1pointerlo = $8C +player1pointerhi = $8D + +player0height = $8E +player1height = $8F +missile0height = $90 +missile0y = $91 +ballheight = $92 + +currentpaddle = $90 ; replaces missile 0 (and can't be used with playercolor) +paddle = $91 ; replaces missile 0 +player0colorstore = $82 ; replaces missile 0 +player0color = $90 ; replaces missile 0 + +score = $93 ; $93-$95 +scorepointers = $96 ; $96-$9B = 6 bytes +temp1 = $9C ;used by kernel. can be used in program too, but +temp2 = $9D ;are obliterated when drawscreen is called. +temp3 = $9E +temp4 = $9F +temp5 = $A0 +temp6 = $A1 + +rand = $A2 +scorecolor = $A3 + +var0 = $A4 +var1 = $A5 +var2 = $A6 +var3 = $A7 +var4 = $A8 +var5 = $A9 +var6 = $AA +var7 = $AB +var8 = $AC +var9 = $AD +var10 = $AE +var11 = $AF +var12 = $B0 +var13 = $B1 +var14 = $B2 +var15 = $B3 +var16 = $B4 +var17 = $B5 +var18 = $B6 +var19 = $B7 +var20 = $B8 +var21 = $B9 +var22 = $BA +var23 = $BB +var24 = $BC +var25 = $BD +var26 = $BE +var27 = $BF +var28 = $C0 +var29 = $C1 +var30 = $C2 +var31 = $C3 +var32 = $C4 +var33 = $C5 +var34 = $C6 +var35 = $C7 +var36 = $C8 +var37 = $C9 +var38 = $CA +var39 = $CB +var40 = $CC +var41 = $CD +var42 = $CE +var43 = $CF +var44 = $D0 +var45 = $D1 +var46 = $D2 +var47 = $D3 + +temp7 = $D4 ; This is used to aid in bankswitching + +playfieldpos = $D5 + +A = $d6 +a = $d6 +B = $d7 +b = $d7 +C = $d8 +c = $d8 +D = $d9 +d = $d9 +E = $da +e = $da +F = $db +f = $db +G = $dc +g = $dc +H = $dd +h = $dd +I = $de +i = $de +J = $df +j = $df +K = $e0 +k = $e0 +L = $e1 +l = $e1 +M = $e2 +m = $e2 +N = $e3 +n = $e3 +O = $e4 +o = $e4 +P = $e5 +p = $e5 +Q = $e6 +q = $e6 +R = $e7 +r = $e7 +S = $e8 +s = $e8 +T = $e9 +t = $e9 +U = $ea +u = $ea +V = $eb +v = $eb +W = $ec +w = $ec +X = $ed +x = $ed +Y = $ee +y = $ee +Z = $ef +z = $ef + +; available for other uses, or if unused, provide more stack space + +aux1 = $f0 +aux2 = $f1 +aux3 = $f2 +aux4 = $f3 +aux5 = $f4 +aux6 = $f5 + +; playfield color/height pointers +pfcolortable = $f0 ; and $d5 +pfheighttable = $f0 ; and $d5 +; the above pointers are the same because if color and height are both used together, +; they must used absolute indexed and cannot use pointers + +lifepointer = $f2 ; pointer to "lives" shape +; upper 3 bits of $f2 contain the number of lives +lifecolor = $f4 +lives = $f3 ; # lives >> 5 +statusbarlength = $f5 ; only uses upper 5 bits; other bits free + +pfscore1 = $f2 ; optional playfield bytes in score +pfscore2 = $f3 +pfscorecolor = $f4 + +stack1 = $f6 +stack2 = $f7 +stack3 = $f8 +stack4 = $f9 +; the stack bytes above may be used in the kernel +; stack = F6-F7, F8-F9, FA-FB, FC-FD, FE-FF + + MAC RETURN ; auto-return from either a regular or bankswitched module + ifnconst bankswitch + rts + else + jmp BS_return + endif + ENDM + + ifconst superchip +playfieldbase = $10D0 + else +playfieldbase = $A4 + endif + +; define playfield start based on height + ifnconst pfres +playfield = playfieldbase + else +playfield = playfieldbase-(pfres-12)*4 + endif + +; every bank has this stuff at the same place +; this code can switch to/from any bank at any entry point +; and can preserve register values +; note: lines not starting with a space are not placed in all banks +; +; line below tells the compiler how long this is - do not remove +;size=32 +begin_bscode + ldx #$ff + txs + lda #>(start-1) + pha + lda #<(start-1) + pha +BS_return + pha + txa + pha + tsx + lda 4,x ; get high byte of return address + rol + rol + rol + rol + and #bs_mask ;1 3 or 7 for F8/F6/F4 + tax + inx +BS_jsr + lda bankswitch_hotspot-1,x + pla + tax + pla + rts + if ((* & $1FFF) > ((bankswitch_hotspot & $1FFF) - 1)) + echo "WARNING: size parameter in banksw.asm too small - the program probably will not work." + echo "Change to",[(*-begin_bscode+1)&$FF]d,"and try again." + endif + processor 6502 + include "vcs.h" + include "macro.h" + include "multisprite.h" + include "2600basic_variable_redefs.h" + ifconst bankswitch + if bankswitch == 8 + ORG $1000 + RORG $D000 + endif + if bankswitch == 16 + ORG $1000 + RORG $9000 + endif + if bankswitch == 32 + ORG $1000 + RORG $1000 + endif + else + ORG $F000 + endif +; y and a contain multiplicands, result in a + +mul8 + sty temp1 + sta temp2 + lda #0 +reptmul8 + lsr temp2 + bcc skipmul8 + clc + adc temp1 +;bcs donemul8 might save cycles? +skipmul8 +;beq donemul8 might save cycles? + asl temp1 + bne reptmul8 +donemul8 + RETURN + +div8 + ; a=numerator y=denominator, result in a + cpy #2 + bcc div8end+1;div by 0 = bad, div by 1=no calc needed, so bail out + sty temp1 + ldy #$ff +div8loop + sbc temp1 + iny + bcs div8loop +div8end + tya + ; result in a + RETURN +minikernel ; display up to 6 lives on screen + sta WSYNC + ldx #$20 + stx HMP1 + stx VDELP0 + lda lives + lsr + lsr + lsr + lsr + lsr + sta RESP0 + sta RESP1 + stx VDELP1 + tax + lda lifenusiz0table,x + sta NUSIZ0 + lda lifenusiz1table,x + sta NUSIZ1 + lda lifecolor + sta COLUP0 + sta COLUP1 + lda #$10 + sta HMP0 + + lda statusbarlength + lsr + lsr + lsr ; 0-31 + ; 3 cases: 0-7, 8-15, 16-24 + ; if 0-7, temp1=val, temp2=0, temp3=0 + ; if 8-15, temp1=255, temp2=val (rev), temp3=0 + ; if 16-23, temp1=255, temp2=255, temp3=val + tay + + sta HMOVE ;cycle 74? + + ifconst statusbarcolor + ; only write COLUPF if color variable exists, otherwise use existing PF color + lda statusbarcolor + sta COLUPF + endif + + cmp #8 + bcc zero_7 + cmp #16 + bcc eight_15 + lda #255 + sta temp1 + sta temp2 + lda statustable-16,y + sta temp3 + lda statustable,y + sta temp4 + jmp startlifedisplay + +zero_7 + lda #0 + sta temp4 + sta temp3 + sta temp2 + lda statustable,y + sta temp1 + jmp startlifedisplay +eight_15 + lda #255 + sta temp1 + lda #0 + sta temp4 + sta temp3 + lda statustable+16,y + sta temp2 +startlifedisplay + ldy #7 +lifeloop + sta WSYNC + stx PF0 + lda (lifepointer),y + cpx #0 + bne onelife + .byte $0C +onelife + sta GRP0 + + cpx #2 + bcs nolives + .byte $0C +nolives + sta GRP1 + lda temp4 + sta PF0 + lda temp1 + sta PF2 + lda temp3 + sta PF1 + lda temp2 + sta PF2 ;cycle 48! + sleep 14 + lda #0 + dey + sta PF1 + bpl lifeloop + sta WSYNC + iny + sty PF0 + sty PF2 + sty PF1 + sty GRP0 + sty GRP1 + rts + + if (<*) > $F5 + align 256 + endif +lifenusiz1table + .byte 0 +lifenusiz0table + .byte 0,0,0,1,1,3,3,3 + +statustable +;0-7 and 16+ + .byte %00000000 + .byte %00000001 + .byte %00000011 + .byte %00000111 + .byte %00001111 + .byte %00011111 + .byte %00111111 + .byte %01111111 + .byte 255 + .byte 255 + .byte 255 + .byte 255 + .byte 255 + .byte 255 + .byte 255 + .byte 255 +; 8-15 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte %00000000 + .byte %10000000 + .byte %11000000 + .byte %11100000 + .byte %11110000 + .byte %11111000 + .byte %11111100 + .byte %11111110 + +FineAdjustTableBegin + .byte %01100000 ;left 6 + .byte %01010000 + .byte %01000000 + .byte %00110000 + .byte %00100000 + .byte %00010000 + .byte %00000000 ;left 0 + .byte %11110000 + .byte %11100000 + .byte %11010000 + .byte %11000000 + .byte %10110000 + .byte %10100000 + .byte %10010000 + .byte %10000000 ;right 8 +FineAdjustTableEnd = FineAdjustTableBegin - 241 + +PFStart + .byte 87,43,0,21,0,0,0,10 +blank_pf + .byte 0,0,0,0,0,0,0,5 +; .byte 43,21,0,10,0,0,0,5 + ifconst screenheight +pfsub + .byte 8,4,2,2,1,0,0,1,0 + endif + ;--set initial P1 positions +multisprite_setup + lda #15 + sta pfheight + + ldx #4 +; stx temp3 +SetCopyHeight +; lda #76 +; sta NewSpriteX,X +; lda CopyColorData,X +; sta NewCOLUP1,X + ;lda SpriteHeightTable,X +; sta spriteheight,x + txa + sta SpriteGfxIndex,X + sta spritesort,X + dex + bpl SetCopyHeight + + + +; since we can't turn off pf, point PF to zeros here + lda #>blank_pf + sta PF2pointer+1 + sta PF1pointer+1 + lda #temp1 +; swap lo4->temp3 +; swap lo6->temp5 + + lda scorepointers+5 + sta temp5 + lda scorepointers+1 + sta temp1 + lda scorepointers+3 + sta temp3 + + lda #>scoretable + sta scorepointers+1 + sta scorepointers+3 + sta scorepointers+5 + sta temp2 + sta temp4 + sta temp6 + + rts + + + +;------------------------------------------------------------------------- +;----------------------Kernel Routine------------------------------------- +;------------------------------------------------------------------------- + + +;------------------------------------------------------------------------- +; echo * +; repeat $f147-* +; brk +; repend +; org $F240 + +SwitchDrawP0K1 ; 72 + lda P0Bottom + sta P0Top ;+6 2 + jmp BackFromSwitchDrawP0K1 ;+3 5 + +WaitDrawP0K1 ; 74 + SLEEP 4 ;+4 2 + jmp BackFromSwitchDrawP0K1 ;+3 5 + +SkipDrawP1K1 ; 11 + lda #0 + sta GRP1 ;+5 16 so Ball gets drawn + jmp BackFromSkipDrawP1 ;+3 19 + +;------------------------------------------------------------------------- + +KernelRoutine + ifnconst screenheight + jsr wastetime ; waste 12 cycles + else + sleep 6 + endif + tsx + stx stack1 + ldx #ENABL + txs ;+9 9 + + ldx #0 + lda pfheight + bpl asdhj + .byte $24 +asdhj + tax + +; ldx pfheight + lda PFStart,x ; get pf pixel resolution for heights 15,7,3,1,0 + + ifconst screenheight + sec + if screenheight == 84 + sbc pfsub+1,x + else + sbc pfsub,x + endif + endif + + sta pfpixelheight + + ifconst screenheight + ldy #screenheight + else + ldy #88 + endif + +; lda #$02 +; sta COLUBK ;+5 18 + +; sleep 25 + sleep 2 +KernelLoopa ; 50 + SLEEP 7 ;+4 54 +KernelLoopb ; 54 + SLEEP 2 ;+12 66 + cpy P0Top ;+3 69 + beq SwitchDrawP0K1 ;+2 71 + bpl WaitDrawP0K1 ;+2 73 + lda (player0pointer),Y ;+5 2 + sta GRP0 ;+3 5 VDEL because of repokernel +BackFromSwitchDrawP0K1 + + cpy P1Bottom ;+3 8 unless we mean to draw immediately, this should be set + ; to a value greater than maximum Y value initially + bcc SkipDrawP1K1 ;+2 10 + lda (P1display),Y ;+5 15 + sta.w GRP1 ;+4 19 +BackFromSkipDrawP1 + +;fuck + sty temp1 + ldy pfpixelheight + lax (PF1pointer),y + stx PF1 ;+7 26 + lda (PF2pointer),y + sta PF2 ;+7 33 + ;sleep 6 + stx PF1temp2 + sta PF2temp2 + dey + lda (PF1pointer),y + sta PF1temp1 + lda (PF2pointer),y + sta PF2temp1 + ldy temp1 + + ldx #ENABL + txs + cpy bally + php ;+6 39 VDEL ball + + + cpy missile1y + php ;+6 71 + + cpy missile0y + php ;+6 1 + ldx #1 + + + dey ;+2 15 + + cpy RepoLine ;+3 18 + beq RepoKernel ;+2 20 +; SLEEP 20 ;+23 43 + sleep 6 + +newrepo ; since we have time here, store next repoline + ldx SpriteIndex + lda SpriteGfxIndex-1,x + tax + lda NewSpriteY,x + sta temp6 + sleep 4 + +BackFromRepoKernel + tya ;+2 45 + and pfheight ;+2 47 + bne KernelLoopa ;+2 49 + dec pfpixelheight + bpl KernelLoopb ;+3 54 +; bmi donewkernel ;+3 54 +; bne KernelLoopb+1 ;+3 54 + +donewkernel + jmp DoneWithKernel ;+3 56 + +;------------------------------------------------------------------------- + + ; room here for score? + +setscorepointers + lax score+2 + jsr scorepointerset + sty scorepointers+5 + stx scorepointers+2 + lax score+1 + jsr scorepointerset + sty scorepointers+4 + stx scorepointers+1 + lax score + jsr scorepointerset + sty scorepointers+3 + stx scorepointers +wastetime + rts + +scorepointerset + and #$0F + asl + asl + asl + adc #=temp1) + cmp spriteheight,x + bcs countdown +; overlap with x+1>x +; +; stick x at end of gfxtable, dec counter +overlapping + dec temp3 + ldx temp2 + inx + jsr shiftnumbers + jmp skipswapGfxtable + +largerXislower ; (temp1>A) + tay + ldx temp2 + lda spritesort,x + tax + tya + eor #$FF + cmp spriteheight,x + bcs notoverlapping + + dec temp3 + ldx temp2 + inx + jsr shiftnumbers + jmp skipswapGfxtable +notoverlapping + ldx temp2 ; swap display table + ldy SpriteGfxIndex+1,x + lda SpriteGfxIndex,x + sty SpriteGfxIndex,x + sta SpriteGfxIndex+1,x + +skipswapGfxtable + ldx temp2 ; swap sort table + ldy spritesort+1,x + lda spritesort,x + sty spritesort,x + sta spritesort+1,x + +countdown + dec temp2 + bpl sortloop + +checktoohigh + ldx temp3 + lda SpriteGfxIndex,x + tax + lda NewSpriteY,x + ifconst screenheight + cmp #screenheight-2 + else + cmp #$56 + endif + bcc nonetoohigh + dec temp3 + bne checktoohigh + +nonetoohigh + rts + + +shiftnumbers + ; stick current x at end, shift others down + ; if x=4: don't do anything + ; if x=3: swap 3 and 4 + ; if x=2: 2=3, 3=4, 4=2 + ; if x=1: 1=2, 2=3, 3=4, 4=1 + ; if x=0: 0=1, 1=2, 2=3, 3=4, 4=0 + ldy SpriteGfxIndex,x +swaploop + cpx #4 + beq shiftdone + lda SpriteGfxIndex+1,x + sta SpriteGfxIndex,x + inx + jmp swaploop +shiftdone + sty SpriteGfxIndex,x + rts + + ifconst debugscore +debugcycles + ldx #14 + lda INTIM ; display # cycles left in the score + + ifconst mincycles + lda mincycles + cmp INTIM + lda mincycles + bcc nochange + lda INTIM + sta mincycles +nochange + endif + +; cmp #$2B +; bcs no_cycles_left + bmi cycles_left + ldx #64 + eor #$ff ;make negative +cycles_left + stx scorecolor + and #$7f ; clear sign bit + tax + lda scorebcd,x + sta score+2 + lda scorebcd1,x + sta score+1 + rts +scorebcd + .byte $00, $64, $28, $92, $56, $20, $84, $48, $12, $76, $40 + .byte $04, $68, $32, $96, $60, $24, $88, $52, $16, $80, $44 + .byte $08, $72, $36, $00, $64, $28, $92, $56, $20, $84, $48 + .byte $12, $76, $40, $04, $68, $32, $96, $60, $24, $88 +scorebcd1 + .byte 0, 0, 1, 1, 2, 3, 3, 4, 5, 5, 6 + .byte 7, 7, 8, 8, 9, $10, $10, $11, $12, $12, $13 + .byte $14, $14, $15, $16, $16, $17, $17, $18, $19, $19, $20 + .byte $21, $21, $22, $23, $23, $24, $24, $25, $26, $26 + endif +; +; Inclues go below - order is crucial, since this is also the order in which +; they will appear in the generated assembly file +; + + +; header file +2600basicheader.asm + + +; standard kernel: two players, two missiles, a ball and an asymmetric playfield. +std_kernel.asm + +; standard startup routine. +startup.asm + + +; below are collections of subroutines and functions +; if you have any more to add, put them immediately below this line. + +pf_drawing.asm +pf_scrolling.asm +std_routines.asm + +; The overscan routine goes below. it sets up sprites for the std_kernel. +; if you have any routines that will not run until the overscan period, +; put them immediately below this line. +std_overscan.asm + + +; below is the generated batari Basic file + +bB.asm + + +; score graphics. +score_graphics.asm + +; below is the footer, which contains the score digits and startup vectors. +; If you want to create your own custom score digits, you may hack the file below, +; but first you should rename it to something else. + +2600basicfooter.asm + processor 6502 + include "vcs.h" + include "macro.h" + include "2600basic.h" + include "2600basic_variable_redefs.h" + ifconst bankswitch + if bankswitch == 8 + ORG $1000 + RORG $D000 + endif + if bankswitch == 16 + ORG $1000 + RORG $9000 + endif + if bankswitch == 32 + ORG $1000 + RORG $1000 + endif + else + ORG $F000 + endif + repeat 256 + .byte $ff + repend +pfscroll ;(a=0 left, 1 right, 2 up, 4 down, 6=upup, 12=downdown) + bne notleft +;left + ifconst pfres + ldx #pfres*4 + else + ldx #48 + endif +leftloop + lda playfield-1,x + lsr + + ifconst superchip + lda playfield-2,x + rol + sta playfield-130,x + lda playfield-3,x + ror + sta playfield-131,x + lda playfield-4,x + rol + sta playfield-132,x + lda playfield-1,x + ror + sta playfield-129,x + else + rol playfield-2,x + ror playfield-3,x + rol playfield-4,x + ror playfield-1,x + endif + + txa + sbx #4 + bne leftloop + RETURN + +notleft + lsr + bcc notright +;right + + ifconst pfres + ldx #pfres*4 + else + ldx #48 + endif +rightloop + lda playfield-4,x + lsr + ifconst superchip + lda playfield-3,x + rol + sta playfield-131,x + lda playfield-2,x + ror + sta playfield-130,x + lda playfield-1,x + rol + sta playfield-129,x + lda playfield-4,x + ror + sta playfield-132,x + else + rol playfield-3,x + ror playfield-2,x + rol playfield-1,x + ror playfield-4,x + endif + txa + sbx #4 + bne rightloop + RETURN + +notright + lsr + bcc notup +;up + lsr + bcc onedecup + dec playfieldpos +onedecup + dec playfieldpos + beq shiftdown + bpl noshiftdown2 +shiftdown + ifconst pfrowheight + lda #pfrowheight + else + ifnconst pfres + lda #8 + else + lda #(96/pfres) ; try to come close to the real size + endif + endif + + sta playfieldpos + lda playfield+3 + sta temp4 + lda playfield+2 + sta temp3 + lda playfield+1 + sta temp2 + lda playfield + sta temp1 + ldx #0 +up2 + lda playfield+4,x + ifconst superchip + sta playfield-128,x + lda playfield+5,x + sta playfield-127,x + lda playfield+6,x + sta playfield-126,x + lda playfield+7,x + sta playfield-125,x + else + sta playfield,x + lda playfield+5,x + sta playfield+1,x + lda playfield+6,x + sta playfield+2,x + lda playfield+7,x + sta playfield+3,x + endif + txa + sbx #252 + ifconst pfres + cpx #(pfres-1)*4 + else + cpx #44 + endif + bne up2 + + lda temp4 + + ifconst superchip + ifconst pfres + sta playfield+pfres*4-129 + lda temp3 + sta playfield+pfres*4-130 + lda temp2 + sta playfield+pfres*4-131 + lda temp1 + sta playfield+pfres*4-132 + else + sta playfield+47-128 + lda temp3 + sta playfield+46-128 + lda temp2 + sta playfield+45-128 + lda temp1 + sta playfield+44-128 + endif + else + ifconst pfres + sta playfield+pfres*4-1 + lda temp3 + sta playfield+pfres*4-2 + lda temp2 + sta playfield+pfres*4-3 + lda temp1 + sta playfield+pfres*4-4 + else + sta playfield+47 + lda temp3 + sta playfield+46 + lda temp2 + sta playfield+45 + lda temp1 + sta playfield+44 + endif + endif +noshiftdown2 + RETURN + + +notup +;down + lsr + bcs oneincup + inc playfieldpos +oneincup + inc playfieldpos + lda playfieldpos + + ifconst pfrowheight + cmp #pfrowheight+1 + else + ifnconst pfres + cmp #9 + else + cmp #(96/pfres)+1 ; try to come close to the real size + endif + endif + + bcc noshiftdown + lda #1 + sta playfieldpos + + ifconst pfres + lda playfield+pfres*4-1 + sta temp4 + lda playfield+pfres*4-2 + sta temp3 + lda playfield+pfres*4-3 + sta temp2 + lda playfield+pfres*4-4 + else + lda playfield+47 + sta temp4 + lda playfield+46 + sta temp3 + lda playfield+45 + sta temp2 + lda playfield+44 + endif + + sta temp1 + + ifconst pfres + ldx #(pfres-1)*4 + else + ldx #44 + endif +down2 + lda playfield-1,x + ifconst superchip + sta playfield-125,x + lda playfield-2,x + sta playfield-126,x + lda playfield-3,x + sta playfield-127,x + lda playfield-4,x + sta playfield-128,x + else + sta playfield+3,x + lda playfield-2,x + sta playfield+2,x + lda playfield-3,x + sta playfield+1,x + lda playfield-4,x + sta playfield,x + endif + txa + sbx #4 + bne down2 + + lda temp4 + ifconst superchip + sta playfield-125 + lda temp3 + sta playfield-126 + lda temp2 + sta playfield-127 + lda temp1 + sta playfield-128 + else + sta playfield+3 + lda temp3 + sta playfield+2 + lda temp2 + sta playfield+1 + lda temp1 + sta playfield + endif +noshiftdown + RETURN +;standard routines needed for pretty much all games +; just the random number generator is left - maybe we should remove this asm file altogether? +; repositioning code and score pointer setup moved to overscan +; read switches, joysticks now compiler generated (more efficient) + +randomize + lda rand + lsr + ifconst rand16 + rol rand16 + endif + bcc noeor + eor #$B4 +noeor + sta rand + ifconst rand16 + eor rand16 + endif + RETURN + processor 6502 + include "vcs.h" + include "macro.h" + include "2600basic.h" + include "2600basic_variable_redefs.h" + ifconst bankswitch + if bankswitch == 8 + ORG $1000 + RORG $D000 + endif + if bankswitch == 16 + ORG $1000 + RORG $9000 + endif + if bankswitch == 32 + ORG $1000 + RORG $1000 + endif + else + ORG $F000 + endif +; +; Inclues go below - order is crucial, since this is also the order in which +; they will appear in the generated assembly file +; +; header file +multispriteheader.asm + +; this is the batari Basic file +; for bankswitching, the concatenator will only parse until the end of +; bank 1 +bB.asm + +; standard kernel: two players, two missiles, a ball and an asymmetric playfield. +multisprite_kernel.asm + +; standard startup routine. +startup.asm + + +; below are collections of subroutines and functions +; if you have any more to add, put them immediately below this line. + +std_routines.asm + +; below is the generated batari Basic file +; note: this file is generated by the concatenation program. +; automatically split off from the bB.asm file where the new bank occurs + +bB2.asm + + +; score gfx +score_graphics.asm + +;bankswitch support +banksw.asm + + +; below is the footer, which contains the score digits and startup vectors. +; If you want to create your own custom score digits, you may hack the file below, +; but first you should rename it to something else. +; also includes bankswitching support (if applicable) + +2600basicfooter.asm +start + sei + cld + ldy #0 + lda $D0 + cmp #$2C ;check RAM location #1 + bne MachineIs2600 + lda $D1 + cmp #$A9 ;check RAM location #2 + bne MachineIs2600 + dey +MachineIs2600 + ldx #0 + txa +clearmem + inx + txs + pha + bne clearmem + sty temp1 + ifconst pfrowheight + lda pfrowheight + else + ifconst pfres + lda #(96/pfres) + else + lda #8 + endif + endif + sta playfieldpos + ldx #5 +initscore + lda #(game-1) + pha + lda #<(game-1) + pha + pha + pha + ldx #1 + jmp BS_jsr + endif +; playfield drawing routines +; you get a 32x12 bitmapped display in a single color :) +; 0-31 and 0-11 + +pfclear ; clears playfield - or fill with pattern + ifconst pfres + ldx #pfres*4-1 + else + ldx #47 + endif +pfclear_loop + ifnconst superchip + sta playfield,x + else + sta playfield-128,x + endif + dex + bpl pfclear_loop + RETURN + +setuppointers + stx temp2 ; store on.off.flip value + tax ; put x-value in x + lsr + lsr + lsr ; divide x pos by 8 + sta temp1 + tya + asl + asl ; multiply y pos by 4 + clc + adc temp1 ; add them together to get actual memory location offset + tay ; put the value in y + lda temp2 ; restore on.off.flip value + rts + +pfread +;x=xvalue, y=yvalue + jsr setuppointers + lda setbyte,x + and playfield,y + eor setbyte,x +; beq readzero +; lda #1 +; readzero + RETURN + +pfpixel +;x=xvalue, y=yvalue, a=0,1,2 + jsr setuppointers + + ifconst bankswitch + lda temp2 ; load on.off.flip value (0,1, or 2) + beq pixelon_r ; if "on" go to on + lsr + bcs pixeloff_r ; value is 1 if true + lda playfield,y ; if here, it's "flip" + eor setbyte,x + ifconst superchip + sta playfield-128,y + else + sta playfield,y + endif + RETURN +pixelon_r + lda playfield,y + ora setbyte,x + ifconst superchip + sta playfield-128,y + else + sta playfield,y + endif + RETURN +pixeloff_r + lda setbyte,x + eor #$ff + and playfield,y + ifconst superchip + sta playfield-128,y + else + sta playfield,y + endif + RETURN + + else + jmp plotpoint + endif + +pfhline +;x=xvalue, y=yvalue, a=0,1,2, temp3=endx + jsr setuppointers + jmp noinc +keepgoing + inx + txa + and #7 + bne noinc + iny +noinc + jsr plotpoint + cpx temp3 + bmi keepgoing + RETURN + +pfvline +;x=xvalue, y=yvalue, a=0,1,2, temp3=endx + jsr setuppointers + sty temp1 ; store memory location offset + inc temp3 ; increase final x by 1 + lda temp3 + asl + asl ; multiply by 4 + sta temp3 ; store it + ; Thanks to Michael Rideout for fixing a bug in this code + ; right now, temp1=y=starting memory location, temp3=final + ; x should equal original x value +keepgoingy + jsr plotpoint + iny + iny + iny + iny + cpy temp3 + bmi keepgoingy + RETURN + +plotpoint + lda temp2 ; load on.off.flip value (0,1, or 2) + beq pixelon ; if "on" go to on + lsr + bcs pixeloff ; value is 1 if true + lda playfield,y ; if here, it's "flip" + eor setbyte,x + ifconst superchip + sta playfield-128,y + else + sta playfield,y + endif + rts +pixelon + lda playfield,y + ora setbyte,x + ifconst superchip + sta playfield-128,y + else + sta playfield,y + endif + rts +pixeloff + lda setbyte,x + eor #$ff + and playfield,y + ifconst superchip + sta playfield-128,y + else + sta playfield,y + endif + rts + +setbyte + .byte $80 + .byte $40 + .byte $20 + .byte $10 + .byte $08 + .byte $04 + .byte $02 + .byte $01 + .byte $01 + .byte $02 + .byte $04 + .byte $08 + .byte $10 + .byte $20 + .byte $40 + .byte $80 + .byte $80 + .byte $40 + .byte $20 + .byte $10 + .byte $08 + .byte $04 + .byte $02 + .byte $01 + .byte $01 + .byte $02 + .byte $04 + .byte $08 + .byte $10 + .byte $20 + .byte $40 + .byte $80 +; feel free to modify the score graphics - just keep each digit 8 high +; and keep the conditional compilation stuff intact + ifconst ROM2k + ORG $F7AC + else + ifconst bankswitch + if bankswitch == 8 + ORG $2F94-bscode_length + RORG $FF94-bscode_length + endif + if bankswitch == 16 + ORG $4F94-bscode_length + RORG $FF94-bscode_length + endif + if bankswitch == 32 + ORG $8F94-bscode_length + RORG $FF94-bscode_length + endif + else + ORG $FF9C + endif + endif + + +scoretable + .byte %00111100 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %00111100 + + .byte %01111110 + .byte %00011000 + .byte %00011000 + .byte %00011000 + .byte %00011000 + .byte %00111000 + .byte %00011000 + .byte %00001000 + + .byte %01111110 + .byte %01100000 + .byte %01100000 + .byte %00111100 + .byte %00000110 + .byte %00000110 + .byte %01000110 + .byte %00111100 + + .byte %00111100 + .byte %01000110 + .byte %00000110 + .byte %00000110 + .byte %00011100 + .byte %00000110 + .byte %01000110 + .byte %00111100 + + .byte %00001100 + .byte %00001100 + .byte %01111110 + .byte %01001100 + .byte %01001100 + .byte %00101100 + .byte %00011100 + .byte %00001100 + + .byte %00111100 + .byte %01000110 + .byte %00000110 + .byte %00000110 + .byte %00111100 + .byte %01100000 + .byte %01100000 + .byte %01111110 + + .byte %00111100 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %01111100 + .byte %01100000 + .byte %01100010 + .byte %00111100 + + .byte %00110000 + .byte %00110000 + .byte %00110000 + .byte %00011000 + .byte %00001100 + .byte %00000110 + .byte %01000010 + .byte %00111110 + + .byte %00111100 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %00111100 + .byte %01100110 + .byte %01100110 + .byte %00111100 + + .byte %00111100 + .byte %01000110 + .byte %00000110 + .byte %00111110 + .byte %01100110 + .byte %01100110 + .byte %01100110 + .byte %00111100 + + + ifconst ROM2k + ORG $F7FC + else + ifconst bankswitch + if bankswitch == 8 + ORG $2FF4-bscode_length + RORG $FFF4-bscode_length + endif + if bankswitch == 16 + ORG $4FF4-bscode_length + RORG $FFF4-bscode_length + endif + if bankswitch == 32 + ORG $8FF4-bscode_length + RORG $FFF4-bscode_length + endif + else + ORG $FFFC + endif + endif +pfread + cmp #16 + bcc lefthalf + eor #31 ; 16-31 converted to 15-0 +lefthalf + tax + lda bytemask,x + cpx #8 + bcc bytedone + and (PF2pointer),y + .byte $0C +bytedone + and (PF1pointer),y + RETURN +bytemask + .byte $80,$40,$20,$10,8,4,2,1 + .byte 1,2,4,8,$10,$20,$40,$80 +; Fixed point math routines - created by AtariAge member djmips +; some changes by Fred Quimby + +;assignment from 8.8 to 4.4 + +Assign88to44: + + ; A(4.4) = A,X(8.8) + + stx temp1 + rol temp1 + asl + rol temp1 + asl + rol temp1 + asl + rol temp1 + asl + rts + +;assignment from 4.4 to 8.8 +; + +Assign44to88: + + ; A,X(8.8) = A(4.4) + + sta temp1 + lda #0 + asl temp1 + sbc #0 ; + eor #$ff ; do sign extend + rol + asl temp1 + rol + asl temp1 + rol + asl temp1 + rol + ldx temp1 + rts + + ifconst bankswitch +Assign88to44bs: + + ; A(4.4) = A,X(8.8) + + stx temp1 + rol temp1 + asl + rol temp1 + asl + rol temp1 + asl + rol temp1 + asl + RETURN + +;assignment from 4.4 to 8.8 +; + +Assign44to88bs: + + ; A,X(8.8) = A(4.4) + + sta temp1 + lda #0 + asl temp1 + sbc #0 ; + eor #$ff ; do sign extend + rol + asl temp1 + rol + asl temp1 + rol + asl temp1 + rol + ldx temp1 + RETURN + endif + +; +;Addition/subtraction asm procedures: + +;add/sub 8.8 to/from 4.4 + +Add88to44: + + ; A(4.4) = A,X(8.8) + Y(4.4) + + jsr Assign88to44 + sty temp1 + clc + adc temp1 + rts + +Sub88from44: + + ; A(4.4) = A,X(8.8) - Y(4.4) + + jsr Assign88to44 + sty temp1 + sec + sbc temp1 + rts + + +Add44to88: + + ; A,X(8.8) = A,X(8.8) + Y(4.4) + + sta temp2 + stx temp3 + tya + jsr Assign44to88 + clc + sta temp1 + txa + adc temp3 + tax + lda temp1 + adc temp2 + rts + + +Sub44from88: + + ; A,X(8.8) = A,X(8.8) - Y(4.4) + + sta temp2 + stx temp3 + tya + jsr Assign44to88 + sec + sta temp1 + lda temp3 + stx temp3 + sbc temp3 + tax + lda temp2 + sbc temp1 + rts + +missile0x = $80 +missile1x = $81 +ballx = $82 + +objecty = $83 +missile0y = $83 +missile1y = $84 +bally = $85 + +; multisprite stuff below - 5 bytes each starting with spritex + +SpriteIndex = $86 + +player0x = $87 +NewSpriteX = $88 ; X position +player1x = $88 +player2x = $89 +player3x = $8A +player4x = $8B +player5x = $8C + +player0y = $8D +NewSpriteY = $8E ; Y position +player1y = $8E +player2y = $8F +player3y = $90 +player4y = $91 +player5y = $92 + +NewNUSIZ = $93 +_NUSIZ1 = $93 +NUSIZ2 = $94 +NUSIZ3 = $95 +NUSIZ4 = $96 +NUSIZ5 = $97 + +NewCOLUP1 = $98 +_COLUP1 = $98 +COLUP2 = $99 +COLUP3 = $9A +COLUP4 = $9B +COLUP5 = $9C + +SpriteGfxIndex = $9D + +player0pointer = $A2 +player0pointerlo = $A2 +player0pointerhi = $A3 + +;P0Top = $A4 +P0Top = temp5 +P0Bottom = $A4 +P1Bottom = $A5 + +player1pointerlo = $A6 +player2pointerlo = $A7 +player3pointerlo = $A8 +player4pointerlo = $A9 +player5pointerlo = $AA + +player1pointerhi = $AB +player2pointerhi = $AC +player3pointerhi = $AD +player4pointerhi = $AE +player5pointerhi = $AF + +player0height = $B0 +spriteheight = $B1 ; heights of multiplexed player sprite +player1height = $B1 +player2height = $B2 +player3height = $B3 +player4height = $B4 +player5height = $B5 + +PF1temp1 = $B6 +PF1temp2 = $B7 +PF2temp1 = $B8 +PF2temp2 = $B9 + +pfpixelheight = $BA + +; playfield is now a pointer to graphics +playfield = $BB +PF1pointer = $BB + +PF2pointer = $BD + +statusbarlength = $BF +aux3 = $BF + +lifecolor = $C0 +pfscorecolor = $C0 +aux4 = $C0 + +P1display = temp2 ; temp2 and temp3 +lifepointer = $c1 +lives = $c2 +pfscore1 = $c1 +pfscore2 = $c2 +aux5 = $c1 +aux6 = $c2 + +playfieldpos = $C3 + +RepoLine = temp4 + +scorepointers = $C4 + +temp1 = $CA ;used by kernel. can be used in program too, but +temp2 = $CB ;are obliterated when drawscreen is called. +temp3 = $CC +temp4 = $CD +temp5 = $CE +temp6 = $CF +temp7 = $D0 ; This is used to aid in bankswitching + +score = $D1 +pfheight = $D4 +scorecolor = $D5 ;need to find other places for these, possibly... +rand = $D6 + + + +A = $d7 +a = $d7 +B = $d8 +b = $d8 +C = $d9 +c = $d9 +D = $da +d = $da +E = $db +e = $db +F = $dc +f = $dc +G = $dd +g = $dd +H = $de +h = $de +I = $df +i = $df +J = $e0 +j = $e0 +K = $e1 +k = $e1 +L = $e2 +l = $e2 +M = $e3 +m = $e3 +N = $e4 +n = $e4 +O = $e5 +o = $e5 +P = $e6 +p = $e6 +Q = $e7 +q = $e7 +R = $e8 +r = $e8 +S = $e9 +s = $e9 +T = $ea +t = $ea +U = $eb +u = $eb +V = $ec +v = $ec +W = $ed +w = $ed +X = $ee +x = $ee +Y = $ef +y = $ef +Z = $f0 +z = $f0 + +spritesort = $f1 ; helps with flickersort +spritesort2 = $f2 ; helps with flickersort +spritesort3 = $f3 +spritesort4 = $f4 +spritesort5 = $f5 + +stack1 = $f6 +stack2 = $f7 +stack3 = $f8 +stack4 = $f9 +; the stack bytes above may be used in the kernel +; stack = F6-F7, F8-F9, FA-FB, FC-FD, FE-FF + + MAC RETURN ; auto-return from either a regular or bankswitched module + ifnconst bankswitch + rts + else + jmp BS_return + endif + ENDM + + +; +; Inclues go below - order is crucial, since this is also the order in which +; they will appear in the generated assembly file +; + + +; header file + multispriteheader.asm + + +multisprite_kernel.asm + +; standard startup routine. +startup.asm + + +; below are collections of subroutines and functions +; if you have any more to add, put them immediately below this line. + +std_routines.asm + +; The overscan routine goes below. it sets up sprites for the std_kernel. +; if you have any routines that will not run until the overscan period, +; put them immediately below this line. + + +; below is the generated batari Basic file + +bB.asm + + +; score graphics. +score_graphics.asm + +; below is the footer, which contains the score digits and startup vectors. +; If you want to create your own custom score digits, you may hack the file below, +; but first you should rename it to something else. + +2600basicfooter.asm diff --git a/src/worker/fs/fs2600basic.js b/src/worker/fs/fs2600basic.js new file mode 100644 index 00000000..bf5c96ba --- /dev/null +++ b/src/worker/fs/fs2600basic.js @@ -0,0 +1,200 @@ + +var Module = typeof Module !== 'undefined' ? Module : {}; + +if (!Module.expectedDataFileDownloads) { + Module.expectedDataFileDownloads = 0; + Module.finishedDataFileDownloads = 0; +} +Module.expectedDataFileDownloads++; +(function() { + var loadPackage = function(metadata) { + + var PACKAGE_PATH; + if (typeof window === 'object') { + PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/'); + } else if (typeof location !== 'undefined') { + // worker + PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/'); + } else { + throw 'using preloaded data can only be done on a web page or in a web worker'; + } + var PACKAGE_NAME = 'fs2600basic.data'; + var REMOTE_PACKAGE_BASE = 'fs2600basic.data'; + if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) { + Module['locateFile'] = Module['locateFilePackage']; + err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)'); + } + var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE; + + var REMOTE_PACKAGE_SIZE = metadata.remote_package_size; + var PACKAGE_UUID = metadata.package_uuid; + + function fetchRemotePackage(packageName, packageSize, callback, errback) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', packageName, true); + xhr.responseType = 'arraybuffer'; + xhr.onprogress = function(event) { + var url = packageName; + var size = packageSize; + if (event.total) size = event.total; + if (event.loaded) { + if (!xhr.addedTotal) { + xhr.addedTotal = true; + if (!Module.dataFileDownloads) Module.dataFileDownloads = {}; + Module.dataFileDownloads[url] = { + loaded: event.loaded, + total: size + }; + } else { + Module.dataFileDownloads[url].loaded = event.loaded; + } + var total = 0; + var loaded = 0; + var num = 0; + for (var download in Module.dataFileDownloads) { + var data = Module.dataFileDownloads[download]; + total += data.total; + loaded += data.loaded; + num++; + } + total = Math.ceil(total * Module.expectedDataFileDownloads/num); + if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')'); + } else if (!Module.dataFileDownloads) { + if (Module['setStatus']) Module['setStatus']('Downloading data...'); + } + }; + xhr.onerror = function(event) { + throw new Error("NetworkError for: " + packageName); + } + xhr.onload = function(event) { + if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + var packageData = xhr.response; + callback(packageData); + } else { + throw new Error(xhr.statusText + " : " + xhr.responseURL); + } + }; + xhr.send(null); + }; + + function handleError(error) { + console.error('package error:', error); + }; + + var fetchedCallback = null; + var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null; + + if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) { + if (fetchedCallback) { + fetchedCallback(data); + fetchedCallback = null; + } else { + fetched = data; + } + }, handleError); + + function runWithFS() { + + function assert(check, msg) { + if (!check) throw msg + new Error().stack; + } +Module['FS_createPath']('/', 'includes', true, true); + + function DataRequest(start, end, audio) { + this.start = start; + this.end = end; + this.audio = audio; + } + DataRequest.prototype = { + requests: {}, + open: function(mode, name) { + this.name = name; + this.requests[name] = this; + Module['addRunDependency']('fp ' + this.name); + }, + send: function() {}, + onload: function() { + var byteArray = this.byteArray.subarray(this.start, this.end); + this.finish(byteArray); + }, + finish: function(byteArray) { + var that = this; + + Module['FS_createDataFile'](this.name, null, byteArray, true, true, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change + Module['removeRunDependency']('fp ' + that.name); + + this.requests[this.name] = null; + } + }; + + var files = metadata.files; + for (var i = 0; i < files.length; ++i) { + new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename); + } + + + function processPackageData(arrayBuffer) { + Module.finishedDataFileDownloads++; + assert(arrayBuffer, 'Loading data file failed.'); + assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData'); + var byteArray = new Uint8Array(arrayBuffer); + var curr; + + // copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though + // (we may be allocating before malloc is ready, during startup). + var ptr = Module['getMemory'](byteArray.length); + Module['HEAPU8'].set(byteArray, ptr); + DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length); + + var files = metadata.files; + for (var i = 0; i < files.length; ++i) { + DataRequest.prototype.requests[files[i].filename].onload(); + } + Module['removeRunDependency']('datafile_fs2600basic.data'); + + }; + Module['addRunDependency']('datafile_fs2600basic.data'); + + if (!Module.preloadResults) Module.preloadResults = {}; + + Module.preloadResults[PACKAGE_NAME] = {fromCache: false}; + if (fetched) { + processPackageData(fetched); + fetched = null; + } else { + fetchedCallback = processPackageData; + } + + } + if (Module['calledRun']) { + runWithFS(); + } else { + if (!Module['preRun']) Module['preRun'] = []; + Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it + } + + Module['removeRunDependency']('fs2600basic.js.metadata'); + } + + function runMetaWithFS() { + Module['addRunDependency']('fs2600basic.js.metadata'); + var REMOTE_METADATA_NAME = Module['locateFile'] ? Module['locateFile']('fs2600basic.js.metadata', '') : 'fs2600basic.js.metadata'; + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4 && xhr.status === 200) { + loadPackage(JSON.parse(xhr.responseText)); + } + } + xhr.open('GET', REMOTE_METADATA_NAME, true); + xhr.overrideMimeType('application/json'); + xhr.send(null); + } + + if (Module['calledRun']) { + runMetaWithFS(); + } else { + if (!Module['preRun']) Module['preRun'] = []; + Module["preRun"].push(runMetaWithFS); + } + +})(); diff --git a/src/worker/fs/fs2600basic.js.metadata b/src/worker/fs/fs2600basic.js.metadata new file mode 100644 index 00000000..75b48e54 --- /dev/null +++ b/src/worker/fs/fs2600basic.js.metadata @@ -0,0 +1 @@ +{"files":[{"start":0,"audio":0,"end":311,"filename":"/includes/2600basicfooter.asm"},{"start":311,"audio":0,"end":5628,"filename":"/includes/macro.h"},{"start":5628,"audio":0,"end":5907,"filename":"/includes/bankswitch.inc"},{"start":5907,"audio":0,"end":7100,"filename":"/includes/6lives.asm"},{"start":7100,"audio":0,"end":16497,"filename":"/includes/vcs.h"},{"start":16497,"audio":0,"end":16776,"filename":"/includes/superchip.inc"},{"start":16776,"audio":0,"end":17446,"filename":"/includes/div_mul16.asm"},{"start":17446,"audio":0,"end":20386,"filename":"/includes/std_overscan.asm"},{"start":20386,"audio":0,"end":31722,"filename":"/includes/std_kernel.asm"},{"start":31722,"audio":0,"end":34956,"filename":"/includes/2600basic.h"},{"start":34956,"audio":0,"end":35731,"filename":"/includes/banksw.asm"},{"start":35731,"audio":0,"end":36075,"filename":"/includes/multispriteheader.asm"},{"start":36075,"audio":0,"end":36543,"filename":"/includes/div_mul.asm"},{"start":36543,"audio":0,"end":38512,"filename":"/includes/6lives_statusbar.asm"},{"start":38512,"audio":0,"end":55929,"filename":"/includes/multisprite_kernel.asm"},{"start":55929,"audio":0,"end":56940,"filename":"/includes/default.inc"},{"start":56940,"audio":0,"end":57313,"filename":"/includes/superchipheader.asm"},{"start":57313,"audio":0,"end":60959,"filename":"/includes/pf_scrolling.asm"},{"start":60959,"audio":0,"end":61376,"filename":"/includes/std_routines.asm"},{"start":61376,"audio":0,"end":61718,"filename":"/includes/2600basicheader.asm"},{"start":61718,"audio":0,"end":62836,"filename":"/includes/multisprite_bankswitch.inc"},{"start":62836,"audio":0,"end":63521,"filename":"/includes/startup.asm"},{"start":63521,"audio":0,"end":66385,"filename":"/includes/pf_drawing.asm"},{"start":66385,"audio":0,"end":69155,"filename":"/includes/score_graphics.asm"},{"start":69155,"audio":0,"end":69411,"filename":"/includes/pfread_msk.asm"},{"start":69411,"audio":0,"end":71348,"filename":"/includes/fixed_point_math.asm"},{"start":71348,"audio":0,"end":74117,"filename":"/includes/multisprite.h"},{"start":74117,"audio":0,"end":75008,"filename":"/includes/multisprite.inc"}],"remote_package_size":75008,"package_uuid":"b68e90d4-dae1-4423-bf56-6dc26335d90c"} \ No newline at end of file diff --git a/src/worker/workermain.ts b/src/worker/workermain.ts index 4ffa3492..7755233b 100644 --- a/src/worker/workermain.ts +++ b/src/worker/workermain.ts @@ -649,7 +649,10 @@ function assembleDASM(step:BuildStep) { var binpath = step.prefix+'.bin'; var lstpath = step.prefix+'.lst'; var sympath = step.prefix+'.sym'; - execMain(step, Module, [step.path, "-l"+lstpath, "-o"+binpath, "-s"+sympath ]); + execMain(step, Module, [step.path, + "-l"+lstpath, + "-o"+binpath, + "-s"+sympath ]); var alst = FS.readFile(lstpath, {'encoding':'utf8'}); // parse main listing, get errors var listing = parseDASMListing(alst, unresolved, step.path); @@ -905,7 +908,8 @@ function compileCC65(step:BuildStep) { return { nexttool:"ca65", path:destpath, - args:[destpath] + args:[destpath], + files:[destpath], }; } @@ -1139,7 +1143,8 @@ function compileSDCC(step:BuildStep) { return { nexttool:"sdasz80", path:outpath, - args:[outpath] + args:[outpath], + files:[outpath], }; } @@ -1482,6 +1487,72 @@ error1.asm(11): warning: 'foobar' treated as label (instruction typo?) } } +function compileBatariBasic(step:BuildStep) { + load("bb2600basic"); + var params = step.params; + // stdout + var asmout = ""; + function addasmout_fn(s) { + asmout += s; + asmout += "\n"; + } + // stderr + var re_err1 = /[(](\d+)[)]:?\s*(.+)/; + var errors = []; + var errline = 0; + function match_fn(s) { + console.log(s); + var matches = re_err1.exec(s); + if (matches) { + errline = parseInt(matches[1]); + errors.push({ + line:errline, + msg:matches[2] + }); + } + } + gatherFiles(step, {mainFilePath:"main.bas"}); + var destpath = step.prefix + '.asm'; + if (staleFiles(step, [destpath])) { + var BB = emglobal.bb2600basic({ + noInitialRun:true, + //logReadFiles:true, + print:addasmout_fn, + printErr:match_fn, + noFSInit:true, + }); + var FS = BB['FS']; + populateFiles(step, FS); + // pipe file to stdin + var code = workfs[step.path].data as string; // TODO + setupStdin(FS, code); + setupFS(FS, '2600basic'); + execMain(step, BB, ["-i", "/share", step.path]); + if (errors.length) + return {errors:errors}; + // build final assembly output from include file list + var includesout = FS.readFile("includes.bB", {encoding:'utf8'}); + var redefsout = FS.readFile("2600basic_variable_redefs.h", {encoding:'utf8'}); + var includes = includesout.trim().split("\n"); + var combinedasm = ""; + for (var incfile of includes) { + var inctext = (incfile=="bB.asm") ? asmout : FS.readFile("/share/includes/"+incfile, {encoding:'utf8'}); + console.log(incfile, inctext.length); + combinedasm += "\n\n;;;" + incfile + "\n\n"; + combinedasm += inctext; + } + // TODO: ; bB.asm file is split here + putWorkFile(destpath, combinedasm); + putWorkFile("2600basic.h", FS.readFile("/share/includes/2600basic.h")); + putWorkFile("2600basic_variable_redefs.h", redefsout); + } + return { + nexttool:"dasm", + path:destpath, + args:[destpath], + files:[destpath, "2600basic.h", "2600basic_variable_redefs.h"] + }; +} //////////////////////////// @@ -1505,6 +1576,7 @@ var TOOLS = { //'caspr': compileCASPR, 'jsasm': compileJSASMStep, 'zmac': assembleZMAC, + 'bataribasic': compileBatariBasic, } var TOOL_PRELOADFS = { @@ -1519,6 +1591,7 @@ var TOOL_PRELOADFS = { 'sdasz80': 'sdcc', 'sdcc': 'sdcc', 'sccz80': 'sccz80', + 'bataribasic': '2600basic', } function applyDefaultErrorPath(errors:WorkerError[], path:string) { @@ -1582,7 +1655,7 @@ function executeBuildSteps() { var asmstep = { tool:step.result.nexttool, platform:platform, - files:[step.result.path], + files:step.result.files, path:step.result.path, args:step.result.args };