/*
Parchment
=========
Built: 2019-09-25
Copyright (c) 2008-2019 The Parchment Contributors
BSD licenced
https://github.com/curiousdannii/parchment
*/
!function(){"use strict";var a,b,c=0,d=/xyz/.test(function(){xyz})?/\b_super\b/:/.*/;for(b in{toString:1})a=1;Object.subClass=function(b){var e,f,g,h=this.prototype,i=!/native code/.test(""+b.toString)&&b.toString,j=function(a,b){return function(){var c,d=this._super;return this._super=h[a],c=b.apply(this,arguments),this._super=d,c}};c=1,e=new this,c=0;for(f in b)e[f]="function"==typeof b[f]&&"function"==typeof h[f]&&d.test(b[f])?j(f,b[f]):b[f];return!a&&i&&(e.toString=d.test(i)?j("toString",i):i),g=e.init?function(){c||this.init.apply(this,arguments)}:function(){},g.prototype=e,g.constructor=g,g.subClass=Object.subClass,g},window.Class=Object}(),function(){function a(a,b){return a[b]<<24|a[b+1]<<16|a[b+2]<<8|a[b+3]}function b(a){return[a>>24&255,a>>16&255,a>>8&255,255&a]}function c(a,b){return String.fromCharCode(a[b],a[b+1],a[b+2],a[b+3])}function d(a){return[a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2),a.charCodeAt(3)]}var e=Object.subClass({init:function(b){if(this.type="",this.chunks=[],b){if("FORM"!=c(b,0))throw new Error("Not an IFF file");this.type=c(b,8);for(var d=12,e=b.length;e>d;){var f=a(b,d+4);if(0>f||f+d>e)throw new Error("IFF: Chunk out of range");this.chunks.push({type:c(b,d),offset:d,data:b.slice(d+8,d+8+f)}),d+=8+f,f%2&&d++}}},write:function(){for(var a=d(this.type),c=0,e=this.chunks.length;e>c;c++){var f=this.chunks[c],g=f.data,h=g.length;a=a.concat(d(f.type),b(h),g),h%2&&a.push(0)}return d("FORM").concat(b(a.length),a)}});e.num_from=a,e.num_to_word=b,e.text_from=c,e.text_to_word=d,window.IFF=e}();var extend=function(a,b){for(var c in b)a[c]=b[c];return a},rBadBackground=/inh|tra|(\d+, ?){3}0/,$window=$(window),$doc=$(document),$body,bodylineheight;$(function(){$body=$("body");var a=$(" ").appendTo($body);bodylineheight=a.height(),a.remove()}),extend($.cssHooks,{bgcolor:{get:function(a){if(a===document)return $("html").css("background-color");var b=$(a),c=b.css("background-color");return rBadBackground.test(c)?b.parent().css("bgcolor"):c},set:function(a,b){var c=$(a),d=c.parent();c.css("background-color",b),d.get(0)!==document&&rBadBackground.test(d.css("background-color"))&&d.css("bgcolor",b)}}});var scrollPages=window.scrollByPages||function(a){var b=document.documentElement.clientHeight,c=b-Math.min(b/10,2*bodylineheight);scrollBy(0,c*a)},selection=window.getSelection||function(){return document.selection?document.selection.createRange().text:""},TextInput=Object.subClass({init:function(a){var b=this,c=$(" ",{"class":"TextInput",autocapitalize:"off",keydown:function(a){var c,d=b.keyCode=a.which;if("line"==b.mode)return 38==d&&(b.prev_next(1),c=1),40==d&&(b.prev_next(-1),c=1),33==d&&(scrollPages(-1),c=1),34==d&&(scrollPages(1),c=1),13==d&&(b.submitLine(),c=1),a.stopPropagation(),c?!1:void 0},keypress:function(a){return"char"==b.mode?(b.charCode=a.which,b.submitChar(),!1):void 0},keyup:function(){"char"==b.mode&&b.submitChar()}});b.lastinput=$(' ').appendTo(a),$doc.on("click.TextInput keydown.TextInput",function(a){if("INPUT"!=a.target.nodeName&&""==selection())if($window.scrollTop()+$window.height()-c.offset().top>-60)window.scrollTo(0,9e9),a.target=c[0],c.focus().trigger(a),a.stopPropagation();else if("keydown"==a.type&&8==a.which)return!1}),b.history=[],b.input=c,b.container=a,b.statuswin=$("
"),b.scrollParent=$("html, body")},die:function(){$doc.off(".TextInput")},scroll:function(){this.scrollParent.scrollTop(this.lastinput.offset().top-this.statuswin.height()-bodylineheight)},getLine:function(a){var b,c=a.target.children().last(),d=this.input;$doc.trigger({type:"RequestingTextInput"}),this.order=a,this.mode="line",this.current=0,this.mutable_history=this.history.slice(),this.mutable_history.unshift(""),b=/^([\s\S]+
)(.+?)$/.exec(c.html()),b?(c.html(b[1]),b=c.clone().html(b[2]).appendTo(c)):b=c,d.width(20).val("").appendTo(b).width(a.target.offset().left+a.target.width()-d.offset().left),this.scroll()},submitLine:function(){var a=this.input.val();this.lastinput.appendTo(this.input.parent()),this.input.detach(),a!=this.history[0]&&/\S/.test(a)&&this.history.unshift(a),$doc.trigger({type:"TextInput",mode:"line",input:a}),this.mode=0,this.order.response=a,this.order.terminator=13,this.callback(this.order)},prev_next:function(a){var b=this.input,c=this.mutable_history,d=this.current,e=d+a;e
=0&&(c[d]=b.val(),b.val(c[e]),this.current=e)},getChar:function(a){this.order=a,this.mode="char",$doc.trigger({type:"RequestingTextInput"}),this.keyCode=this.charCode=0,this.input.addClass("CharInput").appendTo(this.container),this.scroll()},submitChar:function(){var a=this.keyCode,b=this.charCode,c={keyCode:a,charCode:b};(a||b)&&(this.input.detach().removeClass("CharInput"),$doc.trigger({type:"TextInput",mode:"char",input:c}),this.mode=0,this.order.response=c,this.callback(this.order))}}),TextGrid=Object.subClass({init:function(a,b){var c=this;this.elem=a.addClass("TextGrid").on("stream",function(a){return c.stream(a.order.data),!1}).css("bgcolor","inherit"),this.lineheight=b.env.charheight,this.io=b,b.TextInput.statuswin=this.elem,this.lines=[],this.styles=[],this.cursor=[0,0],this.vmheight=0,this.seenheight=0,$doc.on("RequestingTextInput",function(a){c.seenheight===c.lines.length&&(c.lines.length=c.vmheight,c.write()),c.seenheight=c.lines.length})},stream:function(a){function b(a){"undefined"==typeof a&&j.vmheight++;var b=[],c=0;for(a=a||m.length;c++c.lines){for(f=this.vmheight;fm.length;)b()}if("clear"==d){for(f=0;fk&&(k=0),0>l&&(l=0);k>=m.length;)b();if("get_cursor"==d&&(c.pos=[k,l],this.io.input(c)),"stream"==d){for(;k>=m.length;)b();for(i="",c.props&&(h=$("",c.props).appendTo(this.elem),g=h.attr("style"),g&&(i+=' style="'+g+'"'),g=h.attr("class"),g&&(i+=' class="'+g+'"')),""===i&&(i=void 0),g=c.text,f=0;f=m.length&&ff;f++)m[k][f]=" ",n[k][f]=void 0}this.cursor=[k,l],this.write()},write:function(){for(var a,b,c,d="",e=0,f=this.lines,g=this.styles;e"+b+" ",c=g[e][a],b=f[e][a]);d+=""+b+" ",++e")}this.elem.html(d),$(".main").css("padding-top",this.elem.height())}}),basic_stream_handler=function(a){var b=a.order,c=a.io.structures[b.name]||{node:"span"},d=b.node||b.props&&b.props.node||c.node,e=$("<"+d+">",b.props||{}).appendTo(a.target);return b.name&&e.addClass(b.name),b.text&&e.text(b.text.replace(/\r/g,"\n")),c.func&&c.func(e,a.io),!1};StructIO=Object.subClass({init:function(a){a=extend({},a),this.env=a;var b=$(a.container),c=$("00000 ").appendTo(b),d=c.height(),e=c.width()/5,f=Math.min(Math.floor(b.width()/e),a.width||80);c.remove(),extend(a,{charheight:d,charwidth:e,width:f,fgcolour:b.css("color"),bgcolour:b.css("bgcolor")}),b.width(f*e+2),this.container=b,this.target=b,b.on("stream",basic_stream_handler),this.TextInput=new TextInput(b),this.structures={main:{node:"div"},status:{node:"div",func:function(a,b){new TextGrid(a,b)}}}},event:function(a){var b,c,d,e,f=this.target,g=this.TextInput;for(d=0;d0&&b(".load").detach()},FatalError.prototype={onError:function(c){var d=c.message;b("#parchment").append('An error occurred:
'+d+"\n\n"+c.traceback+" "),a.console&&console.error(d)},_makeTraceback:function(a){for(var b="",c=0,d=100;null!=a&&d>c;){var e=a.toString();if(e){var f=e.match(/function (\w*)/);b=f&&f[1]?"\n "+f[1]+b:"\n (anonymous function)"+b}else b="\n (anonymous function)"+b;try{a=a.caller}catch(g){a=null}c++}return c==d&&(b="..."+b),"Traceback (most recent call last):\n"+b}}}(jQuery),function(a,b){function c(a,c){b.ajax(a,{dataType:"binary"}).success(function(a,b,d){c(d.responseArray)})}a.execScript&&execScript("Function VBCStr(x)\nVBCStr=CStr(x)\nEnd Function\nFunction VBLastAsc(x)\nDim l\nl=LenB(x)\nIf l mod 2 Then\nVBLastAsc=AscB(MidB(x,l,1))\nElse\nVBLastAsc=-1\nEnd If\nEnd Function","VBScript");var d=/chrome\/(\d+)/i.exec(navigator.userAgent),e=d&&parseInt(d[1])>4,f=function(a){return a.replace(/\u20ac/g,"\x80").replace(/\u201a/g,"\x82").replace(/\u0192/g,"\x83").replace(/\u201e/g,"\x84").replace(/\u2026/g,"\x85").replace(/\u2020/g,"\x86").replace(/\u2021/g,"\x87").replace(/\u02c6/g,"\x88").replace(/\u2030/g,"\x89").replace(/\u0160/g,"\x8a").replace(/\u2039/g,"\x8b").replace(/\u0152/g,"\x8c").replace(/\u017d/g,"\x8e").replace(/\u2018/g,"\x91").replace(/\u2019/g,"\x92").replace(/\u201c/g,"\x93").replace(/\u201d/g,"\x94").replace(/\u2022/g,"\x95").replace(/\u2013/g,"\x96").replace(/\u2014/g,"\x97").replace(/\u02dc/g,"\x98").replace(/\u2122/g,"\x99").replace(/\u0161/g,"\x9a").replace(/\u203a/g,"\x9b").replace(/\u0153/g,"\x9c").replace(/\u017e/g,"\x9e").replace(/\u0178/g,"\x9f")},g=function(a,b){var c,b=b||[],d=0;for(c=a.length%8;c>d;++d)b.push(255&a.charCodeAt(d));for(c=a.length;c>d;)b.push(255&a.charCodeAt(d++),255&a.charCodeAt(d++),255&a.charCodeAt(d++),255&a.charCodeAt(d++),255&a.charCodeAt(d++),255&a.charCodeAt(d++),255&a.charCodeAt(d++),255&a.charCodeAt(d++));return b},h=function(a,b){return(b||"")+String.fromCharCode.apply(1,a)},i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",j=function(){for(var a=[],b=0;bm;)h=j[b.charAt(m++)],i=j[b.charAt(m++)],k=j[b.charAt(m++)],l=j[b.charAt(m++)],d=(h<<2)+(i>>4),e=((15&i)<<4)+(k>>2),f=((3&k)<<6)+l,c.push(d,e,f);return 64==l&&c.pop(),64==k&&c.pop(),c},l=function(b,c){if(a.btoa)return btoa(h(b,c));for(var d,e,f,g,j,k,l,c=c||"",m=0,n=b.length;n>m;)d=b[m++],e=b[m++],f=b[m++],g=d>>2,j=((3&d)<<4)+(e>>4),k=((15&e)<<2)+(f>>6),l=63&f,c+=i.charAt(g)+i.charAt(j)+i.charAt(k)+i.charAt(l);return isNaN(e)?c=c.slice(0,-2)+"==":isNaN(f)&&(c=c.slice(0,-1)+"="),c},m=function(a){for(var b,c=VBCStr(a),d=VBLastAsc(a),e=[],f=0,g=c.length%4;g>f;)e.push(255&(b=c.charCodeAt(f++)),b>>8);for(g=c.length;g>f;)e.push(255&(b=c.charCodeAt(f++)),b>>8,255&(b=c.charCodeAt(f++)),b>>8,255&(b=c.charCodeAt(f++)),b>>8,255&(b=c.charCodeAt(f++)),b>>8);return d>-1&&e.push(d),e},n=jQuery.ajaxSettings.xhr(),o={binary:n.overrideMimeType?"charset":"responseBody"in n?"responseBody":0},p=function(c,d,e){var h,i;c=b.trim(c),"base64"==e.mode?a.atob?(i=atob(c),h=g(i)):h=k(c):"charset"==e.mode?(i=f(c),h=g(i)):h=m(e.xhr.responseBody),e.responseArray=h,e.responseText=i};n=void 0,b.ajaxPrefilter("binary",function(a,c,d){var f=a.isLocal&&!a.crossDomain&&e?0:o.binary,g=a.xhr;return a.xhr=function(){return d.xhr=g.apply(a)},a.binary=f,d.done(p),a.jsonp=!1,a.jsonpCallback="processBase64Zcode",d.mode="base64",".js"==a.url.slice(-3).toLowerCase()?"jsonp":f&&!a.crossDomain?"text":a.legacy?(a.url=a.legacy,"jsonp"):(a.data="url="+a.url,a.url=parchment.options.proxy_url,f&&b.support.cors?"text":(a.data+="&encode=base64&callback=pproxy",a.jsonpCallback="pproxy","jsonp"))}),b.ajaxPrefilter("text",function(a,b,c){c.mode=a.binary,"charset"==c.mode&&(a.mimeType="text/plain; charset=windows-1252")}),a.file={text_to_array:g,array_to_text:h,base64_decode:k,base64_encode:l,support:o},a.file.download_to_array=c}(a,jQuery),function(a){'Parchment is loading.
> _
')},stylesheet_add:function(){var b,c=arguments;for(b=0;b",{rel:"stylesheet",href:c[b]}).appendTo("head")},load_panels:function(){var b=parchment.options.panels;-1!=a.inArray("ifdb",b)&&(this.panels.ifdb=a('Find stories to play at the Interactive Fiction Database .')),-1!=a.inArray("url",b)&&(this.panels.url=a('
')),this.library.container.append(this.panels[b[0]]),this.panels.active=b[0]}})}(jQuery),function(a,b){var d=/([-\w\s_]+)(\.[\w]+(\.js)?)?$/,e=/\.js$/,f=function(){throw new FatalError("Parchment could not load the story. Check your connection, and that the URL is correct.")},g=function(c){b(".load").detach();var d=a.runner=new(a[c[2].vm.runner]||Runner)(parchment.options,c[2].vm.engine),e=location.hash;d.toParchment=function(a){c[2].library.fromRunner(d,a)},d.fromParchment({code:"load",data:new parchment.lib.Story(c[2].responseArray).data}),e&&"#"!=e?d.fromParchment({code:"restore",data:file.base64_decode(e.slice(1))}):d.fromParchment({code:"restart"})};parchment.lib.Story=IFF.subClass({init:function(a,c){if(this.title=c,a[0]<9)this._super(),this.chunks.push({type:"ZCOD",data:a}),this.data=a;else if("Glul"==IFF.text_from(a,0))this._super(),this.chunks.push({type:"GLUL",data:a}),this.data=a;else if("FORM"==IFF.text_from(a,0)&&(this._super(a),"IFRS"==this.type))for(var d=0,e=this.chunks.length;e>d;d++){var f=this.chunks[d].type;if("ZCOD"!=f||this.zcode)if("GLUL"!=f||this.glulx){if("IFmd"==f){this.metadata=file.array_to_text(this.chunks[d].data);var g=b(this.metadata);g&&(b("title",g)&&(this.title=b("title",g).text()),b("ifid",g)&&(this.ifid=b("ifid",g).text()),b("release",g)&&(this.release=b("release",g).text()))}}else this.data=this.chunks[d].data;else this.data=this.chunks[d].data}}});var h=Object.subClass({add:function(a){this[a.ifid]=a,a.url&&(this.url[a.url]=a)},url:{}}),i=Object.subClass({init:function(){this.container=b(parchment.options.container),this.ui=new parchment.lib.UI(this)},load:function(e){var f,g,h=this,i=parchment.options,j=c.story,k=c.vm,l=0;if(i.lock_story){if(j=i.default_story,!j)throw new FatalError("Story file not specified")}else{if(!i.default_story&&!j)return this.ui.load_panels();j=j||i.default_story}if(b("#about").remove(),b("body").append(h.ui.load_indicator),b.isArray(j)||(j=[j,0]),g=j[0],h.url=g,f=d.exec(g),f=f?f[1]+" - Parchment":"Parchment",i.page_title&&(a.document.title=f),k)k=parchment.vms[k];else for(;l
')},fromParchment:function(a){var b=a.code;"load"==b&&GiLoad.load_run({set_page_title:!0},a.data,"array")}});