!function(){"use strict";function e(e,n){return e(n={exports:{}},n.exports),n.exports}var n=e((function(e,n){var r=function(){var e={};function n(e){if("string"==typeof e)return e;var n=e.toString();return e.message&&(n=n+" "+e.message),e.fileName&&(n=n+" "+e.fileName),e.lineNumber&&(n=n+" line:"+e.lineNumber),e.name&&(n=n+" "+e.name),e.number&&(n=n+" "+e.number),n}function r(e){window.console&&console.log?console.log(e):window.opera&&opera.postError&&opera.postError(e)}function t(){if(ye&&ye.length){var e,n,t,s,a=[];for(e=0;e<ye.length;e++)(s=ye[e]).vmfunc.funcaddr?(n="0x"+s.vmfunc.funcaddr.toString(16),(t=ln.functionmap[s.vmfunc.funcaddr])&&(n=n+' "'+t.name+'"'),a.push(n)):a.push("(anonymous)");r("VM stack dump: "+a.join(", "))}}void 0===Math.imul&&(r("Polyfilling Math.imul()."),Math.imul=function(e,n){var r=65535&e,t=65535&n;return r*t+((e>>>16&65535)*t+r*(n>>>16&65535)<<16>>>0)|0});var s=Array(256),a=Array(256);function o(e,n){return 16777216*e[n]+65536*e[n+1]+256*e[n+2]+e[n+3]}function i(e,n){return 256
*e[n]+e[n+1]}function l(e,n){return e[n]}function f(e){return be[e]}function c(e){return 256*be[e]+be[e+1]}function u(e){return 16777216*be[e]+65536*be[e+1]+256*be[e+2]+be[e+3]}function d(e,n){return be.slice(e,e+n)}function h(e,n){be[e]=255&n}function p(e,n){be[e]=n>>8&255,be[e+1]=255&n}function m(e,n){be[e]=n>>24&255,be[e+1]=n>>16&255,be[e+2]=n>>8&255,be[e+3]=255&n}function g(e,n){for(var r=0;r<n.length;r++)e.push(n.charCodeAt(r))}function _(e,n){e.push(n>>24&255),e.push(n>>16&255),e.push(n>>8&255),e.push(255&n)}function v(e,n){e.push(n>>8&255),e.push(255&n)}function w(e,n){e.push(255&n)}function k(e,n,r){return String.fromCharCode.apply(this,e.slice(n,n+r))}function b(e){return be[e]>=128?"0xffffff"+s[be[e]]:"0x"+s[be[e]]}function y(e){return be[e]>=128?"0xffff"+s[be[e]]+s[be[e+1]]:be[e]?"0x"+s[be[e]]+s[be[e+1]]:"0x"+s[be[e+1]]}function x(e){return be[e]?"0x"+s[be[e]]+s[be[e+1]]+s[be[e+2]]+s[be[e+3]]:be[e+1]?"0x"+s[be[e+1]]+s[be[e+2]]+s[be[e+3]]:be[e+2]?"0x"+s[be[e+2]]+s[be[e+3]]:"0x"+s[be[e+3]]}function
M(e){return e<65536?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e)))}function z(e){return function(e){if(e<256)return a[e];if(e<65536){for(e=e.toString(16);e.length<4;)e="0"+e;return"\\u"+e}var n;return n=55296+((e-=65536)>>10),e=56320+(1023&e),"\\u"+n.toString(16)+"\\u"+e.toString(16)}(e.charCodeAt(0))}e.Mem1=f,e.Mem2=c,e.Mem4=u,e.MemSlice=d,e.MemW1=h,e.MemW2=p,e.MemW4=m;var S=/[^a-zA-Z0-9 .,;:?!=_+()-]/g;function C(e){return'"'+(e=e.replace(S,z))+'"'}function G(e){var n,t;if(arguments.length>1){for(e+=" (",n=1;n<arguments.length;n++)1!=n&&(e+=" "),e+=t="number"==typeof(t=arguments[n])?t.toString(16):""+t;e+=")"}throw r(e),new Error(e)}function N(e,n,r,t){return void 0===r?new Function("self",e):void 0===t?new Function("self",r,e):new Function("self",r,t,e)}function j(e,n,r,t){var s,a;e?(this.funcaddr=e,this.startpc=n,this.functype=f(e)):(this.funcaddr=null,this.startpc=null,this.functype=null),this.pathaddrs={},this[0]={},this[1]={},this[2]={},this.locallen=null,this.loca
lsformat=r,this.rawformat=t,this.localsindex=[];var o=0;for(s=0;s<this.localsformat.length;s++){var i=this.localsformat[s];if(4==i.size)for(;3&o;)o++;else if(2==i.size)for(;1&o;)o++;for(a=0;a<i.count;a++)this.localsindex.push({size:i.size,pos:o}),o+=i.size}for(;3&o;)o++;this.locallen=o}function F(e){var n;for(this.vmfunc=e,this.depth=null,this.framestart=null,this.framelen=null,this.valstack=[],this.localspos=null,this.localsindex=e.localsindex,this.locals=[],n=0;n<this.localsindex.length;n++){var r=this.localsindex[n];this.locals[r.pos]=0}this.framelen=8+e.rawformat.length+e.locallen}function L(e,n){_(n,e.framelen);var r=e.vmfunc.rawformat;_(n,8+r.length);for(var t=0;t<r.length;t++)n.push(r[t]);for(t=0;t<e.vmfunc.localsindex.length;t++){var s=e.vmfunc.localsindex[t];if(4==s.size){for(;3&n.length;)n.push(0);_(n,e.locals[s.pos])}else if(2==s.size){for(;1&n.length;)n.push(0);v(n,e.locals[s.pos])}else w(n,e.locals[s.pos])}for(;3&n.length;)n.push(0);for(t=0;t<e.valstack.length;t++)_(n,e.valstack[t])}function A(e
){var n=o(e,e.length-4);if(!(n<0||n>=e.length)){for(var t=o(e=e.splice(n,e.length),0),s=o(e,4),a=e.slice(8,s),f=[],c=8;;){var u=l(e,c),d=l(e,++c);if(c++,0==u)break;1!=u&&2!=u&&4!=u&&G("Invalid local variable size in function header.",u),f.push({size:u,count:d})}var h=new F(new j(null,null,f,a));h.framestart=n;for(var p=0;p<h.vmfunc.localsindex.length;p++){var m=h.vmfunc.localsindex[p];4==m.size?h.locals[m.pos]=o(e,s+m.pos):2==m.size?h.locals[m.pos]=i(e,s+m.pos):h.locals[m.pos]=l(e,s+m.pos)}for(var g=t;g<e.length;g+=4)h.valstack.push(o(e,g));return h}r("Bad frameptr in serialized stack frame")}function E(e,n){0==e&&G("Tried to create a VMTextEnv for address zero."),this.addr=e,this.cacheable=void 0!==n,this.decoding_tree=n,this.vmstring_tables=[],this.cacheable&&(this.vmstring_tables[0]={},this.vmstring_tables[1]={},this.vmstring_tables[2]={})}e.fatal_error=G;var W=null;function q(e,n,r){var t;switch(n.mode){case 8:if(4==n.argsize){if("0"===(s=r[0]))return e.offstack.push(r),void e.code.push("// push to offst
ack: "+r);if("_"===s)return function(e,n){e.offstack.push(n);var r=e.holduse[n];r&&!0!==r?r++:r=1;e.holduse[n]=r}(e,r),void e.code.push("// re-push to offstack: "+r)}return t=B(e,!0),e.offstack.push(t),void(4==n.argsize?e.code.push(t+"=("+r+");"):2==n.argsize?e.code.push(t+"=0xffff&("+r+");"):e.code.push(t+"=0xff&("+r+");"));case 0:return void e.code.push("("+r+");");case 11:if(4==n.argsize){var s;if("0"===(s=r[0]))return H(e,n.addr,r,!1),void e.code.push("// store to offloc["+n.addr+"]: "+r);if("_"===s)return H(e,n.addr,r,!0),void e.code.push("// re-store to offloc["+n.addr+"]: "+r)}return H(e,n.addr,void 0),void(4==n.argsize?e.code.push("self.frame.locals["+n.addr+"]=("+r+");"):2==n.argsize?e.code.push("self.frame.locals["+n.addr+"]=(0xffff &"+r+");"):e.code.push("self.frame.locals["+n.addr+"]=(0xff &"+r+");"));case 15:return void(4==n.argsize?e.code.push("self.MemW4("+n.addr+","+r+");"):2==n.argsize?e.code.push("self.MemW2("+n.addr+","+r+");"):e.code.push("self.MemW1("+n.addr+","+r+");"));default:G("Unkno
wn addressing mode in store func operand.")}}function T(e,n,r){void 0===r&&(r=e.cp),e.code.push("self.frame.valstack.push("+n+","+r+",self.frame.framestart);")}function V(e){e.code.push("if (!substring) { substring=true;"),e.code.push("self.frame.valstack.push(0x11,0,nextcp,self.frame.framestart);"),e.code.push("}")}function D(e,n){var r;if(e.code.push("// unload offstate: "+e.offstack.length+" stack"+(e.offloc.length?", plus locs":"")+(n?" (conditional)":"")),e.offstack.length&&e.code.push("self.frame.valstack.push("+e.offstack.join(",")+");"),e.offloc.length)for(r=0;r<e.offloc.length;r++)void 0!==e.offloc[r]&&e.offlocdirty[r]&&e.code.push("self.frame.locals["+r+"]="+e.offloc[r]+";");if(!n){var t;for(r=0;r<e.offloc.length;r++)void 0!==(t=e.offloc[r])&&void 0!==e.holduse[t]&&(e.holduse[t]=!1);for(e.offloc.length=0,e.offlocdirty.length=0;e.offstack.length;)t=e.offstack.pop(),void 0!==e.holduse[t]&&(e.holduse[t]=!1)}}function I(e){if(0!=e.buffer.length){var n=e.buffer.join("");e.buffer.length=0,e.code.push("Gl
k.glk_put_jstring("+C(n)+");")}}function R(e,n,r){var t;if(Z(n))return 2147483648&(t=Number(n))?""+(t-4294967296):n;if(t="("+n+"&0xffffffff)",r){var s=B(e);return e.code.push(s+"="+t+";"),s}return t}function O(e,n,r){var t;if(Z(n))return 2147483648==(t=Number(n))?"-0":""+we(t);if(t="self.decode_float("+n+")",r){var s=B(e);return e.code.push(s+"="+t+";"),s}return t}function U(e,n,r){if(Z(n)){var t=Number(n);if(0==t||1==t)r?(e.code.push("// quashing offstack for unconditional return: "+e.offstack.length),e.offstack.length=0,e.offloc.length=0,e.offlocdirty.length=0):e.code.push("// ignoring offstack for conditional return: "+e.offstack.length),e.code.push("if (self.leave_function()) return self.VMStopped;"),e.code.push("self.pop_callstub("+t+");");else{D(e,!r);var s=e.cp+t-2>>>0;e.code.push("self.pc = "+s+";"),e.vmfunc.pathaddrs[s]=!0}}else D(e,!r),e.code.push("if (("+n+")==0 || ("+n+")==1) {"),e.code.push("if (self.leave_function()) return self.VMStopped;"),e.code.push("self.pop_callstub("+n+");"),e.code.push(
"}"),e.code.push("else {"),e.code.push("self.pc = ("+e.cp+"+("+n+")-2) >>>0;"),e.code.push("}");e.code.push("return;")}e.funcop_cache={};var P={0:function(e,n){},16:function(e,n){e.code.push(n[2]+"(("+n[0]+")+("+n[1]+")) >>>0);")},17:function(e,n){e.code.push(n[2]+"(("+n[0]+")-("+n[1]+")) >>>0);")},18:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push(n[2]+"(Math.imul(("+r+"),("+t+"))) >>>0);")},19:function(e,n){var r=R(e,n[0]),t=R(e,n[1]),s=B(e);e.code.push(s+"=(("+r+")/("+t+"));"),e.code.push("if (!isFinite("+s+")) self.fatal_error('Division by zero.');"),e.code.push(n[2]+"("+s+">=0)?Math.floor("+s+"):(-Math.floor(-"+s+") >>>0));")},20:function(e,n){var r=R(e,n[0]),t=R(e,n[1]),s=B(e);e.code.push(s+"=(("+r+")%("+t+"));"),e.code.push("if (!isFinite("+s+")) self.fatal_error('Modulo division by zero.');"),e.code.push(n[2]+s+" >>>0);")},21:function(e,n){e.code.push(n[1]+"(-("+n[0]+")) >>>0);")},24:function(e,n){e.code.push(n[2]+"(("+n[0]+")&("+n[1]+")) >>>0);")},25:function(e,n){e.code.push(n[2]+"(("+n[0]+")
|("+n[1]+")) >>>0);")},26:function(e,n){e.code.push(n[2]+"(("+n[0]+")^("+n[1]+")) >>>0);")},27:function(e,n){e.code.push(n[1]+"(~("+n[0]+")) >>>0);")},28:function(e,n){if(Z(n[1])){var r=Number(n[1]);r<32?e.code.push(n[2]+"(("+n[0]+")<<"+r+") >>>0);"):e.code.push(n[2]+"0);")}else e.code.push(n[2]+"("+n[1]+"<32) ? (("+n[0]+"<<"+n[1]+") >>>0) : 0);")},29:function(e,n){if(Z(n[1])){var r=Number(n[1]);r<32?e.code.push(n[2]+"(("+n[0]+")>>"+r+") >>>0);"):e.code.push(n[2]+"(("+n[0]+")&0x80000000) ? 0xffffffff : 0);")}else e.code.push("if ("+n[0]+" & 0x80000000) {"),e.code.push(n[2]+"("+n[1]+"<32) ? (("+n[0]+">>"+n[1]+") >>>0) : 0xffffffff);"),e.code.push("} else {"),e.code.push(n[2]+"("+n[1]+"<32) ? (("+n[0]+">>"+n[1]+") >>>0) : 0);"),e.code.push("}")},30:function(e,n){if(Z(n[1])){var r=Number(n[1]);r<32?e.code.push(n[2]+"("+n[0]+")>>>"+r+");"):e.code.push(n[2]+"0);")}else e.code.push(n[2]+"("+n[1]+"<32) ? ("+n[0]+">>>"+n[1]+") : 0);")},32:function(e,n){U(e,n[0],!0),e.path_ends=!0},260:function(e,n){if(Z(n[0])){var r
=Number(n[0]);e.code.push("self.pc = "+r+";"),e.vmfunc.pathaddrs[r]=!0}else e.code.push("self.pc = "+n[0]+";");D(e),e.code.push("return;"),e.path_ends=!0},34:function(e,n){e.code.push("if (("+n[0]+")==0) {"),U(e,n[1]),e.code.push("}")},35:function(e,n){e.code.push("if (("+n[0]+")!=0) {"),U(e,n[1]),e.code.push("}")},36:function(e,n){e.code.push("if (("+n[0]+")==("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},37:function(e,n){e.code.push("if (("+n[0]+")!=("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},38:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push("if (("+r+")<("+t+")) {"),U(e,n[2]),e.code.push("}")},39:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push("if (("+r+")>=("+t+")) {"),U(e,n[2]),e.code.push("}")},40:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push("if (("+r+")>("+t+")) {"),U(e,n[2]),e.code.push("}")},41:function(e,n){var r=R(e,n[0]),t=R(e,n[1]);e.code.push("if (("+r+")<=("+t+")) {"),U(e,n[2]),e.code.push("}")},42:function(e,n){e.code.push("if (("+n[0]+")<("+n[1]+")) {"),U(e,n[2]),e.code.pu
sh("}")},43:function(e,n){e.code.push("if (("+n[0]+")>=("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},44:function(e,n){e.code.push("if (("+n[0]+")>("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},45:function(e,n){e.code.push("if (("+n[0]+")<=("+n[1]+")) {"),U(e,n[2]),e.code.push("}")},48:function(e,n){if(Z(n[1])){var r,t=Number(n[1]);for(r=0;r<t;r++)if(e.offstack.length){var s=Q(e);e.code.push("self.tempcallargs["+r+"]="+s+";")}else e.code.push("self.tempcallargs["+r+"]=self.frame.valstack.pop();");D(e)}else e.varsused.ix=!0,D(e),e.code.push("for (ix=0; ix<"+n[1]+"; ix++) { self.tempcallargs[ix]=self.frame.valstack.pop(); }");T(e,n[2]),e.code.push("self.enter_function("+n[0]+", "+n[1]+");"),e.code.push("return;"),e.path_ends=!0},52:function(e,n){if(Z(n[1])){var r,t=Number(n[1]);for(r=0;r<t;r++)if(e.offstack.length){var s=Q(e);e.code.push("self.tempcallargs["+r+"]="+s+";")}else e.code.push("self.tempcallargs["+r+"]=self.frame.valstack.pop();");D(e)}else e.varsused.ix=!0,D(e),e.code.push("for (ix=0; ix<"+n[1]+"; ix++)
{ self.tempcallargs[ix]=self.frame.valstack.pop(); }");e.code.push("if (self.leave_function()) return self.VMStopped;"),e.code.push("self.enter_function("+n[0]+", "+n[1]+");"),e.code.push("return;"),e.path_ends=!0},352:function(e,n){D(e),T(e,n[1]),e.code.push("self.enter_function("+n[0]+", 0);"),e.code.push("return;"),e.path_ends=!0},353:function(e,n){D(e),e.code.push("self.tempcallargs[0]=("+n[1]+");"),T(e,n[2]),e.code.push("self.enter_function("+n[0]+", 1);"),e.code.push("return;"),e.path_ends=!0},354:function(e,n){D(e),e.code.push("self.tempcallargs[0]=("+n[1]+");"),e.code.push("self.tempcallargs[1]=("+n[2]+");"),T(e,n[3]),e.code.push("self.enter_function("+n[0]+", 2);"),e.code.push("return;"),e.path_ends=!0},355:function(e,n){D(e),e.code.push("self.tempcallargs[0]=("+n[1]+");"),e.code.push("self.tempcallargs[1]=("+n[2]+");"),e.code.push("self.tempcallargs[2]=("+n[3]+");"),T(e,n[4]),e.code.push("self.enter_function("+n[0]+", 3);"),e.code.push("return;"),e.path_ends=!0},49:function(e,n){e.code.push("// qu
ashing offstack for return: "+e.offstack.length),e.offstack.length=0,e.offloc.length=0,e.offlocdirty.length=0,e.code.push("if (self.leave_function()) return self.VMStopped;"),e.code.push("self.pop_callstub("+n[0]+");"),e.code.push("return;"),e.path_ends=!0},50:function(e,n){D(e),T(e,n[0]),e.code.push("self.store_operand("+n[0]+",self.frame.framestart+self.frame.framelen+4*self.frame.valstack.length);"),U(e,n[1],!0),e.path_ends=!0},51:function(e,n){e.code.push("// quashing offstack for throw: "+e.offstack.length),e.offstack.length=0,e.offloc.length=0,e.offlocdirty.length=0,e.code.push("self.pop_stack_to("+n[1]+");"),e.code.push("self.pop_callstub("+n[0]+");"),e.code.push("return;"),e.path_ends=!0},64:function(e,n){q(e,n[1],n[0])},65:function(e,n){q(e,n[1],n[0])},66:function(e,n){q(e,n[1],n[0])},68:function(e,n){var r;Z(n[0])?(r=32768&(r=Number(n[0]))?(4294901760|r)>>>0:65535&r,e.code.push(n[1]+r+");")):e.code.push(n[1]+"("+n[0]+" & 0x8000) ? (("+n[0]+" | 0xffff0000) >>> 0) : ("+n[0]+" & 0xffff));")},69:functi
on(e,n){var r;Z(n[0])?(r=128&(r=Number(n[0]))?(4294967040|r)>>>0:255&r,e.code.push(n[1]+r+");")):e.code.push(n[1]+"("+n[0]+" & 0x80) ? (("+n[0]+" | 0xffffff00) >>> 0) : ("+n[0]+" & 0xff));")},72:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?"self.Mem4("+((t=Number(n[0])+4*Number(n[1]))>>>0)+")":(t=4*Number(n[1]))?"self.Mem4(("+n[0]+"+"+t+") >>>0)":"self.Mem4("+n[0]+")":r="self.Mem4(("+n[0]+"+4*"+n[1]+") >>>0)";e.code.push(n[2]+r+");")},73:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?"self.Mem2("+((t=Number(n[0])+2*Number(n[1]))>>>0)+")":(t=2*Number(n[1]))?"self.Mem2(("+n[0]+"+"+t+") >>>0)":"self.Mem2("+n[0]+")":r="self.Mem2(("+n[0]+"+2*"+n[1]+") >>>0)";e.code.push(n[2]+r+");")},74:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?"self.Mem1("+((t=Number(n[0])+Number(n[1]))>>>0)+")":(t=Number(n[1]))?"self.Mem1(("+n[0]+"+"+t+") >>>0)":"self.Mem1("+n[0]+")":r="self.Mem1(("+n[0]+"+"+n[1]+") >>>0)";e.code.push(n[2]+r+");")},76:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?((t=Number(n[0])+4*Number(n[1]))>>>0)+",":(t=4*Number(n[1]))?"("+n[0
]+"+"+t+") >>>0,":n[0]+",":r="("+n[0]+"+4*"+n[1]+") >>>0,";e.code.push("self.MemW4("+r+n[2]+");")},77:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?((t=Number(n[0])+2*Number(n[1]))>>>0)+",":(t=2*Number(n[1]))?"("+n[0]+"+"+t+") >>>0,":n[0]+",":r="("+n[0]+"+2*"+n[1]+") >>>0,";e.code.push("self.MemW2("+r+n[2]+");")},78:function(e,n){var r,t;Z(n[1])?r=Z(n[0])?((t=Number(n[0])+Number(n[1]))>>>0)+",":(t=Number(n[1]))?"("+n[0]+"+"+t+") >>>0,":n[0]+",":r="("+n[0]+"+"+n[1]+") >>>0,";e.code.push("self.MemW1("+r+n[2]+");")},75:function(e,n){if(Z(n[1])){var r,t,s;r=7&(s=4294967295&Number(n[1])),Z(n[0])?(t=Number(n[0]),s>=0?t+=s>>3:t-=1+(-1-s>>3)):t=s>=0?s<=7?n[0]:n[0]+"+"+(s>>3):n[0]+"-"+(1+(-1-s>>3)),e.code.push(n[2]+"(self.Mem1("+t+") & "+(1<<r)+")?1:0);")}else{e.varsused.bitx=!0,e.varsused.addrx=!0;var a=R(e,n[1],!0);e.code.push("bitx = "+a+"&7;"),e.code.push("if ("+a+">=0) addrx = "+n[0]+" + ("+a+">>3);"),e.code.push("else addrx = "+n[0]+" - (1+((-1-("+a+"))>>3));"),e.code.push(n[2]+"(self.Mem1(addrx) & (1<<bitx))?1:0);")
}},79:function(e,n){var r,t,s,a;if(Z(n[1]))r=7&(a=4294967295&Number(n[1])),Z(n[0])?(t=Number(n[0]),a>=0?t+=a>>3:t-=1+(-1-a>>3)):t=a>=0?a<=7?n[0]:n[0]+"+"+(a>>3):n[0]+"-"+(1+(-1-a>>3)),s=1<<r;else{e.varsused.bitx=!0,e.varsused.addrx=!0;var o=R(e,n[1],!0);e.code.push("bitx = "+o+"&7;"),e.code.push("if ("+o+">=0) addrx = "+n[0]+" + ("+o+">>3);"),e.code.push("else addrx = "+n[0]+" - (1+((-1-("+o+"))>>3));"),t="addrx",s="(1<<bitx)"}Z(n[2])?Number(n[2])?e.code.push("self.MemW1("+t+", self.Mem1("+t+") | "+s+");"):e.code.push("self.MemW1("+t+", self.Mem1("+t+") & ~("+s+"));"):(e.code.push("if ("+n[2]+") self.MemW1("+t+", self.Mem1("+t+") | "+s+");"),e.code.push("else self.MemW1("+t+", self.Mem1("+t+") & ~("+s+"));"))},80:function(e,n){var r,t=e.offstack.length;r=t?"self.frame.valstack.length+"+t:"self.frame.valstack.length",q(e,n[0],r)},81:function(e,n){var r;if(Z(n[0])){var t=Number(n[0]);r=t<e.offstack.length?e.offstack[e.offstack.length-(t+1)]:"self.frame.valstack[self.frame.valstack.length-"+(t+1-e.offstack.leng
th)+"]"}else D(e),r="self.frame.valstack[self.frame.valstack.length-("+n[0]+"+1)]";q(e,n[1],r)},82:function(e,n){var r,t;e.offstack.length<2&&function(e,n){var r;for(;e.offstack.length<n;)r=B(e,!0),e.offstack.unshift(r),e.code.push(r+"=self.frame.valstack.pop();")}(e,2),t=e.offstack.length,r=e.offstack[t-1],e.offstack[t-1]=e.offstack[t-2],e.offstack[t-2]=r},83:function(e,n){D(e),e.varsused.ix=!0,e.varsused.pos=!0,e.varsused.roll=!0,e.varsused.vals1=!0;var r=R(e,n[0],!0),t=R(e,n[1],!0);e.code.push("if ("+r+" > 0) {"),e.code.push("if ("+t+" > 0) {"),e.code.push("vals1 = "+t+" % "+r+";"),e.code.push("} else {"),e.code.push("vals1 = "+r+" - (-("+t+")) % "+r+";"),e.code.push("}"),e.code.push("if (vals1) {"),e.code.push("pos = self.frame.valstack.length - "+r+";"),e.code.push("roll = self.frame.valstack.slice(self.frame.valstack.length-vals1, self.frame.valstack.length).concat(self.frame.valstack.slice(pos, self.frame.valstack.length-vals1));"),e.code.push("for (ix=0; ix<"+r+"; ix++) { self.frame.valstack[pos+ix]
= roll[ix]; }"),e.code.push("roll = undefined;"),e.code.push("}"),e.code.push("}")},84:function(e,n){if(D(e),Z(n[0])){var r,t,s=Number(n[0]);for(r=0;r<s;r++)t=B(e,!0),e.offstack.push(t),e.code.push(t+"=self.frame.valstack[self.frame.valstack.length-"+(s-r)+"];")}else e.varsused.ix=!0,e.varsused.jx=!0,e.code.push("jx = self.frame.valstack.length-("+n[0]+");"),e.code.push("for (ix=0; ix<"+n[0]+"; ix++) { self.frame.valstack.push(self.frame.valstack[jx+ix]); }")},256:function(e,n){var r="self.do_gestalt(("+n[0]+"),("+n[1]+"))";e.code.push(n[2]+r+");")},257:function(e,n){e.code.push("self.fatal_error('User debugtrap encountered.', "+n[0]+");")},258:function(e,n){e.code.push(n[0]+"self.endmem);")},259:function(e,n){e.code.push("self.change_memsize("+n[0]+",false);"),e.code.push(n[1]+"0);")},272:function(e,n){var r;if(Z(n[0])){var t=4294967295&Number(n[0]);r=0==t?"(Math.floor(self.random_func() * 0x10000) | (Math.floor(self.random_func() * 0x10000) << 16)) >>>0":t>0?"Math.floor(self.random_func() * "+t+")":"-Math.
floor(self.random_func() * "+-t+")"}else{var s=R(e,n[0],!0),a=B(e);r=a,e.code.push("if ("+s+" > 0)"),e.code.push(a+" = Math.floor(self.random_func() * "+s+");"),e.code.push("else if ("+s+" < 0)"),e.code.push(a+" = -Math.floor(self.random_func() * -"+s+");"),e.code.push("else"),e.code.push(a+" = (Math.floor(self.random_func() * 0x10000) | (Math.floor(self.random_func() * 0x10000) << 16)) >>>0;")}e.code.push(n[1]+r+");")},273:function(e,n){e.code.push("self.set_random("+n[0]+");")},288:function(e,n){e.code.push("// quashing offstack for quit: "+e.offstack.length),e.offstack.length=0,e.offloc.length=0,e.offlocdirty.length=0,e.code.push("return self.VMStopped;"),e.path_ends=!0},289:function(e,n){e.code.push(n[0]+"self.perform_verify());")},290:function(e,n){e.code.push("// quashing offstack for quit: "+e.offstack.length),e.offstack.length=0,e.offloc.length=0,e.offlocdirty.length=0,e.code.push("self.vm_restart();"),e.code.push("return;"),e.path_ends=!0},291:function(e,n){D(e),e.varsused.ix=!0,T(e,n[1]),e.code.pus
h("ix = self.vm_save("+n[0]+");"),e.code.push("self.pop_callstub(ix ? 0 : 1);"),e.code.push("return;"),e.path_ends=!0},292:function(e,n){D(e),e.code.push("if (self.vm_restore("+n[0]+")) {"),e.code.push("self.pop_callstub((-1)>>>0);"),e.code.push("} else {"),q(e,n[1],"1"),D(e),e.code.push("self.pc = "+e.cp+";"),e.code.push("}"),e.code.push("return;"),e.path_ends=!0},293:function(e,n){D(e),T(e,n[0]),e.code.push("self.vm_saveundo();"),e.code.push("self.pop_callstub(0);"),e.code.push("return;"),e.path_ends=!0},294:function(e,n){D(e),e.code.push("if (self.vm_restoreundo()) {"),e.code.push("self.pop_callstub((-1)>>>0);"),e.code.push("} else {"),q(e,n[0],"1"),D(e),e.code.push("self.pc = "+e.cp+";"),e.code.push("}"),e.code.push("return;"),e.path_ends=!0},295:function(e,n){e.code.push("self.protectstart="+n[0]+";"),e.code.push("self.protectend=self.protectstart+("+n[1]+");"),e.code.push("if (self.protectstart==self.protectend) {"),e.code.push("  self.protectstart=0; self.protectend=0;"),e.code.push("}")},368:function
(e,n){e.varsused.maddr=!0,e.varsused.mlen=!0,e.varsused.ix=!0,e.code.push("mlen="+n[0]+";"),e.code.push("maddr="+n[1]+";"),e.code.push("for (ix=0; ix<mlen; ix++, maddr++) self.MemW1(maddr, 0);")},369:function(e,n){e.varsused.msrc=!0,e.varsused.mdest=!0,e.varsused.mlen=!0,e.varsused.ix=!0,e.code.push("mlen="+n[0]+";"),e.code.push("msrc="+n[1]+";"),e.code.push("mdest="+n[2]+";"),e.code.push("if (mdest < msrc) {"),e.code.push("for (ix=0; ix<mlen; ix++, msrc++, mdest++) self.MemW1(mdest, self.Mem1(msrc));"),e.code.push("} else {"),e.code.push("msrc += (mlen-1); mdest += (mlen-1);"),e.code.push("for (ix=0; ix<mlen; ix++, msrc--, mdest--) self.MemW1(mdest, self.Mem1(msrc));"),e.code.push("}")},376:function(e,n){var r="self.heap_malloc("+n[0]+")";e.code.push(n[1]+r+");"),e.code.push("self.assert_heap_valid();")},377:function(e,n){e.code.push("self.heap_free("+n[0]+");"),e.code.push("self.assert_heap_valid();")},384:function(e,n){e.code.push("self.accel_funcnum_map["+n[1]+"] = "+n[0]+";"),e.code.push("self.accel_add
ress_map["+n[1]+"] = self.accel_func_map["+n[0]+"];")},385:function(e,n){e.code.push("if ("+n[0]+" < 9) {"),e.code.push("  self.accel_params["+n[0]+"] = "+n[1]+";"),e.code.push("}")},336:function(e,n){var r="self.linear_search(("+n[0]+"),("+n[1]+"),("+n[2]+"),("+n[3]+"),("+n[4]+"),("+n[5]+"),("+n[6]+"))";e.code.push(n[7]+r+");")},337:function(e,n){var r="self.binary_search(("+n[0]+"),("+n[1]+"),("+n[2]+"),("+n[3]+"),("+n[4]+"),("+n[5]+"),("+n[6]+"))";e.code.push(n[7]+r+");")},338:function(e,n){var r="self.linked_search(("+n[0]+"),("+n[1]+"),("+n[2]+"),("+n[3]+"),("+n[4]+"),("+n[5]+"))";e.code.push(n[6]+r+");")},112:function(e,n){switch(e.curiosys){case 2:if(Z(n[0])){var r=255&Number(n[0]);e.code.push("Glk.glk_put_char("+r+");")}else e.code.push("Glk.glk_put_char(("+n[0]+")&0xff);");break;case 1:D(e),e.code.push("self.tempcallargs[0]=(("+n[0]+")&0xff);"),T(e,"0,0"),e.code.push("self.enter_function(self.iosysrock, 1);"),e.code.push("return;"),e.path_ends=!0;break;case 0:e.code.push("// null streamchar "+n[0])}
},113:function(e,n){switch(e.curiosys){case 2:var r=R(e,n[0]);if(Z(n[0])){var t=Number(r).toString(10);e.code.push("Glk.glk_put_jstring("+C(t)+", true);")}else e.code.push("Glk.glk_put_jstring(("+r+").toString(10), true);");break;case 1:D(e),e.code.push("self.stream_num("+e.cp+","+n[0]+", false, 0);"),e.code.push("return;"),e.path_ends=!0;break;case 0:e.code.push("// null streamnum "+n[0])}},114:function(e,n){D(e),e.code.push("if (self.stream_string("+e.cp+","+n[0]+", 0, 0)) return;")},115:function(e,n){switch(e.curiosys){case 2:if(Z(n[0])){var r=Number(n[0]);e.code.push("Glk.glk_put_char_uni("+r+");")}else e.code.push("Glk.glk_put_char_uni("+n[0]+");");break;case 1:D(e),e.code.push("self.tempcallargs[0]=("+n[0]+");"),T(e,"0,0"),e.code.push("self.enter_function(self.iosysrock, 1);"),e.code.push("return;"),e.path_ends=!0;break;case 0:e.code.push("// null streamchar "+n[0])}},320:function(e,n){e.code.push(n[0]+"self.stringtable)")},321:function(e,n){e.code.push("self.set_string_table("+n[0]+");")},328:function
(e,n){e.code.push(n[0]+"self.iosysmode)"),e.code.push(n[1]+"self.iosysrock)")},329:function(e,n){if(e.code.push("self.set_iosys("+n[0]+","+n[1]+");"),Z(n[0])){var r=Number(n[0]);e.curiosys=r}else D(e),e.code.push("self.pc = "+e.cp+";"),e.code.push("return;"),e.path_ends=!0},400:function(e,n){var r=R(e,n[0]);if(Z(n[0])){var t=Number(r);e.code.push(n[1]+ke(t)+");")}else e.code.push(n[1]+"self.encode_float("+r+"));")},401:function(e,n){e.varsused.valf=!0,e.varsused.res=!0,e.code.push("valf = "+O(e,n[0])+";"),e.code.push("if (!("+n[0]+" & 0x80000000)) {"),e.code.push("  if (isNaN(valf) || !isFinite(valf) || (valf > 0x7fffffff))"),e.code.push("    res = 0x7fffffff;"),e.code.push("  else"),e.code.push("    res = Math.floor(valf);"),e.code.push("} else {"),e.code.push("  if (isNaN(valf) || !isFinite(valf) || (valf < -0x80000000))"),e.code.push("    res = -0x80000000;"),e.code.push("  else"),e.code.push("    res = Math.ceil(valf);"),e.code.push("}"),e.code.push(n[1]+"res>>>0);")},402:function(e,n){e.varsused.valf=!0
,e.varsused.res=!0,e.code.push("valf = "+O(e,n[0])+";"),e.code.push("if (!("+n[0]+" & 0x80000000)) {"),e.code.push("  if (isNaN(valf) || !isFinite(valf))"),e.code.push("    res = 0x7fffffff;"),e.code.push("  else"),e.code.push("    res = Math.round(valf);"),e.code.push("  if (res > 0x7fffffff) res = 0x7fffffff;"),e.code.push("} else {"),e.code.push("  if (isNaN(valf) || !isFinite(valf))"),e.code.push("    res = -0x80000000;"),e.code.push("  else"),e.code.push("    res = Math.round(valf);"),e.code.push("  if (res < -0x80000000) res = -0x80000000;"),e.code.push("}"),e.code.push(n[1]+"res>>>0);")},408:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.ceil("+r+")));")},409:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.floor("+r+")));")},416:function(e,n){var r=O(e,n[0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float("+r+" + "+t+"));")},417:function(e,n){var r=O(e,n[0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float("+r+" - "+t+"));")},418:function(e,n){var r=O(e,n[
0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float("+r+" * "+t+"));")},419:function(e,n){var r=O(e,n[0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float("+r+" / "+t+"));")},420:function(e,n){var r=O(e,n[0],!0),t=O(e,n[1],!0);e.varsused.modv=!0,e.varsused.quov=!0,e.code.push("modv=("+r+" % "+t+");"),e.code.push("quov=self.encode_float(("+r+" - modv) / "+t+");"),e.code.push("if (quov == 0x0 || quov == 0x80000000) {"),e.code.push("  quov = (("+n[0]+" ^ "+n[1]+") & 0x80000000) >>>0;"),e.code.push("}"),e.code.push(n[2]+"self.encode_float(modv));"),e.code.push(n[3]+"quov);")},424:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.sqrt("+r+")));")},425:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.exp("+r+")));")},426:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.log("+r+")));")},427:function(e,n){e.varsused.valf=!0;var r=O(e,n[0],!0),t=O(e,n[1],!0);e.code.push("if ("+n[0]+" == 0x3f800000) {"),e.code.push("  valf = 0x3f800000;"),e.code.push("} e
lse if ("+n[0]+" == 0xbf800000 && ("+n[1]+" == 0xff800000 || "+n[1]+" == 0x7f800000)) {"),e.code.push("  valf = 0x3f800000;"),e.code.push("} else {"),e.code.push("  valf=self.encode_float(Math.pow("+r+", "+t+"));"),e.code.push("}"),e.code.push(n[2]+"valf);")},432:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.sin("+r+")));")},433:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.cos("+r+")));")},434:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.tan("+r+")));")},435:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.asin("+r+")));")},436:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.acos("+r+")));")},437:function(e,n){var r=O(e,n[0]);e.code.push(n[1]+"self.encode_float(Math.atan("+r+")));")},438:function(e,n){var r=O(e,n[0]),t=O(e,n[1]);e.code.push(n[2]+"self.encode_float(Math.atan2("+r+", "+t+")));")},448:function(e,n){var r,t,s,a;e.varsused.fequal=!0,e.varsused.fdiff=!0,e.code.push("if (("+n[2]
+" & 0x7f800000) == 0x7f800000 && ("+n[2]+" & 0x007fffff) != 0) {"),e.code.push("  fequal = 0;"),e.code.push("} else if (("+n[0]+" == 0xff800000 || "+n[0]+" == 0x7f800000) && ("+n[1]+" == 0xff800000 || "+n[1]+" == 0x7f800000)) {"),e.code.push("  fequal = ("+n[0]+" == "+n[1]+");"),e.code.push("} else {"),Z(n[2])?a=""+we(2147483647&(r=Number(n[2]))):(r="self.decode_float(("+n[2]+") & 0x7fffffff)",a=B(e),e.code.push(a+"="+r+";")),t=O(e,n[0]),s=O(e,n[1]),e.code.push("  fdiff = "+s+" - "+t+";"),e.code.push("  fequal = (fdiff <= "+a+" && fdiff >= -("+a+"));"),e.code.push("}"),e.code.push("if (fequal) {"),U(e,n[3]),e.code.push("}")},449:function(e,n){var r,t,s,a;e.varsused.fequal=!0,e.varsused.fdiff=!0,e.code.push("if (("+n[2]+" & 0x7f800000) == 0x7f800000 && ("+n[2]+" & 0x007fffff) != 0) {"),e.code.push("  fequal = 0;"),e.code.push("} else if (("+n[0]+" == 0xff800000 || "+n[0]+" == 0x7f800000) && ("+n[1]+" == 0xff800000 || "+n[1]+" == 0x7f800000)) {"),e.code.push("  fequal = ("+n[0]+" == "+n[1]+");"),e.code.push("
} else {"),Z(n[2])?a=""+we(2147483647&(r=Number(n[2]))):(r="self.decode_float(("+n[2]+") & 0x7fffffff)",a=B(e),e.code.push(a+"="+r+";")),t=O(e,n[0]),s=O(e,n[1]),e.code.push("  fdiff = "+s+" - "+t+";"),e.code.push("  fequal = (fdiff <= "+a+" && fdiff >= -("+a+"));"),e.code.push("}"),e.code.push("if (!fequal) {"),U(e,n[3]),e.code.push("}")},450:function(e,n){var r,t;r=O(e,n[0]),t=O(e,n[1]),e.code.push("if ("+r+" < "+t+") {"),U(e,n[2]),e.code.push("}")},451:function(e,n){var r,t;r=O(e,n[0]),t=O(e,n[1]),e.code.push("if ("+r+" <= "+t+") {"),U(e,n[2]),e.code.push("}")},452:function(e,n){var r,t;r=O(e,n[0]),t=O(e,n[1]),e.code.push("if ("+r+" > "+t+") {"),U(e,n[2]),e.code.push("}")},453:function(e,n){var r,t;r=O(e,n[0]),t=O(e,n[1]),e.code.push("if ("+r+" >= "+t+") {"),U(e,n[2]),e.code.push("}")},456:function(e,n){e.code.push("if (("+n[0]+" & 0x7f800000) == 0x7f800000 && ("+n[0]+" & 0x007fffff) != 0) {"),U(e,n[1]),e.code.push("}")},457:function(e,n){e.code.push("if ("+n[0]+" == 0xff800000 || "+n[0]+" == 0x7f800000) {
"),U(e,n[1]),e.code.push("}")},304:function(n,r){var t;if((t=!Z(r[0])||Glk.call_may_not_return(Number(r[0])))&&(n.code.push("  self.prevpc = "+n.prevcp+";"),n.code.push("  self.pc = "+n.cp+";")),n.code.push("self.tempglkargs.length = "+r[1]+";"),Z(r[1])){var s,a=Number(r[1]);for(s=0;s<a;s++)if(n.offstack.length){var o=Q(n);n.code.push("self.tempglkargs["+s+"]="+o+";")}else n.code.push("self.tempglkargs["+s+"]=self.frame.valstack.pop();");D(n)}else n.varsused.ix=!0,D(n),n.code.push("for (ix=0; ix<"+r[1]+"; ix++) { self.tempglkargs[ix]=self.frame.valstack.pop(); }");n.varsused.glkret=!0,n.code.push("glkret = GiDispa.get_function("+r[0]+")(self.tempglkargs);"),t&&(n.code.push("if (glkret === Glk.DidNotReturn) {"),n.code.push("  self.resumefuncop = "+function(n){if(0==n.mode)return"null";var r="m"+n.mode;if(null!=n.argsize&&(r=r+"s"+n.argsize),null!=n.addr&&(r=r+"a"+n.addr),e.funcop_cache.key)return"self.funcop_cache."+r;var t={key:r,mode:n.mode,argsize:n.argsize,addr:n.addr};return e.funcop_cache[r]=t,"self.fun
cop_cache."+r}(r[2])+";"),n.code.push("  self.resumevalue = 0;"),n.code.push("  self.pc = "+n.cp+";"),n.code.push("  self.done_executing = true;"),n.code.push("  return;"),n.code.push("}")),q(n,r[2],"glkret")}};function B(e,n){for(var r,t=0;;){if(r="_hold"+t,!e.holduse[r])return e.holduse[r]=!n||1,r;t++}}function Q(e){var n=e.offstack.pop();if(Z(n))return n;var r=e.holduse[n];return(isNaN(r)||!1===r||!0===r)&&G("Offstack variable not marked as stack.",n),0==--r&&(r=!0),e.holduse[n]=r,n}function H(e,n,r,t){var s=e.offloc[n];if(s&&"_"===s[0]){var a=e.holduse[s];0==--a&&(a=!0),e.holduse[s]=a}if(void 0===r)return e.offloc[n]=void 0,void(e.offlocdirty[n]=!1);if(e.offloc[n]=r,e.offlocdirty[n]=!0,t){var o=r;(a=e.holduse[o])&&!0!==a?a++:a=1,e.holduse[o]=a}}function Z(e){return"0"===e[0]}function J(e,n,r,t){var s,a,o,i,l,d,h;for(t.desttype=0,t.numops=r.numops,s=n,n+=r.numops+1>>1,a=0;a<r.numops;a++){0==(1&a)?i=15&(o=f(s)):(i=o>>4&15,s++);var p=r.formlist[a];if("L"!=p)if("E"!=p)if("S"!=p)if("F"!=p)if("C"!=p)G("Unknown
operand type.",p);else{switch(i){case 8:t[a]="3,0";continue;case 0:t[a]="0,0";continue}if(i>=9&&i<=11){9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),t[a]="2,"+d;continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in store operand.")}t[a]="1,"+d}else{var m=t.func_store;switch(i){case 8:m.mode=8,m.argsize=r.argsize,t[a]=m;continue;case 0:m.mode=0,m.argsize=r.argsize,t[a]=m;continue}if(i>=9&&i<=11){9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),m.mode=11,m.addr=d,m.argsize=r.argsize,t[a]=m;continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in store operand.")}m.mode=15,m.addr=d,m.argsize=r.argsize,t[a]=m}else{switch(i){case 8:h=B(e,!0),e.offstack.push(h),t[a]=h+"=(";
continue;case 0:t[a]="(";continue}if(i>=9&&i<=11){9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),4==r.argsize?(H(e,d,h=B(e,!0),!1),t[a]=h+"=("):2==r.argsize?(H(e,d,void 0),t[a]="self.frame.locals["+d+"]=(0xffff &"):(H(e,d,void 0),t[a]="self.frame.locals["+d+"]=(0xff &");continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in store operand.")}l=4==r.argsize?"self.MemW4("+d+",":2==r.argsize?"self.MemW2("+d+",":"self.MemW1("+d+",",t[a]=l}else{switch(i){case 8:e.offstack.length?t[a]=Q(e):t[a]="self.frame.valstack.pop()";continue;case 0:t[a]="0";continue;case 1:l=b(n),n++,t[a]=l;continue;case 2:l=y(n),n+=2,t[a]=l;continue;case 3:l=x(n),n+=4,t[a]=l;continue}if(i>=9&&i<=11){if(9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),void 0!==e.offloc[d]){t[a]=e.offloc[d];continue}l=4==r.argsize?"self.frame.locals["+d+"]":2==r.argsize?"self.fra
me.locals["+d+"] & 0xffff":"self.frame.locals["+d+"] & 0xff",h=B(e,!0),e.code.push(h+"=("+l+");"),e.offloc[d]=h,e.offlocdirty[d]=!1,t[a]=h;continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in load operand.")}l=4==r.argsize?"self.Mem4("+d+")":2==r.argsize?"self.Mem2("+d+")":"self.Mem1("+d+")",t[a]=l}else{switch(i){case 8:e.offstack.length?t[a]=Q(e):(h=B(e),e.code.push(h+"=self.frame.valstack.pop();"),t[a]=h);continue;case 0:t[a]="0";continue;case 1:l=b(n),n++,t[a]=l;continue;case 2:l=y(n),n+=2,t[a]=l;continue;case 3:l=x(n),n+=4,t[a]=l;continue}if(i>=9&&i<=11){if(9==i?(d=f(n),n++):10==i?(d=c(n),n+=2):11==i&&(d=u(n),n+=4),void 0!==e.offloc[d]){t[a]=e.offloc[d];continue}l=4==r.argsize?"self.frame.locals["+d+"]":2==r.argsize?"self.frame.locals["+d+"] & 0xffff":"self.frame.locals["+d+"] & 0xff",h=B(e,!0),e.code.push(h+"=("+l+");"),e.offloc[d]=h,e.offloc
dirty[d]=!1,t[a]=h;continue}switch(i){case 15:d=u(n)+Ce,n+=4;break;case 14:d=c(n)+Ce,n+=2;break;case 13:d=f(n)+Ce,n++;break;case 7:d=u(n),n+=4;break;case 6:d=c(n),n+=2;break;case 5:d=f(n),n++;break;default:G("Unknown addressing mode in load operand.")}l=4==r.argsize?"self.Mem4("+d+")":2==r.argsize?"self.Mem2("+d+")":"self.Mem1("+d+")",h=B(e),e.code.push(h+"=("+l+");"),t[a]=h}}return n}function $(e,n,r){var t,s,a,o=n,i={vmfunc:e,cp:null,prevcp:null,curiosys:r,code:[],holduse:{},varsused:{},offstack:[],offloc:[],offlocdirty:[],path_ends:!1},l={func_store:{}};for(i.code.push("");!i.path_ends;){i.prevcp=o,s=o,void 0===(t=f(o))&&G("Tried to compile nonexistent address",o),o++,128&t&&(64&t?(t=256*(t=256*(t=256*(t&=63)|f(o))|f(++o))|f(++o),o++):(t=256*(t&=127)|f(o),o++)),i.code.push("// "+s.toString(16)+": opcode "+t.toString(16));var c=W[t];c||G("Encountered unknown opcode.",t),o=J(i,o,c,l),i.cp=o;var u=P[t];for(a in u||G("Encountered unhandled opcode.",t),u(i,l),i.holduse)!0===i.holduse[a]&&(i.holduse[a]=!1);i.of
fstack.length&&i.code.push("// offstack: "+i.offstack.join(",")),i.offloc.length&&i.code.push("// offloc: "+i.offloc.join(",")+"; dirty: "+i.offlocdirty.join(",")),e.pathaddrs[o]&&!i.path_ends&&(i.code.push("// reached jump-in point"),i.code.push("self.pc="+o+";"),D(i),i.code.push("return;"),i.path_ends=!0)}i.offstack.length&&G("Path compilation ended with nonempty offstack.",i.offstack.length),i.offloc.length&&G("Path compilation ended with nonempty offloc.",i.offloc.length);var d=[];for(a in i.holduse)d.push(a);for(a in i.varsused)d.push(a);return d.length&&(i.code[0]="var "+d.join(",")+";"),N(i.code.join("\n"))}function X(n,r){var t;Ue++;var s=se[n];if(void 0!==s)return Pe++,void Y(s(r,e.tempcallargs));var a=xe[n];void 0===a&&(a=function(e){var n=e,r=f(n);192!=r&&193!=r&&G(r>=192&&r<=223?"Call to unknown type of function.":"Call to non-function.",n);for(var t=[],s=++n;;){var a=f(n),o=f(++n);if(n++,0==a)break;1!=a&&2!=a&&4!=a&&G("Invalid local variable size in function header.",a),t.push({size:a,count:o})}
for(var i=be.slice(s,n);i.length%4;)i.push(0);return new j(e,n,t,i)}(n),n<Ce&&(xe[n]=a)),e.pc=a.startpc;var o=new F(a);if(o.depth=ye.length,0==ye.length?o.framestart=0:o.framestart=e.frame.framestart+e.frame.framelen+4*e.frame.valstack.length,ye.push(o),e.frame=o,192==a.functype){for(t=r-1;t>=0;t--)e.frame.valstack.push(e.tempcallargs[t]);e.frame.valstack.push(r)}else for(t=0;t<r;t++){var i=a.localsindex[t];if(void 0===i)break;4==i.size?e.frame.locals[i.pos]=e.tempcallargs[t]:2==i.size?e.frame.locals[i.pos]=65535&e.tempcallargs[t]:1==i.size&&(e.frame.locals[i.pos]=255&e.tempcallargs[t])}}function Y(n){var r,t;isNaN(n)&&G("Function returned undefined value.");var s=e.frame.valstack,a=s.length,o=s[a-1];switch(o!=e.frame.framestart&&(s.length-=1,G("Call stub frameptr ("+o+") does not match frame ("+e.frame.framestart+")")),e.pc=s[a-2],r=s[a-3],t=s[a-4],s.length-=4,t){case 0:return;case 1:return void m(r,n);case 2:return void(e.frame.locals[r]=n);case 3:return void e.frame.valstack.push(n);case 17:return void G(
"String-terminator call stub at end of function call.");case 16:return void me(0,e.pc,225,r);case 18:return void pe(0,e.pc,!0,r);case 19:return void me(0,e.pc,224,r);case 20:return void me(0,e.pc,226,r);default:G("Unrecognized desttype in callstub.",t)}}function K(n){0==n?e.random_func=Math.random:(!function(e){var n,r,t,s,a;void 0===re&&(re=Array(55));for(re[54]=e,ee=0,ne=31,t=1,n=0;n<55;n++)re[r=21*n%55]=t,t=e-t>>>0,e=re[r];for(a=0;a<4;a++)for(n=0;n<55;n++)s=re[n]-re[(1+n+30)%55],re[n]=s>>>0}(n),e.random_func=te)}e.enter_function=X,e.leave_function=function(){var n=e.frame.depth;if(ye.pop(),0==ye.length)return e.frame=null,!0;e.frame=ye[ye.length-1],e.frame.depth!=n-1&&G("Stack inconsistent after function exit.")},e.pop_stack_to=function(n){for(;ye.length&&ye[ye.length-1].framestart>n;)ye.pop();0==ye.length&&G("Stack evaporated during throw."),e.frame=ye[ye.length-1],(n-=e.frame.framestart+e.frame.framelen)<0&&G("Attempted to throw below the frame value stack."),3&n&&G("Attempted to throw to an unaligned a
ddress."),(n>>>=2)>e.frame.valstack.length&&G("Attempted to throw beyond the frame value stack."),e.frame.valstack.length=n},e.pop_callstub=Y,e.store_operand=function(n,r,t){switch(n){case 0:return;case 1:return void m(r,t);case 2:return void(e.frame.locals[r]=t);case 3:return void e.frame.valstack.push(t);default:G("Unrecognized desttype in callstub.",n)}},e.set_random=K;var ee,ne,re=void 0;function te(){return ne=(ne+1)%55,re[ee=(ee+1)%55]=re[ee]-re[ne]>>>0,re[ee]/4294967296}var se={},ae={};e.accel_address_map=se,e.accel_funcnum_map=ae;var oe=[0,0,0,0,0,0,0,0,0];e.accel_params=oe;var ie={1:function(n,r){if(n<1)return 0;var t=r[0];if(t<36)return 0;if(t>=e.endmem)return 0;var s=f(t);return s>=224?3:s>=192?2:s>=112&&s<=127&&t>=Ce?1:0},2:function(e,n){var r=e>0?n[0]:0,t=e>1?n[1]:0;if(1!=ie[1](e,n))return Glk.glk_put_jstring('\n[** Programming error: tried to find the "." of (something) **]\n'),0;var s=u(r+16);if(!s)return 0;var a=u(s);return ve(t,2,s+=4,10,a,0,0)},3:function(e,n){var r=ce(e>0?n[0]:0,e>1?n[1]:0
);return 0==r?0:u(r+4)},4:function(e,n){var r=ce(e>0?n[0]:0,e>1?n[1]:0);return 0==r?0:4*c(r+2)},5:function(e,n){var r,t,s,a,o,i=e>0?n[0]:0,l=e>1?n[1]:0;if(3==(r=ie[1](e,n)))return l==oe[5]?1:0;if(2==r)return l==oe[4]?1:0;if(1!=r)return 0;if(l==oe[2])return fe(i)||i==oe[2]||i==oe[5]||i==oe[4]||i==oe[3]?1:0;if(l==oe[3])return fe(i)||i==oe[2]||i==oe[5]||i==oe[4]||i==oe[3]?0:1;if(l==oe[5]||l==oe[4])return 0;if(!fe(l))return Glk.glk_put_jstring("\n[** Programming error: tried to apply 'ofclass' with non-class **]\n"),0;if(0==(t=ce(i,2)))return 0;if(0==(s=u(t+4)))return 0;for(a=c(t+2),o=0;o<a;o++)if(u(s+4*o)==l)return 1;return 0},6:function(e,n){var r,t=e>1?n[1]:0;return 0==(r=ie[3](e,n))?t>0&&t<oe[1]?u(oe[8]+4*t):(Glk.glk_put_jstring("\n[** Programming error: tried to read (something) **]\n"),0):u(r)},7:function(e,n){var r=e>0?n[0]:0,t=e>1?n[1]:0,s=oe[1],a=ie[1](e,n);return 3==a?t==s+6||t==s+7?1:0:2==a?t==s+5?1:0:1!=a?0:t>=s&&t<s+8&&fe(r)||ie[3](e,n)?1:0},8:function(e,n){var r=e>0?n[0]:0,t=e>1?n[1]:0;if(1!=ie[1](
e,n))return Glk.glk_put_jstring('\n[** Programming error: tried to find the "." of (something) **]\n'),0;var s=u(r+4*(3+(oe[7]>>2)));if(!s)return 0;var a=u(s);return ve(t,2,s+=4,10,a,0,0)},9:function(e,n){var r=ue(e>0?n[0]:0,e>1?n[1]:0);return 0==r?0:u(r+4)},10:function(e,n){var r=ue(e>0?n[0]:0,e>1?n[1]:0);return 0==r?0:4*c(r+2)},11:function(e,n){var r,t,s,a,o,i=e>0?n[0]:0,l=e>1?n[1]:0;if(3==(r=ie[1](e,n)))return l==oe[5]?1:0;if(2==r)return l==oe[4]?1:0;if(1!=r)return 0;if(l==oe[2])return fe(i)||i==oe[2]||i==oe[5]||i==oe[4]||i==oe[3]?1:0;if(l==oe[3])return fe(i)||i==oe[2]||i==oe[5]||i==oe[4]||i==oe[3]?0:1;if(l==oe[5]||l==oe[4])return 0;if(!fe(l))return Glk.glk_put_jstring("\n[** Programming error: tried to apply 'ofclass' with non-class **]\n"),0;if(0==(t=ue(i,2)))return 0;if(0==(s=u(t+4)))return 0;for(a=c(t+2),o=0;o<a;o++)if(u(s+4*o)==l)return 1;return 0},12:function(e,n){var r,t=e>1?n[1]:0;return 0==(r=ie[9](e,n))?t>0&&t<oe[1]?u(oe[8]+4*t):(Glk.glk_put_jstring("\n[** Programming error: tried to read (somet
hing) **]\n"),0):u(r)},13:function(e,n){var r=e>0?n[0]:0,t=e>1?n[1]:0,s=oe[1],a=ie[1](e,n);return 3==a?t==s+6||t==s+7?1:0:2==a?t==s+5?1:0:1!=a?0:t>=s&&t<s+8&&fe(r)||ie[9](e,n)?1:0}};e.accel_func_map=ie;var le=[0,0];function fe(e){return u(e+13+oe[7])==oe[2]}function ce(e,n){var r,t=0;if(4294901760&n){if(t=u(oe[0]+4*(65535&n)),le[0]=e,le[1]=t,0==ie[5](2,le))return 0;n>>=16,e=t}return le[0]=e,le[1]=n,0==(r=ie[2](2,le))||fe(e)&&0==t&&(n<oe[1]||n>=oe[1]+8)||u(oe[6])!=e&&1&f(r+9)?0:r}function ue(e,n){var r,t=0;if(4294901760&n){if(t=u(oe[0]+4*(65535&n)),le[0]=e,le[1]=t,0==ie[11](2,le))return 0;n>>=16,e=t}return le[0]=e,le[1]=n,0==(r=ie[8](2,le))||fe(e)&&0==t&&(n<oe[1]||n>=oe[1]+8)||u(oe[6])!=e&&1&f(r+9)?0:r}function de(n){if(e.stringtable!=n&&(ze=void 0,Se=void 0,e.stringtable=n,0!=e.stringtable)){var r=Me[e.stringtable];if(void 0===r){var t=void 0,s=u(e.stringtable),a=u(e.stringtable+8);if(e.stringtable+s<=Ce){var o=Array(1);!function e(n,r,t,s){var a,o,i,l;if(0==(o=f(r))&&4==t)return(i=Array(16)).type=0,i.depth=
4,n[s]=i,void e(i,r,0,0);if(0==o){var c=u(r+1),d=u(r+5);return e(n,c,t+1,s),void e(n,d,t+1,s|1<<t)}switch(r++,(i={}).type=o,i.depth=t,o){case 2:i.value=f(r),i.cchar=M(i.value);break;case 4:i.value=u(r),i.cchar=M(i.value);break;case 3:case 5:i.addr=r;break;case 8:case 9:i.addr=u(r);break;case 10:case 11:i.addr=r;break;case 1:break;default:G("Unknown node type in string table.",o)}for(l=1<<t,a=s;a<16;a+=l)n[a]=i}(o,a,4,0),void 0===(t=o[0])&&G("Failed to create decoding tree.")}r=new E(e.stringtable,t),Me[e.stringtable]=r}ze=r.decoding_tree,Se=r.vmstring_tables[e.iosysmode]}}function he(n,r){switch(n){case 0:r=0;break;case 1:break;case 2:r=0;break;default:n=0,r=0}e.iosysmode=n,e.iosysrock=r;var t=Me[e.stringtable];Se=void 0===t?void 0:t.vmstring_tables[e.iosysmode]}function pe(n,r,t,s){var a=(4294967295&r).toString(10);switch(e.iosysmode){case 2:s&&(a=a.slice(s)),Glk.glk_put_jstring(a,!0);break;case 1:if(t||(e.frame.valstack.push(17,0,n,e.frame.framestart),t=!0),s<a.length){var o=a.charCodeAt(s);return e.frame.
valstack.push(18,s+1,r,e.frame.framestart),e.tempcallargs[0]=o,X(e.iosysrock,1),!0}}t&&(e.frame.valstack.pop()!=e.frame.framestart&&G("Call stub frameptr does not match frame."),e.pc=e.frame.valstack.pop(),e.frame.valstack.pop(),17!=e.frame.valstack.pop()&&G("String-on-string call stub while printing number."))}function me(n,r,t,s){for(var a,o,i,l,f,c=0!=t;;){if(o=void 0,a=0==t?r:r+"/"+t+"/"+s,void 0!==Se&&r<Ce?void 0===(o=Se[a])&&(o=ge(e.iosysmode,r,t,s),Se[a]=o,Je++,Ze++):(o=ge(e.iosysmode,r,t,s),Je++),o instanceof Function){if((i=o(e,n,c))instanceof Array){c=!0,r=i[0],t=i[1],s=i[2];continue}if(i)return!0}else if(Glk.glk_put_jstring(o),!c)return!1;if(e.frame.valstack.pop()!=e.frame.framestart&&G("Call stub frameptr does not match frame."),e.pc=e.frame.valstack.pop(),f=e.frame.valstack.pop(),17==(l=e.frame.valstack.pop()))return!0;16==l?(c=!0,s=f,t=225,r=e.pc):G("Function-terminator call stub at end of string.")}}function ge(n,r,t,s){var a,o=r,i=s,l=void 0;o||G("Called compile_string with null address.");va
r c={startaddr:r,startbitnum:s,buffer:[],code:[]};if(0==t?(226==(a=f(o))?o+=4:o++,i=0):a=t,225==a)if(ze){var d,h,p,m,g,_,v=!1;for(d=f(o),i&&(d>>=i),h=8-i,p=!1,ze instanceof Array||(v=!0),g=ze;!v;){if(h<4)d|=f(o+1)<<h,h+=8,p=!0;if(h-=(_=g[15&d]).depth,d>>=_.depth,(i+=_.depth)>=8)if(o+=1,i-=8,p)p=!1;else d|=f(o)<<h,h+=8;if(_ instanceof Array)g=_;else switch(_.type){case 1:v=!0;break;case 2:case 4:switch(n){case 2:c.buffer.push(_.cchar);break;case 1:I(c),V(c),T(c,"0x10,"+i,o),c.code.push("self.tempcallargs[0]="+_.value+";"),c.code.push("self.enter_function(self.iosysrock, 1);"),l=!0,v=!0}g=ze;break;case 3:switch(n){case 2:for(m=_.addr;0!=(z=f(m));)c.buffer.push(M(z)),m++;break;case 1:I(c),V(c),T(c,"0x10,"+i,o),l="["+_.addr+", 0xE0, 0]",v=!0}g=ze;break;case 5:switch(n){case 2:for(m=_.addr;0!=(z=u(m));)c.buffer.push(M(z)),m+=4;break;case 1:I(c),V(c),T(c,"0x10,"+i,o),l="["+_.addr+", 0xE2, 0]",v=!0}g=ze;break;case 8:case 9:case 10:case 11:I(c),V(c),c.code.push("var otype, retval;"),c.code.push("var oaddr = "+_.addr
+";"),_.type>=9&&c.code.push("oaddr = self.Mem4(oaddr);"),11==_.type&&c.code.push("oaddr = self.Mem4(oaddr);"),c.code.push("otype = self.Mem1(oaddr);"),l="retval",v=!0,T(c,"0x10,"+i,o),c.code.push("if (otype >= 0xE0 && otype <= 0xFF) {"),c.code.push("retval = [oaddr, 0, 0];"),c.code.push("}"),c.code.push("else if (otype >= 0xC0 && otype <= 0xDF) {");var w=0;if(10==_.type||11==_.type){w=u(_.addr+4);for(var k=0;k<w;k++)c.code.push("self.tempcallargs["+k+"]="+u(_.addr+8+4*k)+";")}c.code.push("self.enter_function(oaddr, "+w+");"),c.code.push("retval = true;"),c.code.push("}"),c.code.push("else {"),c.code.push("self.fatal_error('Unknown object while decoding string indirect reference.', otype);"),c.code.push("}");break;default:G("Unknown entity in string decoding (cached).")}}}else{var b,y,x;v=!1;for(e.stringtable||G("Attempted to print a compressed string with no table set."),y=f(o),i&&(y>>=i),b=u(e.stringtable+8);!v;)switch(x=f(b),b++,x){case 0:b=u(1&y?b+4:b+0),7==i?(i=0,y=f(++o)):(i++,y>>=1);break;case 1:l=!1,
v=!0;break;case 2:switch(z=f(b),n){case 2:c.buffer.push(M(z));break;case 1:I(c),V(c),T(c,"0x10,"+i,o),c.code.push("self.tempcallargs[0]="+z+";"),c.code.push("self.enter_function(self.iosysrock, 1);"),l=!0,v=!0}b=u(e.stringtable+8);break;case 4:switch(z=u(b),n){case 2:c.buffer.push(M(z));break;case 1:I(c),V(c),T(c,"0x10,"+i,o),c.code.push("self.tempcallargs[0]="+z+";"),c.code.push("self.enter_function(self.iosysrock, 1);"),l=!0,v=!0}b=u(e.stringtable+8);break;case 3:switch(n){case 2:for(;0!=(z=f(b));)c.buffer.push(M(z)),b++;break;case 1:I(c),V(c),T(c,"0x10,"+i,o),l="["+b+", 0xE0, 0]",v=!0}b=u(e.stringtable+8);break;case 5:switch(n){case 2:for(;0!=(z=u(b));)c.buffer.push(M(z)),b+=4;break;case 1:I(c),V(c),T(c,"0x10,"+i,o),l="["+b+", 0xE2, 0]",v=!0}b=u(e.stringtable+8);break;case 8:case 9:case 10:case 11:I(c),V(c),c.code.push("var otype, retval;"),c.code.push("var oaddr = "+u(b)+";"),9!=x&&11!=x||c.code.push("oaddr = self.Mem4(oaddr);"),c.code.push("otype = self.Mem1(oaddr);"),l="retval",v=!0,T(c,"0x10,"+i,o),c.
code.push("if (otype >= 0xE0 && otype <= 0xFF) {"),c.code.push("retval = [oaddr, 0, 0];"),c.code.push("}"),c.code.push("else if (otype >= 0xC0 && otype <= 0xDF) {");w=0;if(10==x||11==x){w=u(b+4);for(k=0;k<w;k++)c.code.push("self.tempcallargs["+k+"]="+u(b+8+4*k)+";")}c.code.push("self.enter_function(oaddr, "+w+");"),c.code.push("retval = true;"),c.code.push("}"),c.code.push("else {"),c.code.push("self.fatal_error('Unknown object while decoding string indirect reference.', otype);"),c.code.push("}");break;default:G("Unknown entity in string decoding.",x)}}else if(224==a){switch(n){case 2:for(;z=f(o),o++,0!=z;)c.buffer.push(M(z));break;case 1:I(c),V(c),z=f(o),o++,0!=z?(T(c,"0x13,0",o),c.code.push("self.tempcallargs[0]="+z+";"),c.code.push("self.enter_function(self.iosysrock, 1);"),l=!0):l="false"}}else if(226==a){var z;switch(n){case 2:for(;z=u(o),o+=4,0!=z;)c.buffer.push(M(z));break;case 1:I(c),V(c),z=u(o),o+=4,0!=z?(T(c,"0x14,0",o),c.code.push("self.tempcallargs[0]="+z+";"),c.code.push("self.enter_function(se
lf.iosysrock, 1);"),l=!0):l="false"}}else G(a>=224&&a<=255?"Attempt to print unknown type of string.":"Attempt to print non-string.");return l?(I(c),c.code.push("return "+l+";"),N(c.code.join("\n"),0,"nextcp","substring")):(c.code.length>1&&G("Simple-case string generated code."),c.buffer.join(""))}function _e(e,n,r){if(1&r)return d(e,n);switch(n){case 4:return[e>>24&255,e>>16&255,e>>8&255,255&e];case 2:return[e>>8&255,255&e];case 1:return[255&e];default:G("Direct search key must hold one, two, or four bytes.")}}function ve(e,n,r,t,s,a,o){var i,l,c,u,d,h,p,m,g=0!=(4&o),_=_e(e,n,o);for(l=0,i=s;l<i;){for(d=0,c=r+(u=i+l>>1)*t,h=0;!d&&h<n;h++)(p=f(c+a+h))<(m=_[h])?d=-1:p>m&&(d=1);if(!d)return g?u:c;d<0?l=u+1:i=u}return g?4294967295:0}function we(e){var n,r,t;return 2147483648&e?(n=!0,e&=2147483647):n=!1,0==e?n?-0:0:2139095040==(2139095040&e)?0==(8388607&e)?n?-1/0:1/0:NaN:(r=(t=e>>23&255)?(8388607&e|8388608)/8388608*Math.pow(2,t-127):(8388607&e)/8388608*Math.pow(2,-126),n?-r:r)}function ke(e){var n,r,t,s,a;return
isNaN(e)?2139095041:isFinite(e)?0==e?1/e<0?2147483648:0:(e<0?(a=!0,n=-e):(a=!1,n=e),s=Math.floor(Math.log(n)/Math.log(2)),t=n/Math.pow(2,s),s>=128?a?4286578688:2139095040:(s<-126?(t*=Math.pow(2,126+s),s=0):0==s&&0==t||(s+=127,t-=1),(r=(t*=8388608)+.4999999999999999<<0)>=8388608&&(r=0,++s>=255)?a?4286578688:2139095040:a?(2147483648|s<<23|r)>>>0:s<<23|r)):e<0?4286578688:2139095040}e.set_string_table=de,e.set_iosys=he,e.stream_num=pe,e.stream_string=me,e.do_gestalt=function(e,n){switch(e){case 0:return 196866;case 1:return 131335;case 2:case 3:return 1;case 4:switch(n){case 0:case 1:case 2:return 1;default:return 0}case 5:case 6:case 7:return 1;case 8:return Ae;case 9:return 1;case 10:return ie[n]?1:0;case 11:return 1;default:return 0}},e.linear_search=function(e,n,r,t,s,a,o){var i,l,f,c,u=0!=(4&o),h=0!=(2&o),p=_e(e,n,o);for(l=0;l<s;l++,r+=t){for(f=!0,c=d(r+a,n),i=0;f&&i<n;i++)c[i]!=p[i]&&(f=!1);if(f)return u?l:r;if(h){for(f=!0,c=d(r+a,n),i=0;f&&i<n;i++)0!=c[i]&&(f=!1);if(f)break}}return u?4294967295:0},e.bina
ry_search=ve,e.linked_search=function(e,n,r,t,s,a){for(var o,i,l=0!=(2&a),c=_e(e,n,a);0!=r;){for(i=!0,o=0;i&&o<n;o++)f(r+t+o)!=c[o]&&(i=!1);if(i)return r;if(l){for(i=!0,o=0;i&&o<n;o++)0!=f(r+t+o)&&(i=!1);if(i)break}r=u(r+s)}return 0},e.decode_float=we,e.encode_float=ke;var be,ye,xe,Me,ze,Se,Ce,Ge,Ne,je,Fe,Le,Ae,Ee,We,qe=null,Te=null,Ve=null,De=null,Ie=null,Re=null;e.frame=null,e.vm_started=!1,e.vm_stopped=!1,e.tempcallargs=null,e.tempglkargs=null,e.done_executing=null,e.random_func=null,e.pc=null,e.stringtable=null,e.endmem=null,e.protectstart=null,e.protectend=null,e.iosysmode=null,e.iosysrock=null,e.prevpc=null,e.resumefuncop=null,e.resumevalue=null;var Oe=0,Ue=0,Pe=0,Be=0,Qe=0,He=0,Ze=0,Je=0;function $e(){rn();var n=en();be=null,be=qe.slice(0,Ge),e.endmem=be.length,Ke(Ne,!1),nn(n),ye=[],e.frame=null,e.pc=0,e.prevpc=0,e.iosysmode=0,e.iosysrock=0,de(Fe),X(je,0)}function Xe(e){for(var n=[],r=0;r<e.length;r++){var t=e[r].key,s=e[r].chunk;4!=t.length&&G("Bad chunk ID (must be exactly 4 chars): "+t),null==s&&G(
"Missing chunk data: "+t),g(n,t),_(n,s.length),1&(n=n.concat(s)).length&&n.push(0)}return n}function Ye(e){for(var n={},t=0;t<e.length;){if(t+8>e.length)return void r("IFF chunk header is truncated");var s=k(e,t,4),a=o(e,t+4);if((t+=8)+a>e.length)return void r(s+" chunk is truncated ("+a+" bytes needed, "+(e.length-t)+" available");n[s]=e.slice(t,t+a),1&(t+=a)&&(t+=1)}return n}function Ke(n,r){var t;if(n!=e.endmem){if(!r&&tn()&&G("Cannot resize Glulx memory space while heap is active."),n<Ne&&G("Cannot resize Glulx memory space smaller than it started."),255&n&&G("Can only resize Glulx memory space to a 256-byte boundary."),be.length=n,n>e.endmem)for(t=e.endmem;t<n;t++)be[t]=0;e.endmem=n}}function en(){if(e.protectstart>=e.protectend)return null;for(var n=e.protectend-e.protectstart,r={start:e.protectstart,end:e.protectend,len:n},t=be.slice(e.protectstart,e.protectend);t.length<n;)t.push(0);return r.mem=t,r}function nn(n){if(n){var r,t,s=n.mem,a=n.start,o=n.end;for(o>e.endmem&&(o=e.endmem),r=0,t=a;t<o;r++,t+
+)be[t]=s[r]}}function rn(){Ae=0,Ee=[],We=[]}function tn(){return Ee.length>0}function sn(e,n){this.addr=e,this.size=n,this.end=e+n}function an(e,n){for(var r=0,t=e.length;r<t;){var s=r+t>>1;e[s].addr<n?r=s+1:t=s}return r}function on(){if(!tn())return 0!=Ae&&G("Heap inconsistency: heapstart nonzero"),Ee.length>0&&G("Heap inconsistency: usedlist nonempty"),void(We.length>0&&G("Heap inconsistency: usedlist nonempty"));0==Ae&&G("Heap inconsistency: heapstart is zero");for(var n=Ae,r=0,t=0;r<Ee.length||t<We.length;){var s=Ee[r],a=We[t];s&&s.addr==n?(n+=s.size,r++):a&&a.addr==n?(n+=a.size,t++):G("Heap inconsistency: no block at address "+n)}n!=e.endmem&&G("Heap inconsistency: overrun at end of heap")}e.vm_restart=$e,e.vm_save=function(n){be.length!=e.endmem&&G("Memory length was incorrect before save."),2!=e.iosysmode&&G("Streams are only available in Glk I/O system.");var r=GiDispa.class_obj_from_id("stream",n);if(!r)return!1;var t=[];t.push({key:"IFhd",chunk:qe.slice(0,128)});for(var s,a,o,i=be.slice(Ce),l=Ce;l
<qe.length;l++)i[l-Ce]^=qe[l];(i=function(e){for(var n=[],r=0;r<e.length;){for(var t=0;r<e.length&&0==e[r]&&t<=255;)t++,r++;for(t>0&&(n.push(0),n.push(t-1));r<e.length&&0!=e[r];)n.push(e[r]),r++}return n}(i)).splice(0,0,0,0,0,0),s=i,a=0,o=e.endmem,s[a]=o>>24&255,s[a+1]=o>>16&255,s[a+2]=o>>8&255,s[a+3]=255&o,t.push({key:"CMem",chunk:i});var f=[];for(t.push({key:"Stks",chunk:f}),l=0;l<ye.length;l++)L(ye[l],f);if(tn()){var c=[];t.push({key:"MAll",chunk:c}),_(c,Ae),_(c,Ee.length);for(l=0;l<Ee.length;l++)_(c,Ee[l].addr),_(c,Ee[l].size)}var u=[];g(u,"IFZS"),u=u.concat(Xe(t));var d=Xe([{key:"FORM",chunk:u}]);return Glk.glk_put_buffer_stream(r,d),!0},e.vm_restore=function(n){2!=e.iosysmode&&G("Streams are only available in Glk I/O system.");var t=GiDispa.class_obj_from_id("stream",n);if(!t)return!1;for(var s=new Array(0),a=new Array(1024),i=1;i>0;)i=Glk.glk_get_buffer_stream(t,a),s=s.concat(a.slice(0,i));if(!(s=Ye(s)))return r("vm_restore failed: file is not Quetzal"),!1;if(!(s=s.FORM)||"IFZS"!=k(s,0,4))return r("vm
_restore failed: file doesn't start with FORM/IFZS header"),!1;var l=Ye(s.slice(4));if(!l.IFhd)return r("vm_restore failed: missing required IFhd chunk"),!1;for(var f=0;f<128;f++)if(l.IFhd[f]!=qe[f])return r("vm_restore failed: this save image is for a different game"),!1;if(!l.CMem)return r("vm_restore failed: missing required CMem chunk"),!1;if(!l.Stks)return r("vm_restore failed: missing required Stks chunk"),!1;var c=en();rn();var u=o(l.CMem,0),d=l.CMem.slice(4);for(d=function(e){for(var n=[],r=0;r<e.length;){var t=e[r++];if(0==t)for(var s=e[r++]+1,a=0;a<s;a++)n.push(0);else n.push(t)}return n}(d);d.length<u-Ce;)d.push(0);for(Ke(u,!1),be=qe.slice(0,Ce).concat(d),f=Ce;f<qe.length;f++)be[f]^=qe[f];be.length!=e.endmem&&G("Memory length was incorrect after restore.");var h=l.Stks;for(ye=[];h.length;)e.frame=A(h),e.frame||G("vm_restore failed: bad stack frame"),ye.unshift(e.frame);for(f=0;f<ye.length;f++)ye[f].depth=f;e.frame=ye[ye.length-1];var p=l.MAll;if(p&&p.length>=8){Ae=o(p,0);var m=o(p,4);for(f=0;f<m;f
++){var g=o(p,8+8*f),_=o(p,12+8*f);Ee.push(new sn(g,_))}Ee.sort((function(e,n){return e.addr-n.addr}));var v=Ae;for(f=0;f<Ee.length;f++){g=Ee[f].addr,_=Ee[f].size;(g<v||g+_>e.endmem)&&G("vm_restore failed: corrupt dynamic heap"),g>v&&We.push(new sn(v,g-v)),v=g+_}v<e.endmem&&We.push(new sn(v,e.endmem-v))}return on(),nn(c),!0},e.vm_saveundo=function(){be.length!=e.endmem&&G("Memory length was incorrect before saveundo.");var n,r,t={};t.ram=be.slice(Ce),t.endmem=e.endmem,t.pc=e.pc,t.stack=[];for(var s=0;s<ye.length;s++)t.stack[s]=(n=ye[s],r=void 0,(r=new F(n.vmfunc)).depth=n.depth,r.framestart=n.framestart,r.framelen=n.framelen,r.valstack=n.valstack.slice(0),r.localspos=n.localspos,r.locals=n.locals.slice(0),r.framelen=n.framelen,r);t.heapstart=Ae,t.usedlist=Ee.slice(0),t.freelist=We.slice(0),Le.push(t),Le.length>10&&Le.shift()},e.vm_restoreundo=function(){if(0==Le.length)return!1;var n=Le.pop(),r=en();return be=be.slice(0,Ce).concat(n.ram),e.endmem=n.endmem,ye=n.stack,e.frame=ye[ye.length-1],e.pc=n.pc,Ae=n.hea
pstart,Ee=n.usedlist,We=n.freelist,nn(r),be.length!=e.endmem&&G("Memory length was incorrect after undo."),on(),!0},e.change_memsize=Ke,e.perform_verify=function(){var e,n,r,t=qe.length;if(t<256||0!=(255&t))return 1;if(t!=o(qe,12))return 1;for(n=-(r=o(qe,32))>>>0,e=0;e<t;e+=4)n=n+o(qe,e)>>>0;return n!=r?1:0},e.heap_malloc=function(n){tn()||(Ae=e.endmem);for(var r=0,t=We.length;r<t;r++){var s=We[r];if(s.size>=n){s.size>n?We[r]=new sn(s.addr+n,s.size-n):We.splice(r,1);var a=an(Ee,s.addr);return Ee.splice(a,0,new sn(s.addr,n)),s.addr}}var o=e.endmem,i=n+255&4294967040;return Ke(e.endmem+i,!0),i>n&&We.push(new sn(o+n,i-n)),Ee.push(new sn(o,n)),o},e.heap_free=function(e){var n=an(Ee,e),r=Ee[n];if(r&&r.addr==e||G("Tried to free non-existent block"),Ee.splice(n,1),0==Ee.length)return Ke(Ae,!0),void rn();n=an(We,e);var t=We[n];t&&t.addr==r.end&&(r=new sn(e,r.size+t.size),We.splice(n,1));var s=We[n-1];s&&s.end==r.addr&&(r=new sn(s.addr,s.size+r.size),We.splice(n-1,1),n-=1),We.splice(n,0,r)},e.assert_heap_valid=on;var
ln={map:{},functions:[],functionmap:{}};function fn(){var n,t,s,a,o;for(e.resumefuncop&&(!function(n,r){if(n)switch(n.mode){case 8:return void e.frame.valstack.push(r);case 0:return;case 11:return void(4==n.argsize?e.frame.locals[n.addr]=r:2==n.argsize?e.frame.locals[n.addr]=65535&r:e.frame.locals[n.addr]=255&r);case 15:return void(4==n.argsize?m(n.addr,r):2==n.argsize?p(n.addr,r):h(n.addr,r));default:G("Unknown addressing mode in store func by operand.")}}(e.resumefuncop,e.resumevalue),e.resumefuncop=null,e.resumevalue=0),a=(new Date).getTime();!e.done_executing;){void 0===(s=(t=(n=e.frame.vmfunc)[e.iosysmode])[e.pc])&&(n.pathaddrs[e.pc]=!0,s=$(n,e.pc,e.iosysmode),He++,e.pc<Ce&&(t[e.pc]=s,Qe++)),Be++,s(e)===e.VMStopped&&(e.done_executing=!0,e.vm_stopped=!0)}o=(new Date).getTime(),Oe+=(o-a)/1e3,e.vm_stopped&&Glk.glk_exit(),Glk.update(),Ve&&r("event executed in "+(o-a)+" ms")}return e.VMStopped={dummy:"The top-level function has returned."},{version:"2.1.7",prepare:function(e,n){var t,s,a=(qe=e).slice(0,64);
for(t=0;t<a.length;t++)(s=a[t].toString(16)).length<2&&(s="0"+s),a[t]=s;Te=a.join(""),n&&(Ve=n.log_execution_time,De=n.rethrow_exceptions,Ie=n.do_vm_autosave,Re=n.clear_vm_autosave),n&&n.debug_info_chunk&&function(){var e,n,t,s=GiLoad.get_debug_info();if(!s)return;if(222!=s[0]||191!=s[1]||0!=s[2]||0!=s[3])return void r("Dbug chunk did not contain an (old-style) Inform gameinfo.dbg file");s[4],s[5];n=6,e=!1;for(;!e;){var a=s[n++];switch(a){case 0:case void 0:e=!0;break;case 1:s[n++];for(t=n;s[n];)n++;String.fromCharCode.apply(this,s.slice(t,n));for(t=++n;s[n];)n++;String.fromCharCode.apply(this,s.slice(t,n));n++;break;case 2:for(t=n;s[n];)n++;String.fromCharCode.apply(this,s.slice(t,n));n++;s.slice(n,n+4);n+=4;s.slice(n,n+4);n+=4;break;case 3:s[n++],s[n++];for(t=n;s[n];)n++;String.fromCharCode.apply(this,s.slice(t,n));n++;s.slice(n,n+4);n+=4;s.slice(n,n+4);n+=4;break;case 4:s[n++];for(t=n;s[n];)n++;var o=String.fromCharCode.apply(this,s.slice(t,n));n++;break;case 5:s[n++],s[n++];for(t=n;s[n];)n++;o=String.fro
mCharCode.apply(this,s.slice(t,n));n++;break;case 6:s[n++],s[n++];for(t=n;s[n];)n++;o=String.fromCharCode.apply(this,s.slice(t,n));n++;break;case 7:s[n++],s[n++];for(t=n;s[n];)n++;o=String.fromCharCode.apply(this,s.slice(t,n));n++;break;case 8:s[n++],s[n++];for(t=n;s[n];)n++;o=String.fromCharCode.apply(this,s.slice(t,n));n++;break;case 9:n+=64;break;case 10:var i=s[n++]<<8|s[n++],l=s[n++]<<8|s[n++];n+=6*l;break;case 11:i=s[n++]<<8|s[n++],s.slice(n,n+4);n+=4;var f=s[n++]<<16|s[n++]<<8|s[n++];for(t=n;s[n];)n++;var c=String.fromCharCode.apply(this,s.slice(t,n));n++;for(var u=[];s[n];){for(t=n;s[n];)n++;var d=String.fromCharCode.apply(this,s.slice(t,n));n++,u.push(d)}n++,ln.functions.push({num:i,name:c,addr:f,locals:u});break;case 12:s[n++],s[n++];for(t=n;s[n];)n++;o=String.fromCharCode.apply(this,s.slice(t,n));n++;break;case 13:for(;s[n];){for(t=n;s[n];)n++;o=String.fromCharCode.apply(this,s.slice(t,n));n++;var h=s[n++]<<16|s[n++]<<8|s[n++];ln.map[o]=h}n++;break;case 14:i=s[n++]<<8|s[n++],s.slice(n,n+4);n+=4;s[
n++],s[n++],s[n++];break;default:r("Unknown record type in debug data: "+a),e=!0}}var p,m=ln.map["code area"];if(m)for(p=0;p<ln.functions.length;p++){var g=ln.functions[p];ln.functionmap[m+g.addr]=g}}()},init:function(){if(e.vm_started)Glk.fatal_error("Quixe was inited twice!");else try{!function(){var e,n;for(e=0;e<256;e++)n=e.toString(16),e<16&&(n="0"+n),s[e]=n;for(e=0;e<256;e++)n=e>=32&&e<127?34==e||39==e||92==e?"\\"+String.fromCharCode(e):String.fromCharCode(e):10==e?"\\n":"\\x"+s[e],a[e]=n}(),function(){function e(e,n){this.argsize=n||4,this.numops=e.length;for(var r=[],t=0;t<e.length;t++)r.push(e.charAt(t));this.formlist=r}var n=new e(""),r=new e("L"),t=new e("LL"),s=new e("LLL"),a=new e("LLLL"),o=new e("LS"),i=new e("LLS"),l=new e("LLLLLLS"),f=new e("LLLLLLLS"),c=new e("LLSS"),u=new e("LC"),d=new e("LLC"),h=new e("LLLC"),p=new e("LLLLC"),m=new e("ES"),g=new e("LES"),_=new e("EES"),v=new e("F"),w=new e("LF"),k=new e("LLF"),b=new e("EF"),y=new e("EF",1),x=new e("EF",2),M=new e("S"),z=new e("SS"),S=new e
("CL"),C=new e("C");W={0:n,16:_,17:g,18:i,19:i,20:i,21:m,24:_,25:_,26:_,27:m,28:i,29:i,30:i,32:r,34:t,35:t,36:s,37:s,38:s,39:s,40:s,41:s,42:s,43:s,44:s,45:s,48:d,49:r,50:S,51:t,52:t,64:b,65:x,66:y,68:o,69:o,72:i,73:i,74:i,75:i,76:s,77:s,78:s,79:s,80:v,81:w,82:n,83:t,84:r,112:r,113:r,114:r,115:r,256:i,257:r,258:M,259:o,260:r,272:o,273:r,288:n,289:M,290:n,291:u,292:w,293:C,294:v,295:t,304:k,320:M,321:r,328:z,329:t,336:f,337:f,338:l,352:u,353:d,354:h,355:p,368:t,369:s,376:o,377:r,384:t,385:t,400:o,401:o,402:o,408:o,409:o,416:i,417:i,418:i,419:i,420:c,424:o,425:o,426:o,427:i,432:o,433:o,434:o,435:o,436:o,437:o,438:i,448:a,449:a,450:s,451:s,452:s,453:s,456:t,457:t}}(),function(){var t;qe||G("There is no Glulx game file loaded.");e.vm_started=!0,e.resumefuncop=null,e.resumevalue=0,be=null,ye=[],e.frame=null,e.pc=0,e.prevpc=0,qe.length<36&&G("This is too short to be a valid Glulx file.");1198290284!=o(qe,0)&&G("This is not a valid Glulx file.");(t=o(qe,4))<131072&&G("This Glulx file is too old a version to execute.
");t>=197120&&G("This Glulx file is too new a version to execute.");Ce=o(qe,8),Ge=o(qe,12),Ne=o(qe,16),o(qe,20),je=o(qe,24),Fe=o(qe,28),o(qe,32),e.protectstart=0,e.protectend=0,(Ce<256||Ge<Ce||Ne<Ge)&&G("The segment boundaries in the header are in an impossible order.");Ge!=qe.length&&G("The game file length does not agree with the header.");e.done_executing=!1,xe={},Me={},ze=void 0,Se=void 0,e.tempcallargs=Array(8),e.tempglkargs=Array(8),K(0),e.endmem=Ne,e.stringtable=0,Le=[],Ae=0,Ee=[],We=[],Re&&Dialog.autosave_write(Te,null);if(Ie&&!Re)try{var s=Dialog.autosave_read(Te);if(s)return r("Found autosave..."),void function(n){be=(be=qe.slice(0,Ge)).slice(0,Ce).concat(n.ram),e.endmem=n.endmem,e.pc=n.pc,ye=[];var r=n.stack.slice(0);for(;r.length;){var t=A(r);t||G("vm_autorestore failed: bad stack frame"),ye.unshift(t)}for(var s=0;s<ye.length;s++)ye[s].depth=s;if(e.frame=ye[ye.length-1],void 0===n.heapstart)Ae=0,Ee=[],We=[];else{Ae=n.heapstart,Ee=[];for(var a=0;a<n.usedlist.length;a+=2){var o=n.usedlist[a],i=n.us
edlist[a+1];Ee.push(new sn(o,i))}Ee.sort((function(e,n){return e.addr-n.addr})),We=[];var l=Ae;for(s=0;s<Ee.length;s++){o=Ee[s].addr,i=Ee[s].size;(o<l||o+i>e.endmem)&&G("vm_autorestore failed: corrupt dynamic heap"),o>l&&We.push(new sn(l,o-l)),l=o+i}l<e.endmem&&We.push(new sn(l,e.endmem-l))}on(),de(n.stringtable),he(n.iosysmode,n.iosysrock),e.protectstart=n.protectstart,e.protectend=n.protectend,void 0===n.srand_table?K(0):(K(1),re=n.srand_table.slice(0),ee=n.srand_index1,ne=n.srand_index2);for(var a in oe=n.accel_params.slice(0),n.accel_funcnum_map)ae[a]=n.accel_funcnum_map[a],se[a]=e.accel_func_map[ae[a]];Glk.restore_allstate(n.glk),Y(0)}(s)}catch(e){r("Autorestore failed, deleting it: "+n(e)),e.stack&&r("JS stack dump:\n"+e.stack),Dialog.autosave_write(Te,null)}$e()}(),fn()}catch(e){if(e.stack&&r("JS stack dump:\n"+e.stack),t(),Glk.fatal_error("Quixe init: "+n(e)),De)throw e}},resume:function(s){try{e.done_executing=e.vm_stopped,fn()}catch(e){if(e.stack&&r("JS stack dump:\n"+e.stack),t(),Glk.fatal_error("
Quixe run: "+n(e)),De)throw e}},get_signature:function(){return Te},get_vm_internals:function(){return e},get_statistics:function(){return{game_image_length:qe.length,total_execution_time:Oe,total_function_calls:Ue,accel_function_calls:Pe,total_path_calls:Be,paths_cached:Qe,paths_compiled:He,strings_cached:Ze,strings_compiled:Je}},get_debuginfo:function(){return ln},ReadByte:function(n){return 4294967295==n?255&e.frame.valstack.pop():f(n)},WriteByte:function(n,r){4294967295==n?e.frame.valstack.push(255&r):h(n,r)},ReadWord:function(n){return 4294967295==n?e.frame.valstack.pop():u(n)},WriteWord:function(n,r){4294967295==n?e.frame.valstack.push(r):m(n,r)},ReadStructField:function(n,r){return 4294967295==n?e.frame.valstack.pop():u(n+4*r)},WriteStructField:function(n,r,t){4294967295==n?e.frame.valstack.push(t):m(n+4*r,t)},SetResumeStore:function(n){e.resumevalue=n},do_autosave:function(n){if(n<0)Dialog.autosave_write(Te,null);else{var t,s,a=(t=e.prevpc,s=f(t),t++,128&s&&(64&s?(s=(s=(s=(s&=63)<<8|f(t))<<8|f(++t))<
<8|f(++t),t++):(s=(s&=127)<<8|f(t),t++)),304!=s?(r("parse_partial_operand: parsed wrong opcode: "+s),null):{selop:15&f(t),argsop:f(t)>>4&15,resop:15&f(t+1)});if(a){var o={},i=e.frame.valstack,l=i.length;i.push(n),8==a.argsop&&i.push(1),8==a.selop&&i.push(192),i.push(0,0,e.prevpc,e.frame.framestart),o.ram=be.slice(Ce),o.endmem=e.endmem,o.pc=e.pc,o.stack=[];for(var c=0;c<ye.length;c++)L(ye[c],o.stack);if(tn()){o.heapstart=Ae,o.usedlist=[];for(c=0;c<Ee.length;c++)o.usedlist.push(Ee[c].addr),o.usedlist.push(Ee[c].size)}for(var u in i.length=l,o.stringtable=e.stringtable,o.iosysmode=e.iosysmode,o.iosysrock=e.iosysrock,o.protectstart=e.protectstart,o.protectend=e.protectend,e.random_func==te&&re&&(o.srand_table=re.slice(0),o.srand_index1=ee,o.srand_index2=ne),o.accel_params=oe.slice(0),o.accel_funcnum_map={},ae)o.accel_funcnum_map[u]=ae[u];o.glk=Glk.save_allstate(),Dialog.autosave_write(Te,o)}}}}}();try{n.Quixe=r}catch(e){}})),r=(n.Quixe,e((function(e,n){var r=function(){var e={};e.VM=null;var n={0:"window",1:"str
eam",2:"fileref",3:"schannel"};function r(e,n,r){this.id=e,this.name=n,this.proto=r}function t(e,n){this.args=e,this.retarg=n}function s(){this.macro="Byte",this.refsize=1,this.serialize=function(){return{type:"ArgString"}}}function a(){this.macro="Word",this.refsize=4,this.serialize=function(){return{type:"ArgUnicode"}}}function o(e){this.signed=e,this.macro="Byte",this.refsize=1,this.literal=e?"arg_char_signed":"arg_char_unsigned",this.serialize=function(){return{type:"ArgChar",signed:e}}}function i(e){this.signed=e,this.macro="Word",this.refsize=4,this.literal=e?"arg_int_signed":"arg_int_unsigned",this.serialize=function(){return{type:"ArgInt",signed:e}}}function l(e){this.name=e,this.macro="Word",this.refsize=4}function f(e){this.form=e}function c(e,n,r,t){this.arg=e,this.passin=n,this.passout=r,this.nonnull=t}function u(e,n,r,t,s){this.arg=e,this.retained=n,this.passin=r,this.passout=t,this.nonnull=s}function d(e){switch(e.type){case"ArgString":return new s;case"ArgUnicode":return new a;case"ArgInt":ret
urn e.signed?p:h;case"ArgChar":return null===e.signed?g:e.signed?_:m}throw new Error("arg_deserialize: unknown type: "+e.type)}var h=new i(!1),p=new i(!0),m=new o(!1),g=new o(null),_=new o(!0),v=new l("window"),w=new l("stream"),k=new l("fileref"),b=new l("schannel"),y={1:new r(1,"exit",new t([],null)),3:new r(3,"tick",new t([],null)),4:new r(4,"gestalt",new t([h,h],new c(h,!1,!0,!0))),5:new r(5,"gestalt_ext",new t([h,h,new u(h,!1,!0,!0,!1)],new c(h,!1,!0,!0))),32:new r(32,"window_iterate",new t([v,new c(h,!1,!0,!1)],new c(v,!1,!0,!0))),33:new r(33,"window_get_rock",new t([v],new c(h,!1,!0,!0))),34:new r(34,"window_get_root",new t([],new c(v,!1,!0,!0))),35:new r(35,"window_open",new t([v,h,h,h,h],new c(v,!1,!0,!0))),36:new r(36,"window_close",new t([v,new c(new f(new t([h,h],null)),!1,!0,!1)],null)),37:new r(37,"window_get_size",new t([v,new c(h,!1,!0,!1),new c(h,!1,!0,!1)],null)),38:new r(38,"window_set_arrangement",new t([v,h,h,v],null)),39:new r(39,"window_get_arrangement",new t([v,new c(h,!1,!0,!1),new c
(h,!1,!0,!1),new c(v,!1,!0,!1)],null)),40:new r(40,"window_get_type",new t([v],new c(h,!1,!0,!0))),41:new r(41,"window_get_parent",new t([v],new c(v,!1,!0,!0))),42:new r(42,"window_clear",new t([v],null)),43:new r(43,"window_move_cursor",new t([v,h,h],null)),44:new r(44,"window_get_stream",new t([v],new c(w,!1,!0,!0))),45:new r(45,"window_set_echo_stream",new t([v,w],null)),46:new r(46,"window_get_echo_stream",new t([v],new c(w,!1,!0,!0))),47:new r(47,"set_window",new t([v],null)),48:new r(48,"window_get_sibling",new t([v],new c(v,!1,!0,!0))),64:new r(64,"stream_iterate",new t([w,new c(h,!1,!0,!1)],new c(w,!1,!0,!0))),65:new r(65,"stream_get_rock",new t([w],new c(h,!1,!0,!0))),66:new r(66,"stream_open_file",new t([k,h,h],new c(w,!1,!0,!0))),67:new r(67,"stream_open_memory",new t([new u(g,!0,!0,!0,!1),h,h],new c(w,!1,!0,!0))),68:new r(68,"stream_close",new t([w,new c(new f(new t([h,h],null)),!1,!0,!1)],null)),69:new r(69,"stream_set_position",new t([w,p,h],null)),70:new r(70,"stream_get_position",new t([w],ne
w c(h,!1,!0,!0))),71:new r(71,"stream_set_current",new t([w],null)),72:new r(72,"stream_get_current",new t([],new c(w,!1,!0,!0))),73:new r(73,"stream_open_resource",new t([h,h],new c(w,!1,!0,!0))),96:new r(96,"fileref_create_temp",new t([h,h],new c(k,!1,!0,!0))),97:new r(97,"fileref_create_by_name",new t([h,new s,h],new c(k,!1,!0,!0))),98:new r(98,"fileref_create_by_prompt",new t([h,h,h],new c(k,!1,!0,!0))),99:new r(99,"fileref_destroy",new t([k],null)),100:new r(100,"fileref_iterate",new t([k,new c(h,!1,!0,!1)],new c(k,!1,!0,!0))),101:new r(101,"fileref_get_rock",new t([k],new c(h,!1,!0,!0))),102:new r(102,"fileref_delete_file",new t([k],null)),103:new r(103,"fileref_does_file_exist",new t([k],new c(h,!1,!0,!0))),104:new r(104,"fileref_create_from_fileref",new t([h,k,h],new c(k,!1,!0,!0))),128:new r(128,"put_char",new t([m],null)),129:new r(129,"put_char_stream",new t([w,m],null)),130:new r(130,"put_string",new t([new s],null)),131:new r(131,"put_string_stream",new t([w,new s],null)),132:new r(132,"put_buff
er",new t([new u(g,!1,!0,!1,!0)],null)),133:new r(133,"put_buffer_stream",new t([w,new u(g,!1,!0,!1,!0)],null)),134:new r(134,"set_style",new t([h],null)),135:new r(135,"set_style_stream",new t([w,h],null)),144:new r(144,"get_char_stream",new t([w],new c(p,!1,!0,!0))),145:new r(145,"get_line_stream",new t([w,new u(g,!1,!1,!0,!0)],new c(h,!1,!0,!0))),146:new r(146,"get_buffer_stream",new t([w,new u(g,!1,!1,!0,!0)],new c(h,!1,!0,!0))),160:new r(160,"char_to_lower",new t([m],new c(m,!1,!0,!0))),161:new r(161,"char_to_upper",new t([m],new c(m,!1,!0,!0))),176:new r(176,"stylehint_set",new t([h,h,h,p],null)),177:new r(177,"stylehint_clear",new t([h,h,h],null)),178:new r(178,"style_distinguish",new t([v,h,h],new c(h,!1,!0,!0))),179:new r(179,"style_measure",new t([v,h,h,new c(h,!1,!0,!1)],new c(h,!1,!0,!0))),192:new r(192,"select",new t([new c(new f(new t([h,v,h,h],null)),!1,!0,!0)],null)),193:new r(193,"select_poll",new t([new c(new f(new t([h,v,h,h],null)),!1,!0,!0)],null)),208:new r(208,"request_line_event",new
t([v,new u(g,!0,!0,!0,!0),h],null)),209:new r(209,"cancel_line_event",new t([v,new c(new f(new t([h,v,h,h],null)),!1,!0,!1)],null)),210:new r(210,"request_char_event",new t([v],null)),211:new r(211,"cancel_char_event",new t([v],null)),212:new r(212,"request_mouse_event",new t([v],null)),213:new r(213,"cancel_mouse_event",new t([v],null)),214:new r(214,"request_timer_events",new t([h],null)),224:new r(224,"image_get_info",new t([h,new c(h,!1,!0,!1),new c(h,!1,!0,!1)],new c(h,!1,!0,!0))),225:new r(225,"image_draw",new t([v,h,p,p],new c(h,!1,!0,!0))),226:new r(226,"image_draw_scaled",new t([v,h,p,p,h,h],new c(h,!1,!0,!0))),232:new r(232,"window_flow_break",new t([v],null)),233:new r(233,"window_erase_rect",new t([v,p,p,h,h],null)),234:new r(234,"window_fill_rect",new t([v,h,p,p,h,h],null)),235:new r(235,"window_set_background_color",new t([v,h],null)),240:new r(240,"schannel_iterate",new t([b,new c(h,!1,!0,!1)],new c(b,!1,!0,!0))),241:new r(241,"schannel_get_rock",new t([b],new c(h,!1,!0,!0))),242:new r(242,"sc
hannel_create",new t([h],new c(b,!1,!0,!0))),243:new r(243,"schannel_destroy",new t([b],null)),244:new r(244,"schannel_create_ext",new t([h,h],new c(b,!1,!0,!0))),247:new r(247,"schannel_play_multi",new t([new u(b,!1,!0,!1,!0),new u(h,!1,!0,!1,!0),h],new c(h,!1,!0,!0))),248:new r(248,"schannel_play",new t([b,h],new c(h,!1,!0,!0))),249:new r(249,"schannel_play_ext",new t([b,h,h,h],new c(h,!1,!0,!0))),250:new r(250,"schannel_stop",new t([b],null)),251:new r(251,"schannel_set_volume",new t([b,h],null)),252:new r(252,"sound_load_hint",new t([h,h],null)),253:new r(253,"schannel_set_volume_ext",new t([b,h,h,h],null)),254:new r(254,"schannel_pause",new t([b],null)),255:new r(255,"schannel_unpause",new t([b],null)),256:new r(256,"set_hyperlink",new t([h],null)),257:new r(257,"set_hyperlink_stream",new t([w,h],null)),258:new r(258,"request_hyperlink_event",new t([v],null)),259:new r(259,"cancel_hyperlink_event",new t([v],null)),288:new r(288,"buffer_to_lower_case_uni",new t([new u(h,!1,!0,!0,!0),h],new c(h,!1,!0,!0))
),289:new r(289,"buffer_to_upper_case_uni",new t([new u(h,!1,!0,!0,!0),h],new c(h,!1,!0,!0))),290:new r(290,"buffer_to_title_case_uni",new t([new u(h,!1,!0,!0,!0),h,h],new c(h,!1,!0,!0))),291:new r(291,"buffer_canon_decompose_uni",new t([new u(h,!1,!0,!0,!0),h],new c(h,!1,!0,!0))),292:new r(292,"buffer_canon_normalize_uni",new t([new u(h,!1,!0,!0,!0),h],new c(h,!1,!0,!0))),296:new r(296,"put_char_uni",new t([h],null)),297:new r(297,"put_string_uni",new t([new a],null)),298:new r(298,"put_buffer_uni",new t([new u(h,!1,!0,!1,!0)],null)),299:new r(299,"put_char_stream_uni",new t([w,h],null)),300:new r(300,"put_string_stream_uni",new t([w,new a],null)),301:new r(301,"put_buffer_stream_uni",new t([w,new u(h,!1,!0,!1,!0)],null)),304:new r(304,"get_char_stream_uni",new t([w],new c(p,!1,!0,!0))),305:new r(305,"get_buffer_stream_uni",new t([w,new u(h,!1,!1,!0,!0)],new c(h,!1,!0,!0))),306:new r(306,"get_line_stream_uni",new t([w,new u(h,!1,!1,!0,!0)],new c(h,!1,!0,!0))),312:new r(312,"stream_open_file_uni",new t([k,h,
h],new c(w,!1,!0,!0))),313:new r(313,"stream_open_memory_uni",new t([new u(h,!0,!0,!0,!1),h,h],new c(w,!1,!0,!0))),314:new r(314,"stream_open_resource_uni",new t([h,h],new c(w,!1,!0,!0))),320:new r(320,"request_char_event_uni",new t([v],null)),321:new r(321,"request_line_event_uni",new t([v,new u(h,!0,!0,!0,!0),h],null)),336:new r(336,"set_echo_line_event",new t([v,h],null)),337:new r(337,"set_terminators_line_event",new t([v,new u(h,!1,!0,!1,!1)],null)),352:new r(352,"current_time",new t([new c(new f(new t([p,h,p],null)),!1,!0,!0)],null)),353:new r(353,"current_simple_time",new t([h],new c(p,!1,!0,!0))),360:new r(360,"time_to_date_utc",new t([new c(new f(new t([p,h,p],null)),!0,!1,!0),new c(new f(new t([p,p,p,p,p,p,p,p],null)),!1,!0,!0)],null)),361:new r(361,"time_to_date_local",new t([new c(new f(new t([p,h,p],null)),!0,!1,!0),new c(new f(new t([p,p,p,p,p,p,p,p],null)),!1,!0,!0)],null)),362:new r(362,"simple_time_to_date_utc",new t([p,h,new c(new f(new t([p,p,p,p,p,p,p,p],null)),!1,!0,!0)],null)),363:new r
(363,"simple_time_to_date_local",new t([p,h,new c(new f(new t([p,p,p,p,p,p,p,p],null)),!1,!0,!0)],null)),364:new r(364,"date_to_time_utc",new t([new c(new f(new t([p,p,p,p,p,p,p,p],null)),!0,!1,!0),new c(new f(new t([p,h,p],null)),!1,!0,!0)],null)),365:new r(365,"date_to_time_local",new t([new c(new f(new t([p,p,p,p,p,p,p,p],null)),!0,!1,!0),new c(new f(new t([p,h,p],null)),!1,!0,!0)],null)),366:new r(366,"date_to_simple_time_utc",new t([new c(new f(new t([p,p,p,p,p,p,p,p],null)),!0,!1,!0),h],new c(p,!1,!0,!0))),367:new r(367,"date_to_simple_time_local",new t([new c(new f(new t([p,p,p,p,p,p,p,p],null)),!0,!1,!0),h],new c(p,!1,!0,!0))),4352:new r(4352,"garglk_set_zcolors",new t([h,h],null)),4353:new r(4353,"garglk_set_zcolors_stream",new t([w,h,h],null)),4354:new r(4354,"garglk_set_reversevideo",new t([h],null)),4355:new r(4355,"garglk_set_reversevideo_stream",new t([w,h],null))};function x(e,n,r){return e instanceof i?n?e.signed?r+" & 0xFFFFFFFF":r:"0":e instanceof o?n?e.signed?"self.cast_signed_char("+r+")"
:r+" & 0xFF":"0":e instanceof l?n?'self.class_obj_from_id("'+e.name+'", '+r+")":"null":"???"}function M(e,n){return e instanceof i?n+" >>> 0":e instanceof o?e.signed?"self.uncast_signed_char("+n+")":n+" & 0xFF":e instanceof l?'self.class_obj_to_id("'+e.name+'", '+n+")":"???"}function z(e){return 128&(e&=255)&&(e+=4294967040),e}function S(e,n){return n?n.disprock:0}function C(e,n){return 0!=n&&n?W[e][n]:null}e.arg_int_unsigned=h,e.arg_int_signed=p,e.arg_char_unsigned=m,e.arg_char_native=g,e.arg_char_signed=_,e.cast_signed_char=function(e){return 128&(e&=255)&&(e-=256),e},e.uncast_signed_char=z,e.class_obj_to_id=S,e.class_obj_from_id=C;var G={};var N=null,j=null,F=-1;e.set_blocked_selector=function(e,n){N=e,j=n.slice(0)};var L=[];e.temp_arg_arrays=L;var A=[];e.retained_arrays=A,e.make_arg_array=function(e,n,r,t){var s;e&&(s={arr:e,addr:n,len:r,arg:t},L.push(s))};var E,W={};return function(){var e;for(e in E=1+Math.round(1e3*Math.random()),n)W[n[e]]={}}(),{set_vm:function(n){e.VM=n},get_function:function(n){var
r,t=G[n];if(void 0===t){if(void 0===(r=y[n]))throw new Error("dispatch: unknown Glk function: "+n);t=function(n){var r,t,d,h,p,m,g,_,v,w,k,b,y,z,S=[],C={},G=0;for(S.push("// no local vars"),S.push("// "+n.id+": "+n.name),h=null,(d=n.proto).retarg&&(h=d.retarg.arg),S.push("var self = this;"),z=Glk.call_may_not_return(n.id),p=0,m=[],r=0;r<d.args.length;r++)if(_=d.args[r],w="glka"+r,m.push(w),C[w]=!0,_ instanceof i||_ instanceof o||_ instanceof l)k=x(_,!0,"callargs["+p+"]"),S.push(w+" = "+k+";"),p+=1;else if(_ instanceof c){if(v=_.arg,S.push("if (callargs["+p+"] == 0) {"),_.nonnull?S.push('  throw new Error("glk '+n.name+': null argument");'):S.push("  "+w+" = null;"),S.push("} else {"),v instanceof i||v instanceof o||v instanceof l)S.push("  "+w+" = new Glk.RefBox();"),k=x(v,_.passin,"self.VM.ReadWord(callargs["+p+"])"),S.push("  "+w+".set_value("+k+");");else{if(!(v instanceof f))throw new Error("buildfunc: unsupported refarg type: "+n.name);for(g=v.form.args,S.push("  "+w+" = new Glk.RefStruct("+g.length+")
;"),t=0;t<g.length;t++)k=x(g[t],_.passin,"self.VM.ReadStructField(callargs["+p+"], "+t+")"),S.push("  "+w+".push_field("+k+");")}S.push("}"),p+=1}else if(_ instanceof u)C.glklen=!0,v=_.arg,S.push("if (callargs["+p+"] == 0) {"),_.nonnull?S.push('  throw new Error("glk '+n.name+': null argument");'):S.push("  "+w+" = null;"),S.push("} else {"),S.push("  glklen = callargs["+(p+1)+"];"),S.push("  "+w+" = Array(glklen);"),_.passin&&(C.ix=!0,C.jx=!0,S.push("  for (ix=0, jx=callargs["+p+"]; ix<glklen; ix++, jx+="+v.refsize+") {"),k=x(v,!0,"self.VM.Read"+v.macro+"(jx)"),S.push("    "+w+"[ix] = "+k+";"),S.push("  }")),_.retained&&(0==G&&S.push("  self.temp_arg_arrays.length = 0;"),G+=1,S.push("  self.make_arg_array("+w+", callargs["+p+"], glklen, self."+v.literal+");")),S.push("}"),p+=2;else{if(!(_ instanceof s||_ instanceof a))throw new Error("buildfunc: unsupported arg type: "+n.name);var N,j;C.ix=!0,C.jx=!0,_ instanceof s?(j="0xE0",N="byte_array_to_string"):(j="0xE2",N="uni_array_to_string"),S.push(w+" = Array();"
),S.push("jx = callargs["+p+"];"),S.push("if (self.VM.ReadByte(jx) != "+j+') throw new Error("glk '+n.name+': string argument must be unencoded");'),S.push("for (jx+="+_.refsize+"; true; jx+="+_.refsize+") {"),S.push("  ix = self.VM.Read"+_.macro+"(jx);"),S.push("  if (ix == 0) break;"),S.push("  "+w+".push(ix);"),S.push("}"),S.push(w+" = Glk."+N+"("+w+");"),p+=1}for(S.push("if (callargs.length != "+p+') throw "glk '+n.name+': wrong number of arguments";'),h||z?(C.glkret=!0,b="glkret = "):b="",S.push(b+("Glk.glk_"+n.name).replace("glk_gar","gar")+"("+m.join(", ")+");"),z&&(S.push("if (glkret === Glk.DidNotReturn) {"),S.push("  self.set_blocked_selector("+n.id+", callargs);"),S.push("  return glkret;"),S.push("}")),p=0,r=0;r<d.args.length;r++)if(w="glka"+r,(_=d.args[r])instanceof i||_ instanceof o||_ instanceof l)p+=1;else if(_ instanceof c){if(v=_.arg,_.passout){if(S.push("if ("+w+") {"),v instanceof i||v instanceof o||v instanceof l)k=M(v,w+".get_value()"),S.push("  self.VM.WriteWord(callargs["+p+"], "+k+")
;");else{if(!(v instanceof f))throw new Error("buildfunc: unsupported refarg type: "+n.name);for(g=v.form.args,t=0;t<g.length;t++)k=M(g[t],w+".get_field("+t+")"),S.push("  self.VM.WriteStructField(callargs["+p+"], "+t+", "+k+");")}S.push("}")}p+=1}else if(_ instanceof u)v=_.arg,_.passout&&!_.retained&&(S.push("if ("+w+") {"),C.ix=!0,C.jx=!0,S.push("  for (ix=0, jx=callargs["+p+"]; ix<glklen; ix++, jx+="+v.refsize+") {"),k=M(v,w+"[ix]"),S.push("    self.VM.Write"+v.macro+"(jx, "+k+")"),S.push("  }"),S.push("}")),p+=2;else{if(!(_ instanceof s||_ instanceof a))throw new Error("buildfunc: unsupported arg type: "+n.name);p+=1}for(k in 0!=G&&S.push("self.temp_arg_arrays.length = 0;"),h?(k=M(h,"glkret"),S.push("return "+k+";")):S.push("return 0;"),y=[],C)y.push(k);return y.length&&(S[0]="var "+y.join(", ")+";"),k=S.join("\n"),new Function("callargs",k).bind(e)}(r),G[n]=t}return t},prepare_resume:function(n){192==N?0!=j[0]&&(F=n.get_field(0)>>>0,e.VM.WriteStructField(j[0],0,n.get_field(0)>>>0),e.VM.WriteStructField(
j[0],1,S(0,n.get_field(1))),e.VM.WriteStructField(j[0],2,n.get_field(2)>>>0),e.VM.WriteStructField(j[0],3,n.get_field(3)>>>0)):98==N&&e.VM.SetResumeStore(S(0,n)),N=null,j=null},check_autosave:function(){return 192==N&&j&&j.length>0&&(2==F||3==F||4==F||8==F)?j[0]:null},class_register:function(e,n,r){if(void 0===r){if(n.disprock)throw new Error("class_register: object is already registered");n.disprock=E,E++}else{if(n.disprock!=r)throw new Error("class_register: object is not already registered");E<=r&&(E=r+1)}W[e][n.disprock]=n},class_unregister:function(e,n){if(!n.disprock||void 0===W[e][n.disprock])throw new Error("class_unregister: object is not registered");delete W[e][n.disprock],n.disprock=void 0},class_obj_to_id:S,class_obj_from_id:C,retain_array:function(e,n){var r,t;if(e){if(void 0!==n){if(e!==n.arr)throw new Error("retain_array: array does not match useobj");if((t={addr:n.addr,len:n.len,arr:e,arg:d(n.arg)}).len!=e.length)throw new Error("retain_array: array length from useobj does not match")}else f
or(t=void 0,r=0;r<L.length;r++)if(L[r].arr===e){t=L[r];break}if(void 0===t)throw new Error("retain_array: array is not an argument");for(r=0;void 0!==A[r];r++);A[r]=t}},unretain_array:function(n){var r,t,s;if(n){for(s=void 0,r=0;r<A.length;r++)if(void 0!==A[r]&&A[r].arr===n){s=A[r],delete A[r];break}if(void 0===s)throw new Error("unretain_array: array was never retained");if(s.arg instanceof i)for(r=0,t=s.addr;r<s.len;r++,t+=4)e.VM.WriteWord(t,s.arr[r]>>>0);else{if(!(s.arg instanceof o))throw new Error("unretain_array: unsupported refarg type");if(s.arg.signed)for(r=0,t=s.addr;r<s.len;r++,t++)e.VM.WriteByte(t,z(s.arr[r]));else for(r=0,t=s.addr;r<s.len;r++,t++)e.VM.WriteByte(t,255&s.arr[r])}}},get_retained_array:function(e){var n;for(n=0;n<A.length;n++)if(void 0!==A[n]&&A[n].arr===e)return A[n];return null}}}();try{n.GiDispa=r}catch(e){}}))),t=(r.GiDispa,e((function(e,n){var r=function(){var e,n,r={vm:null,io:null,spacing:4,use_query_story:!0,default_story:null,set_page_title:!0,default_page_title:"Game",game
_format_name:"",exit_warning:"The game session has ended.",image_info_map:null,proxy_url:"https://zcode.appspot.com/proxy/"},t=null,s={},a=null,o={},i={};function l(e){if(e.match(/^(file|data|http|https):/i))return e;var n=document.createElement("div");return n.innerHTML="<a></a>",n.firstChild.href=e,n.innerHTML=n.innerHTML,n.firstChild.href}function f(e){if(null!=r.image_info_map&&(t=r.image_info_map[e]))return t;var n=o["Pict:"+e];if(n){var t={image:e};if("JPEG"==n.type?t.type="jpeg":"PNG "==n.type?t.type="png":t.type="????",void 0===n.imagesize){var s=void 0;"JPEG"==n.type?s=function(e){var n=0;for(;n<e.length;){if(255!=e[n])return void GlkOte.log("find_dimensions_jpeg: marker is not 0xFF");for(;255==e[n];)n+=1;var r=e[n];if(n+=1,!(1==r||r>=208&&r<=217)){var t=e[n+0]<<8|e[n+1];if(r>=192&&r<=207&&200!=r){if(t<7)return void GlkOte.log("find_dimensions_jpeg: SOF block is too small");var s={};return s.height=e[n+3]<<8|e[n+4],s.width=e[n+5]<<8|e[n+6],s}n+=t}}return void GlkOte.log("find_dimensions_jpeg: no SOF
marker found")}(n.content):"PNG "==n.type&&(s=function(e){var n=0;if(137!=e[0]||"PNG"!=String.fromCharCode.apply(this,e.slice(1,4)))return void GlkOte.log("find_dimensions_png: PNG signature does not match");n+=8;for(;n<e.length;){var r=e[n+0]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3];n+=4;var t=String.fromCharCode.apply(this,e.slice(n,n+4));if(n+=4,"IHDR"==t){var s={};return s.width=e[n+0]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3],n+=4,s.height=e[n+0]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3],n+=4,s}n+=r,n+=4}return void GlkOte.log("find_dimensions_png: no PNG header block found")}(n.content)),s&&(n.imagesize=s)}n.imagesize&&(t.width=n.imagesize.width,t.height=n.imagesize.height);var a=i["Pict:"+e];return a&&(t.alttext=a),t}}function c(e){var n,r=Array(e.length);for(n=0;n<e.length;n++)r[n]=255&e.charCodeAt(n);return r}function u(e){for(var n,r=[],t=0;t<e.length;){var s,a,o,i;if(t>=e.length)break;if(s=e[t],t++,s<128)n=s;else{if(t>=e.length)break;if(a=e[t],t++,128!=(192&a))break;if(192==(224&s))n=(31&s)<<6,n|=63&a;else{if(t>=e.length)bre
ak;if(o=e[t],t++,128!=(192&o))break;if(224==(240&s))n=(15&s)<<12&61440,n|=(63&a)<<6&4032,n|=63&o;else{if(240!=(240&s))break;if(t>=e.length)break;if(i=e[t],t++,128!=(192&i))break;n=(7&s)<<18&1835008,n|=(63&a)<<12&258048,n|=(63&o)<<6&4032,n|=63&i}}}r.push(n)}return String.fromCharCode.apply(this,r)}if(window.atob)n=function(e){var n,r=atob(e),t=Array(r.length);for(n=0;n<r.length;n++)t[n]=r.charCodeAt(n);return t};else{var d=function(){var e,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r=[];for(e=0;e<n.length;e++)r[n.charAt(e)]=e;return r}();n=function(e){for(var n,r,t,s,a,o,i=[],l=0,f=e.length;l<f;)n=(d[e.charAt(l++)]<<2)+((s=d[e.charAt(l++)])>>4),r=((15&s)<<4)+((a=d[e.charAt(l++)])>>2),t=((3&a)<<6)+(o=d[e.charAt(l++)]),i.push(n,r,t);return 64==o&&i.pop(),64==a&&i.pop(),i}}function h(e){if(0!=e.length){if(70==e[0]&&79==e[1]&&82==e[2]&&77==e[3]){var n=String.fromCharCode(e[8],e[9],e[10],e[11]);if("IFZS"==n)return void r.io.fatal_error("This is a saved-game file, not a "+r.game_format_na
me+" game file. You must launch the game first, then restore your save.");if("IFRS"!=n)return void r.io.fatal_error("This IFF file is not a Blorb file!");if(r.blorb_gamechunk_type)try{e=function(e,n){for(var t,l=e.length,f=[],c=null,d=12;d<l;){var h=String.fromCharCode(e[d+0],e[d+1],e[d+2],e[d+3]),p=e[(d+=4)+0]<<24|e[d+1]<<16|e[d+2]<<8|e[d+3];if(d+=4,"RIdx"==h){var m=e[(y=d)+0]<<24|e[y+1]<<16|e[y+2]<<8|e[y+3];for(y+=4,t=0;t<m;t++){var g=String.fromCharCode(e[y+0],e[y+1],e[y+2],e[y+3]),_=e[(y+=4)+0]<<24|e[y+1]<<16|e[y+2]<<8|e[y+3],v=e[(y+=4)+0]<<24|e[y+1]<<16|e[y+2]<<8|e[y+3];y+=4,f.push({usage:g,num:_,pos:v})}}if("IFmd"==h){var w=u(b=e.slice(d,d+p)),k=$("<metadata>").html(w).find("bibliographic").children();if(k.length)for(t=0;t<k.length;t++)G=k[t],s[G.tagName.toLowerCase()]=G.textContent}if("Dbug"==h&&r.debug_info_chunk){var b=e.slice(d,d+p);a=b}if("RDes"==h){var y,x=e[(y=d)+0]<<24|e[y+1]<<16|e[y+2]<<8|e[y+3];for(y+=4,t=0;t<x;t++){var M=String.fromCharCode.apply(this,e.slice(y,y+4)),z=e[(y+=4)+0]<<24|e[y+1]
<<16|e[y+2]<<8|e[y+3],S=e[(y+=4)+0]<<24|e[y+1]<<16|e[y+2]<<8|e[y+3];y+=4;var C=u(e.slice(y,y+S));y+=S,i[M+":"+z]=C}}1&(d+=p)&&d++}for(t=0;t<f.length;t++){var G;d=(G=f[t]).pos,h=String.fromCharCode(e[d+0],e[d+1],e[d+2],e[d+3]),p=e[(d+=4)+0]<<24|e[d+1]<<16|e[d+2]<<8|e[d+3],d+=4,G.type=h,G.len=p,G.content=null,"Exec"==G.usage&&0==G.num&&h==n?c=e.slice(d,d+p):(G.content="FORM"==h?e.slice(d-8,d+p):e.slice(d,d+p),o[G.usage+":"+G.num]=G)}return c}(e,r.blorb_gamechunk_type)}catch(e){return void r.io.fatal_error("Blorb file could not be parsed: "+e)}if(!e)return void r.io.fatal_error("Blorb file contains no "+r.game_format_name+" game!")}var l=null;s&&(l=s.title),!l&&t&&(l=t.slice(t.lastIndexOf("/")+1)),l||(l=r.default_page_title),l||(l="Game"),r.recording_label||(r.recording_label=l),r.set_page_title&&(document.title=l+" - "+r.engine_name),r.vm.prepare(e,r),r.io.init(r)}else r.io.fatal_error("No game file was loaded. (Zero-length response.)")}return e=window.btoa?function(e){for(var n=[],r=e.length,t=0;t<r;t+=16384)
n.push(String.fromCharCode.apply(String,e.slice(t,t+16384)));return btoa(n.join(""))}:function(e){for(var n,r,t,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=[],o=0;o<e.length;o+=3)n=e[o],r=e[o+1],t=e[o+2],a.push(s.charAt(n>>2&63)),a.push(s.charAt(n<<4&48|r>>4&15)),a.push(s.charAt(r<<2&60|t>>6&3)),a.push(s.charAt(63&t));return void 0===r&&a.length>=2&&(a[a.length-2]="="),void 0===t&&a.length>=1&&(a[a.length-1]="="),a.join("")},{load_run:function(e,s,a){a?"string"==typeof a&&(a={format:a}):a={};var o=a.format;if(o||(o="array"),r.io=window.Glk,r.vm=window.Quixe,e||(e=window.game_options),!e||!window.Quixe||e.vm&&e.vm!==window.Quixe||(r.engine_name="Quixe",r.blorb_gamechunk_type="GLUL",r.game_format_name="Glulx"),e&&jQuery.extend(r,e),null!=r.image_info_map&&"string"===jQuery.type(r.image_info_map)&&(window[r.image_info_map]?r.image_info_map=window[r.image_info_map]:delete r.image_info_map),t=null,r.use_query_story){var i=function(){var e={},n=location.search.substring(1,location.searc
h.length);if(n.length){var r=n.split("&");n=n.replace(/\+/g," ");for(var t=0;t<r.length;t++){var s=r[t].split("="),a=decodeURIComponent(s[0]),o=2==s.length?decodeURIComponent(s[1]):a;e[a]=o}}return e}();t=i.story}if(t||!s)if(t||(t=r.default_story),t){s=null;var f=new XMLHttpRequest,u=void 0!==f.overrideMimeType,d=void 0!==f.withCredentials;f=null;var p=/^(file:|(\w+:)?\/\/[^\/?#]+)/,m=p.exec(location)[0],g=p.exec(t),_=!g,v=g?g[0]:m,w=m==v;navigator.userAgent.match(/chrome/i)&&"file:"==v&&(w=!1);var k=t.match(/[.]js$/i);if(GlkOte.log("GiLoad: is_relative="+_+", same_origin="+w+", binary_supported="+u+", crossorigin_supported="+d),k&&w)return GlkOte.log("GiLoad: trying old-fashioned load..."),window.processBase64Zcode=function(e){h(n(e))},void jQuery.ajax(t,{type:"GET",dataType:"script",cache:!0,error:function(e,n,s){r.io.fatal_error("The story could not be loaded. ("+t+"): Error "+n+": "+s)}});if(k){if(GlkOte.log("GiLoad: trying script load..."),window.processBase64Zcode=function(e){h(n(e))},!(x=$("head")).le
ngth)return void r.io.fatal_error("This page has no <head> element!");var b=$("<script>",{src:t,type:"text/javascript"});x.get(0).appendChild(b.get(0))}else{if(u&&w)return GlkOte.log("GiLoad: trying binary load..."),void jQuery.ajax(t,{type:"GET",beforeSend:function(e,n){e.overrideMimeType("text/plain; charset=x-user-defined")},success:function(e,n,r){h(c(e))},error:function(e,n,s){r.io.fatal_error("The story could not be loaded. ("+t+"): Error "+n+": "+s)}});if("file:"!=v){var y=t;if(_&&(y=l(t),GlkOte.log("GiLoad: absolutize "+t+" to "+y)),d)return GlkOte.log("GiLoad: trying proxy load... ("+r.proxy_url+")"),void jQuery.ajax(r.proxy_url,{type:"GET",data:{encode:"base64",url:y},error:function(e,n,s){r.io.fatal_error("The story could not be loaded. ("+t+"): Error "+n+": "+s)},success:function(e,r,t){h(n(e))}});var x,M=r.proxy_url+"?encode=base64&callback=processBase64Zcode&url="+y;if(GlkOte.log("GiLoad: trying proxy-script load... ("+M+")"),window.processBase64Zcode=function(e){h(n(e))},(x=$("head")).length){
b=$("<script>",{src:M,type:"text/javascript"});x.append(b)}else r.io.fatal_error("This page has no <head> element!")}else r.io.fatal_error("The story could not be loaded. ("+t+"): A local file cannot be sent to the proxy.")}}else r.io.fatal_error("No story file specified!");else{switch(GlkOte.log("GiLoad: trying pre-loaded load ("+o+")..."),o){case"base64":s=n(s);break;case"raw":s=c(s);break;case"array":break;default:return void r.io.fatal_error("Could not decode story file data: "+o)}h(s)}},find_data_chunk:function(e){var n=o["Data:"+e];if(!n)return null;var r=n.type;return"FORM"==r&&(r="BINA"),{data:n.content,type:r}},get_metadata:function(e){return s[e]},get_debug_info:function(){return a},get_image_info:f,get_image_url:function(n){if(r.image_info_map){var t=r.image_info_map[n];if(t&&t.url)return l(t.url)}var s=o["Pict:"+n];if(s){if(s.dataurl)return s.dataurl;if(f(n)&&s.content){var a="application/octet-stream";"JPEG"==s.type?a="image/jpeg":"PNG "==s.type&&(a="image/png");var i=e(s.content);return s.datau
rl="data:"+a+";base64,"+i,s.dataurl}}}}}();try{n.GiLoad=r}catch(e){}})));t.GiLoad;window.Quixe=n.Quixe,window.GiDispa=r.GiDispa,window.GiLoad=t.GiLoad}();