{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e279e88d",
   "metadata": {},
   "source": [
    "# Speck Analysis Notebook"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d689cc8d",
   "metadata": {},
   "source": [
    "The following block initializes the chipwhisperer, as always"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0cccc556",
   "metadata": {},
   "outputs": [],
   "source": [
    "import chipwhisperer as cw\n",
    "import time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9dd8320a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Path to the Speck .hex file for reflashing\n",
    "PATH=\"/home/juan/documents/master-aits/subjects/implementation_attacks_and_countermeasures/praktikum/speck_cpa_cw/cw_firmware/simple-speck-CWLITEARM.hex\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d7f94c82",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'scope' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m/tmp/ipykernel_851327/1933793010.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mscope\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m: name 'scope' is not defined"
     ]
    }
   ],
   "source": [
    "scope.dis()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7793787d",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'cw' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m/tmp/ipykernel_851327/2459641658.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     10\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m     \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mscope\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnectStatus\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     12\u001b[0m         \u001b[0mscope\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcon\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'scope' is not defined",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m/tmp/ipykernel_851327/2459641658.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     12\u001b[0m         \u001b[0mscope\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcon\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     13\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mNameError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m     \u001b[0mscope\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscope\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     16\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'cw' is not defined"
     ]
    }
   ],
   "source": [
    "def flash(scope, prog):\n",
    "    cw.program_target(scope, prog, PATH)\n",
    "\n",
    "def reset_target(scope):\n",
    "    scope.io.nrst = 'low'\n",
    "    time.sleep(0.05)\n",
    "    scope.io.nrst = 'high_z'\n",
    "    time.sleep(0.05)\n",
    "\n",
    "try:\n",
    "    if not scope.connectStatus:\n",
    "        scope.con()\n",
    "except NameError:\n",
    "    scope = cw.scope()\n",
    "\n",
    "try:\n",
    "    target = cw.target(scope)\n",
    "except IOError:\n",
    "    print(\"INFO: Caught exception on reconnecting to target - attempting to reconnect to scope first.\")\n",
    "    print(\"INFO: This is a work-around when USB has died without Python knowing. Ignore errors above this line.\")\n",
    "    scope = cw.scope()\n",
    "    target = cw.target(scope)\n",
    "\n",
    "print(\"INFO: Found ChipWhispereršŸ˜\")\n",
    "\n",
    "prog = cw.programmers.STM32FProgrammer\n",
    "time.sleep(0.05)\n",
    "scope.default_setup()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bfd1f6a6",
   "metadata": {},
   "source": [
    "**Reset the target if required:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "4cc49970",
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_target(scope)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fe784f48",
   "metadata": {},
   "source": [
    "**Reflash the target if required:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "de6112ec",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Detected known STMF32: STM32F302xB(C)/303xB(C)\n",
      "Extended erase (0x44), this can take ten seconds or more\n",
      "Attempting to program 5827 bytes at 0x8000000\n",
      "STM32F Programming flash...\n",
      "STM32F Reading flash...\n",
      "Verified flash OK, 5827 bytes\n"
     ]
    }
   ],
   "source": [
    "flash(scope, prog)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86a7ff43",
   "metadata": {},
   "source": [
    "**Set an encryption key:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "103040b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 32 bytes of encryption key\n",
    "encryption_key = b\"\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f\"\n",
    "\n",
    "if len(encryption_key) == 32:\n",
    "    target.simpleserial_write(\"s\", encryption_key)\n",
    "    target.simpleserial_read(\"o\", 32)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9bfa204a",
   "metadata": {},
   "source": [
    "**Get the encryption key:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "bdfe5aba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CWbytearray(b'00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f')\n"
     ]
    }
   ],
   "source": [
    "target.simpleserial_write(\"k\", b'\\x00'*16)\n",
    "print(target.simpleserial_read(\"o\", 32))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "512daee1",
   "metadata": {},
   "source": [
    "**Encrypt a 16-byte block:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "180eb01b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CWbytearray(b'43 8f 18 9c 8d b4 ee 4e 3e f5 c0 05 04 01 09 41')\n"
     ]
    }
   ],
   "source": [
    "pt = b\"\\x70\\x6f\\x6f\\x6e\\x65\\x72\\x2e\\x20\\x49\\x6e\\x20\\x74\\x68\\x6f\\x73\\x65\"\n",
    "target.simpleserial_write(\"e\", pt)\n",
    "print(target.simpleserial_read(\"c\", 16))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "95dbb710",
   "metadata": {},
   "source": [
    "**Plot the power consumption of the encryption step:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "ffaaccc9",
   "metadata": {},
   "outputs": [],
   "source": [
    "def trace_encryption():\n",
    "    global scope, target\n",
    "    pt = b\"\\x70\\x6f\\x6f\\x6e\\x65\\x72\\x2e\\x20\\x49\\x6e\\x20\\x74\\x68\\x6f\\x73\\x65\"\n",
    "    return cw.capture_trace(scope, target, pt, b\"e\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "fe9e08b6",
   "metadata": {},
   "outputs": [
    {
     "ename": "OSError",
     "evalue": "Scope is not connected. Connect it first...",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mOSError\u001b[0m                                   Traceback (most recent call last)",
      "\u001b[0;32m/tmp/ipykernel_833812/1292385230.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mreset_target\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mscope\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mpt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrace_encryption\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m/tmp/ipykernel_833812/2495386390.py\u001b[0m in \u001b[0;36mtrace_encryption\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mglobal\u001b[0m \u001b[0mscope\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m     \u001b[0mpt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mb\"\\x70\\x6f\\x6f\\x6e\\x65\\x72\\x2e\\x20\\x49\\x6e\\x20\\x74\\x68\\x6f\\x73\\x65\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mcw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcapture_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mscope\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34mb\"e\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m~/.local/lib/python3.9/site-packages/chipwhisperer/__init__.py\u001b[0m in \u001b[0;36mcapture_trace\u001b[0;34m(scope, target, plaintext, key, ack)\u001b[0m\n\u001b[1;32m    331\u001b[0m         \u001b[0mtarget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_key\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mack\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mack\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    332\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 333\u001b[0;31m     \u001b[0mscope\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    334\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    335\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mplaintext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.local/lib/python3.9/site-packages/chipwhisperer/capture/scopes/OpenADC.py\u001b[0m in \u001b[0;36marm\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    334\u001b[0m         \"\"\"\n\u001b[1;32m    335\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnectStatus\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 336\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mOSError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Scope is not connected. Connect it first...\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    337\u001b[0m         \u001b[0;31m# with DelayedKeyboardInterrupt():\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    338\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mOSError\u001b[0m: Scope is not connected. Connect it first..."
     ]
    }
   ],
   "source": [
    "reset_target(scope)\n",
    "pt = trace_encryption()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "4e472e21",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≄ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'dblclick',\n",
       "        on_mouse_event_closure('dblclick')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            var img = evt.data;\n",
       "            if (img.type !== 'image/png') {\n",
       "                /* FIXME: We get \"Resource interpreted as Image but\n",
       "                 * transferred with MIME type text/plain:\" errors on\n",
       "                 * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "                 * to be part of the websocket stream */\n",
       "                img.type = 'image/png';\n",
       "            }\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                img\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.key === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.key;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.key !== 'Control') {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    else if (event.altKey && event.key !== 'Alt') {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    else if (event.shiftKey && event.key !== 'Shift') {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k' + event.key;\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.binaryType = comm.kernel.ws.binaryType;\n",
       "    ws.readyState = comm.kernel.ws.readyState;\n",
       "    function updateReadyState(_event) {\n",
       "        if (comm.kernel.ws) {\n",
       "            ws.readyState = comm.kernel.ws.readyState;\n",
       "        } else {\n",
       "            ws.readyState = 3; // Closed state.\n",
       "        }\n",
       "    }\n",
       "    comm.kernel.ws.addEventListener('open', updateReadyState);\n",
       "    comm.kernel.ws.addEventListener('close', updateReadyState);\n",
       "    comm.kernel.ws.addEventListener('error', updateReadyState);\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        var data = msg['content']['data'];\n",
       "        if (data['blob'] !== undefined) {\n",
       "            data = {\n",
       "                data: new Blob(msg['buffers'], { type: data['blob'] }),\n",
       "            };\n",
       "        }\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(data);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib notebook\n",
    "import matplotlib.pylab as plt\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(pt.wave, \"r\")\n",
    "plt.show()\n",
    "scope.dis()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "144b44c0",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}