text: function transitionFunction(data){
  ///////////////////////////////////////////////////////////////////////
  // Standard LIDL Header (Standard JS function definitions)
  function clone(a) {if (!a) return a;var c, b = [Number, String, Boolean];if (b.forEach(function(b) { a instanceof b && (c = b(a)); }), "undefined" == typeof c) if ("[object Array]" === Object.prototype.toString.call(a)) c = [], a.forEach(function(a, b, d) { c[b] = clone(a); }); else if ("object" == typeof a) if (a.nodeType && "function" == typeof a.cloneNode) c = a.cloneNode(!0); else if (a.prototype) c = a; else if (a instanceof Date) c = new Date(a); else { c = {}; for (var d in a) c[d] = clone(a[d]); } else c = a; return c;}
  
  var theInterface = clone(data.inter);
  var previousState = data.state;
  var nextState = clone(previousState);
  var theArgs = clone(data.args);
  var active = "lidl_active_value";
  var inactive = null;
  
  
  ///////////////////////////////////////////////////////////////////////
  // Custom LIDL Header (Custom JS function definitions)
  var isActive = function(_) {
    return (_ !== null && _ !== undefined);
  };
  
  var cool = function(_) {
    if (isActive(_.a) && isActive(_.b)) {
      return {
        sum: (_.a + _.b),
        diff: (_.a - _.b)
      };
    } else {
      return {
        sum: inactive,
        diff: inactive
      };
    }
  };
  
  
  var isInactive = function(y){return !isActive(y);};
  
  
  var fallback = function(_) {
    return (isActive(_.a) ? _.a : _.b);
  };
  
  var return0 = function(_) {
    return 0;
  };
  
  
  var return1 = function(_) {
    return 1;
  };
  
  var addition = function(_) {
    if (isActive(_.a) && isActive(_.b)) {
      return _.a + _.b;
    } else {
      return inactive;
    }
  };
  
  var multiplication = function(_) {
    if (isActive(_.a) && isActive(_.b)) {
      return _.a * _.b;
    } else {
      return inactive;
    }
  };
  
  var substraction = function(_) {
    if (isActive(_.a) && isActive(_.b)) {
      return _.a - _.b;
    } else {
      return inactive;
    }
  };
  
  var division = function(_) {
    if (isActive(_.a) && isActive(_.b)) {
      return _.a / _.b;
    } else {
      return inactive;
    }
  };
  
  var remainder = function(_) {
    if (isActive(_.a) && isActive(_.b)) {
      return _.a % _.b;
    } else {
      return inactive;
    }
  };
  
  var power = function(_) {
    if (isActive(_.a) && isActive(_.b)) {
      return Math.pow(_.a, _.b);
    } else {
      return inactive;
    }
  };
  
  var addOne = function(_) {
    if (isActive(_))
      return _ + 1;
    else {
      return inactive;
    }
  };
  
  var identity = function(_) {
    return _;
  };
  
  var isEqual = function(_) {
    if (isActive(_.a) && isActive(_.b)) {
      return (_.a === _.b) ? true : false;
    } else {
      return inactive;
    }
  };
  
  
  var boolNot = function(_) {
    if (isActive(_)) {
      return !_;
    } else {
      return inactive;
    }
  };
  
  var boolAnd = function(_) {
    if (isActive(_) && isActive(_.a) && isActive(_.b)) {
      return _.a && _.b;
    } else {
      return inactive;
    }
  };
  
  var boolOr = function(_) {
    if (isActive(_)&& isActive(_.a) && isActive(_.b)) {
      return _.a || _.b;
    } else {
      return inactive;
    }
  };
  
  var boolXor = function(_) {
    if (isActive(_)&& isActive(_.a) && isActive(_.b)) {
      return ( _.a && !_.b ) || ( !_.a && _.b ) ;
    } else {
      return inactive;
    }
  };
  
  
  var ifThenElse = function(_) {
    if (isActive(_)) {
      if (isActive(_.cond)) {
        if (_.cond === true) {
          return _.a;
        } else if (_.cond === false) {
          return _.b;
        } else {
          return inactive;
        }
      } else {
        return inactive;
      }
    } else {
      return inactive;
    }
  };
  
  
  var whenThenElse = function(_) {
    if (isActive(_)) {
      if (isActive(_.cond)) {
        if (_.cond === true) {
          return {
            a: active,
            b: inactive
          };
        } else if (_.cond === false) {
          return {
            a: inactive,
            b: active
          };
        } else {
          return inactive;
        }
      } else {
        return inactive;
      }
    } else {
      return inactive;
    }
  };
  
  
  var all = function(_) {
    return {
      a: _,
      b: _,
      c: _,
      d: _,
      e: _,
      f: _,
      g: _,
      h: _,
      i: _,
      j: _,
      k: _,
      l: _,
      m: _,
      n: _,
      o: _,
      p: _
    };
  };
  
  
  var cursor = function(mouse) {
    var cursor = {
      type: "shadow",
      blur: mouse.buttons === 0 ? 20 : 10,
      offset: {
        x: 0,
        y: mouse.buttons === 0 ? 4 : 2
      },
      color: "rgba(0, 0, 0, 0.5)",
      content: {
        type: "translate",
        x: mouse.position.x,
        y: mouse.position.y,
        content: {
          type: "scale",
          width: mouse.buttons === 0 ? 1 : 0.8,
          height: mouse.buttons === 0 ? 1 : 0.8,
          content: {
            type: "fill",
            style: "rgba(200, 0, 200, 1)",
            content: {
              type: "path",
              content: [{
                type: "begin"
              }, {
                type: "move",
                x: 0,
                y: 0
              }, {
                type: "line",
                x: 0,
                y: 15
              }, {
                type: "line",
                x: 10.6,
                y: 10.6
              }, {
                type: "close"
              }]
            }
          }
        }
      }
    };
    return cursor;
  }
  
  var toString = function(_){
    if(isActive(_)){
      return _+"";
    } else {
      return inactive;
    }
  }
  
  var button = function(button) {
    var button = {
      type: "shadow",
      blur: button.pushed ? 10 : 20,
      offset: {
        x: 0,
        y: button.pushed ? 2 : 4
      },
      color: "rgba(0, 0, 0, 0.5)",
      content: {
        type: "group",
        content: [{
          type: "fill",
          style: "rgba(0, 171, 255, 1)",
          content: {
            type: "rect",
            x: button.layout.x,
            y: button.layout.y,
            width: button.layout.width,
            height: button.layout.height
          }
        }, {
          type: "fill",
          style: "rgba(255, 255, 255, 1)",
          content: {
            type: "text",
            textBaseline: "middle",
            textAlign: "center",
            font: "200 30px Helvetica neue",
            text: button.text,
            x: button.layout.x + button.layout.width / 2,
            y: button.layout.y + button.layout.height / 2
          }
        }]
      }
    };
    return button;
  }
  
  
  
  
  var label = function(_) {
    var label = {
          type: "fill",
          style: "rgba(56, 56, 56, 1)",
          content: {
            type: "text",
            textBaseline: "middle",
            textAlign: "center",
            font: "200 30px Helvetica neue",
            text: _.text,
            x: _.layout.x + _.layout.width / 2,
            y: _.layout.y + _.layout.height / 2
          }
        };
    return label;
  }
  
  
  
  var group = function(elements) {
    var group = {
        type: "group",
        content: [elements.a,elements.b ]
      };
    return group;
  }
  
  // Checks if a point is inside a rectangle (picking)
  var isInside = function(_){
    if(isActive(_) && isActive(_.point) && isActive(_.rect)){
      return _.point.x >= _.rect.x && _.point.x <= _.rect.x + _.rect.width && _.point.y >= _.rect.y && _.point.y <= _.rect.y + _.rect.height;
    } else {
      return inactive;
    }
  }
  
  // Returns a rectangle which is a fraction of a column of another rectanle
  var columnElement = function(_){
    if(isActive(_) && isActive(_.interval) && isActive(_.rect)){
      return {x:_.rect.x,y:_.rect.y+_.interval.start*_.rect.height,width:_.rect.width,height:_.rect.height*(_.interval.end - _.interval.start)};
    } else {
      return inactive;
    }
  }
  
  // Returns a rectangle which is a fraction of a column of another rectanle
  var rowElement = function(_){
    if(isActive(_) && isActive(_.interval) && isActive(_.rect)){
      return {y:_.rect.y,x:_.rect.x+_.interval.start*_.rect.width,height:_.rect.height,width:_.rect.width*(_.interval.end - _.interval.start)};
    } else {
      return inactive;
    }
  }
  
  // Returns a rectangle which is inset with a margin inside a bigger rectangle
  var inset = function(_){
    if(isActive(_) && isActive(_.margin) && isActive(_.rect)){
      return {x:_.rect.x + _.margin,y:_.rect.y + _.margin,width:_.rect.width-2*_.margin,height:_.rect.height-2*_.margin};
    } else {
      return inactive;
    }
  }
  
  
  ///////////////////////////////////////////////////////////////////////
  // Declaration of variables (Edges of the graph)
  var edge_21709 = inactive;
  var edge_21710 = inactive;
  var edge_21726 = inactive;
  var edge_21727 = inactive;
  
  ///////////////////////////////////////////////////////////////////////
  // Data flow processing (Nodes of the graph)
  // node_21706
  edge_21710 = cursor;
  // node_21703
  edge_21709 = active;
  // node_21659
  edge_21726=theInterface.mouse;
  // node_21708
  if(edge_21709 === active && edge_21710!==null && edge_21710!==undefined) {edge_21727 = edge_21710(edge_21726);}
  // node_21661
  theInterface.graphics=edge_21727;
  
  
  ///////////////////////////////////////////////////////////////////////
  // Return statement
    return {
        memo: {},
        state: nextState,
        args: theArgs,
        inter: theInterface
      };
  
  }
  
  function initializationFunction(data){
  return {
        memo: {},
        state: {},
        args: {},
        inter: {}
      };
  
  }
  
  module.export={transitionFunction:  transitionFunction ,initializationFunction: initializationFunction};