Elm-0.5.0: elm-runtime-0.5.0.js
var Guid=function(){var e=0;return{guid:function(){return e+=1}}}(),Elm=Elm||{};
Elm.JavaScript=function(){function e(a){for(var b=["Nil"],k=a.length;k--;)b=["Cons",a[k],b];return b}function a(a){for(var b=[];"Cons"===a[0];)b.push(a[1]),a=a[2];return b}function d(a){return a.slice(1)}function j(a){return["Tuple"+a.length].concat(a)}return{castJSBoolToBool:function(a){return a},castBoolToJSBool:function(a){return a},castJSNumberToFloat:function(a){return a},castFloatToJSNumber:function(a){return a},castJSNumberToInt:function(a){return~~a},castIntToJSNumber:function(a){return a},
Experimental:{castJSElementToElement:function(a){return function(b){return function(k){return["Element",Guid.guid(),["EExternalHtml",k],a,b,1,Nothing,Nothing]}}},castElementToJSElement:function(a){return Render.render(a)}},castJSArrayToList:e,castListToJSArray:a,castJSStringToString:e,castStringToJSString:function(d){return"string"===typeof d?d:a(d).join("")},castTupleToJSTuple2:d,castTupleToJSTuple3:d,castTupleToJSTuple4:d,castTupleToJSTuple5:d,castJSTupleToTuple2:j,castJSTupleToTuple3:j,castJSTupleToTuple4:j,
castJSTupleToTuple5:j}}();var Elm=Elm||{},JSjson=JSON;
Elm.JSON=function(){function e(b,a){return function(g){return function(h){var c=j.castStringToJSString(g);return h[1].hasOwnProperty(c)&&(h=h[1][c],h[0]===b)?h[1]:a}}}function a(b){return function(a){function g(b){switch(b[0]){case "JsonNull":return null;case "JsonString":return j.castStringToJSString(b[1]);case "JsonObject":var c={},b=b[1][1],i;for(i in b)c[i]=g(b[i]);return c;case "JsonArray":c=j.castListToJSArray(b[1]);for(i=c.length;i--;)c[i]=g(c[i]);return c;default:return b[1]}}return JSjson.stringify(g(["JsonObject",
a]),null,j.castStringToJSString(b))}}function d(b){function a(b){switch(typeof b){case "string":return["JsonString",j.castJSStringToString(b)];case "number":return["JsonNumber",j.castJSNumberToFloat(b)];case "boolean":return["JsonBool",j.castJSBoolToBool(b)];case "object":if(null===b)return["JsonNull"];for(var c in b)b[c]=a(b[c]);return b instanceof Array?["JsonArray",j.castJSArrayToList(b)]:["JsonObject",["JSON",b]]}}var b=JSjson.parse(b),g;for(g in b)b[g]=a(b[g]);return["JSON",b]}var j=Elm.JavaScript,
f=["JSON",{}];return{empty:f,singleton:function(b){return function(a){var g={};g[j.castStringToJSString(b)]=a;return["JSON",g]}},insert:function(b){return function(a){return function(g){var g=g[1],h={},c;for(c in g)h[c]=g[c];h[j.castStringToJSString(b)]=a;return["JSON",h]}}},lookup:function(b){return function(a){var g=j.castStringToJSString(b);return a[1].hasOwnProperty(g)?Just(a[1][g]):Nothing}},findString:e("JsonString",["Nil"]),findObject:e("JsonObject",f),findArray:e("JsonArray",["Nil"]),findWithDefault:function(b){return function(a){return function(g){var h=
j.castStringToJSString(a);return g[1].hasOwnProperty(h)?g[1][h]:b}}},remove:function(b){return function(a){var a=a[1],g={},h;for(h in a)g[h]=a[h];delete g[j.castStringToJSString(b)];return["JSON",g]}},toPrettyJSString:a,toJSString:a(""),fromJSString:d,toPrettyString:function(b){return function(d){return j.castJSStringToString(a(b)(d))}},toString:function(b){return j.castJSStringToString(a("")(b))},fromString:function(b){return d(j.castStringToJSString(b))},toList:function(b){var b=b[1],a=[],g;for(g in b)a.push(Value.Tuple(j.castJSStringToString(g),
b[g]));return j.castJSArrayToList(a)},fromList:function(b){for(var b=j.castListToJSArray(b),a={},g=b.length;g--;)a[j.castStringToJSString(b[g][1])]=b[g][2];return["JSON",a]},JsonString:function(b){return["JsonString",b]},JsonNumber:function(b){return["JsonNumber",b]},JsonBool:function(b){return["JsonBool",b]},JsonNull:["JsonNull"],JsonArray:function(b){return["JsonArray",b]},JsonObject:function(b){return["JsonObject",b]}}}();
var Value=function(){function e(b){if(0==b.length)return b;for(var b=b.replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/\n/g,"<br/>"),b=b.split("<br/>"),a=b.length;a--;){var g=b,h=a,c;c=b[a];if(0!=c.length){c=c.split("");" "==c[0]&&(c[0]=" ");for(var i=c.length;--i;)" "==c[i][0]&&" "==c[i-1]&&(c[i-1]+=c[i],c[i]="");for(i=c.length;i--;)if(1<c[i].length&&" "==c[i][0]){for(var t=c[i].split(""),d=t.length-2;0<=d;d-=2)t[d]=" ";c[i]=t.join("")}c=
c.join("");c=" "===c[c.length-1]?c.slice(0,-1)+" ":c}g[h]=c}return b.join("<br/>")}var a=function(b,d){if("object"===typeof b){if(b===d)return!0;if(b.length!==d.length)return!1;for(var g=b.length;g--;)if(!a(b[g],d[g]))return!1;return!0}return b===d},d=function(b){if("boolean"===typeof b)return b?"True":"False";if("number"!==typeof b){if("string"===typeof b&&2>b.length)return"'"+b+"'";if(b[0]){if("Tuple"===b[0].substring(0,5)){for(var a="",g=b.length;--g;)a=","+d(b[g])+a;","===a[0]&&(a=a.substring(1));
return"("+a+")"}if("Cons"===b[0])for(var g="string"===typeof b[1]?'"':"]",h="string"===typeof b[1]?"":",",c="string"===typeof b[1]?function(c){return c}:d,a=("string"===typeof b[1]?'"':"[")+c(b[1]),b=b[2];;)if("Cons"===b[0])a+=h+c(b[1]),b=b[2];else return a+g;else{if("Nil"===b[0])return"[]";if("JSON"===b[0])return"(JSON.fromList "+d(Elm.JSON.toList(b))+")";if("RBNode"===b[0]||"RBEmpty"===b[0])return"(Map.fromList "+d(Elm.Dict.fold(function(c){return function(b){return function(a){return["Cons",["Tuple2",
c,b],a]}}})(["Nil"])(b))+")";a="";for(g=b.length;--g;)a=" "+d(b[g])+a;a=b[0]+a;return 1<b.length?"("+a+")":a}}}return b+""},j=function(b){for(var a=["Nil"],d=b.length;d--;)a=["Cons",b[d],a];return a},f;f=document.addEventListener?function(b,a,d){b.addEventListener(a,d,!1)}:function(b,a,d){b.attachEvent("on"+a,d)};return{eq:a,str:j,show:function(b){return j(d(b))},Tuple:function(){var b=arguments.length,a=Array(b+1);for(a[0]="Tuple"+arguments.length;b--;)a[b+1]=arguments[b];return a},append:function(b,
a){if("string"===typeof b&&"string"===typeof a)return b.concat(a);if("Nil"===b[0])return a;for(var d=["Cons",b[1],["Nil"]],h=d,b=b[2];"Cons"===b[0];)h[2]=["Cons",b[1],["Nil"]],b=b[2],h=h[2];h[2]=a;return d},listToArray:function(b){for(var a=[];"Cons"===b[0];)a.push(b[1]),b=b[2];return a},toText:function(b){if("string"===typeof b)return e(b);for(var a=[];"Cons"===b[0];)a.push(b[1]),b=b[2];return e(a.join(""))},properEscape:e,getTextSize:function(b,a,d){var h=document.createElement("div");h.innerHTML=
d;h.style.textAlign="left";0<b&&(h.style.width=b+"px");h.style.visibility="hidden";h.style.styleFloat="left";h.style.cssFloat="left";document.body.appendChild(h);d=window.getComputedStyle(h);b=d.getPropertyValue("width").slice(0,-2)-0;d=d.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(h);delete h;return[Math.ceil(b),Math.ceil(Math.max(a,d))]},getSize:function(b){b=b.cloneNode(!0);b.style.visibility="hidden";b.style.styleFloat="left";b.style.cssFloat="left";document.body.appendChild(b);
var a=b.offsetWidth,d=b.offsetHeight;document.body.removeChild(b);delete b;return[a,d]},getExcess:function(b){b=b.cloneNode(!0);b.style.visibility="hidden";b.style.styleFloat="left";b.style.cssFloat="left";document.body.appendChild(b);var a=b.offsetWidth,d=b.offsetHeight,h=window.getComputedStyle(b),c=h.getPropertyValue("width").slice(0,-2)-0,h=h.getPropertyValue("height").slice(0,-2)-0;document.body.removeChild(b);delete b;return[a-c,d-h]},groupForms:function(a){for(var a=Elm.JavaScript.castListToJSArray(a),
d=[],g=[],h=a.length;h--;){var c=a[h];switch(c[4][0]){case "FElement":0<g.length&&(d.push(g),g=[]);d.push(c);break;default:g.push(c)}}0<g.length&&d.push(g);return d},wrap:function(a){var d=Value.getSize(a);return["Element",Guid.guid(),["EHtml",a],d[0],d[1],1,Nothing,Nothing]},addListener:f}}(),Elm=Elm||{};
Elm.List=function(){function e(a){return function(b){if("Nil"===b[0])return b;"Cons"!==b[0]&&c("map");for(var i=["Cons",a(b[1]),["Nil"]],d=i,b=b[2];"Cons"===b[0];)d[2]=["Cons",a(b[1]),["Nil"]],b=b[2],d=d[2];return i}}function a(a){return function(b){return function(i){var d=b;if("Nil"===i[0])return d;for("Cons"!==i[0]&&c("foldl");"Cons"===i[0];)d=a(i[1])(d),i=i[2];return d}}}function d(a){return function(b){return function(i){var d=b;if("Nil"===i[0])return d;"Cons"!==i[0]&&c("foldr");for(var h=[];"Cons"===
i[0];)h.push(i[1]),i=i[2];for(i=h.length;i--;)d=a(h[i])(d);return d}}}function j(c){return function(b){var i;"Cons"!==b[0]?i=void 0:(i=b[1],b=b[2],i=a(c)(i)(b));return i}}function f(a){return function(b){return function(i){if("Nil"===i[0])return["Cons",b,["Nil"]];"Cons"!==i[0]&&c("scanl");for(var d=[b];"Cons"===i[0];)b=a(i[1])(b),d.push(b),i=i[2];for(var i=["Nil"],h=d.length;h--;)i=["Cons",d[h],i];return i}}}function b(c){return function(a){a:{for(var i=[function(c){return"Nil"!==c[0]?void 0:["Tuple2",
["Nil"],["Nil"]]},function(a){if("Cons"===a[0]){var i=a[1],a=a[2];var d=b(c)(a);"Tuple2"!==d[0]?i=void 0:(a=d[1],d=d[2],i=c(i)?["Tuple2",["Cons",i,a],d]:["Tuple2",a,["Cons",i,d]]);return i}}],d=i.length;d--;){var h=i[d](a);if(void 0!==h){a=h;break a}}a=void 0}return a}}function k(c){a:{for(var a=[function(c){return"Nil"!==c[0]?void 0:["Tuple2",["Nil"],["Nil"]]},function(c){if("Cons"!==c[0])c=void 0;else if(c=["Tuple2",c[1],k(c[2])],"Tuple2"!==c[0]||"Tuple2"!==c[1][0])c=void 0;else var a=c[1][1],b=
c[1][2],c="Tuple2"!==c[2][0]?void 0:["Tuple2",["Cons",a,c[2][1]],["Cons",b,c[2][2]]];return c}],b=a.length;b--;){var i=a[b](c);if(void 0!==i){c=i;break a}}c=void 0}return c}function g(c){return function(a){a:{for(var b=[function(c){return"Nil"!==c[0]?void 0:["Nil"]},function(c){if("Cons"===c[0]){var a=c[1];return"Nil"!==c[2][0]?void 0:["Cons",a,["Nil"]]}},function(a){if("Cons"===a[0]){var b=a[1];if("Cons"===a[2][0]){var i=a[2][1],a=a[2][2];return["Cons",b,["Cons",c,g(c)(["Cons",i,a])]]}}}],i=b.length;i--;){var d=
b[i](a);if(void 0!==d){a=d;break a}}a=void 0}return a}}function h(c){return function(a){a:{for(var b=[function(c){return"Nil"!==c[0]?void 0:["Nil"]},function(c){if("Cons"===c[0]){var a=c[1];return"Nil"!==c[2][0]?void 0:a}},function(a){if("Cons"===a[0]){var b=a[1];if("Cons"===a[2][0]){var i=a[2][1],a=a[2][2];return Value.append(b,Value.append(c,h(c)(["Cons",i,a])))}}}],i=b.length;i--;){var d=b[i](a);if(void 0!==d){a=d;break a}}a=void 0}return a}}var c=function(c){throw"Function '"+c+"' expecting a list!";
},i=a(function(c){return function(a){return["Cons",c,a]}})(["Nil"]),t=d(function(c){return function(a){return Value.append(c,a)}})(["Nil"]),m=a(function(c){return function(a){return c&&a}})(!0),r=a(function(c){return function(a){return c||a}})(!1),n=a(function(c){return function(a){return c+a}})(0),l=a(function(c){return function(a){return c*a}})(1),v=j(function(c){return function(a){return Math.max(c,a)}}),s=j(function(c){return function(a){return Math.min(c,a)}});return{head:function(c){if("Cons"!==
c[0])throw"Error: 'head' only accepts lists of length greater than one.";return c[1]},tail:function(c){if("Cons"!==c[0])throw"Error: 'tail' only accepts lists of length greater than one.";return c[2]},last:function(c){if("Cons"!==c[0])throw"Error: 'last' only accepts lists of length greater than one.";for(var a=c[1];"Cons"===c[0];)a=c[1],c=c[2];return a},map:e,foldl:a,foldr:d,foldl1:j,foldr1:function(a){return function(b){if("Nil"===b[0])throw"'foldr1' requires an non-empty list.";"Cons"!==b[0]&&
c("foldr1");for(var i=[];"Cons"===b[0];)i.push(b[1]),b=b[2];for(var b=i.pop(),d=i.length;d--;)b=a(i[d])(b);return b}},scanl:f,scanl1:function(c){return function(a){if("Cons"!==a[0])throw"Error: 'scanl1' requires a list of at least length 1.";return f(c)(a[1])(a[2])}},filter:function(a){return function(b){if("Nil"===b[0])return b;"Cons"!==b[0]&&c("filter");for(var i=[];"Cons"===b[0];)a(b[1])&&i.push(b[1]),b=b[2];for(var b=["Nil"],d=i.length;d--;)b=["Cons",i[d],b];return b}},length:function(c){for(var a=
0;"Cons"===c[0];)a+=1,c=c[2];return a},reverse:i,concat:t,concatMap:function(c){return function(a){return t(e(c)(a))}},and:m,or:r,all:function(c){return a(function(a){return function(b){return b&&c(a)}})(!0)},any:function(c){return a(function(a){return function(b){return b||c(a)}})(!1)},sum:n,product:l,maximum:v,minimum:s,partition:b,zipWith:function(a){return function(b){return function(i){if("Nil"===b[0]||"Nil"===i[0])return["Nil"];("Cons"!==b[0]||"Cons"!==i[0])&&c("zipWith");for(var d=[];"Cons"===
b[0]&&"Cons"===i[0];)d.push(a(b[1])(i[1])),b=b[2],i=i[2];for(var i=["Nil"],h=d.length;h--;)i=["Cons",d[h],i];return i}}},zip:function(a){return function(b){if("Nil"===a[0]||"Nil"===b[0])return["Nil"];("Cons"!==a[0]||"Cons"!==b[0])&&c("zip");for(var i=[];"Cons"===a[0]&&"Cons"===b[0];)i.push(["Tuple2",a[1],b[1]]),a=a[2],b=b[2];for(var b=["Nil"],d=i.length;d--;)b=["Cons",i[d],b];return b}},unzip:k,intersperse:g,intercalate:h,sort:function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&c("sort");for(var b=
[];"Cons"===a[0];)b.push(a[1]),a=a[2];b.sort(function(c,a){return c-a});for(var a=["Nil"],i=b.length;i--;)a=["Cons",b[i],a];return a},take:function(a){return function(b){if(0>=a)return["Nil"];if("Nil"===b[0])return b;"Cons"!==b[0]&&c("take");var i=["Cons",b[1],["Nil"]],d=i,b=b[2];for(--a;"Cons"===b[0]&&0<a;)d[2]=["Cons",b[1],["Nil"]],d=d[2],b=b[2],--a;return i}},drop:function(a){return function(b){if("Nil"===b[0])return b;for("Cons"!==b[0]&&c("drop");"Cons"===b[0]&&0<a;)b=b[2],--a;return b}}}}();
Elm=Elm||{};
Elm.Maybe=function(){function e(a){return function(e){return"Just"===a[0]?["Cons",a[1],e]:e}}function a(a){return function(e){return function(f){var b=a(e);return"Just"===b[0]?["Cons",b[1],f]:f}}}return{Just:function(a){return["Just",a]},Nothing:["Nothing"],catMaybes:Elm.List.foldr(e)(["Nil"]),isJust:function(a){return"Just"===a[0]},isNothing:function(a){return"Nothing"===a[0]},fromMaybe:function(a){return function(e){return"Just"===e[0]?e[1]:a}},consMaybe:e,mapMaybe:function(d){return Elm.List.foldr(a(d))(["Nil"])},maybe:function(a){return function(e){return function(f){return"Just"===
f[0]?e(f[1]):a}}}}}();
(function(){for(var e in Elm)this[e]=Elm[e];if(Elm.Dict)throw"Module name collision, 'Dict' is already defined.";Elm.Dict=function(){function a(a){return function(c){return function(b){return function(i){return function(d){return["RBNode",a,c,b,i,d]}}}}}function d(a){return function(){switch(a[0]){case "RBEmpty":return z(Value.str("(min RBEmpty) is not defined"));case "RBNode":switch(a[4][0]){case "RBEmpty":return["Tuple2",a[2],a[3]]}return d(a[4])}throw"Non-exhaustive pattern match in case";}()}
function e(a){return function(c){var b;a:{switch(c[0]){case "RBEmpty":b=Nothing;break a;case "RBNode":b=function(){switch(compare(a)(c[2])[0]){case "EQ":return Just(c[3]);case "GT":return e(a)(c[5]);case "LT":return e(a)(c[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";}return b}}function f(a){return function(c){return function(b){var i;a:{switch(b[0]){case "RBEmpty":i=a;break a;case "RBNode":i=function(){switch(compare(c)(b[2])[0]){case "EQ":return b[3];
case "GT":return f(a)(c)(b[5]);case "LT":return f(a)(c)(b[4])}throw"Non-exhaustive pattern match in case";}();break a}throw"Non-exhaustive pattern match in case";}return i}}}function b(a){return function(c){return A(e(a)(c))}}function k(c){a:{switch(c[0]){case "RBNode":switch(c[5][0]){case "RBNode":c=a(c[1])(c[5][2])(c[5][3])(a(x)(c[2])(c[3])(c[4])(c[5][4]))(c[5][5]);break a}}c=z(Value.str("rotateLeft of a node without enough children"))}return c}function g(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBNode":c=
a(c[1])(c[4][2])(c[4][3])(c[4][4])(a(x)(c[2])(c[3])(c[4][5])(c[5]));break a}}c=z(Value.str("rotateRight of a node without enough children"))}return c}function h(c){a:{switch(c[0]){case "Black":c=x;break a;case "Red":c=C;break a}throw"Non-exhaustive pattern match in case";}return c}function c(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBNode":switch(c[5][0]){case "RBNode":c=a(h(c[1]))(c[2])(c[3])(a(h(c[4][1]))(c[4][2])(c[4][3])(c[4][4])(c[4][5]))(a(h(c[5][1]))(c[5][2])(c[5][3])(c[5][4])(c[5][5]));
break a}}}c=z(Value.str("color_flip called on a RBEmpty or RBNode with a RBEmpty child"))}return c}function i(a){a:switch(a[0]){case "RBNode":switch(a[5][0]){case "RBNode":switch(a[5][1][0]){case "Red":a=k(a);break a}}}a:switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":switch(a[4][4][0]){case "RBNode":switch(a[4][4][1][0]){case "Red":a=g(a);break a}}}}}a:switch(a[0]){case "RBNode":switch(a[4][0]){case "RBNode":switch(a[4][1][0]){case "Red":switch(a[5][0]){case "RBNode":switch(a[5][1][0]){case "Red":a=
c(a);break a}}}}}return a}function t(c){a:switch(c[0]){case "RBNode":switch(c[1][0]){case "Red":c=a(C)(c[2])(c[3])(c[4])(c[5]);break a}}return c}function m(c){return function(b){return function(d){var h=function(d){var t;a:{switch(d[0]){case "RBEmpty":t=a(x)(c)(b)(y)(y);break a;case "RBNode":t=function(){switch(compare(c)(d[2])[0]){case "EQ":return a(d[1])(d[2])(b)(d[4])(d[5]);case "GT":return a(d[1])(d[2])(d[3])(d[4])(h(d[5]));case "LT":return a(d[1])(d[2])(d[3])(h(d[4]))(d[5])}throw"Non-exhaustive pattern match in case";
}();t=i(t);break a}throw"Non-exhaustive pattern match in case";}return t};return t(h(d))}}}function r(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBNode":switch(c[4][1][0]){case "Red":c=!0;break a}}}c=!1}return c}function n(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBNode":switch(c[4][4][0]){case "RBNode":switch(c[4][4][1][0]){case "Red":c=!0;break a}}}}c=!1}return c}function l(b){if(not(r(b))&¬(n(b))){b=c(b);a:switch(b[0]){case "RBNode":b:switch(b[5][0]){case "RBNode":switch(b[5][4][0]){case "RBNode":switch(b[5][4][1][0]){case "Red":b=
c(k(a(b[1])(b[2])(b[3])(b[4])(g(b[5]))));break b}}}break a}}return b}function v(b){return function(h){var e;a:{switch(h[0]){case "RBEmpty":e=y;break a;case "RBNode":if("LT"===compare(b)(h[2])[0]){e=l(h);b:{switch(e[0]){case "RBEmpty":e=z(Value.str("delLT on RBEmpty"));break b;case "RBNode":e=i(a(e[1])(e[2])(e[3])(del(e[4]))(e[5]));break b}break}}else{h=r(h)?g(h):h;b:{switch(h[0]){case "RBNode":switch(h[5][0]){case "RBEmpty":h=eq(b,h[2]);break b}}h=!1}if(h)e=y;else{var h=not,j;b:{switch(e[0]){case "RBNode":switch(e[5][0]){case "RBNode":switch(e[5][1][0]){case "Red":j=
!0;break b}}}j=!1}if(h=h(j)){h=not;b:{switch(e[0]){case "RBNode":switch(e[5][0]){case "RBNode":switch(e[5][4][0]){case "RBNode":switch(e[5][4][1][0]){case "Red":j=!0;break b}}}}j=!1}h=h(j)}h&&(e=c(e),e=n(e)?c(g(e)):e);b:{switch(e[0]){case "RBNode":h=eq(b,e[2]);break b}h=!1}if(h)b:{switch(e[0]){case "RBEmpty":e=z(Value.str("delEQ called on a RBEmpty"));break b;case "RBNode":j=d(e[5]);c:{switch(j[0]){case "Tuple2":h=j[1];break c}break}c:{switch(j[0]){case "Tuple2":j=j[2];break c}break}var h=a(e[1])(h)(j)(e[4]),
f=function(c){a:{switch(c[0]){case "RBNode":switch(c[4][0]){case "RBEmpty":c=y;break a}}c=l(c);b:{switch(c[0]){case "RBEmpty":c=y;break b;case "RBNode":c=i(a(c[1])(c[2])(c[3])(f(c[4]))(c[5]));break b}throw"Non-exhaustive pattern match in case";}}return c};e=t(f(e[5]));e=i(h(e));break b}break}else b:{switch(e[0]){case "RBEmpty":e=z(Value.str("delGT called on a RBEmpty"));break b;case "RBNode":e=i(a(e[1])(e[2])(e[3])(e[4])(del(e[5])));break b}break}}}break a}throw"Non-exhaustive pattern match in case";
}return t(e)}}function s(c){return function(b){a:{switch(b[0]){case "RBEmpty":b=y;break a;case "RBNode":b=a(b[1])(b[2])(c(b[3]))(s(c)(b[4]))(s(c)(b[5]));break a}throw"Non-exhaustive pattern match in case";}return b}}function p(c){return function(a){return function(b){a:{switch(b[0]){case "RBEmpty":b=a;break a;case "RBNode":b=p(c)(c(b[2])(b[3])(p(c)(a)(b[4])))(b[5]);break a}throw"Non-exhaustive pattern match in case";}return b}}}function q(c){return function(a){return function(b){a:{switch(b[0]){case "RBEmpty":b=
a;break a;case "RBNode":b=q(c)(c(b[2])(b[3])(q(c)(a)(b[5])))(b[4]);break a}throw"Non-exhaustive pattern match in case";}return b}}}var u=[],w;for(w in Elm.Prelude)0<=u.indexOf(w)||(this[w]=Elm.Prelude[w]);var A=Elm.Maybe.isJust,x=["Red"],C=["Black"],y=["RBEmpty"],B=y,z=console.log;return{empty:B,lookup:e,findWithDefault:f,member:b,insert:m,singleton:function(c){return function(a){return m(c)(a)(y)}},remove:v,map:s,foldl:p,foldr:q,union:function(c){return function(a){return p(m)(a)(c)}},intersect:function(c){return function(a){return p(function(c){return function(i){return function(d){return b(c)(a)?
m(c)(i)(d):d}}})(B)(c)}},diff:function(c){return function(a){return p(function(c){return function(){return function(a){return v(c)(a)}}})(c)(a)}},keys:function(c){return p(function(c){return function(){return function(a){return["Cons",c,a]}}})(["Nil"])(c)},values:function(c){return p(function(){return function(c){return function(a){return["Cons",c,a]}}})(["Nil"])(c)},toList:function(c){return p(function(c){return function(a){return function(b){return["Cons",["Tuple2",c,a],b]}}})(["Nil"])(c)},fromList:function(c){return List.foldl(uncurry(m))(B)(c)}}}()})();
(function(){for(var e in Elm)this[e]=Elm[e];Elm.Set=function(){var a=[],d;for(d in Elm.Prelude)0<=a.indexOf(d)||(this[d]=Elm.Prelude[d]);a=Dict.empty;d=Dict.remove;var e=Dict.member,f=Dict.union,b=Dict.intersect,k=Dict.diff,g=Dict.keys,h=List.foldl(function(c){return function(a){return Dict.insert(c)(["Tuple0"])(a)}})(a);return{empty:a,singleton:function(c){return Dict.singleton(c)(["Tuple0"])},insert:function(c){return Dict.insert(c)(["Tuple0"])},remove:d,member:e,union:f,intersect:b,diff:k,toList:g,
fromList:h,foldl:function(c){return Dict.foldl(function(a){return function(){return function(b){return c(a)(b)}}})},foldr:function(c){return Dict.foldr(function(a){return function(){return function(b){return c(a)(b)}}})},map:function(c){return function(a){a=g(a);return h(List.map(c)(a))}}}}()})();Elm=Elm||{};
Elm.Char=function(){function e(a,b){return function(d){d=d.charCodeAt(0);return a<=d&&d<=b}}var a=e(48,57),d=e(97,102),j=e(65,70);return{fromCode:function(a){return String.fromCharCode(a)},toCode:function(a){return a.charCodeAt(0)},toUpper:function(a){return a.toUpperCase()},toLower:function(a){return a.toLowerCase()},toLocaleUpper:function(a){return a.toLocaleUpperCase()},toLocaleLower:function(a){return a.toLocaleLowerCase()},isLower:e(97,122),isUpper:e(65,90),isDigit:a,isOctDigit:e(48,55),isHexDigit:function(e){return a(e)||
d(e)||j(e)}}}();var String={toText:Value.toText,properEscape:Value.properEscape},Elm=Elm||{};
Elm.Color=function(){return{rgba:function(e){return function(a){return function(d){return function(j){return["Color",e,a,d,j]}}}},rgb:function(e){return function(a){return function(d){return["Color",e,a,d,1]}}},red:["Color",255,0,0,1],green:["Color",0,255,0,1],blue:["Color",0,0,255,1],yellow:["Color",255,255,0,1],cyan:["Color",0,255,255,1],magenta:["Color",255,0,255,1],black:["Color",0,0,0,1],white:["Color",255,255,255,1],gray:["Color",128,128,128,1],grey:["Color",128,128,128,1],complement:function(e){var a,
d=e[1]/255;a=e[2]/255;var j=e[3]/255,e=Math.max(d,a,j),f=Math.min(d,a,j),f=e-f,b=0;0===f?b=0:e===d?b=(a-j)/f%6:e===a?b=(j-d)/f+2:e===j&&(b=(d-a)/f+4);a=60*b;var d=e*(0===e?0:f/e),b=(a+180)%360/60,k=d*(1-Math.abs(b%2-1)),f=j=a=0;0<=b&&1>b?(a=d,j=k,f=0):1<=b&&2>b?(a=k,j=d,f=0):2<=b&&3>b?(a=0,j=d,f=k):3<=b&&4>b?(a=0,j=k,f=d):4<=b&&5>b?(a=k,j=0,f=d):5<=b&&6>b&&(a=d,j=0,f=k);e-=d;return["Color",Math.round(255*(a+e)),Math.round(255*(j+e)),Math.round(255*(f+e)),1]},extract:function(e){return 1===e[4]?"rgb("+
e[1]+","+e[2]+","+e[3]+")":"rgba("+e[1]+","+e[2]+","+e[3]+","+e[4]+")"}}}();
var Collage=function(){function e(a,c){var b=c.length-1;if(!(0>=b))for(a.moveTo(c[b][1],c[b][2]);b--;)a.lineTo(c[b][1],c[b][2])}function a(a,c,b,d){0===a.length&&(a=[8,4]);var e=d.length-1;if(!(0>=e)){var g=d[e][1],j=d[e][2],l=0,f=0,k=0,p=0,q=0,u=0,w=a.length,A=!0,x=a[0];for(c.moveTo(g,j);e--;){l=d[e][1];f=d[e][2];k=l-g;p=f-j;for(q=Math.sqrt(k*k+p*p);x<=q;)g+=k*x/q,j+=p*x/q,c[A?"lineTo":"moveTo"](g,j),k=l-g,p=f-j,q=Math.sqrt(k*k+p*p),A=!A,u=(u+1)%w,x=a[u];0<q&&(c[A?"lineTo":"moveTo"](l,f),x-=q);g=
l;j=f}}c.strokeStyle=Elm.Color.extract(b);c.stroke()}function d(b,c,i,d,j){c.clearRect(0,0,i,d);for(i=j.length;i--;){var f=j[i],n=b,d=c,l=f[1],k=f[2],s=f[3][1],p=f[3][2],f=f[4];d.save();(0!==s||0!==p)&&d.translate(s,p);l!==~~l&&d.rotate(2*Math.PI*l);1!==k&&d.scale(k,k);d.beginPath();switch(f[0]){case "FLine":a:switch(n=d,l=f,f=l[3][1],l[1][0]){case "Solid":l=l[2];e(n,f);n.strokeStyle=Elm.Color.extract(l);n.stroke();break;case "Dotted":a([3,3],n,l[2],f);break a;case "Dashed":a([8,4],n,l[2],f);break a;
case "Custom":a(l[1][1],n,l[2],f)}break;case "FShape":a:switch(s=n,k=d,n=f[1],l=f[2],f=f[3][1],n[0]){case "Filled":n=k;e(n,f);n.fillStyle=Elm.Color.extract(l);n.fill();break a;case "Outlined":n=k;e(n,f);n.strokeStyle=Elm.Color.extract(l);n.stroke();break a;case "Textured":l=s;n=n[1];s=new Image;s.src=g.castStringToJSString(n);s.onload=l;e(k,f);k.fillStyle=k.createPattern(s,"repeat");k.fill();break a;case "CustomOutline":a(n[1],k,l,f)}break;case "FImage":l=d,k=f[1],s=f[2],f=f[3],p=new Image,p.onload=
n,p.src=g.castStringToJSString(f),l.drawImage(p,-k/2,-s/2,k,s)}d.restore()}}function j(a,c,b){var e=Render.newElement("canvas");e.style.width=~~a+"px";e.style.height=~~c+"px";e.style.display="block";e.width=~~a;e.height=~~c;if(e.getContext){var g=e.getContext("2d"),a=e.width,c=e.height;d(function(){d(this,g,a,c,b)},g,a,c,b);return e}e.innerHTML="Your browser does not support the canvas element.";return e}function f(a,c,b,d,e,g,j){var f=Render.render(j),b="translate("+(e-j[3]/2)+"px,"+(g-j[4]/2)+"px) "+
(1===d?"":"scale("+d+","+d+")")+" "+(b===~~b?"":"rotate("+360*b+"deg)");f.style.transform=b;f.style.msTransform=b;f.style.MozTransform=b;f.style.webkitTransform=b;f.style.OTransform=b;b=Render.newElement("div");Render.addTo(b,f);b.style.width=~~a+"px";b.style.height=~~c+"px";b.style.overflow="hidden";return b}function b(a,c,b){if(!Value.eq(b,c)){var e=a.style.width.slice(0,-2)-0,g=a.style.height.slice(0,-2)-0;if("object"===typeof b[0]){if("object"===typeof c[0]&&a.getContext){var k=a.getContext("2d");
return d(function(){d(this,k,e,g,b)},k,e,g,b)}c=j(e,g,b);c.style.position="absolute";return a.parentNode.replaceChild(c,a)}c=f(e,g,b[1],b[2],b[3][1],b[3][2],b[4][1]);c.style.position="absolute";return a.parentNode.replaceChild(c,a)}}function k(a,c,b,d,e){var g=0,j,f=(a[1]-d[1])/b,a=(a[2]-d[2])/b;0!==c&&(c*=-2*Math.PI,b=f*Math.cos(c)-a*Math.sin(c),a=f*Math.sin(c)+a*Math.cos(c),f=b);if(0===e.length)return!1;j=e[0];for(b=e.length-1;b--;){c=e[b];d=j[1];j=j[2];var k=c[1],s=c[2];if(j<s)var p=j,q=s;else p=
s,q=j;if(d<k)var u=d,w=k;else u=k,w=d;p<a&&a<=q&&f<=w&&(f<=u||f<=(a-j)*(k-d)/(s-j)+d)&&++g;j=c}return 1===g%2}var g=Elm.JavaScript;return{collage:function(a,c,b){if(0===b.length)return j(a,c,[]);for(var d=Array(b.length),e=b.length;e--;){var g=b[e];d[e]="string"===typeof g[0]?f(a,c,g[1],g[2],g[3][1],g[3][2],g[4][1]):j(a,c,g)}return 1===b.length?d[0]:Render.flowWith(Render.goIn,function(c){return c},d)},updateCollage:function(a,c,d){if(1===d.length)return b(a,c[0],d[0]);for(var a=a.childNodes,e=a.length,
g=e;g--;)b(a[e-g-1],c[g],d[g])},insideForm:function(a){return function(c){var b=a[1],d=a[2];if(6>c.length){var e=c[3][1],g=c[3][2],j=0,f=c[2];switch(c[4][0]){case "FShape":for(var v=c[4][3][1],s=v.length;--s;)var p=v[s],j=Math.max(j,p[1]*p[1]+p[2]*p[2]);j*=f*f;break;case "FImage":v=f*c[4][1]/2;f=f*c[4][2]/2;j=v*v+f*f;break;case "FElement":v=f*c[4][1][3]/2,f=f*c[4][1][4]/2,j=v*v+f*f}c.push(function(a,c){var b=a-e,d=c-g;return b*b+d*d<j+1})}if(!c[5](b,d))return!1;var q,u;switch(c[4][0]){case "FShape":return k(a,
c[1],c[2],c[3],c[4][3][1]);case "FLine":return!1;case "FImage":q=c[4][1]/2;u=c[4][2]/2;break;case "FElement":q=c[4][1][3]/2,u=c[4][1][4]/2}return k(a,c[1],c[2],c[3],[[null,q,u],[null,-q,u],[null,-q,-u],[null,q,-u],[null,q,u]])}}}}(),Elm=Elm||{};
Elm.Graphics=function(){function e(a){return function(c){return["Position",a,c]}}function a(a){return function(c){return["EText",a,c]}}function d(a){return function(c){return["EFlow",a,l.castListToJSArray(c)]}}function j(a){return["Line",l.castListToJSArray(a)]}function f(a){return function(c){var b=l.castListToJSArray(a);0<b.length&&b.push(b[0]);return["Shape",b,c]}}function b(a){return function(c){return function(b){return function(d){return["Form",a,c,b,d]}}}}function k(a){return function(c){return function(b){return["FLine",
a,c,b]}}}function g(a){return function(c){return function(b){return["FShape",a,c,b]}}}function h(a,c,b,d,i,e){return["Element",Guid.guid(),a,c,b,d,i,e]}function c(a,c,b){return["Element",Guid.guid(),a,c,b,1,Nothing,Nothing]}function i(a){return~~a[3]}function t(a){return~~a[4]}function m(a){return function(b){return function(d){return c(["EImage",l.castStringToJSString(d)],a,b)}}}function r(a){return function(b){return c(A,a,b)}}function n(a){return function(c){return function(b){var d=map(function(b){return["Tuple2",
a/2*cos(2*(pi/50)*b),c/2*sin(2*(pi/50)*b)]}),i=49,e=["Nil"];if(0<=i){do e=["Cons",i,e];while(0<i--)}return f(d(e))(b)}}}var l=Elm.JavaScript,v=["DRight"],s=["DDown"],p=["DOut"],q=["Near"],u=["Mid"],w=["Far"],A=["EEmpty"],x=["Solid"],C=["Dotted"],y=["Dashed"],B=["Filled"],z=["Outlined"],D=e(q)(q),E=e(w)(q),F=e(q)(w),G=e(w)(w),H=e(q)(u),I=e(w)(u),q=e(u)(q),w=e(u)(w),u=e(u)(u);return{left:["DLeft"],right:v,down:s,up:["DUp"],inward:["DIn"],outward:p,topLeft:D,topRight:E,bottomLeft:F,bottomRight:G,midLeft:H,
midRight:I,midTop:q,midBottom:w,middle:u,middleAt:function(a){return function(c){return["PositionAt",a,c]}},topLeftAt:function(a){return function(c){return["PositionTL",a,c]}},topRightAt:function(a){return function(c){return["PositionTR",a,c]}},bottomLeftAt:function(a){return function(c){return["PositionBL",a,c]}},bottomRightAt:function(a){return function(c){return["PositionBR",a,c]}},absolute:function(a){return["Absolute",a]},relative:function(a){return["Relative",a]},width:function(a){return function(c){var b=
c[2];switch(b[0]){case "EImage":case "EVideo":return h(c[2],a,c[4]*a/c[3],c[5],c[6],c[7]);case "EText":return b=Value.getTextSize(a,c[4],b[2]),h(c[2],a,b[1],c[5],c[6],c[7])}return h(c[2],a,c[4],c[5],c[6],c[7])}},height:function(a){return function(c){switch(c[2][0]){case "EImage":case "EVideo":return h(c[2],c[3]*a/c[4],a,c[5],c[6],c[7])}return h(c[2],c[3],a,c[5],c[6],c[7])}},size:function(c){return function(a){return function(b){return h(b[2],c,a,b[5],b[6],b[7])}}},opacity:function(c){return function(a){return h(a[2],
a[3],a[4],c,a[6],a[7])}},color:function(c){return function(a){return h(a[2],a[3],a[4],a[5],Just(c),a[7])}},link:function(a){return function(c){return h(c[2],c[3],c[4],c[5],c[6],Just(l.castStringToJSString(a)))}},widthOf:i,heightOf:t,sizeOf:function(c){return["Tuple2",~~c[3],~~c[4]]},text:function(b){var d=Value.getTextSize(0,0,b);return c(a("left")(b),d[0],d[1])},asText:function(b){var b=monospace(Value.toText(Value.show(b))),d=Value.getTextSize(0,0,b);return c(a("left")(b),d[0],d[1])},plainText:function(b){var b=
Value.toText(b),d=Value.getTextSize(0,0,b);return c(a("left")(b),d[0],d[1])},centeredText:function(b){var d=Value.getTextSize(0,0,b);return c(a("center")(b),d[0],d[1])},justifiedText:function(b){var d=Value.getTextSize(0,0,b);return c(a("justify")(b),d[0],d[1])},rightedText:function(b){var d=Value.getTextSize(0,0,b);return c(a("right")(b),d[0],d[1])},image:m,images:function(c){var a=Elm.Signal.constant(r(0)(0)),c=Elm.Signal.lift(function(c){var c=l.castStringToJSString(c),b=new Image;b.onload=function(){Dispatcher.notify(a.id,
m(this.width)(this.height)(c))};b.src=c})(c);return Elm.Signal.lift2(function(c){return function(){return c}})(a)(c)},video:function(a){return function(b){return function(d){return c(["EVideo",l.castStringToJSString(d)],a,b)}}},fittedImage:function(a){return function(b){return function(d){return c(["EFittedImage",l.castStringToJSString(d)],a,b)}}},flow:function(a){return function(b){var e;e=map(i)(b);a:{switch(a[0]){case "DLeft":e=sum(e);break a;case "DRight":e=sum(e);break a}e=maximum(e)}var h;h=
map(t)(b);a:{switch(a[0]){case "DDown":h=sum(h);break a;case "DUp":h=sum(h);break a}h=maximum(h)}return c(d(a)(b),e,h)}},above:function(a){return function(b){return c(d(s)(["Cons",a,["Cons",b,["Nil"]]]),max(~~a[3])(~~b[3]),~~a[4]+~~b[4])}},below:function(a){return function(b){return c(d(s)(["Cons",b,["Cons",a,["Nil"]]]),max(~~a[3])(~~b[3]),~~a[4]+~~b[4])}},beside:function(a){return function(b){return c(d(v)(["Cons",a,["Cons",b,["Nil"]]]),~~a[3]+~~b[3],max(~~a[4])(~~b[4]))}},layers:function(a){return c(d(p)(a),
maximum(map(i)(a)),maximum(map(t)(a)))},collage:function(a){return function(b){return function(d){return c(["ECollage",a,b,Value.groupForms(d)],a,b)}}},spacer:r,container:function(a){return function(b){return function(d){return function(e){return c(["EContainer",d,e],a,b)}}}},line:j,segment:function(a){return function(c){return j(["Cons",a,["Cons",c,["Nil"]]])}},polygon:f,rect:function(a){return function(c){return function(b){return f(["Cons",["Tuple2",0-a/2,0-c/2],["Cons",["Tuple2",0-a/2,c/2],["Cons",
["Tuple2",a/2,c/2],["Cons",["Tuple2",a/2,0-c/2],["Nil"]]]]])(b)}}},oval:n,circle:function(a){return n(2*a)(2*a)},ngon:function(a){return function(c){return function(b){var d=toFloat(a),e=map(function(a){return["Tuple2",c*cos(2*(pi/d)*a),c*sin(2*(pi/d)*a)]}),i=a-1,h=["Nil"];if(0<=i){do h=["Cons",i,h];while(0<i--)}return f(e(h))(b)}}},solid:function(a){return function(c){return b(0)(1)(["Tuple2",0,0])(k(x)(a)(c))}},dotted:function(a){return function(c){return b(0)(1)(["Tuple2",0,0])(k(C)(a)(c))}},dashed:function(a){return function(c){return b(0)(1)(["Tuple2",
0,0])(k(y)(a)(c))}},customLine:function(a){return function(c){return function(d){return b(0)(1)(["Tuple2",0,0])(k(["Custom",l.castListToJSArray(a)])(c)(d))}}},filled:function(a){return function(c){return b(0)(1)(c[2])(g(B)(a)(c))}},outlined:function(a){return function(c){return b(0)(1)(c[2])(g(z)(a)(c))}},customOutline:function(a){return function(c){return function(d){return b(0)(1)(d[2])(g(["CustomOutline",l.castListToJSArray(a)])(c)(d))}}},textured:function(a){return function(c){return b(0)(1)(c[2])(g(["Textured",
a])(null)(c))}},sprite:function(a){return function(c){return function(d){return function(e){return b(0)(1)(e)(["FImage",c,d,l.castStringToJSString(a)])}}}},toForm:function(a){return function(c){return b(0)(1)(a)(["FElement",c])}},rotate:function(a){return function(c){a:{switch(c[0]){case "Form":var d=c[2],e=c[3],i=c[4],c=b(a+c[1])(d)(e)(i);break a}throw"Non-exhaustive pattern match in case";}return c}},scale:function(a){return function(c){return b(c[1])(a*c[2])(c[3])(c[4])}},move:function(a){return function(c){return function(d){var e;
a:{switch(d[0]){case "Form":e=d[1];var i=d[2],h=d[3],d=d[4];switch(h[0]){case "Tuple2":var g=h[1],h=h[2];e=b(e)(i)(["Tuple2",a+g,c+h])(d);break a}}throw"Non-exhaustive pattern match in case";}return e}}},isWithin:Collage.insideForm}}();Elm=Elm||{};
Elm.Text=function(){function e(a){return Value.toText(a)}var a=function(a){return function(b){return"<"+a+' style="padding:0;margin:0">'+b+"</"+a+">"}},d=function(a,b){return function(d){return"<span style='"+a+":"+b+"'>"+d+"</span>"}},j=function(a){a=Elm.JavaScript.castStringToJSString(a);return d("font-family",a)},f=a("h1"),b=d("font-style","italic"),a=a("b"),k=d("text-decoration","underline"),g=d("text-decoration","overline"),h=d("text-decoration","line-through");return{fromString:e,toText:e,header:f,
height:function(a){return d("font-size",a+"em")},italic:b,bold:a,underline:k,overline:g,strikeThrough:h,monospace:j("monospace"),typeface:j,color:function(a){return d("color",Elm.Color.extract(a))},link:function(a){return function(b){return"<a href='"+e(a)+"'>"+b+"</a>"}}}}();
var Render=function(){function e(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a}function a(a){return a}function d(a){a.style.styleFloat="left";a.style.cssFloat="left";return a}function j(a){a.style.position="absolute";return a}function f(a,b,d){for(var h=e("div"),g=d.length;g--;){var j=a(b(d[g]));h.appendChild(j)}return h}function b(a){switch(a[0]){case "Absolute":return a[1]+"px";case "Relative":return 100*a[1]+"%"}}function k(a,d){d.style.position="absolute";d.style.margin=
"auto";switch(a[0]){case "Position":"Far"!==a[1][0]&&(d.style.left=0);"Near"!==a[1][0]&&(d.style.right=0);"Far"!==a[2][0]&&(d.style.top=0);"Near"!==a[2][0]&&(d.style.bottom=0);break;case "PositionAt":d.style.top=b(a[2]);d.style.left=b(a[1]);var e="translate("+-elem[3]/2+"px,"+-elem[4]/2+"px)";d.style.transform=e;d.style.msTransform=e;d.style.MozTransform=e;d.style.webkitTransform=e;d.style.OTransform=e;break;default:e=a[0].slice(-2),d.style["T"===e[0]?"top":"bottom"]=b(a[2]),d.style["L"===e[1]?"left":
"right"]=b(a[1])}}function g(c){var b={};switch(c[2][0]){case "EText":var b=c[2][1],h=c[2][2],m=e("div");m.innerHTML=h;m.style.textAlign=b;b=m;break;case "EImage":b=c[2][1];h=e("img");h.src=b;h.name=b;h.style.display="block";b=h;break;case "EVideo":m=c[2][1];b=e("video");b.controls="controls";h=e("source");h.src=m;m=m.split(".");h.type="video/"+m[m.length-1];b.appendChild(h);b.style.display="block";break;case "EFittedImage":var r=c[3],n=c[4],b=c[2][1],l=e("canvas");l.style.display="block";l.style.width=
r+"px";l.style.height=n+"px";l.width=r;l.height=n;l.innerHTML="Your browser does not support the canvas element.";var v=e("img");v.onload=function(){if(l.getContext){var a=l.getContext("2d"),b=0,c=0,d=this.width,e=this.height;r/n>this.width/this.height?(e=this.width*n/r,c=(this.height-e)/2):(d=this.height*r/n,b=(this.width-d)/2);a.drawImage(v,b,c,d,e,0,0,l.width,l.height)}};v.src=b;b=l;break;case "EFlow":a:{b=c[2][2];switch(c[2][1][0]){case "DDown":b=b.slice(0).reverse();case "DUp":b=f(a,g,b);break a;
case "DRight":b=b.slice(0).reverse();case "DLeft":b=f(d,g,b);break a;case "DOut":b=b.slice(0).reverse();case "DIn":b=f(j,g,b);break a}b=void 0}break;case "ECollage":b=Collage.collage(c[2][1],c[2][2],c[2][3]);break;case "EEmpty":b=e("div");break;case "EContainer":h=c[2][1];b=g(c[2][2]);k(h,b);h=e("div");h.style.position="relative";h.style.overflow="hidden";h.appendChild(b);b=h;break;case "EHtml":b=c[2][1];"button"!==b.type&&(h=Value.getExcess(b),c[3]-=h[0],c[4]-=h[1]);break;case "EExternalHtml":b=
e("div"),b.appendChild(c[2][1])}b.id=c[1];b.style.width=~~c[3]+"px";b.style.height=~~c[4]+"px";1!==c[5]&&(b.style.opacity=c[5]);"Just"===c[6][0]&&(b.style.backgroundColor=Elm.Color.extract(c[6][1]));return"Just"===c[7][0]?(h=e("a"),h.href=c[7][1],h.appendChild(b),h):b}function h(b,e,f){"A"===b.tagName&&(b=b.firstChild);if(e[1]!==f[1]){if(e[2][0]!==f[2][0])return b.parentNode.replaceChild(g(f),b);var m=f[2],r=e[2];switch(m[0]){case "EText":m[1]!==r[1]&&(b.style.textAlign=m[1]);m[2]!==r[2]&&(b.innerHTML=
m[2]);break;case "EImage":m[1]!==r[1]&&(b.src=m[1]);break;case "EVideo":case "EFittedImage":if(!Value.eq(m,r)||f[3]!==e[3]||f[4]!==e[4])return b.parentNode.replaceChild(g(f),b);break;case "ECollage":if(m[1]!==r[1]||m[2]!==r[2]||m[3].length!==r[3].length)return b.parentNode.replaceChild(g(f),b);Collage.updateCollage(b,r[3],m[3]);break;case "EFlow":if(m[1]!==r[1])return b.parentNode.replaceChild(g(f),b);var n=m[2],l=b.childNodes;if(n.length!==l.length)return b.parentNode.replaceChild(g(f),b);var r=
r[2],v={};switch(m[1][0]){case "DDown":case "DUp":v=a;break;case "DRight":case "DLeft":v=d;break;case "DOut":case "DIn":v=j}for(m=l.length;m--;)h(l[m],r[m],n[m]),v(l[m]);break;case "EContainer":h(b.childNodes[0],r[2],m[2]);k(m[1],b.childNodes[0]);break;case "EHtml":f[1]!==e[1]&&(n=g(f),b.parentNode.replaceChild(n,b),b=n);"button"!==n.type&&(m=Value.getExcess(b),f[3]-=m[0],f[4]-=m[1]);break;case "EExternalHtml":f[1]!==e[1]&&b.parentNode.replaceChild(g(f),b)}f[3]!==e[3]&&(b.style.width=~~f[3]+"px");
f[4]!==e[4]&&(b.style.height=~~f[4]+"px");f[5]!==e[5]&&(b.style.opacity=f[5]);2===f[6].length&&(m=Elm.Color.extract(f[6][1]),m!==b.style.backgroundColor&&(b.style.backgroundColor=m));if(2===f[7].length&&(1===e[7].length||f[7][1]!==e[7][1]))b.parentNode.href=f[7][1];f[1]=e[1]}}return{render:g,update:h,addTo:function(a,b){a.appendChild(b)},newElement:e,flowWith:f,goIn:j}}(),Elm=Elm||{};
Elm.Signal=function(){var e=function(a,b,d){for(var e=a.kids,g=e.length;g--;)e[g].recv(b,d,a.id)},a=function(a){this.id=Guid.guid();this.value=a;this.kids=[];this.defaultNumberOfKids=0;this.recv=function(a,b,d){if(b=b===this.id)this.value=d;e(this,a,b);return b};Dispatcher.inputs.push(this)},d=function(a,b){this.id=Guid.guid();this.value=null;this.kids=[];this.count=0;this.changed=!1;b.reverse();this.recalc=function(){for(var d=a,e=b.length;e--;)d=d(b[e].value);this.value=d};this.recalc();this.recv=
function(a,d){this.count+=1;d&&(this.changed=!0);this.count==b.length&&(this.changed&&this.recalc(),e(this,a,this.changed),this.changed=!1,this.count=0)};for(var d=b.length;d--;)b[d].kids.push(this)},j=function(a,b,d,g){this.id=Guid.guid();this.value=d?b(g.value):b;this.kids=[];this.recv=function(b,c){c&&(this.value=a(g.value)(this.value));e(this,b,c)};g.kids.push(this)},f=function(a,b,d){this.id=Guid.guid();this.value=a(d.value)?b:d.value;this.kids=[];this.recv=function(b,c){var g=c&&!a(d.value);
g&&(this.value=d.value);e(this,b,g)};d.kids.push(this)},b=function(a){this.id=Guid.guid();this.value=a.value;this.kids=[];this.recv=function(b,d){var g=d&&!eq(this.value,a.value);g&&(this.value=a.value);e(this,b,g)};a.kids.push(this)},k=function(a){return function(b){return function(e){e=new d(function(a){return function(b){return[a,b]}},[a,e]);e=new f(function(a){return a[0]},[!0,b],e);return new d(function(a){return a[1]},[e])}}},g=function(a,b){this.id=Guid.guid();this.value=b.value;this.kids=
[];this.count=0;this.changed=!1;this.recv=function(d,g,f){f===a.id&&(this.changed=g);this.count+=1;2==this.count&&(this.changed&&(this.value=b.value),e(this,d,this.changed),this.count=0,this.changed=!1)};a.kids.push(this);b.kids.push(this)};return{constant:function(b){return new a(b)},lift:function(a){return function(b){return new d(a,[b])}},lift2:function(a){return function(b){return function(e){return new d(a,[b,e])}}},lift3:function(a){return function(b){return function(e){return function(g){return new d(a,
[b,e,g])}}}},lift4:function(a){return function(b){return function(e){return function(g){return function(f){return new d(a,[b,e,g,f])}}}}},foldp:function(a){return function(b){return function(d){return new j(a,b,!1,d)}}},foldp_:function(a){return function(b){return function(d){return new j(a,b,!0,d)}}},foldp1:function(a){return function(b){return new j(a,function(a){return a},!0,b)}},count:function(a){return new j(function(){return function(a){return a+1}},0,!1,a)},keepIf:function(a){return function(b){return function(d){return new f(function(b){return!a(b)},
b,d)}}},dropIf:function(a){return function(b){return function(d){return new f(a,b,d)}}},keepWhen:function(a){return k(new d(function(a){return!a},[a]))},dropWhen:k,dropRepeats:function(a){return new b(a)},sampleOn:function(a){return function(b){return new g(a,b)}}}}();
var Dispatcher=function(){function e(a){if(!a.hasOwnProperty("defaultNumberOfKids"))return!0;var d=a.kids.length;if(0==d)return!1;if(d>a.defaultNumberOfKids)return!0;for(var g=!1;d--;)g=g||e(a.kids[d]);return g}var a=null,d=0,j=[],f=null;return{initialize:function(){a=Elm.main();a.hasOwnProperty("recv")||(a=Elm.Signal.constant(a));f=a.value;for(var b=[],d=j.length;d--;)e(j[d])&&b.push(j[d]);j=b;document.getElementById("content").appendChild(Render.render(f));b=document.getElementById("widthChecker").offsetWidth;
b!==window.innerWidth&&Dispatcher.notify(Window.dimensions.id,Value.Tuple(b,window.innerHeight));a=Elm.Signal.lift(function(a){var b=document.getElementById("content");Render.update(b.firstChild,f,a);return f=a})(a)},notify:function(a,e){d+=1;for(var g=!1,f=j.length;f--;)g=j[f].recv(d,a,e)||g;return g},inputs:j}}();
Elm.HTTP=function(){function e(a){return function(b){return function(d){return function(c){return{"0":"Request",length:1,verb:f.castStringToJSString(a),url:f.castStringToJSString(b),data:null===d?null:f.castStringToJSString(d),headers:c}}}}}function a(a){return e("GET")(a)(null)(["Nil"])}function d(a){return function(d){Dispatcher.notify(a.id,["Waiting"]);var e=null;window.XMLHttpRequest?e=new XMLHttpRequest:window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP"));e.onreadystatechange=function(){4===
e.readyState&&Dispatcher.notify(a.id,200===e.status?["Success",b(e.responseText)]:["Failure",e.status,b(e.statusText)])};e.open(d.verb,d.url,!0);Elm.List.map(function(a){e.setRequestHeader(f.castStringToJSString(a[1]),f.castStringToJSString(a[2]))})(d.headers);e.send(d.data);return null}}function j(a){var b=Elm.Signal.constant(["Waiting"]),a=Elm.Signal.lift(d(b))(a);return Elm.Signal.lift2(function(a){return function(){return a}})(b)(a)}var f=Elm.JavaScript,b=Elm.JavaScript.castJSStringToString;return{get:a,
post:function(a){return function(b){return e("POST")(a)(b)(["Nil"])}},request:e,send:j,sendGet:function(b){return j(Elm.Signal.lift(a)(b))}}}();
Elm.Input=function(){var e=Elm.JavaScript,a=Elm.JavaScript.castJSStringToString,d=function(b,d){b.placeholder=e.castStringToJSString(d);var g=Elm.Signal.constant(["Nil"]);Value.addListener(b,"keyup",function(){Dispatcher.notify(g.id,a(b.value));b.focus()});b.style.padding="1px";return Value.Tuple(Value.wrap(b),g)},j=function(a){a=document.createElement(a);a.style.padding="0";a.style.margin="0";return a},f=function(a){for(var d=j("select"),e=[];"Cons"===a[0];){var f=j("option"),c=Value.toText(a[1][1]);
f.value=c;f.innerHTML=c;d.appendChild(f);e.push(a[1][2]);a=a[2]}var i=Elm.Signal.constant(e[0]);Value.addListener(d,"change",function(){Dispatcher.notify(i.id,e[d.selectedIndex])});return Value.Tuple(Value.wrap(d),i)};return{textArea:function(a){return function(e){var f=j("textarea");f.rows=e;f.cols=a;return d(f,"")}},textField:function(a){var e=j("input");e.type="text";return d(e,a)},password:function(a){var e=j("input");e.type="password";return d(e,a)},checkbox:function(a){var d=j("input");d.type=
"checkbox";d.checked=a;var e=Elm.Signal.constant(a);Value.addListener(d,"change",function(){Dispatcher.notify(e.id,d.checked)});return Value.Tuple(Value.wrap(d),e)},dropDown:f,stringDropDown:function(a){return f(Elm.List.map(function(a){return Value.Tuple(a,a)})(a))},button:function(a){var d=j("input");d.type="button";d.value=e.castStringToJSString(a);var f=Elm.Signal.constant(!1);Value.addListener(d,"click",function(){Dispatcher.notify(f.id,!0);Dispatcher.notify(f.id,!1)});return Value.Tuple(Value.wrap(d),
f)}}}();
Elm.Keyboard={Raw:function(){function e(a,d){return"Nil"===d[0]?d:d[1]===a?d[2]:["Cons",d[1],e(a,d[2])]}var a=Elm.Signal.constant(["Nil"]),d=Elm.Signal.constant(["Nothing"]);Value.addListener(document,"keydown",function(d){var e;a:{for(e=a.value;"Nil"!==e[0];){if(e[1]===d.keyCode){e=!0;break a}e=e[2]}e=!1}e||Dispatcher.notify(a.id,["Cons",d.keyCode,a.value])||this.removeEventListener("keydown",arguments.callee,!1)});Value.addListener(document,"keyup",function(d){var f=e(d.keyCode,a.value);Dispatcher.notify(a.id,
f)||this.removeEventListener("keyup",arguments.callee,!1)});Value.addListener(window,"blur",function(d){Dispatcher.notify(a.id,["Nil"])||this.removeEventListener("blur",arguments.callee,!1)});Value.addListener(document,"keypress",function(a){var e=Dispatcher.notify(d.id,["Just",a.charCode||a.keyCode]);Dispatcher.notify(d.id,["Nothing"]);e||this.removeEventListener("keypress",arguments.callee,!1)});return{keysDown:a,charPressed:d}}()};
Elm.Mouse=function(){function e(a){var b=0,c=0;a||(a=window.event);if(a.pageX||a.pageY)b=a.pageX,c=a.pageY;else if(a.clientX||a.clientY)b=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,c=a.clientY+document.body.scrollTop+document.documentElement.scrollTop;return Value.Tuple(b,c)}var a=Elm.Signal.constant(Value.Tuple(0,0));a.defaultNumberOfKids=2;var d=Elm.Signal.lift(function(a){return a[1]})(a);d.defaultNumberOfKids=0;var j=Elm.Signal.lift(function(a){return a[2]})(a);j.defaultNumberOfKids=
0;var f=Elm.Signal.constant(!1),b=Elm.Signal.constant(!1),k=Elm.Signal.constant(Value.Tuple());Value.addListener(document,"click",function(a){var d=Dispatcher.notify(b.id,!0),c=Dispatcher.notify(k.id,Value.Tuple());Dispatcher.notify(b.id,!1);!d&&!c&&this.removeEventListener("click",arguments.callee,!1)});Value.addListener(document,"mousedown",function(a){Dispatcher.notify(f.id,!0)||this.removeEventListener("mousedown",arguments.callee,!1)});Value.addListener(document,"mouseup",function(a){Dispatcher.notify(f.id,
!1)||this.removeEventListener("mouseup",arguments.callee,!1)});Value.addListener(document,"mousemove",function(b){Dispatcher.notify(a.id,e(b))||this.removeEventListener("mousemove",arguments.callee,!1)});return{position:a,x:d,y:j,isClicked:b,isDown:f,clicks:k,isClickedOn:function(a){var a=Render.render(a),b=Elm.Signal.constant(!1);Value.addListener(a,"click",function(){Dispatcher.notify(b.id,!0);Dispatcher.notify(b.id,!1)});return Value.Tuple(Value.wrap(a),b)}}}();
Elm.Random=function(){return{inRange:function(e){return function(a){return Elm.Signal.constant(Math.floor(Math.random()*(a-e+1))+e)}},randomize:function(e){return function(a){return function(d){return Elm.Signal.lift(function(){return Math.floor(Math.random()*(a-e+1))+e})(d)}}}}}();
Elm.Time=function(){return{every:function(e){var e=1E3*e,a=Elm.Signal.constant(0),d=0;setInterval(function(){d+=e;Dispatcher.notify(a.id,d/1E3)},e);return a},after:function(e){var e=1E3*e,a=Elm.Signal.constant(!1);setTimeout(function(){Dispatcher.notify(a.id,!0)},e);return a},before:function(e){var e=1E3*e,a=Elm.Signal.constant(!0);setTimeout(function(){Dispatcher.notify(a.id,!1)},e);return a}}}();
Elm.Window=function(){var e=Elm.Signal.constant(Value.Tuple(window.innerWidth,window.innerHeight));e.defaultNumberOfKids=2;var a=Elm.Signal.lift(function(a){return a[1]})(e);a.defaultNumberOfKids=0;var d=Elm.Signal.lift(function(a){return a[2]})(e);d.defaultNumberOfKids=0;Value.addListener(window,"resize",function(a){var d=document.getElementById("widthChecker").offsetWidth;Dispatcher.notify(e.id,Value.Tuple(d,window.innerHeight))||this.removeEventListener("resize",arguments.callee,!1)});return{dimensions:e,
width:a,height:d}}();Value.addListener(document,"elm_log",function(e){console.log(e.value)});Value.addListener(document,"elm_title",function(e){document.title=e.value});Value.addListener(document,"elm_redirect",function(e){0<e.value.length&&(window.location=e.value)});Elm=Elm||{};
Elm.Prelude=function(){var e=function(a){return function(d){var j=a%d,j=0==a?0:0<d?0<=a?j:j+d:-e(-a)(-d);return j==d?0:j}};return{eq:Value.eq,id:function(a){return a},not:function(a){return!a},fst:function(a){return a[1]},snd:function(a){return a[2]},rem:function(a){return function(d){return a%d}},div:function(a){return function(d){return~~(a/d)}},compare:function(a){return function(d){a="object"===typeof a?toText(a):a;d="object"===typeof d?toText(d):d;return[a===d?"EQ":a<d?"LT":"GT"]}},toFloat:function(a){return a},
round:function(a){return Math.round(a)},floor:function(a){return Math.floor(a)},ceiling:function(a){return Math.ceil(a)},truncate:function(a){return~~a},readInt:function(a){var a=JavaScript.castStringToJSString(a),d=a.length;if(0===d)return Nothing;var e=0;if("-"==a[0]){if(1===d)return Nothing;e=1}for(;e<d;++e)if(!Char.isDigit(a[e]))return Nothing;return Just(parseInt(a))},readFloat:function(a){var a=JavaScript.castStringToJSString(a),d=a.length;if(0===d)return Nothing;var e=0;if("-"==a[0]){if(1===
d)return Nothing;e=1}for(var f=0;e<d;++e)if(!Char.isDigit(a[e])){if("."===a[e]&&(f+=1,1>=f))continue;return Nothing}return Just(parseFloat(a))},sqrt:Math.sqrt,abs:Math.abs,pi:Math.PI,e:Math.E,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:function(a){return function(d){return Math.atan2(a,d)}},mod:e,min:function(a){return function(d){return Math.min(a,d)}},max:function(a){return function(d){return Math.max(a,d)}},flip:function(a){return function(d){return function(e){return a(e)(d)}}},
clamp:function(a){return function(d){return function(e){return Math.min(d,Math.max(a,e))}}},curry:function(a){return function(d){return function(e){return a(["Tuple2",d,e])}}},uncurry:function(a){return function(d){if("Tuple2"!==d[0])throw"Function was uncurry'd but was not given a pair.";return a(d[1])(d[2])}},logBase:function(a){return function(d){return Math.log(d)/Math.log(a)}},Just:Elm.Maybe.Just,Nothing:Elm.Maybe.Nothing,maybe:Elm.Maybe.maybe,map:Elm.List.map,filter:Elm.List.filter,head:Elm.List.head,
tail:Elm.List.tail,last:Elm.List.last,length:Elm.List.length,reverse:Elm.List.reverse,foldr:Elm.List.foldr,foldr1:Elm.List.foldr1,foldl:Elm.List.foldl,foldl1:Elm.List.foldl1,and:Elm.List.and,or:Elm.List.or,all:Elm.List.all,any:Elm.List.any,sum:Elm.List.sum,product:Elm.List.product,concat:Elm.List.concat,concatMap:Elm.List.concatMap,maximum:Elm.List.maximum,minimum:Elm.List.minimum,scanl:Elm.List.scanl,scanl1:Elm.List.scanl1,take:Elm.List.take,drop:Elm.List.drop,zip:Elm.List.zip,unzip:Elm.List.unzip,
lift:Elm.Signal.lift,lift2:Elm.Signal.lift2,lift3:Elm.Signal.lift3,lift4:Elm.Signal.lift4,foldp:Elm.Signal.foldp,foldp1:Elm.Signal.foldp1,foldp_:Elm.Signal.foldp_,constant:Elm.Signal.constant,count:Elm.Signal.count,keepIf:Elm.Signal.keepIf,dropIf:Elm.Signal.dropIf,keepWhen:Elm.Signal.keepWhen,dropWhen:Elm.Signal.dropWhen,dropRepeats:Elm.Signal.dropRepeats,sampleOn:Elm.Signal.sampleOn}}();
(function(){var e=function(a){for(var d in a)Elm.Prelude[d]=a[d]};e(Elm.Color);e(Elm.Text);e(Elm.Graphics);show=Value.show})();
(function(){for(var e in Elm)this[e]=Elm[e];Elm.Automaton=function(){function a(a){return["Automaton",a]}function d(a){return["DragFrom",a]}function e(b){return function(c){var d;a:{switch(b[0]){case "Automaton":d=b[1];break a}throw"Non-exhaustive pattern match in case";}var f;a:{switch(c[0]){case "Automaton":f=c[1];break a}throw"Non-exhaustive pattern match in case";}return a(function(a){var a=d(a),b;a:{switch(a[0]){case "Tuple2":b=a[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(a[0]){case "Tuple2":a=
a[2];break a}throw"Non-exhaustive pattern match in case";}var c=f(b);a:{switch(c[0]){case "Tuple2":b=c[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(c[0]){case "Tuple2":c=c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",b,e(a)(c)]})}}function f(b){return a(function(a){var c=unzip(map(function(b){a:{switch(b[0]){case "Automaton":b=b[1](a);break a}throw"Non-exhaustive pattern match in case";}return b})(b)),d;a:{switch(c[0]){case "Tuple2":d=c[1];break a}throw"Non-exhaustive pattern match in case";
}a:{switch(c[0]){case "Tuple2":c=c[2];break a}throw"Non-exhaustive pattern match in case";}return["Tuple2",d,f(c)]})}function b(c){return a(function(a){return["Tuple2",c(a),b(c)]})}function k(b){return function(c){return a(function(a){a=c(a)(b);return["Tuple2",a,k(a)(c)]})}}function g(b){return function(c){return a(function(a){var d=c(a)(b);a:{switch(d[0]){case "Tuple2":a=d[1];break a}throw"Non-exhaustive pattern match in case";}a:{switch(d[0]){case "Tuple2":d=d[2];break a}throw"Non-exhaustive pattern match in case";
}return["Tuple2",a,g(d)(c)]})}}function h(a){return function(b){a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":b=["Tuple2",a[1]-b[1],a[2]-b[2]];break b}break}break a}throw"Non-exhaustive pattern match in case";}return b}}function c(a){return function(b){var c;a:{switch(a[0]){case "Tuple2":b:{switch(b[0]){case "Tuple2":var e=function(a){return["Tuple2",b[2],["Tuple2",a,b[2]]]};c=function(){switch(b[1][0]){case "DragFrom":var c;a[1]?c=["Tuple2",uncurry(move)(h(a[2])(b[1][1]))(b[2]),["Tuple2",
d(b[1][1]),b[2]]]:(c=uncurry(move)(h(a[2])(b[1][1]))(b[2]),c=["Tuple2",c,["Tuple2",m,c]]);return c;case "Ignore":return e(a[1]?r:m);case "Listen":return e(not(a[1])?m:isWithin(a[2])(b[2])?d(a[2]):r)}throw"Non-exhaustive pattern match in case";}();break b}break}break a}throw"Non-exhaustive pattern match in case";}return c}}var i=[],t;for(t in Elm.Prelude)0<=i.indexOf(t)||(this[t]=Elm.Prelude[t]);var m=["Listen"],r=["Ignore"],i=k(0)(function(){return function(a){return 1+a}});return{Automaton:a,run:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=
lift(fst)(foldp_(function(a){return function(b){a:{switch(b[0]){case "Tuple2":switch(b[2][0]){case "Automaton":b=b[2][1](a);break a}}throw"Non-exhaustive pattern match in case";}return b}})(a[1])(b));break a}throw"Non-exhaustive pattern match in case";}return b}},step:function(a){return function(b){a:{switch(a[0]){case "Automaton":b=a[1](b);break a}throw"Non-exhaustive pattern match in case";}return b}},composeAuto:e,combine:f,pure:b,init:k,init_:g,count:i,Listen:m,Ignore:r,DragFrom:d,vecSub:h,stepDrag:c,
draggable:function(a){return g(["Tuple2",m,a])(c)}}}()})();