{
  "draw2d": [
    {
      "type": "shape_designer.figure.ExtPolygon",
      "id": "6e834d54-6700-ad9b-ab50-0faefeaea483",
      "x": 7987.5,
      "y": 7980,
      "width": 25,
      "height": 40,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "baseClass": "draw2d.SetFigure",
        "code": "/**\n * Generated Code for the Draw2D touch HTML5 lib.\n * File will be generated if you save the *.shape file.\n *\n * by 'Draw2D Shape Designer'\n *\n * Custom JS code to tweak the standard behaviour of the generated\n * shape. add your custom code and event handler here.\n *\n * Looks disconcerting - extending my own class. But this is a good method to\n * merge basic code and override them with custom methods.\n */\ntestShape = testShape.extend({\n\n    init: function(attr, setter, getter){\n         this._super(attr, setter, getter);\n\n        this.attr({resizeable:false});\n        this.installEditPolicy(new draw2d.policy.figure.AntSelectionFeedbackPolicy());\n    },\n\n    /**\n     *  Called by the simulator for every calculation\n     *  loop\n     *  @param {Object} context context where objects can store or handover global variables to other objects.\n     *  @required\n     **/\n    calculate:function( context)\n    {\n        var i1 = this.getInputPort(0);\n        var i2 = this.getInputPort(1);\n        var o1 = this.getOutputPort(0);\n        \n       o1.setValue( (i1.getValue() && !i2.getValue() ) || ( !i1.getValue() && i2.getValue() ));\n    },\n\n\n    /**\n     *  Called if the simulation mode is starting\n     *  @required\n     **/\n    onStart:function(context)\n    {\n    },\n\n    /**\n     *  Called if the simulation mode is stopping\n     *  @required\n     **/\n    onStop:function(context)\n    {\n    },\n\n    /**\n     * Get the simulator a hint which kind of hardware the shapes requires or supports\n     * This helps the simulator to bring up some dialogs and messages if any new hardware is connected/get lost\n     * and your are running a circuit which needs this kind of hardware...\n     **/\n    getRequiredHardware: function(){\n      return {\n        raspi: false,\n        arduino: false\n      }\n    }\n\n});",
        "markdown": "# XOR Gate\n\n## Description\n`XOR gate` (sometimes EOR, or EXOR and pronounced as Exclusive OR) is \na digital logic gate that gives a true (1 or HIGH) output when the \nnumber of true inputs is odd. An XOR gate implements an exclusive \nor; that is, a true output results if one, and only one, of the \ninputs to the gate is true. If both inputs are false (0/LOW) or \nboth are true, a false output results.\n \n\n\n## Logic table\n\n| INPUT 1   | INPUT   |  OUTPUT    |\n|:---------:|:-------:|:----------:|\n| Low       | Low     |  Low       |\n| `High`      | Low     |  `High`       |\n| Low       | `High`    |  `High`       |\n| `High`      | `High`    |  Low    |\n\n",
        "name": "shape"
      },
      "cssClass": "shape_designer_figure_PolyCircle",
      "ports": [],
      "bgColor": "rgba(252,252,252,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "radius": 0,
      "dasharray": null,
      "vertices": [
        {
          "x": 7987.5,
          "y": 8019.992866146254
        },
        {
          "x": 7987.601511537635,
          "y": 8020
        },
        {
          "x": 7991.925088685785,
          "y": 8019.696155060245
        },
        {
          "x": 7996.117296130125,
          "y": 8018.793852415718
        },
        {
          "x": 8000.050755768817,
          "y": 8017.320508075689
        },
        {
          "x": 8003.6059514211665,
          "y": 8015.320888862379
        },
        {
          "x": 8006.674860266292,
          "y": 8012.855752193731
        },
        {
          "x": 8009.164235061877,
          "y": 8010
        },
        {
          "x": 8010.998437414442,
          "y": 8006.840402866514
        },
        {
          "x": 8012.121736013657,
          "y": 8003.472963553339
        },
        {
          "x": 8012.5,
          "y": 8000
        },
        {
          "x": 8012.121736013657,
          "y": 7996.527036446661
        },
        {
          "x": 8010.998437414442,
          "y": 7993.159597133486
        },
        {
          "x": 8009.164235061877,
          "y": 7990
        },
        {
          "x": 8006.674860266292,
          "y": 7987.144247806269
        },
        {
          "x": 8003.6059514211665,
          "y": 7984.679111137621
        },
        {
          "x": 8000.050755768817,
          "y": 7982.679491924311
        },
        {
          "x": 7996.117296130125,
          "y": 7981.206147584282
        },
        {
          "x": 7991.925088685785,
          "y": 7980.303844939755
        },
        {
          "x": 7987.601511537635,
          "y": 7980
        },
        {
          "x": 7987.5,
          "y": 7980.007133853746
        },
        {
          "x": 7987.5,
          "y": 8019.992866146254
        }
      ],
      "blur": 0,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.SizeFilter"
        },
        {
          "name": "shape_designer.filter.FillColorFilter"
        },
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "19fd1dcb-f9e4-190d-a717-7444122d9964",
      "x": 8007.0424,
      "y": 7995,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "output",
        "type": "Output",
        "direction": 1,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "7297563e-896e-648c-d774-7e1a662d65a4",
      "x": 7982.3967999999995,
      "y": 7983.5,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "input0",
        "type": "Input",
        "direction": 3,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "31c229c7-f64e-5b82-2349-767cb9cd57be",
      "x": 7982.3967999999995,
      "y": 8007,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "input1",
        "type": "Input",
        "direction": 3,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtLine",
      "id": "b77b5db1-d31c-2f1b-838b-92a1c9dd221d",
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "Line"
      },
      "cssClass": "shape_designer_figure_ExtLine",
      "stroke": 1,
      "color": "rgba(0,0,0,1)",
      "outlineStroke": 0,
      "outlineColor": "rgba(0,0,0,0)",
      "policy": "draw2d.policy.line.VertexSelectionFeedbackPolicy",
      "vertex": [
        {
          "x": 7990.428599999999,
          "y": 7995.418200000003
        },
        {
          "x": 8006.0211,
          "y": 7995.210300000003
        },
        {
          "x": 8005.8132,
          "y": 7995.210300000003
        }
      ],
      "router": "draw2d.layout.connection.VertexRouter",
      "radius": "",
      "filters": [
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtLine",
      "id": "02d3b02a-8676-2ad4-ed9f-dd7ab14e8be4",
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "Line"
      },
      "cssClass": "shape_designer_figure_ExtLine",
      "stroke": 1,
      "color": "rgba(0,0,0,1)",
      "outlineStroke": 0,
      "outlineColor": "rgba(0,0,0,0)",
      "policy": "draw2d.policy.line.VertexSelectionFeedbackPolicy",
      "vertex": [
        {
          "x": 7990.438999999995,
          "y": 8000.002400000002
        },
        {
          "x": 8006.0314999999955,
          "y": 7999.794500000003
        },
        {
          "x": 8005.823599999995,
          "y": 7999.794500000003
        }
      ],
      "router": "draw2d.layout.connection.VertexRouter",
      "radius": "",
      "filters": [
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtLine",
      "id": "32f7617b-9783-f46a-0606-1503a9f247c2",
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "Line"
      },
      "cssClass": "shape_designer_figure_ExtLine",
      "stroke": 1,
      "color": "rgba(0,0,0,1)",
      "outlineStroke": 0,
      "outlineColor": "rgba(0,0,0,0)",
      "policy": "draw2d.policy.line.VertexSelectionFeedbackPolicy",
      "vertex": [
        {
          "x": 7990.449399999993,
          "y": 8004.794500000002
        },
        {
          "x": 8006.041899999994,
          "y": 8004.586600000002
        },
        {
          "x": 8005.8339999999935,
          "y": 8004.586600000002
        }
      ],
      "router": "draw2d.layout.connection.VertexRouter",
      "radius": "",
      "filters": [
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtLine",
      "id": "043a0e75-c693-9a27-2256-87beea17af54",
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "Line"
      },
      "cssClass": "shape_designer_figure_ExtLine",
      "stroke": 1,
      "color": "rgba(0,0,0,1)",
      "outlineStroke": 0,
      "outlineColor": "rgba(0,0,0,0)",
      "policy": "draw2d.policy.line.VertexSelectionFeedbackPolicy",
      "vertex": [
        {
          "x": 7997.2893,
          "y": 7990.2207
        },
        {
          "x": 7997.0814,
          "y": 8008.1001
        }
      ],
      "router": "draw2d.layout.connection.VertexRouter",
      "radius": "",
      "filters": [
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    }
  ],
  "image": "data:image/png;base64,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"
}