diff --git a/README.md b/README.md
deleted file mode 100644
--- a/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-please read my diploma thesis 2015 (TU Vienna)
-Haskell OpenLayers Wrapper
diff --git a/olwrapper.cabal b/olwrapper.cabal
--- a/olwrapper.cabal
+++ b/olwrapper.cabal
@@ -1,5 +1,5 @@
 Name:           olwrapper
-Version:        0.3.7
+Version:        0.3.7.1
 Synopsis:       An OpenLayers JavaScript Wrapper and Webframework with snaplet-fay
 Description:    test
 Author:         Thomas Edelmann
@@ -22,10 +22,10 @@
     OpenLayers
     OpenLayers.Func
     OpenLayers.Html
+    OpenLayers.HtmlInternal
     OpenLayers.Types
     OlApp
   other-modules:
-    OpenLayers.HtmlInternal
     Tutorial.OlApp
     Tutorial.Traffic
   other-extensions:    
diff --git a/snaplets/fay/devel.cfg b/snaplets/fay/devel.cfg
deleted file mode 100644
--- a/snaplets/fay/devel.cfg
+++ /dev/null
@@ -1,24 +0,0 @@
-# "Development": Compile files on every request.
-# "Production":  Compile all files in snaplets/src/fay when the application is started and then serve them statically.
-#
-# Both methods will write files to disk for debugging purposes.
-# Default is "Development".
-compileMode = "Development"
-# Print more or less information about what the snaplet is doing.
-# Default is on.
-verbose = on
-# Run js-beautify on the results if it is available in the PATH.
-# If it isn't available the compiled file will be used as is.
-# Default is on.
-prettyPrint = on
-# A comma-separated list of directories to look for fay imports in.
-# This is useful if you want to share modules between Fay and Snap.
-# Paths are relative to the root of the snap application.
-# snaplets/fay/src will always be checked for imports.
-# Default is "" meaning no additional directories will be checked.
-includeDirs = "wrapper,web"
-# A comma separated list of Fay package names.
-# This gives the same result as using includeDirs,
-# except Fay figures out the paths for you.
-# Default is "" meaning no other Fay packages will be used.
-packages = "fay-text,fay-jquery"
diff --git a/snaplets/fay/js/Index.js b/snaplets/fay/js/Index.js
deleted file mode 100644
--- a/snaplets/fay/js/Index.js
+++ /dev/null
@@ -1,6861 +0,0 @@
-/*******************************************************************************
- * Misc.
- */
-
-// Workaround for missing functionality in IE 8 and earlier.
-if( Object.create === undefined ) {
-  Object.create = function( o ) {
-    function F(){}
-    F.prototype = o;
-    return new F();
-  };
-}
-
-// Insert properties of b in place into a.
-function Fay$$objConcat(a,b){
-  for (var p in b) if (b.hasOwnProperty(p)){
-    a[p] = b[p];
-  }
-  return a;
-}
-
-/*******************************************************************************
- * Thunks.
- */
-
-// Force a thunk (if it is a thunk) until WHNF.
-function Fay$$_(thunkish,nocache){
-  while (thunkish instanceof Fay$$$) {
-    thunkish = thunkish.force(nocache);
-  }
-  return thunkish;
-}
-
-// Apply a function to arguments (see method2 in Fay.hs).
-function Fay$$__(){
-  var f = arguments[0];
-  for (var i = 1, len = arguments.length; i < len; i++) {
-    f = (f instanceof Fay$$$? Fay$$_(f) : f)(arguments[i]);
-  }
-  return f;
-}
-
-// Thunk object.
-function Fay$$$(value){
-  this.forced = false;
-  this.value = value;
-}
-
-// Force the thunk.
-Fay$$$.prototype.force = function(nocache) {
-  return nocache ?
-    this.value() :
-    (this.forced ?
-     this.value :
-     (this.value = this.value(), this.forced = true, this.value));
-};
-
-
-function Fay$$seq(x) {
-  return function(y) {
-    Fay$$_(x,false);
-    return y;
-  }
-}
-
-function Fay$$seq$36$uncurried(x,y) {
-  Fay$$_(x,false);
-  return y;
-}
-
-/*******************************************************************************
- * Monad.
- */
-
-function Fay$$Monad(value){
-  this.value = value;
-}
-
-// This is used directly from Fay, but can be rebound or shadowed. See primOps in Types.hs.
-// >>
-function Fay$$then(a){
-  return function(b){
-    return Fay$$bind(a)(function(_){
-      return b;
-    });
-  };
-}
-
-// This is used directly from Fay, but can be rebound or shadowed. See primOps in Types.hs.
-// >>
-function Fay$$then$36$uncurried(a,b){
-  return Fay$$bind$36$uncurried(a,function(_){ return b; });
-}
-
-// >>=
-// This is used directly from Fay, but can be rebound or shadowed. See primOps in Types.hs.
-function Fay$$bind(m){
-  return function(f){
-    return new Fay$$$(function(){
-      var monad = Fay$$_(m,true);
-      return Fay$$_(f)(monad.value);
-    });
-  };
-}
-
-// >>=
-// This is used directly from Fay, but can be rebound or shadowed. See primOps in Types.hs.
-function Fay$$bind$36$uncurried(m,f){
-  return new Fay$$$(function(){
-    var monad = Fay$$_(m,true);
-    return Fay$$_(f)(monad.value);
-  });
-}
-
-// This is used directly from Fay, but can be rebound or shadowed.
-function Fay$$$_return(a){
-  return new Fay$$Monad(a);
-}
-
-// Allow the programmer to access thunk forcing directly.
-function Fay$$force(thunk){
-  return function(type){
-    return new Fay$$$(function(){
-      Fay$$_(thunk,type);
-      return new Fay$$Monad(Fay$$unit);
-    })
-  }
-}
-
-// This is used directly from Fay, but can be rebound or shadowed.
-function Fay$$return$36$uncurried(a){
-  return new Fay$$Monad(a);
-}
-
-// Unit: ().
-var Fay$$unit = null;
-
-/*******************************************************************************
- * Serialization.
- * Fay <-> JS. Should be bijective.
- */
-
-// Serialize a Fay object to JS.
-function Fay$$fayToJs(type,fayObj){
-  var base = type[0];
-  var args = type[1];
-  var jsObj;
-  if(base == "action") {
-    // A nullary monadic action. Should become a nullary JS function.
-    // Fay () -> function(){ return ... }
-    return function(){
-      return Fay$$fayToJs(args[0],Fay$$_(fayObj,true).value);
-    };
-
-  }
-  else if(base == "function") {
-    // A proper function.
-    return function(){
-      var fayFunc = fayObj;
-      var return_type = args[args.length-1];
-      var len = args.length;
-      // If some arguments.
-      if (len > 1) {
-        // Apply to all the arguments.
-        fayFunc = Fay$$_(fayFunc,true);
-        // TODO: Perhaps we should throw an error when JS
-        // passes more arguments than Haskell accepts.
-
-        // Unserialize the JS values to Fay for the Fay callback.
-        if (args == "automatic_function")
-        {
-          for (var i = 0; i < arguments.length; i++) {
-            fayFunc = Fay$$fayToJs(["automatic"], Fay$$_(fayFunc(Fay$$jsToFay(["automatic"],arguments[i])),true));
-          }
-          return fayFunc;
-        }
-
-        for (var i = 0, len = len; i < len - 1 && fayFunc instanceof Function; i++) {
-          fayFunc = Fay$$_(fayFunc(Fay$$jsToFay(args[i],arguments[i])),true);
-        }
-        // Finally, serialize the Fay return value back to JS.
-        var return_base = return_type[0];
-        var return_args = return_type[1];
-        // If it's a monadic return value, get the value instead.
-        if(return_base == "action") {
-          return Fay$$fayToJs(return_args[0],fayFunc.value);
-        }
-        // Otherwise just serialize the value direct.
-        else {
-          return Fay$$fayToJs(return_type,fayFunc);
-        }
-      } else {
-        throw new Error("Nullary function?");
-      }
-    };
-
-  }
-  else if(base == "string") {
-    return Fay$$fayToJs_string(fayObj);
-  }
-  else if(base == "list") {
-    // Serialize Fay list to JavaScript array.
-    var arr = [];
-    fayObj = Fay$$_(fayObj);
-    while(fayObj instanceof Fay$$Cons) {
-      arr.push(Fay$$fayToJs(args[0],fayObj.car));
-      fayObj = Fay$$_(fayObj.cdr);
-    }
-    return arr;
-  }
-  else if(base == "tuple") {
-    // Serialize Fay tuple to JavaScript array.
-    var arr = [];
-    fayObj = Fay$$_(fayObj);
-    var i = 0;
-    while(fayObj instanceof Fay$$Cons) {
-      arr.push(Fay$$fayToJs(args[i++],fayObj.car));
-      fayObj = Fay$$_(fayObj.cdr);
-    }
-    return arr;
-  }
-  else if(base == "defined") {
-    fayObj = Fay$$_(fayObj);
-    return fayObj instanceof Fay.FFI._Undefined
-      ? undefined
-      : Fay$$fayToJs(args[0],fayObj.slot1);
-  }
-  else if(base == "nullable") {
-    fayObj = Fay$$_(fayObj);
-    return fayObj instanceof Fay.FFI._Null
-      ? null
-      : Fay$$fayToJs(args[0],fayObj.slot1);
-  }
-  else if(base == "double" || base == "int" || base == "bool") {
-    // Bools are unboxed.
-    return Fay$$_(fayObj);
-  }
-  else if(base == "ptr" || base == "unknown")
-    return fayObj;
-  else if(base == "automatic" && fayObj instanceof Function) {
-    return Fay$$fayToJs(["function", "automatic_function"], fayObj);
-  }
-  else if(base == "automatic" || base == "user") {
-    fayObj = Fay$$_(fayObj);
-
-    if(fayObj instanceof Fay$$Cons || fayObj === null){
-      // Serialize Fay list to JavaScript array.
-      var arr = [];
-      while(fayObj instanceof Fay$$Cons) {
-        arr.push(Fay$$fayToJs(["automatic"],fayObj.car));
-        fayObj = Fay$$_(fayObj.cdr);
-      }
-      return arr;
-    } else {
-      var fayToJsFun = fayObj && fayObj.instance && Fay$$fayToJsHash[fayObj.instance];
-      return fayToJsFun ? fayToJsFun(type,type[2],fayObj) : fayObj;
-    }
-  }
-
-  throw new Error("Unhandled Fay->JS translation type: " + base);
-}
-
-// Stores the mappings from fay types to js objects.
-// This will be populated by compiled modules.
-var Fay$$fayToJsHash = {};
-
-// Specialized serializer for string.
-function Fay$$fayToJs_string(fayObj){
-  // Serialize Fay string to JavaScript string.
-  var str = "";
-  fayObj = Fay$$_(fayObj);
-  while(fayObj instanceof Fay$$Cons) {
-    str += Fay$$_(fayObj.car);
-    fayObj = Fay$$_(fayObj.cdr);
-  }
-  return str;
-};
-function Fay$$jsToFay_string(x){
-  return Fay$$list(x)
-};
-
-// Special num/bool serializers.
-function Fay$$jsToFay_int(x){return x;}
-function Fay$$jsToFay_double(x){return x;}
-function Fay$$jsToFay_bool(x){return x;}
-
-function Fay$$fayToJs_int(x){return Fay$$_(x);}
-function Fay$$fayToJs_double(x){return Fay$$_(x);}
-function Fay$$fayToJs_bool(x){return Fay$$_(x);}
-
-// Unserialize an object from JS to Fay.
-function Fay$$jsToFay(type,jsObj){
-  var base = type[0];
-  var args = type[1];
-  var fayObj;
-  if(base == "action") {
-    // Unserialize a "monadic" JavaScript return value into a monadic value.
-    return new Fay$$Monad(Fay$$jsToFay(args[0],jsObj));
-  }
-  else if(base == "function") {
-    // Unserialize a function from JavaScript to a function that Fay can call.
-    // So
-    //
-    //    var f = function(x,y,z){ … }
-    //
-    // becomes something like:
-    //
-    //    function(x){
-    //      return function(y){
-    //        return function(z){
-    //          return new Fay$$$(function(){
-    //            return Fay$$jsToFay(f(Fay$$fayTojs(x),
-    //                                  Fay$$fayTojs(y),
-    //                                  Fay$$fayTojs(z))
-    //    }}}}};
-    var returnType = args[args.length-1];
-    var funArgs = args.slice(0,-1);
-
-    if (jsObj.length > 0) {
-      var makePartial = function(args){
-        return function(arg){
-          var i = args.length;
-          var fayArg = Fay$$fayToJs(funArgs[i],arg);
-          var newArgs = args.concat([fayArg]);
-          if(newArgs.length == funArgs.length) {
-            return new Fay$$$(function(){
-              return Fay$$jsToFay(returnType,jsObj.apply(this,newArgs));
-            });
-          } else {
-            return makePartial(newArgs);
-          }
-        };
-      };
-      return makePartial([]);
-    }
-    else
-      return function (arg) {
-        return Fay$$jsToFay(["automatic"], jsObj(Fay$$fayToJs(["automatic"], arg)));
-      };
-  }
-  else if(base == "string") {
-    // Unserialize a JS string into Fay list (String).
-    // This is a special case, when String is explicit in the type signature,
-    // with `Automatic' a string would not be decoded.
-    return Fay$$list(jsObj);
-  }
-  else if(base == "list") {
-    // Unserialize a JS array into a Fay list ([a]).
-    var serializedList = [];
-    for (var i = 0, len = jsObj.length; i < len; i++) {
-      // Unserialize each JS value into a Fay value, too.
-      serializedList.push(Fay$$jsToFay(args[0],jsObj[i]));
-    }
-    // Pop it all in a Fay list.
-    return Fay$$list(serializedList);
-  }
-  else if(base == "tuple") {
-    // Unserialize a JS array into a Fay tuple ((a,b,c,...)).
-    var serializedTuple = [];
-    for (var i = 0, len = jsObj.length; i < len; i++) {
-      // Unserialize each JS value into a Fay value, too.
-      serializedTuple.push(Fay$$jsToFay(args[i],jsObj[i]));
-    }
-    // Pop it all in a Fay list.
-    return Fay$$list(serializedTuple);
-  }
-  else if(base == "defined") {
-    return jsObj === undefined
-      ? new Fay.FFI._Undefined()
-      : new Fay.FFI._Defined(Fay$$jsToFay(args[0],jsObj));
-  }
-  else if(base == "nullable") {
-    return jsObj === null
-      ? new Fay.FFI._Null()
-      : new Fay.FFI.Nullable(Fay$$jsToFay(args[0],jsObj));
-  }
-  else if(base == "int") {
-    // Int are unboxed, so there's no forcing to do.
-    // But we can do validation that the int has no decimal places.
-    // E.g. Math.round(x)!=x? throw "NOT AN INTEGER, GET OUT!"
-    fayObj = Math.round(jsObj);
-    if(fayObj!==jsObj) throw "Argument " + jsObj + " is not an integer!";
-    return fayObj;
-  }
-  else if (base == "double" ||
-           base == "bool" ||
-           base ==  "ptr" ||
-           base ==  "unknown") {
-    return jsObj;
-  }
-  else if(base == "automatic" && jsObj instanceof Function) {
-    var type = [["automatic"]];
-    for (var i = 0; i < jsObj.length; i++)
-      type.push(["automatic"]);
-    return Fay$$jsToFay(["function", type], jsObj);
-  }
-  else if(base == "automatic" && jsObj instanceof Array) {
-    var list = null;
-    for (var i = jsObj.length - 1; i >= 0; i--) {
-      list = new Fay$$Cons(Fay$$jsToFay([base], jsObj[i]), list);
-    }
-    return list;
-  }
-  else if(base == "automatic" || base == "user") {
-    if (jsObj && jsObj['instance']) {
-      var jsToFayFun = Fay$$jsToFayHash[jsObj["instance"]];
-      return jsToFayFun ? jsToFayFun(type,type[2],jsObj) : jsObj;
-    }
-    else
-      return jsObj;
-  }
-
-  throw new Error("Unhandled JS->Fay translation type: " + base);
-}
-
-// Stores the mappings from js objects to fay types.
-// This will be populated by compiled modules.
-var Fay$$jsToFayHash = {};
-
-/*******************************************************************************
- * Lists.
- */
-
-// Cons object.
-function Fay$$Cons(car,cdr){
-  this.car = car;
-  this.cdr = cdr;
-}
-
-// Make a list.
-function Fay$$list(xs){
-  var out = null;
-  for(var i=xs.length-1; i>=0;i--)
-    out = new Fay$$Cons(xs[i],out);
-  return out;
-}
-
-// Built-in list cons.
-function Fay$$cons(x){
-  return function(y){
-    return new Fay$$Cons(x,y);
-  };
-}
-
-// List index.
-// `list' is already forced by the time it's passed to this function.
-// `list' cannot be null and `index' cannot be out of bounds.
-function Fay$$index(index,list){
-  for(var i = 0; i < index; i++) {
-    list = Fay$$_(list.cdr);
-  }
-  return list.car;
-}
-
-// List length.
-// `list' is already forced by the time it's passed to this function.
-function Fay$$listLen(list,max){
-  for(var i = 0; list !== null && i < max + 1; i++) {
-    list = Fay$$_(list.cdr);
-  }
-  return i == max;
-}
-
-/*******************************************************************************
- * Numbers.
- */
-
-// Built-in *.
-function Fay$$mult(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) * Fay$$_(y);
-    });
-  };
-}
-
-function Fay$$mult$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) * Fay$$_(y);
-  });
-
-}
-
-// Built-in +.
-function Fay$$add(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) + Fay$$_(y);
-    });
-  };
-}
-
-// Built-in +.
-function Fay$$add$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) + Fay$$_(y);
-  });
-
-}
-
-// Built-in -.
-function Fay$$sub(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) - Fay$$_(y);
-    });
-  };
-}
-// Built-in -.
-function Fay$$sub$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) - Fay$$_(y);
-  });
-
-}
-
-// Built-in /.
-function Fay$$divi(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) / Fay$$_(y);
-    });
-  };
-}
-
-// Built-in /.
-function Fay$$divi$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) / Fay$$_(y);
-  });
-
-}
-
-/*******************************************************************************
- * Booleans.
- */
-
-// Are two values equal?
-function Fay$$equal(lit1, lit2) {
-  // Simple case
-  lit1 = Fay$$_(lit1);
-  lit2 = Fay$$_(lit2);
-  if (lit1 === lit2) {
-    return true;
-  }
-  // General case
-  if (lit1 instanceof Array) {
-    if (lit1.length != lit2.length) return false;
-    for (var len = lit1.length, i = 0; i < len; i++) {
-      if (!Fay$$equal(lit1[i], lit2[i])) return false;
-    }
-    return true;
-  } else if (lit1 instanceof Fay$$Cons && lit2 instanceof Fay$$Cons) {
-    do {
-      if (!Fay$$equal(lit1.car,lit2.car))
-        return false;
-      lit1 = Fay$$_(lit1.cdr), lit2 = Fay$$_(lit2.cdr);
-      if (lit1 === null || lit2 === null)
-        return lit1 === lit2;
-    } while (true);
-  } else if (typeof lit1 == 'object' && typeof lit2 == 'object' && lit1 && lit2 &&
-             lit1.instance === lit2.instance) {
-    for(var x in lit1) {
-      if(!Fay$$equal(lit1[x],lit2[x]))
-        return false;
-    }
-    return true;
-  } else {
-    return false;
-  }
-}
-
-// Built-in ==.
-function Fay$$eq(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$equal(x,y);
-    });
-  };
-}
-
-function Fay$$eq$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$equal(x,y);
-  });
-
-}
-
-// Built-in /=.
-function Fay$$neq(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return !(Fay$$equal(x,y));
-    });
-  };
-}
-
-// Built-in /=.
-function Fay$$neq$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return !(Fay$$equal(x,y));
-  });
-
-}
-
-// Built-in >.
-function Fay$$gt(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) > Fay$$_(y);
-    });
-  };
-}
-
-// Built-in >.
-function Fay$$gt$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) > Fay$$_(y);
-  });
-
-}
-
-// Built-in <.
-function Fay$$lt(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) < Fay$$_(y);
-    });
-  };
-}
-
-
-// Built-in <.
-function Fay$$lt$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) < Fay$$_(y);
-  });
-
-}
-
-
-// Built-in >=.
-function Fay$$gte(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) >= Fay$$_(y);
-    });
-  };
-}
-
-// Built-in >=.
-function Fay$$gte$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) >= Fay$$_(y);
-  });
-
-}
-
-// Built-in <=.
-function Fay$$lte(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) <= Fay$$_(y);
-    });
-  };
-}
-
-// Built-in <=.
-function Fay$$lte$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) <= Fay$$_(y);
-  });
-
-}
-
-// Built-in &&.
-function Fay$$and(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) && Fay$$_(y);
-    });
-  };
-}
-
-// Built-in &&.
-function Fay$$and$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) && Fay$$_(y);
-  });
-  ;
-}
-
-// Built-in ||.
-function Fay$$or(x){
-  return function(y){
-    return new Fay$$$(function(){
-      return Fay$$_(x) || Fay$$_(y);
-    });
-  };
-}
-
-// Built-in ||.
-function Fay$$or$36$uncurried(x,y){
-
-  return new Fay$$$(function(){
-    return Fay$$_(x) || Fay$$_(y);
-  });
-
-}
-
-/*******************************************************************************
- * Mutable references.
- */
-
-// Make a new mutable reference.
-function Fay$$Ref(x){
-  this.value = x;
-}
-
-// Write to the ref.
-function Fay$$writeRef(ref,x){
-  ref.value = x;
-}
-
-// Get the value from the ref.
-function Fay$$readRef(ref,x){
-  return ref.value;
-}
-
-/*******************************************************************************
- * Dates.
- */
-function Fay$$date(str){
-  return window.Date.parse(str);
-}
-
-/*******************************************************************************
- * Data.Var
- */
-
-function Fay$$Ref2(val){
-  this.val = val;
-}
-
-function Fay$$Sig(){
-  this.handlers = [];
-}
-
-function Fay$$Var(val){
-  this.val = val;
-  this.handlers = [];
-}
-
-// Helper used by Fay$$setValue and for merging
-function Fay$$broadcastInternal(self, val, force){
-  var handlers = self.handlers;
-  var exceptions = [];
-  for(var len = handlers.length, i = 0; i < len; i++) {
-    try {
-      force(handlers[i][1](val), true);
-    } catch (e) {
-      exceptions.push(e);
-    }
-  }
-  // Rethrow the encountered exceptions.
-  if (exceptions.length > 0) {
-    console.error("Encountered " + exceptions.length + " exception(s) while broadcasing a change to ", self);
-    for(var len = exceptions.length, i = 0; i < len; i++) {
-      (function(exception) {
-        window.setTimeout(function() { throw exception; }, 0);
-      })(exceptions[i]);
-    }
-  }
-}
-
-function Fay$$setValue(self, val, force){
-  if (self instanceof Fay$$Ref2) {
-    self.val = val;
-  } else if (self instanceof Fay$$Var) {
-    self.val = val;
-    Fay$$broadcastInternal(self, val, force);
-  } else if (self instanceof Fay$$Sig) {
-    Fay$$broadcastInternal(self, val, force);
-  } else {
-    throw "Fay$$setValue given something that's not a Ref2, Var, or Sig"
-  }
-}
-
-function Fay$$subscribe(self, f){
-  var key = {};
-  self.handlers.push([key,f]);
-  var searchStart = self.handlers.length - 1;
-  return function(_){
-    for(var i = Math.min(searchStart, self.handlers.length - 1); i >= 0; i--) {
-      if(self.handlers[i][0] == key) {
-        self.handlers = self.handlers.slice(0,i).concat(self.handlers.slice(i+1));
-        return;
-      }
-    }
-    return _; // This variable has to be used, otherwise Closure
-              // strips it out and Fay serialization breaks.
-  };
-}
-
-/*******************************************************************************
- * Application code.
- */
-
-var Data = {};
-Data.Data = {};
-var Fay = {};
-Fay.FFI = {};
-Fay.FFI._Nullable = function Nullable(slot1){
-  this.slot1 = slot1;
-};
-Fay.FFI._Nullable.prototype.instance = "Nullable";
-Fay.FFI.Nullable = function(slot1){
-  return new Fay$$$(function(){
-    return new Fay.FFI._Nullable(slot1);
-  });
-};
-Fay.FFI._Null = function Null(){
-};
-Fay.FFI._Null.prototype.instance = "Null";
-Fay.FFI.Null = new Fay$$$(function(){
-  return new Fay.FFI._Null();
-});
-Fay.FFI._Defined = function Defined(slot1){
-  this.slot1 = slot1;
-};
-Fay.FFI._Defined.prototype.instance = "Defined";
-Fay.FFI.Defined = function(slot1){
-  return new Fay$$$(function(){
-    return new Fay.FFI._Defined(slot1);
-  });
-};
-Fay.FFI._Undefined = function Undefined(){
-};
-Fay.FFI._Undefined.prototype.instance = "Undefined";
-Fay.FFI.Undefined = new Fay$$$(function(){
-  return new Fay.FFI._Undefined();
-});
-Fay$$objConcat(Fay$$fayToJsHash,{"Nullable": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Nullable"};
-  var obj_slot1 = Fay$$fayToJs(argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-},"Null": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Null"};
-  return obj_;
-},"Defined": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Defined"};
-  var obj_slot1 = Fay$$fayToJs(argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-},"Undefined": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Undefined"};
-  return obj_;
-}});
-Fay$$objConcat(Fay$$jsToFayHash,{"Nullable": function(type,argTypes,obj){
-  return new Fay.FFI._Nullable(Fay$$jsToFay(argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],obj["slot1"]));
-},"Null": function(type,argTypes,obj){
-  return new Fay.FFI._Null();
-},"Defined": function(type,argTypes,obj){
-  return new Fay.FFI._Defined(Fay$$jsToFay(argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],obj["slot1"]));
-},"Undefined": function(type,argTypes,obj){
-  return new Fay.FFI._Undefined();
-}});
-var Prelude = {};
-Prelude._Just = function Just(slot1){
-  this.slot1 = slot1;
-};
-Prelude._Just.prototype.instance = "Just";
-Prelude.Just = function(slot1){
-  return new Fay$$$(function(){
-    return new Prelude._Just(slot1);
-  });
-};
-Prelude._Nothing = function Nothing(){
-};
-Prelude._Nothing.prototype.instance = "Nothing";
-Prelude.Nothing = new Fay$$$(function(){
-  return new Prelude._Nothing();
-});
-Prelude._Left = function Left(slot1){
-  this.slot1 = slot1;
-};
-Prelude._Left.prototype.instance = "Left";
-Prelude.Left = function(slot1){
-  return new Fay$$$(function(){
-    return new Prelude._Left(slot1);
-  });
-};
-Prelude._Right = function Right(slot1){
-  this.slot1 = slot1;
-};
-Prelude._Right.prototype.instance = "Right";
-Prelude.Right = function(slot1){
-  return new Fay$$$(function(){
-    return new Prelude._Right(slot1);
-  });
-};
-Prelude.maybe = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        if (Fay$$_($p3) instanceof Prelude._Nothing) {
-          var m = $p1;
-          return m;
-        }
-        if (Fay$$_($p3) instanceof Prelude._Just) {
-          var x = Fay$$_($p3).slot1;
-          var f = $p2;
-          return Fay$$_(f)(x);
-        }
-        throw ["unhandled case in maybe",[$p1,$p2,$p3]];
-      });
-    };
-  };
-};
-Prelude.$62$$62$$61$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$_(Fay$$bind($p1)($p2));
-    });
-  };
-};
-Prelude.$62$$62$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$_(Fay$$then($p1)($p2));
-    });
-  };
-};
-Prelude.$_return = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$return(Fay$$fayToJs(["unknown"],$p1))));
-  });
-};
-Prelude.fail = new Fay$$$(function(){
-  return Prelude.error;
-});
-Prelude.when = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var m = $p2;
-      var p = $p1;
-      return Fay$$_(p) ? Fay$$_(Fay$$_(Fay$$then)(m))(Fay$$_(Fay$$$_return)(Fay$$unit)) : Fay$$_(Fay$$$_return)(Fay$$unit);
-    });
-  };
-};
-Prelude.unless = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var m = $p2;
-      var p = $p1;
-      return Fay$$_(p) ? Fay$$_(Fay$$$_return)(Fay$$unit) : Fay$$_(Fay$$_(Fay$$then)(m))(Fay$$_(Fay$$$_return)(Fay$$unit));
-    });
-  };
-};
-Prelude.forM = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var fn = $p2;
-      var lst = $p1;
-      return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.sequence))(Fay$$_(Fay$$_(Prelude.map)(fn))(lst));
-    });
-  };
-};
-Prelude.forM_ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var m = $p2;
-      var $tmp1 = Fay$$_($p1);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(m)(x)))(Fay$$_(Fay$$_(Prelude.forM_)(xs))(m));
-      }
-      if (Fay$$_($p1) === null) {
-        return Fay$$_(Fay$$$_return)(Fay$$unit);
-      }
-      throw ["unhandled case in forM_",[$p1,$p2]];
-    });
-  };
-};
-Prelude.mapM = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var lst = $p2;
-      var fn = $p1;
-      return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.sequence))(Fay$$_(Fay$$_(Prelude.map)(fn))(lst));
-    });
-  };
-};
-Prelude.mapM_ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var m = $p1;
-        return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(m)(x)))(Fay$$_(Fay$$_(Prelude.mapM_)(m))(xs));
-      }
-      if (Fay$$_($p2) === null) {
-        return Fay$$_(Fay$$$_return)(Fay$$unit);
-      }
-      throw ["unhandled case in mapM_",[$p1,$p2]];
-    });
-  };
-};
-Prelude.$61$$60$$60$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var x = $p2;
-      var f = $p1;
-      return Fay$$_(Fay$$_(Fay$$bind)(x))(f);
-    });
-  };
-};
-Prelude.$_void = function($p1){
-  return new Fay$$$(function(){
-    var f = $p1;
-    return Fay$$_(Fay$$_(Fay$$then)(f))(Fay$$_(Fay$$$_return)(Fay$$unit));
-  });
-};
-Prelude.$62$$61$$62$ = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var x = $p3;
-        var g = $p2;
-        var f = $p1;
-        return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(f)(x)))(g);
-      });
-    };
-  };
-};
-Prelude.$60$$61$$60$ = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var x = $p3;
-        var f = $p2;
-        var g = $p1;
-        return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(f)(x)))(g);
-      });
-    };
-  };
-};
-Prelude.sequence = function($p1){
-  return new Fay$$$(function(){
-    var ms = $p1;
-    return (function(){
-      var k = function($p1){
-        return function($p2){
-          return new Fay$$$(function(){
-            var m$39$ = $p2;
-            var m = $p1;
-            return Fay$$_(Fay$$_(Fay$$bind)(m))(function($p1){
-              var x = $p1;
-              return Fay$$_(Fay$$_(Fay$$bind)(m$39$))(function($p1){
-                var xs = $p1;
-                return Fay$$_(Fay$$$_return)(Fay$$_(Fay$$_(Fay$$cons)(x))(xs));
-              });
-            });
-          });
-        };
-      };
-      return Fay$$_(Fay$$_(Fay$$_(Prelude.foldr)(k))(Fay$$_(Fay$$$_return)(null)))(ms);
-    })();
-  });
-};
-Prelude.sequence_ = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Fay$$$_return)(Fay$$unit);
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var m = $tmp1.car;
-      var ms = $tmp1.cdr;
-      return Fay$$_(Fay$$_(Fay$$then)(m))(Fay$$_(Prelude.sequence_)(ms));
-    }
-    throw ["unhandled case in sequence_",[$p1]];
-  });
-};
-Prelude._GT = function GT(){
-};
-Prelude._GT.prototype.instance = "GT";
-Prelude.GT = new Fay$$$(function(){
-  return new Prelude._GT();
-});
-Prelude._LT = function LT(){
-};
-Prelude._LT.prototype.instance = "LT";
-Prelude.LT = new Fay$$$(function(){
-  return new Prelude._LT();
-});
-Prelude._EQ = function EQ(){
-};
-Prelude._EQ.prototype.instance = "EQ";
-Prelude.EQ = new Fay$$$(function(){
-  return new Prelude._EQ();
-});
-Prelude.compare = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var y = $p2;
-      var x = $p1;
-      return Fay$$_(Fay$$_(Fay$$_(Fay$$gt)(x))(y)) ? Prelude.GT : Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(x))(y)) ? Prelude.LT : Prelude.EQ;
-    });
-  };
-};
-Prelude.succ = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$add)(x))(1);
-  });
-};
-Prelude.pred = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$sub)(x))(1);
-  });
-};
-Prelude.enumFrom = function($p1){
-  return new Fay$$$(function(){
-    var i = $p1;
-    return Fay$$_(Fay$$_(Fay$$cons)(i))(Fay$$_(Prelude.enumFrom)(Fay$$_(Fay$$_(Fay$$add)(i))(1)));
-  });
-};
-Prelude.enumFromTo = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var n = $p2;
-      var i = $p1;
-      return Fay$$_(Fay$$_(Fay$$_(Fay$$gt)(i))(n)) ? null : Fay$$_(Fay$$_(Fay$$cons)(i))(Fay$$_(Fay$$_(Prelude.enumFromTo)(Fay$$_(Fay$$_(Fay$$add)(i))(1)))(n));
-    });
-  };
-};
-Prelude.enumFromBy = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var by = $p2;
-      var fr = $p1;
-      return Fay$$_(Fay$$_(Fay$$cons)(fr))(Fay$$_(Fay$$_(Prelude.enumFromBy)(Fay$$_(Fay$$_(Fay$$add)(fr))(by)))(by));
-    });
-  };
-};
-Prelude.enumFromThen = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var th = $p2;
-      var fr = $p1;
-      return Fay$$_(Fay$$_(Prelude.enumFromBy)(fr))(Fay$$_(Fay$$_(Fay$$sub)(th))(fr));
-    });
-  };
-};
-Prelude.enumFromByTo = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var to = $p3;
-        var by = $p2;
-        var fr = $p1;
-        return (function(){
-          var neg = function($p1){
-            return new Fay$$$(function(){
-              var x = $p1;
-              return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(x))(to)) ? null : Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(neg)(Fay$$_(Fay$$_(Fay$$add)(x))(by)));
-            });
-          };
-          var pos = function($p1){
-            return new Fay$$$(function(){
-              var x = $p1;
-              return Fay$$_(Fay$$_(Fay$$_(Fay$$gt)(x))(to)) ? null : Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(pos)(Fay$$_(Fay$$_(Fay$$add)(x))(by)));
-            });
-          };
-          return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(by))(0)) ? Fay$$_(neg)(fr) : Fay$$_(pos)(fr);
-        })();
-      });
-    };
-  };
-};
-Prelude.enumFromThenTo = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var to = $p3;
-        var th = $p2;
-        var fr = $p1;
-        return Fay$$_(Fay$$_(Fay$$_(Prelude.enumFromByTo)(fr))(Fay$$_(Fay$$_(Fay$$sub)(th))(fr)))(to);
-      });
-    };
-  };
-};
-Prelude.fromIntegral = function($p1){
-  return new Fay$$$(function(){
-    return $p1;
-  });
-};
-Prelude.fromInteger = function($p1){
-  return new Fay$$$(function(){
-    return $p1;
-  });
-};
-Prelude.not = function($p1){
-  return new Fay$$$(function(){
-    var p = $p1;
-    return Fay$$_(p) ? false : true;
-  });
-};
-Prelude.otherwise = true;
-Prelude.show = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_string(JSON.stringify(Fay$$fayToJs(["automatic"],$p1)));
-  });
-};
-Prelude.error = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["unknown"],(function() { throw Fay$$fayToJs_string($p1) })());
-  });
-};
-Prelude.$_undefined = new Fay$$$(function(){
-  return Fay$$_(Prelude.error)(Fay$$list("Prelude.undefined"));
-});
-Prelude.either = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        if (Fay$$_($p3) instanceof Prelude._Left) {
-          var a = Fay$$_($p3).slot1;
-          var f = $p1;
-          return Fay$$_(f)(a);
-        }
-        if (Fay$$_($p3) instanceof Prelude._Right) {
-          var b = Fay$$_($p3).slot1;
-          var g = $p2;
-          return Fay$$_(g)(b);
-        }
-        throw ["unhandled case in either",[$p1,$p2,$p3]];
-      });
-    };
-  };
-};
-Prelude.until = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var x = $p3;
-        var f = $p2;
-        var p = $p1;
-        return Fay$$_(Fay$$_(p)(x)) ? x : Fay$$_(Fay$$_(Fay$$_(Prelude.until)(p))(f))(Fay$$_(f)(x));
-      });
-    };
-  };
-};
-Prelude.$36$$33$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var x = $p2;
-      var f = $p1;
-      return Fay$$_(Fay$$_(Fay$$seq)(x))(Fay$$_(f)(x));
-    });
-  };
-};
-Prelude.$_const = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var a = $p1;
-      return a;
-    });
-  };
-};
-Prelude.id = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return x;
-  });
-};
-Prelude.$46$ = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var x = $p3;
-        var g = $p2;
-        var f = $p1;
-        return Fay$$_(f)(Fay$$_(g)(x));
-      });
-    };
-  };
-};
-Prelude.$36$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var x = $p2;
-      var f = $p1;
-      return Fay$$_(f)(x);
-    });
-  };
-};
-Prelude.flip = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var y = $p3;
-        var x = $p2;
-        var f = $p1;
-        return Fay$$_(Fay$$_(f)(y))(x);
-      });
-    };
-  };
-};
-Prelude.curry = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var y = $p3;
-        var x = $p2;
-        var f = $p1;
-        return Fay$$_(f)(Fay$$list([x,y]));
-      });
-    };
-  };
-};
-Prelude.uncurry = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var p = $p2;
-      var f = $p1;
-      return (function($tmp1){
-        if (Fay$$listLen(Fay$$_($tmp1),2)) {
-          var x = Fay$$index(0,Fay$$_($tmp1));
-          var y = Fay$$index(1,Fay$$_($tmp1));
-          return Fay$$_(Fay$$_(f)(x))(y);
-        }
-        return (function(){ throw (["unhandled case",$tmp1]); })();
-      })(p);
-    });
-  };
-};
-Prelude.snd = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$listLen(Fay$$_($p1),2)) {
-      var x = Fay$$index(1,Fay$$_($p1));
-      return x;
-    }
-    throw ["unhandled case in snd",[$p1]];
-  });
-};
-Prelude.fst = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$listLen(Fay$$_($p1),2)) {
-      var x = Fay$$index(0,Fay$$_($p1));
-      return x;
-    }
-    throw ["unhandled case in fst",[$p1]];
-  });
-};
-Prelude.div = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var y = $p2;
-      var x = $p1;
-      if (Fay$$_(Fay$$_(Fay$$_(Fay$$and)(Fay$$_(Fay$$_(Fay$$gt)(x))(0)))(Fay$$_(Fay$$_(Fay$$lt)(y))(0)))) {
-        return Fay$$_(Fay$$_(Fay$$sub)(Fay$$_(Fay$$_(Prelude.quot)(Fay$$_(Fay$$_(Fay$$sub)(x))(1)))(y)))(1);
-      } else {if (Fay$$_(Fay$$_(Fay$$_(Fay$$and)(Fay$$_(Fay$$_(Fay$$lt)(x))(0)))(Fay$$_(Fay$$_(Fay$$gt)(y))(0)))) {
-          return Fay$$_(Fay$$_(Fay$$sub)(Fay$$_(Fay$$_(Prelude.quot)(Fay$$_(Fay$$_(Fay$$add)(x))(1)))(y)))(1);
-        }
-      }
-      var y = $p2;
-      var x = $p1;
-      return Fay$$_(Fay$$_(Prelude.quot)(x))(y);
-    });
-  };
-};
-Prelude.mod = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var y = $p2;
-      var x = $p1;
-      if (Fay$$_(Fay$$_(Fay$$_(Fay$$and)(Fay$$_(Fay$$_(Fay$$gt)(x))(0)))(Fay$$_(Fay$$_(Fay$$lt)(y))(0)))) {
-        return Fay$$_(Fay$$_(Fay$$add)(Fay$$_(Fay$$_(Fay$$add)(Fay$$_(Fay$$_(Prelude.rem)(Fay$$_(Fay$$_(Fay$$sub)(x))(1)))(y)))(y)))(1);
-      } else {if (Fay$$_(Fay$$_(Fay$$_(Fay$$and)(Fay$$_(Fay$$_(Fay$$lt)(x))(0)))(Fay$$_(Fay$$_(Fay$$gt)(y))(0)))) {
-          return Fay$$_(Fay$$_(Fay$$sub)(Fay$$_(Fay$$_(Fay$$add)(Fay$$_(Fay$$_(Prelude.rem)(Fay$$_(Fay$$_(Fay$$add)(x))(1)))(y)))(y)))(1);
-        }
-      }
-      var y = $p2;
-      var x = $p1;
-      return Fay$$_(Fay$$_(Prelude.rem)(x))(y);
-    });
-  };
-};
-Prelude.divMod = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var y = $p2;
-      var x = $p1;
-      if (Fay$$_(Fay$$_(Fay$$_(Fay$$and)(Fay$$_(Fay$$_(Fay$$gt)(x))(0)))(Fay$$_(Fay$$_(Fay$$lt)(y))(0)))) {
-        return (function($tmp1){
-          if (Fay$$listLen(Fay$$_($tmp1),2)) {
-            var q = Fay$$index(0,Fay$$_($tmp1));
-            var r = Fay$$index(1,Fay$$_($tmp1));
-            return Fay$$list([Fay$$_(Fay$$_(Fay$$sub)(q))(1),Fay$$_(Fay$$_(Fay$$add)(Fay$$_(Fay$$_(Fay$$add)(r))(y)))(1)]);
-          }
-          return (function(){ throw (["unhandled case",$tmp1]); })();
-        })(Fay$$_(Fay$$_(Prelude.quotRem)(Fay$$_(Fay$$_(Fay$$sub)(x))(1)))(y));
-      } else {if (Fay$$_(Fay$$_(Fay$$_(Fay$$and)(Fay$$_(Fay$$_(Fay$$lt)(x))(0)))(Fay$$_(Fay$$_(Fay$$gt)(y))(1)))) {
-          return (function($tmp1){
-            if (Fay$$listLen(Fay$$_($tmp1),2)) {
-              var q = Fay$$index(0,Fay$$_($tmp1));
-              var r = Fay$$index(1,Fay$$_($tmp1));
-              return Fay$$list([Fay$$_(Fay$$_(Fay$$sub)(q))(1),Fay$$_(Fay$$_(Fay$$sub)(Fay$$_(Fay$$_(Fay$$add)(r))(y)))(1)]);
-            }
-            return (function(){ throw (["unhandled case",$tmp1]); })();
-          })(Fay$$_(Fay$$_(Prelude.quotRem)(Fay$$_(Fay$$_(Fay$$add)(x))(1)))(y));
-        }
-      }
-      var y = $p2;
-      var x = $p1;
-      return Fay$$_(Fay$$_(Prelude.quotRem)(x))(y);
-    });
-  };
-};
-Prelude.min = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["unknown"],Math.min(Fay$$_(Fay$$fayToJs(["unknown"],$p1)),Fay$$_(Fay$$fayToJs(["unknown"],$p2))));
-    });
-  };
-};
-Prelude.max = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["unknown"],Math.max(Fay$$_(Fay$$fayToJs(["unknown"],$p1)),Fay$$_(Fay$$fayToJs(["unknown"],$p2))));
-    });
-  };
-};
-Prelude.recip = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$divi)(1))(x);
-  });
-};
-Prelude.negate = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return (-(Fay$$_(x)));
-  });
-};
-Prelude.abs = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(x))(0)) ? Fay$$_(Prelude.negate)(x) : x;
-  });
-};
-Prelude.signum = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(Fay$$gt)(x))(0)) ? 1 : Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(x))(0)) ? 0 : (-(1));
-  });
-};
-Prelude.pi = new Fay$$$(function(){
-  return Fay$$jsToFay_double(Math.PI);
-});
-Prelude.exp = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.exp(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.sqrt = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.sqrt(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.log = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.log(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.$42$$42$ = new Fay$$$(function(){
-  return Prelude.unsafePow;
-});
-Prelude.$94$$94$ = new Fay$$$(function(){
-  return Prelude.unsafePow;
-});
-Prelude.unsafePow = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["unknown"],Math.pow(Fay$$_(Fay$$fayToJs(["unknown"],$p1)),Fay$$_(Fay$$fayToJs(["unknown"],$p2))));
-    });
-  };
-};
-Prelude.$94$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var b = $p2;
-      var a = $p1;
-      if (Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(b))(0))) {
-        return Fay$$_(Prelude.error)(Fay$$list("(^): negative exponent"));
-      } else {if (Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(b))(0))) {
-          return 1;
-        } else {if (Fay$$_(Fay$$_(Prelude.even)(b))) {
-            return (function(){
-              return new Fay$$$(function(){
-                var x = new Fay$$$(function(){
-                  return Fay$$_(Fay$$_(Prelude.$94$)(a))(Fay$$_(Fay$$_(Prelude.quot)(b))(2));
-                });
-                return Fay$$_(Fay$$_(Fay$$mult)(x))(x);
-              });
-            })();
-          }
-        }
-      }
-      var b = $p2;
-      var a = $p1;
-      return Fay$$_(Fay$$_(Fay$$mult)(a))(Fay$$_(Fay$$_(Prelude.$94$)(a))(Fay$$_(Fay$$_(Fay$$sub)(b))(1)));
-    });
-  };
-};
-Prelude.logBase = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var x = $p2;
-      var b = $p1;
-      return Fay$$_(Fay$$_(Fay$$divi)(Fay$$_(Prelude.log)(x)))(Fay$$_(Prelude.log)(b));
-    });
-  };
-};
-Prelude.sin = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.sin(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.tan = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.tan(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.cos = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.cos(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.asin = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.asin(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.atan = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.atan(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.acos = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Math.acos(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.sinh = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$divi)(Fay$$_(Fay$$_(Fay$$sub)(Fay$$_(Prelude.exp)(x)))(Fay$$_(Prelude.exp)((-(Fay$$_(x)))))))(2);
-  });
-};
-Prelude.tanh = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return (function(){
-      return new Fay$$$(function(){
-        var a = new Fay$$$(function(){
-          return Fay$$_(Prelude.exp)(x);
-        });
-        var b = new Fay$$$(function(){
-          return Fay$$_(Prelude.exp)((-(Fay$$_(x))));
-        });
-        return Fay$$_(Fay$$_(Fay$$divi)(Fay$$_(Fay$$_(Fay$$sub)(a))(b)))(Fay$$_(Fay$$_(Fay$$add)(a))(b));
-      });
-    })();
-  });
-};
-Prelude.cosh = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$divi)(Fay$$_(Fay$$_(Fay$$add)(Fay$$_(Prelude.exp)(x)))(Fay$$_(Prelude.exp)((-(Fay$$_(x)))))))(2);
-  });
-};
-Prelude.asinh = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Prelude.log)(Fay$$_(Fay$$_(Fay$$add)(x))(Fay$$_(Prelude.sqrt)(Fay$$_(Fay$$_(Fay$$add)(Fay$$_(Fay$$_(Prelude.$42$$42$)(x))(2)))(1))));
-  });
-};
-Prelude.atanh = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$divi)(Fay$$_(Prelude.log)(Fay$$_(Fay$$_(Fay$$divi)(Fay$$_(Fay$$_(Fay$$add)(1))(x)))(Fay$$_(Fay$$_(Fay$$sub)(1))(x)))))(2);
-  });
-};
-Prelude.acosh = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Prelude.log)(Fay$$_(Fay$$_(Fay$$add)(x))(Fay$$_(Prelude.sqrt)(Fay$$_(Fay$$_(Fay$$sub)(Fay$$_(Fay$$_(Prelude.$42$$42$)(x))(2)))(1))));
-  });
-};
-Prelude.properFraction = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return (function(){
-      return new Fay$$$(function(){
-        var a = new Fay$$$(function(){
-          return Fay$$_(Prelude.truncate)(x);
-        });
-        return Fay$$list([a,Fay$$_(Fay$$_(Fay$$sub)(x))(Fay$$_(Prelude.fromIntegral)(a))]);
-      });
-    })();
-  });
-};
-Prelude.truncate = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(x))(0)) ? Fay$$_(Prelude.ceiling)(x) : Fay$$_(Prelude.floor)(x);
-  });
-};
-Prelude.round = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_int(Math.round(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.ceiling = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_int(Math.ceil(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.floor = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_int(Math.floor(Fay$$fayToJs_double($p1)));
-  });
-};
-Prelude.subtract = new Fay$$$(function(){
-  return Fay$$_(Prelude.flip)(Fay$$sub);
-});
-Prelude.even = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$eq)(Fay$$_(Fay$$_(Prelude.rem)(x))(2)))(0);
-  });
-};
-Prelude.odd = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Prelude.not)(Fay$$_(Prelude.even)(x));
-  });
-};
-Prelude.gcd = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var b = $p2;
-      var a = $p1;
-      return (function(){
-        var go = function($p1){
-          return function($p2){
-            return new Fay$$$(function(){
-              if (Fay$$_($p2) === 0) {
-                var x = $p1;
-                return x;
-              }
-              var y = $p2;
-              var x = $p1;
-              return Fay$$_(Fay$$_(go)(y))(Fay$$_(Fay$$_(Prelude.rem)(x))(y));
-            });
-          };
-        };
-        return Fay$$_(Fay$$_(go)(Fay$$_(Prelude.abs)(a)))(Fay$$_(Prelude.abs)(b));
-      })();
-    });
-  };
-};
-Prelude.quot = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var y = $p2;
-      var x = $p1;
-      return Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(y))(0)) ? Fay$$_(Prelude.error)(Fay$$list("Division by zero")) : Fay$$_(Fay$$_(Prelude.quot$39$)(x))(y);
-    });
-  };
-};
-Prelude.quot$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay_int(~~(Fay$$fayToJs_int($p1)/Fay$$fayToJs_int($p2)));
-    });
-  };
-};
-Prelude.quotRem = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var y = $p2;
-      var x = $p1;
-      return Fay$$list([Fay$$_(Fay$$_(Prelude.quot)(x))(y),Fay$$_(Fay$$_(Prelude.rem)(x))(y)]);
-    });
-  };
-};
-Prelude.rem = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var y = $p2;
-      var x = $p1;
-      return Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(y))(0)) ? Fay$$_(Prelude.error)(Fay$$list("Division by zero")) : Fay$$_(Fay$$_(Prelude.rem$39$)(x))(y);
-    });
-  };
-};
-Prelude.rem$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay_int(Fay$$fayToJs_int($p1) % Fay$$fayToJs_int($p2));
-    });
-  };
-};
-Prelude.lcm = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === 0) {
-        return 0;
-      }
-      if (Fay$$_($p1) === 0) {
-        return 0;
-      }
-      var b = $p2;
-      var a = $p1;
-      return Fay$$_(Prelude.abs)(Fay$$_(Fay$$_(Fay$$mult)(Fay$$_(Fay$$_(Prelude.quot)(a))(Fay$$_(Fay$$_(Prelude.gcd)(a))(b))))(b));
-    });
-  };
-};
-Prelude.find = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var p = $p1;
-        return Fay$$_(Fay$$_(p)(x)) ? Fay$$_(Prelude.Just)(x) : Fay$$_(Fay$$_(Prelude.find)(p))(xs);
-      }
-      if (Fay$$_($p2) === null) {
-        return Prelude.Nothing;
-      }
-      throw ["unhandled case in find",[$p1,$p2]];
-    });
-  };
-};
-Prelude.filter = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var p = $p1;
-        return Fay$$_(Fay$$_(p)(x)) ? Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.filter)(p))(xs)) : Fay$$_(Fay$$_(Prelude.filter)(p))(xs);
-      }
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      throw ["unhandled case in filter",[$p1,$p2]];
-    });
-  };
-};
-Prelude.$_null = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return true;
-    }
-    return false;
-  });
-};
-Prelude.map = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var f = $p1;
-        return Fay$$_(Fay$$_(Fay$$cons)(Fay$$_(f)(x)))(Fay$$_(Fay$$_(Prelude.map)(f))(xs));
-      }
-      throw ["unhandled case in map",[$p1,$p2]];
-    });
-  };
-};
-Prelude.nub = function($p1){
-  return new Fay$$$(function(){
-    var ls = $p1;
-    return Fay$$_(Fay$$_(Prelude.nub$39$)(ls))(null);
-  });
-};
-Prelude.nub$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p1) === null) {
-        return null;
-      }
-      var ls = $p2;
-      var $tmp1 = Fay$$_($p1);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        return Fay$$_(Fay$$_(Fay$$_(Prelude.elem)(x))(ls)) ? Fay$$_(Fay$$_(Prelude.nub$39$)(xs))(ls) : Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.nub$39$)(xs))(Fay$$_(Fay$$_(Fay$$cons)(x))(ls)));
-      }
-      throw ["unhandled case in nub'",[$p1,$p2]];
-    });
-  };
-};
-Prelude.elem = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var y = $tmp1.car;
-        var ys = $tmp1.cdr;
-        var x = $p1;
-        return Fay$$_(Fay$$_(Fay$$or)(Fay$$_(Fay$$_(Fay$$eq)(x))(y)))(Fay$$_(Fay$$_(Prelude.elem)(x))(ys));
-      }
-      if (Fay$$_($p2) === null) {
-        return false;
-      }
-      throw ["unhandled case in elem",[$p1,$p2]];
-    });
-  };
-};
-Prelude.notElem = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var ys = $p2;
-      var x = $p1;
-      return Fay$$_(Prelude.not)(Fay$$_(Fay$$_(Prelude.elem)(x))(ys));
-    });
-  };
-};
-Prelude.sort = new Fay$$$(function(){
-  return Fay$$_(Prelude.sortBy)(Prelude.compare);
-});
-Prelude.sortBy = function($p1){
-  return new Fay$$$(function(){
-    var cmp = $p1;
-    return Fay$$_(Fay$$_(Prelude.foldr)(Fay$$_(Prelude.insertBy)(cmp)))(null);
-  });
-};
-Prelude.insertBy = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        if (Fay$$_($p3) === null) {
-          var x = $p2;
-          return Fay$$list([x]);
-        }
-        var ys = $p3;
-        var x = $p2;
-        var cmp = $p1;
-        return (function($tmp1){
-          if (Fay$$_($tmp1) === null) {
-            return Fay$$list([x]);
-          }
-          var $tmp2 = Fay$$_($tmp1);
-          if ($tmp2 instanceof Fay$$Cons) {
-            var y = $tmp2.car;
-            var ys$39$ = $tmp2.cdr;
-            return (function($tmp2){
-              if (Fay$$_($tmp2) instanceof Prelude._GT) {
-                return Fay$$_(Fay$$_(Fay$$cons)(y))(Fay$$_(Fay$$_(Fay$$_(Prelude.insertBy)(cmp))(x))(ys$39$));
-              }
-              return Fay$$_(Fay$$_(Fay$$cons)(x))(ys);
-            })(Fay$$_(Fay$$_(cmp)(x))(y));
-          }
-          return (function(){ throw (["unhandled case",$tmp1]); })();
-        })(ys);
-      });
-    };
-  };
-};
-Prelude.conc = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var ys = $p2;
-      var $tmp1 = Fay$$_($p1);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        return Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.conc)(xs))(ys));
-      }
-      var ys = $p2;
-      if (Fay$$_($p1) === null) {
-        return ys;
-      }
-      throw ["unhandled case in conc",[$p1,$p2]];
-    });
-  };
-};
-Prelude.concat = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Prelude.foldr)(Prelude.conc))(null);
-});
-Prelude.concatMap = function($p1){
-  return new Fay$$$(function(){
-    var f = $p1;
-    return Fay$$_(Fay$$_(Prelude.foldr)(Fay$$_(Fay$$_(Prelude.$46$)(Prelude.$43$$43$))(f)))(null);
-  });
-};
-Prelude.foldr = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        if (Fay$$_($p3) === null) {
-          var z = $p2;
-          return z;
-        }
-        var $tmp1 = Fay$$_($p3);
-        if ($tmp1 instanceof Fay$$Cons) {
-          var x = $tmp1.car;
-          var xs = $tmp1.cdr;
-          var z = $p2;
-          var f = $p1;
-          return Fay$$_(Fay$$_(f)(x))(Fay$$_(Fay$$_(Fay$$_(Prelude.foldr)(f))(z))(xs));
-        }
-        throw ["unhandled case in foldr",[$p1,$p2,$p3]];
-      });
-    };
-  };
-};
-Prelude.foldr1 = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$listLen(Fay$$_($p2),1)) {
-        var x = Fay$$index(0,Fay$$_($p2));
-        return x;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var f = $p1;
-        return Fay$$_(Fay$$_(f)(x))(Fay$$_(Fay$$_(Prelude.foldr1)(f))(xs));
-      }
-      if (Fay$$_($p2) === null) {
-        return Fay$$_(Prelude.error)(Fay$$list("foldr1: empty list"));
-      }
-      throw ["unhandled case in foldr1",[$p1,$p2]];
-    });
-  };
-};
-Prelude.foldl = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        if (Fay$$_($p3) === null) {
-          var z = $p2;
-          return z;
-        }
-        var $tmp1 = Fay$$_($p3);
-        if ($tmp1 instanceof Fay$$Cons) {
-          var x = $tmp1.car;
-          var xs = $tmp1.cdr;
-          var z = $p2;
-          var f = $p1;
-          return Fay$$_(Fay$$_(Fay$$_(Prelude.foldl)(f))(Fay$$_(Fay$$_(f)(z))(x)))(xs);
-        }
-        throw ["unhandled case in foldl",[$p1,$p2,$p3]];
-      });
-    };
-  };
-};
-Prelude.foldl1 = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var f = $p1;
-        return Fay$$_(Fay$$_(Fay$$_(Prelude.foldl)(f))(x))(xs);
-      }
-      if (Fay$$_($p2) === null) {
-        return Fay$$_(Prelude.error)(Fay$$list("foldl1: empty list"));
-      }
-      throw ["unhandled case in foldl1",[$p1,$p2]];
-    });
-  };
-};
-Prelude.$43$$43$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var y = $p2;
-      var x = $p1;
-      return Fay$$_(Fay$$_(Prelude.conc)(x))(y);
-    });
-  };
-};
-Prelude.$33$$33$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var b = $p2;
-      var a = $p1;
-      return (function(){
-        var go = function($p1){
-          return function($p2){
-            return new Fay$$$(function(){
-              if (Fay$$_($p1) === null) {
-                return Fay$$_(Prelude.error)(Fay$$list("(!!): index too large"));
-              }
-              if (Fay$$_($p2) === 0) {
-                var $tmp1 = Fay$$_($p1);
-                if ($tmp1 instanceof Fay$$Cons) {
-                  var h = $tmp1.car;
-                  return h;
-                }
-              }
-              var n = $p2;
-              var $tmp1 = Fay$$_($p1);
-              if ($tmp1 instanceof Fay$$Cons) {
-                var t = $tmp1.cdr;
-                return Fay$$_(Fay$$_(go)(t))(Fay$$_(Fay$$_(Fay$$sub)(n))(1));
-              }
-              throw ["unhandled case in go",[$p1,$p2]];
-            });
-          };
-        };
-        return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(b))(0)) ? Fay$$_(Prelude.error)(Fay$$list("(!!): negative index")) : Fay$$_(Fay$$_(go)(a))(b);
-      })();
-    });
-  };
-};
-Prelude.head = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Prelude.error)(Fay$$list("head: empty list"));
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var h = $tmp1.car;
-      return h;
-    }
-    throw ["unhandled case in head",[$p1]];
-  });
-};
-Prelude.tail = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Prelude.error)(Fay$$list("tail: empty list"));
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var t = $tmp1.cdr;
-      return t;
-    }
-    throw ["unhandled case in tail",[$p1]];
-  });
-};
-Prelude.init = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Prelude.error)(Fay$$list("init: empty list"));
-    }
-    if (Fay$$listLen(Fay$$_($p1),1)) {
-      var a = Fay$$index(0,Fay$$_($p1));
-      return null;
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var h = $tmp1.car;
-      var t = $tmp1.cdr;
-      return Fay$$_(Fay$$_(Fay$$cons)(h))(Fay$$_(Prelude.init)(t));
-    }
-    throw ["unhandled case in init",[$p1]];
-  });
-};
-Prelude.last = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Prelude.error)(Fay$$list("last: empty list"));
-    }
-    if (Fay$$listLen(Fay$$_($p1),1)) {
-      var a = Fay$$index(0,Fay$$_($p1));
-      return a;
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var t = $tmp1.cdr;
-      return Fay$$_(Prelude.last)(t);
-    }
-    throw ["unhandled case in last",[$p1]];
-  });
-};
-Prelude.iterate = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var x = $p2;
-      var f = $p1;
-      return Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.iterate)(f))(Fay$$_(f)(x)));
-    });
-  };
-};
-Prelude.repeat = function($p1){
-  return new Fay$$$(function(){
-    var x = $p1;
-    return Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Prelude.repeat)(x));
-  });
-};
-Prelude.replicate = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p1) === 0) {
-        return null;
-      }
-      var x = $p2;
-      var n = $p1;
-      return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(n))(0)) ? null : Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.replicate)(Fay$$_(Fay$$_(Fay$$sub)(n))(1)))(x));
-    });
-  };
-};
-Prelude.cycle = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Prelude.error)(Fay$$list("cycle: empty list"));
-    }
-    var xs = $p1;
-    return (function(){
-      var xs$39$ = new Fay$$$(function(){
-        return Fay$$_(Fay$$_(Prelude.$43$$43$)(xs))(xs$39$);
-      });
-      return xs$39$;
-    })();
-  });
-};
-Prelude.take = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p1) === 0) {
-        return null;
-      }
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var n = $p1;
-        return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(n))(0)) ? null : Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.take)(Fay$$_(Fay$$_(Fay$$sub)(n))(1)))(xs));
-      }
-      throw ["unhandled case in take",[$p1,$p2]];
-    });
-  };
-};
-Prelude.drop = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var xs = $p2;
-      if (Fay$$_($p1) === 0) {
-        return xs;
-      }
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      var xss = $p2;
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var n = $p1;
-        return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(n))(0)) ? xss : Fay$$_(Fay$$_(Prelude.drop)(Fay$$_(Fay$$_(Fay$$sub)(n))(1)))(xs);
-      }
-      throw ["unhandled case in drop",[$p1,$p2]];
-    });
-  };
-};
-Prelude.splitAt = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var xs = $p2;
-      if (Fay$$_($p1) === 0) {
-        return Fay$$list([null,xs]);
-      }
-      if (Fay$$_($p2) === null) {
-        return Fay$$list([null,null]);
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var n = $p1;
-        return Fay$$_(Fay$$_(Fay$$_(Fay$$lt)(n))(0)) ? Fay$$list([null,Fay$$_(Fay$$_(Fay$$cons)(x))(xs)]) : (function($tmp1){
-          if (Fay$$listLen(Fay$$_($tmp1),2)) {
-            var a = Fay$$index(0,Fay$$_($tmp1));
-            var b = Fay$$index(1,Fay$$_($tmp1));
-            return Fay$$list([Fay$$_(Fay$$_(Fay$$cons)(x))(a),b]);
-          }
-          return (function(){ throw (["unhandled case",$tmp1]); })();
-        })(Fay$$_(Fay$$_(Prelude.splitAt)(Fay$$_(Fay$$_(Fay$$sub)(n))(1)))(xs));
-      }
-      throw ["unhandled case in splitAt",[$p1,$p2]];
-    });
-  };
-};
-Prelude.takeWhile = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var p = $p1;
-        return Fay$$_(Fay$$_(p)(x)) ? Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.takeWhile)(p))(xs)) : null;
-      }
-      throw ["unhandled case in takeWhile",[$p1,$p2]];
-    });
-  };
-};
-Prelude.dropWhile = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var p = $p1;
-        return Fay$$_(Fay$$_(p)(x)) ? Fay$$_(Fay$$_(Prelude.dropWhile)(p))(xs) : Fay$$_(Fay$$_(Fay$$cons)(x))(xs);
-      }
-      throw ["unhandled case in dropWhile",[$p1,$p2]];
-    });
-  };
-};
-Prelude.span = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return Fay$$list([null,null]);
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var p = $p1;
-        return Fay$$_(Fay$$_(p)(x)) ? (function($tmp1){
-          if (Fay$$listLen(Fay$$_($tmp1),2)) {
-            var a = Fay$$index(0,Fay$$_($tmp1));
-            var b = Fay$$index(1,Fay$$_($tmp1));
-            return Fay$$list([Fay$$_(Fay$$_(Fay$$cons)(x))(a),b]);
-          }
-          return (function(){ throw (["unhandled case",$tmp1]); })();
-        })(Fay$$_(Fay$$_(Prelude.span)(p))(xs)) : Fay$$list([null,Fay$$_(Fay$$_(Fay$$cons)(x))(xs)]);
-      }
-      throw ["unhandled case in span",[$p1,$p2]];
-    });
-  };
-};
-Prelude.$_break = function($p1){
-  return new Fay$$$(function(){
-    var p = $p1;
-    return Fay$$_(Prelude.span)(Fay$$_(Fay$$_(Prelude.$46$)(Prelude.not))(p));
-  });
-};
-Prelude.zipWith = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var $tmp1 = Fay$$_($p3);
-        if ($tmp1 instanceof Fay$$Cons) {
-          var b = $tmp1.car;
-          var bs = $tmp1.cdr;
-          var $tmp1 = Fay$$_($p2);
-          if ($tmp1 instanceof Fay$$Cons) {
-            var a = $tmp1.car;
-            var as = $tmp1.cdr;
-            var f = $p1;
-            return Fay$$_(Fay$$_(Fay$$cons)(Fay$$_(Fay$$_(f)(a))(b)))(Fay$$_(Fay$$_(Fay$$_(Prelude.zipWith)(f))(as))(bs));
-          }
-        }
-        return null;
-      });
-    };
-  };
-};
-Prelude.zipWith3 = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return new Fay$$$(function(){
-          var $tmp1 = Fay$$_($p4);
-          if ($tmp1 instanceof Fay$$Cons) {
-            var c = $tmp1.car;
-            var cs = $tmp1.cdr;
-            var $tmp1 = Fay$$_($p3);
-            if ($tmp1 instanceof Fay$$Cons) {
-              var b = $tmp1.car;
-              var bs = $tmp1.cdr;
-              var $tmp1 = Fay$$_($p2);
-              if ($tmp1 instanceof Fay$$Cons) {
-                var a = $tmp1.car;
-                var as = $tmp1.cdr;
-                var f = $p1;
-                return Fay$$_(Fay$$_(Fay$$cons)(Fay$$_(Fay$$_(Fay$$_(f)(a))(b))(c)))(Fay$$_(Fay$$_(Fay$$_(Fay$$_(Prelude.zipWith3)(f))(as))(bs))(cs));
-              }
-            }
-          }
-          return null;
-        });
-      };
-    };
-  };
-};
-Prelude.zip = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var b = $tmp1.car;
-        var bs = $tmp1.cdr;
-        var $tmp1 = Fay$$_($p1);
-        if ($tmp1 instanceof Fay$$Cons) {
-          var a = $tmp1.car;
-          var as = $tmp1.cdr;
-          return Fay$$_(Fay$$_(Fay$$cons)(Fay$$list([a,b])))(Fay$$_(Fay$$_(Prelude.zip)(as))(bs));
-        }
-      }
-      return null;
-    });
-  };
-};
-Prelude.zip3 = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var $tmp1 = Fay$$_($p3);
-        if ($tmp1 instanceof Fay$$Cons) {
-          var c = $tmp1.car;
-          var cs = $tmp1.cdr;
-          var $tmp1 = Fay$$_($p2);
-          if ($tmp1 instanceof Fay$$Cons) {
-            var b = $tmp1.car;
-            var bs = $tmp1.cdr;
-            var $tmp1 = Fay$$_($p1);
-            if ($tmp1 instanceof Fay$$Cons) {
-              var a = $tmp1.car;
-              var as = $tmp1.cdr;
-              return Fay$$_(Fay$$_(Fay$$cons)(Fay$$list([a,b,c])))(Fay$$_(Fay$$_(Fay$$_(Prelude.zip3)(as))(bs))(cs));
-            }
-          }
-        }
-        return null;
-      });
-    };
-  };
-};
-Prelude.unzip = function($p1){
-  return new Fay$$$(function(){
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      if (Fay$$listLen(Fay$$_($tmp1.car),2)) {
-        var x = Fay$$index(0,Fay$$_($tmp1.car));
-        var y = Fay$$index(1,Fay$$_($tmp1.car));
-        var ps = $tmp1.cdr;
-        return (function($tmp1){
-          if (Fay$$listLen(Fay$$_($tmp1),2)) {
-            var xs = Fay$$index(0,Fay$$_($tmp1));
-            var ys = Fay$$index(1,Fay$$_($tmp1));
-            return Fay$$list([Fay$$_(Fay$$_(Fay$$cons)(x))(xs),Fay$$_(Fay$$_(Fay$$cons)(y))(ys)]);
-          }
-          return (function(){ throw (["unhandled case",$tmp1]); })();
-        })(Fay$$_(Prelude.unzip)(ps));
-      }
-    }
-    if (Fay$$_($p1) === null) {
-      return Fay$$list([null,null]);
-    }
-    throw ["unhandled case in unzip",[$p1]];
-  });
-};
-Prelude.unzip3 = function($p1){
-  return new Fay$$$(function(){
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      if (Fay$$listLen(Fay$$_($tmp1.car),3)) {
-        var x = Fay$$index(0,Fay$$_($tmp1.car));
-        var y = Fay$$index(1,Fay$$_($tmp1.car));
-        var z = Fay$$index(2,Fay$$_($tmp1.car));
-        var ps = $tmp1.cdr;
-        return (function($tmp1){
-          if (Fay$$listLen(Fay$$_($tmp1),3)) {
-            var xs = Fay$$index(0,Fay$$_($tmp1));
-            var ys = Fay$$index(1,Fay$$_($tmp1));
-            var zs = Fay$$index(2,Fay$$_($tmp1));
-            return Fay$$list([Fay$$_(Fay$$_(Fay$$cons)(x))(xs),Fay$$_(Fay$$_(Fay$$cons)(y))(ys),Fay$$_(Fay$$_(Fay$$cons)(z))(zs)]);
-          }
-          return (function(){ throw (["unhandled case",$tmp1]); })();
-        })(Fay$$_(Prelude.unzip3)(ps));
-      }
-    }
-    if (Fay$$_($p1) === null) {
-      return Fay$$list([null,null,null]);
-    }
-    throw ["unhandled case in unzip3",[$p1]];
-  });
-};
-Prelude.lines = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return null;
-    }
-    var s = $p1;
-    return (function(){
-      var isLineBreak = function($p1){
-        return new Fay$$$(function(){
-          var c = $p1;
-          return Fay$$_(Fay$$_(Fay$$or)(Fay$$_(Fay$$_(Fay$$eq)(c))("\r")))(Fay$$_(Fay$$_(Fay$$eq)(c))("\n"));
-        });
-      };
-      return (function($tmp1){
-        if (Fay$$listLen(Fay$$_($tmp1),2)) {
-          var a = Fay$$index(0,Fay$$_($tmp1));
-          if (Fay$$_(Fay$$index(1,Fay$$_($tmp1))) === null) {
-            return Fay$$list([a]);
-          }
-        }
-        if (Fay$$listLen(Fay$$_($tmp1),2)) {
-          var a = Fay$$index(0,Fay$$_($tmp1));
-          var $tmp2 = Fay$$_(Fay$$index(1,Fay$$_($tmp1)));
-          if ($tmp2 instanceof Fay$$Cons) {
-            var cs = $tmp2.cdr;
-            return Fay$$_(Fay$$_(Fay$$cons)(a))(Fay$$_(Prelude.lines)(cs));
-          }
-        }
-        return (function(){ throw (["unhandled case",$tmp1]); })();
-      })(Fay$$_(Fay$$_(Prelude.$_break)(isLineBreak))(s));
-    })();
-  });
-};
-Prelude.unlines = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return null;
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var l = $tmp1.car;
-      var ls = $tmp1.cdr;
-      return Fay$$_(Fay$$_(Prelude.$43$$43$)(l))(Fay$$_(Fay$$_(Fay$$cons)("\n"))(Fay$$_(Prelude.unlines)(ls)));
-    }
-    throw ["unhandled case in unlines",[$p1]];
-  });
-};
-Prelude.words = function($p1){
-  return new Fay$$$(function(){
-    var str = $p1;
-    return (function(){
-      var words$39$ = function($p1){
-        return new Fay$$$(function(){
-          if (Fay$$_($p1) === null) {
-            return null;
-          }
-          var s = $p1;
-          return (function($tmp1){
-            if (Fay$$listLen(Fay$$_($tmp1),2)) {
-              var a = Fay$$index(0,Fay$$_($tmp1));
-              var b = Fay$$index(1,Fay$$_($tmp1));
-              return Fay$$_(Fay$$_(Fay$$cons)(a))(Fay$$_(Prelude.words)(b));
-            }
-            return (function(){ throw (["unhandled case",$tmp1]); })();
-          })(Fay$$_(Fay$$_(Prelude.$_break)(isSpace))(s));
-        });
-      };
-      var isSpace = function($p1){
-        return new Fay$$$(function(){
-          var c = $p1;
-          return Fay$$_(Fay$$_(Prelude.elem)(c))(Fay$$list(" \t\r\n\u000c\u000b"));
-        });
-      };
-      return Fay$$_(words$39$)(Fay$$_(Fay$$_(Prelude.dropWhile)(isSpace))(str));
-    })();
-  });
-};
-Prelude.unwords = new Fay$$$(function(){
-  return Fay$$_(Prelude.intercalate)(Fay$$list(" "));
-});
-Prelude.and = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return true;
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var x = $tmp1.car;
-      var xs = $tmp1.cdr;
-      return Fay$$_(Fay$$_(Fay$$and)(x))(Fay$$_(Prelude.and)(xs));
-    }
-    throw ["unhandled case in and",[$p1]];
-  });
-};
-Prelude.or = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return false;
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var x = $tmp1.car;
-      var xs = $tmp1.cdr;
-      return Fay$$_(Fay$$_(Fay$$or)(x))(Fay$$_(Prelude.or)(xs));
-    }
-    throw ["unhandled case in or",[$p1]];
-  });
-};
-Prelude.any = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return false;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var p = $p1;
-        return Fay$$_(Fay$$_(Fay$$or)(Fay$$_(p)(x)))(Fay$$_(Fay$$_(Prelude.any)(p))(xs));
-      }
-      throw ["unhandled case in any",[$p1,$p2]];
-    });
-  };
-};
-Prelude.all = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return true;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var p = $p1;
-        return Fay$$_(Fay$$_(Fay$$and)(Fay$$_(p)(x)))(Fay$$_(Fay$$_(Prelude.all)(p))(xs));
-      }
-      throw ["unhandled case in all",[$p1,$p2]];
-    });
-  };
-};
-Prelude.intersperse = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var sep = $p1;
-        return Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.prependToAll)(sep))(xs));
-      }
-      throw ["unhandled case in intersperse",[$p1,$p2]];
-    });
-  };
-};
-Prelude.prependToAll = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var sep = $p1;
-        return Fay$$_(Fay$$_(Fay$$cons)(sep))(Fay$$_(Fay$$_(Fay$$cons)(x))(Fay$$_(Fay$$_(Prelude.prependToAll)(sep))(xs)));
-      }
-      throw ["unhandled case in prependToAll",[$p1,$p2]];
-    });
-  };
-};
-Prelude.intercalate = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var xss = $p2;
-      var xs = $p1;
-      return Fay$$_(Prelude.concat)(Fay$$_(Fay$$_(Prelude.intersperse)(xs))(xss));
-    });
-  };
-};
-Prelude.maximum = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Prelude.error)(Fay$$list("maximum: empty list"));
-    }
-    var xs = $p1;
-    return Fay$$_(Fay$$_(Prelude.foldl1)(Prelude.max))(xs);
-  });
-};
-Prelude.minimum = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Prelude.error)(Fay$$list("minimum: empty list"));
-    }
-    var xs = $p1;
-    return Fay$$_(Fay$$_(Prelude.foldl1)(Prelude.min))(xs);
-  });
-};
-Prelude.product = function($p1){
-  return new Fay$$$(function(){
-    var xs = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(Prelude.foldl)(Fay$$mult))(1))(xs);
-  });
-};
-Prelude.sum = function($p1){
-  return new Fay$$$(function(){
-    var xs = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(Prelude.foldl)(Fay$$add))(0))(xs);
-  });
-};
-Prelude.scanl = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var l = $p3;
-        var z = $p2;
-        var f = $p1;
-        return Fay$$_(Fay$$_(Fay$$cons)(z))((function($tmp1){
-          if (Fay$$_($tmp1) === null) {
-            return null;
-          }
-          var $tmp2 = Fay$$_($tmp1);
-          if ($tmp2 instanceof Fay$$Cons) {
-            var x = $tmp2.car;
-            var xs = $tmp2.cdr;
-            return Fay$$_(Fay$$_(Fay$$_(Prelude.scanl)(f))(Fay$$_(Fay$$_(f)(z))(x)))(xs);
-          }
-          return (function(){ throw (["unhandled case",$tmp1]); })();
-        })(l));
-      });
-    };
-  };
-};
-Prelude.scanl1 = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var f = $p1;
-        return Fay$$_(Fay$$_(Fay$$_(Prelude.scanl)(f))(x))(xs);
-      }
-      throw ["unhandled case in scanl1",[$p1,$p2]];
-    });
-  };
-};
-Prelude.scanr = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        if (Fay$$_($p3) === null) {
-          var z = $p2;
-          return Fay$$list([z]);
-        }
-        var $tmp1 = Fay$$_($p3);
-        if ($tmp1 instanceof Fay$$Cons) {
-          var x = $tmp1.car;
-          var xs = $tmp1.cdr;
-          var z = $p2;
-          var f = $p1;
-          return (function($tmp1){
-            var $tmp2 = Fay$$_($tmp1);
-            if ($tmp2 instanceof Fay$$Cons) {
-              var h = $tmp2.car;
-              var t = $tmp2.cdr;
-              return Fay$$_(Fay$$_(Fay$$cons)(Fay$$_(Fay$$_(f)(x))(h)))(Fay$$_(Fay$$_(Fay$$cons)(h))(t));
-            }
-            return Prelude.$_undefined;
-          })(Fay$$_(Fay$$_(Fay$$_(Prelude.scanr)(f))(z))(xs));
-        }
-        throw ["unhandled case in scanr",[$p1,$p2,$p3]];
-      });
-    };
-  };
-};
-Prelude.scanr1 = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        return null;
-      }
-      if (Fay$$listLen(Fay$$_($p2),1)) {
-        var x = Fay$$index(0,Fay$$_($p2));
-        return Fay$$list([x]);
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var x = $tmp1.car;
-        var xs = $tmp1.cdr;
-        var f = $p1;
-        return (function($tmp1){
-          var $tmp2 = Fay$$_($tmp1);
-          if ($tmp2 instanceof Fay$$Cons) {
-            var h = $tmp2.car;
-            var t = $tmp2.cdr;
-            return Fay$$_(Fay$$_(Fay$$cons)(Fay$$_(Fay$$_(f)(x))(h)))(Fay$$_(Fay$$_(Fay$$cons)(h))(t));
-          }
-          return Prelude.$_undefined;
-        })(Fay$$_(Fay$$_(Prelude.scanr1)(f))(xs));
-      }
-      throw ["unhandled case in scanr1",[$p1,$p2]];
-    });
-  };
-};
-Prelude.lookup = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      if (Fay$$_($p2) === null) {
-        var _key = $p1;
-        return Prelude.Nothing;
-      }
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        if (Fay$$listLen(Fay$$_($tmp1.car),2)) {
-          var x = Fay$$index(0,Fay$$_($tmp1.car));
-          var y = Fay$$index(1,Fay$$_($tmp1.car));
-          var xys = $tmp1.cdr;
-          var key = $p1;
-          return Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(key))(x)) ? Fay$$_(Prelude.Just)(y) : Fay$$_(Fay$$_(Prelude.lookup)(key))(xys);
-        }
-      }
-      throw ["unhandled case in lookup",[$p1,$p2]];
-    });
-  };
-};
-Prelude.length = function($p1){
-  return new Fay$$$(function(){
-    var xs = $p1;
-    return Fay$$_(Fay$$_(Prelude.length$39$)(0))(xs);
-  });
-};
-Prelude.length$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var $tmp1 = Fay$$_($p2);
-      if ($tmp1 instanceof Fay$$Cons) {
-        var xs = $tmp1.cdr;
-        var acc = $p1;
-        return Fay$$_(Fay$$_(Prelude.length$39$)(Fay$$_(Fay$$_(Fay$$add)(acc))(1)))(xs);
-      }
-      var acc = $p1;
-      return acc;
-    });
-  };
-};
-Prelude.reverse = function($p1){
-  return new Fay$$$(function(){
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var x = $tmp1.car;
-      var xs = $tmp1.cdr;
-      return Fay$$_(Fay$$_(Prelude.$43$$43$)(Fay$$_(Prelude.reverse)(xs)))(Fay$$list([x]));
-    }
-    if (Fay$$_($p1) === null) {
-      return null;
-    }
-    throw ["unhandled case in reverse",[$p1]];
-  });
-};
-Prelude.print = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],(function(x) { if (console && console.log) console.log(x) })(Fay$$fayToJs(["automatic"],$p1))));
-  });
-};
-Prelude.putStrLn = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],(function(x) { if (console && console.log) console.log(x) })(Fay$$fayToJs_string($p1))));
-  });
-};
-Prelude.ifThenElse = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var b = $p3;
-        var a = $p2;
-        var p = $p1;
-        return Fay$$_(p) ? a : b;
-      });
-    };
-  };
-};
-Fay$$objConcat(Fay$$fayToJsHash,{"Just": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Just"};
-  var obj_slot1 = Fay$$fayToJs(argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-},"Nothing": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Nothing"};
-  return obj_;
-},"Left": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Left"};
-  var obj_slot1 = Fay$$fayToJs(argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-},"Right": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Right"};
-  var obj_slot1 = Fay$$fayToJs(argTypes && (argTypes)[1] ? (argTypes)[1] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-},"GT": function(type,argTypes,_obj){
-  var obj_ = {"instance": "GT"};
-  return obj_;
-},"LT": function(type,argTypes,_obj){
-  var obj_ = {"instance": "LT"};
-  return obj_;
-},"EQ": function(type,argTypes,_obj){
-  var obj_ = {"instance": "EQ"};
-  return obj_;
-}});
-Fay$$objConcat(Fay$$jsToFayHash,{"Just": function(type,argTypes,obj){
-  return new Prelude._Just(Fay$$jsToFay(argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],obj["slot1"]));
-},"Nothing": function(type,argTypes,obj){
-  return new Prelude._Nothing();
-},"Left": function(type,argTypes,obj){
-  return new Prelude._Left(Fay$$jsToFay(argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],obj["slot1"]));
-},"Right": function(type,argTypes,obj){
-  return new Prelude._Right(Fay$$jsToFay(argTypes && (argTypes)[1] ? (argTypes)[1] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],obj["slot1"]));
-},"GT": function(type,argTypes,obj){
-  return new Prelude._GT();
-},"LT": function(type,argTypes,obj){
-  return new Prelude._LT();
-},"EQ": function(type,argTypes,obj){
-  return new Prelude._EQ();
-}});
-var FFI = {};
-Data.Nullable = {};
-Data.Nullable.fromNullable = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) instanceof Fay.FFI._Nullable) {
-      var x = Fay$$_($p1).slot1;
-      return Fay$$_(Prelude.Just)(x);
-    }
-    if (Fay$$_($p1) instanceof Fay.FFI._Null) {
-      return Prelude.Nothing;
-    }
-    throw ["unhandled case in fromNullable",[$p1]];
-  });
-};
-Data.Nullable.toNullable = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) instanceof Prelude._Just) {
-      var x = Fay$$_($p1).slot1;
-      return Fay$$_(Fay.FFI.Nullable)(x);
-    }
-    if (Fay$$_($p1) instanceof Prelude._Nothing) {
-      return Fay.FFI.Null;
-    }
-    throw ["unhandled case in toNullable",[$p1]];
-  });
-};
-Data.Text = {};
-Data.Text.intercalate = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["list",[["user","Text",[]]]],$p2).join(Fay$$fayToJs(["user","Text",[]],$p1)));
-    });
-  };
-};
-Data.Text.fromString = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs_string($p1));
-  });
-};
-Data.Text.snoc = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p1) + Fay$$fayToJs(["user","Char",[]],$p2));
-    });
-  };
-};
-Data.Text.cons = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Char",[]],$p1) + Fay$$fayToJs(["user","Text",[]],$p2));
-    });
-  };
-};
-Data.Text.pack = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs_string($p1));
-  });
-};
-Data.Text.unpack = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_string(Fay$$fayToJs(["user","Text",[]],$p1));
-  });
-};
-Data.Text.append = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p1) + Fay$$fayToJs(["user","Text",[]],$p2));
-    });
-  };
-};
-Data.Text.$60$$62$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p1) + Fay$$fayToJs(["user","Text",[]],$p2));
-    });
-  };
-};
-Data.Text.length = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_int(Fay$$fayToJs(["user","Text",[]],$p1).length);
-  });
-};
-Data.Text.$_null = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_bool(Fay$$fayToJs(["user","Text",[]],$p1).length == 0);
-  });
-};
-Data.Text.take = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p2).substring(0,Fay$$fayToJs_int($p1)));
-    });
-  };
-};
-Data.Text.drop = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p2).substring(Fay$$fayToJs_int($p1)));
-    });
-  };
-};
-Data.Text.empty = new Fay$$$(function(){
-  return Fay$$jsToFay(["user","Text",[]],"");
-});
-Data.Text.lines = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["list",[["user","Text",[]]]],Fay$$fayToJs(["user","Text",[]],$p1).split('\n'));
-  });
-};
-Data.Text.unlines = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["list",[["user","Text",[]]]],$p1).join('\n'));
-  });
-};
-Data.Text.isPrefixOf = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay_bool(Fay$$fayToJs(["user","Text",[]],$p2).lastIndexOf(Fay$$fayToJs(["user","Text",[]],$p1), 0) == 0);
-    });
-  };
-};
-Data.Text.intersperse = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p2).split('').join(Fay$$fayToJs(["user","Char",[]],$p1)));
-    });
-  };
-};
-Data.Text.reverse = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p1).split('').reverse().join(''));
-  });
-};
-Data.Text.stripSuffix = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var text = $p2;
-      var prefix = $p1;
-      return (function(){
-        var extract = function($p1){
-          return function($p2){
-            return new Fay$$$(function(){
-              return Fay$$jsToFay(["nullable",[["user","Text",[]]]],(function(suffix,text){ return text.substring(text.length - suffix.length) == suffix? text.substring(0,text.length - suffix.length) : null; })(Fay$$fayToJs(["user","Text",[]],$p1),Fay$$fayToJs(["user","Text",[]],$p2)));
-            });
-          };
-        };
-        return Fay$$_(Data.Nullable.fromNullable)(Fay$$_(Fay$$_(extract)(prefix))(text));
-      })();
-    });
-  };
-};
-Data.Text.splitOn = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["list",[["user","Text",[]]]],Fay$$fayToJs(["user","Text",[]],$p2).split(Fay$$fayToJs(["user","Char",[]],$p1)));
-    });
-  };
-};
-Data.Text.putStrLn = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],console.log('%s',Fay$$fayToJs(["user","Text",[]],$p1))));
-  });
-};
-Data.Text.toShortest = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs_double($p1).toString());
-  });
-};
-Data.Text.showInt = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs_int($p1).toString());
-  });
-};
-Data.Text.uncons = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Maybe",[["tuple",[["user","Char",[]],["user","Text",[]]]]]],Fay$$fayToJs(["user","Text",[]],$p1)[0] ? { instance: 'Just', slot1 : [Fay$$fayToJs(["user","Text",[]],$p1)[0],Fay$$fayToJs(["user","Text",[]],$p1).slice(1)] } : { instance : 'Nothing' });
-  });
-};
-Data.Text.head = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Char",[]],Fay$$fayToJs(["user","Text",[]],$p1)[0] || (function () {throw new Error('Data.Text.head: empty Text'); }()));
-  });
-};
-Data.Text.last = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Char",[]],Fay$$fayToJs(["user","Text",[]],$p1).length ? Fay$$fayToJs(["user","Text",[]],$p1)[Fay$$fayToJs(["user","Text",[]],$p1).length-1] : (function() { throw new Error('Data.Text.last: empty Text') })());
-  });
-};
-Data.Text.tail = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p1).length ? Fay$$fayToJs(["user","Text",[]],$p1).slice(1) : (function () { throw new Error('Data.Text.tail: empty Text') })());
-  });
-};
-Data.Text.init = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p1).length ? Fay$$fayToJs(["user","Text",[]],$p1).slice(0,-1) : (function () { throw new Error('Data.Text.init: empty Text') })());
-  });
-};
-Data.Text.map = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],[].map.call(Fay$$fayToJs(["user","Text",[]],$p2), Fay$$fayToJs(["function",[["user","Char",[]],["user","Char",[]]]],$p1)).join(''));
-    });
-  };
-};
-Data.Text.toLower = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p1).toLowerCase());
-  });
-};
-Data.Text.toUpper = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Text",[]],$p1).toUpperCase());
-  });
-};
-Data.Text.concat = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["list",[["user","Text",[]]]],$p1).join(''));
-  });
-};
-Data.Text.concatMap = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Text",[]],[].map.call(Fay$$fayToJs(["user","Text",[]],$p2), Fay$$fayToJs(["function",[["user","Char",[]],["user","Text",[]]]],$p1)).join(''));
-    });
-  };
-};
-Data.Text.any = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay_bool([].filter.call(Fay$$fayToJs(["user","Text",[]],$p2), Fay$$fayToJs(["function",[["user","Char",[]],["bool"]]],$p1)).length > 0);
-    });
-  };
-};
-Data.Text.all = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay_bool([].filter.call(Fay$$fayToJs(["user","Text",[]],$p2), Fay$$fayToJs(["function",[["user","Char",[]],["bool"]]],$p1)).length == Fay$$fayToJs(["function",[["user","Char",[]],["bool"]]],$p1).length);
-    });
-  };
-};
-Data.Text.maximum = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Char",[]],(function (s) {    if (s === '') { throw new Error('Data.Text.maximum: empty string'); }    var max = s[0];    for (var i = 1; i < s.length; s++) {      if (s[i] > max) { max = s[i]; }    }    return max;  })(Fay$$fayToJs(["user","Text",[]],$p1)));
-  });
-};
-Data.Text.minimum = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Char",[]],(function (s) {    if (s === '') { throw new Error('Data.Text.maximum: empty string'); }    var min = s[0];    for (var i = 1; i < s.length; s++) {      if (s[i] < min) { min = s[i]; }    }    return min;  })(Fay$$fayToJs(["user","Text",[]],$p1)));
-  });
-};
-Fay.Text = {};
-Fay.Text.Type = {};
-Fay.Text.Type.fromString = new Fay$$$(function(){
-  return Data.Text.pack;
-});
-Fay.Text.Type.pack = Data.Text.pack;
-Fay.Text.Type.unpack = Data.Text.unpack;
-Fay.Text.all = Data.Text.all;
-Fay.Text.any = Data.Text.any;
-Fay.Text.append = Data.Text.append;
-Fay.Text.concat = Data.Text.concat;
-Fay.Text.concatMap = Data.Text.concatMap;
-Fay.Text.cons = Data.Text.cons;
-Fay.Text.drop = Data.Text.drop;
-Fay.Text.empty = Data.Text.empty;
-Fay.Text.head = Data.Text.head;
-Fay.Text.init = Data.Text.init;
-Fay.Text.intercalate = Data.Text.intercalate;
-Fay.Text.intersperse = Data.Text.intersperse;
-Fay.Text.isPrefixOf = Data.Text.isPrefixOf;
-Fay.Text.last = Data.Text.last;
-Fay.Text.length = Data.Text.length;
-Fay.Text.lines = Data.Text.lines;
-Fay.Text.map = Data.Text.map;
-Fay.Text.maximum = Data.Text.maximum;
-Fay.Text.minimum = Data.Text.minimum;
-Fay.Text.$_null = Data.Text.$_null;
-Fay.Text.pack = Data.Text.pack;
-Fay.Text.reverse = Data.Text.reverse;
-Fay.Text.snoc = Data.Text.snoc;
-Fay.Text.splitOn = Data.Text.splitOn;
-Fay.Text.stripSuffix = Data.Text.stripSuffix;
-Fay.Text.tail = Data.Text.tail;
-Fay.Text.take = Data.Text.take;
-Fay.Text.toLower = Data.Text.toLower;
-Fay.Text.toUpper = Data.Text.toUpper;
-Fay.Text.uncons = Data.Text.uncons;
-Fay.Text.unlines = Data.Text.unlines;
-Fay.Text.unpack = Data.Text.unpack;
-var JQuery = {};
-JQuery.emptyCallback = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.$_const))(Fay$$_(Fay$$$_return)(Fay$$unit));
-});
-JQuery.ajax = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var err = $p3;
-        var succ = $p2;
-        var ur = $p1;
-        return Fay$$_(Fay$$_(Prelude.$36$)(JQuery.ajax$39$))((function(){
-          var $36$_record_to_update = Object.create(Fay$$_(JQuery.defaultAjaxSettings));
-          $36$_record_to_update.success = Fay$$_(Fay.FFI.Defined)(succ);
-          $36$_record_to_update.data$39$ = Fay.FFI.Undefined;
-          $36$_record_to_update.error$39$ = Fay$$_(Fay.FFI.Defined)(err);
-          $36$_record_to_update.url = Fay$$_(Fay.FFI.Defined)(ur);
-          return $36$_record_to_update;
-        })());
-      });
-    };
-  };
-};
-JQuery.ajaxPost = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return new Fay$$$(function(){
-          var err = $p4;
-          var succ = $p3;
-          var dat = $p2;
-          var ur = $p1;
-          return Fay$$_(Fay$$_(Prelude.$36$)(JQuery.ajax$39$))((function(){
-            var $36$_record_to_update = Object.create(Fay$$_(JQuery.defaultAjaxSettings));
-            $36$_record_to_update.success = Fay$$_(Fay.FFI.Defined)(succ);
-            $36$_record_to_update.data$39$ = Fay$$_(Fay.FFI.Defined)(dat);
-            $36$_record_to_update.error$39$ = Fay$$_(Fay.FFI.Defined)(err);
-            $36$_record_to_update.url = Fay$$_(Fay.FFI.Defined)(ur);
-            $36$_record_to_update.type$39$ = Fay$$_(Fay.FFI.Defined)("POST");
-            $36$_record_to_update.processData = Fay$$_(Fay.FFI.Defined)(false);
-            $36$_record_to_update.contentType = Fay$$_(Fay.FFI.Defined)("text/json");
-            $36$_record_to_update.dataType = Fay$$_(Fay.FFI.Defined)("json");
-            return $36$_record_to_update;
-          })());
-        });
-      };
-    };
-  };
-};
-JQuery.ajaxPostParam = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return function($p5){
-          return new Fay$$$(function(){
-            var err = $p5;
-            var succ = $p4;
-            var dat = $p3;
-            var rqparam = $p2;
-            var ur = $p1;
-            return Fay$$_(Fay$$_(Prelude.$36$)(JQuery.ajax$39$))((function(){
-              var $36$_record_to_update = Object.create(Fay$$_(JQuery.defaultAjaxSettings));
-              $36$_record_to_update.success = Fay$$_(Fay.FFI.Defined)(succ);
-              $36$_record_to_update.data$39$ = Fay$$_(Fay$$_(Prelude.$36$)(Fay.FFI.Defined))(Fay$$_(Fay$$_(JQuery.makeRqObj)(rqparam))(dat));
-              $36$_record_to_update.error$39$ = Fay$$_(Fay.FFI.Defined)(err);
-              $36$_record_to_update.url = Fay$$_(Fay.FFI.Defined)(ur);
-              $36$_record_to_update.type$39$ = Fay$$_(Fay.FFI.Defined)("POST");
-              $36$_record_to_update.processData = Fay$$_(Fay.FFI.Defined)(false);
-              $36$_record_to_update.contentType = Fay$$_(Fay.FFI.Defined)("text/json");
-              $36$_record_to_update.dataType = Fay$$_(Fay.FFI.Defined)("json");
-              return $36$_record_to_update;
-            })());
-          });
-        };
-      };
-    };
-  };
-};
-JQuery.makeRqObj = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Object",[]],(function () { var o = {}; o[Fay$$fayToJs(["user","Text",[]],$p1)] = Fay$$fayToJs(["unknown"],$p2); return o; })());
-    });
-  };
-};
-JQuery._AjaxSettings = function AjaxSettings(accepts,async,beforeSend,cache,complete,contentType,crossDomain,data$39$,dataType,error$39$,$_global,ifModified,isLocal,mimeType,password,processData,success,timeout,type$39$,url,username){
-  this.accepts = accepts;
-  this.async = async;
-  this.beforeSend = beforeSend;
-  this.cache = cache;
-  this.complete = complete;
-  this.contentType = contentType;
-  this.crossDomain = crossDomain;
-  this.data$39$ = data$39$;
-  this.dataType = dataType;
-  this.error$39$ = error$39$;
-  this.$_global = $_global;
-  this.ifModified = ifModified;
-  this.isLocal = isLocal;
-  this.mimeType = mimeType;
-  this.password = password;
-  this.processData = processData;
-  this.success = success;
-  this.timeout = timeout;
-  this.type$39$ = type$39$;
-  this.url = url;
-  this.username = username;
-};
-JQuery._AjaxSettings.prototype.instance = "AjaxSettings";
-JQuery.AjaxSettings = function(accepts){
-  return function(async){
-    return function(beforeSend){
-      return function(cache){
-        return function(complete){
-          return function(contentType){
-            return function(crossDomain){
-              return function(data$39$){
-                return function(dataType){
-                  return function(error$39$){
-                    return function($_global){
-                      return function(ifModified){
-                        return function(isLocal){
-                          return function(mimeType){
-                            return function(password){
-                              return function(processData){
-                                return function(success){
-                                  return function(timeout){
-                                    return function(type$39$){
-                                      return function(url){
-                                        return function(username){
-                                          return new Fay$$$(function(){
-                                            return new JQuery._AjaxSettings(accepts,async,beforeSend,cache,complete,contentType,crossDomain,data$39$,dataType,error$39$,$_global,ifModified,isLocal,mimeType,password,processData,success,timeout,type$39$,url,username);
-                                          });
-                                        };
-                                      };
-                                    };
-                                  };
-                                };
-                              };
-                            };
-                          };
-                        };
-                      };
-                    };
-                  };
-                };
-              };
-            };
-          };
-        };
-      };
-    };
-  };
-};
-JQuery.accepts = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).accepts;
-  });
-};
-JQuery.async = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).async;
-  });
-};
-JQuery.beforeSend = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).beforeSend;
-  });
-};
-JQuery.cache = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).cache;
-  });
-};
-JQuery.complete = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).complete;
-  });
-};
-JQuery.contentType = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).contentType;
-  });
-};
-JQuery.crossDomain = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).crossDomain;
-  });
-};
-JQuery.data$39$ = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).data$39$;
-  });
-};
-JQuery.dataType = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).dataType;
-  });
-};
-JQuery.error$39$ = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).error$39$;
-  });
-};
-JQuery.$_global = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).$_global;
-  });
-};
-JQuery.ifModified = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).ifModified;
-  });
-};
-JQuery.isLocal = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).isLocal;
-  });
-};
-JQuery.mimeType = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).mimeType;
-  });
-};
-JQuery.password = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).password;
-  });
-};
-JQuery.processData = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).processData;
-  });
-};
-JQuery.success = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).success;
-  });
-};
-JQuery.timeout = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).timeout;
-  });
-};
-JQuery.type$39$ = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).type$39$;
-  });
-};
-JQuery.url = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).url;
-  });
-};
-JQuery.username = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).username;
-  });
-};
-JQuery.defaultAjaxSettings = new Fay$$$(function(){
-  var _ajaxSettings = new JQuery._AjaxSettings();
-  _ajaxSettings.accepts = Fay.FFI.Undefined;
-  _ajaxSettings.async = Fay.FFI.Undefined;
-  _ajaxSettings.beforeSend = Fay.FFI.Undefined;
-  _ajaxSettings.cache = Fay.FFI.Undefined;
-  _ajaxSettings.complete = Fay.FFI.Undefined;
-  _ajaxSettings.contentType = Fay.FFI.Undefined;
-  _ajaxSettings.crossDomain = Fay.FFI.Undefined;
-  _ajaxSettings.data$39$ = Fay.FFI.Undefined;
-  _ajaxSettings.dataType = Fay.FFI.Undefined;
-  _ajaxSettings.error$39$ = Fay.FFI.Undefined;
-  _ajaxSettings.$_global = Fay.FFI.Undefined;
-  _ajaxSettings.ifModified = Fay.FFI.Undefined;
-  _ajaxSettings.isLocal = Fay.FFI.Undefined;
-  _ajaxSettings.mimeType = Fay.FFI.Undefined;
-  _ajaxSettings.password = Fay.FFI.Undefined;
-  _ajaxSettings.processData = Fay.FFI.Undefined;
-  _ajaxSettings.success = Fay.FFI.Undefined;
-  _ajaxSettings.timeout = Fay.FFI.Undefined;
-  _ajaxSettings.type$39$ = Fay.FFI.Undefined;
-  _ajaxSettings.url = Fay.FFI.Undefined;
-  _ajaxSettings.username = Fay.FFI.Undefined;
-  return _ajaxSettings;
-});
-JQuery.ajax$39$ = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"], (function (o) {  delete o['instance'];  for (var p in o) {  if (/\$39\$/.test(p)) {  o[p.replace(/\$39\$/g, '')] = o[p];  delete o[p];  }  }  return jQuery.ajax(o);  })(Fay$$fayToJs(["user","AjaxSettings",[["automatic"],["automatic"]]],$p1))));
-  });
-};
-JQuery.addClass = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['addClass'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.addClassWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['addClass'](Fay$$fayToJs(["function",[["double"],["user","Text",[]],["action",[["user","Text",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.getAttr = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["defined",[["user","Text",[]]]],Fay$$fayToJs(["user","JQuery",[]],$p2)['attr'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.setAttr = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['attr'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.setAttrWith = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['attr'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["function",[["double"],["user","Text",[]],["action",[["user","Text",[]]]]]],$p2))));
-      });
-    };
-  };
-};
-JQuery.hasClass = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay_bool(Fay$$fayToJs(["user","JQuery",[]],$p2)['hasClass'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.getHtml = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['html']()));
-  });
-};
-JQuery.setHtml = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['html'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.setHtmlWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['html'](Fay$$fayToJs(["function",[["double"],["user","Text",[]],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.getProp = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['prop'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.setProp = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['prop'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.setPropWith = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['prop'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["function",[["double"],["user","Text",[]],["action",[["user","Text",[]]]]]],$p2))));
-      });
-    };
-  };
-};
-JQuery.removeAttr = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['removeAttr'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.removeClass = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['removeClass'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.removeClassWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['removeClass'](Fay$$fayToJs(["function",[["double"],["user","Text",[]],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.removeProp = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['removeProp'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.toggleClass = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['toggleClass'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.toggleClassBool = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['toggleClass'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs_bool($p2))));
-      });
-    };
-  };
-};
-JQuery.toggleAllClasses = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['toggleClass'](Fay$$fayToJs_bool($p1))));
-    });
-  };
-};
-JQuery.toggleClassWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['toggleClass'](Fay$$fayToJs(["function",[["double"],["user","Text",[]],["bool"],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.toggleClassBoolWith = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['toggleClass'](Fay$$fayToJs(["function",[["double"],["user","Text",[]],["bool"],["action",[["user","JQuery",[]]]]]],$p1), Fay$$fayToJs_bool($p2))));
-      });
-    };
-  };
-};
-JQuery.getVal = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['val']()));
-  });
-};
-JQuery.setVal = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['val'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.setValWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['val'](Fay$$fayToJs(["function",[["double"],["user","Text",[]],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.setText = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['text'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.setTextWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['text'](Fay$$fayToJs(["function",[["double"],["user","Text",[]],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.getText = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['text']()));
-  });
-};
-JQuery.holdReady = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],jQuery['holdReady'](Fay$$fayToJs_bool($p1))));
-  });
-};
-JQuery.select = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],jQuery(Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-  });
-};
-JQuery.selectEmpty = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],jQuery()));
-});
-JQuery.selectInContext = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],jQuery(Fay$$_(Fay$$fayToJs(["unknown"],$p1)), Fay$$_(Fay$$fayToJs(["unknown"],$p2)))));
-    });
-  };
-};
-JQuery.ready = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],jQuery(Fay$$fayToJs(["action",[["unknown"]]],$p1))));
-  });
-};
-JQuery.noConflict = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],jQuery['noConflict']()));
-});
-JQuery.noConflictBool = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],jQuery['noConflict'](Fay$$fayToJs_bool($p1))));
-  });
-};
-JQuery.getCss = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['css'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.setCss = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['css'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.setCssWith = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['css'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["function",[["double"],["user","Text",[]],["action",[["user","Text",[]]]]]],$p2))));
-      });
-    };
-  };
-};
-JQuery.getHeight = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p1)['height']()));
-  });
-};
-JQuery.setHeight = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['height'](Fay$$fayToJs_double($p1))));
-    });
-  };
-};
-JQuery.setHeightWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['height'](Fay$$fayToJs(["function",[["double"],["double"],["action",[["double"]]]]],$p1))));
-    });
-  };
-};
-JQuery.getInnerHeight = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p1)['innerHeight']()));
-  });
-};
-JQuery.getInnerWidth = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p1)['innerWidth']()));
-  });
-};
-JQuery.getOuterHeight = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p1)['outerHeight']()));
-  });
-};
-JQuery.getOuterHeightBool = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p2)['outerHeight'](Fay$$fayToJs_bool($p1))));
-    });
-  };
-};
-JQuery.getOuterWidth = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p1)['outerWidth']()));
-  });
-};
-JQuery.getOuterWidthBool = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p2)['outerWidth'](Fay$$fayToJs_bool($p1))));
-    });
-  };
-};
-JQuery.getScrollLeft = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p1)['scrollLeft']()));
-  });
-};
-JQuery.setScrollLeft = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['scrollLeft'](Fay$$fayToJs_double($p1))));
-    });
-  };
-};
-JQuery.getScrollTop = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p1)['scrollTop']()));
-  });
-};
-JQuery.setScrollTop = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['scrollTop'](Fay$$fayToJs_double($p1))));
-    });
-  };
-};
-JQuery.getWidth = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","JQuery",[]],$p1)['width']()));
-  });
-};
-JQuery.setWidth = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['width'](Fay$$fayToJs_double($p1))));
-    });
-  };
-};
-JQuery.setWidthWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['width'](Fay$$fayToJs(["function",[["double"],["double"],["action",[["double"]]]]],$p1))));
-    });
-  };
-};
-JQuery._Show = function Show(){
-};
-JQuery._Show.prototype.instance = "Show";
-JQuery.Show = new Fay$$$(function(){
-  return new JQuery._Show();
-});
-JQuery._Hide = function Hide(){
-};
-JQuery._Hide.prototype.instance = "Hide";
-JQuery.Hide = new Fay$$$(function(){
-  return new JQuery._Hide();
-});
-JQuery._Toggle = function Toggle(){
-};
-JQuery._Toggle.prototype.instance = "Toggle";
-JQuery.Toggle = new Fay$$$(function(){
-  return new JQuery._Toggle();
-});
-JQuery._FadeIn = function FadeIn(){
-};
-JQuery._FadeIn.prototype.instance = "FadeIn";
-JQuery.FadeIn = new Fay$$$(function(){
-  return new JQuery._FadeIn();
-});
-JQuery._FadeOut = function FadeOut(){
-};
-JQuery._FadeOut.prototype.instance = "FadeOut";
-JQuery.FadeOut = new Fay$$$(function(){
-  return new JQuery._FadeOut();
-});
-JQuery._FadeToggle = function FadeToggle(){
-};
-JQuery._FadeToggle.prototype.instance = "FadeToggle";
-JQuery.FadeToggle = new Fay$$$(function(){
-  return new JQuery._FadeToggle();
-});
-JQuery._Instantly = function Instantly(){
-};
-JQuery._Instantly.prototype.instance = "Instantly";
-JQuery.Instantly = new Fay$$$(function(){
-  return new JQuery._Instantly();
-});
-JQuery._Slow = function Slow(){
-};
-JQuery._Slow.prototype.instance = "Slow";
-JQuery.Slow = new Fay$$$(function(){
-  return new JQuery._Slow();
-});
-JQuery._Fast = function Fast(){
-};
-JQuery._Fast.prototype.instance = "Fast";
-JQuery.Fast = new Fay$$$(function(){
-  return new JQuery._Fast();
-});
-JQuery._Speed = function Speed(slot1){
-  this.slot1 = slot1;
-};
-JQuery._Speed.prototype.instance = "Speed";
-JQuery.Speed = function(slot1){
-  return new Fay$$$(function(){
-    return new JQuery._Speed(slot1);
-  });
-};
-JQuery._Animation = function Animation(_type,_speed,_nextAnimation,_element){
-  this._type = _type;
-  this._speed = _speed;
-  this._nextAnimation = _nextAnimation;
-  this._element = _element;
-};
-JQuery._Animation.prototype.instance = "Animation";
-JQuery.Animation = function(_type){
-  return function(_speed){
-    return function(_nextAnimation){
-      return function(_element){
-        return new Fay$$$(function(){
-          return new JQuery._Animation(_type,_speed,_nextAnimation,_element);
-        });
-      };
-    };
-  };
-};
-JQuery._type = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x)._type;
-  });
-};
-JQuery._speed = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x)._speed;
-  });
-};
-JQuery._nextAnimation = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x)._nextAnimation;
-  });
-};
-JQuery._element = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x)._element;
-  });
-};
-JQuery.anim = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var el = $p2;
-      var ty = $p1;
-      return Fay$$_(Fay$$_(Fay$$_(Fay$$_(JQuery.Animation)(ty))(JQuery.Fast))(Prelude.Nothing))(el);
-    });
-  };
-};
-JQuery.speed = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var ani = $p2;
-      var spd = $p1;
-      return (function(){
-        var $36$_record_to_update = Object.create(Fay$$_(ani));
-        $36$_record_to_update._speed = spd;
-        return $36$_record_to_update;
-      })();
-    });
-  };
-};
-JQuery.chainAnim = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var a2 = $p2;
-      var a1 = $p1;
-      return (function(){
-        var $36$_record_to_update = Object.create(Fay$$_(a1));
-        $36$_record_to_update._nextAnimation = Fay$$_(Prelude.Just)(a2);
-        return $36$_record_to_update;
-      })();
-    });
-  };
-};
-JQuery.chainAnims = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$listLen(Fay$$_($p1),1)) {
-      var a = Fay$$index(0,Fay$$_($p1));
-      return a;
-    }
-    var $tmp1 = Fay$$_($p1);
-    if ($tmp1 instanceof Fay$$Cons) {
-      var a = $tmp1.car;
-      var as = $tmp1.cdr;
-      return Fay$$_(Fay$$_(JQuery.chainAnim)(a))(Fay$$_(JQuery.chainAnims)(as));
-    }
-    if (Fay$$_($p1) === null) {
-      return Fay$$_(Prelude.error)(Fay$$_(Data.Text.unpack)("chainAnims: empty list"));
-    }
-    throw ["unhandled case in chainAnims",[$p1]];
-  });
-};
-JQuery.runAnimation = function($p1){
-  return new Fay$$$(function(){
-    var a = $p1;
-    return (function(){
-      var cb = new Fay$$$(function(){
-        return (function($tmp1){
-          if (Fay$$_($tmp1) instanceof Prelude._Just) {
-            var a2 = Fay$$_($tmp1).slot1;
-            return Fay$$_(Prelude.$_const)(Fay$$_(JQuery.runAnimation)(a2));
-          }
-          if (Fay$$_($tmp1) instanceof Prelude._Nothing) {
-            return Fay$$_(Prelude.$_const)(Fay$$_(Fay$$$_return)(Fay$$unit));
-          }
-          return (function(){ throw (["unhandled case",$tmp1]); })();
-        })(Fay$$_(JQuery._nextAnimation)(a));
-      });
-      return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(Fay$$_(JQuery.animate)(Fay$$_(JQuery._type)(a)))(Fay$$_(JQuery._speed)(a)))(cb))(Fay$$_(JQuery._element)(a))))(Fay$$_(Fay$$$_return)(Fay$$unit));
-    })();
-  });
-};
-JQuery.animate = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return new Fay$$$(function(){
-          return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p4)[(function () {  switch (Fay$$fayToJs(["user","AnimationType",[]],$p1)['instance']) {  case 'FadeIn': return 'fadeIn';  case 'FadeOut': return 'fadeOut';  case 'FadeToggle': return 'fadeToggle';  default: return Fay$$fayToJs(["user","AnimationType",[]],$p1)['instance']['toLowerCase']();  }  })()]((function () {  if (Fay$$fayToJs(["user","Speed",[]],$p2)['instance'] == 'Slow') {  return 'slow';  } else if (Fay$$fayToJs(["user","Speed",[]],$p2)['instance'] == 'Instantly') {  return null;  } else if (Fay$$fayToJs(["user","Speed",[]],$p2)['instance'] == 'Fast') {  return 'fast';  } else {  return Fay$$fayToJs(["user","Speed",[]],$p2)['slot1'];  }  })(), function() {  Fay$$fayToJs(["function",[["user","JQuery",[]],["action",[["unknown"]]]]],$p3)(jQuery(this));  })));
-        });
-      };
-    };
-  };
-};
-JQuery.hide = function($p1){
-  return new Fay$$$(function(){
-    var spd = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(JQuery.animate)(JQuery.Hide))(spd))(JQuery.emptyCallback);
-  });
-};
-JQuery.unhide = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['show']()));
-  });
-};
-JQuery.jshow = function($p1){
-  return new Fay$$$(function(){
-    var spd = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(JQuery.animate)(JQuery.Show))(spd))(JQuery.emptyCallback);
-  });
-};
-JQuery.toggle = function($p1){
-  return new Fay$$$(function(){
-    var spd = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(JQuery.animate)(JQuery.Toggle))(spd))(JQuery.emptyCallback);
-  });
-};
-JQuery.fadeIn = function($p1){
-  return new Fay$$$(function(){
-    var spd = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(JQuery.animate)(JQuery.FadeIn))(spd))(JQuery.emptyCallback);
-  });
-};
-JQuery.fadeOut = function($p1){
-  return new Fay$$$(function(){
-    var spd = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(JQuery.animate)(JQuery.FadeOut))(spd))(JQuery.emptyCallback);
-  });
-};
-JQuery.fadeToggle = function($p1){
-  return new Fay$$$(function(){
-    var spd = $p1;
-    return Fay$$_(Fay$$_(Fay$$_(JQuery.animate)(JQuery.FadeToggle))(spd))(JQuery.emptyCallback);
-  });
-};
-JQuery.resize = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['resize'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.scroll = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['scroll'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.load = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['load'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.documentReady = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],jQuery(Fay$$fayToJs(["user","Document",[]],$p2))['ready'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.unload = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],jQuery(Fay$$fayToJs(["user","Window",[]],$p2))['unload'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.click = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['click'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.dblclick = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['dblclick'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.focusin = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['focusin'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.focusout = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['focusout'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.hover = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['hover'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.mousedown = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['mousedown'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.mouseenter = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['mouseenter'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.mouseleave = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['mouseleave'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.mousemove = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['mousemove'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.mouseout = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['mouseout'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.mouseover = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['mouseover'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.mouseup = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['mouseup'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.toggleEvents = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['toggle']['apply'](Fay$$fayToJs(["user","JQuery",[]],$p2), Fay$$fayToJs(["list",[["function",[["user","Event",[]],["action",[["unknown"]]]]]]],$p1))));
-    });
-  };
-};
-JQuery.bind = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p3)['bind'](Fay$$fayToJs(["user","EventType",[]],$p1), Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p2))));
-      });
-    };
-  };
-};
-JQuery.bindPreventBubble = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p3)['bind'](Fay$$fayToJs(["user","EventType",[]],$p1),Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p2),false)));
-      });
-    };
-  };
-};
-JQuery.on = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p3)['on'](Fay$$fayToJs(["user","EventType",[]],$p1), Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p2))));
-      });
-    };
-  };
-};
-JQuery.onDelegate = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return new Fay$$$(function(){
-          return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p4)['on'](Fay$$fayToJs(["user","EventType",[]],$p1),Fay$$fayToJs(["user","Selector",[]],$p2),Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p3))));
-        });
-      };
-    };
-  };
-};
-JQuery.one = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p3)['one'](Fay$$fayToJs(["user","EventType",[]],$p1), Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p2))));
-      });
-    };
-  };
-};
-JQuery.trigger = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['trigger'](Fay$$fayToJs(["user","EventType",[]],$p1))));
-    });
-  };
-};
-JQuery.triggerHandler = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['triggerHandler'](Fay$$fayToJs(["user","EventType",[]],$p1))));
-    });
-  };
-};
-JQuery.delegateTarget = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Element",[]],jQuery(Fay$$fayToJs(["user","Event",[]],$p1)['delegateTarget'])));
-  });
-};
-JQuery.isDefaultPrevented = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_bool(Fay$$fayToJs(["user","Event",[]],$p1)['isDefaultPrevented']()));
-  });
-};
-JQuery.isImmediatePropagationStopped = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_bool(Fay$$fayToJs(["user","Event",[]],$p1)['isImmediatePropagationStopped']()));
-  });
-};
-JQuery.isPropagationStopped = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Element",[]],Fay$$fayToJs(["user","Event",[]],$p1)['isPropagationStopped']()));
-  });
-};
-JQuery.namespace = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Event",[]],$p1)['namespace']));
-  });
-};
-JQuery.pageX = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","Event",[]],$p1)['pageX']));
-  });
-};
-JQuery.pageY = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","Event",[]],$p1)['pageY']));
-  });
-};
-JQuery.preventDefault = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","Event",[]],$p1)['preventDefault']()));
-  });
-};
-JQuery.target = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Element",[]],Fay$$fayToJs(["user","Event",[]],$p1)['target']));
-  });
-};
-JQuery.timeStamp = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_double(Fay$$fayToJs(["user","Event",[]],$p1)['timeStamp']));
-  });
-};
-JQuery.eventType = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["user","Event",[]],$p1)['type']));
-  });
-};
-JQuery.which = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay_int(Fay$$fayToJs(["user","Event",[]],$p1)['which']));
-  });
-};
-JQuery.blur = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['blur'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.change = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['change'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.onFocus = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['focus'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.focus = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['focus']()));
-  });
-};
-JQuery.onselect = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['select'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.submit = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['submit'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.keydown = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['keydown'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.keypress = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['keypress'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.keyup = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p2)['keyup'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["unknown"]]]]],$p1))));
-    });
-  };
-};
-JQuery.after = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['after'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.afterWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['after'](Fay$$fayToJs(["function",[["double"],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.append = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['append'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.appendJQuery = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['append'](Fay$$fayToJs(["user","JQuery",[]],$p1))));
-    });
-  };
-};
-JQuery.appendWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['append'](Fay$$fayToJs(["function",[["double"],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.appendTo = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['appendTo'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.appendToJQuery = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['appendTo'](Fay$$fayToJs(["user","JQuery",[]],$p1))));
-    });
-  };
-};
-JQuery.before = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['before'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.beforeWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['before'](Fay$$fayToJs(["function",[["double"],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery._WithoutDataAndEvents = function WithoutDataAndEvents(){
-};
-JQuery._WithoutDataAndEvents.prototype.instance = "WithoutDataAndEvents";
-JQuery.WithoutDataAndEvents = new Fay$$$(function(){
-  return new JQuery._WithoutDataAndEvents();
-});
-JQuery._WithDataAndEvents = function WithDataAndEvents(){
-};
-JQuery._WithDataAndEvents.prototype.instance = "WithDataAndEvents";
-JQuery.WithDataAndEvents = new Fay$$$(function(){
-  return new JQuery._WithDataAndEvents();
-});
-JQuery._DeepWithDataAndEvents = function DeepWithDataAndEvents(){
-};
-JQuery._DeepWithDataAndEvents.prototype.instance = "DeepWithDataAndEvents";
-JQuery.DeepWithDataAndEvents = new Fay$$$(function(){
-  return new JQuery._DeepWithDataAndEvents();
-});
-JQuery.clone = function($p1){
-  return new Fay$$$(function(){
-    if (Fay$$_($p1) instanceof JQuery._WithoutDataAndEvents) {
-      return function($p1){
-        return new Fay$$$(function(){
-          return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['clone'](false)));
-        });
-      };
-    }
-    if (Fay$$_($p1) instanceof JQuery._WithDataAndEvents) {
-      return function($p1){
-        return new Fay$$$(function(){
-          return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['clone'](true, false)));
-        });
-      };
-    }
-    if (Fay$$_($p1) instanceof JQuery._DeepWithDataAndEvents) {
-      return function($p1){
-        return new Fay$$$(function(){
-          return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['clone'](true, true)));
-        });
-      };
-    }
-    throw ["unhandled case in clone",[$p1]];
-  });
-};
-JQuery.detach = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['detach']()));
-  });
-};
-JQuery.detachSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['detach'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.empty = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['empty']()));
-  });
-};
-JQuery.insertAfter = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['insertAfter'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.insertBefore = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['insertBefore'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.prepend = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['prepend'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.prependWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['prepend'](Fay$$fayToJs(["function",[["double"],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.prependTo = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['prependTo'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.remove = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['remove']()));
-  });
-};
-JQuery.removeSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['remove'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.replaceAll = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['replaceAll'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.replaceWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['replaceWith'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.replaceWithJQuery = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['replaceWith'](Fay$$fayToJs(["user","JQuery",[]],$p1))));
-    });
-  };
-};
-JQuery.replaceWithWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['replaceWith'](Fay$$fayToJs(["action",[["user","JQuery",[]]]],$p1))));
-    });
-  };
-};
-JQuery.unwrap = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['unwrap']()));
-  });
-};
-JQuery.wrap = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['wrap'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.wrapWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['wrap'](Fay$$fayToJs(["function",[["double"],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.wrapAllHtml = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['wrapAll'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.wrapAllSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['wrapAll'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.wrapAllElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['wrapAll'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.wrapInnerHtml = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['wrapInner'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.wrapInnerSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['wrapInner'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.wrapInnerElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['wrapInner'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.addSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['add'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.addElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['add'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.addHtml = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['add'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.add = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['add'](Fay$$fayToJs(["user","JQuery",[]],$p1))));
-    });
-  };
-};
-JQuery.addSelectorWithContext = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['add'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["user","JQuery",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.andSelf = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['andSelf']()));
-  });
-};
-JQuery.children = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['children']()));
-  });
-};
-JQuery.childrenMatching = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['children'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.closestSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['closest'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.closestWithContext = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['closest'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.closest = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['closest'](Fay$$fayToJs(["user","JQuery",[]],$p1))));
-    });
-  };
-};
-JQuery.closestElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['closest'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.contents = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['contents']()));
-  });
-};
-JQuery.each = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['each'](Fay$$fayToJs(["function",[["double"],["user","Element",[]],["action",[["bool"]]]]],$p1))));
-    });
-  };
-};
-JQuery.end = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['end']()));
-  });
-};
-JQuery.eq = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['eq'](Fay$$fayToJs_double($p1))));
-    });
-  };
-};
-JQuery.filter = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['filter'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.filterWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['filter'](Fay$$fayToJs(["function",[["double"],["action",[["bool"]]]]],$p1))));
-    });
-  };
-};
-JQuery.filterElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['filter'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.filterJQuery = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['filter'](Fay$$fayToJs(["user","JQuery",[]],$p1))));
-    });
-  };
-};
-JQuery.findSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['find'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.findJQuery = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['find'](Fay$$fayToJs(["user","JQuery",[]],$p1))));
-    });
-  };
-};
-JQuery.findElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['find'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.first = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['first']()));
-  });
-};
-JQuery.has = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['has'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.hasElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['has'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.is = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay_bool(Fay$$fayToJs(["user","JQuery",[]],$p2)['is'](Fay$$_(Fay$$fayToJs(["unknown"],$p1)))));
-    });
-  };
-};
-JQuery.isWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['is'](Fay$$fayToJs(["function",[["int"],["bool"]]],$p1))));
-    });
-  };
-};
-JQuery.last = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['last']()));
-  });
-};
-JQuery.jQueryMap = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['map'](Fay$$fayToJs(["function",[["double"],["user","Element",[]],["action",[["user","JQuery",[]]]]]],$p1))));
-    });
-  };
-};
-JQuery.next = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['next']()));
-  });
-};
-JQuery.nextSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['next'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.nextAll = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['nextAll']()));
-  });
-};
-JQuery.nextAllSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['nextAll'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.nextUntil = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['nextUntil'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.nextUntilFiltered = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['nextUntil'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.nextUntilElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['nextUntil'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.nextUntilElementFiltered = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['nextUntil'](Fay$$fayToJs(["user","Element",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.not = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['not'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.notElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['not'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.notElements = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['not'](Fay$$fayToJs(["list",[["user","Element",[]]]],$p1))));
-    });
-  };
-};
-JQuery.notWith = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['not'](Fay$$fayToJs(["function",[["double"],["bool"]]],$p1))));
-    });
-  };
-};
-JQuery.notJQuery = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['not'](Fay$$fayToJs(["user","JQuery",[]],$p1))));
-    });
-  };
-};
-JQuery.offsetParent = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['offsetParent']()));
-  });
-};
-JQuery.parent = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['parent']()));
-  });
-};
-JQuery.parentSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['parent'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.parents = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['parents']()));
-  });
-};
-JQuery.parentsSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['parents'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.parentsUntil = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['parentsUntil'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.parentsUntilFiltered = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['parentsUntil'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.parentsUntilElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['parentsUntil'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.parentsUntilElementFiltered = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['parentsUntil'](Fay$$fayToJs(["user","Element",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.prev = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['prev']()));
-  });
-};
-JQuery.prevSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['prev'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.prevAll = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['prevAll']()));
-  });
-};
-JQuery.prevAllSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['prevAll'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.prevUntil = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['prevUntil'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.prevUntilFiltered = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['prevUntil'](Fay$$fayToJs(["user","Text",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.prevUntilElement = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['prevUntil'](Fay$$fayToJs(["user","Element",[]],$p1))));
-    });
-  };
-};
-JQuery.prevUntilElementFiltered = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['prevUntil'](Fay$$fayToJs(["user","Element",[]],$p1), Fay$$fayToJs(["user","Text",[]],$p2))));
-      });
-    };
-  };
-};
-JQuery.siblings = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['siblings']()));
-  });
-};
-JQuery.siblingsSelector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['siblings'](Fay$$fayToJs(["user","Text",[]],$p1))));
-    });
-  };
-};
-JQuery.slice = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['slice'](Fay$$fayToJs_double($p1))));
-    });
-  };
-};
-JQuery.sliceFromTo = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p3)['slice'](Fay$$fayToJs_double($p1), Fay$$fayToJs_double($p2))));
-      });
-    };
-  };
-};
-JQuery._KeyUp = function KeyUp(){
-};
-JQuery._KeyUp.prototype.instance = "KeyUp";
-JQuery.KeyUp = new Fay$$$(function(){
-  return new JQuery._KeyUp();
-});
-JQuery._KeyDown = function KeyDown(){
-};
-JQuery._KeyDown.prototype.instance = "KeyDown";
-JQuery.KeyDown = new Fay$$$(function(){
-  return new JQuery._KeyDown();
-});
-JQuery._KeyLeft = function KeyLeft(){
-};
-JQuery._KeyLeft.prototype.instance = "KeyLeft";
-JQuery.KeyLeft = new Fay$$$(function(){
-  return new JQuery._KeyLeft();
-});
-JQuery._KeyRight = function KeyRight(){
-};
-JQuery._KeyRight.prototype.instance = "KeyRight";
-JQuery.KeyRight = new Fay$$$(function(){
-  return new JQuery._KeyRight();
-});
-JQuery._KeyRet = function KeyRet(){
-};
-JQuery._KeyRet.prototype.instance = "KeyRet";
-JQuery.KeyRet = new Fay$$$(function(){
-  return new JQuery._KeyRet();
-});
-JQuery._SomeKey = function SomeKey(slot1){
-  this.slot1 = slot1;
-};
-JQuery._SomeKey.prototype.instance = "SomeKey";
-JQuery.SomeKey = function(slot1){
-  return new Fay$$$(function(){
-    return new JQuery._SomeKey(slot1);
-  });
-};
-JQuery.onKeycode = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var el = $p2;
-      var callback = $p1;
-      return Fay$$_(Fay$$_(JQuery._onKeycode)(function($p1){
-        var code = $p1;
-        return Fay$$_(callback)((function($tmp1){
-          if (Fay$$_($tmp1) === 38) {
-            return JQuery.KeyUp;
-          }
-          if (Fay$$_($tmp1) === 40) {
-            return JQuery.KeyDown;
-          }
-          if (Fay$$_($tmp1) === 37) {
-            return JQuery.KeyLeft;
-          }
-          if (Fay$$_($tmp1) === 39) {
-            return JQuery.KeyRight;
-          }
-          if (Fay$$_($tmp1) === 13) {
-            return JQuery.KeyRet;
-          }
-          return Fay$$_(JQuery.SomeKey)(code);
-        })(code));
-      }))(el);
-    });
-  };
-};
-JQuery._onKeycode = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['keycode'](Fay$$fayToJs(["function",[["double"],["action",[["bool"]]]]],$p1))));
-    });
-  };
-};
-JQuery.unKeycode = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['unkeycode']()));
-  });
-};
-JQuery.onClick = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['click'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["bool"]]]]],$p1))));
-    });
-  };
-};
-JQuery.onChange = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['change'](Fay$$fayToJs(["action",[["unknown"]]],$p1))));
-    });
-  };
-};
-JQuery.onSubmit = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['submit'](Fay$$fayToJs(["action",[["bool"]]],$p1))));
-    });
-  };
-};
-JQuery.eventX = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay_double(Fay$$fayToJs(["user","Event",[]],$p1)['pageX'] - Fay$$fayToJs(["user","JQuery",[]],$p2)['get'](0)['offsetLeft']);
-    });
-  };
-};
-JQuery.eventY = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay_double(Fay$$fayToJs(["user","Event",[]],$p1)['pageY'] - Fay$$fayToJs(["user","JQuery",[]],$p2)['get'](0)['offsetTop']);
-    });
-  };
-};
-JQuery.onDblClick = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['dblclick'](Fay$$fayToJs(["function",[["user","Event",[]],["action",[["bool"]]]]],$p1))));
-    });
-  };
-};
-JQuery.setDraggable = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p1)['draggable']()));
-  });
-};
-JQuery.validate = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","JQuery",[]],$p1)['validate']({ "submitHandler": Fay$$fayToJs(["action",[["unknown"]]],$p2) })));
-    });
-  };
-};
-JQuery.onLivechange = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['livechange'](50,Fay$$fayToJs(["action",[["unknown"]]],$p1))));
-    });
-  };
-};
-Fay$$objConcat(Fay$$fayToJsHash,{"AjaxSettings": function(type,argTypes,_obj){
-  var obj_ = {"instance": "AjaxSettings"};
-  var obj_accepts = Fay$$fayToJs(["defined",[["user","Text",[]]]],_obj.accepts);
-  if (undefined !== obj_accepts) {
-    obj_['accepts'] = obj_accepts;
-  }
-  var obj_async = Fay$$fayToJs(["defined",[["bool"]]],_obj.async);
-  if (undefined !== obj_async) {
-    obj_['async'] = obj_async;
-  }
-  var obj_beforeSend = Fay$$fayToJs(["defined",[["function",[["user","JQXHR",[]],["user","AjaxSettings",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],argTypes && (argTypes)[1] ? (argTypes)[1] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]],["action",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]]]]]],_obj.beforeSend);
-  if (undefined !== obj_beforeSend) {
-    obj_['beforeSend'] = obj_beforeSend;
-  }
-  var obj_cache = Fay$$fayToJs(["defined",[["bool"]]],_obj.cache);
-  if (undefined !== obj_cache) {
-    obj_['cache'] = obj_cache;
-  }
-  var obj_complete = Fay$$fayToJs(["defined",[["function",[["user","JQXHR",[]],["user","Text",[]],["action",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]]]]]],_obj.complete);
-  if (undefined !== obj_complete) {
-    obj_['complete'] = obj_complete;
-  }
-  var obj_contentType = Fay$$fayToJs(["defined",[["user","Text",[]]]],_obj.contentType);
-  if (undefined !== obj_contentType) {
-    obj_['contentType'] = obj_contentType;
-  }
-  var obj_crossDomain = Fay$$fayToJs(["defined",[["bool"]]],_obj.crossDomain);
-  if (undefined !== obj_crossDomain) {
-    obj_['crossDomain'] = obj_crossDomain;
-  }
-  var obj_data$39$ = Fay$$fayToJs(["defined",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]],_obj.data$39$);
-  if (undefined !== obj_data$39$) {
-    obj_['data$39$'] = obj_data$39$;
-  }
-  var obj_dataType = Fay$$fayToJs(["defined",[["user","Text",[]]]],_obj.dataType);
-  if (undefined !== obj_dataType) {
-    obj_['dataType'] = obj_dataType;
-  }
-  var obj_error$39$ = Fay$$fayToJs(["defined",[["function",[["user","JQXHR",[]],["user","Maybe",[["user","Text",[]]]],["user","Maybe",[["user","Text",[]]]],["action",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]]]]]],_obj.error$39$);
-  if (undefined !== obj_error$39$) {
-    obj_['error$39$'] = obj_error$39$;
-  }
-  var obj_global = Fay$$fayToJs(["defined",[["bool"]]],_obj.$_global);
-  if (undefined !== obj_global) {
-    obj_['$_global'] = obj_global;
-  }
-  var obj_ifModified = Fay$$fayToJs(["defined",[["bool"]]],_obj.ifModified);
-  if (undefined !== obj_ifModified) {
-    obj_['ifModified'] = obj_ifModified;
-  }
-  var obj_isLocal = Fay$$fayToJs(["defined",[["bool"]]],_obj.isLocal);
-  if (undefined !== obj_isLocal) {
-    obj_['isLocal'] = obj_isLocal;
-  }
-  var obj_mimeType = Fay$$fayToJs(["defined",[["user","Text",[]]]],_obj.mimeType);
-  if (undefined !== obj_mimeType) {
-    obj_['mimeType'] = obj_mimeType;
-  }
-  var obj_password = Fay$$fayToJs(["defined",[["user","Text",[]]]],_obj.password);
-  if (undefined !== obj_password) {
-    obj_['password'] = obj_password;
-  }
-  var obj_processData = Fay$$fayToJs(["defined",[["bool"]]],_obj.processData);
-  if (undefined !== obj_processData) {
-    obj_['processData'] = obj_processData;
-  }
-  var obj_success = Fay$$fayToJs(["defined",[["function",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],["action",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]]]]]],_obj.success);
-  if (undefined !== obj_success) {
-    obj_['success'] = obj_success;
-  }
-  var obj_timeout = Fay$$fayToJs(["defined",[["double"]]],_obj.timeout);
-  if (undefined !== obj_timeout) {
-    obj_['timeout'] = obj_timeout;
-  }
-  var obj_type$39$ = Fay$$fayToJs(["defined",[["user","Text",[]]]],_obj.type$39$);
-  if (undefined !== obj_type$39$) {
-    obj_['type$39$'] = obj_type$39$;
-  }
-  var obj_url = Fay$$fayToJs(["defined",[["user","Text",[]]]],_obj.url);
-  if (undefined !== obj_url) {
-    obj_['url'] = obj_url;
-  }
-  var obj_username = Fay$$fayToJs(["defined",[["user","Text",[]]]],_obj.username);
-  if (undefined !== obj_username) {
-    obj_['username'] = obj_username;
-  }
-  return obj_;
-},"Show": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Show"};
-  return obj_;
-},"Hide": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Hide"};
-  return obj_;
-},"Toggle": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Toggle"};
-  return obj_;
-},"FadeIn": function(type,argTypes,_obj){
-  var obj_ = {"instance": "FadeIn"};
-  return obj_;
-},"FadeOut": function(type,argTypes,_obj){
-  var obj_ = {"instance": "FadeOut"};
-  return obj_;
-},"FadeToggle": function(type,argTypes,_obj){
-  var obj_ = {"instance": "FadeToggle"};
-  return obj_;
-},"Instantly": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Instantly"};
-  return obj_;
-},"Slow": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Slow"};
-  return obj_;
-},"Fast": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Fast"};
-  return obj_;
-},"Speed": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Speed"};
-  var obj_slot1 = Fay$$fayToJs_double(_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-},"Animation": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Animation"};
-  var obj__type = Fay$$fayToJs(["user","AnimationType",[]],_obj._type);
-  if (undefined !== obj__type) {
-    obj_['_type'] = obj__type;
-  }
-  var obj__speed = Fay$$fayToJs(["user","Speed",[]],_obj._speed);
-  if (undefined !== obj__speed) {
-    obj_['_speed'] = obj__speed;
-  }
-  var obj__nextAnimation = Fay$$fayToJs(["user","Maybe",[["user","Animation",[]]]],_obj._nextAnimation);
-  if (undefined !== obj__nextAnimation) {
-    obj_['_nextAnimation'] = obj__nextAnimation;
-  }
-  var obj__element = Fay$$fayToJs(["user","JQuery",[]],_obj._element);
-  if (undefined !== obj__element) {
-    obj_['_element'] = obj__element;
-  }
-  return obj_;
-},"WithoutDataAndEvents": function(type,argTypes,_obj){
-  var obj_ = {"instance": "WithoutDataAndEvents"};
-  return obj_;
-},"WithDataAndEvents": function(type,argTypes,_obj){
-  var obj_ = {"instance": "WithDataAndEvents"};
-  return obj_;
-},"DeepWithDataAndEvents": function(type,argTypes,_obj){
-  var obj_ = {"instance": "DeepWithDataAndEvents"};
-  return obj_;
-},"KeyUp": function(type,argTypes,_obj){
-  var obj_ = {"instance": "KeyUp"};
-  return obj_;
-},"KeyDown": function(type,argTypes,_obj){
-  var obj_ = {"instance": "KeyDown"};
-  return obj_;
-},"KeyLeft": function(type,argTypes,_obj){
-  var obj_ = {"instance": "KeyLeft"};
-  return obj_;
-},"KeyRight": function(type,argTypes,_obj){
-  var obj_ = {"instance": "KeyRight"};
-  return obj_;
-},"KeyRet": function(type,argTypes,_obj){
-  var obj_ = {"instance": "KeyRet"};
-  return obj_;
-},"SomeKey": function(type,argTypes,_obj){
-  var obj_ = {"instance": "SomeKey"};
-  var obj_slot1 = Fay$$fayToJs_double(_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-}});
-Fay$$objConcat(Fay$$jsToFayHash,{"AjaxSettings": function(type,argTypes,obj){
-  return new JQuery._AjaxSettings(Fay$$jsToFay(["defined",[["user","Text",[]]]],obj["accepts"]),Fay$$jsToFay(["defined",[["bool"]]],obj["async"]),Fay$$jsToFay(["defined",[["function",[["user","JQXHR",[]],["user","AjaxSettings",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],argTypes && (argTypes)[1] ? (argTypes)[1] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]],["action",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]]]]]],obj["beforeSend"]),Fay$$jsToFay(["defined",[["bool"]]],obj["cache"]),Fay$$jsToFay(["defined",[["function",[["user","JQXHR",[]],["user","Text",[]],["action",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]]]]]],obj["complete"]),Fay$$jsToFay(["defined",[["user","Text",[]]]],obj["contentType"]),Fay$$jsToFay(["defined",[["bool"]]],obj["crossDomain"]),Fay$$jsToFay(["defined",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]],obj["data'"]),Fay$$jsToFay(["defined",[["user","Text",[]]]],obj["dataType"]),Fay$$jsToFay(["defined",[["function",[["user","JQXHR",[]],["user","Maybe",[["user","Text",[]]]],["user","Maybe",[["user","Text",[]]]],["action",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]]]]]],obj["error'"]),Fay$$jsToFay(["defined",[["bool"]]],obj["global"]),Fay$$jsToFay(["defined",[["bool"]]],obj["ifModified"]),Fay$$jsToFay(["defined",[["bool"]]],obj["isLocal"]),Fay$$jsToFay(["defined",[["user","Text",[]]]],obj["mimeType"]),Fay$$jsToFay(["defined",[["user","Text",[]]]],obj["password"]),Fay$$jsToFay(["defined",[["bool"]]],obj["processData"]),Fay$$jsToFay(["defined",[["function",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"],["action",[argTypes && (argTypes)[0] ? (argTypes)[0] : (type)[0] === "automatic" ? ["automatic"] : ["unknown"]]]]]]],obj["success"]),Fay$$jsToFay(["defined",[["double"]]],obj["timeout"]),Fay$$jsToFay(["defined",[["user","Text",[]]]],obj["type'"]),Fay$$jsToFay(["defined",[["user","Text",[]]]],obj["url"]),Fay$$jsToFay(["defined",[["user","Text",[]]]],obj["username"]));
-},"Show": function(type,argTypes,obj){
-  return new JQuery._Show();
-},"Hide": function(type,argTypes,obj){
-  return new JQuery._Hide();
-},"Toggle": function(type,argTypes,obj){
-  return new JQuery._Toggle();
-},"FadeIn": function(type,argTypes,obj){
-  return new JQuery._FadeIn();
-},"FadeOut": function(type,argTypes,obj){
-  return new JQuery._FadeOut();
-},"FadeToggle": function(type,argTypes,obj){
-  return new JQuery._FadeToggle();
-},"Instantly": function(type,argTypes,obj){
-  return new JQuery._Instantly();
-},"Slow": function(type,argTypes,obj){
-  return new JQuery._Slow();
-},"Fast": function(type,argTypes,obj){
-  return new JQuery._Fast();
-},"Speed": function(type,argTypes,obj){
-  return new JQuery._Speed(Fay$$jsToFay_double(obj["slot1"]));
-},"Animation": function(type,argTypes,obj){
-  return new JQuery._Animation(Fay$$jsToFay(["user","AnimationType",[]],obj["_type"]),Fay$$jsToFay(["user","Speed",[]],obj["_speed"]),Fay$$jsToFay(["user","Maybe",[["user","Animation",[]]]],obj["_nextAnimation"]),Fay$$jsToFay(["user","JQuery",[]],obj["_element"]));
-},"WithoutDataAndEvents": function(type,argTypes,obj){
-  return new JQuery._WithoutDataAndEvents();
-},"WithDataAndEvents": function(type,argTypes,obj){
-  return new JQuery._WithDataAndEvents();
-},"DeepWithDataAndEvents": function(type,argTypes,obj){
-  return new JQuery._DeepWithDataAndEvents();
-},"KeyUp": function(type,argTypes,obj){
-  return new JQuery._KeyUp();
-},"KeyDown": function(type,argTypes,obj){
-  return new JQuery._KeyDown();
-},"KeyLeft": function(type,argTypes,obj){
-  return new JQuery._KeyLeft();
-},"KeyRight": function(type,argTypes,obj){
-  return new JQuery._KeyRight();
-},"KeyRet": function(type,argTypes,obj){
-  return new JQuery._KeyRet();
-},"SomeKey": function(type,argTypes,obj){
-  return new JQuery._SomeKey(Fay$$jsToFay_double(obj["slot1"]));
-}});
-var OpenLayers = {};
-OpenLayers.Types = {};
-OpenLayers.Types.wgs84proj = new Fay$$$(function(){
-  return Fay$$_(OpenLayers.Types.Projection)(Fay$$list("EPSG:4326"));
-});
-OpenLayers.Types.mercatorproj = new Fay$$$(function(){
-  return Fay$$_(OpenLayers.Types.Projection)(Fay$$list("EPSG:3857"));
-});
-OpenLayers.Types._Projection = function Projection(slot1){
-  this.slot1 = slot1;
-};
-OpenLayers.Types._Projection.prototype.instance = "Projection";
-OpenLayers.Types.Projection = function(slot1){
-  return new Fay$$$(function(){
-    return new OpenLayers.Types._Projection(slot1);
-  });
-};
-OpenLayers.Types._Coordinate = function Coordinate(x,y,from){
-  this.x = x;
-  this.y = y;
-  this.from = from;
-};
-OpenLayers.Types._Coordinate.prototype.instance = "Coordinate";
-OpenLayers.Types.Coordinate = function(x){
-  return function(y){
-    return function(from){
-      return new Fay$$$(function(){
-        return new OpenLayers.Types._Coordinate(x,y,from);
-      });
-    };
-  };
-};
-OpenLayers.Types.x = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).x;
-  });
-};
-OpenLayers.Types.y = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).y;
-  });
-};
-OpenLayers.Types.from = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).from;
-  });
-};
-OpenLayers.Types._Opacity = function Opacity(slot1){
-  this.slot1 = slot1;
-};
-OpenLayers.Types._Opacity.prototype.instance = "Opacity";
-OpenLayers.Types.Opacity = function(slot1){
-  return new Fay$$$(function(){
-    return new OpenLayers.Types._Opacity(slot1);
-  });
-};
-OpenLayers.Types._GeoLine = function GeoLine(pts,id,lstyle){
-  this.pts = pts;
-  this.id = id;
-  this.lstyle = lstyle;
-};
-OpenLayers.Types._GeoLine.prototype.instance = "GeoLine";
-OpenLayers.Types.GeoLine = function(pts){
-  return function(id){
-    return function(lstyle){
-      return new Fay$$$(function(){
-        return new OpenLayers.Types._GeoLine(pts,id,lstyle);
-      });
-    };
-  };
-};
-OpenLayers.Types.pts = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).pts;
-  });
-};
-OpenLayers.Types.id = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).id;
-  });
-};
-OpenLayers.Types.lstyle = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).lstyle;
-  });
-};
-OpenLayers.Types._GeoPoint = function GeoPoint(pt,id,pstyle){
-  this.pt = pt;
-  this.id = id;
-  this.pstyle = pstyle;
-};
-OpenLayers.Types._GeoPoint.prototype.instance = "GeoPoint";
-OpenLayers.Types.GeoPoint = function(pt){
-  return function(id){
-    return function(pstyle){
-      return new Fay$$$(function(){
-        return new OpenLayers.Types._GeoPoint(pt,id,pstyle);
-      });
-    };
-  };
-};
-OpenLayers.Types.pt = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).pt;
-  });
-};
-OpenLayers.Types.id = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).id;
-  });
-};
-OpenLayers.Types.pstyle = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).pstyle;
-  });
-};
-OpenLayers.Types._GeoLineStyle = function GeoLineStyle(color,width){
-  this.color = color;
-  this.width = width;
-};
-OpenLayers.Types._GeoLineStyle.prototype.instance = "GeoLineStyle";
-OpenLayers.Types.GeoLineStyle = function(color){
-  return function(width){
-    return new Fay$$$(function(){
-      return new OpenLayers.Types._GeoLineStyle(color,width);
-    });
-  };
-};
-OpenLayers.Types.color = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).color;
-  });
-};
-OpenLayers.Types.width = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).width;
-  });
-};
-OpenLayers.Types._GeoPointStyle = function GeoPointStyle(radius,fillcolor,outcolor,outwidth){
-  this.radius = radius;
-  this.fillcolor = fillcolor;
-  this.outcolor = outcolor;
-  this.outwidth = outwidth;
-};
-OpenLayers.Types._GeoPointStyle.prototype.instance = "GeoPointStyle";
-OpenLayers.Types.GeoPointStyle = function(radius){
-  return function(fillcolor){
-    return function(outcolor){
-      return function(outwidth){
-        return new Fay$$$(function(){
-          return new OpenLayers.Types._GeoPointStyle(radius,fillcolor,outcolor,outwidth);
-        });
-      };
-    };
-  };
-};
-OpenLayers.Types.radius = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).radius;
-  });
-};
-OpenLayers.Types.fillcolor = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).fillcolor;
-  });
-};
-OpenLayers.Types.outcolor = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).outcolor;
-  });
-};
-OpenLayers.Types.outwidth = function(x){
-  return new Fay$$$(function(){
-    return Fay$$_(x).outwidth;
-  });
-};
-OpenLayers.Types._Sat = function Sat(){
-};
-OpenLayers.Types._Sat.prototype.instance = "Sat";
-OpenLayers.Types.Sat = new Fay$$$(function(){
-  return new OpenLayers.Types._Sat();
-});
-OpenLayers.Types._Hyb = function Hyb(){
-};
-OpenLayers.Types._Hyb.prototype.instance = "Hyb";
-OpenLayers.Types.Hyb = new Fay$$$(function(){
-  return new OpenLayers.Types._Hyb();
-});
-OpenLayers.Types._Osm = function Osm(){
-};
-OpenLayers.Types._Osm.prototype.instance = "Osm";
-OpenLayers.Types.Osm = new Fay$$$(function(){
-  return new OpenLayers.Types._Osm();
-});
-OpenLayers.Types._OSM = function OSM(){
-};
-OpenLayers.Types._OSM.prototype.instance = "OSM";
-OpenLayers.Types.OSM = new Fay$$$(function(){
-  return new OpenLayers.Types._OSM();
-});
-OpenLayers.Types.mapQuests = new Fay$$$(function(){
-  return Fay$$list([OpenLayers.Types.Osm,OpenLayers.Types.Sat,OpenLayers.Types.Hyb]);
-});
-OpenLayers.Types.showMapSource = function($p1){
-  return new Fay$$$(function(){
-    var ms = $p1;
-    if (Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(ms))(OpenLayers.Types.Sat))) {
-      return Fay$$list("sat");
-    } else {if (Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(ms))(OpenLayers.Types.Hyb))) {
-        return Fay$$list("hyb");
-      } else {if (Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(ms))(OpenLayers.Types.Osm))) {
-          return Fay$$list("osm");
-        } else {if (Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(ms))(OpenLayers.Types.OSM))) {
-            return Fay$$list("OSM");
-          } else {if (Fay$$_(Prelude.otherwise)) {
-              return Fay$$list("showMapSource not defined, check Layer");
-            }
-          }
-        }
-      }
-    }
-  });
-};
-Fay$$objConcat(Fay$$fayToJsHash,{"Projection": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Projection"};
-  var obj_slot1 = Fay$$fayToJs_string(_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-},"Coordinate": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Coordinate"};
-  var obj_x = Fay$$fayToJs_double(_obj.x);
-  if (undefined !== obj_x) {
-    obj_['x'] = obj_x;
-  }
-  var obj_y = Fay$$fayToJs_double(_obj.y);
-  if (undefined !== obj_y) {
-    obj_['y'] = obj_y;
-  }
-  var obj_from = Fay$$fayToJs(["user","Projectionlike",[]],_obj.from);
-  if (undefined !== obj_from) {
-    obj_['from'] = obj_from;
-  }
-  return obj_;
-},"Opacity": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Opacity"};
-  var obj_slot1 = Fay$$fayToJs(["user","Integer",[]],_obj.slot1);
-  if (undefined !== obj_slot1) {
-    obj_['slot1'] = obj_slot1;
-  }
-  return obj_;
-},"GeoLine": function(type,argTypes,_obj){
-  var obj_ = {"instance": "GeoLine"};
-  var obj_pts = Fay$$fayToJs(["list",[["user","Coordinate",[]]]],_obj.pts);
-  if (undefined !== obj_pts) {
-    obj_['pts'] = obj_pts;
-  }
-  var obj_id = Fay$$fayToJs(["user","GeoId",[]],_obj.id);
-  if (undefined !== obj_id) {
-    obj_['id'] = obj_id;
-  }
-  var obj_lstyle = Fay$$fayToJs(["user","GeoLineStyle",[]],_obj.lstyle);
-  if (undefined !== obj_lstyle) {
-    obj_['lstyle'] = obj_lstyle;
-  }
-  return obj_;
-},"GeoPoint": function(type,argTypes,_obj){
-  var obj_ = {"instance": "GeoPoint"};
-  var obj_pt = Fay$$fayToJs(["user","Coordinate",[]],_obj.pt);
-  if (undefined !== obj_pt) {
-    obj_['pt'] = obj_pt;
-  }
-  var obj_id = Fay$$fayToJs(["user","GeoId",[]],_obj.id);
-  if (undefined !== obj_id) {
-    obj_['id'] = obj_id;
-  }
-  var obj_pstyle = Fay$$fayToJs(["user","GeoPointStyle",[]],_obj.pstyle);
-  if (undefined !== obj_pstyle) {
-    obj_['pstyle'] = obj_pstyle;
-  }
-  return obj_;
-},"GeoLineStyle": function(type,argTypes,_obj){
-  var obj_ = {"instance": "GeoLineStyle"};
-  var obj_color = Fay$$fayToJs_string(_obj.color);
-  if (undefined !== obj_color) {
-    obj_['color'] = obj_color;
-  }
-  var obj_width = Fay$$fayToJs(["user","Integer",[]],_obj.width);
-  if (undefined !== obj_width) {
-    obj_['width'] = obj_width;
-  }
-  return obj_;
-},"GeoPointStyle": function(type,argTypes,_obj){
-  var obj_ = {"instance": "GeoPointStyle"};
-  var obj_radius = Fay$$fayToJs(["user","Integer",[]],_obj.radius);
-  if (undefined !== obj_radius) {
-    obj_['radius'] = obj_radius;
-  }
-  var obj_fillcolor = Fay$$fayToJs_string(_obj.fillcolor);
-  if (undefined !== obj_fillcolor) {
-    obj_['fillcolor'] = obj_fillcolor;
-  }
-  var obj_outcolor = Fay$$fayToJs_string(_obj.outcolor);
-  if (undefined !== obj_outcolor) {
-    obj_['outcolor'] = obj_outcolor;
-  }
-  var obj_outwidth = Fay$$fayToJs(["user","Integer",[]],_obj.outwidth);
-  if (undefined !== obj_outwidth) {
-    obj_['outwidth'] = obj_outwidth;
-  }
-  return obj_;
-},"Sat": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Sat"};
-  return obj_;
-},"Hyb": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Hyb"};
-  return obj_;
-},"Osm": function(type,argTypes,_obj){
-  var obj_ = {"instance": "Osm"};
-  return obj_;
-},"OSM": function(type,argTypes,_obj){
-  var obj_ = {"instance": "OSM"};
-  return obj_;
-}});
-Fay$$objConcat(Fay$$jsToFayHash,{"Projection": function(type,argTypes,obj){
-  return new OpenLayers.Types._Projection(Fay$$jsToFay_string(obj["slot1"]));
-},"Coordinate": function(type,argTypes,obj){
-  return new OpenLayers.Types._Coordinate(Fay$$jsToFay_double(obj["x"]),Fay$$jsToFay_double(obj["y"]),Fay$$jsToFay(["user","Projectionlike",[]],obj["from"]));
-},"Opacity": function(type,argTypes,obj){
-  return new OpenLayers.Types._Opacity(Fay$$jsToFay(["user","Integer",[]],obj["slot1"]));
-},"GeoLine": function(type,argTypes,obj){
-  return new OpenLayers.Types._GeoLine(Fay$$jsToFay(["list",[["user","Coordinate",[]]]],obj["pts"]),Fay$$jsToFay(["user","GeoId",[]],obj["id"]),Fay$$jsToFay(["user","GeoLineStyle",[]],obj["lstyle"]));
-},"GeoPoint": function(type,argTypes,obj){
-  return new OpenLayers.Types._GeoPoint(Fay$$jsToFay(["user","Coordinate",[]],obj["pt"]),Fay$$jsToFay(["user","GeoId",[]],obj["id"]),Fay$$jsToFay(["user","GeoPointStyle",[]],obj["pstyle"]));
-},"GeoLineStyle": function(type,argTypes,obj){
-  return new OpenLayers.Types._GeoLineStyle(Fay$$jsToFay_string(obj["color"]),Fay$$jsToFay(["user","Integer",[]],obj["width"]));
-},"GeoPointStyle": function(type,argTypes,obj){
-  return new OpenLayers.Types._GeoPointStyle(Fay$$jsToFay(["user","Integer",[]],obj["radius"]),Fay$$jsToFay_string(obj["fillcolor"]),Fay$$jsToFay_string(obj["outcolor"]),Fay$$jsToFay(["user","Integer",[]],obj["outwidth"]));
-},"Sat": function(type,argTypes,obj){
-  return new OpenLayers.Types._Sat();
-},"Hyb": function(type,argTypes,obj){
-  return new OpenLayers.Types._Hyb();
-},"Osm": function(type,argTypes,obj){
-  return new OpenLayers.Types._Osm();
-},"OSM": function(type,argTypes,obj){
-  return new OpenLayers.Types._OSM();
-}});
-OpenLayers.HtmlInternal = {};
-OpenLayers.HtmlInternal.buttonElement = new Fay$$$(function(){
-  return Fay$$list("\u003cinput\u003e");
-});
-OpenLayers.HtmlInternal.divElement = new Fay$$$(function(){
-  return Fay$$list("\u003cdiv\u003e");
-});
-OpenLayers.HtmlInternal.formElement = new Fay$$$(function(){
-  return Fay$$list("\u003cform\u003e");
-});
-OpenLayers.HtmlInternal.inputTextElement = new Fay$$$(function(){
-  return Fay$$list("\u003cinput type=text\u003e");
-});
-OpenLayers.HtmlInternal.inputCheckboxElement = new Fay$$$(function(){
-  return Fay$$list("\u003cinput type=checkbox\u003e");
-});
-OpenLayers.HtmlInternal.aElement = new Fay$$$(function(){
-  return Fay$$list("\u003ca\u003e");
-});
-OpenLayers.HtmlInternal.pElement = new Fay$$$(function(){
-  return Fay$$list("\u003cp\u003e");
-});
-OpenLayers.Html = {};
-OpenLayers.Html.addTextToHtml = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var id = $p3;
-        var element = $p2;
-        var content = $p1;
-        return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(id)))(function($p1){
-          var c = $p1;
-          return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(element)))(function($p1){
-            var d = $p1;
-            return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Html.setHtml$39$)(content))(d)))(Fay$$_(Fay$$_(JQuery.appendTo)(c))(d));
-          });
-        }));
-      });
-    };
-  };
-};
-OpenLayers.Html.addButton = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var method = $p3;
-        var id = $p2;
-        var text = $p1;
-        return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(id)))(function($p1){
-          var c = $p1;
-          return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(OpenLayers.HtmlInternal.buttonElement)))(function($p1){
-            var d = $p1;
-            return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.setAttr$39$)(Fay$$list("value")))(text))(d)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.setAttr$39$)(Fay$$list("type")))(Fay$$list("submit")))(d)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Html.onClick$39$)(method))(d)))(Fay$$_(Fay$$_(JQuery.appendTo)(c))(d))));
-          });
-        }));
-      });
-    };
-  };
-};
-OpenLayers.Html.addCheckbox = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var $_label = $p3;
-        var parentId = $p2;
-        var id = $p1;
-        return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(parentId)))(function($p1){
-          var parent = $p1;
-          return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(OpenLayers.HtmlInternal.divElement)))(function($p1){
-            var div = $p1;
-            return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Html.setHtml$39$)($_label))(div)))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(OpenLayers.HtmlInternal.inputCheckboxElement)))(function($p1){
-              var checkbox = $p1;
-              return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.setAttr$39$)(Fay$$list("id")))(id))(checkbox)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(JQuery.appendTo)(div))(checkbox)))(Fay$$_(Fay$$_(JQuery.appendTo)(parent))(div)));
-            }));
-          });
-        }));
-      });
-    };
-  };
-};
-OpenLayers.Html.addDiv = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var $_label = $p3;
-        var divId = $p2;
-        var parentId = $p1;
-        return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(parentId)))(function($p1){
-          var parent = $p1;
-          return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(OpenLayers.HtmlInternal.divElement)))(function($p1){
-            var div = $p1;
-            return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.setAttr$39$)(Fay$$list("id")))(divId))(div)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Html.setHtml$39$)($_label))(div)))(Fay$$_(Fay$$_(JQuery.appendTo)(parent))(div)));
-          });
-        }));
-      });
-    };
-  };
-};
-OpenLayers.Html.addLabel = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var id = $p3;
-        var element = $p2;
-        var parentId = $p1;
-        return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(parentId)))(function($p1){
-          var parent = $p1;
-          return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(element)))(function($p1){
-            var d = $p1;
-            return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.setAttr$39$)(Fay$$list("id")))(id))(d)))(Fay$$_(Fay$$_(JQuery.appendTo)(parent))(d));
-          });
-        }));
-      });
-    };
-  };
-};
-OpenLayers.Html.addForm = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var formId = $p2;
-      var parentId = $p1;
-      return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(parentId)))(function($p1){
-        var parent = $p1;
-        return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Html.select$39$))(OpenLayers.HtmlInternal.formElement)))(function($p1){
-          var form = $p1;
-          return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.setAttr$39$)(Fay$$list("id")))(formId))(form)))(Fay$$_(Fay$$_(JQuery.appendTo)(parent))(form));
-        });
-      });
-    });
-  };
-};
-OpenLayers.Html.addInput = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return new Fay$$$(function(){
-          var defaultValue = $p4;
-          var elementId = $p3;
-          var formId = $p2;
-          var $_label = $p1;
-          return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(formId)))(function($p1){
-            var parent = $p1;
-            return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(OpenLayers.HtmlInternal.divElement)))(function($p1){
-              var div = $p1;
-              return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Html.setHtml$39$)($_label))(div)))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(OpenLayers.HtmlInternal.inputTextElement)))(function($p1){
-                var input = $p1;
-                return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.setAttr$39$)(Fay$$list("id")))(elementId))(input)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.setAttr$39$)(Fay$$list("value")))(defaultValue))(input)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(JQuery.appendTo)(div))(input)))(Fay$$_(Fay$$_(JQuery.appendTo)(parent))(div))));
-              }));
-            });
-          }));
-        });
-      };
-    };
-  };
-};
-OpenLayers.Html.addBreakline = function($p1){
-  return new Fay$$$(function(){
-    var id = $p1;
-    return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(id)))(function($p1){
-      var parent = $p1;
-      return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.select$39$)(Fay$$list("\u003cbr\u003e"))))(function($p1){
-        var $_value = $p1;
-        return Fay$$_(Fay$$_(JQuery.appendTo)(parent))($_value);
-      });
-    }));
-  });
-};
-OpenLayers.Html.getInputInt = function($p1){
-  return new Fay$$$(function(){
-    var labelId = $p1;
-    return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(labelId)))(function($p1){
-      var idinput = $p1;
-      return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(JQuery.getVal)(idinput)))(function($p1){
-        var idvalue = $p1;
-        return Fay$$_(OpenLayers.Html.toInt)(idvalue);
-      });
-    });
-  });
-};
-OpenLayers.Html.onClick$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","JQuery",[]],Fay$$fayToJs(["user","JQuery",[]],$p2)['click'](Fay$$fayToJs(["action",[["unknown"]]],$p1))));
-    });
-  };
-};
-OpenLayers.Html.select$39$ = function($p1){
-  return new Fay$$$(function(){
-    var s = $p1;
-    return Fay$$_(Fay$$_(Prelude.$36$)(JQuery.select))(Fay$$_(OpenLayers.Html.showString$39$)(s));
-  });
-};
-OpenLayers.Html.selectId$39$ = function($p1){
-  return new Fay$$$(function(){
-    var s = $p1;
-    return Fay$$_(Fay$$_(Prelude.$36$)(JQuery.select))(Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Html.showString$39$))(Fay$$_(Fay$$_(Prelude.$43$$43$)(Fay$$list("#")))(s)));
-  });
-};
-OpenLayers.Html.setHtml$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var target = $p2;
-      var content = $p1;
-      return Fay$$_(Fay$$_(JQuery.setHtml)(Fay$$_(OpenLayers.Html.showString$39$)(content)))(target);
-    });
-  };
-};
-OpenLayers.Html.setAttr$39$ = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var target = $p3;
-        var val = $p2;
-        var att = $p1;
-        return Fay$$_(Fay$$_(Fay$$_(JQuery.setAttr)(Fay$$_(OpenLayers.Html.showString$39$)(att)))(Fay$$_(OpenLayers.Html.showString$39$)(val)))(target);
-      });
-    };
-  };
-};
-OpenLayers.Html.setDoubleAttr$39$ = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var target = $p3;
-        var val = $p2;
-        var att = $p1;
-        return Fay$$_(Fay$$_(Fay$$_(JQuery.setAttr)(Fay$$_(OpenLayers.Html.showString$39$)(att)))(Fay$$_(OpenLayers.Html.showDouble$39$)(val)))(target);
-      });
-    };
-  };
-};
-OpenLayers.Html.showString$39$ = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs_string($p1));
-  });
-};
-OpenLayers.Html.showDouble$39$ = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs_double($p1));
-  });
-};
-OpenLayers.Html.toInt = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Integer",[]],Fay$$fayToJs(["user","Text",[]],$p1)));
-  });
-};
-OpenLayers.Html.toInt$39$ = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Integer",[]],Fay$$fayToJs_string($p1));
-  });
-};
-OpenLayers.Func = {};
-OpenLayers.Func.newLayerMqt = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Object",[]],new ol.layer.Tile({source: new ol.source.MapQuest({layer: Fay$$fayToJs_string($p1)})}));
-  });
-};
-OpenLayers.Func.newLayerOSM = new Fay$$$(function(){
-  return Fay$$jsToFay(["user","Object",[]],new ol.layer.Tile({source: new ol.source.OSM()}));
-});
-OpenLayers.Func.newVector = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","Object",[]],new ol.layer.Vector({source: Fay$$fayToJs(["user","Object",[]],$p1), opacity: Fay$$fayToJs(["user","Opacity",[]],$p2).slot1*0.01})));
-    });
-  };
-};
-OpenLayers.Func.newFeature = function($p1){
-  return new Fay$$$(function(){
-    var f = $p1;
-    return (function($tmp1){
-      if (Fay$$_($tmp1) instanceof OpenLayers.Types._GeoPoint) {
-        var p = Fay$$_($tmp1).pt;
-        var id = Fay$$_($tmp1).id;
-        var s = Fay$$_($tmp1).pstyle;
-        return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.newFeaturePoint))(Fay$$_(OpenLayers.Func.transformPoint$39$)(p));
-      }
-      if (Fay$$_($tmp1) instanceof OpenLayers.Types._GeoLine) {
-        var pts = Fay$$_($tmp1).pts;
-        var id = Fay$$_($tmp1).id;
-        var s = Fay$$_($tmp1).lstyle;
-        return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.newFeatureLine))(Fay$$_(OpenLayers.Func.transformPoints$39$)(pts));
-      }
-      return Fay$$_(Prelude.error)(Fay$$list("newStyledFeature: the GeoFeature is not implemented yet"));
-    })(f);
-  });
-};
-OpenLayers.Func.newLineStyle = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Object",[]],[new ol.style.Style({stroke: new ol.style.Stroke({color: Fay$$fayToJs(["user","GeoLineStyle",[]],$p1).color, width: Fay$$fayToJs(["user","GeoLineStyle",[]],$p1).width})})]);
-  });
-};
-OpenLayers.Func.newPointStyle = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Object",[]],[new ol.style.Style({image: new ol.style.Circle({radius: Fay$$fayToJs(["user","GeoPointStyle",[]],$p1).radius, fill: new ol.style.Fill({color:(Fay$$fayToJs(["user","GeoPointStyle",[]],$p1).fillcolor == 'null' ? 'rgba(0,0,0,0)' : Fay$$fayToJs(["user","GeoPointStyle",[]],$p1).fillcolor)}), stroke: Fay$$fayToJs(["user","GeoPointStyle",[]],$p1).outcolor == 'null' ? null : new ol.style.Stroke({color: Fay$$fayToJs(["user","GeoPointStyle",[]],$p1).outcolor, width: Fay$$fayToJs(["user","GeoPointStyle",[]],$p1).outwidth})})})]);
-  });
-};
-OpenLayers.Func.newFeatureLine = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Object",[]],new ol.source.GeoJSON({object:{'type':'Feature','geometry':{'type':'LineString','coordinates': Fay$$fayToJs(["list",[["tuple",[["double"],["double"]]]]],$p1)}}})));
-  });
-};
-OpenLayers.Func.newFeaturePoint = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Object",[]],new ol.source.GeoJSON({object:{'type':'Feature','geometry':{'type':'Point','coordinates': Fay$$fayToJs(["tuple",[["double"],["double"]]],$p1)}}})));
-  });
-};
-OpenLayers.Func.newOlInput = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return new Fay$$$(function(){
-          return new Fay$$Monad(Fay$$jsToFay(["unknown"],(new ol.dom.Input(Fay$$fayToJs(["user","JQuery",[]],$p1)[0])).bindTo(Fay$$fayToJs_string($p2), Fay$$fayToJs(["user","Object",[]],$p3), Fay$$fayToJs_string($p4))));
-        });
-      };
-    };
-  };
-};
-OpenLayers.Func.addSelectClick = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.addInteraction(new ol.interaction.Select({condition: ol.events.condition.click}))));
-});
-OpenLayers.Func.addSingleClickEvent = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.on('singleclick', function (evt) {alert('Koordinate WGS: ' + ol.proj.transform([evt.coordinate[0], evt.coordinate[1]], 'EPSG:3857', 'EPSG:4326') + '\nKoordinate Mer: ' + evt.coordinate)})));
-});
-OpenLayers.Func.addBaseLayer = function($p1){
-  return new Fay$$$(function(){
-    var s = $p1;
-    return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$then)(OpenLayers.Func.removeLayers))(Fay$$_(OpenLayers.Func.addMapLayer)(s)));
-  });
-};
-OpenLayers.Func.addId = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","Object",[]],(Fay$$fayToJs(["user","Integer",[]],$p2) < 1) ? '' : Fay$$fayToJs(["user","Object",[]],$p1).getSource().getFeatures()[0].setId(Fay$$fayToJs(["user","Integer",[]],$p2))));
-    });
-  };
-};
-OpenLayers.Func.addMapLayer = function($p1){
-  return new Fay$$$(function(){
-    var s = $p1;
-    if (Fay$$_(Fay$$_(Fay$$_(Fay$$eq)(s))(OpenLayers.Types.OSM))) {
-      return Fay$$_(OpenLayers.Func.addLayer)(OpenLayers.Func.newLayerOSM);
-    } else {if (Fay$$_(Fay$$_(Fay$$_(Prelude.any)(function($p1){
-        var $gen_0 = $p1;
-        return Fay$$_(Fay$$_(Fay$$eq)(s))($gen_0);
-      }))(OpenLayers.Types.mapQuests))) {
-        return Fay$$_(OpenLayers.Func.addLayer)(Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.newLayerMqt))(Fay$$_(OpenLayers.Types.showMapSource)(s)));
-      } else {if (Fay$$_(Prelude.otherwise)) {
-          return Fay$$_(Prelude.error)(Fay$$_(Fay$$_(Prelude.$43$$43$)(Fay$$list("wrong MapSource allowed is OSM and ")))(Fay$$_(Prelude.show)(OpenLayers.Types.mapQuests)));
-        }
-      }
-    }
-  });
-};
-OpenLayers.Func.addLayer = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.addLayer(Fay$$fayToJs(["user","Object",[]],$p1))));
-  });
-};
-OpenLayers.Func.addStyledFeature = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var o = $p2;
-      var f = $p1;
-      return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Func.newFeature)(f)))(function($p1){
-        var feature = $p1;
-        return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Func.styleFeature)(feature))(f)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Func.addFeatureId)(feature))(f)))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(Fay$$_(OpenLayers.Func.newVector)(feature))(o)))(function($p1){
-          var vector = $p1;
-          return Fay$$_(OpenLayers.Func.addLayer)(vector);
-        })));
-      });
-    });
-  };
-};
-OpenLayers.Func.addStyledFeatures = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var o = $p2;
-      var f = $p1;
-      return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(Fay$$_(OpenLayers.Func.map$39$)(OpenLayers.Func.newFeature))(f)))(function($p1){
-        var features = $p1;
-        return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.zipWithM)(OpenLayers.Func.styleFeature))(features))(f)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.zipWithM)(OpenLayers.Func.addFeatureId))(features))(f)))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.zipWithM)(OpenLayers.Func.newVector))(features))((function(){
-          return new Fay$$$(function(){
-            var $gen_0 = function($p1){
-              return new Fay$$$(function(){
-                var x = $p1;
-                return Fay$$list([o]);
-                return null;
-              });
-            };
-            return Fay$$_(Fay$$_(Prelude.concatMap)($gen_0))(Prelude.enumFromTo(0)(Fay$$_(Fay$$_(Fay$$sub)(Fay$$_(Prelude.length)(features)))(1)));
-          });
-        })())))(function($p1){
-          var vectors = $p1;
-          return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Func.addLayer)(Fay$$_(Prelude.head)(vectors))))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$$_return))(Fay$$_(Fay$$_(Fay$$_(Prelude.zipWith)(OpenLayers.Func.getFeatureAt))(vectors))((function(){
-            return new Fay$$$(function(){
-              var $gen_0 = function($p1){
-                return new Fay$$$(function(){
-                  var x = $p1;
-                  return Fay$$list([0]);
-                  return null;
-                });
-              };
-              return Fay$$_(Fay$$_(Prelude.concatMap)($gen_0))(Prelude.enumFromTo(0)(Fay$$_(Fay$$_(Fay$$sub)(Fay$$_(Prelude.length)(features)))(1)));
-            });
-          })()))))(function($p1){
-            var sources = $p1;
-            return Fay$$_(Fay$$_(OpenLayers.Func.addFeatures)(Fay$$_(Prelude.head)(vectors)))(Fay$$_(Prelude.tail)(sources));
-          }));
-        })));
-      });
-    });
-  };
-};
-OpenLayers.Func.addFeatureId = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","Object",[]],Fay$$fayToJs(["user","Object",[]],$p1).getFeatures()[0].setId(Fay$$fayToJs(["user","GeoFeature",[]],$p2).id)));
-    });
-  };
-};
-OpenLayers.Func.addFeatures = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],Fay$$fayToJs(["user","Object",[]],$p1).getSource().addFeatures(Fay$$fayToJs(["list",[["user","Object",[]]]],$p2))));
-    });
-  };
-};
-OpenLayers.Func.addPointFromLabels = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return function($p5){
-          return new Fay$$$(function(){
-            var s = $p5;
-            var idId = $p4;
-            var oId = $p3;
-            var yId = $p2;
-            var xId = $p1;
-            return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(xId)))(function($p1){
-              var xinput = $p1;
-              return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(JQuery.getVal)(xinput)))(function($p1){
-                var xcoor = $p1;
-                return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(yId)))(function($p1){
-                  var yinput = $p1;
-                  return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(JQuery.getVal)(yinput)))(function($p1){
-                    var ycoor = $p1;
-                    return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.getInputInt)(oId)))(function($p1){
-                      var o = $p1;
-                      return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.getInputInt)(idId)))(function($p1){
-                        var i = $p1;
-                        return Fay$$_(Fay$$_(OpenLayers.Func.addStyledFeature)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(Fay$$_(OpenLayers.Func.toDouble$39$)(xcoor)))(Fay$$_(OpenLayers.Func.toDouble$39$)(ycoor)))(Fay$$_(OpenLayers.Types.Projection)(Fay$$list("EPSG:3857")))))(i))(s)))(Fay$$_(OpenLayers.Types.Opacity)(o));
-                      });
-                    });
-                  });
-                });
-              });
-            }));
-          });
-        };
-      };
-    };
-  };
-};
-OpenLayers.Func.addMapListener = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.on(Fay$$fayToJs_string($p1), Fay$$fayToJs_string($p2))));
-    });
-  };
-};
-OpenLayers.Func.addMapWindowEvent = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.on(Fay$$fayToJs_string($p1), Fay$$fayToJs(["action",[["user","JQuery",[]]]],$p2))));
-    });
-  };
-};
-OpenLayers.Func.addOlDomInput = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return new Fay$$$(function(){
-          var method = $p4;
-          var $_value = $p3;
-          var typehtml = $p2;
-          var id = $p1;
-          return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(id)))(function($p1){
-            var element = $p1;
-            return Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.newOlInput)(element))(typehtml))(method))($_value);
-          }));
-        });
-      };
-    };
-  };
-};
-OpenLayers.Func.removeLayers = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$bind)(OpenLayers.Func.getLayers))(function($p1){
-    var layers = $p1;
-    return Fay$$_(Fay$$_(Prelude.mapM)(OpenLayers.Func.removeLayer))(layers);
-  }));
-});
-OpenLayers.Func.removeLayer = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.removeLayer(Fay$$fayToJs(["unknown"],$p1))));
-  });
-};
-OpenLayers.Func.zoomIn = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.getView().setZoom(olc.getView().getZoom()+Fay$$fayToJs(["user","Integer",[]],$p1))));
-  });
-};
-OpenLayers.Func.zoomOut = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.getView().setZoom(olc.getView().getZoom()-Fay$$fayToJs(["user","Integer",[]],$p1))));
-  });
-};
-OpenLayers.Func.styleFeature = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var feature = $p2;
-      var object = $p1;
-      return (function($tmp1){
-        if (Fay$$_($tmp1) instanceof OpenLayers.Types._GeoPoint) {
-          var p = Fay$$_($tmp1).pt;
-          var id = Fay$$_($tmp1).id;
-          var s = Fay$$_($tmp1).pstyle;
-          return Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.styleFeature$39$)(object)))(Fay$$_(OpenLayers.Func.newPointStyle)(s));
-        }
-        if (Fay$$_($tmp1) instanceof OpenLayers.Types._GeoLine) {
-          var pts = Fay$$_($tmp1).pts;
-          var id = Fay$$_($tmp1).id;
-          var s = Fay$$_($tmp1).lstyle;
-          return Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.styleFeature$39$)(object)))(Fay$$_(OpenLayers.Func.newLineStyle)(s));
-        }
-        return Fay$$_(Prelude.error)(Fay$$list("styleFeature: the GeoFeature is not implemented yet"));
-      })(feature);
-    });
-  };
-};
-OpenLayers.Func.styleFeature$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","Object",[]],Fay$$fayToJs(["user","Object",[]],$p1).getFeatures()[0].setStyle(Fay$$fayToJs(["user","Object",[]],$p2))));
-    });
-  };
-};
-OpenLayers.Func.changeBaseLayer = function($p1){
-  return new Fay$$$(function(){
-    var s = $p1;
-    return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$bind)(OpenLayers.Func.getLayers))(function($p1){
-      var layers = $p1;
-      return Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Func.addBaseLayer)(s)))(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.map$39$)(OpenLayers.Func.addLayer)))(Fay$$_(Prelude.tail)(layers)));
-    }));
-  });
-};
-OpenLayers.Func.setFeatureStyle = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Object",[]],Fay$$fayToJs(["user","Object",[]],$p1).setStyle(Fay$$fayToJs(["user","Object",[]],$p2)));
-    });
-  };
-};
-OpenLayers.Func.setCenter$39$ = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.getView().setCenter(Fay$$fayToJs(["tuple",[["double"],["double"]]],$p1))));
-  });
-};
-OpenLayers.Func.setCenter = function($p1){
-  return new Fay$$$(function(){
-    var c = $p1;
-    return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.setCenter$39$))(Fay$$_(OpenLayers.Func.transformPoint$39$)(c));
-  });
-};
-OpenLayers.Func.setCenterZoom = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var z = $p2;
-      var c = $p1;
-      return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Func.setCenter)(c)))(Fay$$_(OpenLayers.Func.setZoom)(z)));
-    });
-  };
-};
-OpenLayers.Func.setZoom = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.getView().setZoom(Fay$$fayToJs(["user","Integer",[]],$p1))));
-  });
-};
-OpenLayers.Func.setTarget = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.setTarget(Fay$$fayToJs_string($p1))));
-  });
-};
-OpenLayers.Func.setDefaultView = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc.setView(new ol.View({center:[0,0],zoom:2}))));
-});
-OpenLayers.Func.setEventToHtml = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var $_function = $p2;
-      var elementId = $p1;
-      return Fay$$_(Fay$$_(Fay$$bind)($_function))(function($p1){
-        var $_value = $p1;
-        return Fay$$_(Fay$$_(Fay$$bind)(Fay$$_(OpenLayers.Html.selectId$39$)(elementId)))(function($p1){
-          var element = $p1;
-          return Fay$$_(Fay$$_(JQuery.setHtml)($_value))(element);
-        });
-      });
-    });
-  };
-};
-OpenLayers.Func.getCenter = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var fixed = $p2;
-      var proj = $p1;
-      return Fay$$_(Fay$$_(Fay$$bind)(OpenLayers.Func.getCenter_))(function($p1){
-        var c = $p1;
-        return Fay$$_(Fay$$_(OpenLayers.Func.coordFixed)(Fay$$_(Fay$$_(OpenLayers.Func.transformPointBack$39$)(proj))(c)))(fixed);
-      });
-    });
-  };
-};
-OpenLayers.Func.getZoom = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],olc.getView().getZoom()));
-});
-OpenLayers.Func.getCenter_ = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["tuple",[["double"],["double"]]],olc.getView().getCenter()));
-});
-OpenLayers.Func.getLayers = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["list",[["user","Object",[]]]],olc.getLayers().getArray()));
-});
-OpenLayers.Func.getLayerByIndex = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Object",[]],olc.getLayers().item(Fay$$fayToJs(["user","Integer",[]],$p1)));
-  });
-};
-OpenLayers.Func.getLayerByIndex$39$ = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["user","Object",[]],olc.getLayers().item(Fay$$fayToJs(["user","Integer",[]],$p1))));
-  });
-};
-OpenLayers.Func.getFeatureId = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Integer",[]],Fay$$fayToJs(["user","Object",[]],$p1).getId());
-  });
-};
-OpenLayers.Func.getFeatureAt = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["user","Object",[]],Fay$$fayToJs(["user","Object",[]],$p1).getSource().getFeatures()[Fay$$fayToJs(["user","Integer",[]],$p2)]);
-    });
-  };
-};
-OpenLayers.Func.getFeatureLength = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["user","Integer",[]],Fay$$fayToJs(["user","Object",[]],$p1).getSource().getFeatures().length);
-  });
-};
-OpenLayers.Func.transformPointBack$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return Fay$$jsToFay(["tuple",[["double"],["double"]]],ol.proj.transform(Fay$$fayToJs(["tuple",[["double"],["double"]]],$p2), 'EPSG:3857', Fay$$fayToJs(["user","Projectionlike",[]],$p1).slot1));
-    });
-  };
-};
-OpenLayers.Func.transformPoint$39$ = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["tuple",[["double"],["double"]]],ol.proj.transform([Fay$$fayToJs(["user","Coordinate",[]],$p1).x, Fay$$fayToJs(["user","Coordinate",[]],$p1).y], Fay$$fayToJs(["user","Coordinate",[]],$p1).from.slot1, 'EPSG:3857'));
-  });
-};
-OpenLayers.Func.transformPoints$39$ = function($p1){
-  return new Fay$$$(function(){
-    var c = $p1;
-    return (function(){
-      return new Fay$$$(function(){
-        var $gen_0 = function($p1){
-          return new Fay$$$(function(){
-            var x = $p1;
-            return Fay$$list([Fay$$_(OpenLayers.Func.transformPoint$39$)(x)]);
-            return null;
-          });
-        };
-        return Fay$$_(Fay$$_(Prelude.concatMap)($gen_0))(c);
-      });
-    })();
-  });
-};
-OpenLayers.Func.coordFixed = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      return new Fay$$Monad(Fay$$jsToFay(["user","Text",[]],Fay$$fayToJs(["tuple",[["double"],["double"]]],$p1)[0].toFixed(Fay$$fayToJs(["user","Integer",[]],$p2)) + ',' + Fay$$fayToJs(["tuple",[["double"],["double"]]],$p1)[1].toFixed(Fay$$fayToJs(["user","Integer",[]],$p2))));
-    });
-  };
-};
-OpenLayers.Func.$_void = function($p1){
-  return new Fay$$$(function(){
-    var f = $p1;
-    return Fay$$_(Fay$$_(Fay$$then)(f))(Fay$$_(Fay$$$_return)(Fay$$unit));
-  });
-};
-OpenLayers.Func.lois = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay(["unknown"],Fay$$fayToJs(["action",[["unknown"]]],$p1));
-  });
-};
-OpenLayers.Func.toDouble$39$ = function($p1){
-  return new Fay$$$(function(){
-    return Fay$$jsToFay_double(Fay$$fayToJs(["user","Text",[]],$p1));
-  });
-};
-OpenLayers.Func.zipWithM3 = function($p1){
-  return function($p2){
-    return function($p3){
-      return function($p4){
-        return new Fay$$$(function(){
-          var is = $p4;
-          var ys = $p3;
-          var xs = $p2;
-          var f = $p1;
-          return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.sequence))(Fay$$_(Fay$$_(Fay$$_(Fay$$_(Prelude.zipWith3)(f))(xs))(ys))(is));
-        });
-      };
-    };
-  };
-};
-OpenLayers.Func.zipWithM = function($p1){
-  return function($p2){
-    return function($p3){
-      return new Fay$$$(function(){
-        var ys = $p3;
-        var xs = $p2;
-        var f = $p1;
-        return Fay$$_(Fay$$_(Prelude.$36$)(Prelude.sequence))(Fay$$_(Fay$$_(Fay$$_(Prelude.zipWith)(f))(xs))(ys));
-      });
-    };
-  };
-};
-OpenLayers.Func.map$39$ = function($p1){
-  return function($p2){
-    return new Fay$$$(function(){
-      var xs = $p2;
-      var f = $p1;
-      return Fay$$_(Prelude.sequence)(Fay$$_(Fay$$_(Prelude.map)(f))(xs));
-    });
-  };
-};
-var Tutorial = {};
-Tutorial.Traffic = {};
-Tutorial.Traffic.uStationSize = 3;
-Tutorial.Traffic.uLineSize = 2;
-Tutorial.Traffic.u1Color = new Fay$$$(function(){
-  return Fay$$list("red");
-});
-Tutorial.Traffic.u1StationStyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPointStyle)(Tutorial.Traffic.uStationSize))(Tutorial.Traffic.u1Color))(Tutorial.Traffic.u1Color))(1);
-});
-Tutorial.Traffic.u1LineStyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(OpenLayers.Types.GeoLineStyle)(Tutorial.Traffic.u1Color))(Tutorial.Traffic.uLineSize);
-});
-Tutorial.Traffic.u2Color = new Fay$$$(function(){
-  return Fay$$list("#8904B1");
-});
-Tutorial.Traffic.u2StationStyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPointStyle)(Tutorial.Traffic.uStationSize))(Tutorial.Traffic.u2Color))(Tutorial.Traffic.u2Color))(1);
-});
-Tutorial.Traffic.u2LineStyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(OpenLayers.Types.GeoLineStyle)(Tutorial.Traffic.u2Color))(Tutorial.Traffic.uLineSize);
-});
-Tutorial.Traffic.u3Color = new Fay$$$(function(){
-  return Fay$$list("orange");
-});
-Tutorial.Traffic.u3StationStyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPointStyle)(Tutorial.Traffic.uStationSize))(Tutorial.Traffic.u3Color))(Tutorial.Traffic.u3Color))(1);
-});
-Tutorial.Traffic.u3LineStyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(OpenLayers.Types.GeoLineStyle)(Tutorial.Traffic.u3Color))(Tutorial.Traffic.uLineSize);
-});
-Tutorial.Traffic.u4Color = new Fay$$$(function(){
-  return Fay$$list("green");
-});
-Tutorial.Traffic.u4StationStyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPointStyle)(Tutorial.Traffic.uStationSize))(Tutorial.Traffic.u4Color))(Tutorial.Traffic.u4Color))(1);
-});
-Tutorial.Traffic.u4LineStyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(OpenLayers.Types.GeoLineStyle)(Tutorial.Traffic.u4Color))(Tutorial.Traffic.uLineSize);
-});
-Tutorial.Traffic.u4_01 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.26139))(48.1975))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_02 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.27528))(48.1925))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_03 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.28639))(48.19111))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_04 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.29473))(48.18972))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_05 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.30389))(48.18778))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_06 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.3189))(48.18555))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_07 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.32834))(48.18361))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_08 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.33472))(48.18472))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_09 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.3425))(48.18834))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_10 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.35445))(48.19278))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_11 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.35806))(48.19667))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_12 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.36889))(48.20015))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_13 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37889))(48.20278))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_14 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.385))(48.20612))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_15 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.3775))(48.2115))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_16 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37195))(48.21611))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_17 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.36751))(48.22194))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_18 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.36361))(48.22778))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_19 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.35806))(48.23472))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4_20 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.36612))(48.24888))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u4 = new Fay$$$(function(){
-  return Fay$$list([Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_01))(40001))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_02))(40002))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_03))(40003))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_04))(40004))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_05))(40005))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_06))(40006))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_07))(40007))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_08))(40008))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_09))(40009))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_10))(40010))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_11))(40011))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_12))(40012))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_13))(40013))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_14))(40014))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_15))(40015))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_16))(40016))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_17))(40017))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_18))(40018))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_19))(40019))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u4_20))(40020))(Tutorial.Traffic.u4StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoLine)(Fay$$list([Tutorial.Traffic.u4_01,Tutorial.Traffic.u4_02,Tutorial.Traffic.u4_03,Tutorial.Traffic.u4_04,Tutorial.Traffic.u4_05,Tutorial.Traffic.u4_06,Tutorial.Traffic.u4_07,Tutorial.Traffic.u4_08,Tutorial.Traffic.u4_09,Tutorial.Traffic.u4_10,Tutorial.Traffic.u4_11,Tutorial.Traffic.u4_12,Tutorial.Traffic.u4_13,Tutorial.Traffic.u4_14,Tutorial.Traffic.u4_15,Tutorial.Traffic.u4_16,Tutorial.Traffic.u4_17,Tutorial.Traffic.u4_18,Tutorial.Traffic.u4_19,Tutorial.Traffic.u4_20])))(41001))(Tutorial.Traffic.u4LineStyle)]);
-});
-Tutorial.Traffic.u3_01 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.42024))(48.17001))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_02 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.41389))(48.17611))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_03 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.41139))(48.17944))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_04 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.41722))(48.18528))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_05 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.415))(48.19084))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_06 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.40667))(48.19445))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_07 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.39972))(48.1975))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_08 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.39223))(48.20222))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_09 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.385))(48.20639))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_10 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37917))(48.2075))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_11 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37222))(48.20833))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_12 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.365))(48.20944))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_13 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.35834))(48.20501))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_14 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.35222))(48.19917))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_15 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.34611))(48.19722))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_16 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.33861))(48.19695))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_17 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.32861))(48.19778))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_18 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.31972))(48.19778))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_19 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.31167))(48.19972))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_20 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.3089))(48.20444))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3_21 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.31111))(48.21195))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u3 = new Fay$$$(function(){
-  return Fay$$list([Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_01))(30001))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_02))(30002))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_03))(30003))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_04))(30004))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_05))(30005))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_06))(30006))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_07))(30007))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_08))(30008))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_09))(30009))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_10))(30010))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_11))(30011))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_12))(30012))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_13))(30013))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_14))(30014))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_15))(30015))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_16))(30016))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_17))(30017))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_18))(30018))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_19))(30019))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_20))(30020))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u3_21))(30021))(Tutorial.Traffic.u3StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoLine)(Fay$$list([Tutorial.Traffic.u3_01,Tutorial.Traffic.u3_02,Tutorial.Traffic.u3_03,Tutorial.Traffic.u3_04,Tutorial.Traffic.u3_05,Tutorial.Traffic.u3_06,Tutorial.Traffic.u3_07,Tutorial.Traffic.u3_08,Tutorial.Traffic.u3_09,Tutorial.Traffic.u3_10,Tutorial.Traffic.u3_11,Tutorial.Traffic.u3_12,Tutorial.Traffic.u3_13,Tutorial.Traffic.u3_14,Tutorial.Traffic.u3_15,Tutorial.Traffic.u3_16,Tutorial.Traffic.u3_17,Tutorial.Traffic.u3_18,Tutorial.Traffic.u3_19,Tutorial.Traffic.u3_20,Tutorial.Traffic.u3_21])))(31001))(Tutorial.Traffic.u3LineStyle)]);
-});
-Tutorial.Traffic.u2_01 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.3691))(48.20028))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_02 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.36139))(48.20251))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_03 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.35833))(48.20556))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_04 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.35528))(48.21056))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_05 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.36305))(48.21528))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_06 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37195))(48.21639))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_07 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.38074))(48.21908))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_08 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.39133))(48.21875))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_09 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.4064))(48.2177))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_10 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.41376))(48.21466))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2_11 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.42095))(48.2103))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u2 = new Fay$$$(function(){
-  return Fay$$list([Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_01))(20001))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_02))(20002))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_03))(20003))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_04))(20004))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_05))(20005))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_06))(20006))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_07))(20007))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_08))(20008))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_09))(20009))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_10))(20010))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u2_11))(20011))(Tutorial.Traffic.u2StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoLine)(Fay$$list([Tutorial.Traffic.u2_01,Tutorial.Traffic.u2_02,Tutorial.Traffic.u2_03,Tutorial.Traffic.u2_04,Tutorial.Traffic.u2_05,Tutorial.Traffic.u2_06,Tutorial.Traffic.u2_07,Tutorial.Traffic.u2_08,Tutorial.Traffic.u2_09,Tutorial.Traffic.u2_10,Tutorial.Traffic.u2_11])))(21001))(Tutorial.Traffic.u2LineStyle)]);
-});
-Tutorial.Traffic.u1_01 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37778))(48.175))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_02 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37612))(48.17945))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_03 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37278))(48.18751))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_04 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37056))(48.19389))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_05 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.36889))(48.20028))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_06 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37194))(48.20836))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_07 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.3775))(48.21167))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_08 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.38583))(48.21556))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_09 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.39333))(48.21944))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_10 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.40139))(48.2239))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_11 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.41055))(48.22889))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_13 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.41611))(48.23305))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_14 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.42436))(48.23811))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_15 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.4339))(48.24362))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_16 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.44333))(48.25041))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_17 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.44922))(48.25702))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_18 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.45158))(48.26277))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_19 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.44773))(48.27164))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1_20 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.45164))(48.27719))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.Traffic.u1 = new Fay$$$(function(){
-  return Fay$$list([Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_01))(10001))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_02))(10002))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_03))(10003))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_04))(10004))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_05))(10005))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_06))(10006))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_07))(10007))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_08))(10008))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_09))(10009))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_10))(10010))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_11))(10011))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_13))(10013))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_14))(10014))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_15))(10015))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_16))(10016))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_17))(10017))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_18))(10018))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_19))(10019))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.Traffic.u1_20))(10020))(Tutorial.Traffic.u1StationStyle),Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoLine)(Fay$$list([Tutorial.Traffic.u1_01,Tutorial.Traffic.u1_02,Tutorial.Traffic.u1_03,Tutorial.Traffic.u1_04,Tutorial.Traffic.u1_05,Tutorial.Traffic.u1_06,Tutorial.Traffic.u1_07,Tutorial.Traffic.u1_08,Tutorial.Traffic.u1_09,Tutorial.Traffic.u1_10,Tutorial.Traffic.u1_11,Tutorial.Traffic.u1_13,Tutorial.Traffic.u1_14,Tutorial.Traffic.u1_15,Tutorial.Traffic.u1_16,Tutorial.Traffic.u1_17,Tutorial.Traffic.u1_18,Tutorial.Traffic.u1_19,Tutorial.Traffic.u1_20])))(11001))(Tutorial.Traffic.u1LineStyle)]);
-});
-Tutorial.OlApp = {};
-Tutorial.OlApp.zoomlevel = 11;
-Tutorial.OlApp.defaultopacity = new Fay$$$(function(){
-  return Fay$$_(OpenLayers.Types.Opacity)(80);
-});
-Tutorial.OlApp.coor1 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.369))(48.196))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.OlApp.coor2 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.37))(48.195))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.OlApp.coor3 = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.371))(48.194))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.OlApp.vienna = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(16.397))(48.219))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.OlApp.rome = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(12.5))(41.9))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.OlApp.bern = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)(7.4458))(46.95))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.OlApp.madrid = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.Coordinate)((-(3.683333))))(40.4))(OpenLayers.Types.wgs84proj);
-});
-Tutorial.OlApp.mypointstyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPointStyle)(4))(Fay$$list("green")))(Fay$$list("black")))(2);
-});
-Tutorial.OlApp.mylinestyle = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(OpenLayers.Types.GeoLineStyle)(Fay$$list("green")))(3);
-});
-Tutorial.OlApp.mypoint = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoPoint)(Tutorial.OlApp.vienna))(301))(Tutorial.OlApp.mypointstyle);
-});
-Tutorial.OlApp.myline = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Fay$$_(OpenLayers.Types.GeoLine)(Fay$$list([Tutorial.OlApp.coor1,Tutorial.OlApp.coor2,Tutorial.OlApp.coor3])))(101))(Tutorial.OlApp.mylinestyle);
-});
-Tutorial.OlApp.descId = new Fay$$$(function(){
-  return Fay$$list("mapdesc");
-});
-Tutorial.OlApp.formId = new Fay$$$(function(){
-  return Fay$$list("forminput");
-});
-Tutorial.OlApp.hochinputId = new Fay$$$(function(){
-  return Fay$$list("xinput");
-});
-Tutorial.OlApp.rechtsinputId = new Fay$$$(function(){
-  return Fay$$list("yinput");
-});
-Tutorial.OlApp.opacityinputId = new Fay$$$(function(){
-  return Fay$$list("opacinput");
-});
-Tutorial.OlApp.idinputId = new Fay$$$(function(){
-  return Fay$$list("idinputId");
-});
-Tutorial.OlApp.zoomlabel = new Fay$$$(function(){
-  return Fay$$list("zoomlabel");
-});
-Tutorial.OlApp.wgslabel = new Fay$$$(function(){
-  return Fay$$list("wgslabel");
-});
-Tutorial.OlApp.mercatorlabel = new Fay$$$(function(){
-  return Fay$$list("mercatorlabel");
-});
-Tutorial.OlApp.visiblecheckboxU1 = new Fay$$$(function(){
-  return Fay$$list("opacitycheckboxU1");
-});
-Tutorial.OlApp.visiblecheckboxU2 = new Fay$$$(function(){
-  return Fay$$list("opacitycheckboxU2");
-});
-Tutorial.OlApp.visiblecheckboxU3 = new Fay$$$(function(){
-  return Fay$$list("opacitycheckboxU3");
-});
-Tutorial.OlApp.visiblecheckboxU4 = new Fay$$$(function(){
-  return Fay$$list("opacitycheckboxU4");
-});
-Tutorial.OlApp.designTutorialMap = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Func.setCenter)(Tutorial.OlApp.vienna)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Func.setZoom)(Tutorial.OlApp.zoomlevel)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.addStyledFeature)(Tutorial.OlApp.myline)))(Fay$$_(OpenLayers.Types.Opacity)(0))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.addStyledFeature)(Tutorial.OlApp.mypoint)))(Fay$$_(OpenLayers.Types.Opacity)(0))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Func.addStyledFeatures)(Tutorial.Traffic.u1))(Tutorial.OlApp.defaultopacity)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Func.addStyledFeatures)(Tutorial.Traffic.u2))(Tutorial.OlApp.defaultopacity)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Func.addStyledFeatures)(Tutorial.Traffic.u3))(Tutorial.OlApp.defaultopacity)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Func.addStyledFeatures)(Tutorial.Traffic.u4))(Tutorial.OlApp.defaultopacity)))(Fay$$_(Fay$$_(Fay$$then)(OpenLayers.Func.addSelectClick))(Fay$$_(Fay$$_(Fay$$then)(OpenLayers.Func.addSingleClickEvent))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addDiv)(Tutorial.OlApp.descId))(Fay$$list("div0")))(Fay$$list("Klicke in die Karte um Koordinaten zu erhalten."))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Html.addBreakline)(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(OpenLayers.Html.addForm)(Tutorial.OlApp.descId))(Tutorial.OlApp.formId)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addInput)(Fay$$list("Mercator Hochwert: ")))(Tutorial.OlApp.formId))(Tutorial.OlApp.hochinputId))(Fay$$list("1819207"))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addInput)(Fay$$list("Mercator Rechtswert: ")))(Tutorial.OlApp.formId))(Tutorial.OlApp.rechtsinputId))(Fay$$list("6141206"))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addInput)(Fay$$list("Deckkraft: ")))(Tutorial.OlApp.formId))(Tutorial.OlApp.opacityinputId))(Fay$$list("90"))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addInput)(Fay$$list("Id: ")))(Tutorial.OlApp.formId))(Tutorial.OlApp.idinputId))(Fay$$list("1000"))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(OpenLayers.Html.addButton)(Fay$$list("Symbol einsetzen")))(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.addPointFromLabels)(Tutorial.OlApp.hochinputId))(Tutorial.OlApp.rechtsinputId))(Tutorial.OlApp.opacityinputId))(Tutorial.OlApp.idinputId))(Tutorial.OlApp.mypointstyle))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Html.addBreakline)(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Html.addBreakline)(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(OpenLayers.Html.addButton)(Fay$$list("Wechsel Basiskarte Satellit")))(Tutorial.OlApp.descId)))(Fay$$_(OpenLayers.Func.changeBaseLayer)(OpenLayers.Types.Sat))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(OpenLayers.Html.addButton)(Fay$$list("Wechsel Basiskarte OpenStreetMap")))(Tutorial.OlApp.descId)))(Fay$$_(OpenLayers.Func.changeBaseLayer)(OpenLayers.Types.OSM))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Html.addBreakline)(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Html.addBreakline)(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(OpenLayers.Html.addButton)(Fay$$list("Wien")))(Tutorial.OlApp.descId)))(Fay$$_(OpenLayers.Func.setCenter)(Tutorial.OlApp.vienna))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(OpenLayers.Html.addButton)(Fay$$list("Rom")))(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(OpenLayers.Func.setCenterZoom)(Tutorial.OlApp.rome))(Tutorial.OlApp.zoomlevel))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(OpenLayers.Html.addButton)(Fay$$list("Madrid")))(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(OpenLayers.Func.setCenterZoom)(Tutorial.OlApp.madrid))(Tutorial.OlApp.zoomlevel))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Html.addBreakline)(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(OpenLayers.Html.addButton)(Fay$$list("Zoom +")))(Tutorial.OlApp.descId)))(Fay$$_(OpenLayers.Func.zoomIn)(1))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(OpenLayers.Html.addButton)(Fay$$list("Zoom -")))(Tutorial.OlApp.descId)))(Fay$$_(OpenLayers.Func.zoomOut)(1))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Html.addBreakline)(Tutorial.OlApp.descId)))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addCheckbox)(Tutorial.OlApp.visiblecheckboxU1))(Fay$$list("table1")))(Fay$$list("U1 "))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addCheckbox)(Tutorial.OlApp.visiblecheckboxU2))(Fay$$list("table2")))(Fay$$list("U2 "))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addCheckbox)(Tutorial.OlApp.visiblecheckboxU3))(Fay$$list("table3")))(Fay$$list("U3 "))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addCheckbox)(Tutorial.OlApp.visiblecheckboxU4))(Fay$$list("table4")))(Fay$$list("U4 "))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.addOlDomInput)(Tutorial.OlApp.visiblecheckboxU1))(Fay$$list("checked")))(Fay$$list("visible"))))(Fay$$_(OpenLayers.Func.getLayerByIndex)(3))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.addOlDomInput)(Tutorial.OlApp.visiblecheckboxU2))(Fay$$list("checked")))(Fay$$list("visible"))))(Fay$$_(OpenLayers.Func.getLayerByIndex)(4))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.addOlDomInput)(Tutorial.OlApp.visiblecheckboxU3))(Fay$$list("checked")))(Fay$$list("visible"))))(Fay$$_(OpenLayers.Func.getLayerByIndex)(5))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Func.addOlDomInput)(Tutorial.OlApp.visiblecheckboxU4))(Fay$$list("checked")))(Fay$$list("visible"))))(Fay$$_(OpenLayers.Func.getLayerByIndex)(6))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addLabel)(Tutorial.OlApp.zoomlabel))(Fay$$list("\u003cdiv\u003e")))(Fay$$list("zl1"))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addLabel)(Tutorial.OlApp.wgslabel))(Fay$$list("\u003cdiv\u003e")))(Fay$$list("wl1"))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Fay$$_(OpenLayers.Html.addLabel)(Tutorial.OlApp.mercatorlabel))(Fay$$list("\u003cdiv\u003e")))(Fay$$list("ml1"))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.addMapWindowEvent)(Fay$$list("moveend"))))(Fay$$_(Fay$$_(OpenLayers.Func.setEventToHtml)(Tutorial.OlApp.zoomlabel))(OpenLayers.Func.getZoom))))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.addMapWindowEvent)(Fay$$list("moveend"))))(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.setEventToHtml)(Tutorial.OlApp.wgslabel)))(Fay$$_(Fay$$_(OpenLayers.Func.getCenter)(OpenLayers.Types.wgs84proj))(5)))))(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.addMapWindowEvent)(Fay$$list("moveend"))))(Fay$$_(Fay$$_(Prelude.$36$)(Fay$$_(OpenLayers.Func.setEventToHtml)(Tutorial.OlApp.mercatorlabel)))(Fay$$_(Fay$$_(OpenLayers.Func.getCenter)(OpenLayers.Types.mercatorproj))(1))))))))))))))))))))))))))))))))))))))))))))))));
-});
-var OlApp = {};
-OlApp.targetId = new Fay$$$(function(){
-  return Fay$$list("map");
-});
-OlApp.designMap = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Func.addBaseLayer)(OpenLayers.Types.OSM)))(Tutorial.OlApp.designTutorialMap));
-});
-OpenLayers.addDefaultMap = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["unknown"],olmap = new ol.Map({renderer: 'canvas'})));
-});
-OpenLayers.defineCode = new Fay$$$(function(){
-  return new Fay$$Monad(Fay$$jsToFay(["unknown"],olc = $(olmap)[0]));
-});
-OpenLayers.olwrapperLoad = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Prelude.$36$)(OpenLayers.Func.$_void))(Fay$$_(Fay$$_(Fay$$then)(OpenLayers.addDefaultMap))(Fay$$_(Fay$$_(Fay$$then)(OpenLayers.defineCode))(Fay$$_(Fay$$_(Fay$$then)(Fay$$_(OpenLayers.Func.setTarget)(OlApp.targetId)))(Fay$$_(Fay$$_(Fay$$then)(OpenLayers.Func.setDefaultView))(OlApp.designMap)))));
-});
-var Index = {};
-Index.addOnload = function($p1){
-  return new Fay$$$(function(){
-    return new Fay$$Monad(Fay$$jsToFay(["unknown"],window.addEventListener("load", Fay$$fayToJs(["action",[["unknown"]]],$p1))));
-  });
-};
-Index.main = new Fay$$$(function(){
-  return Fay$$_(Index.addOnload)(Index.onload);
-});
-Index.$_void = function($p1){
-  return new Fay$$$(function(){
-    var f = $p1;
-    return Fay$$_(Fay$$_(Fay$$then)(f))(Fay$$_(Fay$$$_return)(Fay$$unit));
-  });
-};
-Index.onload = new Fay$$$(function(){
-  return Fay$$_(Fay$$_(Prelude.$36$)(Index.$_void))(OpenLayers.olwrapperLoad);
-});
-
-;
-Fay$$_(Index.main,true);
-
diff --git a/snaplets/fay/src/Index.hs b/snaplets/fay/src/Index.hs
deleted file mode 100644
--- a/snaplets/fay/src/Index.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RebindableSyntax  #-}
-{-# LANGUAGE EmptyDataDecls    #-}
-{-# OPTIONS -Wall -fno-warn-name-shadowing -fno-warn-unused-do-bind #-}
-
-module Index where
-
-import           Prelude          hiding (void)
-import           JQuery           hiding (Element)
-import           Fay.Text                (Text, fromString)
-import           FFI
-import           OpenLayers -- include OpenLayers, to wrap the OlApp
-
-
-addOnload :: Fay f -> Fay ()
-addOnload = ffi "window.addEventListener(\"load\", %1)"
-
-main :: Fay ()
-main = addOnload onload
-
-void :: Fay f -> Fay ()
-void f = f >> return ()
-
-onload :: Fay ()
-onload = void $ do
-  olwrapperLoad  -- include OpenLayers
diff --git a/snaplets/heist/templates/index.tpl b/snaplets/heist/templates/index.tpl
deleted file mode 100644
--- a/snaplets/heist/templates/index.tpl
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html>
-
-<!-- minimum code
-<html>
-	<head>
-		<script src="http://openlayers.org/en/v3.1.1/build/ol.js"/>
-		<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"/>
-		<script src="/fay/Index.js"/>
-	</head>
-	<body>Hello Map
-		<div id="map" style="width: 200px; height: 200px;"/>
-	</body>
-</html>
--->
-
-
-<!-- tutorial -->
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-		<title>Haskell OpenLayers Wrapper - diploma thesis TU Vienna 2014/2015 - Geoinformation</title>
-		<script src="http://openlayers.org/en/v3.1.1/build/ol.js"/>
-		<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"/>
-		<script src="/fay/Index.js"/>
-		<style type="text/css">
-			* {
-				font-family: Arial, Verdana, Helvetica, sans-serif;
-			}
-			#map {
-				width: 500px;
-				height: 300px;
-			}
-		</style>
-	</head>
-	<body>
-		<center>
-			<p><b>Haskell OpenLayers Wrapper</b></p>
-			
-			<div id="mapdesc"></div>
-			
-			<table style="padding: 12px;">
-				<tr>
-					<td id="table1" style="color: red;    padding-right: 12px"/>
-					<td id="table2" style="color: purple; padding-right: 12px"/>
-					<td id="table3" style="color: orange; padding-right: 12px"/>
-					<td id="table4" style="color: green"/>
-				</tr>
-			</table>
-			
-			<div id="map"></div>
-			
-			<table style="padding: 12px;">
-				<tr>
-					<td>Zoomlevel:</td>
-					<td>
-						<div id="zoomlabel"     align="center" style="padding: 4px"></div>
-					</td>
-				</tr>
-				<tr>
-					<td>Kartenzentrum (WGS 84):</td>
-					<td>
-						<div id="wgslabel"      align="center" style="padding: 4px"></div>
-					</td>
-				</tr>
-				<tr>
-					<td>Kartenzentrum (Mercator):</td>
-					<td>
-						<div id="mercatorlabel" align="center" style="padding: 4px"></div>
-					</td>
-				</tr>
-			</table>
-		</center>
-	</body>
-</html>
diff --git a/src/Application.hs b/src/Application.hs
deleted file mode 100644
--- a/src/Application.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TemplateHaskell   #-}
-
-module Application where
-
-import Control.Lens
-import Snap.Snaplet
-import Snap.Snaplet.Heist
-import Snap.Snaplet.Fay
-
-data App = App { 
-       _heist :: Snaplet (Heist App)
-     , _fay   :: Snaplet Fay
-        }
-
-makeLenses ''App
-
-instance HasHeist App where heistLens = subSnaplet heist
-
-type AppHandler = Handler App App
diff --git a/src/Site.hs b/src/Site.hs
deleted file mode 100644
--- a/src/Site.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE PackageImports #-}
-
-module Site ( app ) where
-
-import               Data.ByteString     (ByteString)
-import               Snap.Snaplet
-import               Snap.Snaplet.Fay
-import               Snap.Snaplet.Heist
-import               Snap.Util.FileServe
-import  "base"       Prelude
-
-----------------------------------------------------------
-import           Application
-
-routes :: [(ByteString, AppHandler ())]
-routes = [
-           ("/fay",    with fay fayServe)
-         , ("/static", serveDirectory "static")
-         ]
-
-app :: SnapletInit App App
-app = makeSnaplet "app" "" Nothing $ do
-    h <- nestSnaplet "" heist ( heistInit "templates" )
-    f <- nestSnaplet "fay" fay initFay
-    addRoutes routes
-    return $ App h f
diff --git a/wrapper/OpenLayers/HtmlInternal.hs b/wrapper/OpenLayers/HtmlInternal.hs
new file mode 100644
--- /dev/null
+++ b/wrapper/OpenLayers/HtmlInternal.hs
@@ -0,0 +1,9 @@
+module OpenLayers.HtmlInternal where
+
+buttonElement = "<input>"
+divElement  = "<div>"
+formElement  = "<form>"
+inputTextElement = "<input type=text>"
+inputCheckboxElement = "<input type=checkbox>"
+aElement  = "<a>"
+pElement  = "<p>"
diff --git a/wrapper/OpenLayers/Internal.hs b/wrapper/OpenLayers/Internal.hs
deleted file mode 100644
--- a/wrapper/OpenLayers/Internal.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-module OpenLayers.HtmlInternal where
-
-buttonElement = "<input>"
-divElement  = "<div>"
-formElement  = "<form>"
-inputTextElement = "<input type=text>"
-inputCheckboxElement = "<input type=checkbox>"
-aElement  = "<a>"
-pElement  = "<p>"
