diff --git a/asset-manifest.json b/asset-manifest.json index 91ee451..e522e39 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -3,8 +3,8 @@ "static/js/0.59ece602.chunk.js": "/diabloweb/static/js/0.59ece602.chunk.js", "static/js/0.59ece602.chunk.js.map": "/diabloweb/static/js/0.59ece602.chunk.js.map", "main.css": "/diabloweb/static/css/main.23365a12.chunk.css", - "main.js": "/diabloweb/static/js/main.7cab8a01.chunk.js", - "main.js.map": "/diabloweb/static/js/main.7cab8a01.chunk.js.map", + "main.js": "/diabloweb/static/js/main.fe9d2913.chunk.js", + "main.js.map": "/diabloweb/static/js/main.fe9d2913.chunk.js.map", "runtime~main.js": "/diabloweb/static/js/runtime~main.bf17ce54.js", "runtime~main.js.map": "/diabloweb/static/js/runtime~main.bf17ce54.js.map", "runtime~storage.js": "/diabloweb/static/js/runtime~storage.83a78cef.js", @@ -13,14 +13,14 @@ "storage.js.map": "/diabloweb/static/js/storage.96fdea8b.chunk.js.map", "static/js/5.356be092.chunk.js": "/diabloweb/static/js/5.356be092.chunk.js", "static/js/5.356be092.chunk.js.map": "/diabloweb/static/js/5.356be092.chunk.js.map", - "c35eead49d6ec2ebde70.worker.js": "/diabloweb/c35eead49d6ec2ebde70.worker.js", - "c35eead49d6ec2ebde70.worker.js.map": "/diabloweb/c35eead49d6ec2ebde70.worker.js.map", + "f2bd0f1b568ba5e5d268.worker.js": "/diabloweb/f2bd0f1b568ba5e5d268.worker.js", + "f2bd0f1b568ba5e5d268.worker.js.map": "/diabloweb/f2bd0f1b568ba5e5d268.worker.js.map", "index.html": "/diabloweb/index.html", - "precache-manifest.2de6133ecdcacdfff2221e0c76abb588.js": "/diabloweb/precache-manifest.2de6133ecdcacdfff2221e0c76abb588.js", + "precache-manifest.cf31301b93548f67203153f4878fd624.js": "/diabloweb/precache-manifest.cf31301b93548f67203153f4878fd624.js", "service-worker.js": "/diabloweb/service-worker.js", "static/css/main.23365a12.chunk.css.map": "/diabloweb/static/css/main.23365a12.chunk.css.map", - "static/media/Diablo.wasm": "/diabloweb/static/media/Diablo.4a6435cb.wasm", - "static/media/DiabloSpawn.wasm": "/diabloweb/static/media/DiabloSpawn.ef6314a9.wasm", + "static/media/Diablo.wasm": "/diabloweb/static/media/Diablo.3991174f.wasm", + "static/media/DiabloSpawn.wasm": "/diabloweb/static/media/DiabloSpawn.32acbb39.wasm", "static/media/App.scss": "/diabloweb/static/media/shift.b40e4a63.svg", "storage.html": "/diabloweb/storage.html" } diff --git a/c35eead49d6ec2ebde70.worker.js b/f2bd0f1b568ba5e5d268.worker.js similarity index 99% rename from c35eead49d6ec2ebde70.worker.js rename to f2bd0f1b568ba5e5d268.worker.js index a09d19b..f1232cd 100644 --- a/c35eead49d6ec2ebde70.worker.js +++ b/f2bd0f1b568ba5e5d268.worker.js @@ -1,2 +1,2 @@ -!function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/diabloweb/",t(t.s=35)}([function(e,n,t){"use strict";var r=t(5),i=t(20),a=Object.prototype.toString;function o(e){return"[object Array]"===a.call(e)}function u(e){return null!==e&&"object"===typeof e}function s(e){return"[object Function]"===a.call(e)}function c(e,n){if(null!==e&&"undefined"!==typeof e)if("object"!==typeof e&&(e=[e]),o(e))for(var t=0,r=e.length;t1)for(var t=1;t=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!==typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!==typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),u=o,s=0;s=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!==typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!==typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var u=e.charCodeAt(o);if(47!==u)-1===r&&(i=!1,r=o+1),46===u?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(2))},function(e,n,t){"use strict";e.exports=function(e,n){return function(){for(var t=new Array(arguments.length),r=0;r=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],function(e){u.headers[e]={}}),r.forEach(["post","put","patch"],function(e){u.headers[e]=r.merge(a)}),e.exports=u}).call(this,t(2))},function(e,n,t){"use strict";var r=t(0),i=t(26),a=t(6),o=t(28),u=t(29),s=t(10);e.exports=function(e){return new Promise(function(n,c){var l=e.data,f=e.headers;r.isFormData(l)&&delete f["Content-Type"];var _=new XMLHttpRequest;if(e.auth){var p=e.auth.username||"",d=e.auth.password||"";f.Authorization="Basic "+btoa(p+":"+d)}if(_.open(e.method.toUpperCase(),a(e.url,e.params,e.paramsSerializer),!0),_.timeout=e.timeout,_.onreadystatechange=function(){if(_&&4===_.readyState&&(0!==_.status||_.responseURL&&0===_.responseURL.indexOf("file:"))){var t="getAllResponseHeaders"in _?o(_.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?_.response:_.responseText,status:_.status,statusText:_.statusText,headers:t,config:e,request:_};i(n,c,r),_=null}},_.onabort=function(){_&&(c(s("Request aborted",e,"ECONNABORTED",_)),_=null)},_.onerror=function(){c(s("Network Error",e,null,_)),_=null},_.ontimeout=function(){c(s("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",_)),_=null},r.isStandardBrowserEnv()){var m=t(30),y=(e.withCredentials||u(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(f[e.xsrfHeaderName]=y)}if("setRequestHeader"in _&&r.forEach(f,function(e,n){"undefined"===typeof l&&"content-type"===n.toLowerCase()?delete f[n]:_.setRequestHeader(n,e)}),e.withCredentials&&(_.withCredentials=!0),e.responseType)try{_.responseType=e.responseType}catch(h){if("json"!==e.responseType)throw h}"function"===typeof e.onDownloadProgress&&_.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&_.upload&&_.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){_&&(_.abort(),c(e),_=null)}),void 0===l&&(l=null),_.send(l)})}},function(e,n,t){"use strict";var r=t(27);e.exports=function(e,n,t,i,a){var o=new Error(e);return r(o,n,t,i,a)}},function(e,n,t){"use strict";var r=t(0);e.exports=function(e,n){n=n||{};var t={};return r.forEach(["url","method","params","data"],function(e){"undefined"!==typeof n[e]&&(t[e]=n[e])}),r.forEach(["headers","auth","proxy"],function(i){r.isObject(n[i])?t[i]=r.deepMerge(e[i],n[i]):"undefined"!==typeof n[i]?t[i]=n[i]:r.isObject(e[i])?t[i]=r.deepMerge(e[i]):"undefined"!==typeof e[i]&&(t[i]=e[i])}),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],function(r){"undefined"!==typeof n[r]?t[r]=n[r]:"undefined"!==typeof e[r]&&(t[r]=e[r])}),t}},function(e,n,t){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,n,t){e.exports=t.p+"static/media/Diablo.4a6435cb.wasm"},function(e,n,t){(function(n,r){var i=function(){var e="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;return function(i){var a,o="undefined"!==typeof(i=i||{})?i:{},u={};for(a in o)o.hasOwnProperty(a)&&(u[a]=o[a]);o.arguments=[],o.thisProgram="./this.program",o.quit=function(e,n){throw n},o.preRun=[],o.postRun=[];var s,c,l=!1,f=!1;l="object"===typeof window,f="function"===typeof importScripts,s="object"===typeof n&&!l&&!f,c=!l&&!s&&!f;var _,p,d="";function m(e){return o.locateFile?o.locateFile(e,d):d+e}s?(d=r+"/",o.read=function(e,n){var r;return _||(_=t(3)),p||(p=t(4)),e=p.normalize(e),r=_.readFileSync(e),n?r:r.toString()},o.readBinary=function(e){var n=o.read(e,!0);return n.buffer||(n=new Uint8Array(n)),A(n.buffer),n},n.argv.length>1&&(o.thisProgram=n.argv[1].replace(/\\/g,"/")),o.arguments=n.argv.slice(2),n.on("uncaughtException",function(e){if(!(e instanceof Re))throw e}),n.on("unhandledRejection",function(e,t){n.exit(1)}),o.quit=function(e){n.exit(e)},o.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(o.read=function(e){return read(e)}),o.readBinary=function(e){var n;return"function"===typeof readbuffer?new Uint8Array(readbuffer(e)):(A("object"===typeof(n=read(e,"binary"))),n)},"undefined"!=typeof scriptArgs?o.arguments=scriptArgs:"undefined"!=typeof arguments&&(o.arguments=arguments),"function"===typeof quit&&(o.quit=function(e){quit(e)})):(l||f)&&(l?document.currentScript&&(d=document.currentScript.src):d=self.location.href,e&&(d=e),d=0!==d.indexOf("blob:")?d.split("/").slice(0,-1).join("/")+"/":"",o.read=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.send(null),n.responseText},f&&(o.readBinary=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),o.readAsync=function(e,n,t){var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?n(r.response):t()},r.onerror=t,r.send(null)},o.setWindowTitle=function(e){document.title=e});var y=o.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),h=o.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||y);for(a in u)u.hasOwnProperty(a)&&(o[a]=u[a]);u=void 0;var v=16;function g(e){var n=N;return N=N+e+15&-16,n}function b(e,n){return n||(n=v),e=Math.ceil(e/n)*n}var E={"f64-rem":function(e,n){return e%n},debugger:function(){}};new Array(0);var w=0;function A(e,n){e||Ne("Assertion failed: "+n)}function T(e,n){if(0===n||!e)return"";for(var t,r=0,i=0;r|=t=j[e+i>>0],(0!=t||n)&&(i++,!n||i!=n););n||(n=i);var a="";if(r<128){for(var o;n>0;)o=String.fromCharCode.apply(String,j.subarray(e,e+Math.min(n,1024))),a=a?a+o:o,e+=1024,n-=1024;return a}return function(e){return S(j,e)}(e)}var C="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function S(e,n){for(var t=n;e[t];)++t;if(t-n>16&&e.subarray&&C)return C.decode(e.subarray(n,t));for(var r,i,a,o,u,s="";;){if(!(r=e[n++]))return s;if(128&r)if(i=63&e[n++],192!=(224&r))if(a=63&e[n++],224==(240&r)?r=(15&r)<<12|i<<6|a:(o=63&e[n++],240==(248&r)?r=(7&r)<<18|i<<12|a<<6|o:(u=63&e[n++],r=248==(252&r)?(3&r)<<24|i<<18|a<<12|o<<6|u:(1&r)<<30|i<<24|a<<18|o<<12|u<<6|63&e[n++])),r<65536)s+=String.fromCharCode(r);else{var c=r-65536;s+=String.fromCharCode(55296|c>>10,56320|1023&c)}else s+=String.fromCharCode((31&r)<<6|i);else s+=String.fromCharCode(r)}}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");var O,x,j,R,D,N,M,L,k,I,P,B=65536,U=16777216,F=16777216;function W(e,n){return e%n>0&&(e+=n-e%n),e}function H(e){o.buffer=O=e}function G(){o.HEAP8=x=new Int8Array(O),o.HEAP16=new Int16Array(O),o.HEAP32=R=new Int32Array(O),o.HEAPU8=j=new Uint8Array(O),o.HEAPU16=new Uint16Array(O),o.HEAPU32=new Uint32Array(O),o.HEAPF32=D=new Float32Array(O),o.HEAPF64=new Float64Array(O)}function q(){var e=o.usingWasm?B:U,n=2147483648-e;if(R[P>>2]>n)return!1;var t=K;for(K=Math.max(K,F);K>2];)K=K<=536870912?W(2*K,e):Math.min(W((3*K+2147483648)/4,e),n);var r=o.reallocBuffer(K);return r&&r.byteLength==K?(H(r),G(),!0):(K=t,!1)}N=L=P=0,o.reallocBuffer||(o.reallocBuffer=function(e){var n;try{if(ArrayBuffer.transfer)n=ArrayBuffer.transfer(O,e);else{var t=x;n=new ArrayBuffer(e),new Int8Array(n).set(t)}}catch(r){return!1}return!!Te(n)&&n});try{Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get)(new ArrayBuffer(4))}catch(Me){(function(e){return e.byteLength})}var z=o.TOTAL_STACK||5242880,K=o.TOTAL_MEMORY||134217728;function X(e){for(;e.length>0;){var n=e.shift();if("function"!=typeof n){var t=n.func;"number"===typeof t?void 0===n.arg?o.dynCall_v(t):o.dynCall_vi(t,n.arg):t(void 0===n.arg?null:n.arg)}else n()}}K0),n.refcount--,0!==n.refcount||n.rethrown||(n.destructor&&o.dynCall_vi(n.destructor,e),delete le.infos[e],fe(e))}},clearRef:function(e){e&&(le.infos[e].refcount=0)}};function fe(e){try{return Ce(e)}catch(Me){}}function _e(){var e=le.last;if(!e)return 0|(Oe(0),0);var n=le.infos[e],t=n.type;if(!t)return 0|(Oe(0),e);var r=Array.prototype.slice.call(arguments);o.___cxa_is_pointer_type(t);_e.buffer||(_e.buffer=Se(4)),R[_e.buffer>>2]=e,e=_e.buffer;for(var i=0;i>2],n.adjusted=e,0|(Oe(r[i]),e);return e=R[e>>2],0|(Oe(t),e)}var pe={varargs:0,get:function(e){return pe.varargs+=4,R[pe.varargs-4>>2]},getStr:function(){return T(pe.get())},get64:function(){var e=pe.get(),n=pe.get();return A(e>=0?0===n:-1===n),e},getZero:function(){A(0===pe.get())}};function de(e,n){pe.varargs=n;try{var t=pe.get(),r=pe.get(),i=pe.get(),a=0;de.buffers||(de.buffers=[null,[],[]],de.printChar=function(e,n){var t=de.buffers[e];A(t),0===n||10===n?((1===e?y:h)(S(t,0)),t.length=0):t.push(n)});for(var o=0;o>2],s=R[r+(8*o+4)>>2],c=0;c>2]=I;o.wasmTableSize=1114,o.wasmMaxTableSize=1114,o.asmGlobalArg={},o.asmLibraryArg={abort:Ne,assert:A,enlargeMemory:q,getTotalMemory:function(){return K},abortOnCannotGrowMemory:function(){Ne("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+K+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_i:function(e){var n=je();try{return o.dynCall_i(e)}catch(Me){if(xe(n),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_ii:function(e,n){var t=je();try{return o.dynCall_ii(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iii:function(e,n,t){var r=je();try{return o.dynCall_iii(e,n,t)}catch(Me){if(xe(r),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiii:function(e,n,t,r){var i=je();try{return o.dynCall_iiii(e,n,t,r)}catch(Me){if(xe(i),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiiii:function(e,n,t,r,i){var a=je();try{return o.dynCall_iiiii(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiiiii:function(e,n,t,r,i,a){var u=je();try{return o.dynCall_iiiiii(e,n,t,r,i,a)}catch(Me){if(xe(u),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_ji:function(e,n){var t=je();try{return o.dynCall_ji(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_v:function(e){var n=je();try{o.dynCall_v(e)}catch(Me){if(xe(n),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_vi:function(e,n){var t=je();try{o.dynCall_vi(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_vii:function(e,n,t){var r=je();try{o.dynCall_vii(e,n,t)}catch(Me){if(xe(r),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viii:function(e,n,t,r){var i=je();try{o.dynCall_viii(e,n,t,r)}catch(Me){if(xe(i),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiii:function(e,n,t,r,i){var a=je();try{o.dynCall_viiii(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiii:function(e,n,t,r,i,a){var u=je();try{o.dynCall_viiiii(e,n,t,r,i,a)}catch(Me){if(xe(u),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiii:function(e,n,t,r,i,a,u){var s=je();try{o.dynCall_viiiiii(e,n,t,r,i,a,u)}catch(Me){if(xe(s),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiii:function(e,n,t,r,i,a,u,s){var c=je();try{o.dynCall_viiiiiii(e,n,t,r,i,a,u,s)}catch(Me){if(xe(c),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiiiii:function(e,n,t,r,i,a,u,s,c,l){var f=je();try{o.dynCall_viiiiiiiii(e,n,t,r,i,a,u,s,c,l)}catch(Me){if(xe(f),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiiiiii:function(e,n,t,r,i,a,u,s,c,l,f){var _=je();try{o.dynCall_viiiiiiiiii(e,n,t,r,i,a,u,s,c,l,f)}catch(Me){if(xe(_),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viij:function(e,n,t,r,i){var a=je();try{o.dynCall_viij(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viji:function(e,n,t,r,i){var a=je();try{o.dynCall_viji(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},__ZSt18uncaught_exceptionv:ce,___assert_fail:function(e,n,t,r){Ne("Assertion failed: "+T(e)+", at: "+[n?T(n):"unknown filename",t,r?T(r):"unknown function"])},___cxa_allocate_exception:function(e){return Se(e)},___cxa_begin_catch:function(e){var n=le.infos[e];return n&&!n.caught&&(n.caught=!0,ce.uncaught_exception--),n&&(n.rethrown=!1),le.caught.push(e),le.addRef(le.deAdjust(e)),e},___cxa_end_catch:function(){o.setThrew(0);var e=le.caught.pop();e&&(le.decRef(le.deAdjust(e)),le.last=0)},___cxa_find_matching_catch:_e,___cxa_find_matching_catch_2:function(){return _e.apply(null,arguments)},___cxa_find_matching_catch_3:function(){return _e.apply(null,arguments)},___cxa_free_exception:fe,___cxa_get_exception_ptr:function(e){return e},___cxa_pure_virtual:function(){throw w=!0,"Pure virtual function called!"},___cxa_throw:function(e,n,t){throw le.infos[e]={ptr:e,adjusted:e,type:n,destructor:t,refcount:0,caught:!1,rethrown:!1},le.last=e,"uncaught_exception"in ce?ce.uncaught_exception++:ce.uncaught_exception=1,e},___gxx_personality_v0:function(){},___lock:function(){},___resumeException:function(e){throw le.last||(le.last=e),e},___setErrNo:function(e){return o.___errno_location&&(R[o.___errno_location()>>2]=e),e},___syscall140:function(e,n){pe.varargs=n;try{var t=pe.getStreamFromFD(),r=(pe.get(),pe.get()),i=pe.get(),a=pe.get(),o=r;return FS.llseek(t,o,a),R[i>>2]=t.position,t.getdents&&0===o&&0===a&&(t.getdents=null),0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___syscall146:de,___syscall54:function(e,n){pe.varargs=n;try{return 0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___syscall6:function(e,n){pe.varargs=n;try{var t=pe.getStreamFromFD();return FS.close(t),0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___unlock:function(){},__api_close_keyboard:function(){self.DApi.close_keyboard()},__api_open_keyboard:function(e,n,t,r,i){self.DApi.open_keyboard(e,n,t,r,i)},__exit:me,_abort:function(){o.abort()},_api_create_sound:function(e,n,t){self.DApi.create_sound(e,j.slice(n,n+t))},_api_create_sound_float:function(e,n,t,r,i){self.DApi.create_sound_raw(e,D.slice(n/4,n/4+t*r),t,r,i)},_api_delete_sound:function(e){self.DApi.delete_sound(e)},_api_draw_begin:function(){self.DApi.draw_begin()},_api_draw_belt:function(e){self.DApi.draw_belt(R.subarray(e/4,e/4+8))},_api_draw_blit:function(e,n,t,r,i){self.DApi.draw_blit(e,n,t,r,j.subarray(i,i+t*r*4))},_api_draw_clip_text:function(e,n,t,r){self.DApi.draw_clip_text(e,n,t,r)},_api_draw_end:function(){self.DApi.draw_end()},_api_draw_text:function(e,n,t,r){var i=j.indexOf(0,t),a=String.fromCharCode.apply(null,j.subarray(t,i));self.DApi.draw_text(e,n,a,r)},_api_duplicate_sound:function(e,n){self.DApi.duplicate_sound(e,n)},_api_exit_game:function(){self.DApi.exit_game()},_api_play_sound:function(e,n,t,r){self.DApi.play_sound(e,n,t,r)},_api_set_cursor:function(e,n){self.DApi.set_cursor(e,n)},_api_set_volume:function(e,n){self.DApi.set_volume(e,n)},_api_stop_sound:function(e){self.DApi.stop_sound(e)},_api_websocket_closed:function(){return self.DApi.websocket_closed()},_api_websocket_send:function(e,n){self.DApi.websocket_send(j.subarray(e,e+n))},_emscripten_asm_const_ii:function(e,n){return ue[e](n)},_emscripten_memcpy_big:function(e,n,t){return j.set(j.subarray(n,n+t),e),e},_exit:function(e){me(e)},_exit_error:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.DApi.exit_error(t)},_get_file_contents:function(e,n,t,r){var i=j.indexOf(0,e),a=String.fromCharCode.apply(null,j.subarray(e,i));self.DApi.get_file_contents(a,j.subarray(n,n+r),t)},_get_file_size:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));return self.DApi.get_file_size(t)},_llvm_ceil_f32:ye,_llvm_eh_typeid_for:function(e){return e},_llvm_trap:function(){Ne("trap!")},_pthread_getspecific:function(e){return he[e]||0},_pthread_key_create:function(e,n){return 0==e?ge.EINVAL:(R[e>>2]=ve,he[ve]=0,ve++,0)},_pthread_once:function e(n,t){e.seen||(e.seen={}),n in e.seen||(o.dynCall_v(t),e.seen[n]=1)},_pthread_setspecific:function(e,n){return e in he?(he[e]=n,0):ge.EINVAL},_put_file_contents:function(e,n,t){var r=j.indexOf(0,e),i=String.fromCharCode.apply(null,j.subarray(e,r));self.DApi.put_file_contents(i,j.slice(n,n+t))},_remove_file:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.DApi.remove_file(t)},_show_alert:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.alert(t)},_time:function(e){var n=Date.now()/1e3|0;return e&&(R[e>>2]=n),n},_trace_pop:function(){self.WASM_TRACE&&self.WASM_TRACE.pop()},_trace_push:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));console.log(t),self.WASM_TRACE=self.WASM_TRACE||[],self.WASM_TRACE.push(t)},flush_NO_FILESYSTEM:function(){var e=o._fflush;e&&e(0);var n=de.printChar;if(n){var t=de.buffers;t[1].length&&n(1,10),t[2].length&&n(2,10)}},DYNAMICTOP_PTR:P,tempDoublePtr:se,ABORT:w,STACKTOP:L,STACK_MAX:k};var be=o.asm(o.asmGlobalArg,o.asmLibraryArg,O);o.asm=be;o._DApi_AllocPacket=function(){return o.asm._DApi_AllocPacket.apply(null,arguments)},o._DApi_Char=function(){return o.asm._DApi_Char.apply(null,arguments)},o._DApi_Init=function(){return o.asm._DApi_Init.apply(null,arguments)},o._DApi_Key=function(){return o.asm._DApi_Key.apply(null,arguments)},o._DApi_Mouse=function(){return o.asm._DApi_Mouse.apply(null,arguments)},o._DApi_Render=function(){return o.asm._DApi_Render.apply(null,arguments)},o._DApi_SyncText=function(){return o.asm._DApi_SyncText.apply(null,arguments)},o._DApi_SyncTextPtr=function(){return o.asm._DApi_SyncTextPtr.apply(null,arguments)},o._SNet_InitWebsocket=function(){return o.asm._SNet_InitWebsocket.apply(null,arguments)};var Ee,we=o.__GLOBAL__sub_I_msgcmd_cpp=function(){return o.asm.__GLOBAL__sub_I_msgcmd_cpp.apply(null,arguments)},Ae=o.__GLOBAL__sub_I_snet_cpp=function(){return o.asm.__GLOBAL__sub_I_snet_cpp.apply(null,arguments)},Te=(o.___cxa_can_catch=function(){return o.asm.___cxa_can_catch.apply(null,arguments)},o.___cxa_is_pointer_type=function(){return o.asm.___cxa_is_pointer_type.apply(null,arguments)},o.___em_js___api_close_keyboard=function(){return o.asm.___em_js___api_close_keyboard.apply(null,arguments)},o.___em_js___api_open_keyboard=function(){return o.asm.___em_js___api_open_keyboard.apply(null,arguments)},o.___em_js__api_create_sound=function(){return o.asm.___em_js__api_create_sound.apply(null,arguments)},o.___em_js__api_create_sound_float=function(){return o.asm.___em_js__api_create_sound_float.apply(null,arguments)},o.___em_js__api_delete_sound=function(){return o.asm.___em_js__api_delete_sound.apply(null,arguments)},o.___em_js__api_draw_begin=function(){return o.asm.___em_js__api_draw_begin.apply(null,arguments)},o.___em_js__api_draw_belt=function(){return o.asm.___em_js__api_draw_belt.apply(null,arguments)},o.___em_js__api_draw_blit=function(){return o.asm.___em_js__api_draw_blit.apply(null,arguments)},o.___em_js__api_draw_clip_text=function(){return o.asm.___em_js__api_draw_clip_text.apply(null,arguments)},o.___em_js__api_draw_end=function(){return o.asm.___em_js__api_draw_end.apply(null,arguments)},o.___em_js__api_draw_text=function(){return o.asm.___em_js__api_draw_text.apply(null,arguments)},o.___em_js__api_duplicate_sound=function(){return o.asm.___em_js__api_duplicate_sound.apply(null,arguments)},o.___em_js__api_exit_game=function(){return o.asm.___em_js__api_exit_game.apply(null,arguments)},o.___em_js__api_play_sound=function(){return o.asm.___em_js__api_play_sound.apply(null,arguments)},o.___em_js__api_set_cursor=function(){return o.asm.___em_js__api_set_cursor.apply(null,arguments)},o.___em_js__api_set_volume=function(){return o.asm.___em_js__api_set_volume.apply(null,arguments)},o.___em_js__api_stop_sound=function(){return o.asm.___em_js__api_stop_sound.apply(null,arguments)},o.___em_js__api_websocket_closed=function(){return o.asm.___em_js__api_websocket_closed.apply(null,arguments)},o.___em_js__api_websocket_send=function(){return o.asm.___em_js__api_websocket_send.apply(null,arguments)},o.___em_js__exit_error=function(){return o.asm.___em_js__exit_error.apply(null,arguments)},o.___em_js__get_file_contents=function(){return o.asm.___em_js__get_file_contents.apply(null,arguments)},o.___em_js__get_file_size=function(){return o.asm.___em_js__get_file_size.apply(null,arguments)},o.___em_js__put_file_contents=function(){return o.asm.___em_js__put_file_contents.apply(null,arguments)},o.___em_js__remove_file=function(){return o.asm.___em_js__remove_file.apply(null,arguments)},o.___em_js__show_alert=function(){return o.asm.___em_js__show_alert.apply(null,arguments)},o.___em_js__trace_pop=function(){return o.asm.___em_js__trace_pop.apply(null,arguments)},o.___em_js__trace_push=function(){return o.asm.___em_js__trace_push.apply(null,arguments)},o._emscripten_replace_memory=function(){return o.asm._emscripten_replace_memory.apply(null,arguments)}),Ce=o._free=function(){return o.asm._free.apply(null,arguments)},Se=(o._llvm_bswap_i32=function(){return o.asm._llvm_bswap_i32.apply(null,arguments)},o._malloc=function(){return o.asm._malloc.apply(null,arguments)}),Oe=(o._memcpy=function(){return o.asm._memcpy.apply(null,arguments)},o._memmove=function(){return o.asm._memmove.apply(null,arguments)},o._memset=function(){return o.asm._memset.apply(null,arguments)},o._sbrk=function(){return o.asm._sbrk.apply(null,arguments)},o.establishStackSpace=function(){return o.asm.establishStackSpace.apply(null,arguments)},o.getTempRet0=function(){return o.asm.getTempRet0.apply(null,arguments)},o.runPostSets=function(){return o.asm.runPostSets.apply(null,arguments)},o.setTempRet0=function(){return o.asm.setTempRet0.apply(null,arguments)}),xe=(o.setThrew=function(){return o.asm.setThrew.apply(null,arguments)},o.stackAlloc=function(){return o.asm.stackAlloc.apply(null,arguments)},o.stackRestore=function(){return o.asm.stackRestore.apply(null,arguments)}),je=o.stackSave=function(){return o.asm.stackSave.apply(null,arguments)};o.dynCall_i=function(){return o.asm.dynCall_i.apply(null,arguments)},o.dynCall_ii=function(){return o.asm.dynCall_ii.apply(null,arguments)},o.dynCall_iii=function(){return o.asm.dynCall_iii.apply(null,arguments)},o.dynCall_iiii=function(){return o.asm.dynCall_iiii.apply(null,arguments)},o.dynCall_iiiii=function(){return o.asm.dynCall_iiiii.apply(null,arguments)},o.dynCall_iiiiii=function(){return o.asm.dynCall_iiiiii.apply(null,arguments)},o.dynCall_ji=function(){return o.asm.dynCall_ji.apply(null,arguments)},o.dynCall_v=function(){return o.asm.dynCall_v.apply(null,arguments)},o.dynCall_vi=function(){return o.asm.dynCall_vi.apply(null,arguments)},o.dynCall_vii=function(){return o.asm.dynCall_vii.apply(null,arguments)},o.dynCall_viii=function(){return o.asm.dynCall_viii.apply(null,arguments)},o.dynCall_viiii=function(){return o.asm.dynCall_viiii.apply(null,arguments)},o.dynCall_viiiii=function(){return o.asm.dynCall_viiiii.apply(null,arguments)},o.dynCall_viiiiii=function(){return o.asm.dynCall_viiiiii.apply(null,arguments)},o.dynCall_viiiiiii=function(){return o.asm.dynCall_viiiiiii.apply(null,arguments)},o.dynCall_viiiiiiiii=function(){return o.asm.dynCall_viiiiiiiii.apply(null,arguments)},o.dynCall_viiiiiiiiii=function(){return o.asm.dynCall_viiiiiiiiii.apply(null,arguments)},o.dynCall_viij=function(){return o.asm.dynCall_viij.apply(null,arguments)},o.dynCall_viji=function(){return o.asm.dynCall_viji.apply(null,arguments)};function Re(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}o.asm=be,o.then=function(e){if(o.calledRun)e(o);else{var n=o.onRuntimeInitialized;o.onRuntimeInitialized=function(){n&&n(),e(o)}}return o},Re.prototype=new Error,Re.prototype.constructor=Re;function De(e){function n(){o.calledRun||(o.calledRun=!0,w||($||($=!0,X(V)),X(Q),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)ee(o.postRun.shift());X(Z)}()))}e=e||o.arguments,te>0||(!function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)e=o.preRun.shift(),Y.unshift(e);var e;X(Y)}(),te>0||o.calledRun||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),n()},1)):n()))}ie=function e(){o.calledRun||De(),o.calledRun||(ie=e)},o.run=De;function Ne(e){throw o.onAbort&&o.onAbort(e),void 0!==e?(y(e),h(e),e=JSON.stringify(e)):e="",w=!0,1,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}if(o.abort=Ne,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return o.noExitRuntime=!0,De(),o.ready=new Promise(function(e,n){delete o.then,o.onAbort=function(e){n(e)},ee(function(){e(o)})}),i}}();e.exports=i}).call(this,t(2),"/")},function(e,n,t){e.exports=t.p+"static/media/DiabloSpawn.ef6314a9.wasm"},function(e,n,t){(function(n,r){var i=function(){var e="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;return function(i){var a,o="undefined"!==typeof(i=i||{})?i:{},u={};for(a in o)o.hasOwnProperty(a)&&(u[a]=o[a]);o.arguments=[],o.thisProgram="./this.program",o.quit=function(e,n){throw n},o.preRun=[],o.postRun=[];var s,c,l=!1,f=!1;l="object"===typeof window,f="function"===typeof importScripts,s="object"===typeof n&&!l&&!f,c=!l&&!s&&!f;var _,p,d="";function m(e){return o.locateFile?o.locateFile(e,d):d+e}s?(d=r+"/",o.read=function(e,n){var r;return _||(_=t(3)),p||(p=t(4)),e=p.normalize(e),r=_.readFileSync(e),n?r:r.toString()},o.readBinary=function(e){var n=o.read(e,!0);return n.buffer||(n=new Uint8Array(n)),A(n.buffer),n},n.argv.length>1&&(o.thisProgram=n.argv[1].replace(/\\/g,"/")),o.arguments=n.argv.slice(2),n.on("uncaughtException",function(e){if(!(e instanceof Re))throw e}),n.on("unhandledRejection",function(e,t){n.exit(1)}),o.quit=function(e){n.exit(e)},o.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(o.read=function(e){return read(e)}),o.readBinary=function(e){var n;return"function"===typeof readbuffer?new Uint8Array(readbuffer(e)):(A("object"===typeof(n=read(e,"binary"))),n)},"undefined"!=typeof scriptArgs?o.arguments=scriptArgs:"undefined"!=typeof arguments&&(o.arguments=arguments),"function"===typeof quit&&(o.quit=function(e){quit(e)})):(l||f)&&(l?document.currentScript&&(d=document.currentScript.src):d=self.location.href,e&&(d=e),d=0!==d.indexOf("blob:")?d.split("/").slice(0,-1).join("/")+"/":"",o.read=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.send(null),n.responseText},f&&(o.readBinary=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),o.readAsync=function(e,n,t){var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?n(r.response):t()},r.onerror=t,r.send(null)},o.setWindowTitle=function(e){document.title=e});var y=o.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),h=o.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||y);for(a in u)u.hasOwnProperty(a)&&(o[a]=u[a]);u=void 0;var v=16;function g(e){var n=N;return N=N+e+15&-16,n}function b(e,n){return n||(n=v),e=Math.ceil(e/n)*n}var E={"f64-rem":function(e,n){return e%n},debugger:function(){}};new Array(0);var w=0;function A(e,n){e||Ne("Assertion failed: "+n)}function T(e,n){if(0===n||!e)return"";for(var t,r=0,i=0;r|=t=j[e+i>>0],(0!=t||n)&&(i++,!n||i!=n););n||(n=i);var a="";if(r<128){for(var o;n>0;)o=String.fromCharCode.apply(String,j.subarray(e,e+Math.min(n,1024))),a=a?a+o:o,e+=1024,n-=1024;return a}return function(e){return S(j,e)}(e)}var C="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function S(e,n){for(var t=n;e[t];)++t;if(t-n>16&&e.subarray&&C)return C.decode(e.subarray(n,t));for(var r,i,a,o,u,s="";;){if(!(r=e[n++]))return s;if(128&r)if(i=63&e[n++],192!=(224&r))if(a=63&e[n++],224==(240&r)?r=(15&r)<<12|i<<6|a:(o=63&e[n++],240==(248&r)?r=(7&r)<<18|i<<12|a<<6|o:(u=63&e[n++],r=248==(252&r)?(3&r)<<24|i<<18|a<<12|o<<6|u:(1&r)<<30|i<<24|a<<18|o<<12|u<<6|63&e[n++])),r<65536)s+=String.fromCharCode(r);else{var c=r-65536;s+=String.fromCharCode(55296|c>>10,56320|1023&c)}else s+=String.fromCharCode((31&r)<<6|i);else s+=String.fromCharCode(r)}}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");var O,x,j,R,D,N,M,L,k,I,P,B=65536,U=16777216,F=16777216;function W(e,n){return e%n>0&&(e+=n-e%n),e}function H(e){o.buffer=O=e}function G(){o.HEAP8=x=new Int8Array(O),o.HEAP16=new Int16Array(O),o.HEAP32=R=new Int32Array(O),o.HEAPU8=j=new Uint8Array(O),o.HEAPU16=new Uint16Array(O),o.HEAPU32=new Uint32Array(O),o.HEAPF32=D=new Float32Array(O),o.HEAPF64=new Float64Array(O)}function q(){var e=o.usingWasm?B:U,n=2147483648-e;if(R[P>>2]>n)return!1;var t=K;for(K=Math.max(K,F);K>2];)K=K<=536870912?W(2*K,e):Math.min(W((3*K+2147483648)/4,e),n);var r=o.reallocBuffer(K);return r&&r.byteLength==K?(H(r),G(),!0):(K=t,!1)}N=L=P=0,o.reallocBuffer||(o.reallocBuffer=function(e){var n;try{if(ArrayBuffer.transfer)n=ArrayBuffer.transfer(O,e);else{var t=x;n=new ArrayBuffer(e),new Int8Array(n).set(t)}}catch(r){return!1}return!!Te(n)&&n});try{Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get)(new ArrayBuffer(4))}catch(Me){(function(e){return e.byteLength})}var z=o.TOTAL_STACK||5242880,K=o.TOTAL_MEMORY||134217728;function X(e){for(;e.length>0;){var n=e.shift();if("function"!=typeof n){var t=n.func;"number"===typeof t?void 0===n.arg?o.dynCall_v(t):o.dynCall_vi(t,n.arg):t(void 0===n.arg?null:n.arg)}else n()}}K0),n.refcount--,0!==n.refcount||n.rethrown||(n.destructor&&o.dynCall_vi(n.destructor,e),delete le.infos[e],fe(e))}},clearRef:function(e){e&&(le.infos[e].refcount=0)}};function fe(e){try{return Ce(e)}catch(Me){}}function _e(){var e=le.last;if(!e)return 0|(Oe(0),0);var n=le.infos[e],t=n.type;if(!t)return 0|(Oe(0),e);var r=Array.prototype.slice.call(arguments);o.___cxa_is_pointer_type(t);_e.buffer||(_e.buffer=Se(4)),R[_e.buffer>>2]=e,e=_e.buffer;for(var i=0;i>2],n.adjusted=e,0|(Oe(r[i]),e);return e=R[e>>2],0|(Oe(t),e)}var pe={varargs:0,get:function(e){return pe.varargs+=4,R[pe.varargs-4>>2]},getStr:function(){return T(pe.get())},get64:function(){var e=pe.get(),n=pe.get();return A(e>=0?0===n:-1===n),e},getZero:function(){A(0===pe.get())}};function de(e,n){pe.varargs=n;try{var t=pe.get(),r=pe.get(),i=pe.get(),a=0;de.buffers||(de.buffers=[null,[],[]],de.printChar=function(e,n){var t=de.buffers[e];A(t),0===n||10===n?((1===e?y:h)(S(t,0)),t.length=0):t.push(n)});for(var o=0;o>2],s=R[r+(8*o+4)>>2],c=0;c>2]=I;o.wasmTableSize=1114,o.wasmMaxTableSize=1114,o.asmGlobalArg={},o.asmLibraryArg={abort:Ne,assert:A,enlargeMemory:q,getTotalMemory:function(){return K},abortOnCannotGrowMemory:function(){Ne("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+K+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_i:function(e){var n=je();try{return o.dynCall_i(e)}catch(Me){if(xe(n),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_ii:function(e,n){var t=je();try{return o.dynCall_ii(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iii:function(e,n,t){var r=je();try{return o.dynCall_iii(e,n,t)}catch(Me){if(xe(r),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiii:function(e,n,t,r){var i=je();try{return o.dynCall_iiii(e,n,t,r)}catch(Me){if(xe(i),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiiii:function(e,n,t,r,i){var a=je();try{return o.dynCall_iiiii(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiiiii:function(e,n,t,r,i,a){var u=je();try{return o.dynCall_iiiiii(e,n,t,r,i,a)}catch(Me){if(xe(u),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_ji:function(e,n){var t=je();try{return o.dynCall_ji(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_v:function(e){var n=je();try{o.dynCall_v(e)}catch(Me){if(xe(n),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_vi:function(e,n){var t=je();try{o.dynCall_vi(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_vii:function(e,n,t){var r=je();try{o.dynCall_vii(e,n,t)}catch(Me){if(xe(r),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viii:function(e,n,t,r){var i=je();try{o.dynCall_viii(e,n,t,r)}catch(Me){if(xe(i),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiii:function(e,n,t,r,i){var a=je();try{o.dynCall_viiii(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiii:function(e,n,t,r,i,a){var u=je();try{o.dynCall_viiiii(e,n,t,r,i,a)}catch(Me){if(xe(u),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiii:function(e,n,t,r,i,a,u){var s=je();try{o.dynCall_viiiiii(e,n,t,r,i,a,u)}catch(Me){if(xe(s),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiii:function(e,n,t,r,i,a,u,s){var c=je();try{o.dynCall_viiiiiii(e,n,t,r,i,a,u,s)}catch(Me){if(xe(c),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiiiii:function(e,n,t,r,i,a,u,s,c,l){var f=je();try{o.dynCall_viiiiiiiii(e,n,t,r,i,a,u,s,c,l)}catch(Me){if(xe(f),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiiiiii:function(e,n,t,r,i,a,u,s,c,l,f){var _=je();try{o.dynCall_viiiiiiiiii(e,n,t,r,i,a,u,s,c,l,f)}catch(Me){if(xe(_),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viij:function(e,n,t,r,i){var a=je();try{o.dynCall_viij(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viji:function(e,n,t,r,i){var a=je();try{o.dynCall_viji(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},__ZSt18uncaught_exceptionv:ce,___assert_fail:function(e,n,t,r){Ne("Assertion failed: "+T(e)+", at: "+[n?T(n):"unknown filename",t,r?T(r):"unknown function"])},___cxa_allocate_exception:function(e){return Se(e)},___cxa_begin_catch:function(e){var n=le.infos[e];return n&&!n.caught&&(n.caught=!0,ce.uncaught_exception--),n&&(n.rethrown=!1),le.caught.push(e),le.addRef(le.deAdjust(e)),e},___cxa_end_catch:function(){o.setThrew(0);var e=le.caught.pop();e&&(le.decRef(le.deAdjust(e)),le.last=0)},___cxa_find_matching_catch:_e,___cxa_find_matching_catch_2:function(){return _e.apply(null,arguments)},___cxa_find_matching_catch_3:function(){return _e.apply(null,arguments)},___cxa_free_exception:fe,___cxa_get_exception_ptr:function(e){return e},___cxa_pure_virtual:function(){throw w=!0,"Pure virtual function called!"},___cxa_throw:function(e,n,t){throw le.infos[e]={ptr:e,adjusted:e,type:n,destructor:t,refcount:0,caught:!1,rethrown:!1},le.last=e,"uncaught_exception"in ce?ce.uncaught_exception++:ce.uncaught_exception=1,e},___gxx_personality_v0:function(){},___lock:function(){},___resumeException:function(e){throw le.last||(le.last=e),e},___setErrNo:function(e){return o.___errno_location&&(R[o.___errno_location()>>2]=e),e},___syscall140:function(e,n){pe.varargs=n;try{var t=pe.getStreamFromFD(),r=(pe.get(),pe.get()),i=pe.get(),a=pe.get(),o=r;return FS.llseek(t,o,a),R[i>>2]=t.position,t.getdents&&0===o&&0===a&&(t.getdents=null),0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___syscall146:de,___syscall54:function(e,n){pe.varargs=n;try{return 0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___syscall6:function(e,n){pe.varargs=n;try{var t=pe.getStreamFromFD();return FS.close(t),0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___unlock:function(){},__api_close_keyboard:function(){self.DApi.close_keyboard()},__api_open_keyboard:function(e,n,t,r,i){self.DApi.open_keyboard(e,n,t,r,i)},__exit:me,_abort:function(){o.abort()},_api_create_sound:function(e,n,t){self.DApi.create_sound(e,j.slice(n,n+t))},_api_create_sound_float:function(e,n,t,r,i){self.DApi.create_sound_raw(e,D.slice(n/4,n/4+t*r),t,r,i)},_api_delete_sound:function(e){self.DApi.delete_sound(e)},_api_draw_begin:function(){self.DApi.draw_begin()},_api_draw_belt:function(e){self.DApi.draw_belt(R.subarray(e/4,e/4+8))},_api_draw_blit:function(e,n,t,r,i){self.DApi.draw_blit(e,n,t,r,j.subarray(i,i+t*r*4))},_api_draw_clip_text:function(e,n,t,r){self.DApi.draw_clip_text(e,n,t,r)},_api_draw_end:function(){self.DApi.draw_end()},_api_draw_text:function(e,n,t,r){var i=j.indexOf(0,t),a=String.fromCharCode.apply(null,j.subarray(t,i));self.DApi.draw_text(e,n,a,r)},_api_duplicate_sound:function(e,n){self.DApi.duplicate_sound(e,n)},_api_exit_game:function(){self.DApi.exit_game()},_api_play_sound:function(e,n,t,r){self.DApi.play_sound(e,n,t,r)},_api_set_cursor:function(e,n){self.DApi.set_cursor(e,n)},_api_set_volume:function(e,n){self.DApi.set_volume(e,n)},_api_stop_sound:function(e){self.DApi.stop_sound(e)},_api_websocket_closed:function(){return self.DApi.websocket_closed()},_api_websocket_send:function(e,n){self.DApi.websocket_send(j.subarray(e,e+n))},_emscripten_asm_const_ii:function(e,n){return ue[e](n)},_emscripten_memcpy_big:function(e,n,t){return j.set(j.subarray(n,n+t),e),e},_exit:function(e){me(e)},_exit_error:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.DApi.exit_error(t)},_get_file_contents:function(e,n,t,r){var i=j.indexOf(0,e),a=String.fromCharCode.apply(null,j.subarray(e,i));self.DApi.get_file_contents(a,j.subarray(n,n+r),t)},_get_file_size:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));return self.DApi.get_file_size(t)},_llvm_ceil_f32:ye,_llvm_eh_typeid_for:function(e){return e},_llvm_trap:function(){Ne("trap!")},_pthread_getspecific:function(e){return he[e]||0},_pthread_key_create:function(e,n){return 0==e?ge.EINVAL:(R[e>>2]=ve,he[ve]=0,ve++,0)},_pthread_once:function e(n,t){e.seen||(e.seen={}),n in e.seen||(o.dynCall_v(t),e.seen[n]=1)},_pthread_setspecific:function(e,n){return e in he?(he[e]=n,0):ge.EINVAL},_put_file_contents:function(e,n,t){var r=j.indexOf(0,e),i=String.fromCharCode.apply(null,j.subarray(e,r));self.DApi.put_file_contents(i,j.slice(n,n+t))},_remove_file:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.DApi.remove_file(t)},_show_alert:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.alert(t)},_time:function(e){var n=Date.now()/1e3|0;return e&&(R[e>>2]=n),n},_trace_pop:function(){self.WASM_TRACE&&self.WASM_TRACE.pop()},_trace_push:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));console.log(t),self.WASM_TRACE=self.WASM_TRACE||[],self.WASM_TRACE.push(t)},flush_NO_FILESYSTEM:function(){var e=o._fflush;e&&e(0);var n=de.printChar;if(n){var t=de.buffers;t[1].length&&n(1,10),t[2].length&&n(2,10)}},DYNAMICTOP_PTR:P,tempDoublePtr:se,ABORT:w,STACKTOP:L,STACK_MAX:k};var be=o.asm(o.asmGlobalArg,o.asmLibraryArg,O);o.asm=be;o._DApi_AllocPacket=function(){return o.asm._DApi_AllocPacket.apply(null,arguments)},o._DApi_Char=function(){return o.asm._DApi_Char.apply(null,arguments)},o._DApi_Init=function(){return o.asm._DApi_Init.apply(null,arguments)},o._DApi_Key=function(){return o.asm._DApi_Key.apply(null,arguments)},o._DApi_Mouse=function(){return o.asm._DApi_Mouse.apply(null,arguments)},o._DApi_Render=function(){return o.asm._DApi_Render.apply(null,arguments)},o._DApi_SyncText=function(){return o.asm._DApi_SyncText.apply(null,arguments)},o._DApi_SyncTextPtr=function(){return o.asm._DApi_SyncTextPtr.apply(null,arguments)},o._SNet_InitWebsocket=function(){return o.asm._SNet_InitWebsocket.apply(null,arguments)};var Ee,we=o.__GLOBAL__sub_I_msgcmd_cpp=function(){return o.asm.__GLOBAL__sub_I_msgcmd_cpp.apply(null,arguments)},Ae=o.__GLOBAL__sub_I_snet_cpp=function(){return o.asm.__GLOBAL__sub_I_snet_cpp.apply(null,arguments)},Te=(o.___cxa_can_catch=function(){return o.asm.___cxa_can_catch.apply(null,arguments)},o.___cxa_is_pointer_type=function(){return o.asm.___cxa_is_pointer_type.apply(null,arguments)},o.___em_js___api_close_keyboard=function(){return o.asm.___em_js___api_close_keyboard.apply(null,arguments)},o.___em_js___api_open_keyboard=function(){return o.asm.___em_js___api_open_keyboard.apply(null,arguments)},o.___em_js__api_create_sound=function(){return o.asm.___em_js__api_create_sound.apply(null,arguments)},o.___em_js__api_create_sound_float=function(){return o.asm.___em_js__api_create_sound_float.apply(null,arguments)},o.___em_js__api_delete_sound=function(){return o.asm.___em_js__api_delete_sound.apply(null,arguments)},o.___em_js__api_draw_begin=function(){return o.asm.___em_js__api_draw_begin.apply(null,arguments)},o.___em_js__api_draw_belt=function(){return o.asm.___em_js__api_draw_belt.apply(null,arguments)},o.___em_js__api_draw_blit=function(){return o.asm.___em_js__api_draw_blit.apply(null,arguments)},o.___em_js__api_draw_clip_text=function(){return o.asm.___em_js__api_draw_clip_text.apply(null,arguments)},o.___em_js__api_draw_end=function(){return o.asm.___em_js__api_draw_end.apply(null,arguments)},o.___em_js__api_draw_text=function(){return o.asm.___em_js__api_draw_text.apply(null,arguments)},o.___em_js__api_duplicate_sound=function(){return o.asm.___em_js__api_duplicate_sound.apply(null,arguments)},o.___em_js__api_exit_game=function(){return o.asm.___em_js__api_exit_game.apply(null,arguments)},o.___em_js__api_play_sound=function(){return o.asm.___em_js__api_play_sound.apply(null,arguments)},o.___em_js__api_set_cursor=function(){return o.asm.___em_js__api_set_cursor.apply(null,arguments)},o.___em_js__api_set_volume=function(){return o.asm.___em_js__api_set_volume.apply(null,arguments)},o.___em_js__api_stop_sound=function(){return o.asm.___em_js__api_stop_sound.apply(null,arguments)},o.___em_js__api_websocket_closed=function(){return o.asm.___em_js__api_websocket_closed.apply(null,arguments)},o.___em_js__api_websocket_send=function(){return o.asm.___em_js__api_websocket_send.apply(null,arguments)},o.___em_js__exit_error=function(){return o.asm.___em_js__exit_error.apply(null,arguments)},o.___em_js__get_file_contents=function(){return o.asm.___em_js__get_file_contents.apply(null,arguments)},o.___em_js__get_file_size=function(){return o.asm.___em_js__get_file_size.apply(null,arguments)},o.___em_js__put_file_contents=function(){return o.asm.___em_js__put_file_contents.apply(null,arguments)},o.___em_js__remove_file=function(){return o.asm.___em_js__remove_file.apply(null,arguments)},o.___em_js__show_alert=function(){return o.asm.___em_js__show_alert.apply(null,arguments)},o.___em_js__trace_pop=function(){return o.asm.___em_js__trace_pop.apply(null,arguments)},o.___em_js__trace_push=function(){return o.asm.___em_js__trace_push.apply(null,arguments)},o._emscripten_replace_memory=function(){return o.asm._emscripten_replace_memory.apply(null,arguments)}),Ce=o._free=function(){return o.asm._free.apply(null,arguments)},Se=(o._llvm_bswap_i32=function(){return o.asm._llvm_bswap_i32.apply(null,arguments)},o._malloc=function(){return o.asm._malloc.apply(null,arguments)}),Oe=(o._memcpy=function(){return o.asm._memcpy.apply(null,arguments)},o._memmove=function(){return o.asm._memmove.apply(null,arguments)},o._memset=function(){return o.asm._memset.apply(null,arguments)},o._sbrk=function(){return o.asm._sbrk.apply(null,arguments)},o.establishStackSpace=function(){return o.asm.establishStackSpace.apply(null,arguments)},o.getTempRet0=function(){return o.asm.getTempRet0.apply(null,arguments)},o.runPostSets=function(){return o.asm.runPostSets.apply(null,arguments)},o.setTempRet0=function(){return o.asm.setTempRet0.apply(null,arguments)}),xe=(o.setThrew=function(){return o.asm.setThrew.apply(null,arguments)},o.stackAlloc=function(){return o.asm.stackAlloc.apply(null,arguments)},o.stackRestore=function(){return o.asm.stackRestore.apply(null,arguments)}),je=o.stackSave=function(){return o.asm.stackSave.apply(null,arguments)};o.dynCall_i=function(){return o.asm.dynCall_i.apply(null,arguments)},o.dynCall_ii=function(){return o.asm.dynCall_ii.apply(null,arguments)},o.dynCall_iii=function(){return o.asm.dynCall_iii.apply(null,arguments)},o.dynCall_iiii=function(){return o.asm.dynCall_iiii.apply(null,arguments)},o.dynCall_iiiii=function(){return o.asm.dynCall_iiiii.apply(null,arguments)},o.dynCall_iiiiii=function(){return o.asm.dynCall_iiiiii.apply(null,arguments)},o.dynCall_ji=function(){return o.asm.dynCall_ji.apply(null,arguments)},o.dynCall_v=function(){return o.asm.dynCall_v.apply(null,arguments)},o.dynCall_vi=function(){return o.asm.dynCall_vi.apply(null,arguments)},o.dynCall_vii=function(){return o.asm.dynCall_vii.apply(null,arguments)},o.dynCall_viii=function(){return o.asm.dynCall_viii.apply(null,arguments)},o.dynCall_viiii=function(){return o.asm.dynCall_viiii.apply(null,arguments)},o.dynCall_viiiii=function(){return o.asm.dynCall_viiiii.apply(null,arguments)},o.dynCall_viiiiii=function(){return o.asm.dynCall_viiiiii.apply(null,arguments)},o.dynCall_viiiiiii=function(){return o.asm.dynCall_viiiiiii.apply(null,arguments)},o.dynCall_viiiiiiiii=function(){return o.asm.dynCall_viiiiiiiii.apply(null,arguments)},o.dynCall_viiiiiiiiii=function(){return o.asm.dynCall_viiiiiiiiii.apply(null,arguments)},o.dynCall_viij=function(){return o.asm.dynCall_viij.apply(null,arguments)},o.dynCall_viji=function(){return o.asm.dynCall_viji.apply(null,arguments)};function Re(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}o.asm=be,o.then=function(e){if(o.calledRun)e(o);else{var n=o.onRuntimeInitialized;o.onRuntimeInitialized=function(){n&&n(),e(o)}}return o},Re.prototype=new Error,Re.prototype.constructor=Re;function De(e){function n(){o.calledRun||(o.calledRun=!0,w||($||($=!0,X(V)),X(Q),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)ee(o.postRun.shift());X(Z)}()))}e=e||o.arguments,te>0||(!function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)e=o.preRun.shift(),Y.unshift(e);var e;X(Y)}(),te>0||o.calledRun||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),n()},1)):n()))}ie=function e(){o.calledRun||De(),o.calledRun||(ie=e)},o.run=De;function Ne(e){throw o.onAbort&&o.onAbort(e),void 0!==e?(y(e),h(e),e=JSON.stringify(e)):e="",w=!0,1,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}if(o.abort=Ne,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return o.noExitRuntime=!0,De(),o.ready=new Promise(function(e,n){delete o.then,o.onAbort=function(e){n(e)},ee(function(){e(o)})}),i}}();e.exports=i}).call(this,t(2),"/")},function(e,n,t){e.exports=t(19)},function(e,n,t){var r=function(e){"use strict";var n,t=Object.prototype,r=t.hasOwnProperty,i="function"===typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function s(e,n,t,r){var i=n&&n.prototype instanceof m?n:m,a=Object.create(i.prototype),o=new O(r||[]);return a._invoke=function(e,n,t){var r=l;return function(i,a){if(r===_)throw new Error("Generator is already running");if(r===p){if("throw"===i)throw a;return j()}for(t.method=i,t.arg=a;;){var o=t.delegate;if(o){var u=T(o,t);if(u){if(u===d)continue;return u}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if(r===l)throw r=p,t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);r=_;var s=c(e,n,t);if("normal"===s.type){if(r=t.done?p:f,s.arg===d)continue;return{value:s.arg,done:t.done}}"throw"===s.type&&(r=p,t.method="throw",t.arg=s.arg)}}}(e,t,o),a}function c(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(r){return{type:"throw",arg:r}}}e.wrap=s;var l="suspendedStart",f="suspendedYield",_="executing",p="completed",d={};function m(){}function y(){}function h(){}var v={};v[a]=function(){return this};var g=Object.getPrototypeOf,b=g&&g(g(x([])));b&&b!==t&&r.call(b,a)&&(v=b);var E=h.prototype=m.prototype=Object.create(v);function w(e){["next","throw","return"].forEach(function(n){e[n]=function(e){return this._invoke(n,e)}})}function A(e){var n;this._invoke=function(t,i){function a(){return new Promise(function(n,a){!function n(t,i,a,o){var u=c(e[t],e,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"===typeof l&&r.call(l,"__await")?Promise.resolve(l.__await).then(function(e){n("next",e,a,o)},function(e){n("throw",e,a,o)}):Promise.resolve(l).then(function(e){s.value=e,a(s)},function(e){return n("throw",e,a,o)})}o(u.arg)}(t,i,n,a)})}return n=n?n.then(a,a):a()}}function T(e,t){var r=e.iterator[t.method];if(r===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,T(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var i=c(r,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,d;var a=i.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,d):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function C(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function S(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function x(e){if(e){var t=e[a];if(t)return t.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function t(){for(;++i=0;--a){var o=this.tryEntries[a],u=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev=0;--t){var i=this.tryEntries[t];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),S(t),d}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var r=t.completion;if("throw"===r.type){var i=r.arg;S(t)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:x(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=n),d}},e}(e.exports);try{regeneratorRuntime=r}catch(i){Function("r","regeneratorRuntime = r")(r)}},function(e,n,t){"use strict";var r=t(0),i=t(5),a=t(21),o=t(11);function u(e){var n=new a(e),t=i(a.prototype.request,n);return r.extend(t,a.prototype,n),r.extend(t,n),t}var s=u(t(8));s.Axios=a,s.create=function(e){return u(o(s.defaults,e))},s.Cancel=t(12),s.CancelToken=t(33),s.isCancel=t(7),s.all=function(e){return Promise.all(e)},s.spread=t(34),e.exports=s,e.exports.default=s},function(e,n){e.exports=function(e){return null!=e&&null!=e.constructor&&"function"===typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},function(e,n,t){"use strict";var r=t(0),i=t(6),a=t(22),o=t(23),u=t(11);function s(e){this.defaults=e,this.interceptors={request:new a,response:new a}}s.prototype.request=function(e){"string"===typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=u(this.defaults,e)).method=e.method?e.method.toLowerCase():"get";var n=[o,void 0],t=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){n.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){n.push(e.fulfilled,e.rejected)});n.length;)t=t.then(n.shift(),n.shift());return t},s.prototype.getUri=function(e){return e=u(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],function(e){s.prototype[e]=function(n,t){return this.request(r.merge(t||{},{method:e,url:n}))}}),r.forEach(["post","put","patch"],function(e){s.prototype[e]=function(n,t,i){return this.request(r.merge(i||{},{method:e,url:n,data:t}))}}),e.exports=s},function(e,n,t){"use strict";var r=t(0);function i(){this.handlers=[]}i.prototype.use=function(e,n){return this.handlers.push({fulfilled:e,rejected:n}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,function(n){null!==n&&e(n)})},e.exports=i},function(e,n,t){"use strict";var r=t(0),i=t(24),a=t(7),o=t(8),u=t(31),s=t(32);function c(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return c(e),e.baseURL&&!u(e.url)&&(e.url=s(e.baseURL,e.url)),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(n){delete e.headers[n]}),(e.adapter||o.adapter)(e).then(function(n){return c(e),n.data=i(n.data,n.headers,e.transformResponse),n},function(n){return a(n)||(c(e),n&&n.response&&(n.response.data=i(n.response.data,n.response.headers,e.transformResponse))),Promise.reject(n)})}},function(e,n,t){"use strict";var r=t(0);e.exports=function(e,n,t){return r.forEach(t,function(t){e=t(e,n)}),e}},function(e,n,t){"use strict";var r=t(0);e.exports=function(e,n){r.forEach(e,function(t,r){r!==n&&r.toUpperCase()===n.toUpperCase()&&(e[n]=t,delete e[r])})}},function(e,n,t){"use strict";var r=t(10);e.exports=function(e,n,t){var i=t.config.validateStatus;!i||i(t.status)?e(t):n(r("Request failed with status code "+t.status,t.config,null,t.request,t))}},function(e,n,t){"use strict";e.exports=function(e,n,t,r,i){return e.config=n,t&&(e.code=t),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,n,t){"use strict";var r=t(0),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var n,t,a,o={};return e?(r.forEach(e.split("\n"),function(e){if(a=e.indexOf(":"),n=r.trim(e.substr(0,a)).toLowerCase(),t=r.trim(e.substr(a+1)),n){if(o[n]&&i.indexOf(n)>=0)return;o[n]="set-cookie"===n?(o[n]?o[n]:[]).concat([t]):o[n]?o[n]+", "+t:t}}),o):o}},function(e,n,t){"use strict";var r=t(0);e.exports=r.isStandardBrowserEnv()?function(){var e,n=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");function i(e){var r=e;return n&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return e=i(window.location.href),function(n){var t=r.isString(n)?i(n):n;return t.protocol===e.protocol&&t.host===e.host}}():function(){return!0}},function(e,n,t){"use strict";var r=t(0);e.exports=r.isStandardBrowserEnv()?{write:function(e,n,t,i,a,o){var u=[];u.push(e+"="+encodeURIComponent(n)),r.isNumber(t)&&u.push("expires="+new Date(t).toGMTString()),r.isString(i)&&u.push("path="+i),r.isString(a)&&u.push("domain="+a),!0===o&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var n=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,n,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,n,t){"use strict";e.exports=function(e,n){return n?e.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):e}},function(e,n,t){"use strict";var r=t(12);function i(e){if("function"!==typeof e)throw new TypeError("executor must be a function.");var n;this.promise=new Promise(function(e){n=e});var t=this;e(function(e){t.reason||(t.reason=new r(e),n(t.reason))})}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i(function(n){e=n}),cancel:e}},e.exports=i},function(e,n,t){"use strict";e.exports=function(e){return function(n){return e.apply(null,n)}}},function(e,n,t){"use strict";function r(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=[],r=!0,i=!1,a=void 0;try{for(var o,u=e[Symbol.iterator]();!(r=(o=u.next()).done)&&(t.push(o.value),!n||t.length!==n);r=!0);}catch(s){i=!0,a=s}finally{try{r||null==u.return||u.return()}finally{if(i)throw a}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}t.r(n);var i=t(1),a=t.n(i);function o(e){return function(e){if(Array.isArray(e)){for(var n=0,t=new Array(e.length);n=300)&&w.postMessage({action:"error",error:"Failed to load remote file"}),this.byteLength=parseInt(t.getResponseHeader("Content-Length")),this.url=n,this.buffer=new Uint8Array(this.byteLength),this.chunks=new Uint8Array(this.byteLength+R-1>>20|0)}var n,t,r;return n=e,(t=[{key:"subarray",value:function(e,n){for(var t=e/R|0,r=(n+R-1)/R|0,i=r,a=t,o=t;o=300)w.postMessage({action:"error",error:"Failed to load remote file"});else{var s,c=u.getResponseHeader("Content-Range"),l=0;c&&(s=c.match(/bytes (\d+)-(\d+)\/(\d+)/))&&(l=parseInt(s[1])),this.buffer.set(new Uint8Array(u.response),l),t=(l+R-1)/R|0,r=(l+u.response.byteLength+R-1)/R|0;for(var f=t;f=0?j?"spawn".concat(e,".sv"):"single_".concat(e,".sv"):null})},get_file_size:function(e){var n=S.get(e.toLowerCase());return n?n.byteLength:0},get_file_contents:function(e,n,t){var r=S.get(e.toLowerCase());r&&n.set(r.subarray(t,t+n.byteLength))},put_file_contents:function(e,n){e=e.toLowerCase(),S.set(e,n),w.postMessage({action:"fs",func:"update",params:[e,n]})},remove_file:function(e){e=e.toLowerCase(),S.delete(e),w.postMessage({action:"fs",func:"delete",params:[e]})},set_cursor:function(e,n){w.postMessage({action:"cursor",x:e,y:n})},open_keyboard:function(){for(var e=arguments.length,n=new Array(e),t=0;t>16&255,a=r>>8&255,o=255&r;T.fillStyle="rgb(".concat(i,", ").concat(a,", ").concat(o,")"),T.fillText(t,e,n+22)},draw_end:function(){T.restore();var e=A.transferToImageBitmap(),n=[e];x&&n.push(x.buffer),w.postMessage({action:"render",batch:{bitmap:e,belt:x}},n),x=null},draw_belt:function(e){x=e.slice()}},k=null,I=null,P=0,B=0;["create_sound_raw","create_sound","duplicate_sound"].forEach(function(e){N[e]=function(){for(var n=arguments.length,t=new Array(n),r=0;r=P?k.push({func:e,params:t}):w.postMessage({action:"audio",func:e,params:t})}});var U=null;N.websocket_send=function(e){U?U.push(e.slice().buffer):w.postMessage({action:"packet",buffer:e})},w.DApi=N;var F=null;function W(e){try{e()}catch(n){"string"===typeof n&&w.postMessage({action:""}),w.postMessage({action:"error",error:n.toString(),stack:n.stack})}}function H(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),r=1;r1)for(var t=1;t=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!==typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!==typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),u=o,s=0;s=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!==typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!==typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var u=e.charCodeAt(o);if(47!==u)-1===r&&(i=!1,r=o+1),46===u?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(2))},function(e,n,t){"use strict";e.exports=function(e,n){return function(){for(var t=new Array(arguments.length),r=0;r=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],function(e){u.headers[e]={}}),r.forEach(["post","put","patch"],function(e){u.headers[e]=r.merge(a)}),e.exports=u}).call(this,t(2))},function(e,n,t){"use strict";var r=t(0),i=t(26),a=t(6),o=t(28),u=t(29),s=t(10);e.exports=function(e){return new Promise(function(n,c){var l=e.data,f=e.headers;r.isFormData(l)&&delete f["Content-Type"];var _=new XMLHttpRequest;if(e.auth){var p=e.auth.username||"",d=e.auth.password||"";f.Authorization="Basic "+btoa(p+":"+d)}if(_.open(e.method.toUpperCase(),a(e.url,e.params,e.paramsSerializer),!0),_.timeout=e.timeout,_.onreadystatechange=function(){if(_&&4===_.readyState&&(0!==_.status||_.responseURL&&0===_.responseURL.indexOf("file:"))){var t="getAllResponseHeaders"in _?o(_.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?_.response:_.responseText,status:_.status,statusText:_.statusText,headers:t,config:e,request:_};i(n,c,r),_=null}},_.onabort=function(){_&&(c(s("Request aborted",e,"ECONNABORTED",_)),_=null)},_.onerror=function(){c(s("Network Error",e,null,_)),_=null},_.ontimeout=function(){c(s("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",_)),_=null},r.isStandardBrowserEnv()){var m=t(30),y=(e.withCredentials||u(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(f[e.xsrfHeaderName]=y)}if("setRequestHeader"in _&&r.forEach(f,function(e,n){"undefined"===typeof l&&"content-type"===n.toLowerCase()?delete f[n]:_.setRequestHeader(n,e)}),e.withCredentials&&(_.withCredentials=!0),e.responseType)try{_.responseType=e.responseType}catch(h){if("json"!==e.responseType)throw h}"function"===typeof e.onDownloadProgress&&_.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&_.upload&&_.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){_&&(_.abort(),c(e),_=null)}),void 0===l&&(l=null),_.send(l)})}},function(e,n,t){"use strict";var r=t(27);e.exports=function(e,n,t,i,a){var o=new Error(e);return r(o,n,t,i,a)}},function(e,n,t){"use strict";var r=t(0);e.exports=function(e,n){n=n||{};var t={};return r.forEach(["url","method","params","data"],function(e){"undefined"!==typeof n[e]&&(t[e]=n[e])}),r.forEach(["headers","auth","proxy"],function(i){r.isObject(n[i])?t[i]=r.deepMerge(e[i],n[i]):"undefined"!==typeof n[i]?t[i]=n[i]:r.isObject(e[i])?t[i]=r.deepMerge(e[i]):"undefined"!==typeof e[i]&&(t[i]=e[i])}),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],function(r){"undefined"!==typeof n[r]?t[r]=n[r]:"undefined"!==typeof e[r]&&(t[r]=e[r])}),t}},function(e,n,t){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,n,t){e.exports=t.p+"static/media/Diablo.3991174f.wasm"},function(e,n,t){(function(n,r){var i=function(){var e="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;return function(i){var a,o="undefined"!==typeof(i=i||{})?i:{},u={};for(a in o)o.hasOwnProperty(a)&&(u[a]=o[a]);o.arguments=[],o.thisProgram="./this.program",o.quit=function(e,n){throw n},o.preRun=[],o.postRun=[];var s,c,l=!1,f=!1;l="object"===typeof window,f="function"===typeof importScripts,s="object"===typeof n&&!l&&!f,c=!l&&!s&&!f;var _,p,d="";function m(e){return o.locateFile?o.locateFile(e,d):d+e}s?(d=r+"/",o.read=function(e,n){var r;return _||(_=t(3)),p||(p=t(4)),e=p.normalize(e),r=_.readFileSync(e),n?r:r.toString()},o.readBinary=function(e){var n=o.read(e,!0);return n.buffer||(n=new Uint8Array(n)),A(n.buffer),n},n.argv.length>1&&(o.thisProgram=n.argv[1].replace(/\\/g,"/")),o.arguments=n.argv.slice(2),n.on("uncaughtException",function(e){if(!(e instanceof Re))throw e}),n.on("unhandledRejection",function(e,t){n.exit(1)}),o.quit=function(e){n.exit(e)},o.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(o.read=function(e){return read(e)}),o.readBinary=function(e){var n;return"function"===typeof readbuffer?new Uint8Array(readbuffer(e)):(A("object"===typeof(n=read(e,"binary"))),n)},"undefined"!=typeof scriptArgs?o.arguments=scriptArgs:"undefined"!=typeof arguments&&(o.arguments=arguments),"function"===typeof quit&&(o.quit=function(e){quit(e)})):(l||f)&&(l?document.currentScript&&(d=document.currentScript.src):d=self.location.href,e&&(d=e),d=0!==d.indexOf("blob:")?d.split("/").slice(0,-1).join("/")+"/":"",o.read=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.send(null),n.responseText},f&&(o.readBinary=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),o.readAsync=function(e,n,t){var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?n(r.response):t()},r.onerror=t,r.send(null)},o.setWindowTitle=function(e){document.title=e});var y=o.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),h=o.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||y);for(a in u)u.hasOwnProperty(a)&&(o[a]=u[a]);u=void 0;var v=16;function g(e){var n=N;return N=N+e+15&-16,n}function b(e,n){return n||(n=v),e=Math.ceil(e/n)*n}var E={"f64-rem":function(e,n){return e%n},debugger:function(){}};new Array(0);var w=0;function A(e,n){e||Ne("Assertion failed: "+n)}function T(e,n){if(0===n||!e)return"";for(var t,r=0,i=0;r|=t=j[e+i>>0],(0!=t||n)&&(i++,!n||i!=n););n||(n=i);var a="";if(r<128){for(var o;n>0;)o=String.fromCharCode.apply(String,j.subarray(e,e+Math.min(n,1024))),a=a?a+o:o,e+=1024,n-=1024;return a}return function(e){return S(j,e)}(e)}var C="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function S(e,n){for(var t=n;e[t];)++t;if(t-n>16&&e.subarray&&C)return C.decode(e.subarray(n,t));for(var r,i,a,o,u,s="";;){if(!(r=e[n++]))return s;if(128&r)if(i=63&e[n++],192!=(224&r))if(a=63&e[n++],224==(240&r)?r=(15&r)<<12|i<<6|a:(o=63&e[n++],240==(248&r)?r=(7&r)<<18|i<<12|a<<6|o:(u=63&e[n++],r=248==(252&r)?(3&r)<<24|i<<18|a<<12|o<<6|u:(1&r)<<30|i<<24|a<<18|o<<12|u<<6|63&e[n++])),r<65536)s+=String.fromCharCode(r);else{var c=r-65536;s+=String.fromCharCode(55296|c>>10,56320|1023&c)}else s+=String.fromCharCode((31&r)<<6|i);else s+=String.fromCharCode(r)}}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");var O,x,j,R,D,N,M,L,k,I,P,B=65536,U=16777216,F=16777216;function W(e,n){return e%n>0&&(e+=n-e%n),e}function H(e){o.buffer=O=e}function G(){o.HEAP8=x=new Int8Array(O),o.HEAP16=new Int16Array(O),o.HEAP32=R=new Int32Array(O),o.HEAPU8=j=new Uint8Array(O),o.HEAPU16=new Uint16Array(O),o.HEAPU32=new Uint32Array(O),o.HEAPF32=D=new Float32Array(O),o.HEAPF64=new Float64Array(O)}function q(){var e=o.usingWasm?B:U,n=2147483648-e;if(R[P>>2]>n)return!1;var t=K;for(K=Math.max(K,F);K>2];)K=K<=536870912?W(2*K,e):Math.min(W((3*K+2147483648)/4,e),n);var r=o.reallocBuffer(K);return r&&r.byteLength==K?(H(r),G(),!0):(K=t,!1)}N=L=P=0,o.reallocBuffer||(o.reallocBuffer=function(e){var n;try{if(ArrayBuffer.transfer)n=ArrayBuffer.transfer(O,e);else{var t=x;n=new ArrayBuffer(e),new Int8Array(n).set(t)}}catch(r){return!1}return!!Te(n)&&n});try{Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get)(new ArrayBuffer(4))}catch(Me){(function(e){return e.byteLength})}var z=o.TOTAL_STACK||5242880,K=o.TOTAL_MEMORY||134217728;function X(e){for(;e.length>0;){var n=e.shift();if("function"!=typeof n){var t=n.func;"number"===typeof t?void 0===n.arg?o.dynCall_v(t):o.dynCall_vi(t,n.arg):t(void 0===n.arg?null:n.arg)}else n()}}K0),n.refcount--,0!==n.refcount||n.rethrown||(n.destructor&&o.dynCall_vi(n.destructor,e),delete le.infos[e],fe(e))}},clearRef:function(e){e&&(le.infos[e].refcount=0)}};function fe(e){try{return Ce(e)}catch(Me){}}function _e(){var e=le.last;if(!e)return 0|(Oe(0),0);var n=le.infos[e],t=n.type;if(!t)return 0|(Oe(0),e);var r=Array.prototype.slice.call(arguments);o.___cxa_is_pointer_type(t);_e.buffer||(_e.buffer=Se(4)),R[_e.buffer>>2]=e,e=_e.buffer;for(var i=0;i>2],n.adjusted=e,0|(Oe(r[i]),e);return e=R[e>>2],0|(Oe(t),e)}var pe={varargs:0,get:function(e){return pe.varargs+=4,R[pe.varargs-4>>2]},getStr:function(){return T(pe.get())},get64:function(){var e=pe.get(),n=pe.get();return A(e>=0?0===n:-1===n),e},getZero:function(){A(0===pe.get())}};function de(e,n){pe.varargs=n;try{var t=pe.get(),r=pe.get(),i=pe.get(),a=0;de.buffers||(de.buffers=[null,[],[]],de.printChar=function(e,n){var t=de.buffers[e];A(t),0===n||10===n?((1===e?y:h)(S(t,0)),t.length=0):t.push(n)});for(var o=0;o>2],s=R[r+(8*o+4)>>2],c=0;c>2]=I;o.wasmTableSize=1114,o.wasmMaxTableSize=1114,o.asmGlobalArg={},o.asmLibraryArg={abort:Ne,assert:A,enlargeMemory:q,getTotalMemory:function(){return K},abortOnCannotGrowMemory:function(){Ne("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+K+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_i:function(e){var n=je();try{return o.dynCall_i(e)}catch(Me){if(xe(n),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_ii:function(e,n){var t=je();try{return o.dynCall_ii(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iii:function(e,n,t){var r=je();try{return o.dynCall_iii(e,n,t)}catch(Me){if(xe(r),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiii:function(e,n,t,r){var i=je();try{return o.dynCall_iiii(e,n,t,r)}catch(Me){if(xe(i),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiiii:function(e,n,t,r,i){var a=je();try{return o.dynCall_iiiii(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiiiii:function(e,n,t,r,i,a){var u=je();try{return o.dynCall_iiiiii(e,n,t,r,i,a)}catch(Me){if(xe(u),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_ji:function(e,n){var t=je();try{return o.dynCall_ji(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_v:function(e){var n=je();try{o.dynCall_v(e)}catch(Me){if(xe(n),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_vi:function(e,n){var t=je();try{o.dynCall_vi(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_vii:function(e,n,t){var r=je();try{o.dynCall_vii(e,n,t)}catch(Me){if(xe(r),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viii:function(e,n,t,r){var i=je();try{o.dynCall_viii(e,n,t,r)}catch(Me){if(xe(i),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiii:function(e,n,t,r,i){var a=je();try{o.dynCall_viiii(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiii:function(e,n,t,r,i,a){var u=je();try{o.dynCall_viiiii(e,n,t,r,i,a)}catch(Me){if(xe(u),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiii:function(e,n,t,r,i,a,u){var s=je();try{o.dynCall_viiiiii(e,n,t,r,i,a,u)}catch(Me){if(xe(s),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiii:function(e,n,t,r,i,a,u,s){var c=je();try{o.dynCall_viiiiiii(e,n,t,r,i,a,u,s)}catch(Me){if(xe(c),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiiiii:function(e,n,t,r,i,a,u,s,c,l){var f=je();try{o.dynCall_viiiiiiiii(e,n,t,r,i,a,u,s,c,l)}catch(Me){if(xe(f),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiiiiii:function(e,n,t,r,i,a,u,s,c,l,f){var _=je();try{o.dynCall_viiiiiiiiii(e,n,t,r,i,a,u,s,c,l,f)}catch(Me){if(xe(_),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viij:function(e,n,t,r,i){var a=je();try{o.dynCall_viij(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viji:function(e,n,t,r,i){var a=je();try{o.dynCall_viji(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},__ZSt18uncaught_exceptionv:ce,___assert_fail:function(e,n,t,r){Ne("Assertion failed: "+T(e)+", at: "+[n?T(n):"unknown filename",t,r?T(r):"unknown function"])},___cxa_allocate_exception:function(e){return Se(e)},___cxa_begin_catch:function(e){var n=le.infos[e];return n&&!n.caught&&(n.caught=!0,ce.uncaught_exception--),n&&(n.rethrown=!1),le.caught.push(e),le.addRef(le.deAdjust(e)),e},___cxa_end_catch:function(){o.setThrew(0);var e=le.caught.pop();e&&(le.decRef(le.deAdjust(e)),le.last=0)},___cxa_find_matching_catch:_e,___cxa_find_matching_catch_2:function(){return _e.apply(null,arguments)},___cxa_find_matching_catch_3:function(){return _e.apply(null,arguments)},___cxa_free_exception:fe,___cxa_get_exception_ptr:function(e){return e},___cxa_pure_virtual:function(){throw w=!0,"Pure virtual function called!"},___cxa_throw:function(e,n,t){throw le.infos[e]={ptr:e,adjusted:e,type:n,destructor:t,refcount:0,caught:!1,rethrown:!1},le.last=e,"uncaught_exception"in ce?ce.uncaught_exception++:ce.uncaught_exception=1,e},___gxx_personality_v0:function(){},___lock:function(){},___resumeException:function(e){throw le.last||(le.last=e),e},___setErrNo:function(e){return o.___errno_location&&(R[o.___errno_location()>>2]=e),e},___syscall140:function(e,n){pe.varargs=n;try{var t=pe.getStreamFromFD(),r=(pe.get(),pe.get()),i=pe.get(),a=pe.get(),o=r;return FS.llseek(t,o,a),R[i>>2]=t.position,t.getdents&&0===o&&0===a&&(t.getdents=null),0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___syscall146:de,___syscall54:function(e,n){pe.varargs=n;try{return 0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___syscall6:function(e,n){pe.varargs=n;try{var t=pe.getStreamFromFD();return FS.close(t),0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___unlock:function(){},__api_close_keyboard:function(){self.DApi.close_keyboard()},__api_open_keyboard:function(e,n,t,r,i){self.DApi.open_keyboard(e,n,t,r,i)},__exit:me,_abort:function(){o.abort()},_api_create_sound:function(e,n,t){self.DApi.create_sound(e,j.slice(n,n+t))},_api_create_sound_float:function(e,n,t,r,i){self.DApi.create_sound_raw(e,D.slice(n/4,n/4+t*r),t,r,i)},_api_delete_sound:function(e){self.DApi.delete_sound(e)},_api_draw_begin:function(){self.DApi.draw_begin()},_api_draw_belt:function(e){self.DApi.draw_belt(R.subarray(e/4,e/4+8))},_api_draw_blit:function(e,n,t,r,i){self.DApi.draw_blit(e,n,t,r,j.subarray(i,i+t*r*4))},_api_draw_clip_text:function(e,n,t,r){self.DApi.draw_clip_text(e,n,t,r)},_api_draw_end:function(){self.DApi.draw_end()},_api_draw_text:function(e,n,t,r){var i=j.indexOf(0,t),a=String.fromCharCode.apply(null,j.subarray(t,i));self.DApi.draw_text(e,n,a,r)},_api_duplicate_sound:function(e,n){self.DApi.duplicate_sound(e,n)},_api_exit_game:function(){self.DApi.exit_game()},_api_play_sound:function(e,n,t,r){self.DApi.play_sound(e,n,t,r)},_api_set_cursor:function(e,n){self.DApi.set_cursor(e,n)},_api_set_volume:function(e,n){self.DApi.set_volume(e,n)},_api_stop_sound:function(e){self.DApi.stop_sound(e)},_api_websocket_closed:function(){return self.DApi.websocket_closed()},_api_websocket_send:function(e,n){self.DApi.websocket_send(j.subarray(e,e+n))},_emscripten_asm_const_ii:function(e,n){return ue[e](n)},_emscripten_memcpy_big:function(e,n,t){return j.set(j.subarray(n,n+t),e),e},_exit:function(e){me(e)},_exit_error:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.DApi.exit_error(t)},_get_file_contents:function(e,n,t,r){var i=j.indexOf(0,e),a=String.fromCharCode.apply(null,j.subarray(e,i));self.DApi.get_file_contents(a,j.subarray(n,n+r),t)},_get_file_size:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));return self.DApi.get_file_size(t)},_llvm_ceil_f32:ye,_llvm_eh_typeid_for:function(e){return e},_llvm_trap:function(){Ne("trap!")},_pthread_getspecific:function(e){return he[e]||0},_pthread_key_create:function(e,n){return 0==e?ge.EINVAL:(R[e>>2]=ve,he[ve]=0,ve++,0)},_pthread_once:function e(n,t){e.seen||(e.seen={}),n in e.seen||(o.dynCall_v(t),e.seen[n]=1)},_pthread_setspecific:function(e,n){return e in he?(he[e]=n,0):ge.EINVAL},_put_file_contents:function(e,n,t){var r=j.indexOf(0,e),i=String.fromCharCode.apply(null,j.subarray(e,r));self.DApi.put_file_contents(i,j.slice(n,n+t))},_remove_file:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.DApi.remove_file(t)},_show_alert:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.alert(t)},_time:function(e){var n=Date.now()/1e3|0;return e&&(R[e>>2]=n),n},_trace_pop:function(){self.WASM_TRACE&&self.WASM_TRACE.pop()},_trace_push:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));console.log(t),self.WASM_TRACE=self.WASM_TRACE||[],self.WASM_TRACE.push(t)},flush_NO_FILESYSTEM:function(){var e=o._fflush;e&&e(0);var n=de.printChar;if(n){var t=de.buffers;t[1].length&&n(1,10),t[2].length&&n(2,10)}},DYNAMICTOP_PTR:P,tempDoublePtr:se,ABORT:w,STACKTOP:L,STACK_MAX:k};var be=o.asm(o.asmGlobalArg,o.asmLibraryArg,O);o.asm=be;o._DApi_AllocPacket=function(){return o.asm._DApi_AllocPacket.apply(null,arguments)},o._DApi_Char=function(){return o.asm._DApi_Char.apply(null,arguments)},o._DApi_Init=function(){return o.asm._DApi_Init.apply(null,arguments)},o._DApi_Key=function(){return o.asm._DApi_Key.apply(null,arguments)},o._DApi_Mouse=function(){return o.asm._DApi_Mouse.apply(null,arguments)},o._DApi_Render=function(){return o.asm._DApi_Render.apply(null,arguments)},o._DApi_SyncText=function(){return o.asm._DApi_SyncText.apply(null,arguments)},o._DApi_SyncTextPtr=function(){return o.asm._DApi_SyncTextPtr.apply(null,arguments)},o._SNet_InitWebsocket=function(){return o.asm._SNet_InitWebsocket.apply(null,arguments)};var Ee,we=o.__GLOBAL__sub_I_msgcmd_cpp=function(){return o.asm.__GLOBAL__sub_I_msgcmd_cpp.apply(null,arguments)},Ae=o.__GLOBAL__sub_I_snet_cpp=function(){return o.asm.__GLOBAL__sub_I_snet_cpp.apply(null,arguments)},Te=(o.___cxa_can_catch=function(){return o.asm.___cxa_can_catch.apply(null,arguments)},o.___cxa_is_pointer_type=function(){return o.asm.___cxa_is_pointer_type.apply(null,arguments)},o.___em_js___api_close_keyboard=function(){return o.asm.___em_js___api_close_keyboard.apply(null,arguments)},o.___em_js___api_open_keyboard=function(){return o.asm.___em_js___api_open_keyboard.apply(null,arguments)},o.___em_js__api_create_sound=function(){return o.asm.___em_js__api_create_sound.apply(null,arguments)},o.___em_js__api_create_sound_float=function(){return o.asm.___em_js__api_create_sound_float.apply(null,arguments)},o.___em_js__api_delete_sound=function(){return o.asm.___em_js__api_delete_sound.apply(null,arguments)},o.___em_js__api_draw_begin=function(){return o.asm.___em_js__api_draw_begin.apply(null,arguments)},o.___em_js__api_draw_belt=function(){return o.asm.___em_js__api_draw_belt.apply(null,arguments)},o.___em_js__api_draw_blit=function(){return o.asm.___em_js__api_draw_blit.apply(null,arguments)},o.___em_js__api_draw_clip_text=function(){return o.asm.___em_js__api_draw_clip_text.apply(null,arguments)},o.___em_js__api_draw_end=function(){return o.asm.___em_js__api_draw_end.apply(null,arguments)},o.___em_js__api_draw_text=function(){return o.asm.___em_js__api_draw_text.apply(null,arguments)},o.___em_js__api_duplicate_sound=function(){return o.asm.___em_js__api_duplicate_sound.apply(null,arguments)},o.___em_js__api_exit_game=function(){return o.asm.___em_js__api_exit_game.apply(null,arguments)},o.___em_js__api_play_sound=function(){return o.asm.___em_js__api_play_sound.apply(null,arguments)},o.___em_js__api_set_cursor=function(){return o.asm.___em_js__api_set_cursor.apply(null,arguments)},o.___em_js__api_set_volume=function(){return o.asm.___em_js__api_set_volume.apply(null,arguments)},o.___em_js__api_stop_sound=function(){return o.asm.___em_js__api_stop_sound.apply(null,arguments)},o.___em_js__api_websocket_closed=function(){return o.asm.___em_js__api_websocket_closed.apply(null,arguments)},o.___em_js__api_websocket_send=function(){return o.asm.___em_js__api_websocket_send.apply(null,arguments)},o.___em_js__exit_error=function(){return o.asm.___em_js__exit_error.apply(null,arguments)},o.___em_js__get_file_contents=function(){return o.asm.___em_js__get_file_contents.apply(null,arguments)},o.___em_js__get_file_size=function(){return o.asm.___em_js__get_file_size.apply(null,arguments)},o.___em_js__put_file_contents=function(){return o.asm.___em_js__put_file_contents.apply(null,arguments)},o.___em_js__remove_file=function(){return o.asm.___em_js__remove_file.apply(null,arguments)},o.___em_js__show_alert=function(){return o.asm.___em_js__show_alert.apply(null,arguments)},o.___em_js__trace_pop=function(){return o.asm.___em_js__trace_pop.apply(null,arguments)},o.___em_js__trace_push=function(){return o.asm.___em_js__trace_push.apply(null,arguments)},o._emscripten_replace_memory=function(){return o.asm._emscripten_replace_memory.apply(null,arguments)}),Ce=o._free=function(){return o.asm._free.apply(null,arguments)},Se=(o._llvm_bswap_i32=function(){return o.asm._llvm_bswap_i32.apply(null,arguments)},o._malloc=function(){return o.asm._malloc.apply(null,arguments)}),Oe=(o._memcpy=function(){return o.asm._memcpy.apply(null,arguments)},o._memmove=function(){return o.asm._memmove.apply(null,arguments)},o._memset=function(){return o.asm._memset.apply(null,arguments)},o._sbrk=function(){return o.asm._sbrk.apply(null,arguments)},o.establishStackSpace=function(){return o.asm.establishStackSpace.apply(null,arguments)},o.getTempRet0=function(){return o.asm.getTempRet0.apply(null,arguments)},o.runPostSets=function(){return o.asm.runPostSets.apply(null,arguments)},o.setTempRet0=function(){return o.asm.setTempRet0.apply(null,arguments)}),xe=(o.setThrew=function(){return o.asm.setThrew.apply(null,arguments)},o.stackAlloc=function(){return o.asm.stackAlloc.apply(null,arguments)},o.stackRestore=function(){return o.asm.stackRestore.apply(null,arguments)}),je=o.stackSave=function(){return o.asm.stackSave.apply(null,arguments)};o.dynCall_i=function(){return o.asm.dynCall_i.apply(null,arguments)},o.dynCall_ii=function(){return o.asm.dynCall_ii.apply(null,arguments)},o.dynCall_iii=function(){return o.asm.dynCall_iii.apply(null,arguments)},o.dynCall_iiii=function(){return o.asm.dynCall_iiii.apply(null,arguments)},o.dynCall_iiiii=function(){return o.asm.dynCall_iiiii.apply(null,arguments)},o.dynCall_iiiiii=function(){return o.asm.dynCall_iiiiii.apply(null,arguments)},o.dynCall_ji=function(){return o.asm.dynCall_ji.apply(null,arguments)},o.dynCall_v=function(){return o.asm.dynCall_v.apply(null,arguments)},o.dynCall_vi=function(){return o.asm.dynCall_vi.apply(null,arguments)},o.dynCall_vii=function(){return o.asm.dynCall_vii.apply(null,arguments)},o.dynCall_viii=function(){return o.asm.dynCall_viii.apply(null,arguments)},o.dynCall_viiii=function(){return o.asm.dynCall_viiii.apply(null,arguments)},o.dynCall_viiiii=function(){return o.asm.dynCall_viiiii.apply(null,arguments)},o.dynCall_viiiiii=function(){return o.asm.dynCall_viiiiii.apply(null,arguments)},o.dynCall_viiiiiii=function(){return o.asm.dynCall_viiiiiii.apply(null,arguments)},o.dynCall_viiiiiiiii=function(){return o.asm.dynCall_viiiiiiiii.apply(null,arguments)},o.dynCall_viiiiiiiiii=function(){return o.asm.dynCall_viiiiiiiiii.apply(null,arguments)},o.dynCall_viij=function(){return o.asm.dynCall_viij.apply(null,arguments)},o.dynCall_viji=function(){return o.asm.dynCall_viji.apply(null,arguments)};function Re(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}o.asm=be,o.then=function(e){if(o.calledRun)e(o);else{var n=o.onRuntimeInitialized;o.onRuntimeInitialized=function(){n&&n(),e(o)}}return o},Re.prototype=new Error,Re.prototype.constructor=Re;function De(e){function n(){o.calledRun||(o.calledRun=!0,w||($||($=!0,X(V)),X(Q),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)ee(o.postRun.shift());X(Z)}()))}e=e||o.arguments,te>0||(!function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)e=o.preRun.shift(),Y.unshift(e);var e;X(Y)}(),te>0||o.calledRun||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),n()},1)):n()))}ie=function e(){o.calledRun||De(),o.calledRun||(ie=e)},o.run=De;function Ne(e){throw o.onAbort&&o.onAbort(e),void 0!==e?(y(e),h(e),e=JSON.stringify(e)):e="",w=!0,1,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}if(o.abort=Ne,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return o.noExitRuntime=!0,De(),o.ready=new Promise(function(e,n){delete o.then,o.onAbort=function(e){n(e)},ee(function(){e(o)})}),i}}();e.exports=i}).call(this,t(2),"/")},function(e,n,t){e.exports=t.p+"static/media/DiabloSpawn.32acbb39.wasm"},function(e,n,t){(function(n,r){var i=function(){var e="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;return function(i){var a,o="undefined"!==typeof(i=i||{})?i:{},u={};for(a in o)o.hasOwnProperty(a)&&(u[a]=o[a]);o.arguments=[],o.thisProgram="./this.program",o.quit=function(e,n){throw n},o.preRun=[],o.postRun=[];var s,c,l=!1,f=!1;l="object"===typeof window,f="function"===typeof importScripts,s="object"===typeof n&&!l&&!f,c=!l&&!s&&!f;var _,p,d="";function m(e){return o.locateFile?o.locateFile(e,d):d+e}s?(d=r+"/",o.read=function(e,n){var r;return _||(_=t(3)),p||(p=t(4)),e=p.normalize(e),r=_.readFileSync(e),n?r:r.toString()},o.readBinary=function(e){var n=o.read(e,!0);return n.buffer||(n=new Uint8Array(n)),A(n.buffer),n},n.argv.length>1&&(o.thisProgram=n.argv[1].replace(/\\/g,"/")),o.arguments=n.argv.slice(2),n.on("uncaughtException",function(e){if(!(e instanceof Re))throw e}),n.on("unhandledRejection",function(e,t){n.exit(1)}),o.quit=function(e){n.exit(e)},o.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(o.read=function(e){return read(e)}),o.readBinary=function(e){var n;return"function"===typeof readbuffer?new Uint8Array(readbuffer(e)):(A("object"===typeof(n=read(e,"binary"))),n)},"undefined"!=typeof scriptArgs?o.arguments=scriptArgs:"undefined"!=typeof arguments&&(o.arguments=arguments),"function"===typeof quit&&(o.quit=function(e){quit(e)})):(l||f)&&(l?document.currentScript&&(d=document.currentScript.src):d=self.location.href,e&&(d=e),d=0!==d.indexOf("blob:")?d.split("/").slice(0,-1).join("/")+"/":"",o.read=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.send(null),n.responseText},f&&(o.readBinary=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),o.readAsync=function(e,n,t){var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?n(r.response):t()},r.onerror=t,r.send(null)},o.setWindowTitle=function(e){document.title=e});var y=o.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),h=o.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||y);for(a in u)u.hasOwnProperty(a)&&(o[a]=u[a]);u=void 0;var v=16;function g(e){var n=N;return N=N+e+15&-16,n}function b(e,n){return n||(n=v),e=Math.ceil(e/n)*n}var E={"f64-rem":function(e,n){return e%n},debugger:function(){}};new Array(0);var w=0;function A(e,n){e||Ne("Assertion failed: "+n)}function T(e,n){if(0===n||!e)return"";for(var t,r=0,i=0;r|=t=j[e+i>>0],(0!=t||n)&&(i++,!n||i!=n););n||(n=i);var a="";if(r<128){for(var o;n>0;)o=String.fromCharCode.apply(String,j.subarray(e,e+Math.min(n,1024))),a=a?a+o:o,e+=1024,n-=1024;return a}return function(e){return S(j,e)}(e)}var C="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function S(e,n){for(var t=n;e[t];)++t;if(t-n>16&&e.subarray&&C)return C.decode(e.subarray(n,t));for(var r,i,a,o,u,s="";;){if(!(r=e[n++]))return s;if(128&r)if(i=63&e[n++],192!=(224&r))if(a=63&e[n++],224==(240&r)?r=(15&r)<<12|i<<6|a:(o=63&e[n++],240==(248&r)?r=(7&r)<<18|i<<12|a<<6|o:(u=63&e[n++],r=248==(252&r)?(3&r)<<24|i<<18|a<<12|o<<6|u:(1&r)<<30|i<<24|a<<18|o<<12|u<<6|63&e[n++])),r<65536)s+=String.fromCharCode(r);else{var c=r-65536;s+=String.fromCharCode(55296|c>>10,56320|1023&c)}else s+=String.fromCharCode((31&r)<<6|i);else s+=String.fromCharCode(r)}}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");var O,x,j,R,D,N,M,L,k,I,P,B=65536,U=16777216,F=16777216;function W(e,n){return e%n>0&&(e+=n-e%n),e}function H(e){o.buffer=O=e}function G(){o.HEAP8=x=new Int8Array(O),o.HEAP16=new Int16Array(O),o.HEAP32=R=new Int32Array(O),o.HEAPU8=j=new Uint8Array(O),o.HEAPU16=new Uint16Array(O),o.HEAPU32=new Uint32Array(O),o.HEAPF32=D=new Float32Array(O),o.HEAPF64=new Float64Array(O)}function q(){var e=o.usingWasm?B:U,n=2147483648-e;if(R[P>>2]>n)return!1;var t=K;for(K=Math.max(K,F);K>2];)K=K<=536870912?W(2*K,e):Math.min(W((3*K+2147483648)/4,e),n);var r=o.reallocBuffer(K);return r&&r.byteLength==K?(H(r),G(),!0):(K=t,!1)}N=L=P=0,o.reallocBuffer||(o.reallocBuffer=function(e){var n;try{if(ArrayBuffer.transfer)n=ArrayBuffer.transfer(O,e);else{var t=x;n=new ArrayBuffer(e),new Int8Array(n).set(t)}}catch(r){return!1}return!!Te(n)&&n});try{Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get)(new ArrayBuffer(4))}catch(Me){(function(e){return e.byteLength})}var z=o.TOTAL_STACK||5242880,K=o.TOTAL_MEMORY||134217728;function X(e){for(;e.length>0;){var n=e.shift();if("function"!=typeof n){var t=n.func;"number"===typeof t?void 0===n.arg?o.dynCall_v(t):o.dynCall_vi(t,n.arg):t(void 0===n.arg?null:n.arg)}else n()}}K0),n.refcount--,0!==n.refcount||n.rethrown||(n.destructor&&o.dynCall_vi(n.destructor,e),delete le.infos[e],fe(e))}},clearRef:function(e){e&&(le.infos[e].refcount=0)}};function fe(e){try{return Ce(e)}catch(Me){}}function _e(){var e=le.last;if(!e)return 0|(Oe(0),0);var n=le.infos[e],t=n.type;if(!t)return 0|(Oe(0),e);var r=Array.prototype.slice.call(arguments);o.___cxa_is_pointer_type(t);_e.buffer||(_e.buffer=Se(4)),R[_e.buffer>>2]=e,e=_e.buffer;for(var i=0;i>2],n.adjusted=e,0|(Oe(r[i]),e);return e=R[e>>2],0|(Oe(t),e)}var pe={varargs:0,get:function(e){return pe.varargs+=4,R[pe.varargs-4>>2]},getStr:function(){return T(pe.get())},get64:function(){var e=pe.get(),n=pe.get();return A(e>=0?0===n:-1===n),e},getZero:function(){A(0===pe.get())}};function de(e,n){pe.varargs=n;try{var t=pe.get(),r=pe.get(),i=pe.get(),a=0;de.buffers||(de.buffers=[null,[],[]],de.printChar=function(e,n){var t=de.buffers[e];A(t),0===n||10===n?((1===e?y:h)(S(t,0)),t.length=0):t.push(n)});for(var o=0;o>2],s=R[r+(8*o+4)>>2],c=0;c>2]=I;o.wasmTableSize=1114,o.wasmMaxTableSize=1114,o.asmGlobalArg={},o.asmLibraryArg={abort:Ne,assert:A,enlargeMemory:q,getTotalMemory:function(){return K},abortOnCannotGrowMemory:function(){Ne("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+K+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_i:function(e){var n=je();try{return o.dynCall_i(e)}catch(Me){if(xe(n),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_ii:function(e,n){var t=je();try{return o.dynCall_ii(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iii:function(e,n,t){var r=je();try{return o.dynCall_iii(e,n,t)}catch(Me){if(xe(r),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiii:function(e,n,t,r){var i=je();try{return o.dynCall_iiii(e,n,t,r)}catch(Me){if(xe(i),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiiii:function(e,n,t,r,i){var a=je();try{return o.dynCall_iiiii(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_iiiiii:function(e,n,t,r,i,a){var u=je();try{return o.dynCall_iiiiii(e,n,t,r,i,a)}catch(Me){if(xe(u),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_ji:function(e,n){var t=je();try{return o.dynCall_ji(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_v:function(e){var n=je();try{o.dynCall_v(e)}catch(Me){if(xe(n),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_vi:function(e,n){var t=je();try{o.dynCall_vi(e,n)}catch(Me){if(xe(t),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_vii:function(e,n,t){var r=je();try{o.dynCall_vii(e,n,t)}catch(Me){if(xe(r),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viii:function(e,n,t,r){var i=je();try{o.dynCall_viii(e,n,t,r)}catch(Me){if(xe(i),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiii:function(e,n,t,r,i){var a=je();try{o.dynCall_viiii(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiii:function(e,n,t,r,i,a){var u=je();try{o.dynCall_viiiii(e,n,t,r,i,a)}catch(Me){if(xe(u),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiii:function(e,n,t,r,i,a,u){var s=je();try{o.dynCall_viiiiii(e,n,t,r,i,a,u)}catch(Me){if(xe(s),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiii:function(e,n,t,r,i,a,u,s){var c=je();try{o.dynCall_viiiiiii(e,n,t,r,i,a,u,s)}catch(Me){if(xe(c),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiiiii:function(e,n,t,r,i,a,u,s,c,l){var f=je();try{o.dynCall_viiiiiiiii(e,n,t,r,i,a,u,s,c,l)}catch(Me){if(xe(f),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viiiiiiiiii:function(e,n,t,r,i,a,u,s,c,l,f){var _=je();try{o.dynCall_viiiiiiiiii(e,n,t,r,i,a,u,s,c,l,f)}catch(Me){if(xe(_),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viij:function(e,n,t,r,i){var a=je();try{o.dynCall_viij(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},invoke_viji:function(e,n,t,r,i){var a=je();try{o.dynCall_viji(e,n,t,r,i)}catch(Me){if(xe(a),"number"!==typeof Me&&"longjmp"!==Me)throw Me;o.setThrew(1,0)}},__ZSt18uncaught_exceptionv:ce,___assert_fail:function(e,n,t,r){Ne("Assertion failed: "+T(e)+", at: "+[n?T(n):"unknown filename",t,r?T(r):"unknown function"])},___cxa_allocate_exception:function(e){return Se(e)},___cxa_begin_catch:function(e){var n=le.infos[e];return n&&!n.caught&&(n.caught=!0,ce.uncaught_exception--),n&&(n.rethrown=!1),le.caught.push(e),le.addRef(le.deAdjust(e)),e},___cxa_end_catch:function(){o.setThrew(0);var e=le.caught.pop();e&&(le.decRef(le.deAdjust(e)),le.last=0)},___cxa_find_matching_catch:_e,___cxa_find_matching_catch_2:function(){return _e.apply(null,arguments)},___cxa_find_matching_catch_3:function(){return _e.apply(null,arguments)},___cxa_free_exception:fe,___cxa_get_exception_ptr:function(e){return e},___cxa_pure_virtual:function(){throw w=!0,"Pure virtual function called!"},___cxa_throw:function(e,n,t){throw le.infos[e]={ptr:e,adjusted:e,type:n,destructor:t,refcount:0,caught:!1,rethrown:!1},le.last=e,"uncaught_exception"in ce?ce.uncaught_exception++:ce.uncaught_exception=1,e},___gxx_personality_v0:function(){},___lock:function(){},___resumeException:function(e){throw le.last||(le.last=e),e},___setErrNo:function(e){return o.___errno_location&&(R[o.___errno_location()>>2]=e),e},___syscall140:function(e,n){pe.varargs=n;try{var t=pe.getStreamFromFD(),r=(pe.get(),pe.get()),i=pe.get(),a=pe.get(),o=r;return FS.llseek(t,o,a),R[i>>2]=t.position,t.getdents&&0===o&&0===a&&(t.getdents=null),0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___syscall146:de,___syscall54:function(e,n){pe.varargs=n;try{return 0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___syscall6:function(e,n){pe.varargs=n;try{var t=pe.getStreamFromFD();return FS.close(t),0}catch(Me){return"undefined"!==typeof FS&&Me instanceof FS.ErrnoError||Ne(Me),-Me.errno}},___unlock:function(){},__api_close_keyboard:function(){self.DApi.close_keyboard()},__api_open_keyboard:function(e,n,t,r,i){self.DApi.open_keyboard(e,n,t,r,i)},__exit:me,_abort:function(){o.abort()},_api_create_sound:function(e,n,t){self.DApi.create_sound(e,j.slice(n,n+t))},_api_create_sound_float:function(e,n,t,r,i){self.DApi.create_sound_raw(e,D.slice(n/4,n/4+t*r),t,r,i)},_api_delete_sound:function(e){self.DApi.delete_sound(e)},_api_draw_begin:function(){self.DApi.draw_begin()},_api_draw_belt:function(e){self.DApi.draw_belt(R.subarray(e/4,e/4+8))},_api_draw_blit:function(e,n,t,r,i){self.DApi.draw_blit(e,n,t,r,j.subarray(i,i+t*r*4))},_api_draw_clip_text:function(e,n,t,r){self.DApi.draw_clip_text(e,n,t,r)},_api_draw_end:function(){self.DApi.draw_end()},_api_draw_text:function(e,n,t,r){var i=j.indexOf(0,t),a=String.fromCharCode.apply(null,j.subarray(t,i));self.DApi.draw_text(e,n,a,r)},_api_duplicate_sound:function(e,n){self.DApi.duplicate_sound(e,n)},_api_exit_game:function(){self.DApi.exit_game()},_api_play_sound:function(e,n,t,r){self.DApi.play_sound(e,n,t,r)},_api_set_cursor:function(e,n){self.DApi.set_cursor(e,n)},_api_set_volume:function(e,n){self.DApi.set_volume(e,n)},_api_stop_sound:function(e){self.DApi.stop_sound(e)},_api_websocket_closed:function(){return self.DApi.websocket_closed()},_api_websocket_send:function(e,n){self.DApi.websocket_send(j.subarray(e,e+n))},_emscripten_asm_const_ii:function(e,n){return ue[e](n)},_emscripten_memcpy_big:function(e,n,t){return j.set(j.subarray(n,n+t),e),e},_exit:function(e){me(e)},_exit_error:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.DApi.exit_error(t)},_get_file_contents:function(e,n,t,r){var i=j.indexOf(0,e),a=String.fromCharCode.apply(null,j.subarray(e,i));self.DApi.get_file_contents(a,j.subarray(n,n+r),t)},_get_file_size:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));return self.DApi.get_file_size(t)},_llvm_ceil_f32:ye,_llvm_eh_typeid_for:function(e){return e},_llvm_trap:function(){Ne("trap!")},_pthread_getspecific:function(e){return he[e]||0},_pthread_key_create:function(e,n){return 0==e?ge.EINVAL:(R[e>>2]=ve,he[ve]=0,ve++,0)},_pthread_once:function e(n,t){e.seen||(e.seen={}),n in e.seen||(o.dynCall_v(t),e.seen[n]=1)},_pthread_setspecific:function(e,n){return e in he?(he[e]=n,0):ge.EINVAL},_put_file_contents:function(e,n,t){var r=j.indexOf(0,e),i=String.fromCharCode.apply(null,j.subarray(e,r));self.DApi.put_file_contents(i,j.slice(n,n+t))},_remove_file:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.DApi.remove_file(t)},_show_alert:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));self.alert(t)},_time:function(e){var n=Date.now()/1e3|0;return e&&(R[e>>2]=n),n},_trace_pop:function(){self.WASM_TRACE&&self.WASM_TRACE.pop()},_trace_push:function(e){var n=j.indexOf(0,e),t=String.fromCharCode.apply(null,j.subarray(e,n));console.log(t),self.WASM_TRACE=self.WASM_TRACE||[],self.WASM_TRACE.push(t)},flush_NO_FILESYSTEM:function(){var e=o._fflush;e&&e(0);var n=de.printChar;if(n){var t=de.buffers;t[1].length&&n(1,10),t[2].length&&n(2,10)}},DYNAMICTOP_PTR:P,tempDoublePtr:se,ABORT:w,STACKTOP:L,STACK_MAX:k};var be=o.asm(o.asmGlobalArg,o.asmLibraryArg,O);o.asm=be;o._DApi_AllocPacket=function(){return o.asm._DApi_AllocPacket.apply(null,arguments)},o._DApi_Char=function(){return o.asm._DApi_Char.apply(null,arguments)},o._DApi_Init=function(){return o.asm._DApi_Init.apply(null,arguments)},o._DApi_Key=function(){return o.asm._DApi_Key.apply(null,arguments)},o._DApi_Mouse=function(){return o.asm._DApi_Mouse.apply(null,arguments)},o._DApi_Render=function(){return o.asm._DApi_Render.apply(null,arguments)},o._DApi_SyncText=function(){return o.asm._DApi_SyncText.apply(null,arguments)},o._DApi_SyncTextPtr=function(){return o.asm._DApi_SyncTextPtr.apply(null,arguments)},o._SNet_InitWebsocket=function(){return o.asm._SNet_InitWebsocket.apply(null,arguments)};var Ee,we=o.__GLOBAL__sub_I_msgcmd_cpp=function(){return o.asm.__GLOBAL__sub_I_msgcmd_cpp.apply(null,arguments)},Ae=o.__GLOBAL__sub_I_snet_cpp=function(){return o.asm.__GLOBAL__sub_I_snet_cpp.apply(null,arguments)},Te=(o.___cxa_can_catch=function(){return o.asm.___cxa_can_catch.apply(null,arguments)},o.___cxa_is_pointer_type=function(){return o.asm.___cxa_is_pointer_type.apply(null,arguments)},o.___em_js___api_close_keyboard=function(){return o.asm.___em_js___api_close_keyboard.apply(null,arguments)},o.___em_js___api_open_keyboard=function(){return o.asm.___em_js___api_open_keyboard.apply(null,arguments)},o.___em_js__api_create_sound=function(){return o.asm.___em_js__api_create_sound.apply(null,arguments)},o.___em_js__api_create_sound_float=function(){return o.asm.___em_js__api_create_sound_float.apply(null,arguments)},o.___em_js__api_delete_sound=function(){return o.asm.___em_js__api_delete_sound.apply(null,arguments)},o.___em_js__api_draw_begin=function(){return o.asm.___em_js__api_draw_begin.apply(null,arguments)},o.___em_js__api_draw_belt=function(){return o.asm.___em_js__api_draw_belt.apply(null,arguments)},o.___em_js__api_draw_blit=function(){return o.asm.___em_js__api_draw_blit.apply(null,arguments)},o.___em_js__api_draw_clip_text=function(){return o.asm.___em_js__api_draw_clip_text.apply(null,arguments)},o.___em_js__api_draw_end=function(){return o.asm.___em_js__api_draw_end.apply(null,arguments)},o.___em_js__api_draw_text=function(){return o.asm.___em_js__api_draw_text.apply(null,arguments)},o.___em_js__api_duplicate_sound=function(){return o.asm.___em_js__api_duplicate_sound.apply(null,arguments)},o.___em_js__api_exit_game=function(){return o.asm.___em_js__api_exit_game.apply(null,arguments)},o.___em_js__api_play_sound=function(){return o.asm.___em_js__api_play_sound.apply(null,arguments)},o.___em_js__api_set_cursor=function(){return o.asm.___em_js__api_set_cursor.apply(null,arguments)},o.___em_js__api_set_volume=function(){return o.asm.___em_js__api_set_volume.apply(null,arguments)},o.___em_js__api_stop_sound=function(){return o.asm.___em_js__api_stop_sound.apply(null,arguments)},o.___em_js__api_websocket_closed=function(){return o.asm.___em_js__api_websocket_closed.apply(null,arguments)},o.___em_js__api_websocket_send=function(){return o.asm.___em_js__api_websocket_send.apply(null,arguments)},o.___em_js__exit_error=function(){return o.asm.___em_js__exit_error.apply(null,arguments)},o.___em_js__get_file_contents=function(){return o.asm.___em_js__get_file_contents.apply(null,arguments)},o.___em_js__get_file_size=function(){return o.asm.___em_js__get_file_size.apply(null,arguments)},o.___em_js__put_file_contents=function(){return o.asm.___em_js__put_file_contents.apply(null,arguments)},o.___em_js__remove_file=function(){return o.asm.___em_js__remove_file.apply(null,arguments)},o.___em_js__show_alert=function(){return o.asm.___em_js__show_alert.apply(null,arguments)},o.___em_js__trace_pop=function(){return o.asm.___em_js__trace_pop.apply(null,arguments)},o.___em_js__trace_push=function(){return o.asm.___em_js__trace_push.apply(null,arguments)},o._emscripten_replace_memory=function(){return o.asm._emscripten_replace_memory.apply(null,arguments)}),Ce=o._free=function(){return o.asm._free.apply(null,arguments)},Se=(o._llvm_bswap_i32=function(){return o.asm._llvm_bswap_i32.apply(null,arguments)},o._malloc=function(){return o.asm._malloc.apply(null,arguments)}),Oe=(o._memcpy=function(){return o.asm._memcpy.apply(null,arguments)},o._memmove=function(){return o.asm._memmove.apply(null,arguments)},o._memset=function(){return o.asm._memset.apply(null,arguments)},o._sbrk=function(){return o.asm._sbrk.apply(null,arguments)},o.establishStackSpace=function(){return o.asm.establishStackSpace.apply(null,arguments)},o.getTempRet0=function(){return o.asm.getTempRet0.apply(null,arguments)},o.runPostSets=function(){return o.asm.runPostSets.apply(null,arguments)},o.setTempRet0=function(){return o.asm.setTempRet0.apply(null,arguments)}),xe=(o.setThrew=function(){return o.asm.setThrew.apply(null,arguments)},o.stackAlloc=function(){return o.asm.stackAlloc.apply(null,arguments)},o.stackRestore=function(){return o.asm.stackRestore.apply(null,arguments)}),je=o.stackSave=function(){return o.asm.stackSave.apply(null,arguments)};o.dynCall_i=function(){return o.asm.dynCall_i.apply(null,arguments)},o.dynCall_ii=function(){return o.asm.dynCall_ii.apply(null,arguments)},o.dynCall_iii=function(){return o.asm.dynCall_iii.apply(null,arguments)},o.dynCall_iiii=function(){return o.asm.dynCall_iiii.apply(null,arguments)},o.dynCall_iiiii=function(){return o.asm.dynCall_iiiii.apply(null,arguments)},o.dynCall_iiiiii=function(){return o.asm.dynCall_iiiiii.apply(null,arguments)},o.dynCall_ji=function(){return o.asm.dynCall_ji.apply(null,arguments)},o.dynCall_v=function(){return o.asm.dynCall_v.apply(null,arguments)},o.dynCall_vi=function(){return o.asm.dynCall_vi.apply(null,arguments)},o.dynCall_vii=function(){return o.asm.dynCall_vii.apply(null,arguments)},o.dynCall_viii=function(){return o.asm.dynCall_viii.apply(null,arguments)},o.dynCall_viiii=function(){return o.asm.dynCall_viiii.apply(null,arguments)},o.dynCall_viiiii=function(){return o.asm.dynCall_viiiii.apply(null,arguments)},o.dynCall_viiiiii=function(){return o.asm.dynCall_viiiiii.apply(null,arguments)},o.dynCall_viiiiiii=function(){return o.asm.dynCall_viiiiiii.apply(null,arguments)},o.dynCall_viiiiiiiii=function(){return o.asm.dynCall_viiiiiiiii.apply(null,arguments)},o.dynCall_viiiiiiiiii=function(){return o.asm.dynCall_viiiiiiiiii.apply(null,arguments)},o.dynCall_viij=function(){return o.asm.dynCall_viij.apply(null,arguments)},o.dynCall_viji=function(){return o.asm.dynCall_viji.apply(null,arguments)};function Re(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}o.asm=be,o.then=function(e){if(o.calledRun)e(o);else{var n=o.onRuntimeInitialized;o.onRuntimeInitialized=function(){n&&n(),e(o)}}return o},Re.prototype=new Error,Re.prototype.constructor=Re;function De(e){function n(){o.calledRun||(o.calledRun=!0,w||($||($=!0,X(V)),X(Q),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)ee(o.postRun.shift());X(Z)}()))}e=e||o.arguments,te>0||(!function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)e=o.preRun.shift(),Y.unshift(e);var e;X(Y)}(),te>0||o.calledRun||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),n()},1)):n()))}ie=function e(){o.calledRun||De(),o.calledRun||(ie=e)},o.run=De;function Ne(e){throw o.onAbort&&o.onAbort(e),void 0!==e?(y(e),h(e),e=JSON.stringify(e)):e="",w=!0,1,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}if(o.abort=Ne,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return o.noExitRuntime=!0,De(),o.ready=new Promise(function(e,n){delete o.then,o.onAbort=function(e){n(e)},ee(function(){e(o)})}),i}}();e.exports=i}).call(this,t(2),"/")},function(e,n,t){e.exports=t(19)},function(e,n,t){var r=function(e){"use strict";var n,t=Object.prototype,r=t.hasOwnProperty,i="function"===typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function s(e,n,t,r){var i=n&&n.prototype instanceof m?n:m,a=Object.create(i.prototype),o=new O(r||[]);return a._invoke=function(e,n,t){var r=l;return function(i,a){if(r===_)throw new Error("Generator is already running");if(r===p){if("throw"===i)throw a;return j()}for(t.method=i,t.arg=a;;){var o=t.delegate;if(o){var u=T(o,t);if(u){if(u===d)continue;return u}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if(r===l)throw r=p,t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);r=_;var s=c(e,n,t);if("normal"===s.type){if(r=t.done?p:f,s.arg===d)continue;return{value:s.arg,done:t.done}}"throw"===s.type&&(r=p,t.method="throw",t.arg=s.arg)}}}(e,t,o),a}function c(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(r){return{type:"throw",arg:r}}}e.wrap=s;var l="suspendedStart",f="suspendedYield",_="executing",p="completed",d={};function m(){}function y(){}function h(){}var v={};v[a]=function(){return this};var g=Object.getPrototypeOf,b=g&&g(g(x([])));b&&b!==t&&r.call(b,a)&&(v=b);var E=h.prototype=m.prototype=Object.create(v);function w(e){["next","throw","return"].forEach(function(n){e[n]=function(e){return this._invoke(n,e)}})}function A(e){var n;this._invoke=function(t,i){function a(){return new Promise(function(n,a){!function n(t,i,a,o){var u=c(e[t],e,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"===typeof l&&r.call(l,"__await")?Promise.resolve(l.__await).then(function(e){n("next",e,a,o)},function(e){n("throw",e,a,o)}):Promise.resolve(l).then(function(e){s.value=e,a(s)},function(e){return n("throw",e,a,o)})}o(u.arg)}(t,i,n,a)})}return n=n?n.then(a,a):a()}}function T(e,t){var r=e.iterator[t.method];if(r===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,T(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var i=c(r,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,d;var a=i.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,d):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function C(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function S(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function x(e){if(e){var t=e[a];if(t)return t.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function t(){for(;++i=0;--a){var o=this.tryEntries[a],u=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev=0;--t){var i=this.tryEntries[t];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),S(t),d}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var r=t.completion;if("throw"===r.type){var i=r.arg;S(t)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:x(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=n),d}},e}(e.exports);try{regeneratorRuntime=r}catch(i){Function("r","regeneratorRuntime = r")(r)}},function(e,n,t){"use strict";var r=t(0),i=t(5),a=t(21),o=t(11);function u(e){var n=new a(e),t=i(a.prototype.request,n);return r.extend(t,a.prototype,n),r.extend(t,n),t}var s=u(t(8));s.Axios=a,s.create=function(e){return u(o(s.defaults,e))},s.Cancel=t(12),s.CancelToken=t(33),s.isCancel=t(7),s.all=function(e){return Promise.all(e)},s.spread=t(34),e.exports=s,e.exports.default=s},function(e,n){e.exports=function(e){return null!=e&&null!=e.constructor&&"function"===typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},function(e,n,t){"use strict";var r=t(0),i=t(6),a=t(22),o=t(23),u=t(11);function s(e){this.defaults=e,this.interceptors={request:new a,response:new a}}s.prototype.request=function(e){"string"===typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=u(this.defaults,e)).method=e.method?e.method.toLowerCase():"get";var n=[o,void 0],t=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){n.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){n.push(e.fulfilled,e.rejected)});n.length;)t=t.then(n.shift(),n.shift());return t},s.prototype.getUri=function(e){return e=u(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],function(e){s.prototype[e]=function(n,t){return this.request(r.merge(t||{},{method:e,url:n}))}}),r.forEach(["post","put","patch"],function(e){s.prototype[e]=function(n,t,i){return this.request(r.merge(i||{},{method:e,url:n,data:t}))}}),e.exports=s},function(e,n,t){"use strict";var r=t(0);function i(){this.handlers=[]}i.prototype.use=function(e,n){return this.handlers.push({fulfilled:e,rejected:n}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,function(n){null!==n&&e(n)})},e.exports=i},function(e,n,t){"use strict";var r=t(0),i=t(24),a=t(7),o=t(8),u=t(31),s=t(32);function c(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return c(e),e.baseURL&&!u(e.url)&&(e.url=s(e.baseURL,e.url)),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(n){delete e.headers[n]}),(e.adapter||o.adapter)(e).then(function(n){return c(e),n.data=i(n.data,n.headers,e.transformResponse),n},function(n){return a(n)||(c(e),n&&n.response&&(n.response.data=i(n.response.data,n.response.headers,e.transformResponse))),Promise.reject(n)})}},function(e,n,t){"use strict";var r=t(0);e.exports=function(e,n,t){return r.forEach(t,function(t){e=t(e,n)}),e}},function(e,n,t){"use strict";var r=t(0);e.exports=function(e,n){r.forEach(e,function(t,r){r!==n&&r.toUpperCase()===n.toUpperCase()&&(e[n]=t,delete e[r])})}},function(e,n,t){"use strict";var r=t(10);e.exports=function(e,n,t){var i=t.config.validateStatus;!i||i(t.status)?e(t):n(r("Request failed with status code "+t.status,t.config,null,t.request,t))}},function(e,n,t){"use strict";e.exports=function(e,n,t,r,i){return e.config=n,t&&(e.code=t),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,n,t){"use strict";var r=t(0),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var n,t,a,o={};return e?(r.forEach(e.split("\n"),function(e){if(a=e.indexOf(":"),n=r.trim(e.substr(0,a)).toLowerCase(),t=r.trim(e.substr(a+1)),n){if(o[n]&&i.indexOf(n)>=0)return;o[n]="set-cookie"===n?(o[n]?o[n]:[]).concat([t]):o[n]?o[n]+", "+t:t}}),o):o}},function(e,n,t){"use strict";var r=t(0);e.exports=r.isStandardBrowserEnv()?function(){var e,n=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");function i(e){var r=e;return n&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return e=i(window.location.href),function(n){var t=r.isString(n)?i(n):n;return t.protocol===e.protocol&&t.host===e.host}}():function(){return!0}},function(e,n,t){"use strict";var r=t(0);e.exports=r.isStandardBrowserEnv()?{write:function(e,n,t,i,a,o){var u=[];u.push(e+"="+encodeURIComponent(n)),r.isNumber(t)&&u.push("expires="+new Date(t).toGMTString()),r.isString(i)&&u.push("path="+i),r.isString(a)&&u.push("domain="+a),!0===o&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var n=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,n,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,n,t){"use strict";e.exports=function(e,n){return n?e.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):e}},function(e,n,t){"use strict";var r=t(12);function i(e){if("function"!==typeof e)throw new TypeError("executor must be a function.");var n;this.promise=new Promise(function(e){n=e});var t=this;e(function(e){t.reason||(t.reason=new r(e),n(t.reason))})}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i(function(n){e=n}),cancel:e}},e.exports=i},function(e,n,t){"use strict";e.exports=function(e){return function(n){return e.apply(null,n)}}},function(e,n,t){"use strict";function r(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=[],r=!0,i=!1,a=void 0;try{for(var o,u=e[Symbol.iterator]();!(r=(o=u.next()).done)&&(t.push(o.value),!n||t.length!==n);r=!0);}catch(s){i=!0,a=s}finally{try{r||null==u.return||u.return()}finally{if(i)throw a}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}t.r(n);var i=t(1),a=t.n(i);function o(e){return function(e){if(Array.isArray(e)){for(var n=0,t=new Array(e.length);n=300)&&w.postMessage({action:"error",error:"Failed to load remote file"}),this.byteLength=parseInt(t.getResponseHeader("Content-Length")),this.url=n,this.buffer=new Uint8Array(this.byteLength),this.chunks=new Uint8Array(this.byteLength+R-1>>20|0)}var n,t,r;return n=e,(t=[{key:"subarray",value:function(e,n){for(var t=e/R|0,r=(n+R-1)/R|0,i=r,a=t,o=t;o=300)w.postMessage({action:"error",error:"Failed to load remote file"});else{var s,c=u.getResponseHeader("Content-Range"),l=0;c&&(s=c.match(/bytes (\d+)-(\d+)\/(\d+)/))&&(l=parseInt(s[1])),this.buffer.set(new Uint8Array(u.response),l),t=(l+R-1)/R|0,r=(l+u.response.byteLength+R-1)/R|0;for(var f=t;f=0?j?"spawn".concat(e,".sv"):"single_".concat(e,".sv"):null})},get_file_size:function(e){var n=S.get(e.toLowerCase());return n?n.byteLength:0},get_file_contents:function(e,n,t){var r=S.get(e.toLowerCase());r&&n.set(r.subarray(t,t+n.byteLength))},put_file_contents:function(e,n){e=e.toLowerCase(),S.set(e,n),w.postMessage({action:"fs",func:"update",params:[e,n]})},remove_file:function(e){e=e.toLowerCase(),S.delete(e),w.postMessage({action:"fs",func:"delete",params:[e]})},set_cursor:function(e,n){w.postMessage({action:"cursor",x:e,y:n})},open_keyboard:function(){for(var e=arguments.length,n=new Array(e),t=0;t>16&255,a=r>>8&255,o=255&r;T.fillStyle="rgb(".concat(i,", ").concat(a,", ").concat(o,")"),T.fillText(t,e,n+22)},draw_end:function(){T.restore();var e=A.transferToImageBitmap(),n=[e];x&&n.push(x.buffer),w.postMessage({action:"render",batch:{bitmap:e,belt:x}},n),x=null},draw_belt:function(e){x=e.slice()}},k=null,I=null,P=0,B=0;["create_sound_raw","create_sound","duplicate_sound"].forEach(function(e){N[e]=function(){for(var n=arguments.length,t=new Array(n),r=0;r=P?k.push({func:e,params:t}):w.postMessage({action:"audio",func:e,params:t})}});var U=null;N.websocket_send=function(e){U?U.push(e.slice().buffer):w.postMessage({action:"packet",buffer:e})},w.DApi=N;var F=null;function W(e){try{e()}catch(n){"string"===typeof n&&w.postMessage({action:""}),w.postMessage({action:"error",error:n.toString(),stack:n.stack})}}function H(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),r=1;r undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\n\n\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction merge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction deepMerge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\n\n\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};","module.exports = require(\"regenerator-runtime\");\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n} // path.resolve([from ...], to)\n// posix version\n\n\nexports.resolve = function () {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries\n\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n } // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n\n\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}; // path.normalize(path)\n// posix version\n\n\nexports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/'; // Normalize the path\n\n path = normalizeArray(filter(path.split('/'), function (p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n}; // posix version\n\n\nexports.isAbsolute = function (path) {\n return path.charAt(0) === '/';\n}; // posix version\n\n\nexports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n\n return p;\n }).join('/'));\n}; // path.relative(from, to)\n// posix version\n\n\nexports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47\n /*/*/\n ;\n var end = -1;\n var matchedSlash = true;\n\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n} // Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\n\n\nexports.basename = function (path, ext) {\n var f = basename(path);\n\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true; // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n\n var preDotState = 0;\n\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n\n continue;\n }\n\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n\n if (code === 46\n /*.*/\n ) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n\n return path.slice(startDot, end);\n};\n\nfunction filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n\n return res;\n} // String.prototype.substr - negative index don't work in IE8\n\n\nvar substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) {\n return str.substr(start, len);\n} : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n return fn.apply(thisArg, args);\n };\n};","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\n\n\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n\nvar utils = require('./utils');\n\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter; // Only Node.JS has a process variable that is of [[Class]] process\n\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); // Set the request timeout in MS\n\n request.timeout = config.timeout; // Listen for ready state\n\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n } // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(resolve, reject, response); // Clean up request\n\n request = null;\n }; // Handle browser request cancellation (as opposed to a manual cancellation)\n\n\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies'); // Add xsrf header\n\n\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n } // Add headers to the request\n\n\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n } // Add withCredentials to request if needed\n\n\n if (config.withCredentials) {\n request.withCredentials = true;\n } // Add responseType to request if needed\n\n\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel); // Clean up request\n\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","'use strict';\n\nvar utils = require('../utils');\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\n\n\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n utils.forEach(['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath'], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n return config;\n};","'use strict';\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","module.exports = __webpack_public_path__ + \"static/media/Diablo.4a6435cb.wasm\";","\r\nvar Diablo = (function() {\r\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\r\n return (\r\nfunction(Diablo) {\r\n Diablo = Diablo || {};\r\n\r\n// The Module object: Our interface to the outside world. We import\r\n// and export values on it. There are various ways Module can be used:\r\n// 1. Not defined. We create it here\r\n// 2. A function parameter, function(Module) { ..generated code.. }\r\n// 3. pre-run appended it, var Module = {}; ..generated code..\r\n// 4. External script tag defines var Module.\r\n// We need to check if Module already exists (e.g. case 3 above).\r\n// Substitution will be replaced with actual code on later stage of the build,\r\n// this way Closure Compiler will not mangle it (e.g. case 4. above).\r\n// Note that if you want to run closure, and also to use Module\r\n// after the generated code, you will need to define var Module = {};\r\n// before the code. Then that object will be used in the code, and you\r\n// can continue to use Module afterwards as well.\r\nvar Module = typeof Diablo !== 'undefined' ? Diablo : {};\r\n\r\n// --pre-jses are emitted after the Module integration code, so that they can\r\n// refer to Module (if they choose; they can also define Module)\r\n\r\n\r\n// Sometimes an existing Module object exists with properties\r\n// meant to overwrite the default module functionality. Here\r\n// we collect those properties and reapply _after_ we configure\r\n// the current environment's defaults to avoid having to be so\r\n// defensive during initialization.\r\nvar moduleOverrides = {};\r\nvar key;\r\nfor (key in Module) {\r\n if (Module.hasOwnProperty(key)) {\r\n moduleOverrides[key] = Module[key];\r\n }\r\n}\r\n\r\nModule['arguments'] = [];\r\nModule['thisProgram'] = './this.program';\r\nModule['quit'] = function(status, toThrow) {\r\n throw toThrow;\r\n};\r\nModule['preRun'] = [];\r\nModule['postRun'] = [];\r\n\r\n// The environment setup code below is customized to use Module.\r\n// *** Environment setup code ***\r\n\r\nvar ENVIRONMENT_IS_WEB = false;\r\nvar ENVIRONMENT_IS_WORKER = false;\r\nvar ENVIRONMENT_IS_NODE = false;\r\nvar ENVIRONMENT_IS_SHELL = false;\r\nENVIRONMENT_IS_WEB = typeof window === 'object';\r\nENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\r\nENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\r\nENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\r\n\r\n\r\n// Three configurations we can be running in:\r\n// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false)\r\n// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)\r\n// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)\r\n\r\n\r\n// `/` should be present at the end if `scriptDirectory` is not empty\r\nvar scriptDirectory = '';\r\nfunction locateFile(path) {\r\n if (Module['locateFile']) {\r\n return Module['locateFile'](path, scriptDirectory);\r\n } else {\r\n return scriptDirectory + path;\r\n }\r\n}\r\n\r\nif (ENVIRONMENT_IS_NODE) {\r\n scriptDirectory = __dirname + '/';\r\n\r\n // Expose functionality in the same simple way that the shells work\r\n // Note that we pollute the global namespace here, otherwise we break in node\r\n var nodeFS;\r\n var nodePath;\r\n\r\n Module['read'] = function shell_read(filename, binary) {\r\n var ret;\r\n if (!nodeFS) nodeFS = require('fs');\r\n if (!nodePath) nodePath = require('path');\r\n filename = nodePath['normalize'](filename);\r\n ret = nodeFS['readFileSync'](filename);\r\n return binary ? ret : ret.toString();\r\n };\r\n\r\n Module['readBinary'] = function readBinary(filename) {\r\n var ret = Module['read'](filename, true);\r\n if (!ret.buffer) {\r\n ret = new Uint8Array(ret);\r\n }\r\n assert(ret.buffer);\r\n return ret;\r\n };\r\n\r\n if (process['argv'].length > 1) {\r\n Module['thisProgram'] = process['argv'][1].replace(/\\\\/g, '/');\r\n }\r\n\r\n Module['arguments'] = process['argv'].slice(2);\r\n\r\n // MODULARIZE will export the module in the proper place outside, we don't need to export here\r\n\r\n process['on']('uncaughtException', function(ex) {\r\n // suppress ExitStatus exceptions from showing an error\r\n if (!(ex instanceof ExitStatus)) {\r\n throw ex;\r\n }\r\n });\r\n // Currently node will swallow unhandled rejections, but this behavior is\r\n // deprecated, and in the future it will exit with error status.\r\n process['on']('unhandledRejection', function(reason, p) {\r\n process['exit'](1);\r\n });\r\n\r\n Module['quit'] = function(status) {\r\n process['exit'](status);\r\n };\r\n\r\n Module['inspect'] = function () { return '[Emscripten Module object]'; };\r\n} else\r\nif (ENVIRONMENT_IS_SHELL) {\r\n\r\n\r\n if (typeof read != 'undefined') {\r\n Module['read'] = function shell_read(f) {\r\n return read(f);\r\n };\r\n }\r\n\r\n Module['readBinary'] = function readBinary(f) {\r\n var data;\r\n if (typeof readbuffer === 'function') {\r\n return new Uint8Array(readbuffer(f));\r\n }\r\n data = read(f, 'binary');\r\n assert(typeof data === 'object');\r\n return data;\r\n };\r\n\r\n if (typeof scriptArgs != 'undefined') {\r\n Module['arguments'] = scriptArgs;\r\n } else if (typeof arguments != 'undefined') {\r\n Module['arguments'] = arguments;\r\n }\r\n\r\n if (typeof quit === 'function') {\r\n Module['quit'] = function(status) {\r\n quit(status);\r\n }\r\n }\r\n} else\r\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\r\n if (ENVIRONMENT_IS_WEB) {\r\n if (document.currentScript) {\r\n scriptDirectory = document.currentScript.src;\r\n }\r\n } else { // worker\r\n scriptDirectory = self.location.href;\r\n }\r\n // When MODULARIZE (and not _INSTANCE), this JS may be executed later, after document.currentScript\r\n // is gone, so we saved it, and we use it here instead of any other info.\r\n if (_scriptDir) {\r\n scriptDirectory = _scriptDir;\r\n }\r\n // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them.\r\n // otherwise, slice off the final part of the url to find the script directory.\r\n if (scriptDirectory.indexOf('blob:') !== 0) {\r\n scriptDirectory = scriptDirectory.split('/').slice(0, -1).join('/') + '/';\r\n } else {\r\n scriptDirectory = '';\r\n }\r\n\r\n\r\n Module['read'] = function shell_read(url) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, false);\r\n xhr.send(null);\r\n return xhr.responseText;\r\n };\r\n\r\n if (ENVIRONMENT_IS_WORKER) {\r\n Module['readBinary'] = function readBinary(url) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, false);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send(null);\r\n return new Uint8Array(xhr.response);\r\n };\r\n }\r\n\r\n Module['readAsync'] = function readAsync(url, onload, onerror) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.onload = function xhr_onload() {\r\n if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0\r\n onload(xhr.response);\r\n return;\r\n }\r\n onerror();\r\n };\r\n xhr.onerror = onerror;\r\n xhr.send(null);\r\n };\r\n\r\n Module['setWindowTitle'] = function(title) { document.title = title };\r\n} else\r\n{\r\n}\r\n\r\n// Set up the out() and err() hooks, which are how we can print to stdout or\r\n// stderr, respectively.\r\n// If the user provided Module.print or printErr, use that. Otherwise,\r\n// console.log is checked first, as 'print' on the web will open a print dialogue\r\n// printErr is preferable to console.warn (works better in shells)\r\n// bind(console) is necessary to fix IE/Edge closed dev tools panel behavior.\r\nvar out = Module['print'] || (typeof console !== 'undefined' ? console.log.bind(console) : (typeof print !== 'undefined' ? print : null));\r\nvar err = Module['printErr'] || (typeof printErr !== 'undefined' ? printErr : ((typeof console !== 'undefined' && console.warn.bind(console)) || out));\r\n\r\n// *** Environment setup code ***\r\n\r\n// Merge back in the overrides\r\nfor (key in moduleOverrides) {\r\n if (moduleOverrides.hasOwnProperty(key)) {\r\n Module[key] = moduleOverrides[key];\r\n }\r\n}\r\n// Free the object hierarchy contained in the overrides, this lets the GC\r\n// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array.\r\nmoduleOverrides = undefined;\r\n\r\n\r\n\r\n// {{PREAMBLE_ADDITIONS}}\r\n\r\nvar STACK_ALIGN = 16;\r\n\r\n\r\nfunction staticAlloc(size) {\r\n var ret = STATICTOP;\r\n STATICTOP = (STATICTOP + size + 15) & -16;\r\n return ret;\r\n}\r\n\r\nfunction dynamicAlloc(size) {\r\n var ret = HEAP32[DYNAMICTOP_PTR>>2];\r\n var end = (ret + size + 15) & -16;\r\n HEAP32[DYNAMICTOP_PTR>>2] = end;\r\n if (end >= TOTAL_MEMORY) {\r\n var success = enlargeMemory();\r\n if (!success) {\r\n HEAP32[DYNAMICTOP_PTR>>2] = ret;\r\n return 0;\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\nfunction alignMemory(size, factor) {\r\n if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default\r\n var ret = size = Math.ceil(size / factor) * factor;\r\n return ret;\r\n}\r\n\r\nfunction getNativeTypeSize(type) {\r\n switch (type) {\r\n case 'i1': case 'i8': return 1;\r\n case 'i16': return 2;\r\n case 'i32': return 4;\r\n case 'i64': return 8;\r\n case 'float': return 4;\r\n case 'double': return 8;\r\n default: {\r\n if (type[type.length-1] === '*') {\r\n return 4; // A pointer\r\n } else if (type[0] === 'i') {\r\n var bits = parseInt(type.substr(1));\r\n assert(bits % 8 === 0);\r\n return bits / 8;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction warnOnce(text) {\r\n if (!warnOnce.shown) warnOnce.shown = {};\r\n if (!warnOnce.shown[text]) {\r\n warnOnce.shown[text] = 1;\r\n err(text);\r\n }\r\n}\r\n\r\nvar asm2wasmImports = { // special asm2wasm imports\r\n \"f64-rem\": function(x, y) {\r\n return x % y;\r\n },\r\n \"debugger\": function() {\r\n debugger;\r\n }\r\n};\r\n\r\n\r\n\r\nvar jsCallStartIndex = 1;\r\nvar functionPointers = new Array(0);\r\n\r\n// 'sig' parameter is only used on LLVM wasm backend\r\nfunction addFunction(func, sig) {\r\n var base = 0;\r\n for (var i = base; i < base + 0; i++) {\r\n if (!functionPointers[i]) {\r\n functionPointers[i] = func;\r\n return jsCallStartIndex + i;\r\n }\r\n }\r\n throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';\r\n}\r\n\r\nfunction removeFunction(index) {\r\n functionPointers[index-jsCallStartIndex] = null;\r\n}\r\n\r\nvar funcWrappers = {};\r\n\r\nfunction getFuncWrapper(func, sig) {\r\n if (!func) return; // on null pointer, return undefined\r\n assert(sig);\r\n if (!funcWrappers[sig]) {\r\n funcWrappers[sig] = {};\r\n }\r\n var sigCache = funcWrappers[sig];\r\n if (!sigCache[func]) {\r\n // optimize away arguments usage in common cases\r\n if (sig.length === 1) {\r\n sigCache[func] = function dynCall_wrapper() {\r\n return dynCall(sig, func);\r\n };\r\n } else if (sig.length === 2) {\r\n sigCache[func] = function dynCall_wrapper(arg) {\r\n return dynCall(sig, func, [arg]);\r\n };\r\n } else {\r\n // general case\r\n sigCache[func] = function dynCall_wrapper() {\r\n return dynCall(sig, func, Array.prototype.slice.call(arguments));\r\n };\r\n }\r\n }\r\n return sigCache[func];\r\n}\r\n\r\n\r\nfunction makeBigInt(low, high, unsigned) {\r\n return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0));\r\n}\r\n\r\nfunction dynCall(sig, ptr, args) {\r\n if (args && args.length) {\r\n return Module['dynCall_' + sig].apply(null, [ptr].concat(args));\r\n } else {\r\n return Module['dynCall_' + sig].call(null, ptr);\r\n }\r\n}\r\n\r\n\r\n\r\nvar Runtime = {\r\n // FIXME backwards compatibility layer for ports. Support some Runtime.*\r\n // for now, fix it there, then remove it from here. That way we\r\n // can minimize any period of breakage.\r\n dynCall: dynCall, // for SDL2 port\r\n};\r\n\r\n// The address globals begin at. Very low in memory, for code size and optimization opportunities.\r\n// Above 0 is static memory, starting with globals.\r\n// Then the stack.\r\n// Then 'dynamic' memory for sbrk.\r\nvar GLOBAL_BASE = 1024;\r\n\r\n\r\n// === Preamble library stuff ===\r\n\r\n// Documentation for the public APIs defined in this file must be updated in:\r\n// site/source/docs/api_reference/preamble.js.rst\r\n// A prebuilt local version of the documentation is available at:\r\n// site/build/text/docs/api_reference/preamble.js.txt\r\n// You can also build docs locally as HTML or other formats in site/\r\n// An online HTML version (which may be of a different version of Emscripten)\r\n// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html\r\n\r\n\r\n\r\n//========================================\r\n// Runtime essentials\r\n//========================================\r\n\r\nvar ABORT = 0; // whether we are quitting the application. no code should run after this. set in exit() and abort()\r\nvar EXITSTATUS = 0;\r\n\r\n/** @type {function(*, string=)} */\r\nfunction assert(condition, text) {\r\n if (!condition) {\r\n abort('Assertion failed: ' + text);\r\n }\r\n}\r\n\r\nvar globalScope = this;\r\n\r\n// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)\r\nfunction getCFunc(ident) {\r\n var func = Module['_' + ident]; // closure exported function\r\n assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported');\r\n return func;\r\n}\r\n\r\nvar JSfuncs = {\r\n // Helpers for cwrap -- it can't refer to Runtime directly because it might\r\n // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find\r\n // out what the minified function name is.\r\n 'stackSave': function() {\r\n stackSave()\r\n },\r\n 'stackRestore': function() {\r\n stackRestore()\r\n },\r\n // type conversion from js to c\r\n 'arrayToC' : function(arr) {\r\n var ret = stackAlloc(arr.length);\r\n writeArrayToMemory(arr, ret);\r\n return ret;\r\n },\r\n 'stringToC' : function(str) {\r\n var ret = 0;\r\n if (str !== null && str !== undefined && str !== 0) { // null string\r\n // at most 4 bytes per UTF-8 code point, +1 for the trailing '\\0'\r\n var len = (str.length << 2) + 1;\r\n ret = stackAlloc(len);\r\n stringToUTF8(str, ret, len);\r\n }\r\n return ret;\r\n }\r\n};\r\n\r\n// For fast lookup of conversion functions\r\nvar toC = {\r\n 'string': JSfuncs['stringToC'], 'array': JSfuncs['arrayToC']\r\n};\r\n\r\n\r\n// C calling interface.\r\nfunction ccall(ident, returnType, argTypes, args, opts) {\r\n function convertReturnValue(ret) {\r\n if (returnType === 'string') return Pointer_stringify(ret);\r\n if (returnType === 'boolean') return Boolean(ret);\r\n return ret;\r\n }\r\n\r\n var func = getCFunc(ident);\r\n var cArgs = [];\r\n var stack = 0;\r\n if (args) {\r\n for (var i = 0; i < args.length; i++) {\r\n var converter = toC[argTypes[i]];\r\n if (converter) {\r\n if (stack === 0) stack = stackSave();\r\n cArgs[i] = converter(args[i]);\r\n } else {\r\n cArgs[i] = args[i];\r\n }\r\n }\r\n }\r\n var ret = func.apply(null, cArgs);\r\n ret = convertReturnValue(ret);\r\n if (stack !== 0) stackRestore(stack);\r\n return ret;\r\n}\r\n\r\nfunction cwrap(ident, returnType, argTypes, opts) {\r\n argTypes = argTypes || [];\r\n // When the function takes numbers and returns a number, we can just return\r\n // the original function\r\n var numericArgs = argTypes.every(function(type){ return type === 'number'});\r\n var numericRet = returnType !== 'string';\r\n if (numericRet && numericArgs && !opts) {\r\n return getCFunc(ident);\r\n }\r\n return function() {\r\n return ccall(ident, returnType, argTypes, arguments, opts);\r\n }\r\n}\r\n\r\n/** @type {function(number, number, string, boolean=)} */\r\nfunction setValue(ptr, value, type, noSafe) {\r\n type = type || 'i8';\r\n if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\r\n switch(type) {\r\n case 'i1': HEAP8[((ptr)>>0)]=value; break;\r\n case 'i8': HEAP8[((ptr)>>0)]=value; break;\r\n case 'i16': HEAP16[((ptr)>>1)]=value; break;\r\n case 'i32': HEAP32[((ptr)>>2)]=value; break;\r\n case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;\r\n case 'float': HEAPF32[((ptr)>>2)]=value; break;\r\n case 'double': HEAPF64[((ptr)>>3)]=value; break;\r\n default: abort('invalid type for setValue: ' + type);\r\n }\r\n}\r\n\r\n/** @type {function(number, string, boolean=)} */\r\nfunction getValue(ptr, type, noSafe) {\r\n type = type || 'i8';\r\n if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\r\n switch(type) {\r\n case 'i1': return HEAP8[((ptr)>>0)];\r\n case 'i8': return HEAP8[((ptr)>>0)];\r\n case 'i16': return HEAP16[((ptr)>>1)];\r\n case 'i32': return HEAP32[((ptr)>>2)];\r\n case 'i64': return HEAP32[((ptr)>>2)];\r\n case 'float': return HEAPF32[((ptr)>>2)];\r\n case 'double': return HEAPF64[((ptr)>>3)];\r\n default: abort('invalid type for getValue: ' + type);\r\n }\r\n return null;\r\n}\r\n\r\nvar ALLOC_NORMAL = 0; // Tries to use _malloc()\r\nvar ALLOC_STACK = 1; // Lives for the duration of the current function call\r\nvar ALLOC_STATIC = 2; // Cannot be freed\r\nvar ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk\r\nvar ALLOC_NONE = 4; // Do not allocate\r\n\r\n// allocate(): This is for internal use. You can use it yourself as well, but the interface\r\n// is a little tricky (see docs right below). The reason is that it is optimized\r\n// for multiple syntaxes to save space in generated code. So you should\r\n// normally not use allocate(), and instead allocate memory using _malloc(),\r\n// initialize it with setValue(), and so forth.\r\n// @slab: An array of data, or a number. If a number, then the size of the block to allocate,\r\n// in *bytes* (note that this is sometimes confusing: the next parameter does not\r\n// affect this!)\r\n// @types: Either an array of types, one for each byte (or 0 if no type at that position),\r\n// or a single type which is used for the entire block. This only matters if there\r\n// is initial data - if @slab is a number, then this does not matter at all and is\r\n// ignored.\r\n// @allocator: How to allocate memory, see ALLOC_*\r\n/** @type {function((TypedArray|Array|number), string, number, number=)} */\r\nfunction allocate(slab, types, allocator, ptr) {\r\n var zeroinit, size;\r\n if (typeof slab === 'number') {\r\n zeroinit = true;\r\n size = slab;\r\n } else {\r\n zeroinit = false;\r\n size = slab.length;\r\n }\r\n\r\n var singleType = typeof types === 'string' ? types : null;\r\n\r\n var ret;\r\n if (allocator == ALLOC_NONE) {\r\n ret = ptr;\r\n } else {\r\n ret = [typeof _malloc === 'function' ? _malloc : staticAlloc, stackAlloc, staticAlloc, dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));\r\n }\r\n\r\n if (zeroinit) {\r\n var stop;\r\n ptr = ret;\r\n assert((ret & 3) == 0);\r\n stop = ret + (size & ~3);\r\n for (; ptr < stop; ptr += 4) {\r\n HEAP32[((ptr)>>2)]=0;\r\n }\r\n stop = ret + size;\r\n while (ptr < stop) {\r\n HEAP8[((ptr++)>>0)]=0;\r\n }\r\n return ret;\r\n }\r\n\r\n if (singleType === 'i8') {\r\n if (slab.subarray || slab.slice) {\r\n HEAPU8.set(/** @type {!Uint8Array} */ (slab), ret);\r\n } else {\r\n HEAPU8.set(new Uint8Array(slab), ret);\r\n }\r\n return ret;\r\n }\r\n\r\n var i = 0, type, typeSize, previousType;\r\n while (i < size) {\r\n var curr = slab[i];\r\n\r\n type = singleType || types[i];\r\n if (type === 0) {\r\n i++;\r\n continue;\r\n }\r\n\r\n if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later\r\n\r\n setValue(ret+i, curr, type);\r\n\r\n // no need to look up size unless type changes, so cache it\r\n if (previousType !== type) {\r\n typeSize = getNativeTypeSize(type);\r\n previousType = type;\r\n }\r\n i += typeSize;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\n// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready\r\nfunction getMemory(size) {\r\n if (!staticSealed) return staticAlloc(size);\r\n if (!runtimeInitialized) return dynamicAlloc(size);\r\n return _malloc(size);\r\n}\r\n\r\n/** @type {function(number, number=)} */\r\nfunction Pointer_stringify(ptr, length) {\r\n if (length === 0 || !ptr) return '';\r\n // Find the length, and check for UTF while doing so\r\n var hasUtf = 0;\r\n var t;\r\n var i = 0;\r\n while (1) {\r\n t = HEAPU8[(((ptr)+(i))>>0)];\r\n hasUtf |= t;\r\n if (t == 0 && !length) break;\r\n i++;\r\n if (length && i == length) break;\r\n }\r\n if (!length) length = i;\r\n\r\n var ret = '';\r\n\r\n if (hasUtf < 128) {\r\n var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack\r\n var curr;\r\n while (length > 0) {\r\n curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));\r\n ret = ret ? ret + curr : curr;\r\n ptr += MAX_CHUNK;\r\n length -= MAX_CHUNK;\r\n }\r\n return ret;\r\n }\r\n return UTF8ToString(ptr);\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nfunction AsciiToString(ptr) {\r\n var str = '';\r\n while (1) {\r\n var ch = HEAP8[((ptr++)>>0)];\r\n if (!ch) return str;\r\n str += String.fromCharCode(ch);\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP.\r\n\r\nfunction stringToAscii(str, outPtr) {\r\n return writeAsciiToMemory(str, outPtr, false);\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nvar UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined;\r\nfunction UTF8ArrayToString(u8Array, idx) {\r\n var endPtr = idx;\r\n // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.\r\n // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.\r\n while (u8Array[endPtr]) ++endPtr;\r\n\r\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\r\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\r\n } else {\r\n var u0, u1, u2, u3, u4, u5;\r\n\r\n var str = '';\r\n while (1) {\r\n // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\r\n u0 = u8Array[idx++];\r\n if (!u0) return str;\r\n if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; }\r\n u1 = u8Array[idx++] & 63;\r\n if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; }\r\n u2 = u8Array[idx++] & 63;\r\n if ((u0 & 0xF0) == 0xE0) {\r\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\r\n } else {\r\n u3 = u8Array[idx++] & 63;\r\n if ((u0 & 0xF8) == 0xF0) {\r\n u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;\r\n } else {\r\n u4 = u8Array[idx++] & 63;\r\n if ((u0 & 0xFC) == 0xF8) {\r\n u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;\r\n } else {\r\n u5 = u8Array[idx++] & 63;\r\n u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;\r\n }\r\n }\r\n }\r\n if (u0 < 0x10000) {\r\n str += String.fromCharCode(u0);\r\n } else {\r\n var ch = u0 - 0x10000;\r\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nfunction UTF8ToString(ptr) {\r\n return UTF8ArrayToString(HEAPU8,ptr);\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx',\r\n// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element.\r\n// outIdx: The starting offset in the array to begin the copying.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array.\r\n// This count should include the null terminator,\r\n// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\r\n if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes.\r\n return 0;\r\n\r\n var startIdx = outIdx;\r\n var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator.\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\r\n var u = str.charCodeAt(i); // possibly a lead surrogate\r\n if (u >= 0xD800 && u <= 0xDFFF) {\r\n var u1 = str.charCodeAt(++i);\r\n u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF);\r\n }\r\n if (u <= 0x7F) {\r\n if (outIdx >= endIdx) break;\r\n outU8Array[outIdx++] = u;\r\n } else if (u <= 0x7FF) {\r\n if (outIdx + 1 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xC0 | (u >> 6);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0xFFFF) {\r\n if (outIdx + 2 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xE0 | (u >> 12);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0x1FFFFF) {\r\n if (outIdx + 3 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xF0 | (u >> 18);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0x3FFFFFF) {\r\n if (outIdx + 4 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xF8 | (u >> 24);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else {\r\n if (outIdx + 5 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xFC | (u >> 30);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n }\r\n }\r\n // Null-terminate the pointer to the buffer.\r\n outU8Array[outIdx] = 0;\r\n return outIdx - startIdx;\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\r\n return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite);\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF8(str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var u = str.charCodeAt(i); // possibly a lead surrogate\r\n if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\r\n if (u <= 0x7F) {\r\n ++len;\r\n } else if (u <= 0x7FF) {\r\n len += 2;\r\n } else if (u <= 0xFFFF) {\r\n len += 3;\r\n } else if (u <= 0x1FFFFF) {\r\n len += 4;\r\n } else if (u <= 0x3FFFFFF) {\r\n len += 5;\r\n } else {\r\n len += 6;\r\n }\r\n }\r\n return len;\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nvar UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined;\r\nfunction UTF16ToString(ptr) {\r\n var endPtr = ptr;\r\n // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.\r\n // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.\r\n var idx = endPtr >> 1;\r\n while (HEAP16[idx]) ++idx;\r\n endPtr = idx << 1;\r\n\r\n if (endPtr - ptr > 32 && UTF16Decoder) {\r\n return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));\r\n } else {\r\n var i = 0;\r\n\r\n var str = '';\r\n while (1) {\r\n var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];\r\n if (codeUnit == 0) return str;\r\n ++i;\r\n // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.\r\n str += String.fromCharCode(codeUnit);\r\n }\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outPtr: Byte address in Emscripten HEAP where to write the string to.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null\r\n// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF16(str, outPtr, maxBytesToWrite) {\r\n // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\r\n if (maxBytesToWrite === undefined) {\r\n maxBytesToWrite = 0x7FFFFFFF;\r\n }\r\n if (maxBytesToWrite < 2) return 0;\r\n maxBytesToWrite -= 2; // Null terminator.\r\n var startPtr = outPtr;\r\n var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length;\r\n for (var i = 0; i < numCharsToWrite; ++i) {\r\n // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.\r\n var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\r\n HEAP16[((outPtr)>>1)]=codeUnit;\r\n outPtr += 2;\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n HEAP16[((outPtr)>>1)]=0;\r\n return outPtr - startPtr;\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF16(str) {\r\n return str.length*2;\r\n}\r\n\r\nfunction UTF32ToString(ptr) {\r\n var i = 0;\r\n\r\n var str = '';\r\n while (1) {\r\n var utf32 = HEAP32[(((ptr)+(i*4))>>2)];\r\n if (utf32 == 0)\r\n return str;\r\n ++i;\r\n // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n if (utf32 >= 0x10000) {\r\n var ch = utf32 - 0x10000;\r\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\r\n } else {\r\n str += String.fromCharCode(utf32);\r\n }\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outPtr: Byte address in Emscripten HEAP where to write the string to.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null\r\n// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF32(str, outPtr, maxBytesToWrite) {\r\n // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\r\n if (maxBytesToWrite === undefined) {\r\n maxBytesToWrite = 0x7FFFFFFF;\r\n }\r\n if (maxBytesToWrite < 4) return 0;\r\n var startPtr = outPtr;\r\n var endPtr = startPtr + maxBytesToWrite - 4;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\r\n if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {\r\n var trailSurrogate = str.charCodeAt(++i);\r\n codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);\r\n }\r\n HEAP32[((outPtr)>>2)]=codeUnit;\r\n outPtr += 4;\r\n if (outPtr + 4 > endPtr) break;\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n HEAP32[((outPtr)>>2)]=0;\r\n return outPtr - startPtr;\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF32(str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var codeUnit = str.charCodeAt(i);\r\n if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate.\r\n len += 4;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n// Allocate heap space for a JS string, and write it there.\r\n// It is the responsibility of the caller to free() that memory.\r\nfunction allocateUTF8(str) {\r\n var size = lengthBytesUTF8(str) + 1;\r\n var ret = _malloc(size);\r\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\r\n return ret;\r\n}\r\n\r\n// Allocate stack space for a JS string, and write it there.\r\nfunction allocateUTF8OnStack(str) {\r\n var size = lengthBytesUTF8(str) + 1;\r\n var ret = stackAlloc(size);\r\n stringToUTF8Array(str, HEAP8, ret, size);\r\n return ret;\r\n}\r\n\r\nfunction demangle(func) {\r\n return func;\r\n}\r\n\r\nfunction demangleAll(text) {\r\n var regex =\r\n /__Z[\\w\\d_]+/g;\r\n return text.replace(regex,\r\n function(x) {\r\n var y = demangle(x);\r\n return x === y ? x : (x + ' [' + y + ']');\r\n });\r\n}\r\n\r\nfunction jsStackTrace() {\r\n var err = new Error();\r\n if (!err.stack) {\r\n // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,\r\n // so try that as a special-case.\r\n try {\r\n throw new Error(0);\r\n } catch(e) {\r\n err = e;\r\n }\r\n if (!err.stack) {\r\n return '(no stack trace available)';\r\n }\r\n }\r\n return err.stack.toString();\r\n}\r\n\r\nfunction stackTrace() {\r\n var js = jsStackTrace();\r\n if (Module['extraStackTrace']) js += '\\n' + Module['extraStackTrace']();\r\n return demangleAll(js);\r\n}\r\n\r\n// Memory management\r\n\r\nvar PAGE_SIZE = 16384;\r\nvar WASM_PAGE_SIZE = 65536;\r\nvar ASMJS_PAGE_SIZE = 16777216;\r\nvar MIN_TOTAL_MEMORY = 16777216;\r\n\r\nfunction alignUp(x, multiple) {\r\n if (x % multiple > 0) {\r\n x += multiple - (x % multiple);\r\n }\r\n return x;\r\n}\r\n\r\nvar HEAP,\r\n/** @type {ArrayBuffer} */\r\n buffer,\r\n/** @type {Int8Array} */\r\n HEAP8,\r\n/** @type {Uint8Array} */\r\n HEAPU8,\r\n/** @type {Int16Array} */\r\n HEAP16,\r\n/** @type {Uint16Array} */\r\n HEAPU16,\r\n/** @type {Int32Array} */\r\n HEAP32,\r\n/** @type {Uint32Array} */\r\n HEAPU32,\r\n/** @type {Float32Array} */\r\n HEAPF32,\r\n/** @type {Float64Array} */\r\n HEAPF64;\r\n\r\nfunction updateGlobalBuffer(buf) {\r\n Module['buffer'] = buffer = buf;\r\n}\r\n\r\nfunction updateGlobalBufferViews() {\r\n Module['HEAP8'] = HEAP8 = new Int8Array(buffer);\r\n Module['HEAP16'] = HEAP16 = new Int16Array(buffer);\r\n Module['HEAP32'] = HEAP32 = new Int32Array(buffer);\r\n Module['HEAPU8'] = HEAPU8 = new Uint8Array(buffer);\r\n Module['HEAPU16'] = HEAPU16 = new Uint16Array(buffer);\r\n Module['HEAPU32'] = HEAPU32 = new Uint32Array(buffer);\r\n Module['HEAPF32'] = HEAPF32 = new Float32Array(buffer);\r\n Module['HEAPF64'] = HEAPF64 = new Float64Array(buffer);\r\n}\r\n\r\nvar STATIC_BASE, STATICTOP, staticSealed; // static area\r\nvar STACK_BASE, STACKTOP, STACK_MAX; // stack area\r\nvar DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk\r\n\r\n STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;\r\n staticSealed = false;\r\n\r\n\r\n\r\n\r\nfunction abortOnCannotGrowMemory() {\r\n 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, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ');\r\n}\r\n\r\nif (!Module['reallocBuffer']) Module['reallocBuffer'] = function(size) {\r\n var ret;\r\n try {\r\n if (ArrayBuffer.transfer) {\r\n ret = ArrayBuffer.transfer(buffer, size);\r\n } else {\r\n var oldHEAP8 = HEAP8;\r\n ret = new ArrayBuffer(size);\r\n var temp = new Int8Array(ret);\r\n temp.set(oldHEAP8);\r\n }\r\n } catch(e) {\r\n return false;\r\n }\r\n var success = _emscripten_replace_memory(ret);\r\n if (!success) return false;\r\n return ret;\r\n};\r\n\r\nfunction enlargeMemory() {\r\n // TOTAL_MEMORY is the current size of the actual array, and DYNAMICTOP is the new top.\r\n\r\n\r\n var PAGE_MULTIPLE = Module[\"usingWasm\"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.\r\n var LIMIT = 2147483648 - PAGE_MULTIPLE; // We can do one page short of 2GB as theoretical maximum.\r\n\r\n if (HEAP32[DYNAMICTOP_PTR>>2] > LIMIT) {\r\n return false;\r\n }\r\n\r\n var OLD_TOTAL_MEMORY = TOTAL_MEMORY;\r\n TOTAL_MEMORY = Math.max(TOTAL_MEMORY, MIN_TOTAL_MEMORY); // So the loop below will not be infinite, and minimum asm.js memory size is 16MB.\r\n\r\n while (TOTAL_MEMORY < HEAP32[DYNAMICTOP_PTR>>2]) { // Keep incrementing the heap size as long as it's less than what is requested.\r\n if (TOTAL_MEMORY <= 536870912) {\r\n TOTAL_MEMORY = alignUp(2 * TOTAL_MEMORY, PAGE_MULTIPLE); // Simple heuristic: double until 1GB...\r\n } else {\r\n // ..., but after that, add smaller increments towards 2GB, which we cannot reach\r\n TOTAL_MEMORY = Math.min(alignUp((3 * TOTAL_MEMORY + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\r\n }\r\n }\r\n\r\n\r\n var replacement = Module['reallocBuffer'](TOTAL_MEMORY);\r\n if (!replacement || replacement.byteLength != TOTAL_MEMORY) {\r\n // restore the state to before this call, we failed\r\n TOTAL_MEMORY = OLD_TOTAL_MEMORY;\r\n return false;\r\n }\r\n\r\n // everything worked\r\n\r\n updateGlobalBuffer(replacement);\r\n updateGlobalBufferViews();\r\n\r\n\r\n\r\n return true;\r\n}\r\n\r\nvar byteLength;\r\ntry {\r\n byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get);\r\n byteLength(new ArrayBuffer(4)); // can fail on older ie\r\n} catch(e) { // can fail on older node/v8\r\n byteLength = function(buffer) { return buffer.byteLength; };\r\n}\r\n\r\nvar TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;\r\nvar TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728;\r\nif (TOTAL_MEMORY < TOTAL_STACK) err('TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')');\r\n\r\n// Initialize the runtime's memory\r\n\r\n\r\n\r\n// Use a provided buffer, if there is one, or else allocate a new one\r\nif (Module['buffer']) {\r\n buffer = Module['buffer'];\r\n} else {\r\n // Use a WebAssembly memory where available\r\n if (typeof WebAssembly === 'object' && typeof WebAssembly.Memory === 'function') {\r\n Module['wasmMemory'] = new WebAssembly.Memory({ 'initial': TOTAL_MEMORY / WASM_PAGE_SIZE });\r\n buffer = Module['wasmMemory'].buffer;\r\n } else\r\n {\r\n buffer = new ArrayBuffer(TOTAL_MEMORY);\r\n }\r\n Module['buffer'] = buffer;\r\n}\r\nupdateGlobalBufferViews();\r\n\r\n\r\nfunction getTotalMemory() {\r\n return TOTAL_MEMORY;\r\n}\r\n\r\n// Endianness check (note: assumes compiler arch was little-endian)\r\n\r\nfunction callRuntimeCallbacks(callbacks) {\r\n while(callbacks.length > 0) {\r\n var callback = callbacks.shift();\r\n if (typeof callback == 'function') {\r\n callback();\r\n continue;\r\n }\r\n var func = callback.func;\r\n if (typeof func === 'number') {\r\n if (callback.arg === undefined) {\r\n Module['dynCall_v'](func);\r\n } else {\r\n Module['dynCall_vi'](func, callback.arg);\r\n }\r\n } else {\r\n func(callback.arg === undefined ? null : callback.arg);\r\n }\r\n }\r\n}\r\n\r\nvar __ATPRERUN__ = []; // functions called before the runtime is initialized\r\nvar __ATINIT__ = []; // functions called during startup\r\nvar __ATMAIN__ = []; // functions called when main() is to be run\r\nvar __ATEXIT__ = []; // functions called during shutdown\r\nvar __ATPOSTRUN__ = []; // functions called after the main() is called\r\n\r\nvar runtimeInitialized = false;\r\nvar runtimeExited = false;\r\n\r\n\r\nfunction preRun() {\r\n // compatibility - merge in anything from Module['preRun'] at this time\r\n if (Module['preRun']) {\r\n if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];\r\n while (Module['preRun'].length) {\r\n addOnPreRun(Module['preRun'].shift());\r\n }\r\n }\r\n callRuntimeCallbacks(__ATPRERUN__);\r\n}\r\n\r\nfunction ensureInitRuntime() {\r\n if (runtimeInitialized) return;\r\n runtimeInitialized = true;\r\n callRuntimeCallbacks(__ATINIT__);\r\n}\r\n\r\nfunction preMain() {\r\n callRuntimeCallbacks(__ATMAIN__);\r\n}\r\n\r\nfunction exitRuntime() {\r\n callRuntimeCallbacks(__ATEXIT__);\r\n runtimeExited = true;\r\n}\r\n\r\nfunction postRun() {\r\n // compatibility - merge in anything from Module['postRun'] at this time\r\n if (Module['postRun']) {\r\n if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];\r\n while (Module['postRun'].length) {\r\n addOnPostRun(Module['postRun'].shift());\r\n }\r\n }\r\n callRuntimeCallbacks(__ATPOSTRUN__);\r\n}\r\n\r\nfunction addOnPreRun(cb) {\r\n __ATPRERUN__.unshift(cb);\r\n}\r\n\r\nfunction addOnInit(cb) {\r\n __ATINIT__.unshift(cb);\r\n}\r\n\r\nfunction addOnPreMain(cb) {\r\n __ATMAIN__.unshift(cb);\r\n}\r\n\r\nfunction addOnExit(cb) {\r\n __ATEXIT__.unshift(cb);\r\n}\r\n\r\nfunction addOnPostRun(cb) {\r\n __ATPOSTRUN__.unshift(cb);\r\n}\r\n\r\n// Deprecated: This function should not be called because it is unsafe and does not provide\r\n// a maximum length limit of how many bytes it is allowed to write. Prefer calling the\r\n// function stringToUTF8Array() instead, which takes in a maximum length that can be used\r\n// to be secure from out of bounds writes.\r\n/** @deprecated */\r\nfunction writeStringToMemory(string, buffer, dontAddNull) {\r\n warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!');\r\n\r\n var /** @type {number} */ lastChar, /** @type {number} */ end;\r\n if (dontAddNull) {\r\n // stringToUTF8Array always appends null. If we don't want to do that, remember the\r\n // character that existed at the location where the null will be placed, and restore\r\n // that after the write (below).\r\n end = buffer + lengthBytesUTF8(string);\r\n lastChar = HEAP8[end];\r\n }\r\n stringToUTF8(string, buffer, Infinity);\r\n if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character.\r\n}\r\n\r\nfunction writeArrayToMemory(array, buffer) {\r\n HEAP8.set(array, buffer);\r\n}\r\n\r\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\r\n for (var i = 0; i < str.length; ++i) {\r\n HEAP8[((buffer++)>>0)]=str.charCodeAt(i);\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n if (!dontAddNull) HEAP8[((buffer)>>0)]=0;\r\n}\r\n\r\nfunction unSign(value, bits, ignore) {\r\n if (value >= 0) {\r\n return value;\r\n }\r\n return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts\r\n : Math.pow(2, bits) + value;\r\n}\r\nfunction reSign(value, bits, ignore) {\r\n if (value <= 0) {\r\n return value;\r\n }\r\n var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32\r\n : Math.pow(2, bits-1);\r\n if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that\r\n // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors\r\n // TODO: In i64 mode 1, resign the two parts separately and safely\r\n value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts\r\n }\r\n return value;\r\n}\r\n\r\n\r\nvar Math_abs = Math.abs;\r\nvar Math_cos = Math.cos;\r\nvar Math_sin = Math.sin;\r\nvar Math_tan = Math.tan;\r\nvar Math_acos = Math.acos;\r\nvar Math_asin = Math.asin;\r\nvar Math_atan = Math.atan;\r\nvar Math_atan2 = Math.atan2;\r\nvar Math_exp = Math.exp;\r\nvar Math_log = Math.log;\r\nvar Math_sqrt = Math.sqrt;\r\nvar Math_ceil = Math.ceil;\r\nvar Math_floor = Math.floor;\r\nvar Math_pow = Math.pow;\r\nvar Math_imul = Math.imul;\r\nvar Math_fround = Math.fround;\r\nvar Math_round = Math.round;\r\nvar Math_min = Math.min;\r\nvar Math_max = Math.max;\r\nvar Math_clz32 = Math.clz32;\r\nvar Math_trunc = Math.trunc;\r\n\r\n// A counter of dependencies for calling run(). If we need to\r\n// do asynchronous work before running, increment this and\r\n// decrement it. Incrementing must happen in a place like\r\n// PRE_RUN_ADDITIONS (used by emcc to add file preloading).\r\n// Note that you can add dependencies in preRun, even though\r\n// it happens right before run - run will be postponed until\r\n// the dependencies are met.\r\nvar runDependencies = 0;\r\nvar runDependencyWatcher = null;\r\nvar dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled\r\n\r\nfunction getUniqueRunDependency(id) {\r\n return id;\r\n}\r\n\r\nfunction addRunDependency(id) {\r\n runDependencies++;\r\n if (Module['monitorRunDependencies']) {\r\n Module['monitorRunDependencies'](runDependencies);\r\n }\r\n}\r\n\r\nfunction removeRunDependency(id) {\r\n runDependencies--;\r\n if (Module['monitorRunDependencies']) {\r\n Module['monitorRunDependencies'](runDependencies);\r\n }\r\n if (runDependencies == 0) {\r\n if (runDependencyWatcher !== null) {\r\n clearInterval(runDependencyWatcher);\r\n runDependencyWatcher = null;\r\n }\r\n if (dependenciesFulfilled) {\r\n var callback = dependenciesFulfilled;\r\n dependenciesFulfilled = null;\r\n callback(); // can add another dependenciesFulfilled\r\n }\r\n }\r\n}\r\n\r\nModule[\"preloadedImages\"] = {}; // maps url to image data\r\nModule[\"preloadedAudios\"] = {}; // maps url to audio data\r\n\r\n\r\n\r\nvar memoryInitializer = null;\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Prefix of data URIs emitted by SINGLE_FILE and related options.\r\nvar dataURIPrefix = 'data:application/octet-stream;base64,';\r\n\r\n// Indicates whether filename is a base64 data URI.\r\nfunction isDataURI(filename) {\r\n return String.prototype.startsWith ?\r\n filename.startsWith(dataURIPrefix) :\r\n filename.indexOf(dataURIPrefix) === 0;\r\n}\r\n\r\n\r\n\r\n\r\nfunction integrateWasmJS() {\r\n // wasm.js has several methods for creating the compiled code module here:\r\n // * 'native-wasm' : use native WebAssembly support in the browser\r\n // * 'interpret-s-expr': load s-expression code from a .wast and interpret\r\n // * 'interpret-binary': load binary wasm and interpret\r\n // * 'interpret-asm2wasm': load asm.js code, translate to wasm, and interpret\r\n // * 'asmjs': no wasm, just load the asm.js code and use that (good for testing)\r\n // The method is set at compile time (BINARYEN_METHOD)\r\n // The method can be a comma-separated list, in which case, we will try the\r\n // options one by one. Some of them can fail gracefully, and then we can try\r\n // the next.\r\n\r\n // inputs\r\n\r\n var method = 'native-wasm';\r\n\r\n var wasmTextFile = 'Diablo.wast';\r\n var wasmBinaryFile = 'Diablo.wasm';\r\n var asmjsCodeFile = 'Diablo.temp.asm.js';\r\n\r\n if (!isDataURI(wasmTextFile)) {\r\n wasmTextFile = locateFile(wasmTextFile);\r\n }\r\n if (!isDataURI(wasmBinaryFile)) {\r\n wasmBinaryFile = locateFile(wasmBinaryFile);\r\n }\r\n if (!isDataURI(asmjsCodeFile)) {\r\n asmjsCodeFile = locateFile(asmjsCodeFile);\r\n }\r\n\r\n // utilities\r\n\r\n var wasmPageSize = 64*1024;\r\n\r\n var info = {\r\n 'global': null,\r\n 'env': null,\r\n 'asm2wasm': asm2wasmImports,\r\n 'parent': Module // Module inside wasm-js.cpp refers to wasm-js.cpp; this allows access to the outside program.\r\n };\r\n\r\n var exports = null;\r\n\r\n\r\n function mergeMemory(newBuffer) {\r\n // The wasm instance creates its memory. But static init code might have written to\r\n // buffer already, including the mem init file, and we must copy it over in a proper merge.\r\n // TODO: avoid this copy, by avoiding such static init writes\r\n // TODO: in shorter term, just copy up to the last static init write\r\n var oldBuffer = Module['buffer'];\r\n if (newBuffer.byteLength < oldBuffer.byteLength) {\r\n err('the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here');\r\n }\r\n var oldView = new Int8Array(oldBuffer);\r\n var newView = new Int8Array(newBuffer);\r\n\r\n\r\n newView.set(oldView);\r\n updateGlobalBuffer(newBuffer);\r\n updateGlobalBufferViews();\r\n }\r\n\r\n function fixImports(imports) {\r\n return imports;\r\n }\r\n\r\n function getBinary() {\r\n try {\r\n if (Module['wasmBinary']) {\r\n return new Uint8Array(Module['wasmBinary']);\r\n }\r\n if (Module['readBinary']) {\r\n return Module['readBinary'](wasmBinaryFile);\r\n } else {\r\n throw \"both async and sync fetching of the wasm failed\";\r\n }\r\n }\r\n catch (err) {\r\n abort(err);\r\n }\r\n }\r\n\r\n function getBinaryPromise() {\r\n // if we don't have the binary yet, and have the Fetch api, use that\r\n // in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web\r\n if (!Module['wasmBinary'] && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function') {\r\n return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) {\r\n if (!response['ok']) {\r\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\r\n }\r\n return response['arrayBuffer']();\r\n }).catch(function () {\r\n return getBinary();\r\n });\r\n }\r\n // Otherwise, getBinary should be able to get it synchronously\r\n return new Promise(function(resolve, reject) {\r\n resolve(getBinary());\r\n });\r\n }\r\n\r\n // do-method functions\r\n\r\n\r\n function doNativeWasm(global, env, providedBuffer) {\r\n if (typeof WebAssembly !== 'object') {\r\n err('no native wasm support detected');\r\n return false;\r\n }\r\n // prepare memory import\r\n if (!(Module['wasmMemory'] instanceof WebAssembly.Memory)) {\r\n err('no native wasm Memory in use');\r\n return false;\r\n }\r\n env['memory'] = Module['wasmMemory'];\r\n // Load the wasm module and create an instance of using native support in the JS engine.\r\n info['global'] = {\r\n 'NaN': NaN,\r\n 'Infinity': Infinity\r\n };\r\n info['global.Math'] = Math;\r\n info['env'] = env;\r\n // handle a generated wasm instance, receiving its exports and\r\n // performing other necessary setup\r\n function receiveInstance(instance, module) {\r\n exports = instance.exports;\r\n if (exports.memory) mergeMemory(exports.memory);\r\n Module['asm'] = exports;\r\n Module[\"usingWasm\"] = true;\r\n removeRunDependency('wasm-instantiate');\r\n }\r\n addRunDependency('wasm-instantiate');\r\n\r\n // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback\r\n // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel\r\n // to any other async startup actions they are performing.\r\n if (Module['instantiateWasm']) {\r\n try {\r\n return Module['instantiateWasm'](info, receiveInstance);\r\n } catch(e) {\r\n err('Module.instantiateWasm callback failed with error: ' + e);\r\n return false;\r\n }\r\n }\r\n\r\n function receiveInstantiatedSource(output) {\r\n // 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance.\r\n // receiveInstance() will swap in the exports (to Module.asm) so they can be called\r\n receiveInstance(output['instance'], output['module']);\r\n }\r\n function instantiateArrayBuffer(receiver) {\r\n getBinaryPromise().then(function(binary) {\r\n return WebAssembly.instantiate(binary, info);\r\n }).then(receiver).catch(function(reason) {\r\n err('failed to asynchronously prepare wasm: ' + reason);\r\n abort(reason);\r\n });\r\n }\r\n // Prefer streaming instantiation if available.\r\n if (!Module['wasmBinary'] &&\r\n typeof WebAssembly.instantiateStreaming === 'function' &&\r\n !isDataURI(wasmBinaryFile) &&\r\n typeof fetch === 'function') {\r\n WebAssembly.instantiateStreaming(fetch(wasmBinaryFile, { credentials: 'same-origin' }), info)\r\n .then(receiveInstantiatedSource)\r\n .catch(function(reason) {\r\n // We expect the most common failure cause to be a bad MIME type for the binary,\r\n // in which case falling back to ArrayBuffer instantiation should work.\r\n err('wasm streaming compile failed: ' + reason);\r\n err('falling back to ArrayBuffer instantiation');\r\n instantiateArrayBuffer(receiveInstantiatedSource);\r\n });\r\n } else {\r\n instantiateArrayBuffer(receiveInstantiatedSource);\r\n }\r\n return {}; // no exports yet; we'll fill them in later\r\n }\r\n\r\n\r\n // We may have a preloaded value in Module.asm, save it\r\n Module['asmPreload'] = Module['asm'];\r\n\r\n // Memory growth integration code\r\n\r\n var asmjsReallocBuffer = Module['reallocBuffer'];\r\n\r\n var wasmReallocBuffer = function(size) {\r\n var PAGE_MULTIPLE = Module[\"usingWasm\"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.\r\n size = alignUp(size, PAGE_MULTIPLE); // round up to wasm page size\r\n var old = Module['buffer'];\r\n var oldSize = old.byteLength;\r\n if (Module[\"usingWasm\"]) {\r\n // native wasm support\r\n try {\r\n var result = Module['wasmMemory'].grow((size - oldSize) / wasmPageSize); // .grow() takes a delta compared to the previous size\r\n if (result !== (-1 | 0)) {\r\n // success in native wasm memory growth, get the buffer from the memory\r\n return Module['buffer'] = Module['wasmMemory'].buffer;\r\n } else {\r\n return null;\r\n }\r\n } catch(e) {\r\n return null;\r\n }\r\n }\r\n };\r\n\r\n Module['reallocBuffer'] = function(size) {\r\n if (finalMethod === 'asmjs') {\r\n return asmjsReallocBuffer(size);\r\n } else {\r\n return wasmReallocBuffer(size);\r\n }\r\n };\r\n\r\n // we may try more than one; this is the final one, that worked and we are using\r\n var finalMethod = '';\r\n\r\n // Provide an \"asm.js function\" for the application, called to \"link\" the asm.js module. We instantiate\r\n // the wasm module at that time, and it receives imports and provides exports and so forth, the app\r\n // doesn't need to care that it is wasm or olyfilled wasm or asm.js.\r\n\r\n Module['asm'] = function(global, env, providedBuffer) {\r\n env = fixImports(env);\r\n\r\n // import table\r\n if (!env['table']) {\r\n var TABLE_SIZE = Module['wasmTableSize'];\r\n if (TABLE_SIZE === undefined) TABLE_SIZE = 1024; // works in binaryen interpreter at least\r\n var MAX_TABLE_SIZE = Module['wasmMaxTableSize'];\r\n if (typeof WebAssembly === 'object' && typeof WebAssembly.Table === 'function') {\r\n if (MAX_TABLE_SIZE !== undefined) {\r\n env['table'] = new WebAssembly.Table({ 'initial': TABLE_SIZE, 'maximum': MAX_TABLE_SIZE, 'element': 'anyfunc' });\r\n } else {\r\n env['table'] = new WebAssembly.Table({ 'initial': TABLE_SIZE, element: 'anyfunc' });\r\n }\r\n } else {\r\n env['table'] = new Array(TABLE_SIZE); // works in binaryen interpreter at least\r\n }\r\n Module['wasmTable'] = env['table'];\r\n }\r\n\r\n if (!env['memoryBase']) {\r\n env['memoryBase'] = Module['STATIC_BASE']; // tell the memory segments where to place themselves\r\n }\r\n if (!env['tableBase']) {\r\n env['tableBase'] = 0; // table starts at 0 by default, in dynamic linking this will change\r\n }\r\n\r\n // try the methods. each should return the exports if it succeeded\r\n\r\n var exports;\r\n exports = doNativeWasm(global, env, providedBuffer);\r\n\r\n assert(exports, 'no binaryen method succeeded.');\r\n\r\n\r\n return exports;\r\n };\r\n\r\n var methodHandler = Module['asm']; // note our method handler, as we may modify Module['asm'] later\r\n}\r\n\r\nintegrateWasmJS();\r\n\r\n// === Body ===\r\n\r\nvar ASM_CONSTS = [function($0) { self.DApi.current_save_id($0); }];\r\n\r\nfunction _emscripten_asm_const_ii(code, a0) {\r\n return ASM_CONSTS[code](a0);\r\n}\r\nfunction __api_close_keyboard(){ self.DApi.close_keyboard(); }\r\nfunction __api_open_keyboard(x0,y0,x1,y1,len){ self.DApi.open_keyboard(x0, y0, x1, y1, len); }\r\nfunction _api_create_sound(id,ptr,size){ self.DApi.create_sound(id, HEAPU8.slice(ptr, ptr + size)); }\r\nfunction _api_create_sound_float(id,ptr,samples,channels,rate){ self.DApi.create_sound_raw(id, HEAPF32.slice(ptr / 4, ptr / 4 + samples * channels), samples, channels, rate); }\r\nfunction _api_delete_sound(id){ self.DApi.delete_sound(id); }\r\nfunction _api_draw_begin(){ self.DApi.draw_begin(); }\r\nfunction _api_draw_belt(items){ self.DApi.draw_belt(HEAP32.subarray(items / 4, items / 4 + 8)); }\r\nfunction _api_draw_blit(x,y,w,h,ptr){ self.DApi.draw_blit(x, y, w, h, HEAPU8.subarray(ptr, ptr + w * h * 4)); }\r\nfunction _api_draw_clip_text(x0,y0,x1,y1){ self.DApi.draw_clip_text(x0, y0, x1, y1); }\r\nfunction _api_draw_end(){ self.DApi.draw_end(); }\r\nfunction _api_draw_text(x,y,ptr,color){ var end = HEAPU8.indexOf(0, ptr); var text = String.fromCharCode.apply(null, HEAPU8.subarray(ptr, end)); self.DApi.draw_text(x, y, text, color); }\r\nfunction _api_duplicate_sound(id,srcId){ self.DApi.duplicate_sound(id, srcId); }\r\nfunction _api_exit_game(){ self.DApi.exit_game(); }\r\nfunction _api_play_sound(id,volume,pan,loop){ self.DApi.play_sound(id, volume, pan, loop); }\r\nfunction _api_set_cursor(x,y){ self.DApi.set_cursor(x, y); }\r\nfunction _api_set_volume(id,volume){ self.DApi.set_volume(id, volume); }\r\nfunction _api_stop_sound(id){ self.DApi.stop_sound(id); }\r\nfunction _api_websocket_closed(){ return self.DApi.websocket_closed(); }\r\nfunction _api_websocket_send(ptr,size){ self.DApi.websocket_send(HEAPU8.subarray(ptr, ptr + size)); }\r\nfunction _exit_error(err){ var end = HEAPU8.indexOf( 0, err ); var text = String.fromCharCode.apply(null, HEAPU8.subarray( err, end )); self.DApi.exit_error( text ); }\r\nfunction _get_file_contents(path,ptr,offset,size){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); self.DApi.get_file_contents(text, HEAPU8.subarray(ptr, ptr + size), offset); }\r\nfunction _get_file_size(path){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); return self.DApi.get_file_size(text); }\r\nfunction _put_file_contents(path,ptr,size){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end)); self.DApi.put_file_contents(text, HEAPU8.slice(ptr, ptr + size)); }\r\nfunction _remove_file(path){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); self.DApi.remove_file( text ); }\r\nfunction _show_alert(err){ var end = HEAPU8.indexOf( 0, err ); var text = String.fromCharCode.apply( null, HEAPU8.subarray( err, end ) ); self.alert( text ); }\r\nfunction _trace_pop(){ if (self.WASM_TRACE) { self.WASM_TRACE.pop(); } }\r\nfunction _trace_push(ptr){ var end = HEAPU8.indexOf(0, ptr); var text = String.fromCharCode.apply(null, HEAPU8.subarray(ptr, end)); console.log(text); self.WASM_TRACE = self.WASM_TRACE || []; self.WASM_TRACE.push(text); }\r\n\r\n\r\n\r\nSTATIC_BASE = GLOBAL_BASE;\r\n\r\nSTATICTOP = STATIC_BASE + 1866608;\r\n/* global initializers */ __ATINIT__.push({ func: function() { __GLOBAL__sub_I_msgcmd_cpp() } }, { func: function() { __GLOBAL__sub_I_snet_cpp() } });\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar STATIC_BUMP = 1866608;\r\nModule[\"STATIC_BASE\"] = STATIC_BASE;\r\nModule[\"STATIC_BUMP\"] = STATIC_BUMP;\r\n\r\n/* no memory initializer */\r\nvar tempDoublePtr = STATICTOP; STATICTOP += 16;\r\n\r\nfunction copyTempFloat(ptr) { // functions, because inlining this code increases code size too much\r\n\r\n HEAP8[tempDoublePtr] = HEAP8[ptr];\r\n\r\n HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\r\n\r\n HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\r\n\r\n HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\r\n\r\n}\r\n\r\nfunction copyTempDouble(ptr) {\r\n\r\n HEAP8[tempDoublePtr] = HEAP8[ptr];\r\n\r\n HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\r\n\r\n HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\r\n\r\n HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\r\n\r\n HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];\r\n\r\n HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];\r\n\r\n HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];\r\n\r\n HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];\r\n\r\n}\r\n\r\n// {{PRE_LIBRARY}}\r\n\r\n\r\n function ___assert_fail(condition, filename, line, func) {\r\n abort('Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function']);\r\n }\r\n\r\n function ___cxa_allocate_exception(size) {\r\n return _malloc(size);\r\n }\r\n\r\n \r\n function __ZSt18uncaught_exceptionv() { // std::uncaught_exception()\r\n return !!__ZSt18uncaught_exceptionv.uncaught_exception;\r\n }\r\n \r\n var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function (adjusted) {\r\n if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted;\r\n for (var key in EXCEPTIONS.infos) {\r\n var ptr = +key; // the iteration key is a string, and if we throw this, it must be an integer as that is what we look for\r\n var info = EXCEPTIONS.infos[ptr];\r\n if (info.adjusted === adjusted) {\r\n return ptr;\r\n }\r\n }\r\n return adjusted;\r\n },addRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n info.refcount++;\r\n },decRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n assert(info.refcount > 0);\r\n info.refcount--;\r\n // A rethrown exception can reach refcount 0; it must not be discarded\r\n // Its next handler will clear the rethrown flag and addRef it, prior to\r\n // final decRef and destruction here\r\n if (info.refcount === 0 && !info.rethrown) {\r\n if (info.destructor) {\r\n Module['dynCall_vi'](info.destructor, ptr);\r\n }\r\n delete EXCEPTIONS.infos[ptr];\r\n ___cxa_free_exception(ptr);\r\n }\r\n },clearRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n info.refcount = 0;\r\n }};function ___cxa_begin_catch(ptr) {\r\n var info = EXCEPTIONS.infos[ptr];\r\n if (info && !info.caught) {\r\n info.caught = true;\r\n __ZSt18uncaught_exceptionv.uncaught_exception--;\r\n }\r\n if (info) info.rethrown = false;\r\n EXCEPTIONS.caught.push(ptr);\r\n EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));\r\n return ptr;\r\n }\r\n\r\n \r\n function ___cxa_free_exception(ptr) {\r\n try {\r\n return _free(ptr);\r\n } catch(e) { // XXX FIXME\r\n }\r\n }function ___cxa_end_catch() {\r\n // Clear state flag.\r\n Module['setThrew'](0);\r\n // Call destructor if one is registered then clear it.\r\n var ptr = EXCEPTIONS.caught.pop();\r\n if (ptr) {\r\n EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));\r\n EXCEPTIONS.last = 0; // XXX in decRef?\r\n }\r\n }\r\n\r\n function ___cxa_find_matching_catch_2() {\r\n return ___cxa_find_matching_catch.apply(null, arguments);\r\n }\r\n\r\n function ___cxa_find_matching_catch_3() {\r\n return ___cxa_find_matching_catch.apply(null, arguments);\r\n }\r\n\r\n\r\n function ___cxa_get_exception_ptr(ptr) {\r\n // TODO: use info.adjusted?\r\n return ptr;\r\n }\r\n\r\n function ___cxa_pure_virtual() {\r\n ABORT = true;\r\n throw 'Pure virtual function called!';\r\n }\r\n\r\n \r\n \r\n function ___resumeException(ptr) {\r\n if (!EXCEPTIONS.last) { EXCEPTIONS.last = ptr; }\r\n throw ptr;\r\n }function ___cxa_find_matching_catch() {\r\n var thrown = EXCEPTIONS.last;\r\n if (!thrown) {\r\n // just pass through the null ptr\r\n return ((setTempRet0(0),0)|0);\r\n }\r\n var info = EXCEPTIONS.infos[thrown];\r\n var throwntype = info.type;\r\n if (!throwntype) {\r\n // just pass through the thrown ptr\r\n return ((setTempRet0(0),thrown)|0);\r\n }\r\n var typeArray = Array.prototype.slice.call(arguments);\r\n \r\n var pointer = Module['___cxa_is_pointer_type'](throwntype);\r\n // can_catch receives a **, add indirection\r\n if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4);\r\n HEAP32[((___cxa_find_matching_catch.buffer)>>2)]=thrown;\r\n thrown = ___cxa_find_matching_catch.buffer;\r\n // The different catch blocks are denoted by different types.\r\n // Due to inheritance, those types may not precisely match the\r\n // type of the thrown object. Find one which matches, and\r\n // return the type of the catch block which should be called.\r\n for (var i = 0; i < typeArray.length; i++) {\r\n if (typeArray[i] && Module['___cxa_can_catch'](typeArray[i], throwntype, thrown)) {\r\n thrown = HEAP32[((thrown)>>2)]; // undo indirection\r\n info.adjusted = thrown;\r\n return ((setTempRet0(typeArray[i]),thrown)|0);\r\n }\r\n }\r\n // Shouldn't happen unless we have bogus data in typeArray\r\n // or encounter a type for which emscripten doesn't have suitable\r\n // typeinfo defined. Best-efforts match just in case.\r\n thrown = HEAP32[((thrown)>>2)]; // undo indirection\r\n return ((setTempRet0(throwntype),thrown)|0);\r\n }function ___cxa_throw(ptr, type, destructor) {\r\n EXCEPTIONS.infos[ptr] = {\r\n ptr: ptr,\r\n adjusted: ptr,\r\n type: type,\r\n destructor: destructor,\r\n refcount: 0,\r\n caught: false,\r\n rethrown: false\r\n };\r\n EXCEPTIONS.last = ptr;\r\n if (!(\"uncaught_exception\" in __ZSt18uncaught_exceptionv)) {\r\n __ZSt18uncaught_exceptionv.uncaught_exception = 1;\r\n } else {\r\n __ZSt18uncaught_exceptionv.uncaught_exception++;\r\n }\r\n throw ptr;\r\n }\r\n\r\n function ___gxx_personality_v0() {\r\n }\r\n\r\n function ___lock() {}\r\n\r\n\r\n \r\n var SYSCALLS={varargs:0,get:function (varargs) {\r\n SYSCALLS.varargs += 4;\r\n var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];\r\n return ret;\r\n },getStr:function () {\r\n var ret = Pointer_stringify(SYSCALLS.get());\r\n return ret;\r\n },get64:function () {\r\n var low = SYSCALLS.get(), high = SYSCALLS.get();\r\n if (low >= 0) assert(high === 0);\r\n else assert(high === -1);\r\n return low;\r\n },getZero:function () {\r\n assert(SYSCALLS.get() === 0);\r\n }};function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // llseek\r\n var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();\r\n // NOTE: offset_high is unused - Emscripten's off_t is 32-bit\r\n var offset = offset_low;\r\n FS.llseek(stream, offset, whence);\r\n HEAP32[((result)>>2)]=stream.position;\r\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n \r\n function flush_NO_FILESYSTEM() {\r\n // flush anything remaining in the buffers during shutdown\r\n var fflush = Module[\"_fflush\"];\r\n if (fflush) fflush(0);\r\n var printChar = ___syscall146.printChar;\r\n if (!printChar) return;\r\n var buffers = ___syscall146.buffers;\r\n if (buffers[1].length) printChar(1, 10);\r\n if (buffers[2].length) printChar(2, 10);\r\n }function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // writev\r\n // hack to support printf in NO_FILESYSTEM\r\n var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();\r\n var ret = 0;\r\n if (!___syscall146.buffers) {\r\n ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr\r\n ___syscall146.printChar = function(stream, curr) {\r\n var buffer = ___syscall146.buffers[stream];\r\n assert(buffer);\r\n if (curr === 0 || curr === 10) {\r\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\r\n buffer.length = 0;\r\n } else {\r\n buffer.push(curr);\r\n }\r\n };\r\n }\r\n for (var i = 0; i < iovcnt; i++) {\r\n var ptr = HEAP32[(((iov)+(i*8))>>2)];\r\n var len = HEAP32[(((iov)+(i*8 + 4))>>2)];\r\n for (var j = 0; j < len; j++) {\r\n ___syscall146.printChar(stream, HEAPU8[ptr+j]);\r\n }\r\n ret += len;\r\n }\r\n return ret;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // ioctl\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // close\r\n var stream = SYSCALLS.getStreamFromFD();\r\n FS.close(stream);\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___unlock() {}\r\n\r\n function _abort() {\r\n Module['abort']();\r\n }\r\n\r\n var _emscripten_asm_const_int=true;\r\n\r\n \r\n function __exit(status) {\r\n // void _exit(int status);\r\n // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html\r\n exit(status);\r\n }function _exit(status) {\r\n __exit(status);\r\n }\r\n\r\n \r\n\r\n var _llvm_ceil_f32=Math_ceil;\r\n\r\n var _llvm_ctlz_i32=true;\r\n\r\n function _llvm_eh_typeid_for(type) {\r\n return type;\r\n }\r\n\r\n function _llvm_trap() {\r\n abort('trap!');\r\n }\r\n\r\n \r\n function _emscripten_memcpy_big(dest, src, num) {\r\n HEAPU8.set(HEAPU8.subarray(src, src+num), dest);\r\n return dest;\r\n } \r\n\r\n \r\n\r\n \r\n\r\n \r\n var PTHREAD_SPECIFIC={};function _pthread_getspecific(key) {\r\n return PTHREAD_SPECIFIC[key] || 0;\r\n }\r\n\r\n \r\n var PTHREAD_SPECIFIC_NEXT_KEY=1;\r\n \r\n var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key, destructor) {\r\n if (key == 0) {\r\n return ERRNO_CODES.EINVAL;\r\n }\r\n HEAP32[((key)>>2)]=PTHREAD_SPECIFIC_NEXT_KEY;\r\n // values start at 0\r\n PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY] = 0;\r\n PTHREAD_SPECIFIC_NEXT_KEY++;\r\n return 0;\r\n }\r\n\r\n function _pthread_once(ptr, func) {\r\n if (!_pthread_once.seen) _pthread_once.seen = {};\r\n if (ptr in _pthread_once.seen) return;\r\n Module['dynCall_v'](func);\r\n _pthread_once.seen[ptr] = 1;\r\n }\r\n\r\n function _pthread_setspecific(key, value) {\r\n if (!(key in PTHREAD_SPECIFIC)) {\r\n return ERRNO_CODES.EINVAL;\r\n }\r\n PTHREAD_SPECIFIC[key] = value;\r\n return 0;\r\n }\r\n\r\n \r\n function ___setErrNo(value) {\r\n if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;\r\n return value;\r\n } \r\n\r\n function _time(ptr) {\r\n var ret = (Date.now()/1000)|0;\r\n if (ptr) {\r\n HEAP32[((ptr)>>2)]=ret;\r\n }\r\n return ret;\r\n }\r\nDYNAMICTOP_PTR = staticAlloc(4);\r\n\r\nSTACK_BASE = STACKTOP = alignMemory(STATICTOP);\r\n\r\nSTACK_MAX = STACK_BASE + TOTAL_STACK;\r\n\r\nDYNAMIC_BASE = alignMemory(STACK_MAX);\r\n\r\nHEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE;\r\n\r\nstaticSealed = true; // seal the static portion of memory\r\n\r\nvar ASSERTIONS = false;\r\n\r\n/** @type {function(string, boolean=, number=)} */\r\nfunction intArrayFromString(stringy, dontAddNull, length) {\r\n var len = length > 0 ? length : lengthBytesUTF8(stringy)+1;\r\n var u8array = new Array(len);\r\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\r\n if (dontAddNull) u8array.length = numBytesWritten;\r\n return u8array;\r\n}\r\n\r\nfunction intArrayToString(array) {\r\n var ret = [];\r\n for (var i = 0; i < array.length; i++) {\r\n var chr = array[i];\r\n if (chr > 0xFF) {\r\n if (ASSERTIONS) {\r\n assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.');\r\n }\r\n chr &= 0xFF;\r\n }\r\n ret.push(String.fromCharCode(chr));\r\n }\r\n return ret.join('');\r\n}\r\n\r\n\r\n\r\nModule['wasmTableSize'] = 1114;\r\n\r\nModule['wasmMaxTableSize'] = 1114;\r\n\r\nfunction invoke_i(index) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_i\"](index);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_ii(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_ii\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iii(index,a1,a2) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iii\"](index,a1,a2);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiii(index,a1,a2,a3) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiii\"](index,a1,a2,a3);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiiii(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiiiii(index,a1,a2,a3,a4,a5) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiiiii\"](index,a1,a2,a3,a4,a5);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_ji(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_ji\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_v(index) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_v\"](index);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_vi(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_vi\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_vii(index,a1,a2) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_vii\"](index,a1,a2);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viii(index,a1,a2,a3) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viii\"](index,a1,a2,a3);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiii(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiii\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiii(index,a1,a2,a3,a4,a5) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viij(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viij\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viji(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viji\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nModule.asmGlobalArg = {};\r\n\r\nModule.asmLibraryArg = { \"abort\": abort, \"assert\": assert, \"enlargeMemory\": enlargeMemory, \"getTotalMemory\": getTotalMemory, \"abortOnCannotGrowMemory\": abortOnCannotGrowMemory, \"invoke_i\": invoke_i, \"invoke_ii\": invoke_ii, \"invoke_iii\": invoke_iii, \"invoke_iiii\": invoke_iiii, \"invoke_iiiii\": invoke_iiiii, \"invoke_iiiiii\": invoke_iiiiii, \"invoke_ji\": invoke_ji, \"invoke_v\": invoke_v, \"invoke_vi\": invoke_vi, \"invoke_vii\": invoke_vii, \"invoke_viii\": invoke_viii, \"invoke_viiii\": invoke_viiii, \"invoke_viiiii\": invoke_viiiii, \"invoke_viiiiii\": invoke_viiiiii, \"invoke_viiiiiii\": invoke_viiiiiii, \"invoke_viiiiiiiii\": invoke_viiiiiiiii, \"invoke_viiiiiiiiii\": invoke_viiiiiiiiii, \"invoke_viij\": invoke_viij, \"invoke_viji\": invoke_viji, \"__ZSt18uncaught_exceptionv\": __ZSt18uncaught_exceptionv, \"___assert_fail\": ___assert_fail, \"___cxa_allocate_exception\": ___cxa_allocate_exception, \"___cxa_begin_catch\": ___cxa_begin_catch, \"___cxa_end_catch\": ___cxa_end_catch, \"___cxa_find_matching_catch\": ___cxa_find_matching_catch, \"___cxa_find_matching_catch_2\": ___cxa_find_matching_catch_2, \"___cxa_find_matching_catch_3\": ___cxa_find_matching_catch_3, \"___cxa_free_exception\": ___cxa_free_exception, \"___cxa_get_exception_ptr\": ___cxa_get_exception_ptr, \"___cxa_pure_virtual\": ___cxa_pure_virtual, \"___cxa_throw\": ___cxa_throw, \"___gxx_personality_v0\": ___gxx_personality_v0, \"___lock\": ___lock, \"___resumeException\": ___resumeException, \"___setErrNo\": ___setErrNo, \"___syscall140\": ___syscall140, \"___syscall146\": ___syscall146, \"___syscall54\": ___syscall54, \"___syscall6\": ___syscall6, \"___unlock\": ___unlock, \"__api_close_keyboard\": __api_close_keyboard, \"__api_open_keyboard\": __api_open_keyboard, \"__exit\": __exit, \"_abort\": _abort, \"_api_create_sound\": _api_create_sound, \"_api_create_sound_float\": _api_create_sound_float, \"_api_delete_sound\": _api_delete_sound, \"_api_draw_begin\": _api_draw_begin, \"_api_draw_belt\": _api_draw_belt, \"_api_draw_blit\": _api_draw_blit, \"_api_draw_clip_text\": _api_draw_clip_text, \"_api_draw_end\": _api_draw_end, \"_api_draw_text\": _api_draw_text, \"_api_duplicate_sound\": _api_duplicate_sound, \"_api_exit_game\": _api_exit_game, \"_api_play_sound\": _api_play_sound, \"_api_set_cursor\": _api_set_cursor, \"_api_set_volume\": _api_set_volume, \"_api_stop_sound\": _api_stop_sound, \"_api_websocket_closed\": _api_websocket_closed, \"_api_websocket_send\": _api_websocket_send, \"_emscripten_asm_const_ii\": _emscripten_asm_const_ii, \"_emscripten_memcpy_big\": _emscripten_memcpy_big, \"_exit\": _exit, \"_exit_error\": _exit_error, \"_get_file_contents\": _get_file_contents, \"_get_file_size\": _get_file_size, \"_llvm_ceil_f32\": _llvm_ceil_f32, \"_llvm_eh_typeid_for\": _llvm_eh_typeid_for, \"_llvm_trap\": _llvm_trap, \"_pthread_getspecific\": _pthread_getspecific, \"_pthread_key_create\": _pthread_key_create, \"_pthread_once\": _pthread_once, \"_pthread_setspecific\": _pthread_setspecific, \"_put_file_contents\": _put_file_contents, \"_remove_file\": _remove_file, \"_show_alert\": _show_alert, \"_time\": _time, \"_trace_pop\": _trace_pop, \"_trace_push\": _trace_push, \"flush_NO_FILESYSTEM\": flush_NO_FILESYSTEM, \"DYNAMICTOP_PTR\": DYNAMICTOP_PTR, \"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX };\r\n// EMSCRIPTEN_START_ASM\r\nvar asm =Module[\"asm\"]// EMSCRIPTEN_END_ASM\r\n(Module.asmGlobalArg, Module.asmLibraryArg, buffer);\r\n\r\nModule[\"asm\"] = asm;\r\nvar _DApi_AllocPacket = Module[\"_DApi_AllocPacket\"] = function() { return Module[\"asm\"][\"_DApi_AllocPacket\"].apply(null, arguments) };\r\nvar _DApi_Char = Module[\"_DApi_Char\"] = function() { return Module[\"asm\"][\"_DApi_Char\"].apply(null, arguments) };\r\nvar _DApi_Init = Module[\"_DApi_Init\"] = function() { return Module[\"asm\"][\"_DApi_Init\"].apply(null, arguments) };\r\nvar _DApi_Key = Module[\"_DApi_Key\"] = function() { return Module[\"asm\"][\"_DApi_Key\"].apply(null, arguments) };\r\nvar _DApi_Mouse = Module[\"_DApi_Mouse\"] = function() { return Module[\"asm\"][\"_DApi_Mouse\"].apply(null, arguments) };\r\nvar _DApi_Render = Module[\"_DApi_Render\"] = function() { return Module[\"asm\"][\"_DApi_Render\"].apply(null, arguments) };\r\nvar _DApi_SyncText = Module[\"_DApi_SyncText\"] = function() { return Module[\"asm\"][\"_DApi_SyncText\"].apply(null, arguments) };\r\nvar _DApi_SyncTextPtr = Module[\"_DApi_SyncTextPtr\"] = function() { return Module[\"asm\"][\"_DApi_SyncTextPtr\"].apply(null, arguments) };\r\nvar _SNet_InitWebsocket = Module[\"_SNet_InitWebsocket\"] = function() { return Module[\"asm\"][\"_SNet_InitWebsocket\"].apply(null, arguments) };\r\nvar __GLOBAL__sub_I_msgcmd_cpp = Module[\"__GLOBAL__sub_I_msgcmd_cpp\"] = function() { return Module[\"asm\"][\"__GLOBAL__sub_I_msgcmd_cpp\"].apply(null, arguments) };\r\nvar __GLOBAL__sub_I_snet_cpp = Module[\"__GLOBAL__sub_I_snet_cpp\"] = function() { return Module[\"asm\"][\"__GLOBAL__sub_I_snet_cpp\"].apply(null, arguments) };\r\nvar ___cxa_can_catch = Module[\"___cxa_can_catch\"] = function() { return Module[\"asm\"][\"___cxa_can_catch\"].apply(null, arguments) };\r\nvar ___cxa_is_pointer_type = Module[\"___cxa_is_pointer_type\"] = function() { return Module[\"asm\"][\"___cxa_is_pointer_type\"].apply(null, arguments) };\r\nvar ___em_js___api_close_keyboard = Module[\"___em_js___api_close_keyboard\"] = function() { return Module[\"asm\"][\"___em_js___api_close_keyboard\"].apply(null, arguments) };\r\nvar ___em_js___api_open_keyboard = Module[\"___em_js___api_open_keyboard\"] = function() { return Module[\"asm\"][\"___em_js___api_open_keyboard\"].apply(null, arguments) };\r\nvar ___em_js__api_create_sound = Module[\"___em_js__api_create_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_create_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_create_sound_float = Module[\"___em_js__api_create_sound_float\"] = function() { return Module[\"asm\"][\"___em_js__api_create_sound_float\"].apply(null, arguments) };\r\nvar ___em_js__api_delete_sound = Module[\"___em_js__api_delete_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_delete_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_begin = Module[\"___em_js__api_draw_begin\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_begin\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_belt = Module[\"___em_js__api_draw_belt\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_belt\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_blit = Module[\"___em_js__api_draw_blit\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_blit\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_clip_text = Module[\"___em_js__api_draw_clip_text\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_clip_text\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_end = Module[\"___em_js__api_draw_end\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_end\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_text = Module[\"___em_js__api_draw_text\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_text\"].apply(null, arguments) };\r\nvar ___em_js__api_duplicate_sound = Module[\"___em_js__api_duplicate_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_duplicate_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_exit_game = Module[\"___em_js__api_exit_game\"] = function() { return Module[\"asm\"][\"___em_js__api_exit_game\"].apply(null, arguments) };\r\nvar ___em_js__api_play_sound = Module[\"___em_js__api_play_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_play_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_set_cursor = Module[\"___em_js__api_set_cursor\"] = function() { return Module[\"asm\"][\"___em_js__api_set_cursor\"].apply(null, arguments) };\r\nvar ___em_js__api_set_volume = Module[\"___em_js__api_set_volume\"] = function() { return Module[\"asm\"][\"___em_js__api_set_volume\"].apply(null, arguments) };\r\nvar ___em_js__api_stop_sound = Module[\"___em_js__api_stop_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_stop_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_websocket_closed = Module[\"___em_js__api_websocket_closed\"] = function() { return Module[\"asm\"][\"___em_js__api_websocket_closed\"].apply(null, arguments) };\r\nvar ___em_js__api_websocket_send = Module[\"___em_js__api_websocket_send\"] = function() { return Module[\"asm\"][\"___em_js__api_websocket_send\"].apply(null, arguments) };\r\nvar ___em_js__exit_error = Module[\"___em_js__exit_error\"] = function() { return Module[\"asm\"][\"___em_js__exit_error\"].apply(null, arguments) };\r\nvar ___em_js__get_file_contents = Module[\"___em_js__get_file_contents\"] = function() { return Module[\"asm\"][\"___em_js__get_file_contents\"].apply(null, arguments) };\r\nvar ___em_js__get_file_size = Module[\"___em_js__get_file_size\"] = function() { return Module[\"asm\"][\"___em_js__get_file_size\"].apply(null, arguments) };\r\nvar ___em_js__put_file_contents = Module[\"___em_js__put_file_contents\"] = function() { return Module[\"asm\"][\"___em_js__put_file_contents\"].apply(null, arguments) };\r\nvar ___em_js__remove_file = Module[\"___em_js__remove_file\"] = function() { return Module[\"asm\"][\"___em_js__remove_file\"].apply(null, arguments) };\r\nvar ___em_js__show_alert = Module[\"___em_js__show_alert\"] = function() { return Module[\"asm\"][\"___em_js__show_alert\"].apply(null, arguments) };\r\nvar ___em_js__trace_pop = Module[\"___em_js__trace_pop\"] = function() { return Module[\"asm\"][\"___em_js__trace_pop\"].apply(null, arguments) };\r\nvar ___em_js__trace_push = Module[\"___em_js__trace_push\"] = function() { return Module[\"asm\"][\"___em_js__trace_push\"].apply(null, arguments) };\r\nvar _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = function() { return Module[\"asm\"][\"_emscripten_replace_memory\"].apply(null, arguments) };\r\nvar _free = Module[\"_free\"] = function() { return Module[\"asm\"][\"_free\"].apply(null, arguments) };\r\nvar _llvm_bswap_i32 = Module[\"_llvm_bswap_i32\"] = function() { return Module[\"asm\"][\"_llvm_bswap_i32\"].apply(null, arguments) };\r\nvar _malloc = Module[\"_malloc\"] = function() { return Module[\"asm\"][\"_malloc\"].apply(null, arguments) };\r\nvar _memcpy = Module[\"_memcpy\"] = function() { return Module[\"asm\"][\"_memcpy\"].apply(null, arguments) };\r\nvar _memmove = Module[\"_memmove\"] = function() { return Module[\"asm\"][\"_memmove\"].apply(null, arguments) };\r\nvar _memset = Module[\"_memset\"] = function() { return Module[\"asm\"][\"_memset\"].apply(null, arguments) };\r\nvar _sbrk = Module[\"_sbrk\"] = function() { return Module[\"asm\"][\"_sbrk\"].apply(null, arguments) };\r\nvar establishStackSpace = Module[\"establishStackSpace\"] = function() { return Module[\"asm\"][\"establishStackSpace\"].apply(null, arguments) };\r\nvar getTempRet0 = Module[\"getTempRet0\"] = function() { return Module[\"asm\"][\"getTempRet0\"].apply(null, arguments) };\r\nvar runPostSets = Module[\"runPostSets\"] = function() { return Module[\"asm\"][\"runPostSets\"].apply(null, arguments) };\r\nvar setTempRet0 = Module[\"setTempRet0\"] = function() { return Module[\"asm\"][\"setTempRet0\"].apply(null, arguments) };\r\nvar setThrew = Module[\"setThrew\"] = function() { return Module[\"asm\"][\"setThrew\"].apply(null, arguments) };\r\nvar stackAlloc = Module[\"stackAlloc\"] = function() { return Module[\"asm\"][\"stackAlloc\"].apply(null, arguments) };\r\nvar stackRestore = Module[\"stackRestore\"] = function() { return Module[\"asm\"][\"stackRestore\"].apply(null, arguments) };\r\nvar stackSave = Module[\"stackSave\"] = function() { return Module[\"asm\"][\"stackSave\"].apply(null, arguments) };\r\nvar dynCall_i = Module[\"dynCall_i\"] = function() { return Module[\"asm\"][\"dynCall_i\"].apply(null, arguments) };\r\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() { return Module[\"asm\"][\"dynCall_ii\"].apply(null, arguments) };\r\nvar dynCall_iii = Module[\"dynCall_iii\"] = function() { return Module[\"asm\"][\"dynCall_iii\"].apply(null, arguments) };\r\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() { return Module[\"asm\"][\"dynCall_iiii\"].apply(null, arguments) };\r\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() { return Module[\"asm\"][\"dynCall_iiiii\"].apply(null, arguments) };\r\nvar dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() { return Module[\"asm\"][\"dynCall_iiiiii\"].apply(null, arguments) };\r\nvar dynCall_ji = Module[\"dynCall_ji\"] = function() { return Module[\"asm\"][\"dynCall_ji\"].apply(null, arguments) };\r\nvar dynCall_v = Module[\"dynCall_v\"] = function() { return Module[\"asm\"][\"dynCall_v\"].apply(null, arguments) };\r\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() { return Module[\"asm\"][\"dynCall_vi\"].apply(null, arguments) };\r\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() { return Module[\"asm\"][\"dynCall_vii\"].apply(null, arguments) };\r\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() { return Module[\"asm\"][\"dynCall_viii\"].apply(null, arguments) };\r\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() { return Module[\"asm\"][\"dynCall_viiii\"].apply(null, arguments) };\r\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viij = Module[\"dynCall_viij\"] = function() { return Module[\"asm\"][\"dynCall_viij\"].apply(null, arguments) };\r\nvar dynCall_viji = Module[\"dynCall_viji\"] = function() { return Module[\"asm\"][\"dynCall_viji\"].apply(null, arguments) };\r\n;\r\n\r\n\r\n\r\n// === Auto-generated postamble setup entry stuff ===\r\n\r\nModule['asm'] = asm;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Modularize mode returns a function, which can be called to\r\n// create instances. The instances provide a then() method,\r\n// must like a Promise, that receives a callback. The callback\r\n// is called when the module is ready to run, with the module\r\n// as a parameter. (Like a Promise, it also returns the module\r\n// so you can use the output of .then(..)).\r\nModule['then'] = function(func) {\r\n // We may already be ready to run code at this time. if\r\n // so, just queue a call to the callback.\r\n if (Module['calledRun']) {\r\n func(Module);\r\n } else {\r\n // we are not ready to call then() yet. we must call it\r\n // at the same time we would call onRuntimeInitialized.\r\n var old = Module['onRuntimeInitialized'];\r\n Module['onRuntimeInitialized'] = function() {\r\n if (old) old();\r\n func(Module);\r\n };\r\n }\r\n return Module;\r\n};\r\n\r\n/**\r\n * @constructor\r\n * @extends {Error}\r\n * @this {ExitStatus}\r\n */\r\nfunction ExitStatus(status) {\r\n this.name = \"ExitStatus\";\r\n this.message = \"Program terminated with exit(\" + status + \")\";\r\n this.status = status;\r\n};\r\nExitStatus.prototype = new Error();\r\nExitStatus.prototype.constructor = ExitStatus;\r\n\r\nvar initialStackTop;\r\nvar calledMain = false;\r\n\r\ndependenciesFulfilled = function runCaller() {\r\n // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)\r\n if (!Module['calledRun']) run();\r\n if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/** @type {function(Array=)} */\r\nfunction run(args) {\r\n args = args || Module['arguments'];\r\n\r\n if (runDependencies > 0) {\r\n return;\r\n }\r\n\r\n\r\n preRun();\r\n\r\n if (runDependencies > 0) return; // a preRun added a dependency, run will be called later\r\n if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame\r\n\r\n function doRun() {\r\n if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening\r\n Module['calledRun'] = true;\r\n\r\n if (ABORT) return;\r\n\r\n ensureInitRuntime();\r\n\r\n preMain();\r\n\r\n if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();\r\n\r\n\r\n postRun();\r\n }\r\n\r\n if (Module['setStatus']) {\r\n Module['setStatus']('Running...');\r\n setTimeout(function() {\r\n setTimeout(function() {\r\n Module['setStatus']('');\r\n }, 1);\r\n doRun();\r\n }, 1);\r\n } else {\r\n doRun();\r\n }\r\n}\r\nModule['run'] = run;\r\n\r\n\r\nfunction exit(status, implicit) {\r\n\r\n // if this is just main exit-ing implicitly, and the status is 0, then we\r\n // don't need to do anything here and can just leave. if the status is\r\n // non-zero, though, then we need to report it.\r\n // (we may have warned about this earlier, if a situation justifies doing so)\r\n if (implicit && Module['noExitRuntime'] && status === 0) {\r\n return;\r\n }\r\n\r\n if (Module['noExitRuntime']) {\r\n } else {\r\n\r\n ABORT = true;\r\n EXITSTATUS = status;\r\n STACKTOP = initialStackTop;\r\n\r\n exitRuntime();\r\n\r\n if (Module['onExit']) Module['onExit'](status);\r\n }\r\n\r\n Module['quit'](status, new ExitStatus(status));\r\n}\r\n\r\nvar abortDecorators = [];\r\n\r\nfunction abort(what) {\r\n if (Module['onAbort']) {\r\n Module['onAbort'](what);\r\n }\r\n\r\n if (what !== undefined) {\r\n out(what);\r\n err(what);\r\n what = JSON.stringify(what)\r\n } else {\r\n what = '';\r\n }\r\n\r\n ABORT = true;\r\n EXITSTATUS = 1;\r\n\r\n throw 'abort(' + what + '). Build with -s ASSERTIONS=1 for more info.';\r\n}\r\nModule['abort'] = abort;\r\n\r\n// {{PRE_RUN_ADDITIONS}}\r\n\r\nif (Module['preInit']) {\r\n if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];\r\n while (Module['preInit'].length > 0) {\r\n Module['preInit'].pop()();\r\n }\r\n}\r\n\r\n\r\nModule[\"noExitRuntime\"] = true;\r\n\r\nrun();\r\n\r\n// {{POST_RUN_ADDITIONS}}\r\n\r\n\r\n\r\n\r\n\r\n// {{MODULE_ADDITIONS}}\r\n\r\n\r\n\r\nModule['ready'] = new Promise(function (resolve, reject) {\r\n delete Module['then']\r\n Module['onAbort'] = function (what) {\r\n reject(what)\r\n }\r\n addOnPostRun(function () {\r\n resolve(Module)\r\n })\r\n});\r\n\r\n\r\n\r\n return Diablo;\r\n}\r\n);\r\n})();\r\nif (typeof exports === 'object' && typeof module === 'object')\r\n module.exports = Diablo;\r\n else if (typeof define === 'function' && define['amd'])\r\n define([], function() { return Diablo; });\r\n else if (typeof exports === 'object')\r\n exports[\"Diablo\"] = Diablo;\r\n \n\n/*** EXPORTS FROM exports-loader ***/\n","module.exports = __webpack_public_path__ + \"static/media/DiabloSpawn.ef6314a9.wasm\";","\r\nvar DiabloSpawn = (function() {\r\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\r\n return (\r\nfunction(DiabloSpawn) {\r\n DiabloSpawn = DiabloSpawn || {};\r\n\r\n// The Module object: Our interface to the outside world. We import\r\n// and export values on it. There are various ways Module can be used:\r\n// 1. Not defined. We create it here\r\n// 2. A function parameter, function(Module) { ..generated code.. }\r\n// 3. pre-run appended it, var Module = {}; ..generated code..\r\n// 4. External script tag defines var Module.\r\n// We need to check if Module already exists (e.g. case 3 above).\r\n// Substitution will be replaced with actual code on later stage of the build,\r\n// this way Closure Compiler will not mangle it (e.g. case 4. above).\r\n// Note that if you want to run closure, and also to use Module\r\n// after the generated code, you will need to define var Module = {};\r\n// before the code. Then that object will be used in the code, and you\r\n// can continue to use Module afterwards as well.\r\nvar Module = typeof DiabloSpawn !== 'undefined' ? DiabloSpawn : {};\r\n\r\n// --pre-jses are emitted after the Module integration code, so that they can\r\n// refer to Module (if they choose; they can also define Module)\r\n\r\n\r\n// Sometimes an existing Module object exists with properties\r\n// meant to overwrite the default module functionality. Here\r\n// we collect those properties and reapply _after_ we configure\r\n// the current environment's defaults to avoid having to be so\r\n// defensive during initialization.\r\nvar moduleOverrides = {};\r\nvar key;\r\nfor (key in Module) {\r\n if (Module.hasOwnProperty(key)) {\r\n moduleOverrides[key] = Module[key];\r\n }\r\n}\r\n\r\nModule['arguments'] = [];\r\nModule['thisProgram'] = './this.program';\r\nModule['quit'] = function(status, toThrow) {\r\n throw toThrow;\r\n};\r\nModule['preRun'] = [];\r\nModule['postRun'] = [];\r\n\r\n// The environment setup code below is customized to use Module.\r\n// *** Environment setup code ***\r\n\r\nvar ENVIRONMENT_IS_WEB = false;\r\nvar ENVIRONMENT_IS_WORKER = false;\r\nvar ENVIRONMENT_IS_NODE = false;\r\nvar ENVIRONMENT_IS_SHELL = false;\r\nENVIRONMENT_IS_WEB = typeof window === 'object';\r\nENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\r\nENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\r\nENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\r\n\r\n\r\n// Three configurations we can be running in:\r\n// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false)\r\n// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)\r\n// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)\r\n\r\n\r\n// `/` should be present at the end if `scriptDirectory` is not empty\r\nvar scriptDirectory = '';\r\nfunction locateFile(path) {\r\n if (Module['locateFile']) {\r\n return Module['locateFile'](path, scriptDirectory);\r\n } else {\r\n return scriptDirectory + path;\r\n }\r\n}\r\n\r\nif (ENVIRONMENT_IS_NODE) {\r\n scriptDirectory = __dirname + '/';\r\n\r\n // Expose functionality in the same simple way that the shells work\r\n // Note that we pollute the global namespace here, otherwise we break in node\r\n var nodeFS;\r\n var nodePath;\r\n\r\n Module['read'] = function shell_read(filename, binary) {\r\n var ret;\r\n if (!nodeFS) nodeFS = require('fs');\r\n if (!nodePath) nodePath = require('path');\r\n filename = nodePath['normalize'](filename);\r\n ret = nodeFS['readFileSync'](filename);\r\n return binary ? ret : ret.toString();\r\n };\r\n\r\n Module['readBinary'] = function readBinary(filename) {\r\n var ret = Module['read'](filename, true);\r\n if (!ret.buffer) {\r\n ret = new Uint8Array(ret);\r\n }\r\n assert(ret.buffer);\r\n return ret;\r\n };\r\n\r\n if (process['argv'].length > 1) {\r\n Module['thisProgram'] = process['argv'][1].replace(/\\\\/g, '/');\r\n }\r\n\r\n Module['arguments'] = process['argv'].slice(2);\r\n\r\n // MODULARIZE will export the module in the proper place outside, we don't need to export here\r\n\r\n process['on']('uncaughtException', function(ex) {\r\n // suppress ExitStatus exceptions from showing an error\r\n if (!(ex instanceof ExitStatus)) {\r\n throw ex;\r\n }\r\n });\r\n // Currently node will swallow unhandled rejections, but this behavior is\r\n // deprecated, and in the future it will exit with error status.\r\n process['on']('unhandledRejection', function(reason, p) {\r\n process['exit'](1);\r\n });\r\n\r\n Module['quit'] = function(status) {\r\n process['exit'](status);\r\n };\r\n\r\n Module['inspect'] = function () { return '[Emscripten Module object]'; };\r\n} else\r\nif (ENVIRONMENT_IS_SHELL) {\r\n\r\n\r\n if (typeof read != 'undefined') {\r\n Module['read'] = function shell_read(f) {\r\n return read(f);\r\n };\r\n }\r\n\r\n Module['readBinary'] = function readBinary(f) {\r\n var data;\r\n if (typeof readbuffer === 'function') {\r\n return new Uint8Array(readbuffer(f));\r\n }\r\n data = read(f, 'binary');\r\n assert(typeof data === 'object');\r\n return data;\r\n };\r\n\r\n if (typeof scriptArgs != 'undefined') {\r\n Module['arguments'] = scriptArgs;\r\n } else if (typeof arguments != 'undefined') {\r\n Module['arguments'] = arguments;\r\n }\r\n\r\n if (typeof quit === 'function') {\r\n Module['quit'] = function(status) {\r\n quit(status);\r\n }\r\n }\r\n} else\r\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\r\n if (ENVIRONMENT_IS_WEB) {\r\n if (document.currentScript) {\r\n scriptDirectory = document.currentScript.src;\r\n }\r\n } else { // worker\r\n scriptDirectory = self.location.href;\r\n }\r\n // When MODULARIZE (and not _INSTANCE), this JS may be executed later, after document.currentScript\r\n // is gone, so we saved it, and we use it here instead of any other info.\r\n if (_scriptDir) {\r\n scriptDirectory = _scriptDir;\r\n }\r\n // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them.\r\n // otherwise, slice off the final part of the url to find the script directory.\r\n if (scriptDirectory.indexOf('blob:') !== 0) {\r\n scriptDirectory = scriptDirectory.split('/').slice(0, -1).join('/') + '/';\r\n } else {\r\n scriptDirectory = '';\r\n }\r\n\r\n\r\n Module['read'] = function shell_read(url) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, false);\r\n xhr.send(null);\r\n return xhr.responseText;\r\n };\r\n\r\n if (ENVIRONMENT_IS_WORKER) {\r\n Module['readBinary'] = function readBinary(url) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, false);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send(null);\r\n return new Uint8Array(xhr.response);\r\n };\r\n }\r\n\r\n Module['readAsync'] = function readAsync(url, onload, onerror) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.onload = function xhr_onload() {\r\n if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0\r\n onload(xhr.response);\r\n return;\r\n }\r\n onerror();\r\n };\r\n xhr.onerror = onerror;\r\n xhr.send(null);\r\n };\r\n\r\n Module['setWindowTitle'] = function(title) { document.title = title };\r\n} else\r\n{\r\n}\r\n\r\n// Set up the out() and err() hooks, which are how we can print to stdout or\r\n// stderr, respectively.\r\n// If the user provided Module.print or printErr, use that. Otherwise,\r\n// console.log is checked first, as 'print' on the web will open a print dialogue\r\n// printErr is preferable to console.warn (works better in shells)\r\n// bind(console) is necessary to fix IE/Edge closed dev tools panel behavior.\r\nvar out = Module['print'] || (typeof console !== 'undefined' ? console.log.bind(console) : (typeof print !== 'undefined' ? print : null));\r\nvar err = Module['printErr'] || (typeof printErr !== 'undefined' ? printErr : ((typeof console !== 'undefined' && console.warn.bind(console)) || out));\r\n\r\n// *** Environment setup code ***\r\n\r\n// Merge back in the overrides\r\nfor (key in moduleOverrides) {\r\n if (moduleOverrides.hasOwnProperty(key)) {\r\n Module[key] = moduleOverrides[key];\r\n }\r\n}\r\n// Free the object hierarchy contained in the overrides, this lets the GC\r\n// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array.\r\nmoduleOverrides = undefined;\r\n\r\n\r\n\r\n// {{PREAMBLE_ADDITIONS}}\r\n\r\nvar STACK_ALIGN = 16;\r\n\r\n\r\nfunction staticAlloc(size) {\r\n var ret = STATICTOP;\r\n STATICTOP = (STATICTOP + size + 15) & -16;\r\n return ret;\r\n}\r\n\r\nfunction dynamicAlloc(size) {\r\n var ret = HEAP32[DYNAMICTOP_PTR>>2];\r\n var end = (ret + size + 15) & -16;\r\n HEAP32[DYNAMICTOP_PTR>>2] = end;\r\n if (end >= TOTAL_MEMORY) {\r\n var success = enlargeMemory();\r\n if (!success) {\r\n HEAP32[DYNAMICTOP_PTR>>2] = ret;\r\n return 0;\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\nfunction alignMemory(size, factor) {\r\n if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default\r\n var ret = size = Math.ceil(size / factor) * factor;\r\n return ret;\r\n}\r\n\r\nfunction getNativeTypeSize(type) {\r\n switch (type) {\r\n case 'i1': case 'i8': return 1;\r\n case 'i16': return 2;\r\n case 'i32': return 4;\r\n case 'i64': return 8;\r\n case 'float': return 4;\r\n case 'double': return 8;\r\n default: {\r\n if (type[type.length-1] === '*') {\r\n return 4; // A pointer\r\n } else if (type[0] === 'i') {\r\n var bits = parseInt(type.substr(1));\r\n assert(bits % 8 === 0);\r\n return bits / 8;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction warnOnce(text) {\r\n if (!warnOnce.shown) warnOnce.shown = {};\r\n if (!warnOnce.shown[text]) {\r\n warnOnce.shown[text] = 1;\r\n err(text);\r\n }\r\n}\r\n\r\nvar asm2wasmImports = { // special asm2wasm imports\r\n \"f64-rem\": function(x, y) {\r\n return x % y;\r\n },\r\n \"debugger\": function() {\r\n debugger;\r\n }\r\n};\r\n\r\n\r\n\r\nvar jsCallStartIndex = 1;\r\nvar functionPointers = new Array(0);\r\n\r\n// 'sig' parameter is only used on LLVM wasm backend\r\nfunction addFunction(func, sig) {\r\n var base = 0;\r\n for (var i = base; i < base + 0; i++) {\r\n if (!functionPointers[i]) {\r\n functionPointers[i] = func;\r\n return jsCallStartIndex + i;\r\n }\r\n }\r\n throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';\r\n}\r\n\r\nfunction removeFunction(index) {\r\n functionPointers[index-jsCallStartIndex] = null;\r\n}\r\n\r\nvar funcWrappers = {};\r\n\r\nfunction getFuncWrapper(func, sig) {\r\n if (!func) return; // on null pointer, return undefined\r\n assert(sig);\r\n if (!funcWrappers[sig]) {\r\n funcWrappers[sig] = {};\r\n }\r\n var sigCache = funcWrappers[sig];\r\n if (!sigCache[func]) {\r\n // optimize away arguments usage in common cases\r\n if (sig.length === 1) {\r\n sigCache[func] = function dynCall_wrapper() {\r\n return dynCall(sig, func);\r\n };\r\n } else if (sig.length === 2) {\r\n sigCache[func] = function dynCall_wrapper(arg) {\r\n return dynCall(sig, func, [arg]);\r\n };\r\n } else {\r\n // general case\r\n sigCache[func] = function dynCall_wrapper() {\r\n return dynCall(sig, func, Array.prototype.slice.call(arguments));\r\n };\r\n }\r\n }\r\n return sigCache[func];\r\n}\r\n\r\n\r\nfunction makeBigInt(low, high, unsigned) {\r\n return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0));\r\n}\r\n\r\nfunction dynCall(sig, ptr, args) {\r\n if (args && args.length) {\r\n return Module['dynCall_' + sig].apply(null, [ptr].concat(args));\r\n } else {\r\n return Module['dynCall_' + sig].call(null, ptr);\r\n }\r\n}\r\n\r\n\r\n\r\nvar Runtime = {\r\n // FIXME backwards compatibility layer for ports. Support some Runtime.*\r\n // for now, fix it there, then remove it from here. That way we\r\n // can minimize any period of breakage.\r\n dynCall: dynCall, // for SDL2 port\r\n};\r\n\r\n// The address globals begin at. Very low in memory, for code size and optimization opportunities.\r\n// Above 0 is static memory, starting with globals.\r\n// Then the stack.\r\n// Then 'dynamic' memory for sbrk.\r\nvar GLOBAL_BASE = 1024;\r\n\r\n\r\n// === Preamble library stuff ===\r\n\r\n// Documentation for the public APIs defined in this file must be updated in:\r\n// site/source/docs/api_reference/preamble.js.rst\r\n// A prebuilt local version of the documentation is available at:\r\n// site/build/text/docs/api_reference/preamble.js.txt\r\n// You can also build docs locally as HTML or other formats in site/\r\n// An online HTML version (which may be of a different version of Emscripten)\r\n// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html\r\n\r\n\r\n\r\n//========================================\r\n// Runtime essentials\r\n//========================================\r\n\r\nvar ABORT = 0; // whether we are quitting the application. no code should run after this. set in exit() and abort()\r\nvar EXITSTATUS = 0;\r\n\r\n/** @type {function(*, string=)} */\r\nfunction assert(condition, text) {\r\n if (!condition) {\r\n abort('Assertion failed: ' + text);\r\n }\r\n}\r\n\r\nvar globalScope = this;\r\n\r\n// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)\r\nfunction getCFunc(ident) {\r\n var func = Module['_' + ident]; // closure exported function\r\n assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported');\r\n return func;\r\n}\r\n\r\nvar JSfuncs = {\r\n // Helpers for cwrap -- it can't refer to Runtime directly because it might\r\n // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find\r\n // out what the minified function name is.\r\n 'stackSave': function() {\r\n stackSave()\r\n },\r\n 'stackRestore': function() {\r\n stackRestore()\r\n },\r\n // type conversion from js to c\r\n 'arrayToC' : function(arr) {\r\n var ret = stackAlloc(arr.length);\r\n writeArrayToMemory(arr, ret);\r\n return ret;\r\n },\r\n 'stringToC' : function(str) {\r\n var ret = 0;\r\n if (str !== null && str !== undefined && str !== 0) { // null string\r\n // at most 4 bytes per UTF-8 code point, +1 for the trailing '\\0'\r\n var len = (str.length << 2) + 1;\r\n ret = stackAlloc(len);\r\n stringToUTF8(str, ret, len);\r\n }\r\n return ret;\r\n }\r\n};\r\n\r\n// For fast lookup of conversion functions\r\nvar toC = {\r\n 'string': JSfuncs['stringToC'], 'array': JSfuncs['arrayToC']\r\n};\r\n\r\n\r\n// C calling interface.\r\nfunction ccall(ident, returnType, argTypes, args, opts) {\r\n function convertReturnValue(ret) {\r\n if (returnType === 'string') return Pointer_stringify(ret);\r\n if (returnType === 'boolean') return Boolean(ret);\r\n return ret;\r\n }\r\n\r\n var func = getCFunc(ident);\r\n var cArgs = [];\r\n var stack = 0;\r\n if (args) {\r\n for (var i = 0; i < args.length; i++) {\r\n var converter = toC[argTypes[i]];\r\n if (converter) {\r\n if (stack === 0) stack = stackSave();\r\n cArgs[i] = converter(args[i]);\r\n } else {\r\n cArgs[i] = args[i];\r\n }\r\n }\r\n }\r\n var ret = func.apply(null, cArgs);\r\n ret = convertReturnValue(ret);\r\n if (stack !== 0) stackRestore(stack);\r\n return ret;\r\n}\r\n\r\nfunction cwrap(ident, returnType, argTypes, opts) {\r\n argTypes = argTypes || [];\r\n // When the function takes numbers and returns a number, we can just return\r\n // the original function\r\n var numericArgs = argTypes.every(function(type){ return type === 'number'});\r\n var numericRet = returnType !== 'string';\r\n if (numericRet && numericArgs && !opts) {\r\n return getCFunc(ident);\r\n }\r\n return function() {\r\n return ccall(ident, returnType, argTypes, arguments, opts);\r\n }\r\n}\r\n\r\n/** @type {function(number, number, string, boolean=)} */\r\nfunction setValue(ptr, value, type, noSafe) {\r\n type = type || 'i8';\r\n if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\r\n switch(type) {\r\n case 'i1': HEAP8[((ptr)>>0)]=value; break;\r\n case 'i8': HEAP8[((ptr)>>0)]=value; break;\r\n case 'i16': HEAP16[((ptr)>>1)]=value; break;\r\n case 'i32': HEAP32[((ptr)>>2)]=value; break;\r\n case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;\r\n case 'float': HEAPF32[((ptr)>>2)]=value; break;\r\n case 'double': HEAPF64[((ptr)>>3)]=value; break;\r\n default: abort('invalid type for setValue: ' + type);\r\n }\r\n}\r\n\r\n/** @type {function(number, string, boolean=)} */\r\nfunction getValue(ptr, type, noSafe) {\r\n type = type || 'i8';\r\n if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\r\n switch(type) {\r\n case 'i1': return HEAP8[((ptr)>>0)];\r\n case 'i8': return HEAP8[((ptr)>>0)];\r\n case 'i16': return HEAP16[((ptr)>>1)];\r\n case 'i32': return HEAP32[((ptr)>>2)];\r\n case 'i64': return HEAP32[((ptr)>>2)];\r\n case 'float': return HEAPF32[((ptr)>>2)];\r\n case 'double': return HEAPF64[((ptr)>>3)];\r\n default: abort('invalid type for getValue: ' + type);\r\n }\r\n return null;\r\n}\r\n\r\nvar ALLOC_NORMAL = 0; // Tries to use _malloc()\r\nvar ALLOC_STACK = 1; // Lives for the duration of the current function call\r\nvar ALLOC_STATIC = 2; // Cannot be freed\r\nvar ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk\r\nvar ALLOC_NONE = 4; // Do not allocate\r\n\r\n// allocate(): This is for internal use. You can use it yourself as well, but the interface\r\n// is a little tricky (see docs right below). The reason is that it is optimized\r\n// for multiple syntaxes to save space in generated code. So you should\r\n// normally not use allocate(), and instead allocate memory using _malloc(),\r\n// initialize it with setValue(), and so forth.\r\n// @slab: An array of data, or a number. If a number, then the size of the block to allocate,\r\n// in *bytes* (note that this is sometimes confusing: the next parameter does not\r\n// affect this!)\r\n// @types: Either an array of types, one for each byte (or 0 if no type at that position),\r\n// or a single type which is used for the entire block. This only matters if there\r\n// is initial data - if @slab is a number, then this does not matter at all and is\r\n// ignored.\r\n// @allocator: How to allocate memory, see ALLOC_*\r\n/** @type {function((TypedArray|Array|number), string, number, number=)} */\r\nfunction allocate(slab, types, allocator, ptr) {\r\n var zeroinit, size;\r\n if (typeof slab === 'number') {\r\n zeroinit = true;\r\n size = slab;\r\n } else {\r\n zeroinit = false;\r\n size = slab.length;\r\n }\r\n\r\n var singleType = typeof types === 'string' ? types : null;\r\n\r\n var ret;\r\n if (allocator == ALLOC_NONE) {\r\n ret = ptr;\r\n } else {\r\n ret = [typeof _malloc === 'function' ? _malloc : staticAlloc, stackAlloc, staticAlloc, dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));\r\n }\r\n\r\n if (zeroinit) {\r\n var stop;\r\n ptr = ret;\r\n assert((ret & 3) == 0);\r\n stop = ret + (size & ~3);\r\n for (; ptr < stop; ptr += 4) {\r\n HEAP32[((ptr)>>2)]=0;\r\n }\r\n stop = ret + size;\r\n while (ptr < stop) {\r\n HEAP8[((ptr++)>>0)]=0;\r\n }\r\n return ret;\r\n }\r\n\r\n if (singleType === 'i8') {\r\n if (slab.subarray || slab.slice) {\r\n HEAPU8.set(/** @type {!Uint8Array} */ (slab), ret);\r\n } else {\r\n HEAPU8.set(new Uint8Array(slab), ret);\r\n }\r\n return ret;\r\n }\r\n\r\n var i = 0, type, typeSize, previousType;\r\n while (i < size) {\r\n var curr = slab[i];\r\n\r\n type = singleType || types[i];\r\n if (type === 0) {\r\n i++;\r\n continue;\r\n }\r\n\r\n if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later\r\n\r\n setValue(ret+i, curr, type);\r\n\r\n // no need to look up size unless type changes, so cache it\r\n if (previousType !== type) {\r\n typeSize = getNativeTypeSize(type);\r\n previousType = type;\r\n }\r\n i += typeSize;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\n// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready\r\nfunction getMemory(size) {\r\n if (!staticSealed) return staticAlloc(size);\r\n if (!runtimeInitialized) return dynamicAlloc(size);\r\n return _malloc(size);\r\n}\r\n\r\n/** @type {function(number, number=)} */\r\nfunction Pointer_stringify(ptr, length) {\r\n if (length === 0 || !ptr) return '';\r\n // Find the length, and check for UTF while doing so\r\n var hasUtf = 0;\r\n var t;\r\n var i = 0;\r\n while (1) {\r\n t = HEAPU8[(((ptr)+(i))>>0)];\r\n hasUtf |= t;\r\n if (t == 0 && !length) break;\r\n i++;\r\n if (length && i == length) break;\r\n }\r\n if (!length) length = i;\r\n\r\n var ret = '';\r\n\r\n if (hasUtf < 128) {\r\n var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack\r\n var curr;\r\n while (length > 0) {\r\n curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));\r\n ret = ret ? ret + curr : curr;\r\n ptr += MAX_CHUNK;\r\n length -= MAX_CHUNK;\r\n }\r\n return ret;\r\n }\r\n return UTF8ToString(ptr);\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nfunction AsciiToString(ptr) {\r\n var str = '';\r\n while (1) {\r\n var ch = HEAP8[((ptr++)>>0)];\r\n if (!ch) return str;\r\n str += String.fromCharCode(ch);\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP.\r\n\r\nfunction stringToAscii(str, outPtr) {\r\n return writeAsciiToMemory(str, outPtr, false);\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nvar UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined;\r\nfunction UTF8ArrayToString(u8Array, idx) {\r\n var endPtr = idx;\r\n // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.\r\n // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.\r\n while (u8Array[endPtr]) ++endPtr;\r\n\r\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\r\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\r\n } else {\r\n var u0, u1, u2, u3, u4, u5;\r\n\r\n var str = '';\r\n while (1) {\r\n // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\r\n u0 = u8Array[idx++];\r\n if (!u0) return str;\r\n if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; }\r\n u1 = u8Array[idx++] & 63;\r\n if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; }\r\n u2 = u8Array[idx++] & 63;\r\n if ((u0 & 0xF0) == 0xE0) {\r\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\r\n } else {\r\n u3 = u8Array[idx++] & 63;\r\n if ((u0 & 0xF8) == 0xF0) {\r\n u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;\r\n } else {\r\n u4 = u8Array[idx++] & 63;\r\n if ((u0 & 0xFC) == 0xF8) {\r\n u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;\r\n } else {\r\n u5 = u8Array[idx++] & 63;\r\n u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;\r\n }\r\n }\r\n }\r\n if (u0 < 0x10000) {\r\n str += String.fromCharCode(u0);\r\n } else {\r\n var ch = u0 - 0x10000;\r\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nfunction UTF8ToString(ptr) {\r\n return UTF8ArrayToString(HEAPU8,ptr);\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx',\r\n// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element.\r\n// outIdx: The starting offset in the array to begin the copying.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array.\r\n// This count should include the null terminator,\r\n// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\r\n if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes.\r\n return 0;\r\n\r\n var startIdx = outIdx;\r\n var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator.\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\r\n var u = str.charCodeAt(i); // possibly a lead surrogate\r\n if (u >= 0xD800 && u <= 0xDFFF) {\r\n var u1 = str.charCodeAt(++i);\r\n u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF);\r\n }\r\n if (u <= 0x7F) {\r\n if (outIdx >= endIdx) break;\r\n outU8Array[outIdx++] = u;\r\n } else if (u <= 0x7FF) {\r\n if (outIdx + 1 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xC0 | (u >> 6);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0xFFFF) {\r\n if (outIdx + 2 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xE0 | (u >> 12);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0x1FFFFF) {\r\n if (outIdx + 3 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xF0 | (u >> 18);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0x3FFFFFF) {\r\n if (outIdx + 4 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xF8 | (u >> 24);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else {\r\n if (outIdx + 5 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xFC | (u >> 30);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n }\r\n }\r\n // Null-terminate the pointer to the buffer.\r\n outU8Array[outIdx] = 0;\r\n return outIdx - startIdx;\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\r\n return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite);\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF8(str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var u = str.charCodeAt(i); // possibly a lead surrogate\r\n if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\r\n if (u <= 0x7F) {\r\n ++len;\r\n } else if (u <= 0x7FF) {\r\n len += 2;\r\n } else if (u <= 0xFFFF) {\r\n len += 3;\r\n } else if (u <= 0x1FFFFF) {\r\n len += 4;\r\n } else if (u <= 0x3FFFFFF) {\r\n len += 5;\r\n } else {\r\n len += 6;\r\n }\r\n }\r\n return len;\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nvar UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined;\r\nfunction UTF16ToString(ptr) {\r\n var endPtr = ptr;\r\n // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.\r\n // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.\r\n var idx = endPtr >> 1;\r\n while (HEAP16[idx]) ++idx;\r\n endPtr = idx << 1;\r\n\r\n if (endPtr - ptr > 32 && UTF16Decoder) {\r\n return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));\r\n } else {\r\n var i = 0;\r\n\r\n var str = '';\r\n while (1) {\r\n var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];\r\n if (codeUnit == 0) return str;\r\n ++i;\r\n // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.\r\n str += String.fromCharCode(codeUnit);\r\n }\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outPtr: Byte address in Emscripten HEAP where to write the string to.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null\r\n// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF16(str, outPtr, maxBytesToWrite) {\r\n // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\r\n if (maxBytesToWrite === undefined) {\r\n maxBytesToWrite = 0x7FFFFFFF;\r\n }\r\n if (maxBytesToWrite < 2) return 0;\r\n maxBytesToWrite -= 2; // Null terminator.\r\n var startPtr = outPtr;\r\n var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length;\r\n for (var i = 0; i < numCharsToWrite; ++i) {\r\n // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.\r\n var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\r\n HEAP16[((outPtr)>>1)]=codeUnit;\r\n outPtr += 2;\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n HEAP16[((outPtr)>>1)]=0;\r\n return outPtr - startPtr;\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF16(str) {\r\n return str.length*2;\r\n}\r\n\r\nfunction UTF32ToString(ptr) {\r\n var i = 0;\r\n\r\n var str = '';\r\n while (1) {\r\n var utf32 = HEAP32[(((ptr)+(i*4))>>2)];\r\n if (utf32 == 0)\r\n return str;\r\n ++i;\r\n // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n if (utf32 >= 0x10000) {\r\n var ch = utf32 - 0x10000;\r\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\r\n } else {\r\n str += String.fromCharCode(utf32);\r\n }\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outPtr: Byte address in Emscripten HEAP where to write the string to.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null\r\n// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF32(str, outPtr, maxBytesToWrite) {\r\n // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\r\n if (maxBytesToWrite === undefined) {\r\n maxBytesToWrite = 0x7FFFFFFF;\r\n }\r\n if (maxBytesToWrite < 4) return 0;\r\n var startPtr = outPtr;\r\n var endPtr = startPtr + maxBytesToWrite - 4;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\r\n if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {\r\n var trailSurrogate = str.charCodeAt(++i);\r\n codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);\r\n }\r\n HEAP32[((outPtr)>>2)]=codeUnit;\r\n outPtr += 4;\r\n if (outPtr + 4 > endPtr) break;\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n HEAP32[((outPtr)>>2)]=0;\r\n return outPtr - startPtr;\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF32(str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var codeUnit = str.charCodeAt(i);\r\n if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate.\r\n len += 4;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n// Allocate heap space for a JS string, and write it there.\r\n// It is the responsibility of the caller to free() that memory.\r\nfunction allocateUTF8(str) {\r\n var size = lengthBytesUTF8(str) + 1;\r\n var ret = _malloc(size);\r\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\r\n return ret;\r\n}\r\n\r\n// Allocate stack space for a JS string, and write it there.\r\nfunction allocateUTF8OnStack(str) {\r\n var size = lengthBytesUTF8(str) + 1;\r\n var ret = stackAlloc(size);\r\n stringToUTF8Array(str, HEAP8, ret, size);\r\n return ret;\r\n}\r\n\r\nfunction demangle(func) {\r\n return func;\r\n}\r\n\r\nfunction demangleAll(text) {\r\n var regex =\r\n /__Z[\\w\\d_]+/g;\r\n return text.replace(regex,\r\n function(x) {\r\n var y = demangle(x);\r\n return x === y ? x : (x + ' [' + y + ']');\r\n });\r\n}\r\n\r\nfunction jsStackTrace() {\r\n var err = new Error();\r\n if (!err.stack) {\r\n // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,\r\n // so try that as a special-case.\r\n try {\r\n throw new Error(0);\r\n } catch(e) {\r\n err = e;\r\n }\r\n if (!err.stack) {\r\n return '(no stack trace available)';\r\n }\r\n }\r\n return err.stack.toString();\r\n}\r\n\r\nfunction stackTrace() {\r\n var js = jsStackTrace();\r\n if (Module['extraStackTrace']) js += '\\n' + Module['extraStackTrace']();\r\n return demangleAll(js);\r\n}\r\n\r\n// Memory management\r\n\r\nvar PAGE_SIZE = 16384;\r\nvar WASM_PAGE_SIZE = 65536;\r\nvar ASMJS_PAGE_SIZE = 16777216;\r\nvar MIN_TOTAL_MEMORY = 16777216;\r\n\r\nfunction alignUp(x, multiple) {\r\n if (x % multiple > 0) {\r\n x += multiple - (x % multiple);\r\n }\r\n return x;\r\n}\r\n\r\nvar HEAP,\r\n/** @type {ArrayBuffer} */\r\n buffer,\r\n/** @type {Int8Array} */\r\n HEAP8,\r\n/** @type {Uint8Array} */\r\n HEAPU8,\r\n/** @type {Int16Array} */\r\n HEAP16,\r\n/** @type {Uint16Array} */\r\n HEAPU16,\r\n/** @type {Int32Array} */\r\n HEAP32,\r\n/** @type {Uint32Array} */\r\n HEAPU32,\r\n/** @type {Float32Array} */\r\n HEAPF32,\r\n/** @type {Float64Array} */\r\n HEAPF64;\r\n\r\nfunction updateGlobalBuffer(buf) {\r\n Module['buffer'] = buffer = buf;\r\n}\r\n\r\nfunction updateGlobalBufferViews() {\r\n Module['HEAP8'] = HEAP8 = new Int8Array(buffer);\r\n Module['HEAP16'] = HEAP16 = new Int16Array(buffer);\r\n Module['HEAP32'] = HEAP32 = new Int32Array(buffer);\r\n Module['HEAPU8'] = HEAPU8 = new Uint8Array(buffer);\r\n Module['HEAPU16'] = HEAPU16 = new Uint16Array(buffer);\r\n Module['HEAPU32'] = HEAPU32 = new Uint32Array(buffer);\r\n Module['HEAPF32'] = HEAPF32 = new Float32Array(buffer);\r\n Module['HEAPF64'] = HEAPF64 = new Float64Array(buffer);\r\n}\r\n\r\nvar STATIC_BASE, STATICTOP, staticSealed; // static area\r\nvar STACK_BASE, STACKTOP, STACK_MAX; // stack area\r\nvar DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk\r\n\r\n STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;\r\n staticSealed = false;\r\n\r\n\r\n\r\n\r\nfunction abortOnCannotGrowMemory() {\r\n 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, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ');\r\n}\r\n\r\nif (!Module['reallocBuffer']) Module['reallocBuffer'] = function(size) {\r\n var ret;\r\n try {\r\n if (ArrayBuffer.transfer) {\r\n ret = ArrayBuffer.transfer(buffer, size);\r\n } else {\r\n var oldHEAP8 = HEAP8;\r\n ret = new ArrayBuffer(size);\r\n var temp = new Int8Array(ret);\r\n temp.set(oldHEAP8);\r\n }\r\n } catch(e) {\r\n return false;\r\n }\r\n var success = _emscripten_replace_memory(ret);\r\n if (!success) return false;\r\n return ret;\r\n};\r\n\r\nfunction enlargeMemory() {\r\n // TOTAL_MEMORY is the current size of the actual array, and DYNAMICTOP is the new top.\r\n\r\n\r\n var PAGE_MULTIPLE = Module[\"usingWasm\"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.\r\n var LIMIT = 2147483648 - PAGE_MULTIPLE; // We can do one page short of 2GB as theoretical maximum.\r\n\r\n if (HEAP32[DYNAMICTOP_PTR>>2] > LIMIT) {\r\n return false;\r\n }\r\n\r\n var OLD_TOTAL_MEMORY = TOTAL_MEMORY;\r\n TOTAL_MEMORY = Math.max(TOTAL_MEMORY, MIN_TOTAL_MEMORY); // So the loop below will not be infinite, and minimum asm.js memory size is 16MB.\r\n\r\n while (TOTAL_MEMORY < HEAP32[DYNAMICTOP_PTR>>2]) { // Keep incrementing the heap size as long as it's less than what is requested.\r\n if (TOTAL_MEMORY <= 536870912) {\r\n TOTAL_MEMORY = alignUp(2 * TOTAL_MEMORY, PAGE_MULTIPLE); // Simple heuristic: double until 1GB...\r\n } else {\r\n // ..., but after that, add smaller increments towards 2GB, which we cannot reach\r\n TOTAL_MEMORY = Math.min(alignUp((3 * TOTAL_MEMORY + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\r\n }\r\n }\r\n\r\n\r\n var replacement = Module['reallocBuffer'](TOTAL_MEMORY);\r\n if (!replacement || replacement.byteLength != TOTAL_MEMORY) {\r\n // restore the state to before this call, we failed\r\n TOTAL_MEMORY = OLD_TOTAL_MEMORY;\r\n return false;\r\n }\r\n\r\n // everything worked\r\n\r\n updateGlobalBuffer(replacement);\r\n updateGlobalBufferViews();\r\n\r\n\r\n\r\n return true;\r\n}\r\n\r\nvar byteLength;\r\ntry {\r\n byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get);\r\n byteLength(new ArrayBuffer(4)); // can fail on older ie\r\n} catch(e) { // can fail on older node/v8\r\n byteLength = function(buffer) { return buffer.byteLength; };\r\n}\r\n\r\nvar TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;\r\nvar TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728;\r\nif (TOTAL_MEMORY < TOTAL_STACK) err('TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')');\r\n\r\n// Initialize the runtime's memory\r\n\r\n\r\n\r\n// Use a provided buffer, if there is one, or else allocate a new one\r\nif (Module['buffer']) {\r\n buffer = Module['buffer'];\r\n} else {\r\n // Use a WebAssembly memory where available\r\n if (typeof WebAssembly === 'object' && typeof WebAssembly.Memory === 'function') {\r\n Module['wasmMemory'] = new WebAssembly.Memory({ 'initial': TOTAL_MEMORY / WASM_PAGE_SIZE });\r\n buffer = Module['wasmMemory'].buffer;\r\n } else\r\n {\r\n buffer = new ArrayBuffer(TOTAL_MEMORY);\r\n }\r\n Module['buffer'] = buffer;\r\n}\r\nupdateGlobalBufferViews();\r\n\r\n\r\nfunction getTotalMemory() {\r\n return TOTAL_MEMORY;\r\n}\r\n\r\n// Endianness check (note: assumes compiler arch was little-endian)\r\n\r\nfunction callRuntimeCallbacks(callbacks) {\r\n while(callbacks.length > 0) {\r\n var callback = callbacks.shift();\r\n if (typeof callback == 'function') {\r\n callback();\r\n continue;\r\n }\r\n var func = callback.func;\r\n if (typeof func === 'number') {\r\n if (callback.arg === undefined) {\r\n Module['dynCall_v'](func);\r\n } else {\r\n Module['dynCall_vi'](func, callback.arg);\r\n }\r\n } else {\r\n func(callback.arg === undefined ? null : callback.arg);\r\n }\r\n }\r\n}\r\n\r\nvar __ATPRERUN__ = []; // functions called before the runtime is initialized\r\nvar __ATINIT__ = []; // functions called during startup\r\nvar __ATMAIN__ = []; // functions called when main() is to be run\r\nvar __ATEXIT__ = []; // functions called during shutdown\r\nvar __ATPOSTRUN__ = []; // functions called after the main() is called\r\n\r\nvar runtimeInitialized = false;\r\nvar runtimeExited = false;\r\n\r\n\r\nfunction preRun() {\r\n // compatibility - merge in anything from Module['preRun'] at this time\r\n if (Module['preRun']) {\r\n if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];\r\n while (Module['preRun'].length) {\r\n addOnPreRun(Module['preRun'].shift());\r\n }\r\n }\r\n callRuntimeCallbacks(__ATPRERUN__);\r\n}\r\n\r\nfunction ensureInitRuntime() {\r\n if (runtimeInitialized) return;\r\n runtimeInitialized = true;\r\n callRuntimeCallbacks(__ATINIT__);\r\n}\r\n\r\nfunction preMain() {\r\n callRuntimeCallbacks(__ATMAIN__);\r\n}\r\n\r\nfunction exitRuntime() {\r\n callRuntimeCallbacks(__ATEXIT__);\r\n runtimeExited = true;\r\n}\r\n\r\nfunction postRun() {\r\n // compatibility - merge in anything from Module['postRun'] at this time\r\n if (Module['postRun']) {\r\n if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];\r\n while (Module['postRun'].length) {\r\n addOnPostRun(Module['postRun'].shift());\r\n }\r\n }\r\n callRuntimeCallbacks(__ATPOSTRUN__);\r\n}\r\n\r\nfunction addOnPreRun(cb) {\r\n __ATPRERUN__.unshift(cb);\r\n}\r\n\r\nfunction addOnInit(cb) {\r\n __ATINIT__.unshift(cb);\r\n}\r\n\r\nfunction addOnPreMain(cb) {\r\n __ATMAIN__.unshift(cb);\r\n}\r\n\r\nfunction addOnExit(cb) {\r\n __ATEXIT__.unshift(cb);\r\n}\r\n\r\nfunction addOnPostRun(cb) {\r\n __ATPOSTRUN__.unshift(cb);\r\n}\r\n\r\n// Deprecated: This function should not be called because it is unsafe and does not provide\r\n// a maximum length limit of how many bytes it is allowed to write. Prefer calling the\r\n// function stringToUTF8Array() instead, which takes in a maximum length that can be used\r\n// to be secure from out of bounds writes.\r\n/** @deprecated */\r\nfunction writeStringToMemory(string, buffer, dontAddNull) {\r\n warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!');\r\n\r\n var /** @type {number} */ lastChar, /** @type {number} */ end;\r\n if (dontAddNull) {\r\n // stringToUTF8Array always appends null. If we don't want to do that, remember the\r\n // character that existed at the location where the null will be placed, and restore\r\n // that after the write (below).\r\n end = buffer + lengthBytesUTF8(string);\r\n lastChar = HEAP8[end];\r\n }\r\n stringToUTF8(string, buffer, Infinity);\r\n if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character.\r\n}\r\n\r\nfunction writeArrayToMemory(array, buffer) {\r\n HEAP8.set(array, buffer);\r\n}\r\n\r\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\r\n for (var i = 0; i < str.length; ++i) {\r\n HEAP8[((buffer++)>>0)]=str.charCodeAt(i);\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n if (!dontAddNull) HEAP8[((buffer)>>0)]=0;\r\n}\r\n\r\nfunction unSign(value, bits, ignore) {\r\n if (value >= 0) {\r\n return value;\r\n }\r\n return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts\r\n : Math.pow(2, bits) + value;\r\n}\r\nfunction reSign(value, bits, ignore) {\r\n if (value <= 0) {\r\n return value;\r\n }\r\n var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32\r\n : Math.pow(2, bits-1);\r\n if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that\r\n // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors\r\n // TODO: In i64 mode 1, resign the two parts separately and safely\r\n value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts\r\n }\r\n return value;\r\n}\r\n\r\n\r\nvar Math_abs = Math.abs;\r\nvar Math_cos = Math.cos;\r\nvar Math_sin = Math.sin;\r\nvar Math_tan = Math.tan;\r\nvar Math_acos = Math.acos;\r\nvar Math_asin = Math.asin;\r\nvar Math_atan = Math.atan;\r\nvar Math_atan2 = Math.atan2;\r\nvar Math_exp = Math.exp;\r\nvar Math_log = Math.log;\r\nvar Math_sqrt = Math.sqrt;\r\nvar Math_ceil = Math.ceil;\r\nvar Math_floor = Math.floor;\r\nvar Math_pow = Math.pow;\r\nvar Math_imul = Math.imul;\r\nvar Math_fround = Math.fround;\r\nvar Math_round = Math.round;\r\nvar Math_min = Math.min;\r\nvar Math_max = Math.max;\r\nvar Math_clz32 = Math.clz32;\r\nvar Math_trunc = Math.trunc;\r\n\r\n// A counter of dependencies for calling run(). If we need to\r\n// do asynchronous work before running, increment this and\r\n// decrement it. Incrementing must happen in a place like\r\n// PRE_RUN_ADDITIONS (used by emcc to add file preloading).\r\n// Note that you can add dependencies in preRun, even though\r\n// it happens right before run - run will be postponed until\r\n// the dependencies are met.\r\nvar runDependencies = 0;\r\nvar runDependencyWatcher = null;\r\nvar dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled\r\n\r\nfunction getUniqueRunDependency(id) {\r\n return id;\r\n}\r\n\r\nfunction addRunDependency(id) {\r\n runDependencies++;\r\n if (Module['monitorRunDependencies']) {\r\n Module['monitorRunDependencies'](runDependencies);\r\n }\r\n}\r\n\r\nfunction removeRunDependency(id) {\r\n runDependencies--;\r\n if (Module['monitorRunDependencies']) {\r\n Module['monitorRunDependencies'](runDependencies);\r\n }\r\n if (runDependencies == 0) {\r\n if (runDependencyWatcher !== null) {\r\n clearInterval(runDependencyWatcher);\r\n runDependencyWatcher = null;\r\n }\r\n if (dependenciesFulfilled) {\r\n var callback = dependenciesFulfilled;\r\n dependenciesFulfilled = null;\r\n callback(); // can add another dependenciesFulfilled\r\n }\r\n }\r\n}\r\n\r\nModule[\"preloadedImages\"] = {}; // maps url to image data\r\nModule[\"preloadedAudios\"] = {}; // maps url to audio data\r\n\r\n\r\n\r\nvar memoryInitializer = null;\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Prefix of data URIs emitted by SINGLE_FILE and related options.\r\nvar dataURIPrefix = 'data:application/octet-stream;base64,';\r\n\r\n// Indicates whether filename is a base64 data URI.\r\nfunction isDataURI(filename) {\r\n return String.prototype.startsWith ?\r\n filename.startsWith(dataURIPrefix) :\r\n filename.indexOf(dataURIPrefix) === 0;\r\n}\r\n\r\n\r\n\r\n\r\nfunction integrateWasmJS() {\r\n // wasm.js has several methods for creating the compiled code module here:\r\n // * 'native-wasm' : use native WebAssembly support in the browser\r\n // * 'interpret-s-expr': load s-expression code from a .wast and interpret\r\n // * 'interpret-binary': load binary wasm and interpret\r\n // * 'interpret-asm2wasm': load asm.js code, translate to wasm, and interpret\r\n // * 'asmjs': no wasm, just load the asm.js code and use that (good for testing)\r\n // The method is set at compile time (BINARYEN_METHOD)\r\n // The method can be a comma-separated list, in which case, we will try the\r\n // options one by one. Some of them can fail gracefully, and then we can try\r\n // the next.\r\n\r\n // inputs\r\n\r\n var method = 'native-wasm';\r\n\r\n var wasmTextFile = 'DiabloSpawn.wast';\r\n var wasmBinaryFile = 'DiabloSpawn.wasm';\r\n var asmjsCodeFile = 'DiabloSpawn.temp.asm.js';\r\n\r\n if (!isDataURI(wasmTextFile)) {\r\n wasmTextFile = locateFile(wasmTextFile);\r\n }\r\n if (!isDataURI(wasmBinaryFile)) {\r\n wasmBinaryFile = locateFile(wasmBinaryFile);\r\n }\r\n if (!isDataURI(asmjsCodeFile)) {\r\n asmjsCodeFile = locateFile(asmjsCodeFile);\r\n }\r\n\r\n // utilities\r\n\r\n var wasmPageSize = 64*1024;\r\n\r\n var info = {\r\n 'global': null,\r\n 'env': null,\r\n 'asm2wasm': asm2wasmImports,\r\n 'parent': Module // Module inside wasm-js.cpp refers to wasm-js.cpp; this allows access to the outside program.\r\n };\r\n\r\n var exports = null;\r\n\r\n\r\n function mergeMemory(newBuffer) {\r\n // The wasm instance creates its memory. But static init code might have written to\r\n // buffer already, including the mem init file, and we must copy it over in a proper merge.\r\n // TODO: avoid this copy, by avoiding such static init writes\r\n // TODO: in shorter term, just copy up to the last static init write\r\n var oldBuffer = Module['buffer'];\r\n if (newBuffer.byteLength < oldBuffer.byteLength) {\r\n err('the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here');\r\n }\r\n var oldView = new Int8Array(oldBuffer);\r\n var newView = new Int8Array(newBuffer);\r\n\r\n\r\n newView.set(oldView);\r\n updateGlobalBuffer(newBuffer);\r\n updateGlobalBufferViews();\r\n }\r\n\r\n function fixImports(imports) {\r\n return imports;\r\n }\r\n\r\n function getBinary() {\r\n try {\r\n if (Module['wasmBinary']) {\r\n return new Uint8Array(Module['wasmBinary']);\r\n }\r\n if (Module['readBinary']) {\r\n return Module['readBinary'](wasmBinaryFile);\r\n } else {\r\n throw \"both async and sync fetching of the wasm failed\";\r\n }\r\n }\r\n catch (err) {\r\n abort(err);\r\n }\r\n }\r\n\r\n function getBinaryPromise() {\r\n // if we don't have the binary yet, and have the Fetch api, use that\r\n // in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web\r\n if (!Module['wasmBinary'] && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function') {\r\n return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) {\r\n if (!response['ok']) {\r\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\r\n }\r\n return response['arrayBuffer']();\r\n }).catch(function () {\r\n return getBinary();\r\n });\r\n }\r\n // Otherwise, getBinary should be able to get it synchronously\r\n return new Promise(function(resolve, reject) {\r\n resolve(getBinary());\r\n });\r\n }\r\n\r\n // do-method functions\r\n\r\n\r\n function doNativeWasm(global, env, providedBuffer) {\r\n if (typeof WebAssembly !== 'object') {\r\n err('no native wasm support detected');\r\n return false;\r\n }\r\n // prepare memory import\r\n if (!(Module['wasmMemory'] instanceof WebAssembly.Memory)) {\r\n err('no native wasm Memory in use');\r\n return false;\r\n }\r\n env['memory'] = Module['wasmMemory'];\r\n // Load the wasm module and create an instance of using native support in the JS engine.\r\n info['global'] = {\r\n 'NaN': NaN,\r\n 'Infinity': Infinity\r\n };\r\n info['global.Math'] = Math;\r\n info['env'] = env;\r\n // handle a generated wasm instance, receiving its exports and\r\n // performing other necessary setup\r\n function receiveInstance(instance, module) {\r\n exports = instance.exports;\r\n if (exports.memory) mergeMemory(exports.memory);\r\n Module['asm'] = exports;\r\n Module[\"usingWasm\"] = true;\r\n removeRunDependency('wasm-instantiate');\r\n }\r\n addRunDependency('wasm-instantiate');\r\n\r\n // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback\r\n // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel\r\n // to any other async startup actions they are performing.\r\n if (Module['instantiateWasm']) {\r\n try {\r\n return Module['instantiateWasm'](info, receiveInstance);\r\n } catch(e) {\r\n err('Module.instantiateWasm callback failed with error: ' + e);\r\n return false;\r\n }\r\n }\r\n\r\n function receiveInstantiatedSource(output) {\r\n // 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance.\r\n // receiveInstance() will swap in the exports (to Module.asm) so they can be called\r\n receiveInstance(output['instance'], output['module']);\r\n }\r\n function instantiateArrayBuffer(receiver) {\r\n getBinaryPromise().then(function(binary) {\r\n return WebAssembly.instantiate(binary, info);\r\n }).then(receiver).catch(function(reason) {\r\n err('failed to asynchronously prepare wasm: ' + reason);\r\n abort(reason);\r\n });\r\n }\r\n // Prefer streaming instantiation if available.\r\n if (!Module['wasmBinary'] &&\r\n typeof WebAssembly.instantiateStreaming === 'function' &&\r\n !isDataURI(wasmBinaryFile) &&\r\n typeof fetch === 'function') {\r\n WebAssembly.instantiateStreaming(fetch(wasmBinaryFile, { credentials: 'same-origin' }), info)\r\n .then(receiveInstantiatedSource)\r\n .catch(function(reason) {\r\n // We expect the most common failure cause to be a bad MIME type for the binary,\r\n // in which case falling back to ArrayBuffer instantiation should work.\r\n err('wasm streaming compile failed: ' + reason);\r\n err('falling back to ArrayBuffer instantiation');\r\n instantiateArrayBuffer(receiveInstantiatedSource);\r\n });\r\n } else {\r\n instantiateArrayBuffer(receiveInstantiatedSource);\r\n }\r\n return {}; // no exports yet; we'll fill them in later\r\n }\r\n\r\n\r\n // We may have a preloaded value in Module.asm, save it\r\n Module['asmPreload'] = Module['asm'];\r\n\r\n // Memory growth integration code\r\n\r\n var asmjsReallocBuffer = Module['reallocBuffer'];\r\n\r\n var wasmReallocBuffer = function(size) {\r\n var PAGE_MULTIPLE = Module[\"usingWasm\"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.\r\n size = alignUp(size, PAGE_MULTIPLE); // round up to wasm page size\r\n var old = Module['buffer'];\r\n var oldSize = old.byteLength;\r\n if (Module[\"usingWasm\"]) {\r\n // native wasm support\r\n try {\r\n var result = Module['wasmMemory'].grow((size - oldSize) / wasmPageSize); // .grow() takes a delta compared to the previous size\r\n if (result !== (-1 | 0)) {\r\n // success in native wasm memory growth, get the buffer from the memory\r\n return Module['buffer'] = Module['wasmMemory'].buffer;\r\n } else {\r\n return null;\r\n }\r\n } catch(e) {\r\n return null;\r\n }\r\n }\r\n };\r\n\r\n Module['reallocBuffer'] = function(size) {\r\n if (finalMethod === 'asmjs') {\r\n return asmjsReallocBuffer(size);\r\n } else {\r\n return wasmReallocBuffer(size);\r\n }\r\n };\r\n\r\n // we may try more than one; this is the final one, that worked and we are using\r\n var finalMethod = '';\r\n\r\n // Provide an \"asm.js function\" for the application, called to \"link\" the asm.js module. We instantiate\r\n // the wasm module at that time, and it receives imports and provides exports and so forth, the app\r\n // doesn't need to care that it is wasm or olyfilled wasm or asm.js.\r\n\r\n Module['asm'] = function(global, env, providedBuffer) {\r\n env = fixImports(env);\r\n\r\n // import table\r\n if (!env['table']) {\r\n var TABLE_SIZE = Module['wasmTableSize'];\r\n if (TABLE_SIZE === undefined) TABLE_SIZE = 1024; // works in binaryen interpreter at least\r\n var MAX_TABLE_SIZE = Module['wasmMaxTableSize'];\r\n if (typeof WebAssembly === 'object' && typeof WebAssembly.Table === 'function') {\r\n if (MAX_TABLE_SIZE !== undefined) {\r\n env['table'] = new WebAssembly.Table({ 'initial': TABLE_SIZE, 'maximum': MAX_TABLE_SIZE, 'element': 'anyfunc' });\r\n } else {\r\n env['table'] = new WebAssembly.Table({ 'initial': TABLE_SIZE, element: 'anyfunc' });\r\n }\r\n } else {\r\n env['table'] = new Array(TABLE_SIZE); // works in binaryen interpreter at least\r\n }\r\n Module['wasmTable'] = env['table'];\r\n }\r\n\r\n if (!env['memoryBase']) {\r\n env['memoryBase'] = Module['STATIC_BASE']; // tell the memory segments where to place themselves\r\n }\r\n if (!env['tableBase']) {\r\n env['tableBase'] = 0; // table starts at 0 by default, in dynamic linking this will change\r\n }\r\n\r\n // try the methods. each should return the exports if it succeeded\r\n\r\n var exports;\r\n exports = doNativeWasm(global, env, providedBuffer);\r\n\r\n assert(exports, 'no binaryen method succeeded.');\r\n\r\n\r\n return exports;\r\n };\r\n\r\n var methodHandler = Module['asm']; // note our method handler, as we may modify Module['asm'] later\r\n}\r\n\r\nintegrateWasmJS();\r\n\r\n// === Body ===\r\n\r\nvar ASM_CONSTS = [function($0) { self.DApi.current_save_id($0); }];\r\n\r\nfunction _emscripten_asm_const_ii(code, a0) {\r\n return ASM_CONSTS[code](a0);\r\n}\r\nfunction __api_close_keyboard(){ self.DApi.close_keyboard(); }\r\nfunction __api_open_keyboard(x0,y0,x1,y1,len){ self.DApi.open_keyboard(x0, y0, x1, y1, len); }\r\nfunction _api_create_sound(id,ptr,size){ self.DApi.create_sound(id, HEAPU8.slice(ptr, ptr + size)); }\r\nfunction _api_create_sound_float(id,ptr,samples,channels,rate){ self.DApi.create_sound_raw(id, HEAPF32.slice(ptr / 4, ptr / 4 + samples * channels), samples, channels, rate); }\r\nfunction _api_delete_sound(id){ self.DApi.delete_sound(id); }\r\nfunction _api_draw_begin(){ self.DApi.draw_begin(); }\r\nfunction _api_draw_belt(items){ self.DApi.draw_belt(HEAP32.subarray(items / 4, items / 4 + 8)); }\r\nfunction _api_draw_blit(x,y,w,h,ptr){ self.DApi.draw_blit(x, y, w, h, HEAPU8.subarray(ptr, ptr + w * h * 4)); }\r\nfunction _api_draw_clip_text(x0,y0,x1,y1){ self.DApi.draw_clip_text(x0, y0, x1, y1); }\r\nfunction _api_draw_end(){ self.DApi.draw_end(); }\r\nfunction _api_draw_text(x,y,ptr,color){ var end = HEAPU8.indexOf(0, ptr); var text = String.fromCharCode.apply(null, HEAPU8.subarray(ptr, end)); self.DApi.draw_text(x, y, text, color); }\r\nfunction _api_duplicate_sound(id,srcId){ self.DApi.duplicate_sound(id, srcId); }\r\nfunction _api_exit_game(){ self.DApi.exit_game(); }\r\nfunction _api_play_sound(id,volume,pan,loop){ self.DApi.play_sound(id, volume, pan, loop); }\r\nfunction _api_set_cursor(x,y){ self.DApi.set_cursor(x, y); }\r\nfunction _api_set_volume(id,volume){ self.DApi.set_volume(id, volume); }\r\nfunction _api_stop_sound(id){ self.DApi.stop_sound(id); }\r\nfunction _api_websocket_closed(){ return self.DApi.websocket_closed(); }\r\nfunction _api_websocket_send(ptr,size){ self.DApi.websocket_send(HEAPU8.subarray(ptr, ptr + size)); }\r\nfunction _exit_error(err){ var end = HEAPU8.indexOf( 0, err ); var text = String.fromCharCode.apply(null, HEAPU8.subarray( err, end )); self.DApi.exit_error( text ); }\r\nfunction _get_file_contents(path,ptr,offset,size){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); self.DApi.get_file_contents(text, HEAPU8.subarray(ptr, ptr + size), offset); }\r\nfunction _get_file_size(path){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); return self.DApi.get_file_size(text); }\r\nfunction _put_file_contents(path,ptr,size){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end)); self.DApi.put_file_contents(text, HEAPU8.slice(ptr, ptr + size)); }\r\nfunction _remove_file(path){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); self.DApi.remove_file( text ); }\r\nfunction _show_alert(err){ var end = HEAPU8.indexOf( 0, err ); var text = String.fromCharCode.apply( null, HEAPU8.subarray( err, end ) ); self.alert( text ); }\r\nfunction _trace_pop(){ if (self.WASM_TRACE) { self.WASM_TRACE.pop(); } }\r\nfunction _trace_push(ptr){ var end = HEAPU8.indexOf(0, ptr); var text = String.fromCharCode.apply(null, HEAPU8.subarray(ptr, end)); console.log(text); self.WASM_TRACE = self.WASM_TRACE || []; self.WASM_TRACE.push(text); }\r\n\r\n\r\n\r\nSTATIC_BASE = GLOBAL_BASE;\r\n\r\nSTATICTOP = STATIC_BASE + 1841808;\r\n/* global initializers */ __ATINIT__.push({ func: function() { __GLOBAL__sub_I_msgcmd_cpp() } }, { func: function() { __GLOBAL__sub_I_snet_cpp() } });\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar STATIC_BUMP = 1841808;\r\nModule[\"STATIC_BASE\"] = STATIC_BASE;\r\nModule[\"STATIC_BUMP\"] = STATIC_BUMP;\r\n\r\n/* no memory initializer */\r\nvar tempDoublePtr = STATICTOP; STATICTOP += 16;\r\n\r\nfunction copyTempFloat(ptr) { // functions, because inlining this code increases code size too much\r\n\r\n HEAP8[tempDoublePtr] = HEAP8[ptr];\r\n\r\n HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\r\n\r\n HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\r\n\r\n HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\r\n\r\n}\r\n\r\nfunction copyTempDouble(ptr) {\r\n\r\n HEAP8[tempDoublePtr] = HEAP8[ptr];\r\n\r\n HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\r\n\r\n HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\r\n\r\n HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\r\n\r\n HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];\r\n\r\n HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];\r\n\r\n HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];\r\n\r\n HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];\r\n\r\n}\r\n\r\n// {{PRE_LIBRARY}}\r\n\r\n\r\n function ___assert_fail(condition, filename, line, func) {\r\n abort('Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function']);\r\n }\r\n\r\n function ___cxa_allocate_exception(size) {\r\n return _malloc(size);\r\n }\r\n\r\n \r\n function __ZSt18uncaught_exceptionv() { // std::uncaught_exception()\r\n return !!__ZSt18uncaught_exceptionv.uncaught_exception;\r\n }\r\n \r\n var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function (adjusted) {\r\n if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted;\r\n for (var key in EXCEPTIONS.infos) {\r\n var ptr = +key; // the iteration key is a string, and if we throw this, it must be an integer as that is what we look for\r\n var info = EXCEPTIONS.infos[ptr];\r\n if (info.adjusted === adjusted) {\r\n return ptr;\r\n }\r\n }\r\n return adjusted;\r\n },addRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n info.refcount++;\r\n },decRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n assert(info.refcount > 0);\r\n info.refcount--;\r\n // A rethrown exception can reach refcount 0; it must not be discarded\r\n // Its next handler will clear the rethrown flag and addRef it, prior to\r\n // final decRef and destruction here\r\n if (info.refcount === 0 && !info.rethrown) {\r\n if (info.destructor) {\r\n Module['dynCall_vi'](info.destructor, ptr);\r\n }\r\n delete EXCEPTIONS.infos[ptr];\r\n ___cxa_free_exception(ptr);\r\n }\r\n },clearRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n info.refcount = 0;\r\n }};function ___cxa_begin_catch(ptr) {\r\n var info = EXCEPTIONS.infos[ptr];\r\n if (info && !info.caught) {\r\n info.caught = true;\r\n __ZSt18uncaught_exceptionv.uncaught_exception--;\r\n }\r\n if (info) info.rethrown = false;\r\n EXCEPTIONS.caught.push(ptr);\r\n EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));\r\n return ptr;\r\n }\r\n\r\n \r\n function ___cxa_free_exception(ptr) {\r\n try {\r\n return _free(ptr);\r\n } catch(e) { // XXX FIXME\r\n }\r\n }function ___cxa_end_catch() {\r\n // Clear state flag.\r\n Module['setThrew'](0);\r\n // Call destructor if one is registered then clear it.\r\n var ptr = EXCEPTIONS.caught.pop();\r\n if (ptr) {\r\n EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));\r\n EXCEPTIONS.last = 0; // XXX in decRef?\r\n }\r\n }\r\n\r\n function ___cxa_find_matching_catch_2() {\r\n return ___cxa_find_matching_catch.apply(null, arguments);\r\n }\r\n\r\n function ___cxa_find_matching_catch_3() {\r\n return ___cxa_find_matching_catch.apply(null, arguments);\r\n }\r\n\r\n\r\n function ___cxa_get_exception_ptr(ptr) {\r\n // TODO: use info.adjusted?\r\n return ptr;\r\n }\r\n\r\n function ___cxa_pure_virtual() {\r\n ABORT = true;\r\n throw 'Pure virtual function called!';\r\n }\r\n\r\n \r\n \r\n function ___resumeException(ptr) {\r\n if (!EXCEPTIONS.last) { EXCEPTIONS.last = ptr; }\r\n throw ptr;\r\n }function ___cxa_find_matching_catch() {\r\n var thrown = EXCEPTIONS.last;\r\n if (!thrown) {\r\n // just pass through the null ptr\r\n return ((setTempRet0(0),0)|0);\r\n }\r\n var info = EXCEPTIONS.infos[thrown];\r\n var throwntype = info.type;\r\n if (!throwntype) {\r\n // just pass through the thrown ptr\r\n return ((setTempRet0(0),thrown)|0);\r\n }\r\n var typeArray = Array.prototype.slice.call(arguments);\r\n \r\n var pointer = Module['___cxa_is_pointer_type'](throwntype);\r\n // can_catch receives a **, add indirection\r\n if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4);\r\n HEAP32[((___cxa_find_matching_catch.buffer)>>2)]=thrown;\r\n thrown = ___cxa_find_matching_catch.buffer;\r\n // The different catch blocks are denoted by different types.\r\n // Due to inheritance, those types may not precisely match the\r\n // type of the thrown object. Find one which matches, and\r\n // return the type of the catch block which should be called.\r\n for (var i = 0; i < typeArray.length; i++) {\r\n if (typeArray[i] && Module['___cxa_can_catch'](typeArray[i], throwntype, thrown)) {\r\n thrown = HEAP32[((thrown)>>2)]; // undo indirection\r\n info.adjusted = thrown;\r\n return ((setTempRet0(typeArray[i]),thrown)|0);\r\n }\r\n }\r\n // Shouldn't happen unless we have bogus data in typeArray\r\n // or encounter a type for which emscripten doesn't have suitable\r\n // typeinfo defined. Best-efforts match just in case.\r\n thrown = HEAP32[((thrown)>>2)]; // undo indirection\r\n return ((setTempRet0(throwntype),thrown)|0);\r\n }function ___cxa_throw(ptr, type, destructor) {\r\n EXCEPTIONS.infos[ptr] = {\r\n ptr: ptr,\r\n adjusted: ptr,\r\n type: type,\r\n destructor: destructor,\r\n refcount: 0,\r\n caught: false,\r\n rethrown: false\r\n };\r\n EXCEPTIONS.last = ptr;\r\n if (!(\"uncaught_exception\" in __ZSt18uncaught_exceptionv)) {\r\n __ZSt18uncaught_exceptionv.uncaught_exception = 1;\r\n } else {\r\n __ZSt18uncaught_exceptionv.uncaught_exception++;\r\n }\r\n throw ptr;\r\n }\r\n\r\n function ___gxx_personality_v0() {\r\n }\r\n\r\n function ___lock() {}\r\n\r\n\r\n \r\n var SYSCALLS={varargs:0,get:function (varargs) {\r\n SYSCALLS.varargs += 4;\r\n var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];\r\n return ret;\r\n },getStr:function () {\r\n var ret = Pointer_stringify(SYSCALLS.get());\r\n return ret;\r\n },get64:function () {\r\n var low = SYSCALLS.get(), high = SYSCALLS.get();\r\n if (low >= 0) assert(high === 0);\r\n else assert(high === -1);\r\n return low;\r\n },getZero:function () {\r\n assert(SYSCALLS.get() === 0);\r\n }};function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // llseek\r\n var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();\r\n // NOTE: offset_high is unused - Emscripten's off_t is 32-bit\r\n var offset = offset_low;\r\n FS.llseek(stream, offset, whence);\r\n HEAP32[((result)>>2)]=stream.position;\r\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n \r\n function flush_NO_FILESYSTEM() {\r\n // flush anything remaining in the buffers during shutdown\r\n var fflush = Module[\"_fflush\"];\r\n if (fflush) fflush(0);\r\n var printChar = ___syscall146.printChar;\r\n if (!printChar) return;\r\n var buffers = ___syscall146.buffers;\r\n if (buffers[1].length) printChar(1, 10);\r\n if (buffers[2].length) printChar(2, 10);\r\n }function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // writev\r\n // hack to support printf in NO_FILESYSTEM\r\n var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();\r\n var ret = 0;\r\n if (!___syscall146.buffers) {\r\n ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr\r\n ___syscall146.printChar = function(stream, curr) {\r\n var buffer = ___syscall146.buffers[stream];\r\n assert(buffer);\r\n if (curr === 0 || curr === 10) {\r\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\r\n buffer.length = 0;\r\n } else {\r\n buffer.push(curr);\r\n }\r\n };\r\n }\r\n for (var i = 0; i < iovcnt; i++) {\r\n var ptr = HEAP32[(((iov)+(i*8))>>2)];\r\n var len = HEAP32[(((iov)+(i*8 + 4))>>2)];\r\n for (var j = 0; j < len; j++) {\r\n ___syscall146.printChar(stream, HEAPU8[ptr+j]);\r\n }\r\n ret += len;\r\n }\r\n return ret;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // ioctl\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // close\r\n var stream = SYSCALLS.getStreamFromFD();\r\n FS.close(stream);\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___unlock() {}\r\n\r\n function _abort() {\r\n Module['abort']();\r\n }\r\n\r\n var _emscripten_asm_const_int=true;\r\n\r\n \r\n function __exit(status) {\r\n // void _exit(int status);\r\n // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html\r\n exit(status);\r\n }function _exit(status) {\r\n __exit(status);\r\n }\r\n\r\n \r\n\r\n var _llvm_ceil_f32=Math_ceil;\r\n\r\n var _llvm_ctlz_i32=true;\r\n\r\n function _llvm_eh_typeid_for(type) {\r\n return type;\r\n }\r\n\r\n function _llvm_trap() {\r\n abort('trap!');\r\n }\r\n\r\n \r\n function _emscripten_memcpy_big(dest, src, num) {\r\n HEAPU8.set(HEAPU8.subarray(src, src+num), dest);\r\n return dest;\r\n } \r\n\r\n \r\n\r\n \r\n\r\n \r\n var PTHREAD_SPECIFIC={};function _pthread_getspecific(key) {\r\n return PTHREAD_SPECIFIC[key] || 0;\r\n }\r\n\r\n \r\n var PTHREAD_SPECIFIC_NEXT_KEY=1;\r\n \r\n var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key, destructor) {\r\n if (key == 0) {\r\n return ERRNO_CODES.EINVAL;\r\n }\r\n HEAP32[((key)>>2)]=PTHREAD_SPECIFIC_NEXT_KEY;\r\n // values start at 0\r\n PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY] = 0;\r\n PTHREAD_SPECIFIC_NEXT_KEY++;\r\n return 0;\r\n }\r\n\r\n function _pthread_once(ptr, func) {\r\n if (!_pthread_once.seen) _pthread_once.seen = {};\r\n if (ptr in _pthread_once.seen) return;\r\n Module['dynCall_v'](func);\r\n _pthread_once.seen[ptr] = 1;\r\n }\r\n\r\n function _pthread_setspecific(key, value) {\r\n if (!(key in PTHREAD_SPECIFIC)) {\r\n return ERRNO_CODES.EINVAL;\r\n }\r\n PTHREAD_SPECIFIC[key] = value;\r\n return 0;\r\n }\r\n\r\n \r\n function ___setErrNo(value) {\r\n if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;\r\n return value;\r\n } \r\n\r\n function _time(ptr) {\r\n var ret = (Date.now()/1000)|0;\r\n if (ptr) {\r\n HEAP32[((ptr)>>2)]=ret;\r\n }\r\n return ret;\r\n }\r\nDYNAMICTOP_PTR = staticAlloc(4);\r\n\r\nSTACK_BASE = STACKTOP = alignMemory(STATICTOP);\r\n\r\nSTACK_MAX = STACK_BASE + TOTAL_STACK;\r\n\r\nDYNAMIC_BASE = alignMemory(STACK_MAX);\r\n\r\nHEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE;\r\n\r\nstaticSealed = true; // seal the static portion of memory\r\n\r\nvar ASSERTIONS = false;\r\n\r\n/** @type {function(string, boolean=, number=)} */\r\nfunction intArrayFromString(stringy, dontAddNull, length) {\r\n var len = length > 0 ? length : lengthBytesUTF8(stringy)+1;\r\n var u8array = new Array(len);\r\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\r\n if (dontAddNull) u8array.length = numBytesWritten;\r\n return u8array;\r\n}\r\n\r\nfunction intArrayToString(array) {\r\n var ret = [];\r\n for (var i = 0; i < array.length; i++) {\r\n var chr = array[i];\r\n if (chr > 0xFF) {\r\n if (ASSERTIONS) {\r\n assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.');\r\n }\r\n chr &= 0xFF;\r\n }\r\n ret.push(String.fromCharCode(chr));\r\n }\r\n return ret.join('');\r\n}\r\n\r\n\r\n\r\nModule['wasmTableSize'] = 1114;\r\n\r\nModule['wasmMaxTableSize'] = 1114;\r\n\r\nfunction invoke_i(index) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_i\"](index);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_ii(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_ii\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iii(index,a1,a2) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iii\"](index,a1,a2);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiii(index,a1,a2,a3) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiii\"](index,a1,a2,a3);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiiii(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiiiii(index,a1,a2,a3,a4,a5) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiiiii\"](index,a1,a2,a3,a4,a5);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_ji(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_ji\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_v(index) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_v\"](index);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_vi(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_vi\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_vii(index,a1,a2) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_vii\"](index,a1,a2);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viii(index,a1,a2,a3) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viii\"](index,a1,a2,a3);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiii(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiii\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiii(index,a1,a2,a3,a4,a5) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viij(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viij\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viji(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viji\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nModule.asmGlobalArg = {};\r\n\r\nModule.asmLibraryArg = { \"abort\": abort, \"assert\": assert, \"enlargeMemory\": enlargeMemory, \"getTotalMemory\": getTotalMemory, \"abortOnCannotGrowMemory\": abortOnCannotGrowMemory, \"invoke_i\": invoke_i, \"invoke_ii\": invoke_ii, \"invoke_iii\": invoke_iii, \"invoke_iiii\": invoke_iiii, \"invoke_iiiii\": invoke_iiiii, \"invoke_iiiiii\": invoke_iiiiii, \"invoke_ji\": invoke_ji, \"invoke_v\": invoke_v, \"invoke_vi\": invoke_vi, \"invoke_vii\": invoke_vii, \"invoke_viii\": invoke_viii, \"invoke_viiii\": invoke_viiii, \"invoke_viiiii\": invoke_viiiii, \"invoke_viiiiii\": invoke_viiiiii, \"invoke_viiiiiii\": invoke_viiiiiii, \"invoke_viiiiiiiii\": invoke_viiiiiiiii, \"invoke_viiiiiiiiii\": invoke_viiiiiiiiii, \"invoke_viij\": invoke_viij, \"invoke_viji\": invoke_viji, \"__ZSt18uncaught_exceptionv\": __ZSt18uncaught_exceptionv, \"___assert_fail\": ___assert_fail, \"___cxa_allocate_exception\": ___cxa_allocate_exception, \"___cxa_begin_catch\": ___cxa_begin_catch, \"___cxa_end_catch\": ___cxa_end_catch, \"___cxa_find_matching_catch\": ___cxa_find_matching_catch, \"___cxa_find_matching_catch_2\": ___cxa_find_matching_catch_2, \"___cxa_find_matching_catch_3\": ___cxa_find_matching_catch_3, \"___cxa_free_exception\": ___cxa_free_exception, \"___cxa_get_exception_ptr\": ___cxa_get_exception_ptr, \"___cxa_pure_virtual\": ___cxa_pure_virtual, \"___cxa_throw\": ___cxa_throw, \"___gxx_personality_v0\": ___gxx_personality_v0, \"___lock\": ___lock, \"___resumeException\": ___resumeException, \"___setErrNo\": ___setErrNo, \"___syscall140\": ___syscall140, \"___syscall146\": ___syscall146, \"___syscall54\": ___syscall54, \"___syscall6\": ___syscall6, \"___unlock\": ___unlock, \"__api_close_keyboard\": __api_close_keyboard, \"__api_open_keyboard\": __api_open_keyboard, \"__exit\": __exit, \"_abort\": _abort, \"_api_create_sound\": _api_create_sound, \"_api_create_sound_float\": _api_create_sound_float, \"_api_delete_sound\": _api_delete_sound, \"_api_draw_begin\": _api_draw_begin, \"_api_draw_belt\": _api_draw_belt, \"_api_draw_blit\": _api_draw_blit, \"_api_draw_clip_text\": _api_draw_clip_text, \"_api_draw_end\": _api_draw_end, \"_api_draw_text\": _api_draw_text, \"_api_duplicate_sound\": _api_duplicate_sound, \"_api_exit_game\": _api_exit_game, \"_api_play_sound\": _api_play_sound, \"_api_set_cursor\": _api_set_cursor, \"_api_set_volume\": _api_set_volume, \"_api_stop_sound\": _api_stop_sound, \"_api_websocket_closed\": _api_websocket_closed, \"_api_websocket_send\": _api_websocket_send, \"_emscripten_asm_const_ii\": _emscripten_asm_const_ii, \"_emscripten_memcpy_big\": _emscripten_memcpy_big, \"_exit\": _exit, \"_exit_error\": _exit_error, \"_get_file_contents\": _get_file_contents, \"_get_file_size\": _get_file_size, \"_llvm_ceil_f32\": _llvm_ceil_f32, \"_llvm_eh_typeid_for\": _llvm_eh_typeid_for, \"_llvm_trap\": _llvm_trap, \"_pthread_getspecific\": _pthread_getspecific, \"_pthread_key_create\": _pthread_key_create, \"_pthread_once\": _pthread_once, \"_pthread_setspecific\": _pthread_setspecific, \"_put_file_contents\": _put_file_contents, \"_remove_file\": _remove_file, \"_show_alert\": _show_alert, \"_time\": _time, \"_trace_pop\": _trace_pop, \"_trace_push\": _trace_push, \"flush_NO_FILESYSTEM\": flush_NO_FILESYSTEM, \"DYNAMICTOP_PTR\": DYNAMICTOP_PTR, \"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX };\r\n// EMSCRIPTEN_START_ASM\r\nvar asm =Module[\"asm\"]// EMSCRIPTEN_END_ASM\r\n(Module.asmGlobalArg, Module.asmLibraryArg, buffer);\r\n\r\nModule[\"asm\"] = asm;\r\nvar _DApi_AllocPacket = Module[\"_DApi_AllocPacket\"] = function() { return Module[\"asm\"][\"_DApi_AllocPacket\"].apply(null, arguments) };\r\nvar _DApi_Char = Module[\"_DApi_Char\"] = function() { return Module[\"asm\"][\"_DApi_Char\"].apply(null, arguments) };\r\nvar _DApi_Init = Module[\"_DApi_Init\"] = function() { return Module[\"asm\"][\"_DApi_Init\"].apply(null, arguments) };\r\nvar _DApi_Key = Module[\"_DApi_Key\"] = function() { return Module[\"asm\"][\"_DApi_Key\"].apply(null, arguments) };\r\nvar _DApi_Mouse = Module[\"_DApi_Mouse\"] = function() { return Module[\"asm\"][\"_DApi_Mouse\"].apply(null, arguments) };\r\nvar _DApi_Render = Module[\"_DApi_Render\"] = function() { return Module[\"asm\"][\"_DApi_Render\"].apply(null, arguments) };\r\nvar _DApi_SyncText = Module[\"_DApi_SyncText\"] = function() { return Module[\"asm\"][\"_DApi_SyncText\"].apply(null, arguments) };\r\nvar _DApi_SyncTextPtr = Module[\"_DApi_SyncTextPtr\"] = function() { return Module[\"asm\"][\"_DApi_SyncTextPtr\"].apply(null, arguments) };\r\nvar _SNet_InitWebsocket = Module[\"_SNet_InitWebsocket\"] = function() { return Module[\"asm\"][\"_SNet_InitWebsocket\"].apply(null, arguments) };\r\nvar __GLOBAL__sub_I_msgcmd_cpp = Module[\"__GLOBAL__sub_I_msgcmd_cpp\"] = function() { return Module[\"asm\"][\"__GLOBAL__sub_I_msgcmd_cpp\"].apply(null, arguments) };\r\nvar __GLOBAL__sub_I_snet_cpp = Module[\"__GLOBAL__sub_I_snet_cpp\"] = function() { return Module[\"asm\"][\"__GLOBAL__sub_I_snet_cpp\"].apply(null, arguments) };\r\nvar ___cxa_can_catch = Module[\"___cxa_can_catch\"] = function() { return Module[\"asm\"][\"___cxa_can_catch\"].apply(null, arguments) };\r\nvar ___cxa_is_pointer_type = Module[\"___cxa_is_pointer_type\"] = function() { return Module[\"asm\"][\"___cxa_is_pointer_type\"].apply(null, arguments) };\r\nvar ___em_js___api_close_keyboard = Module[\"___em_js___api_close_keyboard\"] = function() { return Module[\"asm\"][\"___em_js___api_close_keyboard\"].apply(null, arguments) };\r\nvar ___em_js___api_open_keyboard = Module[\"___em_js___api_open_keyboard\"] = function() { return Module[\"asm\"][\"___em_js___api_open_keyboard\"].apply(null, arguments) };\r\nvar ___em_js__api_create_sound = Module[\"___em_js__api_create_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_create_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_create_sound_float = Module[\"___em_js__api_create_sound_float\"] = function() { return Module[\"asm\"][\"___em_js__api_create_sound_float\"].apply(null, arguments) };\r\nvar ___em_js__api_delete_sound = Module[\"___em_js__api_delete_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_delete_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_begin = Module[\"___em_js__api_draw_begin\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_begin\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_belt = Module[\"___em_js__api_draw_belt\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_belt\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_blit = Module[\"___em_js__api_draw_blit\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_blit\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_clip_text = Module[\"___em_js__api_draw_clip_text\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_clip_text\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_end = Module[\"___em_js__api_draw_end\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_end\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_text = Module[\"___em_js__api_draw_text\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_text\"].apply(null, arguments) };\r\nvar ___em_js__api_duplicate_sound = Module[\"___em_js__api_duplicate_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_duplicate_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_exit_game = Module[\"___em_js__api_exit_game\"] = function() { return Module[\"asm\"][\"___em_js__api_exit_game\"].apply(null, arguments) };\r\nvar ___em_js__api_play_sound = Module[\"___em_js__api_play_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_play_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_set_cursor = Module[\"___em_js__api_set_cursor\"] = function() { return Module[\"asm\"][\"___em_js__api_set_cursor\"].apply(null, arguments) };\r\nvar ___em_js__api_set_volume = Module[\"___em_js__api_set_volume\"] = function() { return Module[\"asm\"][\"___em_js__api_set_volume\"].apply(null, arguments) };\r\nvar ___em_js__api_stop_sound = Module[\"___em_js__api_stop_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_stop_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_websocket_closed = Module[\"___em_js__api_websocket_closed\"] = function() { return Module[\"asm\"][\"___em_js__api_websocket_closed\"].apply(null, arguments) };\r\nvar ___em_js__api_websocket_send = Module[\"___em_js__api_websocket_send\"] = function() { return Module[\"asm\"][\"___em_js__api_websocket_send\"].apply(null, arguments) };\r\nvar ___em_js__exit_error = Module[\"___em_js__exit_error\"] = function() { return Module[\"asm\"][\"___em_js__exit_error\"].apply(null, arguments) };\r\nvar ___em_js__get_file_contents = Module[\"___em_js__get_file_contents\"] = function() { return Module[\"asm\"][\"___em_js__get_file_contents\"].apply(null, arguments) };\r\nvar ___em_js__get_file_size = Module[\"___em_js__get_file_size\"] = function() { return Module[\"asm\"][\"___em_js__get_file_size\"].apply(null, arguments) };\r\nvar ___em_js__put_file_contents = Module[\"___em_js__put_file_contents\"] = function() { return Module[\"asm\"][\"___em_js__put_file_contents\"].apply(null, arguments) };\r\nvar ___em_js__remove_file = Module[\"___em_js__remove_file\"] = function() { return Module[\"asm\"][\"___em_js__remove_file\"].apply(null, arguments) };\r\nvar ___em_js__show_alert = Module[\"___em_js__show_alert\"] = function() { return Module[\"asm\"][\"___em_js__show_alert\"].apply(null, arguments) };\r\nvar ___em_js__trace_pop = Module[\"___em_js__trace_pop\"] = function() { return Module[\"asm\"][\"___em_js__trace_pop\"].apply(null, arguments) };\r\nvar ___em_js__trace_push = Module[\"___em_js__trace_push\"] = function() { return Module[\"asm\"][\"___em_js__trace_push\"].apply(null, arguments) };\r\nvar _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = function() { return Module[\"asm\"][\"_emscripten_replace_memory\"].apply(null, arguments) };\r\nvar _free = Module[\"_free\"] = function() { return Module[\"asm\"][\"_free\"].apply(null, arguments) };\r\nvar _llvm_bswap_i32 = Module[\"_llvm_bswap_i32\"] = function() { return Module[\"asm\"][\"_llvm_bswap_i32\"].apply(null, arguments) };\r\nvar _malloc = Module[\"_malloc\"] = function() { return Module[\"asm\"][\"_malloc\"].apply(null, arguments) };\r\nvar _memcpy = Module[\"_memcpy\"] = function() { return Module[\"asm\"][\"_memcpy\"].apply(null, arguments) };\r\nvar _memmove = Module[\"_memmove\"] = function() { return Module[\"asm\"][\"_memmove\"].apply(null, arguments) };\r\nvar _memset = Module[\"_memset\"] = function() { return Module[\"asm\"][\"_memset\"].apply(null, arguments) };\r\nvar _sbrk = Module[\"_sbrk\"] = function() { return Module[\"asm\"][\"_sbrk\"].apply(null, arguments) };\r\nvar establishStackSpace = Module[\"establishStackSpace\"] = function() { return Module[\"asm\"][\"establishStackSpace\"].apply(null, arguments) };\r\nvar getTempRet0 = Module[\"getTempRet0\"] = function() { return Module[\"asm\"][\"getTempRet0\"].apply(null, arguments) };\r\nvar runPostSets = Module[\"runPostSets\"] = function() { return Module[\"asm\"][\"runPostSets\"].apply(null, arguments) };\r\nvar setTempRet0 = Module[\"setTempRet0\"] = function() { return Module[\"asm\"][\"setTempRet0\"].apply(null, arguments) };\r\nvar setThrew = Module[\"setThrew\"] = function() { return Module[\"asm\"][\"setThrew\"].apply(null, arguments) };\r\nvar stackAlloc = Module[\"stackAlloc\"] = function() { return Module[\"asm\"][\"stackAlloc\"].apply(null, arguments) };\r\nvar stackRestore = Module[\"stackRestore\"] = function() { return Module[\"asm\"][\"stackRestore\"].apply(null, arguments) };\r\nvar stackSave = Module[\"stackSave\"] = function() { return Module[\"asm\"][\"stackSave\"].apply(null, arguments) };\r\nvar dynCall_i = Module[\"dynCall_i\"] = function() { return Module[\"asm\"][\"dynCall_i\"].apply(null, arguments) };\r\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() { return Module[\"asm\"][\"dynCall_ii\"].apply(null, arguments) };\r\nvar dynCall_iii = Module[\"dynCall_iii\"] = function() { return Module[\"asm\"][\"dynCall_iii\"].apply(null, arguments) };\r\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() { return Module[\"asm\"][\"dynCall_iiii\"].apply(null, arguments) };\r\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() { return Module[\"asm\"][\"dynCall_iiiii\"].apply(null, arguments) };\r\nvar dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() { return Module[\"asm\"][\"dynCall_iiiiii\"].apply(null, arguments) };\r\nvar dynCall_ji = Module[\"dynCall_ji\"] = function() { return Module[\"asm\"][\"dynCall_ji\"].apply(null, arguments) };\r\nvar dynCall_v = Module[\"dynCall_v\"] = function() { return Module[\"asm\"][\"dynCall_v\"].apply(null, arguments) };\r\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() { return Module[\"asm\"][\"dynCall_vi\"].apply(null, arguments) };\r\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() { return Module[\"asm\"][\"dynCall_vii\"].apply(null, arguments) };\r\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() { return Module[\"asm\"][\"dynCall_viii\"].apply(null, arguments) };\r\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() { return Module[\"asm\"][\"dynCall_viiii\"].apply(null, arguments) };\r\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viij = Module[\"dynCall_viij\"] = function() { return Module[\"asm\"][\"dynCall_viij\"].apply(null, arguments) };\r\nvar dynCall_viji = Module[\"dynCall_viji\"] = function() { return Module[\"asm\"][\"dynCall_viji\"].apply(null, arguments) };\r\n;\r\n\r\n\r\n\r\n// === Auto-generated postamble setup entry stuff ===\r\n\r\nModule['asm'] = asm;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Modularize mode returns a function, which can be called to\r\n// create instances. The instances provide a then() method,\r\n// must like a Promise, that receives a callback. The callback\r\n// is called when the module is ready to run, with the module\r\n// as a parameter. (Like a Promise, it also returns the module\r\n// so you can use the output of .then(..)).\r\nModule['then'] = function(func) {\r\n // We may already be ready to run code at this time. if\r\n // so, just queue a call to the callback.\r\n if (Module['calledRun']) {\r\n func(Module);\r\n } else {\r\n // we are not ready to call then() yet. we must call it\r\n // at the same time we would call onRuntimeInitialized.\r\n var old = Module['onRuntimeInitialized'];\r\n Module['onRuntimeInitialized'] = function() {\r\n if (old) old();\r\n func(Module);\r\n };\r\n }\r\n return Module;\r\n};\r\n\r\n/**\r\n * @constructor\r\n * @extends {Error}\r\n * @this {ExitStatus}\r\n */\r\nfunction ExitStatus(status) {\r\n this.name = \"ExitStatus\";\r\n this.message = \"Program terminated with exit(\" + status + \")\";\r\n this.status = status;\r\n};\r\nExitStatus.prototype = new Error();\r\nExitStatus.prototype.constructor = ExitStatus;\r\n\r\nvar initialStackTop;\r\nvar calledMain = false;\r\n\r\ndependenciesFulfilled = function runCaller() {\r\n // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)\r\n if (!Module['calledRun']) run();\r\n if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/** @type {function(Array=)} */\r\nfunction run(args) {\r\n args = args || Module['arguments'];\r\n\r\n if (runDependencies > 0) {\r\n return;\r\n }\r\n\r\n\r\n preRun();\r\n\r\n if (runDependencies > 0) return; // a preRun added a dependency, run will be called later\r\n if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame\r\n\r\n function doRun() {\r\n if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening\r\n Module['calledRun'] = true;\r\n\r\n if (ABORT) return;\r\n\r\n ensureInitRuntime();\r\n\r\n preMain();\r\n\r\n if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();\r\n\r\n\r\n postRun();\r\n }\r\n\r\n if (Module['setStatus']) {\r\n Module['setStatus']('Running...');\r\n setTimeout(function() {\r\n setTimeout(function() {\r\n Module['setStatus']('');\r\n }, 1);\r\n doRun();\r\n }, 1);\r\n } else {\r\n doRun();\r\n }\r\n}\r\nModule['run'] = run;\r\n\r\n\r\nfunction exit(status, implicit) {\r\n\r\n // if this is just main exit-ing implicitly, and the status is 0, then we\r\n // don't need to do anything here and can just leave. if the status is\r\n // non-zero, though, then we need to report it.\r\n // (we may have warned about this earlier, if a situation justifies doing so)\r\n if (implicit && Module['noExitRuntime'] && status === 0) {\r\n return;\r\n }\r\n\r\n if (Module['noExitRuntime']) {\r\n } else {\r\n\r\n ABORT = true;\r\n EXITSTATUS = status;\r\n STACKTOP = initialStackTop;\r\n\r\n exitRuntime();\r\n\r\n if (Module['onExit']) Module['onExit'](status);\r\n }\r\n\r\n Module['quit'](status, new ExitStatus(status));\r\n}\r\n\r\nvar abortDecorators = [];\r\n\r\nfunction abort(what) {\r\n if (Module['onAbort']) {\r\n Module['onAbort'](what);\r\n }\r\n\r\n if (what !== undefined) {\r\n out(what);\r\n err(what);\r\n what = JSON.stringify(what)\r\n } else {\r\n what = '';\r\n }\r\n\r\n ABORT = true;\r\n EXITSTATUS = 1;\r\n\r\n throw 'abort(' + what + '). Build with -s ASSERTIONS=1 for more info.';\r\n}\r\nModule['abort'] = abort;\r\n\r\n// {{PRE_RUN_ADDITIONS}}\r\n\r\nif (Module['preInit']) {\r\n if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];\r\n while (Module['preInit'].length > 0) {\r\n Module['preInit'].pop()();\r\n }\r\n}\r\n\r\n\r\nModule[\"noExitRuntime\"] = true;\r\n\r\nrun();\r\n\r\n// {{POST_RUN_ADDITIONS}}\r\n\r\n\r\n\r\n\r\n\r\n// {{MODULE_ADDITIONS}}\r\n\r\n\r\n\r\nModule['ready'] = new Promise(function (resolve, reject) {\r\n delete Module['then']\r\n Module['onAbort'] = function (what) {\r\n reject(what)\r\n }\r\n addOnPostRun(function () {\r\n resolve(Module)\r\n })\r\n});\r\n\r\n\r\n\r\n return DiabloSpawn;\r\n}\r\n);\r\n})();\r\nif (typeof exports === 'object' && typeof module === 'object')\r\n module.exports = DiabloSpawn;\r\n else if (typeof define === 'function' && define['amd'])\r\n define([], function() { return DiabloSpawn; });\r\n else if (typeof exports === 'object')\r\n exports[\"DiabloSpawn\"] = DiabloSpawn;\r\n \n\n/*** EXPORTS FROM exports-loader ***/\n","module.exports = require('./lib/axios');","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar runtime = function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\"; // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = \"Generator\"; // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n}( // If this script is executing as a CommonJS module, use module.exports\n// as the regeneratorRuntime namespace. Otherwise create a new empty\n// object. Either way, the resulting object will be used to initialize\n// the regeneratorRuntime variable at the top of this file.\ntypeof module === \"object\" ? module.exports : {});\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}","'use strict';\n\nvar utils = require('./utils');\n\nvar bind = require('./helpers/bind');\n\nvar Axios = require('./core/Axios');\n\nvar mergeConfig = require('./core/mergeConfig');\n\nvar defaults = require('./defaults');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\n\n\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance\n\n utils.extend(instance, Axios.prototype, context); // Copy context to instance\n\n utils.extend(instance, context);\n return instance;\n} // Create the default instance to be exported\n\n\nvar axios = createInstance(defaults); // Expose Axios class to allow class inheritance\n\naxios.Axios = Axios; // Factory for creating new instances\n\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n}; // Expose Cancel & CancelToken\n\n\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel'); // Expose all/spread\n\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = require('./helpers/spread');\nmodule.exports = axios; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = axios;","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nmodule.exports = function isBuffer(obj) {\n return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n};","'use strict';\n\nvar utils = require('./../utils');\n\nvar buildURL = require('../helpers/buildURL');\n\nvar InterceptorManager = require('./InterceptorManager');\n\nvar dispatchRequest = require('./dispatchRequest');\n\nvar mergeConfig = require('./mergeConfig');\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\n\n\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\n\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get'; // Hook up interceptors middleware\n\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n}; // Provide aliases for supported request methods\n\n\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = Axios;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n\n\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\n\n\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\n\n\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;","'use strict';\n\nvar utils = require('./../utils');\n\nvar transformData = require('./transformData');\n\nvar isCancel = require('../cancel/isCancel');\n\nvar defaults = require('../defaults');\n\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\n\nvar combineURLs = require('./../helpers/combineURLs');\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\n\n\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config); // Support baseURL config\n\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n } // Ensure headers exist\n\n\n config.headers = config.headers || {}; // Transform request data\n\n config.data = transformData(config.data, config.headers, config.transformRequest); // Flatten headers\n\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers || {});\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config); // Transform response data\n\n response.data = transformData(response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config); // Transform response data\n\n if (reason && reason.response) {\n reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n\n return Promise.reject(reason);\n });\n};","'use strict';\n\nvar utils = require('./../utils');\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\n\n\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n return data;\n};","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nvar createError = require('./createError');\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\n\n\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","'use strict';\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\n\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function () {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n\n return error;\n};","'use strict';\n\nvar utils = require('./../utils'); // Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\n\n\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\n\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) {\n return parsed;\n }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() : // Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() : // Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","'use strict';\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\n\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};","'use strict';\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","'use strict';\n\nvar Cancel = require('./Cancel');\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\n\n\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n\n\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;","'use strict';\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\n\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import DiabloBinary from './Diablo.wasm';\r\nimport DiabloModule from './Diablo.jscc';\r\nimport SpawnBinary from './DiabloSpawn.wasm';\r\nimport SpawnModule from './DiabloSpawn.jscc';\r\nimport axios from 'axios';\r\n\r\nconst DiabloSize = 1466809;\r\nconst SpawnSize = 1337416;\r\n\r\n/* eslint-disable-next-line no-restricted-globals */\r\nconst worker = self;\r\n\r\nlet canvas = null, context = null;\r\nlet imageData = null;\r\nlet files = null;\r\nlet renderBatch = null;\r\nlet drawBelt = null;\r\nlet is_spawn = false;\r\n\r\nconst ChunkSize = 1 << 20;\r\nclass RemoteFile {\r\n constructor(url) {\r\n const request = new XMLHttpRequest();\r\n request.open('HEAD', url, false);\r\n request.send();\r\n if (request.status < 200 || request.status >= 300) {\r\n worker.postMessage({action: \"error\", error: `Failed to load remote file`});\r\n }\r\n this.byteLength = parseInt(request.getResponseHeader('Content-Length'));\r\n\r\n this.url = url;\r\n\r\n this.buffer = new Uint8Array(this.byteLength);\r\n this.chunks = new Uint8Array(((this.byteLength + ChunkSize - 1) >> 20) | 0);\r\n }\r\n\r\n subarray(start, end) {\r\n let chunk0 = (start / ChunkSize) | 0;\r\n let chunk1 = ((end + ChunkSize - 1) / ChunkSize) | 0;\r\n let missing0 = chunk1, missing1 = chunk0;\r\n for (let i = chunk0; i < chunk1; ++i) {\r\n if (!this.chunks[i]) {\r\n missing0 = Math.min(missing0, i);\r\n missing1 = Math.max(missing1, i);\r\n }\r\n }\r\n if (missing0 <= missing1) {\r\n const request = new XMLHttpRequest();\r\n request.open('GET', this.url, false);\r\n request.setRequestHeader('Range', `bytes=${missing0 * ChunkSize}-${Math.min(missing1 * ChunkSize + ChunkSize - 1, this.byteLength - 1)}`);\r\n request.responseType = 'arraybuffer';\r\n request.send();\r\n if (request.status < 200 || request.status >= 300) {\r\n worker.postMessage({action: \"error\", error: `Failed to load remote file`});\r\n } else {\r\n const header = request.getResponseHeader('Content-Range');\r\n let m, start = 0;\r\n if (header && (m = header.match(/bytes (\\d+)-(\\d+)\\/(\\d+)/))) {\r\n start = parseInt(m[1]);\r\n }\r\n this.buffer.set(new Uint8Array(request.response), start);\r\n chunk0 = ((start + ChunkSize - 1) / ChunkSize) | 0;\r\n chunk1 = ((start + request.response.byteLength + ChunkSize - 1) / ChunkSize) | 0;\r\n for (let i = chunk0; i < chunk1; ++i) {\r\n this.chunks[i] = 1;\r\n }\r\n }\r\n }\r\n return this.buffer.subarray(start, end);\r\n }\r\n}\r\n\r\nconst DApi = {\r\n exit_error(error) {\r\n worker.postMessage({action: \"error\", error});\r\n },\r\n\r\n exit_game() {\r\n worker.postMessage({action: \"exit\"});\r\n },\r\n current_save_id(id) {\r\n worker.postMessage({action: \"current_save\", name: id >= 0 ? (is_spawn ? `spawn${id}.sv` : `single_${id}.sv`) : null});\r\n },\r\n\r\n get_file_size(path) {\r\n const data = files.get(path.toLowerCase());\r\n return data ? data.byteLength : 0;\r\n },\r\n get_file_contents(path, array, offset) {\r\n const data = files.get(path.toLowerCase());\r\n if (data) {\r\n array.set(data.subarray(offset, offset + array.byteLength));\r\n }\r\n },\r\n put_file_contents(path, array) {\r\n path = path.toLowerCase();\r\n // if (!path.match(/^(spawn\\d+\\.sv|single_\\d+\\.sv|config\\.ini)$/i)) {\r\n // alert(`Bad file name: ${path}`);\r\n // }\r\n files.set(path, array);\r\n worker.postMessage({action: \"fs\", func: \"update\", params: [path, array]});\r\n },\r\n remove_file(path) {\r\n path = path.toLowerCase();\r\n files.delete(path);\r\n worker.postMessage({action: \"fs\", func: \"delete\", params: [path]});\r\n },\r\n\r\n set_cursor(x, y) {\r\n worker.postMessage({action: \"cursor\", x, y});\r\n },\r\n open_keyboard(...args) {\r\n worker.postMessage({action: \"keyboard\", rect: [...args]});\r\n },\r\n close_keyboard() {\r\n worker.postMessage({action: \"keyboard\", rect: null});\r\n },\r\n\r\n websocket_closed() {\r\n return false;\r\n },\r\n};\r\n\r\nlet frameTime = 0, lastTime = 0;\r\nfunction getFPS() {\r\n const time = performance.now();\r\n if (!lastTime) {\r\n lastTime = time;\r\n }\r\n frameTime = 0.9 * frameTime + 0.1 * (time - lastTime);\r\n lastTime = time;\r\n return frameTime ? 1000.0 / frameTime : 0.0;\r\n}\r\n\r\nconst DApi_renderLegacy = {\r\n draw_begin() {\r\n renderBatch = {\r\n images: [],\r\n text: [],\r\n clip: null,\r\n belt: drawBelt,\r\n };\r\n drawBelt = null;\r\n },\r\n draw_blit(x, y, w, h, data) {\r\n renderBatch.images.push({x, y, w, h, data: data.slice()});\r\n },\r\n draw_clip_text(x0, y0, x1, y1) {\r\n renderBatch.clip = {x0, y0, x1, y1};\r\n },\r\n draw_text(x, y, text, color) {\r\n renderBatch.text.push({x, y, text, color});\r\n },\r\n draw_end() {\r\n //DApi.draw_text(10, 10, `FPS: ${getFPS().toFixed(1)} (Transfer)`, 0xFFCC00);\r\n const transfer = renderBatch.images.map(({data}) => data.buffer);\r\n if (renderBatch.belt) {\r\n transfer.push(renderBatch.belt.buffer);\r\n }\r\n worker.postMessage({action: \"render\", batch: renderBatch}, transfer);\r\n renderBatch = null;\r\n },\r\n draw_belt(items) {\r\n drawBelt = items.slice();\r\n },\r\n};\r\n\r\nconst DApi_renderOffscreen = {\r\n draw_begin() {\r\n context.save();\r\n context.font = 'bold 13px Times New Roman';\r\n },\r\n draw_blit(x, y, w, h, data) {\r\n imageData.data.set(data);\r\n context.putImageData(imageData, x, y);\r\n },\r\n draw_clip_text(x0, y0, x1, y1) {\r\n context.beginPath();\r\n context.rect(x0, y0, x1 - x0, y1 - y0);\r\n context.clip();\r\n },\r\n draw_text(x, y, text, color) {\r\n const r = ((color >> 16) & 0xFF);\r\n const g = ((color >> 8) & 0xFF);\r\n const b = (color & 0xFF);\r\n context.fillStyle = `rgb(${r}, ${g}, ${b})`;\r\n context.fillText(text, x, y + 22);\r\n },\r\n draw_end() {\r\n //DApi.draw_text(10, 10, `FPS: ${getFPS().toFixed(1)} (Offscreen)`, 0xFFCC00);\r\n context.restore();\r\n const bitmap = canvas.transferToImageBitmap();\r\n const transfer = [bitmap];\r\n if (drawBelt) {\r\n transfer.push(drawBelt.buffer);\r\n }\r\n worker.postMessage({action: \"render\", batch: {bitmap, belt: drawBelt}}, transfer);\r\n drawBelt = null;\r\n },\r\n draw_belt(items) {\r\n drawBelt = items.slice();\r\n },\r\n};\r\n\r\nlet audioBatch = null, audioTransfer = null;\r\nlet maxSoundId = 0, maxBatchId = 0;\r\n[\"create_sound_raw\", \"create_sound\", \"duplicate_sound\"].forEach(func => {\r\n DApi[func] = function(...params) {\r\n if (audioBatch) {\r\n maxBatchId = params[0] + 1;\r\n audioBatch.push({func, params});\r\n if (func !== \"duplicate_sound\") {\r\n audioTransfer.push(params[1].buffer);\r\n }\r\n } else {\r\n maxSoundId = params[0] + 1;\r\n const transfer = [];\r\n if (func !== \"duplicate_sound\") {\r\n transfer.push(params[1].buffer);\r\n }\r\n worker.postMessage({action: \"audio\", func, params}, transfer);\r\n }\r\n };\r\n});\r\n[\"play_sound\", \"set_volume\", \"stop_sound\", \"delete_sound\"].forEach(func => {\r\n DApi[func] = function(...params) {\r\n if (audioBatch && params[0] >= maxSoundId) {\r\n audioBatch.push({func, params});\r\n } else {\r\n worker.postMessage({action: \"audio\", func, params});\r\n }\r\n }\r\n});\r\n\r\nlet packetBatch = null;\r\nDApi.websocket_send = function(data) {\r\n if (packetBatch) {\r\n packetBatch.push(data.slice().buffer);\r\n } else {\r\n worker.postMessage({action: \"packet\", buffer: data});\r\n }\r\n};\r\n\r\nworker.DApi = DApi;\r\n\r\nlet wasm = null;\r\n\r\nfunction try_api(func) {\r\n try {\r\n func();\r\n } catch (e) {\r\n if (typeof e === \"string\") {\r\n worker.postMessage({action: \"\"})\r\n }\r\n worker.postMessage({action: \"error\", error: e.toString(), stack: e.stack});\r\n }\r\n}\r\n\r\nfunction call_api(func, ...params) {\r\n try_api(() => {\r\n audioBatch = [];\r\n audioTransfer = [];\r\n packetBatch = [];\r\n if (func !== \"text\") {\r\n wasm[\"_\" + func](...params);\r\n } else {\r\n const ptr = wasm._DApi_SyncTextPtr();\r\n const text = params[0];\r\n const length = Math.min(text.length, 255);\r\n const heap = wasm.HEAPU8;\r\n for (let i = 0; i < length; ++i) {\r\n heap[ptr + i] = text.charCodeAt(i);\r\n }\r\n heap[ptr + length] = 0;\r\n wasm._DApi_SyncText(params[1]);\r\n }\r\n if (audioBatch.length) {\r\n maxSoundId = maxBatchId;\r\n worker.postMessage({action: \"audioBatch\", batch: audioBatch}, audioTransfer);\r\n }\r\n if (packetBatch.length) {\r\n worker.postMessage({action: \"packetBatch\", batch: packetBatch}, packetBatch);\r\n }\r\n audioBatch = null;\r\n audioTransfer = null;\r\n packetBatch = null;\r\n });\r\n}\r\n\r\nfunction progress(text, loaded, total) {\r\n worker.postMessage({action: \"progress\", text, loaded, total});\r\n}\r\n\r\nconst readFile = (file, progress) => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n if (progress) {\r\n progress({loaded: file.size});\r\n }\r\n resolve(reader.result);\r\n };\r\n reader.onerror = () => reject(reader.error);\r\n reader.onabort = () => reject();\r\n if (progress) {\r\n reader.addEventListener(\"progress\", progress);\r\n }\r\n reader.readAsArrayBuffer(file);\r\n});\r\n\r\nasync function initWasm(spawn, progress) {\r\n const binary = await axios.request({\r\n url: spawn ? SpawnBinary : DiabloBinary,\r\n responseType: 'arraybuffer',\r\n onDownloadProgress: progress,\r\n });\r\n const result = await (spawn ? SpawnModule : DiabloModule)({wasmBinary: binary.data}).ready;\r\n progress({loaded: 2000000});\r\n return result;\r\n}\r\n\r\nasync function init_game(mpq, spawn, offscreen) {\r\n is_spawn = spawn;\r\n if (offscreen) {\r\n canvas = new OffscreenCanvas(640, 480);\r\n context = canvas.getContext(\"2d\");\r\n imageData = context.createImageData(640, 480);\r\n Object.assign(DApi, DApi_renderOffscreen);\r\n } else {\r\n Object.assign(DApi, DApi_renderLegacy);\r\n }\r\n\r\n if (!mpq) {\r\n const name = (spawn ? 'spawn.mpq' : 'diabdat.mpq');\r\n if (!files.has(name)) {\r\n // This should never happen, but we do support remote loading\r\n files.set(name, new RemoteFile(`${process.env.PUBLIC_URL}/${name}`));\r\n }\r\n }\r\n\r\n progress(\"Loading...\");\r\n let mpqLoaded = 0, mpqTotal = (mpq ? mpq.size : 0), wasmLoaded = 0, wasmTotal = (spawn ? SpawnSize : DiabloSize);\r\n const wasmWeight = 5;\r\n function updateProgress() {\r\n progress(\"Loading...\", mpqLoaded + wasmLoaded * wasmWeight, mpqTotal + wasmTotal * wasmWeight);\r\n }\r\n const loadWasm = initWasm(spawn, e => {\r\n wasmLoaded = Math.min(e.loaded, wasmTotal);\r\n updateProgress();\r\n });\r\n let loadMpq = mpq ? readFile(mpq, e => {\r\n mpqLoaded = e.loaded;\r\n updateProgress();\r\n }) : Promise.resolve(null);\r\n [wasm, mpq] = await Promise.all([loadWasm, loadMpq]);\r\n\r\n if (mpq) {\r\n files.set(spawn ? 'spawn.mpq' : 'diabdat.mpq', new Uint8Array(mpq));\r\n }\r\n\r\n progress(\"Initializing...\");\r\n\r\n const vers = process.env.VERSION.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\r\n\r\n wasm._SNet_InitWebsocket();\r\n wasm._DApi_Init(Math.floor(performance.now()), offscreen ? 1 : 0, parseInt(vers[1]), parseInt(vers[2]), parseInt(vers[3]));\r\n\r\n setInterval(() => {\r\n call_api(\"DApi_Render\", Math.floor(performance.now())); \r\n }, 50);\r\n}\r\n\r\nworker.addEventListener(\"message\", ({data}) => {\r\n switch (data.action) {\r\n case \"init\":\r\n files = data.files;\r\n init_game(data.mpq, data.spawn, data.offscreen).then(\r\n () => worker.postMessage({action: \"loaded\"}),\r\n e => worker.postMessage({action: \"failed\", error: e.toString(), stack: e.stack}));\r\n break;\r\n case \"event\":\r\n call_api(data.func, ...data.params);\r\n break;\r\n case \"packet\":\r\n try_api(() => {\r\n const ptr = wasm._DApi_AllocPacket(data.buffer.byteLength);\r\n wasm.HEAPU8.set(new Uint8Array(data.buffer), ptr);\r\n });\r\n break;\r\n case \"packetBatch\":\r\n try_api(() => {\r\n for (let packet of data.batch) {\r\n const ptr = wasm._DApi_AllocPacket(packet.byteLength);\r\n wasm.HEAPU8.set(new Uint8Array(packet), ptr);\r\n }\r\n });\r\n break;\r\n default:\r\n }\r\n});\r\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["../webpack/bootstrap","../node_modules/axios/lib/utils.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/process/browser.js","../node_modules/path-browserify/index.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","api/Diablo.wasm","api/Diablo.jscc","api/DiabloSpawn.wasm","api/DiabloSpawn.jscc","../node_modules/axios/index.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/axios/lib/axios.js","../node_modules/axios/node_modules/is-buffer/index.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","api/game.worker.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","length","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","deepMerge","extend","a","b","thisArg","trim","str","replace","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","e","this","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","push","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","normalizeArray","parts","allowAboveRoot","up","last","splice","unshift","filter","xs","f","res","resolve","resolvedPath","resolvedAbsolute","path","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","slice","index","relative","from","to","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","utils","encode","encodeURIComponent","url","params","paramsSerializer","serializedParams","v","toISOString","JSON","stringify","hashmarkIndex","indexOf","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","headers","defaults","adapter","XMLHttpRequest","getDefaultAdapter","transformRequest","data","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","Accept","method","settle","buildURL","parseHeaders","isURLSameOrigin","createError","config","Promise","reject","requestData","requestHeaders","request","auth","username","password","Authorization","btoa","open","toUpperCase","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","cookies","xsrfValue","withCredentials","read","undefined","toLowerCase","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","enhanceError","message","error","config1","config2","prop","Cancel","Diablo","_scriptDir","currentScript","src","Module","moduleOverrides","toThrow","ENVIRONMENT_IS_NODE","ENVIRONMENT_IS_SHELL","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","importScripts","nodeFS","nodePath","scriptDirectory","locateFile","__dirname","filename","binary","ret","Uint8Array","assert","ex","ExitStatus","reason","readbuffer","scriptArgs","quit","self","location","href","xhr","onload","out","console","log","print","err","printErr","warn","STACK_ALIGN","staticAlloc","size","STATICTOP","alignMemory","factor","ceil","asm2wasmImports","f64-rem","x","y","debugger","ABORT","condition","text","Pointer_stringify","ptr","hasUtf","HEAPU8","curr","String","fromCharCode","subarray","UTF8ArrayToString","UTF8ToString","UTF8Decoder","TextDecoder","u8Array","idx","endPtr","decode","u0","u1","u2","u3","u4","ch","HEAP8","HEAP32","HEAPF32","STACK_BASE","STACKTOP","STACK_MAX","DYNAMIC_BASE","DYNAMICTOP_PTR","WASM_PAGE_SIZE","ASMJS_PAGE_SIZE","MIN_TOTAL_MEMORY","alignUp","multiple","updateGlobalBuffer","buf","updateGlobalBufferViews","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","enlargeMemory","PAGE_MULTIPLE","LIMIT","OLD_TOTAL_MEMORY","TOTAL_MEMORY","max","replacement","byteLength","transfer","oldHEAP8","set","_emscripten_replace_memory","Function","getOwnPropertyDescriptor","TOTAL_STACK","callRuntimeCallbacks","callbacks","callback","shift","func","arg","WebAssembly","Memory","initial","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATEXIT__","__ATPOSTRUN__","runtimeInitialized","addOnPostRun","cb","abs","cos","sin","tan","acos","asin","atan","atan2","exp","sqrt","Math_ceil","runDependencies","floor","pow","imul","fround","round","clz32","trunc","runDependencyWatcher","dependenciesFulfilled","dataURIPrefix","isDataURI","startsWith","wasmTextFile","wasmBinaryFile","asmjsCodeFile","info","global","asm2wasm","parent","getBinary","doNativeWasm","providedBuffer","receiveInstance","instance","memory","newBuffer","oldBuffer","oldView","mergeMemory","id","clearInterval","removeRunDependency","NaN","Infinity","receiveInstantiatedSource","output","instantiateArrayBuffer","receiver","fetch","credentials","catch","instantiate","instantiateStreaming","asmjsReallocBuffer","finalMethod","oldSize","grow","wasmReallocBuffer","TABLE_SIZE","MAX_TABLE_SIZE","Table","maximum","element","integrateWasmJS","ASM_CONSTS","$0","DApi","current_save_id","STATIC_BASE","__GLOBAL__sub_I_msgcmd_cpp","__GLOBAL__sub_I_snet_cpp","tempDoublePtr","__ZSt18uncaught_exceptionv","uncaught_exception","EXCEPTIONS","caught","infos","deAdjust","adjusted","addRef","refcount","decRef","rethrown","destructor","___cxa_free_exception","clearRef","_free","___cxa_find_matching_catch","thrown","setTempRet0","throwntype","type","typeArray","_malloc","SYSCALLS","varargs","getStr","get64","low","high","getZero","___syscall146","which","stream","iov","iovcnt","buffers","printChar","j","FS","ErrnoError","errno","__exit","implicit","initialStackTop","exit","_llvm_ceil_f32","PTHREAD_SPECIFIC","PTHREAD_SPECIFIC_NEXT_KEY","ERRNO_CODES","EPERM","ENOENT","ESRCH","EINTR","EIO","ENXIO","E2BIG","ENOEXEC","EBADF","ECHILD","EAGAIN","EWOULDBLOCK","ENOMEM","EACCES","EFAULT","ENOTBLK","EBUSY","EEXIST","EXDEV","ENODEV","ENOTDIR","EISDIR","EINVAL","ENFILE","EMFILE","ENOTTY","ETXTBSY","EFBIG","ENOSPC","ESPIPE","EROFS","EMLINK","EPIPE","EDOM","ERANGE","ENOMSG","EIDRM","ECHRNG","EL2NSYNC","EL3HLT","EL3RST","ELNRNG","EUNATCH","ENOCSI","EL2HLT","EDEADLK","ENOLCK","EBADE","EBADR","EXFULL","ENOANO","EBADRQC","EBADSLT","EDEADLOCK","EBFONT","ENOSTR","ENODATA","ETIME","ENOSR","ENONET","ENOPKG","EREMOTE","ENOLINK","EADV","ESRMNT","ECOMM","EPROTO","EMULTIHOP","EDOTDOT","EBADMSG","ENOTUNIQ","EBADFD","EREMCHG","ELIBACC","ELIBBAD","ELIBSCN","ELIBMAX","ELIBEXEC","ENOSYS","ENOTEMPTY","ENAMETOOLONG","ELOOP","EOPNOTSUPP","EPFNOSUPPORT","ECONNRESET","ENOBUFS","EAFNOSUPPORT","EPROTOTYPE","ENOTSOCK","ENOPROTOOPT","ESHUTDOWN","ECONNREFUSED","EADDRINUSE","ECONNABORTED","ENETUNREACH","ENETDOWN","ETIMEDOUT","EHOSTDOWN","EHOSTUNREACH","EINPROGRESS","EALREADY","EDESTADDRREQ","EMSGSIZE","EPROTONOSUPPORT","ESOCKTNOSUPPORT","EADDRNOTAVAIL","ENETRESET","EISCONN","ENOTCONN","ETOOMANYREFS","EUSERS","EDQUOT","ESTALE","ENOTSUP","ENOMEDIUM","EILSEQ","EOVERFLOW","ECANCELED","ENOTRECOVERABLE","EOWNERDEAD","ESTRPIPE","asmGlobalArg","asmLibraryArg","getTotalMemory","abortOnCannotGrowMemory","invoke_i","sp","stackSave","stackRestore","invoke_ii","a1","invoke_iii","a2","invoke_iiii","a3","invoke_iiiii","a4","invoke_iiiiii","a5","invoke_ji","invoke_v","invoke_vi","invoke_vii","invoke_viii","invoke_viiii","invoke_viiiii","invoke_viiiiii","a6","invoke_viiiiiii","a7","invoke_viiiiiiiii","a8","a9","invoke_viiiiiiiiii","a10","invoke_viij","invoke_viji","___assert_fail","line","___cxa_allocate_exception","___cxa_begin_catch","___cxa_end_catch","pop","___cxa_find_matching_catch_2","___cxa_find_matching_catch_3","___cxa_get_exception_ptr","___cxa_pure_virtual","___cxa_throw","___gxx_personality_v0","___lock","___resumeException","___setErrNo","___syscall140","getStreamFromFD","offset_low","whence","offset","llseek","position","getdents","___syscall54","___syscall6","close","___unlock","__api_close_keyboard","close_keyboard","__api_open_keyboard","x0","y0","x1","y1","open_keyboard","_abort","_api_create_sound","create_sound","_api_create_sound_float","samples","channels","rate","create_sound_raw","_api_delete_sound","delete_sound","_api_draw_begin","draw_begin","_api_draw_belt","items","draw_belt","_api_draw_blit","w","h","draw_blit","_api_draw_clip_text","draw_clip_text","_api_draw_end","draw_end","_api_draw_text","color","draw_text","_api_duplicate_sound","srcId","duplicate_sound","_api_exit_game","exit_game","_api_play_sound","volume","pan","loop","play_sound","_api_set_cursor","set_cursor","_api_set_volume","set_volume","_api_stop_sound","stop_sound","_api_websocket_closed","websocket_closed","_api_websocket_send","websocket_send","_emscripten_asm_const_ii","a0","_emscripten_memcpy_big","dest","num","_exit","_exit_error","exit_error","_get_file_contents","get_file_contents","_get_file_size","get_file_size","_llvm_eh_typeid_for","_llvm_trap","_pthread_getspecific","_pthread_key_create","_pthread_once","seen","_pthread_setspecific","_put_file_contents","put_file_contents","_remove_file","remove_file","_show_alert","alert","_time","Date","now","_trace_pop","WASM_TRACE","_trace_push","flush_NO_FILESYSTEM","fflush","asm","old","constructor","doRun","postRun","preRun","runCaller","what","DiabloSpawn","runtime","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","done","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","keys","reverse","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","hasCatch","hasFinally","finallyEntry","complete","finish","delegateYield","regeneratorRuntime","accidentalStrictMode","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","all","promises","spread","default","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","handlers","use","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","fns","normalizedName","isAxiosError","toJSON","description","number","fileName","lineNumber","columnNumber","stack","ignoreDuplicateOf","parsed","originURL","msie","test","userAgent","urlParsingNode","createElement","resolveURL","setAttribute","protocol","host","search","hash","hostname","port","pathname","requestURL","write","expires","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","relativeURL","executor","resolvePromise","token","source","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","arr2","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_defineProperties","target","props","descriptor","configurable","writable","DiabloSize","SpawnSize","worker","canvas","imageData","files","renderBatch","drawBelt","is_spawn","ChunkSize","RemoteFile","Constructor","_classCallCheck","postMessage","action","parseInt","getResponseHeader","chunks","protoProps","staticProps","chunk0","chunk1","missing0","missing1","header","delete","_len","_key","rect","DApi_renderLegacy","images","clip","belt","map","_ref","batch","DApi_renderOffscreen","save","font","putImageData","beginPath","g","fillStyle","fillText","restore","bitmap","transferToImageBitmap","audioBatch","audioTransfer","maxSoundId","maxBatchId","_len2","_key2","_len3","_key3","packetBatch","wasm","try_api","call_api","_len4","_key4","_wasm","_DApi_SyncTextPtr","heap","_DApi_SyncText","progress","loaded","total","readFile","file","reader","FileReader","readAsArrayBuffer","initWasm","_callee","spawn","regenerator_default","_context","SpawnBinary","DiabloBinary","SpawnModule","DiabloModule","wasmBinary","ready","_callee2","mpq","offscreen","mpqLoaded","mpqTotal","wasmLoaded","wasmTotal","wasmWeight","updateProgress","loadWasm","loadMpq","_ref3","_ref4","vers","_context2","OffscreenCanvas","getContext","createImageData","assign","has","_SNet_InitWebsocket","_DApi_Init","performance","setInterval","_ref2","init_game","_DApi_AllocPacket","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","packet","return"],"mappings":"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","file":"f2bd0f1b568ba5e5d268.worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/diabloweb/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 35);\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\nvar isBuffer = require('is-buffer');\n/*global toString:true*/\n// utils is a library of generic helper functions non-specific to axios\n\n\nvar toString = Object.prototype.toString;\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\n\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\n\n\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBufferView(val) {\n var result;\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n\n return result;\n}\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\n\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\n\n\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\n\n\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\n\n\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\n\n\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\n\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\n\n\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\n\n\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\n\n\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\n\n\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\n\n\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\n\n\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction merge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction deepMerge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\n\n\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};","module.exports = require(\"regenerator-runtime\");\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n} // path.resolve([from ...], to)\n// posix version\n\n\nexports.resolve = function () {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries\n\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n } // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n\n\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}; // path.normalize(path)\n// posix version\n\n\nexports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/'; // Normalize the path\n\n path = normalizeArray(filter(path.split('/'), function (p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n}; // posix version\n\n\nexports.isAbsolute = function (path) {\n return path.charAt(0) === '/';\n}; // posix version\n\n\nexports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n\n return p;\n }).join('/'));\n}; // path.relative(from, to)\n// posix version\n\n\nexports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47\n /*/*/\n ;\n var end = -1;\n var matchedSlash = true;\n\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n} // Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\n\n\nexports.basename = function (path, ext) {\n var f = basename(path);\n\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true; // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n\n var preDotState = 0;\n\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n\n continue;\n }\n\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n\n if (code === 46\n /*.*/\n ) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n\n return path.slice(startDot, end);\n};\n\nfunction filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n\n return res;\n} // String.prototype.substr - negative index don't work in IE8\n\n\nvar substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) {\n return str.substr(start, len);\n} : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n return fn.apply(thisArg, args);\n };\n};","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\n\n\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n\nvar utils = require('./utils');\n\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter; // Only Node.JS has a process variable that is of [[Class]] process\n\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); // Set the request timeout in MS\n\n request.timeout = config.timeout; // Listen for ready state\n\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n } // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(resolve, reject, response); // Clean up request\n\n request = null;\n }; // Handle browser request cancellation (as opposed to a manual cancellation)\n\n\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies'); // Add xsrf header\n\n\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n } // Add headers to the request\n\n\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n } // Add withCredentials to request if needed\n\n\n if (config.withCredentials) {\n request.withCredentials = true;\n } // Add responseType to request if needed\n\n\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel); // Clean up request\n\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","'use strict';\n\nvar utils = require('../utils');\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\n\n\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n utils.forEach(['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath'], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n return config;\n};","'use strict';\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","module.exports = __webpack_public_path__ + \"static/media/Diablo.3991174f.wasm\";","\r\nvar Diablo = (function() {\r\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\r\n return (\r\nfunction(Diablo) {\r\n Diablo = Diablo || {};\r\n\r\n// The Module object: Our interface to the outside world. We import\r\n// and export values on it. There are various ways Module can be used:\r\n// 1. Not defined. We create it here\r\n// 2. A function parameter, function(Module) { ..generated code.. }\r\n// 3. pre-run appended it, var Module = {}; ..generated code..\r\n// 4. External script tag defines var Module.\r\n// We need to check if Module already exists (e.g. case 3 above).\r\n// Substitution will be replaced with actual code on later stage of the build,\r\n// this way Closure Compiler will not mangle it (e.g. case 4. above).\r\n// Note that if you want to run closure, and also to use Module\r\n// after the generated code, you will need to define var Module = {};\r\n// before the code. Then that object will be used in the code, and you\r\n// can continue to use Module afterwards as well.\r\nvar Module = typeof Diablo !== 'undefined' ? Diablo : {};\r\n\r\n// --pre-jses are emitted after the Module integration code, so that they can\r\n// refer to Module (if they choose; they can also define Module)\r\n\r\n\r\n// Sometimes an existing Module object exists with properties\r\n// meant to overwrite the default module functionality. Here\r\n// we collect those properties and reapply _after_ we configure\r\n// the current environment's defaults to avoid having to be so\r\n// defensive during initialization.\r\nvar moduleOverrides = {};\r\nvar key;\r\nfor (key in Module) {\r\n if (Module.hasOwnProperty(key)) {\r\n moduleOverrides[key] = Module[key];\r\n }\r\n}\r\n\r\nModule['arguments'] = [];\r\nModule['thisProgram'] = './this.program';\r\nModule['quit'] = function(status, toThrow) {\r\n throw toThrow;\r\n};\r\nModule['preRun'] = [];\r\nModule['postRun'] = [];\r\n\r\n// The environment setup code below is customized to use Module.\r\n// *** Environment setup code ***\r\n\r\nvar ENVIRONMENT_IS_WEB = false;\r\nvar ENVIRONMENT_IS_WORKER = false;\r\nvar ENVIRONMENT_IS_NODE = false;\r\nvar ENVIRONMENT_IS_SHELL = false;\r\nENVIRONMENT_IS_WEB = typeof window === 'object';\r\nENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\r\nENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\r\nENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\r\n\r\n\r\n// Three configurations we can be running in:\r\n// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false)\r\n// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)\r\n// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)\r\n\r\n\r\n// `/` should be present at the end if `scriptDirectory` is not empty\r\nvar scriptDirectory = '';\r\nfunction locateFile(path) {\r\n if (Module['locateFile']) {\r\n return Module['locateFile'](path, scriptDirectory);\r\n } else {\r\n return scriptDirectory + path;\r\n }\r\n}\r\n\r\nif (ENVIRONMENT_IS_NODE) {\r\n scriptDirectory = __dirname + '/';\r\n\r\n // Expose functionality in the same simple way that the shells work\r\n // Note that we pollute the global namespace here, otherwise we break in node\r\n var nodeFS;\r\n var nodePath;\r\n\r\n Module['read'] = function shell_read(filename, binary) {\r\n var ret;\r\n if (!nodeFS) nodeFS = require('fs');\r\n if (!nodePath) nodePath = require('path');\r\n filename = nodePath['normalize'](filename);\r\n ret = nodeFS['readFileSync'](filename);\r\n return binary ? ret : ret.toString();\r\n };\r\n\r\n Module['readBinary'] = function readBinary(filename) {\r\n var ret = Module['read'](filename, true);\r\n if (!ret.buffer) {\r\n ret = new Uint8Array(ret);\r\n }\r\n assert(ret.buffer);\r\n return ret;\r\n };\r\n\r\n if (process['argv'].length > 1) {\r\n Module['thisProgram'] = process['argv'][1].replace(/\\\\/g, '/');\r\n }\r\n\r\n Module['arguments'] = process['argv'].slice(2);\r\n\r\n // MODULARIZE will export the module in the proper place outside, we don't need to export here\r\n\r\n process['on']('uncaughtException', function(ex) {\r\n // suppress ExitStatus exceptions from showing an error\r\n if (!(ex instanceof ExitStatus)) {\r\n throw ex;\r\n }\r\n });\r\n // Currently node will swallow unhandled rejections, but this behavior is\r\n // deprecated, and in the future it will exit with error status.\r\n process['on']('unhandledRejection', function(reason, p) {\r\n process['exit'](1);\r\n });\r\n\r\n Module['quit'] = function(status) {\r\n process['exit'](status);\r\n };\r\n\r\n Module['inspect'] = function () { return '[Emscripten Module object]'; };\r\n} else\r\nif (ENVIRONMENT_IS_SHELL) {\r\n\r\n\r\n if (typeof read != 'undefined') {\r\n Module['read'] = function shell_read(f) {\r\n return read(f);\r\n };\r\n }\r\n\r\n Module['readBinary'] = function readBinary(f) {\r\n var data;\r\n if (typeof readbuffer === 'function') {\r\n return new Uint8Array(readbuffer(f));\r\n }\r\n data = read(f, 'binary');\r\n assert(typeof data === 'object');\r\n return data;\r\n };\r\n\r\n if (typeof scriptArgs != 'undefined') {\r\n Module['arguments'] = scriptArgs;\r\n } else if (typeof arguments != 'undefined') {\r\n Module['arguments'] = arguments;\r\n }\r\n\r\n if (typeof quit === 'function') {\r\n Module['quit'] = function(status) {\r\n quit(status);\r\n }\r\n }\r\n} else\r\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\r\n if (ENVIRONMENT_IS_WEB) {\r\n if (document.currentScript) {\r\n scriptDirectory = document.currentScript.src;\r\n }\r\n } else { // worker\r\n scriptDirectory = self.location.href;\r\n }\r\n // When MODULARIZE (and not _INSTANCE), this JS may be executed later, after document.currentScript\r\n // is gone, so we saved it, and we use it here instead of any other info.\r\n if (_scriptDir) {\r\n scriptDirectory = _scriptDir;\r\n }\r\n // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them.\r\n // otherwise, slice off the final part of the url to find the script directory.\r\n if (scriptDirectory.indexOf('blob:') !== 0) {\r\n scriptDirectory = scriptDirectory.split('/').slice(0, -1).join('/') + '/';\r\n } else {\r\n scriptDirectory = '';\r\n }\r\n\r\n\r\n Module['read'] = function shell_read(url) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, false);\r\n xhr.send(null);\r\n return xhr.responseText;\r\n };\r\n\r\n if (ENVIRONMENT_IS_WORKER) {\r\n Module['readBinary'] = function readBinary(url) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, false);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send(null);\r\n return new Uint8Array(xhr.response);\r\n };\r\n }\r\n\r\n Module['readAsync'] = function readAsync(url, onload, onerror) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.onload = function xhr_onload() {\r\n if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0\r\n onload(xhr.response);\r\n return;\r\n }\r\n onerror();\r\n };\r\n xhr.onerror = onerror;\r\n xhr.send(null);\r\n };\r\n\r\n Module['setWindowTitle'] = function(title) { document.title = title };\r\n} else\r\n{\r\n}\r\n\r\n// Set up the out() and err() hooks, which are how we can print to stdout or\r\n// stderr, respectively.\r\n// If the user provided Module.print or printErr, use that. Otherwise,\r\n// console.log is checked first, as 'print' on the web will open a print dialogue\r\n// printErr is preferable to console.warn (works better in shells)\r\n// bind(console) is necessary to fix IE/Edge closed dev tools panel behavior.\r\nvar out = Module['print'] || (typeof console !== 'undefined' ? console.log.bind(console) : (typeof print !== 'undefined' ? print : null));\r\nvar err = Module['printErr'] || (typeof printErr !== 'undefined' ? printErr : ((typeof console !== 'undefined' && console.warn.bind(console)) || out));\r\n\r\n// *** Environment setup code ***\r\n\r\n// Merge back in the overrides\r\nfor (key in moduleOverrides) {\r\n if (moduleOverrides.hasOwnProperty(key)) {\r\n Module[key] = moduleOverrides[key];\r\n }\r\n}\r\n// Free the object hierarchy contained in the overrides, this lets the GC\r\n// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array.\r\nmoduleOverrides = undefined;\r\n\r\n\r\n\r\n// {{PREAMBLE_ADDITIONS}}\r\n\r\nvar STACK_ALIGN = 16;\r\n\r\n\r\nfunction staticAlloc(size) {\r\n var ret = STATICTOP;\r\n STATICTOP = (STATICTOP + size + 15) & -16;\r\n return ret;\r\n}\r\n\r\nfunction dynamicAlloc(size) {\r\n var ret = HEAP32[DYNAMICTOP_PTR>>2];\r\n var end = (ret + size + 15) & -16;\r\n HEAP32[DYNAMICTOP_PTR>>2] = end;\r\n if (end >= TOTAL_MEMORY) {\r\n var success = enlargeMemory();\r\n if (!success) {\r\n HEAP32[DYNAMICTOP_PTR>>2] = ret;\r\n return 0;\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\nfunction alignMemory(size, factor) {\r\n if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default\r\n var ret = size = Math.ceil(size / factor) * factor;\r\n return ret;\r\n}\r\n\r\nfunction getNativeTypeSize(type) {\r\n switch (type) {\r\n case 'i1': case 'i8': return 1;\r\n case 'i16': return 2;\r\n case 'i32': return 4;\r\n case 'i64': return 8;\r\n case 'float': return 4;\r\n case 'double': return 8;\r\n default: {\r\n if (type[type.length-1] === '*') {\r\n return 4; // A pointer\r\n } else if (type[0] === 'i') {\r\n var bits = parseInt(type.substr(1));\r\n assert(bits % 8 === 0);\r\n return bits / 8;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction warnOnce(text) {\r\n if (!warnOnce.shown) warnOnce.shown = {};\r\n if (!warnOnce.shown[text]) {\r\n warnOnce.shown[text] = 1;\r\n err(text);\r\n }\r\n}\r\n\r\nvar asm2wasmImports = { // special asm2wasm imports\r\n \"f64-rem\": function(x, y) {\r\n return x % y;\r\n },\r\n \"debugger\": function() {\r\n debugger;\r\n }\r\n};\r\n\r\n\r\n\r\nvar jsCallStartIndex = 1;\r\nvar functionPointers = new Array(0);\r\n\r\n// 'sig' parameter is only used on LLVM wasm backend\r\nfunction addFunction(func, sig) {\r\n var base = 0;\r\n for (var i = base; i < base + 0; i++) {\r\n if (!functionPointers[i]) {\r\n functionPointers[i] = func;\r\n return jsCallStartIndex + i;\r\n }\r\n }\r\n throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';\r\n}\r\n\r\nfunction removeFunction(index) {\r\n functionPointers[index-jsCallStartIndex] = null;\r\n}\r\n\r\nvar funcWrappers = {};\r\n\r\nfunction getFuncWrapper(func, sig) {\r\n if (!func) return; // on null pointer, return undefined\r\n assert(sig);\r\n if (!funcWrappers[sig]) {\r\n funcWrappers[sig] = {};\r\n }\r\n var sigCache = funcWrappers[sig];\r\n if (!sigCache[func]) {\r\n // optimize away arguments usage in common cases\r\n if (sig.length === 1) {\r\n sigCache[func] = function dynCall_wrapper() {\r\n return dynCall(sig, func);\r\n };\r\n } else if (sig.length === 2) {\r\n sigCache[func] = function dynCall_wrapper(arg) {\r\n return dynCall(sig, func, [arg]);\r\n };\r\n } else {\r\n // general case\r\n sigCache[func] = function dynCall_wrapper() {\r\n return dynCall(sig, func, Array.prototype.slice.call(arguments));\r\n };\r\n }\r\n }\r\n return sigCache[func];\r\n}\r\n\r\n\r\nfunction makeBigInt(low, high, unsigned) {\r\n return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0));\r\n}\r\n\r\nfunction dynCall(sig, ptr, args) {\r\n if (args && args.length) {\r\n return Module['dynCall_' + sig].apply(null, [ptr].concat(args));\r\n } else {\r\n return Module['dynCall_' + sig].call(null, ptr);\r\n }\r\n}\r\n\r\n\r\n\r\nvar Runtime = {\r\n // FIXME backwards compatibility layer for ports. Support some Runtime.*\r\n // for now, fix it there, then remove it from here. That way we\r\n // can minimize any period of breakage.\r\n dynCall: dynCall, // for SDL2 port\r\n};\r\n\r\n// The address globals begin at. Very low in memory, for code size and optimization opportunities.\r\n// Above 0 is static memory, starting with globals.\r\n// Then the stack.\r\n// Then 'dynamic' memory for sbrk.\r\nvar GLOBAL_BASE = 1024;\r\n\r\n\r\n// === Preamble library stuff ===\r\n\r\n// Documentation for the public APIs defined in this file must be updated in:\r\n// site/source/docs/api_reference/preamble.js.rst\r\n// A prebuilt local version of the documentation is available at:\r\n// site/build/text/docs/api_reference/preamble.js.txt\r\n// You can also build docs locally as HTML or other formats in site/\r\n// An online HTML version (which may be of a different version of Emscripten)\r\n// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html\r\n\r\n\r\n\r\n//========================================\r\n// Runtime essentials\r\n//========================================\r\n\r\nvar ABORT = 0; // whether we are quitting the application. no code should run after this. set in exit() and abort()\r\nvar EXITSTATUS = 0;\r\n\r\n/** @type {function(*, string=)} */\r\nfunction assert(condition, text) {\r\n if (!condition) {\r\n abort('Assertion failed: ' + text);\r\n }\r\n}\r\n\r\nvar globalScope = this;\r\n\r\n// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)\r\nfunction getCFunc(ident) {\r\n var func = Module['_' + ident]; // closure exported function\r\n assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported');\r\n return func;\r\n}\r\n\r\nvar JSfuncs = {\r\n // Helpers for cwrap -- it can't refer to Runtime directly because it might\r\n // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find\r\n // out what the minified function name is.\r\n 'stackSave': function() {\r\n stackSave()\r\n },\r\n 'stackRestore': function() {\r\n stackRestore()\r\n },\r\n // type conversion from js to c\r\n 'arrayToC' : function(arr) {\r\n var ret = stackAlloc(arr.length);\r\n writeArrayToMemory(arr, ret);\r\n return ret;\r\n },\r\n 'stringToC' : function(str) {\r\n var ret = 0;\r\n if (str !== null && str !== undefined && str !== 0) { // null string\r\n // at most 4 bytes per UTF-8 code point, +1 for the trailing '\\0'\r\n var len = (str.length << 2) + 1;\r\n ret = stackAlloc(len);\r\n stringToUTF8(str, ret, len);\r\n }\r\n return ret;\r\n }\r\n};\r\n\r\n// For fast lookup of conversion functions\r\nvar toC = {\r\n 'string': JSfuncs['stringToC'], 'array': JSfuncs['arrayToC']\r\n};\r\n\r\n\r\n// C calling interface.\r\nfunction ccall(ident, returnType, argTypes, args, opts) {\r\n function convertReturnValue(ret) {\r\n if (returnType === 'string') return Pointer_stringify(ret);\r\n if (returnType === 'boolean') return Boolean(ret);\r\n return ret;\r\n }\r\n\r\n var func = getCFunc(ident);\r\n var cArgs = [];\r\n var stack = 0;\r\n if (args) {\r\n for (var i = 0; i < args.length; i++) {\r\n var converter = toC[argTypes[i]];\r\n if (converter) {\r\n if (stack === 0) stack = stackSave();\r\n cArgs[i] = converter(args[i]);\r\n } else {\r\n cArgs[i] = args[i];\r\n }\r\n }\r\n }\r\n var ret = func.apply(null, cArgs);\r\n ret = convertReturnValue(ret);\r\n if (stack !== 0) stackRestore(stack);\r\n return ret;\r\n}\r\n\r\nfunction cwrap(ident, returnType, argTypes, opts) {\r\n argTypes = argTypes || [];\r\n // When the function takes numbers and returns a number, we can just return\r\n // the original function\r\n var numericArgs = argTypes.every(function(type){ return type === 'number'});\r\n var numericRet = returnType !== 'string';\r\n if (numericRet && numericArgs && !opts) {\r\n return getCFunc(ident);\r\n }\r\n return function() {\r\n return ccall(ident, returnType, argTypes, arguments, opts);\r\n }\r\n}\r\n\r\n/** @type {function(number, number, string, boolean=)} */\r\nfunction setValue(ptr, value, type, noSafe) {\r\n type = type || 'i8';\r\n if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\r\n switch(type) {\r\n case 'i1': HEAP8[((ptr)>>0)]=value; break;\r\n case 'i8': HEAP8[((ptr)>>0)]=value; break;\r\n case 'i16': HEAP16[((ptr)>>1)]=value; break;\r\n case 'i32': HEAP32[((ptr)>>2)]=value; break;\r\n case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;\r\n case 'float': HEAPF32[((ptr)>>2)]=value; break;\r\n case 'double': HEAPF64[((ptr)>>3)]=value; break;\r\n default: abort('invalid type for setValue: ' + type);\r\n }\r\n}\r\n\r\n/** @type {function(number, string, boolean=)} */\r\nfunction getValue(ptr, type, noSafe) {\r\n type = type || 'i8';\r\n if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\r\n switch(type) {\r\n case 'i1': return HEAP8[((ptr)>>0)];\r\n case 'i8': return HEAP8[((ptr)>>0)];\r\n case 'i16': return HEAP16[((ptr)>>1)];\r\n case 'i32': return HEAP32[((ptr)>>2)];\r\n case 'i64': return HEAP32[((ptr)>>2)];\r\n case 'float': return HEAPF32[((ptr)>>2)];\r\n case 'double': return HEAPF64[((ptr)>>3)];\r\n default: abort('invalid type for getValue: ' + type);\r\n }\r\n return null;\r\n}\r\n\r\nvar ALLOC_NORMAL = 0; // Tries to use _malloc()\r\nvar ALLOC_STACK = 1; // Lives for the duration of the current function call\r\nvar ALLOC_STATIC = 2; // Cannot be freed\r\nvar ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk\r\nvar ALLOC_NONE = 4; // Do not allocate\r\n\r\n// allocate(): This is for internal use. You can use it yourself as well, but the interface\r\n// is a little tricky (see docs right below). The reason is that it is optimized\r\n// for multiple syntaxes to save space in generated code. So you should\r\n// normally not use allocate(), and instead allocate memory using _malloc(),\r\n// initialize it with setValue(), and so forth.\r\n// @slab: An array of data, or a number. If a number, then the size of the block to allocate,\r\n// in *bytes* (note that this is sometimes confusing: the next parameter does not\r\n// affect this!)\r\n// @types: Either an array of types, one for each byte (or 0 if no type at that position),\r\n// or a single type which is used for the entire block. This only matters if there\r\n// is initial data - if @slab is a number, then this does not matter at all and is\r\n// ignored.\r\n// @allocator: How to allocate memory, see ALLOC_*\r\n/** @type {function((TypedArray|Array|number), string, number, number=)} */\r\nfunction allocate(slab, types, allocator, ptr) {\r\n var zeroinit, size;\r\n if (typeof slab === 'number') {\r\n zeroinit = true;\r\n size = slab;\r\n } else {\r\n zeroinit = false;\r\n size = slab.length;\r\n }\r\n\r\n var singleType = typeof types === 'string' ? types : null;\r\n\r\n var ret;\r\n if (allocator == ALLOC_NONE) {\r\n ret = ptr;\r\n } else {\r\n ret = [typeof _malloc === 'function' ? _malloc : staticAlloc, stackAlloc, staticAlloc, dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));\r\n }\r\n\r\n if (zeroinit) {\r\n var stop;\r\n ptr = ret;\r\n assert((ret & 3) == 0);\r\n stop = ret + (size & ~3);\r\n for (; ptr < stop; ptr += 4) {\r\n HEAP32[((ptr)>>2)]=0;\r\n }\r\n stop = ret + size;\r\n while (ptr < stop) {\r\n HEAP8[((ptr++)>>0)]=0;\r\n }\r\n return ret;\r\n }\r\n\r\n if (singleType === 'i8') {\r\n if (slab.subarray || slab.slice) {\r\n HEAPU8.set(/** @type {!Uint8Array} */ (slab), ret);\r\n } else {\r\n HEAPU8.set(new Uint8Array(slab), ret);\r\n }\r\n return ret;\r\n }\r\n\r\n var i = 0, type, typeSize, previousType;\r\n while (i < size) {\r\n var curr = slab[i];\r\n\r\n type = singleType || types[i];\r\n if (type === 0) {\r\n i++;\r\n continue;\r\n }\r\n\r\n if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later\r\n\r\n setValue(ret+i, curr, type);\r\n\r\n // no need to look up size unless type changes, so cache it\r\n if (previousType !== type) {\r\n typeSize = getNativeTypeSize(type);\r\n previousType = type;\r\n }\r\n i += typeSize;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\n// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready\r\nfunction getMemory(size) {\r\n if (!staticSealed) return staticAlloc(size);\r\n if (!runtimeInitialized) return dynamicAlloc(size);\r\n return _malloc(size);\r\n}\r\n\r\n/** @type {function(number, number=)} */\r\nfunction Pointer_stringify(ptr, length) {\r\n if (length === 0 || !ptr) return '';\r\n // Find the length, and check for UTF while doing so\r\n var hasUtf = 0;\r\n var t;\r\n var i = 0;\r\n while (1) {\r\n t = HEAPU8[(((ptr)+(i))>>0)];\r\n hasUtf |= t;\r\n if (t == 0 && !length) break;\r\n i++;\r\n if (length && i == length) break;\r\n }\r\n if (!length) length = i;\r\n\r\n var ret = '';\r\n\r\n if (hasUtf < 128) {\r\n var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack\r\n var curr;\r\n while (length > 0) {\r\n curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));\r\n ret = ret ? ret + curr : curr;\r\n ptr += MAX_CHUNK;\r\n length -= MAX_CHUNK;\r\n }\r\n return ret;\r\n }\r\n return UTF8ToString(ptr);\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nfunction AsciiToString(ptr) {\r\n var str = '';\r\n while (1) {\r\n var ch = HEAP8[((ptr++)>>0)];\r\n if (!ch) return str;\r\n str += String.fromCharCode(ch);\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP.\r\n\r\nfunction stringToAscii(str, outPtr) {\r\n return writeAsciiToMemory(str, outPtr, false);\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nvar UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined;\r\nfunction UTF8ArrayToString(u8Array, idx) {\r\n var endPtr = idx;\r\n // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.\r\n // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.\r\n while (u8Array[endPtr]) ++endPtr;\r\n\r\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\r\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\r\n } else {\r\n var u0, u1, u2, u3, u4, u5;\r\n\r\n var str = '';\r\n while (1) {\r\n // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\r\n u0 = u8Array[idx++];\r\n if (!u0) return str;\r\n if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; }\r\n u1 = u8Array[idx++] & 63;\r\n if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; }\r\n u2 = u8Array[idx++] & 63;\r\n if ((u0 & 0xF0) == 0xE0) {\r\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\r\n } else {\r\n u3 = u8Array[idx++] & 63;\r\n if ((u0 & 0xF8) == 0xF0) {\r\n u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;\r\n } else {\r\n u4 = u8Array[idx++] & 63;\r\n if ((u0 & 0xFC) == 0xF8) {\r\n u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;\r\n } else {\r\n u5 = u8Array[idx++] & 63;\r\n u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;\r\n }\r\n }\r\n }\r\n if (u0 < 0x10000) {\r\n str += String.fromCharCode(u0);\r\n } else {\r\n var ch = u0 - 0x10000;\r\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nfunction UTF8ToString(ptr) {\r\n return UTF8ArrayToString(HEAPU8,ptr);\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx',\r\n// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element.\r\n// outIdx: The starting offset in the array to begin the copying.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array.\r\n// This count should include the null terminator,\r\n// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\r\n if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes.\r\n return 0;\r\n\r\n var startIdx = outIdx;\r\n var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator.\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\r\n var u = str.charCodeAt(i); // possibly a lead surrogate\r\n if (u >= 0xD800 && u <= 0xDFFF) {\r\n var u1 = str.charCodeAt(++i);\r\n u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF);\r\n }\r\n if (u <= 0x7F) {\r\n if (outIdx >= endIdx) break;\r\n outU8Array[outIdx++] = u;\r\n } else if (u <= 0x7FF) {\r\n if (outIdx + 1 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xC0 | (u >> 6);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0xFFFF) {\r\n if (outIdx + 2 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xE0 | (u >> 12);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0x1FFFFF) {\r\n if (outIdx + 3 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xF0 | (u >> 18);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0x3FFFFFF) {\r\n if (outIdx + 4 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xF8 | (u >> 24);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else {\r\n if (outIdx + 5 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xFC | (u >> 30);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n }\r\n }\r\n // Null-terminate the pointer to the buffer.\r\n outU8Array[outIdx] = 0;\r\n return outIdx - startIdx;\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\r\n return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite);\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF8(str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var u = str.charCodeAt(i); // possibly a lead surrogate\r\n if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\r\n if (u <= 0x7F) {\r\n ++len;\r\n } else if (u <= 0x7FF) {\r\n len += 2;\r\n } else if (u <= 0xFFFF) {\r\n len += 3;\r\n } else if (u <= 0x1FFFFF) {\r\n len += 4;\r\n } else if (u <= 0x3FFFFFF) {\r\n len += 5;\r\n } else {\r\n len += 6;\r\n }\r\n }\r\n return len;\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nvar UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined;\r\nfunction UTF16ToString(ptr) {\r\n var endPtr = ptr;\r\n // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.\r\n // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.\r\n var idx = endPtr >> 1;\r\n while (HEAP16[idx]) ++idx;\r\n endPtr = idx << 1;\r\n\r\n if (endPtr - ptr > 32 && UTF16Decoder) {\r\n return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));\r\n } else {\r\n var i = 0;\r\n\r\n var str = '';\r\n while (1) {\r\n var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];\r\n if (codeUnit == 0) return str;\r\n ++i;\r\n // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.\r\n str += String.fromCharCode(codeUnit);\r\n }\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outPtr: Byte address in Emscripten HEAP where to write the string to.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null\r\n// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF16(str, outPtr, maxBytesToWrite) {\r\n // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\r\n if (maxBytesToWrite === undefined) {\r\n maxBytesToWrite = 0x7FFFFFFF;\r\n }\r\n if (maxBytesToWrite < 2) return 0;\r\n maxBytesToWrite -= 2; // Null terminator.\r\n var startPtr = outPtr;\r\n var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length;\r\n for (var i = 0; i < numCharsToWrite; ++i) {\r\n // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.\r\n var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\r\n HEAP16[((outPtr)>>1)]=codeUnit;\r\n outPtr += 2;\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n HEAP16[((outPtr)>>1)]=0;\r\n return outPtr - startPtr;\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF16(str) {\r\n return str.length*2;\r\n}\r\n\r\nfunction UTF32ToString(ptr) {\r\n var i = 0;\r\n\r\n var str = '';\r\n while (1) {\r\n var utf32 = HEAP32[(((ptr)+(i*4))>>2)];\r\n if (utf32 == 0)\r\n return str;\r\n ++i;\r\n // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n if (utf32 >= 0x10000) {\r\n var ch = utf32 - 0x10000;\r\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\r\n } else {\r\n str += String.fromCharCode(utf32);\r\n }\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outPtr: Byte address in Emscripten HEAP where to write the string to.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null\r\n// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF32(str, outPtr, maxBytesToWrite) {\r\n // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\r\n if (maxBytesToWrite === undefined) {\r\n maxBytesToWrite = 0x7FFFFFFF;\r\n }\r\n if (maxBytesToWrite < 4) return 0;\r\n var startPtr = outPtr;\r\n var endPtr = startPtr + maxBytesToWrite - 4;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\r\n if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {\r\n var trailSurrogate = str.charCodeAt(++i);\r\n codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);\r\n }\r\n HEAP32[((outPtr)>>2)]=codeUnit;\r\n outPtr += 4;\r\n if (outPtr + 4 > endPtr) break;\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n HEAP32[((outPtr)>>2)]=0;\r\n return outPtr - startPtr;\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF32(str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var codeUnit = str.charCodeAt(i);\r\n if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate.\r\n len += 4;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n// Allocate heap space for a JS string, and write it there.\r\n// It is the responsibility of the caller to free() that memory.\r\nfunction allocateUTF8(str) {\r\n var size = lengthBytesUTF8(str) + 1;\r\n var ret = _malloc(size);\r\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\r\n return ret;\r\n}\r\n\r\n// Allocate stack space for a JS string, and write it there.\r\nfunction allocateUTF8OnStack(str) {\r\n var size = lengthBytesUTF8(str) + 1;\r\n var ret = stackAlloc(size);\r\n stringToUTF8Array(str, HEAP8, ret, size);\r\n return ret;\r\n}\r\n\r\nfunction demangle(func) {\r\n return func;\r\n}\r\n\r\nfunction demangleAll(text) {\r\n var regex =\r\n /__Z[\\w\\d_]+/g;\r\n return text.replace(regex,\r\n function(x) {\r\n var y = demangle(x);\r\n return x === y ? x : (x + ' [' + y + ']');\r\n });\r\n}\r\n\r\nfunction jsStackTrace() {\r\n var err = new Error();\r\n if (!err.stack) {\r\n // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,\r\n // so try that as a special-case.\r\n try {\r\n throw new Error(0);\r\n } catch(e) {\r\n err = e;\r\n }\r\n if (!err.stack) {\r\n return '(no stack trace available)';\r\n }\r\n }\r\n return err.stack.toString();\r\n}\r\n\r\nfunction stackTrace() {\r\n var js = jsStackTrace();\r\n if (Module['extraStackTrace']) js += '\\n' + Module['extraStackTrace']();\r\n return demangleAll(js);\r\n}\r\n\r\n// Memory management\r\n\r\nvar PAGE_SIZE = 16384;\r\nvar WASM_PAGE_SIZE = 65536;\r\nvar ASMJS_PAGE_SIZE = 16777216;\r\nvar MIN_TOTAL_MEMORY = 16777216;\r\n\r\nfunction alignUp(x, multiple) {\r\n if (x % multiple > 0) {\r\n x += multiple - (x % multiple);\r\n }\r\n return x;\r\n}\r\n\r\nvar HEAP,\r\n/** @type {ArrayBuffer} */\r\n buffer,\r\n/** @type {Int8Array} */\r\n HEAP8,\r\n/** @type {Uint8Array} */\r\n HEAPU8,\r\n/** @type {Int16Array} */\r\n HEAP16,\r\n/** @type {Uint16Array} */\r\n HEAPU16,\r\n/** @type {Int32Array} */\r\n HEAP32,\r\n/** @type {Uint32Array} */\r\n HEAPU32,\r\n/** @type {Float32Array} */\r\n HEAPF32,\r\n/** @type {Float64Array} */\r\n HEAPF64;\r\n\r\nfunction updateGlobalBuffer(buf) {\r\n Module['buffer'] = buffer = buf;\r\n}\r\n\r\nfunction updateGlobalBufferViews() {\r\n Module['HEAP8'] = HEAP8 = new Int8Array(buffer);\r\n Module['HEAP16'] = HEAP16 = new Int16Array(buffer);\r\n Module['HEAP32'] = HEAP32 = new Int32Array(buffer);\r\n Module['HEAPU8'] = HEAPU8 = new Uint8Array(buffer);\r\n Module['HEAPU16'] = HEAPU16 = new Uint16Array(buffer);\r\n Module['HEAPU32'] = HEAPU32 = new Uint32Array(buffer);\r\n Module['HEAPF32'] = HEAPF32 = new Float32Array(buffer);\r\n Module['HEAPF64'] = HEAPF64 = new Float64Array(buffer);\r\n}\r\n\r\nvar STATIC_BASE, STATICTOP, staticSealed; // static area\r\nvar STACK_BASE, STACKTOP, STACK_MAX; // stack area\r\nvar DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk\r\n\r\n STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;\r\n staticSealed = false;\r\n\r\n\r\n\r\n\r\nfunction abortOnCannotGrowMemory() {\r\n 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, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ');\r\n}\r\n\r\nif (!Module['reallocBuffer']) Module['reallocBuffer'] = function(size) {\r\n var ret;\r\n try {\r\n if (ArrayBuffer.transfer) {\r\n ret = ArrayBuffer.transfer(buffer, size);\r\n } else {\r\n var oldHEAP8 = HEAP8;\r\n ret = new ArrayBuffer(size);\r\n var temp = new Int8Array(ret);\r\n temp.set(oldHEAP8);\r\n }\r\n } catch(e) {\r\n return false;\r\n }\r\n var success = _emscripten_replace_memory(ret);\r\n if (!success) return false;\r\n return ret;\r\n};\r\n\r\nfunction enlargeMemory() {\r\n // TOTAL_MEMORY is the current size of the actual array, and DYNAMICTOP is the new top.\r\n\r\n\r\n var PAGE_MULTIPLE = Module[\"usingWasm\"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.\r\n var LIMIT = 2147483648 - PAGE_MULTIPLE; // We can do one page short of 2GB as theoretical maximum.\r\n\r\n if (HEAP32[DYNAMICTOP_PTR>>2] > LIMIT) {\r\n return false;\r\n }\r\n\r\n var OLD_TOTAL_MEMORY = TOTAL_MEMORY;\r\n TOTAL_MEMORY = Math.max(TOTAL_MEMORY, MIN_TOTAL_MEMORY); // So the loop below will not be infinite, and minimum asm.js memory size is 16MB.\r\n\r\n while (TOTAL_MEMORY < HEAP32[DYNAMICTOP_PTR>>2]) { // Keep incrementing the heap size as long as it's less than what is requested.\r\n if (TOTAL_MEMORY <= 536870912) {\r\n TOTAL_MEMORY = alignUp(2 * TOTAL_MEMORY, PAGE_MULTIPLE); // Simple heuristic: double until 1GB...\r\n } else {\r\n // ..., but after that, add smaller increments towards 2GB, which we cannot reach\r\n TOTAL_MEMORY = Math.min(alignUp((3 * TOTAL_MEMORY + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\r\n }\r\n }\r\n\r\n\r\n var replacement = Module['reallocBuffer'](TOTAL_MEMORY);\r\n if (!replacement || replacement.byteLength != TOTAL_MEMORY) {\r\n // restore the state to before this call, we failed\r\n TOTAL_MEMORY = OLD_TOTAL_MEMORY;\r\n return false;\r\n }\r\n\r\n // everything worked\r\n\r\n updateGlobalBuffer(replacement);\r\n updateGlobalBufferViews();\r\n\r\n\r\n\r\n return true;\r\n}\r\n\r\nvar byteLength;\r\ntry {\r\n byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get);\r\n byteLength(new ArrayBuffer(4)); // can fail on older ie\r\n} catch(e) { // can fail on older node/v8\r\n byteLength = function(buffer) { return buffer.byteLength; };\r\n}\r\n\r\nvar TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;\r\nvar TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728;\r\nif (TOTAL_MEMORY < TOTAL_STACK) err('TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')');\r\n\r\n// Initialize the runtime's memory\r\n\r\n\r\n\r\n// Use a provided buffer, if there is one, or else allocate a new one\r\nif (Module['buffer']) {\r\n buffer = Module['buffer'];\r\n} else {\r\n // Use a WebAssembly memory where available\r\n if (typeof WebAssembly === 'object' && typeof WebAssembly.Memory === 'function') {\r\n Module['wasmMemory'] = new WebAssembly.Memory({ 'initial': TOTAL_MEMORY / WASM_PAGE_SIZE });\r\n buffer = Module['wasmMemory'].buffer;\r\n } else\r\n {\r\n buffer = new ArrayBuffer(TOTAL_MEMORY);\r\n }\r\n Module['buffer'] = buffer;\r\n}\r\nupdateGlobalBufferViews();\r\n\r\n\r\nfunction getTotalMemory() {\r\n return TOTAL_MEMORY;\r\n}\r\n\r\n// Endianness check (note: assumes compiler arch was little-endian)\r\n\r\nfunction callRuntimeCallbacks(callbacks) {\r\n while(callbacks.length > 0) {\r\n var callback = callbacks.shift();\r\n if (typeof callback == 'function') {\r\n callback();\r\n continue;\r\n }\r\n var func = callback.func;\r\n if (typeof func === 'number') {\r\n if (callback.arg === undefined) {\r\n Module['dynCall_v'](func);\r\n } else {\r\n Module['dynCall_vi'](func, callback.arg);\r\n }\r\n } else {\r\n func(callback.arg === undefined ? null : callback.arg);\r\n }\r\n }\r\n}\r\n\r\nvar __ATPRERUN__ = []; // functions called before the runtime is initialized\r\nvar __ATINIT__ = []; // functions called during startup\r\nvar __ATMAIN__ = []; // functions called when main() is to be run\r\nvar __ATEXIT__ = []; // functions called during shutdown\r\nvar __ATPOSTRUN__ = []; // functions called after the main() is called\r\n\r\nvar runtimeInitialized = false;\r\nvar runtimeExited = false;\r\n\r\n\r\nfunction preRun() {\r\n // compatibility - merge in anything from Module['preRun'] at this time\r\n if (Module['preRun']) {\r\n if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];\r\n while (Module['preRun'].length) {\r\n addOnPreRun(Module['preRun'].shift());\r\n }\r\n }\r\n callRuntimeCallbacks(__ATPRERUN__);\r\n}\r\n\r\nfunction ensureInitRuntime() {\r\n if (runtimeInitialized) return;\r\n runtimeInitialized = true;\r\n callRuntimeCallbacks(__ATINIT__);\r\n}\r\n\r\nfunction preMain() {\r\n callRuntimeCallbacks(__ATMAIN__);\r\n}\r\n\r\nfunction exitRuntime() {\r\n callRuntimeCallbacks(__ATEXIT__);\r\n runtimeExited = true;\r\n}\r\n\r\nfunction postRun() {\r\n // compatibility - merge in anything from Module['postRun'] at this time\r\n if (Module['postRun']) {\r\n if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];\r\n while (Module['postRun'].length) {\r\n addOnPostRun(Module['postRun'].shift());\r\n }\r\n }\r\n callRuntimeCallbacks(__ATPOSTRUN__);\r\n}\r\n\r\nfunction addOnPreRun(cb) {\r\n __ATPRERUN__.unshift(cb);\r\n}\r\n\r\nfunction addOnInit(cb) {\r\n __ATINIT__.unshift(cb);\r\n}\r\n\r\nfunction addOnPreMain(cb) {\r\n __ATMAIN__.unshift(cb);\r\n}\r\n\r\nfunction addOnExit(cb) {\r\n __ATEXIT__.unshift(cb);\r\n}\r\n\r\nfunction addOnPostRun(cb) {\r\n __ATPOSTRUN__.unshift(cb);\r\n}\r\n\r\n// Deprecated: This function should not be called because it is unsafe and does not provide\r\n// a maximum length limit of how many bytes it is allowed to write. Prefer calling the\r\n// function stringToUTF8Array() instead, which takes in a maximum length that can be used\r\n// to be secure from out of bounds writes.\r\n/** @deprecated */\r\nfunction writeStringToMemory(string, buffer, dontAddNull) {\r\n warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!');\r\n\r\n var /** @type {number} */ lastChar, /** @type {number} */ end;\r\n if (dontAddNull) {\r\n // stringToUTF8Array always appends null. If we don't want to do that, remember the\r\n // character that existed at the location where the null will be placed, and restore\r\n // that after the write (below).\r\n end = buffer + lengthBytesUTF8(string);\r\n lastChar = HEAP8[end];\r\n }\r\n stringToUTF8(string, buffer, Infinity);\r\n if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character.\r\n}\r\n\r\nfunction writeArrayToMemory(array, buffer) {\r\n HEAP8.set(array, buffer);\r\n}\r\n\r\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\r\n for (var i = 0; i < str.length; ++i) {\r\n HEAP8[((buffer++)>>0)]=str.charCodeAt(i);\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n if (!dontAddNull) HEAP8[((buffer)>>0)]=0;\r\n}\r\n\r\nfunction unSign(value, bits, ignore) {\r\n if (value >= 0) {\r\n return value;\r\n }\r\n return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts\r\n : Math.pow(2, bits) + value;\r\n}\r\nfunction reSign(value, bits, ignore) {\r\n if (value <= 0) {\r\n return value;\r\n }\r\n var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32\r\n : Math.pow(2, bits-1);\r\n if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that\r\n // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors\r\n // TODO: In i64 mode 1, resign the two parts separately and safely\r\n value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts\r\n }\r\n return value;\r\n}\r\n\r\n\r\nvar Math_abs = Math.abs;\r\nvar Math_cos = Math.cos;\r\nvar Math_sin = Math.sin;\r\nvar Math_tan = Math.tan;\r\nvar Math_acos = Math.acos;\r\nvar Math_asin = Math.asin;\r\nvar Math_atan = Math.atan;\r\nvar Math_atan2 = Math.atan2;\r\nvar Math_exp = Math.exp;\r\nvar Math_log = Math.log;\r\nvar Math_sqrt = Math.sqrt;\r\nvar Math_ceil = Math.ceil;\r\nvar Math_floor = Math.floor;\r\nvar Math_pow = Math.pow;\r\nvar Math_imul = Math.imul;\r\nvar Math_fround = Math.fround;\r\nvar Math_round = Math.round;\r\nvar Math_min = Math.min;\r\nvar Math_max = Math.max;\r\nvar Math_clz32 = Math.clz32;\r\nvar Math_trunc = Math.trunc;\r\n\r\n// A counter of dependencies for calling run(). If we need to\r\n// do asynchronous work before running, increment this and\r\n// decrement it. Incrementing must happen in a place like\r\n// PRE_RUN_ADDITIONS (used by emcc to add file preloading).\r\n// Note that you can add dependencies in preRun, even though\r\n// it happens right before run - run will be postponed until\r\n// the dependencies are met.\r\nvar runDependencies = 0;\r\nvar runDependencyWatcher = null;\r\nvar dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled\r\n\r\nfunction getUniqueRunDependency(id) {\r\n return id;\r\n}\r\n\r\nfunction addRunDependency(id) {\r\n runDependencies++;\r\n if (Module['monitorRunDependencies']) {\r\n Module['monitorRunDependencies'](runDependencies);\r\n }\r\n}\r\n\r\nfunction removeRunDependency(id) {\r\n runDependencies--;\r\n if (Module['monitorRunDependencies']) {\r\n Module['monitorRunDependencies'](runDependencies);\r\n }\r\n if (runDependencies == 0) {\r\n if (runDependencyWatcher !== null) {\r\n clearInterval(runDependencyWatcher);\r\n runDependencyWatcher = null;\r\n }\r\n if (dependenciesFulfilled) {\r\n var callback = dependenciesFulfilled;\r\n dependenciesFulfilled = null;\r\n callback(); // can add another dependenciesFulfilled\r\n }\r\n }\r\n}\r\n\r\nModule[\"preloadedImages\"] = {}; // maps url to image data\r\nModule[\"preloadedAudios\"] = {}; // maps url to audio data\r\n\r\n\r\n\r\nvar memoryInitializer = null;\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Prefix of data URIs emitted by SINGLE_FILE and related options.\r\nvar dataURIPrefix = 'data:application/octet-stream;base64,';\r\n\r\n// Indicates whether filename is a base64 data URI.\r\nfunction isDataURI(filename) {\r\n return String.prototype.startsWith ?\r\n filename.startsWith(dataURIPrefix) :\r\n filename.indexOf(dataURIPrefix) === 0;\r\n}\r\n\r\n\r\n\r\n\r\nfunction integrateWasmJS() {\r\n // wasm.js has several methods for creating the compiled code module here:\r\n // * 'native-wasm' : use native WebAssembly support in the browser\r\n // * 'interpret-s-expr': load s-expression code from a .wast and interpret\r\n // * 'interpret-binary': load binary wasm and interpret\r\n // * 'interpret-asm2wasm': load asm.js code, translate to wasm, and interpret\r\n // * 'asmjs': no wasm, just load the asm.js code and use that (good for testing)\r\n // The method is set at compile time (BINARYEN_METHOD)\r\n // The method can be a comma-separated list, in which case, we will try the\r\n // options one by one. Some of them can fail gracefully, and then we can try\r\n // the next.\r\n\r\n // inputs\r\n\r\n var method = 'native-wasm';\r\n\r\n var wasmTextFile = 'Diablo.wast';\r\n var wasmBinaryFile = 'Diablo.wasm';\r\n var asmjsCodeFile = 'Diablo.temp.asm.js';\r\n\r\n if (!isDataURI(wasmTextFile)) {\r\n wasmTextFile = locateFile(wasmTextFile);\r\n }\r\n if (!isDataURI(wasmBinaryFile)) {\r\n wasmBinaryFile = locateFile(wasmBinaryFile);\r\n }\r\n if (!isDataURI(asmjsCodeFile)) {\r\n asmjsCodeFile = locateFile(asmjsCodeFile);\r\n }\r\n\r\n // utilities\r\n\r\n var wasmPageSize = 64*1024;\r\n\r\n var info = {\r\n 'global': null,\r\n 'env': null,\r\n 'asm2wasm': asm2wasmImports,\r\n 'parent': Module // Module inside wasm-js.cpp refers to wasm-js.cpp; this allows access to the outside program.\r\n };\r\n\r\n var exports = null;\r\n\r\n\r\n function mergeMemory(newBuffer) {\r\n // The wasm instance creates its memory. But static init code might have written to\r\n // buffer already, including the mem init file, and we must copy it over in a proper merge.\r\n // TODO: avoid this copy, by avoiding such static init writes\r\n // TODO: in shorter term, just copy up to the last static init write\r\n var oldBuffer = Module['buffer'];\r\n if (newBuffer.byteLength < oldBuffer.byteLength) {\r\n err('the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here');\r\n }\r\n var oldView = new Int8Array(oldBuffer);\r\n var newView = new Int8Array(newBuffer);\r\n\r\n\r\n newView.set(oldView);\r\n updateGlobalBuffer(newBuffer);\r\n updateGlobalBufferViews();\r\n }\r\n\r\n function fixImports(imports) {\r\n return imports;\r\n }\r\n\r\n function getBinary() {\r\n try {\r\n if (Module['wasmBinary']) {\r\n return new Uint8Array(Module['wasmBinary']);\r\n }\r\n if (Module['readBinary']) {\r\n return Module['readBinary'](wasmBinaryFile);\r\n } else {\r\n throw \"both async and sync fetching of the wasm failed\";\r\n }\r\n }\r\n catch (err) {\r\n abort(err);\r\n }\r\n }\r\n\r\n function getBinaryPromise() {\r\n // if we don't have the binary yet, and have the Fetch api, use that\r\n // in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web\r\n if (!Module['wasmBinary'] && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function') {\r\n return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) {\r\n if (!response['ok']) {\r\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\r\n }\r\n return response['arrayBuffer']();\r\n }).catch(function () {\r\n return getBinary();\r\n });\r\n }\r\n // Otherwise, getBinary should be able to get it synchronously\r\n return new Promise(function(resolve, reject) {\r\n resolve(getBinary());\r\n });\r\n }\r\n\r\n // do-method functions\r\n\r\n\r\n function doNativeWasm(global, env, providedBuffer) {\r\n if (typeof WebAssembly !== 'object') {\r\n err('no native wasm support detected');\r\n return false;\r\n }\r\n // prepare memory import\r\n if (!(Module['wasmMemory'] instanceof WebAssembly.Memory)) {\r\n err('no native wasm Memory in use');\r\n return false;\r\n }\r\n env['memory'] = Module['wasmMemory'];\r\n // Load the wasm module and create an instance of using native support in the JS engine.\r\n info['global'] = {\r\n 'NaN': NaN,\r\n 'Infinity': Infinity\r\n };\r\n info['global.Math'] = Math;\r\n info['env'] = env;\r\n // handle a generated wasm instance, receiving its exports and\r\n // performing other necessary setup\r\n function receiveInstance(instance, module) {\r\n exports = instance.exports;\r\n if (exports.memory) mergeMemory(exports.memory);\r\n Module['asm'] = exports;\r\n Module[\"usingWasm\"] = true;\r\n removeRunDependency('wasm-instantiate');\r\n }\r\n addRunDependency('wasm-instantiate');\r\n\r\n // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback\r\n // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel\r\n // to any other async startup actions they are performing.\r\n if (Module['instantiateWasm']) {\r\n try {\r\n return Module['instantiateWasm'](info, receiveInstance);\r\n } catch(e) {\r\n err('Module.instantiateWasm callback failed with error: ' + e);\r\n return false;\r\n }\r\n }\r\n\r\n function receiveInstantiatedSource(output) {\r\n // 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance.\r\n // receiveInstance() will swap in the exports (to Module.asm) so they can be called\r\n receiveInstance(output['instance'], output['module']);\r\n }\r\n function instantiateArrayBuffer(receiver) {\r\n getBinaryPromise().then(function(binary) {\r\n return WebAssembly.instantiate(binary, info);\r\n }).then(receiver).catch(function(reason) {\r\n err('failed to asynchronously prepare wasm: ' + reason);\r\n abort(reason);\r\n });\r\n }\r\n // Prefer streaming instantiation if available.\r\n if (!Module['wasmBinary'] &&\r\n typeof WebAssembly.instantiateStreaming === 'function' &&\r\n !isDataURI(wasmBinaryFile) &&\r\n typeof fetch === 'function') {\r\n WebAssembly.instantiateStreaming(fetch(wasmBinaryFile, { credentials: 'same-origin' }), info)\r\n .then(receiveInstantiatedSource)\r\n .catch(function(reason) {\r\n // We expect the most common failure cause to be a bad MIME type for the binary,\r\n // in which case falling back to ArrayBuffer instantiation should work.\r\n err('wasm streaming compile failed: ' + reason);\r\n err('falling back to ArrayBuffer instantiation');\r\n instantiateArrayBuffer(receiveInstantiatedSource);\r\n });\r\n } else {\r\n instantiateArrayBuffer(receiveInstantiatedSource);\r\n }\r\n return {}; // no exports yet; we'll fill them in later\r\n }\r\n\r\n\r\n // We may have a preloaded value in Module.asm, save it\r\n Module['asmPreload'] = Module['asm'];\r\n\r\n // Memory growth integration code\r\n\r\n var asmjsReallocBuffer = Module['reallocBuffer'];\r\n\r\n var wasmReallocBuffer = function(size) {\r\n var PAGE_MULTIPLE = Module[\"usingWasm\"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.\r\n size = alignUp(size, PAGE_MULTIPLE); // round up to wasm page size\r\n var old = Module['buffer'];\r\n var oldSize = old.byteLength;\r\n if (Module[\"usingWasm\"]) {\r\n // native wasm support\r\n try {\r\n var result = Module['wasmMemory'].grow((size - oldSize) / wasmPageSize); // .grow() takes a delta compared to the previous size\r\n if (result !== (-1 | 0)) {\r\n // success in native wasm memory growth, get the buffer from the memory\r\n return Module['buffer'] = Module['wasmMemory'].buffer;\r\n } else {\r\n return null;\r\n }\r\n } catch(e) {\r\n return null;\r\n }\r\n }\r\n };\r\n\r\n Module['reallocBuffer'] = function(size) {\r\n if (finalMethod === 'asmjs') {\r\n return asmjsReallocBuffer(size);\r\n } else {\r\n return wasmReallocBuffer(size);\r\n }\r\n };\r\n\r\n // we may try more than one; this is the final one, that worked and we are using\r\n var finalMethod = '';\r\n\r\n // Provide an \"asm.js function\" for the application, called to \"link\" the asm.js module. We instantiate\r\n // the wasm module at that time, and it receives imports and provides exports and so forth, the app\r\n // doesn't need to care that it is wasm or olyfilled wasm or asm.js.\r\n\r\n Module['asm'] = function(global, env, providedBuffer) {\r\n env = fixImports(env);\r\n\r\n // import table\r\n if (!env['table']) {\r\n var TABLE_SIZE = Module['wasmTableSize'];\r\n if (TABLE_SIZE === undefined) TABLE_SIZE = 1024; // works in binaryen interpreter at least\r\n var MAX_TABLE_SIZE = Module['wasmMaxTableSize'];\r\n if (typeof WebAssembly === 'object' && typeof WebAssembly.Table === 'function') {\r\n if (MAX_TABLE_SIZE !== undefined) {\r\n env['table'] = new WebAssembly.Table({ 'initial': TABLE_SIZE, 'maximum': MAX_TABLE_SIZE, 'element': 'anyfunc' });\r\n } else {\r\n env['table'] = new WebAssembly.Table({ 'initial': TABLE_SIZE, element: 'anyfunc' });\r\n }\r\n } else {\r\n env['table'] = new Array(TABLE_SIZE); // works in binaryen interpreter at least\r\n }\r\n Module['wasmTable'] = env['table'];\r\n }\r\n\r\n if (!env['memoryBase']) {\r\n env['memoryBase'] = Module['STATIC_BASE']; // tell the memory segments where to place themselves\r\n }\r\n if (!env['tableBase']) {\r\n env['tableBase'] = 0; // table starts at 0 by default, in dynamic linking this will change\r\n }\r\n\r\n // try the methods. each should return the exports if it succeeded\r\n\r\n var exports;\r\n exports = doNativeWasm(global, env, providedBuffer);\r\n\r\n assert(exports, 'no binaryen method succeeded.');\r\n\r\n\r\n return exports;\r\n };\r\n\r\n var methodHandler = Module['asm']; // note our method handler, as we may modify Module['asm'] later\r\n}\r\n\r\nintegrateWasmJS();\r\n\r\n// === Body ===\r\n\r\nvar ASM_CONSTS = [function($0) { self.DApi.current_save_id($0); }];\r\n\r\nfunction _emscripten_asm_const_ii(code, a0) {\r\n return ASM_CONSTS[code](a0);\r\n}\r\nfunction __api_close_keyboard(){ self.DApi.close_keyboard(); }\r\nfunction __api_open_keyboard(x0,y0,x1,y1,len){ self.DApi.open_keyboard(x0, y0, x1, y1, len); }\r\nfunction _api_create_sound(id,ptr,size){ self.DApi.create_sound(id, HEAPU8.slice(ptr, ptr + size)); }\r\nfunction _api_create_sound_float(id,ptr,samples,channels,rate){ self.DApi.create_sound_raw(id, HEAPF32.slice(ptr / 4, ptr / 4 + samples * channels), samples, channels, rate); }\r\nfunction _api_delete_sound(id){ self.DApi.delete_sound(id); }\r\nfunction _api_draw_begin(){ self.DApi.draw_begin(); }\r\nfunction _api_draw_belt(items){ self.DApi.draw_belt(HEAP32.subarray(items / 4, items / 4 + 8)); }\r\nfunction _api_draw_blit(x,y,w,h,ptr){ self.DApi.draw_blit(x, y, w, h, HEAPU8.subarray(ptr, ptr + w * h * 4)); }\r\nfunction _api_draw_clip_text(x0,y0,x1,y1){ self.DApi.draw_clip_text(x0, y0, x1, y1); }\r\nfunction _api_draw_end(){ self.DApi.draw_end(); }\r\nfunction _api_draw_text(x,y,ptr,color){ var end = HEAPU8.indexOf(0, ptr); var text = String.fromCharCode.apply(null, HEAPU8.subarray(ptr, end)); self.DApi.draw_text(x, y, text, color); }\r\nfunction _api_duplicate_sound(id,srcId){ self.DApi.duplicate_sound(id, srcId); }\r\nfunction _api_exit_game(){ self.DApi.exit_game(); }\r\nfunction _api_play_sound(id,volume,pan,loop){ self.DApi.play_sound(id, volume, pan, loop); }\r\nfunction _api_set_cursor(x,y){ self.DApi.set_cursor(x, y); }\r\nfunction _api_set_volume(id,volume){ self.DApi.set_volume(id, volume); }\r\nfunction _api_stop_sound(id){ self.DApi.stop_sound(id); }\r\nfunction _api_websocket_closed(){ return self.DApi.websocket_closed(); }\r\nfunction _api_websocket_send(ptr,size){ self.DApi.websocket_send(HEAPU8.subarray(ptr, ptr + size)); }\r\nfunction _exit_error(err){ var end = HEAPU8.indexOf( 0, err ); var text = String.fromCharCode.apply(null, HEAPU8.subarray( err, end )); self.DApi.exit_error( text ); }\r\nfunction _get_file_contents(path,ptr,offset,size){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); self.DApi.get_file_contents(text, HEAPU8.subarray(ptr, ptr + size), offset); }\r\nfunction _get_file_size(path){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); return self.DApi.get_file_size(text); }\r\nfunction _put_file_contents(path,ptr,size){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end)); self.DApi.put_file_contents(text, HEAPU8.slice(ptr, ptr + size)); }\r\nfunction _remove_file(path){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); self.DApi.remove_file( text ); }\r\nfunction _show_alert(err){ var end = HEAPU8.indexOf( 0, err ); var text = String.fromCharCode.apply( null, HEAPU8.subarray( err, end ) ); self.alert( text ); }\r\nfunction _trace_pop(){ if (self.WASM_TRACE) { self.WASM_TRACE.pop(); } }\r\nfunction _trace_push(ptr){ var end = HEAPU8.indexOf(0, ptr); var text = String.fromCharCode.apply(null, HEAPU8.subarray(ptr, end)); console.log(text); self.WASM_TRACE = self.WASM_TRACE || []; self.WASM_TRACE.push(text); }\r\n\r\n\r\n\r\nSTATIC_BASE = GLOBAL_BASE;\r\n\r\nSTATICTOP = STATIC_BASE + 1866608;\r\n/* global initializers */ __ATINIT__.push({ func: function() { __GLOBAL__sub_I_msgcmd_cpp() } }, { func: function() { __GLOBAL__sub_I_snet_cpp() } });\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar STATIC_BUMP = 1866608;\r\nModule[\"STATIC_BASE\"] = STATIC_BASE;\r\nModule[\"STATIC_BUMP\"] = STATIC_BUMP;\r\n\r\n/* no memory initializer */\r\nvar tempDoublePtr = STATICTOP; STATICTOP += 16;\r\n\r\nfunction copyTempFloat(ptr) { // functions, because inlining this code increases code size too much\r\n\r\n HEAP8[tempDoublePtr] = HEAP8[ptr];\r\n\r\n HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\r\n\r\n HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\r\n\r\n HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\r\n\r\n}\r\n\r\nfunction copyTempDouble(ptr) {\r\n\r\n HEAP8[tempDoublePtr] = HEAP8[ptr];\r\n\r\n HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\r\n\r\n HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\r\n\r\n HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\r\n\r\n HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];\r\n\r\n HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];\r\n\r\n HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];\r\n\r\n HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];\r\n\r\n}\r\n\r\n// {{PRE_LIBRARY}}\r\n\r\n\r\n function ___assert_fail(condition, filename, line, func) {\r\n abort('Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function']);\r\n }\r\n\r\n function ___cxa_allocate_exception(size) {\r\n return _malloc(size);\r\n }\r\n\r\n \r\n function __ZSt18uncaught_exceptionv() { // std::uncaught_exception()\r\n return !!__ZSt18uncaught_exceptionv.uncaught_exception;\r\n }\r\n \r\n var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function (adjusted) {\r\n if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted;\r\n for (var key in EXCEPTIONS.infos) {\r\n var ptr = +key; // the iteration key is a string, and if we throw this, it must be an integer as that is what we look for\r\n var info = EXCEPTIONS.infos[ptr];\r\n if (info.adjusted === adjusted) {\r\n return ptr;\r\n }\r\n }\r\n return adjusted;\r\n },addRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n info.refcount++;\r\n },decRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n assert(info.refcount > 0);\r\n info.refcount--;\r\n // A rethrown exception can reach refcount 0; it must not be discarded\r\n // Its next handler will clear the rethrown flag and addRef it, prior to\r\n // final decRef and destruction here\r\n if (info.refcount === 0 && !info.rethrown) {\r\n if (info.destructor) {\r\n Module['dynCall_vi'](info.destructor, ptr);\r\n }\r\n delete EXCEPTIONS.infos[ptr];\r\n ___cxa_free_exception(ptr);\r\n }\r\n },clearRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n info.refcount = 0;\r\n }};function ___cxa_begin_catch(ptr) {\r\n var info = EXCEPTIONS.infos[ptr];\r\n if (info && !info.caught) {\r\n info.caught = true;\r\n __ZSt18uncaught_exceptionv.uncaught_exception--;\r\n }\r\n if (info) info.rethrown = false;\r\n EXCEPTIONS.caught.push(ptr);\r\n EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));\r\n return ptr;\r\n }\r\n\r\n \r\n function ___cxa_free_exception(ptr) {\r\n try {\r\n return _free(ptr);\r\n } catch(e) { // XXX FIXME\r\n }\r\n }function ___cxa_end_catch() {\r\n // Clear state flag.\r\n Module['setThrew'](0);\r\n // Call destructor if one is registered then clear it.\r\n var ptr = EXCEPTIONS.caught.pop();\r\n if (ptr) {\r\n EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));\r\n EXCEPTIONS.last = 0; // XXX in decRef?\r\n }\r\n }\r\n\r\n function ___cxa_find_matching_catch_2() {\r\n return ___cxa_find_matching_catch.apply(null, arguments);\r\n }\r\n\r\n function ___cxa_find_matching_catch_3() {\r\n return ___cxa_find_matching_catch.apply(null, arguments);\r\n }\r\n\r\n\r\n function ___cxa_get_exception_ptr(ptr) {\r\n // TODO: use info.adjusted?\r\n return ptr;\r\n }\r\n\r\n function ___cxa_pure_virtual() {\r\n ABORT = true;\r\n throw 'Pure virtual function called!';\r\n }\r\n\r\n \r\n \r\n function ___resumeException(ptr) {\r\n if (!EXCEPTIONS.last) { EXCEPTIONS.last = ptr; }\r\n throw ptr;\r\n }function ___cxa_find_matching_catch() {\r\n var thrown = EXCEPTIONS.last;\r\n if (!thrown) {\r\n // just pass through the null ptr\r\n return ((setTempRet0(0),0)|0);\r\n }\r\n var info = EXCEPTIONS.infos[thrown];\r\n var throwntype = info.type;\r\n if (!throwntype) {\r\n // just pass through the thrown ptr\r\n return ((setTempRet0(0),thrown)|0);\r\n }\r\n var typeArray = Array.prototype.slice.call(arguments);\r\n \r\n var pointer = Module['___cxa_is_pointer_type'](throwntype);\r\n // can_catch receives a **, add indirection\r\n if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4);\r\n HEAP32[((___cxa_find_matching_catch.buffer)>>2)]=thrown;\r\n thrown = ___cxa_find_matching_catch.buffer;\r\n // The different catch blocks are denoted by different types.\r\n // Due to inheritance, those types may not precisely match the\r\n // type of the thrown object. Find one which matches, and\r\n // return the type of the catch block which should be called.\r\n for (var i = 0; i < typeArray.length; i++) {\r\n if (typeArray[i] && Module['___cxa_can_catch'](typeArray[i], throwntype, thrown)) {\r\n thrown = HEAP32[((thrown)>>2)]; // undo indirection\r\n info.adjusted = thrown;\r\n return ((setTempRet0(typeArray[i]),thrown)|0);\r\n }\r\n }\r\n // Shouldn't happen unless we have bogus data in typeArray\r\n // or encounter a type for which emscripten doesn't have suitable\r\n // typeinfo defined. Best-efforts match just in case.\r\n thrown = HEAP32[((thrown)>>2)]; // undo indirection\r\n return ((setTempRet0(throwntype),thrown)|0);\r\n }function ___cxa_throw(ptr, type, destructor) {\r\n EXCEPTIONS.infos[ptr] = {\r\n ptr: ptr,\r\n adjusted: ptr,\r\n type: type,\r\n destructor: destructor,\r\n refcount: 0,\r\n caught: false,\r\n rethrown: false\r\n };\r\n EXCEPTIONS.last = ptr;\r\n if (!(\"uncaught_exception\" in __ZSt18uncaught_exceptionv)) {\r\n __ZSt18uncaught_exceptionv.uncaught_exception = 1;\r\n } else {\r\n __ZSt18uncaught_exceptionv.uncaught_exception++;\r\n }\r\n throw ptr;\r\n }\r\n\r\n function ___gxx_personality_v0() {\r\n }\r\n\r\n function ___lock() {}\r\n\r\n\r\n \r\n var SYSCALLS={varargs:0,get:function (varargs) {\r\n SYSCALLS.varargs += 4;\r\n var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];\r\n return ret;\r\n },getStr:function () {\r\n var ret = Pointer_stringify(SYSCALLS.get());\r\n return ret;\r\n },get64:function () {\r\n var low = SYSCALLS.get(), high = SYSCALLS.get();\r\n if (low >= 0) assert(high === 0);\r\n else assert(high === -1);\r\n return low;\r\n },getZero:function () {\r\n assert(SYSCALLS.get() === 0);\r\n }};function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // llseek\r\n var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();\r\n // NOTE: offset_high is unused - Emscripten's off_t is 32-bit\r\n var offset = offset_low;\r\n FS.llseek(stream, offset, whence);\r\n HEAP32[((result)>>2)]=stream.position;\r\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n \r\n function flush_NO_FILESYSTEM() {\r\n // flush anything remaining in the buffers during shutdown\r\n var fflush = Module[\"_fflush\"];\r\n if (fflush) fflush(0);\r\n var printChar = ___syscall146.printChar;\r\n if (!printChar) return;\r\n var buffers = ___syscall146.buffers;\r\n if (buffers[1].length) printChar(1, 10);\r\n if (buffers[2].length) printChar(2, 10);\r\n }function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // writev\r\n // hack to support printf in NO_FILESYSTEM\r\n var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();\r\n var ret = 0;\r\n if (!___syscall146.buffers) {\r\n ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr\r\n ___syscall146.printChar = function(stream, curr) {\r\n var buffer = ___syscall146.buffers[stream];\r\n assert(buffer);\r\n if (curr === 0 || curr === 10) {\r\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\r\n buffer.length = 0;\r\n } else {\r\n buffer.push(curr);\r\n }\r\n };\r\n }\r\n for (var i = 0; i < iovcnt; i++) {\r\n var ptr = HEAP32[(((iov)+(i*8))>>2)];\r\n var len = HEAP32[(((iov)+(i*8 + 4))>>2)];\r\n for (var j = 0; j < len; j++) {\r\n ___syscall146.printChar(stream, HEAPU8[ptr+j]);\r\n }\r\n ret += len;\r\n }\r\n return ret;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // ioctl\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // close\r\n var stream = SYSCALLS.getStreamFromFD();\r\n FS.close(stream);\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___unlock() {}\r\n\r\n function _abort() {\r\n Module['abort']();\r\n }\r\n\r\n var _emscripten_asm_const_int=true;\r\n\r\n \r\n function __exit(status) {\r\n // void _exit(int status);\r\n // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html\r\n exit(status);\r\n }function _exit(status) {\r\n __exit(status);\r\n }\r\n\r\n \r\n\r\n var _llvm_ceil_f32=Math_ceil;\r\n\r\n var _llvm_ctlz_i32=true;\r\n\r\n function _llvm_eh_typeid_for(type) {\r\n return type;\r\n }\r\n\r\n function _llvm_trap() {\r\n abort('trap!');\r\n }\r\n\r\n \r\n function _emscripten_memcpy_big(dest, src, num) {\r\n HEAPU8.set(HEAPU8.subarray(src, src+num), dest);\r\n return dest;\r\n } \r\n\r\n \r\n\r\n \r\n\r\n \r\n var PTHREAD_SPECIFIC={};function _pthread_getspecific(key) {\r\n return PTHREAD_SPECIFIC[key] || 0;\r\n }\r\n\r\n \r\n var PTHREAD_SPECIFIC_NEXT_KEY=1;\r\n \r\n var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key, destructor) {\r\n if (key == 0) {\r\n return ERRNO_CODES.EINVAL;\r\n }\r\n HEAP32[((key)>>2)]=PTHREAD_SPECIFIC_NEXT_KEY;\r\n // values start at 0\r\n PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY] = 0;\r\n PTHREAD_SPECIFIC_NEXT_KEY++;\r\n return 0;\r\n }\r\n\r\n function _pthread_once(ptr, func) {\r\n if (!_pthread_once.seen) _pthread_once.seen = {};\r\n if (ptr in _pthread_once.seen) return;\r\n Module['dynCall_v'](func);\r\n _pthread_once.seen[ptr] = 1;\r\n }\r\n\r\n function _pthread_setspecific(key, value) {\r\n if (!(key in PTHREAD_SPECIFIC)) {\r\n return ERRNO_CODES.EINVAL;\r\n }\r\n PTHREAD_SPECIFIC[key] = value;\r\n return 0;\r\n }\r\n\r\n \r\n function ___setErrNo(value) {\r\n if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;\r\n return value;\r\n } \r\n\r\n function _time(ptr) {\r\n var ret = (Date.now()/1000)|0;\r\n if (ptr) {\r\n HEAP32[((ptr)>>2)]=ret;\r\n }\r\n return ret;\r\n }\r\nDYNAMICTOP_PTR = staticAlloc(4);\r\n\r\nSTACK_BASE = STACKTOP = alignMemory(STATICTOP);\r\n\r\nSTACK_MAX = STACK_BASE + TOTAL_STACK;\r\n\r\nDYNAMIC_BASE = alignMemory(STACK_MAX);\r\n\r\nHEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE;\r\n\r\nstaticSealed = true; // seal the static portion of memory\r\n\r\nvar ASSERTIONS = false;\r\n\r\n/** @type {function(string, boolean=, number=)} */\r\nfunction intArrayFromString(stringy, dontAddNull, length) {\r\n var len = length > 0 ? length : lengthBytesUTF8(stringy)+1;\r\n var u8array = new Array(len);\r\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\r\n if (dontAddNull) u8array.length = numBytesWritten;\r\n return u8array;\r\n}\r\n\r\nfunction intArrayToString(array) {\r\n var ret = [];\r\n for (var i = 0; i < array.length; i++) {\r\n var chr = array[i];\r\n if (chr > 0xFF) {\r\n if (ASSERTIONS) {\r\n assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.');\r\n }\r\n chr &= 0xFF;\r\n }\r\n ret.push(String.fromCharCode(chr));\r\n }\r\n return ret.join('');\r\n}\r\n\r\n\r\n\r\nModule['wasmTableSize'] = 1114;\r\n\r\nModule['wasmMaxTableSize'] = 1114;\r\n\r\nfunction invoke_i(index) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_i\"](index);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_ii(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_ii\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iii(index,a1,a2) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iii\"](index,a1,a2);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiii(index,a1,a2,a3) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiii\"](index,a1,a2,a3);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiiii(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiiiii(index,a1,a2,a3,a4,a5) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiiiii\"](index,a1,a2,a3,a4,a5);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_ji(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_ji\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_v(index) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_v\"](index);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_vi(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_vi\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_vii(index,a1,a2) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_vii\"](index,a1,a2);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viii(index,a1,a2,a3) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viii\"](index,a1,a2,a3);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiii(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiii\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiii(index,a1,a2,a3,a4,a5) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viij(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viij\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viji(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viji\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nModule.asmGlobalArg = {};\r\n\r\nModule.asmLibraryArg = { \"abort\": abort, \"assert\": assert, \"enlargeMemory\": enlargeMemory, \"getTotalMemory\": getTotalMemory, \"abortOnCannotGrowMemory\": abortOnCannotGrowMemory, \"invoke_i\": invoke_i, \"invoke_ii\": invoke_ii, \"invoke_iii\": invoke_iii, \"invoke_iiii\": invoke_iiii, \"invoke_iiiii\": invoke_iiiii, \"invoke_iiiiii\": invoke_iiiiii, \"invoke_ji\": invoke_ji, \"invoke_v\": invoke_v, \"invoke_vi\": invoke_vi, \"invoke_vii\": invoke_vii, \"invoke_viii\": invoke_viii, \"invoke_viiii\": invoke_viiii, \"invoke_viiiii\": invoke_viiiii, \"invoke_viiiiii\": invoke_viiiiii, \"invoke_viiiiiii\": invoke_viiiiiii, \"invoke_viiiiiiiii\": invoke_viiiiiiiii, \"invoke_viiiiiiiiii\": invoke_viiiiiiiiii, \"invoke_viij\": invoke_viij, \"invoke_viji\": invoke_viji, \"__ZSt18uncaught_exceptionv\": __ZSt18uncaught_exceptionv, \"___assert_fail\": ___assert_fail, \"___cxa_allocate_exception\": ___cxa_allocate_exception, \"___cxa_begin_catch\": ___cxa_begin_catch, \"___cxa_end_catch\": ___cxa_end_catch, \"___cxa_find_matching_catch\": ___cxa_find_matching_catch, \"___cxa_find_matching_catch_2\": ___cxa_find_matching_catch_2, \"___cxa_find_matching_catch_3\": ___cxa_find_matching_catch_3, \"___cxa_free_exception\": ___cxa_free_exception, \"___cxa_get_exception_ptr\": ___cxa_get_exception_ptr, \"___cxa_pure_virtual\": ___cxa_pure_virtual, \"___cxa_throw\": ___cxa_throw, \"___gxx_personality_v0\": ___gxx_personality_v0, \"___lock\": ___lock, \"___resumeException\": ___resumeException, \"___setErrNo\": ___setErrNo, \"___syscall140\": ___syscall140, \"___syscall146\": ___syscall146, \"___syscall54\": ___syscall54, \"___syscall6\": ___syscall6, \"___unlock\": ___unlock, \"__api_close_keyboard\": __api_close_keyboard, \"__api_open_keyboard\": __api_open_keyboard, \"__exit\": __exit, \"_abort\": _abort, \"_api_create_sound\": _api_create_sound, \"_api_create_sound_float\": _api_create_sound_float, \"_api_delete_sound\": _api_delete_sound, \"_api_draw_begin\": _api_draw_begin, \"_api_draw_belt\": _api_draw_belt, \"_api_draw_blit\": _api_draw_blit, \"_api_draw_clip_text\": _api_draw_clip_text, \"_api_draw_end\": _api_draw_end, \"_api_draw_text\": _api_draw_text, \"_api_duplicate_sound\": _api_duplicate_sound, \"_api_exit_game\": _api_exit_game, \"_api_play_sound\": _api_play_sound, \"_api_set_cursor\": _api_set_cursor, \"_api_set_volume\": _api_set_volume, \"_api_stop_sound\": _api_stop_sound, \"_api_websocket_closed\": _api_websocket_closed, \"_api_websocket_send\": _api_websocket_send, \"_emscripten_asm_const_ii\": _emscripten_asm_const_ii, \"_emscripten_memcpy_big\": _emscripten_memcpy_big, \"_exit\": _exit, \"_exit_error\": _exit_error, \"_get_file_contents\": _get_file_contents, \"_get_file_size\": _get_file_size, \"_llvm_ceil_f32\": _llvm_ceil_f32, \"_llvm_eh_typeid_for\": _llvm_eh_typeid_for, \"_llvm_trap\": _llvm_trap, \"_pthread_getspecific\": _pthread_getspecific, \"_pthread_key_create\": _pthread_key_create, \"_pthread_once\": _pthread_once, \"_pthread_setspecific\": _pthread_setspecific, \"_put_file_contents\": _put_file_contents, \"_remove_file\": _remove_file, \"_show_alert\": _show_alert, \"_time\": _time, \"_trace_pop\": _trace_pop, \"_trace_push\": _trace_push, \"flush_NO_FILESYSTEM\": flush_NO_FILESYSTEM, \"DYNAMICTOP_PTR\": DYNAMICTOP_PTR, \"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX };\r\n// EMSCRIPTEN_START_ASM\r\nvar asm =Module[\"asm\"]// EMSCRIPTEN_END_ASM\r\n(Module.asmGlobalArg, Module.asmLibraryArg, buffer);\r\n\r\nModule[\"asm\"] = asm;\r\nvar _DApi_AllocPacket = Module[\"_DApi_AllocPacket\"] = function() { return Module[\"asm\"][\"_DApi_AllocPacket\"].apply(null, arguments) };\r\nvar _DApi_Char = Module[\"_DApi_Char\"] = function() { return Module[\"asm\"][\"_DApi_Char\"].apply(null, arguments) };\r\nvar _DApi_Init = Module[\"_DApi_Init\"] = function() { return Module[\"asm\"][\"_DApi_Init\"].apply(null, arguments) };\r\nvar _DApi_Key = Module[\"_DApi_Key\"] = function() { return Module[\"asm\"][\"_DApi_Key\"].apply(null, arguments) };\r\nvar _DApi_Mouse = Module[\"_DApi_Mouse\"] = function() { return Module[\"asm\"][\"_DApi_Mouse\"].apply(null, arguments) };\r\nvar _DApi_Render = Module[\"_DApi_Render\"] = function() { return Module[\"asm\"][\"_DApi_Render\"].apply(null, arguments) };\r\nvar _DApi_SyncText = Module[\"_DApi_SyncText\"] = function() { return Module[\"asm\"][\"_DApi_SyncText\"].apply(null, arguments) };\r\nvar _DApi_SyncTextPtr = Module[\"_DApi_SyncTextPtr\"] = function() { return Module[\"asm\"][\"_DApi_SyncTextPtr\"].apply(null, arguments) };\r\nvar _SNet_InitWebsocket = Module[\"_SNet_InitWebsocket\"] = function() { return Module[\"asm\"][\"_SNet_InitWebsocket\"].apply(null, arguments) };\r\nvar __GLOBAL__sub_I_msgcmd_cpp = Module[\"__GLOBAL__sub_I_msgcmd_cpp\"] = function() { return Module[\"asm\"][\"__GLOBAL__sub_I_msgcmd_cpp\"].apply(null, arguments) };\r\nvar __GLOBAL__sub_I_snet_cpp = Module[\"__GLOBAL__sub_I_snet_cpp\"] = function() { return Module[\"asm\"][\"__GLOBAL__sub_I_snet_cpp\"].apply(null, arguments) };\r\nvar ___cxa_can_catch = Module[\"___cxa_can_catch\"] = function() { return Module[\"asm\"][\"___cxa_can_catch\"].apply(null, arguments) };\r\nvar ___cxa_is_pointer_type = Module[\"___cxa_is_pointer_type\"] = function() { return Module[\"asm\"][\"___cxa_is_pointer_type\"].apply(null, arguments) };\r\nvar ___em_js___api_close_keyboard = Module[\"___em_js___api_close_keyboard\"] = function() { return Module[\"asm\"][\"___em_js___api_close_keyboard\"].apply(null, arguments) };\r\nvar ___em_js___api_open_keyboard = Module[\"___em_js___api_open_keyboard\"] = function() { return Module[\"asm\"][\"___em_js___api_open_keyboard\"].apply(null, arguments) };\r\nvar ___em_js__api_create_sound = Module[\"___em_js__api_create_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_create_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_create_sound_float = Module[\"___em_js__api_create_sound_float\"] = function() { return Module[\"asm\"][\"___em_js__api_create_sound_float\"].apply(null, arguments) };\r\nvar ___em_js__api_delete_sound = Module[\"___em_js__api_delete_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_delete_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_begin = Module[\"___em_js__api_draw_begin\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_begin\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_belt = Module[\"___em_js__api_draw_belt\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_belt\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_blit = Module[\"___em_js__api_draw_blit\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_blit\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_clip_text = Module[\"___em_js__api_draw_clip_text\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_clip_text\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_end = Module[\"___em_js__api_draw_end\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_end\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_text = Module[\"___em_js__api_draw_text\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_text\"].apply(null, arguments) };\r\nvar ___em_js__api_duplicate_sound = Module[\"___em_js__api_duplicate_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_duplicate_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_exit_game = Module[\"___em_js__api_exit_game\"] = function() { return Module[\"asm\"][\"___em_js__api_exit_game\"].apply(null, arguments) };\r\nvar ___em_js__api_play_sound = Module[\"___em_js__api_play_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_play_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_set_cursor = Module[\"___em_js__api_set_cursor\"] = function() { return Module[\"asm\"][\"___em_js__api_set_cursor\"].apply(null, arguments) };\r\nvar ___em_js__api_set_volume = Module[\"___em_js__api_set_volume\"] = function() { return Module[\"asm\"][\"___em_js__api_set_volume\"].apply(null, arguments) };\r\nvar ___em_js__api_stop_sound = Module[\"___em_js__api_stop_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_stop_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_websocket_closed = Module[\"___em_js__api_websocket_closed\"] = function() { return Module[\"asm\"][\"___em_js__api_websocket_closed\"].apply(null, arguments) };\r\nvar ___em_js__api_websocket_send = Module[\"___em_js__api_websocket_send\"] = function() { return Module[\"asm\"][\"___em_js__api_websocket_send\"].apply(null, arguments) };\r\nvar ___em_js__exit_error = Module[\"___em_js__exit_error\"] = function() { return Module[\"asm\"][\"___em_js__exit_error\"].apply(null, arguments) };\r\nvar ___em_js__get_file_contents = Module[\"___em_js__get_file_contents\"] = function() { return Module[\"asm\"][\"___em_js__get_file_contents\"].apply(null, arguments) };\r\nvar ___em_js__get_file_size = Module[\"___em_js__get_file_size\"] = function() { return Module[\"asm\"][\"___em_js__get_file_size\"].apply(null, arguments) };\r\nvar ___em_js__put_file_contents = Module[\"___em_js__put_file_contents\"] = function() { return Module[\"asm\"][\"___em_js__put_file_contents\"].apply(null, arguments) };\r\nvar ___em_js__remove_file = Module[\"___em_js__remove_file\"] = function() { return Module[\"asm\"][\"___em_js__remove_file\"].apply(null, arguments) };\r\nvar ___em_js__show_alert = Module[\"___em_js__show_alert\"] = function() { return Module[\"asm\"][\"___em_js__show_alert\"].apply(null, arguments) };\r\nvar ___em_js__trace_pop = Module[\"___em_js__trace_pop\"] = function() { return Module[\"asm\"][\"___em_js__trace_pop\"].apply(null, arguments) };\r\nvar ___em_js__trace_push = Module[\"___em_js__trace_push\"] = function() { return Module[\"asm\"][\"___em_js__trace_push\"].apply(null, arguments) };\r\nvar _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = function() { return Module[\"asm\"][\"_emscripten_replace_memory\"].apply(null, arguments) };\r\nvar _free = Module[\"_free\"] = function() { return Module[\"asm\"][\"_free\"].apply(null, arguments) };\r\nvar _llvm_bswap_i32 = Module[\"_llvm_bswap_i32\"] = function() { return Module[\"asm\"][\"_llvm_bswap_i32\"].apply(null, arguments) };\r\nvar _malloc = Module[\"_malloc\"] = function() { return Module[\"asm\"][\"_malloc\"].apply(null, arguments) };\r\nvar _memcpy = Module[\"_memcpy\"] = function() { return Module[\"asm\"][\"_memcpy\"].apply(null, arguments) };\r\nvar _memmove = Module[\"_memmove\"] = function() { return Module[\"asm\"][\"_memmove\"].apply(null, arguments) };\r\nvar _memset = Module[\"_memset\"] = function() { return Module[\"asm\"][\"_memset\"].apply(null, arguments) };\r\nvar _sbrk = Module[\"_sbrk\"] = function() { return Module[\"asm\"][\"_sbrk\"].apply(null, arguments) };\r\nvar establishStackSpace = Module[\"establishStackSpace\"] = function() { return Module[\"asm\"][\"establishStackSpace\"].apply(null, arguments) };\r\nvar getTempRet0 = Module[\"getTempRet0\"] = function() { return Module[\"asm\"][\"getTempRet0\"].apply(null, arguments) };\r\nvar runPostSets = Module[\"runPostSets\"] = function() { return Module[\"asm\"][\"runPostSets\"].apply(null, arguments) };\r\nvar setTempRet0 = Module[\"setTempRet0\"] = function() { return Module[\"asm\"][\"setTempRet0\"].apply(null, arguments) };\r\nvar setThrew = Module[\"setThrew\"] = function() { return Module[\"asm\"][\"setThrew\"].apply(null, arguments) };\r\nvar stackAlloc = Module[\"stackAlloc\"] = function() { return Module[\"asm\"][\"stackAlloc\"].apply(null, arguments) };\r\nvar stackRestore = Module[\"stackRestore\"] = function() { return Module[\"asm\"][\"stackRestore\"].apply(null, arguments) };\r\nvar stackSave = Module[\"stackSave\"] = function() { return Module[\"asm\"][\"stackSave\"].apply(null, arguments) };\r\nvar dynCall_i = Module[\"dynCall_i\"] = function() { return Module[\"asm\"][\"dynCall_i\"].apply(null, arguments) };\r\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() { return Module[\"asm\"][\"dynCall_ii\"].apply(null, arguments) };\r\nvar dynCall_iii = Module[\"dynCall_iii\"] = function() { return Module[\"asm\"][\"dynCall_iii\"].apply(null, arguments) };\r\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() { return Module[\"asm\"][\"dynCall_iiii\"].apply(null, arguments) };\r\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() { return Module[\"asm\"][\"dynCall_iiiii\"].apply(null, arguments) };\r\nvar dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() { return Module[\"asm\"][\"dynCall_iiiiii\"].apply(null, arguments) };\r\nvar dynCall_ji = Module[\"dynCall_ji\"] = function() { return Module[\"asm\"][\"dynCall_ji\"].apply(null, arguments) };\r\nvar dynCall_v = Module[\"dynCall_v\"] = function() { return Module[\"asm\"][\"dynCall_v\"].apply(null, arguments) };\r\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() { return Module[\"asm\"][\"dynCall_vi\"].apply(null, arguments) };\r\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() { return Module[\"asm\"][\"dynCall_vii\"].apply(null, arguments) };\r\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() { return Module[\"asm\"][\"dynCall_viii\"].apply(null, arguments) };\r\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() { return Module[\"asm\"][\"dynCall_viiii\"].apply(null, arguments) };\r\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viij = Module[\"dynCall_viij\"] = function() { return Module[\"asm\"][\"dynCall_viij\"].apply(null, arguments) };\r\nvar dynCall_viji = Module[\"dynCall_viji\"] = function() { return Module[\"asm\"][\"dynCall_viji\"].apply(null, arguments) };\r\n;\r\n\r\n\r\n\r\n// === Auto-generated postamble setup entry stuff ===\r\n\r\nModule['asm'] = asm;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Modularize mode returns a function, which can be called to\r\n// create instances. The instances provide a then() method,\r\n// must like a Promise, that receives a callback. The callback\r\n// is called when the module is ready to run, with the module\r\n// as a parameter. (Like a Promise, it also returns the module\r\n// so you can use the output of .then(..)).\r\nModule['then'] = function(func) {\r\n // We may already be ready to run code at this time. if\r\n // so, just queue a call to the callback.\r\n if (Module['calledRun']) {\r\n func(Module);\r\n } else {\r\n // we are not ready to call then() yet. we must call it\r\n // at the same time we would call onRuntimeInitialized.\r\n var old = Module['onRuntimeInitialized'];\r\n Module['onRuntimeInitialized'] = function() {\r\n if (old) old();\r\n func(Module);\r\n };\r\n }\r\n return Module;\r\n};\r\n\r\n/**\r\n * @constructor\r\n * @extends {Error}\r\n * @this {ExitStatus}\r\n */\r\nfunction ExitStatus(status) {\r\n this.name = \"ExitStatus\";\r\n this.message = \"Program terminated with exit(\" + status + \")\";\r\n this.status = status;\r\n};\r\nExitStatus.prototype = new Error();\r\nExitStatus.prototype.constructor = ExitStatus;\r\n\r\nvar initialStackTop;\r\nvar calledMain = false;\r\n\r\ndependenciesFulfilled = function runCaller() {\r\n // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)\r\n if (!Module['calledRun']) run();\r\n if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/** @type {function(Array=)} */\r\nfunction run(args) {\r\n args = args || Module['arguments'];\r\n\r\n if (runDependencies > 0) {\r\n return;\r\n }\r\n\r\n\r\n preRun();\r\n\r\n if (runDependencies > 0) return; // a preRun added a dependency, run will be called later\r\n if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame\r\n\r\n function doRun() {\r\n if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening\r\n Module['calledRun'] = true;\r\n\r\n if (ABORT) return;\r\n\r\n ensureInitRuntime();\r\n\r\n preMain();\r\n\r\n if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();\r\n\r\n\r\n postRun();\r\n }\r\n\r\n if (Module['setStatus']) {\r\n Module['setStatus']('Running...');\r\n setTimeout(function() {\r\n setTimeout(function() {\r\n Module['setStatus']('');\r\n }, 1);\r\n doRun();\r\n }, 1);\r\n } else {\r\n doRun();\r\n }\r\n}\r\nModule['run'] = run;\r\n\r\n\r\nfunction exit(status, implicit) {\r\n\r\n // if this is just main exit-ing implicitly, and the status is 0, then we\r\n // don't need to do anything here and can just leave. if the status is\r\n // non-zero, though, then we need to report it.\r\n // (we may have warned about this earlier, if a situation justifies doing so)\r\n if (implicit && Module['noExitRuntime'] && status === 0) {\r\n return;\r\n }\r\n\r\n if (Module['noExitRuntime']) {\r\n } else {\r\n\r\n ABORT = true;\r\n EXITSTATUS = status;\r\n STACKTOP = initialStackTop;\r\n\r\n exitRuntime();\r\n\r\n if (Module['onExit']) Module['onExit'](status);\r\n }\r\n\r\n Module['quit'](status, new ExitStatus(status));\r\n}\r\n\r\nvar abortDecorators = [];\r\n\r\nfunction abort(what) {\r\n if (Module['onAbort']) {\r\n Module['onAbort'](what);\r\n }\r\n\r\n if (what !== undefined) {\r\n out(what);\r\n err(what);\r\n what = JSON.stringify(what)\r\n } else {\r\n what = '';\r\n }\r\n\r\n ABORT = true;\r\n EXITSTATUS = 1;\r\n\r\n throw 'abort(' + what + '). Build with -s ASSERTIONS=1 for more info.';\r\n}\r\nModule['abort'] = abort;\r\n\r\n// {{PRE_RUN_ADDITIONS}}\r\n\r\nif (Module['preInit']) {\r\n if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];\r\n while (Module['preInit'].length > 0) {\r\n Module['preInit'].pop()();\r\n }\r\n}\r\n\r\n\r\nModule[\"noExitRuntime\"] = true;\r\n\r\nrun();\r\n\r\n// {{POST_RUN_ADDITIONS}}\r\n\r\n\r\n\r\n\r\n\r\n// {{MODULE_ADDITIONS}}\r\n\r\n\r\n\r\nModule['ready'] = new Promise(function (resolve, reject) {\r\n delete Module['then']\r\n Module['onAbort'] = function (what) {\r\n reject(what)\r\n }\r\n addOnPostRun(function () {\r\n resolve(Module)\r\n })\r\n});\r\n\r\n\r\n\r\n return Diablo;\r\n}\r\n);\r\n})();\r\nif (typeof exports === 'object' && typeof module === 'object')\r\n module.exports = Diablo;\r\n else if (typeof define === 'function' && define['amd'])\r\n define([], function() { return Diablo; });\r\n else if (typeof exports === 'object')\r\n exports[\"Diablo\"] = Diablo;\r\n \n\n/*** EXPORTS FROM exports-loader ***/\n","module.exports = __webpack_public_path__ + \"static/media/DiabloSpawn.32acbb39.wasm\";","\r\nvar DiabloSpawn = (function() {\r\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\r\n return (\r\nfunction(DiabloSpawn) {\r\n DiabloSpawn = DiabloSpawn || {};\r\n\r\n// The Module object: Our interface to the outside world. We import\r\n// and export values on it. There are various ways Module can be used:\r\n// 1. Not defined. We create it here\r\n// 2. A function parameter, function(Module) { ..generated code.. }\r\n// 3. pre-run appended it, var Module = {}; ..generated code..\r\n// 4. External script tag defines var Module.\r\n// We need to check if Module already exists (e.g. case 3 above).\r\n// Substitution will be replaced with actual code on later stage of the build,\r\n// this way Closure Compiler will not mangle it (e.g. case 4. above).\r\n// Note that if you want to run closure, and also to use Module\r\n// after the generated code, you will need to define var Module = {};\r\n// before the code. Then that object will be used in the code, and you\r\n// can continue to use Module afterwards as well.\r\nvar Module = typeof DiabloSpawn !== 'undefined' ? DiabloSpawn : {};\r\n\r\n// --pre-jses are emitted after the Module integration code, so that they can\r\n// refer to Module (if they choose; they can also define Module)\r\n\r\n\r\n// Sometimes an existing Module object exists with properties\r\n// meant to overwrite the default module functionality. Here\r\n// we collect those properties and reapply _after_ we configure\r\n// the current environment's defaults to avoid having to be so\r\n// defensive during initialization.\r\nvar moduleOverrides = {};\r\nvar key;\r\nfor (key in Module) {\r\n if (Module.hasOwnProperty(key)) {\r\n moduleOverrides[key] = Module[key];\r\n }\r\n}\r\n\r\nModule['arguments'] = [];\r\nModule['thisProgram'] = './this.program';\r\nModule['quit'] = function(status, toThrow) {\r\n throw toThrow;\r\n};\r\nModule['preRun'] = [];\r\nModule['postRun'] = [];\r\n\r\n// The environment setup code below is customized to use Module.\r\n// *** Environment setup code ***\r\n\r\nvar ENVIRONMENT_IS_WEB = false;\r\nvar ENVIRONMENT_IS_WORKER = false;\r\nvar ENVIRONMENT_IS_NODE = false;\r\nvar ENVIRONMENT_IS_SHELL = false;\r\nENVIRONMENT_IS_WEB = typeof window === 'object';\r\nENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\r\nENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\r\nENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\r\n\r\n\r\n// Three configurations we can be running in:\r\n// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false)\r\n// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)\r\n// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)\r\n\r\n\r\n// `/` should be present at the end if `scriptDirectory` is not empty\r\nvar scriptDirectory = '';\r\nfunction locateFile(path) {\r\n if (Module['locateFile']) {\r\n return Module['locateFile'](path, scriptDirectory);\r\n } else {\r\n return scriptDirectory + path;\r\n }\r\n}\r\n\r\nif (ENVIRONMENT_IS_NODE) {\r\n scriptDirectory = __dirname + '/';\r\n\r\n // Expose functionality in the same simple way that the shells work\r\n // Note that we pollute the global namespace here, otherwise we break in node\r\n var nodeFS;\r\n var nodePath;\r\n\r\n Module['read'] = function shell_read(filename, binary) {\r\n var ret;\r\n if (!nodeFS) nodeFS = require('fs');\r\n if (!nodePath) nodePath = require('path');\r\n filename = nodePath['normalize'](filename);\r\n ret = nodeFS['readFileSync'](filename);\r\n return binary ? ret : ret.toString();\r\n };\r\n\r\n Module['readBinary'] = function readBinary(filename) {\r\n var ret = Module['read'](filename, true);\r\n if (!ret.buffer) {\r\n ret = new Uint8Array(ret);\r\n }\r\n assert(ret.buffer);\r\n return ret;\r\n };\r\n\r\n if (process['argv'].length > 1) {\r\n Module['thisProgram'] = process['argv'][1].replace(/\\\\/g, '/');\r\n }\r\n\r\n Module['arguments'] = process['argv'].slice(2);\r\n\r\n // MODULARIZE will export the module in the proper place outside, we don't need to export here\r\n\r\n process['on']('uncaughtException', function(ex) {\r\n // suppress ExitStatus exceptions from showing an error\r\n if (!(ex instanceof ExitStatus)) {\r\n throw ex;\r\n }\r\n });\r\n // Currently node will swallow unhandled rejections, but this behavior is\r\n // deprecated, and in the future it will exit with error status.\r\n process['on']('unhandledRejection', function(reason, p) {\r\n process['exit'](1);\r\n });\r\n\r\n Module['quit'] = function(status) {\r\n process['exit'](status);\r\n };\r\n\r\n Module['inspect'] = function () { return '[Emscripten Module object]'; };\r\n} else\r\nif (ENVIRONMENT_IS_SHELL) {\r\n\r\n\r\n if (typeof read != 'undefined') {\r\n Module['read'] = function shell_read(f) {\r\n return read(f);\r\n };\r\n }\r\n\r\n Module['readBinary'] = function readBinary(f) {\r\n var data;\r\n if (typeof readbuffer === 'function') {\r\n return new Uint8Array(readbuffer(f));\r\n }\r\n data = read(f, 'binary');\r\n assert(typeof data === 'object');\r\n return data;\r\n };\r\n\r\n if (typeof scriptArgs != 'undefined') {\r\n Module['arguments'] = scriptArgs;\r\n } else if (typeof arguments != 'undefined') {\r\n Module['arguments'] = arguments;\r\n }\r\n\r\n if (typeof quit === 'function') {\r\n Module['quit'] = function(status) {\r\n quit(status);\r\n }\r\n }\r\n} else\r\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\r\n if (ENVIRONMENT_IS_WEB) {\r\n if (document.currentScript) {\r\n scriptDirectory = document.currentScript.src;\r\n }\r\n } else { // worker\r\n scriptDirectory = self.location.href;\r\n }\r\n // When MODULARIZE (and not _INSTANCE), this JS may be executed later, after document.currentScript\r\n // is gone, so we saved it, and we use it here instead of any other info.\r\n if (_scriptDir) {\r\n scriptDirectory = _scriptDir;\r\n }\r\n // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them.\r\n // otherwise, slice off the final part of the url to find the script directory.\r\n if (scriptDirectory.indexOf('blob:') !== 0) {\r\n scriptDirectory = scriptDirectory.split('/').slice(0, -1).join('/') + '/';\r\n } else {\r\n scriptDirectory = '';\r\n }\r\n\r\n\r\n Module['read'] = function shell_read(url) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, false);\r\n xhr.send(null);\r\n return xhr.responseText;\r\n };\r\n\r\n if (ENVIRONMENT_IS_WORKER) {\r\n Module['readBinary'] = function readBinary(url) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, false);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send(null);\r\n return new Uint8Array(xhr.response);\r\n };\r\n }\r\n\r\n Module['readAsync'] = function readAsync(url, onload, onerror) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.onload = function xhr_onload() {\r\n if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0\r\n onload(xhr.response);\r\n return;\r\n }\r\n onerror();\r\n };\r\n xhr.onerror = onerror;\r\n xhr.send(null);\r\n };\r\n\r\n Module['setWindowTitle'] = function(title) { document.title = title };\r\n} else\r\n{\r\n}\r\n\r\n// Set up the out() and err() hooks, which are how we can print to stdout or\r\n// stderr, respectively.\r\n// If the user provided Module.print or printErr, use that. Otherwise,\r\n// console.log is checked first, as 'print' on the web will open a print dialogue\r\n// printErr is preferable to console.warn (works better in shells)\r\n// bind(console) is necessary to fix IE/Edge closed dev tools panel behavior.\r\nvar out = Module['print'] || (typeof console !== 'undefined' ? console.log.bind(console) : (typeof print !== 'undefined' ? print : null));\r\nvar err = Module['printErr'] || (typeof printErr !== 'undefined' ? printErr : ((typeof console !== 'undefined' && console.warn.bind(console)) || out));\r\n\r\n// *** Environment setup code ***\r\n\r\n// Merge back in the overrides\r\nfor (key in moduleOverrides) {\r\n if (moduleOverrides.hasOwnProperty(key)) {\r\n Module[key] = moduleOverrides[key];\r\n }\r\n}\r\n// Free the object hierarchy contained in the overrides, this lets the GC\r\n// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array.\r\nmoduleOverrides = undefined;\r\n\r\n\r\n\r\n// {{PREAMBLE_ADDITIONS}}\r\n\r\nvar STACK_ALIGN = 16;\r\n\r\n\r\nfunction staticAlloc(size) {\r\n var ret = STATICTOP;\r\n STATICTOP = (STATICTOP + size + 15) & -16;\r\n return ret;\r\n}\r\n\r\nfunction dynamicAlloc(size) {\r\n var ret = HEAP32[DYNAMICTOP_PTR>>2];\r\n var end = (ret + size + 15) & -16;\r\n HEAP32[DYNAMICTOP_PTR>>2] = end;\r\n if (end >= TOTAL_MEMORY) {\r\n var success = enlargeMemory();\r\n if (!success) {\r\n HEAP32[DYNAMICTOP_PTR>>2] = ret;\r\n return 0;\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\nfunction alignMemory(size, factor) {\r\n if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default\r\n var ret = size = Math.ceil(size / factor) * factor;\r\n return ret;\r\n}\r\n\r\nfunction getNativeTypeSize(type) {\r\n switch (type) {\r\n case 'i1': case 'i8': return 1;\r\n case 'i16': return 2;\r\n case 'i32': return 4;\r\n case 'i64': return 8;\r\n case 'float': return 4;\r\n case 'double': return 8;\r\n default: {\r\n if (type[type.length-1] === '*') {\r\n return 4; // A pointer\r\n } else if (type[0] === 'i') {\r\n var bits = parseInt(type.substr(1));\r\n assert(bits % 8 === 0);\r\n return bits / 8;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction warnOnce(text) {\r\n if (!warnOnce.shown) warnOnce.shown = {};\r\n if (!warnOnce.shown[text]) {\r\n warnOnce.shown[text] = 1;\r\n err(text);\r\n }\r\n}\r\n\r\nvar asm2wasmImports = { // special asm2wasm imports\r\n \"f64-rem\": function(x, y) {\r\n return x % y;\r\n },\r\n \"debugger\": function() {\r\n debugger;\r\n }\r\n};\r\n\r\n\r\n\r\nvar jsCallStartIndex = 1;\r\nvar functionPointers = new Array(0);\r\n\r\n// 'sig' parameter is only used on LLVM wasm backend\r\nfunction addFunction(func, sig) {\r\n var base = 0;\r\n for (var i = base; i < base + 0; i++) {\r\n if (!functionPointers[i]) {\r\n functionPointers[i] = func;\r\n return jsCallStartIndex + i;\r\n }\r\n }\r\n throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';\r\n}\r\n\r\nfunction removeFunction(index) {\r\n functionPointers[index-jsCallStartIndex] = null;\r\n}\r\n\r\nvar funcWrappers = {};\r\n\r\nfunction getFuncWrapper(func, sig) {\r\n if (!func) return; // on null pointer, return undefined\r\n assert(sig);\r\n if (!funcWrappers[sig]) {\r\n funcWrappers[sig] = {};\r\n }\r\n var sigCache = funcWrappers[sig];\r\n if (!sigCache[func]) {\r\n // optimize away arguments usage in common cases\r\n if (sig.length === 1) {\r\n sigCache[func] = function dynCall_wrapper() {\r\n return dynCall(sig, func);\r\n };\r\n } else if (sig.length === 2) {\r\n sigCache[func] = function dynCall_wrapper(arg) {\r\n return dynCall(sig, func, [arg]);\r\n };\r\n } else {\r\n // general case\r\n sigCache[func] = function dynCall_wrapper() {\r\n return dynCall(sig, func, Array.prototype.slice.call(arguments));\r\n };\r\n }\r\n }\r\n return sigCache[func];\r\n}\r\n\r\n\r\nfunction makeBigInt(low, high, unsigned) {\r\n return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0));\r\n}\r\n\r\nfunction dynCall(sig, ptr, args) {\r\n if (args && args.length) {\r\n return Module['dynCall_' + sig].apply(null, [ptr].concat(args));\r\n } else {\r\n return Module['dynCall_' + sig].call(null, ptr);\r\n }\r\n}\r\n\r\n\r\n\r\nvar Runtime = {\r\n // FIXME backwards compatibility layer for ports. Support some Runtime.*\r\n // for now, fix it there, then remove it from here. That way we\r\n // can minimize any period of breakage.\r\n dynCall: dynCall, // for SDL2 port\r\n};\r\n\r\n// The address globals begin at. Very low in memory, for code size and optimization opportunities.\r\n// Above 0 is static memory, starting with globals.\r\n// Then the stack.\r\n// Then 'dynamic' memory for sbrk.\r\nvar GLOBAL_BASE = 1024;\r\n\r\n\r\n// === Preamble library stuff ===\r\n\r\n// Documentation for the public APIs defined in this file must be updated in:\r\n// site/source/docs/api_reference/preamble.js.rst\r\n// A prebuilt local version of the documentation is available at:\r\n// site/build/text/docs/api_reference/preamble.js.txt\r\n// You can also build docs locally as HTML or other formats in site/\r\n// An online HTML version (which may be of a different version of Emscripten)\r\n// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html\r\n\r\n\r\n\r\n//========================================\r\n// Runtime essentials\r\n//========================================\r\n\r\nvar ABORT = 0; // whether we are quitting the application. no code should run after this. set in exit() and abort()\r\nvar EXITSTATUS = 0;\r\n\r\n/** @type {function(*, string=)} */\r\nfunction assert(condition, text) {\r\n if (!condition) {\r\n abort('Assertion failed: ' + text);\r\n }\r\n}\r\n\r\nvar globalScope = this;\r\n\r\n// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)\r\nfunction getCFunc(ident) {\r\n var func = Module['_' + ident]; // closure exported function\r\n assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported');\r\n return func;\r\n}\r\n\r\nvar JSfuncs = {\r\n // Helpers for cwrap -- it can't refer to Runtime directly because it might\r\n // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find\r\n // out what the minified function name is.\r\n 'stackSave': function() {\r\n stackSave()\r\n },\r\n 'stackRestore': function() {\r\n stackRestore()\r\n },\r\n // type conversion from js to c\r\n 'arrayToC' : function(arr) {\r\n var ret = stackAlloc(arr.length);\r\n writeArrayToMemory(arr, ret);\r\n return ret;\r\n },\r\n 'stringToC' : function(str) {\r\n var ret = 0;\r\n if (str !== null && str !== undefined && str !== 0) { // null string\r\n // at most 4 bytes per UTF-8 code point, +1 for the trailing '\\0'\r\n var len = (str.length << 2) + 1;\r\n ret = stackAlloc(len);\r\n stringToUTF8(str, ret, len);\r\n }\r\n return ret;\r\n }\r\n};\r\n\r\n// For fast lookup of conversion functions\r\nvar toC = {\r\n 'string': JSfuncs['stringToC'], 'array': JSfuncs['arrayToC']\r\n};\r\n\r\n\r\n// C calling interface.\r\nfunction ccall(ident, returnType, argTypes, args, opts) {\r\n function convertReturnValue(ret) {\r\n if (returnType === 'string') return Pointer_stringify(ret);\r\n if (returnType === 'boolean') return Boolean(ret);\r\n return ret;\r\n }\r\n\r\n var func = getCFunc(ident);\r\n var cArgs = [];\r\n var stack = 0;\r\n if (args) {\r\n for (var i = 0; i < args.length; i++) {\r\n var converter = toC[argTypes[i]];\r\n if (converter) {\r\n if (stack === 0) stack = stackSave();\r\n cArgs[i] = converter(args[i]);\r\n } else {\r\n cArgs[i] = args[i];\r\n }\r\n }\r\n }\r\n var ret = func.apply(null, cArgs);\r\n ret = convertReturnValue(ret);\r\n if (stack !== 0) stackRestore(stack);\r\n return ret;\r\n}\r\n\r\nfunction cwrap(ident, returnType, argTypes, opts) {\r\n argTypes = argTypes || [];\r\n // When the function takes numbers and returns a number, we can just return\r\n // the original function\r\n var numericArgs = argTypes.every(function(type){ return type === 'number'});\r\n var numericRet = returnType !== 'string';\r\n if (numericRet && numericArgs && !opts) {\r\n return getCFunc(ident);\r\n }\r\n return function() {\r\n return ccall(ident, returnType, argTypes, arguments, opts);\r\n }\r\n}\r\n\r\n/** @type {function(number, number, string, boolean=)} */\r\nfunction setValue(ptr, value, type, noSafe) {\r\n type = type || 'i8';\r\n if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\r\n switch(type) {\r\n case 'i1': HEAP8[((ptr)>>0)]=value; break;\r\n case 'i8': HEAP8[((ptr)>>0)]=value; break;\r\n case 'i16': HEAP16[((ptr)>>1)]=value; break;\r\n case 'i32': HEAP32[((ptr)>>2)]=value; break;\r\n case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;\r\n case 'float': HEAPF32[((ptr)>>2)]=value; break;\r\n case 'double': HEAPF64[((ptr)>>3)]=value; break;\r\n default: abort('invalid type for setValue: ' + type);\r\n }\r\n}\r\n\r\n/** @type {function(number, string, boolean=)} */\r\nfunction getValue(ptr, type, noSafe) {\r\n type = type || 'i8';\r\n if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\r\n switch(type) {\r\n case 'i1': return HEAP8[((ptr)>>0)];\r\n case 'i8': return HEAP8[((ptr)>>0)];\r\n case 'i16': return HEAP16[((ptr)>>1)];\r\n case 'i32': return HEAP32[((ptr)>>2)];\r\n case 'i64': return HEAP32[((ptr)>>2)];\r\n case 'float': return HEAPF32[((ptr)>>2)];\r\n case 'double': return HEAPF64[((ptr)>>3)];\r\n default: abort('invalid type for getValue: ' + type);\r\n }\r\n return null;\r\n}\r\n\r\nvar ALLOC_NORMAL = 0; // Tries to use _malloc()\r\nvar ALLOC_STACK = 1; // Lives for the duration of the current function call\r\nvar ALLOC_STATIC = 2; // Cannot be freed\r\nvar ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk\r\nvar ALLOC_NONE = 4; // Do not allocate\r\n\r\n// allocate(): This is for internal use. You can use it yourself as well, but the interface\r\n// is a little tricky (see docs right below). The reason is that it is optimized\r\n// for multiple syntaxes to save space in generated code. So you should\r\n// normally not use allocate(), and instead allocate memory using _malloc(),\r\n// initialize it with setValue(), and so forth.\r\n// @slab: An array of data, or a number. If a number, then the size of the block to allocate,\r\n// in *bytes* (note that this is sometimes confusing: the next parameter does not\r\n// affect this!)\r\n// @types: Either an array of types, one for each byte (or 0 if no type at that position),\r\n// or a single type which is used for the entire block. This only matters if there\r\n// is initial data - if @slab is a number, then this does not matter at all and is\r\n// ignored.\r\n// @allocator: How to allocate memory, see ALLOC_*\r\n/** @type {function((TypedArray|Array|number), string, number, number=)} */\r\nfunction allocate(slab, types, allocator, ptr) {\r\n var zeroinit, size;\r\n if (typeof slab === 'number') {\r\n zeroinit = true;\r\n size = slab;\r\n } else {\r\n zeroinit = false;\r\n size = slab.length;\r\n }\r\n\r\n var singleType = typeof types === 'string' ? types : null;\r\n\r\n var ret;\r\n if (allocator == ALLOC_NONE) {\r\n ret = ptr;\r\n } else {\r\n ret = [typeof _malloc === 'function' ? _malloc : staticAlloc, stackAlloc, staticAlloc, dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));\r\n }\r\n\r\n if (zeroinit) {\r\n var stop;\r\n ptr = ret;\r\n assert((ret & 3) == 0);\r\n stop = ret + (size & ~3);\r\n for (; ptr < stop; ptr += 4) {\r\n HEAP32[((ptr)>>2)]=0;\r\n }\r\n stop = ret + size;\r\n while (ptr < stop) {\r\n HEAP8[((ptr++)>>0)]=0;\r\n }\r\n return ret;\r\n }\r\n\r\n if (singleType === 'i8') {\r\n if (slab.subarray || slab.slice) {\r\n HEAPU8.set(/** @type {!Uint8Array} */ (slab), ret);\r\n } else {\r\n HEAPU8.set(new Uint8Array(slab), ret);\r\n }\r\n return ret;\r\n }\r\n\r\n var i = 0, type, typeSize, previousType;\r\n while (i < size) {\r\n var curr = slab[i];\r\n\r\n type = singleType || types[i];\r\n if (type === 0) {\r\n i++;\r\n continue;\r\n }\r\n\r\n if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later\r\n\r\n setValue(ret+i, curr, type);\r\n\r\n // no need to look up size unless type changes, so cache it\r\n if (previousType !== type) {\r\n typeSize = getNativeTypeSize(type);\r\n previousType = type;\r\n }\r\n i += typeSize;\r\n }\r\n\r\n return ret;\r\n}\r\n\r\n// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready\r\nfunction getMemory(size) {\r\n if (!staticSealed) return staticAlloc(size);\r\n if (!runtimeInitialized) return dynamicAlloc(size);\r\n return _malloc(size);\r\n}\r\n\r\n/** @type {function(number, number=)} */\r\nfunction Pointer_stringify(ptr, length) {\r\n if (length === 0 || !ptr) return '';\r\n // Find the length, and check for UTF while doing so\r\n var hasUtf = 0;\r\n var t;\r\n var i = 0;\r\n while (1) {\r\n t = HEAPU8[(((ptr)+(i))>>0)];\r\n hasUtf |= t;\r\n if (t == 0 && !length) break;\r\n i++;\r\n if (length && i == length) break;\r\n }\r\n if (!length) length = i;\r\n\r\n var ret = '';\r\n\r\n if (hasUtf < 128) {\r\n var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack\r\n var curr;\r\n while (length > 0) {\r\n curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));\r\n ret = ret ? ret + curr : curr;\r\n ptr += MAX_CHUNK;\r\n length -= MAX_CHUNK;\r\n }\r\n return ret;\r\n }\r\n return UTF8ToString(ptr);\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nfunction AsciiToString(ptr) {\r\n var str = '';\r\n while (1) {\r\n var ch = HEAP8[((ptr++)>>0)];\r\n if (!ch) return str;\r\n str += String.fromCharCode(ch);\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP.\r\n\r\nfunction stringToAscii(str, outPtr) {\r\n return writeAsciiToMemory(str, outPtr, false);\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nvar UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined;\r\nfunction UTF8ArrayToString(u8Array, idx) {\r\n var endPtr = idx;\r\n // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.\r\n // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.\r\n while (u8Array[endPtr]) ++endPtr;\r\n\r\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\r\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\r\n } else {\r\n var u0, u1, u2, u3, u4, u5;\r\n\r\n var str = '';\r\n while (1) {\r\n // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\r\n u0 = u8Array[idx++];\r\n if (!u0) return str;\r\n if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; }\r\n u1 = u8Array[idx++] & 63;\r\n if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; }\r\n u2 = u8Array[idx++] & 63;\r\n if ((u0 & 0xF0) == 0xE0) {\r\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\r\n } else {\r\n u3 = u8Array[idx++] & 63;\r\n if ((u0 & 0xF8) == 0xF0) {\r\n u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;\r\n } else {\r\n u4 = u8Array[idx++] & 63;\r\n if ((u0 & 0xFC) == 0xF8) {\r\n u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;\r\n } else {\r\n u5 = u8Array[idx++] & 63;\r\n u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;\r\n }\r\n }\r\n }\r\n if (u0 < 0x10000) {\r\n str += String.fromCharCode(u0);\r\n } else {\r\n var ch = u0 - 0x10000;\r\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nfunction UTF8ToString(ptr) {\r\n return UTF8ArrayToString(HEAPU8,ptr);\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx',\r\n// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element.\r\n// outIdx: The starting offset in the array to begin the copying.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array.\r\n// This count should include the null terminator,\r\n// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\r\n if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes.\r\n return 0;\r\n\r\n var startIdx = outIdx;\r\n var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator.\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\r\n var u = str.charCodeAt(i); // possibly a lead surrogate\r\n if (u >= 0xD800 && u <= 0xDFFF) {\r\n var u1 = str.charCodeAt(++i);\r\n u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF);\r\n }\r\n if (u <= 0x7F) {\r\n if (outIdx >= endIdx) break;\r\n outU8Array[outIdx++] = u;\r\n } else if (u <= 0x7FF) {\r\n if (outIdx + 1 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xC0 | (u >> 6);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0xFFFF) {\r\n if (outIdx + 2 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xE0 | (u >> 12);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0x1FFFFF) {\r\n if (outIdx + 3 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xF0 | (u >> 18);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else if (u <= 0x3FFFFFF) {\r\n if (outIdx + 4 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xF8 | (u >> 24);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n } else {\r\n if (outIdx + 5 >= endIdx) break;\r\n outU8Array[outIdx++] = 0xFC | (u >> 30);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\r\n outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\r\n outU8Array[outIdx++] = 0x80 | (u & 63);\r\n }\r\n }\r\n // Null-terminate the pointer to the buffer.\r\n outU8Array[outIdx] = 0;\r\n return outIdx - startIdx;\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\r\n return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite);\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF8(str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var u = str.charCodeAt(i); // possibly a lead surrogate\r\n if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\r\n if (u <= 0x7F) {\r\n ++len;\r\n } else if (u <= 0x7FF) {\r\n len += 2;\r\n } else if (u <= 0xFFFF) {\r\n len += 3;\r\n } else if (u <= 0x1FFFFF) {\r\n len += 4;\r\n } else if (u <= 0x3FFFFFF) {\r\n len += 5;\r\n } else {\r\n len += 6;\r\n }\r\n }\r\n return len;\r\n}\r\n\r\n// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns\r\n// a copy of that string as a Javascript String object.\r\n\r\nvar UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined;\r\nfunction UTF16ToString(ptr) {\r\n var endPtr = ptr;\r\n // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.\r\n // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.\r\n var idx = endPtr >> 1;\r\n while (HEAP16[idx]) ++idx;\r\n endPtr = idx << 1;\r\n\r\n if (endPtr - ptr > 32 && UTF16Decoder) {\r\n return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));\r\n } else {\r\n var i = 0;\r\n\r\n var str = '';\r\n while (1) {\r\n var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];\r\n if (codeUnit == 0) return str;\r\n ++i;\r\n // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.\r\n str += String.fromCharCode(codeUnit);\r\n }\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outPtr: Byte address in Emscripten HEAP where to write the string to.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null\r\n// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF16(str, outPtr, maxBytesToWrite) {\r\n // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\r\n if (maxBytesToWrite === undefined) {\r\n maxBytesToWrite = 0x7FFFFFFF;\r\n }\r\n if (maxBytesToWrite < 2) return 0;\r\n maxBytesToWrite -= 2; // Null terminator.\r\n var startPtr = outPtr;\r\n var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length;\r\n for (var i = 0; i < numCharsToWrite; ++i) {\r\n // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.\r\n var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\r\n HEAP16[((outPtr)>>1)]=codeUnit;\r\n outPtr += 2;\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n HEAP16[((outPtr)>>1)]=0;\r\n return outPtr - startPtr;\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF16(str) {\r\n return str.length*2;\r\n}\r\n\r\nfunction UTF32ToString(ptr) {\r\n var i = 0;\r\n\r\n var str = '';\r\n while (1) {\r\n var utf32 = HEAP32[(((ptr)+(i*4))>>2)];\r\n if (utf32 == 0)\r\n return str;\r\n ++i;\r\n // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n if (utf32 >= 0x10000) {\r\n var ch = utf32 - 0x10000;\r\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\r\n } else {\r\n str += String.fromCharCode(utf32);\r\n }\r\n }\r\n}\r\n\r\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\r\n// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP.\r\n// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write.\r\n// Parameters:\r\n// str: the Javascript string to copy.\r\n// outPtr: Byte address in Emscripten HEAP where to write the string to.\r\n// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null\r\n// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else.\r\n// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator.\r\n// Returns the number of bytes written, EXCLUDING the null terminator.\r\n\r\nfunction stringToUTF32(str, outPtr, maxBytesToWrite) {\r\n // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\r\n if (maxBytesToWrite === undefined) {\r\n maxBytesToWrite = 0x7FFFFFFF;\r\n }\r\n if (maxBytesToWrite < 4) return 0;\r\n var startPtr = outPtr;\r\n var endPtr = startPtr + maxBytesToWrite - 4;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\r\n if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {\r\n var trailSurrogate = str.charCodeAt(++i);\r\n codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);\r\n }\r\n HEAP32[((outPtr)>>2)]=codeUnit;\r\n outPtr += 4;\r\n if (outPtr + 4 > endPtr) break;\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n HEAP32[((outPtr)>>2)]=0;\r\n return outPtr - startPtr;\r\n}\r\n\r\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\r\n\r\nfunction lengthBytesUTF32(str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\r\n // See http://unicode.org/faq/utf_bom.html#utf16-3\r\n var codeUnit = str.charCodeAt(i);\r\n if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate.\r\n len += 4;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n// Allocate heap space for a JS string, and write it there.\r\n// It is the responsibility of the caller to free() that memory.\r\nfunction allocateUTF8(str) {\r\n var size = lengthBytesUTF8(str) + 1;\r\n var ret = _malloc(size);\r\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\r\n return ret;\r\n}\r\n\r\n// Allocate stack space for a JS string, and write it there.\r\nfunction allocateUTF8OnStack(str) {\r\n var size = lengthBytesUTF8(str) + 1;\r\n var ret = stackAlloc(size);\r\n stringToUTF8Array(str, HEAP8, ret, size);\r\n return ret;\r\n}\r\n\r\nfunction demangle(func) {\r\n return func;\r\n}\r\n\r\nfunction demangleAll(text) {\r\n var regex =\r\n /__Z[\\w\\d_]+/g;\r\n return text.replace(regex,\r\n function(x) {\r\n var y = demangle(x);\r\n return x === y ? x : (x + ' [' + y + ']');\r\n });\r\n}\r\n\r\nfunction jsStackTrace() {\r\n var err = new Error();\r\n if (!err.stack) {\r\n // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,\r\n // so try that as a special-case.\r\n try {\r\n throw new Error(0);\r\n } catch(e) {\r\n err = e;\r\n }\r\n if (!err.stack) {\r\n return '(no stack trace available)';\r\n }\r\n }\r\n return err.stack.toString();\r\n}\r\n\r\nfunction stackTrace() {\r\n var js = jsStackTrace();\r\n if (Module['extraStackTrace']) js += '\\n' + Module['extraStackTrace']();\r\n return demangleAll(js);\r\n}\r\n\r\n// Memory management\r\n\r\nvar PAGE_SIZE = 16384;\r\nvar WASM_PAGE_SIZE = 65536;\r\nvar ASMJS_PAGE_SIZE = 16777216;\r\nvar MIN_TOTAL_MEMORY = 16777216;\r\n\r\nfunction alignUp(x, multiple) {\r\n if (x % multiple > 0) {\r\n x += multiple - (x % multiple);\r\n }\r\n return x;\r\n}\r\n\r\nvar HEAP,\r\n/** @type {ArrayBuffer} */\r\n buffer,\r\n/** @type {Int8Array} */\r\n HEAP8,\r\n/** @type {Uint8Array} */\r\n HEAPU8,\r\n/** @type {Int16Array} */\r\n HEAP16,\r\n/** @type {Uint16Array} */\r\n HEAPU16,\r\n/** @type {Int32Array} */\r\n HEAP32,\r\n/** @type {Uint32Array} */\r\n HEAPU32,\r\n/** @type {Float32Array} */\r\n HEAPF32,\r\n/** @type {Float64Array} */\r\n HEAPF64;\r\n\r\nfunction updateGlobalBuffer(buf) {\r\n Module['buffer'] = buffer = buf;\r\n}\r\n\r\nfunction updateGlobalBufferViews() {\r\n Module['HEAP8'] = HEAP8 = new Int8Array(buffer);\r\n Module['HEAP16'] = HEAP16 = new Int16Array(buffer);\r\n Module['HEAP32'] = HEAP32 = new Int32Array(buffer);\r\n Module['HEAPU8'] = HEAPU8 = new Uint8Array(buffer);\r\n Module['HEAPU16'] = HEAPU16 = new Uint16Array(buffer);\r\n Module['HEAPU32'] = HEAPU32 = new Uint32Array(buffer);\r\n Module['HEAPF32'] = HEAPF32 = new Float32Array(buffer);\r\n Module['HEAPF64'] = HEAPF64 = new Float64Array(buffer);\r\n}\r\n\r\nvar STATIC_BASE, STATICTOP, staticSealed; // static area\r\nvar STACK_BASE, STACKTOP, STACK_MAX; // stack area\r\nvar DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk\r\n\r\n STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;\r\n staticSealed = false;\r\n\r\n\r\n\r\n\r\nfunction abortOnCannotGrowMemory() {\r\n 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, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ');\r\n}\r\n\r\nif (!Module['reallocBuffer']) Module['reallocBuffer'] = function(size) {\r\n var ret;\r\n try {\r\n if (ArrayBuffer.transfer) {\r\n ret = ArrayBuffer.transfer(buffer, size);\r\n } else {\r\n var oldHEAP8 = HEAP8;\r\n ret = new ArrayBuffer(size);\r\n var temp = new Int8Array(ret);\r\n temp.set(oldHEAP8);\r\n }\r\n } catch(e) {\r\n return false;\r\n }\r\n var success = _emscripten_replace_memory(ret);\r\n if (!success) return false;\r\n return ret;\r\n};\r\n\r\nfunction enlargeMemory() {\r\n // TOTAL_MEMORY is the current size of the actual array, and DYNAMICTOP is the new top.\r\n\r\n\r\n var PAGE_MULTIPLE = Module[\"usingWasm\"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.\r\n var LIMIT = 2147483648 - PAGE_MULTIPLE; // We can do one page short of 2GB as theoretical maximum.\r\n\r\n if (HEAP32[DYNAMICTOP_PTR>>2] > LIMIT) {\r\n return false;\r\n }\r\n\r\n var OLD_TOTAL_MEMORY = TOTAL_MEMORY;\r\n TOTAL_MEMORY = Math.max(TOTAL_MEMORY, MIN_TOTAL_MEMORY); // So the loop below will not be infinite, and minimum asm.js memory size is 16MB.\r\n\r\n while (TOTAL_MEMORY < HEAP32[DYNAMICTOP_PTR>>2]) { // Keep incrementing the heap size as long as it's less than what is requested.\r\n if (TOTAL_MEMORY <= 536870912) {\r\n TOTAL_MEMORY = alignUp(2 * TOTAL_MEMORY, PAGE_MULTIPLE); // Simple heuristic: double until 1GB...\r\n } else {\r\n // ..., but after that, add smaller increments towards 2GB, which we cannot reach\r\n TOTAL_MEMORY = Math.min(alignUp((3 * TOTAL_MEMORY + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\r\n }\r\n }\r\n\r\n\r\n var replacement = Module['reallocBuffer'](TOTAL_MEMORY);\r\n if (!replacement || replacement.byteLength != TOTAL_MEMORY) {\r\n // restore the state to before this call, we failed\r\n TOTAL_MEMORY = OLD_TOTAL_MEMORY;\r\n return false;\r\n }\r\n\r\n // everything worked\r\n\r\n updateGlobalBuffer(replacement);\r\n updateGlobalBufferViews();\r\n\r\n\r\n\r\n return true;\r\n}\r\n\r\nvar byteLength;\r\ntry {\r\n byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get);\r\n byteLength(new ArrayBuffer(4)); // can fail on older ie\r\n} catch(e) { // can fail on older node/v8\r\n byteLength = function(buffer) { return buffer.byteLength; };\r\n}\r\n\r\nvar TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;\r\nvar TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728;\r\nif (TOTAL_MEMORY < TOTAL_STACK) err('TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')');\r\n\r\n// Initialize the runtime's memory\r\n\r\n\r\n\r\n// Use a provided buffer, if there is one, or else allocate a new one\r\nif (Module['buffer']) {\r\n buffer = Module['buffer'];\r\n} else {\r\n // Use a WebAssembly memory where available\r\n if (typeof WebAssembly === 'object' && typeof WebAssembly.Memory === 'function') {\r\n Module['wasmMemory'] = new WebAssembly.Memory({ 'initial': TOTAL_MEMORY / WASM_PAGE_SIZE });\r\n buffer = Module['wasmMemory'].buffer;\r\n } else\r\n {\r\n buffer = new ArrayBuffer(TOTAL_MEMORY);\r\n }\r\n Module['buffer'] = buffer;\r\n}\r\nupdateGlobalBufferViews();\r\n\r\n\r\nfunction getTotalMemory() {\r\n return TOTAL_MEMORY;\r\n}\r\n\r\n// Endianness check (note: assumes compiler arch was little-endian)\r\n\r\nfunction callRuntimeCallbacks(callbacks) {\r\n while(callbacks.length > 0) {\r\n var callback = callbacks.shift();\r\n if (typeof callback == 'function') {\r\n callback();\r\n continue;\r\n }\r\n var func = callback.func;\r\n if (typeof func === 'number') {\r\n if (callback.arg === undefined) {\r\n Module['dynCall_v'](func);\r\n } else {\r\n Module['dynCall_vi'](func, callback.arg);\r\n }\r\n } else {\r\n func(callback.arg === undefined ? null : callback.arg);\r\n }\r\n }\r\n}\r\n\r\nvar __ATPRERUN__ = []; // functions called before the runtime is initialized\r\nvar __ATINIT__ = []; // functions called during startup\r\nvar __ATMAIN__ = []; // functions called when main() is to be run\r\nvar __ATEXIT__ = []; // functions called during shutdown\r\nvar __ATPOSTRUN__ = []; // functions called after the main() is called\r\n\r\nvar runtimeInitialized = false;\r\nvar runtimeExited = false;\r\n\r\n\r\nfunction preRun() {\r\n // compatibility - merge in anything from Module['preRun'] at this time\r\n if (Module['preRun']) {\r\n if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];\r\n while (Module['preRun'].length) {\r\n addOnPreRun(Module['preRun'].shift());\r\n }\r\n }\r\n callRuntimeCallbacks(__ATPRERUN__);\r\n}\r\n\r\nfunction ensureInitRuntime() {\r\n if (runtimeInitialized) return;\r\n runtimeInitialized = true;\r\n callRuntimeCallbacks(__ATINIT__);\r\n}\r\n\r\nfunction preMain() {\r\n callRuntimeCallbacks(__ATMAIN__);\r\n}\r\n\r\nfunction exitRuntime() {\r\n callRuntimeCallbacks(__ATEXIT__);\r\n runtimeExited = true;\r\n}\r\n\r\nfunction postRun() {\r\n // compatibility - merge in anything from Module['postRun'] at this time\r\n if (Module['postRun']) {\r\n if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];\r\n while (Module['postRun'].length) {\r\n addOnPostRun(Module['postRun'].shift());\r\n }\r\n }\r\n callRuntimeCallbacks(__ATPOSTRUN__);\r\n}\r\n\r\nfunction addOnPreRun(cb) {\r\n __ATPRERUN__.unshift(cb);\r\n}\r\n\r\nfunction addOnInit(cb) {\r\n __ATINIT__.unshift(cb);\r\n}\r\n\r\nfunction addOnPreMain(cb) {\r\n __ATMAIN__.unshift(cb);\r\n}\r\n\r\nfunction addOnExit(cb) {\r\n __ATEXIT__.unshift(cb);\r\n}\r\n\r\nfunction addOnPostRun(cb) {\r\n __ATPOSTRUN__.unshift(cb);\r\n}\r\n\r\n// Deprecated: This function should not be called because it is unsafe and does not provide\r\n// a maximum length limit of how many bytes it is allowed to write. Prefer calling the\r\n// function stringToUTF8Array() instead, which takes in a maximum length that can be used\r\n// to be secure from out of bounds writes.\r\n/** @deprecated */\r\nfunction writeStringToMemory(string, buffer, dontAddNull) {\r\n warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!');\r\n\r\n var /** @type {number} */ lastChar, /** @type {number} */ end;\r\n if (dontAddNull) {\r\n // stringToUTF8Array always appends null. If we don't want to do that, remember the\r\n // character that existed at the location where the null will be placed, and restore\r\n // that after the write (below).\r\n end = buffer + lengthBytesUTF8(string);\r\n lastChar = HEAP8[end];\r\n }\r\n stringToUTF8(string, buffer, Infinity);\r\n if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character.\r\n}\r\n\r\nfunction writeArrayToMemory(array, buffer) {\r\n HEAP8.set(array, buffer);\r\n}\r\n\r\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\r\n for (var i = 0; i < str.length; ++i) {\r\n HEAP8[((buffer++)>>0)]=str.charCodeAt(i);\r\n }\r\n // Null-terminate the pointer to the HEAP.\r\n if (!dontAddNull) HEAP8[((buffer)>>0)]=0;\r\n}\r\n\r\nfunction unSign(value, bits, ignore) {\r\n if (value >= 0) {\r\n return value;\r\n }\r\n return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts\r\n : Math.pow(2, bits) + value;\r\n}\r\nfunction reSign(value, bits, ignore) {\r\n if (value <= 0) {\r\n return value;\r\n }\r\n var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32\r\n : Math.pow(2, bits-1);\r\n if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that\r\n // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors\r\n // TODO: In i64 mode 1, resign the two parts separately and safely\r\n value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts\r\n }\r\n return value;\r\n}\r\n\r\n\r\nvar Math_abs = Math.abs;\r\nvar Math_cos = Math.cos;\r\nvar Math_sin = Math.sin;\r\nvar Math_tan = Math.tan;\r\nvar Math_acos = Math.acos;\r\nvar Math_asin = Math.asin;\r\nvar Math_atan = Math.atan;\r\nvar Math_atan2 = Math.atan2;\r\nvar Math_exp = Math.exp;\r\nvar Math_log = Math.log;\r\nvar Math_sqrt = Math.sqrt;\r\nvar Math_ceil = Math.ceil;\r\nvar Math_floor = Math.floor;\r\nvar Math_pow = Math.pow;\r\nvar Math_imul = Math.imul;\r\nvar Math_fround = Math.fround;\r\nvar Math_round = Math.round;\r\nvar Math_min = Math.min;\r\nvar Math_max = Math.max;\r\nvar Math_clz32 = Math.clz32;\r\nvar Math_trunc = Math.trunc;\r\n\r\n// A counter of dependencies for calling run(). If we need to\r\n// do asynchronous work before running, increment this and\r\n// decrement it. Incrementing must happen in a place like\r\n// PRE_RUN_ADDITIONS (used by emcc to add file preloading).\r\n// Note that you can add dependencies in preRun, even though\r\n// it happens right before run - run will be postponed until\r\n// the dependencies are met.\r\nvar runDependencies = 0;\r\nvar runDependencyWatcher = null;\r\nvar dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled\r\n\r\nfunction getUniqueRunDependency(id) {\r\n return id;\r\n}\r\n\r\nfunction addRunDependency(id) {\r\n runDependencies++;\r\n if (Module['monitorRunDependencies']) {\r\n Module['monitorRunDependencies'](runDependencies);\r\n }\r\n}\r\n\r\nfunction removeRunDependency(id) {\r\n runDependencies--;\r\n if (Module['monitorRunDependencies']) {\r\n Module['monitorRunDependencies'](runDependencies);\r\n }\r\n if (runDependencies == 0) {\r\n if (runDependencyWatcher !== null) {\r\n clearInterval(runDependencyWatcher);\r\n runDependencyWatcher = null;\r\n }\r\n if (dependenciesFulfilled) {\r\n var callback = dependenciesFulfilled;\r\n dependenciesFulfilled = null;\r\n callback(); // can add another dependenciesFulfilled\r\n }\r\n }\r\n}\r\n\r\nModule[\"preloadedImages\"] = {}; // maps url to image data\r\nModule[\"preloadedAudios\"] = {}; // maps url to audio data\r\n\r\n\r\n\r\nvar memoryInitializer = null;\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Prefix of data URIs emitted by SINGLE_FILE and related options.\r\nvar dataURIPrefix = 'data:application/octet-stream;base64,';\r\n\r\n// Indicates whether filename is a base64 data URI.\r\nfunction isDataURI(filename) {\r\n return String.prototype.startsWith ?\r\n filename.startsWith(dataURIPrefix) :\r\n filename.indexOf(dataURIPrefix) === 0;\r\n}\r\n\r\n\r\n\r\n\r\nfunction integrateWasmJS() {\r\n // wasm.js has several methods for creating the compiled code module here:\r\n // * 'native-wasm' : use native WebAssembly support in the browser\r\n // * 'interpret-s-expr': load s-expression code from a .wast and interpret\r\n // * 'interpret-binary': load binary wasm and interpret\r\n // * 'interpret-asm2wasm': load asm.js code, translate to wasm, and interpret\r\n // * 'asmjs': no wasm, just load the asm.js code and use that (good for testing)\r\n // The method is set at compile time (BINARYEN_METHOD)\r\n // The method can be a comma-separated list, in which case, we will try the\r\n // options one by one. Some of them can fail gracefully, and then we can try\r\n // the next.\r\n\r\n // inputs\r\n\r\n var method = 'native-wasm';\r\n\r\n var wasmTextFile = 'DiabloSpawn.wast';\r\n var wasmBinaryFile = 'DiabloSpawn.wasm';\r\n var asmjsCodeFile = 'DiabloSpawn.temp.asm.js';\r\n\r\n if (!isDataURI(wasmTextFile)) {\r\n wasmTextFile = locateFile(wasmTextFile);\r\n }\r\n if (!isDataURI(wasmBinaryFile)) {\r\n wasmBinaryFile = locateFile(wasmBinaryFile);\r\n }\r\n if (!isDataURI(asmjsCodeFile)) {\r\n asmjsCodeFile = locateFile(asmjsCodeFile);\r\n }\r\n\r\n // utilities\r\n\r\n var wasmPageSize = 64*1024;\r\n\r\n var info = {\r\n 'global': null,\r\n 'env': null,\r\n 'asm2wasm': asm2wasmImports,\r\n 'parent': Module // Module inside wasm-js.cpp refers to wasm-js.cpp; this allows access to the outside program.\r\n };\r\n\r\n var exports = null;\r\n\r\n\r\n function mergeMemory(newBuffer) {\r\n // The wasm instance creates its memory. But static init code might have written to\r\n // buffer already, including the mem init file, and we must copy it over in a proper merge.\r\n // TODO: avoid this copy, by avoiding such static init writes\r\n // TODO: in shorter term, just copy up to the last static init write\r\n var oldBuffer = Module['buffer'];\r\n if (newBuffer.byteLength < oldBuffer.byteLength) {\r\n err('the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here');\r\n }\r\n var oldView = new Int8Array(oldBuffer);\r\n var newView = new Int8Array(newBuffer);\r\n\r\n\r\n newView.set(oldView);\r\n updateGlobalBuffer(newBuffer);\r\n updateGlobalBufferViews();\r\n }\r\n\r\n function fixImports(imports) {\r\n return imports;\r\n }\r\n\r\n function getBinary() {\r\n try {\r\n if (Module['wasmBinary']) {\r\n return new Uint8Array(Module['wasmBinary']);\r\n }\r\n if (Module['readBinary']) {\r\n return Module['readBinary'](wasmBinaryFile);\r\n } else {\r\n throw \"both async and sync fetching of the wasm failed\";\r\n }\r\n }\r\n catch (err) {\r\n abort(err);\r\n }\r\n }\r\n\r\n function getBinaryPromise() {\r\n // if we don't have the binary yet, and have the Fetch api, use that\r\n // in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web\r\n if (!Module['wasmBinary'] && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function') {\r\n return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) {\r\n if (!response['ok']) {\r\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\r\n }\r\n return response['arrayBuffer']();\r\n }).catch(function () {\r\n return getBinary();\r\n });\r\n }\r\n // Otherwise, getBinary should be able to get it synchronously\r\n return new Promise(function(resolve, reject) {\r\n resolve(getBinary());\r\n });\r\n }\r\n\r\n // do-method functions\r\n\r\n\r\n function doNativeWasm(global, env, providedBuffer) {\r\n if (typeof WebAssembly !== 'object') {\r\n err('no native wasm support detected');\r\n return false;\r\n }\r\n // prepare memory import\r\n if (!(Module['wasmMemory'] instanceof WebAssembly.Memory)) {\r\n err('no native wasm Memory in use');\r\n return false;\r\n }\r\n env['memory'] = Module['wasmMemory'];\r\n // Load the wasm module and create an instance of using native support in the JS engine.\r\n info['global'] = {\r\n 'NaN': NaN,\r\n 'Infinity': Infinity\r\n };\r\n info['global.Math'] = Math;\r\n info['env'] = env;\r\n // handle a generated wasm instance, receiving its exports and\r\n // performing other necessary setup\r\n function receiveInstance(instance, module) {\r\n exports = instance.exports;\r\n if (exports.memory) mergeMemory(exports.memory);\r\n Module['asm'] = exports;\r\n Module[\"usingWasm\"] = true;\r\n removeRunDependency('wasm-instantiate');\r\n }\r\n addRunDependency('wasm-instantiate');\r\n\r\n // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback\r\n // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel\r\n // to any other async startup actions they are performing.\r\n if (Module['instantiateWasm']) {\r\n try {\r\n return Module['instantiateWasm'](info, receiveInstance);\r\n } catch(e) {\r\n err('Module.instantiateWasm callback failed with error: ' + e);\r\n return false;\r\n }\r\n }\r\n\r\n function receiveInstantiatedSource(output) {\r\n // 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance.\r\n // receiveInstance() will swap in the exports (to Module.asm) so they can be called\r\n receiveInstance(output['instance'], output['module']);\r\n }\r\n function instantiateArrayBuffer(receiver) {\r\n getBinaryPromise().then(function(binary) {\r\n return WebAssembly.instantiate(binary, info);\r\n }).then(receiver).catch(function(reason) {\r\n err('failed to asynchronously prepare wasm: ' + reason);\r\n abort(reason);\r\n });\r\n }\r\n // Prefer streaming instantiation if available.\r\n if (!Module['wasmBinary'] &&\r\n typeof WebAssembly.instantiateStreaming === 'function' &&\r\n !isDataURI(wasmBinaryFile) &&\r\n typeof fetch === 'function') {\r\n WebAssembly.instantiateStreaming(fetch(wasmBinaryFile, { credentials: 'same-origin' }), info)\r\n .then(receiveInstantiatedSource)\r\n .catch(function(reason) {\r\n // We expect the most common failure cause to be a bad MIME type for the binary,\r\n // in which case falling back to ArrayBuffer instantiation should work.\r\n err('wasm streaming compile failed: ' + reason);\r\n err('falling back to ArrayBuffer instantiation');\r\n instantiateArrayBuffer(receiveInstantiatedSource);\r\n });\r\n } else {\r\n instantiateArrayBuffer(receiveInstantiatedSource);\r\n }\r\n return {}; // no exports yet; we'll fill them in later\r\n }\r\n\r\n\r\n // We may have a preloaded value in Module.asm, save it\r\n Module['asmPreload'] = Module['asm'];\r\n\r\n // Memory growth integration code\r\n\r\n var asmjsReallocBuffer = Module['reallocBuffer'];\r\n\r\n var wasmReallocBuffer = function(size) {\r\n var PAGE_MULTIPLE = Module[\"usingWasm\"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.\r\n size = alignUp(size, PAGE_MULTIPLE); // round up to wasm page size\r\n var old = Module['buffer'];\r\n var oldSize = old.byteLength;\r\n if (Module[\"usingWasm\"]) {\r\n // native wasm support\r\n try {\r\n var result = Module['wasmMemory'].grow((size - oldSize) / wasmPageSize); // .grow() takes a delta compared to the previous size\r\n if (result !== (-1 | 0)) {\r\n // success in native wasm memory growth, get the buffer from the memory\r\n return Module['buffer'] = Module['wasmMemory'].buffer;\r\n } else {\r\n return null;\r\n }\r\n } catch(e) {\r\n return null;\r\n }\r\n }\r\n };\r\n\r\n Module['reallocBuffer'] = function(size) {\r\n if (finalMethod === 'asmjs') {\r\n return asmjsReallocBuffer(size);\r\n } else {\r\n return wasmReallocBuffer(size);\r\n }\r\n };\r\n\r\n // we may try more than one; this is the final one, that worked and we are using\r\n var finalMethod = '';\r\n\r\n // Provide an \"asm.js function\" for the application, called to \"link\" the asm.js module. We instantiate\r\n // the wasm module at that time, and it receives imports and provides exports and so forth, the app\r\n // doesn't need to care that it is wasm or olyfilled wasm or asm.js.\r\n\r\n Module['asm'] = function(global, env, providedBuffer) {\r\n env = fixImports(env);\r\n\r\n // import table\r\n if (!env['table']) {\r\n var TABLE_SIZE = Module['wasmTableSize'];\r\n if (TABLE_SIZE === undefined) TABLE_SIZE = 1024; // works in binaryen interpreter at least\r\n var MAX_TABLE_SIZE = Module['wasmMaxTableSize'];\r\n if (typeof WebAssembly === 'object' && typeof WebAssembly.Table === 'function') {\r\n if (MAX_TABLE_SIZE !== undefined) {\r\n env['table'] = new WebAssembly.Table({ 'initial': TABLE_SIZE, 'maximum': MAX_TABLE_SIZE, 'element': 'anyfunc' });\r\n } else {\r\n env['table'] = new WebAssembly.Table({ 'initial': TABLE_SIZE, element: 'anyfunc' });\r\n }\r\n } else {\r\n env['table'] = new Array(TABLE_SIZE); // works in binaryen interpreter at least\r\n }\r\n Module['wasmTable'] = env['table'];\r\n }\r\n\r\n if (!env['memoryBase']) {\r\n env['memoryBase'] = Module['STATIC_BASE']; // tell the memory segments where to place themselves\r\n }\r\n if (!env['tableBase']) {\r\n env['tableBase'] = 0; // table starts at 0 by default, in dynamic linking this will change\r\n }\r\n\r\n // try the methods. each should return the exports if it succeeded\r\n\r\n var exports;\r\n exports = doNativeWasm(global, env, providedBuffer);\r\n\r\n assert(exports, 'no binaryen method succeeded.');\r\n\r\n\r\n return exports;\r\n };\r\n\r\n var methodHandler = Module['asm']; // note our method handler, as we may modify Module['asm'] later\r\n}\r\n\r\nintegrateWasmJS();\r\n\r\n// === Body ===\r\n\r\nvar ASM_CONSTS = [function($0) { self.DApi.current_save_id($0); }];\r\n\r\nfunction _emscripten_asm_const_ii(code, a0) {\r\n return ASM_CONSTS[code](a0);\r\n}\r\nfunction __api_close_keyboard(){ self.DApi.close_keyboard(); }\r\nfunction __api_open_keyboard(x0,y0,x1,y1,len){ self.DApi.open_keyboard(x0, y0, x1, y1, len); }\r\nfunction _api_create_sound(id,ptr,size){ self.DApi.create_sound(id, HEAPU8.slice(ptr, ptr + size)); }\r\nfunction _api_create_sound_float(id,ptr,samples,channels,rate){ self.DApi.create_sound_raw(id, HEAPF32.slice(ptr / 4, ptr / 4 + samples * channels), samples, channels, rate); }\r\nfunction _api_delete_sound(id){ self.DApi.delete_sound(id); }\r\nfunction _api_draw_begin(){ self.DApi.draw_begin(); }\r\nfunction _api_draw_belt(items){ self.DApi.draw_belt(HEAP32.subarray(items / 4, items / 4 + 8)); }\r\nfunction _api_draw_blit(x,y,w,h,ptr){ self.DApi.draw_blit(x, y, w, h, HEAPU8.subarray(ptr, ptr + w * h * 4)); }\r\nfunction _api_draw_clip_text(x0,y0,x1,y1){ self.DApi.draw_clip_text(x0, y0, x1, y1); }\r\nfunction _api_draw_end(){ self.DApi.draw_end(); }\r\nfunction _api_draw_text(x,y,ptr,color){ var end = HEAPU8.indexOf(0, ptr); var text = String.fromCharCode.apply(null, HEAPU8.subarray(ptr, end)); self.DApi.draw_text(x, y, text, color); }\r\nfunction _api_duplicate_sound(id,srcId){ self.DApi.duplicate_sound(id, srcId); }\r\nfunction _api_exit_game(){ self.DApi.exit_game(); }\r\nfunction _api_play_sound(id,volume,pan,loop){ self.DApi.play_sound(id, volume, pan, loop); }\r\nfunction _api_set_cursor(x,y){ self.DApi.set_cursor(x, y); }\r\nfunction _api_set_volume(id,volume){ self.DApi.set_volume(id, volume); }\r\nfunction _api_stop_sound(id){ self.DApi.stop_sound(id); }\r\nfunction _api_websocket_closed(){ return self.DApi.websocket_closed(); }\r\nfunction _api_websocket_send(ptr,size){ self.DApi.websocket_send(HEAPU8.subarray(ptr, ptr + size)); }\r\nfunction _exit_error(err){ var end = HEAPU8.indexOf( 0, err ); var text = String.fromCharCode.apply(null, HEAPU8.subarray( err, end )); self.DApi.exit_error( text ); }\r\nfunction _get_file_contents(path,ptr,offset,size){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); self.DApi.get_file_contents(text, HEAPU8.subarray(ptr, ptr + size), offset); }\r\nfunction _get_file_size(path){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); return self.DApi.get_file_size(text); }\r\nfunction _put_file_contents(path,ptr,size){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end)); self.DApi.put_file_contents(text, HEAPU8.slice(ptr, ptr + size)); }\r\nfunction _remove_file(path){ var end = HEAPU8.indexOf( 0, path); var text = String.fromCharCode.apply(null, HEAPU8.subarray(path, end )); self.DApi.remove_file( text ); }\r\nfunction _show_alert(err){ var end = HEAPU8.indexOf( 0, err ); var text = String.fromCharCode.apply( null, HEAPU8.subarray( err, end ) ); self.alert( text ); }\r\nfunction _trace_pop(){ if (self.WASM_TRACE) { self.WASM_TRACE.pop(); } }\r\nfunction _trace_push(ptr){ var end = HEAPU8.indexOf(0, ptr); var text = String.fromCharCode.apply(null, HEAPU8.subarray(ptr, end)); console.log(text); self.WASM_TRACE = self.WASM_TRACE || []; self.WASM_TRACE.push(text); }\r\n\r\n\r\n\r\nSTATIC_BASE = GLOBAL_BASE;\r\n\r\nSTATICTOP = STATIC_BASE + 1841808;\r\n/* global initializers */ __ATINIT__.push({ func: function() { __GLOBAL__sub_I_msgcmd_cpp() } }, { func: function() { __GLOBAL__sub_I_snet_cpp() } });\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar STATIC_BUMP = 1841808;\r\nModule[\"STATIC_BASE\"] = STATIC_BASE;\r\nModule[\"STATIC_BUMP\"] = STATIC_BUMP;\r\n\r\n/* no memory initializer */\r\nvar tempDoublePtr = STATICTOP; STATICTOP += 16;\r\n\r\nfunction copyTempFloat(ptr) { // functions, because inlining this code increases code size too much\r\n\r\n HEAP8[tempDoublePtr] = HEAP8[ptr];\r\n\r\n HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\r\n\r\n HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\r\n\r\n HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\r\n\r\n}\r\n\r\nfunction copyTempDouble(ptr) {\r\n\r\n HEAP8[tempDoublePtr] = HEAP8[ptr];\r\n\r\n HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\r\n\r\n HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\r\n\r\n HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\r\n\r\n HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];\r\n\r\n HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];\r\n\r\n HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];\r\n\r\n HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];\r\n\r\n}\r\n\r\n// {{PRE_LIBRARY}}\r\n\r\n\r\n function ___assert_fail(condition, filename, line, func) {\r\n abort('Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function']);\r\n }\r\n\r\n function ___cxa_allocate_exception(size) {\r\n return _malloc(size);\r\n }\r\n\r\n \r\n function __ZSt18uncaught_exceptionv() { // std::uncaught_exception()\r\n return !!__ZSt18uncaught_exceptionv.uncaught_exception;\r\n }\r\n \r\n var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function (adjusted) {\r\n if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted;\r\n for (var key in EXCEPTIONS.infos) {\r\n var ptr = +key; // the iteration key is a string, and if we throw this, it must be an integer as that is what we look for\r\n var info = EXCEPTIONS.infos[ptr];\r\n if (info.adjusted === adjusted) {\r\n return ptr;\r\n }\r\n }\r\n return adjusted;\r\n },addRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n info.refcount++;\r\n },decRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n assert(info.refcount > 0);\r\n info.refcount--;\r\n // A rethrown exception can reach refcount 0; it must not be discarded\r\n // Its next handler will clear the rethrown flag and addRef it, prior to\r\n // final decRef and destruction here\r\n if (info.refcount === 0 && !info.rethrown) {\r\n if (info.destructor) {\r\n Module['dynCall_vi'](info.destructor, ptr);\r\n }\r\n delete EXCEPTIONS.infos[ptr];\r\n ___cxa_free_exception(ptr);\r\n }\r\n },clearRef:function (ptr) {\r\n if (!ptr) return;\r\n var info = EXCEPTIONS.infos[ptr];\r\n info.refcount = 0;\r\n }};function ___cxa_begin_catch(ptr) {\r\n var info = EXCEPTIONS.infos[ptr];\r\n if (info && !info.caught) {\r\n info.caught = true;\r\n __ZSt18uncaught_exceptionv.uncaught_exception--;\r\n }\r\n if (info) info.rethrown = false;\r\n EXCEPTIONS.caught.push(ptr);\r\n EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));\r\n return ptr;\r\n }\r\n\r\n \r\n function ___cxa_free_exception(ptr) {\r\n try {\r\n return _free(ptr);\r\n } catch(e) { // XXX FIXME\r\n }\r\n }function ___cxa_end_catch() {\r\n // Clear state flag.\r\n Module['setThrew'](0);\r\n // Call destructor if one is registered then clear it.\r\n var ptr = EXCEPTIONS.caught.pop();\r\n if (ptr) {\r\n EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));\r\n EXCEPTIONS.last = 0; // XXX in decRef?\r\n }\r\n }\r\n\r\n function ___cxa_find_matching_catch_2() {\r\n return ___cxa_find_matching_catch.apply(null, arguments);\r\n }\r\n\r\n function ___cxa_find_matching_catch_3() {\r\n return ___cxa_find_matching_catch.apply(null, arguments);\r\n }\r\n\r\n\r\n function ___cxa_get_exception_ptr(ptr) {\r\n // TODO: use info.adjusted?\r\n return ptr;\r\n }\r\n\r\n function ___cxa_pure_virtual() {\r\n ABORT = true;\r\n throw 'Pure virtual function called!';\r\n }\r\n\r\n \r\n \r\n function ___resumeException(ptr) {\r\n if (!EXCEPTIONS.last) { EXCEPTIONS.last = ptr; }\r\n throw ptr;\r\n }function ___cxa_find_matching_catch() {\r\n var thrown = EXCEPTIONS.last;\r\n if (!thrown) {\r\n // just pass through the null ptr\r\n return ((setTempRet0(0),0)|0);\r\n }\r\n var info = EXCEPTIONS.infos[thrown];\r\n var throwntype = info.type;\r\n if (!throwntype) {\r\n // just pass through the thrown ptr\r\n return ((setTempRet0(0),thrown)|0);\r\n }\r\n var typeArray = Array.prototype.slice.call(arguments);\r\n \r\n var pointer = Module['___cxa_is_pointer_type'](throwntype);\r\n // can_catch receives a **, add indirection\r\n if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4);\r\n HEAP32[((___cxa_find_matching_catch.buffer)>>2)]=thrown;\r\n thrown = ___cxa_find_matching_catch.buffer;\r\n // The different catch blocks are denoted by different types.\r\n // Due to inheritance, those types may not precisely match the\r\n // type of the thrown object. Find one which matches, and\r\n // return the type of the catch block which should be called.\r\n for (var i = 0; i < typeArray.length; i++) {\r\n if (typeArray[i] && Module['___cxa_can_catch'](typeArray[i], throwntype, thrown)) {\r\n thrown = HEAP32[((thrown)>>2)]; // undo indirection\r\n info.adjusted = thrown;\r\n return ((setTempRet0(typeArray[i]),thrown)|0);\r\n }\r\n }\r\n // Shouldn't happen unless we have bogus data in typeArray\r\n // or encounter a type for which emscripten doesn't have suitable\r\n // typeinfo defined. Best-efforts match just in case.\r\n thrown = HEAP32[((thrown)>>2)]; // undo indirection\r\n return ((setTempRet0(throwntype),thrown)|0);\r\n }function ___cxa_throw(ptr, type, destructor) {\r\n EXCEPTIONS.infos[ptr] = {\r\n ptr: ptr,\r\n adjusted: ptr,\r\n type: type,\r\n destructor: destructor,\r\n refcount: 0,\r\n caught: false,\r\n rethrown: false\r\n };\r\n EXCEPTIONS.last = ptr;\r\n if (!(\"uncaught_exception\" in __ZSt18uncaught_exceptionv)) {\r\n __ZSt18uncaught_exceptionv.uncaught_exception = 1;\r\n } else {\r\n __ZSt18uncaught_exceptionv.uncaught_exception++;\r\n }\r\n throw ptr;\r\n }\r\n\r\n function ___gxx_personality_v0() {\r\n }\r\n\r\n function ___lock() {}\r\n\r\n\r\n \r\n var SYSCALLS={varargs:0,get:function (varargs) {\r\n SYSCALLS.varargs += 4;\r\n var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];\r\n return ret;\r\n },getStr:function () {\r\n var ret = Pointer_stringify(SYSCALLS.get());\r\n return ret;\r\n },get64:function () {\r\n var low = SYSCALLS.get(), high = SYSCALLS.get();\r\n if (low >= 0) assert(high === 0);\r\n else assert(high === -1);\r\n return low;\r\n },getZero:function () {\r\n assert(SYSCALLS.get() === 0);\r\n }};function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // llseek\r\n var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();\r\n // NOTE: offset_high is unused - Emscripten's off_t is 32-bit\r\n var offset = offset_low;\r\n FS.llseek(stream, offset, whence);\r\n HEAP32[((result)>>2)]=stream.position;\r\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n \r\n function flush_NO_FILESYSTEM() {\r\n // flush anything remaining in the buffers during shutdown\r\n var fflush = Module[\"_fflush\"];\r\n if (fflush) fflush(0);\r\n var printChar = ___syscall146.printChar;\r\n if (!printChar) return;\r\n var buffers = ___syscall146.buffers;\r\n if (buffers[1].length) printChar(1, 10);\r\n if (buffers[2].length) printChar(2, 10);\r\n }function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // writev\r\n // hack to support printf in NO_FILESYSTEM\r\n var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();\r\n var ret = 0;\r\n if (!___syscall146.buffers) {\r\n ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr\r\n ___syscall146.printChar = function(stream, curr) {\r\n var buffer = ___syscall146.buffers[stream];\r\n assert(buffer);\r\n if (curr === 0 || curr === 10) {\r\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\r\n buffer.length = 0;\r\n } else {\r\n buffer.push(curr);\r\n }\r\n };\r\n }\r\n for (var i = 0; i < iovcnt; i++) {\r\n var ptr = HEAP32[(((iov)+(i*8))>>2)];\r\n var len = HEAP32[(((iov)+(i*8 + 4))>>2)];\r\n for (var j = 0; j < len; j++) {\r\n ___syscall146.printChar(stream, HEAPU8[ptr+j]);\r\n }\r\n ret += len;\r\n }\r\n return ret;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // ioctl\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;\r\n try {\r\n // close\r\n var stream = SYSCALLS.getStreamFromFD();\r\n FS.close(stream);\r\n return 0;\r\n } catch (e) {\r\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\r\n return -e.errno;\r\n }\r\n }\r\n\r\n function ___unlock() {}\r\n\r\n function _abort() {\r\n Module['abort']();\r\n }\r\n\r\n var _emscripten_asm_const_int=true;\r\n\r\n \r\n function __exit(status) {\r\n // void _exit(int status);\r\n // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html\r\n exit(status);\r\n }function _exit(status) {\r\n __exit(status);\r\n }\r\n\r\n \r\n\r\n var _llvm_ceil_f32=Math_ceil;\r\n\r\n var _llvm_ctlz_i32=true;\r\n\r\n function _llvm_eh_typeid_for(type) {\r\n return type;\r\n }\r\n\r\n function _llvm_trap() {\r\n abort('trap!');\r\n }\r\n\r\n \r\n function _emscripten_memcpy_big(dest, src, num) {\r\n HEAPU8.set(HEAPU8.subarray(src, src+num), dest);\r\n return dest;\r\n } \r\n\r\n \r\n\r\n \r\n\r\n \r\n var PTHREAD_SPECIFIC={};function _pthread_getspecific(key) {\r\n return PTHREAD_SPECIFIC[key] || 0;\r\n }\r\n\r\n \r\n var PTHREAD_SPECIFIC_NEXT_KEY=1;\r\n \r\n var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key, destructor) {\r\n if (key == 0) {\r\n return ERRNO_CODES.EINVAL;\r\n }\r\n HEAP32[((key)>>2)]=PTHREAD_SPECIFIC_NEXT_KEY;\r\n // values start at 0\r\n PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY] = 0;\r\n PTHREAD_SPECIFIC_NEXT_KEY++;\r\n return 0;\r\n }\r\n\r\n function _pthread_once(ptr, func) {\r\n if (!_pthread_once.seen) _pthread_once.seen = {};\r\n if (ptr in _pthread_once.seen) return;\r\n Module['dynCall_v'](func);\r\n _pthread_once.seen[ptr] = 1;\r\n }\r\n\r\n function _pthread_setspecific(key, value) {\r\n if (!(key in PTHREAD_SPECIFIC)) {\r\n return ERRNO_CODES.EINVAL;\r\n }\r\n PTHREAD_SPECIFIC[key] = value;\r\n return 0;\r\n }\r\n\r\n \r\n function ___setErrNo(value) {\r\n if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;\r\n return value;\r\n } \r\n\r\n function _time(ptr) {\r\n var ret = (Date.now()/1000)|0;\r\n if (ptr) {\r\n HEAP32[((ptr)>>2)]=ret;\r\n }\r\n return ret;\r\n }\r\nDYNAMICTOP_PTR = staticAlloc(4);\r\n\r\nSTACK_BASE = STACKTOP = alignMemory(STATICTOP);\r\n\r\nSTACK_MAX = STACK_BASE + TOTAL_STACK;\r\n\r\nDYNAMIC_BASE = alignMemory(STACK_MAX);\r\n\r\nHEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE;\r\n\r\nstaticSealed = true; // seal the static portion of memory\r\n\r\nvar ASSERTIONS = false;\r\n\r\n/** @type {function(string, boolean=, number=)} */\r\nfunction intArrayFromString(stringy, dontAddNull, length) {\r\n var len = length > 0 ? length : lengthBytesUTF8(stringy)+1;\r\n var u8array = new Array(len);\r\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\r\n if (dontAddNull) u8array.length = numBytesWritten;\r\n return u8array;\r\n}\r\n\r\nfunction intArrayToString(array) {\r\n var ret = [];\r\n for (var i = 0; i < array.length; i++) {\r\n var chr = array[i];\r\n if (chr > 0xFF) {\r\n if (ASSERTIONS) {\r\n assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.');\r\n }\r\n chr &= 0xFF;\r\n }\r\n ret.push(String.fromCharCode(chr));\r\n }\r\n return ret.join('');\r\n}\r\n\r\n\r\n\r\nModule['wasmTableSize'] = 1114;\r\n\r\nModule['wasmMaxTableSize'] = 1114;\r\n\r\nfunction invoke_i(index) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_i\"](index);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_ii(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_ii\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iii(index,a1,a2) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iii\"](index,a1,a2);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiii(index,a1,a2,a3) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiii\"](index,a1,a2,a3);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiiii(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_iiiiii(index,a1,a2,a3,a4,a5) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_iiiiii\"](index,a1,a2,a3,a4,a5);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_ji(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n return Module[\"dynCall_ji\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_v(index) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_v\"](index);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_vi(index,a1) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_vi\"](index,a1);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_vii(index,a1,a2) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_vii\"](index,a1,a2);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viii(index,a1,a2,a3) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viii\"](index,a1,a2,a3);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiii(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiii\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiii(index,a1,a2,a3,a4,a5) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viiiiiiiiii\"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viij(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viij\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nfunction invoke_viji(index,a1,a2,a3,a4) {\r\n var sp = stackSave();\r\n try {\r\n Module[\"dynCall_viji\"](index,a1,a2,a3,a4);\r\n } catch(e) {\r\n stackRestore(sp);\r\n if (typeof e !== 'number' && e !== 'longjmp') throw e;\r\n Module[\"setThrew\"](1, 0);\r\n }\r\n}\r\n\r\nModule.asmGlobalArg = {};\r\n\r\nModule.asmLibraryArg = { \"abort\": abort, \"assert\": assert, \"enlargeMemory\": enlargeMemory, \"getTotalMemory\": getTotalMemory, \"abortOnCannotGrowMemory\": abortOnCannotGrowMemory, \"invoke_i\": invoke_i, \"invoke_ii\": invoke_ii, \"invoke_iii\": invoke_iii, \"invoke_iiii\": invoke_iiii, \"invoke_iiiii\": invoke_iiiii, \"invoke_iiiiii\": invoke_iiiiii, \"invoke_ji\": invoke_ji, \"invoke_v\": invoke_v, \"invoke_vi\": invoke_vi, \"invoke_vii\": invoke_vii, \"invoke_viii\": invoke_viii, \"invoke_viiii\": invoke_viiii, \"invoke_viiiii\": invoke_viiiii, \"invoke_viiiiii\": invoke_viiiiii, \"invoke_viiiiiii\": invoke_viiiiiii, \"invoke_viiiiiiiii\": invoke_viiiiiiiii, \"invoke_viiiiiiiiii\": invoke_viiiiiiiiii, \"invoke_viij\": invoke_viij, \"invoke_viji\": invoke_viji, \"__ZSt18uncaught_exceptionv\": __ZSt18uncaught_exceptionv, \"___assert_fail\": ___assert_fail, \"___cxa_allocate_exception\": ___cxa_allocate_exception, \"___cxa_begin_catch\": ___cxa_begin_catch, \"___cxa_end_catch\": ___cxa_end_catch, \"___cxa_find_matching_catch\": ___cxa_find_matching_catch, \"___cxa_find_matching_catch_2\": ___cxa_find_matching_catch_2, \"___cxa_find_matching_catch_3\": ___cxa_find_matching_catch_3, \"___cxa_free_exception\": ___cxa_free_exception, \"___cxa_get_exception_ptr\": ___cxa_get_exception_ptr, \"___cxa_pure_virtual\": ___cxa_pure_virtual, \"___cxa_throw\": ___cxa_throw, \"___gxx_personality_v0\": ___gxx_personality_v0, \"___lock\": ___lock, \"___resumeException\": ___resumeException, \"___setErrNo\": ___setErrNo, \"___syscall140\": ___syscall140, \"___syscall146\": ___syscall146, \"___syscall54\": ___syscall54, \"___syscall6\": ___syscall6, \"___unlock\": ___unlock, \"__api_close_keyboard\": __api_close_keyboard, \"__api_open_keyboard\": __api_open_keyboard, \"__exit\": __exit, \"_abort\": _abort, \"_api_create_sound\": _api_create_sound, \"_api_create_sound_float\": _api_create_sound_float, \"_api_delete_sound\": _api_delete_sound, \"_api_draw_begin\": _api_draw_begin, \"_api_draw_belt\": _api_draw_belt, \"_api_draw_blit\": _api_draw_blit, \"_api_draw_clip_text\": _api_draw_clip_text, \"_api_draw_end\": _api_draw_end, \"_api_draw_text\": _api_draw_text, \"_api_duplicate_sound\": _api_duplicate_sound, \"_api_exit_game\": _api_exit_game, \"_api_play_sound\": _api_play_sound, \"_api_set_cursor\": _api_set_cursor, \"_api_set_volume\": _api_set_volume, \"_api_stop_sound\": _api_stop_sound, \"_api_websocket_closed\": _api_websocket_closed, \"_api_websocket_send\": _api_websocket_send, \"_emscripten_asm_const_ii\": _emscripten_asm_const_ii, \"_emscripten_memcpy_big\": _emscripten_memcpy_big, \"_exit\": _exit, \"_exit_error\": _exit_error, \"_get_file_contents\": _get_file_contents, \"_get_file_size\": _get_file_size, \"_llvm_ceil_f32\": _llvm_ceil_f32, \"_llvm_eh_typeid_for\": _llvm_eh_typeid_for, \"_llvm_trap\": _llvm_trap, \"_pthread_getspecific\": _pthread_getspecific, \"_pthread_key_create\": _pthread_key_create, \"_pthread_once\": _pthread_once, \"_pthread_setspecific\": _pthread_setspecific, \"_put_file_contents\": _put_file_contents, \"_remove_file\": _remove_file, \"_show_alert\": _show_alert, \"_time\": _time, \"_trace_pop\": _trace_pop, \"_trace_push\": _trace_push, \"flush_NO_FILESYSTEM\": flush_NO_FILESYSTEM, \"DYNAMICTOP_PTR\": DYNAMICTOP_PTR, \"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX };\r\n// EMSCRIPTEN_START_ASM\r\nvar asm =Module[\"asm\"]// EMSCRIPTEN_END_ASM\r\n(Module.asmGlobalArg, Module.asmLibraryArg, buffer);\r\n\r\nModule[\"asm\"] = asm;\r\nvar _DApi_AllocPacket = Module[\"_DApi_AllocPacket\"] = function() { return Module[\"asm\"][\"_DApi_AllocPacket\"].apply(null, arguments) };\r\nvar _DApi_Char = Module[\"_DApi_Char\"] = function() { return Module[\"asm\"][\"_DApi_Char\"].apply(null, arguments) };\r\nvar _DApi_Init = Module[\"_DApi_Init\"] = function() { return Module[\"asm\"][\"_DApi_Init\"].apply(null, arguments) };\r\nvar _DApi_Key = Module[\"_DApi_Key\"] = function() { return Module[\"asm\"][\"_DApi_Key\"].apply(null, arguments) };\r\nvar _DApi_Mouse = Module[\"_DApi_Mouse\"] = function() { return Module[\"asm\"][\"_DApi_Mouse\"].apply(null, arguments) };\r\nvar _DApi_Render = Module[\"_DApi_Render\"] = function() { return Module[\"asm\"][\"_DApi_Render\"].apply(null, arguments) };\r\nvar _DApi_SyncText = Module[\"_DApi_SyncText\"] = function() { return Module[\"asm\"][\"_DApi_SyncText\"].apply(null, arguments) };\r\nvar _DApi_SyncTextPtr = Module[\"_DApi_SyncTextPtr\"] = function() { return Module[\"asm\"][\"_DApi_SyncTextPtr\"].apply(null, arguments) };\r\nvar _SNet_InitWebsocket = Module[\"_SNet_InitWebsocket\"] = function() { return Module[\"asm\"][\"_SNet_InitWebsocket\"].apply(null, arguments) };\r\nvar __GLOBAL__sub_I_msgcmd_cpp = Module[\"__GLOBAL__sub_I_msgcmd_cpp\"] = function() { return Module[\"asm\"][\"__GLOBAL__sub_I_msgcmd_cpp\"].apply(null, arguments) };\r\nvar __GLOBAL__sub_I_snet_cpp = Module[\"__GLOBAL__sub_I_snet_cpp\"] = function() { return Module[\"asm\"][\"__GLOBAL__sub_I_snet_cpp\"].apply(null, arguments) };\r\nvar ___cxa_can_catch = Module[\"___cxa_can_catch\"] = function() { return Module[\"asm\"][\"___cxa_can_catch\"].apply(null, arguments) };\r\nvar ___cxa_is_pointer_type = Module[\"___cxa_is_pointer_type\"] = function() { return Module[\"asm\"][\"___cxa_is_pointer_type\"].apply(null, arguments) };\r\nvar ___em_js___api_close_keyboard = Module[\"___em_js___api_close_keyboard\"] = function() { return Module[\"asm\"][\"___em_js___api_close_keyboard\"].apply(null, arguments) };\r\nvar ___em_js___api_open_keyboard = Module[\"___em_js___api_open_keyboard\"] = function() { return Module[\"asm\"][\"___em_js___api_open_keyboard\"].apply(null, arguments) };\r\nvar ___em_js__api_create_sound = Module[\"___em_js__api_create_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_create_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_create_sound_float = Module[\"___em_js__api_create_sound_float\"] = function() { return Module[\"asm\"][\"___em_js__api_create_sound_float\"].apply(null, arguments) };\r\nvar ___em_js__api_delete_sound = Module[\"___em_js__api_delete_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_delete_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_begin = Module[\"___em_js__api_draw_begin\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_begin\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_belt = Module[\"___em_js__api_draw_belt\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_belt\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_blit = Module[\"___em_js__api_draw_blit\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_blit\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_clip_text = Module[\"___em_js__api_draw_clip_text\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_clip_text\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_end = Module[\"___em_js__api_draw_end\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_end\"].apply(null, arguments) };\r\nvar ___em_js__api_draw_text = Module[\"___em_js__api_draw_text\"] = function() { return Module[\"asm\"][\"___em_js__api_draw_text\"].apply(null, arguments) };\r\nvar ___em_js__api_duplicate_sound = Module[\"___em_js__api_duplicate_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_duplicate_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_exit_game = Module[\"___em_js__api_exit_game\"] = function() { return Module[\"asm\"][\"___em_js__api_exit_game\"].apply(null, arguments) };\r\nvar ___em_js__api_play_sound = Module[\"___em_js__api_play_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_play_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_set_cursor = Module[\"___em_js__api_set_cursor\"] = function() { return Module[\"asm\"][\"___em_js__api_set_cursor\"].apply(null, arguments) };\r\nvar ___em_js__api_set_volume = Module[\"___em_js__api_set_volume\"] = function() { return Module[\"asm\"][\"___em_js__api_set_volume\"].apply(null, arguments) };\r\nvar ___em_js__api_stop_sound = Module[\"___em_js__api_stop_sound\"] = function() { return Module[\"asm\"][\"___em_js__api_stop_sound\"].apply(null, arguments) };\r\nvar ___em_js__api_websocket_closed = Module[\"___em_js__api_websocket_closed\"] = function() { return Module[\"asm\"][\"___em_js__api_websocket_closed\"].apply(null, arguments) };\r\nvar ___em_js__api_websocket_send = Module[\"___em_js__api_websocket_send\"] = function() { return Module[\"asm\"][\"___em_js__api_websocket_send\"].apply(null, arguments) };\r\nvar ___em_js__exit_error = Module[\"___em_js__exit_error\"] = function() { return Module[\"asm\"][\"___em_js__exit_error\"].apply(null, arguments) };\r\nvar ___em_js__get_file_contents = Module[\"___em_js__get_file_contents\"] = function() { return Module[\"asm\"][\"___em_js__get_file_contents\"].apply(null, arguments) };\r\nvar ___em_js__get_file_size = Module[\"___em_js__get_file_size\"] = function() { return Module[\"asm\"][\"___em_js__get_file_size\"].apply(null, arguments) };\r\nvar ___em_js__put_file_contents = Module[\"___em_js__put_file_contents\"] = function() { return Module[\"asm\"][\"___em_js__put_file_contents\"].apply(null, arguments) };\r\nvar ___em_js__remove_file = Module[\"___em_js__remove_file\"] = function() { return Module[\"asm\"][\"___em_js__remove_file\"].apply(null, arguments) };\r\nvar ___em_js__show_alert = Module[\"___em_js__show_alert\"] = function() { return Module[\"asm\"][\"___em_js__show_alert\"].apply(null, arguments) };\r\nvar ___em_js__trace_pop = Module[\"___em_js__trace_pop\"] = function() { return Module[\"asm\"][\"___em_js__trace_pop\"].apply(null, arguments) };\r\nvar ___em_js__trace_push = Module[\"___em_js__trace_push\"] = function() { return Module[\"asm\"][\"___em_js__trace_push\"].apply(null, arguments) };\r\nvar _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = function() { return Module[\"asm\"][\"_emscripten_replace_memory\"].apply(null, arguments) };\r\nvar _free = Module[\"_free\"] = function() { return Module[\"asm\"][\"_free\"].apply(null, arguments) };\r\nvar _llvm_bswap_i32 = Module[\"_llvm_bswap_i32\"] = function() { return Module[\"asm\"][\"_llvm_bswap_i32\"].apply(null, arguments) };\r\nvar _malloc = Module[\"_malloc\"] = function() { return Module[\"asm\"][\"_malloc\"].apply(null, arguments) };\r\nvar _memcpy = Module[\"_memcpy\"] = function() { return Module[\"asm\"][\"_memcpy\"].apply(null, arguments) };\r\nvar _memmove = Module[\"_memmove\"] = function() { return Module[\"asm\"][\"_memmove\"].apply(null, arguments) };\r\nvar _memset = Module[\"_memset\"] = function() { return Module[\"asm\"][\"_memset\"].apply(null, arguments) };\r\nvar _sbrk = Module[\"_sbrk\"] = function() { return Module[\"asm\"][\"_sbrk\"].apply(null, arguments) };\r\nvar establishStackSpace = Module[\"establishStackSpace\"] = function() { return Module[\"asm\"][\"establishStackSpace\"].apply(null, arguments) };\r\nvar getTempRet0 = Module[\"getTempRet0\"] = function() { return Module[\"asm\"][\"getTempRet0\"].apply(null, arguments) };\r\nvar runPostSets = Module[\"runPostSets\"] = function() { return Module[\"asm\"][\"runPostSets\"].apply(null, arguments) };\r\nvar setTempRet0 = Module[\"setTempRet0\"] = function() { return Module[\"asm\"][\"setTempRet0\"].apply(null, arguments) };\r\nvar setThrew = Module[\"setThrew\"] = function() { return Module[\"asm\"][\"setThrew\"].apply(null, arguments) };\r\nvar stackAlloc = Module[\"stackAlloc\"] = function() { return Module[\"asm\"][\"stackAlloc\"].apply(null, arguments) };\r\nvar stackRestore = Module[\"stackRestore\"] = function() { return Module[\"asm\"][\"stackRestore\"].apply(null, arguments) };\r\nvar stackSave = Module[\"stackSave\"] = function() { return Module[\"asm\"][\"stackSave\"].apply(null, arguments) };\r\nvar dynCall_i = Module[\"dynCall_i\"] = function() { return Module[\"asm\"][\"dynCall_i\"].apply(null, arguments) };\r\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() { return Module[\"asm\"][\"dynCall_ii\"].apply(null, arguments) };\r\nvar dynCall_iii = Module[\"dynCall_iii\"] = function() { return Module[\"asm\"][\"dynCall_iii\"].apply(null, arguments) };\r\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() { return Module[\"asm\"][\"dynCall_iiii\"].apply(null, arguments) };\r\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() { return Module[\"asm\"][\"dynCall_iiiii\"].apply(null, arguments) };\r\nvar dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() { return Module[\"asm\"][\"dynCall_iiiiii\"].apply(null, arguments) };\r\nvar dynCall_ji = Module[\"dynCall_ji\"] = function() { return Module[\"asm\"][\"dynCall_ji\"].apply(null, arguments) };\r\nvar dynCall_v = Module[\"dynCall_v\"] = function() { return Module[\"asm\"][\"dynCall_v\"].apply(null, arguments) };\r\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() { return Module[\"asm\"][\"dynCall_vi\"].apply(null, arguments) };\r\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() { return Module[\"asm\"][\"dynCall_vii\"].apply(null, arguments) };\r\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() { return Module[\"asm\"][\"dynCall_viii\"].apply(null, arguments) };\r\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() { return Module[\"asm\"][\"dynCall_viiii\"].apply(null, arguments) };\r\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function() { return Module[\"asm\"][\"dynCall_viiiiiiiiii\"].apply(null, arguments) };\r\nvar dynCall_viij = Module[\"dynCall_viij\"] = function() { return Module[\"asm\"][\"dynCall_viij\"].apply(null, arguments) };\r\nvar dynCall_viji = Module[\"dynCall_viji\"] = function() { return Module[\"asm\"][\"dynCall_viji\"].apply(null, arguments) };\r\n;\r\n\r\n\r\n\r\n// === Auto-generated postamble setup entry stuff ===\r\n\r\nModule['asm'] = asm;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Modularize mode returns a function, which can be called to\r\n// create instances. The instances provide a then() method,\r\n// must like a Promise, that receives a callback. The callback\r\n// is called when the module is ready to run, with the module\r\n// as a parameter. (Like a Promise, it also returns the module\r\n// so you can use the output of .then(..)).\r\nModule['then'] = function(func) {\r\n // We may already be ready to run code at this time. if\r\n // so, just queue a call to the callback.\r\n if (Module['calledRun']) {\r\n func(Module);\r\n } else {\r\n // we are not ready to call then() yet. we must call it\r\n // at the same time we would call onRuntimeInitialized.\r\n var old = Module['onRuntimeInitialized'];\r\n Module['onRuntimeInitialized'] = function() {\r\n if (old) old();\r\n func(Module);\r\n };\r\n }\r\n return Module;\r\n};\r\n\r\n/**\r\n * @constructor\r\n * @extends {Error}\r\n * @this {ExitStatus}\r\n */\r\nfunction ExitStatus(status) {\r\n this.name = \"ExitStatus\";\r\n this.message = \"Program terminated with exit(\" + status + \")\";\r\n this.status = status;\r\n};\r\nExitStatus.prototype = new Error();\r\nExitStatus.prototype.constructor = ExitStatus;\r\n\r\nvar initialStackTop;\r\nvar calledMain = false;\r\n\r\ndependenciesFulfilled = function runCaller() {\r\n // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)\r\n if (!Module['calledRun']) run();\r\n if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/** @type {function(Array=)} */\r\nfunction run(args) {\r\n args = args || Module['arguments'];\r\n\r\n if (runDependencies > 0) {\r\n return;\r\n }\r\n\r\n\r\n preRun();\r\n\r\n if (runDependencies > 0) return; // a preRun added a dependency, run will be called later\r\n if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame\r\n\r\n function doRun() {\r\n if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening\r\n Module['calledRun'] = true;\r\n\r\n if (ABORT) return;\r\n\r\n ensureInitRuntime();\r\n\r\n preMain();\r\n\r\n if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();\r\n\r\n\r\n postRun();\r\n }\r\n\r\n if (Module['setStatus']) {\r\n Module['setStatus']('Running...');\r\n setTimeout(function() {\r\n setTimeout(function() {\r\n Module['setStatus']('');\r\n }, 1);\r\n doRun();\r\n }, 1);\r\n } else {\r\n doRun();\r\n }\r\n}\r\nModule['run'] = run;\r\n\r\n\r\nfunction exit(status, implicit) {\r\n\r\n // if this is just main exit-ing implicitly, and the status is 0, then we\r\n // don't need to do anything here and can just leave. if the status is\r\n // non-zero, though, then we need to report it.\r\n // (we may have warned about this earlier, if a situation justifies doing so)\r\n if (implicit && Module['noExitRuntime'] && status === 0) {\r\n return;\r\n }\r\n\r\n if (Module['noExitRuntime']) {\r\n } else {\r\n\r\n ABORT = true;\r\n EXITSTATUS = status;\r\n STACKTOP = initialStackTop;\r\n\r\n exitRuntime();\r\n\r\n if (Module['onExit']) Module['onExit'](status);\r\n }\r\n\r\n Module['quit'](status, new ExitStatus(status));\r\n}\r\n\r\nvar abortDecorators = [];\r\n\r\nfunction abort(what) {\r\n if (Module['onAbort']) {\r\n Module['onAbort'](what);\r\n }\r\n\r\n if (what !== undefined) {\r\n out(what);\r\n err(what);\r\n what = JSON.stringify(what)\r\n } else {\r\n what = '';\r\n }\r\n\r\n ABORT = true;\r\n EXITSTATUS = 1;\r\n\r\n throw 'abort(' + what + '). Build with -s ASSERTIONS=1 for more info.';\r\n}\r\nModule['abort'] = abort;\r\n\r\n// {{PRE_RUN_ADDITIONS}}\r\n\r\nif (Module['preInit']) {\r\n if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];\r\n while (Module['preInit'].length > 0) {\r\n Module['preInit'].pop()();\r\n }\r\n}\r\n\r\n\r\nModule[\"noExitRuntime\"] = true;\r\n\r\nrun();\r\n\r\n// {{POST_RUN_ADDITIONS}}\r\n\r\n\r\n\r\n\r\n\r\n// {{MODULE_ADDITIONS}}\r\n\r\n\r\n\r\nModule['ready'] = new Promise(function (resolve, reject) {\r\n delete Module['then']\r\n Module['onAbort'] = function (what) {\r\n reject(what)\r\n }\r\n addOnPostRun(function () {\r\n resolve(Module)\r\n })\r\n});\r\n\r\n\r\n\r\n return DiabloSpawn;\r\n}\r\n);\r\n})();\r\nif (typeof exports === 'object' && typeof module === 'object')\r\n module.exports = DiabloSpawn;\r\n else if (typeof define === 'function' && define['amd'])\r\n define([], function() { return DiabloSpawn; });\r\n else if (typeof exports === 'object')\r\n exports[\"DiabloSpawn\"] = DiabloSpawn;\r\n \n\n/*** EXPORTS FROM exports-loader ***/\n","module.exports = require('./lib/axios');","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar runtime = function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\"; // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = \"Generator\"; // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n}( // If this script is executing as a CommonJS module, use module.exports\n// as the regeneratorRuntime namespace. Otherwise create a new empty\n// object. Either way, the resulting object will be used to initialize\n// the regeneratorRuntime variable at the top of this file.\ntypeof module === \"object\" ? module.exports : {});\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}","'use strict';\n\nvar utils = require('./utils');\n\nvar bind = require('./helpers/bind');\n\nvar Axios = require('./core/Axios');\n\nvar mergeConfig = require('./core/mergeConfig');\n\nvar defaults = require('./defaults');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\n\n\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance\n\n utils.extend(instance, Axios.prototype, context); // Copy context to instance\n\n utils.extend(instance, context);\n return instance;\n} // Create the default instance to be exported\n\n\nvar axios = createInstance(defaults); // Expose Axios class to allow class inheritance\n\naxios.Axios = Axios; // Factory for creating new instances\n\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n}; // Expose Cancel & CancelToken\n\n\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel'); // Expose all/spread\n\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = require('./helpers/spread');\nmodule.exports = axios; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = axios;","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nmodule.exports = function isBuffer(obj) {\n return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n};","'use strict';\n\nvar utils = require('./../utils');\n\nvar buildURL = require('../helpers/buildURL');\n\nvar InterceptorManager = require('./InterceptorManager');\n\nvar dispatchRequest = require('./dispatchRequest');\n\nvar mergeConfig = require('./mergeConfig');\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\n\n\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\n\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get'; // Hook up interceptors middleware\n\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n}; // Provide aliases for supported request methods\n\n\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = Axios;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n\n\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\n\n\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\n\n\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;","'use strict';\n\nvar utils = require('./../utils');\n\nvar transformData = require('./transformData');\n\nvar isCancel = require('../cancel/isCancel');\n\nvar defaults = require('../defaults');\n\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\n\nvar combineURLs = require('./../helpers/combineURLs');\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\n\n\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config); // Support baseURL config\n\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n } // Ensure headers exist\n\n\n config.headers = config.headers || {}; // Transform request data\n\n config.data = transformData(config.data, config.headers, config.transformRequest); // Flatten headers\n\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers || {});\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config); // Transform response data\n\n response.data = transformData(response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config); // Transform response data\n\n if (reason && reason.response) {\n reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n\n return Promise.reject(reason);\n });\n};","'use strict';\n\nvar utils = require('./../utils');\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\n\n\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n return data;\n};","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nvar createError = require('./createError');\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\n\n\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","'use strict';\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\n\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function () {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n\n return error;\n};","'use strict';\n\nvar utils = require('./../utils'); // Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\n\n\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\n\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) {\n return parsed;\n }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() : // Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() : // Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","'use strict';\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\n\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};","'use strict';\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","'use strict';\n\nvar Cancel = require('./Cancel');\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\n\n\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n\n\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;","'use strict';\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\n\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import DiabloBinary from './Diablo.wasm';\r\nimport DiabloModule from './Diablo.jscc';\r\nimport SpawnBinary from './DiabloSpawn.wasm';\r\nimport SpawnModule from './DiabloSpawn.jscc';\r\nimport axios from 'axios';\r\n\r\nconst DiabloSize = 1466809;\r\nconst SpawnSize = 1337416;\r\n\r\n/* eslint-disable-next-line no-restricted-globals */\r\nconst worker = self;\r\n\r\nlet canvas = null, context = null;\r\nlet imageData = null;\r\nlet files = null;\r\nlet renderBatch = null;\r\nlet drawBelt = null;\r\nlet is_spawn = false;\r\n\r\nconst ChunkSize = 1 << 20;\r\nclass RemoteFile {\r\n constructor(url) {\r\n const request = new XMLHttpRequest();\r\n request.open('HEAD', url, false);\r\n request.send();\r\n if (request.status < 200 || request.status >= 300) {\r\n worker.postMessage({action: \"error\", error: `Failed to load remote file`});\r\n }\r\n this.byteLength = parseInt(request.getResponseHeader('Content-Length'));\r\n\r\n this.url = url;\r\n\r\n this.buffer = new Uint8Array(this.byteLength);\r\n this.chunks = new Uint8Array(((this.byteLength + ChunkSize - 1) >> 20) | 0);\r\n }\r\n\r\n subarray(start, end) {\r\n let chunk0 = (start / ChunkSize) | 0;\r\n let chunk1 = ((end + ChunkSize - 1) / ChunkSize) | 0;\r\n let missing0 = chunk1, missing1 = chunk0;\r\n for (let i = chunk0; i < chunk1; ++i) {\r\n if (!this.chunks[i]) {\r\n missing0 = Math.min(missing0, i);\r\n missing1 = Math.max(missing1, i);\r\n }\r\n }\r\n if (missing0 <= missing1) {\r\n const request = new XMLHttpRequest();\r\n request.open('GET', this.url, false);\r\n request.setRequestHeader('Range', `bytes=${missing0 * ChunkSize}-${Math.min(missing1 * ChunkSize + ChunkSize - 1, this.byteLength - 1)}`);\r\n request.responseType = 'arraybuffer';\r\n request.send();\r\n if (request.status < 200 || request.status >= 300) {\r\n worker.postMessage({action: \"error\", error: `Failed to load remote file`});\r\n } else {\r\n const header = request.getResponseHeader('Content-Range');\r\n let m, start = 0;\r\n if (header && (m = header.match(/bytes (\\d+)-(\\d+)\\/(\\d+)/))) {\r\n start = parseInt(m[1]);\r\n }\r\n this.buffer.set(new Uint8Array(request.response), start);\r\n chunk0 = ((start + ChunkSize - 1) / ChunkSize) | 0;\r\n chunk1 = ((start + request.response.byteLength + ChunkSize - 1) / ChunkSize) | 0;\r\n for (let i = chunk0; i < chunk1; ++i) {\r\n this.chunks[i] = 1;\r\n }\r\n }\r\n }\r\n return this.buffer.subarray(start, end);\r\n }\r\n}\r\n\r\nconst DApi = {\r\n exit_error(error) {\r\n worker.postMessage({action: \"error\", error});\r\n },\r\n\r\n exit_game() {\r\n worker.postMessage({action: \"exit\"});\r\n },\r\n current_save_id(id) {\r\n worker.postMessage({action: \"current_save\", name: id >= 0 ? (is_spawn ? `spawn${id}.sv` : `single_${id}.sv`) : null});\r\n },\r\n\r\n get_file_size(path) {\r\n const data = files.get(path.toLowerCase());\r\n return data ? data.byteLength : 0;\r\n },\r\n get_file_contents(path, array, offset) {\r\n const data = files.get(path.toLowerCase());\r\n if (data) {\r\n array.set(data.subarray(offset, offset + array.byteLength));\r\n }\r\n },\r\n put_file_contents(path, array) {\r\n path = path.toLowerCase();\r\n // if (!path.match(/^(spawn\\d+\\.sv|single_\\d+\\.sv|config\\.ini)$/i)) {\r\n // alert(`Bad file name: ${path}`);\r\n // }\r\n files.set(path, array);\r\n worker.postMessage({action: \"fs\", func: \"update\", params: [path, array]});\r\n },\r\n remove_file(path) {\r\n path = path.toLowerCase();\r\n files.delete(path);\r\n worker.postMessage({action: \"fs\", func: \"delete\", params: [path]});\r\n },\r\n\r\n set_cursor(x, y) {\r\n worker.postMessage({action: \"cursor\", x, y});\r\n },\r\n open_keyboard(...args) {\r\n worker.postMessage({action: \"keyboard\", rect: [...args]});\r\n },\r\n close_keyboard() {\r\n worker.postMessage({action: \"keyboard\", rect: null});\r\n },\r\n\r\n websocket_closed() {\r\n return false;\r\n },\r\n};\r\n\r\nlet frameTime = 0, lastTime = 0;\r\nfunction getFPS() {\r\n const time = performance.now();\r\n if (!lastTime) {\r\n lastTime = time;\r\n }\r\n frameTime = 0.9 * frameTime + 0.1 * (time - lastTime);\r\n lastTime = time;\r\n return frameTime ? 1000.0 / frameTime : 0.0;\r\n}\r\n\r\nconst DApi_renderLegacy = {\r\n draw_begin() {\r\n renderBatch = {\r\n images: [],\r\n text: [],\r\n clip: null,\r\n belt: drawBelt,\r\n };\r\n drawBelt = null;\r\n },\r\n draw_blit(x, y, w, h, data) {\r\n renderBatch.images.push({x, y, w, h, data: data.slice()});\r\n },\r\n draw_clip_text(x0, y0, x1, y1) {\r\n renderBatch.clip = {x0, y0, x1, y1};\r\n },\r\n draw_text(x, y, text, color) {\r\n renderBatch.text.push({x, y, text, color});\r\n },\r\n draw_end() {\r\n //DApi.draw_text(10, 10, `FPS: ${getFPS().toFixed(1)} (Transfer)`, 0xFFCC00);\r\n const transfer = renderBatch.images.map(({data}) => data.buffer);\r\n if (renderBatch.belt) {\r\n transfer.push(renderBatch.belt.buffer);\r\n }\r\n worker.postMessage({action: \"render\", batch: renderBatch}, transfer);\r\n renderBatch = null;\r\n },\r\n draw_belt(items) {\r\n drawBelt = items.slice();\r\n },\r\n};\r\n\r\nconst DApi_renderOffscreen = {\r\n draw_begin() {\r\n context.save();\r\n context.font = 'bold 13px Times New Roman';\r\n },\r\n draw_blit(x, y, w, h, data) {\r\n imageData.data.set(data);\r\n context.putImageData(imageData, x, y);\r\n },\r\n draw_clip_text(x0, y0, x1, y1) {\r\n context.beginPath();\r\n context.rect(x0, y0, x1 - x0, y1 - y0);\r\n context.clip();\r\n },\r\n draw_text(x, y, text, color) {\r\n const r = ((color >> 16) & 0xFF);\r\n const g = ((color >> 8) & 0xFF);\r\n const b = (color & 0xFF);\r\n context.fillStyle = `rgb(${r}, ${g}, ${b})`;\r\n context.fillText(text, x, y + 22);\r\n },\r\n draw_end() {\r\n //DApi.draw_text(10, 10, `FPS: ${getFPS().toFixed(1)} (Offscreen)`, 0xFFCC00);\r\n context.restore();\r\n const bitmap = canvas.transferToImageBitmap();\r\n const transfer = [bitmap];\r\n if (drawBelt) {\r\n transfer.push(drawBelt.buffer);\r\n }\r\n worker.postMessage({action: \"render\", batch: {bitmap, belt: drawBelt}}, transfer);\r\n drawBelt = null;\r\n },\r\n draw_belt(items) {\r\n drawBelt = items.slice();\r\n },\r\n};\r\n\r\nlet audioBatch = null, audioTransfer = null;\r\nlet maxSoundId = 0, maxBatchId = 0;\r\n[\"create_sound_raw\", \"create_sound\", \"duplicate_sound\"].forEach(func => {\r\n DApi[func] = function(...params) {\r\n if (audioBatch) {\r\n maxBatchId = params[0] + 1;\r\n audioBatch.push({func, params});\r\n if (func !== \"duplicate_sound\") {\r\n audioTransfer.push(params[1].buffer);\r\n }\r\n } else {\r\n maxSoundId = params[0] + 1;\r\n const transfer = [];\r\n if (func !== \"duplicate_sound\") {\r\n transfer.push(params[1].buffer);\r\n }\r\n worker.postMessage({action: \"audio\", func, params}, transfer);\r\n }\r\n };\r\n});\r\n[\"play_sound\", \"set_volume\", \"stop_sound\", \"delete_sound\"].forEach(func => {\r\n DApi[func] = function(...params) {\r\n if (audioBatch && params[0] >= maxSoundId) {\r\n audioBatch.push({func, params});\r\n } else {\r\n worker.postMessage({action: \"audio\", func, params});\r\n }\r\n }\r\n});\r\n\r\nlet packetBatch = null;\r\nDApi.websocket_send = function(data) {\r\n if (packetBatch) {\r\n packetBatch.push(data.slice().buffer);\r\n } else {\r\n worker.postMessage({action: \"packet\", buffer: data});\r\n }\r\n};\r\n\r\nworker.DApi = DApi;\r\n\r\nlet wasm = null;\r\n\r\nfunction try_api(func) {\r\n try {\r\n func();\r\n } catch (e) {\r\n if (typeof e === \"string\") {\r\n worker.postMessage({action: \"\"})\r\n }\r\n worker.postMessage({action: \"error\", error: e.toString(), stack: e.stack});\r\n }\r\n}\r\n\r\nfunction call_api(func, ...params) {\r\n try_api(() => {\r\n audioBatch = [];\r\n audioTransfer = [];\r\n packetBatch = [];\r\n if (func !== \"text\") {\r\n wasm[\"_\" + func](...params);\r\n } else {\r\n const ptr = wasm._DApi_SyncTextPtr();\r\n const text = params[0];\r\n const length = Math.min(text.length, 255);\r\n const heap = wasm.HEAPU8;\r\n for (let i = 0; i < length; ++i) {\r\n heap[ptr + i] = text.charCodeAt(i);\r\n }\r\n heap[ptr + length] = 0;\r\n wasm._DApi_SyncText(params[1]);\r\n }\r\n if (audioBatch.length) {\r\n maxSoundId = maxBatchId;\r\n worker.postMessage({action: \"audioBatch\", batch: audioBatch}, audioTransfer);\r\n }\r\n if (packetBatch.length) {\r\n worker.postMessage({action: \"packetBatch\", batch: packetBatch}, packetBatch);\r\n }\r\n audioBatch = null;\r\n audioTransfer = null;\r\n packetBatch = null;\r\n });\r\n}\r\n\r\nfunction progress(text, loaded, total) {\r\n worker.postMessage({action: \"progress\", text, loaded, total});\r\n}\r\n\r\nconst readFile = (file, progress) => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n if (progress) {\r\n progress({loaded: file.size});\r\n }\r\n resolve(reader.result);\r\n };\r\n reader.onerror = () => reject(reader.error);\r\n reader.onabort = () => reject();\r\n if (progress) {\r\n reader.addEventListener(\"progress\", progress);\r\n }\r\n reader.readAsArrayBuffer(file);\r\n});\r\n\r\nasync function initWasm(spawn, progress) {\r\n const binary = await axios.request({\r\n url: spawn ? SpawnBinary : DiabloBinary,\r\n responseType: 'arraybuffer',\r\n onDownloadProgress: progress,\r\n });\r\n const result = await (spawn ? SpawnModule : DiabloModule)({wasmBinary: binary.data}).ready;\r\n progress({loaded: 2000000});\r\n return result;\r\n}\r\n\r\nasync function init_game(mpq, spawn, offscreen) {\r\n is_spawn = spawn;\r\n if (offscreen) {\r\n canvas = new OffscreenCanvas(640, 480);\r\n context = canvas.getContext(\"2d\");\r\n imageData = context.createImageData(640, 480);\r\n Object.assign(DApi, DApi_renderOffscreen);\r\n } else {\r\n Object.assign(DApi, DApi_renderLegacy);\r\n }\r\n\r\n if (!mpq) {\r\n const name = (spawn ? 'spawn.mpq' : 'diabdat.mpq');\r\n if (!files.has(name)) {\r\n // This should never happen, but we do support remote loading\r\n files.set(name, new RemoteFile(`${process.env.PUBLIC_URL}/${name}`));\r\n }\r\n }\r\n\r\n progress(\"Loading...\");\r\n let mpqLoaded = 0, mpqTotal = (mpq ? mpq.size : 0), wasmLoaded = 0, wasmTotal = (spawn ? SpawnSize : DiabloSize);\r\n const wasmWeight = 5;\r\n function updateProgress() {\r\n progress(\"Loading...\", mpqLoaded + wasmLoaded * wasmWeight, mpqTotal + wasmTotal * wasmWeight);\r\n }\r\n const loadWasm = initWasm(spawn, e => {\r\n wasmLoaded = Math.min(e.loaded, wasmTotal);\r\n updateProgress();\r\n });\r\n let loadMpq = mpq ? readFile(mpq, e => {\r\n mpqLoaded = e.loaded;\r\n updateProgress();\r\n }) : Promise.resolve(null);\r\n [wasm, mpq] = await Promise.all([loadWasm, loadMpq]);\r\n\r\n if (mpq) {\r\n files.set(spawn ? 'spawn.mpq' : 'diabdat.mpq', new Uint8Array(mpq));\r\n }\r\n\r\n progress(\"Initializing...\");\r\n\r\n const vers = process.env.VERSION.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\r\n\r\n wasm._SNet_InitWebsocket();\r\n wasm._DApi_Init(Math.floor(performance.now()), offscreen ? 1 : 0, parseInt(vers[1]), parseInt(vers[2]), parseInt(vers[3]));\r\n\r\n setInterval(() => {\r\n call_api(\"DApi_Render\", Math.floor(performance.now())); \r\n }, 50);\r\n}\r\n\r\nworker.addEventListener(\"message\", ({data}) => {\r\n switch (data.action) {\r\n case \"init\":\r\n files = data.files;\r\n init_game(data.mpq, data.spawn, data.offscreen).then(\r\n () => worker.postMessage({action: \"loaded\"}),\r\n e => worker.postMessage({action: \"failed\", error: e.toString(), stack: e.stack}));\r\n break;\r\n case \"event\":\r\n call_api(data.func, ...data.params);\r\n break;\r\n case \"packet\":\r\n try_api(() => {\r\n const ptr = wasm._DApi_AllocPacket(data.buffer.byteLength);\r\n wasm.HEAPU8.set(new Uint8Array(data.buffer), ptr);\r\n });\r\n break;\r\n case \"packetBatch\":\r\n try_api(() => {\r\n for (let packet of data.batch) {\r\n const ptr = wasm._DApi_AllocPacket(packet.byteLength);\r\n wasm.HEAPU8.set(new Uint8Array(packet), ptr);\r\n }\r\n });\r\n break;\r\n default:\r\n }\r\n});\r\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/index.html b/index.html index 7e39c50..b8035a5 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -DIABLO
\ No newline at end of file +DIABLO
\ No newline at end of file diff --git a/precache-manifest.2de6133ecdcacdfff2221e0c76abb588.js b/precache-manifest.cf31301b93548f67203153f4878fd624.js similarity index 69% rename from precache-manifest.2de6133ecdcacdfff2221e0c76abb588.js rename to precache-manifest.cf31301b93548f67203153f4878fd624.js index 26047cc..3ff30c3 100644 --- a/precache-manifest.2de6133ecdcacdfff2221e0c76abb588.js +++ b/precache-manifest.cf31301b93548f67203153f4878fd624.js @@ -1,14 +1,14 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "89cb32a691656161f6815807d3d3d44a", - "url": "/diabloweb/c35eead49d6ec2ebde70.worker.js" + "revision": "543006af9a8c55d665d8e290073435d5", + "url": "/diabloweb/f2bd0f1b568ba5e5d268.worker.js" }, { - "revision": "402b5052fe83838be2283db3436a659c", + "revision": "567c5ebc77dd0ab3173257adfee3de93", "url": "/diabloweb/index.html" }, { - "revision": "f1ca639f26970de275d2", + "revision": "ac6fcb7175e8675ef373", "url": "/diabloweb/static/css/main.23365a12.chunk.css" }, { @@ -20,8 +20,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/diabloweb/static/js/5.356be092.chunk.js" }, { - "revision": "f1ca639f26970de275d2", - "url": "/diabloweb/static/js/main.7cab8a01.chunk.js" + "revision": "ac6fcb7175e8675ef373", + "url": "/diabloweb/static/js/main.fe9d2913.chunk.js" }, { "revision": "077fe45e700d7971de0b", @@ -36,12 +36,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/diabloweb/static/js/storage.96fdea8b.chunk.js" }, { - "revision": "4a6435cb8f87797d3b5298e0b11c636d", - "url": "/diabloweb/static/media/Diablo.4a6435cb.wasm" + "revision": "3991174f176be0e0ac0505f7a6d9e420", + "url": "/diabloweb/static/media/Diablo.3991174f.wasm" }, { - "revision": "ef6314a9a7752c34bb50d9a499c1029e", - "url": "/diabloweb/static/media/DiabloSpawn.ef6314a9.wasm" + "revision": "32acbb3960e9e84cc8a85526e8fef6fe", + "url": "/diabloweb/static/media/DiabloSpawn.32acbb39.wasm" }, { "revision": "ddc5d817712fdde5a23034ba0b719c78", diff --git a/service-worker.js b/service-worker.js index 4f47d79..0c28788 100644 --- a/service-worker.js +++ b/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/diabloweb/precache-manifest.2de6133ecdcacdfff2221e0c76abb588.js" + "/diabloweb/precache-manifest.cf31301b93548f67203153f4878fd624.js" ); self.addEventListener('message', (event) => { diff --git a/static/js/main.7cab8a01.chunk.js.map b/static/js/main.7cab8a01.chunk.js.map deleted file mode 100644 index d69f65e..0000000 --- a/static/js/main.7cab8a01.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["fs.js","api/game.worker.js","../node_modules/peerjs/dist sync","serviceWorker.js","api/sound.js","api/load_spawn.js","api/webrtc.js","api/loader.js","App.js","index.js"],"names":["importStorage","Promise","resolve","reject","done","frame","document","createElement","window","addEventListener","_ref","data","method","files","contentWindow","postMessage","src","style","display","body","appendChild","setTimeout","downloadFile","_callee","store","name","file","blob","url","lnk","C_Projects_diabloweb_diabloweb_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default","a","wrap","_context","prev","next","get","toLowerCase","sent","Blob","type","URL","createObjectURL","setAttribute","click","removeChild","revokeObjectURL","console","error","concat","stop","downloadSaves","_callee2","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","_context2","undefined","keys","t0","Symbol","iterator","value","match","t1","return","finish","readFile","reader","FileReader","onload","result","onerror","onabort","readAsArrayBuffer","uploadFile","_callee3","_context3","Uint8Array","set","abrupt","create_fs","_x7","_create_fs","apply","this","arguments","_callee4","load","_i","_Object$entries","_ref7","_ref3","_name","_data","_files","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","_ref6","_ref5","_context4","IdbKvStore","Map","Object","json","entries","call","length","C_Projects_diabloweb_diabloweb_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","t2","DownloadFile","DownloadSaves","update","delete","remove","clear","download","upload","t3","module","exports","Worker","__webpack_require__","p","webpackEmptyContext","req","e","Error","code","id","isLocalhost","Boolean","location","hostname","registerValidSW","swUrl","config","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","log","onUpdate","onSuccess","catch","init_sound","AudioContext","webkitAudioContext","StereoPannerNode","create_sound","duplicate_sound","play_sound","set_volume","stop_sound","delete_sound","context","sounds","create_sound_raw","channels","rate","buffer","createBuffer","i","getChannelData","subarray","gain","createGain","panner","pan","decodeAudioData","srcId","volume","loop","source","Math","pow","relVolume","createBufferSource","node","connect","destination","start","stop_all","sound","slicedToArray","err","SpawnSizes","load_spawn","_x","_x2","_load_spawn","api","fs","spawn","regenerator_default","includes","byteLength","axios","request","process","responseType","onDownloadProgress","onProgress","text","loaded","total","headers","Cache-Control","slice","buffer_reader","classCallCheck","pos","read8","String","fromCharCode","toConsumableArray","buffer_writer","write8","charCodeAt","RejectionReason","JOIN_SUCCESS","JOIN_ALREADY_IN_GAME","JOIN_GAME_NOT_FOUND","JOIN_INCORRECT_PASSWORD","JOIN_VERSION_MISMATCH","JOIN_GAME_FULL","CREATE_GAME_EXISTS","server_packet","info","read","version","read32","write","write32","game_list","count","games","push","read_str","_ref2","writer","reduce","sum","write_str","join_accept","cookie","index","seed","difficulty","join_reject","reason","_ref8","disconnect","_ref9","message","payload","rest","_ref10","turn","_ref11","client_packet","_ref12","create_game","password","_ref13","join_game","_ref14","leave_game","drop_player","_ref15","_ref16","_ref17","PeerID","webrtc_server","_ref18","onMessage","onClose","_this","peer","Peer","on","conn","onConnect","players","myplr","floor","random","onError","off","onOpen","_this2","packet","pkt","send","handle","drop","mask","destroy","close","webrtc_client","_ref19","_this3","pending","needUnreg","unreg","clearTimeout","timeout","webrtc_open","server","client","onRender","ctx","bitmap","images","clip","belt","transferFromImageBitmap","x","y","w","h","image","createImageData","putImageData","save","font","x0","y0","x1","y1","beginPath","rect","_ref4","str","color","r","g","b","fillStyle","fillText","restore","updateBelt","audio","mpq","offscreen","canvas","getContext","alpha","worker","packetQueue","webrtc","action","func","_len","params","Array","_key","batch","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","setCursorPos","openKeyboard","stack","onExit","setCurrentSave","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","transfer","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","setInterval","load_game","do_load_game","reportLink","retail","searchParams","split","map","line","join","userAgent","toString","ReactGA","initialize","pageview","TOUCH_MOVE","TOUCH_RMB","keyboardRule","styleSheets","sheet","cssRules","rule","CSSRule","MEDIA_RULE","conditionText","sub","selectorText","findKeyboardRule","Link","children","props","objectWithoutProperties","react_default","assign","target","rel","App","possibleConstructorReturn","getPrototypeOf","started","loading","dropping","has_spawn","cursorPos","touchControls","touchButtons","touchCtx","touchMods","touchBelt","maxKeyboard","onDrop","dataTransfer","items","kind","getAsFile","getDropFile","preventDefault","setState","onDragEnter","setDropping","onDragOver","isDropFile","onDragLeave","downloadSave","saveName","stopPropagation","onResize","exitPointerLock","onPointerLockChange","screen","innerHeight","height","pointerLocked","game","onMouseMove","_this$mousePos","mousePos","eventMods","onMouseDown","keyboard","element","classList","_this$mousePos2","requestPointerLock","mouseButton","onMouseUp","_this$mousePos3","onKeyDown","keyCode","showKeyboard","key","clearKeySel","onMenu","onKeyUp","onKeyboard","onKeyboardInner","onKeyboardBlur","parseFile","touchButton","touchCanvas","onTouchStart","blur","updateTouchButton","touches","_this$mousePos4","onTouchMove","_this$mousePos5","onTouchEnd","prevTc","_this$mousePos6","setTouchMod","fullscreenElement","requestFullscreen","setCanvas","setElement","setKeyboard","setTouch0","setTouch_","bind","assertThisInitialized","setTouch1","setTouch2","setTouch3","setTouchBelt_","setTouch4","setTouch5","inc","max","left","toFixed","top","width","add","focus","transform","keyboardNum","getBoundingClientRect","right","bottom","progress","reload","idx","slot","drawImage","used","Set","has","drawBelt","_this4","removeEventListener","event","category","passive","capture","pointerLockElement","mozPointerLockElement","min","movementX","movementY","clientX","clientY","round","button","shiftKey","ctrlKey","altKey","len","setSelectionRange","flags","valid","substring","maxValue","parseInt","use","toggle","now","performance","beltTime","release","_this5","touchOther","btn","_loop","identifier","stick","find","t","panPos","v","indexOf","original","_ret","dx","dy","step","offsetHeight","abs","_this6","_this$state","className","classNames","touch","ref","active","onChange","onBlur","spellCheck","App_Link","href","onClick","htmlFor","accept","React","Component","ReactDOM","render","src_App_0","getElementById","origin","fetch","response","contentType","status","ready","unregister","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.7cab8a01.chunk.js","sourcesContent":["import IdbKvStore from 'idb-kv-store';\r\n\r\nconst importStorage = () => new Promise((resolve, reject) => {\r\n let done = false;\r\n const frame = document.createElement('iframe');\r\n window.addEventListener('message', ({data}) => {\r\n if (data.method === 'storage' && !done) {\r\n done = true;\r\n resolve(data.files);\r\n frame.contentWindow.postMessage({method: 'clear'}, '*');\r\n }\r\n });\r\n frame.addEventListener('load', () => {\r\n frame.contentWindow.postMessage({method: 'transfer'}, '*');\r\n });\r\n frame.addEventListener('error', () => {\r\n if (!done) {\r\n done = true;\r\n resolve(null);\r\n }\r\n });\r\n frame.src = \"https://diablo.rivsoft.net/storage.html\";\r\n frame.style.display = \"none\";\r\n document.body.appendChild(frame);\r\n setTimeout(() => {\r\n if (!done) {\r\n done = true;\r\n resolve(null);\r\n }\r\n }, 10000);\r\n});\r\n\r\nasync function downloadFile(store, name) {\r\n const file = await store.get(name.toLowerCase());\r\n if (file) {\r\n const blob = new Blob([file], {type: 'binary/octet-stream'});\r\n const url = URL.createObjectURL(blob);\r\n const lnk = document.createElement('a');\r\n lnk.setAttribute('href', url);\r\n lnk.setAttribute('download', name);\r\n document.body.appendChild(lnk);\r\n lnk.click();\r\n document.body.removeChild(lnk);\r\n URL.revokeObjectURL(url);\r\n } else {\r\n console.error(`File ${name} does not exist`);\r\n }\r\n}\r\n\r\nasync function downloadSaves(store) {\r\n for (let name of await store.keys()) {\r\n if (name.match(/\\.sv$/i)) {\r\n downloadFile(store, name);\r\n }\r\n }\r\n}\r\n\r\nconst readFile = file => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = () => reject(reader.error);\r\n reader.onabort = () => reject();\r\n reader.readAsArrayBuffer(file);\r\n});\r\nasync function uploadFile(store, files, file) {\r\n const data = new Uint8Array(await readFile(file));\r\n files.set(file.name.toLowerCase(), data);\r\n return store.set(file.name.toLowerCase(), data);\r\n}\r\n\r\nexport default async function create_fs(load) {\r\n try {\r\n const store = new IdbKvStore('diablo_fs');\r\n const files = new Map();\r\n for (let [name, data] of Object.entries(await store.json())) {\r\n files.set(name, data);\r\n }\r\n if (load) {\r\n const files = await importStorage();\r\n if (files) {\r\n for (let [name, data] of files) {\r\n files.set(name, data);\r\n store.set(name, data);\r\n }\r\n }\r\n }\r\n window.DownloadFile = name => downloadFile(store, name);\r\n window.DownloadSaves = () => downloadSaves(store);\r\n return {\r\n files,\r\n update: (name, data) => store.set(name, data),\r\n delete: name => store.remove(name),\r\n clear: () => store.clear(),\r\n download: name => downloadFile(store, name),\r\n upload: file => uploadFile(store, files, file),\r\n };\r\n } catch (e) {\r\n window.DownloadFile = () => console.error('IndexedDB is not supported');\r\n window.DownloadSaves = () => console.error('IndexedDB is not supported');\r\n return {\r\n files: new Map(),\r\n update: () => Promise.resolve(),\r\n delete: () => Promise.resolve(),\r\n clear: () => Promise.resolve(),\r\n download: () => Promise.resolve(),\r\n upload: () => Promise.resolve(),\r\n };\r\n } \r\n}\r\n","module.exports = function() {\n return new Worker(__webpack_public_path__ + \"c35eead49d6ec2ebde70.worker.js\");\n};","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 62;","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","function no_sound() {\r\n return {\r\n create_sound: () => 0,\r\n duplicate_sound: () => 0,\r\n play_sound: () => undefined,\r\n set_volume: () => undefined,\r\n stop_sound: () => undefined,\r\n delete_sound: () => undefined,\r\n };\r\n}\r\n\r\nfunction decodeAudioData(context, buffer) {\r\n return new Promise((resolve, reject) => {\r\n context.decodeAudioData(buffer, resolve, reject);\r\n });\r\n}\r\n\r\nexport default function init_sound() {\r\n const AudioContext = window.AudioContext || window.webkitAudioContext;\r\n const StereoPannerNode = window.StereoPannerNode;\r\n if (!AudioContext) {\r\n return no_sound();\r\n }\r\n\r\n let context = null;\r\n try {\r\n context = new AudioContext();\r\n } catch (e) {\r\n }\r\n const sounds = new Map();\r\n\r\n return {\r\n create_sound_raw(id, data, length, channels, rate) {\r\n if (!context) {\r\n return;\r\n }\r\n const buffer = context.createBuffer(channels, length, rate);\r\n for (let i = 0; i < channels; ++i) {\r\n buffer.getChannelData(i).set(data.subarray(i * length, i * length + length));\r\n }\r\n sounds.set(id, {\r\n buffer: Promise.resolve(buffer),\r\n gain: context.createGain(),\r\n panner: StereoPannerNode && new StereoPannerNode(context, {pan: 0}),\r\n });\r\n },\r\n create_sound(id, data) {\r\n if (!context) {\r\n return;\r\n }\r\n const buffer = decodeAudioData(context, data.buffer);\r\n sounds.set(id, {\r\n buffer,\r\n gain: context.createGain(),\r\n panner: StereoPannerNode && new StereoPannerNode(context, {pan: 0}),\r\n });\r\n },\r\n duplicate_sound(id, srcId) {\r\n if (!context) {\r\n return;\r\n }\r\n const src = sounds.get(srcId);\r\n if (!src) {\r\n return;\r\n }\r\n sounds.set(id, {\r\n buffer: src.buffer,\r\n gain: context.createGain(),\r\n panner: StereoPannerNode && new StereoPannerNode(context, {pan: 0}),\r\n });\r\n },\r\n play_sound(id, volume, pan, loop) {\r\n const src = sounds.get(id);\r\n if (src) {\r\n if (src.source) {\r\n src.source.then(source => source.stop());\r\n }\r\n src.gain.gain.value = Math.pow(2.0, volume / 1000.0);\r\n const relVolume = Math.pow(2.0, pan / 1000.0);\r\n if (src.panner) {\r\n src.panner.pan.value = 1.0 - 2.0 / (1.0 + relVolume);\r\n }\r\n src.source = src.buffer.then(buffer => {\r\n const source = context.createBufferSource();\r\n source.buffer = buffer;\r\n source.loop = !!loop;\r\n let node = source.connect(src.gain);\r\n if (src.panner) {\r\n node = node.connect(src.panner);\r\n }\r\n node.connect(context.destination);\r\n source.start();\r\n return source;\r\n });\r\n }\r\n },\r\n set_volume(id, volume) {\r\n const src = sounds.get(id);\r\n if (src) {\r\n src.gain.gain.value = Math.pow(2.0, volume / 1000.0);\r\n }\r\n },\r\n stop_sound(id) {\r\n const src = sounds.get(id);\r\n if (src && src.source) {\r\n src.source.then(source => source.stop());\r\n delete src.source;\r\n }\r\n },\r\n delete_sound(id) {\r\n const src = sounds.get(id);\r\n if (src && src.source) {\r\n src.source.then(source => source.stop());\r\n }\r\n sounds.delete(id);\r\n },\r\n\r\n stop_all() {\r\n for (let [, sound] of sounds) {\r\n if (sound.source) {\r\n sound.source.then(source => source.stop());\r\n }\r\n }\r\n sounds.clear();\r\n context = null;\r\n }\r\n };\r\n}\r\n","import axios from 'axios';\r\n\r\nconst SpawnSizes = [50274091, 25830791];\r\n\r\nexport { SpawnSizes };\r\n\r\nexport default async function load_spawn(api, fs) {\r\n let file = fs.files.get('spawn.mpq');\r\n if (file && !SpawnSizes.includes(file.byteLength)) {\r\n fs.files.delete('spawn.mpq');\r\n await fs.delete('spawn.mpq');\r\n file = null;\r\n }\r\n if (!file) {\r\n const spawn = await axios.request({\r\n url: process.env.PUBLIC_URL + '/spawn.mpq',\r\n responseType: 'arraybuffer',\r\n onDownloadProgress: e => {\r\n if (api.onProgress) {\r\n api.onProgress({text: 'Downloading...', loaded: e.loaded, total: e.total || SpawnSizes[1]});\r\n }\r\n },\r\n headers: {\r\n 'Cache-Control': 'max-age=31536000'\r\n }\r\n });\r\n if (!SpawnSizes.includes(spawn.data.byteLength)) {\r\n throw Error(\"Invalid spawn.mpq size. Try clearing cache and refreshing the page.\");\r\n }\r\n const data = new Uint8Array(spawn.data);\r\n fs.files.set('spawn.mpq', data);\r\n fs.update('spawn.mpq', data.slice());\r\n }\r\n return fs;\r\n}\r\n","import Peer from 'peerjs';\r\n\r\nclass buffer_reader {\r\n constructor(buffer) {\r\n this.buffer = (buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer));\r\n this.pos = 0;\r\n }\r\n done() {\r\n return this.pos === this.buffer.byteLength;\r\n }\r\n read8() {\r\n if (this.pos >= this.buffer.byteLength) {\r\n throw Error('packet too small');\r\n }\r\n return this.buffer[this.pos++];\r\n }\r\n read16() {\r\n const {pos, buffer} = this;\r\n if (pos + 2 > buffer.byteLength) {\r\n throw Error('packet too small');\r\n }\r\n const result = buffer[pos] | (buffer[pos + 1] << 8);\r\n this.pos += 2;\r\n return result;\r\n }\r\n read32() {\r\n const {pos, buffer} = this;\r\n if (pos + 4 > buffer.byteLength) {\r\n throw Error('packet too small');\r\n }\r\n const result = buffer[pos] | (buffer[pos + 1] << 8) | (buffer[pos + 2] << 16) | (buffer[pos + 3] << 24);\r\n this.pos += 4;\r\n return result;\r\n }\r\n read_str() {\r\n const length = this.read8();\r\n const {pos, buffer} = this;\r\n if (pos + length > buffer.byteLength) {\r\n throw Error('packet too small');\r\n }\r\n const result = String.fromCharCode(...buffer.subarray(pos, pos + length));\r\n this.pos += length;\r\n return result;\r\n }\r\n rest() {\r\n const result = this.buffer.subarray(this.pos);\r\n this.pos = this.buffer.length;\r\n return result;\r\n }\r\n}\r\nclass buffer_writer {\r\n constructor(length) {\r\n this.buffer = new Uint8Array(length);\r\n this.pos = 0;\r\n }\r\n get result() {\r\n return this.buffer.buffer;\r\n }\r\n write8(value) {\r\n this.buffer[this.pos++] = value;\r\n return this;\r\n }\r\n write16(value) {\r\n const {pos, buffer} = this;\r\n buffer[pos] = value;\r\n buffer[pos + 1] = value >> 8;\r\n this.pos += 2;\r\n return this;\r\n }\r\n write32(value) {\r\n const {pos, buffer} = this;\r\n buffer[pos] = value;\r\n buffer[pos + 1] = value >> 8;\r\n buffer[pos + 2] = value >> 16;\r\n buffer[pos + 3] = value >> 24;\r\n this.pos += 4;\r\n return this;\r\n }\r\n write_str(value) {\r\n const length = value.length;\r\n this.write8(length);\r\n const {pos, buffer} = this;\r\n for (let i = 0; i < length; ++i) {\r\n buffer[pos + i] = value.charCodeAt(i);\r\n }\r\n this.pos += length;\r\n return this;\r\n }\r\n rest(value) {\r\n this.buffer.set(value, this.pos);\r\n return this;\r\n }\r\n}\r\n\r\nconst RejectionReason = {\r\n JOIN_SUCCESS: 0x00,\r\n JOIN_ALREADY_IN_GAME: 0x01,\r\n JOIN_GAME_NOT_FOUND: 0x02,\r\n JOIN_INCORRECT_PASSWORD: 0x03,\r\n JOIN_VERSION_MISMATCH: 0x04,\r\n JOIN_GAME_FULL: 0x05,\r\n CREATE_GAME_EXISTS: 0x06,\r\n};\r\n\r\nconst server_packet = {\r\n info: {\r\n code: 0x32,\r\n read: reader => ({version: reader.read32()}),\r\n write: ({version}) => new buffer_writer(5).write8(server_packet.info.code).write32(version).result,\r\n },\r\n game_list: {\r\n code: 0x21,\r\n read: reader => {\r\n const count = reader.read8();\r\n const games = [];\r\n for (let i = 0; i < count; ++i) {\r\n games.push({type: reader.read32(), name: reader.read_str()});\r\n }\r\n return {games};\r\n },\r\n write: ({games}) => {\r\n const writer = new buffer_writer(games.reduce((sum, {name}) => sum + 5 + name.length, 2));\r\n writer.write8(server_packet.game_list.code);\r\n writer.write8(games.length);\r\n for (let {code, name} of games) {\r\n writer.write32(code);\r\n writer.write_str(name);\r\n }\r\n return writer.result;\r\n },\r\n },\r\n join_accept: {\r\n code: 0x12,\r\n read: reader => ({cookie: reader.read32(), index: reader.read8(), seed: reader.read32(), difficulty: reader.read32()}),\r\n write: ({cookie, index, seed, difficulty}) => new buffer_writer(14).write8(server_packet.join_accept.code).write32(cookie).write8(index).write32(seed).write32(difficulty).result,\r\n },\r\n join_reject: {\r\n code: 0x15,\r\n read: reader => ({cookie: reader.read32(), reason: reader.read8()}),\r\n write: ({cookie, reason}) => new buffer_writer(6).write8(server_packet.join_reject.code).write32(cookie).write8(reason).result,\r\n },\r\n connect: {\r\n code: 0x13,\r\n read: reader => ({id: reader.read8()}),\r\n write: ({id}) => new buffer_writer(2).write8(server_packet.connect.code).write8(id).result,\r\n },\r\n disconnect: {\r\n code: 0x14,\r\n read: reader => ({id: reader.read8(), reason: reader.read32()}),\r\n write: ({id, reason}) => new buffer_writer(6).write8(server_packet.disconnect.code).write8(id).write32(reason).result,\r\n },\r\n message: {\r\n code: 0x01,\r\n read: reader => ({id: reader.read8(), payload: reader.rest()}),\r\n write: ({id, payload}) => new buffer_writer(2 + payload.byteLength).write8(server_packet.message.code).write8(id).rest(payload).result,\r\n },\r\n turn: {\r\n code: 0x02,\r\n read: reader => ({id: reader.read8(), turn: reader.read32()}),\r\n write: ({id, turn}) => new buffer_writer(6).write8(server_packet.turn.code).write8(id).write32(turn).result,\r\n },\r\n};\r\n\r\nconst client_packet = {\r\n info: {\r\n code: 0x31,\r\n read: reader => ({version: reader.read32()}),\r\n write: ({version}) => new buffer_writer(5).write8(client_packet.info.code).write32(version).result,\r\n },\r\n game_list: {\r\n code: 0x21,\r\n read: () => ({}),\r\n write: () => new buffer_writer(1).write8(client_packet.game_list.code).result,\r\n },\r\n create_game: {\r\n code: 0x22,\r\n read: reader => ({cookie: reader.read32(), name: reader.read_str(), password: reader.read_str(), difficulty: reader.read32()}),\r\n write: ({cookie, name, password, difficulty}) => new buffer_writer(11 + name.length + password.length)\r\n .write8(client_packet.create_game.code).write32(cookie).write_str(name).write_str(password).write32(difficulty).result,\r\n },\r\n join_game: {\r\n code: 0x23,\r\n read: reader => ({cookie: reader.read32(), name: reader.read_str(), password: reader.read_str()}),\r\n write: ({cookie, name, password}) => new buffer_writer(7 + name.length + password.length)\r\n .write8(client_packet.join_game.code).write32(cookie).write_str(name).write_str(password).result,\r\n },\r\n leave_game: {\r\n code: 0x24,\r\n read: () => ({}),\r\n write: () => new buffer_writer(1).write8(client_packet.leave_game.code).result,\r\n },\r\n drop_player: {\r\n code: 0x03,\r\n read: reader => ({id: reader.read8(), reason: reader.read32()}),\r\n write: ({id, reason}) => new buffer_writer(6).write8(client_packet.drop_player.code).write8(id).write32(reason).result,\r\n },\r\n message: {\r\n code: 0x01,\r\n read: reader => ({id: reader.read8(), payload: reader.rest()}),\r\n write: ({id, payload}) => new buffer_writer(2 + payload.byteLength).write8(client_packet.message.code).write8(id).rest(payload).result,\r\n },\r\n turn: {\r\n code: 0x02,\r\n read: reader => ({turn: reader.read32()}),\r\n write: ({turn}) => new buffer_writer(5).write8(client_packet.turn.code).write32(turn).result,\r\n },\r\n};\r\n\r\n/*function log_packet(data, type) {\r\n const reader = new buffer_reader(data);\r\n const id = reader.read8();\r\n for (let [name, {code, read}] of Object.entries(type)) {\r\n if (code === id && (name !== 'message' && name !== 'turn')) {\r\n console.log(`${type === client_packet ? 'client_packet' : 'server_packet'}.${name} ${JSON.stringify(read(reader))}`);\r\n }\r\n }\r\n}*/\r\n\r\nconst PeerID = name => `diabloweb_${name}`;\r\nconst MAX_PLRS = 4;\r\n\r\nclass webrtc_server {\r\n constructor(version, {cookie, name, password, difficulty}, onMessage, onClose) {\r\n this.version = version;\r\n this.name = name;\r\n this.password = password;\r\n this.difficulty = difficulty;\r\n this.onMessage = onMessage;\r\n this.onClose = onClose;\r\n\r\n this.peer = new Peer(PeerID(name));\r\n this.peer.on('connection', conn => this.onConnect(conn));\r\n this.players = [];\r\n this.myplr = 0;\r\n\r\n this.seed = Math.floor(Math.random() * Math.pow(2, 32));\r\n\r\n const onError = () => {\r\n onMessage(server_packet.join_reject.write({cookie, reason: RejectionReason.CREATE_GAME_EXISTS}));\r\n onClose();\r\n this.peer.off('error', onError);\r\n this.peer.off('open', onOpen);\r\n };\r\n const onOpen = () => {\r\n //console.log('peer open');\r\n setTimeout(() => {\r\n onMessage(server_packet.join_accept.write({cookie, index: 0, seed: this.seed, difficulty}));\r\n onMessage(server_packet.connect.write({id: 0}));\r\n }, 0);\r\n this.peer.off('error', onError);\r\n this.peer.off('open', onOpen);\r\n };\r\n this.peer.on('error', onError);\r\n this.peer.on('open', onOpen);\r\n\r\n //this.peer.on('error', err => console.log('peer error:', err));\r\n }\r\n\r\n onConnect(conn) {\r\n //conn.on('error', err => console.log('conn error:', err));\r\n //console.log('conn open');\r\n const peer = {conn};\r\n conn.on('data', packet => {\r\n const reader = new buffer_reader(packet);\r\n const code = reader.read8();\r\n let pkt;\r\n switch (code) {\r\n case client_packet.info.code:\r\n pkt = client_packet.info.read(reader);\r\n peer.version = pkt.version;\r\n break;\r\n case client_packet.join_game.code:\r\n pkt = client_packet.join_game.read(reader);\r\n if (peer.version !== this.version) {\r\n conn.send(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_VERSION_MISMATCH}));\r\n } else if (pkt.name !== this.name) {\r\n conn.send(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_GAME_NOT_FOUND}));\r\n } else if (pkt.password !== this.password) {\r\n conn.send(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_INCORRECT_PASSWORD}));\r\n } else {\r\n let i = 1;\r\n while (i < MAX_PLRS && this.players[i]) {\r\n ++i;\r\n }\r\n if (i >= MAX_PLRS) {\r\n conn.send(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_GAME_FULL})); \r\n } else {\r\n this.players[i] = peer;\r\n peer.id = i;\r\n conn.send(server_packet.join_accept.write({cookie: pkt.cookie, index: i, seed: this.seed, difficulty: this.difficulty}));\r\n this.send(0xFF, server_packet.connect.write({id: i}));\r\n }\r\n }\r\n break;\r\n default:\r\n if (peer.id != null) {\r\n this.handle(peer.id, code, reader);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (!reader.done()) {\r\n throw Error('packet too large');\r\n }\r\n });\r\n conn.on('close', () => {\r\n //console.log('conn close');\r\n if (peer.id != null) {\r\n this.drop(peer.id, 0x40000006);\r\n }\r\n });\r\n }\r\n\r\n send(mask, pkt) {\r\n for (let i = 1; i < MAX_PLRS; ++i) {\r\n if ((mask & (1 << i)) && this.players[i]) {\r\n if (this.players[i].conn) {\r\n this.players[i].conn.send(pkt);\r\n }\r\n }\r\n }\r\n // self last since it will destroy the buffer\r\n if (mask & 1) {\r\n this.onMessage(pkt);\r\n }\r\n }\r\n\r\n drop(id, reason) {\r\n if (id === 0) {\r\n for (let i = 1; i < MAX_PLRS; ++i) {\r\n this.drop(i, 0x40000006);\r\n }\r\n this.onMessage(server_packet.disconnect.write({id, reason}));\r\n this.peer.destroy();\r\n this.onClose();\r\n } else if (this.players[id]) {\r\n this.send(0xFF, server_packet.disconnect.write({id, reason}));\r\n this.players[id].id = null;\r\n if (this.players[id].conn) {\r\n this.players[id].conn.close();\r\n }\r\n this.players[id] = null;\r\n }\r\n }\r\n\r\n handle(id, code, reader) {\r\n let pkt;\r\n switch (code) {\r\n case client_packet.leave_game.code:\r\n pkt = client_packet.leave_game.read(reader);\r\n this.drop(id, 3);\r\n break;\r\n case client_packet.drop_player.code:\r\n pkt = client_packet.drop_player.read(reader);\r\n this.drop(pkt.id, pkt.reason);\r\n break;\r\n case client_packet.message.code:\r\n pkt = client_packet.message.read(reader);\r\n this.send(pkt.id === 0xFF ? ~(1 << id) : (1 << pkt.id), server_packet.message.write({id, payload: pkt.payload}));\r\n break;\r\n case client_packet.turn.code:\r\n pkt = client_packet.turn.read(reader);\r\n this.send(~(1 << id), server_packet.turn.write({id, turn: pkt.turn}));\r\n break;\r\n default:\r\n throw Error(`invalid packet ${code}`);\r\n }\r\n }\r\n}\r\n\r\nclass webrtc_client {\r\n pending = [];\r\n\r\n constructor(version, {cookie, name, password}, onMessage, onClose) {\r\n this.peer = new Peer();\r\n this.conn = this.peer.connect(PeerID(name));\r\n\r\n let needUnreg = true;\r\n const unreg = () => {\r\n if (!needUnreg) {\r\n return;\r\n }\r\n needUnreg = false;\r\n this.peer.off('error', onError);\r\n this.conn.off('error', onError);\r\n this.conn.off('open', onOpen);\r\n clearTimeout(timeout);\r\n };\r\n const onError = () => {\r\n onMessage(server_packet.join_reject.write({cookie, reason: RejectionReason.JOIN_GAME_NOT_FOUND}));\r\n onClose();\r\n unreg();\r\n };\r\n const onOpen = () => {\r\n this.conn.send(client_packet.info.write({version}));\r\n this.conn.send(client_packet.join_game.write({cookie, name, password}));\r\n for (let pkt of this.pending) {\r\n this.conn.send(pkt);\r\n }\r\n this.pending = null;\r\n this.conn.off('open', onOpen);\r\n };\r\n const timeout = setTimeout(onError, 10000);\r\n this.peer.on('error', onError);\r\n this.conn.on('error', onError);\r\n this.conn.on('open', onOpen);\r\n\r\n //this.peer.on('error', err => console.log('peer error:', err));\r\n //this.conn.on('error', err => console.log('conn error:', err));\r\n\r\n this.conn.on('data', data => {\r\n unreg();\r\n const reader = new buffer_reader(data);\r\n const code = reader.read8();\r\n let pkt;\r\n switch (code) {\r\n case server_packet.join_accept.code:\r\n pkt = server_packet.join_accept.read(reader);\r\n this.myplr = pkt.index;\r\n break;\r\n case server_packet.join_reject.code:\r\n onClose();\r\n break;\r\n case server_packet.disconnect.code:\r\n pkt = server_packet.disconnect.read(reader);\r\n if (pkt.id === 'myplr') {\r\n onClose();\r\n }\r\n break;\r\n default:\r\n }\r\n onMessage(data);\r\n });\r\n this.conn.on('close', data => {\r\n onClose();\r\n });\r\n }\r\n\r\n send(packet) {\r\n if (this.pending) {\r\n this.pending.push(packet);\r\n } else {\r\n this.conn.send(packet);\r\n }\r\n }\r\n}\r\n\r\nexport default function webrtc_open(onMessage) {\r\n let server = null, client = null;\r\n\r\n let version = 0;\r\n\r\n /*const prevMessage = onMessage;\r\n onMessage = data => {\r\n log_packet(data, server_packet);\r\n prevMessage(data);\r\n };*/\r\n\r\n return {\r\n send: function(packet) {\r\n //log_packet(packet, client_packet);\r\n const reader = new buffer_reader(packet);\r\n const code = reader.read8();\r\n let pkt;\r\n switch (code) {\r\n case client_packet.info.code:\r\n pkt = client_packet.info.read(reader);\r\n version = pkt.version;\r\n break;\r\n case client_packet.create_game.code:\r\n pkt = client_packet.create_game.read(reader);\r\n if (server || client) {\r\n onMessage(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_ALREADY_IN_GAME}));\r\n } else {\r\n server = new webrtc_server(version, pkt, onMessage, () => server = null);\r\n }\r\n break;\r\n case client_packet.join_game.code:\r\n pkt = client_packet.join_game.read(reader);\r\n if (server || client) {\r\n onMessage(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_ALREADY_IN_GAME}));\r\n } else {\r\n client = new webrtc_client(version, pkt, onMessage, () => client = null);\r\n }\r\n break;\r\n default:\r\n if (server) {\r\n server.handle(0, code, reader);\r\n if (code === client_packet.leave_game.code) {\r\n server = null;\r\n }\r\n } else if (client) {\r\n client.send(packet);\r\n if (code === client_packet.leave_game.code) {\r\n client = null;\r\n }\r\n return;\r\n } else if (code !== client_packet.leave_game.code) {\r\n throw Error(`invalid packet ${code}`);\r\n }\r\n }\r\n if (!reader.done()) {\r\n throw Error('packet too large');\r\n }\r\n },\r\n };\r\n}\r\n","import Worker from './game.worker.js';\r\nimport init_sound from './sound';\r\nimport load_spawn from './load_spawn';\r\nimport webrtc_open from './webrtc';\r\n\r\nfunction onRender(api, ctx, {bitmap, images, text, clip, belt}) {\r\n if (bitmap) {\r\n ctx.transferFromImageBitmap(bitmap);\r\n } else {\r\n for (let {x, y, w, h, data} of images) {\r\n const image = ctx.createImageData(w, h);\r\n image.data.set(data);\r\n ctx.putImageData(image, x, y);\r\n }\r\n if (text.length) {\r\n ctx.save();\r\n ctx.font = 'bold 13px Times New Roman';\r\n if (clip) {\r\n const {x0, y0, x1, y1} = clip;\r\n ctx.beginPath();\r\n ctx.rect(x0, y0, x1 - x0, y1 - y0);\r\n ctx.clip();\r\n }\r\n for (let {x, y, text: str, color} of text) {\r\n const r = ((color >> 16) & 0xFF);\r\n const g = ((color >> 8) & 0xFF);\r\n const b = (color & 0xFF);\r\n ctx.fillStyle = `rgb(${r}, ${g}, ${b})`;\r\n ctx.fillText(str, x, y + 22);\r\n }\r\n ctx.restore();\r\n }\r\n }\r\n\r\n api.updateBelt(belt);\r\n}\r\n\r\nfunction testOffscreen() {\r\n return false;\r\n // This works but I couldn't see any performance difference, and support for 2D canvas in workers is very poor.\r\n // In this mode, instead of sending a batch of areas to draw back to the main thread, the worker does all drawing on its own and sends a complete bitmap object back.\r\n // However, this effectively clears the worker's canvas, so we need to redraw the whole frame every time, which defeats the performance gained from reduced copying.\r\n /*try {\r\n const canvas = document.createElement(\"canvas\");\r\n const offscreen = canvas.transferControlToOffscreen();\r\n const context = offscreen.getContext(\"2d\");\r\n return context != null;\r\n } catch (e) {\r\n return false;\r\n }*/\r\n}\r\n\r\nasync function do_load_game(api, audio, mpq, spawn) {\r\n const fs = await api.fs;\r\n if (spawn && !mpq) {\r\n await load_spawn(api, fs);\r\n }\r\n\r\n let context = null, offscreen = false;\r\n if (testOffscreen()) {\r\n context = api.canvas.getContext(\"bitmaprenderer\");\r\n offscreen = true;\r\n } else {\r\n context = api.canvas.getContext(\"2d\", {alpha: false});\r\n }\r\n return await new Promise((resolve, reject) => {\r\n try {\r\n const worker = new Worker();\r\n\r\n let packetQueue = [];\r\n const webrtc = webrtc_open(data => {\r\n packetQueue.push(data);\r\n });\r\n\r\n worker.addEventListener(\"message\", ({data}) => {\r\n switch (data.action) {\r\n case \"loaded\":\r\n resolve((func, ...params) => worker.postMessage({action: \"event\", func, params}));\r\n break;\r\n case \"render\":\r\n onRender(api, context, data.batch);\r\n break;\r\n case \"audio\":\r\n audio[data.func](...data.params);\r\n break;\r\n case \"audioBatch\":\r\n for (let {func, params} of data.batch) {\r\n audio[func](...params);\r\n }\r\n break;\r\n case \"fs\":\r\n fs[data.func](...data.params);\r\n break;\r\n case \"cursor\":\r\n api.setCursorPos(data.x, data.y);\r\n break;\r\n case \"keyboard\":\r\n api.openKeyboard(data.rect);\r\n break;\r\n case \"error\":\r\n audio.stop_all();\r\n api.onError(data.error, data.stack);\r\n break;\r\n case \"failed\":\r\n reject(Error(data.stack || data.error));\r\n break;\r\n case \"progress\":\r\n api.onProgress({text: data.text, loaded: data.loaded, total: data.total});\r\n break;\r\n case \"exit\":\r\n api.onExit();\r\n break;\r\n case \"current_save\":\r\n api.setCurrentSave(data.name);\r\n break;\r\n case \"packet\":\r\n webrtc.send(data.buffer);\r\n break;\r\n case \"packetBatch\":\r\n for (let packet of data.batch) {\r\n webrtc.send(packet);\r\n }\r\n break;\r\n default:\r\n }\r\n }); \r\n const transfer= [];\r\n for (let [, file] of fs.files) {\r\n transfer.push(file.buffer);\r\n }\r\n worker.postMessage({action: \"init\", files: fs.files, mpq, spawn, offscreen}, transfer);\r\n setInterval(() => {\r\n if (packetQueue.length) {\r\n worker.postMessage({action: \"packetBatch\", batch: packetQueue}, packetQueue);\r\n packetQueue.length = 0;\r\n }\r\n }, 20);\r\n delete fs.files;\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n}\r\n\r\nexport default function load_game(api, mpq, spawn) {\r\n const audio = init_sound();\r\n return do_load_game(api, audio, mpq, spawn);\r\n}\r\n","import React from 'react';\r\nimport './App.scss';\r\nimport classNames from 'classnames';\r\nimport ReactGA from 'react-ga';\r\n\r\nimport create_fs from './fs';\r\nimport load_game from './api/loader';\r\nimport { SpawnSizes } from './api/load_spawn';\r\n\r\nimport Peer from 'peerjs';\r\n\r\nwindow.Peer = Peer;\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n ReactGA.initialize('UA-43123589-6');\r\n ReactGA.pageview('/');\r\n}\r\n\r\nfunction reportLink(e, retail) {\r\n const message = e.stack || e.message || \"Unknown error\";\r\n const url = new URL(\"https://github.com/d07RiV/diabloweb/issues/new\");\r\n url.searchParams.set(\"body\",\r\n`**Description:**\r\n[Please describe what you were doing before the error occurred]\r\n\r\n**App version:**\r\nDiabloWeb ${process.env.VERSION} (${retail ? 'Retail' : 'Shareware'})\r\n\r\n**Error message:**\r\n \r\n${message.split(\"\\n\").map(line => \" \" + line).join(\"\\n\")}\r\n\r\n**User agent:**\r\n\r\n ${navigator.userAgent}\r\n\r\n**Save file:**\r\n[Please attach the save file, if applicable. The error box should have a link to download the current save you were playing; alternatively, you can open dev console on the game page (F12) and type in ${\"`DownloadSaves()`\"}]\r\n`);\r\n return url.toString();\r\n}\r\n\r\nfunction isDropFile(e) {\r\n if (e.dataTransfer.items) {\r\n for (let i = 0; i < e.dataTransfer.items.length; ++i) {\r\n if (e.dataTransfer.items[i].kind === \"file\") {\r\n return true;\r\n }\r\n }\r\n } if (e.dataTransfer.files.length) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction getDropFile(e) {\r\n if (e.dataTransfer.items) {\r\n for (let i = 0; i < e.dataTransfer.items.length; ++i) {\r\n if (e.dataTransfer.items[i].kind === \"file\") {\r\n return e.dataTransfer.items[i].getAsFile();\r\n }\r\n }\r\n } if (e.dataTransfer.files.length) {\r\n return e.dataTransfer.files[0];\r\n }\r\n}\r\n\r\nconst TOUCH_MOVE = 0;\r\nconst TOUCH_RMB = 1;\r\nconst TOUCH_SHIFT = 2;\r\n\r\nfunction findKeyboardRule() {\r\n for (let sheet of document.styleSheets) {\r\n for (let rule of sheet.cssRules) {\r\n if (rule.type === CSSRule.MEDIA_RULE && rule.conditionText === '(min-aspect-ratio: 3/1)') {\r\n for (let sub of rule.cssRules) {\r\n if (sub.selectorText === '.App.keyboard .Body .inner') {\r\n return sub;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet keyboardRule = null;\r\ntry {\r\n keyboardRule = findKeyboardRule();\r\n} catch (e) {\r\n}\r\n\r\nconst Link = ({children, ...props}) => {children};\r\n\r\nclass App extends React.Component {\r\n files = new Map();\r\n state = {started: false, loading: false, dropping: 0, has_spawn: false};\r\n cursorPos = {x: 0, y: 0};\r\n\r\n touchControls = false;\r\n touchButtons = [null, null, null, null, null, null];\r\n touchCtx = [null, null, null, null, null, null];\r\n touchMods = [false, false, false, false, false, false];\r\n touchBelt = [-1, -1, -1, -1, -1, -1];\r\n maxKeyboard = 0;\r\n\r\n fs = create_fs(true);\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.setTouch0 = this.setTouch_.bind(this, 0);\r\n this.setTouch1 = this.setTouch_.bind(this, 1);\r\n this.setTouch2 = this.setTouch_.bind(this, 2);\r\n this.setTouch3 = this.setTouchBelt_.bind(this, 3);\r\n this.setTouch4 = this.setTouchBelt_.bind(this, 4);\r\n this.setTouch5 = this.setTouchBelt_.bind(this, 5);\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener(\"drop\", this.onDrop, true);\r\n document.addEventListener(\"dragover\", this.onDragOver, true);\r\n document.addEventListener(\"dragenter\", this.onDragEnter, true);\r\n document.addEventListener(\"dragleave\", this.onDragLeave, true);\r\n\r\n this.fs.then(fs => {\r\n const spawn = fs.files.get('spawn.mpq');\r\n if (spawn && SpawnSizes.includes(spawn.byteLength)) {\r\n this.setState({has_spawn: true});\r\n }\r\n });\r\n }\r\n\r\n onDrop = e => {\r\n const file = getDropFile(e);\r\n if (file) {\r\n e.preventDefault();\r\n this.start(file);\r\n }\r\n this.setState({dropping: 0});\r\n }\r\n onDragEnter = e => {\r\n e.preventDefault();\r\n this.setDropping(1);\r\n }\r\n onDragOver = e => {\r\n if (isDropFile(e)) {\r\n e.preventDefault();\r\n }\r\n }\r\n onDragLeave = e => {\r\n this.setDropping(-1);\r\n }\r\n setDropping(inc) {\r\n this.setState(({dropping}) => ({dropping: Math.max(dropping + inc, 0)}));\r\n }\r\n\r\n onError(message, stack) {\r\n this.setState(({error}) => !error && {error: {message, stack}});\r\n }\r\n\r\n openKeyboard(rect) {\r\n if (rect) {\r\n this.showKeyboard = {\r\n left: `${(100 * (rect[0] - 10) / 640).toFixed(2)}%`,\r\n top: `${(100 * (rect[1] - 10) / 480).toFixed(2)}%`,\r\n width: `${(100 * (rect[2] - rect[0] + 20) / 640).toFixed(2)}%`,\r\n height: `${(100 * (rect[3] - rect[1] + 20) / 640).toFixed(2)}%`,\r\n };\r\n this.maxKeyboard = rect[4];\r\n this.element.classList.add(\"keyboard\");\r\n Object.assign(this.keyboard.style, this.showKeyboard);\r\n this.keyboard.focus();\r\n if (keyboardRule) {\r\n keyboardRule.style.transform = `translate(-50%, ${(-(rect[1] + rect[3]) * 56.25 / 960).toFixed(2)}vw)`;\r\n }\r\n } else {\r\n this.showKeyboard = false;\r\n this.element.classList.remove(\"keyboard\");\r\n this.keyboard.blur();\r\n this.keyboard.value = \"\";\r\n this.keyboardNum = 0;\r\n }\r\n }\r\n\r\n setCursorPos(x, y) {\r\n const rect = this.canvas.getBoundingClientRect();\r\n this.cursorPos = {\r\n x: rect.left + (rect.right - rect.left) * x / 640,\r\n y: rect.top + (rect.bottom - rect.top) * y / 480,\r\n };\r\n setTimeout(() => {\r\n this.game(\"DApi_Mouse\", 0, 0, 0, x, y);\r\n });\r\n }\r\n\r\n onProgress(progress) {\r\n this.setState({progress});\r\n }\r\n\r\n onExit() {\r\n if (!this.state.error) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n setCurrentSave(name) {\r\n this.saveName = name;\r\n }\r\n downloadSave = e => {\r\n this.fs.then(fs => this.saveName && fs.download(this.saveName));\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n drawBelt(idx, slot) {\r\n if (!this.canvas) return;\r\n if (!this.touchButtons[idx]) {\r\n return;\r\n }\r\n this.touchBelt[idx] = slot;\r\n if (slot >= 0) {\r\n this.touchButtons[idx].style.display = \"block\";\r\n this.touchCtx[idx].drawImage(this.canvas, 205 + 29 * slot, 357, 28, 28, 0, 0, 28, 28);\r\n } else {\r\n this.touchButtons[idx].style.display = \"none\";\r\n }\r\n }\r\n\r\n updateBelt(belt) {\r\n if (belt) {\r\n const used = new Set();\r\n let pos = 3;\r\n for (let i = 0; i < belt.length && pos < 6; ++i) {\r\n if (belt[i] >= 0 && !used.has(belt[i])) {\r\n this.drawBelt(pos++, i);\r\n used.add(belt[i]);\r\n }\r\n }\r\n for (; pos < 6; ++pos) {\r\n this.drawBelt(pos, -1);\r\n }\r\n } else {\r\n this.drawBelt(3, -1);\r\n this.drawBelt(4, -1);\r\n this.drawBelt(5, -1);\r\n }\r\n }\r\n\r\n start(file) {\r\n if (file && file.name.match(/\\.sv$/i)) {\r\n this.fs.then(fs => fs.upload(file)).then(console.log(`Updated ${file.name}`));\r\n return;\r\n }\r\n\r\n document.removeEventListener(\"drop\", this.onDrop, true);\r\n document.removeEventListener(\"dragover\", this.onDragOver, true);\r\n document.removeEventListener(\"dragenter\", this.onDragEnter, true);\r\n document.removeEventListener(\"dragleave\", this.onDragLeave, true);\r\n this.setState({dropping: 0});\r\n\r\n const retail = !!(file && file.name.match(/^diabdat\\.mpq$/i));\r\n if (process.env.NODE_ENV === 'production') {\r\n ReactGA.event({\r\n category: 'Game',\r\n action: retail ? 'Start Retail' : 'Start Shareware',\r\n });\r\n }\r\n\r\n this.setState({loading: true, retail});\r\n\r\n load_game(this, file, !retail).then(game => {\r\n this.game = game;\r\n\r\n document.addEventListener('mousemove', this.onMouseMove, true);\r\n document.addEventListener('mousedown', this.onMouseDown, true);\r\n document.addEventListener('mouseup', this.onMouseUp, true);\r\n document.addEventListener('keydown', this.onKeyDown, true);\r\n document.addEventListener('keyup', this.onKeyUp, true);\r\n document.addEventListener('contextmenu', this.onMenu, true);\r\n\r\n document.addEventListener('touchstart', this.onTouchStart, {passive: false, capture: true});\r\n document.addEventListener('touchmove', this.onTouchMove, {passive: false, capture: true});\r\n document.addEventListener('touchend', this.onTouchEnd, {passive: false, capture: true});\r\n\r\n document.addEventListener('pointerlockchange', this.onPointerLockChange);\r\n window.addEventListener('resize', this.onResize);\r\n\r\n this.setState({started: true});\r\n }, e => this.onError(e.message, e.stack));\r\n }\r\n\r\n pointerLocked() {\r\n return document.pointerLockElement === this.canvas || document.mozPointerLockElement === this.canvas;\r\n }\r\n\r\n mousePos(e) {\r\n const rect = this.canvas.getBoundingClientRect();\r\n if (this.pointerLocked()) {\r\n this.cursorPos.x = Math.max(rect.left, Math.min(rect.right, this.cursorPos.x + e.movementX));\r\n this.cursorPos.y = Math.max(rect.top, Math.min(rect.bottom, this.cursorPos.y + e.movementY));\r\n } else {\r\n this.cursorPos = {x: e.clientX, y: e.clientY};\r\n }\r\n return {\r\n x: Math.max(0, Math.min(Math.round((this.cursorPos.x - rect.left) / (rect.right - rect.left) * 640), 639)),\r\n y: Math.max(0, Math.min(Math.round((this.cursorPos.y - rect.top) / (rect.bottom - rect.top) * 480), 479)),\r\n };\r\n }\r\n\r\n mouseButton(e) {\r\n switch (e.button) {\r\n case 0: return 1;\r\n case 1: return 4;\r\n case 2: return 2;\r\n case 3: return 5;\r\n case 4: return 6;\r\n default: return 1;\r\n }\r\n }\r\n eventMods(e) {\r\n return ((e.shiftKey || this.touchMods[TOUCH_SHIFT]) ? 1 : 0) + (e.ctrlKey ? 2 : 0) + (e.altKey ? 4 : 0) + (e.touches ? 8 : 0);\r\n }\r\n\r\n onResize = () => {\r\n document.exitPointerLock();\r\n }\r\n\r\n onPointerLockChange = () => {\r\n if (window.screen && window.innerHeight === window.screen.height && !this.pointerLocked()) {\r\n // assume that the user pressed escape\r\n this.game(\"DApi_Key\", 0, 0, 27);\r\n this.game(\"DApi_Key\", 1, 0, 27);\r\n }\r\n }\r\n\r\n onMouseMove = e => {\r\n if (!this.canvas) return;\r\n const {x, y} = this.mousePos(e);\r\n this.game(\"DApi_Mouse\", 0, 0, this.eventMods(e), x, y);\r\n e.preventDefault();\r\n }\r\n\r\n onMouseDown = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n return;\r\n }\r\n if (this.touchControls) {\r\n this.touchControls = false;\r\n this.element.classList.remove(\"touch\");\r\n }\r\n const {x, y} = this.mousePos(e);\r\n if (window.screen && window.innerHeight === window.screen.height) {\r\n // we're in fullscreen, let's get pointer lock!\r\n if (!this.pointerLocked()) {\r\n this.canvas.requestPointerLock();\r\n }\r\n }\r\n this.game(\"DApi_Mouse\", 1, this.mouseButton(e), this.eventMods(e), x, y);\r\n e.preventDefault();\r\n }\r\n\r\n onMouseUp = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n //return;\r\n }\r\n const {x, y} = this.mousePos(e);\r\n this.game(\"DApi_Mouse\", 2, this.mouseButton(e), this.eventMods(e), x, y);\r\n if (e.target !== this.keyboard) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n onKeyDown = e => {\r\n if (!this.canvas) return;\r\n this.game(\"DApi_Key\", 0, this.eventMods(e), e.keyCode);\r\n if (!this.showKeyboard && (e.keyCode >= 32 && e.key.length === 1)) {\r\n this.game(\"DApi_Char\", e.key.charCodeAt(0));\r\n } else if (e.keyCode === 8 || e.keyCode === 13) {\r\n this.game(\"DApi_Char\", e.keyCode);\r\n }\r\n this.clearKeySel();\r\n if (!this.showKeyboard) {\r\n if (e.keyCode === 8 || e.keyCode === 9 || (e.keyCode >= 112 && e.keyCode <= 119)) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n onMenu = e => {\r\n e.preventDefault();\r\n }\r\n\r\n onKeyUp = e => {\r\n if (!this.canvas) return;\r\n this.game(\"DApi_Key\", 1, this.eventMods(e), e.keyCode);\r\n this.clearKeySel();\r\n }\r\n\r\n clearKeySel() {\r\n if (this.showKeyboard) {\r\n const len = this.keyboard.value.length;\r\n this.keyboard.setSelectionRange(len, len);\r\n }\r\n }\r\n\r\n onKeyboardInner(flags) {\r\n if (this.showKeyboard) {\r\n const text = this.keyboard.value;\r\n let valid;\r\n if (this.maxKeyboard > 0) {\r\n valid = (text.match(/[\\x20-\\x7E]/g) || []).join(\"\").substring(0, this.maxKeyboard);\r\n } else {\r\n const maxValue = -this.maxKeyboard;\r\n if (text.match(/^\\d*$/)) {\r\n this.keyboardNum = Math.min(text.length ? parseInt(text) : 0, maxValue);\r\n }\r\n valid = (this.keyboardNum ? this.keyboardNum.toString() : \"\");\r\n }\r\n if (text !== valid) {\r\n this.keyboard.value = valid;\r\n }\r\n this.clearKeySel();\r\n this.game(\"text\", valid, flags);\r\n }\r\n }\r\n onKeyboard = () => {\r\n this.onKeyboardInner(0);\r\n }\r\n onKeyboardBlur = () => {\r\n this.onKeyboardInner(1);\r\n }\r\n\r\n parseFile = e => {\r\n const files = e.target.files;\r\n if (files.length > 0) {\r\n this.start(files[0]);\r\n }\r\n }\r\n\r\n touchButton = null;\r\n touchCanvas = null;\r\n\r\n setTouchMod(index, value, use) {\r\n if (index < 3) {\r\n this.touchMods[index] = value;\r\n if (this.touchButtons[index]) {\r\n this.touchButtons[index].classList.toggle(\"active\", value);\r\n }\r\n } else if (use && this.touchBelt[index] >= 0) {\r\n const now = performance.now();\r\n if (!this.beltTime || now - this.beltTime > 750) {\r\n this.game(\"DApi_Char\", 49 + this.touchBelt[index]);\r\n this.beltTime = now;\r\n }\r\n }\r\n }\r\n\r\n updateTouchButton(touches, release) {\r\n let touchOther = null;\r\n if (!this.touchControls) {\r\n this.touchControls = true;\r\n this.element.classList.add(\"touch\");\r\n }\r\n const btn = this.touchButton;\r\n for (let {target, identifier, clientX, clientY} of touches) {\r\n if (btn && btn.id === identifier && this.touchButtons[btn.index] === target) {\r\n if (touches.length > 1) {\r\n btn.stick = false;\r\n }\r\n btn.clientX = clientX;\r\n btn.clientY = clientY;\r\n this.touchCanvas = [...touches].find(t => t.identifier !== identifier);\r\n if (this.touchCanvas) {\r\n this.touchCanvas = {clientX: this.touchCanvas.clientX, clientY: this.touchCanvas.clientY};\r\n }\r\n delete this.panPos;\r\n return this.touchCanvas != null;\r\n }\r\n const idx = this.touchButtons.indexOf(target);\r\n if (idx >= 0 && !touchOther) {\r\n touchOther = {id: identifier, index: idx, stick: true, original: this.touchMods[idx], clientX, clientY};\r\n }\r\n }\r\n if (btn && !touchOther && release && btn.stick) {\r\n const rect = this.touchButtons[btn.index].getBoundingClientRect();\r\n const {clientX, clientY} = btn;\r\n if (clientX >= rect.left && clientX < rect.right && clientY >= rect.top && clientY < rect.bottom) {\r\n this.setTouchMod(btn.index, !btn.original, true);\r\n } else {\r\n this.setTouchMod(btn.index, btn.original);\r\n }\r\n } else if (btn) {\r\n this.setTouchMod(btn.index, false);\r\n }\r\n this.touchButton = touchOther;\r\n if (touchOther) {\r\n this.setTouchMod(touchOther.index, true);\r\n if (touchOther.index === TOUCH_MOVE) {\r\n this.setTouchMod(TOUCH_RMB, false);\r\n } else if (touchOther.index === TOUCH_RMB) {\r\n this.setTouchMod(TOUCH_MOVE, false);\r\n }\r\n delete this.panPos;\r\n } else if (touches.length === 2) {\r\n const x = (touches[1].clientX + touches[0].clientX) / 2, y = (touches[1].clientY + touches[0].clientY) / 2;\r\n if (this.panPos) {\r\n const dx = x - this.panPos.x, dy = y - this.panPos.y;\r\n const step = this.canvas.offsetHeight / 12;\r\n if (Math.max(Math.abs(dx), Math.abs(dy)) > step) {\r\n let key;\r\n if (Math.abs(dx) > Math.abs(dy)) {\r\n key = (dx > 0 ? 0x25 : 0x27);\r\n } else {\r\n key = (dy > 0 ? 0x26 : 0x28);\r\n }\r\n this.game(\"DApi_Key\", 0, 0, key);\r\n // key up is ignored anyway\r\n this.panPos = {x, y};\r\n }\r\n } else {\r\n this.game(\"DApi_Mouse\", 0, 0, 24, 320, 180);\r\n this.game(\"DApi_Mouse\", 2, 1, 24, 320, 180);\r\n this.panPos = {x, y};\r\n }\r\n this.touchCanvas = null;\r\n return false;\r\n } else {\r\n delete this.panPos;\r\n }\r\n this.touchCanvas = [...touches].find(t => !touchOther || t.identifier !== touchOther.id);\r\n if (this.touchCanvas) {\r\n this.touchCanvas = {clientX: this.touchCanvas.clientX, clientY: this.touchCanvas.clientY};\r\n }\r\n return this.touchCanvas != null;\r\n }\r\n\r\n onTouchStart = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n return;\r\n } else {\r\n this.keyboard.blur();\r\n }\r\n e.preventDefault();\r\n if (this.updateTouchButton(e.touches, false)) {\r\n const {x, y} = this.mousePos(this.touchCanvas);\r\n this.game(\"DApi_Mouse\", 0, 0, this.eventMods(e), x, y);\r\n if (!this.touchMods[TOUCH_MOVE]) {\r\n this.game(\"DApi_Mouse\", 1, this.touchMods[TOUCH_RMB] ? 2 : 1, this.eventMods(e), x, y);\r\n }\r\n }\r\n }\r\n onTouchMove = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (this.updateTouchButton(e.touches, false)) {\r\n const {x, y} = this.mousePos(this.touchCanvas);\r\n this.game(\"DApi_Mouse\", 0, 0, this.eventMods(e), x, y);\r\n }\r\n }\r\n onTouchEnd = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n //return;\r\n } else {\r\n e.preventDefault();\r\n }\r\n const prevTc = this.touchCanvas;\r\n this.updateTouchButton(e.touches, true);\r\n if (prevTc && !this.touchCanvas) {\r\n const {x, y} = this.mousePos(prevTc);\r\n this.game(\"DApi_Mouse\", 2, 1, this.eventMods(e), x, y);\r\n this.game(\"DApi_Mouse\", 2, 2, this.eventMods(e), x, y);\r\n\r\n if (this.touchMods[TOUCH_RMB] && (!this.touchButton || this.touchButton.index !== TOUCH_RMB)) {\r\n this.setTouchMod(TOUCH_RMB, false);\r\n }\r\n }\r\n if (!document.fullscreenElement) {\r\n this.element.requestFullscreen();\r\n }\r\n }\r\n\r\n setCanvas = e => this.canvas = e;\r\n setElement = e => this.element = e;\r\n setKeyboard = e => this.keyboard = e;\r\n setTouch_(i, e) {\r\n this.touchButtons[i] = e;\r\n }\r\n setTouchBelt_(i, e) {\r\n this.touchButtons[i] = e;\r\n if (e) {\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = 28;\r\n canvas.height = 28;\r\n e.appendChild(canvas);\r\n this.touchCtx[i] = canvas.getContext(\"2d\");\r\n } else {\r\n this.touchCtx[i] = null;\r\n }\r\n }\r\n\r\n render() {\r\n const {started, loading, error, progress, dropping, has_spawn} = this.state;\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {!error && }\r\n \r\n
\r\n
\r\n
\r\n {!!error && (\r\n \r\n

The following error has occurred:

\r\n

{error.message}

\r\n

Click to create an issue on GitHub

\r\n {this.saveName != null &&

Download save file

}\r\n \r\n )}\r\n {!!loading && !started && !error && (\r\n
\r\n {(progress && progress.text) || 'Loading...'}\r\n {progress != null && !!progress.total && (\r\n \r\n )}\r\n
\r\n )}\r\n {!started && !loading && !error && (\r\n
\r\n

\r\n This is a web port of the original Diablo game, based on source code reconstructed by\r\n GalaXyHaXz and devilution team. The project page with information and links can be found over here https://github.com/d07RiV/diabloweb\r\n

\r\n

\r\n If you own the original game, you can drop the original DIABDAT.MPQ onto this page or click the button below to start playing.\r\n The game can be purchased from GoG.\r\n

\r\n {!has_spawn && (\r\n

\r\n Or you can play the shareware version for free (50MB download).\r\n

\r\n )}\r\n
\r\n \r\n \r\n
\r\n this.start()}>Play Shareware\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './reset.css';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nimport App from './App';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n\r\nserviceWorker.register();\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.7cab8a01.chunk.js b/static/js/main.fe9d2913.chunk.js similarity index 99% rename from static/js/main.7cab8a01.chunk.js rename to static/js/main.fe9d2913.chunk.js index 781033d..bf458f7 100644 --- a/static/js/main.7cab8a01.chunk.js +++ b/static/js/main.fe9d2913.chunk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{11:function(e,t,n){"use strict";n.d(t,"a",function(){return w});var r=n(4),o=n(1),a=n.n(o),i=n(2),s=n(13),c=n.n(s),u=function(){return new Promise(function(e,t){var n=!1,r=document.createElement("iframe");window.addEventListener("message",function(t){var o=t.data;"storage"!==o.method||n||(n=!0,e(o.files),r.contentWindow.postMessage({method:"clear"},"*"))}),r.addEventListener("load",function(){r.contentWindow.postMessage({method:"transfer"},"*")}),r.addEventListener("error",function(){n||(n=!0,e(null))}),r.src="https://diablo.rivsoft.net/storage.html",r.style.display="none",document.body.appendChild(r),setTimeout(function(){n||(n=!0,e(null))},1e4)})};function l(e,t){return d.apply(this,arguments)}function d(){return(d=Object(i.a)(a.a.mark(function e(t,n){var r,o,i,s;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.get(n.toLowerCase());case 2:(r=e.sent)?(o=new Blob([r],{type:"binary/octet-stream"}),i=URL.createObjectURL(o),(s=document.createElement("a")).setAttribute("href",i),s.setAttribute("download",n),document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i)):console.error("File ".concat(n," does not exist"));case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function h(e){return f.apply(this,arguments)}function f(){return(f=Object(i.a)(a.a.mark(function e(t){var n,r,o,i,s,c;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=!0,r=!1,o=void 0,e.prev=3,e.next=6,t.keys();case 6:e.t0=Symbol.iterator,i=e.sent[e.t0]();case 8:if(n=(s=i.next()).done){e.next=14;break}(c=s.value).match(/\.sv$/i)&&l(t,c);case 11:n=!0,e.next=8;break;case 14:e.next=20;break;case 16:e.prev=16,e.t1=e.catch(3),r=!0,o=e.t1;case 20:e.prev=20,e.prev=21,n||null==i.return||i.return();case 23:if(e.prev=23,!r){e.next=26;break}throw o;case 26:return e.finish(23);case 27:return e.finish(20);case 28:case"end":return e.stop()}},e,null,[[3,16,20,28],[21,,23,27]])}))).apply(this,arguments)}var v=function(e){return new Promise(function(t,n){var r=new FileReader;r.onload=function(){return t(r.result)},r.onerror=function(){return n(r.error)},r.onabort=function(){return n()},r.readAsArrayBuffer(e)})};function p(e,t,n){return m.apply(this,arguments)}function m(){return(m=Object(i.a)(a.a.mark(function e(t,n,r){var o;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=Uint8Array,e.next=3,v(r);case 3:return e.t1=e.sent,o=new e.t0(e.t1),n.set(r.name.toLowerCase(),o),e.abrupt("return",t.set(r.name.toLowerCase(),o));case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function w(e){return y.apply(this,arguments)}function y(){return(y=Object(i.a)(a.a.mark(function e(t){var n,o,i,s,d,f,v,m,w,y,b,g,k,_,x,E,M,C;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n=new c.a("diablo_fs"),o=new Map,i=0,e.t0=Object,e.next=7,n.json();case 7:e.t1=e.sent,s=e.t0.entries.call(e.t0,e.t1);case 9:if(!(i=this.buffer.byteLength)throw Error("packet too small");return this.buffer[this.pos++]}},{key:"read16",value:function(){var e=this.pos,t=this.buffer;if(e+2>t.byteLength)throw Error("packet too small");var n=t[e]|t[e+1]<<8;return this.pos+=2,n}},{key:"read32",value:function(){var e=this.pos,t=this.buffer;if(e+4>t.byteLength)throw Error("packet too small");var n=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24;return this.pos+=4,n}},{key:"read_str",value:function(){var e=this.read8(),t=this.pos,n=this.buffer;if(t+e>n.byteLength)throw Error("packet too small");var r=String.fromCharCode.apply(String,Object(u.a)(n.subarray(t,t+e)));return this.pos+=e,r}},{key:"rest",value:function(){var e=this.buffer.subarray(this.pos);return this.pos=this.buffer.length,e}}]),e}(),P=function(){function e(t){Object(l.a)(this,e),this.buffer=new Uint8Array(t),this.pos=0}return Object(d.a)(e,[{key:"write8",value:function(e){return this.buffer[this.pos++]=e,this}},{key:"write16",value:function(e){var t=this.pos,n=this.buffer;return n[t]=e,n[t+1]=e>>8,this.pos+=2,this}},{key:"write32",value:function(e){var t=this.pos,n=this.buffer;return n[t]=e,n[t+1]=e>>8,n[t+2]=e>>16,n[t+3]=e>>24,this.pos+=4,this}},{key:"write_str",value:function(e){var t=e.length;this.write8(t);for(var n=this.pos,r=this.buffer,o=0;o=4?e.send(I.join_reject.write({cookie:o.cookie,reason:K.JOIN_GAME_FULL})):(t.players[s]=n,n.id=s,e.send(I.join_accept.write({cookie:o.cookie,index:s,seed:t.seed,difficulty:t.difficulty})),t.send(255,I.connect.write({id:s})))}break;default:if(null==n.id)return;t.handle(n.id,i,a)}if(!a.done())throw Error("packet too large")}),e.on("close",function(){null!=n.id&&t.drop(n.id,1073741830)})}},{key:"send",value:function(e,t){for(var n=1;n<4;++n)e&1<>16&255,N=A>>8&255,P=255&A;t.fillStyle="rgb(".concat(B,", ").concat(N,", ").concat(P,")"),t.fillText(L,O,S+22)}}catch(K){M=!0,C=K}finally{try{E||null==T.return||T.return()}finally{if(M)throw C}}t.restore()}}e.updateBelt(s)}function Y(){return(Y=Object(E.a)(_.a.mark(function e(t,n,r,o){var a,i,s;return _.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.fs;case 2:if(a=e.sent,!o||r){e.next=6;break}return e.next=6,S(t,a);case 6:return i=null,s=!1,i=t.canvas.getContext("2d",{alpha:!1}),e.next=10,new Promise(function(e,c){try{var l=new C.a,d=[],h=X(function(e){d.push(e)});l.addEventListener("message",function(r){var o=r.data;switch(o.action){case"loaded":e(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=32&&1===e.key.length?n.game("DApi_Char",e.key.charCodeAt(0)):8!==e.keyCode&&13!==e.keyCode||n.game("DApi_Char",e.keyCode),n.clearKeySel(),n.showKeyboard||(8===e.keyCode||9===e.keyCode||e.keyCode>=112&&e.keyCode<=119)&&e.preventDefault())},n.onMenu=function(e){e.preventDefault()},n.onKeyUp=function(e){n.canvas&&(n.game("DApi_Key",1,n.eventMods(e),e.keyCode),n.clearKeySel())},n.onKeyboard=function(){n.onKeyboardInner(0)},n.onKeyboardBlur=function(){n.onKeyboardInner(1)},n.parseFile=function(e){var t=e.target.files;t.length>0&&n.start(t[0])},n.touchButton=null,n.touchCanvas=null,n.onTouchStart=function(e){if(n.canvas&&e.target!==n.keyboard&&(n.keyboard.blur(),e.preventDefault(),n.updateTouchButton(e.touches,!1))){var t=n.mousePos(n.touchCanvas),r=t.x,o=t.y;n.game("DApi_Mouse",0,0,n.eventMods(e),r,o),n.touchMods[z]||n.game("DApi_Mouse",1,n.touchMods[H]?2:1,n.eventMods(e),r,o)}},n.onTouchMove=function(e){if(n.canvas&&e.target!==n.keyboard&&(e.preventDefault(),n.updateTouchButton(e.touches,!1))){var t=n.mousePos(n.touchCanvas),r=t.x,o=t.y;n.game("DApi_Mouse",0,0,n.eventMods(e),r,o)}},n.onTouchEnd=function(e){if(n.canvas){e.target===n.keyboard||e.preventDefault();var t=n.touchCanvas;if(n.updateTouchButton(e.touches,!0),t&&!n.touchCanvas){var r=n.mousePos(t),o=r.x,a=r.y;n.game("DApi_Mouse",2,1,n.eventMods(e),o,a),n.game("DApi_Mouse",2,2,n.eventMods(e),o,a),!n.touchMods[H]||n.touchButton&&n.touchButton.index===H||n.setTouchMod(H,!1)}document.fullscreenElement||n.element.requestFullscreen()}},n.setCanvas=function(e){return n.canvas=e},n.setElement=function(e){return n.element=e},n.setKeyboard=function(e){return n.keyboard=e},n.setTouch0=n.setTouch_.bind(Object(v.a)(n),0),n.setTouch1=n.setTouch_.bind(Object(v.a)(n),1),n.setTouch2=n.setTouch_.bind(Object(v.a)(n),2),n.setTouch3=n.setTouchBelt_.bind(Object(v.a)(n),3),n.setTouch4=n.setTouchBelt_.bind(Object(v.a)(n),4),n.setTouch5=n.setTouchBelt_.bind(Object(v.a)(n),5),n}return Object(p.a)(t,e),Object(d.a)(t,[{key:"componentDidMount",value:function(){var e=this;document.addEventListener("drop",this.onDrop,!0),document.addEventListener("dragover",this.onDragOver,!0),document.addEventListener("dragenter",this.onDragEnter,!0),document.addEventListener("dragleave",this.onDragLeave,!0),this.fs.then(function(t){var n=t.files.get("spawn.mpq");n&&O.includes(n.byteLength)&&e.setState({has_spawn:!0})})}},{key:"setDropping",value:function(e){this.setState(function(t){var n=t.dropping;return{dropping:Math.max(n+e,0)}})}},{key:"onError",value:function(e,t){this.setState(function(n){return!n.error&&{error:{message:e,stack:t}}})}},{key:"openKeyboard",value:function(e){e?(this.showKeyboard={left:"".concat((100*(e[0]-10)/640).toFixed(2),"%"),top:"".concat((100*(e[1]-10)/480).toFixed(2),"%"),width:"".concat((100*(e[2]-e[0]+20)/640).toFixed(2),"%"),height:"".concat((100*(e[3]-e[1]+20)/640).toFixed(2),"%")},this.maxKeyboard=e[4],this.element.classList.add("keyboard"),Object.assign(this.keyboard.style,this.showKeyboard),this.keyboard.focus(),V&&(V.style.transform="translate(-50%, ".concat((56.25*-(e[1]+e[3])/960).toFixed(2),"vw)"))):(this.showKeyboard=!1,this.element.classList.remove("keyboard"),this.keyboard.blur(),this.keyboard.value="",this.keyboardNum=0)}},{key:"setCursorPos",value:function(e,t){var n=this,r=this.canvas.getBoundingClientRect();this.cursorPos={x:r.left+(r.right-r.left)*e/640,y:r.top+(r.bottom-r.top)*t/480},setTimeout(function(){n.game("DApi_Mouse",0,0,0,e,t)})}},{key:"onProgress",value:function(e){this.setState({progress:e})}},{key:"onExit",value:function(){this.state.error||window.location.reload()}},{key:"setCurrentSave",value:function(e){this.saveName=e}},{key:"drawBelt",value:function(e,t){this.canvas&&this.touchButtons[e]&&(this.touchBelt[e]=t,t>=0?(this.touchButtons[e].style.display="block",this.touchCtx[e].drawImage(this.canvas,205+29*t,357,28,28,0,0,28,28)):this.touchButtons[e].style.display="none")}},{key:"updateBelt",value:function(e){if(e){for(var t=new Set,n=3,r=0;r=0&&!t.has(e[r])&&(this.drawBelt(n++,r),t.add(e[r]));for(;n<6;++n)this.drawBelt(n,-1)}else this.drawBelt(3,-1),this.drawBelt(4,-1),this.drawBelt(5,-1)}},{key:"start",value:function(e){var t=this;if(e&&e.name.match(/\.sv$/i))this.fs.then(function(t){return t.upload(e)}).then(console.log("Updated ".concat(e.name)));else{document.removeEventListener("drop",this.onDrop,!0),document.removeEventListener("dragover",this.onDragOver,!0),document.removeEventListener("dragenter",this.onDragEnter,!0),document.removeEventListener("dragleave",this.onDragLeave,!0),this.setState({dropping:0});var n=!(!e||!e.name.match(/^diabdat\.mpq$/i));b.a.event({category:"Game",action:n?"Start Retail":"Start Shareware"}),this.setState({loading:!0,retail:n}),q(this,e,!n).then(function(e){t.game=e,document.addEventListener("mousemove",t.onMouseMove,!0),document.addEventListener("mousedown",t.onMouseDown,!0),document.addEventListener("mouseup",t.onMouseUp,!0),document.addEventListener("keydown",t.onKeyDown,!0),document.addEventListener("keyup",t.onKeyUp,!0),document.addEventListener("contextmenu",t.onMenu,!0),document.addEventListener("touchstart",t.onTouchStart,{passive:!1,capture:!0}),document.addEventListener("touchmove",t.onTouchMove,{passive:!1,capture:!0}),document.addEventListener("touchend",t.onTouchEnd,{passive:!1,capture:!0}),document.addEventListener("pointerlockchange",t.onPointerLockChange),window.addEventListener("resize",t.onResize),t.setState({started:!0})},function(e){return t.onError(e.message,e.stack)})}}},{key:"pointerLocked",value:function(){return document.pointerLockElement===this.canvas||document.mozPointerLockElement===this.canvas}},{key:"mousePos",value:function(e){var t=this.canvas.getBoundingClientRect();return this.pointerLocked()?(this.cursorPos.x=Math.max(t.left,Math.min(t.right,this.cursorPos.x+e.movementX)),this.cursorPos.y=Math.max(t.top,Math.min(t.bottom,this.cursorPos.y+e.movementY))):this.cursorPos={x:e.clientX,y:e.clientY},{x:Math.max(0,Math.min(Math.round((this.cursorPos.x-t.left)/(t.right-t.left)*640),639)),y:Math.max(0,Math.min(Math.round((this.cursorPos.y-t.top)/(t.bottom-t.top)*480),479))}}},{key:"mouseButton",value:function(e){switch(e.button){case 0:return 1;case 1:return 4;case 2:return 2;case 3:return 5;case 4:return 6;default:return 1}}},{key:"eventMods",value:function(e){return(e.shiftKey||this.touchMods[2]?1:0)+(e.ctrlKey?2:0)+(e.altKey?4:0)+(e.touches?8:0)}},{key:"clearKeySel",value:function(){if(this.showKeyboard){var e=this.keyboard.value.length;this.keyboard.setSelectionRange(e,e)}}},{key:"onKeyboardInner",value:function(e){if(this.showKeyboard){var t,n=this.keyboard.value;if(this.maxKeyboard>0)t=(n.match(/[\x20-\x7E]/g)||[]).join("").substring(0,this.maxKeyboard);else{var r=-this.maxKeyboard;n.match(/^\d*$/)&&(this.keyboardNum=Math.min(n.length?parseInt(n):0,r)),t=this.keyboardNum?this.keyboardNum.toString():""}n!==t&&(this.keyboard.value=t),this.clearKeySel(),this.game("text",t,e)}}},{key:"setTouchMod",value:function(e,t,n){if(e<3)this.touchMods[e]=t,this.touchButtons[e]&&this.touchButtons[e].classList.toggle("active",t);else if(n&&this.touchBelt[e]>=0){var r=performance.now();(!this.beltTime||r-this.beltTime>750)&&(this.game("DApi_Char",49+this.touchBelt[e]),this.beltTime=r)}}},{key:"updateTouchButton",value:function(e,t){var n=this,r=null;this.touchControls||(this.touchControls=!0,this.element.classList.add("touch"));var o=this.touchButton,a=!0,i=!1,s=void 0;try{for(var c,l=function(){var t=c.value,a=t.target,i=t.identifier,s=t.clientX,l=t.clientY;if(o&&o.id===i&&n.touchButtons[o.index]===a)return e.length>1&&(o.stick=!1),o.clientX=s,o.clientY=l,n.touchCanvas=Object(u.a)(e).find(function(e){return e.identifier!==i}),n.touchCanvas&&(n.touchCanvas={clientX:n.touchCanvas.clientX,clientY:n.touchCanvas.clientY}),delete n.panPos,{v:null!=n.touchCanvas};var d=n.touchButtons.indexOf(a);d>=0&&!r&&(r={id:i,index:d,stick:!0,original:n.touchMods[d],clientX:s,clientY:l})},d=e[Symbol.iterator]();!(a=(c=d.next()).done);a=!0){var h=l();if("object"===typeof h)return h.v}}catch(_){i=!0,s=_}finally{try{a||null==d.return||d.return()}finally{if(i)throw s}}if(o&&!r&&t&&o.stick){var f=this.touchButtons[o.index].getBoundingClientRect(),v=o.clientX,p=o.clientY;v>=f.left&&v=f.top&&pk)y=Math.abs(b)>Math.abs(g)?b>0?37:39:g>0?38:40,this.game("DApi_Key",0,0,y),this.panPos={x:m,y:w}}else this.game("DApi_Mouse",0,0,24,320,180),this.game("DApi_Mouse",2,1,24,320,180),this.panPos={x:m,y:w};return this.touchCanvas=null,!1}delete this.panPos}return this.touchCanvas=Object(u.a)(e).find(function(e){return!r||e.identifier!==r.id}),this.touchCanvas&&(this.touchCanvas={clientX:this.touchCanvas.clientX,clientY:this.touchCanvas.clientY}),null!=this.touchCanvas}},{key:"setTouch_",value:function(e,t){this.touchButtons[e]=t}},{key:"setTouchBelt_",value:function(e,t){if(this.touchButtons[e]=t,t){var n=document.createElement("canvas");n.width=28,n.height=28,t.appendChild(n),this.touchCtx[e]=n.getContext("2d")}else this.touchCtx[e]=null}},{key:"render",value:function(){var e=this,t=this.state,n=t.started,r=t.loading,a=t.error,i=t.progress,s=t.dropping,c=t.has_spawn;return o.a.createElement("div",{className:y()("App",{touch:this.touchControls,started:n,dropping:s,keyboard:!!this.showKeyboard}),ref:this.setElement},o.a.createElement("div",{className:"touch-ui touch-mods"},o.a.createElement("div",{className:y()("touch-button","touch-button-0",{active:this.touchMods[0]}),ref:this.setTouch0}),o.a.createElement("div",{className:y()("touch-button","touch-button-1",{active:this.touchMods[1]}),ref:this.setTouch1}),o.a.createElement("div",{className:y()("touch-button","touch-button-2",{active:this.touchMods[2]}),ref:this.setTouch2})),o.a.createElement("div",{className:"touch-ui touch-belt"},o.a.createElement("div",{className:y()("touch-button","touch-button-0"),ref:this.setTouch3}),o.a.createElement("div",{className:y()("touch-button","touch-button-1"),ref:this.setTouch4}),o.a.createElement("div",{className:y()("touch-button","touch-button-2"),ref:this.setTouch5})),o.a.createElement("div",{className:"Body"},o.a.createElement("div",{className:"inner"},!a&&o.a.createElement("canvas",{ref:this.setCanvas,width:640,height:480}),o.a.createElement("input",{type:"text",className:"keyboard",onChange:this.onKeyboard,onBlur:this.onKeyboardBlur,ref:this.setKeyboard,spellCheck:!1,style:this.showKeyboard||{}}))),o.a.createElement("div",{className:"BodyV"},!!a&&o.a.createElement($,{className:"error",href:W(a,this.state.retail)},o.a.createElement("p",{className:"header"},"The following error has occurred:"),o.a.createElement("p",{className:"body"},a.message),o.a.createElement("p",{className:"footer"},"Click to create an issue on GitHub"),null!=this.saveName&&o.a.createElement("p",{className:"link",onClick:this.downloadSave},"Download save file")),!!r&&!n&&!a&&o.a.createElement("div",{className:"loading"},i&&i.text||"Loading...",null!=i&&!!i.total&&o.a.createElement("span",{className:"progressBar"},o.a.createElement("span",null,o.a.createElement("span",{style:{width:"".concat(Math.round(100*i.loaded/i.total),"%")}})))),!n&&!r&&!a&&o.a.createElement("div",{className:"start"},o.a.createElement("p",null,"This is a web port of the original Diablo game, based on source code reconstructed by GalaXyHaXz and devilution team. The project page with information and links can be found over here ",o.a.createElement($,{href:"https://github.com/d07RiV/diabloweb"},"https://github.com/d07RiV/diabloweb")),o.a.createElement("p",null,"If you own the original game, you can drop the original DIABDAT.MPQ onto this page or click the button below to start playing. The game can be purchased from ",o.a.createElement($,{href:"https://www.gog.com/game/diablo"},"GoG"),"."),!c&&o.a.createElement("p",null,"Or you can play the shareware version for free (50MB download)."),o.a.createElement("form",null,o.a.createElement("label",{htmlFor:"loadFile",className:"startButton"},"Select MPQ"),o.a.createElement("input",{accept:".mpq",type:"file",id:"loadFile",style:{display:"none"},onChange:this.parseFile})),o.a.createElement("span",{className:"startButton",onClick:function(){return e.start()}},"Play Shareware"))))}}]),t}(o.a.Component);i.a.render(o.a.createElement(Q,null),document.getElementById("root")),function(e){if("serviceWorker"in navigator){if(new URL("/diabloweb",window.location.href).origin!==window.location.origin)return;window.addEventListener("load",function(){var t="".concat("/diabloweb","/service-worker.js");s?(function(e,t){fetch(e).then(function(n){var r=n.headers.get("content-type");404===n.status||null!=r&&-1===r.indexOf("javascript")?navigator.serviceWorker.ready.then(function(e){e.unregister().then(function(){window.location.reload()})}):c(e,t)}).catch(function(){console.log("No internet connection found. App is running in offline mode.")})}(t,e),navigator.serviceWorker.ready.then(function(){console.log("This web app is being served cache-first by a service worker. To learn more, visit https://bit.ly/CRA-PWA")})):c(t,e)})}}()}},[[31,2,0,5]]]); -//# sourceMappingURL=main.7cab8a01.chunk.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{11:function(e,t,n){"use strict";n.d(t,"a",function(){return w});var r=n(4),o=n(1),a=n.n(o),i=n(2),s=n(13),c=n.n(s),u=function(){return new Promise(function(e,t){var n=!1,r=document.createElement("iframe");window.addEventListener("message",function(t){var o=t.data;"storage"!==o.method||n||(n=!0,e(o.files),r.contentWindow.postMessage({method:"clear"},"*"))}),r.addEventListener("load",function(){r.contentWindow.postMessage({method:"transfer"},"*")}),r.addEventListener("error",function(){n||(n=!0,e(null))}),r.src="https://diablo.rivsoft.net/storage.html",r.style.display="none",document.body.appendChild(r),setTimeout(function(){n||(n=!0,e(null))},1e4)})};function l(e,t){return d.apply(this,arguments)}function d(){return(d=Object(i.a)(a.a.mark(function e(t,n){var r,o,i,s;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.get(n.toLowerCase());case 2:(r=e.sent)?(o=new Blob([r],{type:"binary/octet-stream"}),i=URL.createObjectURL(o),(s=document.createElement("a")).setAttribute("href",i),s.setAttribute("download",n),document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i)):console.error("File ".concat(n," does not exist"));case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function h(e){return f.apply(this,arguments)}function f(){return(f=Object(i.a)(a.a.mark(function e(t){var n,r,o,i,s,c;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=!0,r=!1,o=void 0,e.prev=3,e.next=6,t.keys();case 6:e.t0=Symbol.iterator,i=e.sent[e.t0]();case 8:if(n=(s=i.next()).done){e.next=14;break}(c=s.value).match(/\.sv$/i)&&l(t,c);case 11:n=!0,e.next=8;break;case 14:e.next=20;break;case 16:e.prev=16,e.t1=e.catch(3),r=!0,o=e.t1;case 20:e.prev=20,e.prev=21,n||null==i.return||i.return();case 23:if(e.prev=23,!r){e.next=26;break}throw o;case 26:return e.finish(23);case 27:return e.finish(20);case 28:case"end":return e.stop()}},e,null,[[3,16,20,28],[21,,23,27]])}))).apply(this,arguments)}var v=function(e){return new Promise(function(t,n){var r=new FileReader;r.onload=function(){return t(r.result)},r.onerror=function(){return n(r.error)},r.onabort=function(){return n()},r.readAsArrayBuffer(e)})};function p(e,t,n){return m.apply(this,arguments)}function m(){return(m=Object(i.a)(a.a.mark(function e(t,n,r){var o;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=Uint8Array,e.next=3,v(r);case 3:return e.t1=e.sent,o=new e.t0(e.t1),n.set(r.name.toLowerCase(),o),e.abrupt("return",t.set(r.name.toLowerCase(),o));case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function w(e){return y.apply(this,arguments)}function y(){return(y=Object(i.a)(a.a.mark(function e(t){var n,o,i,s,d,f,v,m,w,y,b,g,k,_,x,E,M,C;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n=new c.a("diablo_fs"),o=new Map,i=0,e.t0=Object,e.next=7,n.json();case 7:e.t1=e.sent,s=e.t0.entries.call(e.t0,e.t1);case 9:if(!(i=this.buffer.byteLength)throw Error("packet too small");return this.buffer[this.pos++]}},{key:"read16",value:function(){var e=this.pos,t=this.buffer;if(e+2>t.byteLength)throw Error("packet too small");var n=t[e]|t[e+1]<<8;return this.pos+=2,n}},{key:"read32",value:function(){var e=this.pos,t=this.buffer;if(e+4>t.byteLength)throw Error("packet too small");var n=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24;return this.pos+=4,n}},{key:"read_str",value:function(){var e=this.read8(),t=this.pos,n=this.buffer;if(t+e>n.byteLength)throw Error("packet too small");var r=String.fromCharCode.apply(String,Object(u.a)(n.subarray(t,t+e)));return this.pos+=e,r}},{key:"rest",value:function(){var e=this.buffer.subarray(this.pos);return this.pos=this.buffer.length,e}}]),e}(),P=function(){function e(t){Object(l.a)(this,e),this.buffer=new Uint8Array(t),this.pos=0}return Object(d.a)(e,[{key:"write8",value:function(e){return this.buffer[this.pos++]=e,this}},{key:"write16",value:function(e){var t=this.pos,n=this.buffer;return n[t]=e,n[t+1]=e>>8,this.pos+=2,this}},{key:"write32",value:function(e){var t=this.pos,n=this.buffer;return n[t]=e,n[t+1]=e>>8,n[t+2]=e>>16,n[t+3]=e>>24,this.pos+=4,this}},{key:"write_str",value:function(e){var t=e.length;this.write8(t);for(var n=this.pos,r=this.buffer,o=0;o=4?e.send(I.join_reject.write({cookie:o.cookie,reason:K.JOIN_GAME_FULL})):(t.players[s]=n,n.id=s,e.send(I.join_accept.write({cookie:o.cookie,index:s,seed:t.seed,difficulty:t.difficulty})),t.send(255,I.connect.write({id:s})))}break;default:if(null==n.id)return;t.handle(n.id,i,a)}if(!a.done())throw Error("packet too large")}),e.on("close",function(){null!=n.id&&t.drop(n.id,1073741830)})}},{key:"send",value:function(e,t){for(var n=1;n<4;++n)e&1<>16&255,N=A>>8&255,P=255&A;t.fillStyle="rgb(".concat(B,", ").concat(N,", ").concat(P,")"),t.fillText(L,O,S+22)}}catch(K){M=!0,C=K}finally{try{E||null==T.return||T.return()}finally{if(M)throw C}}t.restore()}}e.updateBelt(s)}function Y(){return(Y=Object(E.a)(_.a.mark(function e(t,n,r,o){var a,i,s;return _.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.fs;case 2:if(a=e.sent,!o||r){e.next=6;break}return e.next=6,S(t,a);case 6:return i=null,s=!1,i=t.canvas.getContext("2d",{alpha:!1}),e.next=10,new Promise(function(e,c){try{var l=new C.a,d=[],h=X(function(e){d.push(e)});l.addEventListener("message",function(r){var o=r.data;switch(o.action){case"loaded":e(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=32&&1===e.key.length?n.game("DApi_Char",e.key.charCodeAt(0)):8!==e.keyCode&&13!==e.keyCode||n.game("DApi_Char",e.keyCode),n.clearKeySel(),n.showKeyboard||(8===e.keyCode||9===e.keyCode||e.keyCode>=112&&e.keyCode<=119)&&e.preventDefault())},n.onMenu=function(e){e.preventDefault()},n.onKeyUp=function(e){n.canvas&&(n.game("DApi_Key",1,n.eventMods(e),e.keyCode),n.clearKeySel())},n.onKeyboard=function(){n.onKeyboardInner(0)},n.onKeyboardBlur=function(){n.onKeyboardInner(1)},n.parseFile=function(e){var t=e.target.files;t.length>0&&n.start(t[0])},n.touchButton=null,n.touchCanvas=null,n.onTouchStart=function(e){if(n.canvas&&e.target!==n.keyboard&&(n.keyboard.blur(),e.preventDefault(),n.updateTouchButton(e.touches,!1))){var t=n.mousePos(n.touchCanvas),r=t.x,o=t.y;n.game("DApi_Mouse",0,0,n.eventMods(e),r,o),n.touchMods[z]||n.game("DApi_Mouse",1,n.touchMods[H]?2:1,n.eventMods(e),r,o)}},n.onTouchMove=function(e){if(n.canvas&&e.target!==n.keyboard&&(e.preventDefault(),n.updateTouchButton(e.touches,!1))){var t=n.mousePos(n.touchCanvas),r=t.x,o=t.y;n.game("DApi_Mouse",0,0,n.eventMods(e),r,o)}},n.onTouchEnd=function(e){if(n.canvas){e.target===n.keyboard||e.preventDefault();var t=n.touchCanvas;if(n.updateTouchButton(e.touches,!0),t&&!n.touchCanvas){var r=n.mousePos(t),o=r.x,a=r.y;n.game("DApi_Mouse",2,1,n.eventMods(e),o,a),n.game("DApi_Mouse",2,2,n.eventMods(e),o,a),!n.touchMods[H]||n.touchButton&&n.touchButton.index===H||n.setTouchMod(H,!1)}document.fullscreenElement||n.element.requestFullscreen()}},n.setCanvas=function(e){return n.canvas=e},n.setElement=function(e){return n.element=e},n.setKeyboard=function(e){return n.keyboard=e},n.setTouch0=n.setTouch_.bind(Object(v.a)(n),0),n.setTouch1=n.setTouch_.bind(Object(v.a)(n),1),n.setTouch2=n.setTouch_.bind(Object(v.a)(n),2),n.setTouch3=n.setTouchBelt_.bind(Object(v.a)(n),3),n.setTouch4=n.setTouchBelt_.bind(Object(v.a)(n),4),n.setTouch5=n.setTouchBelt_.bind(Object(v.a)(n),5),n}return Object(p.a)(t,e),Object(d.a)(t,[{key:"componentDidMount",value:function(){var e=this;document.addEventListener("drop",this.onDrop,!0),document.addEventListener("dragover",this.onDragOver,!0),document.addEventListener("dragenter",this.onDragEnter,!0),document.addEventListener("dragleave",this.onDragLeave,!0),this.fs.then(function(t){var n=t.files.get("spawn.mpq");n&&O.includes(n.byteLength)&&e.setState({has_spawn:!0})})}},{key:"setDropping",value:function(e){this.setState(function(t){var n=t.dropping;return{dropping:Math.max(n+e,0)}})}},{key:"onError",value:function(e,t){this.setState(function(n){return!n.error&&{error:{message:e,stack:t}}})}},{key:"openKeyboard",value:function(e){e?(this.showKeyboard={left:"".concat((100*(e[0]-10)/640).toFixed(2),"%"),top:"".concat((100*(e[1]-10)/480).toFixed(2),"%"),width:"".concat((100*(e[2]-e[0]+20)/640).toFixed(2),"%"),height:"".concat((100*(e[3]-e[1]+20)/640).toFixed(2),"%")},this.maxKeyboard=e[4],this.element.classList.add("keyboard"),Object.assign(this.keyboard.style,this.showKeyboard),this.keyboard.focus(),V&&(V.style.transform="translate(-50%, ".concat((56.25*-(e[1]+e[3])/960).toFixed(2),"vw)"))):(this.showKeyboard=!1,this.element.classList.remove("keyboard"),this.keyboard.blur(),this.keyboard.value="",this.keyboardNum=0)}},{key:"setCursorPos",value:function(e,t){var n=this,r=this.canvas.getBoundingClientRect();this.cursorPos={x:r.left+(r.right-r.left)*e/640,y:r.top+(r.bottom-r.top)*t/480},setTimeout(function(){n.game("DApi_Mouse",0,0,0,e,t)})}},{key:"onProgress",value:function(e){this.setState({progress:e})}},{key:"onExit",value:function(){this.state.error||window.location.reload()}},{key:"setCurrentSave",value:function(e){this.saveName=e}},{key:"drawBelt",value:function(e,t){this.canvas&&this.touchButtons[e]&&(this.touchBelt[e]=t,t>=0?(this.touchButtons[e].style.display="block",this.touchCtx[e].drawImage(this.canvas,205+29*t,357,28,28,0,0,28,28)):this.touchButtons[e].style.display="none")}},{key:"updateBelt",value:function(e){if(e){for(var t=new Set,n=3,r=0;r=0&&!t.has(e[r])&&(this.drawBelt(n++,r),t.add(e[r]));for(;n<6;++n)this.drawBelt(n,-1)}else this.drawBelt(3,-1),this.drawBelt(4,-1),this.drawBelt(5,-1)}},{key:"start",value:function(e){var t=this;if(e&&e.name.match(/\.sv$/i))this.fs.then(function(t){return t.upload(e)}).then(console.log("Updated ".concat(e.name)));else{document.removeEventListener("drop",this.onDrop,!0),document.removeEventListener("dragover",this.onDragOver,!0),document.removeEventListener("dragenter",this.onDragEnter,!0),document.removeEventListener("dragleave",this.onDragLeave,!0),this.setState({dropping:0});var n=!(!e||!e.name.match(/^diabdat\.mpq$/i));b.a.event({category:"Game",action:n?"Start Retail":"Start Shareware"}),this.setState({loading:!0,retail:n}),q(this,e,!n).then(function(e){t.game=e,document.addEventListener("mousemove",t.onMouseMove,!0),document.addEventListener("mousedown",t.onMouseDown,!0),document.addEventListener("mouseup",t.onMouseUp,!0),document.addEventListener("keydown",t.onKeyDown,!0),document.addEventListener("keyup",t.onKeyUp,!0),document.addEventListener("contextmenu",t.onMenu,!0),document.addEventListener("touchstart",t.onTouchStart,{passive:!1,capture:!0}),document.addEventListener("touchmove",t.onTouchMove,{passive:!1,capture:!0}),document.addEventListener("touchend",t.onTouchEnd,{passive:!1,capture:!0}),document.addEventListener("pointerlockchange",t.onPointerLockChange),window.addEventListener("resize",t.onResize),t.setState({started:!0})},function(e){return t.onError(e.message,e.stack)})}}},{key:"pointerLocked",value:function(){return document.pointerLockElement===this.canvas||document.mozPointerLockElement===this.canvas}},{key:"mousePos",value:function(e){var t=this.canvas.getBoundingClientRect();return this.pointerLocked()?(this.cursorPos.x=Math.max(t.left,Math.min(t.right,this.cursorPos.x+e.movementX)),this.cursorPos.y=Math.max(t.top,Math.min(t.bottom,this.cursorPos.y+e.movementY))):this.cursorPos={x:e.clientX,y:e.clientY},{x:Math.max(0,Math.min(Math.round((this.cursorPos.x-t.left)/(t.right-t.left)*640),639)),y:Math.max(0,Math.min(Math.round((this.cursorPos.y-t.top)/(t.bottom-t.top)*480),479))}}},{key:"mouseButton",value:function(e){switch(e.button){case 0:return 1;case 1:return 4;case 2:return 2;case 3:return 5;case 4:return 6;default:return 1}}},{key:"eventMods",value:function(e){return(e.shiftKey||this.touchMods[2]?1:0)+(e.ctrlKey?2:0)+(e.altKey?4:0)+(e.touches?8:0)}},{key:"clearKeySel",value:function(){if(this.showKeyboard){var e=this.keyboard.value.length;this.keyboard.setSelectionRange(e,e)}}},{key:"onKeyboardInner",value:function(e){if(this.showKeyboard){var t,n=this.keyboard.value;if(this.maxKeyboard>0)t=(n.match(/[\x20-\x7E]/g)||[]).join("").substring(0,this.maxKeyboard);else{var r=-this.maxKeyboard;n.match(/^\d*$/)&&(this.keyboardNum=Math.min(n.length?parseInt(n):0,r)),t=this.keyboardNum?this.keyboardNum.toString():""}n!==t&&(this.keyboard.value=t),this.clearKeySel(),this.game("text",t,e)}}},{key:"setTouchMod",value:function(e,t,n){if(e<3)this.touchMods[e]=t,this.touchButtons[e]&&this.touchButtons[e].classList.toggle("active",t);else if(n&&this.touchBelt[e]>=0){var r=performance.now();(!this.beltTime||r-this.beltTime>750)&&(this.game("DApi_Char",49+this.touchBelt[e]),this.beltTime=r)}}},{key:"updateTouchButton",value:function(e,t){var n=this,r=null;this.touchControls||(this.touchControls=!0,this.element.classList.add("touch"));var o=this.touchButton,a=!0,i=!1,s=void 0;try{for(var c,l=function(){var t=c.value,a=t.target,i=t.identifier,s=t.clientX,l=t.clientY;if(o&&o.id===i&&n.touchButtons[o.index]===a)return e.length>1&&(o.stick=!1),o.clientX=s,o.clientY=l,n.touchCanvas=Object(u.a)(e).find(function(e){return e.identifier!==i}),n.touchCanvas&&(n.touchCanvas={clientX:n.touchCanvas.clientX,clientY:n.touchCanvas.clientY}),delete n.panPos,{v:null!=n.touchCanvas};var d=n.touchButtons.indexOf(a);d>=0&&!r&&(r={id:i,index:d,stick:!0,original:n.touchMods[d],clientX:s,clientY:l})},d=e[Symbol.iterator]();!(a=(c=d.next()).done);a=!0){var h=l();if("object"===typeof h)return h.v}}catch(_){i=!0,s=_}finally{try{a||null==d.return||d.return()}finally{if(i)throw s}}if(o&&!r&&t&&o.stick){var f=this.touchButtons[o.index].getBoundingClientRect(),v=o.clientX,p=o.clientY;v>=f.left&&v=f.top&&pk)y=Math.abs(b)>Math.abs(g)?b>0?37:39:g>0?38:40,this.game("DApi_Key",0,0,y),this.panPos={x:m,y:w}}else this.game("DApi_Mouse",0,0,24,320,180),this.game("DApi_Mouse",2,1,24,320,180),this.panPos={x:m,y:w};return this.touchCanvas=null,!1}delete this.panPos}return this.touchCanvas=Object(u.a)(e).find(function(e){return!r||e.identifier!==r.id}),this.touchCanvas&&(this.touchCanvas={clientX:this.touchCanvas.clientX,clientY:this.touchCanvas.clientY}),null!=this.touchCanvas}},{key:"setTouch_",value:function(e,t){this.touchButtons[e]=t}},{key:"setTouchBelt_",value:function(e,t){if(this.touchButtons[e]=t,t){var n=document.createElement("canvas");n.width=28,n.height=28,t.appendChild(n),this.touchCtx[e]=n.getContext("2d")}else this.touchCtx[e]=null}},{key:"render",value:function(){var e=this,t=this.state,n=t.started,r=t.loading,a=t.error,i=t.progress,s=t.dropping,c=t.has_spawn;return o.a.createElement("div",{className:y()("App",{touch:this.touchControls,started:n,dropping:s,keyboard:!!this.showKeyboard}),ref:this.setElement},o.a.createElement("div",{className:"touch-ui touch-mods"},o.a.createElement("div",{className:y()("touch-button","touch-button-0",{active:this.touchMods[0]}),ref:this.setTouch0}),o.a.createElement("div",{className:y()("touch-button","touch-button-1",{active:this.touchMods[1]}),ref:this.setTouch1}),o.a.createElement("div",{className:y()("touch-button","touch-button-2",{active:this.touchMods[2]}),ref:this.setTouch2})),o.a.createElement("div",{className:"touch-ui touch-belt"},o.a.createElement("div",{className:y()("touch-button","touch-button-0"),ref:this.setTouch3}),o.a.createElement("div",{className:y()("touch-button","touch-button-1"),ref:this.setTouch4}),o.a.createElement("div",{className:y()("touch-button","touch-button-2"),ref:this.setTouch5})),o.a.createElement("div",{className:"Body"},o.a.createElement("div",{className:"inner"},!a&&o.a.createElement("canvas",{ref:this.setCanvas,width:640,height:480}),o.a.createElement("input",{type:"text",className:"keyboard",onChange:this.onKeyboard,onBlur:this.onKeyboardBlur,ref:this.setKeyboard,spellCheck:!1,style:this.showKeyboard||{}}))),o.a.createElement("div",{className:"BodyV"},!!a&&o.a.createElement($,{className:"error",href:W(a,this.state.retail)},o.a.createElement("p",{className:"header"},"The following error has occurred:"),o.a.createElement("p",{className:"body"},a.message),o.a.createElement("p",{className:"footer"},"Click to create an issue on GitHub"),null!=this.saveName&&o.a.createElement("p",{className:"link",onClick:this.downloadSave},"Download save file")),!!r&&!n&&!a&&o.a.createElement("div",{className:"loading"},i&&i.text||"Loading...",null!=i&&!!i.total&&o.a.createElement("span",{className:"progressBar"},o.a.createElement("span",null,o.a.createElement("span",{style:{width:"".concat(Math.round(100*i.loaded/i.total),"%")}})))),!n&&!r&&!a&&o.a.createElement("div",{className:"start"},o.a.createElement("p",null,"This is a web port of the original Diablo game, based on source code reconstructed by GalaXyHaXz and devilution team. The project page with information and links can be found over here ",o.a.createElement($,{href:"https://github.com/d07RiV/diabloweb"},"https://github.com/d07RiV/diabloweb")),o.a.createElement("p",null,"If you own the original game, you can drop the original DIABDAT.MPQ onto this page or click the button below to start playing. The game can be purchased from ",o.a.createElement($,{href:"https://www.gog.com/game/diablo"},"GoG"),"."),!c&&o.a.createElement("p",null,"Or you can play the shareware version for free (50MB download)."),o.a.createElement("form",null,o.a.createElement("label",{htmlFor:"loadFile",className:"startButton"},"Select MPQ"),o.a.createElement("input",{accept:".mpq",type:"file",id:"loadFile",style:{display:"none"},onChange:this.parseFile})),o.a.createElement("span",{className:"startButton",onClick:function(){return e.start()}},"Play Shareware"))))}}]),t}(o.a.Component);i.a.render(o.a.createElement(Q,null),document.getElementById("root")),function(e){if("serviceWorker"in navigator){if(new URL("/diabloweb",window.location.href).origin!==window.location.origin)return;window.addEventListener("load",function(){var t="".concat("/diabloweb","/service-worker.js");s?(function(e,t){fetch(e).then(function(n){var r=n.headers.get("content-type");404===n.status||null!=r&&-1===r.indexOf("javascript")?navigator.serviceWorker.ready.then(function(e){e.unregister().then(function(){window.location.reload()})}):c(e,t)}).catch(function(){console.log("No internet connection found. App is running in offline mode.")})}(t,e),navigator.serviceWorker.ready.then(function(){console.log("This web app is being served cache-first by a service worker. To learn more, visit https://bit.ly/CRA-PWA")})):c(t,e)})}}({onUpdate:function(){}})}},[[31,2,0,5]]]); +//# sourceMappingURL=main.fe9d2913.chunk.js.map \ No newline at end of file diff --git a/static/js/main.fe9d2913.chunk.js.map b/static/js/main.fe9d2913.chunk.js.map new file mode 100644 index 0000000..cc839a8 --- /dev/null +++ b/static/js/main.fe9d2913.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["fs.js","api/game.worker.js","../node_modules/peerjs/dist sync","serviceWorker.js","api/sound.js","api/load_spawn.js","api/webrtc.js","api/loader.js","App.js","index.js"],"names":["importStorage","Promise","resolve","reject","done","frame","document","createElement","window","addEventListener","_ref","data","method","files","contentWindow","postMessage","src","style","display","body","appendChild","setTimeout","downloadFile","_callee","store","name","file","blob","url","lnk","C_Projects_diabloweb_diabloweb_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default","a","wrap","_context","prev","next","get","toLowerCase","sent","Blob","type","URL","createObjectURL","setAttribute","click","removeChild","revokeObjectURL","console","error","concat","stop","downloadSaves","_callee2","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","_context2","undefined","keys","t0","Symbol","iterator","value","match","t1","return","finish","readFile","reader","FileReader","onload","result","onerror","onabort","readAsArrayBuffer","uploadFile","_callee3","_context3","Uint8Array","set","abrupt","create_fs","_x7","_create_fs","apply","this","arguments","_callee4","load","_i","_Object$entries","_ref7","_ref3","_name","_data","_files","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","_ref6","_ref5","_context4","IdbKvStore","Map","Object","json","entries","call","length","C_Projects_diabloweb_diabloweb_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","t2","DownloadFile","DownloadSaves","update","delete","remove","clear","download","upload","t3","module","exports","Worker","__webpack_require__","p","webpackEmptyContext","req","e","Error","code","id","isLocalhost","Boolean","location","hostname","registerValidSW","swUrl","config","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","log","onUpdate","onSuccess","catch","init_sound","AudioContext","webkitAudioContext","StereoPannerNode","create_sound","duplicate_sound","play_sound","set_volume","stop_sound","delete_sound","context","sounds","create_sound_raw","channels","rate","buffer","createBuffer","i","getChannelData","subarray","gain","createGain","panner","pan","decodeAudioData","srcId","volume","loop","source","Math","pow","relVolume","createBufferSource","node","connect","destination","start","stop_all","sound","slicedToArray","err","SpawnSizes","load_spawn","_x","_x2","_load_spawn","api","fs","spawn","regenerator_default","includes","byteLength","axios","request","process","responseType","onDownloadProgress","onProgress","text","loaded","total","headers","Cache-Control","slice","buffer_reader","classCallCheck","pos","read8","String","fromCharCode","toConsumableArray","buffer_writer","write8","charCodeAt","RejectionReason","JOIN_SUCCESS","JOIN_ALREADY_IN_GAME","JOIN_GAME_NOT_FOUND","JOIN_INCORRECT_PASSWORD","JOIN_VERSION_MISMATCH","JOIN_GAME_FULL","CREATE_GAME_EXISTS","server_packet","info","read","version","read32","write","write32","game_list","count","games","push","read_str","_ref2","writer","reduce","sum","write_str","join_accept","cookie","index","seed","difficulty","join_reject","reason","_ref8","disconnect","_ref9","message","payload","rest","_ref10","turn","_ref11","client_packet","_ref12","create_game","password","_ref13","join_game","_ref14","leave_game","drop_player","_ref15","_ref16","_ref17","PeerID","webrtc_server","_ref18","onMessage","onClose","_this","peer","Peer","on","conn","onConnect","players","myplr","floor","random","onError","off","onOpen","_this2","packet","pkt","send","handle","drop","mask","destroy","close","webrtc_client","_ref19","_this3","pending","needUnreg","unreg","clearTimeout","timeout","webrtc_open","server","client","onRender","ctx","bitmap","images","clip","belt","transferFromImageBitmap","x","y","w","h","image","createImageData","putImageData","save","font","x0","y0","x1","y1","beginPath","rect","_ref4","str","color","r","g","b","fillStyle","fillText","restore","updateBelt","audio","mpq","offscreen","canvas","getContext","alpha","worker","packetQueue","webrtc","action","func","_len","params","Array","_key","batch","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","setCursorPos","openKeyboard","stack","onExit","setCurrentSave","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","transfer","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","setInterval","load_game","do_load_game","reportLink","retail","searchParams","split","map","line","join","userAgent","toString","ReactGA","initialize","pageview","TOUCH_MOVE","TOUCH_RMB","keyboardRule","styleSheets","sheet","cssRules","rule","CSSRule","MEDIA_RULE","conditionText","sub","selectorText","findKeyboardRule","Link","children","props","objectWithoutProperties","react_default","assign","target","rel","App","possibleConstructorReturn","getPrototypeOf","started","loading","dropping","has_spawn","cursorPos","touchControls","touchButtons","touchCtx","touchMods","touchBelt","maxKeyboard","onDrop","dataTransfer","items","kind","getAsFile","getDropFile","preventDefault","setState","onDragEnter","setDropping","onDragOver","isDropFile","onDragLeave","downloadSave","saveName","stopPropagation","onResize","exitPointerLock","onPointerLockChange","screen","innerHeight","height","pointerLocked","game","onMouseMove","_this$mousePos","mousePos","eventMods","onMouseDown","keyboard","element","classList","_this$mousePos2","requestPointerLock","mouseButton","onMouseUp","_this$mousePos3","onKeyDown","keyCode","showKeyboard","key","clearKeySel","onMenu","onKeyUp","onKeyboard","onKeyboardInner","onKeyboardBlur","parseFile","touchButton","touchCanvas","onTouchStart","blur","updateTouchButton","touches","_this$mousePos4","onTouchMove","_this$mousePos5","onTouchEnd","prevTc","_this$mousePos6","setTouchMod","fullscreenElement","requestFullscreen","setCanvas","setElement","setKeyboard","setTouch0","setTouch_","bind","assertThisInitialized","setTouch1","setTouch2","setTouch3","setTouchBelt_","setTouch4","setTouch5","inc","max","left","toFixed","top","width","add","focus","transform","keyboardNum","getBoundingClientRect","right","bottom","progress","reload","idx","slot","drawImage","used","Set","has","drawBelt","_this4","removeEventListener","event","category","passive","capture","pointerLockElement","mozPointerLockElement","min","movementX","movementY","clientX","clientY","round","button","shiftKey","ctrlKey","altKey","len","setSelectionRange","flags","valid","substring","maxValue","parseInt","use","toggle","now","performance","beltTime","release","_this5","touchOther","btn","_loop","identifier","stick","find","t","panPos","v","indexOf","original","_ret","dx","dy","step","offsetHeight","abs","_this6","_this$state","className","classNames","touch","ref","active","onChange","onBlur","spellCheck","App_Link","href","onClick","htmlFor","accept","React","Component","ReactDOM","render","src_App_0","getElementById","origin","fetch","response","contentType","status","ready","unregister","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.fe9d2913.chunk.js","sourcesContent":["import IdbKvStore from 'idb-kv-store';\r\n\r\nconst importStorage = () => new Promise((resolve, reject) => {\r\n let done = false;\r\n const frame = document.createElement('iframe');\r\n window.addEventListener('message', ({data}) => {\r\n if (data.method === 'storage' && !done) {\r\n done = true;\r\n resolve(data.files);\r\n frame.contentWindow.postMessage({method: 'clear'}, '*');\r\n }\r\n });\r\n frame.addEventListener('load', () => {\r\n frame.contentWindow.postMessage({method: 'transfer'}, '*');\r\n });\r\n frame.addEventListener('error', () => {\r\n if (!done) {\r\n done = true;\r\n resolve(null);\r\n }\r\n });\r\n frame.src = \"https://diablo.rivsoft.net/storage.html\";\r\n frame.style.display = \"none\";\r\n document.body.appendChild(frame);\r\n setTimeout(() => {\r\n if (!done) {\r\n done = true;\r\n resolve(null);\r\n }\r\n }, 10000);\r\n});\r\n\r\nasync function downloadFile(store, name) {\r\n const file = await store.get(name.toLowerCase());\r\n if (file) {\r\n const blob = new Blob([file], {type: 'binary/octet-stream'});\r\n const url = URL.createObjectURL(blob);\r\n const lnk = document.createElement('a');\r\n lnk.setAttribute('href', url);\r\n lnk.setAttribute('download', name);\r\n document.body.appendChild(lnk);\r\n lnk.click();\r\n document.body.removeChild(lnk);\r\n URL.revokeObjectURL(url);\r\n } else {\r\n console.error(`File ${name} does not exist`);\r\n }\r\n}\r\n\r\nasync function downloadSaves(store) {\r\n for (let name of await store.keys()) {\r\n if (name.match(/\\.sv$/i)) {\r\n downloadFile(store, name);\r\n }\r\n }\r\n}\r\n\r\nconst readFile = file => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = () => reject(reader.error);\r\n reader.onabort = () => reject();\r\n reader.readAsArrayBuffer(file);\r\n});\r\nasync function uploadFile(store, files, file) {\r\n const data = new Uint8Array(await readFile(file));\r\n files.set(file.name.toLowerCase(), data);\r\n return store.set(file.name.toLowerCase(), data);\r\n}\r\n\r\nexport default async function create_fs(load) {\r\n try {\r\n const store = new IdbKvStore('diablo_fs');\r\n const files = new Map();\r\n for (let [name, data] of Object.entries(await store.json())) {\r\n files.set(name, data);\r\n }\r\n if (load) {\r\n const files = await importStorage();\r\n if (files) {\r\n for (let [name, data] of files) {\r\n files.set(name, data);\r\n store.set(name, data);\r\n }\r\n }\r\n }\r\n window.DownloadFile = name => downloadFile(store, name);\r\n window.DownloadSaves = () => downloadSaves(store);\r\n return {\r\n files,\r\n update: (name, data) => store.set(name, data),\r\n delete: name => store.remove(name),\r\n clear: () => store.clear(),\r\n download: name => downloadFile(store, name),\r\n upload: file => uploadFile(store, files, file),\r\n };\r\n } catch (e) {\r\n window.DownloadFile = () => console.error('IndexedDB is not supported');\r\n window.DownloadSaves = () => console.error('IndexedDB is not supported');\r\n return {\r\n files: new Map(),\r\n update: () => Promise.resolve(),\r\n delete: () => Promise.resolve(),\r\n clear: () => Promise.resolve(),\r\n download: () => Promise.resolve(),\r\n upload: () => Promise.resolve(),\r\n };\r\n } \r\n}\r\n","module.exports = function() {\n return new Worker(__webpack_public_path__ + \"f2bd0f1b568ba5e5d268.worker.js\");\n};","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 62;","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","function no_sound() {\r\n return {\r\n create_sound: () => 0,\r\n duplicate_sound: () => 0,\r\n play_sound: () => undefined,\r\n set_volume: () => undefined,\r\n stop_sound: () => undefined,\r\n delete_sound: () => undefined,\r\n };\r\n}\r\n\r\nfunction decodeAudioData(context, buffer) {\r\n return new Promise((resolve, reject) => {\r\n context.decodeAudioData(buffer, resolve, reject);\r\n });\r\n}\r\n\r\nexport default function init_sound() {\r\n const AudioContext = window.AudioContext || window.webkitAudioContext;\r\n const StereoPannerNode = window.StereoPannerNode;\r\n if (!AudioContext) {\r\n return no_sound();\r\n }\r\n\r\n let context = null;\r\n try {\r\n context = new AudioContext();\r\n } catch (e) {\r\n }\r\n const sounds = new Map();\r\n\r\n return {\r\n create_sound_raw(id, data, length, channels, rate) {\r\n if (!context) {\r\n return;\r\n }\r\n const buffer = context.createBuffer(channels, length, rate);\r\n for (let i = 0; i < channels; ++i) {\r\n buffer.getChannelData(i).set(data.subarray(i * length, i * length + length));\r\n }\r\n sounds.set(id, {\r\n buffer: Promise.resolve(buffer),\r\n gain: context.createGain(),\r\n panner: StereoPannerNode && new StereoPannerNode(context, {pan: 0}),\r\n });\r\n },\r\n create_sound(id, data) {\r\n if (!context) {\r\n return;\r\n }\r\n const buffer = decodeAudioData(context, data.buffer);\r\n sounds.set(id, {\r\n buffer,\r\n gain: context.createGain(),\r\n panner: StereoPannerNode && new StereoPannerNode(context, {pan: 0}),\r\n });\r\n },\r\n duplicate_sound(id, srcId) {\r\n if (!context) {\r\n return;\r\n }\r\n const src = sounds.get(srcId);\r\n if (!src) {\r\n return;\r\n }\r\n sounds.set(id, {\r\n buffer: src.buffer,\r\n gain: context.createGain(),\r\n panner: StereoPannerNode && new StereoPannerNode(context, {pan: 0}),\r\n });\r\n },\r\n play_sound(id, volume, pan, loop) {\r\n const src = sounds.get(id);\r\n if (src) {\r\n if (src.source) {\r\n src.source.then(source => source.stop());\r\n }\r\n src.gain.gain.value = Math.pow(2.0, volume / 1000.0);\r\n const relVolume = Math.pow(2.0, pan / 1000.0);\r\n if (src.panner) {\r\n src.panner.pan.value = 1.0 - 2.0 / (1.0 + relVolume);\r\n }\r\n src.source = src.buffer.then(buffer => {\r\n const source = context.createBufferSource();\r\n source.buffer = buffer;\r\n source.loop = !!loop;\r\n let node = source.connect(src.gain);\r\n if (src.panner) {\r\n node = node.connect(src.panner);\r\n }\r\n node.connect(context.destination);\r\n source.start();\r\n return source;\r\n });\r\n }\r\n },\r\n set_volume(id, volume) {\r\n const src = sounds.get(id);\r\n if (src) {\r\n src.gain.gain.value = Math.pow(2.0, volume / 1000.0);\r\n }\r\n },\r\n stop_sound(id) {\r\n const src = sounds.get(id);\r\n if (src && src.source) {\r\n src.source.then(source => source.stop());\r\n delete src.source;\r\n }\r\n },\r\n delete_sound(id) {\r\n const src = sounds.get(id);\r\n if (src && src.source) {\r\n src.source.then(source => source.stop());\r\n }\r\n sounds.delete(id);\r\n },\r\n\r\n stop_all() {\r\n for (let [, sound] of sounds) {\r\n if (sound.source) {\r\n sound.source.then(source => source.stop());\r\n }\r\n }\r\n sounds.clear();\r\n context = null;\r\n }\r\n };\r\n}\r\n","import axios from 'axios';\r\n\r\nconst SpawnSizes = [50274091, 25830791];\r\n\r\nexport { SpawnSizes };\r\n\r\nexport default async function load_spawn(api, fs) {\r\n let file = fs.files.get('spawn.mpq');\r\n if (file && !SpawnSizes.includes(file.byteLength)) {\r\n fs.files.delete('spawn.mpq');\r\n await fs.delete('spawn.mpq');\r\n file = null;\r\n }\r\n if (!file) {\r\n const spawn = await axios.request({\r\n url: process.env.PUBLIC_URL + '/spawn.mpq',\r\n responseType: 'arraybuffer',\r\n onDownloadProgress: e => {\r\n if (api.onProgress) {\r\n api.onProgress({text: 'Downloading...', loaded: e.loaded, total: e.total || SpawnSizes[1]});\r\n }\r\n },\r\n headers: {\r\n 'Cache-Control': 'max-age=31536000'\r\n }\r\n });\r\n if (!SpawnSizes.includes(spawn.data.byteLength)) {\r\n throw Error(\"Invalid spawn.mpq size. Try clearing cache and refreshing the page.\");\r\n }\r\n const data = new Uint8Array(spawn.data);\r\n fs.files.set('spawn.mpq', data);\r\n fs.update('spawn.mpq', data.slice());\r\n }\r\n return fs;\r\n}\r\n","import Peer from 'peerjs';\r\n\r\nclass buffer_reader {\r\n constructor(buffer) {\r\n this.buffer = (buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer));\r\n this.pos = 0;\r\n }\r\n done() {\r\n return this.pos === this.buffer.byteLength;\r\n }\r\n read8() {\r\n if (this.pos >= this.buffer.byteLength) {\r\n throw Error('packet too small');\r\n }\r\n return this.buffer[this.pos++];\r\n }\r\n read16() {\r\n const {pos, buffer} = this;\r\n if (pos + 2 > buffer.byteLength) {\r\n throw Error('packet too small');\r\n }\r\n const result = buffer[pos] | (buffer[pos + 1] << 8);\r\n this.pos += 2;\r\n return result;\r\n }\r\n read32() {\r\n const {pos, buffer} = this;\r\n if (pos + 4 > buffer.byteLength) {\r\n throw Error('packet too small');\r\n }\r\n const result = buffer[pos] | (buffer[pos + 1] << 8) | (buffer[pos + 2] << 16) | (buffer[pos + 3] << 24);\r\n this.pos += 4;\r\n return result;\r\n }\r\n read_str() {\r\n const length = this.read8();\r\n const {pos, buffer} = this;\r\n if (pos + length > buffer.byteLength) {\r\n throw Error('packet too small');\r\n }\r\n const result = String.fromCharCode(...buffer.subarray(pos, pos + length));\r\n this.pos += length;\r\n return result;\r\n }\r\n rest() {\r\n const result = this.buffer.subarray(this.pos);\r\n this.pos = this.buffer.length;\r\n return result;\r\n }\r\n}\r\nclass buffer_writer {\r\n constructor(length) {\r\n this.buffer = new Uint8Array(length);\r\n this.pos = 0;\r\n }\r\n get result() {\r\n return this.buffer.buffer;\r\n }\r\n write8(value) {\r\n this.buffer[this.pos++] = value;\r\n return this;\r\n }\r\n write16(value) {\r\n const {pos, buffer} = this;\r\n buffer[pos] = value;\r\n buffer[pos + 1] = value >> 8;\r\n this.pos += 2;\r\n return this;\r\n }\r\n write32(value) {\r\n const {pos, buffer} = this;\r\n buffer[pos] = value;\r\n buffer[pos + 1] = value >> 8;\r\n buffer[pos + 2] = value >> 16;\r\n buffer[pos + 3] = value >> 24;\r\n this.pos += 4;\r\n return this;\r\n }\r\n write_str(value) {\r\n const length = value.length;\r\n this.write8(length);\r\n const {pos, buffer} = this;\r\n for (let i = 0; i < length; ++i) {\r\n buffer[pos + i] = value.charCodeAt(i);\r\n }\r\n this.pos += length;\r\n return this;\r\n }\r\n rest(value) {\r\n this.buffer.set(value, this.pos);\r\n return this;\r\n }\r\n}\r\n\r\nconst RejectionReason = {\r\n JOIN_SUCCESS: 0x00,\r\n JOIN_ALREADY_IN_GAME: 0x01,\r\n JOIN_GAME_NOT_FOUND: 0x02,\r\n JOIN_INCORRECT_PASSWORD: 0x03,\r\n JOIN_VERSION_MISMATCH: 0x04,\r\n JOIN_GAME_FULL: 0x05,\r\n CREATE_GAME_EXISTS: 0x06,\r\n};\r\n\r\nconst server_packet = {\r\n info: {\r\n code: 0x32,\r\n read: reader => ({version: reader.read32()}),\r\n write: ({version}) => new buffer_writer(5).write8(server_packet.info.code).write32(version).result,\r\n },\r\n game_list: {\r\n code: 0x21,\r\n read: reader => {\r\n const count = reader.read8();\r\n const games = [];\r\n for (let i = 0; i < count; ++i) {\r\n games.push({type: reader.read32(), name: reader.read_str()});\r\n }\r\n return {games};\r\n },\r\n write: ({games}) => {\r\n const writer = new buffer_writer(games.reduce((sum, {name}) => sum + 5 + name.length, 2));\r\n writer.write8(server_packet.game_list.code);\r\n writer.write8(games.length);\r\n for (let {code, name} of games) {\r\n writer.write32(code);\r\n writer.write_str(name);\r\n }\r\n return writer.result;\r\n },\r\n },\r\n join_accept: {\r\n code: 0x12,\r\n read: reader => ({cookie: reader.read32(), index: reader.read8(), seed: reader.read32(), difficulty: reader.read32()}),\r\n write: ({cookie, index, seed, difficulty}) => new buffer_writer(14).write8(server_packet.join_accept.code).write32(cookie).write8(index).write32(seed).write32(difficulty).result,\r\n },\r\n join_reject: {\r\n code: 0x15,\r\n read: reader => ({cookie: reader.read32(), reason: reader.read8()}),\r\n write: ({cookie, reason}) => new buffer_writer(6).write8(server_packet.join_reject.code).write32(cookie).write8(reason).result,\r\n },\r\n connect: {\r\n code: 0x13,\r\n read: reader => ({id: reader.read8()}),\r\n write: ({id}) => new buffer_writer(2).write8(server_packet.connect.code).write8(id).result,\r\n },\r\n disconnect: {\r\n code: 0x14,\r\n read: reader => ({id: reader.read8(), reason: reader.read32()}),\r\n write: ({id, reason}) => new buffer_writer(6).write8(server_packet.disconnect.code).write8(id).write32(reason).result,\r\n },\r\n message: {\r\n code: 0x01,\r\n read: reader => ({id: reader.read8(), payload: reader.rest()}),\r\n write: ({id, payload}) => new buffer_writer(2 + payload.byteLength).write8(server_packet.message.code).write8(id).rest(payload).result,\r\n },\r\n turn: {\r\n code: 0x02,\r\n read: reader => ({id: reader.read8(), turn: reader.read32()}),\r\n write: ({id, turn}) => new buffer_writer(6).write8(server_packet.turn.code).write8(id).write32(turn).result,\r\n },\r\n};\r\n\r\nconst client_packet = {\r\n info: {\r\n code: 0x31,\r\n read: reader => ({version: reader.read32()}),\r\n write: ({version}) => new buffer_writer(5).write8(client_packet.info.code).write32(version).result,\r\n },\r\n game_list: {\r\n code: 0x21,\r\n read: () => ({}),\r\n write: () => new buffer_writer(1).write8(client_packet.game_list.code).result,\r\n },\r\n create_game: {\r\n code: 0x22,\r\n read: reader => ({cookie: reader.read32(), name: reader.read_str(), password: reader.read_str(), difficulty: reader.read32()}),\r\n write: ({cookie, name, password, difficulty}) => new buffer_writer(11 + name.length + password.length)\r\n .write8(client_packet.create_game.code).write32(cookie).write_str(name).write_str(password).write32(difficulty).result,\r\n },\r\n join_game: {\r\n code: 0x23,\r\n read: reader => ({cookie: reader.read32(), name: reader.read_str(), password: reader.read_str()}),\r\n write: ({cookie, name, password}) => new buffer_writer(7 + name.length + password.length)\r\n .write8(client_packet.join_game.code).write32(cookie).write_str(name).write_str(password).result,\r\n },\r\n leave_game: {\r\n code: 0x24,\r\n read: () => ({}),\r\n write: () => new buffer_writer(1).write8(client_packet.leave_game.code).result,\r\n },\r\n drop_player: {\r\n code: 0x03,\r\n read: reader => ({id: reader.read8(), reason: reader.read32()}),\r\n write: ({id, reason}) => new buffer_writer(6).write8(client_packet.drop_player.code).write8(id).write32(reason).result,\r\n },\r\n message: {\r\n code: 0x01,\r\n read: reader => ({id: reader.read8(), payload: reader.rest()}),\r\n write: ({id, payload}) => new buffer_writer(2 + payload.byteLength).write8(client_packet.message.code).write8(id).rest(payload).result,\r\n },\r\n turn: {\r\n code: 0x02,\r\n read: reader => ({turn: reader.read32()}),\r\n write: ({turn}) => new buffer_writer(5).write8(client_packet.turn.code).write32(turn).result,\r\n },\r\n};\r\n\r\n/*function log_packet(data, type) {\r\n const reader = new buffer_reader(data);\r\n const id = reader.read8();\r\n for (let [name, {code, read}] of Object.entries(type)) {\r\n if (code === id && (name !== 'message' && name !== 'turn')) {\r\n console.log(`${type === client_packet ? 'client_packet' : 'server_packet'}.${name} ${JSON.stringify(read(reader))}`);\r\n }\r\n }\r\n}*/\r\n\r\nconst PeerID = name => `diabloweb_${name}`;\r\nconst MAX_PLRS = 4;\r\n\r\nclass webrtc_server {\r\n constructor(version, {cookie, name, password, difficulty}, onMessage, onClose) {\r\n this.version = version;\r\n this.name = name;\r\n this.password = password;\r\n this.difficulty = difficulty;\r\n this.onMessage = onMessage;\r\n this.onClose = onClose;\r\n\r\n this.peer = new Peer(PeerID(name));\r\n this.peer.on('connection', conn => this.onConnect(conn));\r\n this.players = [];\r\n this.myplr = 0;\r\n\r\n this.seed = Math.floor(Math.random() * Math.pow(2, 32));\r\n\r\n const onError = () => {\r\n onMessage(server_packet.join_reject.write({cookie, reason: RejectionReason.CREATE_GAME_EXISTS}));\r\n onClose();\r\n this.peer.off('error', onError);\r\n this.peer.off('open', onOpen);\r\n };\r\n const onOpen = () => {\r\n //console.log('peer open');\r\n setTimeout(() => {\r\n onMessage(server_packet.join_accept.write({cookie, index: 0, seed: this.seed, difficulty}));\r\n onMessage(server_packet.connect.write({id: 0}));\r\n }, 0);\r\n this.peer.off('error', onError);\r\n this.peer.off('open', onOpen);\r\n };\r\n this.peer.on('error', onError);\r\n this.peer.on('open', onOpen);\r\n\r\n //this.peer.on('error', err => console.log('peer error:', err));\r\n }\r\n\r\n onConnect(conn) {\r\n //conn.on('error', err => console.log('conn error:', err));\r\n //console.log('conn open');\r\n const peer = {conn};\r\n conn.on('data', packet => {\r\n const reader = new buffer_reader(packet);\r\n const code = reader.read8();\r\n let pkt;\r\n switch (code) {\r\n case client_packet.info.code:\r\n pkt = client_packet.info.read(reader);\r\n peer.version = pkt.version;\r\n break;\r\n case client_packet.join_game.code:\r\n pkt = client_packet.join_game.read(reader);\r\n if (peer.version !== this.version) {\r\n conn.send(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_VERSION_MISMATCH}));\r\n } else if (pkt.name !== this.name) {\r\n conn.send(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_GAME_NOT_FOUND}));\r\n } else if (pkt.password !== this.password) {\r\n conn.send(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_INCORRECT_PASSWORD}));\r\n } else {\r\n let i = 1;\r\n while (i < MAX_PLRS && this.players[i]) {\r\n ++i;\r\n }\r\n if (i >= MAX_PLRS) {\r\n conn.send(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_GAME_FULL})); \r\n } else {\r\n this.players[i] = peer;\r\n peer.id = i;\r\n conn.send(server_packet.join_accept.write({cookie: pkt.cookie, index: i, seed: this.seed, difficulty: this.difficulty}));\r\n this.send(0xFF, server_packet.connect.write({id: i}));\r\n }\r\n }\r\n break;\r\n default:\r\n if (peer.id != null) {\r\n this.handle(peer.id, code, reader);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (!reader.done()) {\r\n throw Error('packet too large');\r\n }\r\n });\r\n conn.on('close', () => {\r\n //console.log('conn close');\r\n if (peer.id != null) {\r\n this.drop(peer.id, 0x40000006);\r\n }\r\n });\r\n }\r\n\r\n send(mask, pkt) {\r\n for (let i = 1; i < MAX_PLRS; ++i) {\r\n if ((mask & (1 << i)) && this.players[i]) {\r\n if (this.players[i].conn) {\r\n this.players[i].conn.send(pkt);\r\n }\r\n }\r\n }\r\n // self last since it will destroy the buffer\r\n if (mask & 1) {\r\n this.onMessage(pkt);\r\n }\r\n }\r\n\r\n drop(id, reason) {\r\n if (id === 0) {\r\n for (let i = 1; i < MAX_PLRS; ++i) {\r\n this.drop(i, 0x40000006);\r\n }\r\n this.onMessage(server_packet.disconnect.write({id, reason}));\r\n this.peer.destroy();\r\n this.onClose();\r\n } else if (this.players[id]) {\r\n this.send(0xFF, server_packet.disconnect.write({id, reason}));\r\n this.players[id].id = null;\r\n if (this.players[id].conn) {\r\n this.players[id].conn.close();\r\n }\r\n this.players[id] = null;\r\n }\r\n }\r\n\r\n handle(id, code, reader) {\r\n let pkt;\r\n switch (code) {\r\n case client_packet.leave_game.code:\r\n pkt = client_packet.leave_game.read(reader);\r\n this.drop(id, 3);\r\n break;\r\n case client_packet.drop_player.code:\r\n pkt = client_packet.drop_player.read(reader);\r\n this.drop(pkt.id, pkt.reason);\r\n break;\r\n case client_packet.message.code:\r\n pkt = client_packet.message.read(reader);\r\n this.send(pkt.id === 0xFF ? ~(1 << id) : (1 << pkt.id), server_packet.message.write({id, payload: pkt.payload}));\r\n break;\r\n case client_packet.turn.code:\r\n pkt = client_packet.turn.read(reader);\r\n this.send(~(1 << id), server_packet.turn.write({id, turn: pkt.turn}));\r\n break;\r\n default:\r\n throw Error(`invalid packet ${code}`);\r\n }\r\n }\r\n}\r\n\r\nclass webrtc_client {\r\n pending = [];\r\n\r\n constructor(version, {cookie, name, password}, onMessage, onClose) {\r\n this.peer = new Peer();\r\n this.conn = this.peer.connect(PeerID(name));\r\n\r\n let needUnreg = true;\r\n const unreg = () => {\r\n if (!needUnreg) {\r\n return;\r\n }\r\n needUnreg = false;\r\n this.peer.off('error', onError);\r\n this.conn.off('error', onError);\r\n this.conn.off('open', onOpen);\r\n clearTimeout(timeout);\r\n };\r\n const onError = () => {\r\n onMessage(server_packet.join_reject.write({cookie, reason: RejectionReason.JOIN_GAME_NOT_FOUND}));\r\n onClose();\r\n unreg();\r\n };\r\n const onOpen = () => {\r\n this.conn.send(client_packet.info.write({version}));\r\n this.conn.send(client_packet.join_game.write({cookie, name, password}));\r\n for (let pkt of this.pending) {\r\n this.conn.send(pkt);\r\n }\r\n this.pending = null;\r\n this.conn.off('open', onOpen);\r\n };\r\n const timeout = setTimeout(onError, 10000);\r\n this.peer.on('error', onError);\r\n this.conn.on('error', onError);\r\n this.conn.on('open', onOpen);\r\n\r\n //this.peer.on('error', err => console.log('peer error:', err));\r\n //this.conn.on('error', err => console.log('conn error:', err));\r\n\r\n this.conn.on('data', data => {\r\n unreg();\r\n const reader = new buffer_reader(data);\r\n const code = reader.read8();\r\n let pkt;\r\n switch (code) {\r\n case server_packet.join_accept.code:\r\n pkt = server_packet.join_accept.read(reader);\r\n this.myplr = pkt.index;\r\n break;\r\n case server_packet.join_reject.code:\r\n onClose();\r\n break;\r\n case server_packet.disconnect.code:\r\n pkt = server_packet.disconnect.read(reader);\r\n if (pkt.id === 'myplr') {\r\n onClose();\r\n }\r\n break;\r\n default:\r\n }\r\n onMessage(data);\r\n });\r\n this.conn.on('close', data => {\r\n onClose();\r\n });\r\n }\r\n\r\n send(packet) {\r\n if (this.pending) {\r\n this.pending.push(packet);\r\n } else {\r\n this.conn.send(packet);\r\n }\r\n }\r\n}\r\n\r\nexport default function webrtc_open(onMessage) {\r\n let server = null, client = null;\r\n\r\n let version = 0;\r\n\r\n /*const prevMessage = onMessage;\r\n onMessage = data => {\r\n log_packet(data, server_packet);\r\n prevMessage(data);\r\n };*/\r\n\r\n return {\r\n send: function(packet) {\r\n //log_packet(packet, client_packet);\r\n const reader = new buffer_reader(packet);\r\n const code = reader.read8();\r\n let pkt;\r\n switch (code) {\r\n case client_packet.info.code:\r\n pkt = client_packet.info.read(reader);\r\n version = pkt.version;\r\n break;\r\n case client_packet.create_game.code:\r\n pkt = client_packet.create_game.read(reader);\r\n if (server || client) {\r\n onMessage(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_ALREADY_IN_GAME}));\r\n } else {\r\n server = new webrtc_server(version, pkt, onMessage, () => server = null);\r\n }\r\n break;\r\n case client_packet.join_game.code:\r\n pkt = client_packet.join_game.read(reader);\r\n if (server || client) {\r\n onMessage(server_packet.join_reject.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_ALREADY_IN_GAME}));\r\n } else {\r\n client = new webrtc_client(version, pkt, onMessage, () => client = null);\r\n }\r\n break;\r\n default:\r\n if (server) {\r\n server.handle(0, code, reader);\r\n if (code === client_packet.leave_game.code) {\r\n server = null;\r\n }\r\n } else if (client) {\r\n client.send(packet);\r\n if (code === client_packet.leave_game.code) {\r\n client = null;\r\n }\r\n return;\r\n } else if (code !== client_packet.leave_game.code) {\r\n throw Error(`invalid packet ${code}`);\r\n }\r\n }\r\n if (!reader.done()) {\r\n throw Error('packet too large');\r\n }\r\n },\r\n };\r\n}\r\n","import Worker from './game.worker.js';\r\nimport init_sound from './sound';\r\nimport load_spawn from './load_spawn';\r\nimport webrtc_open from './webrtc';\r\n\r\nfunction onRender(api, ctx, {bitmap, images, text, clip, belt}) {\r\n if (bitmap) {\r\n ctx.transferFromImageBitmap(bitmap);\r\n } else {\r\n for (let {x, y, w, h, data} of images) {\r\n const image = ctx.createImageData(w, h);\r\n image.data.set(data);\r\n ctx.putImageData(image, x, y);\r\n }\r\n if (text.length) {\r\n ctx.save();\r\n ctx.font = 'bold 13px Times New Roman';\r\n if (clip) {\r\n const {x0, y0, x1, y1} = clip;\r\n ctx.beginPath();\r\n ctx.rect(x0, y0, x1 - x0, y1 - y0);\r\n ctx.clip();\r\n }\r\n for (let {x, y, text: str, color} of text) {\r\n const r = ((color >> 16) & 0xFF);\r\n const g = ((color >> 8) & 0xFF);\r\n const b = (color & 0xFF);\r\n ctx.fillStyle = `rgb(${r}, ${g}, ${b})`;\r\n ctx.fillText(str, x, y + 22);\r\n }\r\n ctx.restore();\r\n }\r\n }\r\n\r\n api.updateBelt(belt);\r\n}\r\n\r\nfunction testOffscreen() {\r\n return false;\r\n // This works but I couldn't see any performance difference, and support for 2D canvas in workers is very poor.\r\n // In this mode, instead of sending a batch of areas to draw back to the main thread, the worker does all drawing on its own and sends a complete bitmap object back.\r\n // However, this effectively clears the worker's canvas, so we need to redraw the whole frame every time, which defeats the performance gained from reduced copying.\r\n /*try {\r\n const canvas = document.createElement(\"canvas\");\r\n const offscreen = canvas.transferControlToOffscreen();\r\n const context = offscreen.getContext(\"2d\");\r\n return context != null;\r\n } catch (e) {\r\n return false;\r\n }*/\r\n}\r\n\r\nasync function do_load_game(api, audio, mpq, spawn) {\r\n const fs = await api.fs;\r\n if (spawn && !mpq) {\r\n await load_spawn(api, fs);\r\n }\r\n\r\n let context = null, offscreen = false;\r\n if (testOffscreen()) {\r\n context = api.canvas.getContext(\"bitmaprenderer\");\r\n offscreen = true;\r\n } else {\r\n context = api.canvas.getContext(\"2d\", {alpha: false});\r\n }\r\n return await new Promise((resolve, reject) => {\r\n try {\r\n const worker = new Worker();\r\n\r\n let packetQueue = [];\r\n const webrtc = webrtc_open(data => {\r\n packetQueue.push(data);\r\n });\r\n\r\n worker.addEventListener(\"message\", ({data}) => {\r\n switch (data.action) {\r\n case \"loaded\":\r\n resolve((func, ...params) => worker.postMessage({action: \"event\", func, params}));\r\n break;\r\n case \"render\":\r\n onRender(api, context, data.batch);\r\n break;\r\n case \"audio\":\r\n audio[data.func](...data.params);\r\n break;\r\n case \"audioBatch\":\r\n for (let {func, params} of data.batch) {\r\n audio[func](...params);\r\n }\r\n break;\r\n case \"fs\":\r\n fs[data.func](...data.params);\r\n break;\r\n case \"cursor\":\r\n api.setCursorPos(data.x, data.y);\r\n break;\r\n case \"keyboard\":\r\n api.openKeyboard(data.rect);\r\n break;\r\n case \"error\":\r\n audio.stop_all();\r\n api.onError(data.error, data.stack);\r\n break;\r\n case \"failed\":\r\n reject(Error(data.stack || data.error));\r\n break;\r\n case \"progress\":\r\n api.onProgress({text: data.text, loaded: data.loaded, total: data.total});\r\n break;\r\n case \"exit\":\r\n api.onExit();\r\n break;\r\n case \"current_save\":\r\n api.setCurrentSave(data.name);\r\n break;\r\n case \"packet\":\r\n webrtc.send(data.buffer);\r\n break;\r\n case \"packetBatch\":\r\n for (let packet of data.batch) {\r\n webrtc.send(packet);\r\n }\r\n break;\r\n default:\r\n }\r\n }); \r\n const transfer= [];\r\n for (let [, file] of fs.files) {\r\n transfer.push(file.buffer);\r\n }\r\n worker.postMessage({action: \"init\", files: fs.files, mpq, spawn, offscreen}, transfer);\r\n setInterval(() => {\r\n if (packetQueue.length) {\r\n worker.postMessage({action: \"packetBatch\", batch: packetQueue}, packetQueue);\r\n packetQueue.length = 0;\r\n }\r\n }, 20);\r\n delete fs.files;\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n}\r\n\r\nexport default function load_game(api, mpq, spawn) {\r\n const audio = init_sound();\r\n return do_load_game(api, audio, mpq, spawn);\r\n}\r\n","import React from 'react';\r\nimport './App.scss';\r\nimport classNames from 'classnames';\r\nimport ReactGA from 'react-ga';\r\n\r\nimport create_fs from './fs';\r\nimport load_game from './api/loader';\r\nimport { SpawnSizes } from './api/load_spawn';\r\n\r\nimport Peer from 'peerjs';\r\n\r\nwindow.Peer = Peer;\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n ReactGA.initialize('UA-43123589-6');\r\n ReactGA.pageview('/');\r\n}\r\n\r\nfunction reportLink(e, retail) {\r\n const message = e.stack || e.message || \"Unknown error\";\r\n const url = new URL(\"https://github.com/d07RiV/diabloweb/issues/new\");\r\n url.searchParams.set(\"body\",\r\n`**Description:**\r\n[Please describe what you were doing before the error occurred]\r\n\r\n**App version:**\r\nDiabloWeb ${process.env.VERSION} (${retail ? 'Retail' : 'Shareware'})\r\n\r\n**Error message:**\r\n \r\n${message.split(\"\\n\").map(line => \" \" + line).join(\"\\n\")}\r\n\r\n**User agent:**\r\n\r\n ${navigator.userAgent}\r\n\r\n**Save file:**\r\n[Please attach the save file, if applicable. The error box should have a link to download the current save you were playing; alternatively, you can open dev console on the game page (F12) and type in ${\"`DownloadSaves()`\"}]\r\n`);\r\n return url.toString();\r\n}\r\n\r\nfunction isDropFile(e) {\r\n if (e.dataTransfer.items) {\r\n for (let i = 0; i < e.dataTransfer.items.length; ++i) {\r\n if (e.dataTransfer.items[i].kind === \"file\") {\r\n return true;\r\n }\r\n }\r\n } if (e.dataTransfer.files.length) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction getDropFile(e) {\r\n if (e.dataTransfer.items) {\r\n for (let i = 0; i < e.dataTransfer.items.length; ++i) {\r\n if (e.dataTransfer.items[i].kind === \"file\") {\r\n return e.dataTransfer.items[i].getAsFile();\r\n }\r\n }\r\n } if (e.dataTransfer.files.length) {\r\n return e.dataTransfer.files[0];\r\n }\r\n}\r\n\r\nconst TOUCH_MOVE = 0;\r\nconst TOUCH_RMB = 1;\r\nconst TOUCH_SHIFT = 2;\r\n\r\nfunction findKeyboardRule() {\r\n for (let sheet of document.styleSheets) {\r\n for (let rule of sheet.cssRules) {\r\n if (rule.type === CSSRule.MEDIA_RULE && rule.conditionText === '(min-aspect-ratio: 3/1)') {\r\n for (let sub of rule.cssRules) {\r\n if (sub.selectorText === '.App.keyboard .Body .inner') {\r\n return sub;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet keyboardRule = null;\r\ntry {\r\n keyboardRule = findKeyboardRule();\r\n} catch (e) {\r\n}\r\n\r\nconst Link = ({children, ...props}) => {children};\r\n\r\nclass App extends React.Component {\r\n files = new Map();\r\n state = {started: false, loading: false, dropping: 0, has_spawn: false};\r\n cursorPos = {x: 0, y: 0};\r\n\r\n touchControls = false;\r\n touchButtons = [null, null, null, null, null, null];\r\n touchCtx = [null, null, null, null, null, null];\r\n touchMods = [false, false, false, false, false, false];\r\n touchBelt = [-1, -1, -1, -1, -1, -1];\r\n maxKeyboard = 0;\r\n\r\n fs = create_fs(true);\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.setTouch0 = this.setTouch_.bind(this, 0);\r\n this.setTouch1 = this.setTouch_.bind(this, 1);\r\n this.setTouch2 = this.setTouch_.bind(this, 2);\r\n this.setTouch3 = this.setTouchBelt_.bind(this, 3);\r\n this.setTouch4 = this.setTouchBelt_.bind(this, 4);\r\n this.setTouch5 = this.setTouchBelt_.bind(this, 5);\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener(\"drop\", this.onDrop, true);\r\n document.addEventListener(\"dragover\", this.onDragOver, true);\r\n document.addEventListener(\"dragenter\", this.onDragEnter, true);\r\n document.addEventListener(\"dragleave\", this.onDragLeave, true);\r\n\r\n this.fs.then(fs => {\r\n const spawn = fs.files.get('spawn.mpq');\r\n if (spawn && SpawnSizes.includes(spawn.byteLength)) {\r\n this.setState({has_spawn: true});\r\n }\r\n });\r\n }\r\n\r\n onDrop = e => {\r\n const file = getDropFile(e);\r\n if (file) {\r\n e.preventDefault();\r\n this.start(file);\r\n }\r\n this.setState({dropping: 0});\r\n }\r\n onDragEnter = e => {\r\n e.preventDefault();\r\n this.setDropping(1);\r\n }\r\n onDragOver = e => {\r\n if (isDropFile(e)) {\r\n e.preventDefault();\r\n }\r\n }\r\n onDragLeave = e => {\r\n this.setDropping(-1);\r\n }\r\n setDropping(inc) {\r\n this.setState(({dropping}) => ({dropping: Math.max(dropping + inc, 0)}));\r\n }\r\n\r\n onError(message, stack) {\r\n this.setState(({error}) => !error && {error: {message, stack}});\r\n }\r\n\r\n openKeyboard(rect) {\r\n if (rect) {\r\n this.showKeyboard = {\r\n left: `${(100 * (rect[0] - 10) / 640).toFixed(2)}%`,\r\n top: `${(100 * (rect[1] - 10) / 480).toFixed(2)}%`,\r\n width: `${(100 * (rect[2] - rect[0] + 20) / 640).toFixed(2)}%`,\r\n height: `${(100 * (rect[3] - rect[1] + 20) / 640).toFixed(2)}%`,\r\n };\r\n this.maxKeyboard = rect[4];\r\n this.element.classList.add(\"keyboard\");\r\n Object.assign(this.keyboard.style, this.showKeyboard);\r\n this.keyboard.focus();\r\n if (keyboardRule) {\r\n keyboardRule.style.transform = `translate(-50%, ${(-(rect[1] + rect[3]) * 56.25 / 960).toFixed(2)}vw)`;\r\n }\r\n } else {\r\n this.showKeyboard = false;\r\n this.element.classList.remove(\"keyboard\");\r\n this.keyboard.blur();\r\n this.keyboard.value = \"\";\r\n this.keyboardNum = 0;\r\n }\r\n }\r\n\r\n setCursorPos(x, y) {\r\n const rect = this.canvas.getBoundingClientRect();\r\n this.cursorPos = {\r\n x: rect.left + (rect.right - rect.left) * x / 640,\r\n y: rect.top + (rect.bottom - rect.top) * y / 480,\r\n };\r\n setTimeout(() => {\r\n this.game(\"DApi_Mouse\", 0, 0, 0, x, y);\r\n });\r\n }\r\n\r\n onProgress(progress) {\r\n this.setState({progress});\r\n }\r\n\r\n onExit() {\r\n if (!this.state.error) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n setCurrentSave(name) {\r\n this.saveName = name;\r\n }\r\n downloadSave = e => {\r\n this.fs.then(fs => this.saveName && fs.download(this.saveName));\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n drawBelt(idx, slot) {\r\n if (!this.canvas) return;\r\n if (!this.touchButtons[idx]) {\r\n return;\r\n }\r\n this.touchBelt[idx] = slot;\r\n if (slot >= 0) {\r\n this.touchButtons[idx].style.display = \"block\";\r\n this.touchCtx[idx].drawImage(this.canvas, 205 + 29 * slot, 357, 28, 28, 0, 0, 28, 28);\r\n } else {\r\n this.touchButtons[idx].style.display = \"none\";\r\n }\r\n }\r\n\r\n updateBelt(belt) {\r\n if (belt) {\r\n const used = new Set();\r\n let pos = 3;\r\n for (let i = 0; i < belt.length && pos < 6; ++i) {\r\n if (belt[i] >= 0 && !used.has(belt[i])) {\r\n this.drawBelt(pos++, i);\r\n used.add(belt[i]);\r\n }\r\n }\r\n for (; pos < 6; ++pos) {\r\n this.drawBelt(pos, -1);\r\n }\r\n } else {\r\n this.drawBelt(3, -1);\r\n this.drawBelt(4, -1);\r\n this.drawBelt(5, -1);\r\n }\r\n }\r\n\r\n start(file) {\r\n if (file && file.name.match(/\\.sv$/i)) {\r\n this.fs.then(fs => fs.upload(file)).then(console.log(`Updated ${file.name}`));\r\n return;\r\n }\r\n\r\n document.removeEventListener(\"drop\", this.onDrop, true);\r\n document.removeEventListener(\"dragover\", this.onDragOver, true);\r\n document.removeEventListener(\"dragenter\", this.onDragEnter, true);\r\n document.removeEventListener(\"dragleave\", this.onDragLeave, true);\r\n this.setState({dropping: 0});\r\n\r\n const retail = !!(file && file.name.match(/^diabdat\\.mpq$/i));\r\n if (process.env.NODE_ENV === 'production') {\r\n ReactGA.event({\r\n category: 'Game',\r\n action: retail ? 'Start Retail' : 'Start Shareware',\r\n });\r\n }\r\n\r\n this.setState({loading: true, retail});\r\n\r\n load_game(this, file, !retail).then(game => {\r\n this.game = game;\r\n\r\n document.addEventListener('mousemove', this.onMouseMove, true);\r\n document.addEventListener('mousedown', this.onMouseDown, true);\r\n document.addEventListener('mouseup', this.onMouseUp, true);\r\n document.addEventListener('keydown', this.onKeyDown, true);\r\n document.addEventListener('keyup', this.onKeyUp, true);\r\n document.addEventListener('contextmenu', this.onMenu, true);\r\n\r\n document.addEventListener('touchstart', this.onTouchStart, {passive: false, capture: true});\r\n document.addEventListener('touchmove', this.onTouchMove, {passive: false, capture: true});\r\n document.addEventListener('touchend', this.onTouchEnd, {passive: false, capture: true});\r\n\r\n document.addEventListener('pointerlockchange', this.onPointerLockChange);\r\n window.addEventListener('resize', this.onResize);\r\n\r\n this.setState({started: true});\r\n }, e => this.onError(e.message, e.stack));\r\n }\r\n\r\n pointerLocked() {\r\n return document.pointerLockElement === this.canvas || document.mozPointerLockElement === this.canvas;\r\n }\r\n\r\n mousePos(e) {\r\n const rect = this.canvas.getBoundingClientRect();\r\n if (this.pointerLocked()) {\r\n this.cursorPos.x = Math.max(rect.left, Math.min(rect.right, this.cursorPos.x + e.movementX));\r\n this.cursorPos.y = Math.max(rect.top, Math.min(rect.bottom, this.cursorPos.y + e.movementY));\r\n } else {\r\n this.cursorPos = {x: e.clientX, y: e.clientY};\r\n }\r\n return {\r\n x: Math.max(0, Math.min(Math.round((this.cursorPos.x - rect.left) / (rect.right - rect.left) * 640), 639)),\r\n y: Math.max(0, Math.min(Math.round((this.cursorPos.y - rect.top) / (rect.bottom - rect.top) * 480), 479)),\r\n };\r\n }\r\n\r\n mouseButton(e) {\r\n switch (e.button) {\r\n case 0: return 1;\r\n case 1: return 4;\r\n case 2: return 2;\r\n case 3: return 5;\r\n case 4: return 6;\r\n default: return 1;\r\n }\r\n }\r\n eventMods(e) {\r\n return ((e.shiftKey || this.touchMods[TOUCH_SHIFT]) ? 1 : 0) + (e.ctrlKey ? 2 : 0) + (e.altKey ? 4 : 0) + (e.touches ? 8 : 0);\r\n }\r\n\r\n onResize = () => {\r\n document.exitPointerLock();\r\n }\r\n\r\n onPointerLockChange = () => {\r\n if (window.screen && window.innerHeight === window.screen.height && !this.pointerLocked()) {\r\n // assume that the user pressed escape\r\n this.game(\"DApi_Key\", 0, 0, 27);\r\n this.game(\"DApi_Key\", 1, 0, 27);\r\n }\r\n }\r\n\r\n onMouseMove = e => {\r\n if (!this.canvas) return;\r\n const {x, y} = this.mousePos(e);\r\n this.game(\"DApi_Mouse\", 0, 0, this.eventMods(e), x, y);\r\n e.preventDefault();\r\n }\r\n\r\n onMouseDown = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n return;\r\n }\r\n if (this.touchControls) {\r\n this.touchControls = false;\r\n this.element.classList.remove(\"touch\");\r\n }\r\n const {x, y} = this.mousePos(e);\r\n if (window.screen && window.innerHeight === window.screen.height) {\r\n // we're in fullscreen, let's get pointer lock!\r\n if (!this.pointerLocked()) {\r\n this.canvas.requestPointerLock();\r\n }\r\n }\r\n this.game(\"DApi_Mouse\", 1, this.mouseButton(e), this.eventMods(e), x, y);\r\n e.preventDefault();\r\n }\r\n\r\n onMouseUp = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n //return;\r\n }\r\n const {x, y} = this.mousePos(e);\r\n this.game(\"DApi_Mouse\", 2, this.mouseButton(e), this.eventMods(e), x, y);\r\n if (e.target !== this.keyboard) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n onKeyDown = e => {\r\n if (!this.canvas) return;\r\n this.game(\"DApi_Key\", 0, this.eventMods(e), e.keyCode);\r\n if (!this.showKeyboard && (e.keyCode >= 32 && e.key.length === 1)) {\r\n this.game(\"DApi_Char\", e.key.charCodeAt(0));\r\n } else if (e.keyCode === 8 || e.keyCode === 13) {\r\n this.game(\"DApi_Char\", e.keyCode);\r\n }\r\n this.clearKeySel();\r\n if (!this.showKeyboard) {\r\n if (e.keyCode === 8 || e.keyCode === 9 || (e.keyCode >= 112 && e.keyCode <= 119)) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n onMenu = e => {\r\n e.preventDefault();\r\n }\r\n\r\n onKeyUp = e => {\r\n if (!this.canvas) return;\r\n this.game(\"DApi_Key\", 1, this.eventMods(e), e.keyCode);\r\n this.clearKeySel();\r\n }\r\n\r\n clearKeySel() {\r\n if (this.showKeyboard) {\r\n const len = this.keyboard.value.length;\r\n this.keyboard.setSelectionRange(len, len);\r\n }\r\n }\r\n\r\n onKeyboardInner(flags) {\r\n if (this.showKeyboard) {\r\n const text = this.keyboard.value;\r\n let valid;\r\n if (this.maxKeyboard > 0) {\r\n valid = (text.match(/[\\x20-\\x7E]/g) || []).join(\"\").substring(0, this.maxKeyboard);\r\n } else {\r\n const maxValue = -this.maxKeyboard;\r\n if (text.match(/^\\d*$/)) {\r\n this.keyboardNum = Math.min(text.length ? parseInt(text) : 0, maxValue);\r\n }\r\n valid = (this.keyboardNum ? this.keyboardNum.toString() : \"\");\r\n }\r\n if (text !== valid) {\r\n this.keyboard.value = valid;\r\n }\r\n this.clearKeySel();\r\n this.game(\"text\", valid, flags);\r\n }\r\n }\r\n onKeyboard = () => {\r\n this.onKeyboardInner(0);\r\n }\r\n onKeyboardBlur = () => {\r\n this.onKeyboardInner(1);\r\n }\r\n\r\n parseFile = e => {\r\n const files = e.target.files;\r\n if (files.length > 0) {\r\n this.start(files[0]);\r\n }\r\n }\r\n\r\n touchButton = null;\r\n touchCanvas = null;\r\n\r\n setTouchMod(index, value, use) {\r\n if (index < 3) {\r\n this.touchMods[index] = value;\r\n if (this.touchButtons[index]) {\r\n this.touchButtons[index].classList.toggle(\"active\", value);\r\n }\r\n } else if (use && this.touchBelt[index] >= 0) {\r\n const now = performance.now();\r\n if (!this.beltTime || now - this.beltTime > 750) {\r\n this.game(\"DApi_Char\", 49 + this.touchBelt[index]);\r\n this.beltTime = now;\r\n }\r\n }\r\n }\r\n\r\n updateTouchButton(touches, release) {\r\n let touchOther = null;\r\n if (!this.touchControls) {\r\n this.touchControls = true;\r\n this.element.classList.add(\"touch\");\r\n }\r\n const btn = this.touchButton;\r\n for (let {target, identifier, clientX, clientY} of touches) {\r\n if (btn && btn.id === identifier && this.touchButtons[btn.index] === target) {\r\n if (touches.length > 1) {\r\n btn.stick = false;\r\n }\r\n btn.clientX = clientX;\r\n btn.clientY = clientY;\r\n this.touchCanvas = [...touches].find(t => t.identifier !== identifier);\r\n if (this.touchCanvas) {\r\n this.touchCanvas = {clientX: this.touchCanvas.clientX, clientY: this.touchCanvas.clientY};\r\n }\r\n delete this.panPos;\r\n return this.touchCanvas != null;\r\n }\r\n const idx = this.touchButtons.indexOf(target);\r\n if (idx >= 0 && !touchOther) {\r\n touchOther = {id: identifier, index: idx, stick: true, original: this.touchMods[idx], clientX, clientY};\r\n }\r\n }\r\n if (btn && !touchOther && release && btn.stick) {\r\n const rect = this.touchButtons[btn.index].getBoundingClientRect();\r\n const {clientX, clientY} = btn;\r\n if (clientX >= rect.left && clientX < rect.right && clientY >= rect.top && clientY < rect.bottom) {\r\n this.setTouchMod(btn.index, !btn.original, true);\r\n } else {\r\n this.setTouchMod(btn.index, btn.original);\r\n }\r\n } else if (btn) {\r\n this.setTouchMod(btn.index, false);\r\n }\r\n this.touchButton = touchOther;\r\n if (touchOther) {\r\n this.setTouchMod(touchOther.index, true);\r\n if (touchOther.index === TOUCH_MOVE) {\r\n this.setTouchMod(TOUCH_RMB, false);\r\n } else if (touchOther.index === TOUCH_RMB) {\r\n this.setTouchMod(TOUCH_MOVE, false);\r\n }\r\n delete this.panPos;\r\n } else if (touches.length === 2) {\r\n const x = (touches[1].clientX + touches[0].clientX) / 2, y = (touches[1].clientY + touches[0].clientY) / 2;\r\n if (this.panPos) {\r\n const dx = x - this.panPos.x, dy = y - this.panPos.y;\r\n const step = this.canvas.offsetHeight / 12;\r\n if (Math.max(Math.abs(dx), Math.abs(dy)) > step) {\r\n let key;\r\n if (Math.abs(dx) > Math.abs(dy)) {\r\n key = (dx > 0 ? 0x25 : 0x27);\r\n } else {\r\n key = (dy > 0 ? 0x26 : 0x28);\r\n }\r\n this.game(\"DApi_Key\", 0, 0, key);\r\n // key up is ignored anyway\r\n this.panPos = {x, y};\r\n }\r\n } else {\r\n this.game(\"DApi_Mouse\", 0, 0, 24, 320, 180);\r\n this.game(\"DApi_Mouse\", 2, 1, 24, 320, 180);\r\n this.panPos = {x, y};\r\n }\r\n this.touchCanvas = null;\r\n return false;\r\n } else {\r\n delete this.panPos;\r\n }\r\n this.touchCanvas = [...touches].find(t => !touchOther || t.identifier !== touchOther.id);\r\n if (this.touchCanvas) {\r\n this.touchCanvas = {clientX: this.touchCanvas.clientX, clientY: this.touchCanvas.clientY};\r\n }\r\n return this.touchCanvas != null;\r\n }\r\n\r\n onTouchStart = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n return;\r\n } else {\r\n this.keyboard.blur();\r\n }\r\n e.preventDefault();\r\n if (this.updateTouchButton(e.touches, false)) {\r\n const {x, y} = this.mousePos(this.touchCanvas);\r\n this.game(\"DApi_Mouse\", 0, 0, this.eventMods(e), x, y);\r\n if (!this.touchMods[TOUCH_MOVE]) {\r\n this.game(\"DApi_Mouse\", 1, this.touchMods[TOUCH_RMB] ? 2 : 1, this.eventMods(e), x, y);\r\n }\r\n }\r\n }\r\n onTouchMove = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (this.updateTouchButton(e.touches, false)) {\r\n const {x, y} = this.mousePos(this.touchCanvas);\r\n this.game(\"DApi_Mouse\", 0, 0, this.eventMods(e), x, y);\r\n }\r\n }\r\n onTouchEnd = e => {\r\n if (!this.canvas) return;\r\n if (e.target === this.keyboard) {\r\n //return;\r\n } else {\r\n e.preventDefault();\r\n }\r\n const prevTc = this.touchCanvas;\r\n this.updateTouchButton(e.touches, true);\r\n if (prevTc && !this.touchCanvas) {\r\n const {x, y} = this.mousePos(prevTc);\r\n this.game(\"DApi_Mouse\", 2, 1, this.eventMods(e), x, y);\r\n this.game(\"DApi_Mouse\", 2, 2, this.eventMods(e), x, y);\r\n\r\n if (this.touchMods[TOUCH_RMB] && (!this.touchButton || this.touchButton.index !== TOUCH_RMB)) {\r\n this.setTouchMod(TOUCH_RMB, false);\r\n }\r\n }\r\n if (!document.fullscreenElement) {\r\n this.element.requestFullscreen();\r\n }\r\n }\r\n\r\n setCanvas = e => this.canvas = e;\r\n setElement = e => this.element = e;\r\n setKeyboard = e => this.keyboard = e;\r\n setTouch_(i, e) {\r\n this.touchButtons[i] = e;\r\n }\r\n setTouchBelt_(i, e) {\r\n this.touchButtons[i] = e;\r\n if (e) {\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = 28;\r\n canvas.height = 28;\r\n e.appendChild(canvas);\r\n this.touchCtx[i] = canvas.getContext(\"2d\");\r\n } else {\r\n this.touchCtx[i] = null;\r\n }\r\n }\r\n\r\n render() {\r\n const {started, loading, error, progress, dropping, has_spawn} = this.state;\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {!error && }\r\n \r\n
\r\n
\r\n
\r\n {!!error && (\r\n \r\n

The following error has occurred:

\r\n

{error.message}

\r\n

Click to create an issue on GitHub

\r\n {this.saveName != null &&

Download save file

}\r\n \r\n )}\r\n {!!loading && !started && !error && (\r\n
\r\n {(progress && progress.text) || 'Loading...'}\r\n {progress != null && !!progress.total && (\r\n \r\n )}\r\n
\r\n )}\r\n {!started && !loading && !error && (\r\n
\r\n

\r\n This is a web port of the original Diablo game, based on source code reconstructed by\r\n GalaXyHaXz and devilution team. The project page with information and links can be found over here https://github.com/d07RiV/diabloweb\r\n

\r\n

\r\n If you own the original game, you can drop the original DIABDAT.MPQ onto this page or click the button below to start playing.\r\n The game can be purchased from GoG.\r\n

\r\n {!has_spawn && (\r\n

\r\n Or you can play the shareware version for free (50MB download).\r\n

\r\n )}\r\n
\r\n \r\n \r\n
\r\n this.start()}>Play Shareware\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './reset.css';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nimport App from './App';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n\r\nserviceWorker.register({\r\n onUpdate() {\r\n },\r\n});\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/media/Diablo.3991174f.wasm b/static/media/Diablo.3991174f.wasm new file mode 100644 index 0000000..7070a88 Binary files /dev/null and b/static/media/Diablo.3991174f.wasm differ diff --git a/static/media/Diablo.4a6435cb.wasm b/static/media/Diablo.4a6435cb.wasm deleted file mode 100644 index b28f21f..0000000 Binary files a/static/media/Diablo.4a6435cb.wasm and /dev/null differ diff --git a/static/media/DiabloSpawn.32acbb39.wasm b/static/media/DiabloSpawn.32acbb39.wasm new file mode 100644 index 0000000..15125f8 Binary files /dev/null and b/static/media/DiabloSpawn.32acbb39.wasm differ diff --git a/static/media/DiabloSpawn.ef6314a9.wasm b/static/media/DiabloSpawn.ef6314a9.wasm deleted file mode 100644 index beed8db..0000000 Binary files a/static/media/DiabloSpawn.ef6314a9.wasm and /dev/null differ