diff --git a/35f22eb14a4817ef6e49.worker.js b/ad00e5df61d162015181.worker.js similarity index 99% rename from 35f22eb14a4817ef6e49.worker.js rename to ad00e5df61d162015181.worker.js index a4ee6d1..6fbdc14 100644 --- a/35f22eb14a4817ef6e49.worker.js +++ b/ad00e5df61d162015181.worker.js @@ -1,2 +1,2 @@ -!function(n){var t={};function e(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return n[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}e.m=n,e.c=t,e.d=function(n,t,r){e.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:r})},e.r=function(n){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},e.t=function(n,t){if(1&t&&(n=e(n)),8&t)return n;if(4&t&&"object"===typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var o in n)e.d(r,o,function(t){return n[t]}.bind(null,o));return r},e.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(t,"a",t),t},e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},e.p="/diabloweb/",e(e.s=35)}([function(n,t,e){"use strict";var r=e(5),o=e(20),a=Object.prototype.toString;function i(n){return"[object Array]"===a.call(n)}function u(n){return null!==n&&"object"===typeof n}function s(n){return"[object Function]"===a.call(n)}function c(n,t){if(null!==n&&"undefined"!==typeof n)if("object"!==typeof n&&(n=[n]),i(n))for(var e=0,r=n.length;e1)for(var e=1;e=0;r--){var o=n[r];"."===o?n.splice(r,1):".."===o?(n.splice(r,1),e++):e&&(n.splice(r,1),e--)}if(t)for(;e--;e)n.unshift("..");return n}function r(n,t){if(n.filter)return n.filter(t);for(var e=[],r=0;r=-1&&!o;a--){var i=a>=0?arguments[a]:n.cwd();if("string"!==typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(t=i+"/"+t,o="/"===i.charAt(0))}return(o?"/":"")+(t=e(r(t.split("/"),function(n){return!!n}),!o).join("/"))||"."},t.normalize=function(n){var a=t.isAbsolute(n),i="/"===o(n,-1);return(n=e(r(n.split("/"),function(n){return!!n}),!a).join("/"))||a||(n="."),n&&i&&(n+="/"),(a?"/":"")+n},t.isAbsolute=function(n){return"/"===n.charAt(0)},t.join=function(){var n=Array.prototype.slice.call(arguments,0);return t.normalize(r(n,function(n,t){if("string"!==typeof n)throw new TypeError("Arguments to path.join must be strings");return n}).join("/"))},t.relative=function(n,e){function r(n){for(var t=0;t=0&&""===n[e];e--);return t>e?[]:n.slice(t,e-t+1)}n=t.resolve(n).substr(1),e=t.resolve(e).substr(1);for(var o=r(n.split("/")),a=r(e.split("/")),i=Math.min(o.length,a.length),u=i,s=0;s=1;--a)if(47===(t=n.charCodeAt(a))){if(!o){r=a;break}}else o=!1;return-1===r?e?"/":".":e&&1===r?"/":n.slice(0,r)},t.basename=function(n,t){var e=function(n){"string"!==typeof n&&(n+="");var t,e=0,r=-1,o=!0;for(t=n.length-1;t>=0;--t)if(47===n.charCodeAt(t)){if(!o){e=t+1;break}}else-1===r&&(o=!1,r=t+1);return-1===r?"":n.slice(e,r)}(n);return t&&e.substr(-1*t.length)===t&&(e=e.substr(0,e.length-t.length)),e},t.extname=function(n){"string"!==typeof n&&(n+="");for(var t=-1,e=0,r=-1,o=!0,a=0,i=n.length-1;i>=0;--i){var u=n.charCodeAt(i);if(47!==u)-1===r&&(o=!1,r=i+1),46===u?-1===t?t=i:1!==a&&(a=1):-1!==t&&(a=-1);else if(!o){e=i+1;break}}return-1===t||-1===r||0===a||1===a&&t===r-1&&t===e+1?"":n.slice(t,r)};var o="b"==="ab".substr(-1)?function(n,t,e){return n.substr(t,e)}:function(n,t,e){return t<0&&(t=n.length+t),n.substr(t,e)}}).call(this,e(2))},function(n,t,e){"use strict";n.exports=function(n,t){return function(){for(var e=new Array(arguments.length),r=0;r=200&&n<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],function(n){u.headers[n]={}}),r.forEach(["post","put","patch"],function(n){u.headers[n]=r.merge(a)}),n.exports=u}).call(this,e(2))},function(n,t,e){"use strict";var r=e(0),o=e(26),a=e(6),i=e(28),u=e(29),s=e(10);n.exports=function(n){return new Promise(function(t,c){var f=n.data,l=n.headers;r.isFormData(f)&&delete l["Content-Type"];var p=new XMLHttpRequest;if(n.auth){var d=n.auth.username||"",h=n.auth.password||"";l.Authorization="Basic "+btoa(d+":"+h)}if(p.open(n.method.toUpperCase(),a(n.url,n.params,n.paramsSerializer),!0),p.timeout=n.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var e="getAllResponseHeaders"in p?i(p.getAllResponseHeaders()):null,r={data:n.responseType&&"text"!==n.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:e,config:n,request:p};o(t,c,r),p=null}},p.onabort=function(){p&&(c(s("Request aborted",n,"ECONNABORTED",p)),p=null)},p.onerror=function(){c(s("Network Error",n,null,p)),p=null},p.ontimeout=function(){c(s("timeout of "+n.timeout+"ms exceeded",n,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var _=e(30),y=(n.withCredentials||u(n.url))&&n.xsrfCookieName?_.read(n.xsrfCookieName):void 0;y&&(l[n.xsrfHeaderName]=y)}if("setRequestHeader"in p&&r.forEach(l,function(n,t){"undefined"===typeof f&&"content-type"===t.toLowerCase()?delete l[t]:p.setRequestHeader(t,n)}),n.withCredentials&&(p.withCredentials=!0),n.responseType)try{p.responseType=n.responseType}catch(m){if("json"!==n.responseType)throw m}"function"===typeof n.onDownloadProgress&&p.addEventListener("progress",n.onDownloadProgress),"function"===typeof n.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",n.onUploadProgress),n.cancelToken&&n.cancelToken.promise.then(function(n){p&&(p.abort(),c(n),p=null)}),void 0===f&&(f=null),p.send(f)})}},function(n,t,e){"use strict";var r=e(27);n.exports=function(n,t,e,o,a){var i=new Error(n);return r(i,t,e,o,a)}},function(n,t,e){"use strict";var r=e(0);n.exports=function(n,t){t=t||{};var e={};return r.forEach(["url","method","params","data"],function(n){"undefined"!==typeof t[n]&&(e[n]=t[n])}),r.forEach(["headers","auth","proxy"],function(o){r.isObject(t[o])?e[o]=r.deepMerge(n[o],t[o]):"undefined"!==typeof t[o]?e[o]=t[o]:r.isObject(n[o])?e[o]=r.deepMerge(n[o]):"undefined"!==typeof n[o]&&(e[o]=n[o])}),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 t[r]?e[r]=t[r]:"undefined"!==typeof n[r]&&(e[r]=n[r])}),e}},function(n,t,e){"use strict";function r(n){this.message=n}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,n.exports=r},function(n,t,e){n.exports=e.p+"static/media/Diablo.85de21cc.wasm"},function(n,t,e){(function(t,r){var o=function(){var n="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;return function(o){var a,i="undefined"!==typeof(o=o||{})?o:{},u={};for(a in i)i.hasOwnProperty(a)&&(u[a]=i[a]);i.arguments=[],i.thisProgram="./this.program",i.quit=function(n,t){throw t},i.preRun=[],i.postRun=[];var s,c,f=!1,l=!1;f="object"===typeof window,l="function"===typeof importScripts,s="object"===typeof t&&"object"===typeof t.versions&&"string"===typeof t.versions.node&&!f&&!l,c=!f&&!s&&!l;var p,d,h,_,y="";s?(y=r+"/",p=function(n,t){var r;return h||(h=e(3)),_||(_=e(4)),n=_.normalize(n),r=h.readFileSync(n),t?r:r.toString()},d=function(n){var t=p(n,!0);return t.buffer||(t=new Uint8Array(t)),j(t.buffer),t},t.argv.length>1&&(i.thisProgram=t.argv[1].replace(/\\/g,"/")),i.arguments=t.argv.slice(2),t.on("uncaughtException",function(n){if(!(n instanceof On))throw n}),t.on("unhandledRejection",Pn),i.quit=function(n){t.exit(n)},i.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(p=function(n){return read(n)}),d=function(n){var t;return"function"===typeof readbuffer?new Uint8Array(readbuffer(n)):(j("object"===typeof(t=read(n,"binary"))),t)},"undefined"!=typeof scriptArgs?i.arguments=scriptArgs:"undefined"!=typeof arguments&&(i.arguments=arguments),"function"===typeof quit&&(i.quit=function(n){quit(n)})):(f||l)&&(l?y=self.location.href:document.currentScript&&(y=document.currentScript.src),n&&(y=n),y=0!==y.indexOf("blob:")?y.substr(0,y.lastIndexOf("/")+1):"",p=function(n){var t=new XMLHttpRequest;return t.open("GET",n,!1),t.send(null),t.responseText},l&&(d=function(n){var t=new XMLHttpRequest;return t.open("GET",n,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),function(n,t,e){var r=new XMLHttpRequest;r.open("GET",n,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?t(r.response):e()},r.onerror=e,r.send(null)});var m=i.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),g=i.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||m);for(a in u)u.hasOwnProperty(a)&&(i[a]=u[a]);u=void 0;var v,b={"f64-rem":function(n,t){return n%t},debugger:function(){}},w=(new Array(0),0),A=function(n){w=n};"object"!==typeof WebAssembly&&g("no native wasm support detected");var x=!1;function j(n,t){n||Pn("Assertion failed: "+t)}var S="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function E(n,t,e){for(var r=t+e,o=t;n[o]&&!(o>=r);)++o;if(o-t>16&&n.subarray&&S)return S.decode(n.subarray(t,o));for(var a="";t>10,56320|1023&c)}}else a+=String.fromCharCode((31&i)<<6|u)}else a+=String.fromCharCode(i)}return a}function C(n,t){return n?E(T,n,t):""}var R,D,T,k,L;"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function O(n,t){return n%t>0&&(n+=t-n%t),n}function M(){i.HEAP8=D=new Int8Array(R),i.HEAP16=new Int16Array(R),i.HEAP32=k=new Int32Array(R),i.HEAPU8=T=new Uint8Array(R),i.HEAPU16=new Uint16Array(R),i.HEAPU32=new Uint32Array(R),i.HEAPF32=L=new Float32Array(R),i.HEAPF64=new Float64Array(R)}var P=i.TOTAL_MEMORY||134217728;function I(n){for(;n.length>0;){var t=n.shift();if("function"!=typeof t){var e=t.func;"number"===typeof e?void 0===t.arg?i.dynCall_v(e):i.dynCall_vi(e,t.arg):e(void 0===t.arg?null:t.arg)}else t()}}P<5242880&&g("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+P+"! (TOTAL_STACK=5242880)"),(v=i.wasmMemory?i.wasmMemory:new WebAssembly.Memory({initial:P/65536}))&&(R=v.buffer),P=R.byteLength,M(),k[468704]=7117728;var F=[],N=[],U=[],q=[];function B(n){q.unshift(n)}var H=0,z=null,W=null;i.preloadedImages={},i.preloadedAudios={};var G="data:application/octet-stream;base64,";function X(n){return String.prototype.startsWith?n.startsWith(G):0===n.indexOf(G)}var K,Y="Diablo.wasm";function J(){try{if(i.wasmBinary)return new Uint8Array(i.wasmBinary);if(d)return d(Y);throw"both async and sync fetching of the wasm failed"}catch(g){Pn(g)}}function V(n){var t={env:n,global:{NaN:NaN,Infinity:1/0},"global.Math":Math,asm2wasm:b};function e(n,t){var e=n.exports;i.asm=e,function(n){if(H--,i.monitorRunDependencies&&i.monitorRunDependencies(H),0==H&&(null!==z&&(clearInterval(z),z=null),W)){var t=W;W=null,t()}}()}function r(n){e(n.instance)}function o(n){return(i.wasmBinary||!f&&!l||"function"!==typeof fetch?new Promise(function(n,t){n(J())}):fetch(Y,{credentials:"same-origin"}).then(function(n){if(!n.ok)throw"failed to load wasm binary file at '"+Y+"'";return n.arrayBuffer()}).catch(function(){return J()})).then(function(n){return WebAssembly.instantiate(n,t)}).then(n,function(n){g("failed to asynchronously prepare wasm: "+n),Pn(n)})}if(H++,i.monitorRunDependencies&&i.monitorRunDependencies(H),i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(a){return g("Module.instantiateWasm callback failed with error: "+a),!1}return function(){if(i.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||X(Y)||"function"!==typeof fetch)return o(r);fetch(Y,{credentials:"same-origin"}).then(function(n){return WebAssembly.instantiateStreaming(n,t).then(r,function(n){g("wasm streaming compile failed: "+n),g("falling back to ArrayBuffer instantiation"),o(r)})})}(),{}}X(Y)||(K=Y,Y=i.locateFile?i.locateFile(K,y):y+K),i.asm=function(n,t,e){return t.memory=v,t.table=new WebAssembly.Table({initial:1114,maximum:1114,element:"anyfunc"}),t.__memory_base=1024,t.__table_base=0,V(t)};var Z=[function(n){self.DApi.current_save_id(n)}];N.push({func:function(){_n()}});var $={},Q=[];function nn(n){if(!n||$[n])return n;for(var t in $)for(var e=+t,r=$[e].adjusted,o=r.length,a=0;a>2],t.adjusted.push(n),0|(A(r[o]),n);return n=k[n>>2],0|(A(e),n)}i.___cxa_find_matching_catch=rn;var on={buffers:[null,[],[]],printChar:function(n,t){var e=on.buffers[n];0===t||10===t?((1===n?m:g)(E(e,0)),e.length=0):e.push(t)},varargs:0,get:function(n){return on.varargs+=4,k[on.varargs-4>>2]},getStr:function(){return C(on.get())},get64:function(){var n=on.get();on.get();return n},getZero:function(){on.get()}};function an(){return D.length}var un={n:Pn,L:A,b:function(){return w},ra:function(n){var t=mn();try{return gn(n)}catch(e){if(yn(t),e!==e+0&&"longjmp"!==e)throw e;hn(1,0)}},g:function(n,t){var e=mn();try{return vn(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},l:function(n,t,e){var r=mn();try{return bn(n,t,e)}catch(o){if(yn(r),o!==o+0&&"longjmp"!==o)throw o;hn(1,0)}},o:function(n,t,e,r){var o=mn();try{return wn(n,t,e,r)}catch(a){if(yn(o),a!==a+0&&"longjmp"!==a)throw a;hn(1,0)}},s:function(n,t,e,r,o){var a=mn();try{return An(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},t:function(n,t,e,r,o,a){var i=mn();try{return xn(n,t,e,r,o,a)}catch(u){if(yn(i),u!==u+0&&"longjmp"!==u)throw u;hn(1,0)}},K:function(n,t){var e=mn();try{return jn(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},u:function(n){var t=mn();try{Sn(n)}catch(e){if(yn(t),e!==e+0&&"longjmp"!==e)throw e;hn(1,0)}},f:function(n,t){var e=mn();try{En(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},e:function(n,t,e){var r=mn();try{Cn(n,t,e)}catch(o){if(yn(r),o!==o+0&&"longjmp"!==o)throw o;hn(1,0)}},j:function(n,t,e,r){var o=mn();try{Rn(n,t,e,r)}catch(a){if(yn(o),a!==a+0&&"longjmp"!==a)throw a;hn(1,0)}},q:function(n,t,e,r,o){var a=mn();try{Dn(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},r:function(n,t,e,r,o,a){var i=mn();try{Tn(n,t,e,r,o,a)}catch(u){if(yn(i),u!==u+0&&"longjmp"!==u)throw u;hn(1,0)}},A:function(n,t,e,r,o,a,i,u){var s=mn();try{kn(n,t,e,r,o,a,i,u)}catch(c){if(yn(s),c!==c+0&&"longjmp"!==c)throw c;hn(1,0)}},J:function(n,t,e,r,o){var a=mn();try{Ln(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},z:function(n,t,e,r){Pn("Assertion failed: "+C(n)+", at: "+[t?C(t):"unknown filename",e,r?C(r):"unknown function"])},i:function(n){return dn(n)},y:function(n){var t=$[n];return t&&!t.caught&&(t.caught=!0,cn.uncaught_exceptions--),t&&(t.rethrown=!1),Q.push(n),function(n){n&&$[n].refcount++}(nn(n)),n},I:function(){hn(0);var n=Q.pop();n&&(function(n){if(n){var t=$[n];t.refcount--,0!==t.refcount||t.rethrown||(t.destructor&&i.dynCall_vi(t.destructor,n),delete $[n],en(n))}}(nn(n)),tn=0)},c:function(n,t){return rn(n,t)},h:function(n,t,e){return rn(n,t,e)},m:en,qa:function(n){return n},pa:function(){throw x=!0,"Pure virtual function called!"},k:function(n,t,e){throw $[n]={ptr:n,adjusted:[n],type:t,destructor:e,refcount:0,caught:!1,rethrown:!1},tn=n,"uncaught_exception"in cn?cn.uncaught_exceptions++:cn.uncaught_exceptions=1,n},oa:function(){return cn.uncaught_exceptions},na:function(){},d:function(n){throw tn||(tn=n),n},H:function(n){return i.___errno_location&&(k[i.___errno_location()>>2]=n),n},ma:function(n,t){on.varargs=t;try{return on.getStreamFromFD(),on.get(),on.get(),on.get(),on.get(),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||Pn(e),-e.errno}},G:function(n,t){on.varargs=t;try{for(var e=on.get(),r=on.get(),o=on.get(),a=0,i=0;i>2],s=k[r+(8*i+4)>>2],c=0;c2147418112)return!1;for(var e=Math.max(t,16777216);e>2]=t),t},M:function(n){Pn("OOM")},a:1874816},sn=i.asm({},un,R);i.asm=sn;i._DApi_AllocPacket=function(){return i.asm.sa.apply(null,arguments)},i._DApi_Char=function(){return i.asm.ta.apply(null,arguments)},i._DApi_Init=function(){return i.asm.ua.apply(null,arguments)},i._DApi_Key=function(){return i.asm.va.apply(null,arguments)},i._DApi_Mouse=function(){return i.asm.wa.apply(null,arguments)},i._DApi_Render=function(){return i.asm.xa.apply(null,arguments)},i._DApi_SyncText=function(){return i.asm.ya.apply(null,arguments)},i._SNet_InitWebsocket=function(){return i.asm.za.apply(null,arguments)};var cn=i.__ZSt18uncaught_exceptionv=function(){return i.asm.Aa.apply(null,arguments)},fn=i.___cxa_can_catch=function(){return i.asm.Ba.apply(null,arguments)},ln=i.___cxa_is_pointer_type=function(){return i.asm.Ca.apply(null,arguments)},pn=(i.___em_js__api_close_keyboard=function(){return i.asm.Da.apply(null,arguments)},i.___em_js__api_create_sound=function(){return i.asm.Ea.apply(null,arguments)},i.___em_js__api_create_sound_float=function(){return i.asm.Fa.apply(null,arguments)},i.___em_js__api_delete_sound=function(){return i.asm.Ga.apply(null,arguments)},i.___em_js__api_draw_begin=function(){return i.asm.Ha.apply(null,arguments)},i.___em_js__api_draw_belt=function(){return i.asm.Ia.apply(null,arguments)},i.___em_js__api_draw_blit=function(){return i.asm.Ja.apply(null,arguments)},i.___em_js__api_draw_clip_text=function(){return i.asm.Ka.apply(null,arguments)},i.___em_js__api_draw_end=function(){return i.asm.La.apply(null,arguments)},i.___em_js__api_draw_text=function(){return i.asm.Ma.apply(null,arguments)},i.___em_js__api_duplicate_sound=function(){return i.asm.Na.apply(null,arguments)},i.___em_js__api_exit_game=function(){return i.asm.Oa.apply(null,arguments)},i.___em_js__api_open_keyboard=function(){return i.asm.Pa.apply(null,arguments)},i.___em_js__api_play_sound=function(){return i.asm.Qa.apply(null,arguments)},i.___em_js__api_set_cursor=function(){return i.asm.Ra.apply(null,arguments)},i.___em_js__api_set_volume=function(){return i.asm.Sa.apply(null,arguments)},i.___em_js__api_stop_sound=function(){return i.asm.Ta.apply(null,arguments)},i.___em_js__api_websocket_closed=function(){return i.asm.Ua.apply(null,arguments)},i.___em_js__api_websocket_send=function(){return i.asm.Va.apply(null,arguments)},i.___em_js__exit_error=function(){return i.asm.Wa.apply(null,arguments)},i.___em_js__get_file_contents=function(){return i.asm.Xa.apply(null,arguments)},i.___em_js__get_file_size=function(){return i.asm.Ya.apply(null,arguments)},i.___em_js__put_file_contents=function(){return i.asm.Za.apply(null,arguments)},i.___em_js__remove_file=function(){return i.asm._a.apply(null,arguments)},i.___em_js__show_alert=function(){return i.asm.$a.apply(null,arguments)},i.___em_js__trace_pop=function(){return i.asm.ab.apply(null,arguments)},i.___em_js__trace_push=function(){return i.asm.bb.apply(null,arguments)},i._free=function(){return i.asm.cb.apply(null,arguments)}),dn=i._malloc=function(){return i.asm.db.apply(null,arguments)},hn=i._setThrew=function(){return i.asm.eb.apply(null,arguments)},_n=i.globalCtors=function(){return i.asm.ub.apply(null,arguments)},yn=i.stackRestore=function(){return i.asm.vb.apply(null,arguments)},mn=i.stackSave=function(){return i.asm.wb.apply(null,arguments)},gn=i.dynCall_i=function(){return i.asm.fb.apply(null,arguments)},vn=i.dynCall_ii=function(){return i.asm.gb.apply(null,arguments)},bn=i.dynCall_iii=function(){return i.asm.hb.apply(null,arguments)},wn=i.dynCall_iiii=function(){return i.asm.ib.apply(null,arguments)},An=i.dynCall_iiiii=function(){return i.asm.jb.apply(null,arguments)},xn=i.dynCall_iiiiii=function(){return i.asm.kb.apply(null,arguments)},jn=i.dynCall_ji=function(){return i.asm.lb.apply(null,arguments)},Sn=i.dynCall_v=function(){return i.asm.mb.apply(null,arguments)},En=i.dynCall_vi=function(){return i.asm.nb.apply(null,arguments)},Cn=i.dynCall_vii=function(){return i.asm.ob.apply(null,arguments)},Rn=i.dynCall_viii=function(){return i.asm.pb.apply(null,arguments)},Dn=i.dynCall_viiii=function(){return i.asm.qb.apply(null,arguments)},Tn=i.dynCall_viiiii=function(){return i.asm.rb.apply(null,arguments)},kn=i.dynCall_viiiiiii=function(){return i.asm.sb.apply(null,arguments)},Ln=i.dynCall_viji=function(){return i.asm.tb.apply(null,arguments)};function On(n){this.name="ExitStatus",this.message="Program terminated with exit("+n+")",this.status=n}function Mn(n){function t(){i.calledRun||(i.calledRun=!0,x||(!0,I(N),I(U),i.onRuntimeInitialized&&i.onRuntimeInitialized(),function(){if(i.postRun)for("function"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)B(i.postRun.shift());I(q)}()))}n=n||i.arguments,H>0||(!function(){if(i.preRun)for("function"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)n=i.preRun.shift(),F.unshift(n);var n;I(F)}(),H>0||i.calledRun||(i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("")},1),t()},1)):t()))}function Pn(n){throw i.onAbort&&i.onAbort(n),m(n+=""),g(n),x=!0,1,"abort("+n+"). Build with -s ASSERTIONS=1 for more info."}if(i.asm=sn,i.then=function(n){if(i.calledRun)n(i);else{var t=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){t&&t(),n(i)}}return i},On.prototype=new Error,On.prototype.constructor=On,W=function n(){i.calledRun||Mn(),i.calledRun||(W=n)},i.run=Mn,i.abort=Pn,i.preInit)for("function"==typeof i.preInit&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return i.noExitRuntime=!0,Mn(),i.ready=new Promise(function(n,t){delete i.then,i.onAbort=function(n){t(n)},B(function(){n(i)})}),o}}();n.exports=o}).call(this,e(2),"/")},function(n,t,e){n.exports=e.p+"static/media/DiabloSpawn.5292efdb.wasm"},function(n,t,e){(function(t,r){var o=function(){var n="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;return function(o){var a,i="undefined"!==typeof(o=o||{})?o:{},u={};for(a in i)i.hasOwnProperty(a)&&(u[a]=i[a]);i.arguments=[],i.thisProgram="./this.program",i.quit=function(n,t){throw t},i.preRun=[],i.postRun=[];var s,c,f=!1,l=!1;f="object"===typeof window,l="function"===typeof importScripts,s="object"===typeof t&&"object"===typeof t.versions&&"string"===typeof t.versions.node&&!f&&!l,c=!f&&!s&&!l;var p,d,h,_,y="";s?(y=r+"/",p=function(n,t){var r;return h||(h=e(3)),_||(_=e(4)),n=_.normalize(n),r=h.readFileSync(n),t?r:r.toString()},d=function(n){var t=p(n,!0);return t.buffer||(t=new Uint8Array(t)),j(t.buffer),t},t.argv.length>1&&(i.thisProgram=t.argv[1].replace(/\\/g,"/")),i.arguments=t.argv.slice(2),t.on("uncaughtException",function(n){if(!(n instanceof On))throw n}),t.on("unhandledRejection",Pn),i.quit=function(n){t.exit(n)},i.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(p=function(n){return read(n)}),d=function(n){var t;return"function"===typeof readbuffer?new Uint8Array(readbuffer(n)):(j("object"===typeof(t=read(n,"binary"))),t)},"undefined"!=typeof scriptArgs?i.arguments=scriptArgs:"undefined"!=typeof arguments&&(i.arguments=arguments),"function"===typeof quit&&(i.quit=function(n){quit(n)})):(f||l)&&(l?y=self.location.href:document.currentScript&&(y=document.currentScript.src),n&&(y=n),y=0!==y.indexOf("blob:")?y.substr(0,y.lastIndexOf("/")+1):"",p=function(n){var t=new XMLHttpRequest;return t.open("GET",n,!1),t.send(null),t.responseText},l&&(d=function(n){var t=new XMLHttpRequest;return t.open("GET",n,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),function(n,t,e){var r=new XMLHttpRequest;r.open("GET",n,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?t(r.response):e()},r.onerror=e,r.send(null)});var m=i.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),g=i.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||m);for(a in u)u.hasOwnProperty(a)&&(i[a]=u[a]);u=void 0;var v,b={"f64-rem":function(n,t){return n%t},debugger:function(){}},w=(new Array(0),0),A=function(n){w=n};"object"!==typeof WebAssembly&&g("no native wasm support detected");var x=!1;function j(n,t){n||Pn("Assertion failed: "+t)}var S="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function E(n,t,e){for(var r=t+e,o=t;n[o]&&!(o>=r);)++o;if(o-t>16&&n.subarray&&S)return S.decode(n.subarray(t,o));for(var a="";t>10,56320|1023&c)}}else a+=String.fromCharCode((31&i)<<6|u)}else a+=String.fromCharCode(i)}return a}function C(n,t){return n?E(T,n,t):""}var R,D,T,k,L;"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function O(n,t){return n%t>0&&(n+=t-n%t),n}function M(){i.HEAP8=D=new Int8Array(R),i.HEAP16=new Int16Array(R),i.HEAP32=k=new Int32Array(R),i.HEAPU8=T=new Uint8Array(R),i.HEAPU16=new Uint16Array(R),i.HEAPU32=new Uint32Array(R),i.HEAPF32=L=new Float32Array(R),i.HEAPF64=new Float64Array(R)}var P=i.TOTAL_MEMORY||134217728;function I(n){for(;n.length>0;){var t=n.shift();if("function"!=typeof t){var e=t.func;"number"===typeof e?void 0===t.arg?i.dynCall_v(e):i.dynCall_vi(e,t.arg):e(void 0===t.arg?null:t.arg)}else t()}}P<5242880&&g("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+P+"! (TOTAL_STACK=5242880)"),(v=i.wasmMemory?i.wasmMemory:new WebAssembly.Memory({initial:P/65536}))&&(R=v.buffer),P=R.byteLength,M(),k[462504]=7092928;var F=[],N=[],U=[],q=[];function B(n){q.unshift(n)}var H=0,z=null,W=null;i.preloadedImages={},i.preloadedAudios={};var G="data:application/octet-stream;base64,";function X(n){return String.prototype.startsWith?n.startsWith(G):0===n.indexOf(G)}var K,Y="DiabloSpawn.wasm";function J(){try{if(i.wasmBinary)return new Uint8Array(i.wasmBinary);if(d)return d(Y);throw"both async and sync fetching of the wasm failed"}catch(g){Pn(g)}}function V(n){var t={env:n,global:{NaN:NaN,Infinity:1/0},"global.Math":Math,asm2wasm:b};function e(n,t){var e=n.exports;i.asm=e,function(n){if(H--,i.monitorRunDependencies&&i.monitorRunDependencies(H),0==H&&(null!==z&&(clearInterval(z),z=null),W)){var t=W;W=null,t()}}()}function r(n){e(n.instance)}function o(n){return(i.wasmBinary||!f&&!l||"function"!==typeof fetch?new Promise(function(n,t){n(J())}):fetch(Y,{credentials:"same-origin"}).then(function(n){if(!n.ok)throw"failed to load wasm binary file at '"+Y+"'";return n.arrayBuffer()}).catch(function(){return J()})).then(function(n){return WebAssembly.instantiate(n,t)}).then(n,function(n){g("failed to asynchronously prepare wasm: "+n),Pn(n)})}if(H++,i.monitorRunDependencies&&i.monitorRunDependencies(H),i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(a){return g("Module.instantiateWasm callback failed with error: "+a),!1}return function(){if(i.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||X(Y)||"function"!==typeof fetch)return o(r);fetch(Y,{credentials:"same-origin"}).then(function(n){return WebAssembly.instantiateStreaming(n,t).then(r,function(n){g("wasm streaming compile failed: "+n),g("falling back to ArrayBuffer instantiation"),o(r)})})}(),{}}X(Y)||(K=Y,Y=i.locateFile?i.locateFile(K,y):y+K),i.asm=function(n,t,e){return t.memory=v,t.table=new WebAssembly.Table({initial:1114,maximum:1114,element:"anyfunc"}),t.__memory_base=1024,t.__table_base=0,V(t)};var Z=[function(n){self.DApi.current_save_id(n)}];N.push({func:function(){_n()}});var $={},Q=[];function nn(n){if(!n||$[n])return n;for(var t in $)for(var e=+t,r=$[e].adjusted,o=r.length,a=0;a>2],t.adjusted.push(n),0|(A(r[o]),n);return n=k[n>>2],0|(A(e),n)}i.___cxa_find_matching_catch=rn;var on={buffers:[null,[],[]],printChar:function(n,t){var e=on.buffers[n];0===t||10===t?((1===n?m:g)(E(e,0)),e.length=0):e.push(t)},varargs:0,get:function(n){return on.varargs+=4,k[on.varargs-4>>2]},getStr:function(){return C(on.get())},get64:function(){var n=on.get();on.get();return n},getZero:function(){on.get()}};function an(){return D.length}var un={n:Pn,L:A,b:function(){return w},ra:function(n){var t=mn();try{return gn(n)}catch(e){if(yn(t),e!==e+0&&"longjmp"!==e)throw e;hn(1,0)}},g:function(n,t){var e=mn();try{return vn(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},m:function(n,t,e){var r=mn();try{return bn(n,t,e)}catch(o){if(yn(r),o!==o+0&&"longjmp"!==o)throw o;hn(1,0)}},o:function(n,t,e,r){var o=mn();try{return wn(n,t,e,r)}catch(a){if(yn(o),a!==a+0&&"longjmp"!==a)throw a;hn(1,0)}},s:function(n,t,e,r,o){var a=mn();try{return An(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},t:function(n,t,e,r,o,a){var i=mn();try{return xn(n,t,e,r,o,a)}catch(u){if(yn(i),u!==u+0&&"longjmp"!==u)throw u;hn(1,0)}},K:function(n,t){var e=mn();try{return jn(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},u:function(n){var t=mn();try{Sn(n)}catch(e){if(yn(t),e!==e+0&&"longjmp"!==e)throw e;hn(1,0)}},f:function(n,t){var e=mn();try{En(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},e:function(n,t,e){var r=mn();try{Cn(n,t,e)}catch(o){if(yn(r),o!==o+0&&"longjmp"!==o)throw o;hn(1,0)}},j:function(n,t,e,r){var o=mn();try{Rn(n,t,e,r)}catch(a){if(yn(o),a!==a+0&&"longjmp"!==a)throw a;hn(1,0)}},q:function(n,t,e,r,o){var a=mn();try{Dn(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},r:function(n,t,e,r,o,a){var i=mn();try{Tn(n,t,e,r,o,a)}catch(u){if(yn(i),u!==u+0&&"longjmp"!==u)throw u;hn(1,0)}},A:function(n,t,e,r,o,a,i,u){var s=mn();try{kn(n,t,e,r,o,a,i,u)}catch(c){if(yn(s),c!==c+0&&"longjmp"!==c)throw c;hn(1,0)}},J:function(n,t,e,r,o){var a=mn();try{Ln(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},z:function(n,t,e,r){Pn("Assertion failed: "+C(n)+", at: "+[t?C(t):"unknown filename",e,r?C(r):"unknown function"])},i:function(n){return dn(n)},y:function(n){var t=$[n];return t&&!t.caught&&(t.caught=!0,cn.uncaught_exceptions--),t&&(t.rethrown=!1),Q.push(n),function(n){n&&$[n].refcount++}(nn(n)),n},I:function(){hn(0);var n=Q.pop();n&&(function(n){if(n){var t=$[n];t.refcount--,0!==t.refcount||t.rethrown||(t.destructor&&i.dynCall_vi(t.destructor,n),delete $[n],en(n))}}(nn(n)),tn=0)},c:function(n,t){return rn(n,t)},h:function(n,t,e){return rn(n,t,e)},l:en,qa:function(n){return n},pa:function(){throw x=!0,"Pure virtual function called!"},k:function(n,t,e){throw $[n]={ptr:n,adjusted:[n],type:t,destructor:e,refcount:0,caught:!1,rethrown:!1},tn=n,"uncaught_exception"in cn?cn.uncaught_exceptions++:cn.uncaught_exceptions=1,n},oa:function(){return cn.uncaught_exceptions},na:function(){},d:function(n){throw tn||(tn=n),n},H:function(n){return i.___errno_location&&(k[i.___errno_location()>>2]=n),n},ma:function(n,t){on.varargs=t;try{return on.getStreamFromFD(),on.get(),on.get(),on.get(),on.get(),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||Pn(e),-e.errno}},G:function(n,t){on.varargs=t;try{for(var e=on.get(),r=on.get(),o=on.get(),a=0,i=0;i>2],s=k[r+(8*i+4)>>2],c=0;c2147418112)return!1;for(var e=Math.max(t,16777216);e>2]=t),t},M:function(n){Pn("OOM")},a:1850016},sn=i.asm({},un,R);i.asm=sn;i._DApi_AllocPacket=function(){return i.asm.sa.apply(null,arguments)},i._DApi_Char=function(){return i.asm.ta.apply(null,arguments)},i._DApi_Init=function(){return i.asm.ua.apply(null,arguments)},i._DApi_Key=function(){return i.asm.va.apply(null,arguments)},i._DApi_Mouse=function(){return i.asm.wa.apply(null,arguments)},i._DApi_Render=function(){return i.asm.xa.apply(null,arguments)},i._DApi_SyncText=function(){return i.asm.ya.apply(null,arguments)},i._SNet_InitWebsocket=function(){return i.asm.za.apply(null,arguments)};var cn=i.__ZSt18uncaught_exceptionv=function(){return i.asm.Aa.apply(null,arguments)},fn=i.___cxa_can_catch=function(){return i.asm.Ba.apply(null,arguments)},ln=i.___cxa_is_pointer_type=function(){return i.asm.Ca.apply(null,arguments)},pn=(i.___em_js__api_close_keyboard=function(){return i.asm.Da.apply(null,arguments)},i.___em_js__api_create_sound=function(){return i.asm.Ea.apply(null,arguments)},i.___em_js__api_create_sound_float=function(){return i.asm.Fa.apply(null,arguments)},i.___em_js__api_delete_sound=function(){return i.asm.Ga.apply(null,arguments)},i.___em_js__api_draw_begin=function(){return i.asm.Ha.apply(null,arguments)},i.___em_js__api_draw_belt=function(){return i.asm.Ia.apply(null,arguments)},i.___em_js__api_draw_blit=function(){return i.asm.Ja.apply(null,arguments)},i.___em_js__api_draw_clip_text=function(){return i.asm.Ka.apply(null,arguments)},i.___em_js__api_draw_end=function(){return i.asm.La.apply(null,arguments)},i.___em_js__api_draw_text=function(){return i.asm.Ma.apply(null,arguments)},i.___em_js__api_duplicate_sound=function(){return i.asm.Na.apply(null,arguments)},i.___em_js__api_exit_game=function(){return i.asm.Oa.apply(null,arguments)},i.___em_js__api_open_keyboard=function(){return i.asm.Pa.apply(null,arguments)},i.___em_js__api_play_sound=function(){return i.asm.Qa.apply(null,arguments)},i.___em_js__api_set_cursor=function(){return i.asm.Ra.apply(null,arguments)},i.___em_js__api_set_volume=function(){return i.asm.Sa.apply(null,arguments)},i.___em_js__api_stop_sound=function(){return i.asm.Ta.apply(null,arguments)},i.___em_js__api_websocket_closed=function(){return i.asm.Ua.apply(null,arguments)},i.___em_js__api_websocket_send=function(){return i.asm.Va.apply(null,arguments)},i.___em_js__exit_error=function(){return i.asm.Wa.apply(null,arguments)},i.___em_js__get_file_contents=function(){return i.asm.Xa.apply(null,arguments)},i.___em_js__get_file_size=function(){return i.asm.Ya.apply(null,arguments)},i.___em_js__put_file_contents=function(){return i.asm.Za.apply(null,arguments)},i.___em_js__remove_file=function(){return i.asm._a.apply(null,arguments)},i.___em_js__show_alert=function(){return i.asm.$a.apply(null,arguments)},i.___em_js__trace_pop=function(){return i.asm.ab.apply(null,arguments)},i.___em_js__trace_push=function(){return i.asm.bb.apply(null,arguments)},i._free=function(){return i.asm.cb.apply(null,arguments)}),dn=i._malloc=function(){return i.asm.db.apply(null,arguments)},hn=i._setThrew=function(){return i.asm.eb.apply(null,arguments)},_n=i.globalCtors=function(){return i.asm.ub.apply(null,arguments)},yn=i.stackRestore=function(){return i.asm.vb.apply(null,arguments)},mn=i.stackSave=function(){return i.asm.wb.apply(null,arguments)},gn=i.dynCall_i=function(){return i.asm.fb.apply(null,arguments)},vn=i.dynCall_ii=function(){return i.asm.gb.apply(null,arguments)},bn=i.dynCall_iii=function(){return i.asm.hb.apply(null,arguments)},wn=i.dynCall_iiii=function(){return i.asm.ib.apply(null,arguments)},An=i.dynCall_iiiii=function(){return i.asm.jb.apply(null,arguments)},xn=i.dynCall_iiiiii=function(){return i.asm.kb.apply(null,arguments)},jn=i.dynCall_ji=function(){return i.asm.lb.apply(null,arguments)},Sn=i.dynCall_v=function(){return i.asm.mb.apply(null,arguments)},En=i.dynCall_vi=function(){return i.asm.nb.apply(null,arguments)},Cn=i.dynCall_vii=function(){return i.asm.ob.apply(null,arguments)},Rn=i.dynCall_viii=function(){return i.asm.pb.apply(null,arguments)},Dn=i.dynCall_viiii=function(){return i.asm.qb.apply(null,arguments)},Tn=i.dynCall_viiiii=function(){return i.asm.rb.apply(null,arguments)},kn=i.dynCall_viiiiiii=function(){return i.asm.sb.apply(null,arguments)},Ln=i.dynCall_viji=function(){return i.asm.tb.apply(null,arguments)};function On(n){this.name="ExitStatus",this.message="Program terminated with exit("+n+")",this.status=n}function Mn(n){function t(){i.calledRun||(i.calledRun=!0,x||(!0,I(N),I(U),i.onRuntimeInitialized&&i.onRuntimeInitialized(),function(){if(i.postRun)for("function"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)B(i.postRun.shift());I(q)}()))}n=n||i.arguments,H>0||(!function(){if(i.preRun)for("function"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)n=i.preRun.shift(),F.unshift(n);var n;I(F)}(),H>0||i.calledRun||(i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("")},1),t()},1)):t()))}function Pn(n){throw i.onAbort&&i.onAbort(n),m(n+=""),g(n),x=!0,1,"abort("+n+"). Build with -s ASSERTIONS=1 for more info."}if(i.asm=sn,i.then=function(n){if(i.calledRun)n(i);else{var t=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){t&&t(),n(i)}}return i},On.prototype=new Error,On.prototype.constructor=On,W=function n(){i.calledRun||Mn(),i.calledRun||(W=n)},i.run=Mn,i.abort=Pn,i.preInit)for("function"==typeof i.preInit&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return i.noExitRuntime=!0,Mn(),i.ready=new Promise(function(n,t){delete i.then,i.onAbort=function(n){t(n)},B(function(){n(i)})}),o}}();n.exports=o}).call(this,e(2),"/")},function(n,t,e){n.exports=e(19)},function(n,t,e){var r=function(n){"use strict";var t,e=Object.prototype,r=e.hasOwnProperty,o="function"===typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function s(n,t,e,r){var o=t&&t.prototype instanceof _?t:_,a=Object.create(o.prototype),i=new C(r||[]);return a._invoke=function(n,t,e){var r=f;return function(o,a){if(r===p)throw new Error("Generator is already running");if(r===d){if("throw"===o)throw a;return D()}for(e.method=o,e.arg=a;;){var i=e.delegate;if(i){var u=j(i,e);if(u){if(u===h)continue;return u}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if(r===f)throw r=d,e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);r=p;var s=c(n,t,e);if("normal"===s.type){if(r=e.done?d:l,s.arg===h)continue;return{value:s.arg,done:e.done}}"throw"===s.type&&(r=d,e.method="throw",e.arg=s.arg)}}}(n,e,i),a}function c(n,t,e){try{return{type:"normal",arg:n.call(t,e)}}catch(r){return{type:"throw",arg:r}}}n.wrap=s;var f="suspendedStart",l="suspendedYield",p="executing",d="completed",h={};function _(){}function y(){}function m(){}var g={};g[a]=function(){return this};var v=Object.getPrototypeOf,b=v&&v(v(R([])));b&&b!==e&&r.call(b,a)&&(g=b);var w=m.prototype=_.prototype=Object.create(g);function A(n){["next","throw","return"].forEach(function(t){n[t]=function(n){return this._invoke(t,n)}})}function x(n){var t;this._invoke=function(e,o){function a(){return new Promise(function(t,a){!function t(e,o,a,i){var u=c(n[e],n,o);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"===typeof f&&r.call(f,"__await")?Promise.resolve(f.__await).then(function(n){t("next",n,a,i)},function(n){t("throw",n,a,i)}):Promise.resolve(f).then(function(n){s.value=n,a(s)},function(n){return t("throw",n,a,i)})}i(u.arg)}(e,o,t,a)})}return t=t?t.then(a,a):a()}}function j(n,e){var r=n.iterator[e.method];if(r===t){if(e.delegate=null,"throw"===e.method){if(n.iterator.return&&(e.method="return",e.arg=t,j(n,e),"throw"===e.method))return h;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=c(r,n.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,h;var a=o.arg;return a?a.done?(e[n.resultName]=a.value,e.next=n.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,h):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function S(n){var t={tryLoc:n[0]};1 in n&&(t.catchLoc=n[1]),2 in n&&(t.finallyLoc=n[2],t.afterLoc=n[3]),this.tryEntries.push(t)}function E(n){var t=n.completion||{};t.type="normal",delete t.arg,n.completion=t}function C(n){this.tryEntries=[{tryLoc:"root"}],n.forEach(S,this),this.reset(!0)}function R(n){if(n){var e=n[a];if(e)return e.call(n);if("function"===typeof n.next)return n;if(!isNaN(n.length)){var o=-1,i=function e(){for(;++o=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--e){var o=this.tryEntries[e];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var e=this.tryEntries[t];if(e.finallyLoc===n)return this.complete(e.completion,e.afterLoc),E(e),h}},catch:function(n){for(var t=this.tryEntries.length-1;t>=0;--t){var e=this.tryEntries[t];if(e.tryLoc===n){var r=e.completion;if("throw"===r.type){var o=r.arg;E(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(n,e,r){return this.delegate={iterator:R(n),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=t),h}},n}(n.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},function(n,t,e){"use strict";var r=e(0),o=e(5),a=e(21),i=e(11);function u(n){var t=new a(n),e=o(a.prototype.request,t);return r.extend(e,a.prototype,t),r.extend(e,t),e}var s=u(e(8));s.Axios=a,s.create=function(n){return u(i(s.defaults,n))},s.Cancel=e(12),s.CancelToken=e(33),s.isCancel=e(7),s.all=function(n){return Promise.all(n)},s.spread=e(34),n.exports=s,n.exports.default=s},function(n,t){n.exports=function(n){return null!=n&&null!=n.constructor&&"function"===typeof n.constructor.isBuffer&&n.constructor.isBuffer(n)}},function(n,t,e){"use strict";var r=e(0),o=e(6),a=e(22),i=e(23),u=e(11);function s(n){this.defaults=n,this.interceptors={request:new a,response:new a}}s.prototype.request=function(n){"string"===typeof n?(n=arguments[1]||{}).url=arguments[0]:n=n||{},(n=u(this.defaults,n)).method=n.method?n.method.toLowerCase():"get";var t=[i,void 0],e=Promise.resolve(n);for(this.interceptors.request.forEach(function(n){t.unshift(n.fulfilled,n.rejected)}),this.interceptors.response.forEach(function(n){t.push(n.fulfilled,n.rejected)});t.length;)e=e.then(t.shift(),t.shift());return e},s.prototype.getUri=function(n){return n=u(this.defaults,n),o(n.url,n.params,n.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],function(n){s.prototype[n]=function(t,e){return this.request(r.merge(e||{},{method:n,url:t}))}}),r.forEach(["post","put","patch"],function(n){s.prototype[n]=function(t,e,o){return this.request(r.merge(o||{},{method:n,url:t,data:e}))}}),n.exports=s},function(n,t,e){"use strict";var r=e(0);function o(){this.handlers=[]}o.prototype.use=function(n,t){return this.handlers.push({fulfilled:n,rejected:t}),this.handlers.length-1},o.prototype.eject=function(n){this.handlers[n]&&(this.handlers[n]=null)},o.prototype.forEach=function(n){r.forEach(this.handlers,function(t){null!==t&&n(t)})},n.exports=o},function(n,t,e){"use strict";var r=e(0),o=e(24),a=e(7),i=e(8),u=e(31),s=e(32);function c(n){n.cancelToken&&n.cancelToken.throwIfRequested()}n.exports=function(n){return c(n),n.baseURL&&!u(n.url)&&(n.url=s(n.baseURL,n.url)),n.headers=n.headers||{},n.data=o(n.data,n.headers,n.transformRequest),n.headers=r.merge(n.headers.common||{},n.headers[n.method]||{},n.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(t){delete n.headers[t]}),(n.adapter||i.adapter)(n).then(function(t){return c(n),t.data=o(t.data,t.headers,n.transformResponse),t},function(t){return a(t)||(c(n),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,n.transformResponse))),Promise.reject(t)})}},function(n,t,e){"use strict";var r=e(0);n.exports=function(n,t,e){return r.forEach(e,function(e){n=e(n,t)}),n}},function(n,t,e){"use strict";var r=e(0);n.exports=function(n,t){r.forEach(n,function(e,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(n[t]=e,delete n[r])})}},function(n,t,e){"use strict";var r=e(10);n.exports=function(n,t,e){var o=e.config.validateStatus;!o||o(e.status)?n(e):t(r("Request failed with status code "+e.status,e.config,null,e.request,e))}},function(n,t,e){"use strict";n.exports=function(n,t,e,r,o){return n.config=t,e&&(n.code=e),n.request=r,n.response=o,n.isAxiosError=!0,n.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}},n}},function(n,t,e){"use strict";var r=e(0),o=["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.exports=function(n){var t,e,a,i={};return n?(r.forEach(n.split("\n"),function(n){if(a=n.indexOf(":"),t=r.trim(n.substr(0,a)).toLowerCase(),e=r.trim(n.substr(a+1)),t){if(i[t]&&o.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([e]):i[t]?i[t]+", "+e:e}}),i):i}},function(n,t,e){"use strict";var r=e(0);n.exports=r.isStandardBrowserEnv()?function(){var n,t=/(msie|trident)/i.test(navigator.userAgent),e=document.createElement("a");function o(n){var r=n;return t&&(e.setAttribute("href",r),r=e.href),e.setAttribute("href",r),{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",host:e.host,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):"",hostname:e.hostname,port:e.port,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname}}return n=o(window.location.href),function(t){var e=r.isString(t)?o(t):t;return e.protocol===n.protocol&&e.host===n.host}}():function(){return!0}},function(n,t,e){"use strict";var r=e(0);n.exports=r.isStandardBrowserEnv()?{write:function(n,t,e,o,a,i){var u=[];u.push(n+"="+encodeURIComponent(t)),r.isNumber(e)&&u.push("expires="+new Date(e).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(a)&&u.push("domain="+a),!0===i&&u.push("secure"),document.cookie=u.join("; ")},read:function(n){var t=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(n,t,e){"use strict";n.exports=function(n){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(n)}},function(n,t,e){"use strict";n.exports=function(n,t){return t?n.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):n}},function(n,t,e){"use strict";var r=e(12);function o(n){if("function"!==typeof n)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(n){t=n});var e=this;n(function(n){e.reason||(e.reason=new r(n),t(e.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var n;return{token:new o(function(t){n=t}),cancel:n}},n.exports=o},function(n,t,e){"use strict";n.exports=function(n){return function(t){return n.apply(null,t)}}},function(n,t,e){"use strict";function r(n,t){return function(n){if(Array.isArray(n))return n}(n)||function(n,t){var e=[],r=!0,o=!1,a=void 0;try{for(var i,u=n[Symbol.iterator]();!(r=(i=u.next()).done)&&(e.push(i.value),!t||e.length!==t);r=!0);}catch(s){o=!0,a=s}finally{try{r||null==u.return||u.return()}finally{if(o)throw a}}return e}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}e.r(t);var o=e(1),a=e.n(o);function i(n){return function(n){if(Array.isArray(n)){for(var t=0,e=new Array(n.length);t=300)&&A.postMessage({action:"error",error:"Failed to load remote file"}),this.byteLength=parseInt(e.getResponseHeader("Content-Length")),this.url=t,this.buffer=new Uint8Array(this.byteLength),this.chunks=new Uint8Array(this.byteLength+T-1>>20|0)}var t,e,r;return t=n,(e=[{key:"subarray",value:function(n,t){for(var e=n/T|0,r=(t+T-1)/T|0,o=r,a=e,i=e;i=300)A.postMessage({action:"error",error:"Failed to load remote file"});else{var s,c=u.getResponseHeader("Content-Range"),f=0;c&&(s=c.match(/bytes (\d+)-(\d+)\/(\d+)/))&&(f=parseInt(s[1])),this.buffer.set(new Uint8Array(u.response),f),e=(f+T-1)/T|0,r=(f+u.response.byteLength+T-1)/T|0;for(var l=e;l=0?D?"spawn".concat(n,".sv"):"single_".concat(n,".sv"):null})},get_file_size:function(n){var t=E.get(n.toLowerCase());return t?t.byteLength:0},get_file_contents:function(n,t,e){var r=E.get(n.toLowerCase());r&&t.set(r.subarray(e,e+t.byteLength))},put_file_contents:function(n,t){n=n.toLowerCase(),E.set(n,t),A.postMessage({action:"fs",func:"update",params:[n,t]})},remove_file:function(n){n=n.toLowerCase(),E.delete(n),A.postMessage({action:"fs",func:"delete",params:[n]})},set_cursor:function(n,t){A.postMessage({action:"cursor",x:n,y:t})},open_keyboard:function(){for(var n=arguments.length,t=new Array(n),e=0;e>16&255,a=r>>8&255,i=255&r;j.fillStyle="rgb(".concat(o,", ").concat(a,", ").concat(i,")"),j.fillText(e,n,t+22)},draw_end:function(){j.restore();var n=x.transferToImageBitmap(),t=[n];R&&t.push(R.buffer),A.postMessage({action:"render",batch:{bitmap:n,belt:R}},t),R=null},draw_belt:function(n){R=n.slice()}},P=null,I=null,F=0,N=0;["create_sound_raw","create_sound","duplicate_sound"].forEach(function(n){L[n]=function(){for(var t=arguments.length,e=new Array(t),r=0;r=F?P.push({func:n,params:e}):A.postMessage({action:"audio",func:n,params:e})}});var U=null;L.websocket_send=function(n){U?U.push(n.slice().buffer):A.postMessage({action:"packet",buffer:n})},A.DApi=L;var q=null;function B(n){try{n()}catch(t){"string"===typeof t&&A.postMessage({action:""}),A.postMessage({action:"error",error:t.toString(),stack:t.stack})}}function H(n){for(var t=arguments.length,e=new Array(t>1?t-1:0),r=1;r1)for(var e=1;e=0;r--){var o=n[r];"."===o?n.splice(r,1):".."===o?(n.splice(r,1),e++):e&&(n.splice(r,1),e--)}if(t)for(;e--;e)n.unshift("..");return n}function r(n,t){if(n.filter)return n.filter(t);for(var e=[],r=0;r=-1&&!o;a--){var i=a>=0?arguments[a]:n.cwd();if("string"!==typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(t=i+"/"+t,o="/"===i.charAt(0))}return(o?"/":"")+(t=e(r(t.split("/"),function(n){return!!n}),!o).join("/"))||"."},t.normalize=function(n){var a=t.isAbsolute(n),i="/"===o(n,-1);return(n=e(r(n.split("/"),function(n){return!!n}),!a).join("/"))||a||(n="."),n&&i&&(n+="/"),(a?"/":"")+n},t.isAbsolute=function(n){return"/"===n.charAt(0)},t.join=function(){var n=Array.prototype.slice.call(arguments,0);return t.normalize(r(n,function(n,t){if("string"!==typeof n)throw new TypeError("Arguments to path.join must be strings");return n}).join("/"))},t.relative=function(n,e){function r(n){for(var t=0;t=0&&""===n[e];e--);return t>e?[]:n.slice(t,e-t+1)}n=t.resolve(n).substr(1),e=t.resolve(e).substr(1);for(var o=r(n.split("/")),a=r(e.split("/")),i=Math.min(o.length,a.length),u=i,s=0;s=1;--a)if(47===(t=n.charCodeAt(a))){if(!o){r=a;break}}else o=!1;return-1===r?e?"/":".":e&&1===r?"/":n.slice(0,r)},t.basename=function(n,t){var e=function(n){"string"!==typeof n&&(n+="");var t,e=0,r=-1,o=!0;for(t=n.length-1;t>=0;--t)if(47===n.charCodeAt(t)){if(!o){e=t+1;break}}else-1===r&&(o=!1,r=t+1);return-1===r?"":n.slice(e,r)}(n);return t&&e.substr(-1*t.length)===t&&(e=e.substr(0,e.length-t.length)),e},t.extname=function(n){"string"!==typeof n&&(n+="");for(var t=-1,e=0,r=-1,o=!0,a=0,i=n.length-1;i>=0;--i){var u=n.charCodeAt(i);if(47!==u)-1===r&&(o=!1,r=i+1),46===u?-1===t?t=i:1!==a&&(a=1):-1!==t&&(a=-1);else if(!o){e=i+1;break}}return-1===t||-1===r||0===a||1===a&&t===r-1&&t===e+1?"":n.slice(t,r)};var o="b"==="ab".substr(-1)?function(n,t,e){return n.substr(t,e)}:function(n,t,e){return t<0&&(t=n.length+t),n.substr(t,e)}}).call(this,e(2))},function(n,t,e){"use strict";n.exports=function(n,t){return function(){for(var e=new Array(arguments.length),r=0;r=200&&n<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],function(n){u.headers[n]={}}),r.forEach(["post","put","patch"],function(n){u.headers[n]=r.merge(a)}),n.exports=u}).call(this,e(2))},function(n,t,e){"use strict";var r=e(0),o=e(26),a=e(6),i=e(28),u=e(29),s=e(10);n.exports=function(n){return new Promise(function(t,c){var f=n.data,l=n.headers;r.isFormData(f)&&delete l["Content-Type"];var p=new XMLHttpRequest;if(n.auth){var d=n.auth.username||"",h=n.auth.password||"";l.Authorization="Basic "+btoa(d+":"+h)}if(p.open(n.method.toUpperCase(),a(n.url,n.params,n.paramsSerializer),!0),p.timeout=n.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var e="getAllResponseHeaders"in p?i(p.getAllResponseHeaders()):null,r={data:n.responseType&&"text"!==n.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:e,config:n,request:p};o(t,c,r),p=null}},p.onabort=function(){p&&(c(s("Request aborted",n,"ECONNABORTED",p)),p=null)},p.onerror=function(){c(s("Network Error",n,null,p)),p=null},p.ontimeout=function(){c(s("timeout of "+n.timeout+"ms exceeded",n,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var _=e(30),y=(n.withCredentials||u(n.url))&&n.xsrfCookieName?_.read(n.xsrfCookieName):void 0;y&&(l[n.xsrfHeaderName]=y)}if("setRequestHeader"in p&&r.forEach(l,function(n,t){"undefined"===typeof f&&"content-type"===t.toLowerCase()?delete l[t]:p.setRequestHeader(t,n)}),n.withCredentials&&(p.withCredentials=!0),n.responseType)try{p.responseType=n.responseType}catch(m){if("json"!==n.responseType)throw m}"function"===typeof n.onDownloadProgress&&p.addEventListener("progress",n.onDownloadProgress),"function"===typeof n.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",n.onUploadProgress),n.cancelToken&&n.cancelToken.promise.then(function(n){p&&(p.abort(),c(n),p=null)}),void 0===f&&(f=null),p.send(f)})}},function(n,t,e){"use strict";var r=e(27);n.exports=function(n,t,e,o,a){var i=new Error(n);return r(i,t,e,o,a)}},function(n,t,e){"use strict";var r=e(0);n.exports=function(n,t){t=t||{};var e={};return r.forEach(["url","method","params","data"],function(n){"undefined"!==typeof t[n]&&(e[n]=t[n])}),r.forEach(["headers","auth","proxy"],function(o){r.isObject(t[o])?e[o]=r.deepMerge(n[o],t[o]):"undefined"!==typeof t[o]?e[o]=t[o]:r.isObject(n[o])?e[o]=r.deepMerge(n[o]):"undefined"!==typeof n[o]&&(e[o]=n[o])}),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 t[r]?e[r]=t[r]:"undefined"!==typeof n[r]&&(e[r]=n[r])}),e}},function(n,t,e){"use strict";function r(n){this.message=n}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,n.exports=r},function(n,t,e){n.exports=e.p+"static/media/Diablo.85de21cc.wasm"},function(n,t,e){(function(t,r){var o=function(){var n="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;return function(o){var a,i="undefined"!==typeof(o=o||{})?o:{},u={};for(a in i)i.hasOwnProperty(a)&&(u[a]=i[a]);i.arguments=[],i.thisProgram="./this.program",i.quit=function(n,t){throw t},i.preRun=[],i.postRun=[];var s,c,f=!1,l=!1;f="object"===typeof window,l="function"===typeof importScripts,s="object"===typeof t&&"object"===typeof t.versions&&"string"===typeof t.versions.node&&!f&&!l,c=!f&&!s&&!l;var p,d,h,_,y="";s?(y=r+"/",p=function(n,t){var r;return h||(h=e(3)),_||(_=e(4)),n=_.normalize(n),r=h.readFileSync(n),t?r:r.toString()},d=function(n){var t=p(n,!0);return t.buffer||(t=new Uint8Array(t)),j(t.buffer),t},t.argv.length>1&&(i.thisProgram=t.argv[1].replace(/\\/g,"/")),i.arguments=t.argv.slice(2),t.on("uncaughtException",function(n){if(!(n instanceof On))throw n}),t.on("unhandledRejection",Pn),i.quit=function(n){t.exit(n)},i.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(p=function(n){return read(n)}),d=function(n){var t;return"function"===typeof readbuffer?new Uint8Array(readbuffer(n)):(j("object"===typeof(t=read(n,"binary"))),t)},"undefined"!=typeof scriptArgs?i.arguments=scriptArgs:"undefined"!=typeof arguments&&(i.arguments=arguments),"function"===typeof quit&&(i.quit=function(n){quit(n)})):(f||l)&&(l?y=self.location.href:document.currentScript&&(y=document.currentScript.src),n&&(y=n),y=0!==y.indexOf("blob:")?y.substr(0,y.lastIndexOf("/")+1):"",p=function(n){var t=new XMLHttpRequest;return t.open("GET",n,!1),t.send(null),t.responseText},l&&(d=function(n){var t=new XMLHttpRequest;return t.open("GET",n,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),function(n,t,e){var r=new XMLHttpRequest;r.open("GET",n,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?t(r.response):e()},r.onerror=e,r.send(null)});var m=i.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),g=i.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||m);for(a in u)u.hasOwnProperty(a)&&(i[a]=u[a]);u=void 0;var v,b={"f64-rem":function(n,t){return n%t},debugger:function(){}},w=(new Array(0),0),A=function(n){w=n};"object"!==typeof WebAssembly&&g("no native wasm support detected");var x=!1;function j(n,t){n||Pn("Assertion failed: "+t)}var S="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function E(n,t,e){for(var r=t+e,o=t;n[o]&&!(o>=r);)++o;if(o-t>16&&n.subarray&&S)return S.decode(n.subarray(t,o));for(var a="";t>10,56320|1023&c)}}else a+=String.fromCharCode((31&i)<<6|u)}else a+=String.fromCharCode(i)}return a}function C(n,t){return n?E(T,n,t):""}var R,D,T,k,L;"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function O(n,t){return n%t>0&&(n+=t-n%t),n}function M(){i.HEAP8=D=new Int8Array(R),i.HEAP16=new Int16Array(R),i.HEAP32=k=new Int32Array(R),i.HEAPU8=T=new Uint8Array(R),i.HEAPU16=new Uint16Array(R),i.HEAPU32=new Uint32Array(R),i.HEAPF32=L=new Float32Array(R),i.HEAPF64=new Float64Array(R)}var P=i.TOTAL_MEMORY||134217728;function I(n){for(;n.length>0;){var t=n.shift();if("function"!=typeof t){var e=t.func;"number"===typeof e?void 0===t.arg?i.dynCall_v(e):i.dynCall_vi(e,t.arg):e(void 0===t.arg?null:t.arg)}else t()}}P<5242880&&g("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+P+"! (TOTAL_STACK=5242880)"),(v=i.wasmMemory?i.wasmMemory:new WebAssembly.Memory({initial:P/65536}))&&(R=v.buffer),P=R.byteLength,M(),k[468704]=7117728;var F=[],N=[],U=[],q=[];function B(n){q.unshift(n)}var H=0,z=null,W=null;i.preloadedImages={},i.preloadedAudios={};var G="data:application/octet-stream;base64,";function X(n){return String.prototype.startsWith?n.startsWith(G):0===n.indexOf(G)}var K,Y="Diablo.wasm";function J(){try{if(i.wasmBinary)return new Uint8Array(i.wasmBinary);if(d)return d(Y);throw"both async and sync fetching of the wasm failed"}catch(g){Pn(g)}}function V(n){var t={env:n,global:{NaN:NaN,Infinity:1/0},"global.Math":Math,asm2wasm:b};function e(n,t){var e=n.exports;i.asm=e,function(n){if(H--,i.monitorRunDependencies&&i.monitorRunDependencies(H),0==H&&(null!==z&&(clearInterval(z),z=null),W)){var t=W;W=null,t()}}()}function r(n){e(n.instance)}function o(n){return(i.wasmBinary||!f&&!l||"function"!==typeof fetch?new Promise(function(n,t){n(J())}):fetch(Y,{credentials:"same-origin"}).then(function(n){if(!n.ok)throw"failed to load wasm binary file at '"+Y+"'";return n.arrayBuffer()}).catch(function(){return J()})).then(function(n){return WebAssembly.instantiate(n,t)}).then(n,function(n){g("failed to asynchronously prepare wasm: "+n),Pn(n)})}if(H++,i.monitorRunDependencies&&i.monitorRunDependencies(H),i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(a){return g("Module.instantiateWasm callback failed with error: "+a),!1}return function(){if(i.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||X(Y)||"function"!==typeof fetch)return o(r);fetch(Y,{credentials:"same-origin"}).then(function(n){return WebAssembly.instantiateStreaming(n,t).then(r,function(n){g("wasm streaming compile failed: "+n),g("falling back to ArrayBuffer instantiation"),o(r)})})}(),{}}X(Y)||(K=Y,Y=i.locateFile?i.locateFile(K,y):y+K),i.asm=function(n,t,e){return t.memory=v,t.table=new WebAssembly.Table({initial:1114,maximum:1114,element:"anyfunc"}),t.__memory_base=1024,t.__table_base=0,V(t)};var Z=[function(n){self.DApi.current_save_id(n)}];N.push({func:function(){_n()}});var $={},Q=[];function nn(n){if(!n||$[n])return n;for(var t in $)for(var e=+t,r=$[e].adjusted,o=r.length,a=0;a>2],t.adjusted.push(n),0|(A(r[o]),n);return n=k[n>>2],0|(A(e),n)}i.___cxa_find_matching_catch=rn;var on={buffers:[null,[],[]],printChar:function(n,t){var e=on.buffers[n];0===t||10===t?((1===n?m:g)(E(e,0)),e.length=0):e.push(t)},varargs:0,get:function(n){return on.varargs+=4,k[on.varargs-4>>2]},getStr:function(){return C(on.get())},get64:function(){var n=on.get();on.get();return n},getZero:function(){on.get()}};function an(){return D.length}var un={n:Pn,L:A,b:function(){return w},ra:function(n){var t=mn();try{return gn(n)}catch(e){if(yn(t),e!==e+0&&"longjmp"!==e)throw e;hn(1,0)}},g:function(n,t){var e=mn();try{return vn(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},l:function(n,t,e){var r=mn();try{return bn(n,t,e)}catch(o){if(yn(r),o!==o+0&&"longjmp"!==o)throw o;hn(1,0)}},o:function(n,t,e,r){var o=mn();try{return wn(n,t,e,r)}catch(a){if(yn(o),a!==a+0&&"longjmp"!==a)throw a;hn(1,0)}},s:function(n,t,e,r,o){var a=mn();try{return An(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},t:function(n,t,e,r,o,a){var i=mn();try{return xn(n,t,e,r,o,a)}catch(u){if(yn(i),u!==u+0&&"longjmp"!==u)throw u;hn(1,0)}},K:function(n,t){var e=mn();try{return jn(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},u:function(n){var t=mn();try{Sn(n)}catch(e){if(yn(t),e!==e+0&&"longjmp"!==e)throw e;hn(1,0)}},f:function(n,t){var e=mn();try{En(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},e:function(n,t,e){var r=mn();try{Cn(n,t,e)}catch(o){if(yn(r),o!==o+0&&"longjmp"!==o)throw o;hn(1,0)}},j:function(n,t,e,r){var o=mn();try{Rn(n,t,e,r)}catch(a){if(yn(o),a!==a+0&&"longjmp"!==a)throw a;hn(1,0)}},q:function(n,t,e,r,o){var a=mn();try{Dn(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},r:function(n,t,e,r,o,a){var i=mn();try{Tn(n,t,e,r,o,a)}catch(u){if(yn(i),u!==u+0&&"longjmp"!==u)throw u;hn(1,0)}},A:function(n,t,e,r,o,a,i,u){var s=mn();try{kn(n,t,e,r,o,a,i,u)}catch(c){if(yn(s),c!==c+0&&"longjmp"!==c)throw c;hn(1,0)}},J:function(n,t,e,r,o){var a=mn();try{Ln(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},z:function(n,t,e,r){Pn("Assertion failed: "+C(n)+", at: "+[t?C(t):"unknown filename",e,r?C(r):"unknown function"])},i:function(n){return dn(n)},y:function(n){var t=$[n];return t&&!t.caught&&(t.caught=!0,cn.uncaught_exceptions--),t&&(t.rethrown=!1),Q.push(n),function(n){n&&$[n].refcount++}(nn(n)),n},I:function(){hn(0);var n=Q.pop();n&&(function(n){if(n){var t=$[n];t.refcount--,0!==t.refcount||t.rethrown||(t.destructor&&i.dynCall_vi(t.destructor,n),delete $[n],en(n))}}(nn(n)),tn=0)},c:function(n,t){return rn(n,t)},h:function(n,t,e){return rn(n,t,e)},m:en,qa:function(n){return n},pa:function(){throw x=!0,"Pure virtual function called!"},k:function(n,t,e){throw $[n]={ptr:n,adjusted:[n],type:t,destructor:e,refcount:0,caught:!1,rethrown:!1},tn=n,"uncaught_exception"in cn?cn.uncaught_exceptions++:cn.uncaught_exceptions=1,n},oa:function(){return cn.uncaught_exceptions},na:function(){},d:function(n){throw tn||(tn=n),n},H:function(n){return i.___errno_location&&(k[i.___errno_location()>>2]=n),n},ma:function(n,t){on.varargs=t;try{return on.getStreamFromFD(),on.get(),on.get(),on.get(),on.get(),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||Pn(e),-e.errno}},G:function(n,t){on.varargs=t;try{for(var e=on.get(),r=on.get(),o=on.get(),a=0,i=0;i>2],s=k[r+(8*i+4)>>2],c=0;c2147418112)return!1;for(var e=Math.max(t,16777216);e>2]=t),t},M:function(n){Pn("OOM")},a:1874816},sn=i.asm({},un,R);i.asm=sn;i._DApi_AllocPacket=function(){return i.asm.sa.apply(null,arguments)},i._DApi_Char=function(){return i.asm.ta.apply(null,arguments)},i._DApi_Init=function(){return i.asm.ua.apply(null,arguments)},i._DApi_Key=function(){return i.asm.va.apply(null,arguments)},i._DApi_Mouse=function(){return i.asm.wa.apply(null,arguments)},i._DApi_Render=function(){return i.asm.xa.apply(null,arguments)},i._DApi_SyncText=function(){return i.asm.ya.apply(null,arguments)},i._SNet_InitWebsocket=function(){return i.asm.za.apply(null,arguments)};var cn=i.__ZSt18uncaught_exceptionv=function(){return i.asm.Aa.apply(null,arguments)},fn=i.___cxa_can_catch=function(){return i.asm.Ba.apply(null,arguments)},ln=i.___cxa_is_pointer_type=function(){return i.asm.Ca.apply(null,arguments)},pn=(i.___em_js__api_close_keyboard=function(){return i.asm.Da.apply(null,arguments)},i.___em_js__api_create_sound=function(){return i.asm.Ea.apply(null,arguments)},i.___em_js__api_create_sound_float=function(){return i.asm.Fa.apply(null,arguments)},i.___em_js__api_delete_sound=function(){return i.asm.Ga.apply(null,arguments)},i.___em_js__api_draw_begin=function(){return i.asm.Ha.apply(null,arguments)},i.___em_js__api_draw_belt=function(){return i.asm.Ia.apply(null,arguments)},i.___em_js__api_draw_blit=function(){return i.asm.Ja.apply(null,arguments)},i.___em_js__api_draw_clip_text=function(){return i.asm.Ka.apply(null,arguments)},i.___em_js__api_draw_end=function(){return i.asm.La.apply(null,arguments)},i.___em_js__api_draw_text=function(){return i.asm.Ma.apply(null,arguments)},i.___em_js__api_duplicate_sound=function(){return i.asm.Na.apply(null,arguments)},i.___em_js__api_exit_game=function(){return i.asm.Oa.apply(null,arguments)},i.___em_js__api_open_keyboard=function(){return i.asm.Pa.apply(null,arguments)},i.___em_js__api_play_sound=function(){return i.asm.Qa.apply(null,arguments)},i.___em_js__api_set_cursor=function(){return i.asm.Ra.apply(null,arguments)},i.___em_js__api_set_volume=function(){return i.asm.Sa.apply(null,arguments)},i.___em_js__api_stop_sound=function(){return i.asm.Ta.apply(null,arguments)},i.___em_js__api_websocket_closed=function(){return i.asm.Ua.apply(null,arguments)},i.___em_js__api_websocket_send=function(){return i.asm.Va.apply(null,arguments)},i.___em_js__exit_error=function(){return i.asm.Wa.apply(null,arguments)},i.___em_js__get_file_contents=function(){return i.asm.Xa.apply(null,arguments)},i.___em_js__get_file_size=function(){return i.asm.Ya.apply(null,arguments)},i.___em_js__put_file_contents=function(){return i.asm.Za.apply(null,arguments)},i.___em_js__remove_file=function(){return i.asm._a.apply(null,arguments)},i.___em_js__show_alert=function(){return i.asm.$a.apply(null,arguments)},i.___em_js__trace_pop=function(){return i.asm.ab.apply(null,arguments)},i.___em_js__trace_push=function(){return i.asm.bb.apply(null,arguments)},i._free=function(){return i.asm.cb.apply(null,arguments)}),dn=i._malloc=function(){return i.asm.db.apply(null,arguments)},hn=i._setThrew=function(){return i.asm.eb.apply(null,arguments)},_n=i.globalCtors=function(){return i.asm.ub.apply(null,arguments)},yn=i.stackRestore=function(){return i.asm.vb.apply(null,arguments)},mn=i.stackSave=function(){return i.asm.wb.apply(null,arguments)},gn=i.dynCall_i=function(){return i.asm.fb.apply(null,arguments)},vn=i.dynCall_ii=function(){return i.asm.gb.apply(null,arguments)},bn=i.dynCall_iii=function(){return i.asm.hb.apply(null,arguments)},wn=i.dynCall_iiii=function(){return i.asm.ib.apply(null,arguments)},An=i.dynCall_iiiii=function(){return i.asm.jb.apply(null,arguments)},xn=i.dynCall_iiiiii=function(){return i.asm.kb.apply(null,arguments)},jn=i.dynCall_ji=function(){return i.asm.lb.apply(null,arguments)},Sn=i.dynCall_v=function(){return i.asm.mb.apply(null,arguments)},En=i.dynCall_vi=function(){return i.asm.nb.apply(null,arguments)},Cn=i.dynCall_vii=function(){return i.asm.ob.apply(null,arguments)},Rn=i.dynCall_viii=function(){return i.asm.pb.apply(null,arguments)},Dn=i.dynCall_viiii=function(){return i.asm.qb.apply(null,arguments)},Tn=i.dynCall_viiiii=function(){return i.asm.rb.apply(null,arguments)},kn=i.dynCall_viiiiiii=function(){return i.asm.sb.apply(null,arguments)},Ln=i.dynCall_viji=function(){return i.asm.tb.apply(null,arguments)};function On(n){this.name="ExitStatus",this.message="Program terminated with exit("+n+")",this.status=n}function Mn(n){function t(){i.calledRun||(i.calledRun=!0,x||(!0,I(N),I(U),i.onRuntimeInitialized&&i.onRuntimeInitialized(),function(){if(i.postRun)for("function"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)B(i.postRun.shift());I(q)}()))}n=n||i.arguments,H>0||(!function(){if(i.preRun)for("function"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)n=i.preRun.shift(),F.unshift(n);var n;I(F)}(),H>0||i.calledRun||(i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("")},1),t()},1)):t()))}function Pn(n){throw i.onAbort&&i.onAbort(n),m(n+=""),g(n),x=!0,1,"abort("+n+"). Build with -s ASSERTIONS=1 for more info."}if(i.asm=sn,i.then=function(n){if(i.calledRun)n(i);else{var t=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){t&&t(),n(i)}}return i},On.prototype=new Error,On.prototype.constructor=On,W=function n(){i.calledRun||Mn(),i.calledRun||(W=n)},i.run=Mn,i.abort=Pn,i.preInit)for("function"==typeof i.preInit&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return i.noExitRuntime=!0,Mn(),i.ready=new Promise(function(n,t){delete i.then,i.onAbort=function(n){t(n)},B(function(){n(i)})}),o}}();n.exports=o}).call(this,e(2),"/")},function(n,t,e){n.exports=e.p+"static/media/DiabloSpawn.5292efdb.wasm"},function(n,t,e){(function(t,r){var o=function(){var n="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;return function(o){var a,i="undefined"!==typeof(o=o||{})?o:{},u={};for(a in i)i.hasOwnProperty(a)&&(u[a]=i[a]);i.arguments=[],i.thisProgram="./this.program",i.quit=function(n,t){throw t},i.preRun=[],i.postRun=[];var s,c,f=!1,l=!1;f="object"===typeof window,l="function"===typeof importScripts,s="object"===typeof t&&"object"===typeof t.versions&&"string"===typeof t.versions.node&&!f&&!l,c=!f&&!s&&!l;var p,d,h,_,y="";s?(y=r+"/",p=function(n,t){var r;return h||(h=e(3)),_||(_=e(4)),n=_.normalize(n),r=h.readFileSync(n),t?r:r.toString()},d=function(n){var t=p(n,!0);return t.buffer||(t=new Uint8Array(t)),j(t.buffer),t},t.argv.length>1&&(i.thisProgram=t.argv[1].replace(/\\/g,"/")),i.arguments=t.argv.slice(2),t.on("uncaughtException",function(n){if(!(n instanceof On))throw n}),t.on("unhandledRejection",Pn),i.quit=function(n){t.exit(n)},i.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(p=function(n){return read(n)}),d=function(n){var t;return"function"===typeof readbuffer?new Uint8Array(readbuffer(n)):(j("object"===typeof(t=read(n,"binary"))),t)},"undefined"!=typeof scriptArgs?i.arguments=scriptArgs:"undefined"!=typeof arguments&&(i.arguments=arguments),"function"===typeof quit&&(i.quit=function(n){quit(n)})):(f||l)&&(l?y=self.location.href:document.currentScript&&(y=document.currentScript.src),n&&(y=n),y=0!==y.indexOf("blob:")?y.substr(0,y.lastIndexOf("/")+1):"",p=function(n){var t=new XMLHttpRequest;return t.open("GET",n,!1),t.send(null),t.responseText},l&&(d=function(n){var t=new XMLHttpRequest;return t.open("GET",n,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),function(n,t,e){var r=new XMLHttpRequest;r.open("GET",n,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?t(r.response):e()},r.onerror=e,r.send(null)});var m=i.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),g=i.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||m);for(a in u)u.hasOwnProperty(a)&&(i[a]=u[a]);u=void 0;var v,b={"f64-rem":function(n,t){return n%t},debugger:function(){}},w=(new Array(0),0),A=function(n){w=n};"object"!==typeof WebAssembly&&g("no native wasm support detected");var x=!1;function j(n,t){n||Pn("Assertion failed: "+t)}var S="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function E(n,t,e){for(var r=t+e,o=t;n[o]&&!(o>=r);)++o;if(o-t>16&&n.subarray&&S)return S.decode(n.subarray(t,o));for(var a="";t>10,56320|1023&c)}}else a+=String.fromCharCode((31&i)<<6|u)}else a+=String.fromCharCode(i)}return a}function C(n,t){return n?E(T,n,t):""}var R,D,T,k,L;"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function O(n,t){return n%t>0&&(n+=t-n%t),n}function M(){i.HEAP8=D=new Int8Array(R),i.HEAP16=new Int16Array(R),i.HEAP32=k=new Int32Array(R),i.HEAPU8=T=new Uint8Array(R),i.HEAPU16=new Uint16Array(R),i.HEAPU32=new Uint32Array(R),i.HEAPF32=L=new Float32Array(R),i.HEAPF64=new Float64Array(R)}var P=i.TOTAL_MEMORY||134217728;function I(n){for(;n.length>0;){var t=n.shift();if("function"!=typeof t){var e=t.func;"number"===typeof e?void 0===t.arg?i.dynCall_v(e):i.dynCall_vi(e,t.arg):e(void 0===t.arg?null:t.arg)}else t()}}P<5242880&&g("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+P+"! (TOTAL_STACK=5242880)"),(v=i.wasmMemory?i.wasmMemory:new WebAssembly.Memory({initial:P/65536}))&&(R=v.buffer),P=R.byteLength,M(),k[462504]=7092928;var F=[],N=[],U=[],q=[];function B(n){q.unshift(n)}var H=0,z=null,W=null;i.preloadedImages={},i.preloadedAudios={};var G="data:application/octet-stream;base64,";function X(n){return String.prototype.startsWith?n.startsWith(G):0===n.indexOf(G)}var K,Y="DiabloSpawn.wasm";function J(){try{if(i.wasmBinary)return new Uint8Array(i.wasmBinary);if(d)return d(Y);throw"both async and sync fetching of the wasm failed"}catch(g){Pn(g)}}function V(n){var t={env:n,global:{NaN:NaN,Infinity:1/0},"global.Math":Math,asm2wasm:b};function e(n,t){var e=n.exports;i.asm=e,function(n){if(H--,i.monitorRunDependencies&&i.monitorRunDependencies(H),0==H&&(null!==z&&(clearInterval(z),z=null),W)){var t=W;W=null,t()}}()}function r(n){e(n.instance)}function o(n){return(i.wasmBinary||!f&&!l||"function"!==typeof fetch?new Promise(function(n,t){n(J())}):fetch(Y,{credentials:"same-origin"}).then(function(n){if(!n.ok)throw"failed to load wasm binary file at '"+Y+"'";return n.arrayBuffer()}).catch(function(){return J()})).then(function(n){return WebAssembly.instantiate(n,t)}).then(n,function(n){g("failed to asynchronously prepare wasm: "+n),Pn(n)})}if(H++,i.monitorRunDependencies&&i.monitorRunDependencies(H),i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(a){return g("Module.instantiateWasm callback failed with error: "+a),!1}return function(){if(i.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||X(Y)||"function"!==typeof fetch)return o(r);fetch(Y,{credentials:"same-origin"}).then(function(n){return WebAssembly.instantiateStreaming(n,t).then(r,function(n){g("wasm streaming compile failed: "+n),g("falling back to ArrayBuffer instantiation"),o(r)})})}(),{}}X(Y)||(K=Y,Y=i.locateFile?i.locateFile(K,y):y+K),i.asm=function(n,t,e){return t.memory=v,t.table=new WebAssembly.Table({initial:1114,maximum:1114,element:"anyfunc"}),t.__memory_base=1024,t.__table_base=0,V(t)};var Z=[function(n){self.DApi.current_save_id(n)}];N.push({func:function(){_n()}});var $={},Q=[];function nn(n){if(!n||$[n])return n;for(var t in $)for(var e=+t,r=$[e].adjusted,o=r.length,a=0;a>2],t.adjusted.push(n),0|(A(r[o]),n);return n=k[n>>2],0|(A(e),n)}i.___cxa_find_matching_catch=rn;var on={buffers:[null,[],[]],printChar:function(n,t){var e=on.buffers[n];0===t||10===t?((1===n?m:g)(E(e,0)),e.length=0):e.push(t)},varargs:0,get:function(n){return on.varargs+=4,k[on.varargs-4>>2]},getStr:function(){return C(on.get())},get64:function(){var n=on.get();on.get();return n},getZero:function(){on.get()}};function an(){return D.length}var un={n:Pn,L:A,b:function(){return w},ra:function(n){var t=mn();try{return gn(n)}catch(e){if(yn(t),e!==e+0&&"longjmp"!==e)throw e;hn(1,0)}},g:function(n,t){var e=mn();try{return vn(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},m:function(n,t,e){var r=mn();try{return bn(n,t,e)}catch(o){if(yn(r),o!==o+0&&"longjmp"!==o)throw o;hn(1,0)}},o:function(n,t,e,r){var o=mn();try{return wn(n,t,e,r)}catch(a){if(yn(o),a!==a+0&&"longjmp"!==a)throw a;hn(1,0)}},s:function(n,t,e,r,o){var a=mn();try{return An(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},t:function(n,t,e,r,o,a){var i=mn();try{return xn(n,t,e,r,o,a)}catch(u){if(yn(i),u!==u+0&&"longjmp"!==u)throw u;hn(1,0)}},K:function(n,t){var e=mn();try{return jn(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},u:function(n){var t=mn();try{Sn(n)}catch(e){if(yn(t),e!==e+0&&"longjmp"!==e)throw e;hn(1,0)}},f:function(n,t){var e=mn();try{En(n,t)}catch(r){if(yn(e),r!==r+0&&"longjmp"!==r)throw r;hn(1,0)}},e:function(n,t,e){var r=mn();try{Cn(n,t,e)}catch(o){if(yn(r),o!==o+0&&"longjmp"!==o)throw o;hn(1,0)}},j:function(n,t,e,r){var o=mn();try{Rn(n,t,e,r)}catch(a){if(yn(o),a!==a+0&&"longjmp"!==a)throw a;hn(1,0)}},q:function(n,t,e,r,o){var a=mn();try{Dn(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},r:function(n,t,e,r,o,a){var i=mn();try{Tn(n,t,e,r,o,a)}catch(u){if(yn(i),u!==u+0&&"longjmp"!==u)throw u;hn(1,0)}},A:function(n,t,e,r,o,a,i,u){var s=mn();try{kn(n,t,e,r,o,a,i,u)}catch(c){if(yn(s),c!==c+0&&"longjmp"!==c)throw c;hn(1,0)}},J:function(n,t,e,r,o){var a=mn();try{Ln(n,t,e,r,o)}catch(i){if(yn(a),i!==i+0&&"longjmp"!==i)throw i;hn(1,0)}},z:function(n,t,e,r){Pn("Assertion failed: "+C(n)+", at: "+[t?C(t):"unknown filename",e,r?C(r):"unknown function"])},i:function(n){return dn(n)},y:function(n){var t=$[n];return t&&!t.caught&&(t.caught=!0,cn.uncaught_exceptions--),t&&(t.rethrown=!1),Q.push(n),function(n){n&&$[n].refcount++}(nn(n)),n},I:function(){hn(0);var n=Q.pop();n&&(function(n){if(n){var t=$[n];t.refcount--,0!==t.refcount||t.rethrown||(t.destructor&&i.dynCall_vi(t.destructor,n),delete $[n],en(n))}}(nn(n)),tn=0)},c:function(n,t){return rn(n,t)},h:function(n,t,e){return rn(n,t,e)},l:en,qa:function(n){return n},pa:function(){throw x=!0,"Pure virtual function called!"},k:function(n,t,e){throw $[n]={ptr:n,adjusted:[n],type:t,destructor:e,refcount:0,caught:!1,rethrown:!1},tn=n,"uncaught_exception"in cn?cn.uncaught_exceptions++:cn.uncaught_exceptions=1,n},oa:function(){return cn.uncaught_exceptions},na:function(){},d:function(n){throw tn||(tn=n),n},H:function(n){return i.___errno_location&&(k[i.___errno_location()>>2]=n),n},ma:function(n,t){on.varargs=t;try{return on.getStreamFromFD(),on.get(),on.get(),on.get(),on.get(),0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||Pn(e),-e.errno}},G:function(n,t){on.varargs=t;try{for(var e=on.get(),r=on.get(),o=on.get(),a=0,i=0;i>2],s=k[r+(8*i+4)>>2],c=0;c2147418112)return!1;for(var e=Math.max(t,16777216);e>2]=t),t},M:function(n){Pn("OOM")},a:1850016},sn=i.asm({},un,R);i.asm=sn;i._DApi_AllocPacket=function(){return i.asm.sa.apply(null,arguments)},i._DApi_Char=function(){return i.asm.ta.apply(null,arguments)},i._DApi_Init=function(){return i.asm.ua.apply(null,arguments)},i._DApi_Key=function(){return i.asm.va.apply(null,arguments)},i._DApi_Mouse=function(){return i.asm.wa.apply(null,arguments)},i._DApi_Render=function(){return i.asm.xa.apply(null,arguments)},i._DApi_SyncText=function(){return i.asm.ya.apply(null,arguments)},i._SNet_InitWebsocket=function(){return i.asm.za.apply(null,arguments)};var cn=i.__ZSt18uncaught_exceptionv=function(){return i.asm.Aa.apply(null,arguments)},fn=i.___cxa_can_catch=function(){return i.asm.Ba.apply(null,arguments)},ln=i.___cxa_is_pointer_type=function(){return i.asm.Ca.apply(null,arguments)},pn=(i.___em_js__api_close_keyboard=function(){return i.asm.Da.apply(null,arguments)},i.___em_js__api_create_sound=function(){return i.asm.Ea.apply(null,arguments)},i.___em_js__api_create_sound_float=function(){return i.asm.Fa.apply(null,arguments)},i.___em_js__api_delete_sound=function(){return i.asm.Ga.apply(null,arguments)},i.___em_js__api_draw_begin=function(){return i.asm.Ha.apply(null,arguments)},i.___em_js__api_draw_belt=function(){return i.asm.Ia.apply(null,arguments)},i.___em_js__api_draw_blit=function(){return i.asm.Ja.apply(null,arguments)},i.___em_js__api_draw_clip_text=function(){return i.asm.Ka.apply(null,arguments)},i.___em_js__api_draw_end=function(){return i.asm.La.apply(null,arguments)},i.___em_js__api_draw_text=function(){return i.asm.Ma.apply(null,arguments)},i.___em_js__api_duplicate_sound=function(){return i.asm.Na.apply(null,arguments)},i.___em_js__api_exit_game=function(){return i.asm.Oa.apply(null,arguments)},i.___em_js__api_open_keyboard=function(){return i.asm.Pa.apply(null,arguments)},i.___em_js__api_play_sound=function(){return i.asm.Qa.apply(null,arguments)},i.___em_js__api_set_cursor=function(){return i.asm.Ra.apply(null,arguments)},i.___em_js__api_set_volume=function(){return i.asm.Sa.apply(null,arguments)},i.___em_js__api_stop_sound=function(){return i.asm.Ta.apply(null,arguments)},i.___em_js__api_websocket_closed=function(){return i.asm.Ua.apply(null,arguments)},i.___em_js__api_websocket_send=function(){return i.asm.Va.apply(null,arguments)},i.___em_js__exit_error=function(){return i.asm.Wa.apply(null,arguments)},i.___em_js__get_file_contents=function(){return i.asm.Xa.apply(null,arguments)},i.___em_js__get_file_size=function(){return i.asm.Ya.apply(null,arguments)},i.___em_js__put_file_contents=function(){return i.asm.Za.apply(null,arguments)},i.___em_js__remove_file=function(){return i.asm._a.apply(null,arguments)},i.___em_js__show_alert=function(){return i.asm.$a.apply(null,arguments)},i.___em_js__trace_pop=function(){return i.asm.ab.apply(null,arguments)},i.___em_js__trace_push=function(){return i.asm.bb.apply(null,arguments)},i._free=function(){return i.asm.cb.apply(null,arguments)}),dn=i._malloc=function(){return i.asm.db.apply(null,arguments)},hn=i._setThrew=function(){return i.asm.eb.apply(null,arguments)},_n=i.globalCtors=function(){return i.asm.ub.apply(null,arguments)},yn=i.stackRestore=function(){return i.asm.vb.apply(null,arguments)},mn=i.stackSave=function(){return i.asm.wb.apply(null,arguments)},gn=i.dynCall_i=function(){return i.asm.fb.apply(null,arguments)},vn=i.dynCall_ii=function(){return i.asm.gb.apply(null,arguments)},bn=i.dynCall_iii=function(){return i.asm.hb.apply(null,arguments)},wn=i.dynCall_iiii=function(){return i.asm.ib.apply(null,arguments)},An=i.dynCall_iiiii=function(){return i.asm.jb.apply(null,arguments)},xn=i.dynCall_iiiiii=function(){return i.asm.kb.apply(null,arguments)},jn=i.dynCall_ji=function(){return i.asm.lb.apply(null,arguments)},Sn=i.dynCall_v=function(){return i.asm.mb.apply(null,arguments)},En=i.dynCall_vi=function(){return i.asm.nb.apply(null,arguments)},Cn=i.dynCall_vii=function(){return i.asm.ob.apply(null,arguments)},Rn=i.dynCall_viii=function(){return i.asm.pb.apply(null,arguments)},Dn=i.dynCall_viiii=function(){return i.asm.qb.apply(null,arguments)},Tn=i.dynCall_viiiii=function(){return i.asm.rb.apply(null,arguments)},kn=i.dynCall_viiiiiii=function(){return i.asm.sb.apply(null,arguments)},Ln=i.dynCall_viji=function(){return i.asm.tb.apply(null,arguments)};function On(n){this.name="ExitStatus",this.message="Program terminated with exit("+n+")",this.status=n}function Mn(n){function t(){i.calledRun||(i.calledRun=!0,x||(!0,I(N),I(U),i.onRuntimeInitialized&&i.onRuntimeInitialized(),function(){if(i.postRun)for("function"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)B(i.postRun.shift());I(q)}()))}n=n||i.arguments,H>0||(!function(){if(i.preRun)for("function"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)n=i.preRun.shift(),F.unshift(n);var n;I(F)}(),H>0||i.calledRun||(i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("")},1),t()},1)):t()))}function Pn(n){throw i.onAbort&&i.onAbort(n),m(n+=""),g(n),x=!0,1,"abort("+n+"). Build with -s ASSERTIONS=1 for more info."}if(i.asm=sn,i.then=function(n){if(i.calledRun)n(i);else{var t=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){t&&t(),n(i)}}return i},On.prototype=new Error,On.prototype.constructor=On,W=function n(){i.calledRun||Mn(),i.calledRun||(W=n)},i.run=Mn,i.abort=Pn,i.preInit)for("function"==typeof i.preInit&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return i.noExitRuntime=!0,Mn(),i.ready=new Promise(function(n,t){delete i.then,i.onAbort=function(n){t(n)},B(function(){n(i)})}),o}}();n.exports=o}).call(this,e(2),"/")},function(n,t,e){n.exports=e(19)},function(n,t,e){var r=function(n){"use strict";var t,e=Object.prototype,r=e.hasOwnProperty,o="function"===typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function s(n,t,e,r){var o=t&&t.prototype instanceof _?t:_,a=Object.create(o.prototype),i=new C(r||[]);return a._invoke=function(n,t,e){var r=f;return function(o,a){if(r===p)throw new Error("Generator is already running");if(r===d){if("throw"===o)throw a;return D()}for(e.method=o,e.arg=a;;){var i=e.delegate;if(i){var u=j(i,e);if(u){if(u===h)continue;return u}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if(r===f)throw r=d,e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);r=p;var s=c(n,t,e);if("normal"===s.type){if(r=e.done?d:l,s.arg===h)continue;return{value:s.arg,done:e.done}}"throw"===s.type&&(r=d,e.method="throw",e.arg=s.arg)}}}(n,e,i),a}function c(n,t,e){try{return{type:"normal",arg:n.call(t,e)}}catch(r){return{type:"throw",arg:r}}}n.wrap=s;var f="suspendedStart",l="suspendedYield",p="executing",d="completed",h={};function _(){}function y(){}function m(){}var g={};g[a]=function(){return this};var v=Object.getPrototypeOf,b=v&&v(v(R([])));b&&b!==e&&r.call(b,a)&&(g=b);var w=m.prototype=_.prototype=Object.create(g);function A(n){["next","throw","return"].forEach(function(t){n[t]=function(n){return this._invoke(t,n)}})}function x(n){var t;this._invoke=function(e,o){function a(){return new Promise(function(t,a){!function t(e,o,a,i){var u=c(n[e],n,o);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"===typeof f&&r.call(f,"__await")?Promise.resolve(f.__await).then(function(n){t("next",n,a,i)},function(n){t("throw",n,a,i)}):Promise.resolve(f).then(function(n){s.value=n,a(s)},function(n){return t("throw",n,a,i)})}i(u.arg)}(e,o,t,a)})}return t=t?t.then(a,a):a()}}function j(n,e){var r=n.iterator[e.method];if(r===t){if(e.delegate=null,"throw"===e.method){if(n.iterator.return&&(e.method="return",e.arg=t,j(n,e),"throw"===e.method))return h;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=c(r,n.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,h;var a=o.arg;return a?a.done?(e[n.resultName]=a.value,e.next=n.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,h):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function S(n){var t={tryLoc:n[0]};1 in n&&(t.catchLoc=n[1]),2 in n&&(t.finallyLoc=n[2],t.afterLoc=n[3]),this.tryEntries.push(t)}function E(n){var t=n.completion||{};t.type="normal",delete t.arg,n.completion=t}function C(n){this.tryEntries=[{tryLoc:"root"}],n.forEach(S,this),this.reset(!0)}function R(n){if(n){var e=n[a];if(e)return e.call(n);if("function"===typeof n.next)return n;if(!isNaN(n.length)){var o=-1,i=function e(){for(;++o=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--e){var o=this.tryEntries[e];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var e=this.tryEntries[t];if(e.finallyLoc===n)return this.complete(e.completion,e.afterLoc),E(e),h}},catch:function(n){for(var t=this.tryEntries.length-1;t>=0;--t){var e=this.tryEntries[t];if(e.tryLoc===n){var r=e.completion;if("throw"===r.type){var o=r.arg;E(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(n,e,r){return this.delegate={iterator:R(n),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=t),h}},n}(n.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},function(n,t,e){"use strict";var r=e(0),o=e(5),a=e(21),i=e(11);function u(n){var t=new a(n),e=o(a.prototype.request,t);return r.extend(e,a.prototype,t),r.extend(e,t),e}var s=u(e(8));s.Axios=a,s.create=function(n){return u(i(s.defaults,n))},s.Cancel=e(12),s.CancelToken=e(33),s.isCancel=e(7),s.all=function(n){return Promise.all(n)},s.spread=e(34),n.exports=s,n.exports.default=s},function(n,t){n.exports=function(n){return null!=n&&null!=n.constructor&&"function"===typeof n.constructor.isBuffer&&n.constructor.isBuffer(n)}},function(n,t,e){"use strict";var r=e(0),o=e(6),a=e(22),i=e(23),u=e(11);function s(n){this.defaults=n,this.interceptors={request:new a,response:new a}}s.prototype.request=function(n){"string"===typeof n?(n=arguments[1]||{}).url=arguments[0]:n=n||{},(n=u(this.defaults,n)).method=n.method?n.method.toLowerCase():"get";var t=[i,void 0],e=Promise.resolve(n);for(this.interceptors.request.forEach(function(n){t.unshift(n.fulfilled,n.rejected)}),this.interceptors.response.forEach(function(n){t.push(n.fulfilled,n.rejected)});t.length;)e=e.then(t.shift(),t.shift());return e},s.prototype.getUri=function(n){return n=u(this.defaults,n),o(n.url,n.params,n.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],function(n){s.prototype[n]=function(t,e){return this.request(r.merge(e||{},{method:n,url:t}))}}),r.forEach(["post","put","patch"],function(n){s.prototype[n]=function(t,e,o){return this.request(r.merge(o||{},{method:n,url:t,data:e}))}}),n.exports=s},function(n,t,e){"use strict";var r=e(0);function o(){this.handlers=[]}o.prototype.use=function(n,t){return this.handlers.push({fulfilled:n,rejected:t}),this.handlers.length-1},o.prototype.eject=function(n){this.handlers[n]&&(this.handlers[n]=null)},o.prototype.forEach=function(n){r.forEach(this.handlers,function(t){null!==t&&n(t)})},n.exports=o},function(n,t,e){"use strict";var r=e(0),o=e(24),a=e(7),i=e(8),u=e(31),s=e(32);function c(n){n.cancelToken&&n.cancelToken.throwIfRequested()}n.exports=function(n){return c(n),n.baseURL&&!u(n.url)&&(n.url=s(n.baseURL,n.url)),n.headers=n.headers||{},n.data=o(n.data,n.headers,n.transformRequest),n.headers=r.merge(n.headers.common||{},n.headers[n.method]||{},n.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(t){delete n.headers[t]}),(n.adapter||i.adapter)(n).then(function(t){return c(n),t.data=o(t.data,t.headers,n.transformResponse),t},function(t){return a(t)||(c(n),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,n.transformResponse))),Promise.reject(t)})}},function(n,t,e){"use strict";var r=e(0);n.exports=function(n,t,e){return r.forEach(e,function(e){n=e(n,t)}),n}},function(n,t,e){"use strict";var r=e(0);n.exports=function(n,t){r.forEach(n,function(e,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(n[t]=e,delete n[r])})}},function(n,t,e){"use strict";var r=e(10);n.exports=function(n,t,e){var o=e.config.validateStatus;!o||o(e.status)?n(e):t(r("Request failed with status code "+e.status,e.config,null,e.request,e))}},function(n,t,e){"use strict";n.exports=function(n,t,e,r,o){return n.config=t,e&&(n.code=e),n.request=r,n.response=o,n.isAxiosError=!0,n.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}},n}},function(n,t,e){"use strict";var r=e(0),o=["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.exports=function(n){var t,e,a,i={};return n?(r.forEach(n.split("\n"),function(n){if(a=n.indexOf(":"),t=r.trim(n.substr(0,a)).toLowerCase(),e=r.trim(n.substr(a+1)),t){if(i[t]&&o.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([e]):i[t]?i[t]+", "+e:e}}),i):i}},function(n,t,e){"use strict";var r=e(0);n.exports=r.isStandardBrowserEnv()?function(){var n,t=/(msie|trident)/i.test(navigator.userAgent),e=document.createElement("a");function o(n){var r=n;return t&&(e.setAttribute("href",r),r=e.href),e.setAttribute("href",r),{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",host:e.host,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):"",hostname:e.hostname,port:e.port,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname}}return n=o(window.location.href),function(t){var e=r.isString(t)?o(t):t;return e.protocol===n.protocol&&e.host===n.host}}():function(){return!0}},function(n,t,e){"use strict";var r=e(0);n.exports=r.isStandardBrowserEnv()?{write:function(n,t,e,o,a,i){var u=[];u.push(n+"="+encodeURIComponent(t)),r.isNumber(e)&&u.push("expires="+new Date(e).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(a)&&u.push("domain="+a),!0===i&&u.push("secure"),document.cookie=u.join("; ")},read:function(n){var t=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(n,t,e){"use strict";n.exports=function(n){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(n)}},function(n,t,e){"use strict";n.exports=function(n,t){return t?n.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):n}},function(n,t,e){"use strict";var r=e(12);function o(n){if("function"!==typeof n)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(n){t=n});var e=this;n(function(n){e.reason||(e.reason=new r(n),t(e.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var n;return{token:new o(function(t){n=t}),cancel:n}},n.exports=o},function(n,t,e){"use strict";n.exports=function(n){return function(t){return n.apply(null,t)}}},function(n,t,e){"use strict";function r(n,t){return function(n){if(Array.isArray(n))return n}(n)||function(n,t){var e=[],r=!0,o=!1,a=void 0;try{for(var i,u=n[Symbol.iterator]();!(r=(i=u.next()).done)&&(e.push(i.value),!t||e.length!==t);r=!0);}catch(s){o=!0,a=s}finally{try{r||null==u.return||u.return()}finally{if(o)throw a}}return e}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}e.r(t);var o=e(1),a=e.n(o);function i(n){return function(n){if(Array.isArray(n)){for(var t=0,e=new Array(n.length);t=300)&&A.postMessage({action:"error",error:"Failed to load remote file"}),this.byteLength=parseInt(e.getResponseHeader("Content-Length")),this.url=t,this.buffer=new Uint8Array(this.byteLength),this.chunks=new Uint8Array(this.byteLength+T-1>>20|0)}var t,e,r;return t=n,(e=[{key:"subarray",value:function(n,t){for(var e=n/T|0,r=(t+T-1)/T|0,o=r,a=e,i=e;i=300)A.postMessage({action:"error",error:"Failed to load remote file"});else{var s,c=u.getResponseHeader("Content-Range"),f=0;c&&(s=c.match(/bytes (\d+)-(\d+)\/(\d+)/))&&(f=parseInt(s[1])),this.buffer.set(new Uint8Array(u.response),f),e=(f+T-1)/T|0,r=(f+u.response.byteLength+T-1)/T|0;for(var l=e;l=0?D?"spawn".concat(n,".sv"):"single_".concat(n,".sv"):null})},get_file_size:function(n){var t=E.get(n.toLowerCase());return t?t.byteLength:0},get_file_contents:function(n,t,e){var r=E.get(n.toLowerCase());r&&t.set(r.subarray(e,e+t.byteLength))},put_file_contents:function(n,t){n=n.toLowerCase(),E.set(n,t),A.postMessage({action:"fs",func:"update",params:[n,t]})},remove_file:function(n){n=n.toLowerCase(),E.delete(n),A.postMessage({action:"fs",func:"delete",params:[n]})},set_cursor:function(n,t){A.postMessage({action:"cursor",x:n,y:t})},open_keyboard:function(){for(var n=arguments.length,t=new Array(n),e=0;e>16&255,a=r>>8&255,i=255&r;j.fillStyle="rgb(".concat(o,", ").concat(a,", ").concat(i,")"),j.fillText(e,n,t+22)},draw_end:function(){j.restore();var n=x.transferToImageBitmap(),t=[n];R&&t.push(R.buffer),A.postMessage({action:"render",batch:{bitmap:n,belt:R}},t),R=null},draw_belt:function(n){R=n.slice()}},P=null,I=null,F=0,N=0;["create_sound_raw","create_sound","duplicate_sound"].forEach(function(n){L[n]=function(){for(var t=arguments.length,e=new Array(t),r=0;r=F?P.push({func:n,params:e}):A.postMessage({action:"audio",func:n,params:e})}});var U=null;L.websocket_send=function(n){U?U.push(n.slice().buffer):A.postMessage({action:"packet",buffer:n})},A.DApi=L;var q=null;function B(n){try{n()}catch(t){"string"===typeof t&&A.postMessage({action:""}),A.postMessage({action:"error",error:t.toString(),stack:t.stack})}}function H(n){for(var t=arguments.length,e=new Array(t>1?t-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.85de21cc.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\nvar Module=typeof Diablo!==\"undefined\"?Diablo:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module[\"arguments\"]=[];Module[\"thisProgram\"]=\"./this.program\";Module[\"quit\"]=function(status,toThrow){throw toThrow};Module[\"preRun\"]=[];Module[\"postRun\"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_HAS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_HAS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_NODE=ENVIRONMENT_HAS_NODE&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}else{return scriptDirectory+path}}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+\"/\";var nodeFS;var nodePath;read_=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename);return binary?ret:ret.toString()};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}Module[\"arguments\"]=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);Module[\"quit\"]=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=function(status){quit(status)}}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||(typeof console!==\"undefined\"?console.log.bind(console):typeof print!==\"undefined\"?print:null);var err=Module[\"printErr\"]||(typeof printErr!==\"undefined\"?printErr:typeof console!==\"undefined\"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var asm2wasmImports={\"f64-rem\":function(x,y){return x%y},\"debugger\":function(){debugger}};var functionPointers=new Array(0);var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var DYNAMIC_BASE=7117728,DYNAMICTOP_PTR=1874816;var TOTAL_STACK=5242880;var INITIAL_TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||134217728;if(INITIAL_TOTAL_MEMORY>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile=\"Diablo.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(Module[\"wasmBinary\"]){return new Uint8Array(Module[\"wasmBinary\"])}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!Module[\"wasmBinary\"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(env){var info={\"env\":env,\"global\":{\"NaN\":NaN,Infinity:Infinity},\"global.Math\":Math,\"asm2wasm\":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!Module[\"wasmBinary\"]&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){return WebAssembly.instantiateStreaming(response,info).then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}Module[\"asm\"]=function(global,env,providedBuffer){env[\"memory\"]=wasmMemory;env[\"table\"]=wasmTable=new WebAssembly.Table({\"initial\":1114,\"maximum\":1114,\"element\":\"anyfunc\"});env[\"__memory_base\"]=1024;env[\"__table_base\"]=0;var exports=createWasm(env);return exports};var ASM_CONSTS=[function($0){self.DApi.current_save_id($0)}];function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _api_close_keyboard(){self.DApi.close_keyboard()}function _api_create_sound(id,ptr,size){self.DApi.create_sound(id,HEAPU8.slice(ptr,ptr+size))}function _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)}function _api_delete_sound(id){self.DApi.delete_sound(id)}function _api_draw_begin(){self.DApi.draw_begin()}function _api_draw_belt(items){self.DApi.draw_belt(HEAP32.subarray(items/4,items/4+8))}function _api_draw_blit(x,y,w,h,ptr){self.DApi.draw_blit(x,y,w,h,HEAPU8.subarray(ptr,ptr+w*h*4))}function _api_draw_clip_text(x0,y0,x1,y1){self.DApi.draw_clip_text(x0,y0,x1,y1)}function _api_draw_end(){self.DApi.draw_end()}function _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)}function _api_duplicate_sound(id,srcId){self.DApi.duplicate_sound(id,srcId)}function _api_exit_game(){self.DApi.exit_game()}function _api_open_keyboard(x0,y0,x1,y1){self.DApi.open_keyboard(x0,y0,x1,y1)}function _api_play_sound(id,volume,pan,loop){self.DApi.play_sound(id,volume,pan,loop)}function _api_set_cursor(x,y){self.DApi.set_cursor(x,y)}function _api_set_volume(id,volume){self.DApi.set_volume(id,volume)}function _api_stop_sound(id){self.DApi.stop_sound(id)}function _api_websocket_closed(){return self.DApi.websocket_closed()}function _api_websocket_send(ptr,size){self.DApi.websocket_send(HEAPU8.subarray(ptr,ptr+size))}function _exit_error(err){var end=HEAPU8.indexOf(0,err);var text=String.fromCharCode.apply(null,HEAPU8.subarray(err,end));self.DApi.exit_error(text)}function _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)}function _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)}function _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))}function _remove_file(path){var end=HEAPU8.indexOf(0,path);var text=String.fromCharCode.apply(null,HEAPU8.subarray(path,end));self.DApi.remove_file(text)}__ATINIT__.push({func:function(){globalCtors()}});function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=thrown;thrown=buffer;for(var i=0;i>2];info.adjusted.push(thrown);return(setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0}Module[\"___cxa_find_matching_catch\"]=___cxa_find_matching_catch;function ___cxa_find_matching_catch_2(a0,a1){return ___cxa_find_matching_catch(a0,a1)}function ___cxa_find_matching_catch_3(a0,a1,a2){return ___cxa_find_matching_catch(a0,a1,a2)}function ___cxa_get_exception_ptr(ptr){return ptr}function ___cxa_pure_virtual(){ABORT=true;throw\"Pure virtual function called!\"}function ___cxa_throw(ptr,type,destructor){___exception_infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};___exception_last=ptr;if(!(\"uncaught_exception\"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function ___cxa_uncaught_exceptions(){return __ZSt18uncaught_exceptionv.uncaught_exceptions}function ___lock(){}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=value;return value}function abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function emscripten_realloc_buffer(size){var PAGE_MULTIPLE=65536;size=alignUp(size,PAGE_MULTIPLE);var oldSize=buffer.byteLength;try{var result=wasmMemory.grow((size-oldSize)/65536);if(result!==(-1|0)){buffer=wasmMemory.buffer;return true}else{return false}}catch(e){return false}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=ret}return ret}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}var asmGlobalArg={};var asmLibraryArg={\"n\":abort,\"L\":setTempRet0,\"b\":getTempRet0,\"ra\":invoke_i,\"g\":invoke_ii,\"l\":invoke_iii,\"o\":invoke_iiii,\"s\":invoke_iiiii,\"t\":invoke_iiiiii,\"K\":invoke_ji,\"u\":invoke_v,\"f\":invoke_vi,\"e\":invoke_vii,\"j\":invoke_viii,\"q\":invoke_viiii,\"r\":invoke_viiiii,\"A\":invoke_viiiiiii,\"J\":invoke_viji,\"z\":___assert_fail,\"i\":___cxa_allocate_exception,\"y\":___cxa_begin_catch,\"I\":___cxa_end_catch,\"c\":___cxa_find_matching_catch_2,\"h\":___cxa_find_matching_catch_3,\"m\":___cxa_free_exception,\"qa\":___cxa_get_exception_ptr,\"pa\":___cxa_pure_virtual,\"k\":___cxa_throw,\"oa\":___cxa_uncaught_exceptions,\"na\":___lock,\"d\":___resumeException,\"H\":___setErrNo,\"ma\":___syscall140,\"G\":___syscall146,\"la\":___syscall54,\"ka\":___syscall6,\"F\":___unlock,\"E\":_abort,\"ja\":_api_close_keyboard,\"ia\":_api_create_sound,\"ha\":_api_create_sound_float,\"ga\":_api_delete_sound,\"fa\":_api_draw_begin,\"ea\":_api_draw_belt,\"D\":_api_draw_blit,\"da\":_api_draw_clip_text,\"w\":_api_draw_end,\"ca\":_api_draw_text,\"ba\":_api_duplicate_sound,\"aa\":_api_exit_game,\"C\":_api_open_keyboard,\"B\":_api_play_sound,\"$\":_api_set_cursor,\"_\":_api_set_volume,\"Z\":_api_stop_sound,\"Y\":_api_websocket_closed,\"X\":_api_websocket_send,\"W\":_emscripten_asm_const_ii,\"V\":_emscripten_get_heap_size,\"U\":_emscripten_memcpy_big,\"T\":_emscripten_resize_heap,\"p\":_exit,\"S\":_exit_error,\"v\":_get_file_contents,\"R\":_get_file_size,\"Q\":_llvm_eh_typeid_for,\"P\":_llvm_trap,\"O\":_put_file_contents,\"N\":_remove_file,\"x\":_time,\"M\":abortOnCannotGrowMemory,\"a\":DYNAMICTOP_PTR};var asm=Module[\"asm\"](asmGlobalArg,asmLibraryArg,buffer);Module[\"asm\"]=asm;var _DApi_AllocPacket=Module[\"_DApi_AllocPacket\"]=function(){return Module[\"asm\"][\"sa\"].apply(null,arguments)};var _DApi_Char=Module[\"_DApi_Char\"]=function(){return Module[\"asm\"][\"ta\"].apply(null,arguments)};var _DApi_Init=Module[\"_DApi_Init\"]=function(){return Module[\"asm\"][\"ua\"].apply(null,arguments)};var _DApi_Key=Module[\"_DApi_Key\"]=function(){return Module[\"asm\"][\"va\"].apply(null,arguments)};var _DApi_Mouse=Module[\"_DApi_Mouse\"]=function(){return Module[\"asm\"][\"wa\"].apply(null,arguments)};var _DApi_Render=Module[\"_DApi_Render\"]=function(){return Module[\"asm\"][\"xa\"].apply(null,arguments)};var _DApi_SyncText=Module[\"_DApi_SyncText\"]=function(){return Module[\"asm\"][\"ya\"].apply(null,arguments)};var _SNet_InitWebsocket=Module[\"_SNet_InitWebsocket\"]=function(){return Module[\"asm\"][\"za\"].apply(null,arguments)};var __ZSt18uncaught_exceptionv=Module[\"__ZSt18uncaught_exceptionv\"]=function(){return Module[\"asm\"][\"Aa\"].apply(null,arguments)};var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=function(){return Module[\"asm\"][\"Ba\"].apply(null,arguments)};var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=function(){return Module[\"asm\"][\"Ca\"].apply(null,arguments)};var ___em_js__api_close_keyboard=Module[\"___em_js__api_close_keyboard\"]=function(){return Module[\"asm\"][\"Da\"].apply(null,arguments)};var ___em_js__api_create_sound=Module[\"___em_js__api_create_sound\"]=function(){return Module[\"asm\"][\"Ea\"].apply(null,arguments)};var ___em_js__api_create_sound_float=Module[\"___em_js__api_create_sound_float\"]=function(){return Module[\"asm\"][\"Fa\"].apply(null,arguments)};var ___em_js__api_delete_sound=Module[\"___em_js__api_delete_sound\"]=function(){return Module[\"asm\"][\"Ga\"].apply(null,arguments)};var ___em_js__api_draw_begin=Module[\"___em_js__api_draw_begin\"]=function(){return Module[\"asm\"][\"Ha\"].apply(null,arguments)};var ___em_js__api_draw_belt=Module[\"___em_js__api_draw_belt\"]=function(){return Module[\"asm\"][\"Ia\"].apply(null,arguments)};var ___em_js__api_draw_blit=Module[\"___em_js__api_draw_blit\"]=function(){return Module[\"asm\"][\"Ja\"].apply(null,arguments)};var ___em_js__api_draw_clip_text=Module[\"___em_js__api_draw_clip_text\"]=function(){return Module[\"asm\"][\"Ka\"].apply(null,arguments)};var ___em_js__api_draw_end=Module[\"___em_js__api_draw_end\"]=function(){return Module[\"asm\"][\"La\"].apply(null,arguments)};var ___em_js__api_draw_text=Module[\"___em_js__api_draw_text\"]=function(){return Module[\"asm\"][\"Ma\"].apply(null,arguments)};var ___em_js__api_duplicate_sound=Module[\"___em_js__api_duplicate_sound\"]=function(){return Module[\"asm\"][\"Na\"].apply(null,arguments)};var ___em_js__api_exit_game=Module[\"___em_js__api_exit_game\"]=function(){return Module[\"asm\"][\"Oa\"].apply(null,arguments)};var ___em_js__api_open_keyboard=Module[\"___em_js__api_open_keyboard\"]=function(){return Module[\"asm\"][\"Pa\"].apply(null,arguments)};var ___em_js__api_play_sound=Module[\"___em_js__api_play_sound\"]=function(){return Module[\"asm\"][\"Qa\"].apply(null,arguments)};var ___em_js__api_set_cursor=Module[\"___em_js__api_set_cursor\"]=function(){return Module[\"asm\"][\"Ra\"].apply(null,arguments)};var ___em_js__api_set_volume=Module[\"___em_js__api_set_volume\"]=function(){return Module[\"asm\"][\"Sa\"].apply(null,arguments)};var ___em_js__api_stop_sound=Module[\"___em_js__api_stop_sound\"]=function(){return Module[\"asm\"][\"Ta\"].apply(null,arguments)};var ___em_js__api_websocket_closed=Module[\"___em_js__api_websocket_closed\"]=function(){return Module[\"asm\"][\"Ua\"].apply(null,arguments)};var ___em_js__api_websocket_send=Module[\"___em_js__api_websocket_send\"]=function(){return Module[\"asm\"][\"Va\"].apply(null,arguments)};var ___em_js__exit_error=Module[\"___em_js__exit_error\"]=function(){return Module[\"asm\"][\"Wa\"].apply(null,arguments)};var ___em_js__get_file_contents=Module[\"___em_js__get_file_contents\"]=function(){return Module[\"asm\"][\"Xa\"].apply(null,arguments)};var ___em_js__get_file_size=Module[\"___em_js__get_file_size\"]=function(){return Module[\"asm\"][\"Ya\"].apply(null,arguments)};var ___em_js__put_file_contents=Module[\"___em_js__put_file_contents\"]=function(){return Module[\"asm\"][\"Za\"].apply(null,arguments)};var ___em_js__remove_file=Module[\"___em_js__remove_file\"]=function(){return Module[\"asm\"][\"_a\"].apply(null,arguments)};var ___em_js__show_alert=Module[\"___em_js__show_alert\"]=function(){return Module[\"asm\"][\"$a\"].apply(null,arguments)};var ___em_js__trace_pop=Module[\"___em_js__trace_pop\"]=function(){return Module[\"asm\"][\"ab\"].apply(null,arguments)};var ___em_js__trace_push=Module[\"___em_js__trace_push\"]=function(){return Module[\"asm\"][\"bb\"].apply(null,arguments)};var _free=Module[\"_free\"]=function(){return Module[\"asm\"][\"cb\"].apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return Module[\"asm\"][\"db\"].apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return Module[\"asm\"][\"eb\"].apply(null,arguments)};var globalCtors=Module[\"globalCtors\"]=function(){return Module[\"asm\"][\"ub\"].apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return Module[\"asm\"][\"vb\"].apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return Module[\"asm\"][\"wb\"].apply(null,arguments)};var dynCall_i=Module[\"dynCall_i\"]=function(){return Module[\"asm\"][\"fb\"].apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return Module[\"asm\"][\"gb\"].apply(null,arguments)};var dynCall_iii=Module[\"dynCall_iii\"]=function(){return Module[\"asm\"][\"hb\"].apply(null,arguments)};var dynCall_iiii=Module[\"dynCall_iiii\"]=function(){return Module[\"asm\"][\"ib\"].apply(null,arguments)};var dynCall_iiiii=Module[\"dynCall_iiiii\"]=function(){return Module[\"asm\"][\"jb\"].apply(null,arguments)};var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=function(){return Module[\"asm\"][\"kb\"].apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return Module[\"asm\"][\"lb\"].apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return Module[\"asm\"][\"mb\"].apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return Module[\"asm\"][\"nb\"].apply(null,arguments)};var dynCall_vii=Module[\"dynCall_vii\"]=function(){return Module[\"asm\"][\"ob\"].apply(null,arguments)};var dynCall_viii=Module[\"dynCall_viii\"]=function(){return Module[\"asm\"][\"pb\"].apply(null,arguments)};var dynCall_viiii=Module[\"dynCall_viiii\"]=function(){return Module[\"asm\"][\"qb\"].apply(null,arguments)};var dynCall_viiiii=Module[\"dynCall_viiiii\"]=function(){return Module[\"asm\"][\"rb\"].apply(null,arguments)};var dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=function(){return Module[\"asm\"][\"sb\"].apply(null,arguments)};var dynCall_viji=Module[\"dynCall_viji\"]=function(){return Module[\"asm\"][\"tb\"].apply(null,arguments)};Module[\"asm\"]=asm;Module[\"then\"]=function(func){if(Module[\"calledRun\"]){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};function run(args){args=args||Module[\"arguments\"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]&&status===0){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}Module[\"noExitRuntime\"]=true;run();Module[\"ready\"]=new Promise(function(resolve,reject){delete Module[\"then\"];Module[\"onAbort\"]=function(what){reject(what)};addOnPostRun(function(){resolve(Module)})});\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.5292efdb.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\nvar Module=typeof DiabloSpawn!==\"undefined\"?DiabloSpawn:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module[\"arguments\"]=[];Module[\"thisProgram\"]=\"./this.program\";Module[\"quit\"]=function(status,toThrow){throw toThrow};Module[\"preRun\"]=[];Module[\"postRun\"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_HAS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_HAS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_NODE=ENVIRONMENT_HAS_NODE&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}else{return scriptDirectory+path}}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+\"/\";var nodeFS;var nodePath;read_=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename);return binary?ret:ret.toString()};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}Module[\"arguments\"]=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);Module[\"quit\"]=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=function(status){quit(status)}}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||(typeof console!==\"undefined\"?console.log.bind(console):typeof print!==\"undefined\"?print:null);var err=Module[\"printErr\"]||(typeof printErr!==\"undefined\"?printErr:typeof console!==\"undefined\"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var asm2wasmImports={\"f64-rem\":function(x,y){return x%y},\"debugger\":function(){debugger}};var functionPointers=new Array(0);var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var DYNAMIC_BASE=7092928,DYNAMICTOP_PTR=1850016;var TOTAL_STACK=5242880;var INITIAL_TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||134217728;if(INITIAL_TOTAL_MEMORY>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile=\"DiabloSpawn.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(Module[\"wasmBinary\"]){return new Uint8Array(Module[\"wasmBinary\"])}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!Module[\"wasmBinary\"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(env){var info={\"env\":env,\"global\":{\"NaN\":NaN,Infinity:Infinity},\"global.Math\":Math,\"asm2wasm\":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!Module[\"wasmBinary\"]&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){return WebAssembly.instantiateStreaming(response,info).then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}Module[\"asm\"]=function(global,env,providedBuffer){env[\"memory\"]=wasmMemory;env[\"table\"]=wasmTable=new WebAssembly.Table({\"initial\":1114,\"maximum\":1114,\"element\":\"anyfunc\"});env[\"__memory_base\"]=1024;env[\"__table_base\"]=0;var exports=createWasm(env);return exports};var ASM_CONSTS=[function($0){self.DApi.current_save_id($0)}];function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _api_close_keyboard(){self.DApi.close_keyboard()}function _api_create_sound(id,ptr,size){self.DApi.create_sound(id,HEAPU8.slice(ptr,ptr+size))}function _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)}function _api_delete_sound(id){self.DApi.delete_sound(id)}function _api_draw_begin(){self.DApi.draw_begin()}function _api_draw_belt(items){self.DApi.draw_belt(HEAP32.subarray(items/4,items/4+8))}function _api_draw_blit(x,y,w,h,ptr){self.DApi.draw_blit(x,y,w,h,HEAPU8.subarray(ptr,ptr+w*h*4))}function _api_draw_clip_text(x0,y0,x1,y1){self.DApi.draw_clip_text(x0,y0,x1,y1)}function _api_draw_end(){self.DApi.draw_end()}function _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)}function _api_duplicate_sound(id,srcId){self.DApi.duplicate_sound(id,srcId)}function _api_exit_game(){self.DApi.exit_game()}function _api_open_keyboard(x0,y0,x1,y1){self.DApi.open_keyboard(x0,y0,x1,y1)}function _api_play_sound(id,volume,pan,loop){self.DApi.play_sound(id,volume,pan,loop)}function _api_set_cursor(x,y){self.DApi.set_cursor(x,y)}function _api_set_volume(id,volume){self.DApi.set_volume(id,volume)}function _api_stop_sound(id){self.DApi.stop_sound(id)}function _api_websocket_closed(){return self.DApi.websocket_closed()}function _api_websocket_send(ptr,size){self.DApi.websocket_send(HEAPU8.subarray(ptr,ptr+size))}function _exit_error(err){var end=HEAPU8.indexOf(0,err);var text=String.fromCharCode.apply(null,HEAPU8.subarray(err,end));self.DApi.exit_error(text)}function _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)}function _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)}function _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))}function _remove_file(path){var end=HEAPU8.indexOf(0,path);var text=String.fromCharCode.apply(null,HEAPU8.subarray(path,end));self.DApi.remove_file(text)}__ATINIT__.push({func:function(){globalCtors()}});function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=thrown;thrown=buffer;for(var i=0;i>2];info.adjusted.push(thrown);return(setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0}Module[\"___cxa_find_matching_catch\"]=___cxa_find_matching_catch;function ___cxa_find_matching_catch_2(a0,a1){return ___cxa_find_matching_catch(a0,a1)}function ___cxa_find_matching_catch_3(a0,a1,a2){return ___cxa_find_matching_catch(a0,a1,a2)}function ___cxa_get_exception_ptr(ptr){return ptr}function ___cxa_pure_virtual(){ABORT=true;throw\"Pure virtual function called!\"}function ___cxa_throw(ptr,type,destructor){___exception_infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};___exception_last=ptr;if(!(\"uncaught_exception\"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function ___cxa_uncaught_exceptions(){return __ZSt18uncaught_exceptionv.uncaught_exceptions}function ___lock(){}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=value;return value}function abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function emscripten_realloc_buffer(size){var PAGE_MULTIPLE=65536;size=alignUp(size,PAGE_MULTIPLE);var oldSize=buffer.byteLength;try{var result=wasmMemory.grow((size-oldSize)/65536);if(result!==(-1|0)){buffer=wasmMemory.buffer;return true}else{return false}}catch(e){return false}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=ret}return ret}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}var asmGlobalArg={};var asmLibraryArg={\"n\":abort,\"L\":setTempRet0,\"b\":getTempRet0,\"ra\":invoke_i,\"g\":invoke_ii,\"m\":invoke_iii,\"o\":invoke_iiii,\"s\":invoke_iiiii,\"t\":invoke_iiiiii,\"K\":invoke_ji,\"u\":invoke_v,\"f\":invoke_vi,\"e\":invoke_vii,\"j\":invoke_viii,\"q\":invoke_viiii,\"r\":invoke_viiiii,\"A\":invoke_viiiiiii,\"J\":invoke_viji,\"z\":___assert_fail,\"i\":___cxa_allocate_exception,\"y\":___cxa_begin_catch,\"I\":___cxa_end_catch,\"c\":___cxa_find_matching_catch_2,\"h\":___cxa_find_matching_catch_3,\"l\":___cxa_free_exception,\"qa\":___cxa_get_exception_ptr,\"pa\":___cxa_pure_virtual,\"k\":___cxa_throw,\"oa\":___cxa_uncaught_exceptions,\"na\":___lock,\"d\":___resumeException,\"H\":___setErrNo,\"ma\":___syscall140,\"G\":___syscall146,\"la\":___syscall54,\"ka\":___syscall6,\"F\":___unlock,\"E\":_abort,\"ja\":_api_close_keyboard,\"ia\":_api_create_sound,\"ha\":_api_create_sound_float,\"ga\":_api_delete_sound,\"fa\":_api_draw_begin,\"ea\":_api_draw_belt,\"D\":_api_draw_blit,\"da\":_api_draw_clip_text,\"w\":_api_draw_end,\"ca\":_api_draw_text,\"ba\":_api_duplicate_sound,\"aa\":_api_exit_game,\"C\":_api_open_keyboard,\"B\":_api_play_sound,\"$\":_api_set_cursor,\"_\":_api_set_volume,\"Z\":_api_stop_sound,\"Y\":_api_websocket_closed,\"X\":_api_websocket_send,\"W\":_emscripten_asm_const_ii,\"V\":_emscripten_get_heap_size,\"U\":_emscripten_memcpy_big,\"T\":_emscripten_resize_heap,\"p\":_exit,\"S\":_exit_error,\"v\":_get_file_contents,\"R\":_get_file_size,\"Q\":_llvm_eh_typeid_for,\"P\":_llvm_trap,\"O\":_put_file_contents,\"N\":_remove_file,\"x\":_time,\"M\":abortOnCannotGrowMemory,\"a\":DYNAMICTOP_PTR};var asm=Module[\"asm\"](asmGlobalArg,asmLibraryArg,buffer);Module[\"asm\"]=asm;var _DApi_AllocPacket=Module[\"_DApi_AllocPacket\"]=function(){return Module[\"asm\"][\"sa\"].apply(null,arguments)};var _DApi_Char=Module[\"_DApi_Char\"]=function(){return Module[\"asm\"][\"ta\"].apply(null,arguments)};var _DApi_Init=Module[\"_DApi_Init\"]=function(){return Module[\"asm\"][\"ua\"].apply(null,arguments)};var _DApi_Key=Module[\"_DApi_Key\"]=function(){return Module[\"asm\"][\"va\"].apply(null,arguments)};var _DApi_Mouse=Module[\"_DApi_Mouse\"]=function(){return Module[\"asm\"][\"wa\"].apply(null,arguments)};var _DApi_Render=Module[\"_DApi_Render\"]=function(){return Module[\"asm\"][\"xa\"].apply(null,arguments)};var _DApi_SyncText=Module[\"_DApi_SyncText\"]=function(){return Module[\"asm\"][\"ya\"].apply(null,arguments)};var _SNet_InitWebsocket=Module[\"_SNet_InitWebsocket\"]=function(){return Module[\"asm\"][\"za\"].apply(null,arguments)};var __ZSt18uncaught_exceptionv=Module[\"__ZSt18uncaught_exceptionv\"]=function(){return Module[\"asm\"][\"Aa\"].apply(null,arguments)};var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=function(){return Module[\"asm\"][\"Ba\"].apply(null,arguments)};var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=function(){return Module[\"asm\"][\"Ca\"].apply(null,arguments)};var ___em_js__api_close_keyboard=Module[\"___em_js__api_close_keyboard\"]=function(){return Module[\"asm\"][\"Da\"].apply(null,arguments)};var ___em_js__api_create_sound=Module[\"___em_js__api_create_sound\"]=function(){return Module[\"asm\"][\"Ea\"].apply(null,arguments)};var ___em_js__api_create_sound_float=Module[\"___em_js__api_create_sound_float\"]=function(){return Module[\"asm\"][\"Fa\"].apply(null,arguments)};var ___em_js__api_delete_sound=Module[\"___em_js__api_delete_sound\"]=function(){return Module[\"asm\"][\"Ga\"].apply(null,arguments)};var ___em_js__api_draw_begin=Module[\"___em_js__api_draw_begin\"]=function(){return Module[\"asm\"][\"Ha\"].apply(null,arguments)};var ___em_js__api_draw_belt=Module[\"___em_js__api_draw_belt\"]=function(){return Module[\"asm\"][\"Ia\"].apply(null,arguments)};var ___em_js__api_draw_blit=Module[\"___em_js__api_draw_blit\"]=function(){return Module[\"asm\"][\"Ja\"].apply(null,arguments)};var ___em_js__api_draw_clip_text=Module[\"___em_js__api_draw_clip_text\"]=function(){return Module[\"asm\"][\"Ka\"].apply(null,arguments)};var ___em_js__api_draw_end=Module[\"___em_js__api_draw_end\"]=function(){return Module[\"asm\"][\"La\"].apply(null,arguments)};var ___em_js__api_draw_text=Module[\"___em_js__api_draw_text\"]=function(){return Module[\"asm\"][\"Ma\"].apply(null,arguments)};var ___em_js__api_duplicate_sound=Module[\"___em_js__api_duplicate_sound\"]=function(){return Module[\"asm\"][\"Na\"].apply(null,arguments)};var ___em_js__api_exit_game=Module[\"___em_js__api_exit_game\"]=function(){return Module[\"asm\"][\"Oa\"].apply(null,arguments)};var ___em_js__api_open_keyboard=Module[\"___em_js__api_open_keyboard\"]=function(){return Module[\"asm\"][\"Pa\"].apply(null,arguments)};var ___em_js__api_play_sound=Module[\"___em_js__api_play_sound\"]=function(){return Module[\"asm\"][\"Qa\"].apply(null,arguments)};var ___em_js__api_set_cursor=Module[\"___em_js__api_set_cursor\"]=function(){return Module[\"asm\"][\"Ra\"].apply(null,arguments)};var ___em_js__api_set_volume=Module[\"___em_js__api_set_volume\"]=function(){return Module[\"asm\"][\"Sa\"].apply(null,arguments)};var ___em_js__api_stop_sound=Module[\"___em_js__api_stop_sound\"]=function(){return Module[\"asm\"][\"Ta\"].apply(null,arguments)};var ___em_js__api_websocket_closed=Module[\"___em_js__api_websocket_closed\"]=function(){return Module[\"asm\"][\"Ua\"].apply(null,arguments)};var ___em_js__api_websocket_send=Module[\"___em_js__api_websocket_send\"]=function(){return Module[\"asm\"][\"Va\"].apply(null,arguments)};var ___em_js__exit_error=Module[\"___em_js__exit_error\"]=function(){return Module[\"asm\"][\"Wa\"].apply(null,arguments)};var ___em_js__get_file_contents=Module[\"___em_js__get_file_contents\"]=function(){return Module[\"asm\"][\"Xa\"].apply(null,arguments)};var ___em_js__get_file_size=Module[\"___em_js__get_file_size\"]=function(){return Module[\"asm\"][\"Ya\"].apply(null,arguments)};var ___em_js__put_file_contents=Module[\"___em_js__put_file_contents\"]=function(){return Module[\"asm\"][\"Za\"].apply(null,arguments)};var ___em_js__remove_file=Module[\"___em_js__remove_file\"]=function(){return Module[\"asm\"][\"_a\"].apply(null,arguments)};var ___em_js__show_alert=Module[\"___em_js__show_alert\"]=function(){return Module[\"asm\"][\"$a\"].apply(null,arguments)};var ___em_js__trace_pop=Module[\"___em_js__trace_pop\"]=function(){return Module[\"asm\"][\"ab\"].apply(null,arguments)};var ___em_js__trace_push=Module[\"___em_js__trace_push\"]=function(){return Module[\"asm\"][\"bb\"].apply(null,arguments)};var _free=Module[\"_free\"]=function(){return Module[\"asm\"][\"cb\"].apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return Module[\"asm\"][\"db\"].apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return Module[\"asm\"][\"eb\"].apply(null,arguments)};var globalCtors=Module[\"globalCtors\"]=function(){return Module[\"asm\"][\"ub\"].apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return Module[\"asm\"][\"vb\"].apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return Module[\"asm\"][\"wb\"].apply(null,arguments)};var dynCall_i=Module[\"dynCall_i\"]=function(){return Module[\"asm\"][\"fb\"].apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return Module[\"asm\"][\"gb\"].apply(null,arguments)};var dynCall_iii=Module[\"dynCall_iii\"]=function(){return Module[\"asm\"][\"hb\"].apply(null,arguments)};var dynCall_iiii=Module[\"dynCall_iiii\"]=function(){return Module[\"asm\"][\"ib\"].apply(null,arguments)};var dynCall_iiiii=Module[\"dynCall_iiiii\"]=function(){return Module[\"asm\"][\"jb\"].apply(null,arguments)};var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=function(){return Module[\"asm\"][\"kb\"].apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return Module[\"asm\"][\"lb\"].apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return Module[\"asm\"][\"mb\"].apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return Module[\"asm\"][\"nb\"].apply(null,arguments)};var dynCall_vii=Module[\"dynCall_vii\"]=function(){return Module[\"asm\"][\"ob\"].apply(null,arguments)};var dynCall_viii=Module[\"dynCall_viii\"]=function(){return Module[\"asm\"][\"pb\"].apply(null,arguments)};var dynCall_viiii=Module[\"dynCall_viiii\"]=function(){return Module[\"asm\"][\"qb\"].apply(null,arguments)};var dynCall_viiiii=Module[\"dynCall_viiiii\"]=function(){return Module[\"asm\"][\"rb\"].apply(null,arguments)};var dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=function(){return Module[\"asm\"][\"sb\"].apply(null,arguments)};var dynCall_viji=Module[\"dynCall_viji\"]=function(){return Module[\"asm\"][\"tb\"].apply(null,arguments)};Module[\"asm\"]=asm;Module[\"then\"]=function(func){if(Module[\"calledRun\"]){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};function run(args){args=args||Module[\"arguments\"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]&&status===0){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}Module[\"noExitRuntime\"]=true;run();Module[\"ready\"]=new Promise(function(resolve,reject){delete Module[\"then\"];Module[\"onAbort\"]=function(what){reject(what)};addOnPostRun(function(){resolve(Module)})});\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 = 1316452;\r\nconst SpawnSize = 1196648;\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 wasm[\"_\" + func](...params);\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","node","read_","readBinary","nodeFS","nodePath","scriptDirectory","__dirname","filename","binary","ret","Uint8Array","assert","ex","ExitStatus","readbuffer","scriptArgs","quit","self","location","href","lastIndexOf","xhr","onload","out","console","log","print","err","printErr","warn","wasmMemory","asm2wasmImports","f64-rem","x","y","debugger","tempRet0","setTempRet0","WebAssembly","ABORT","condition","text","UTF8Decoder","TextDecoder","UTF8ArrayToString","u8Array","idx","maxBytesToRead","endIdx","endPtr","subarray","decode","u0","u1","u2","String","fromCharCode","ch","UTF8ToString","ptr","HEAPU8","HEAP8","HEAP32","HEAPF32","alignUp","multiple","updateGlobalBufferViews","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","INITIAL_TOTAL_MEMORY","callRuntimeCallbacks","callbacks","callback","shift","func","arg","Memory","initial","byteLength","DYNAMICTOP_PTR","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATPOSTRUN__","addOnPostRun","cb","runDependencies","runDependencyWatcher","dependenciesFulfilled","dataURIPrefix","isDataURI","startsWith","wasmBinaryFile","getBinary","createWasm","info","global","NaN","Infinity","global.Math","asm2wasm","receiveInstance","instance","id","clearInterval","removeRunDependency","receiveInstantiatedSource","output","instantiateArrayBuffer","receiver","fetch","credentials","catch","instantiate","reason","instantiateStreaming","instantiateAsync","providedBuffer","Table","maximum","element","ASM_CONSTS","$0","DApi","current_save_id","globalCtors","___exception_infos","___exception_caught","___exception_deAdjust","adjusted","adj","___exception_last","___cxa_free_exception","_free","___cxa_find_matching_catch","thrown","throwntype","type","typeArray","___cxa_is_pointer_type","___cxa_can_catch","SYSCALLS","buffers","printChar","stream","curr","varargs","getStr","get64","low","getZero","_emscripten_get_heap_size","asmLibraryArg","L","ra","sp","stackSave","dynCall_i","stackRestore","_setThrew","g","a1","dynCall_ii","a2","dynCall_iii","a3","dynCall_iiii","a4","dynCall_iiiii","a5","dynCall_iiiiii","K","dynCall_ji","u","dynCall_v","dynCall_vi","dynCall_vii","j","dynCall_viii","q","dynCall_viiii","dynCall_viiiii","A","a6","a7","dynCall_viiiiiii","J","dynCall_viji","z","line","size","_malloc","caught","__ZSt18uncaught_exceptionv","uncaught_exceptions","rethrown","refcount","___exception_addRef","I","pop","destructor","___exception_decRef","a0","h","qa","pa","k","oa","na","H","ma","which","getStreamFromFD","FS","ErrnoError","errno","G","iov","iovcnt","la","ka","F","E","ja","close_keyboard","ia","create_sound","ha","samples","channels","rate","create_sound_raw","ga","delete_sound","fa","draw_begin","ea","items","draw_belt","D","w","draw_blit","da","x0","y0","x1","y1","draw_clip_text","draw_end","ca","color","draw_text","ba","srcId","duplicate_sound","aa","exit_game","C","open_keyboard","B","volume","pan","loop","play_sound","$","set_cursor","_","set_volume","Z","stop_sound","Y","websocket_closed","X","websocket_send","W","V","U","dest","num","set","T","requestedSize","oldSize","newSize","max","grow","emscripten_realloc_buffer","implicit","exit","S","exit_error","offset","get_file_contents","R","get_file_size","Q","P","O","put_file_contents","N","remove_file","Date","now","M","asm","doRun","postRun","preRun","what","old","constructor","runCaller","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","Function","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","transfer","map","_ref","batch","DApi_renderOffscreen","save","font","putImageData","beginPath","fillStyle","fillText","restore","bitmap","transferToImageBitmap","audioBatch","audioTransfer","maxSoundId","maxBatchId","_len2","_key2","_len3","_key3","packetBatch","wasm","try_api","call_api","_len4","_key4","_wasm","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","floor","performance","setInterval","_ref2","init_game","_DApi_AllocPacket","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","packet","return"],"mappings":"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","file":"ad00e5df61d162015181.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.85de21cc.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\nvar Module=typeof Diablo!==\"undefined\"?Diablo:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module[\"arguments\"]=[];Module[\"thisProgram\"]=\"./this.program\";Module[\"quit\"]=function(status,toThrow){throw toThrow};Module[\"preRun\"]=[];Module[\"postRun\"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_HAS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_HAS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_NODE=ENVIRONMENT_HAS_NODE&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}else{return scriptDirectory+path}}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+\"/\";var nodeFS;var nodePath;read_=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename);return binary?ret:ret.toString()};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}Module[\"arguments\"]=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);Module[\"quit\"]=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=function(status){quit(status)}}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||(typeof console!==\"undefined\"?console.log.bind(console):typeof print!==\"undefined\"?print:null);var err=Module[\"printErr\"]||(typeof printErr!==\"undefined\"?printErr:typeof console!==\"undefined\"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var asm2wasmImports={\"f64-rem\":function(x,y){return x%y},\"debugger\":function(){debugger}};var functionPointers=new Array(0);var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var DYNAMIC_BASE=7117728,DYNAMICTOP_PTR=1874816;var TOTAL_STACK=5242880;var INITIAL_TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||134217728;if(INITIAL_TOTAL_MEMORY>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile=\"Diablo.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(Module[\"wasmBinary\"]){return new Uint8Array(Module[\"wasmBinary\"])}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!Module[\"wasmBinary\"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(env){var info={\"env\":env,\"global\":{\"NaN\":NaN,Infinity:Infinity},\"global.Math\":Math,\"asm2wasm\":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!Module[\"wasmBinary\"]&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){return WebAssembly.instantiateStreaming(response,info).then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}Module[\"asm\"]=function(global,env,providedBuffer){env[\"memory\"]=wasmMemory;env[\"table\"]=wasmTable=new WebAssembly.Table({\"initial\":1114,\"maximum\":1114,\"element\":\"anyfunc\"});env[\"__memory_base\"]=1024;env[\"__table_base\"]=0;var exports=createWasm(env);return exports};var ASM_CONSTS=[function($0){self.DApi.current_save_id($0)}];function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _api_close_keyboard(){self.DApi.close_keyboard()}function _api_create_sound(id,ptr,size){self.DApi.create_sound(id,HEAPU8.slice(ptr,ptr+size))}function _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)}function _api_delete_sound(id){self.DApi.delete_sound(id)}function _api_draw_begin(){self.DApi.draw_begin()}function _api_draw_belt(items){self.DApi.draw_belt(HEAP32.subarray(items/4,items/4+8))}function _api_draw_blit(x,y,w,h,ptr){self.DApi.draw_blit(x,y,w,h,HEAPU8.subarray(ptr,ptr+w*h*4))}function _api_draw_clip_text(x0,y0,x1,y1){self.DApi.draw_clip_text(x0,y0,x1,y1)}function _api_draw_end(){self.DApi.draw_end()}function _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)}function _api_duplicate_sound(id,srcId){self.DApi.duplicate_sound(id,srcId)}function _api_exit_game(){self.DApi.exit_game()}function _api_open_keyboard(x0,y0,x1,y1){self.DApi.open_keyboard(x0,y0,x1,y1)}function _api_play_sound(id,volume,pan,loop){self.DApi.play_sound(id,volume,pan,loop)}function _api_set_cursor(x,y){self.DApi.set_cursor(x,y)}function _api_set_volume(id,volume){self.DApi.set_volume(id,volume)}function _api_stop_sound(id){self.DApi.stop_sound(id)}function _api_websocket_closed(){return self.DApi.websocket_closed()}function _api_websocket_send(ptr,size){self.DApi.websocket_send(HEAPU8.subarray(ptr,ptr+size))}function _exit_error(err){var end=HEAPU8.indexOf(0,err);var text=String.fromCharCode.apply(null,HEAPU8.subarray(err,end));self.DApi.exit_error(text)}function _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)}function _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)}function _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))}function _remove_file(path){var end=HEAPU8.indexOf(0,path);var text=String.fromCharCode.apply(null,HEAPU8.subarray(path,end));self.DApi.remove_file(text)}__ATINIT__.push({func:function(){globalCtors()}});function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=thrown;thrown=buffer;for(var i=0;i>2];info.adjusted.push(thrown);return(setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0}Module[\"___cxa_find_matching_catch\"]=___cxa_find_matching_catch;function ___cxa_find_matching_catch_2(a0,a1){return ___cxa_find_matching_catch(a0,a1)}function ___cxa_find_matching_catch_3(a0,a1,a2){return ___cxa_find_matching_catch(a0,a1,a2)}function ___cxa_get_exception_ptr(ptr){return ptr}function ___cxa_pure_virtual(){ABORT=true;throw\"Pure virtual function called!\"}function ___cxa_throw(ptr,type,destructor){___exception_infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};___exception_last=ptr;if(!(\"uncaught_exception\"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function ___cxa_uncaught_exceptions(){return __ZSt18uncaught_exceptionv.uncaught_exceptions}function ___lock(){}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=value;return value}function abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function emscripten_realloc_buffer(size){var PAGE_MULTIPLE=65536;size=alignUp(size,PAGE_MULTIPLE);var oldSize=buffer.byteLength;try{var result=wasmMemory.grow((size-oldSize)/65536);if(result!==(-1|0)){buffer=wasmMemory.buffer;return true}else{return false}}catch(e){return false}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=ret}return ret}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}var asmGlobalArg={};var asmLibraryArg={\"n\":abort,\"L\":setTempRet0,\"b\":getTempRet0,\"ra\":invoke_i,\"g\":invoke_ii,\"l\":invoke_iii,\"o\":invoke_iiii,\"s\":invoke_iiiii,\"t\":invoke_iiiiii,\"K\":invoke_ji,\"u\":invoke_v,\"f\":invoke_vi,\"e\":invoke_vii,\"j\":invoke_viii,\"q\":invoke_viiii,\"r\":invoke_viiiii,\"A\":invoke_viiiiiii,\"J\":invoke_viji,\"z\":___assert_fail,\"i\":___cxa_allocate_exception,\"y\":___cxa_begin_catch,\"I\":___cxa_end_catch,\"c\":___cxa_find_matching_catch_2,\"h\":___cxa_find_matching_catch_3,\"m\":___cxa_free_exception,\"qa\":___cxa_get_exception_ptr,\"pa\":___cxa_pure_virtual,\"k\":___cxa_throw,\"oa\":___cxa_uncaught_exceptions,\"na\":___lock,\"d\":___resumeException,\"H\":___setErrNo,\"ma\":___syscall140,\"G\":___syscall146,\"la\":___syscall54,\"ka\":___syscall6,\"F\":___unlock,\"E\":_abort,\"ja\":_api_close_keyboard,\"ia\":_api_create_sound,\"ha\":_api_create_sound_float,\"ga\":_api_delete_sound,\"fa\":_api_draw_begin,\"ea\":_api_draw_belt,\"D\":_api_draw_blit,\"da\":_api_draw_clip_text,\"w\":_api_draw_end,\"ca\":_api_draw_text,\"ba\":_api_duplicate_sound,\"aa\":_api_exit_game,\"C\":_api_open_keyboard,\"B\":_api_play_sound,\"$\":_api_set_cursor,\"_\":_api_set_volume,\"Z\":_api_stop_sound,\"Y\":_api_websocket_closed,\"X\":_api_websocket_send,\"W\":_emscripten_asm_const_ii,\"V\":_emscripten_get_heap_size,\"U\":_emscripten_memcpy_big,\"T\":_emscripten_resize_heap,\"p\":_exit,\"S\":_exit_error,\"v\":_get_file_contents,\"R\":_get_file_size,\"Q\":_llvm_eh_typeid_for,\"P\":_llvm_trap,\"O\":_put_file_contents,\"N\":_remove_file,\"x\":_time,\"M\":abortOnCannotGrowMemory,\"a\":DYNAMICTOP_PTR};var asm=Module[\"asm\"](asmGlobalArg,asmLibraryArg,buffer);Module[\"asm\"]=asm;var _DApi_AllocPacket=Module[\"_DApi_AllocPacket\"]=function(){return Module[\"asm\"][\"sa\"].apply(null,arguments)};var _DApi_Char=Module[\"_DApi_Char\"]=function(){return Module[\"asm\"][\"ta\"].apply(null,arguments)};var _DApi_Init=Module[\"_DApi_Init\"]=function(){return Module[\"asm\"][\"ua\"].apply(null,arguments)};var _DApi_Key=Module[\"_DApi_Key\"]=function(){return Module[\"asm\"][\"va\"].apply(null,arguments)};var _DApi_Mouse=Module[\"_DApi_Mouse\"]=function(){return Module[\"asm\"][\"wa\"].apply(null,arguments)};var _DApi_Render=Module[\"_DApi_Render\"]=function(){return Module[\"asm\"][\"xa\"].apply(null,arguments)};var _DApi_SyncText=Module[\"_DApi_SyncText\"]=function(){return Module[\"asm\"][\"ya\"].apply(null,arguments)};var _SNet_InitWebsocket=Module[\"_SNet_InitWebsocket\"]=function(){return Module[\"asm\"][\"za\"].apply(null,arguments)};var __ZSt18uncaught_exceptionv=Module[\"__ZSt18uncaught_exceptionv\"]=function(){return Module[\"asm\"][\"Aa\"].apply(null,arguments)};var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=function(){return Module[\"asm\"][\"Ba\"].apply(null,arguments)};var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=function(){return Module[\"asm\"][\"Ca\"].apply(null,arguments)};var ___em_js__api_close_keyboard=Module[\"___em_js__api_close_keyboard\"]=function(){return Module[\"asm\"][\"Da\"].apply(null,arguments)};var ___em_js__api_create_sound=Module[\"___em_js__api_create_sound\"]=function(){return Module[\"asm\"][\"Ea\"].apply(null,arguments)};var ___em_js__api_create_sound_float=Module[\"___em_js__api_create_sound_float\"]=function(){return Module[\"asm\"][\"Fa\"].apply(null,arguments)};var ___em_js__api_delete_sound=Module[\"___em_js__api_delete_sound\"]=function(){return Module[\"asm\"][\"Ga\"].apply(null,arguments)};var ___em_js__api_draw_begin=Module[\"___em_js__api_draw_begin\"]=function(){return Module[\"asm\"][\"Ha\"].apply(null,arguments)};var ___em_js__api_draw_belt=Module[\"___em_js__api_draw_belt\"]=function(){return Module[\"asm\"][\"Ia\"].apply(null,arguments)};var ___em_js__api_draw_blit=Module[\"___em_js__api_draw_blit\"]=function(){return Module[\"asm\"][\"Ja\"].apply(null,arguments)};var ___em_js__api_draw_clip_text=Module[\"___em_js__api_draw_clip_text\"]=function(){return Module[\"asm\"][\"Ka\"].apply(null,arguments)};var ___em_js__api_draw_end=Module[\"___em_js__api_draw_end\"]=function(){return Module[\"asm\"][\"La\"].apply(null,arguments)};var ___em_js__api_draw_text=Module[\"___em_js__api_draw_text\"]=function(){return Module[\"asm\"][\"Ma\"].apply(null,arguments)};var ___em_js__api_duplicate_sound=Module[\"___em_js__api_duplicate_sound\"]=function(){return Module[\"asm\"][\"Na\"].apply(null,arguments)};var ___em_js__api_exit_game=Module[\"___em_js__api_exit_game\"]=function(){return Module[\"asm\"][\"Oa\"].apply(null,arguments)};var ___em_js__api_open_keyboard=Module[\"___em_js__api_open_keyboard\"]=function(){return Module[\"asm\"][\"Pa\"].apply(null,arguments)};var ___em_js__api_play_sound=Module[\"___em_js__api_play_sound\"]=function(){return Module[\"asm\"][\"Qa\"].apply(null,arguments)};var ___em_js__api_set_cursor=Module[\"___em_js__api_set_cursor\"]=function(){return Module[\"asm\"][\"Ra\"].apply(null,arguments)};var ___em_js__api_set_volume=Module[\"___em_js__api_set_volume\"]=function(){return Module[\"asm\"][\"Sa\"].apply(null,arguments)};var ___em_js__api_stop_sound=Module[\"___em_js__api_stop_sound\"]=function(){return Module[\"asm\"][\"Ta\"].apply(null,arguments)};var ___em_js__api_websocket_closed=Module[\"___em_js__api_websocket_closed\"]=function(){return Module[\"asm\"][\"Ua\"].apply(null,arguments)};var ___em_js__api_websocket_send=Module[\"___em_js__api_websocket_send\"]=function(){return Module[\"asm\"][\"Va\"].apply(null,arguments)};var ___em_js__exit_error=Module[\"___em_js__exit_error\"]=function(){return Module[\"asm\"][\"Wa\"].apply(null,arguments)};var ___em_js__get_file_contents=Module[\"___em_js__get_file_contents\"]=function(){return Module[\"asm\"][\"Xa\"].apply(null,arguments)};var ___em_js__get_file_size=Module[\"___em_js__get_file_size\"]=function(){return Module[\"asm\"][\"Ya\"].apply(null,arguments)};var ___em_js__put_file_contents=Module[\"___em_js__put_file_contents\"]=function(){return Module[\"asm\"][\"Za\"].apply(null,arguments)};var ___em_js__remove_file=Module[\"___em_js__remove_file\"]=function(){return Module[\"asm\"][\"_a\"].apply(null,arguments)};var ___em_js__show_alert=Module[\"___em_js__show_alert\"]=function(){return Module[\"asm\"][\"$a\"].apply(null,arguments)};var ___em_js__trace_pop=Module[\"___em_js__trace_pop\"]=function(){return Module[\"asm\"][\"ab\"].apply(null,arguments)};var ___em_js__trace_push=Module[\"___em_js__trace_push\"]=function(){return Module[\"asm\"][\"bb\"].apply(null,arguments)};var _free=Module[\"_free\"]=function(){return Module[\"asm\"][\"cb\"].apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return Module[\"asm\"][\"db\"].apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return Module[\"asm\"][\"eb\"].apply(null,arguments)};var globalCtors=Module[\"globalCtors\"]=function(){return Module[\"asm\"][\"ub\"].apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return Module[\"asm\"][\"vb\"].apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return Module[\"asm\"][\"wb\"].apply(null,arguments)};var dynCall_i=Module[\"dynCall_i\"]=function(){return Module[\"asm\"][\"fb\"].apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return Module[\"asm\"][\"gb\"].apply(null,arguments)};var dynCall_iii=Module[\"dynCall_iii\"]=function(){return Module[\"asm\"][\"hb\"].apply(null,arguments)};var dynCall_iiii=Module[\"dynCall_iiii\"]=function(){return Module[\"asm\"][\"ib\"].apply(null,arguments)};var dynCall_iiiii=Module[\"dynCall_iiiii\"]=function(){return Module[\"asm\"][\"jb\"].apply(null,arguments)};var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=function(){return Module[\"asm\"][\"kb\"].apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return Module[\"asm\"][\"lb\"].apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return Module[\"asm\"][\"mb\"].apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return Module[\"asm\"][\"nb\"].apply(null,arguments)};var dynCall_vii=Module[\"dynCall_vii\"]=function(){return Module[\"asm\"][\"ob\"].apply(null,arguments)};var dynCall_viii=Module[\"dynCall_viii\"]=function(){return Module[\"asm\"][\"pb\"].apply(null,arguments)};var dynCall_viiii=Module[\"dynCall_viiii\"]=function(){return Module[\"asm\"][\"qb\"].apply(null,arguments)};var dynCall_viiiii=Module[\"dynCall_viiiii\"]=function(){return Module[\"asm\"][\"rb\"].apply(null,arguments)};var dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=function(){return Module[\"asm\"][\"sb\"].apply(null,arguments)};var dynCall_viji=Module[\"dynCall_viji\"]=function(){return Module[\"asm\"][\"tb\"].apply(null,arguments)};Module[\"asm\"]=asm;Module[\"then\"]=function(func){if(Module[\"calledRun\"]){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};function run(args){args=args||Module[\"arguments\"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]&&status===0){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}Module[\"noExitRuntime\"]=true;run();Module[\"ready\"]=new Promise(function(resolve,reject){delete Module[\"then\"];Module[\"onAbort\"]=function(what){reject(what)};addOnPostRun(function(){resolve(Module)})});\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.5292efdb.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\nvar Module=typeof DiabloSpawn!==\"undefined\"?DiabloSpawn:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module[\"arguments\"]=[];Module[\"thisProgram\"]=\"./this.program\";Module[\"quit\"]=function(status,toThrow){throw toThrow};Module[\"preRun\"]=[];Module[\"postRun\"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_HAS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_HAS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_NODE=ENVIRONMENT_HAS_NODE&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}else{return scriptDirectory+path}}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+\"/\";var nodeFS;var nodePath;read_=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename);return binary?ret:ret.toString()};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}Module[\"arguments\"]=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);Module[\"quit\"]=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=function(status){quit(status)}}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||(typeof console!==\"undefined\"?console.log.bind(console):typeof print!==\"undefined\"?print:null);var err=Module[\"printErr\"]||(typeof printErr!==\"undefined\"?printErr:typeof console!==\"undefined\"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var asm2wasmImports={\"f64-rem\":function(x,y){return x%y},\"debugger\":function(){debugger}};var functionPointers=new Array(0);var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var DYNAMIC_BASE=7092928,DYNAMICTOP_PTR=1850016;var TOTAL_STACK=5242880;var INITIAL_TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||134217728;if(INITIAL_TOTAL_MEMORY>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile=\"DiabloSpawn.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(Module[\"wasmBinary\"]){return new Uint8Array(Module[\"wasmBinary\"])}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!Module[\"wasmBinary\"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(env){var info={\"env\":env,\"global\":{\"NaN\":NaN,Infinity:Infinity},\"global.Math\":Math,\"asm2wasm\":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!Module[\"wasmBinary\"]&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){return WebAssembly.instantiateStreaming(response,info).then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}Module[\"asm\"]=function(global,env,providedBuffer){env[\"memory\"]=wasmMemory;env[\"table\"]=wasmTable=new WebAssembly.Table({\"initial\":1114,\"maximum\":1114,\"element\":\"anyfunc\"});env[\"__memory_base\"]=1024;env[\"__table_base\"]=0;var exports=createWasm(env);return exports};var ASM_CONSTS=[function($0){self.DApi.current_save_id($0)}];function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}function _api_close_keyboard(){self.DApi.close_keyboard()}function _api_create_sound(id,ptr,size){self.DApi.create_sound(id,HEAPU8.slice(ptr,ptr+size))}function _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)}function _api_delete_sound(id){self.DApi.delete_sound(id)}function _api_draw_begin(){self.DApi.draw_begin()}function _api_draw_belt(items){self.DApi.draw_belt(HEAP32.subarray(items/4,items/4+8))}function _api_draw_blit(x,y,w,h,ptr){self.DApi.draw_blit(x,y,w,h,HEAPU8.subarray(ptr,ptr+w*h*4))}function _api_draw_clip_text(x0,y0,x1,y1){self.DApi.draw_clip_text(x0,y0,x1,y1)}function _api_draw_end(){self.DApi.draw_end()}function _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)}function _api_duplicate_sound(id,srcId){self.DApi.duplicate_sound(id,srcId)}function _api_exit_game(){self.DApi.exit_game()}function _api_open_keyboard(x0,y0,x1,y1){self.DApi.open_keyboard(x0,y0,x1,y1)}function _api_play_sound(id,volume,pan,loop){self.DApi.play_sound(id,volume,pan,loop)}function _api_set_cursor(x,y){self.DApi.set_cursor(x,y)}function _api_set_volume(id,volume){self.DApi.set_volume(id,volume)}function _api_stop_sound(id){self.DApi.stop_sound(id)}function _api_websocket_closed(){return self.DApi.websocket_closed()}function _api_websocket_send(ptr,size){self.DApi.websocket_send(HEAPU8.subarray(ptr,ptr+size))}function _exit_error(err){var end=HEAPU8.indexOf(0,err);var text=String.fromCharCode.apply(null,HEAPU8.subarray(err,end));self.DApi.exit_error(text)}function _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)}function _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)}function _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))}function _remove_file(path){var end=HEAPU8.indexOf(0,path);var text=String.fromCharCode.apply(null,HEAPU8.subarray(path,end));self.DApi.remove_file(text)}__ATINIT__.push({func:function(){globalCtors()}});function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_caught=[];function ___exception_addRef(ptr){if(!ptr)return;var info=___exception_infos[ptr];info.refcount++}function ___exception_deAdjust(adjusted){if(!adjusted||___exception_infos[adjusted])return adjusted;for(var key in ___exception_infos){var ptr=+key;var adj=___exception_infos[ptr].adjusted;var len=adj.length;for(var i=0;i>2]=thrown;thrown=buffer;for(var i=0;i>2];info.adjusted.push(thrown);return(setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0}Module[\"___cxa_find_matching_catch\"]=___cxa_find_matching_catch;function ___cxa_find_matching_catch_2(a0,a1){return ___cxa_find_matching_catch(a0,a1)}function ___cxa_find_matching_catch_3(a0,a1,a2){return ___cxa_find_matching_catch(a0,a1,a2)}function ___cxa_get_exception_ptr(ptr){return ptr}function ___cxa_pure_virtual(){ABORT=true;throw\"Pure virtual function called!\"}function ___cxa_throw(ptr,type,destructor){___exception_infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};___exception_last=ptr;if(!(\"uncaught_exception\"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function ___cxa_uncaught_exceptions(){return __ZSt18uncaught_exceptionv.uncaught_exceptions}function ___lock(){}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=value;return value}function abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function emscripten_realloc_buffer(size){var PAGE_MULTIPLE=65536;size=alignUp(size,PAGE_MULTIPLE);var oldSize=buffer.byteLength;try{var result=wasmMemory.grow((size-oldSize)/65536);if(result!==(-1|0)){buffer=wasmMemory.buffer;return true}else{return false}}catch(e){return false}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize>2]=ret}return ret}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viji(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!==\"longjmp\")throw e;_setThrew(1,0)}}var asmGlobalArg={};var asmLibraryArg={\"n\":abort,\"L\":setTempRet0,\"b\":getTempRet0,\"ra\":invoke_i,\"g\":invoke_ii,\"m\":invoke_iii,\"o\":invoke_iiii,\"s\":invoke_iiiii,\"t\":invoke_iiiiii,\"K\":invoke_ji,\"u\":invoke_v,\"f\":invoke_vi,\"e\":invoke_vii,\"j\":invoke_viii,\"q\":invoke_viiii,\"r\":invoke_viiiii,\"A\":invoke_viiiiiii,\"J\":invoke_viji,\"z\":___assert_fail,\"i\":___cxa_allocate_exception,\"y\":___cxa_begin_catch,\"I\":___cxa_end_catch,\"c\":___cxa_find_matching_catch_2,\"h\":___cxa_find_matching_catch_3,\"l\":___cxa_free_exception,\"qa\":___cxa_get_exception_ptr,\"pa\":___cxa_pure_virtual,\"k\":___cxa_throw,\"oa\":___cxa_uncaught_exceptions,\"na\":___lock,\"d\":___resumeException,\"H\":___setErrNo,\"ma\":___syscall140,\"G\":___syscall146,\"la\":___syscall54,\"ka\":___syscall6,\"F\":___unlock,\"E\":_abort,\"ja\":_api_close_keyboard,\"ia\":_api_create_sound,\"ha\":_api_create_sound_float,\"ga\":_api_delete_sound,\"fa\":_api_draw_begin,\"ea\":_api_draw_belt,\"D\":_api_draw_blit,\"da\":_api_draw_clip_text,\"w\":_api_draw_end,\"ca\":_api_draw_text,\"ba\":_api_duplicate_sound,\"aa\":_api_exit_game,\"C\":_api_open_keyboard,\"B\":_api_play_sound,\"$\":_api_set_cursor,\"_\":_api_set_volume,\"Z\":_api_stop_sound,\"Y\":_api_websocket_closed,\"X\":_api_websocket_send,\"W\":_emscripten_asm_const_ii,\"V\":_emscripten_get_heap_size,\"U\":_emscripten_memcpy_big,\"T\":_emscripten_resize_heap,\"p\":_exit,\"S\":_exit_error,\"v\":_get_file_contents,\"R\":_get_file_size,\"Q\":_llvm_eh_typeid_for,\"P\":_llvm_trap,\"O\":_put_file_contents,\"N\":_remove_file,\"x\":_time,\"M\":abortOnCannotGrowMemory,\"a\":DYNAMICTOP_PTR};var asm=Module[\"asm\"](asmGlobalArg,asmLibraryArg,buffer);Module[\"asm\"]=asm;var _DApi_AllocPacket=Module[\"_DApi_AllocPacket\"]=function(){return Module[\"asm\"][\"sa\"].apply(null,arguments)};var _DApi_Char=Module[\"_DApi_Char\"]=function(){return Module[\"asm\"][\"ta\"].apply(null,arguments)};var _DApi_Init=Module[\"_DApi_Init\"]=function(){return Module[\"asm\"][\"ua\"].apply(null,arguments)};var _DApi_Key=Module[\"_DApi_Key\"]=function(){return Module[\"asm\"][\"va\"].apply(null,arguments)};var _DApi_Mouse=Module[\"_DApi_Mouse\"]=function(){return Module[\"asm\"][\"wa\"].apply(null,arguments)};var _DApi_Render=Module[\"_DApi_Render\"]=function(){return Module[\"asm\"][\"xa\"].apply(null,arguments)};var _DApi_SyncText=Module[\"_DApi_SyncText\"]=function(){return Module[\"asm\"][\"ya\"].apply(null,arguments)};var _SNet_InitWebsocket=Module[\"_SNet_InitWebsocket\"]=function(){return Module[\"asm\"][\"za\"].apply(null,arguments)};var __ZSt18uncaught_exceptionv=Module[\"__ZSt18uncaught_exceptionv\"]=function(){return Module[\"asm\"][\"Aa\"].apply(null,arguments)};var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=function(){return Module[\"asm\"][\"Ba\"].apply(null,arguments)};var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=function(){return Module[\"asm\"][\"Ca\"].apply(null,arguments)};var ___em_js__api_close_keyboard=Module[\"___em_js__api_close_keyboard\"]=function(){return Module[\"asm\"][\"Da\"].apply(null,arguments)};var ___em_js__api_create_sound=Module[\"___em_js__api_create_sound\"]=function(){return Module[\"asm\"][\"Ea\"].apply(null,arguments)};var ___em_js__api_create_sound_float=Module[\"___em_js__api_create_sound_float\"]=function(){return Module[\"asm\"][\"Fa\"].apply(null,arguments)};var ___em_js__api_delete_sound=Module[\"___em_js__api_delete_sound\"]=function(){return Module[\"asm\"][\"Ga\"].apply(null,arguments)};var ___em_js__api_draw_begin=Module[\"___em_js__api_draw_begin\"]=function(){return Module[\"asm\"][\"Ha\"].apply(null,arguments)};var ___em_js__api_draw_belt=Module[\"___em_js__api_draw_belt\"]=function(){return Module[\"asm\"][\"Ia\"].apply(null,arguments)};var ___em_js__api_draw_blit=Module[\"___em_js__api_draw_blit\"]=function(){return Module[\"asm\"][\"Ja\"].apply(null,arguments)};var ___em_js__api_draw_clip_text=Module[\"___em_js__api_draw_clip_text\"]=function(){return Module[\"asm\"][\"Ka\"].apply(null,arguments)};var ___em_js__api_draw_end=Module[\"___em_js__api_draw_end\"]=function(){return Module[\"asm\"][\"La\"].apply(null,arguments)};var ___em_js__api_draw_text=Module[\"___em_js__api_draw_text\"]=function(){return Module[\"asm\"][\"Ma\"].apply(null,arguments)};var ___em_js__api_duplicate_sound=Module[\"___em_js__api_duplicate_sound\"]=function(){return Module[\"asm\"][\"Na\"].apply(null,arguments)};var ___em_js__api_exit_game=Module[\"___em_js__api_exit_game\"]=function(){return Module[\"asm\"][\"Oa\"].apply(null,arguments)};var ___em_js__api_open_keyboard=Module[\"___em_js__api_open_keyboard\"]=function(){return Module[\"asm\"][\"Pa\"].apply(null,arguments)};var ___em_js__api_play_sound=Module[\"___em_js__api_play_sound\"]=function(){return Module[\"asm\"][\"Qa\"].apply(null,arguments)};var ___em_js__api_set_cursor=Module[\"___em_js__api_set_cursor\"]=function(){return Module[\"asm\"][\"Ra\"].apply(null,arguments)};var ___em_js__api_set_volume=Module[\"___em_js__api_set_volume\"]=function(){return Module[\"asm\"][\"Sa\"].apply(null,arguments)};var ___em_js__api_stop_sound=Module[\"___em_js__api_stop_sound\"]=function(){return Module[\"asm\"][\"Ta\"].apply(null,arguments)};var ___em_js__api_websocket_closed=Module[\"___em_js__api_websocket_closed\"]=function(){return Module[\"asm\"][\"Ua\"].apply(null,arguments)};var ___em_js__api_websocket_send=Module[\"___em_js__api_websocket_send\"]=function(){return Module[\"asm\"][\"Va\"].apply(null,arguments)};var ___em_js__exit_error=Module[\"___em_js__exit_error\"]=function(){return Module[\"asm\"][\"Wa\"].apply(null,arguments)};var ___em_js__get_file_contents=Module[\"___em_js__get_file_contents\"]=function(){return Module[\"asm\"][\"Xa\"].apply(null,arguments)};var ___em_js__get_file_size=Module[\"___em_js__get_file_size\"]=function(){return Module[\"asm\"][\"Ya\"].apply(null,arguments)};var ___em_js__put_file_contents=Module[\"___em_js__put_file_contents\"]=function(){return Module[\"asm\"][\"Za\"].apply(null,arguments)};var ___em_js__remove_file=Module[\"___em_js__remove_file\"]=function(){return Module[\"asm\"][\"_a\"].apply(null,arguments)};var ___em_js__show_alert=Module[\"___em_js__show_alert\"]=function(){return Module[\"asm\"][\"$a\"].apply(null,arguments)};var ___em_js__trace_pop=Module[\"___em_js__trace_pop\"]=function(){return Module[\"asm\"][\"ab\"].apply(null,arguments)};var ___em_js__trace_push=Module[\"___em_js__trace_push\"]=function(){return Module[\"asm\"][\"bb\"].apply(null,arguments)};var _free=Module[\"_free\"]=function(){return Module[\"asm\"][\"cb\"].apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return Module[\"asm\"][\"db\"].apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return Module[\"asm\"][\"eb\"].apply(null,arguments)};var globalCtors=Module[\"globalCtors\"]=function(){return Module[\"asm\"][\"ub\"].apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return Module[\"asm\"][\"vb\"].apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return Module[\"asm\"][\"wb\"].apply(null,arguments)};var dynCall_i=Module[\"dynCall_i\"]=function(){return Module[\"asm\"][\"fb\"].apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return Module[\"asm\"][\"gb\"].apply(null,arguments)};var dynCall_iii=Module[\"dynCall_iii\"]=function(){return Module[\"asm\"][\"hb\"].apply(null,arguments)};var dynCall_iiii=Module[\"dynCall_iiii\"]=function(){return Module[\"asm\"][\"ib\"].apply(null,arguments)};var dynCall_iiiii=Module[\"dynCall_iiiii\"]=function(){return Module[\"asm\"][\"jb\"].apply(null,arguments)};var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=function(){return Module[\"asm\"][\"kb\"].apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return Module[\"asm\"][\"lb\"].apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return Module[\"asm\"][\"mb\"].apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return Module[\"asm\"][\"nb\"].apply(null,arguments)};var dynCall_vii=Module[\"dynCall_vii\"]=function(){return Module[\"asm\"][\"ob\"].apply(null,arguments)};var dynCall_viii=Module[\"dynCall_viii\"]=function(){return Module[\"asm\"][\"pb\"].apply(null,arguments)};var dynCall_viiii=Module[\"dynCall_viiii\"]=function(){return Module[\"asm\"][\"qb\"].apply(null,arguments)};var dynCall_viiiii=Module[\"dynCall_viiiii\"]=function(){return Module[\"asm\"][\"rb\"].apply(null,arguments)};var dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=function(){return Module[\"asm\"][\"sb\"].apply(null,arguments)};var dynCall_viji=Module[\"dynCall_viji\"]=function(){return Module[\"asm\"][\"tb\"].apply(null,arguments)};Module[\"asm\"]=asm;Module[\"then\"]=function(func){if(Module[\"calledRun\"]){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};function run(args){args=args||Module[\"arguments\"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]&&status===0){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}Module[\"noExitRuntime\"]=true;run();Module[\"ready\"]=new Promise(function(resolve,reject){delete Module[\"then\"];Module[\"onAbort\"]=function(what){reject(what)};addOnPostRun(function(){resolve(Module)})});\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 = 1316452;\r\nconst SpawnSize = 1196648;\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 wasm[\"_\" + func](...params);\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/asset-manifest.json b/asset-manifest.json index 51ecd36..e738526 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -3,8 +3,8 @@ "static/js/0.44a402c1.chunk.js": "/diabloweb/static/js/0.44a402c1.chunk.js", "static/js/0.44a402c1.chunk.js.map": "/diabloweb/static/js/0.44a402c1.chunk.js.map", "main.css": "/diabloweb/static/css/main.b8d7c1d3.chunk.css", - "main.js": "/diabloweb/static/js/main.3717595d.chunk.js", - "main.js.map": "/diabloweb/static/js/main.3717595d.chunk.js.map", + "main.js": "/diabloweb/static/js/main.6e1ff325.chunk.js", + "main.js.map": "/diabloweb/static/js/main.6e1ff325.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,10 +13,10 @@ "storage.js.map": "/diabloweb/static/js/storage.64cb2ea2.chunk.js.map", "static/js/5.79c615e0.chunk.js": "/diabloweb/static/js/5.79c615e0.chunk.js", "static/js/5.79c615e0.chunk.js.map": "/diabloweb/static/js/5.79c615e0.chunk.js.map", - "35f22eb14a4817ef6e49.worker.js": "/diabloweb/35f22eb14a4817ef6e49.worker.js", - "35f22eb14a4817ef6e49.worker.js.map": "/diabloweb/35f22eb14a4817ef6e49.worker.js.map", + "ad00e5df61d162015181.worker.js": "/diabloweb/ad00e5df61d162015181.worker.js", + "ad00e5df61d162015181.worker.js.map": "/diabloweb/ad00e5df61d162015181.worker.js.map", "index.html": "/diabloweb/index.html", - "precache-manifest.2b711206d6794d60f9c2f25f86873d9e.js": "/diabloweb/precache-manifest.2b711206d6794d60f9c2f25f86873d9e.js", + "precache-manifest.655c27d0168cd18a782081147213ed4b.js": "/diabloweb/precache-manifest.655c27d0168cd18a782081147213ed4b.js", "service-worker.js": "/diabloweb/service-worker.js", "static/css/main.b8d7c1d3.chunk.css.map": "/diabloweb/static/css/main.b8d7c1d3.chunk.css.map", "static/media/Diablo.wasm": "/diabloweb/static/media/Diablo.85de21cc.wasm", diff --git a/index.html b/index.html index a5f7de0..dac3495 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.2b711206d6794d60f9c2f25f86873d9e.js b/precache-manifest.655c27d0168cd18a782081147213ed4b.js similarity index 82% rename from precache-manifest.2b711206d6794d60f9c2f25f86873d9e.js rename to precache-manifest.655c27d0168cd18a782081147213ed4b.js index df3c58f..746a717 100644 --- a/precache-manifest.2b711206d6794d60f9c2f25f86873d9e.js +++ b/precache-manifest.655c27d0168cd18a782081147213ed4b.js @@ -1,14 +1,14 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "b155ccf3123997fca6573ababa85aadf", - "url": "/diabloweb/35f22eb14a4817ef6e49.worker.js" + "revision": "887c5bb7e2498d5b5618f0e2cb17a526", + "url": "/diabloweb/ad00e5df61d162015181.worker.js" }, { - "revision": "48314813e4cacb8e451bf3add3101faa", + "revision": "8df049d0f7552c9d7cf5c1e957949c0b", "url": "/diabloweb/index.html" }, { - "revision": "f56d9f7e555b08fb5c4a", + "revision": "2b9b72341afad9fc1c4c", "url": "/diabloweb/static/css/main.b8d7c1d3.chunk.css" }, { @@ -20,8 +20,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/diabloweb/static/js/5.79c615e0.chunk.js" }, { - "revision": "f56d9f7e555b08fb5c4a", - "url": "/diabloweb/static/js/main.3717595d.chunk.js" + "revision": "2b9b72341afad9fc1c4c", + "url": "/diabloweb/static/js/main.6e1ff325.chunk.js" }, { "revision": "077fe45e700d7971de0b", diff --git a/service-worker.js b/service-worker.js index 214bfdd..2a52cd8 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.2b711206d6794d60f9c2f25f86873d9e.js" + "/diabloweb/precache-manifest.655c27d0168cd18a782081147213ed4b.js" ); self.addEventListener('message', (event) => { diff --git a/static/js/main.3717595d.chunk.js b/static/js/main.3717595d.chunk.js deleted file mode 100644 index 7aa230c..0000000 --- a/static/js/main.3717595d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{11:function(e,t,n){"use strict";n.d(t,"a",function(){return m});var r=n(5),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 p=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 v(e,t,n){return w.apply(this,arguments)}function w(){return(w=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,p(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 m(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,p,w,m,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}(),j=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(K.write({cookie:o.cookie,reason:I.JOIN_GAME_FULL})):(t.players[s]=n,n.id=s,e.send(R.write({cookie:o.cookie,index:s,seed:t.seed,difficulty:t.difficulty})),t.send(255,U.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=B>>8&255,j=255&B;t.fillStyle="rgb(".concat(P,", ").concat(N,", ").concat(j,")"),t.fillText(S,A,L+22)}}catch(I){_=!0,C=I}finally{try{M||null==T.return||T.return()}finally{if(_)throw C}}t.restore()}}e.updateBelt(s)}function ne(){return(ne=Object(M.a)(x.a.mark(function e(t,n,r,o){var a,i,s;return x.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,L(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=ee(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.showKeyboard&&n.game("DApi_Char",e.key.charCodeAt(0)),n.clearKeySel(),n.showKeyboard||(8===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(){if(n.showKeyboard){var e,t=n.keyboard.value,r=(t.match(/[\x20-\x7E]/g)||[]).join("").substring(0,15);t!==r&&(n.keyboard.value=r),n.clearKeySel();var o=Object(u.a)(Array(15)).map(function(e,t){return t0&&n.start(t[0])},n.touchButton=null,n.touchCanvas=null,n.onTouchStart=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.touchMods[ae]||n.game("DApi_Mouse",1,n.touchMods[ie]?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[ie]||n.touchButton&&n.touchButton.index===ie||n.setTouchButton(ie,!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(p.a)(n),0),n.setTouch1=n.setTouch_.bind(Object(p.a)(n),1),n.setTouch2=n.setTouch_.bind(Object(p.a)(n),2),n.setTouch3=n.setTouchBelt_.bind(Object(p.a)(n),3),n.setTouch4=n.setTouchBelt_.bind(Object(p.a)(n),4),n.setTouch5=n.setTouchBelt_.bind(Object(p.a)(n),5),n}return Object(v.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&&A.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.element.classList.add("keyboard"),Object.assign(this.keyboard.style,this.showKeyboard),this.keyboard.focus()):(this.showKeyboard=!1,this.element.classList.remove("keyboard"),this.keyboard.blur(),this.keyboard.value="")}},{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}),re(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:"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(x){i=!0,s=x}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(),p=o.clientX,v=o.clientY;p>=f.left&&p=f.top&&vk)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:w,y:m}}else this.game("DApi_Mouse",0,0,24,320,180),this.game("DApi_Mouse",2,1,24,320,180),this.panPos={x:w,y:m};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,ref:this.setKeyboard,spellCheck:!1,style:this.showKeyboard||{}}))),o.a.createElement("div",{className:"BodyV"},!!a&&o.a.createElement(se,{className:"error",href:oe(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(se,{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(se,{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(ce,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.3717595d.chunk.js.map \ No newline at end of file diff --git a/static/js/main.3717595d.chunk.js.map b/static/js/main.3717595d.chunk.js.map deleted file mode 100644 index 6bc9585..0000000 --- a/static/js/main.3717595d.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_Work_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_Work_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","webkitAudioPannerNode","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_join_accept_packet","read","cookie","read32","index","seed","difficulty","write","write32","server_join_reject_packet","reason","server_connect_packet","_ref8","server_disconnect_packet","_ref9","server_message_packet","payload","rest","_ref10","server_turn_packet","turn","_ref11","client_info_packet","version","_ref12","client_create_game_packet","read_str","password","_ref13","write_str","client_join_game_packet","_ref14","client_leave_game_packet","client_drop_player_packet","_ref15","client_message_packet","_ref16","client_turn_packet","_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","unreg","clearTimeout","timeout","push","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","message","searchParams","split","map","line","join","userAgent","toString","ReactGA","initialize","pageview","TOUCH_MOVE","TOUCH_RMB","Link","children","props","objectWithoutProperties","react_default","assign","target","rel","App","possibleConstructorReturn","getPrototypeOf","started","loading","dropping","has_spawn","cursorPos","touchControls","touchButtons","touchCtx","touchMods","touchBelt","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","key","showKeyboard","clearKeySel","onMenu","onKeyUp","onKeyboard","valid","substring","values","_","parseFile","touchButton","touchCanvas","onTouchStart","updateTouchButton","touches","_this$mousePos4","onTouchMove","_this$mousePos5","onTouchEnd","prevTc","_this$mousePos6","setTouchButton","fullscreenElement","requestFullscreen","setCanvas","setElement","setKeyboard","setTouch0","setTouch_","bind","assertThisInitialized","setTouch1","setTouch2","setTouch3","setTouchBelt_","setTouch4","setTouch5","inc","_ref2","max","left","toFixed","top","width","add","focus","blur","_this4","getBoundingClientRect","right","bottom","progress","reload","idx","slot","drawImage","used","Set","has","drawBelt","_this5","removeEventListener","event","category","passive","capture","pointerLockElement","mozPointerLockElement","min","movementX","movementY","clientX","clientY","round","button","shiftKey","ctrlKey","altKey","len","setSelectionRange","use","toggle","now","performance","beltTime","release","_this6","touchOther","btn","_loop","identifier","stick","find","t","panPos","v","indexOf","original","_ret","setTouchMod","dx","dy","step","offsetHeight","abs","_this7","_this$state","className","classNames","touch","ref","active","onChange","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.3717595d.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__ + \"35f22eb14a4817ef6e49.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.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\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 || window.webkitAudioPannerNode;\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_info_packet = {\r\n code: 0x32,\r\n read: reader => ({version: reader.read32()}),\r\n write: ({version}) => new buffer_writer(5).write8(server_info_packet.code).write32(version).result,\r\n};\r\nconst server_game_list_packet = {\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_game_list_packet.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\nconst server_join_accept_packet = {\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_join_accept_packet.code).write32(cookie).write8(index).write32(seed).write32(difficulty).result,\r\n};\r\nconst server_join_reject_packet = {\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_join_reject_packet.code).write32(cookie).write8(reason).result,\r\n};\r\nconst server_connect_packet = {\r\n code: 0x13,\r\n read: reader => ({id: reader.read8()}),\r\n write: ({id}) => new buffer_writer(2).write8(server_connect_packet.code).write8(id).result,\r\n};\r\nconst server_disconnect_packet = {\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_disconnect_packet.code).write8(id).write32(reason).result,\r\n};\r\nconst server_message_packet = {\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_message_packet.code).write8(id).rest(payload).result,\r\n};\r\nconst server_turn_packet = {\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_turn_packet.code).write8(id).write32(turn).result,\r\n};\r\n\r\nconst client_info_packet = {\r\n code: 0x31,\r\n read: reader => ({version: reader.read32()}),\r\n write: ({version}) => new buffer_writer(5).write8(client_info_packet.code).write32(version).result,\r\n};\r\nconst client_game_list_packet = {\r\n code: 0x21,\r\n read: () => ({}),\r\n write: () => new buffer_writer(1).write8(client_game_list_packet.code).result,\r\n};\r\nconst client_create_game_packet = {\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_create_game_packet.code).write32(cookie).write_str(name).write_str(password).write32(difficulty).result,\r\n};\r\nconst client_join_game_packet = {\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_join_game_packet.code).write32(cookie).write_str(name).write_str(password).result,\r\n};\r\nconst client_leave_game_packet = {\r\n code: 0x24,\r\n read: () => ({}),\r\n write: () => new buffer_writer(1).write8(client_leave_game_packet.code).result,\r\n};\r\nconst client_drop_player_packet = {\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_drop_player_packet.code).write8(id).write32(reason).result,\r\n};\r\nconst client_message_packet = {\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_message_packet.code).write8(id).rest(payload).result,\r\n};\r\nconst client_turn_packet = {\r\n code: 0x02,\r\n read: reader => ({turn: reader.read32()}),\r\n write: ({turn}) => new buffer_writer(5).write8(client_turn_packet.code).write32(turn).result,\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_join_reject_packet.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 onMessage(server_join_accept_packet.write({cookie, index: 0, seed: this.seed, difficulty}));\r\n onMessage(server_connect_packet.write({id: 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\r\n onConnect(conn) {\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_info_packet.code:\r\n pkt = client_info_packet.read(reader);\r\n peer.version = pkt.version;\r\n break;\r\n case client_join_game_packet.code:\r\n pkt = client_join_game_packet.read(reader);\r\n if (peer.version !== this.version) {\r\n conn.send(server_join_reject_packet.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_VERSION_MISMATCH}));\r\n } else if (pkt.name !== this.name) {\r\n conn.send(server_join_reject_packet.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_GAME_NOT_FOUND}));\r\n } else if (pkt.password !== this.password) {\r\n conn.send(server_join_reject_packet.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_join_reject_packet.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_join_accept_packet.write({cookie: pkt.cookie, index: i, seed: this.seed, difficulty: this.difficulty}));\r\n this.send(0xFF, server_connect_packet.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 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_disconnect_packet.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_disconnect_packet.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_leave_game_packet.code:\r\n pkt = client_leave_game_packet.read(reader);\r\n this.drop(id, 3);\r\n break;\r\n case client_drop_player_packet.code:\r\n pkt = client_drop_player_packet.read(reader);\r\n this.drop(pkt.id, pkt.reason);\r\n break;\r\n case client_message_packet.code:\r\n pkt = client_message_packet.read(reader);\r\n this.send(pkt.id === 0xFF ? ~(1 << id) : (1 << pkt.id), server_message_packet.write({id, payload: pkt.payload}));\r\n break;\r\n case client_turn_packet.code:\r\n pkt = client_turn_packet.read(reader);\r\n this.send(~(1 << id), server_turn_packet.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 const unreg = () => {\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_join_reject_packet.write({cookie, reason: RejectionReason.JOIN_GAME_NOT_FOUND}));\r\n onClose();\r\n unreg();\r\n };\r\n const onOpen = () => {\r\n unreg();\r\n this.conn.send(client_info_packet.write({version}));\r\n this.conn.send(client_join_game_packet.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 };\r\n const timeout = setTimeout(onError, 5000);\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.conn.on('data', data => {\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_join_accept_packet.code:\r\n pkt = server_join_accept_packet.read(reader);\r\n this.myplr = pkt.index;\r\n break;\r\n case server_join_reject_packet.code:\r\n onClose();\r\n break;\r\n case server_disconnect_packet.code:\r\n pkt = server_disconnect_packet.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 return {\r\n send: function(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_info_packet.code:\r\n pkt = client_info_packet.read(reader);\r\n version = pkt.version;\r\n break;\r\n case client_create_game_packet.code:\r\n pkt = client_create_game_packet.read(reader);\r\n if (server || client) {\r\n onMessage(server_join_reject_packet.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_join_game_packet.code:\r\n pkt = client_join_game_packet.read(reader);\r\n if (server || client) {\r\n onMessage(server_join_reject_packet.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 (pkt === client_leave_game_packet.code) {\r\n server = null;\r\n }\r\n } else if (client) {\r\n client.send(packet);\r\n if (pkt === client_leave_game_packet.code) {\r\n client = null;\r\n }\r\n return;\r\n } else {\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\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\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.element.classList.add(\"keyboard\");\r\n Object.assign(this.keyboard.style, this.showKeyboard);\r\n this.keyboard.focus();\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 }\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 e.preventDefault();\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 (e.keyCode >= 32 && e.key.length === 1 && !this.showKeyboard) {\r\n this.game(\"DApi_Char\", e.key.charCodeAt(0));\r\n }\r\n this.clearKeySel();\r\n if (!this.showKeyboard) {\r\n if (e.keyCode === 8 || (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 onKeyboard = () => {\r\n if (this.showKeyboard) {\r\n const text = this.keyboard.value;\r\n const valid = (text.match(/[\\x20-\\x7E]/g) || []).join(\"\").substring(0, 15);\r\n if (text !== valid) {\r\n this.keyboard.value = valid;\r\n }\r\n this.clearKeySel();\r\n const values = [...Array(15)].map((_, i) => i < valid.length ? valid.charCodeAt(i) : 0);\r\n this.game(\"DApi_SyncText\", ...values);\r\n }\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 }\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 }\r\n e.preventDefault();\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.setTouchButton(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.6e1ff325.chunk.js b/static/js/main.6e1ff325.chunk.js new file mode 100644 index 0000000..dc53420 --- /dev/null +++ b/static/js/main.6e1ff325.chunk.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{11:function(e,t,n){"use strict";n.d(t,"a",function(){return m});var r=n(5),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 p=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 v(e,t,n){return w.apply(this,arguments)}function w(){return(w=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,p(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 m(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,p,w,m,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}(),j=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(K.write({cookie:o.cookie,reason:I.JOIN_GAME_FULL})):(t.players[s]=n,n.id=s,e.send(R.write({cookie:o.cookie,index:s,seed:t.seed,difficulty:t.difficulty})),t.send(255,U.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=B>>8&255,j=255&B;t.fillStyle="rgb(".concat(P,", ").concat(N,", ").concat(j,")"),t.fillText(S,A,L+22)}}catch(I){_=!0,C=I}finally{try{M||null==T.return||T.return()}finally{if(_)throw C}}t.restore()}}e.updateBelt(s)}function ne(){return(ne=Object(M.a)(x.a.mark(function e(t,n,r,o){var a,i,s;return x.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,L(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=ee(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.showKeyboard&&n.game("DApi_Char",e.key.charCodeAt(0)),n.clearKeySel(),n.showKeyboard||(8===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(){if(n.showKeyboard){var e,t=n.keyboard.value,r=(t.match(/[\x20-\x7E]/g)||[]).join("").substring(0,15);t!==r&&(n.keyboard.value=r),n.clearKeySel();var o=Object(u.a)(Array(15)).map(function(e,t){return t0&&n.start(t[0])},n.touchButton=null,n.touchCanvas=null,n.onTouchStart=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.touchMods[ae]||n.game("DApi_Mouse",1,n.touchMods[ie]?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[ie]||n.touchButton&&n.touchButton.index===ie||n.setTouchButton(ie,!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(p.a)(n),0),n.setTouch1=n.setTouch_.bind(Object(p.a)(n),1),n.setTouch2=n.setTouch_.bind(Object(p.a)(n),2),n.setTouch3=n.setTouchBelt_.bind(Object(p.a)(n),3),n.setTouch4=n.setTouchBelt_.bind(Object(p.a)(n),4),n.setTouch5=n.setTouchBelt_.bind(Object(p.a)(n),5),n}return Object(v.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&&A.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.element.classList.add("keyboard"),Object.assign(this.keyboard.style,this.showKeyboard),this.keyboard.focus()):(this.showKeyboard=!1,this.element.classList.remove("keyboard"),this.keyboard.blur(),this.keyboard.value="")}},{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}),re(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:"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(x){i=!0,s=x}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(),p=o.clientX,v=o.clientY;p>=f.left&&p=f.top&&vk)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:w,y:m}}else this.game("DApi_Mouse",0,0,24,320,180),this.game("DApi_Mouse",2,1,24,320,180),this.panPos={x:w,y:m};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,ref:this.setKeyboard,spellCheck:!1,style:this.showKeyboard||{}}))),o.a.createElement("div",{className:"BodyV"},!!a&&o.a.createElement(se,{className:"error",href:oe(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(se,{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(se,{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(ce,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.6e1ff325.chunk.js.map \ No newline at end of file diff --git a/static/js/main.6e1ff325.chunk.js.map b/static/js/main.6e1ff325.chunk.js.map new file mode 100644 index 0000000..ca082c6 --- /dev/null +++ b/static/js/main.6e1ff325.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_Work_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_Work_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_join_accept_packet","read","cookie","read32","index","seed","difficulty","write","write32","server_join_reject_packet","reason","server_connect_packet","_ref8","server_disconnect_packet","_ref9","server_message_packet","payload","rest","_ref10","server_turn_packet","turn","_ref11","client_info_packet","version","_ref12","client_create_game_packet","read_str","password","_ref13","write_str","client_join_game_packet","_ref14","client_leave_game_packet","client_drop_player_packet","_ref15","client_message_packet","_ref16","client_turn_packet","_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","unreg","clearTimeout","timeout","push","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","message","searchParams","split","map","line","join","userAgent","toString","ReactGA","initialize","pageview","TOUCH_MOVE","TOUCH_RMB","Link","children","props","objectWithoutProperties","react_default","assign","target","rel","App","possibleConstructorReturn","getPrototypeOf","started","loading","dropping","has_spawn","cursorPos","touchControls","touchButtons","touchCtx","touchMods","touchBelt","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","key","showKeyboard","clearKeySel","onMenu","onKeyUp","onKeyboard","valid","substring","values","_","parseFile","touchButton","touchCanvas","onTouchStart","updateTouchButton","touches","_this$mousePos4","onTouchMove","_this$mousePos5","onTouchEnd","prevTc","_this$mousePos6","setTouchButton","fullscreenElement","requestFullscreen","setCanvas","setElement","setKeyboard","setTouch0","setTouch_","bind","assertThisInitialized","setTouch1","setTouch2","setTouch3","setTouchBelt_","setTouch4","setTouch5","inc","_ref2","max","left","toFixed","top","width","add","focus","blur","_this4","getBoundingClientRect","right","bottom","progress","reload","idx","slot","drawImage","used","Set","has","drawBelt","_this5","removeEventListener","event","category","passive","capture","pointerLockElement","mozPointerLockElement","min","movementX","movementY","clientX","clientY","round","button","shiftKey","ctrlKey","altKey","len","setSelectionRange","use","toggle","now","performance","beltTime","release","_this6","touchOther","btn","_loop","identifier","stick","find","t","panPos","v","indexOf","original","_ret","setTouchMod","dx","dy","step","offsetHeight","abs","_this7","_this$state","className","classNames","touch","ref","active","onChange","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.6e1ff325.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__ + \"ad00e5df61d162015181.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.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\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_info_packet = {\r\n code: 0x32,\r\n read: reader => ({version: reader.read32()}),\r\n write: ({version}) => new buffer_writer(5).write8(server_info_packet.code).write32(version).result,\r\n};\r\nconst server_game_list_packet = {\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_game_list_packet.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\nconst server_join_accept_packet = {\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_join_accept_packet.code).write32(cookie).write8(index).write32(seed).write32(difficulty).result,\r\n};\r\nconst server_join_reject_packet = {\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_join_reject_packet.code).write32(cookie).write8(reason).result,\r\n};\r\nconst server_connect_packet = {\r\n code: 0x13,\r\n read: reader => ({id: reader.read8()}),\r\n write: ({id}) => new buffer_writer(2).write8(server_connect_packet.code).write8(id).result,\r\n};\r\nconst server_disconnect_packet = {\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_disconnect_packet.code).write8(id).write32(reason).result,\r\n};\r\nconst server_message_packet = {\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_message_packet.code).write8(id).rest(payload).result,\r\n};\r\nconst server_turn_packet = {\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_turn_packet.code).write8(id).write32(turn).result,\r\n};\r\n\r\nconst client_info_packet = {\r\n code: 0x31,\r\n read: reader => ({version: reader.read32()}),\r\n write: ({version}) => new buffer_writer(5).write8(client_info_packet.code).write32(version).result,\r\n};\r\nconst client_game_list_packet = {\r\n code: 0x21,\r\n read: () => ({}),\r\n write: () => new buffer_writer(1).write8(client_game_list_packet.code).result,\r\n};\r\nconst client_create_game_packet = {\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_create_game_packet.code).write32(cookie).write_str(name).write_str(password).write32(difficulty).result,\r\n};\r\nconst client_join_game_packet = {\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_join_game_packet.code).write32(cookie).write_str(name).write_str(password).result,\r\n};\r\nconst client_leave_game_packet = {\r\n code: 0x24,\r\n read: () => ({}),\r\n write: () => new buffer_writer(1).write8(client_leave_game_packet.code).result,\r\n};\r\nconst client_drop_player_packet = {\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_drop_player_packet.code).write8(id).write32(reason).result,\r\n};\r\nconst client_message_packet = {\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_message_packet.code).write8(id).rest(payload).result,\r\n};\r\nconst client_turn_packet = {\r\n code: 0x02,\r\n read: reader => ({turn: reader.read32()}),\r\n write: ({turn}) => new buffer_writer(5).write8(client_turn_packet.code).write32(turn).result,\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_join_reject_packet.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 onMessage(server_join_accept_packet.write({cookie, index: 0, seed: this.seed, difficulty}));\r\n onMessage(server_connect_packet.write({id: 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\r\n onConnect(conn) {\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_info_packet.code:\r\n pkt = client_info_packet.read(reader);\r\n peer.version = pkt.version;\r\n break;\r\n case client_join_game_packet.code:\r\n pkt = client_join_game_packet.read(reader);\r\n if (peer.version !== this.version) {\r\n conn.send(server_join_reject_packet.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_VERSION_MISMATCH}));\r\n } else if (pkt.name !== this.name) {\r\n conn.send(server_join_reject_packet.write({cookie: pkt.cookie, reason: RejectionReason.JOIN_GAME_NOT_FOUND}));\r\n } else if (pkt.password !== this.password) {\r\n conn.send(server_join_reject_packet.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_join_reject_packet.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_join_accept_packet.write({cookie: pkt.cookie, index: i, seed: this.seed, difficulty: this.difficulty}));\r\n this.send(0xFF, server_connect_packet.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 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_disconnect_packet.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_disconnect_packet.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_leave_game_packet.code:\r\n pkt = client_leave_game_packet.read(reader);\r\n this.drop(id, 3);\r\n break;\r\n case client_drop_player_packet.code:\r\n pkt = client_drop_player_packet.read(reader);\r\n this.drop(pkt.id, pkt.reason);\r\n break;\r\n case client_message_packet.code:\r\n pkt = client_message_packet.read(reader);\r\n this.send(pkt.id === 0xFF ? ~(1 << id) : (1 << pkt.id), server_message_packet.write({id, payload: pkt.payload}));\r\n break;\r\n case client_turn_packet.code:\r\n pkt = client_turn_packet.read(reader);\r\n this.send(~(1 << id), server_turn_packet.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 const unreg = () => {\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_join_reject_packet.write({cookie, reason: RejectionReason.JOIN_GAME_NOT_FOUND}));\r\n onClose();\r\n unreg();\r\n };\r\n const onOpen = () => {\r\n unreg();\r\n this.conn.send(client_info_packet.write({version}));\r\n this.conn.send(client_join_game_packet.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 };\r\n const timeout = setTimeout(onError, 5000);\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.conn.on('data', data => {\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_join_accept_packet.code:\r\n pkt = server_join_accept_packet.read(reader);\r\n this.myplr = pkt.index;\r\n break;\r\n case server_join_reject_packet.code:\r\n onClose();\r\n break;\r\n case server_disconnect_packet.code:\r\n pkt = server_disconnect_packet.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 return {\r\n send: function(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_info_packet.code:\r\n pkt = client_info_packet.read(reader);\r\n version = pkt.version;\r\n break;\r\n case client_create_game_packet.code:\r\n pkt = client_create_game_packet.read(reader);\r\n if (server || client) {\r\n onMessage(server_join_reject_packet.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_join_game_packet.code:\r\n pkt = client_join_game_packet.read(reader);\r\n if (server || client) {\r\n onMessage(server_join_reject_packet.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 (pkt === client_leave_game_packet.code) {\r\n server = null;\r\n }\r\n } else if (client) {\r\n client.send(packet);\r\n if (pkt === client_leave_game_packet.code) {\r\n client = null;\r\n }\r\n return;\r\n } else {\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\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\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.element.classList.add(\"keyboard\");\r\n Object.assign(this.keyboard.style, this.showKeyboard);\r\n this.keyboard.focus();\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 }\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 e.preventDefault();\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 (e.keyCode >= 32 && e.key.length === 1 && !this.showKeyboard) {\r\n this.game(\"DApi_Char\", e.key.charCodeAt(0));\r\n }\r\n this.clearKeySel();\r\n if (!this.showKeyboard) {\r\n if (e.keyCode === 8 || (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 onKeyboard = () => {\r\n if (this.showKeyboard) {\r\n const text = this.keyboard.value;\r\n const valid = (text.match(/[\\x20-\\x7E]/g) || []).join(\"\").substring(0, 15);\r\n if (text !== valid) {\r\n this.keyboard.value = valid;\r\n }\r\n this.clearKeySel();\r\n const values = [...Array(15)].map((_, i) => i < valid.length ? valid.charCodeAt(i) : 0);\r\n this.game(\"DApi_SyncText\", ...values);\r\n }\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 }\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 }\r\n e.preventDefault();\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.setTouchButton(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