smartdown
Version:
A library for translating, rendering and interacting with Smartdown documents. Smartdown is an extension of Markdown that provides richer media support and reactive programming capability.
1 lines • 293 kB
JavaScript
!function(){var t=MathJax.Extension.fp={version:"0.1"};t.Matcher=MathJax.Object.Subclass({Init:function(){this.cases=[]},Case:function(t,e){return this.cases.push([t,e]),this},match:function(e){var n,i,r,a;if(e instanceof Object&&"isa"in e)for(n=0,i=this.cases.length;n<i;){if(r=this.cases[n][0],e.isa(r)&&(a=r.unapply(e)).isDefined)return this.cases[n][1](a.get);n+=1}throw t.MatchError(e)}}),t.Option=MathJax.Object.Subclass({}),t.Option.Some=t.Option.Subclass({Init:function(t){this.get=t},isEmpty:!1,isDefined:!0,getOrElse:function(t){return this.get},flatMap:function(t){return t(this.get)},map:function(e){return t.Option.Some(e(this.get))},foreach:function(t){t(this.get)},toString:function(){return"Some("+this.get+")"}},{unapply:function(e){return t.Option.Some(e.get)}}),t.Option.None=t.Option.Subclass({Init:function(){},isEmpty:!0,isDefined:!1,getOrElse:function(t){return t},flatMap:function(t){return this},foreach:function(t){},map:function(t){return this},toString:function(){return"None"}},{unapply:function(e){return t.Option.Some(e)}}),t.Option.Augment({},{empty:t.Option.None()}),t.List=MathJax.Object.Subclass({}),t.List.Cons=t.List.Subclass({Init:function(t,e){this.head=t,this.tail=e},isEmpty:!1,at:function(t){if(t<0||t>=this.length())throw Error("no such element at "+t+". index must be lower than "+this.length()+".");for(var e=this,n=0;n<t;n++)e=e.tail;return e.head},length:function(){for(var t=this,e=0;!t.isEmpty;)e++,t=t.tail;return e},prepend:function(e){return t.List.Cons(e,this)},append:function(e){var n=t.List.Cons(e,t.List.empty);return this.reverse().foreach((function(e){n=t.List.Cons(e,n)})),n},concat:function(e){var n=e;return this.reverse().foreach((function(e){n=t.List.Cons(e,n)})),n},foldLeft:function(t,e){var n,i;for(n=e(t,this.head),i=this.tail;!i.isEmpty;)n=e(n,i.head),i=i.tail;return n},foldRight:function(t,e){return this.tail.isEmpty?e(this.head,t):e(this.head,this.tail.foldRight(t,e))},map:function(e){return t.List.Cons(e(this.head),this.tail.map(e))},flatMap:function(t){return t(this.head).concat(this.tail.flatMap(t))},foreach:function(t){for(var e=this;!e.isEmpty;)t(e.head),e=e.tail},reverse:function(){var e=t.List.empty;return this.foreach((function(n){e=t.List.Cons(n,e)})),e},mkString:function(){var e,n,i,r,a;switch(arguments.length){case 0:e=n=i="";break;case 1:n=arguments[0],e=i="";break;case 2:e=arguments[0],n=arguments[1],i="";break;default:e=arguments[0],n=arguments[1],i=arguments[2]}for(r=e+this.head.toString(),a=this.tail;a.isa(t.List.Cons);)r+=n+a.head.toString(),a=a.tail;return r+i},toString:function(){return this.mkString("[",", ","]")}},{unapply:function(e){return t.Option.Some([e.head,e.tail])}}),t.List.Nil=t.List.Subclass({isEmpty:!0,at:function(t){throw Error("cannot get element from an empty list.")},length:function(){return 0},prepend:function(e){return t.List.Cons(e,t.List.empty)},append:function(e){return t.List.Cons(e,t.List.empty)},concat:function(t){return t},foldLeft:function(t,e){return t},foldRight:function(t,e){return t},flatMap:function(t){return this},map:function(t){return this},foreach:function(t){},reverse:function(){return this},mkString:function(){switch(arguments.length){case 0:case 1:return"";case 2:return arguments[0];default:return arguments[0]+arguments[2]}},toString:function(){return"[]"}},{unapply:function(e){return t.Option.Some(e)}}),t.List.Augment({},{empty:t.List.Nil(),fromArray:function(e){var n,i;for(n=t.List.empty,i=e.length-1;i>=0;)n=t.List.Cons(e[i],n),i-=1;return n}}),t.MatchError=MathJax.Object.Subclass({Init:function(t){this.obj=t},toString:function(){return"MatchError("+this.obj+")"}}),t.OffsetPosition=MathJax.Object.Subclass({Init:function(t,e){this.source=t,this.offset=void 0===e?0:e,this._index=null,this._line=null},index:function(){if(null!==this._index)return this._index;this._index=[],this._index.push(0);for(var t=0;t<this.source.length;)"\n"===this.source.charAt(t)&&this._index.push(t+1),t+=1;return this._index.push(this.source.length),this._index},line:function(){var t,e,n;if(null!==this._line)return this._line;for(t=0,e=this.index().length-1;t+1<e;)n=e+t>>1,this.offset<this.index()[n]?e=n:t=n;return this._line=t+1,this._line},column:function(){return this.offset-this.index()[this.line()-1]+1},lineContents:function(){var t,e;return t=this.index(),e=this.line(),this.source.substring(t[e-1],t[e])},toString:function(){return this.line().toString()+"."+this.column()},longString:function(){var t,e;for(t=this.lineContents()+"\n",e=0;e<this.column();)"\t"===this.lineContents().charAt(e)?t+="\t":t+=" ",e+=1;return t+"^"},isLessThan:function(e){return e.isa(t.OffsetPosition)?this.offset<e.offset:this.line()<e.line()||this.line()===e.line()&&this.column()<e.column()}}),t.StringReader=MathJax.Object.Subclass({Init:function(t,e,n){this.source=t,this.offset=e,this.context=n},first:function(){return this.offset<this.source.length?this.source.charAt(this.offset):t.StringReader.EofCh},rest:function(){return this.offset<this.source.length?t.StringReader(this.source,this.offset+1,this.context):this},pos:function(){return t.OffsetPosition(this.source,this.offset)},atEnd:function(){return this.offset>=this.source.length},drop:function(t){var e,n;for(e=this,n=t;n>0;)e=e.rest(),n-=1;return e}},{EofCh:""}),t.Parsers=MathJax.Object.Subclass({},{parse:function(t,e){return t.apply(e)},parseAll:function(e,n){return e.andl((function(){return t.Parsers.eos()})).apply(n)},parseString:function(e,n){var i=t.StringReader(n,0,{lastNoSuccess:void 0});return t.Parsers.parse(e,i)},parseAllString:function(e,n){var i=t.StringReader(n,0,{lastNoSuccess:void 0});return t.Parsers.parseAll(e,i)},_handleWhiteSpace:function(t){var e=t.context.whiteSpaceRegex,n=t.source,i=t.offset,r=e.exec(n.substring(i,n.length));return null!==r?i+r[0].length:i},literal:function(e){return t.Parsers.Parser((function(n){var i,r,a,o,s,h;for(i=n.source,r=n.offset,o=0,s=a=t.Parsers._handleWhiteSpace(n);o<e.length&&s<i.length&&e.charAt(o)===i.charAt(s);)o+=1,s+=1;return o===e.length?t.Parsers.Success(e,n.drop(s-r)):(h=a===i.length?"end of source":"`"+i.charAt(a)+"'",t.Parsers.Failure("`"+e+"' expected but "+h+" found",n.drop(a-r)))}))},regex:function(e){if("/^"!==e.toString().substring(0,2))throw"regex must start with `^' but "+e;return t.Parsers.Parser((function(n){var i,r,a,o;return i=n.source,r=n.offset,null!==(a=e.exec(i.substring(r,i.length)))?t.Parsers.Success(a[0],n.drop(a[0].length)):(o=r===i.length?"end of source":"`"+i.charAt(r)+"'",t.Parsers.Failure("string matching regex "+e+" expected but "+o+" found",n))}))},regexLiteral:function(e){if("/^"!==e.toString().substring(0,2))throw"regex must start with `^' but "+e;return t.Parsers.Parser((function(n){var i,r,a,o,s;return i=n.source,r=n.offset,a=t.Parsers._handleWhiteSpace(n),null!==(o=e.exec(i.substring(a,i.length)))?t.Parsers.Success(o[0],n.drop(a+o[0].length-r)):(s=a===i.length?"end of source":"`"+i.charAt(a)+"'",t.Parsers.Failure("string matching regex "+e+" expected but "+s+" found",n.drop(a-r)))}))},eos:function(){return t.Parsers.Parser((function(e){var n,i;return n=e.source,e.offset,i=t.Parsers._handleWhiteSpace(e),n.length===i?t.Parsers.Success("",e):t.Parsers.Failure("end of source expected but `"+n.charAt(i)+"' found",e)}))},commit:function(e){return t.Parsers.Parser((function(n){var i=e()(n);return t.Matcher().Case(t.Parsers.Success,(function(t){return i})).Case(t.Parsers.Error,(function(t){return i})).Case(t.Parsers.Failure,(function(e){return t.Parsers.Error(e[0],e[1])})).match(i)}))},elem:function(e){return t.Parsers.accept(e).named('"'+e+'"')},accept:function(e){return t.Parsers.acceptIf((function(t){return t===e}),(function(t){return"`"+e+"' expected but `"+t+"' found"}))},acceptIf:function(e,n){return t.Parsers.Parser((function(i){return e(i.first())?t.Parsers.Success(i.first(),i.rest()):t.Parsers.Failure(n(i.first()),i)}))},failure:function(e){return t.Parsers.Parser((function(n){return t.Parsers.Failure(e,n)}))},err:function(e){return t.Parsers.Parser((function(n){return t.Parsers.Error(e,n)}))},success:function(e){return t.Parsers.Parser((function(n){return t.Parsers.Success(e,n)}))},log:function(e,n){return t.Parsers.Parser((function(t){console.log("trying "+n+" at "+t);var i=e().apply(t);return console.log(n+" --\x3e "+i),i}))},rep:function(e){var n=t.Parsers.success(t.List.empty);return t.Parsers.rep1(e).or((function(){return n}))},rep1:function(e){return t.Parsers.Parser((function(n){var i,r,a,o;if(i=[],r=n,(o=(a=e()).apply(n)).isa(t.Parsers.Success)){for(;o.isa(t.Parsers.Success);)i.push(o.result),r=o.next,o=a.apply(r);return t.Parsers.Success(t.List.fromArray(i),r)}return o}))},repN:function(e,n){return 0===e?t.Parsers.success(t.List.empty):t.Parsers.Parser((function(i){var r,a,o,s;for(r=[],a=i,s=(o=n()).apply(a);s.isa(t.Parsers.Success);){if(r.push(s.result),a=s.next,e===r.length)return t.Parsers.Success(t.List.fromArray(r),a);s=o.apply(a)}return s}))},repsep:function(e,n){var i=t.Parsers.success(t.List.empty);return t.Parsers.rep1sep(e,n).or((function(){return i}))},rep1sep:function(e,n){return e().and(t.Parsers.rep(n().andr(e))).to((function(e){return t.List.Cons(e.head,e.tail)}))},chainl1:function(e,n,i){return e().and(t.Parsers.rep(i().and(n))).to((function(t){return t.tail.foldLeft(t.head,(function(t,e){return e.head(t,e.tail)}))}))},chainr1:function(e,n,i,r){return e().and(this.rep(n().and(e))).to((function(e){return t.List.Cons(t.Parsers.Pair(i,e.head),e.tail).foldRight(r,(function(t,e){return t.head(t.tail,e)}))}))},opt:function(e){return e().to((function(e){return t.Option.Some(e)})).or((function(){return t.Parsers.success(t.Option.empty)}))},not:function(e){return t.Parsers.Parser((function(n){return e().apply(n).successful?t.Parsers.Failure("Expected failure",n):t.Parsers.Success(t.Option.empty,n)}))},guard:function(e){return t.Parsers.Parser((function(n){var i=e().apply(n);return i.successful?t.Parsers.Success(i.result,n):i}))},mkList:function(e){return t.List.Cons(e.head,e.tail)},fun:function(t){return function(){return t}},lazyParser:function(e){var n,i;return e instanceof String||"string"==typeof e?(n=t.Parsers.literal(e),function(){return n}):e instanceof Function?e:e instanceof Object?"isa"in e&&e.isa(t.Parsers.Parser)?function(){return e}:e instanceof RegExp?(i=t.Parsers.regexLiteral(e),function(){return i}):t.Parsers.err("unhandlable type"):t.Parsers.err("unhandlable type")},seq:function(){var e,n,i;if(0===(e=arguments.length))return t.Parsers.err("at least one element must be specified");for(n=t.Parsers.lazyParser(arguments[0])(),i=1;i<e;)n=n.and(t.Parsers.lazyParser(arguments[i])),i+=1;return n},or:function(){var e,n,i;if(0===(e=arguments.length))return t.Parsers.err("at least one element must be specified");for(n=t.Parsers.lazyParser(arguments[0])(),i=1;i<e;)n=n.or(t.Parsers.lazyParser(arguments[i])),i+=1;return n}}),t.Parsers.Pair=MathJax.Object.Subclass({Init:function(t,e){this.head=t,this.tail=e},toString:function(){return"("+this.head+"~"+this.tail+")"}},{unapply:function(e){return t.Option.Some([e.head,e.tail])}}),t.Parsers.ParseResult=MathJax.Object.Subclass({Init:function(){},isEmpty:function(){return!this.successful},getOrElse:function(t){return this.isEmpty?t():this.get()}}),t.Parsers.Success=t.Parsers.ParseResult.Subclass({Init:function(t,e){this.result=t,this.next=e},map:function(e){return t.Parsers.Success(e(this.result),this.next)},mapPartial:function(e,n){try{return t.Parsers.Success(e(this.result),this.next)}catch(e){if("isa"in e&&e.isa(t.MatchError))return t.Parsers.Failure(n(this.result),this.next);throw e}},flatMapWithNext:function(t){return t(this.result).apply(this.next)},append:function(t){return this},get:function(){return this.result},successful:!0,toString:function(){return"["+this.next.pos()+"] parsed: "+this.result}},{unapply:function(e){return t.Option.Some([e.result,e.next])}}),t.Parsers.NoSuccess=t.Parsers.ParseResult.Subclass({Init:function(){},_setLastNoSuccess:function(){var t=this.next.context;void 0!==t.lastNoSuccess&&this.next.pos().isLessThan(t.lastNoSuccess.next.pos())||(t.lastNoSuccess=this)},map:function(t){return this},mapPartial:function(t,e){return this},flatMapWithNext:function(t){return this},get:function(){return t.Parsers.error("No result when parsing failed")},successful:!1}),t.Parsers.Failure=t.Parsers.NoSuccess.Subclass({Init:function(t,e){this.msg=t,this.next=e,this._setLastNoSuccess()},append:function(e){var n=e();if(n.isa(t.Parsers.Success))return n;if(n.isa(t.Parsers.NoSuccess))return n.next.pos().isLessThan(this.next.pos())?this:n;throw t.MatchError(n)},toString:function(){return"["+this.next.pos()+"] failure: "+this.msg+"\n\n"+this.next.pos().longString()}},{unapply:function(e){return t.Option.Some([e.msg,e.next])}}),t.Parsers.Error=t.Parsers.NoSuccess.Subclass({Init:function(t,e){this.msg=t,this.next=e,this._setLastNoSuccess()},append:function(t){return this},toString:function(){return"["+this.next.pos()+"] error: "+this.msg+"\n\n"+this.next.pos().longString()}},{unapply:function(e){return t.Option.Some([e.msg,e.next])}}),t.Parsers.Parser=MathJax.Object.Subclass({Init:function(t){this.apply=t},name:"",named:function(t){return this.name=t,this},toString:function(){return"Parser ("+this.name+")"},flatMap:function(e){var n=this.apply;return t.Parsers.Parser((function(t){return n(t).flatMapWithNext(e)}))},map:function(e){var n=this.apply;return t.Parsers.Parser((function(t){return n(t).map(e)}))},append:function(e){var n=this.apply;return t.Parsers.Parser((function(t){return n(t).append((function(){return e().apply(t)}))}))},and:function(e){return this.flatMap((function(n){return e().map((function(e){return t.Parsers.Pair(n,e)}))})).named("~")},andr:function(t){return this.flatMap((function(e){return t().map((function(t){return t}))})).named("~>")},andl:function(t){return this.flatMap((function(e){return t().map((function(t){return e}))})).named("<~")},or:function(t){return this.append(t).named("|")},andOnce:function(e){var n=this.flatMap;return t.Parsers.OnceParser((function(){return n((function(n){return t.Parsers.commit(e).map((function(e){return t.Parsers.Pair(n,e)}))})).named("~!")}))},longestOr:function(e){var n=this.apply;return t.Parsers.Parser((function(i){var r,a;return r=n(i),a=e()(i),r.successful?a.successful?a.next.pos().isLessThan(r.next.pos())?r:a:r:a.successful?a:r.isa(t.Parsers.Error)||a.next.pos().isLessThan(r.next.pos())?r:a})).named("|||")},to:function(t){return this.map(t).named(this.toString()+"^^")},ret:function(e){var n=this.apply;return t.Parsers.Parser((function(t){return n(t).map((function(t){return e()}))})).named(this.toString()+"^^^")},toIfPossible:function(e,n){void 0===n&&(n=function(t){return"Constructor function not defined at "+t});var i=this.apply;return t.Parsers.Parser((function(t){return i(t).mapPartial(e,n)})).named(this.toString()+"^?")},into:function(t){return this.flatMap(t)},rep:function(){var e=this;return t.Parsers.rep((function(){return e}))},chain:function(e){var n,i;return n=this,i=function(){return n},t.Parsers.chainl1(i,i,e)},rep1:function(){var e=this;return t.Parsers.rep1((function(){return e}))},opt:function(){var e=this;return t.Parsers.opt((function(){return e}))}}),t.Parsers.OnceParser=t.Parsers.Parser.Subclass({Init:function(t){this.apply=t},and:function(e){var n=this.flatMap;return t.Parsers.OnceParser((function(){return n((function(n){return t.Parsers.commit(e).map((function(e){return t.Parsers.Pair(n,e)}))}))})).named("~")}}),MathJax.Hub.Startup.signal.Post("Functional Programming library Ready")}(),MathJax.Extension.xypic={version:"0.1",constants:{whiteSpaceRegex:/^(\s+|%[^\r\n]*(\r\n|\r|\n)?)+/,unsupportedBrowserErrorMessage:"Unsupported Browser. Please open with Firefox/Safari/Chrome/Opera"},signalHandler:{signals:[],hookedSignals:[],chains:[],chainSignal:function(t,e){for(var n=0;n<e.length;n++)MathJax.Extension.xypic.signalHandler.addSignal(e[n]);MathJax.Extension.xypic.signalHandler.chains.push({succ:t,pred:e})},addSignal:function(t){for(var e=MathJax.Extension.xypic.signalHandler.signals,n=0;n<e.length;n++)if(e[n]===t)return;MathJax.Extension.xypic.signalHandler.signals.push(t);var i=MathJax.Extension.xypic.signalHandler.handleSignal(t);MathJax.Hub.Register.StartupHook(t,i)},handleSignal:function(t){return function(){MathJax.Extension.xypic.signalHandler.hookedSignals.push(t),MathJax.Extension.xypic.signalHandler.handleChains()}},handleChains:function(){for(var t=0,e=MathJax.Extension.xypic.signalHandler.chains,n=[],i=[];t<e.length;){for(var r=e[t],a=r.pred,o=!0,s=0;s<a.length;s++){var h=a[s];if(!MathJax.Extension.xypic.signalHandler.listenedSignal(h)){o=!1;break}}o?i.push(r.succ):n.push(r),t++}for(MathJax.Extension.xypic.signalHandler.chains=n,t=0;t<i.length;t++)MathJax.Hub.Startup.signal.Post(i[t])},listenedSignal:function(t){for(var e=MathJax.Extension.xypic.signalHandler.hookedSignals,n=0;n<e.length;n++)if(e[n]===t)return!0;return!1}}},MathJax.Extension.xypic.signalHandler.chainSignal("TeX Xy-pic Require",["Functional Programming library Ready","TeX Jax Ready"]),MathJax.Extension.xypic.signalHandler.chainSignal("HTML-CSS Xy-pic Config Require",["TeX Xy-pic Ready","HTML-CSS Jax Ready"]),MathJax.Extension.xypic.signalHandler.chainSignal("SVG Xy-pic Config Require",["TeX Xy-pic Ready","SVG Jax Ready"]),MathJax.Extension.xypic.signalHandler.chainSignal("Device-Independent Xy-pic Require",["HTML-CSS Xy-pic Config Ready"]),MathJax.Extension.xypic.signalHandler.chainSignal("Device-Independent Xy-pic Require",["SVG Xy-pic Config Ready"]),MathJax.Extension.xypic.signalHandler.chainSignal("HTML-CSS Xy-pic Require",["HTML-CSS Xy-pic Config Ready","Device-Independent Xy-pic Ready"]),MathJax.Extension.xypic.signalHandler.chainSignal("SVG Xy-pic Require",["SVG Xy-pic Config Ready","Device-Independent Xy-pic Ready"]),MathJax.Hub.Register.StartupHook("TeX Xy-pic Require",(function(){var t=MathJax.Extension.fp,e=MathJax.ElementJax.mml,n=MathJax.InputJax.TeX,i=n.Definitions,r=MathJax.Extension.xypic,a=r.AST=MathJax.Object.Subclass({});MathJax.Hub.Insert(i,{macros:{hole:["Macro","{\\style{visibility:hidden}{x}}"],objectstyle:["Macro","\\textstyle"],labelstyle:["Macro","\\scriptstyle"],twocellstyle:["Macro","\\scriptstyle"],xybox:"Xybox",xymatrix:"Xymatrix",newdir:"XypicNewdir",includegraphics:"Xyincludegraphics"},environment:{xy:["ExtensionEnv",null,"XYpic"]}});var o=n.formatError;n.formatError=function(t,e,n,i){return void 0!==t.xyjaxError?t.toMML():o(t,e,n,i)},r.memoize=function(t,e){var n=t[e],i=function(){var i=n.call(this),a=function(){return i};return a.reset=r,t[e]=a,i},r=function(){t[e]=i};i.reset=r,r()},a.xypic=e.mbase.Subclass({Init:function(t){this.data=[],this.cmd=t},type:"xypic",inferRow:!1,defaults:{mathbackground:e.INHERIT,mathcolor:e.INHERIT,notation:e.NOTATION.LONGDIV,texClass:e.TEXCLASS.ORD},setTeXclass:e.mbase.setSeparateTeXclasses,toString:function(){return this.type+"("+this.cmd+")"}}),a.xypic.newdir=e.mbase.Subclass({Init:function(t){this.data=[],this.cmd=t},type:"newdir",inferRow:!1,defaults:{mathbackground:e.INHERIT,mathcolor:e.INHERIT,notation:e.NOTATION.LONGDIV,texClass:e.TEXCLASS.ORD},setTeXclass:e.mbase.setSeparateTeXclasses,toString:function(){return this.type+"("+this.cmd+")"}}),a.xypic.includegraphics=e.mbase.Subclass({Init:function(t){this.data=[],this.cmd=t},type:"includegraphics",inferRow:!1,defaults:{mathbackground:e.INHERIT,mathcolor:e.INHERIT,notation:e.NOTATION.LONGDIV,texClass:e.TEXCLASS.ORD},setTeXclass:e.mbase.setSeparateTeXclasses,toString:function(){return this.type+"("+this.cmd+")"}}),a.PosDecor=MathJax.Object.Subclass({Init:function(t,e){this.pos=t,this.decor=e},toString:function(){return this.pos.toString()+" "+this.decor}}),a.Pos=MathJax.Object.Subclass({}),a.Pos.Coord=MathJax.Object.Subclass({Init:function(t,e){this.coord=t,this.pos2s=e},toString:function(){return this.coord.toString()+" "+this.pos2s.mkString(" ")}}),a.Pos.Plus=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"+("+this.coord+")"}}),a.Pos.Minus=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"-("+this.coord+")"}}),a.Pos.Skew=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"!("+this.coord+")"}}),a.Pos.Cover=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return".("+this.coord+")"}}),a.Pos.Then=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return",("+this.coord+")"}}),a.Pos.SwapPAndC=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return";("+this.coord+")"}}),a.Pos.SetBase=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return":("+this.coord+")"}}),a.Pos.SetYBase=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"::("+this.coord+")"}}),a.Pos.ConnectObject=MathJax.Object.Subclass({Init:function(t){this.object=t},toString:function(){return"**("+this.object+")"}}),a.Pos.DropObject=MathJax.Object.Subclass({Init:function(t){this.object=t},toString:function(){return"*("+this.object+")"}}),a.Pos.Place=MathJax.Object.Subclass({Init:function(t){this.place=t},toString:function(){return"?("+this.place+")"}}),a.Pos.PushCoord=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"@+("+this.coord+")"}}),a.Pos.EvalCoordThenPop=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"@-("+this.coord+")"}}),a.Pos.LoadStack=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"@=("+this.coord+")"}}),a.Pos.DoCoord=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"@@("+this.coord+")"}}),a.Pos.InitStack=MathJax.Object.Subclass({Init:function(){},toString:function(){return"@i"}}),a.Pos.EnterFrame=MathJax.Object.Subclass({Init:function(){},toString:function(){return"@("}}),a.Pos.LeaveFrame=MathJax.Object.Subclass({Init:function(){},toString:function(){return"@)"}}),a.Pos.SavePos=MathJax.Object.Subclass({Init:function(t){this.id=t},toString:function(){return'="'+this.id+'"'}}),a.Pos.SaveMacro=MathJax.Object.Subclass({Init:function(t,e){this.macro=t,this.id=e},toString:function(){return"=("+this.macro+' "'+this.id+'")'}}),a.Pos.SaveBase=MathJax.Object.Subclass({Init:function(t){this.id=t},toString:function(){return'=:"'+this.id+'"'}}),a.Pos.SaveStack=MathJax.Object.Subclass({Init:function(t){this.id=t},toString:function(){return'=@"'+this.id+'"'}}),a.Coord=MathJax.Object.Subclass({}),a.Coord.Vector=MathJax.Object.Subclass({Init:function(t){this.vector=t},toString:function(){return this.vector.toString()}}),a.Coord.C=MathJax.Object.Subclass({toString:function(){return"c"}}),a.Coord.P=MathJax.Object.Subclass({toString:function(){return"p"}}),a.Coord.X=MathJax.Object.Subclass({toString:function(){return"x"}}),a.Coord.Y=MathJax.Object.Subclass({toString:function(){return"y"}}),a.Coord.Id=MathJax.Object.Subclass({Init:function(t){this.id=t},toString:function(){return'"'+this.id+'"'}}),a.Coord.Group=MathJax.Object.Subclass({Init:function(t){this.posDecor=t},toString:function(){return"{"+this.posDecor+"}"}}),a.Coord.StackPosition=MathJax.Object.Subclass({Init:function(t){this.number=t},toString:function(){return"s{"+this.number+"}"}}),a.Coord.DeltaRowColumn=MathJax.Object.Subclass({Init:function(t,e,n){this.prefix=t,this.dr=e,this.dc=n},toString:function(){return"["+(""===this.prefix?"":'"'+this.prefix+'"')+this.dr+","+this.dc+"]"}}),a.Coord.Hops=MathJax.Object.Subclass({Init:function(t,e){this.prefix=t,this.hops=e},toString:function(){return"["+(""===this.prefix?"":'"'+this.prefix+'"')+this.hops.mkString("")+"]"}}),a.Coord.HopsWithPlace=MathJax.Object.Subclass({Init:function(t,e,n){this.prefix=t,this.hops=e,this.place=n},toString:function(){return"["+(""===this.prefix?"":'"'+this.prefix+'"')+this.hops.mkString("")+this.place+"]"}}),a.Vector=MathJax.Object.Subclass({}),a.Vector.InCurBase=MathJax.Object.Subclass({Init:function(t,e){this.x=t,this.y=e},toString:function(){return"("+this.x+", "+this.y+")"}}),a.Vector.Abs=MathJax.Object.Subclass({Init:function(t,e){this.x=t,this.y=e},toString:function(){return"<"+this.x+", "+this.y+">"}}),a.Vector.Angle=MathJax.Object.Subclass({Init:function(t){this.degree=t},toString:function(){return"a("+this.degree+")"}}),a.Vector.Dir=MathJax.Object.Subclass({Init:function(t,e){this.dir=t,this.dimen=e},toString:function(){return"/"+this.dir+" "+this.dimen+"/"}}),a.Vector.Corner=MathJax.Object.Subclass({Init:function(t,e){this.corner=t,this.factor=e},toString:function(){return this.corner.toString()+"("+this.factor+")"}}),a.Corner=MathJax.Object.Subclass({}),a.Corner.L=MathJax.Object.Subclass({toString:function(){return"L"}}),a.Corner.R=MathJax.Object.Subclass({toString:function(){return"R"}}),a.Corner.D=MathJax.Object.Subclass({toString:function(){return"D"}}),a.Corner.U=MathJax.Object.Subclass({toString:function(){return"U"}}),a.Corner.CL=MathJax.Object.Subclass({toString:function(){return"CL"}}),a.Corner.CR=MathJax.Object.Subclass({toString:function(){return"CR"}}),a.Corner.CD=MathJax.Object.Subclass({toString:function(){return"CD"}}),a.Corner.CU=MathJax.Object.Subclass({toString:function(){return"CU"}}),a.Corner.LD=MathJax.Object.Subclass({toString:function(){return"LD"}}),a.Corner.RD=MathJax.Object.Subclass({toString:function(){return"RD"}}),a.Corner.LU=MathJax.Object.Subclass({toString:function(){return"LU"}}),a.Corner.RU=MathJax.Object.Subclass({toString:function(){return"RU"}}),a.Corner.NearestEdgePoint=MathJax.Object.Subclass({toString:function(){return"E"}}),a.Corner.PropEdgePoint=MathJax.Object.Subclass({toString:function(){return"P"}}),a.Corner.Axis=MathJax.Object.Subclass({toString:function(){return"A"}}),a.Place=MathJax.Object.Subclass({Init:function(t,e,n,i){this.shaveP=t,this.shaveC=e,this.factor=n,this.slide=i},compound:function(t){return a.Place(this.shaveP+t.shaveP,this.shaveC+t.shaveC,void 0===t.factor?this.factor:t.factor,t.slide)},toString:function(){for(var t="",e=0;e<this.shaveP;e++)t+="<";for(var n=0;n<this.shaveC;n++)t+=">";return void 0!==this.factor&&(t+="("+this.factor+")"),this.slide.dimen.foreach((function(e){t+="/"+e+"/"})),t}}),a.Place.Factor=MathJax.Object.Subclass({Init:function(t){this.factor=t},isIntercept:!1,toString:function(){return this.factor.toString()}}),a.Place.Intercept=MathJax.Object.Subclass({Init:function(t){this.pos=t},isIntercept:!0,toString:function(){return"!{"+this.pos+"}"}}),a.Slide=MathJax.Object.Subclass({Init:function(t){this.dimen=t},toString:function(){return this.dimen.getOrElse("")}}),a.Object=MathJax.Object.Subclass({Init:function(t,e){this.modifiers=t,this.object=e},dirVariant:function(){return this.object.dirVariant()},dirMain:function(){return this.object.dirMain()},isDir:function(){return this.object.isDir()},toString:function(){return this.modifiers.mkString()+this.object.toString()}}),a.ObjectBox=MathJax.Object.Subclass({dirVariant:function(){},dirMain:function(){},isDir:function(){return!1},isEmpty:!1}),a.ObjectBox.Text=a.ObjectBox.Subclass({Init:function(t){this.math=t},toString:function(){return"{"+this.math.toString()+"}"}}),a.ObjectBox.Empty=a.ObjectBox.Subclass({isEmpty:!0,toString:function(){return"{}"}}),a.ObjectBox.Xymatrix=a.ObjectBox.Subclass({Init:function(t){this.xymatrix=t},toString:function(){return this.xymatrix.toString()}}),a.ObjectBox.Txt=a.ObjectBox.Subclass({Init:function(t,e){this.width=t,this.textObject=e},toString:function(){return"\\txt"+this.width+"{"+this.textObject.toString()+"}"}}),a.ObjectBox.Txt.Width=a.ObjectBox.Subclass({}),a.ObjectBox.Txt.Width.Vector=a.ObjectBox.Subclass({Init:function(t){this.vector=t},toString:function(){return this.vector.toString()}}),a.ObjectBox.Txt.Width.Default=a.ObjectBox.Subclass({toString:function(){return""}}),a.ObjectBox.WrapUpObject=a.ObjectBox.Subclass({Init:function(t){this.object=t},toString:function(){return"\\object"+this.object.toString()}}),a.ObjectBox.CompositeObject=a.ObjectBox.Subclass({Init:function(t){this.objects=t},toString:function(){return"\\composite{"+this.objects.mkString(" * ")+"}"}}),a.ObjectBox.Xybox=a.ObjectBox.Subclass({Init:function(t){this.posDecor=t},toString:function(){return"\\xybox{"+this.posDecor.toString()+"}"}}),a.ObjectBox.Cir=a.ObjectBox.Subclass({Init:function(t,e){this.radius=t,this.cir=e},toString:function(){return"\\cir"+this.radius+"{"+this.cir+"}"}}),a.ObjectBox.Cir.Radius=MathJax.Object.Subclass({}),a.ObjectBox.Cir.Radius.Vector=MathJax.Object.Subclass({Init:function(t){this.vector=t},toString:function(){return this.vector.toString()}}),a.ObjectBox.Cir.Radius.Default=MathJax.Object.Subclass({toString:function(){return""}}),a.ObjectBox.Cir.Cir=MathJax.Object.Subclass({}),a.ObjectBox.Cir.Cir.Segment=MathJax.Object.Subclass({Init:function(t,e,n){this.startDiag=t,this.orient=e,this.endDiag=n},toString:function(){return this.startDiag.toString()+this.orient+this.endDiag}}),a.ObjectBox.Cir.Cir.Full=MathJax.Object.Subclass({toString:function(){return""}}),a.ObjectBox.Dir=a.ObjectBox.Subclass({Init:function(t,e){this.variant=t,this.main=e},dirVariant:function(){return this.variant},dirMain:function(){return this.main},isDir:function(){return!0},toString:function(){return"\\dir"+this.variant+"{"+this.main+"}"}}),a.ObjectBox.Curve=a.ObjectBox.Subclass({Init:function(t,e,n){this.modifiers=t,this.objects=e,this.poslist=n},dirVariant:function(){return""},dirMain:function(){return"-"},isDir:function(){return!1},toString:function(){return"\\curve"+this.modifiers.mkString("")+"{"+this.objects.mkString(" ")+" "+this.poslist.mkString("&")+"}"}}),a.ObjectBox.Curve.Modifier=MathJax.Object.Subclass({}),a.ObjectBox.Curve.Modifier.p=MathJax.Object.Subclass({toString:function(){return"~p"}}),a.ObjectBox.Curve.Modifier.P=MathJax.Object.Subclass({toString:function(){return"~P"}}),a.ObjectBox.Curve.Modifier.l=MathJax.Object.Subclass({toString:function(){return"~l"}}),a.ObjectBox.Curve.Modifier.L=MathJax.Object.Subclass({toString:function(){return"~L"}}),a.ObjectBox.Curve.Modifier.c=MathJax.Object.Subclass({toString:function(){return"~c"}}),a.ObjectBox.Curve.Modifier.C=MathJax.Object.Subclass({toString:function(){return"~C"}}),a.ObjectBox.Curve.Modifier.pc=MathJax.Object.Subclass({toString:function(){return"~pc"}}),a.ObjectBox.Curve.Modifier.pC=MathJax.Object.Subclass({toString:function(){return"~pC"}}),a.ObjectBox.Curve.Modifier.Pc=MathJax.Object.Subclass({toString:function(){return"~Pc"}}),a.ObjectBox.Curve.Modifier.PC=MathJax.Object.Subclass({toString:function(){return"~PC"}}),a.ObjectBox.Curve.Modifier.lc=MathJax.Object.Subclass({toString:function(){return"~lc"}}),a.ObjectBox.Curve.Modifier.lC=MathJax.Object.Subclass({toString:function(){return"~lC"}}),a.ObjectBox.Curve.Modifier.Lc=MathJax.Object.Subclass({toString:function(){return"~Lc"}}),a.ObjectBox.Curve.Modifier.LC=MathJax.Object.Subclass({toString:function(){return"~LC"}}),a.ObjectBox.Curve.Modifier.cC=MathJax.Object.Subclass({toString:function(){return"~cC"}}),a.ObjectBox.Curve.Object=MathJax.Object.Subclass({}),a.ObjectBox.Curve.Object.Drop=MathJax.Object.Subclass({Init:function(t){this.object=t},toString:function(){return"~*"+this.object}}),a.ObjectBox.Curve.Object.Connect=MathJax.Object.Subclass({Init:function(t){this.object=t},toString:function(){return"~**"+this.object}}),a.ObjectBox.Curve.PosList=MathJax.Object.Subclass({}),a.ObjectBox.Curve.PosList.CurPos=MathJax.Object.Subclass({toString:function(){return""}}),a.ObjectBox.Curve.PosList.Pos=MathJax.Object.Subclass({Init:function(t){this.pos=t},toString:function(){return this.pos.toString()}}),a.ObjectBox.Curve.PosList.AddStack=MathJax.Object.Subclass({toString:function(){return"~@"}}),a.Modifier=MathJax.Object.Subclass({}),a.Modifier.Vector=a.Modifier.Subclass({Init:function(t){this.vector=t},toString:function(){return"!"+this.vector}}),a.Modifier.RestoreOriginalRefPoint=a.Modifier.Subclass({toString:function(){return"!"}}),a.Modifier.AddOp=a.Modifier.Subclass({Init:function(t,e){this.op=t,this.size=e},toString:function(){return this.op.toString()+" "+this.size}}),a.Modifier.AddOp.Grow=MathJax.Object.Subclass({toString:function(){return"+"}}),a.Modifier.AddOp.Shrink=MathJax.Object.Subclass({toString:function(){return"-"}}),a.Modifier.AddOp.Set=MathJax.Object.Subclass({toString:function(){return"="}}),a.Modifier.AddOp.GrowTo=MathJax.Object.Subclass({toString:function(){return"+="}}),a.Modifier.AddOp.ShrinkTo=MathJax.Object.Subclass({toString:function(){return"-="}}),a.Modifier.AddOp.VactorSize=MathJax.Object.Subclass({Init:function(t){this.vector=t},isDefault:!1,toString:function(){return this.vector.toString()}}),a.Modifier.AddOp.DefaultSize=MathJax.Object.Subclass({isDefault:!0,toString:function(){return""}}),a.Modifier.Shape=MathJax.Object.Subclass({}),a.Modifier.Shape.Point=a.Modifier.Subclass({toString:function(){return"[.]"}}),a.Modifier.Shape.Rect=a.Modifier.Subclass({toString:function(){return"[]"}}),a.Modifier.Shape.Alphabets=a.Modifier.Subclass({Init:function(t){this.alphabets=t},toString:function(){return"["+this.alphabets+"]"}}),a.Modifier.Shape.DefineShape=a.Modifier.Subclass({Init:function(t){this.shape=t},toString:function(){return"["+this.shape+"]"}}),a.Modifier.Shape.Circle=a.Modifier.Subclass({toString:function(){return"[o]"}}),a.Modifier.Shape.L=a.Modifier.Subclass({toString:function(){return"[l]"}}),a.Modifier.Shape.R=a.Modifier.Subclass({toString:function(){return"[r]"}}),a.Modifier.Shape.U=a.Modifier.Subclass({toString:function(){return"[u]"}}),a.Modifier.Shape.D=a.Modifier.Subclass({toString:function(){return"[d]"}}),a.Modifier.Shape.C=a.Modifier.Subclass({toString:function(){return"[c]"}}),a.Modifier.Shape.ChangeColor=a.Modifier.Subclass({Init:function(t){this.colorName=t},toString:function(){return"["+this.colorName+"]"}}),a.Modifier.Shape.CompositeModifiers=a.Modifier.Subclass({Init:function(t){this.modifiers=t},toString:function(){return this.modifiers.mkString("")}}),a.Modifier.Shape.Frame=a.Modifier.Subclass({Init:function(t,e){this.main=t,this.options=e},toString:function(){return"[F"+this.main+this.options.mkString("")+"]"}}),a.Modifier.Shape.Frame.Radius=MathJax.Object.Subclass({Init:function(t){this.vector=t},toString:function(){return":"+this.vector}}),a.Modifier.Shape.Frame.Color=MathJax.Object.Subclass({Init:function(t){this.colorName=t},toString:function(){return":"+this.colorName}}),a.Modifier.Invisible=a.Modifier.Subclass({toString:function(){return"i"}}),a.Modifier.Hidden=a.Modifier.Subclass({toString:function(){return"h"}}),a.Modifier.Direction=a.Modifier.Subclass({Init:function(t){this.direction=t},toString:function(){return this.direction.toString()}}),a.Direction=MathJax.Object.Subclass({}),a.Direction.Compound=MathJax.Object.Subclass({Init:function(t,e){this.dir=t,this.rots=e},toString:function(){return this.dir.toString()+this.rots.mkString()}}),a.Direction.Diag=MathJax.Object.Subclass({Init:function(t){this.diag=t},toString:function(){return this.diag.toString()}}),a.Direction.Vector=MathJax.Object.Subclass({Init:function(t){this.vector=t},toString:function(){return"v"+this.vector.toString()}}),a.Direction.ConstructVector=MathJax.Object.Subclass({Init:function(t){this.posDecor=t},toString:function(){return"q{"+this.posDecor.toString()+"}"}}),a.Direction.RotVector=MathJax.Object.Subclass({Init:function(t){this.vector=t},toString:function(){return":"+this.vector.toString()}}),a.Direction.RotAntiCW=MathJax.Object.Subclass({toString:function(){return"_"}}),a.Direction.RotCW=MathJax.Object.Subclass({toString:function(){return"^"}}),a.Diag=MathJax.Object.Subclass({}),a.Diag.Default=MathJax.Object.Subclass({toString:function(){return""}}),a.Diag.Angle=MathJax.Object.Subclass({toString:function(){return this.symbol}}),a.Diag.LD=a.Diag.Angle.Subclass({symbol:"ld",ang:-3*Math.PI/4,turn:function(t){return"^"===t?a.Diag.RD():a.Diag.LU()}}),a.Diag.RD=a.Diag.Angle.Subclass({symbol:"rd",ang:-Math.PI/4,turn:function(t){return"^"===t?a.Diag.RU():a.Diag.LD()}}),a.Diag.LU=a.Diag.Angle.Subclass({symbol:"lu",ang:3*Math.PI/4,turn:function(t){return"^"===t?a.Diag.LD():a.Diag.RU()}}),a.Diag.RU=a.Diag.Angle.Subclass({symbol:"ru",ang:Math.PI/4,turn:function(t){return"^"===t?a.Diag.LU():a.Diag.RD()}}),a.Diag.L=a.Diag.Angle.Subclass({symbol:"l",ang:Math.PI,turn:function(t){return"^"===t?a.Diag.D():a.Diag.U()}}),a.Diag.R=a.Diag.Angle.Subclass({symbol:"r",ang:0,turn:function(t){return"^"===t?a.Diag.U():a.Diag.D()}}),a.Diag.D=a.Diag.Angle.Subclass({symbol:"d",ang:-Math.PI/2,turn:function(t){return"^"===t?a.Diag.R():a.Diag.L()}}),a.Diag.U=a.Diag.Angle.Subclass({symbol:"u",ang:Math.PI/2,turn:function(t){return"^"===t?a.Diag.L():a.Diag.R()}}),a.ObjectBox.Frame=a.ObjectBox.Subclass({Init:function(t,e){this.radius=t,this.main=e},toString:function(){return"\\frm"+this.radius+"{"+this.main+"}"}}),a.ObjectBox.Frame.Radius=MathJax.Object.Subclass({}),a.ObjectBox.Frame.Radius.Vector=MathJax.Object.Subclass({Init:function(t){this.vector=t},toString:function(){return this.vector.toString()}}),a.ObjectBox.Frame.Radius.Default=MathJax.Object.Subclass({toString:function(){return""}}),a.Decor=MathJax.Object.Subclass({Init:function(t){this.commands=t},toString:function(){return this.commands.mkString(" ")}}),a.Command=MathJax.Object.Subclass({}),a.Command.Save=MathJax.Object.Subclass({Init:function(t){this.pos=t},toString:function(){return"\\save "+this.pos}}),a.Command.Restore=MathJax.Object.Subclass({toString:function(){return"\\restore"}}),a.Command.Pos=MathJax.Object.Subclass({Init:function(t){this.pos=t},toString:function(){return"\\POS "+this.pos}}),a.Command.AfterPos=MathJax.Object.Subclass({Init:function(t,e){this.decor=t,this.pos=e},toString:function(){return"\\afterPOS{"+this.decor+"} "+this.pos}}),a.Command.Drop=MathJax.Object.Subclass({Init:function(t){this.object=t},toString:function(){return"\\drop "+this.object}}),a.Command.Connect=MathJax.Object.Subclass({Init:function(t){this.object=t},toString:function(){return"\\connect "+this.object}}),a.Command.Relax=MathJax.Object.Subclass({toString:function(){return"\\relax"}}),a.Command.Ignore=MathJax.Object.Subclass({Init:function(t,e){this.pos=t,this.decor=e},toString:function(){return"\\ignore{"+this.pos+" "+this.decor+"}"}}),a.Command.ShowAST=MathJax.Object.Subclass({Init:function(t,e){this.pos=t,this.decor=e},toString:function(){return"\\xyshowAST{"+this.pos+" "+this.decor+"}"}}),a.Command.Path=MathJax.Object.Subclass({Init:function(t){this.path=t},toString:function(){return"\\PATH "+this.path}}),a.Command.AfterPath=MathJax.Object.Subclass({Init:function(t,e){this.decor=t,this.path=e},toString:function(){return"\\afterPATH{"+this.decor+"} "+this.path}}),a.Command.Path.Path=MathJax.Object.Subclass({Init:function(t){this.pathElements=t},toString:function(){return this.pathElements.mkString("[",", ","]")}}),a.Command.Path.SetBeforeAction=MathJax.Object.Subclass({Init:function(t){this.posDecor=t},toString:function(){return"~={"+this.posDecor+"}"}}),a.Command.Path.SetAfterAction=MathJax.Object.Subclass({Init:function(t){this.posDecor=t},toString:function(){return"~/{"+this.posDecor+"}"}}),a.Command.Path.AddLabelNextSegmentOnly=MathJax.Object.Subclass({Init:function(t){this.labels=t},toString:function(){return"~<{"+this.labels+"}"}}),a.Command.Path.AddLabelLastSegmentOnly=MathJax.Object.Subclass({Init:function(t){this.labels=t},toString:function(){return"~>{"+this.labels+"}"}}),a.Command.Path.AddLabelEverySegment=MathJax.Object.Subclass({Init:function(t){this.labels=t},toString:function(){return"~+{"+this.labels+"}"}}),a.Command.Path.StraightSegment=MathJax.Object.Subclass({Init:function(t){this.segment=t},toString:function(){return"'"+this.segment}}),a.Command.Path.TurningSegment=MathJax.Object.Subclass({Init:function(t,e){this.turn=t,this.segment=e},toString:function(){return"`"+this.turn+" "+this.segment}}),a.Command.Path.LastSegment=MathJax.Object.Subclass({Init:function(t){this.segment=t},toString:function(){return this.segment.toString()}}),a.Command.Path.Turn=MathJax.Object.Subclass({}),a.Command.Path.Turn.Diag=MathJax.Object.Subclass({Init:function(t,e){this.diag=t,this.radius=e},toString:function(){return this.diag.toString()+" "+this.radius}}),a.Command.Path.Turn.Cir=MathJax.Object.Subclass({Init:function(t,e){this.cir=t,this.radius=e},toString:function(){return this.cir.toString()+" "+this.radius}}),a.Command.Path.TurnRadius=MathJax.Object.Subclass({}),a.Command.Path.TurnRadius.Default=MathJax.Object.Subclass({toString:function(){return""}}),a.Command.Path.TurnRadius.Dimen=MathJax.Object.Subclass({Init:function(t){this.dimen=t},toString:function(){return"/"+this.dimen}}),a.Command.Path.Segment=MathJax.Object.Subclass({Init:function(t,e,n){this.pos=t,this.slide=e,this.labels=n},toString:function(){return this.pos.toString()+" "+this.slide+" "+this.labels}}),a.Command.Path.Labels=MathJax.Object.Subclass({Init:function(t){this.labels=t},toString:function(){return this.labels.mkString(" ")}}),a.Command.Path.Label=MathJax.Object.Subclass({Init:function(t,e,n){this.anchor=t,this.it=e,this.aliasOption=n}}),a.Command.Path.Label.Above=a.Command.Path.Label.Subclass({toString:function(){return"^("+this.anchor+" "+this.it+" "+this.aliasOption+")"}}),a.Command.Path.Label.Below=a.Command.Path.Label.Subclass({toString:function(){return"_("+this.anchor+" "+this.it+" "+this.aliasOption+")"}}),a.Command.Path.Label.At=a.Command.Path.Label.Subclass({toString:function(){return"|("+this.anchor+" "+this.it+" "+this.aliasOption+")"}}),a.Command.Ar=MathJax.Object.Subclass({Init:function(t,e){this.forms=t,this.path=e},toString:function(){return"\\ar "+this.forms.mkString(" ")+" "+this.path}}),a.Command.Ar.Form=MathJax.Object.Subclass({}),a.Command.Ar.Form.BuildArrow=a.Command.Ar.Form.Subclass({Init:function(t,e,n,i){this.variant=t,this.tailTip=e,this.stemConn=n,this.headTip=i},toString:function(){return"@"+this.variant+"{"+this.tailTip.toString()+", "+this.stemConn.toString()+", "+this.headTip.toString()+"}"}}),a.Command.Ar.Form.ChangeVariant=a.Command.Ar.Form.Subclass({Init:function(t){this.variant=t},toString:function(){return"@"+this.variant}}),a.Command.Ar.Form.Tip=MathJax.Object.Subclass({}),a.Command.Ar.Form.Tip.Tipchars=MathJax.Object.Subclass({Init:function(t){this.tipchars=t},toString:function(){return this.tipchars}}),a.Command.Ar.Form.Tip.Object=MathJax.Object.Subclass({Init:function(t){this.object=t},toString:function(){return"*"+this.object}}),a.Command.Ar.Form.Tip.Dir=MathJax.Object.Subclass({Init:function(t){this.dir=t},toString:function(){return this.dir}}),a.Command.Ar.Form.Conn=MathJax.Object.Subclass({}),a.Command.Ar.Form.Conn.Connchars=MathJax.Object.Subclass({Init:function(t){this.connchars=t},toString:function(){return this.connchars}}),a.Command.Ar.Form.Conn.Object=MathJax.Object.Subclass({Init:function(t){this.object=t},toString:function(){return"*"+this.object}}),a.Command.Ar.Form.Conn.Dir=MathJax.Object.Subclass({Init:function(t){this.dir=t},toString:function(){return this.dir}}),a.Command.Ar.Form.ChangeStem=MathJax.Object.Subclass({Init:function(t){this.connchar=t},toString:function(){return"@"+this.connchar}}),a.Command.Ar.Form.DashArrowStem=MathJax.Object.Subclass({toString:function(){return"@!"}}),a.Command.Ar.Form.CurveArrow=MathJax.Object.Subclass({Init:function(t,e){this.direction=t,this.dist=e},toString:function(){return"@/"+this.direction+" "+this.dist+"/"}}),a.Command.Ar.Form.CurveFitToDirection=MathJax.Object.Subclass({Init:function(t,e){this.outDirection=t,this.inDirection=e},toString:function(){return"@("+this.outDirection+","+this.inDirection+")"}}),a.Command.Ar.Form.CurveWithControlPoints=MathJax.Object.Subclass({Init:function(t){this.coord=t},toString:function(){return"@`{"+this.coord+"}"}}),a.Command.Ar.Form.AddShape=MathJax.Object.Subclass({Init:function(t){this.shape=t},toString:function(){return"@["+this.shape+"]"}}),a.Command.Ar.Form.AddModifiers=MathJax.Object.Subclass({Init:function(t){this.modifiers=t},toString:function(){return"@*{"+this.modifiers.mkString(" ")+"}"}}),a.Command.Ar.Form.Slide=MathJax.Object.Subclass({Init:function(t){this.slideDimen=t},toString:function(){return"@<"+this.slideDimen+">"}}),a.Command.Ar.Form.LabelAt=MathJax.Object.Subclass({Init:function(t,e){this.anchor=t,this.it=e},toString:function(){return"|"+this.anchor+" "+this.it}}),a.Command.Ar.Form.LabelAbove=MathJax.Object.Subclass({Init:function(t,e){this.anchor=t,this.it=e},toString:function(){return"^"+this.anchor+" "+this.it}}),a.Command.Ar.Form.LabelBelow=MathJax.Object.Subclass({Init:function(t,e){this.anchor=t,this.it=e},toString:function(){return"_"+this.anchor+" "+this.it}}),a.Command.Ar.Form.ReverseAboveAndBelow=MathJax.Object.Subclass({toString:function(){return"@?"}}),a.Command.Xymatrix=MathJax.Object.Subclass({Init:function(t,e){this.setup=t,this.rows=e},toString:function(){return"\\xymatrix"+this.setup+"{\n"+this.rows.mkString("","\\\\\n","")+"\n}"}}),a.Command.Xymatrix.Setup=MathJax.Object.Subclass({}),a.Command.Xymatrix.Setup.Prefix=MathJax.Object.Subclass({Init:function(t){this.prefix=t},toString:function(){return'"'+this.prefix+'"'}}),a.Command.Xymatrix.Setup.ChangeSpacing=MathJax.Object.Subclass({Init:function(t,e){this.addop=t,this.dimen=e}}),a.Command.Xymatrix.Setup.ChangeSpacing.Row=a.Command.Xymatrix.Setup.ChangeSpacing.Subclass({toString:function(){return"@R"+this.addop+this.dimen}}),a.Command.Xymatrix.Setup.ChangeSpacing.Column=a.Command.Xymatrix.Setup.ChangeSpacing.Subclass({toString:function(){return"@C"+this.addop+this.dimen}}),a.Command.Xymatrix.Setup.ChangeSpacing.RowAndColumn=a.Command.Xymatrix.Setup.ChangeSpacing.Subclass({toString:function(){return"@"+this.addop+this.dimen}}),a.Command.Xymatrix.Setup.PretendEntrySize=MathJax.Object.Subclass({Init:function(t){this.dimen=t}}),a.Command.Xymatrix.Setup.PretendEntrySize.Height=a.Command.Xymatrix.Setup.PretendEntrySize.Subclass({toString:function(){return"@!R="+this.dimen}}),a.Command.Xymatrix.Setup.PretendEntrySize.Width=a.Command.Xymatrix.Setup.PretendEntrySize.Subclass({toString:function(){return"@!C="+this.dimen}}),a.Command.Xymatrix.Setup.PretendEntrySize.HeightAndWidth=a.Command.Xymatrix.Setup.PretendEntrySize.Subclass({toString:function(){return"@!="+this.dimen}}),a.Command.Xymatrix.Setup.FixGrid=MathJax.Object.Subclass({}),a.Command.Xymatrix.Setup.FixGrid.Row=a.Command.Xymatrix.Setup.FixGrid.Subclass({toString:function(){return"@!R"}}),a.Command.Xymatrix.Setup.FixGrid.Column=a.Command.Xymatrix.Setup.FixGrid.Subclass({toString:function(){return"@!C"}}),a.Command.Xymatrix.Setup.FixGrid.RowAndColumn=a.Command.Xymatrix.Setup.FixGrid.Subclass({toString:function(){return"@!"}}),a.Command.Xymatrix.Setup.AdjustEntrySize=MathJax.Object.Subclass({Init:function(t,e){this.addop=t,this.dimen=e}}),a.Command.Xymatrix.Setup.AdjustEntrySize.Margin=a.Command.Xymatrix.Setup.AdjustEntrySize.Subclass({toString:function(){return"@M"+this.addop+this.dimen}}),a.Command.Xymatrix.Setup.AdjustEntrySize.Width=a.Command.Xymatrix.Setup.AdjustEntrySize.Subclass({toString:function(){return"@W"+this.addop+this.dimen}}),a.Command.Xymatrix.Setup.AdjustEntrySize.Height=a.Command.Xymatrix.Setup.AdjustEntrySize.Subclass({toString:function(){return"@H"+this.addop+this.dimen}}),a.Command.Xymatrix.Setup.AdjustLabelSep=MathJax.Object.Subclass({Init:function(t,e){this.addop=t,this.dimen=e},toString:function(){return"@L"+this.addop+this.dimen}}),a.Command.Xymatrix.Setup.SetOrientation=MathJax.Object.Subclass({Init:function(t){this.direction=t},toString:function(){return"@"+this.direction}}),a.Command.Xymatrix.Setup.AddModifier=MathJax.Object.Subclass({Init:function(t){this.modifier=t},toString:function(){return"@*"+this.modifier}}),a.Command.Xymatrix.Row=MathJax.Object.Subclass({Init:function(t){this.entries=t},toString:function(){return this.entries.mkString(" & ")}}),a.Command.Xymatrix.Entry=MathJax.Object.Subclass({}),a.Command.Xymatrix.Entry.SimpleEntry=a.Command.Xymatrix.Entry.Subclass({Init:function(t,e,n){this.modifiers=t,this.objectbox=e,this.decor=n},isEmpty:!1,toString:function(){return this.modifiers.mkString("**{","","}")+" "+this.objectbox+" "+this.decor}}),a.Command.Xymatrix.Entry.ObjectEntry=a.Command.Xymatrix.Entry.Subclass({Init:function(t,e,n){this.object=t,this.pos=e,this.decor=n},isEmpty:!1,toString:function(){return"*"+this.object+" "+this.pos+" "+this.decor}}),a.Command.Xymatrix.Entry.EmptyEntry=a.Command.Xymatrix.Entry.Subclass({Init:function(t){this.decor=t},isEmpty:!0,toString:function(){return""+this.decor}}),a.Command.Twocell=MathJax.Object.Subclass({Init:function(t,e,n){this.twocell=t,this.switches=e,this.arrow=n},toString:function(){return this.twocell.toString()+this.switches.mkString("")+this.arrow}}),a.Command.Twocell.Hops2cell=MathJax.Object.Subclass({Init:function(t,e){this.hops=t,this.maybeDisplace=e}}),a.Command.Twocell.Twocell=a.Command.Twocell.Hops2cell.Subclass({toString:function(){return"\\xtwocell["+this.hops+"]"+this.maybeDisplace.getOrElse("{}")}}),a.Command.Twocell.UpperTwocell=a.Command.Twocell.Hops2cell.Subclass({toString:function(){return"\\xuppertwocell["+this.hops+"]"+this.maybeDisplace.getOrElse("{}")}}),a.Command.Twocell.LowerTwocell=a.Command.Twocell.Hops2cell.Subclass({toString:function(){return"\\xlowertwocell["+this.hops+"]"+this.maybeDisplace.getOrElse("{}")}}),a.Command.Twocell.CompositeMap=a.Command.Twocell.Hops2cell.Subclass({toString:function(){return"\\xcompositemap["+this.hops+"]"+this.maybeDisplace.getOrElse("{}")}}),a.Command.Twocell.Switch=MathJax.Object.Subclass({}),a.Command.Twocell.Switch.UpperLabel=MathJax.Object.Subclass({Init:function(t){this.label=t},toString:function(){return"^"+this.label}}),a.Command.Twocell.Switch.LowerLabel=MathJax.Object.Subclass({Init:function(t){this.label=t},toString:function(){return"_"+this.label}}),a.Command.Twocell.Switch.SetCurvature=MathJax.Object.Subclass({Init:function(t){this.nudge=t},toString:function(){return this.nudge.toString()}}),a.Command.Twocell.Switch.DoNotSetCurvedArrows=MathJax.Object.Subclass({toString:function(){return"\\omit"}}),a.Command.Twoce