aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErg <uinarf@autistici.org>2024-11-28 16:42:41 +0100
committerErg <uinarf@autistici.org>2024-11-28 16:42:41 +0100
commitd12675c238c77dc83a92eaaf8ec70a9dcf26a363 (patch)
tree5cf27ecfab92577e574e832ea5a7824474066460
parentbf8efbce7f202f1f7650f628955fb0e42d343a1f (diff)
downloadfastapi_blog-private.tar.gz
fastapi_blog-private.tar.bz2
fastapi_blog-private.zip
Add Private files :Pprivate
-rw-r--r--jupyter_files/Binhost_folder_structure.ipynb184
-rw-r--r--jupyter_files/Untitled.ipynb211
-rw-r--r--jupyter_files/creating_fastapi_static_blog.ipynb507
-rw-r--r--static/html/Binhost_folder_structure.html7736
-rw-r--r--static/html/creating_fastapi_static_blog.html8160
5 files changed, 16798 insertions, 0 deletions
diff --git a/jupyter_files/Binhost_folder_structure.ipynb b/jupyter_files/Binhost_folder_structure.ipynb
new file mode 100644
index 0000000..da2c7ed
--- /dev/null
+++ b/jupyter_files/Binhost_folder_structure.ipynb
@@ -0,0 +1,184 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "0b397cbb-8db3-40d9-a0a9-27ba0a774021",
+ "metadata": {},
+ "source": [
+ "## Automatically creating new binhost directories when profile or gcc version changes"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "97c6e8be-a571-4fea-84c4-b226f03f56c6",
+ "metadata": {},
+ "source": [
+ "On Gentoo Linux packages are compiled which is a time and energy consuming.\n",
+ "To minimise both, I have a binhost to share compiled binaries between devices.\n",
+ "The issues occurs when gcc major version changes - or a profile bump happens.\n",
+ "If I do not notice either - problem. Binaries might not be compatible.\n",
+ "So I wanted to automate a process of detection of those changes and automatically create subfolder for new binaries.\n",
+ "When investigating I learned a neat trick. For the wise ones this is trivial, for me it was enligtening.\n",
+ "Here it comes."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2a688afd-5f24-4eab-a1c7-119d372367b5",
+ "metadata": {},
+ "source": [
+ "On a regular system, emerge resides here:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b1098db8-2f77-4b56-acef-f58113107dad",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ which emerge\n",
+ "/usr/bin/emerge"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9a1dcd6c-3f8c-455f-9d56-21e5157d0846",
+ "metadata": {},
+ "source": [
+ "On my box with binhost:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "bcb9918c-20fb-49fd-baaf-b3b63356de5a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ which emerge\n",
+ "/usr/local/bin/emerge"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a84cf35c-e744-47c9-9500-d9b8c7d3bfef",
+ "metadata": {},
+ "source": [
+ "And here is $PATH:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "94092561-ae6b-41eb-831a-71bffcf30e6e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ echo $PATH\n",
+ "/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/bin:/usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "eb05de7d-f2f3-4cd3-acc2-769e096a3a5b",
+ "metadata": {},
+ "source": [
+ "So we see that on binhost box, there is emerge that resides in location preceeding regular emerge - so it gets called first.\n",
+ "It contains a shell script as follows:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b9f78265-a1de-47eb-be21-bb66c1ed3bed",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#!/usr/bin/env bash\n",
+ "#\n",
+ "# Script checking that binhost path exists before running emerge and\n",
+ "# creating it if not exists\n",
+ "\n",
+ "PROFILE=$(eselect profile show|sed -n 2p|cut -d '/' -f4)\n",
+ "GCC_VERSION=$(eselect gcc show|cut -d '-' -f5)\n",
+ "BINHOST_DIR=\"/var/cache/binpkgs/${PROFILE}/gcc-${GCC_VERSION}.x/armv8a\"\n",
+ "\n",
+ "if [ ! -d \"${BINHOST_DIR}\" ]; then\n",
+ " echo \"${BINHOST_DIR} does not exist, creating\"\n",
+ " mkdir -p \"${BINHOST_DIR}\"\n",
+ "else echo \"Binhost directory ${BINHOST_DIR} exists, proceeding with emerge ...\"\n",
+ "fi\n",
+ "\n",
+ "PKGDIR=\"${BINHOST_DIR}\" /usr/bin/emerge \"$@\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d6d085ea-b68f-4220-adaf-00223393e58e",
+ "metadata": {},
+ "source": [
+ "So on every profile change subfolder to /var/cache/binpkgs gets created,\n",
+ "on every gcc major version change, subfolder to /var/cache/binpkgs/<profile> gets created.\n",
+ "If folder already exists script only prints a message.\n",
+ "Then it calls /usr/bin/emerge - the regular emerge - with $PKGDIR variable, so binary packages are saved to the correct directory. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1d464645-b7ac-4cbc-b5cc-1bd4bd976f06",
+ "metadata": {},
+ "source": [
+ "This is structure of /var/cache/binpkgs:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "dee2b348-d16d-4709-a7cd-ac9424934009",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ tree -L 3 /var/cache/binpkgs/\n",
+ "/var/cache/binpkgs/\n",
+ "├── 17.0\n",
+ "│   └── gcc-13.x\n",
+ "│   └── armv8a\n",
+ "└── 23.0\n",
+ " ├── gcc-13.x\n",
+ " │   └── armv8a\n",
+ " └── gcc-14.x\n",
+ " └── armv8a"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9f8f4a71-9fd1-4678-9cb0-a580c94f4582",
+ "metadata": {},
+ "source": [
+ "One less thing to worry about."
+ ]
+ }
+ ],
+ "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.12.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/jupyter_files/Untitled.ipynb b/jupyter_files/Untitled.ipynb
new file mode 100644
index 0000000..feca323
--- /dev/null
+++ b/jupyter_files/Untitled.ipynb
@@ -0,0 +1,211 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "78a149e6-ef3b-4b6e-a633-0c1d2eb2a7b1",
+ "metadata": {},
+ "source": [
+ "# Setting up Docker for FastAPI and Jenkins CI-CD on Gentoo\n",
+ "\n",
+ "## Prerequisites:\n",
+ "- Docker\n",
+ "- Jenkins\n",
+ "- FastAPI\n",
+ "\n",
+ "## Preparations.\n",
+ "\n",
+ "\n",
+ "Create directory for your stuff, call it tech_project, enter it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "4d35806b-a9f8-43b0-82fd-b9a669295562",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ mkdir tech_project && cd tech_project"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "bdfd8575-625f-488b-aec3-73ce987086d2",
+ "metadata": {},
+ "source": [
+ "Create virtual Python environment:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "42b86b21-ffa1-4d22-af97-a130b76e04d0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ python -m venv venv"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "ba4a8e5c-5e31-4e67-9c8f-17c75b52f5e2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "You can activate it now with:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "edaeb7c2-f19a-4a6b-bb5f-4c5fd93dcf60",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ source venv/bin/activate"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8ebfbc06-03a0-4380-a9aa-970aafdbde75",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "(venv) - That's what should prepend your prompt now."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "bb6d9596-a6fd-4127-a626-e63851a3e38f",
+ "metadata": {},
+ "source": [
+ "Create a requirements.txt file, check which versions of fastapi and pydantic you have and use those:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "a199797a-73ea-4015-b58f-e87ead2ea3f0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fastapi>=0.111\n",
+ "pydantic>=2.7.3\n",
+ "uvicorn>=0.30.1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "25c4e82b-0685-400e-9f40-c171deefcc1f",
+ "metadata": {},
+ "source": [
+ "Create a Dockerfile:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "237c5063-5370-4be7-8e29-e0e9802077e6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "FROM python:3.12\n",
+ "WORKDIR app/ .\n",
+ "COPY requirements.txt .\n",
+ "RUN pip install --no-cache-dir -r requirements.txt\n",
+ "CMD [\"python\", \"main.py\"]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e2b41ff9-c9d3-4a84-bb22-0494990ef272",
+ "metadata": {},
+ "source": [
+ "Start docker service (as root):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "37b1ef3f-8ed1-4c40-9ce9-5e88843356f9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# rc-service docker start"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7df0e4c5-20f2-4367-be36-e43617dab0ed",
+ "metadata": {},
+ "source": [
+ "Build docker image:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "1220f1b3-1b2c-4bba-a51f-54bd1401b1ec",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ docker build -t fastapi_tech_blog ."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "36881148-8ff4-48e6-80d9-8c53a05bb90b",
+ "metadata": {},
+ "source": [
+ "Watch if warn you and build:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c962a037-75ef-4b22-b46a-f24da4994be4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\n",
+ " ---> Removed intermediate container bb903c49b10d\n",
+ " ---> 2a71d86268fd\n",
+ "Step 5/7 : COPY . .\n",
+ " ---> 9fdcdd3d46cb\n",
+ "Step 6/7 : EXPOSE 8000\n",
+ " ---> Running in e63e0e7b3ccc\n",
+ " ---> Removed intermediate container e63e0e7b3ccc\n",
+ " ---> 72d0d9f39af7\n",
+ "Step 7/7 : CMD [\"python\", \"main.py\"]\n",
+ " ---> Running in b49bc996f993\n",
+ " ---> Removed intermediate container b49bc996f993\n",
+ " ---> fb426f2a7e15\n",
+ "Successfully built fb426f2a7e15\n",
+ "Successfully tagged fastapi_tech_blog:latest"
+ ]
+ }
+ ],
+ "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.12.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/jupyter_files/creating_fastapi_static_blog.ipynb b/jupyter_files/creating_fastapi_static_blog.ipynb
new file mode 100644
index 0000000..b2c1851
--- /dev/null
+++ b/jupyter_files/creating_fastapi_static_blog.ipynb
@@ -0,0 +1,507 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "d745c9ae-31f8-47e5-83df-42c0a39e700e",
+ "metadata": {},
+ "source": [
+ "# Setting up FastAPI with Uvicorn and Openrc to serve Jupyter Notebook generated html files."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5dec85d7-1ac2-4bdd-a5c4-40dc8ec80c1f",
+ "metadata": {},
+ "source": [
+ "## Prerequisites:\n",
+ "- system with openrc\n",
+ "- fastapi\n",
+ "- uvicorn\n",
+ "- jupyter notebook (optional)\n",
+ "- nginx"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3d5a9177-1fcd-4bc6-97dd-f85c712e8a9e",
+ "metadata": {},
+ "source": [
+ "## Creating FastAPI application"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6f2751d9-cdfe-417e-8a30-8768e2fd828e",
+ "metadata": {},
+ "source": [
+ "Create a directory for project and enter it:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "58fe2a08-afb0-400b-a8a2-063da88a2559",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ mkdir -p ~/Fastapi_blog/static && cd ~/Fastapi_blog"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2ad52653-7f16-489f-8a4b-e2fd08f90d05",
+ "metadata": {},
+ "source": [
+ "Create a file containing code and html template folder and template for the main page:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "27e461b5-279f-4143-ac69-5ef61b75e6af",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ touch main.py\n",
+ "$ mkdir templates\n",
+ "$ touch templates/main_page.html"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9c3d9c08-81ea-43b0-bea8-8486adb06d85",
+ "metadata": {},
+ "source": [
+ "main_page.html can be really minimal:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e6a61c2c-708e-462d-b487-0ddd23b5e08a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "<html>\n",
+ "<body>\n",
+ " <h1>List of articles</h1>\n",
+ " <h2>Number of posts: {{ files|length }}</h2>\n",
+ " {% if files %}\n",
+ " {% for item in files %}\n",
+ " <a href=\"static/html/{{ item }}\">{{ item }}</a><br>\n",
+ " {% endfor %}\n",
+ " {% endif %}\n",
+ "</body>\n",
+ "</html>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b15b4217-9343-4c73-aa44-f069f6d5e776",
+ "metadata": {},
+ "source": [
+ "Create basic FastAPI application serving static files at '/'. I want that as I'll be serving if from behind Nginx reverse proxy. Prefix will be set with Nginx conf file"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "90f95ae9-4079-440e-9f40-2889541cb727",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#!/usr/bin/env python\n",
+ "\n",
+ "\"\"\"\n",
+ "FastAPI site serving static html files.\n",
+ "\"\"\"\n",
+ "\n",
+ "from os import listdir\n",
+ "from fastapi import FastAPI\n",
+ "from fastapi.staticfiles import StaticFiles\n",
+ "from fastapi import FastAPI, Request\n",
+ "from fastapi.staticfiles import StaticFiles\n",
+ "from fastapi.templating import Jinja2Templates\n",
+ "\n",
+ "\n",
+ "ARTICLES = 'static/html'\n",
+ "templates = Jinja2Templates(directory=\"templates\")\n",
+ "LIST_OF_ARTICLES = [i for i in listdir(ARTICLES) if i.endswith('.html')]\n",
+ "\n",
+ "app = FastAPI()\n",
+ "\n",
+ "app.mount(\"/\", StaticFiles(directory=\"static\", html=True), name=\"static\")\n",
+ "\n",
+ "\n",
+ "@app.get(\"/\")\n",
+ "async def main_page(request: Request):\n",
+ " \"\"\"Generate main page\"\"\"\n",
+ " return templates.TemplateResponse(\n",
+ " \"main_page.html\", {\n",
+ " \"request\": request,\n",
+ " \"files\": LIST_OF_ARTICLES,\n",
+ " \"static\": ARTICLES,\n",
+ " }\n",
+ " )\n",
+ "\n",
+ "\n",
+ "if __name__ == \"__main__\":\n",
+ " uvicorn.run(\n",
+ " app,\n",
+ " port=8000,\n",
+ " host='127.0.0.1',\n",
+ " log_level=\"info\",\n",
+ " # uds=\"/run/tech_blog.sock\", <- uncomment if you want Unix socket\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0def2ab2-e037-4997-b472-59784554d12f",
+ "metadata": {},
+ "source": [
+ "Test run:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7e4b78e2-9412-40a0-ad23-b1ebdc32b34d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ uvicorn main:app --reload"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "1ff45780-0f1a-4f8a-a50d-7c52ad08f52d",
+ "metadata": {},
+ "source": [
+ "If we try to run it as regular user with 'uds=\"/run/tech_blog.sock\"' line uncommented we should get permission denied error as we don't have rights to create files in /run.\n",
+ "\n",
+ "In browser, take a peek at http://localhost:8000 and you should already see something.\n",
+ "\n",
+ "Create a file with a test html code:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f2cb8101-4914-494e-9c6e-222cd9cdb148",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ touch static/test.html"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0496d679-15a2-4610-815b-9e1b57285ebf",
+ "metadata": {},
+ "source": [
+ "Put this in it:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "3db82cd2-3f9f-4c74-b98b-2cf1b19dd353",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "<html>\n",
+ "<body>\n",
+ "\n",
+ "<h1>Fun stuff comming up</h1>\n",
+ "<p>Bob's your uncle!</p>\n",
+ "\n",
+ "</body>\n",
+ "</html> "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fd3b37dc-e3d3-48a0-a496-7f0060bc69c0",
+ "metadata": {},
+ "source": [
+ "Visit http://localhost:8000/\n",
+ "You should see the main page with test article and you should be able to navigate to the article clicking the link."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "cba92c27-c741-4959-88c5-b9790de7eddf",
+ "metadata": {},
+ "source": [
+ "## Jupyter side note"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f7fefa06-9d13-4793-8bb6-3f96f2171f25",
+ "metadata": {},
+ "source": [
+ "To write stuff with Jupyter Notebook start it up:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f7eadb7f-e811-4bee-a8d7-68c68ec9f9ca",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ jupyter-notebook"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d0ce0f2c-e633-4974-8ed4-1f4b3a021d6a",
+ "metadata": {},
+ "source": [
+ "In browser a new tab with jupyter notebook should have started. Write your fun stuff. Save it. If you don't want to execute cell content convert to html with:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7a4da315-d47b-4bec-8b17-f2cbf494f4d4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ jupyter nbconvert --to html <path to your file>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "80c327c4-d985-47d6-94fa-10e8e5b7d2b4",
+ "metadata": {},
+ "source": [
+ "If you want to execute cell content convert with:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "54af67cd-0d26-4373-9647-8943dec2f4ab",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ jupyter nbconvert --execute --to html <path to your file>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f8653115-4f64-40a7-9d72-0e088a607a07",
+ "metadata": {},
+ "source": [
+ "Want to change theme to dark?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "52d5866b-813d-4ef3-9886-c775e1c67d5b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ jupyter nbconvert --execute --to html <path to your file> --HTMLExporter.theme=dark"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e73f69fc-6c8a-4617-90bd-a0e788b89756",
+ "metadata": {},
+ "source": [
+ "Now put it in your `static` folder. It will be served by your FastAPI application."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c56ef398-9f2e-4253-bc37-22b5926b8c7c",
+ "metadata": {},
+ "source": [
+ "## Bash script"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f37aba78-c09b-4807-ba02-c72f48b9dba5",
+ "metadata": {},
+ "source": [
+ "In order to run our python script with Openrc first we need to create a Bash script:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "6f4052ac-f582-47fa-b702-34f1341dec88",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#!/usr/bin/env bash\n",
+ "\n",
+ "cd /home/discordia/Fastapi_blog || exit # If your login is different, change home directory name.\n",
+ "exec python main.py"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dedf511e-f6fd-4c41-8b02-a2eb25e9604a",
+ "metadata": {},
+ "source": [
+ "Save it (here as fastapi_blog.sh) as a root user to /usr/local/bin and make executable:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7c6e7b2d-33a3-4305-917b-c24155a648f2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# chmod ugo+x /usr/local/bin/fastapi_blog.sh"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1bf1a799-25b0-4008-b1d2-1a555cef79c5",
+ "metadata": {},
+ "source": [
+ "## Openrc service file"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "43794484-8e10-400d-a598-d1acefd455ee",
+ "metadata": {},
+ "source": [
+ "Now create a minimal service file"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f14c6b71-3f1f-4dd8-b62d-d79721a8d6fe",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#!/sbin/openrc-run\n",
+ "\n",
+ "supervisor=supervise-daemon\n",
+ "command=\"/usr/local/bin/fastapi_blog.sh\"\n",
+ "pidfile=\"/run/${RC_SVCNAME}.pid\"\n",
+ "command_args=\"-p ${pidfile}\"\n",
+ "command_background=True"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8982eef9-a095-4b57-b0a6-5d59ac12be78",
+ "metadata": {},
+ "source": [
+ "Save it as a root user in /etc/init.d and make executable:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6336a60f-6e8a-489b-8bc8-9b9e6f8e02fc",
+ "metadata": {},
+ "source": [
+ "Save it as a root user in /etc/init.d and make executable:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "445a5744-8e71-4104-8601-ad444ca0f9c1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# chmod ugo+x /etc/init.d/fastapi_blog"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0985e123-559c-4f9b-8bfc-7f75e9251756",
+ "metadata": {},
+ "source": [
+ "You should be able to start/restart/stop it normally:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c856613b-8541-43e4-b7e0-1d0f2a4a6d22",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# rc-service fastapi_blog start\n",
+ "# rc-service fastapi_blog restart\n",
+ "# rc-service fastapi_blog stop"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "719552bc-b736-41db-939c-6a1010ca9557",
+ "metadata": {},
+ "source": [
+ "If you're using Unix socket, check for existence of /run/fastapi_blog.sock.\n",
+ "Else navigate to http://127.0.0.1:8000/test.html to see page is indeed there."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b8f408bf-120c-4adf-8e8b-3dc019a015ae",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "$ ps aux | grep \"python main.py\""
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "13c17523-3603-4b8a-b8a2-563ae6dc27d5",
+ "metadata": {},
+ "source": [
+ "You want to see only one 'python main.py'.\n",
+ "At first I did not use exec which resulted in lingering processess. You don't want that.\n",
+ "\n",
+ "Now you can plug it in to your preffered proxy server using either a unix socket or a TCP socket."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3134cb86-be0f-456c-b755-cd4f43ef2810",
+ "metadata": {},
+ "source": [
+ "If you're using unix socket, check for existence of /run/fastapi_blog.sock, else either use lsof to see what's using port 8000 or navigate to http://127.0.0.1:8000/test.html"
+ ]
+ }
+ ],
+ "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.12.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/static/html/Binhost_folder_structure.html b/static/html/Binhost_folder_structure.html
new file mode 100644
index 0000000..1aaddb5
--- /dev/null
+++ b/static/html/Binhost_folder_structure.html
@@ -0,0 +1,7736 @@
+<!DOCTYPE html>
+
+<html lang="en">
+<head><meta charset="utf-8"/>
+<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
+<title>Binhost_folder_structure</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
+<style type="text/css">
+ pre { line-height: 125%; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
+.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
+.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
+.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
+.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
+.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
+.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
+.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
+.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
+.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
+.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
+.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
+.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
+.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
+.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
+.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
+.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
+.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
+.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
+.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
+.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
+.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
+.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
+.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
+.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
+.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
+.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
+.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
+.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
+.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
+.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
+.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
+.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
+.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
+ </style>
+<style type="text/css">
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*
+ * Mozilla scrollbar styling
+ */
+
+/* use standard opaque scrollbars for most nodes */
+[data-jp-theme-scrollbars='true'] {
+ scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
+ var(--jp-scrollbar-background-color);
+}
+
+/* for code nodes, use a transparent style of scrollbar. These selectors
+ * will match lower in the tree, and so will override the above */
+[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
+[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
+ scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
+}
+
+/* tiny scrollbar */
+
+.jp-scrollbar-tiny {
+ scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
+ scrollbar-width: thin;
+}
+
+/* tiny scrollbar */
+
+.jp-scrollbar-tiny::-webkit-scrollbar,
+.jp-scrollbar-tiny::-webkit-scrollbar-corner {
+ background-color: transparent;
+ height: 4px;
+ width: 4px;
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
+ background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
+ border-left: 0 solid transparent;
+ border-right: 0 solid transparent;
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
+ border-top: 0 solid transparent;
+ border-bottom: 0 solid transparent;
+}
+
+/*
+ * Lumino
+ */
+
+.lm-ScrollBar[data-orientation='horizontal'] {
+ min-height: 16px;
+ max-height: 16px;
+ min-width: 45px;
+ border-top: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] {
+ min-width: 16px;
+ max-width: 16px;
+ min-height: 45px;
+ border-left: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar-button {
+ background-color: #f0f0f0;
+ background-position: center center;
+ min-height: 15px;
+ max-height: 15px;
+ min-width: 15px;
+ max-width: 15px;
+}
+
+.lm-ScrollBar-button:hover {
+ background-color: #dadada;
+}
+
+.lm-ScrollBar-button.lm-mod-active {
+ background-color: #cdcdcd;
+}
+
+.lm-ScrollBar-track {
+ background: #f0f0f0;
+}
+
+.lm-ScrollBar-thumb {
+ background: #cdcdcd;
+}
+
+.lm-ScrollBar-thumb:hover {
+ background: #bababa;
+}
+
+.lm-ScrollBar-thumb.lm-mod-active {
+ background: #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
+ height: 100%;
+ min-width: 15px;
+ border-left: 1px solid #a0a0a0;
+ border-right: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
+ width: 100%;
+ min-height: 15px;
+ border-top: 1px solid #a0a0a0;
+ border-bottom: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='horizontal']
+ .lm-ScrollBar-button[data-action='decrement'] {
+ background-image: var(--jp-icon-caret-left);
+ background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='horizontal']
+ .lm-ScrollBar-button[data-action='increment'] {
+ background-image: var(--jp-icon-caret-right);
+ background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='vertical']
+ .lm-ScrollBar-button[data-action='decrement'] {
+ background-image: var(--jp-icon-caret-up);
+ background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='vertical']
+ .lm-ScrollBar-button[data-action='increment'] {
+ background-image: var(--jp-icon-caret-down);
+ background-size: 17px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-Widget {
+ box-sizing: border-box;
+ position: relative;
+ overflow: hidden;
+}
+
+.lm-Widget.lm-mod-hidden {
+ display: none !important;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
+ /* Title is rotated for horizontal accordion panel using CSS */
+ display: block;
+ transform-origin: top left;
+ transform: rotate(-90deg) translate(-100%);
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette {
+ display: flex;
+ flex-direction: column;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-CommandPalette-search {
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-content {
+ flex: 1 1 auto;
+ margin: 0;
+ padding: 0;
+ min-height: 0;
+ overflow: auto;
+ list-style-type: none;
+}
+
+.lm-CommandPalette-header {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.lm-CommandPalette-item {
+ display: flex;
+ flex-direction: row;
+}
+
+.lm-CommandPalette-itemIcon {
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemContent {
+ flex: 1 1 auto;
+ overflow: hidden;
+}
+
+.lm-CommandPalette-itemShortcut {
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemLabel {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.lm-close-icon {
+ border: 1px solid transparent;
+ background-color: transparent;
+ position: absolute;
+ z-index: 1;
+ right: 3%;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ padding: 7px 0;
+ display: none;
+ vertical-align: middle;
+ outline: 0;
+ cursor: pointer;
+}
+.lm-close-icon:after {
+ content: 'X';
+ display: block;
+ width: 15px;
+ height: 15px;
+ text-align: center;
+ color: #000;
+ font-weight: normal;
+ font-size: 12px;
+ cursor: pointer;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-DockPanel {
+ z-index: 0;
+}
+
+.lm-DockPanel-widget {
+ z-index: 0;
+}
+
+.lm-DockPanel-tabBar {
+ z-index: 1;
+}
+
+.lm-DockPanel-handle {
+ z-index: 2;
+}
+
+.lm-DockPanel-handle.lm-mod-hidden {
+ display: none !important;
+}
+
+.lm-DockPanel-handle:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ content: '';
+}
+
+.lm-DockPanel-handle[data-orientation='horizontal'] {
+ cursor: ew-resize;
+}
+
+.lm-DockPanel-handle[data-orientation='vertical'] {
+ cursor: ns-resize;
+}
+
+.lm-DockPanel-handle[data-orientation='horizontal']:after {
+ left: 50%;
+ min-width: 8px;
+ transform: translateX(-50%);
+}
+
+.lm-DockPanel-handle[data-orientation='vertical']:after {
+ top: 50%;
+ min-height: 8px;
+ transform: translateY(-50%);
+}
+
+.lm-DockPanel-overlay {
+ z-index: 3;
+ box-sizing: border-box;
+ pointer-events: none;
+}
+
+.lm-DockPanel-overlay.lm-mod-hidden {
+ display: none !important;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-Menu {
+ z-index: 10000;
+ position: absolute;
+ white-space: nowrap;
+ overflow-x: hidden;
+ overflow-y: auto;
+ outline: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-Menu-content {
+ margin: 0;
+ padding: 0;
+ display: table;
+ list-style-type: none;
+}
+
+.lm-Menu-item {
+ display: table-row;
+}
+
+.lm-Menu-item.lm-mod-hidden,
+.lm-Menu-item.lm-mod-collapsed {
+ display: none !important;
+}
+
+.lm-Menu-itemIcon,
+.lm-Menu-itemSubmenuIcon {
+ display: table-cell;
+ text-align: center;
+}
+
+.lm-Menu-itemLabel {
+ display: table-cell;
+ text-align: left;
+}
+
+.lm-Menu-itemShortcut {
+ display: table-cell;
+ text-align: right;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-MenuBar {
+ outline: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-MenuBar-content {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: row;
+ list-style-type: none;
+}
+
+.lm-MenuBar-item {
+ box-sizing: border-box;
+}
+
+.lm-MenuBar-itemIcon,
+.lm-MenuBar-itemLabel {
+ display: inline-block;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-ScrollBar {
+ display: flex;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-ScrollBar[data-orientation='horizontal'] {
+ flex-direction: row;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] {
+ flex-direction: column;
+}
+
+.lm-ScrollBar-button {
+ box-sizing: border-box;
+ flex: 0 0 auto;
+}
+
+.lm-ScrollBar-track {
+ box-sizing: border-box;
+ position: relative;
+ overflow: hidden;
+ flex: 1 1 auto;
+}
+
+.lm-ScrollBar-thumb {
+ box-sizing: border-box;
+ position: absolute;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-SplitPanel-child {
+ z-index: 0;
+}
+
+.lm-SplitPanel-handle {
+ z-index: 1;
+}
+
+.lm-SplitPanel-handle.lm-mod-hidden {
+ display: none !important;
+}
+
+.lm-SplitPanel-handle:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ content: '';
+}
+
+.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
+ cursor: ew-resize;
+}
+
+.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
+ cursor: ns-resize;
+}
+
+.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
+ left: 50%;
+ min-width: 8px;
+ transform: translateX(-50%);
+}
+
+.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
+ top: 50%;
+ min-height: 8px;
+ transform: translateY(-50%);
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-TabBar {
+ display: flex;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-TabBar[data-orientation='horizontal'] {
+ flex-direction: row;
+ align-items: flex-end;
+}
+
+.lm-TabBar[data-orientation='vertical'] {
+ flex-direction: column;
+ align-items: flex-end;
+}
+
+.lm-TabBar-content {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex: 1 1 auto;
+ list-style-type: none;
+}
+
+.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
+ flex-direction: row;
+}
+
+.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
+ flex-direction: column;
+}
+
+.lm-TabBar-tab {
+ display: flex;
+ flex-direction: row;
+ box-sizing: border-box;
+ overflow: hidden;
+ touch-action: none; /* Disable native Drag/Drop */
+}
+
+.lm-TabBar-tabIcon,
+.lm-TabBar-tabCloseIcon {
+ flex: 0 0 auto;
+}
+
+.lm-TabBar-tabLabel {
+ flex: 1 1 auto;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.lm-TabBar-tabInput {
+ user-select: all;
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.lm-TabBar-tab.lm-mod-hidden {
+ display: none !important;
+}
+
+.lm-TabBar-addButton.lm-mod-hidden {
+ display: none !important;
+}
+
+.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
+ position: relative;
+}
+
+.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
+ left: 0;
+ transition: left 150ms ease;
+}
+
+.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
+ top: 0;
+ transition: top 150ms ease;
+}
+
+.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
+ transition: none;
+}
+
+.lm-TabBar-tabLabel .lm-TabBar-tabInput {
+ user-select: all;
+ width: 100%;
+ box-sizing: border-box;
+ background: inherit;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-TabPanel-tabBar {
+ z-index: 1;
+}
+
+.lm-TabPanel-stackedPanel {
+ z-index: 0;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Collapse {
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+}
+
+.jp-Collapse-header {
+ padding: 1px 12px;
+ background-color: var(--jp-layout-color1);
+ border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
+ color: var(--jp-ui-font-color1);
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ font-size: var(--jp-ui-font-size0);
+ font-weight: 600;
+ text-transform: uppercase;
+ user-select: none;
+}
+
+.jp-Collapser-icon {
+ height: 16px;
+}
+
+.jp-Collapse-header-collapsed .jp-Collapser-icon {
+ transform: rotate(-90deg);
+ margin: auto 0;
+}
+
+.jp-Collapser-title {
+ line-height: 25px;
+}
+
+.jp-Collapse-contents {
+ padding: 0 12px;
+ background-color: var(--jp-layout-color1);
+ color: var(--jp-ui-font-color1);
+ overflow: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
+
+/**
+ * (DEPRECATED) Support for consuming icons as CSS background images
+ */
+
+/* Icons urls */
+
+:root {
+ --jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
+ --jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
+ --jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
+ --jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
+ --jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
+ --jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
+ --jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
+ --jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
+ --jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
+ --jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
+ --jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
+ --jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
+ --jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
+ --jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
+ --jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
+ --jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
+ --jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
+ --jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
+ --jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
+ --jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
+ --jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
+ --jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
+ --jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
+ --jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
+ --jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
+ --jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
+ --jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
+ --jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
+ --jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
+ --jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
+}
+
+/* Icon CSS class declarations */
+
+.jp-AddAboveIcon {
+ background-image: var(--jp-icon-add-above);
+}
+
+.jp-AddBelowIcon {
+ background-image: var(--jp-icon-add-below);
+}
+
+.jp-AddIcon {
+ background-image: var(--jp-icon-add);
+}
+
+.jp-BellIcon {
+ background-image: var(--jp-icon-bell);
+}
+
+.jp-BugDotIcon {
+ background-image: var(--jp-icon-bug-dot);
+}
+
+.jp-BugIcon {
+ background-image: var(--jp-icon-bug);
+}
+
+.jp-BuildIcon {
+ background-image: var(--jp-icon-build);
+}
+
+.jp-CaretDownEmptyIcon {
+ background-image: var(--jp-icon-caret-down-empty);
+}
+
+.jp-CaretDownEmptyThinIcon {
+ background-image: var(--jp-icon-caret-down-empty-thin);
+}
+
+.jp-CaretDownIcon {
+ background-image: var(--jp-icon-caret-down);
+}
+
+.jp-CaretLeftIcon {
+ background-image: var(--jp-icon-caret-left);
+}
+
+.jp-CaretRightIcon {
+ background-image: var(--jp-icon-caret-right);
+}
+
+.jp-CaretUpEmptyThinIcon {
+ background-image: var(--jp-icon-caret-up-empty-thin);
+}
+
+.jp-CaretUpIcon {
+ background-image: var(--jp-icon-caret-up);
+}
+
+.jp-CaseSensitiveIcon {
+ background-image: var(--jp-icon-case-sensitive);
+}
+
+.jp-CheckIcon {
+ background-image: var(--jp-icon-check);
+}
+
+.jp-CircleEmptyIcon {
+ background-image: var(--jp-icon-circle-empty);
+}
+
+.jp-CircleIcon {
+ background-image: var(--jp-icon-circle);
+}
+
+.jp-ClearIcon {
+ background-image: var(--jp-icon-clear);
+}
+
+.jp-CloseIcon {
+ background-image: var(--jp-icon-close);
+}
+
+.jp-CodeCheckIcon {
+ background-image: var(--jp-icon-code-check);
+}
+
+.jp-CodeIcon {
+ background-image: var(--jp-icon-code);
+}
+
+.jp-CollapseAllIcon {
+ background-image: var(--jp-icon-collapse-all);
+}
+
+.jp-ConsoleIcon {
+ background-image: var(--jp-icon-console);
+}
+
+.jp-CopyIcon {
+ background-image: var(--jp-icon-copy);
+}
+
+.jp-CopyrightIcon {
+ background-image: var(--jp-icon-copyright);
+}
+
+.jp-CutIcon {
+ background-image: var(--jp-icon-cut);
+}
+
+.jp-DeleteIcon {
+ background-image: var(--jp-icon-delete);
+}
+
+.jp-DownloadIcon {
+ background-image: var(--jp-icon-download);
+}
+
+.jp-DuplicateIcon {
+ background-image: var(--jp-icon-duplicate);
+}
+
+.jp-EditIcon {
+ background-image: var(--jp-icon-edit);
+}
+
+.jp-EllipsesIcon {
+ background-image: var(--jp-icon-ellipses);
+}
+
+.jp-ErrorIcon {
+ background-image: var(--jp-icon-error);
+}
+
+.jp-ExpandAllIcon {
+ background-image: var(--jp-icon-expand-all);
+}
+
+.jp-ExtensionIcon {
+ background-image: var(--jp-icon-extension);
+}
+
+.jp-FastForwardIcon {
+ background-image: var(--jp-icon-fast-forward);
+}
+
+.jp-FileIcon {
+ background-image: var(--jp-icon-file);
+}
+
+.jp-FileUploadIcon {
+ background-image: var(--jp-icon-file-upload);
+}
+
+.jp-FilterDotIcon {
+ background-image: var(--jp-icon-filter-dot);
+}
+
+.jp-FilterIcon {
+ background-image: var(--jp-icon-filter);
+}
+
+.jp-FilterListIcon {
+ background-image: var(--jp-icon-filter-list);
+}
+
+.jp-FolderFavoriteIcon {
+ background-image: var(--jp-icon-folder-favorite);
+}
+
+.jp-FolderIcon {
+ background-image: var(--jp-icon-folder);
+}
+
+.jp-HomeIcon {
+ background-image: var(--jp-icon-home);
+}
+
+.jp-Html5Icon {
+ background-image: var(--jp-icon-html5);
+}
+
+.jp-ImageIcon {
+ background-image: var(--jp-icon-image);
+}
+
+.jp-InfoIcon {
+ background-image: var(--jp-icon-info);
+}
+
+.jp-InspectorIcon {
+ background-image: var(--jp-icon-inspector);
+}
+
+.jp-JsonIcon {
+ background-image: var(--jp-icon-json);
+}
+
+.jp-JuliaIcon {
+ background-image: var(--jp-icon-julia);
+}
+
+.jp-JupyterFaviconIcon {
+ background-image: var(--jp-icon-jupyter-favicon);
+}
+
+.jp-JupyterIcon {
+ background-image: var(--jp-icon-jupyter);
+}
+
+.jp-JupyterlabWordmarkIcon {
+ background-image: var(--jp-icon-jupyterlab-wordmark);
+}
+
+.jp-KernelIcon {
+ background-image: var(--jp-icon-kernel);
+}
+
+.jp-KeyboardIcon {
+ background-image: var(--jp-icon-keyboard);
+}
+
+.jp-LaunchIcon {
+ background-image: var(--jp-icon-launch);
+}
+
+.jp-LauncherIcon {
+ background-image: var(--jp-icon-launcher);
+}
+
+.jp-LineFormIcon {
+ background-image: var(--jp-icon-line-form);
+}
+
+.jp-LinkIcon {
+ background-image: var(--jp-icon-link);
+}
+
+.jp-ListIcon {
+ background-image: var(--jp-icon-list);
+}
+
+.jp-MarkdownIcon {
+ background-image: var(--jp-icon-markdown);
+}
+
+.jp-MoveDownIcon {
+ background-image: var(--jp-icon-move-down);
+}
+
+.jp-MoveUpIcon {
+ background-image: var(--jp-icon-move-up);
+}
+
+.jp-NewFolderIcon {
+ background-image: var(--jp-icon-new-folder);
+}
+
+.jp-NotTrustedIcon {
+ background-image: var(--jp-icon-not-trusted);
+}
+
+.jp-NotebookIcon {
+ background-image: var(--jp-icon-notebook);
+}
+
+.jp-NumberingIcon {
+ background-image: var(--jp-icon-numbering);
+}
+
+.jp-OfflineBoltIcon {
+ background-image: var(--jp-icon-offline-bolt);
+}
+
+.jp-PaletteIcon {
+ background-image: var(--jp-icon-palette);
+}
+
+.jp-PasteIcon {
+ background-image: var(--jp-icon-paste);
+}
+
+.jp-PdfIcon {
+ background-image: var(--jp-icon-pdf);
+}
+
+.jp-PythonIcon {
+ background-image: var(--jp-icon-python);
+}
+
+.jp-RKernelIcon {
+ background-image: var(--jp-icon-r-kernel);
+}
+
+.jp-ReactIcon {
+ background-image: var(--jp-icon-react);
+}
+
+.jp-RedoIcon {
+ background-image: var(--jp-icon-redo);
+}
+
+.jp-RefreshIcon {
+ background-image: var(--jp-icon-refresh);
+}
+
+.jp-RegexIcon {
+ background-image: var(--jp-icon-regex);
+}
+
+.jp-RunIcon {
+ background-image: var(--jp-icon-run);
+}
+
+.jp-RunningIcon {
+ background-image: var(--jp-icon-running);
+}
+
+.jp-SaveIcon {
+ background-image: var(--jp-icon-save);
+}
+
+.jp-SearchIcon {
+ background-image: var(--jp-icon-search);
+}
+
+.jp-SettingsIcon {
+ background-image: var(--jp-icon-settings);
+}
+
+.jp-ShareIcon {
+ background-image: var(--jp-icon-share);
+}
+
+.jp-SpreadsheetIcon {
+ background-image: var(--jp-icon-spreadsheet);
+}
+
+.jp-StopIcon {
+ background-image: var(--jp-icon-stop);
+}
+
+.jp-TabIcon {
+ background-image: var(--jp-icon-tab);
+}
+
+.jp-TableRowsIcon {
+ background-image: var(--jp-icon-table-rows);
+}
+
+.jp-TagIcon {
+ background-image: var(--jp-icon-tag);
+}
+
+.jp-TerminalIcon {
+ background-image: var(--jp-icon-terminal);
+}
+
+.jp-TextEditorIcon {
+ background-image: var(--jp-icon-text-editor);
+}
+
+.jp-TocIcon {
+ background-image: var(--jp-icon-toc);
+}
+
+.jp-TreeViewIcon {
+ background-image: var(--jp-icon-tree-view);
+}
+
+.jp-TrustedIcon {
+ background-image: var(--jp-icon-trusted);
+}
+
+.jp-UndoIcon {
+ background-image: var(--jp-icon-undo);
+}
+
+.jp-UserIcon {
+ background-image: var(--jp-icon-user);
+}
+
+.jp-UsersIcon {
+ background-image: var(--jp-icon-users);
+}
+
+.jp-VegaIcon {
+ background-image: var(--jp-icon-vega);
+}
+
+.jp-WordIcon {
+ background-image: var(--jp-icon-word);
+}
+
+.jp-YamlIcon {
+ background-image: var(--jp-icon-yaml);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * (DEPRECATED) Support for consuming icons as CSS background images
+ */
+
+.jp-Icon,
+.jp-MaterialIcon {
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: 16px;
+ min-width: 16px;
+ min-height: 16px;
+}
+
+.jp-Icon-cover {
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: cover;
+}
+
+/**
+ * (DEPRECATED) Support for specific CSS icon sizes
+ */
+
+.jp-Icon-16 {
+ background-size: 16px;
+ min-width: 16px;
+ min-height: 16px;
+}
+
+.jp-Icon-18 {
+ background-size: 18px;
+ min-width: 18px;
+ min-height: 18px;
+}
+
+.jp-Icon-20 {
+ background-size: 20px;
+ min-width: 20px;
+ min-height: 20px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.lm-TabBar .lm-TabBar-addButton {
+ align-items: center;
+ display: flex;
+ padding: 4px;
+ padding-bottom: 5px;
+ margin-right: 1px;
+ background-color: var(--jp-layout-color2);
+}
+
+.lm-TabBar .lm-TabBar-addButton:hover {
+ background-color: var(--jp-layout-color1);
+}
+
+.lm-DockPanel-tabBar .lm-TabBar-tab {
+ width: var(--jp-private-horizontal-tab-width);
+}
+
+.lm-DockPanel-tabBar .lm-TabBar-content {
+ flex: unset;
+}
+
+.lm-DockPanel-tabBar[data-orientation='horizontal'] {
+ flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * Support for icons as inline SVG HTMLElements
+ */
+
+/* recolor the primary elements of an icon */
+.jp-icon0[fill] {
+ fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon1[fill] {
+ fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon2[fill] {
+ fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon3[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon4[fill] {
+ fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon0[stroke] {
+ stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon1[stroke] {
+ stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon2[stroke] {
+ stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon3[stroke] {
+ stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon4[stroke] {
+ stroke: var(--jp-inverse-layout-color4);
+}
+
+/* recolor the accent elements of an icon */
+.jp-icon-accent0[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.jp-icon-accent1[fill] {
+ fill: var(--jp-layout-color1);
+}
+
+.jp-icon-accent2[fill] {
+ fill: var(--jp-layout-color2);
+}
+
+.jp-icon-accent3[fill] {
+ fill: var(--jp-layout-color3);
+}
+
+.jp-icon-accent4[fill] {
+ fill: var(--jp-layout-color4);
+}
+
+.jp-icon-accent0[stroke] {
+ stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-accent1[stroke] {
+ stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-accent2[stroke] {
+ stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-accent3[stroke] {
+ stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-accent4[stroke] {
+ stroke: var(--jp-layout-color4);
+}
+
+/* set the color of an icon to transparent */
+.jp-icon-none[fill] {
+ fill: none;
+}
+
+.jp-icon-none[stroke] {
+ stroke: none;
+}
+
+/* brand icon colors. Same for light and dark */
+.jp-icon-brand0[fill] {
+ fill: var(--jp-brand-color0);
+}
+
+.jp-icon-brand1[fill] {
+ fill: var(--jp-brand-color1);
+}
+
+.jp-icon-brand2[fill] {
+ fill: var(--jp-brand-color2);
+}
+
+.jp-icon-brand3[fill] {
+ fill: var(--jp-brand-color3);
+}
+
+.jp-icon-brand4[fill] {
+ fill: var(--jp-brand-color4);
+}
+
+.jp-icon-brand0[stroke] {
+ stroke: var(--jp-brand-color0);
+}
+
+.jp-icon-brand1[stroke] {
+ stroke: var(--jp-brand-color1);
+}
+
+.jp-icon-brand2[stroke] {
+ stroke: var(--jp-brand-color2);
+}
+
+.jp-icon-brand3[stroke] {
+ stroke: var(--jp-brand-color3);
+}
+
+.jp-icon-brand4[stroke] {
+ stroke: var(--jp-brand-color4);
+}
+
+/* warn icon colors. Same for light and dark */
+.jp-icon-warn0[fill] {
+ fill: var(--jp-warn-color0);
+}
+
+.jp-icon-warn1[fill] {
+ fill: var(--jp-warn-color1);
+}
+
+.jp-icon-warn2[fill] {
+ fill: var(--jp-warn-color2);
+}
+
+.jp-icon-warn3[fill] {
+ fill: var(--jp-warn-color3);
+}
+
+.jp-icon-warn0[stroke] {
+ stroke: var(--jp-warn-color0);
+}
+
+.jp-icon-warn1[stroke] {
+ stroke: var(--jp-warn-color1);
+}
+
+.jp-icon-warn2[stroke] {
+ stroke: var(--jp-warn-color2);
+}
+
+.jp-icon-warn3[stroke] {
+ stroke: var(--jp-warn-color3);
+}
+
+/* icon colors that contrast well with each other and most backgrounds */
+.jp-icon-contrast0[fill] {
+ fill: var(--jp-icon-contrast-color0);
+}
+
+.jp-icon-contrast1[fill] {
+ fill: var(--jp-icon-contrast-color1);
+}
+
+.jp-icon-contrast2[fill] {
+ fill: var(--jp-icon-contrast-color2);
+}
+
+.jp-icon-contrast3[fill] {
+ fill: var(--jp-icon-contrast-color3);
+}
+
+.jp-icon-contrast0[stroke] {
+ stroke: var(--jp-icon-contrast-color0);
+}
+
+.jp-icon-contrast1[stroke] {
+ stroke: var(--jp-icon-contrast-color1);
+}
+
+.jp-icon-contrast2[stroke] {
+ stroke: var(--jp-icon-contrast-color2);
+}
+
+.jp-icon-contrast3[stroke] {
+ stroke: var(--jp-icon-contrast-color3);
+}
+
+.jp-icon-dot[fill] {
+ fill: var(--jp-warn-color0);
+}
+
+.jp-jupyter-icon-color[fill] {
+ fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
+}
+
+.jp-notebook-icon-color[fill] {
+ fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
+}
+
+.jp-json-icon-color[fill] {
+ fill: var(--jp-json-icon-color, var(--jp-warn-color1));
+}
+
+.jp-console-icon-color[fill] {
+ fill: var(--jp-console-icon-color, white);
+}
+
+.jp-console-icon-background-color[fill] {
+ fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
+}
+
+.jp-terminal-icon-color[fill] {
+ fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
+}
+
+.jp-terminal-icon-background-color[fill] {
+ fill: var(
+ --jp-terminal-icon-background-color,
+ var(--jp-inverse-layout-color2)
+ );
+}
+
+.jp-text-editor-icon-color[fill] {
+ fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
+}
+
+.jp-inspector-icon-color[fill] {
+ fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
+}
+
+/* CSS for icons in selected filebrowser listing items */
+.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
+ fill: #fff;
+}
+
+.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
+ fill: var(--jp-brand-color1);
+}
+
+/* stylelint-disable selector-max-class, selector-max-compound-selectors */
+
+/**
+* TODO: come up with non css-hack solution for showing the busy icon on top
+* of the close icon
+* CSS for complex behavior of close icon of tabs in the main area tabbar
+*/
+.lm-DockPanel-tabBar
+ .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
+ > .lm-TabBar-tabCloseIcon
+ > :not(:hover)
+ > .jp-icon3[fill] {
+ fill: none;
+}
+
+.lm-DockPanel-tabBar
+ .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
+ > .lm-TabBar-tabCloseIcon
+ > :not(:hover)
+ > .jp-icon-busy[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+/* stylelint-enable selector-max-class, selector-max-compound-selectors */
+
+/* CSS for icons in status bar */
+#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
+ fill: #fff;
+}
+
+#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
+ fill: var(--jp-brand-color1);
+}
+
+/* special handling for splash icon CSS. While the theme CSS reloads during
+ splash, the splash icon can loose theming. To prevent that, we set a
+ default for its color variable */
+:root {
+ --jp-warn-color0: var(--md-orange-700);
+}
+
+/* not sure what to do with this one, used in filebrowser listing */
+.jp-DragIcon {
+ margin-right: 4px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * Support for alt colors for icons as inline SVG HTMLElements
+ */
+
+/* alt recolor the primary elements of an icon */
+.jp-icon-alt .jp-icon0[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.jp-icon-alt .jp-icon1[fill] {
+ fill: var(--jp-layout-color1);
+}
+
+.jp-icon-alt .jp-icon2[fill] {
+ fill: var(--jp-layout-color2);
+}
+
+.jp-icon-alt .jp-icon3[fill] {
+ fill: var(--jp-layout-color3);
+}
+
+.jp-icon-alt .jp-icon4[fill] {
+ fill: var(--jp-layout-color4);
+}
+
+.jp-icon-alt .jp-icon0[stroke] {
+ stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-alt .jp-icon1[stroke] {
+ stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-alt .jp-icon2[stroke] {
+ stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-alt .jp-icon3[stroke] {
+ stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-alt .jp-icon4[stroke] {
+ stroke: var(--jp-layout-color4);
+}
+
+/* alt recolor the accent elements of an icon */
+.jp-icon-alt .jp-icon-accent0[fill] {
+ fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-alt .jp-icon-accent1[fill] {
+ fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-alt .jp-icon-accent2[fill] {
+ fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-alt .jp-icon-accent3[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-alt .jp-icon-accent4[fill] {
+ fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-alt .jp-icon-accent0[stroke] {
+ stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-alt .jp-icon-accent1[stroke] {
+ stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-alt .jp-icon-accent2[stroke] {
+ stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-alt .jp-icon-accent3[stroke] {
+ stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-alt .jp-icon-accent4[stroke] {
+ stroke: var(--jp-inverse-layout-color4);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
+ display: none !important;
+}
+
+/**
+ * Support for hover colors for icons as inline SVG HTMLElements
+ */
+
+/**
+ * regular colors
+ */
+
+/* recolor the primary elements of an icon */
+.jp-icon-hover :hover .jp-icon0-hover[fill] {
+ fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon1-hover[fill] {
+ fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon2-hover[fill] {
+ fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon3-hover[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon4-hover[fill] {
+ fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-hover :hover .jp-icon0-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon1-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon2-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon3-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon4-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color4);
+}
+
+/* recolor the accent elements of an icon */
+.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
+ fill: var(--jp-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
+ fill: var(--jp-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
+ fill: var(--jp-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
+ fill: var(--jp-layout-color4);
+}
+
+.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
+ stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
+ stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
+ stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
+ stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
+ stroke: var(--jp-layout-color4);
+}
+
+/* set the color of an icon to transparent */
+.jp-icon-hover :hover .jp-icon-none-hover[fill] {
+ fill: none;
+}
+
+.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
+ stroke: none;
+}
+
+/**
+ * inverse colors
+ */
+
+/* inverse recolor the primary elements of an icon */
+.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
+ fill: var(--jp-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
+ fill: var(--jp-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
+ fill: var(--jp-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
+ fill: var(--jp-layout-color4);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
+ stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
+ stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
+ stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
+ stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
+ stroke: var(--jp-layout-color4);
+}
+
+/* inverse recolor the accent elements of an icon */
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
+ fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
+ fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
+ fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
+ fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color4);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-IFrame {
+ width: 100%;
+ height: 100%;
+}
+
+.jp-IFrame > iframe {
+ border: none;
+}
+
+/*
+When drag events occur, `lm-mod-override-cursor` is added to the body.
+Because iframes steal all cursor events, the following two rules are necessary
+to suppress pointer events while resize drags are occurring. There may be a
+better solution to this problem.
+*/
+body.lm-mod-override-cursor .jp-IFrame {
+ position: relative;
+}
+
+body.lm-mod-override-cursor .jp-IFrame::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-HoverBox {
+ position: fixed;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-FormGroup-content fieldset {
+ border: none;
+ padding: 0;
+ min-width: 0;
+ width: 100%;
+}
+
+/* stylelint-disable selector-max-type */
+
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
+ font-size: var(--jp-content-font-size2);
+ border-color: var(--jp-input-border-color);
+ border-style: solid;
+ border-radius: var(--jp-border-radius);
+ border-width: 1px;
+ padding: 6px 8px;
+ background: none;
+ color: var(--jp-ui-font-color0);
+ height: inherit;
+}
+
+.jp-FormGroup-content fieldset input[type='checkbox'] {
+ position: relative;
+ top: 2px;
+ margin-left: 0;
+}
+
+.jp-FormGroup-content button.jp-mod-styled {
+ cursor: pointer;
+}
+
+.jp-FormGroup-content .checkbox label {
+ cursor: pointer;
+ font-size: var(--jp-content-font-size1);
+}
+
+.jp-FormGroup-content .jp-root > fieldset > legend {
+ display: none;
+}
+
+.jp-FormGroup-content .jp-root > fieldset > p {
+ display: none;
+}
+
+/** copy of `input.jp-mod-styled:focus` style */
+.jp-FormGroup-content fieldset input:focus,
+.jp-FormGroup-content fieldset select:focus {
+ -moz-outline-radius: unset;
+ outline: var(--jp-border-width) solid var(--md-blue-500);
+ outline-offset: -1px;
+ box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-FormGroup-content fieldset input:hover:not(:focus),
+.jp-FormGroup-content fieldset select:hover:not(:focus) {
+ background-color: var(--jp-border-color2);
+}
+
+/* stylelint-enable selector-max-type */
+
+.jp-FormGroup-content .checkbox .field-description {
+ /* Disable default description field for checkbox:
+ because other widgets do not have description fields,
+ we add descriptions to each widget on the field level.
+ */
+ display: none;
+}
+
+.jp-FormGroup-content #root__description {
+ display: none;
+}
+
+.jp-FormGroup-content .jp-modifiedIndicator {
+ width: 5px;
+ background-color: var(--jp-brand-color2);
+ margin-top: 0;
+ margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
+ flex-shrink: 0;
+}
+
+.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
+ background-color: var(--jp-error-color0);
+ margin-right: 0.5em;
+}
+
+/* RJSF ARRAY style */
+
+.jp-arrayFieldWrapper legend {
+ font-size: var(--jp-content-font-size2);
+ color: var(--jp-ui-font-color0);
+ flex-basis: 100%;
+ padding: 4px 0;
+ font-weight: var(--jp-content-heading-font-weight);
+ border-bottom: 1px solid var(--jp-border-color2);
+}
+
+.jp-arrayFieldWrapper .field-description {
+ padding: 4px 0;
+ white-space: pre-wrap;
+}
+
+.jp-arrayFieldWrapper .array-item {
+ width: 100%;
+ border: 1px solid var(--jp-border-color2);
+ border-radius: 4px;
+ margin: 4px;
+}
+
+.jp-ArrayOperations {
+ display: flex;
+ margin-left: 8px;
+}
+
+.jp-ArrayOperationsButton {
+ margin: 2px;
+}
+
+.jp-ArrayOperationsButton .jp-icon3[fill] {
+ fill: var(--jp-ui-font-color0);
+}
+
+button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
+ cursor: not-allowed;
+ opacity: 0.5;
+}
+
+/* RJSF form validation error */
+
+.jp-FormGroup-content .validationErrors {
+ color: var(--jp-error-color0);
+}
+
+/* Hide panel level error as duplicated the field level error */
+.jp-FormGroup-content .panel.errors {
+ display: none;
+}
+
+/* RJSF normal content (settings-editor) */
+
+.jp-FormGroup-contentNormal {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
+ margin-left: 7px;
+ color: var(--jp-ui-font-color0);
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-description {
+ flex-basis: 100%;
+ padding: 4px 7px;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-default {
+ flex-basis: 100%;
+ padding: 4px 7px;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
+ font-size: var(--jp-content-font-size1);
+ font-weight: normal;
+ min-width: 120px;
+}
+
+.jp-FormGroup-contentNormal fieldset:not(:first-child) {
+ margin-left: 7px;
+}
+
+.jp-FormGroup-contentNormal .field-array-of-string .array-item {
+ /* Display `jp-ArrayOperations` buttons side-by-side with content except
+ for small screens where flex-wrap will place them one below the other.
+ */
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+}
+
+.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
+ padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
+ margin-top: 2px;
+}
+
+/* RJSF compact content (metadata-form) */
+
+.jp-FormGroup-content.jp-FormGroup-contentCompact {
+ width: 100%;
+}
+
+.jp-FormGroup-contentCompact .form-group {
+ display: flex;
+ padding: 0.5em 0.2em 0.5em 0;
+}
+
+.jp-FormGroup-contentCompact
+ .jp-FormGroup-compactTitle
+ .jp-FormGroup-description {
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
+ padding-bottom: 0.3em;
+}
+
+.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
+ padding-bottom: 7px;
+}
+
+.jp-FormGroup-contentCompact
+ .jp-objectFieldWrapper
+ .jp-objectFieldWrapper
+ .form-group {
+ padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
+ margin-top: 2px;
+}
+
+.jp-FormGroup-contentCompact ul.error-detail {
+ margin-block-start: 0.5em;
+ margin-block-end: 0.5em;
+ padding-inline-start: 1em;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-SidePanel {
+ display: flex;
+ flex-direction: column;
+ min-width: var(--jp-sidebar-min-width);
+ overflow-y: auto;
+ color: var(--jp-ui-font-color1);
+ background: var(--jp-layout-color1);
+ font-size: var(--jp-ui-font-size1);
+}
+
+.jp-SidePanel-header {
+ flex: 0 0 auto;
+ display: flex;
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
+ font-size: var(--jp-ui-font-size0);
+ font-weight: 600;
+ letter-spacing: 1px;
+ margin: 0;
+ padding: 2px;
+ text-transform: uppercase;
+}
+
+.jp-SidePanel-toolbar {
+ flex: 0 0 auto;
+}
+
+.jp-SidePanel-content {
+ flex: 1 1 auto;
+}
+
+.jp-SidePanel-toolbar,
+.jp-AccordionPanel-toolbar {
+ height: var(--jp-private-toolbar-height);
+}
+
+.jp-SidePanel-toolbar.jp-Toolbar-micro {
+ display: none;
+}
+
+.lm-AccordionPanel .jp-AccordionPanel-title {
+ box-sizing: border-box;
+ line-height: 25px;
+ margin: 0;
+ display: flex;
+ align-items: center;
+ background: var(--jp-layout-color1);
+ color: var(--jp-ui-font-color1);
+ border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ font-size: var(--jp-ui-font-size0);
+}
+
+.jp-AccordionPanel-title {
+ cursor: pointer;
+ user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ text-transform: uppercase;
+}
+
+.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
+ /* Title is rotated for horizontal accordion panel using CSS */
+ display: block;
+ transform-origin: top left;
+ transform: rotate(-90deg) translate(-100%);
+}
+
+.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
+ user-select: none;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
+ transform: rotate(-90deg);
+ margin: auto 0;
+ height: 16px;
+}
+
+.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
+ transform: rotate(0deg);
+}
+
+.lm-AccordionPanel .jp-AccordionPanel-toolbar {
+ background: none;
+ box-shadow: none;
+ border: none;
+ margin-left: auto;
+}
+
+.lm-AccordionPanel .lm-SplitPanel-handle:hover {
+ background: var(--jp-layout-color3);
+}
+
+.jp-text-truncated {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Spinner {
+ position: absolute;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 10;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background: var(--jp-layout-color0);
+ outline: none;
+}
+
+.jp-SpinnerContent {
+ font-size: 10px;
+ margin: 50px auto;
+ text-indent: -9999em;
+ width: 3em;
+ height: 3em;
+ border-radius: 50%;
+ background: var(--jp-brand-color3);
+ background: linear-gradient(
+ to right,
+ #f37626 10%,
+ rgba(255, 255, 255, 0) 42%
+ );
+ position: relative;
+ animation: load3 1s infinite linear, fadeIn 1s;
+}
+
+.jp-SpinnerContent::before {
+ width: 50%;
+ height: 50%;
+ background: #f37626;
+ border-radius: 100% 0 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ content: '';
+}
+
+.jp-SpinnerContent::after {
+ background: var(--jp-layout-color0);
+ width: 75%;
+ height: 75%;
+ border-radius: 50%;
+ content: '';
+ margin: auto;
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes load3 {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+button.jp-mod-styled {
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color0);
+ border: none;
+ box-sizing: border-box;
+ text-align: center;
+ line-height: 32px;
+ height: 32px;
+ padding: 0 12px;
+ letter-spacing: 0.8px;
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+
+input.jp-mod-styled {
+ background: var(--jp-input-background);
+ height: 28px;
+ box-sizing: border-box;
+ border: var(--jp-border-width) solid var(--jp-border-color1);
+ padding-left: 7px;
+ padding-right: 7px;
+ font-size: var(--jp-ui-font-size2);
+ color: var(--jp-ui-font-color0);
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+
+input[type='checkbox'].jp-mod-styled {
+ appearance: checkbox;
+ -webkit-appearance: checkbox;
+ -moz-appearance: checkbox;
+ height: auto;
+}
+
+input.jp-mod-styled:focus {
+ border: var(--jp-border-width) solid var(--md-blue-500);
+ box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-select-wrapper {
+ display: flex;
+ position: relative;
+ flex-direction: column;
+ padding: 1px;
+ background-color: var(--jp-layout-color1);
+ box-sizing: border-box;
+ margin-bottom: 12px;
+}
+
+.jp-select-wrapper:not(.multiple) {
+ height: 28px;
+}
+
+.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
+ border: var(--jp-border-width) solid var(--jp-input-active-border-color);
+ box-shadow: var(--jp-input-box-shadow);
+ background-color: var(--jp-input-active-background);
+}
+
+select.jp-mod-styled:hover {
+ cursor: pointer;
+ color: var(--jp-ui-font-color0);
+ background-color: var(--jp-input-hover-background);
+ box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
+}
+
+select.jp-mod-styled {
+ flex: 1 1 auto;
+ width: 100%;
+ font-size: var(--jp-ui-font-size2);
+ background: var(--jp-input-background);
+ color: var(--jp-ui-font-color0);
+ padding: 0 25px 0 8px;
+ border: var(--jp-border-width) solid var(--jp-input-border-color);
+ border-radius: 0;
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+
+select.jp-mod-styled:not([multiple]) {
+ height: 32px;
+}
+
+select.jp-mod-styled[multiple] {
+ max-height: 200px;
+ overflow-y: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-switch {
+ display: flex;
+ align-items: center;
+ padding-left: 4px;
+ padding-right: 4px;
+ font-size: var(--jp-ui-font-size1);
+ background-color: transparent;
+ color: var(--jp-ui-font-color1);
+ border: none;
+ height: 20px;
+}
+
+.jp-switch:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-switch-label {
+ margin-right: 5px;
+ font-family: var(--jp-ui-font-family);
+}
+
+.jp-switch-track {
+ cursor: pointer;
+ background-color: var(--jp-switch-color, var(--jp-border-color1));
+ -webkit-transition: 0.4s;
+ transition: 0.4s;
+ border-radius: 34px;
+ height: 16px;
+ width: 35px;
+ position: relative;
+}
+
+.jp-switch-track::before {
+ content: '';
+ position: absolute;
+ height: 10px;
+ width: 10px;
+ margin: 3px;
+ left: 0;
+ background-color: var(--jp-ui-inverse-font-color1);
+ -webkit-transition: 0.4s;
+ transition: 0.4s;
+ border-radius: 50%;
+}
+
+.jp-switch[aria-checked='true'] .jp-switch-track {
+ background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
+}
+
+.jp-switch[aria-checked='true'] .jp-switch-track::before {
+ /* track width (35) - margins (3 + 3) - thumb width (10) */
+ left: 19px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-toolbar-height: calc(
+ 28px + var(--jp-border-width)
+ ); /* leave 28px for content */
+}
+
+.jp-Toolbar {
+ color: var(--jp-ui-font-color1);
+ flex: 0 0 auto;
+ display: flex;
+ flex-direction: row;
+ border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ background: var(--jp-toolbar-background);
+ min-height: var(--jp-toolbar-micro-height);
+ padding: 2px;
+ z-index: 8;
+ overflow-x: hidden;
+}
+
+/* Toolbar items */
+
+.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
+ flex-grow: 1;
+ flex-shrink: 1;
+}
+
+.jp-Toolbar-item.jp-Toolbar-kernelStatus {
+ display: inline-block;
+ width: 32px;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 16px;
+}
+
+.jp-Toolbar > .jp-Toolbar-item {
+ flex: 0 0 auto;
+ display: flex;
+ padding-left: 1px;
+ padding-right: 1px;
+ font-size: var(--jp-ui-font-size1);
+ line-height: var(--jp-private-toolbar-height);
+ height: 100%;
+}
+
+/* Toolbar buttons */
+
+/* This is the div we use to wrap the react component into a Widget */
+div.jp-ToolbarButton {
+ color: transparent;
+ border: none;
+ box-sizing: border-box;
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ padding: 0;
+ margin: 0;
+}
+
+button.jp-ToolbarButtonComponent {
+ background: var(--jp-layout-color1);
+ border: none;
+ box-sizing: border-box;
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ padding: 0 6px;
+ margin: 0;
+ height: 24px;
+ border-radius: var(--jp-border-radius);
+ display: flex;
+ align-items: center;
+ text-align: center;
+ font-size: 14px;
+ min-width: unset;
+ min-height: unset;
+}
+
+button.jp-ToolbarButtonComponent:disabled {
+ opacity: 0.4;
+}
+
+button.jp-ToolbarButtonComponent > span {
+ padding: 0;
+ flex: 0 0 auto;
+}
+
+button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
+ font-size: var(--jp-ui-font-size1);
+ line-height: 100%;
+ padding-left: 2px;
+ color: var(--jp-ui-font-color1);
+ font-family: var(--jp-ui-font-family);
+}
+
+#jp-main-dock-panel[data-mode='single-document']
+ .jp-MainAreaWidget
+ > .jp-Toolbar.jp-Toolbar-micro {
+ padding: 0;
+ min-height: 0;
+}
+
+#jp-main-dock-panel[data-mode='single-document']
+ .jp-MainAreaWidget
+ > .jp-Toolbar {
+ border: none;
+ box-shadow: none;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-WindowedPanel-outer {
+ position: relative;
+ overflow-y: auto;
+}
+
+.jp-WindowedPanel-inner {
+ position: relative;
+}
+
+.jp-WindowedPanel-window {
+ position: absolute;
+ left: 0;
+ right: 0;
+ overflow: visible;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/* Sibling imports */
+
+body {
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+}
+
+/* Disable native link decoration styles everywhere outside of dialog boxes */
+a {
+ text-decoration: unset;
+ color: unset;
+}
+
+a:hover {
+ text-decoration: unset;
+ color: unset;
+}
+
+/* Accessibility for links inside dialog box text */
+.jp-Dialog-content a {
+ text-decoration: revert;
+ color: var(--jp-content-link-color);
+}
+
+.jp-Dialog-content a:hover {
+ text-decoration: revert;
+}
+
+/* Styles for ui-components */
+.jp-Button {
+ color: var(--jp-ui-font-color2);
+ border-radius: var(--jp-border-radius);
+ padding: 0 12px;
+ font-size: var(--jp-ui-font-size1);
+
+ /* Copy from blueprint 3 */
+ display: inline-flex;
+ flex-direction: row;
+ border: none;
+ cursor: pointer;
+ align-items: center;
+ justify-content: center;
+ text-align: left;
+ vertical-align: middle;
+ min-height: 30px;
+ min-width: 30px;
+}
+
+.jp-Button:disabled {
+ cursor: not-allowed;
+}
+
+.jp-Button:empty {
+ padding: 0 !important;
+}
+
+.jp-Button.jp-mod-small {
+ min-height: 24px;
+ min-width: 24px;
+ font-size: 12px;
+ padding: 0 7px;
+}
+
+/* Use our own theme for hover styles */
+.jp-Button.jp-mod-minimal:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-Button.jp-mod-minimal {
+ background: none;
+}
+
+.jp-InputGroup {
+ display: block;
+ position: relative;
+}
+
+.jp-InputGroup input {
+ box-sizing: border-box;
+ border: none;
+ border-radius: 0;
+ background-color: transparent;
+ color: var(--jp-ui-font-color0);
+ box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
+ padding-bottom: 0;
+ padding-top: 0;
+ padding-left: 10px;
+ padding-right: 28px;
+ position: relative;
+ width: 100%;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ font-size: 14px;
+ font-weight: 400;
+ height: 30px;
+ line-height: 30px;
+ outline: none;
+ vertical-align: middle;
+}
+
+.jp-InputGroup input:focus {
+ box-shadow: inset 0 0 0 var(--jp-border-width)
+ var(--jp-input-active-box-shadow-color),
+ inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
+}
+
+.jp-InputGroup input:disabled {
+ cursor: not-allowed;
+ resize: block;
+ background-color: var(--jp-layout-color2);
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroup input:disabled ~ span {
+ cursor: not-allowed;
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroup input::placeholder,
+input::placeholder {
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroupAction {
+ position: absolute;
+ bottom: 1px;
+ right: 0;
+ padding: 6px;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select {
+ background-color: initial;
+ border: none;
+ border-radius: 0;
+ box-shadow: none;
+ color: var(--jp-ui-font-color0);
+ display: block;
+ font-size: var(--jp-ui-font-size1);
+ font-family: var(--jp-ui-font-family);
+ height: 24px;
+ line-height: 14px;
+ padding: 0 25px 0 10px;
+ text-align: left;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select:disabled {
+ background-color: var(--jp-layout-color2);
+ color: var(--jp-ui-font-color2);
+ cursor: not-allowed;
+ resize: block;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
+ cursor: not-allowed;
+}
+
+/* Use our own theme for hover and option styles */
+/* stylelint-disable-next-line selector-max-type */
+.jp-HTMLSelect.jp-DefaultStyle select:hover,
+.jp-HTMLSelect.jp-DefaultStyle select > option {
+ background-color: var(--jp-layout-color2);
+ color: var(--jp-ui-font-color0);
+}
+
+select {
+ box-sizing: border-box;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-StatusBar-Widget {
+ display: flex;
+ align-items: center;
+ background: var(--jp-layout-color2);
+ min-height: var(--jp-statusbar-height);
+ justify-content: space-between;
+ padding: 0 10px;
+}
+
+.jp-StatusBar-Left {
+ display: flex;
+ align-items: center;
+ flex-direction: row;
+}
+
+.jp-StatusBar-Middle {
+ display: flex;
+ align-items: center;
+}
+
+.jp-StatusBar-Right {
+ display: flex;
+ align-items: center;
+ flex-direction: row-reverse;
+}
+
+.jp-StatusBar-Item {
+ max-height: var(--jp-statusbar-height);
+ margin: 0 2px;
+ height: var(--jp-statusbar-height);
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: var(--jp-ui-font-color1);
+ padding: 0 6px;
+}
+
+.jp-mod-highlighted:hover {
+ background-color: var(--jp-layout-color3);
+}
+
+.jp-mod-clicked {
+ background-color: var(--jp-brand-color1);
+}
+
+.jp-mod-clicked:hover {
+ background-color: var(--jp-brand-color0);
+}
+
+.jp-mod-clicked .jp-StatusBar-TextItem {
+ color: var(--jp-ui-inverse-font-color1);
+}
+
+.jp-StatusBar-HoverItem {
+ box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
+}
+
+.jp-StatusBar-TextItem {
+ font-size: var(--jp-ui-font-size1);
+ font-family: var(--jp-ui-font-family);
+ line-height: 24px;
+ color: var(--jp-ui-font-color1);
+}
+
+.jp-StatusBar-GroupItem {
+ display: flex;
+ align-items: center;
+ flex-direction: row;
+}
+
+.jp-Statusbar-ProgressCircle svg {
+ display: block;
+ margin: 0 auto;
+ width: 16px;
+ height: 24px;
+ align-self: normal;
+}
+
+.jp-Statusbar-ProgressCircle path {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-Statusbar-ProgressBar-progress-bar {
+ height: 10px;
+ width: 100px;
+ border: solid 0.25px var(--jp-brand-color2);
+ border-radius: 3px;
+ overflow: hidden;
+ align-self: center;
+}
+
+.jp-Statusbar-ProgressBar-progress-bar > div {
+ background-color: var(--jp-brand-color2);
+ background-image: linear-gradient(
+ -45deg,
+ rgba(255, 255, 255, 0.2) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.2) 50%,
+ rgba(255, 255, 255, 0.2) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-size: 40px 40px;
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: 12px;
+ line-height: 14px;
+ color: #fff;
+ text-align: center;
+ animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
+}
+
+.jp-Statusbar-ProgressBar-progress-bar p {
+ color: var(--jp-ui-font-color1);
+ font-family: var(--jp-ui-font-family);
+ font-size: var(--jp-ui-font-size1);
+ line-height: 10px;
+ width: 100px;
+}
+
+@keyframes jp-Statusbar-ExecutionTime-progress-bar {
+ 0% {
+ background-position: 0 0;
+ }
+
+ 100% {
+ background-position: 40px 40px;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-commandpalette-search-height: 28px;
+}
+
+/*-----------------------------------------------------------------------------
+| Overall styles
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette {
+ padding-bottom: 0;
+ color: var(--jp-ui-font-color1);
+ background: var(--jp-layout-color1);
+
+ /* This is needed so that all font sizing of children done in ems is
+ * relative to this base size */
+ font-size: var(--jp-ui-font-size1);
+}
+
+/*-----------------------------------------------------------------------------
+| Modal variant
+|----------------------------------------------------------------------------*/
+
+.jp-ModalCommandPalette {
+ position: absolute;
+ z-index: 10000;
+ top: 38px;
+ left: 30%;
+ margin: 0;
+ padding: 4px;
+ width: 40%;
+ box-shadow: var(--jp-elevation-z4);
+ border-radius: 4px;
+ background: var(--jp-layout-color0);
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette {
+ max-height: 40vh;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
+ display: none;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
+ display: none;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
+ margin-left: 4px;
+ margin-right: 4px;
+}
+
+.jp-ModalCommandPalette
+ .lm-CommandPalette
+ .lm-CommandPalette-item.lm-mod-disabled {
+ display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Search
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette-search {
+ padding: 4px;
+ background-color: var(--jp-layout-color1);
+ z-index: 2;
+}
+
+.lm-CommandPalette-wrapper {
+ overflow: overlay;
+ padding: 0 9px;
+ background-color: var(--jp-input-active-background);
+ height: 30px;
+ box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
+}
+
+.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
+ box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
+ inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
+}
+
+.jp-SearchIconGroup {
+ color: white;
+ background-color: var(--jp-brand-color1);
+ position: absolute;
+ top: 4px;
+ right: 4px;
+ padding: 5px 5px 1px;
+}
+
+.jp-SearchIconGroup svg {
+ height: 20px;
+ width: 20px;
+}
+
+.jp-SearchIconGroup .jp-icon3[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.lm-CommandPalette-input {
+ background: transparent;
+ width: calc(100% - 18px);
+ float: left;
+ border: none;
+ outline: none;
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color0);
+ line-height: var(--jp-private-commandpalette-search-height);
+}
+
+.lm-CommandPalette-input::-webkit-input-placeholder,
+.lm-CommandPalette-input::-moz-placeholder,
+.lm-CommandPalette-input:-ms-input-placeholder {
+ color: var(--jp-ui-font-color2);
+ font-size: var(--jp-ui-font-size1);
+}
+
+/*-----------------------------------------------------------------------------
+| Results
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette-header:first-child {
+ margin-top: 0;
+}
+
+.lm-CommandPalette-header {
+ border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
+ color: var(--jp-ui-font-color1);
+ cursor: pointer;
+ display: flex;
+ font-size: var(--jp-ui-font-size0);
+ font-weight: 600;
+ letter-spacing: 1px;
+ margin-top: 8px;
+ padding: 8px 0 8px 12px;
+ text-transform: uppercase;
+}
+
+.lm-CommandPalette-header.lm-mod-active {
+ background: var(--jp-layout-color2);
+}
+
+.lm-CommandPalette-header > mark {
+ background-color: transparent;
+ font-weight: bold;
+ color: var(--jp-ui-font-color1);
+}
+
+.lm-CommandPalette-item {
+ padding: 4px 12px 4px 4px;
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ font-weight: 400;
+ display: flex;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled {
+ color: var(--jp-ui-font-color2);
+}
+
+.lm-CommandPalette-item.lm-mod-active {
+ color: var(--jp-ui-inverse-font-color1);
+ background: var(--jp-brand-color1);
+}
+
+.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
+ color: var(--jp-ui-inverse-font-color0);
+}
+
+.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
+ color: var(--jp-ui-inverse-font-color1);
+ background: var(--jp-brand-color1);
+}
+
+.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
+ background: var(--jp-layout-color2);
+}
+
+.lm-CommandPalette-itemContent {
+ overflow: hidden;
+}
+
+.lm-CommandPalette-itemLabel > mark {
+ color: var(--jp-ui-font-color0);
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled mark {
+ color: var(--jp-ui-font-color2);
+}
+
+.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
+ margin: 0 4px 0 0;
+ position: relative;
+ width: 16px;
+ top: 2px;
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
+ opacity: 0.6;
+}
+
+.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemCaption {
+ display: none;
+}
+
+.lm-CommandPalette-content {
+ background-color: var(--jp-layout-color1);
+}
+
+.lm-CommandPalette-content:empty::after {
+ content: 'No results';
+ margin: auto;
+ margin-top: 20px;
+ width: 100px;
+ display: block;
+ font-size: var(--jp-ui-font-size2);
+ font-family: var(--jp-ui-font-family);
+ font-weight: lighter;
+}
+
+.lm-CommandPalette-emptyMessage {
+ text-align: center;
+ margin-top: 24px;
+ line-height: 1.32;
+ padding: 0 8px;
+ color: var(--jp-content-font-color3);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Dialog {
+ position: absolute;
+ z-index: 10000;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ top: 0;
+ left: 0;
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ background: var(--jp-dialog-background);
+}
+
+.jp-Dialog-content {
+ display: flex;
+ flex-direction: column;
+ margin-left: auto;
+ margin-right: auto;
+ background: var(--jp-layout-color1);
+ padding: 24px 24px 12px;
+ min-width: 300px;
+ min-height: 150px;
+ max-width: 1000px;
+ max-height: 500px;
+ box-sizing: border-box;
+ box-shadow: var(--jp-elevation-z20);
+ word-wrap: break-word;
+ border-radius: var(--jp-border-radius);
+
+ /* This is needed so that all font sizing of children done in ems is
+ * relative to this base size */
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color1);
+ resize: both;
+}
+
+.jp-Dialog-content.jp-Dialog-content-small {
+ max-width: 500px;
+}
+
+.jp-Dialog-button {
+ overflow: visible;
+}
+
+button.jp-Dialog-button:focus {
+ outline: 1px solid var(--jp-brand-color1);
+ outline-offset: 4px;
+ -moz-outline-radius: 0;
+}
+
+button.jp-Dialog-button:focus::-moz-focus-inner {
+ border: 0;
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
+button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
+button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
+ outline-offset: 4px;
+ -moz-outline-radius: 0;
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
+ outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
+ outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
+ outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
+}
+
+button.jp-Dialog-close-button {
+ padding: 0;
+ height: 100%;
+ min-width: unset;
+ min-height: unset;
+}
+
+.jp-Dialog-header {
+ display: flex;
+ justify-content: space-between;
+ flex: 0 0 auto;
+ padding-bottom: 12px;
+ font-size: var(--jp-ui-font-size3);
+ font-weight: 400;
+ color: var(--jp-ui-font-color1);
+}
+
+.jp-Dialog-body {
+ display: flex;
+ flex-direction: column;
+ flex: 1 1 auto;
+ font-size: var(--jp-ui-font-size1);
+ background: var(--jp-layout-color1);
+ color: var(--jp-ui-font-color1);
+ overflow: auto;
+}
+
+.jp-Dialog-footer {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ flex: 0 0 auto;
+ margin-left: -12px;
+ margin-right: -12px;
+ padding: 12px;
+}
+
+.jp-Dialog-checkbox {
+ padding-right: 5px;
+}
+
+.jp-Dialog-checkbox > input:focus-visible {
+ outline: 1px solid var(--jp-input-active-border-color);
+ outline-offset: 1px;
+}
+
+.jp-Dialog-spacer {
+ flex: 1 1 auto;
+}
+
+.jp-Dialog-title {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.jp-Dialog-body > .jp-select-wrapper {
+ width: 100%;
+}
+
+.jp-Dialog-body > button {
+ padding: 0 16px;
+}
+
+.jp-Dialog-body > label {
+ line-height: 1.4;
+ color: var(--jp-ui-font-color0);
+}
+
+.jp-Dialog-button.jp-mod-styled:not(:last-child) {
+ margin-right: 12px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-Input-Boolean-Dialog {
+ flex-direction: row-reverse;
+ align-items: end;
+ width: 100%;
+}
+
+.jp-Input-Boolean-Dialog > label {
+ flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-MainAreaWidget > :focus {
+ outline: none;
+}
+
+.jp-MainAreaWidget .jp-MainAreaWidget-error {
+ padding: 6px;
+}
+
+.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
+ width: auto;
+ padding: 10px;
+ background: var(--jp-error-color3);
+ border: var(--jp-border-width) solid var(--jp-error-color1);
+ border-radius: var(--jp-border-radius);
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/**
+ * google-material-color v1.2.6
+ * https://github.com/danlevan/google-material-color
+ */
+:root {
+ --md-red-50: #ffebee;
+ --md-red-100: #ffcdd2;
+ --md-red-200: #ef9a9a;
+ --md-red-300: #e57373;
+ --md-red-400: #ef5350;
+ --md-red-500: #f44336;
+ --md-red-600: #e53935;
+ --md-red-700: #d32f2f;
+ --md-red-800: #c62828;
+ --md-red-900: #b71c1c;
+ --md-red-A100: #ff8a80;
+ --md-red-A200: #ff5252;
+ --md-red-A400: #ff1744;
+ --md-red-A700: #d50000;
+ --md-pink-50: #fce4ec;
+ --md-pink-100: #f8bbd0;
+ --md-pink-200: #f48fb1;
+ --md-pink-300: #f06292;
+ --md-pink-400: #ec407a;
+ --md-pink-500: #e91e63;
+ --md-pink-600: #d81b60;
+ --md-pink-700: #c2185b;
+ --md-pink-800: #ad1457;
+ --md-pink-900: #880e4f;
+ --md-pink-A100: #ff80ab;
+ --md-pink-A200: #ff4081;
+ --md-pink-A400: #f50057;
+ --md-pink-A700: #c51162;
+ --md-purple-50: #f3e5f5;
+ --md-purple-100: #e1bee7;
+ --md-purple-200: #ce93d8;
+ --md-purple-300: #ba68c8;
+ --md-purple-400: #ab47bc;
+ --md-purple-500: #9c27b0;
+ --md-purple-600: #8e24aa;
+ --md-purple-700: #7b1fa2;
+ --md-purple-800: #6a1b9a;
+ --md-purple-900: #4a148c;
+ --md-purple-A100: #ea80fc;
+ --md-purple-A200: #e040fb;
+ --md-purple-A400: #d500f9;
+ --md-purple-A700: #a0f;
+ --md-deep-purple-50: #ede7f6;
+ --md-deep-purple-100: #d1c4e9;
+ --md-deep-purple-200: #b39ddb;
+ --md-deep-purple-300: #9575cd;
+ --md-deep-purple-400: #7e57c2;
+ --md-deep-purple-500: #673ab7;
+ --md-deep-purple-600: #5e35b1;
+ --md-deep-purple-700: #512da8;
+ --md-deep-purple-800: #4527a0;
+ --md-deep-purple-900: #311b92;
+ --md-deep-purple-A100: #b388ff;
+ --md-deep-purple-A200: #7c4dff;
+ --md-deep-purple-A400: #651fff;
+ --md-deep-purple-A700: #6200ea;
+ --md-indigo-50: #e8eaf6;
+ --md-indigo-100: #c5cae9;
+ --md-indigo-200: #9fa8da;
+ --md-indigo-300: #7986cb;
+ --md-indigo-400: #5c6bc0;
+ --md-indigo-500: #3f51b5;
+ --md-indigo-600: #3949ab;
+ --md-indigo-700: #303f9f;
+ --md-indigo-800: #283593;
+ --md-indigo-900: #1a237e;
+ --md-indigo-A100: #8c9eff;
+ --md-indigo-A200: #536dfe;
+ --md-indigo-A400: #3d5afe;
+ --md-indigo-A700: #304ffe;
+ --md-blue-50: #e3f2fd;
+ --md-blue-100: #bbdefb;
+ --md-blue-200: #90caf9;
+ --md-blue-300: #64b5f6;
+ --md-blue-400: #42a5f5;
+ --md-blue-500: #2196f3;
+ --md-blue-600: #1e88e5;
+ --md-blue-700: #1976d2;
+ --md-blue-800: #1565c0;
+ --md-blue-900: #0d47a1;
+ --md-blue-A100: #82b1ff;
+ --md-blue-A200: #448aff;
+ --md-blue-A400: #2979ff;
+ --md-blue-A700: #2962ff;
+ --md-light-blue-50: #e1f5fe;
+ --md-light-blue-100: #b3e5fc;
+ --md-light-blue-200: #81d4fa;
+ --md-light-blue-300: #4fc3f7;
+ --md-light-blue-400: #29b6f6;
+ --md-light-blue-500: #03a9f4;
+ --md-light-blue-600: #039be5;
+ --md-light-blue-700: #0288d1;
+ --md-light-blue-800: #0277bd;
+ --md-light-blue-900: #01579b;
+ --md-light-blue-A100: #80d8ff;
+ --md-light-blue-A200: #40c4ff;
+ --md-light-blue-A400: #00b0ff;
+ --md-light-blue-A700: #0091ea;
+ --md-cyan-50: #e0f7fa;
+ --md-cyan-100: #b2ebf2;
+ --md-cyan-200: #80deea;
+ --md-cyan-300: #4dd0e1;
+ --md-cyan-400: #26c6da;
+ --md-cyan-500: #00bcd4;
+ --md-cyan-600: #00acc1;
+ --md-cyan-700: #0097a7;
+ --md-cyan-800: #00838f;
+ --md-cyan-900: #006064;
+ --md-cyan-A100: #84ffff;
+ --md-cyan-A200: #18ffff;
+ --md-cyan-A400: #00e5ff;
+ --md-cyan-A700: #00b8d4;
+ --md-teal-50: #e0f2f1;
+ --md-teal-100: #b2dfdb;
+ --md-teal-200: #80cbc4;
+ --md-teal-300: #4db6ac;
+ --md-teal-400: #26a69a;
+ --md-teal-500: #009688;
+ --md-teal-600: #00897b;
+ --md-teal-700: #00796b;
+ --md-teal-800: #00695c;
+ --md-teal-900: #004d40;
+ --md-teal-A100: #a7ffeb;
+ --md-teal-A200: #64ffda;
+ --md-teal-A400: #1de9b6;
+ --md-teal-A700: #00bfa5;
+ --md-green-50: #e8f5e9;
+ --md-green-100: #c8e6c9;
+ --md-green-200: #a5d6a7;
+ --md-green-300: #81c784;
+ --md-green-400: #66bb6a;
+ --md-green-500: #4caf50;
+ --md-green-600: #43a047;
+ --md-green-700: #388e3c;
+ --md-green-800: #2e7d32;
+ --md-green-900: #1b5e20;
+ --md-green-A100: #b9f6ca;
+ --md-green-A200: #69f0ae;
+ --md-green-A400: #00e676;
+ --md-green-A700: #00c853;
+ --md-light-green-50: #f1f8e9;
+ --md-light-green-100: #dcedc8;
+ --md-light-green-200: #c5e1a5;
+ --md-light-green-300: #aed581;
+ --md-light-green-400: #9ccc65;
+ --md-light-green-500: #8bc34a;
+ --md-light-green-600: #7cb342;
+ --md-light-green-700: #689f38;
+ --md-light-green-800: #558b2f;
+ --md-light-green-900: #33691e;
+ --md-light-green-A100: #ccff90;
+ --md-light-green-A200: #b2ff59;
+ --md-light-green-A400: #76ff03;
+ --md-light-green-A700: #64dd17;
+ --md-lime-50: #f9fbe7;
+ --md-lime-100: #f0f4c3;
+ --md-lime-200: #e6ee9c;
+ --md-lime-300: #dce775;
+ --md-lime-400: #d4e157;
+ --md-lime-500: #cddc39;
+ --md-lime-600: #c0ca33;
+ --md-lime-700: #afb42b;
+ --md-lime-800: #9e9d24;
+ --md-lime-900: #827717;
+ --md-lime-A100: #f4ff81;
+ --md-lime-A200: #eeff41;
+ --md-lime-A400: #c6ff00;
+ --md-lime-A700: #aeea00;
+ --md-yellow-50: #fffde7;
+ --md-yellow-100: #fff9c4;
+ --md-yellow-200: #fff59d;
+ --md-yellow-300: #fff176;
+ --md-yellow-400: #ffee58;
+ --md-yellow-500: #ffeb3b;
+ --md-yellow-600: #fdd835;
+ --md-yellow-700: #fbc02d;
+ --md-yellow-800: #f9a825;
+ --md-yellow-900: #f57f17;
+ --md-yellow-A100: #ffff8d;
+ --md-yellow-A200: #ff0;
+ --md-yellow-A400: #ffea00;
+ --md-yellow-A700: #ffd600;
+ --md-amber-50: #fff8e1;
+ --md-amber-100: #ffecb3;
+ --md-amber-200: #ffe082;
+ --md-amber-300: #ffd54f;
+ --md-amber-400: #ffca28;
+ --md-amber-500: #ffc107;
+ --md-amber-600: #ffb300;
+ --md-amber-700: #ffa000;
+ --md-amber-800: #ff8f00;
+ --md-amber-900: #ff6f00;
+ --md-amber-A100: #ffe57f;
+ --md-amber-A200: #ffd740;
+ --md-amber-A400: #ffc400;
+ --md-amber-A700: #ffab00;
+ --md-orange-50: #fff3e0;
+ --md-orange-100: #ffe0b2;
+ --md-orange-200: #ffcc80;
+ --md-orange-300: #ffb74d;
+ --md-orange-400: #ffa726;
+ --md-orange-500: #ff9800;
+ --md-orange-600: #fb8c00;
+ --md-orange-700: #f57c00;
+ --md-orange-800: #ef6c00;
+ --md-orange-900: #e65100;
+ --md-orange-A100: #ffd180;
+ --md-orange-A200: #ffab40;
+ --md-orange-A400: #ff9100;
+ --md-orange-A700: #ff6d00;
+ --md-deep-orange-50: #fbe9e7;
+ --md-deep-orange-100: #ffccbc;
+ --md-deep-orange-200: #ffab91;
+ --md-deep-orange-300: #ff8a65;
+ --md-deep-orange-400: #ff7043;
+ --md-deep-orange-500: #ff5722;
+ --md-deep-orange-600: #f4511e;
+ --md-deep-orange-700: #e64a19;
+ --md-deep-orange-800: #d84315;
+ --md-deep-orange-900: #bf360c;
+ --md-deep-orange-A100: #ff9e80;
+ --md-deep-orange-A200: #ff6e40;
+ --md-deep-orange-A400: #ff3d00;
+ --md-deep-orange-A700: #dd2c00;
+ --md-brown-50: #efebe9;
+ --md-brown-100: #d7ccc8;
+ --md-brown-200: #bcaaa4;
+ --md-brown-300: #a1887f;
+ --md-brown-400: #8d6e63;
+ --md-brown-500: #795548;
+ --md-brown-600: #6d4c41;
+ --md-brown-700: #5d4037;
+ --md-brown-800: #4e342e;
+ --md-brown-900: #3e2723;
+ --md-grey-50: #fafafa;
+ --md-grey-100: #f5f5f5;
+ --md-grey-200: #eee;
+ --md-grey-300: #e0e0e0;
+ --md-grey-400: #bdbdbd;
+ --md-grey-500: #9e9e9e;
+ --md-grey-600: #757575;
+ --md-grey-700: #616161;
+ --md-grey-800: #424242;
+ --md-grey-900: #212121;
+ --md-blue-grey-50: #eceff1;
+ --md-blue-grey-100: #cfd8dc;
+ --md-blue-grey-200: #b0bec5;
+ --md-blue-grey-300: #90a4ae;
+ --md-blue-grey-400: #78909c;
+ --md-blue-grey-500: #607d8b;
+ --md-blue-grey-600: #546e7a;
+ --md-blue-grey-700: #455a64;
+ --md-blue-grey-800: #37474f;
+ --md-blue-grey-900: #263238;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| RenderedText
+|----------------------------------------------------------------------------*/
+
+:root {
+ /* This is the padding value to fill the gaps between lines containing spans with background color. */
+ --jp-private-code-span-padding: calc(
+ (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
+ );
+}
+
+.jp-RenderedText {
+ text-align: left;
+ padding-left: var(--jp-code-padding);
+ line-height: var(--jp-code-line-height);
+ font-family: var(--jp-code-font-family);
+}
+
+.jp-RenderedText pre,
+.jp-RenderedJavaScript pre,
+.jp-RenderedHTMLCommon pre {
+ color: var(--jp-content-font-color1);
+ font-size: var(--jp-code-font-size);
+ border: none;
+ margin: 0;
+ padding: 0;
+}
+
+.jp-RenderedText pre a:link {
+ text-decoration: none;
+ color: var(--jp-content-link-color);
+}
+
+.jp-RenderedText pre a:hover {
+ text-decoration: underline;
+ color: var(--jp-content-link-color);
+}
+
+.jp-RenderedText pre a:visited {
+ text-decoration: none;
+ color: var(--jp-content-link-color);
+}
+
+/* console foregrounds and backgrounds */
+.jp-RenderedText pre .ansi-black-fg {
+ color: #3e424d;
+}
+
+.jp-RenderedText pre .ansi-red-fg {
+ color: #e75c58;
+}
+
+.jp-RenderedText pre .ansi-green-fg {
+ color: #00a250;
+}
+
+.jp-RenderedText pre .ansi-yellow-fg {
+ color: #ddb62b;
+}
+
+.jp-RenderedText pre .ansi-blue-fg {
+ color: #208ffb;
+}
+
+.jp-RenderedText pre .ansi-magenta-fg {
+ color: #d160c4;
+}
+
+.jp-RenderedText pre .ansi-cyan-fg {
+ color: #60c6c8;
+}
+
+.jp-RenderedText pre .ansi-white-fg {
+ color: #c5c1b4;
+}
+
+.jp-RenderedText pre .ansi-black-bg {
+ background-color: #3e424d;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-red-bg {
+ background-color: #e75c58;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-green-bg {
+ background-color: #00a250;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-yellow-bg {
+ background-color: #ddb62b;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-blue-bg {
+ background-color: #208ffb;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-magenta-bg {
+ background-color: #d160c4;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-cyan-bg {
+ background-color: #60c6c8;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-white-bg {
+ background-color: #c5c1b4;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-black-intense-fg {
+ color: #282c36;
+}
+
+.jp-RenderedText pre .ansi-red-intense-fg {
+ color: #b22b31;
+}
+
+.jp-RenderedText pre .ansi-green-intense-fg {
+ color: #007427;
+}
+
+.jp-RenderedText pre .ansi-yellow-intense-fg {
+ color: #b27d12;
+}
+
+.jp-RenderedText pre .ansi-blue-intense-fg {
+ color: #0065ca;
+}
+
+.jp-RenderedText pre .ansi-magenta-intense-fg {
+ color: #a03196;
+}
+
+.jp-RenderedText pre .ansi-cyan-intense-fg {
+ color: #258f8f;
+}
+
+.jp-RenderedText pre .ansi-white-intense-fg {
+ color: #a1a6b2;
+}
+
+.jp-RenderedText pre .ansi-black-intense-bg {
+ background-color: #282c36;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-red-intense-bg {
+ background-color: #b22b31;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-green-intense-bg {
+ background-color: #007427;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-yellow-intense-bg {
+ background-color: #b27d12;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-blue-intense-bg {
+ background-color: #0065ca;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-magenta-intense-bg {
+ background-color: #a03196;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-cyan-intense-bg {
+ background-color: #258f8f;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-white-intense-bg {
+ background-color: #a1a6b2;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-default-inverse-fg {
+ color: var(--jp-ui-inverse-font-color0);
+}
+
+.jp-RenderedText pre .ansi-default-inverse-bg {
+ background-color: var(--jp-inverse-layout-color0);
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-bold {
+ font-weight: bold;
+}
+
+.jp-RenderedText pre .ansi-underline {
+ text-decoration: underline;
+}
+
+.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
+ background: var(--jp-rendermime-error-background);
+ padding-top: var(--jp-code-padding);
+}
+
+/*-----------------------------------------------------------------------------
+| RenderedLatex
+|----------------------------------------------------------------------------*/
+
+.jp-RenderedLatex {
+ color: var(--jp-content-font-color1);
+ font-size: var(--jp-content-font-size1);
+ line-height: var(--jp-content-line-height);
+}
+
+/* Left-justify outputs.*/
+.jp-OutputArea-output.jp-RenderedLatex {
+ padding: var(--jp-code-padding);
+ text-align: left;
+}
+
+/*-----------------------------------------------------------------------------
+| RenderedHTML
+|----------------------------------------------------------------------------*/
+
+.jp-RenderedHTMLCommon {
+ color: var(--jp-content-font-color1);
+ font-family: var(--jp-content-font-family);
+ font-size: var(--jp-content-font-size1);
+ line-height: var(--jp-content-line-height);
+
+ /* Give a bit more R padding on Markdown text to keep line lengths reasonable */
+ padding-right: 20px;
+}
+
+.jp-RenderedHTMLCommon em {
+ font-style: italic;
+}
+
+.jp-RenderedHTMLCommon strong {
+ font-weight: bold;
+}
+
+.jp-RenderedHTMLCommon u {
+ text-decoration: underline;
+}
+
+.jp-RenderedHTMLCommon a:link {
+ text-decoration: none;
+ color: var(--jp-content-link-color);
+}
+
+.jp-RenderedHTMLCommon a:hover {
+ text-decoration: underline;
+ color: var(--jp-content-link-color);
+}
+
+.jp-RenderedHTMLCommon a:visited {
+ text-decoration: none;
+ color: var(--jp-content-link-color);
+}
+
+/* Headings */
+
+.jp-RenderedHTMLCommon h1,
+.jp-RenderedHTMLCommon h2,
+.jp-RenderedHTMLCommon h3,
+.jp-RenderedHTMLCommon h4,
+.jp-RenderedHTMLCommon h5,
+.jp-RenderedHTMLCommon h6 {
+ line-height: var(--jp-content-heading-line-height);
+ font-weight: var(--jp-content-heading-font-weight);
+ font-style: normal;
+ margin: var(--jp-content-heading-margin-top) 0
+ var(--jp-content-heading-margin-bottom) 0;
+}
+
+.jp-RenderedHTMLCommon h1:first-child,
+.jp-RenderedHTMLCommon h2:first-child,
+.jp-RenderedHTMLCommon h3:first-child,
+.jp-RenderedHTMLCommon h4:first-child,
+.jp-RenderedHTMLCommon h5:first-child,
+.jp-RenderedHTMLCommon h6:first-child {
+ margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
+}
+
+.jp-RenderedHTMLCommon h1:last-child,
+.jp-RenderedHTMLCommon h2:last-child,
+.jp-RenderedHTMLCommon h3:last-child,
+.jp-RenderedHTMLCommon h4:last-child,
+.jp-RenderedHTMLCommon h5:last-child,
+.jp-RenderedHTMLCommon h6:last-child {
+ margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
+}
+
+.jp-RenderedHTMLCommon h1 {
+ font-size: var(--jp-content-font-size5);
+}
+
+.jp-RenderedHTMLCommon h2 {
+ font-size: var(--jp-content-font-size4);
+}
+
+.jp-RenderedHTMLCommon h3 {
+ font-size: var(--jp-content-font-size3);
+}
+
+.jp-RenderedHTMLCommon h4 {
+ font-size: var(--jp-content-font-size2);
+}
+
+.jp-RenderedHTMLCommon h5 {
+ font-size: var(--jp-content-font-size1);
+}
+
+.jp-RenderedHTMLCommon h6 {
+ font-size: var(--jp-content-font-size0);
+}
+
+/* Lists */
+
+/* stylelint-disable selector-max-type, selector-max-compound-selectors */
+
+.jp-RenderedHTMLCommon ul:not(.list-inline),
+.jp-RenderedHTMLCommon ol:not(.list-inline) {
+ padding-left: 2em;
+}
+
+.jp-RenderedHTMLCommon ul {
+ list-style: disc;
+}
+
+.jp-RenderedHTMLCommon ul ul {
+ list-style: square;
+}
+
+.jp-RenderedHTMLCommon ul ul ul {
+ list-style: circle;
+}
+
+.jp-RenderedHTMLCommon ol {
+ list-style: decimal;
+}
+
+.jp-RenderedHTMLCommon ol ol {
+ list-style: upper-alpha;
+}
+
+.jp-RenderedHTMLCommon ol ol ol {
+ list-style: lower-alpha;
+}
+
+.jp-RenderedHTMLCommon ol ol ol ol {
+ list-style: lower-roman;
+}
+
+.jp-RenderedHTMLCommon ol ol ol ol ol {
+ list-style: decimal;
+}
+
+.jp-RenderedHTMLCommon ol,
+.jp-RenderedHTMLCommon ul {
+ margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon ul ul,
+.jp-RenderedHTMLCommon ul ol,
+.jp-RenderedHTMLCommon ol ul,
+.jp-RenderedHTMLCommon ol ol {
+ margin-bottom: 0;
+}
+
+/* stylelint-enable selector-max-type, selector-max-compound-selectors */
+
+.jp-RenderedHTMLCommon hr {
+ color: var(--jp-border-color2);
+ background-color: var(--jp-border-color1);
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon > pre {
+ margin: 1.5em 2em;
+}
+
+.jp-RenderedHTMLCommon pre,
+.jp-RenderedHTMLCommon code {
+ border: 0;
+ background-color: var(--jp-layout-color0);
+ color: var(--jp-content-font-color1);
+ font-family: var(--jp-code-font-family);
+ font-size: inherit;
+ line-height: var(--jp-code-line-height);
+ padding: 0;
+ white-space: pre-wrap;
+}
+
+.jp-RenderedHTMLCommon :not(pre) > code {
+ background-color: var(--jp-layout-color2);
+ padding: 1px 5px;
+}
+
+/* Tables */
+
+.jp-RenderedHTMLCommon table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ border: none;
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ table-layout: fixed;
+ margin-left: auto;
+ margin-bottom: 1em;
+ margin-right: auto;
+}
+
+.jp-RenderedHTMLCommon thead {
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
+ vertical-align: bottom;
+}
+
+.jp-RenderedHTMLCommon td,
+.jp-RenderedHTMLCommon th,
+.jp-RenderedHTMLCommon tr {
+ vertical-align: middle;
+ padding: 0.5em;
+ line-height: normal;
+ white-space: normal;
+ max-width: none;
+ border: none;
+}
+
+.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
+.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
+ max-width: none;
+}
+
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
+ text-align: right;
+}
+
+.jp-RenderedHTMLCommon th {
+ font-weight: bold;
+}
+
+.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
+ background: var(--jp-layout-color0);
+}
+
+.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
+ background: var(--jp-rendermime-table-row-background);
+}
+
+.jp-RenderedHTMLCommon tbody tr:hover {
+ background: var(--jp-rendermime-table-row-hover-background);
+}
+
+.jp-RenderedHTMLCommon p {
+ text-align: left;
+ margin: 0;
+ margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon img {
+ -moz-force-broken-image-icon: 1;
+}
+
+/* Restrict to direct children as other images could be nested in other content. */
+.jp-RenderedHTMLCommon > img {
+ display: block;
+ margin-left: 0;
+ margin-right: 0;
+ margin-bottom: 1em;
+}
+
+/* Change color behind transparent images if they need it... */
+[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
+ background-color: var(--jp-inverse-layout-color1);
+}
+
+[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
+ background-color: var(--jp-inverse-layout-color1);
+}
+
+.jp-RenderedHTMLCommon img,
+.jp-RenderedImage img,
+.jp-RenderedHTMLCommon svg,
+.jp-RenderedSVG svg {
+ max-width: 100%;
+ height: auto;
+}
+
+.jp-RenderedHTMLCommon img.jp-mod-unconfined,
+.jp-RenderedImage img.jp-mod-unconfined,
+.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
+.jp-RenderedSVG svg.jp-mod-unconfined {
+ max-width: none;
+}
+
+.jp-RenderedHTMLCommon .alert {
+ padding: var(--jp-notebook-padding);
+ border: var(--jp-border-width) solid transparent;
+ border-radius: var(--jp-border-radius);
+ margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon .alert-info {
+ color: var(--jp-info-color0);
+ background-color: var(--jp-info-color3);
+ border-color: var(--jp-info-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-info hr {
+ border-color: var(--jp-info-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-info > p:last-child,
+.jp-RenderedHTMLCommon .alert-info > ul:last-child {
+ margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-warning {
+ color: var(--jp-warn-color0);
+ background-color: var(--jp-warn-color3);
+ border-color: var(--jp-warn-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-warning hr {
+ border-color: var(--jp-warn-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-warning > p:last-child,
+.jp-RenderedHTMLCommon .alert-warning > ul:last-child {
+ margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-success {
+ color: var(--jp-success-color0);
+ background-color: var(--jp-success-color3);
+ border-color: var(--jp-success-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-success hr {
+ border-color: var(--jp-success-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-success > p:last-child,
+.jp-RenderedHTMLCommon .alert-success > ul:last-child {
+ margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-danger {
+ color: var(--jp-error-color0);
+ background-color: var(--jp-error-color3);
+ border-color: var(--jp-error-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-danger hr {
+ border-color: var(--jp-error-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-danger > p:last-child,
+.jp-RenderedHTMLCommon .alert-danger > ul:last-child {
+ margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon blockquote {
+ margin: 1em 2em;
+ padding: 0 1em;
+ border-left: 5px solid var(--jp-border-color2);
+}
+
+a.jp-InternalAnchorLink {
+ visibility: hidden;
+ margin-left: 8px;
+ color: var(--md-blue-800);
+}
+
+h1:hover .jp-InternalAnchorLink,
+h2:hover .jp-InternalAnchorLink,
+h3:hover .jp-InternalAnchorLink,
+h4:hover .jp-InternalAnchorLink,
+h5:hover .jp-InternalAnchorLink,
+h6:hover .jp-InternalAnchorLink {
+ visibility: visible;
+}
+
+.jp-RenderedHTMLCommon kbd {
+ background-color: var(--jp-rendermime-table-row-background);
+ border: 1px solid var(--jp-border-color0);
+ border-bottom-color: var(--jp-border-color2);
+ border-radius: 3px;
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
+ display: inline-block;
+ font-size: var(--jp-ui-font-size0);
+ line-height: 1em;
+ padding: 0.2em 0.5em;
+}
+
+/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
+ * At the bottom of cells this is a bit too much as there is also spacing
+ * between cells. Going all the way to 0 gets too tight between markdown and
+ * code cells.
+ */
+.jp-RenderedHTMLCommon > *:last-child {
+ margin-bottom: 0.5em;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-cursor-backdrop {
+ position: fixed;
+ width: 200px;
+ height: 200px;
+ margin-top: -100px;
+ margin-left: -100px;
+ will-change: transform;
+ z-index: 100;
+}
+
+.lm-mod-drag-image {
+ will-change: transform;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-lineFormSearch {
+ padding: 4px 12px;
+ background-color: var(--jp-layout-color2);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ z-index: 2;
+ font-size: var(--jp-ui-font-size1);
+}
+
+.jp-lineFormCaption {
+ font-size: var(--jp-ui-font-size0);
+ line-height: var(--jp-ui-font-size1);
+ margin-top: 4px;
+ color: var(--jp-ui-font-color0);
+}
+
+.jp-baseLineForm {
+ border: none;
+ border-radius: 0;
+ position: absolute;
+ background-size: 16px;
+ background-repeat: no-repeat;
+ background-position: center;
+ outline: none;
+}
+
+.jp-lineFormButtonContainer {
+ top: 4px;
+ right: 8px;
+ height: 24px;
+ padding: 0 12px;
+ width: 12px;
+}
+
+.jp-lineFormButtonIcon {
+ top: 0;
+ right: 0;
+ background-color: var(--jp-brand-color1);
+ height: 100%;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 4px 6px;
+}
+
+.jp-lineFormButton {
+ top: 0;
+ right: 0;
+ background-color: transparent;
+ height: 100%;
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.jp-lineFormWrapper {
+ overflow: hidden;
+ padding: 0 8px;
+ border: 1px solid var(--jp-border-color0);
+ background-color: var(--jp-input-active-background);
+ height: 22px;
+}
+
+.jp-lineFormWrapperFocusWithin {
+ border: var(--jp-border-width) solid var(--md-blue-500);
+ box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-lineFormInput {
+ background: transparent;
+ width: 200px;
+ height: 100%;
+ border: none;
+ outline: none;
+ color: var(--jp-ui-font-color0);
+ line-height: 28px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-JSONEditor {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.jp-JSONEditor-host {
+ flex: 1 1 auto;
+ border: var(--jp-border-width) solid var(--jp-input-border-color);
+ border-radius: 0;
+ background: var(--jp-layout-color0);
+ min-height: 50px;
+ padding: 1px;
+}
+
+.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
+ border-color: red;
+ outline-color: red;
+}
+
+.jp-JSONEditor-header {
+ display: flex;
+ flex: 1 0 auto;
+ padding: 0 0 0 12px;
+}
+
+.jp-JSONEditor-header label {
+ flex: 0 0 auto;
+}
+
+.jp-JSONEditor-commitButton {
+ height: 16px;
+ width: 16px;
+ background-size: 18px;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+
+.jp-JSONEditor-host.jp-mod-focused {
+ background-color: var(--jp-input-active-background);
+ border: 1px solid var(--jp-input-active-border-color);
+ box-shadow: var(--jp-input-box-shadow);
+}
+
+.jp-Editor.jp-mod-dropTarget {
+ border: var(--jp-border-width) solid var(--jp-input-active-border-color);
+ box-shadow: var(--jp-input-box-shadow);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+.jp-DocumentSearch-input {
+ border: none;
+ outline: none;
+ color: var(--jp-ui-font-color0);
+ font-size: var(--jp-ui-font-size1);
+ background-color: var(--jp-layout-color0);
+ font-family: var(--jp-ui-font-family);
+ padding: 2px 1px;
+ resize: none;
+}
+
+.jp-DocumentSearch-overlay {
+ position: absolute;
+ background-color: var(--jp-toolbar-background);
+ border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ border-left: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ top: 0;
+ right: 0;
+ z-index: 7;
+ min-width: 405px;
+ padding: 2px;
+ font-size: var(--jp-ui-font-size1);
+
+ --jp-private-document-search-button-height: 20px;
+}
+
+.jp-DocumentSearch-overlay button {
+ background-color: var(--jp-toolbar-background);
+ outline: 0;
+}
+
+.jp-DocumentSearch-overlay button:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-overlay button:active {
+ background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-overlay-row {
+ display: flex;
+ align-items: center;
+ margin-bottom: 2px;
+}
+
+.jp-DocumentSearch-button-content {
+ display: inline-block;
+ cursor: pointer;
+ box-sizing: border-box;
+ width: 100%;
+ height: 100%;
+}
+
+.jp-DocumentSearch-button-content svg {
+ width: 100%;
+ height: 100%;
+}
+
+.jp-DocumentSearch-input-wrapper {
+ border: var(--jp-border-width) solid var(--jp-border-color0);
+ display: flex;
+ background-color: var(--jp-layout-color0);
+ margin: 2px;
+}
+
+.jp-DocumentSearch-input-wrapper:focus-within {
+ border-color: var(--jp-cell-editor-active-border-color);
+}
+
+.jp-DocumentSearch-toggle-wrapper,
+.jp-DocumentSearch-button-wrapper {
+ all: initial;
+ overflow: hidden;
+ display: inline-block;
+ border: none;
+ box-sizing: border-box;
+}
+
+.jp-DocumentSearch-toggle-wrapper {
+ width: 14px;
+ height: 14px;
+}
+
+.jp-DocumentSearch-button-wrapper {
+ width: var(--jp-private-document-search-button-height);
+ height: var(--jp-private-document-search-button-height);
+}
+
+.jp-DocumentSearch-toggle-wrapper:focus,
+.jp-DocumentSearch-button-wrapper:focus {
+ outline: var(--jp-border-width) solid
+ var(--jp-cell-editor-active-border-color);
+ outline-offset: -1px;
+}
+
+.jp-DocumentSearch-toggle-wrapper,
+.jp-DocumentSearch-button-wrapper,
+.jp-DocumentSearch-button-content:focus {
+ outline: none;
+}
+
+.jp-DocumentSearch-toggle-placeholder {
+ width: 5px;
+}
+
+.jp-DocumentSearch-input-button::before {
+ display: block;
+ padding-top: 100%;
+}
+
+.jp-DocumentSearch-input-button-off {
+ opacity: var(--jp-search-toggle-off-opacity);
+}
+
+.jp-DocumentSearch-input-button-off:hover {
+ opacity: var(--jp-search-toggle-hover-opacity);
+}
+
+.jp-DocumentSearch-input-button-on {
+ opacity: var(--jp-search-toggle-on-opacity);
+}
+
+.jp-DocumentSearch-index-counter {
+ padding-left: 10px;
+ padding-right: 10px;
+ user-select: none;
+ min-width: 35px;
+ display: inline-block;
+}
+
+.jp-DocumentSearch-up-down-wrapper {
+ display: inline-block;
+ padding-right: 2px;
+ margin-left: auto;
+ white-space: nowrap;
+}
+
+.jp-DocumentSearch-spacer {
+ margin-left: auto;
+}
+
+.jp-DocumentSearch-up-down-wrapper button {
+ outline: 0;
+ border: none;
+ width: var(--jp-private-document-search-button-height);
+ height: var(--jp-private-document-search-button-height);
+ vertical-align: middle;
+ margin: 1px 5px 2px;
+}
+
+.jp-DocumentSearch-up-down-button:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-up-down-button:active {
+ background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-filter-button {
+ border-radius: var(--jp-border-radius);
+}
+
+.jp-DocumentSearch-filter-button:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-filter-button-enabled {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-filter-button-enabled:hover {
+ background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-search-options {
+ padding: 0 8px;
+ margin-left: 3px;
+ width: 100%;
+ display: grid;
+ justify-content: start;
+ grid-template-columns: 1fr 1fr;
+ align-items: center;
+ justify-items: stretch;
+}
+
+.jp-DocumentSearch-search-filter-disabled {
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-DocumentSearch-search-filter {
+ display: flex;
+ align-items: center;
+ user-select: none;
+}
+
+.jp-DocumentSearch-regex-error {
+ color: var(--jp-error-color0);
+}
+
+.jp-DocumentSearch-replace-button-wrapper {
+ overflow: hidden;
+ display: inline-block;
+ box-sizing: border-box;
+ border: var(--jp-border-width) solid var(--jp-border-color0);
+ margin: auto 2px;
+ padding: 1px 4px;
+ height: calc(var(--jp-private-document-search-button-height) + 2px);
+}
+
+.jp-DocumentSearch-replace-button-wrapper:focus {
+ border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
+}
+
+.jp-DocumentSearch-replace-button {
+ display: inline-block;
+ text-align: center;
+ cursor: pointer;
+ box-sizing: border-box;
+ color: var(--jp-ui-font-color1);
+
+ /* height - 2 * (padding of wrapper) */
+ line-height: calc(var(--jp-private-document-search-button-height) - 2px);
+ width: 100%;
+ height: 100%;
+}
+
+.jp-DocumentSearch-replace-button:focus {
+ outline: none;
+}
+
+.jp-DocumentSearch-replace-wrapper-class {
+ margin-left: 14px;
+ display: flex;
+}
+
+.jp-DocumentSearch-replace-toggle {
+ border: none;
+ background-color: var(--jp-toolbar-background);
+ border-radius: var(--jp-border-radius);
+}
+
+.jp-DocumentSearch-replace-toggle:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.cm-editor {
+ line-height: var(--jp-code-line-height);
+ font-size: var(--jp-code-font-size);
+ font-family: var(--jp-code-font-family);
+ border: 0;
+ border-radius: 0;
+ height: auto;
+
+ /* Changed to auto to autogrow */
+}
+
+.cm-editor pre {
+ padding: 0 var(--jp-code-padding);
+}
+
+.jp-CodeMirrorEditor[data-type='inline'] .cm-dialog {
+ background-color: var(--jp-layout-color0);
+ color: var(--jp-content-font-color1);
+}
+
+.jp-CodeMirrorEditor {
+ cursor: text;
+}
+
+/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
+@media screen and (min-width: 2138px) and (max-width: 4319px) {
+ .jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
+ border-left: var(--jp-code-cursor-width1) solid
+ var(--jp-editor-cursor-color);
+ }
+}
+
+/* When zoomed out less than 33% */
+@media screen and (min-width: 4320px) {
+ .jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
+ border-left: var(--jp-code-cursor-width2) solid
+ var(--jp-editor-cursor-color);
+ }
+}
+
+.cm-editor.jp-mod-readOnly .cm-cursor {
+ display: none;
+}
+
+.jp-CollaboratorCursor {
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: none;
+ border-bottom: 3px solid;
+ background-clip: content-box;
+ margin-left: -5px;
+ margin-right: -5px;
+}
+
+.cm-searching,
+.cm-searching span {
+ /* `.cm-searching span`: we need to override syntax highlighting */
+ background-color: var(--jp-search-unselected-match-background-color);
+ color: var(--jp-search-unselected-match-color);
+}
+
+.cm-searching::selection,
+.cm-searching span::selection {
+ background-color: var(--jp-search-unselected-match-background-color);
+ color: var(--jp-search-unselected-match-color);
+}
+
+.jp-current-match > .cm-searching,
+.jp-current-match > .cm-searching span,
+.cm-searching > .jp-current-match,
+.cm-searching > .jp-current-match span {
+ background-color: var(--jp-search-selected-match-background-color);
+ color: var(--jp-search-selected-match-color);
+}
+
+.jp-current-match > .cm-searching::selection,
+.cm-searching > .jp-current-match::selection,
+.jp-current-match > .cm-searching span::selection {
+ background-color: var(--jp-search-selected-match-background-color);
+ color: var(--jp-search-selected-match-color);
+}
+
+.cm-trailingspace {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAsElEQVQIHQGlAFr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+r3zKmT0/+pk9P/7+r3zAAAAAAAAAAABAAAAAAAAAAA6OPzM+/q9wAAAAAA6OPzMwAAAAAAAAAAAgAAAAAAAAAAGR8NiRQaCgAZIA0AGR8NiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyoYJ/SY80UAAAAASUVORK5CYII=);
+ background-position: center left;
+ background-repeat: repeat-x;
+}
+
+.jp-CollaboratorCursor-hover {
+ position: absolute;
+ z-index: 1;
+ transform: translateX(-50%);
+ color: white;
+ border-radius: 3px;
+ padding-left: 4px;
+ padding-right: 4px;
+ padding-top: 1px;
+ padding-bottom: 1px;
+ text-align: center;
+ font-size: var(--jp-ui-font-size1);
+ white-space: nowrap;
+}
+
+.jp-CodeMirror-ruler {
+ border-left: 1px dashed var(--jp-border-color2);
+}
+
+/* Styles for shared cursors (remote cursor locations and selected ranges) */
+.jp-CodeMirrorEditor .cm-ySelectionCaret {
+ position: relative;
+ border-left: 1px solid black;
+ margin-left: -1px;
+ margin-right: -1px;
+ box-sizing: border-box;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionCaret > .cm-ySelectionInfo {
+ white-space: nowrap;
+ position: absolute;
+ top: -1.15em;
+ padding-bottom: 0.05em;
+ left: -1px;
+ font-size: 0.95em;
+ font-family: var(--jp-ui-font-family);
+ font-weight: bold;
+ line-height: normal;
+ user-select: none;
+ color: white;
+ padding-left: 2px;
+ padding-right: 2px;
+ z-index: 101;
+ transition: opacity 0.3s ease-in-out;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionInfo {
+ transition-delay: 0.7s;
+ opacity: 0;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionCaret:hover > .cm-ySelectionInfo {
+ opacity: 1;
+ transition-delay: 0s;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-MimeDocument {
+ outline: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-filebrowser-button-height: 28px;
+ --jp-private-filebrowser-button-width: 48px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-FileBrowser .jp-SidePanel-content {
+ display: flex;
+ flex-direction: column;
+}
+
+.jp-FileBrowser-toolbar.jp-Toolbar {
+ flex-wrap: wrap;
+ row-gap: 12px;
+ border-bottom: none;
+ height: auto;
+ margin: 8px 12px 0;
+ box-shadow: none;
+ padding: 0;
+ justify-content: flex-start;
+}
+
+.jp-FileBrowser-Panel {
+ flex: 1 1 auto;
+ display: flex;
+ flex-direction: column;
+}
+
+.jp-BreadCrumbs {
+ flex: 0 0 auto;
+ margin: 8px 12px;
+}
+
+.jp-BreadCrumbs-item {
+ margin: 0 2px;
+ padding: 0 2px;
+ border-radius: var(--jp-border-radius);
+ cursor: pointer;
+}
+
+.jp-BreadCrumbs-item:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-BreadCrumbs-item:first-child {
+ margin-left: 0;
+}
+
+.jp-BreadCrumbs-item.jp-mod-dropTarget {
+ background-color: var(--jp-brand-color2);
+ opacity: 0.7;
+}
+
+/*-----------------------------------------------------------------------------
+| Buttons
+|----------------------------------------------------------------------------*/
+
+.jp-FileBrowser-toolbar > .jp-Toolbar-item {
+ flex: 0 0 auto;
+ padding-left: 0;
+ padding-right: 2px;
+ align-items: center;
+ height: unset;
+}
+
+.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
+ width: 40px;
+}
+
+/*-----------------------------------------------------------------------------
+| Other styles
+|----------------------------------------------------------------------------*/
+
+.jp-FileDialog.jp-mod-conflict input {
+ color: var(--jp-error-color1);
+}
+
+.jp-FileDialog .jp-new-name-title {
+ margin-top: 12px;
+}
+
+.jp-LastModified-hidden {
+ display: none;
+}
+
+.jp-FileSize-hidden {
+ display: none;
+}
+
+.jp-FileBrowser .lm-AccordionPanel > h3:first-child {
+ display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| DirListing
+|----------------------------------------------------------------------------*/
+
+.jp-DirListing {
+ flex: 1 1 auto;
+ display: flex;
+ flex-direction: column;
+ outline: 0;
+}
+
+.jp-DirListing-header {
+ flex: 0 0 auto;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ overflow: hidden;
+ border-top: var(--jp-border-width) solid var(--jp-border-color2);
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ z-index: 2;
+}
+
+.jp-DirListing-headerItem {
+ padding: 4px 12px 2px;
+ font-weight: 500;
+}
+
+.jp-DirListing-headerItem:hover {
+ background: var(--jp-layout-color2);
+}
+
+.jp-DirListing-headerItem.jp-id-name {
+ flex: 1 0 84px;
+}
+
+.jp-DirListing-headerItem.jp-id-modified {
+ flex: 0 0 112px;
+ border-left: var(--jp-border-width) solid var(--jp-border-color2);
+ text-align: right;
+}
+
+.jp-DirListing-headerItem.jp-id-filesize {
+ flex: 0 0 75px;
+ border-left: var(--jp-border-width) solid var(--jp-border-color2);
+ text-align: right;
+}
+
+.jp-id-narrow {
+ display: none;
+ flex: 0 0 5px;
+ padding: 4px;
+ border-left: var(--jp-border-width) solid var(--jp-border-color2);
+ text-align: right;
+ color: var(--jp-border-color2);
+}
+
+.jp-DirListing-narrow .jp-id-narrow {
+ display: block;
+}
+
+.jp-DirListing-narrow .jp-id-modified,
+.jp-DirListing-narrow .jp-DirListing-itemModified {
+ display: none;
+}
+
+.jp-DirListing-headerItem.jp-mod-selected {
+ font-weight: 600;
+}
+
+/* increase specificity to override bundled default */
+.jp-DirListing-content {
+ flex: 1 1 auto;
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ overflow: auto;
+ background-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-content mark {
+ color: var(--jp-ui-font-color0);
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark {
+ color: var(--jp-ui-inverse-font-color0);
+}
+
+/* Style the directory listing content when a user drops a file to upload */
+.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
+ outline: 5px dashed rgba(128, 128, 128, 0.5);
+ outline-offset: -10px;
+ cursor: copy;
+}
+
+.jp-DirListing-item {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ padding: 4px 12px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.jp-DirListing-checkboxWrapper {
+ /* Increases hit area of checkbox. */
+ padding: 4px;
+}
+
+.jp-DirListing-header
+ .jp-DirListing-checkboxWrapper
+ + .jp-DirListing-headerItem {
+ padding-left: 4px;
+}
+
+.jp-DirListing-content .jp-DirListing-checkboxWrapper {
+ position: relative;
+ left: -4px;
+ margin: -4px 0 -4px -8px;
+}
+
+.jp-DirListing-checkboxWrapper.jp-mod-visible {
+ visibility: visible;
+}
+
+/* For devices that support hovering, hide checkboxes until hovered, selected...
+*/
+@media (hover: hover) {
+ .jp-DirListing-checkboxWrapper {
+ visibility: hidden;
+ }
+
+ .jp-DirListing-item:hover .jp-DirListing-checkboxWrapper,
+ .jp-DirListing-item.jp-mod-selected .jp-DirListing-checkboxWrapper {
+ visibility: visible;
+ }
+}
+
+.jp-DirListing-item[data-is-dot] {
+ opacity: 75%;
+}
+
+.jp-DirListing-item.jp-mod-selected {
+ color: var(--jp-ui-inverse-font-color1);
+ background: var(--jp-brand-color1);
+}
+
+.jp-DirListing-item.jp-mod-dropTarget {
+ background: var(--jp-brand-color3);
+}
+
+.jp-DirListing-item:hover:not(.jp-mod-selected) {
+ background: var(--jp-layout-color2);
+}
+
+.jp-DirListing-itemIcon {
+ flex: 0 0 20px;
+ margin-right: 4px;
+}
+
+.jp-DirListing-itemText {
+ flex: 1 0 64px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ user-select: none;
+}
+
+.jp-DirListing-itemText:focus {
+ outline-width: 2px;
+ outline-color: var(--jp-inverse-layout-color1);
+ outline-style: solid;
+ outline-offset: 1px;
+}
+
+.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus {
+ outline-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-itemModified {
+ flex: 0 0 125px;
+ text-align: right;
+}
+
+.jp-DirListing-itemFileSize {
+ flex: 0 0 90px;
+ text-align: right;
+}
+
+.jp-DirListing-editor {
+ flex: 1 0 64px;
+ outline: none;
+ border: none;
+ color: var(--jp-ui-font-color1);
+ background-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon::before {
+ color: var(--jp-success-color1);
+ content: '\25CF';
+ font-size: 8px;
+ position: absolute;
+ left: -8px;
+}
+
+.jp-DirListing-item.jp-mod-running.jp-mod-selected
+ .jp-DirListing-itemIcon::before {
+ color: var(--jp-ui-inverse-font-color1);
+}
+
+.jp-DirListing-item.lm-mod-drag-image,
+.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
+ font-size: var(--jp-ui-font-size1);
+ padding-left: 4px;
+ margin-left: 4px;
+ width: 160px;
+ background-color: var(--jp-ui-inverse-font-color2);
+ box-shadow: var(--jp-elevation-z2);
+ border-radius: 0;
+ color: var(--jp-ui-font-color1);
+ transform: translateX(-40%) translateY(-58%);
+}
+
+.jp-Document {
+ min-width: 120px;
+ min-height: 120px;
+ outline: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Main OutputArea
+| OutputArea has a list of Outputs
+|----------------------------------------------------------------------------*/
+
+.jp-OutputArea {
+ overflow-y: auto;
+}
+
+.jp-OutputArea-child {
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+ overflow: hidden;
+}
+
+.jp-OutputPrompt {
+ width: var(--jp-cell-prompt-width);
+ color: var(--jp-cell-outprompt-font-color);
+ font-family: var(--jp-cell-prompt-font-family);
+ padding: var(--jp-code-padding);
+ letter-spacing: var(--jp-cell-prompt-letter-spacing);
+ line-height: var(--jp-code-line-height);
+ font-size: var(--jp-code-font-size);
+ border: var(--jp-border-width) solid transparent;
+ opacity: var(--jp-cell-prompt-opacity);
+
+ /* Right align prompt text, don't wrap to handle large prompt numbers */
+ text-align: right;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ /* Disable text selection */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.jp-OutputArea-prompt {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.jp-OutputArea-output {
+ display: table-cell;
+ width: 100%;
+ height: auto;
+ overflow: auto;
+ user-select: text;
+ -moz-user-select: text;
+ -webkit-user-select: text;
+ -ms-user-select: text;
+}
+
+.jp-OutputArea .jp-RenderedText {
+ padding-left: 1ch;
+}
+
+/**
+ * Prompt overlay.
+ */
+
+.jp-OutputArea-promptOverlay {
+ position: absolute;
+ top: 0;
+ width: var(--jp-cell-prompt-width);
+ height: 100%;
+ opacity: 0.5;
+}
+
+.jp-OutputArea-promptOverlay:hover {
+ background: var(--jp-layout-color2);
+ box-shadow: inset 0 0 1px var(--jp-inverse-layout-color0);
+ cursor: zoom-out;
+}
+
+.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay:hover {
+ cursor: zoom-in;
+}
+
+/**
+ * Isolated output.
+ */
+.jp-OutputArea-output.jp-mod-isolated {
+ width: 100%;
+ display: block;
+}
+
+/*
+When drag events occur, `lm-mod-override-cursor` is added to the body.
+Because iframes steal all cursor events, the following two rules are necessary
+to suppress pointer events while resize drags are occurring. There may be a
+better solution to this problem.
+*/
+body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
+ position: relative;
+}
+
+body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: transparent;
+}
+
+/* pre */
+
+.jp-OutputArea-output pre {
+ border: none;
+ margin: 0;
+ padding: 0;
+ overflow-x: auto;
+ overflow-y: auto;
+ word-break: break-all;
+ word-wrap: break-word;
+ white-space: pre-wrap;
+}
+
+/* tables */
+
+.jp-OutputArea-output.jp-RenderedHTMLCommon table {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+/* description lists */
+
+.jp-OutputArea-output dl,
+.jp-OutputArea-output dt,
+.jp-OutputArea-output dd {
+ display: block;
+}
+
+.jp-OutputArea-output dl {
+ width: 100%;
+ overflow: hidden;
+ padding: 0;
+ margin: 0;
+}
+
+.jp-OutputArea-output dt {
+ font-weight: bold;
+ float: left;
+ width: 20%;
+ padding: 0;
+ margin: 0;
+}
+
+.jp-OutputArea-output dd {
+ float: left;
+ width: 80%;
+ padding: 0;
+ margin: 0;
+}
+
+.jp-TrimmedOutputs pre {
+ background: var(--jp-layout-color3);
+ font-size: calc(var(--jp-code-font-size) * 1.4);
+ text-align: center;
+ text-transform: uppercase;
+}
+
+/* Hide the gutter in case of
+ * - nested output areas (e.g. in the case of output widgets)
+ * - mirrored output areas
+ */
+.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
+ display: none;
+}
+
+/* Hide empty lines in the output area, for instance due to cleared widgets */
+.jp-OutputArea-prompt:empty {
+ padding: 0;
+ border: 0;
+}
+
+/*-----------------------------------------------------------------------------
+| executeResult is added to any Output-result for the display of the object
+| returned by a cell
+|----------------------------------------------------------------------------*/
+
+.jp-OutputArea-output.jp-OutputArea-executeResult {
+ margin-left: 0;
+ width: 100%;
+}
+
+/* Text output with the Out[] prompt needs a top padding to match the
+ * alignment of the Out[] prompt itself.
+ */
+.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
+ padding-top: var(--jp-code-padding);
+ border-top: var(--jp-border-width) solid transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| The Stdin output
+|----------------------------------------------------------------------------*/
+
+.jp-Stdin-prompt {
+ color: var(--jp-content-font-color0);
+ padding-right: var(--jp-code-padding);
+ vertical-align: baseline;
+ flex: 0 0 auto;
+}
+
+.jp-Stdin-input {
+ font-family: var(--jp-code-font-family);
+ font-size: inherit;
+ color: inherit;
+ background-color: inherit;
+ width: 42%;
+ min-width: 200px;
+
+ /* make sure input baseline aligns with prompt */
+ vertical-align: baseline;
+
+ /* padding + margin = 0.5em between prompt and cursor */
+ padding: 0 0.25em;
+ margin: 0 0.25em;
+ flex: 0 0 70%;
+}
+
+.jp-Stdin-input::placeholder {
+ opacity: 0;
+}
+
+.jp-Stdin-input:focus {
+ box-shadow: none;
+}
+
+.jp-Stdin-input:focus::placeholder {
+ opacity: 1;
+}
+
+/*-----------------------------------------------------------------------------
+| Output Area View
+|----------------------------------------------------------------------------*/
+
+.jp-LinkedOutputView .jp-OutputArea {
+ height: 100%;
+ display: block;
+}
+
+.jp-LinkedOutputView .jp-OutputArea-output:only-child {
+ height: 100%;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+@media print {
+ .jp-OutputArea-child {
+ break-inside: avoid-page;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Mobile
+|----------------------------------------------------------------------------*/
+@media only screen and (max-width: 760px) {
+ .jp-OutputPrompt {
+ display: table-row;
+ text-align: left;
+ }
+
+ .jp-OutputArea-child .jp-OutputArea-output {
+ display: table-row;
+ margin-left: var(--jp-notebook-padding);
+ }
+}
+
+/* Trimmed outputs warning */
+.jp-TrimmedOutputs > a {
+ margin: 10px;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.jp-TrimmedOutputs > a:hover {
+ text-decoration: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Table of Contents
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-toc-active-width: 4px;
+}
+
+.jp-TableOfContents {
+ display: flex;
+ flex-direction: column;
+ background: var(--jp-layout-color1);
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ height: 100%;
+}
+
+.jp-TableOfContents-placeholder {
+ text-align: center;
+}
+
+.jp-TableOfContents-placeholderContent {
+ color: var(--jp-content-font-color2);
+ padding: 8px;
+}
+
+.jp-TableOfContents-placeholderContent > h3 {
+ margin-bottom: var(--jp-content-heading-margin-bottom);
+}
+
+.jp-TableOfContents .jp-SidePanel-content {
+ overflow-y: auto;
+}
+
+.jp-TableOfContents-tree {
+ margin: 4px;
+}
+
+.jp-TableOfContents ol {
+ list-style-type: none;
+}
+
+/* stylelint-disable-next-line selector-max-type */
+.jp-TableOfContents li > ol {
+ /* Align left border with triangle icon center */
+ padding-left: 11px;
+}
+
+.jp-TableOfContents-content {
+ /* left margin for the active heading indicator */
+ margin: 0 0 0 var(--jp-private-toc-active-width);
+ padding: 0;
+ background-color: var(--jp-layout-color1);
+}
+
+.jp-tocItem {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.jp-tocItem-heading {
+ display: flex;
+ cursor: pointer;
+}
+
+.jp-tocItem-heading:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-tocItem-content {
+ display: block;
+ padding: 4px 0;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow-x: hidden;
+}
+
+.jp-tocItem-collapser {
+ height: 20px;
+ margin: 2px 2px 0;
+ padding: 0;
+ background: none;
+ border: none;
+ cursor: pointer;
+}
+
+.jp-tocItem-collapser:hover {
+ background-color: var(--jp-layout-color3);
+}
+
+/* Active heading indicator */
+
+.jp-tocItem-heading::before {
+ content: ' ';
+ background: transparent;
+ width: var(--jp-private-toc-active-width);
+ height: 24px;
+ position: absolute;
+ left: 0;
+ border-radius: var(--jp-border-radius);
+}
+
+.jp-tocItem-heading.jp-tocItem-active::before {
+ background-color: var(--jp-brand-color1);
+}
+
+.jp-tocItem-heading:hover.jp-tocItem-active::before {
+ background: var(--jp-brand-color0);
+ opacity: 1;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Collapser {
+ flex: 0 0 var(--jp-cell-collapser-width);
+ padding: 0;
+ margin: 0;
+ border: none;
+ outline: none;
+ background: transparent;
+ border-radius: var(--jp-border-radius);
+ opacity: 1;
+}
+
+.jp-Collapser-child {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+
+ /* height: 100% doesn't work because the height of its parent is computed from content */
+ position: absolute;
+ top: 0;
+ bottom: 0;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+/*
+Hiding collapsers in print mode.
+
+Note: input and output wrappers have "display: block" propery in print mode.
+*/
+
+@media print {
+ .jp-Collapser {
+ display: none;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Header/Footer
+|----------------------------------------------------------------------------*/
+
+/* Hidden by zero height by default */
+.jp-CellHeader,
+.jp-CellFooter {
+ height: 0;
+ width: 100%;
+ padding: 0;
+ margin: 0;
+ border: none;
+ outline: none;
+ background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Input
+|----------------------------------------------------------------------------*/
+
+/* All input areas */
+.jp-InputArea {
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+ overflow: hidden;
+}
+
+.jp-InputArea-editor {
+ display: table-cell;
+ overflow: hidden;
+ vertical-align: top;
+
+ /* This is the non-active, default styling */
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ border-radius: 0;
+ background: var(--jp-cell-editor-background);
+}
+
+.jp-InputPrompt {
+ display: table-cell;
+ vertical-align: top;
+ width: var(--jp-cell-prompt-width);
+ color: var(--jp-cell-inprompt-font-color);
+ font-family: var(--jp-cell-prompt-font-family);
+ padding: var(--jp-code-padding);
+ letter-spacing: var(--jp-cell-prompt-letter-spacing);
+ opacity: var(--jp-cell-prompt-opacity);
+ line-height: var(--jp-code-line-height);
+ font-size: var(--jp-code-font-size);
+ border: var(--jp-border-width) solid transparent;
+
+ /* Right align prompt text, don't wrap to handle large prompt numbers */
+ text-align: right;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ /* Disable text selection */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Mobile
+|----------------------------------------------------------------------------*/
+@media only screen and (max-width: 760px) {
+ .jp-InputArea-editor {
+ display: table-row;
+ margin-left: var(--jp-notebook-padding);
+ }
+
+ .jp-InputPrompt {
+ display: table-row;
+ text-align: left;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Placeholder
+|----------------------------------------------------------------------------*/
+
+.jp-Placeholder {
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+}
+
+.jp-Placeholder-prompt {
+ display: table-cell;
+ box-sizing: border-box;
+}
+
+.jp-Placeholder-content {
+ display: table-cell;
+ padding: 4px 6px;
+ border: 1px solid transparent;
+ border-radius: 0;
+ background: none;
+ box-sizing: border-box;
+ cursor: pointer;
+}
+
+.jp-Placeholder-contentContainer {
+ display: flex;
+}
+
+.jp-Placeholder-content:hover,
+.jp-InputPlaceholder > .jp-Placeholder-content:hover {
+ border-color: var(--jp-layout-color3);
+}
+
+.jp-Placeholder-content .jp-MoreHorizIcon {
+ width: 32px;
+ height: 16px;
+ border: 1px solid transparent;
+ border-radius: var(--jp-border-radius);
+}
+
+.jp-Placeholder-content .jp-MoreHorizIcon:hover {
+ border: 1px solid var(--jp-border-color1);
+ box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);
+ background-color: var(--jp-layout-color0);
+}
+
+.jp-PlaceholderText {
+ white-space: nowrap;
+ overflow-x: hidden;
+ color: var(--jp-inverse-layout-color3);
+ font-family: var(--jp-code-font-family);
+}
+
+.jp-InputPlaceholder > .jp-Placeholder-content {
+ border-color: var(--jp-cell-editor-border-color);
+ background: var(--jp-cell-editor-background);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Private CSS variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-cell-scrolling-output-offset: 5px;
+}
+
+/*-----------------------------------------------------------------------------
+| Cell
+|----------------------------------------------------------------------------*/
+
+.jp-Cell {
+ padding: var(--jp-cell-padding);
+ margin: 0;
+ border: none;
+ outline: none;
+ background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Common input/output
+|----------------------------------------------------------------------------*/
+
+.jp-Cell-inputWrapper,
+.jp-Cell-outputWrapper {
+ display: flex;
+ flex-direction: row;
+ padding: 0;
+ margin: 0;
+
+ /* Added to reveal the box-shadow on the input and output collapsers. */
+ overflow: visible;
+}
+
+/* Only input/output areas inside cells */
+.jp-Cell-inputArea,
+.jp-Cell-outputArea {
+ flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Collapser
+|----------------------------------------------------------------------------*/
+
+/* Make the output collapser disappear when there is not output, but do so
+ * in a manner that leaves it in the layout and preserves its width.
+ */
+.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
+ border: none !important;
+ background: transparent !important;
+}
+
+.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
+ min-height: var(--jp-cell-collapser-min-height);
+}
+
+/*-----------------------------------------------------------------------------
+| Output
+|----------------------------------------------------------------------------*/
+
+/* Put a space between input and output when there IS output */
+.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
+ margin-top: 5px;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
+ overflow-y: auto;
+ max-height: 24em;
+ margin-left: var(--jp-private-cell-scrolling-output-offset);
+ resize: vertical;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] {
+ max-height: unset;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
+ content: ' ';
+ box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
+ width: 100%;
+ height: 100%;
+ position: sticky;
+ bottom: 0;
+ top: 0;
+ margin-top: -50%;
+ float: left;
+ display: block;
+ pointer-events: none;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
+ padding-top: 6px;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
+ width: calc(
+ var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset)
+ );
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay {
+ left: calc(-1 * var(--jp-private-cell-scrolling-output-offset));
+}
+
+/*-----------------------------------------------------------------------------
+| CodeCell
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| MarkdownCell
+|----------------------------------------------------------------------------*/
+
+.jp-MarkdownOutput {
+ display: table-cell;
+ width: 100%;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-left: var(--jp-code-padding);
+}
+
+.jp-MarkdownOutput.jp-RenderedHTMLCommon {
+ overflow: auto;
+}
+
+/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
+.jp-collapseHeadingButton {
+ display: flex;
+ min-height: var(--jp-cell-collapser-min-height);
+ font-size: var(--jp-code-font-size);
+ position: absolute;
+ background-color: transparent;
+ background-size: 25px;
+ background-repeat: no-repeat;
+ background-position-x: center;
+ background-position-y: top;
+ background-image: var(--jp-icon-caret-down);
+ right: 0;
+ top: 0;
+ bottom: 0;
+}
+
+.jp-collapseHeadingButton.jp-mod-collapsed {
+ background-image: var(--jp-icon-caret-right);
+}
+
+/*
+ set the container font size to match that of content
+ so that the nested collapse buttons have the right size
+*/
+.jp-MarkdownCell .jp-InputPrompt {
+ font-size: var(--jp-content-font-size1);
+}
+
+/*
+ Align collapseHeadingButton with cell top header
+ The font sizes are identical to the ones in packages/rendermime/style/base.css
+*/
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
+ font-size: var(--jp-content-font-size5);
+ background-position-y: calc(0.3 * var(--jp-content-font-size5));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
+ font-size: var(--jp-content-font-size4);
+ background-position-y: calc(0.3 * var(--jp-content-font-size4));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
+ font-size: var(--jp-content-font-size3);
+ background-position-y: calc(0.3 * var(--jp-content-font-size3));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
+ font-size: var(--jp-content-font-size2);
+ background-position-y: calc(0.3 * var(--jp-content-font-size2));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
+ font-size: var(--jp-content-font-size1);
+ background-position-y: top;
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
+ font-size: var(--jp-content-font-size0);
+ background-position-y: top;
+}
+
+/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton {
+ display: none;
+}
+
+.jp-Notebook.jp-mod-showHiddenCellsButton
+ :is(.jp-MarkdownCell:hover, .jp-mod-active)
+ .jp-collapseHeadingButton {
+ display: flex;
+}
+
+/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which
+is a consequence of the showHiddenCellsButton option in Notebook Settings)*/
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton {
+ margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
+ margin-top: var(--jp-code-padding);
+ border: 1px solid var(--jp-border-color2);
+ background-color: var(--jp-border-color3) !important;
+ color: var(--jp-content-font-color0) !important;
+ display: flex;
+}
+
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover {
+ background-color: var(--jp-border-color2) !important;
+}
+
+.jp-showHiddenCellsButton {
+ display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+/*
+Using block instead of flex to allow the use of the break-inside CSS property for
+cell outputs.
+*/
+
+@media print {
+ .jp-Cell-inputWrapper,
+ .jp-Cell-outputWrapper {
+ display: block;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-notebook-toolbar-padding: 2px 5px 2px 2px;
+}
+
+/*-----------------------------------------------------------------------------
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-NotebookPanel-toolbar {
+ padding: var(--jp-notebook-toolbar-padding);
+
+ /* disable paint containment from lumino 2.0 default strict CSS containment */
+ contain: style size !important;
+}
+
+.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
+ border: none;
+ box-shadow: none;
+}
+
+.jp-Notebook-toolbarCellTypeDropdown select {
+ height: 24px;
+ font-size: var(--jp-ui-font-size1);
+ line-height: 14px;
+ border-radius: 0;
+ display: block;
+}
+
+.jp-Notebook-toolbarCellTypeDropdown span {
+ top: 5px !important;
+}
+
+.jp-Toolbar-responsive-popup {
+ position: absolute;
+ height: fit-content;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ background: var(--jp-toolbar-background);
+ min-height: var(--jp-toolbar-micro-height);
+ padding: var(--jp-notebook-toolbar-padding);
+ z-index: 1;
+ right: 0;
+ top: 0;
+}
+
+.jp-Toolbar > .jp-Toolbar-responsive-opener {
+ margin-left: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-Notebook-ExecutionIndicator {
+ position: relative;
+ display: inline-block;
+ height: 100%;
+ z-index: 9997;
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip {
+ visibility: hidden;
+ height: auto;
+ width: max-content;
+ width: -moz-max-content;
+ background-color: var(--jp-layout-color2);
+ color: var(--jp-ui-font-color1);
+ text-align: justify;
+ border-radius: 6px;
+ padding: 0 5px;
+ position: fixed;
+ display: table;
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.up {
+ transform: translateX(-50%) translateY(-100%) translateY(-32px);
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.down {
+ transform: translateX(calc(-100% + 16px)) translateY(5px);
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.hidden {
+ display: none;
+}
+
+.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
+ visibility: visible;
+}
+
+.jp-Notebook-ExecutionIndicator span {
+ font-size: var(--jp-ui-font-size1);
+ font-family: var(--jp-ui-font-family);
+ color: var(--jp-ui-font-color1);
+ line-height: 24px;
+ display: block;
+}
+
+.jp-Notebook-ExecutionIndicator-progress-bar {
+ display: flex;
+ justify-content: center;
+ height: 100%;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*
+ * Execution indicator
+ */
+.jp-tocItem-content::after {
+ content: '';
+
+ /* Must be identical to form a circle */
+ width: 12px;
+ height: 12px;
+ background: none;
+ border: none;
+ position: absolute;
+ right: 0;
+}
+
+.jp-tocItem-content[data-running='0']::after {
+ border-radius: 50%;
+ border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
+ background: none;
+}
+
+.jp-tocItem-content[data-running='1']::after {
+ border-radius: 50%;
+ border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
+ background-color: var(--jp-inverse-layout-color3);
+}
+
+.jp-tocItem-content[data-running='0'],
+.jp-tocItem-content[data-running='1'] {
+ margin-right: 12px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-Notebook-footer {
+ height: 27px;
+ margin-left: calc(
+ var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
+ var(--jp-cell-padding)
+ );
+ width: calc(
+ 100% -
+ (
+ var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
+ var(--jp-cell-padding) + var(--jp-cell-padding)
+ )
+ );
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ color: var(--jp-ui-font-color3);
+ margin-top: 6px;
+ background: none;
+ cursor: pointer;
+}
+
+.jp-Notebook-footer:focus {
+ border-color: var(--jp-cell-editor-active-border-color);
+}
+
+/* For devices that support hovering, hide footer until hover */
+@media (hover: hover) {
+ .jp-Notebook-footer {
+ opacity: 0;
+ }
+
+ .jp-Notebook-footer:focus,
+ .jp-Notebook-footer:hover {
+ opacity: 1;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Imports
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| CSS variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-side-by-side-output-size: 1fr;
+ --jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
+ --jp-private-notebook-dragImage-width: 304px;
+ --jp-private-notebook-dragImage-height: 36px;
+ --jp-private-notebook-selected-color: var(--md-blue-400);
+ --jp-private-notebook-active-color: var(--md-green-400);
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook
+|----------------------------------------------------------------------------*/
+
+/* stylelint-disable selector-max-class */
+
+.jp-NotebookPanel {
+ display: block;
+ height: 100%;
+}
+
+.jp-NotebookPanel.jp-Document {
+ min-width: 240px;
+ min-height: 120px;
+}
+
+.jp-Notebook {
+ padding: var(--jp-notebook-padding);
+ outline: none;
+ overflow: auto;
+ background: var(--jp-layout-color0);
+}
+
+.jp-Notebook.jp-mod-scrollPastEnd::after {
+ display: block;
+ content: '';
+ min-height: var(--jp-notebook-scroll-padding);
+}
+
+.jp-MainAreaWidget-ContainStrict .jp-Notebook * {
+ contain: strict;
+}
+
+.jp-Notebook .jp-Cell {
+ overflow: visible;
+}
+
+.jp-Notebook .jp-Cell .jp-InputPrompt {
+ cursor: move;
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook state related styling
+|
+| The notebook and cells each have states, here are the possibilities:
+|
+| - Notebook
+| - Command
+| - Edit
+| - Cell
+| - None
+| - Active (only one can be active)
+| - Selected (the cells actions are applied to)
+| - Multiselected (when multiple selected, the cursor)
+| - No outputs
+|----------------------------------------------------------------------------*/
+
+/* Command or edit modes */
+
+.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
+ opacity: var(--jp-cell-prompt-not-active-opacity);
+ color: var(--jp-cell-prompt-not-active-font-color);
+}
+
+.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
+ opacity: var(--jp-cell-prompt-not-active-opacity);
+ color: var(--jp-cell-prompt-not-active-font-color);
+}
+
+/* cell is active */
+.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
+ background: var(--jp-brand-color1);
+}
+
+/* cell is dirty */
+.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt {
+ color: var(--jp-warn-color1);
+}
+
+.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before {
+ color: var(--jp-warn-color1);
+ content: '•';
+}
+
+.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser {
+ background: var(--jp-warn-color1);
+}
+
+/* collapser is hovered */
+.jp-Notebook .jp-Cell .jp-Collapser:hover {
+ box-shadow: var(--jp-elevation-z2);
+ background: var(--jp-brand-color1);
+ opacity: var(--jp-cell-collapser-not-active-hover-opacity);
+}
+
+/* cell is active and collapser is hovered */
+.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
+ background: var(--jp-brand-color0);
+ opacity: 1;
+}
+
+/* Command mode */
+
+.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
+ background: var(--jp-notebook-multiselected-color);
+}
+
+.jp-Notebook.jp-mod-commandMode
+ .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
+ background: transparent;
+}
+
+/* Edit mode */
+
+.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
+ border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
+ box-shadow: var(--jp-input-box-shadow);
+ background-color: var(--jp-cell-editor-active-background);
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook drag and drop
+|----------------------------------------------------------------------------*/
+
+.jp-Notebook-cell.jp-mod-dropSource {
+ opacity: 0.5;
+}
+
+.jp-Notebook-cell.jp-mod-dropTarget,
+.jp-Notebook.jp-mod-commandMode
+ .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
+ border-top-color: var(--jp-private-notebook-selected-color);
+ border-top-style: solid;
+ border-top-width: 2px;
+}
+
+.jp-dragImage {
+ display: block;
+ flex-direction: row;
+ width: var(--jp-private-notebook-dragImage-width);
+ height: var(--jp-private-notebook-dragImage-height);
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ background: var(--jp-cell-editor-background);
+ overflow: visible;
+}
+
+.jp-dragImage-singlePrompt {
+ box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
+}
+
+.jp-dragImage .jp-dragImage-content {
+ flex: 1 1 auto;
+ z-index: 2;
+ font-size: var(--jp-code-font-size);
+ font-family: var(--jp-code-font-family);
+ line-height: var(--jp-code-line-height);
+ padding: var(--jp-code-padding);
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ background: var(--jp-cell-editor-background-color);
+ color: var(--jp-content-font-color3);
+ text-align: left;
+ margin: 4px 4px 4px 0;
+}
+
+.jp-dragImage .jp-dragImage-prompt {
+ flex: 0 0 auto;
+ min-width: 36px;
+ color: var(--jp-cell-inprompt-font-color);
+ padding: var(--jp-code-padding);
+ padding-left: 12px;
+ font-family: var(--jp-cell-prompt-font-family);
+ letter-spacing: var(--jp-cell-prompt-letter-spacing);
+ line-height: 1.9;
+ font-size: var(--jp-code-font-size);
+ border: var(--jp-border-width) solid transparent;
+}
+
+.jp-dragImage-multipleBack {
+ z-index: -1;
+ position: absolute;
+ height: 32px;
+ width: 300px;
+ top: 8px;
+ left: 8px;
+ background: var(--jp-layout-color2);
+ border: var(--jp-border-width) solid var(--jp-input-border-color);
+ box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
+}
+
+/*-----------------------------------------------------------------------------
+| Cell toolbar
+|----------------------------------------------------------------------------*/
+
+.jp-NotebookTools {
+ display: block;
+ min-width: var(--jp-sidebar-min-width);
+ color: var(--jp-ui-font-color1);
+ background: var(--jp-layout-color1);
+
+ /* This is needed so that all font sizing of children done in ems is
+ * relative to this base size */
+ font-size: var(--jp-ui-font-size1);
+ overflow: auto;
+}
+
+.jp-ActiveCellTool {
+ padding: 12px 0;
+ display: flex;
+}
+
+.jp-ActiveCellTool-Content {
+ flex: 1 1 auto;
+}
+
+.jp-ActiveCellTool .jp-ActiveCellTool-CellContent {
+ background: var(--jp-cell-editor-background);
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ border-radius: 0;
+ min-height: 29px;
+}
+
+.jp-ActiveCellTool .jp-InputPrompt {
+ min-width: calc(var(--jp-cell-prompt-width) * 0.75);
+}
+
+.jp-ActiveCellTool-CellContent > pre {
+ padding: 5px 4px;
+ margin: 0;
+ white-space: normal;
+}
+
+.jp-MetadataEditorTool {
+ flex-direction: column;
+ padding: 12px 0;
+}
+
+.jp-RankedPanel > :not(:first-child) {
+ margin-top: 12px;
+}
+
+.jp-KeySelector select.jp-mod-styled {
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color0);
+ border: var(--jp-border-width) solid var(--jp-border-color1);
+}
+
+.jp-KeySelector label,
+.jp-MetadataEditorTool label,
+.jp-NumberSetter label {
+ line-height: 1.4;
+}
+
+.jp-NotebookTools .jp-select-wrapper {
+ margin-top: 4px;
+ margin-bottom: 0;
+}
+
+.jp-NumberSetter input {
+ width: 100%;
+ margin-top: 4px;
+}
+
+.jp-NotebookTools .jp-Collapse {
+ margin-top: 16px;
+}
+
+/*-----------------------------------------------------------------------------
+| Presentation Mode (.jp-mod-presentationMode)
+|----------------------------------------------------------------------------*/
+
+.jp-mod-presentationMode .jp-Notebook {
+ --jp-content-font-size1: var(--jp-content-presentation-font-size1);
+ --jp-code-font-size: var(--jp-code-presentation-font-size);
+}
+
+.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
+.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
+ flex: 0 0 110px;
+}
+
+/*-----------------------------------------------------------------------------
+| Side-by-side Mode (.jp-mod-sideBySide)
+|----------------------------------------------------------------------------*/
+.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
+ margin-top: 3em;
+ margin-bottom: 3em;
+ margin-left: 5%;
+ margin-right: 5%;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) min-content minmax(
+ 0,
+ var(--jp-side-by-side-output-size)
+ );
+ grid-template-rows: auto minmax(0, 1fr) auto;
+ grid-template-areas:
+ 'header header header'
+ 'input handle output'
+ 'footer footer footer';
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
+ grid-template-columns: minmax(0, 1fr) min-content minmax(
+ 0,
+ var(--jp-side-by-side-resized-cell)
+ );
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
+ grid-area: header;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
+ grid-area: input;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
+ /* overwrite the default margin (no vertical separation needed in side by side move */
+ margin-top: 0;
+ grid-area: output;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
+ grid-area: footer;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
+ grid-area: handle;
+ user-select: none;
+ display: block;
+ height: 100%;
+ cursor: ew-resize;
+ padding: 0 var(--jp-cell-padding);
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
+ content: '';
+ display: block;
+ background: var(--jp-border-color2);
+ height: 100%;
+ width: 5px;
+}
+
+.jp-mod-sideBySide.jp-Notebook
+ .jp-CodeCell.jp-mod-resizedCell
+ .jp-CellResizeHandle::after {
+ background: var(--jp-border-color0);
+}
+
+.jp-CellResizeHandle {
+ display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Placeholder
+|----------------------------------------------------------------------------*/
+
+.jp-Cell-Placeholder {
+ padding-left: 55px;
+}
+
+.jp-Cell-Placeholder-wrapper {
+ background: #fff;
+ border: 1px solid;
+ border-color: #e5e6e9 #dfe0e4 #d0d1d5;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ margin: 10px 15px;
+}
+
+.jp-Cell-Placeholder-wrapper-inner {
+ padding: 15px;
+ position: relative;
+}
+
+.jp-Cell-Placeholder-wrapper-body {
+ background-repeat: repeat;
+ background-size: 50% auto;
+}
+
+.jp-Cell-Placeholder-wrapper-body div {
+ background: #f6f7f8;
+ background-image: -webkit-linear-gradient(
+ left,
+ #f6f7f8 0%,
+ #edeef1 20%,
+ #f6f7f8 40%,
+ #f6f7f8 100%
+ );
+ background-repeat: no-repeat;
+ background-size: 800px 104px;
+ height: 104px;
+ position: absolute;
+ right: 15px;
+ left: 15px;
+ top: 15px;
+}
+
+div.jp-Cell-Placeholder-h1 {
+ top: 20px;
+ height: 20px;
+ left: 15px;
+ width: 150px;
+}
+
+div.jp-Cell-Placeholder-h2 {
+ left: 15px;
+ top: 50px;
+ height: 10px;
+ width: 100px;
+}
+
+div.jp-Cell-Placeholder-content-1,
+div.jp-Cell-Placeholder-content-2,
+div.jp-Cell-Placeholder-content-3 {
+ left: 15px;
+ right: 15px;
+ height: 10px;
+}
+
+div.jp-Cell-Placeholder-content-1 {
+ top: 100px;
+}
+
+div.jp-Cell-Placeholder-content-2 {
+ top: 120px;
+}
+
+div.jp-Cell-Placeholder-content-3 {
+ top: 140px;
+}
+
+</style>
+<style type="text/css">
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*
+The following CSS variables define the main, public API for styling JupyterLab.
+These variables should be used by all plugins wherever possible. In other
+words, plugins should not define custom colors, sizes, etc unless absolutely
+necessary. This enables users to change the visual theme of JupyterLab
+by changing these variables.
+
+Many variables appear in an ordered sequence (0,1,2,3). These sequences
+are designed to work well together, so for example, `--jp-border-color1` should
+be used with `--jp-layout-color1`. The numbers have the following meanings:
+
+* 0: super-primary, reserved for special emphasis
+* 1: primary, most important under normal situations
+* 2: secondary, next most important under normal situations
+* 3: tertiary, next most important under normal situations
+
+Throughout JupyterLab, we are mostly following principles from Google's
+Material Design when selecting colors. We are not, however, following
+all of MD as it is not optimized for dense, information rich UIs.
+*/
+
+:root {
+ /* Elevation
+ *
+ * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
+ *
+ * https://github.com/material-components/material-components-web
+ * https://material-components-web.appspot.com/elevation.html
+ */
+
+ /* The dark theme shadows need a bit of work, but this will probably also require work on the core layout
+ * colors used in the theme as well. */
+ --jp-shadow-base-lightness: 32;
+ --jp-shadow-umbra-color: rgba(
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ 0.2
+ );
+ --jp-shadow-penumbra-color: rgba(
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ 0.14
+ );
+ --jp-shadow-ambient-color: rgba(
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ 0.12
+ );
+ --jp-elevation-z0: none;
+ --jp-elevation-z1: 0 2px 1px -1px var(--jp-shadow-umbra-color),
+ 0 1px 1px 0 var(--jp-shadow-penumbra-color),
+ 0 1px 3px 0 var(--jp-shadow-ambient-color);
+ --jp-elevation-z2: 0 3px 1px -2px var(--jp-shadow-umbra-color),
+ 0 2px 2px 0 var(--jp-shadow-penumbra-color),
+ 0 1px 5px 0 var(--jp-shadow-ambient-color);
+ --jp-elevation-z4: 0 2px 4px -1px var(--jp-shadow-umbra-color),
+ 0 4px 5px 0 var(--jp-shadow-penumbra-color),
+ 0 1px 10px 0 var(--jp-shadow-ambient-color);
+ --jp-elevation-z6: 0 3px 5px -1px var(--jp-shadow-umbra-color),
+ 0 6px 10px 0 var(--jp-shadow-penumbra-color),
+ 0 1px 18px 0 var(--jp-shadow-ambient-color);
+ --jp-elevation-z8: 0 5px 5px -3px var(--jp-shadow-umbra-color),
+ 0 8px 10px 1px var(--jp-shadow-penumbra-color),
+ 0 3px 14px 2px var(--jp-shadow-ambient-color);
+ --jp-elevation-z12: 0 7px 8px -4px var(--jp-shadow-umbra-color),
+ 0 12px 17px 2px var(--jp-shadow-penumbra-color),
+ 0 5px 22px 4px var(--jp-shadow-ambient-color);
+ --jp-elevation-z16: 0 8px 10px -5px var(--jp-shadow-umbra-color),
+ 0 16px 24px 2px var(--jp-shadow-penumbra-color),
+ 0 6px 30px 5px var(--jp-shadow-ambient-color);
+ --jp-elevation-z20: 0 10px 13px -6px var(--jp-shadow-umbra-color),
+ 0 20px 31px 3px var(--jp-shadow-penumbra-color),
+ 0 8px 38px 7px var(--jp-shadow-ambient-color);
+ --jp-elevation-z24: 0 11px 15px -7px var(--jp-shadow-umbra-color),
+ 0 24px 38px 3px var(--jp-shadow-penumbra-color),
+ 0 9px 46px 8px var(--jp-shadow-ambient-color);
+
+ /* Borders
+ *
+ * The following variables, specify the visual styling of borders in JupyterLab.
+ */
+
+ --jp-border-width: 1px;
+ --jp-border-color0: var(--md-grey-700);
+ --jp-border-color1: var(--md-grey-700);
+ --jp-border-color2: var(--md-grey-800);
+ --jp-border-color3: var(--md-grey-900);
+ --jp-inverse-border-color: var(--md-grey-600);
+ --jp-border-radius: 2px;
+
+ /* UI Fonts
+ *
+ * The UI font CSS variables are used for the typography all of the JupyterLab
+ * user interface elements that are not directly user generated content.
+ *
+ * The font sizing here is done assuming that the body font size of --jp-ui-font-size1
+ * is applied to a parent element. When children elements, such as headings, are sized
+ * in em all things will be computed relative to that body size.
+ */
+
+ --jp-ui-font-scale-factor: 1.2;
+ --jp-ui-font-size0: 0.83333em;
+ --jp-ui-font-size1: 13px; /* Base font size */
+ --jp-ui-font-size2: 1.2em;
+ --jp-ui-font-size3: 1.44em;
+ --jp-ui-font-family: system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI',
+ helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
+ 'Segoe UI Symbol';
+
+ /*
+ * Use these font colors against the corresponding main layout colors.
+ * In a light theme, these go from dark to light.
+ */
+
+ /* Defaults use Material Design specification */
+ --jp-ui-font-color0: rgba(255, 255, 255, 1);
+ --jp-ui-font-color1: rgba(255, 255, 255, 0.87);
+ --jp-ui-font-color2: rgba(255, 255, 255, 0.54);
+ --jp-ui-font-color3: rgba(255, 255, 255, 0.38);
+
+ /*
+ * Use these against the brand/accent/warn/error colors.
+ * These will typically go from light to darker, in both a dark and light theme.
+ */
+
+ --jp-ui-inverse-font-color0: rgba(0, 0, 0, 1);
+ --jp-ui-inverse-font-color1: rgba(0, 0, 0, 0.8);
+ --jp-ui-inverse-font-color2: rgba(0, 0, 0, 0.5);
+ --jp-ui-inverse-font-color3: rgba(0, 0, 0, 0.3);
+
+ /* Content Fonts
+ *
+ * Content font variables are used for typography of user generated content.
+ *
+ * The font sizing here is done assuming that the body font size of --jp-content-font-size1
+ * is applied to a parent element. When children elements, such as headings, are sized
+ * in em all things will be computed relative to that body size.
+ */
+
+ --jp-content-line-height: 1.6;
+ --jp-content-font-scale-factor: 1.2;
+ --jp-content-font-size0: 0.83333em;
+ --jp-content-font-size1: 14px; /* Base font size */
+ --jp-content-font-size2: 1.2em;
+ --jp-content-font-size3: 1.44em;
+ --jp-content-font-size4: 1.728em;
+ --jp-content-font-size5: 2.0736em;
+
+ /* This gives a magnification of about 125% in presentation mode over normal. */
+ --jp-content-presentation-font-size1: 17px;
+ --jp-content-heading-line-height: 1;
+ --jp-content-heading-margin-top: 1.2em;
+ --jp-content-heading-margin-bottom: 0.8em;
+ --jp-content-heading-font-weight: 500;
+
+ /* Defaults use Material Design specification */
+ --jp-content-font-color0: rgba(255, 255, 255, 1);
+ --jp-content-font-color1: rgba(255, 255, 255, 1);
+ --jp-content-font-color2: rgba(255, 255, 255, 0.7);
+ --jp-content-font-color3: rgba(255, 255, 255, 0.5);
+ --jp-content-link-color: var(--md-blue-300);
+ --jp-content-font-family: system-ui, -apple-system, blinkmacsystemfont,
+ 'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji',
+ 'Segoe UI Emoji', 'Segoe UI Symbol';
+
+ /*
+ * Code Fonts
+ *
+ * Code font variables are used for typography of code and other monospaces content.
+ */
+
+ --jp-code-font-size: 13px;
+ --jp-code-line-height: 1.3077; /* 17px for 13px base */
+ --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */
+ --jp-code-font-family-default: menlo, consolas, 'DejaVu Sans Mono', monospace;
+ --jp-code-font-family: var(--jp-code-font-family-default);
+
+ /* This gives a magnification of about 125% in presentation mode over normal. */
+ --jp-code-presentation-font-size: 16px;
+
+ /* may need to tweak cursor width if you change font size */
+ --jp-code-cursor-width0: 1.4px;
+ --jp-code-cursor-width1: 2px;
+ --jp-code-cursor-width2: 4px;
+
+ /* Layout
+ *
+ * The following are the main layout colors use in JupyterLab. In a light
+ * theme these would go from light to dark.
+ */
+
+ --jp-layout-color0: #111;
+ --jp-layout-color1: var(--md-grey-900);
+ --jp-layout-color2: var(--md-grey-800);
+ --jp-layout-color3: var(--md-grey-700);
+ --jp-layout-color4: var(--md-grey-600);
+
+ /* Inverse Layout
+ *
+ * The following are the inverse layout colors use in JupyterLab. In a light
+ * theme these would go from dark to light.
+ */
+
+ --jp-inverse-layout-color0: white;
+ --jp-inverse-layout-color1: white;
+ --jp-inverse-layout-color2: var(--md-grey-200);
+ --jp-inverse-layout-color3: var(--md-grey-400);
+ --jp-inverse-layout-color4: var(--md-grey-600);
+
+ /* Brand/accent */
+
+ --jp-brand-color0: var(--md-blue-700);
+ --jp-brand-color1: var(--md-blue-500);
+ --jp-brand-color2: var(--md-blue-300);
+ --jp-brand-color3: var(--md-blue-100);
+ --jp-brand-color4: var(--md-blue-50);
+ --jp-accent-color0: var(--md-green-700);
+ --jp-accent-color1: var(--md-green-500);
+ --jp-accent-color2: var(--md-green-300);
+ --jp-accent-color3: var(--md-green-100);
+
+ /* State colors (warn, error, success, info) */
+
+ --jp-warn-color0: var(--md-orange-700);
+ --jp-warn-color1: var(--md-orange-500);
+ --jp-warn-color2: var(--md-orange-300);
+ --jp-warn-color3: var(--md-orange-100);
+ --jp-error-color0: var(--md-red-700);
+ --jp-error-color1: var(--md-red-500);
+ --jp-error-color2: var(--md-red-300);
+ --jp-error-color3: var(--md-red-100);
+ --jp-success-color0: var(--md-green-700);
+ --jp-success-color1: var(--md-green-500);
+ --jp-success-color2: var(--md-green-300);
+ --jp-success-color3: var(--md-green-100);
+ --jp-info-color0: var(--md-cyan-700);
+ --jp-info-color1: var(--md-cyan-500);
+ --jp-info-color2: var(--md-cyan-300);
+ --jp-info-color3: var(--md-cyan-100);
+
+ /* Cell specific styles */
+
+ --jp-cell-padding: 5px;
+ --jp-cell-collapser-width: 8px;
+ --jp-cell-collapser-min-height: 20px;
+ --jp-cell-collapser-not-active-hover-opacity: 0.6;
+ --jp-cell-editor-background: var(--jp-layout-color1);
+ --jp-cell-editor-border-color: var(--md-grey-700);
+ --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
+ --jp-cell-editor-active-background: var(--jp-layout-color0);
+ --jp-cell-editor-active-border-color: var(--jp-brand-color1);
+ --jp-cell-prompt-width: 64px;
+ --jp-cell-prompt-font-family: var(--jp-code-font-family-default);
+ --jp-cell-prompt-letter-spacing: 0;
+ --jp-cell-prompt-opacity: 1;
+ --jp-cell-prompt-not-active-opacity: 1;
+ --jp-cell-prompt-not-active-font-color: var(--md-grey-300);
+
+ /* A custom blend of MD grey and blue 600
+ * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
+ --jp-cell-inprompt-font-color: #307fc1;
+
+ /* A custom blend of MD grey and orange 600
+ * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
+ --jp-cell-outprompt-font-color: #bf5b3d;
+
+ /* Notebook specific styles */
+
+ --jp-notebook-padding: 10px;
+ --jp-notebook-select-background: var(--jp-layout-color1);
+ --jp-notebook-multiselected-color: rgba(33, 150, 243, 0.24);
+
+ /* The scroll padding is calculated to fill enough space at the bottom of the
+ notebook to show one single-line cell (with appropriate padding) at the top
+ when the notebook is scrolled all the way to the bottom. We also subtract one
+ pixel so that no scrollbar appears if we have just one single-line cell in the
+ notebook. This padding is to enable a 'scroll past end' feature in a notebook.
+ */
+ --jp-notebook-scroll-padding: calc(
+ 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
+ var(--jp-code-padding) - var(--jp-cell-padding) - 1px
+ );
+
+ /* Rendermime styles */
+
+ --jp-rendermime-error-background: rgba(244, 67, 54, 0.28);
+ --jp-rendermime-table-row-background: var(--md-grey-900);
+ --jp-rendermime-table-row-hover-background: rgba(3, 169, 244, 0.2);
+
+ /* Dialog specific styles */
+
+ --jp-dialog-background: rgba(0, 0, 0, 0.6);
+
+ /* Console specific styles */
+
+ --jp-console-padding: 10px;
+
+ /* Toolbar specific styles */
+
+ --jp-toolbar-border-color: var(--jp-border-color2);
+ --jp-toolbar-micro-height: 8px;
+ --jp-toolbar-background: var(--jp-layout-color1);
+ --jp-toolbar-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.8);
+ --jp-toolbar-header-margin: 4px 4px 0 4px;
+ --jp-toolbar-active-background: var(--jp-layout-color0);
+
+ /* Statusbar specific styles */
+
+ --jp-statusbar-height: 24px;
+
+ /* Input field styles */
+
+ --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
+ --jp-input-active-background: var(--jp-layout-color0);
+ --jp-input-hover-background: var(--jp-layout-color2);
+ --jp-input-background: var(--md-grey-800);
+ --jp-input-border-color: var(--jp-inverse-border-color);
+ --jp-input-active-border-color: var(--jp-brand-color1);
+ --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
+
+ /* General editor styles */
+
+ --jp-editor-selected-background: var(--jp-layout-color2);
+ --jp-editor-selected-focused-background: rgba(33, 150, 243, 0.24);
+ --jp-editor-cursor-color: var(--jp-ui-font-color0);
+
+ /* Code mirror specific styles */
+
+ --jp-mirror-editor-keyword-color: var(--md-green-500);
+ --jp-mirror-editor-atom-color: var(--md-blue-300);
+ --jp-mirror-editor-number-color: var(--md-green-400);
+ --jp-mirror-editor-def-color: var(--md-blue-600);
+ --jp-mirror-editor-variable-color: var(--md-grey-300);
+ --jp-mirror-editor-variable-2-color: var(--md-blue-500);
+ --jp-mirror-editor-variable-3-color: var(--md-green-600);
+ --jp-mirror-editor-punctuation-color: var(--md-blue-400);
+ --jp-mirror-editor-property-color: var(--md-blue-400);
+ --jp-mirror-editor-operator-color: #a2f;
+ --jp-mirror-editor-comment-color: #408080;
+ --jp-mirror-editor-string-color: #ff7070;
+ --jp-mirror-editor-string-2-color: var(--md-purple-300);
+ --jp-mirror-editor-meta-color: #a2f;
+ --jp-mirror-editor-qualifier-color: #555;
+ --jp-mirror-editor-builtin-color: var(--md-green-600);
+ --jp-mirror-editor-bracket-color: #997;
+ --jp-mirror-editor-tag-color: var(--md-green-700);
+ --jp-mirror-editor-attribute-color: var(--md-blue-700);
+ --jp-mirror-editor-header-color: var(--md-blue-500);
+ --jp-mirror-editor-quote-color: var(--md-green-300);
+ --jp-mirror-editor-link-color: var(--md-blue-700);
+ --jp-mirror-editor-error-color: #f00;
+ --jp-mirror-editor-hr-color: #999;
+
+ /*
+ RTC user specific colors.
+ These colors are used for the cursor, username in the editor,
+ and the icon of the user.
+ */
+
+ --jp-collaborator-color1: #ad4a00;
+ --jp-collaborator-color2: #7b6a00;
+ --jp-collaborator-color3: #007e00;
+ --jp-collaborator-color4: #008772;
+ --jp-collaborator-color5: #0079b9;
+ --jp-collaborator-color6: #8b45c6;
+ --jp-collaborator-color7: #be208b;
+
+ /* Vega extension styles */
+
+ --jp-vega-background: var(--md-grey-400);
+
+ /* Sidebar-related styles */
+
+ --jp-sidebar-min-width: 250px;
+
+ /* Search-related styles */
+
+ --jp-search-toggle-off-opacity: 0.6;
+ --jp-search-toggle-hover-opacity: 0.8;
+ --jp-search-toggle-on-opacity: 1;
+ --jp-search-selected-match-background-color: rgb(255, 225, 0);
+ --jp-search-selected-match-color: black;
+ --jp-search-unselected-match-background-color: var(
+ --jp-inverse-layout-color0
+ );
+ --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
+
+ /* scrollbar related styles. Supports every browser except Edge. */
+
+ /* colors based on JetBrain's Darcula theme */
+
+ --jp-scrollbar-background-color: #3f4244;
+ --jp-scrollbar-thumb-color: 88, 96, 97; /* need to specify thumb color as an RGB triplet */
+ --jp-scrollbar-endpad: 3px; /* the minimum gap between the thumb and the ends of a scrollbar */
+
+ /* hacks for setting the thumb shape. These do nothing in Firefox */
+
+ --jp-scrollbar-thumb-margin: 3.5px; /* the space in between the sides of the thumb and the track */
+ --jp-scrollbar-thumb-radius: 9px; /* set to a large-ish value for rounded endcaps on the thumb */
+
+ /* Icon colors that work well with light or dark backgrounds */
+ --jp-icon-contrast-color0: var(--md-purple-600);
+ --jp-icon-contrast-color1: var(--md-green-600);
+ --jp-icon-contrast-color2: var(--md-pink-600);
+ --jp-icon-contrast-color3: var(--md-blue-600);
+
+ /* Button colors */
+ --jp-accept-color-normal: var(--md-blue-700);
+ --jp-accept-color-hover: var(--md-blue-800);
+ --jp-accept-color-active: var(--md-blue-900);
+ --jp-warn-color-normal: var(--md-red-700);
+ --jp-warn-color-hover: var(--md-red-800);
+ --jp-warn-color-active: var(--md-red-900);
+ --jp-reject-color-normal: var(--md-grey-600);
+ --jp-reject-color-hover: var(--md-grey-700);
+ --jp-reject-color-active: var(--md-grey-800);
+
+ /* File or activity icons and switch semantic variables */
+ --jp-jupyter-icon-color: #f37626;
+ --jp-notebook-icon-color: #f37626;
+ --jp-json-icon-color: var(--md-orange-500);
+ --jp-console-icon-background-color: var(--md-blue-500);
+ --jp-console-icon-color: white;
+ --jp-terminal-icon-background-color: var(--md-grey-200);
+ --jp-terminal-icon-color: var(--md-grey-800);
+ --jp-text-editor-icon-color: var(--md-grey-200);
+ --jp-inspector-icon-color: var(--md-grey-200);
+ --jp-switch-color: var(--md-grey-400);
+ --jp-switch-true-position-color: var(--md-orange-700);
+}
+</style>
+<style type="text/css">
+/* Force rendering true colors when outputing to pdf */
+* {
+ -webkit-print-color-adjust: exact;
+}
+
+/* Misc */
+a.anchor-link {
+ display: none;
+}
+
+/* Input area styling */
+.jp-InputArea {
+ overflow: hidden;
+}
+
+.jp-InputArea-editor {
+ overflow: hidden;
+}
+
+.cm-editor.cm-s-jupyter .highlight pre {
+/* weird, but --jp-code-padding defined to be 5px but 4px horizontal padding is hardcoded for pre.cm-line */
+ padding: var(--jp-code-padding) 4px;
+ margin: 0;
+
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ color: inherit;
+
+}
+
+.jp-OutputArea-output pre {
+ line-height: inherit;
+ font-family: inherit;
+}
+
+.jp-RenderedText pre {
+ color: var(--jp-content-font-color1);
+ font-size: var(--jp-code-font-size);
+}
+
+/* Hiding the collapser by default */
+.jp-Collapser {
+ display: none;
+}
+
+@page {
+ margin: 0.5in; /* Margin for each printed piece of paper */
+}
+
+@media print {
+ .jp-Cell-inputWrapper,
+ .jp-Cell-outputWrapper {
+ display: block;
+ }
+}
+</style>
+<!-- Load mathjax -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML-full,Safe"> </script>
+<!-- MathJax configuration -->
+<script type="text/x-mathjax-config">
+ init_mathjax = function() {
+ if (window.MathJax) {
+ // MathJax loaded
+ MathJax.Hub.Config({
+ TeX: {
+ equationNumbers: {
+ autoNumber: "AMS",
+ useLabelIds: true
+ }
+ },
+ tex2jax: {
+ inlineMath: [ ['$','$'], ["\\(","\\)"] ],
+ displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
+ processEscapes: true,
+ processEnvironments: true
+ },
+ displayAlign: 'center',
+ CommonHTML: {
+ linebreaks: {
+ automatic: true
+ }
+ }
+ });
+
+ MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
+ }
+ }
+ init_mathjax();
+ </script>
+<!-- End of mathjax configuration --><script type="module">
+ document.addEventListener("DOMContentLoaded", async () => {
+ const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
+ // do not load mermaidjs if not needed
+ if (!diagrams.length) {
+ return;
+ }
+ const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
+ const parser = new DOMParser();
+
+ mermaid.initialize({
+ maxTextSize: 100000,
+ maxEdges: 100000,
+ startOnLoad: false,
+ fontFamily: window
+ .getComputedStyle(document.body)
+ .getPropertyValue("--jp-ui-font-family"),
+ theme: document.querySelector("body[data-jp-theme-light='true']")
+ ? "default"
+ : "dark",
+ });
+
+ let _nextMermaidId = 0;
+
+ function makeMermaidImage(svg) {
+ const img = document.createElement("img");
+ const doc = parser.parseFromString(svg, "image/svg+xml");
+ const svgEl = doc.querySelector("svg");
+ const { maxWidth } = svgEl?.style || {};
+ const firstTitle = doc.querySelector("title");
+ const firstDesc = doc.querySelector("desc");
+
+ img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
+ if (maxWidth) {
+ img.width = parseInt(maxWidth);
+ }
+ if (firstTitle) {
+ img.setAttribute("alt", firstTitle.textContent);
+ }
+ if (firstDesc) {
+ const caption = document.createElement("figcaption");
+ caption.className = "sr-only";
+ caption.textContent = firstDesc.textContent;
+ return [img, caption];
+ }
+ return [img];
+ }
+
+ async function makeMermaidError(text) {
+ let errorMessage = "";
+ try {
+ await mermaid.parse(text);
+ } catch (err) {
+ errorMessage = `${err}`;
+ }
+
+ const result = document.createElement("details");
+ result.className = 'jp-RenderedMermaid-Details';
+ const summary = document.createElement("summary");
+ summary.className = 'jp-RenderedMermaid-Summary';
+ const pre = document.createElement("pre");
+ const code = document.createElement("code");
+ code.innerText = text;
+ pre.appendChild(code);
+ summary.appendChild(pre);
+ result.appendChild(summary);
+
+ const warning = document.createElement("pre");
+ warning.innerText = errorMessage;
+ result.appendChild(warning);
+ return [result];
+ }
+
+ async function renderOneMarmaid(src) {
+ const id = `jp-mermaid-${_nextMermaidId++}`;
+ const parent = src.parentNode;
+ let raw = src.textContent.trim();
+ const el = document.createElement("div");
+ el.style.visibility = "hidden";
+ document.body.appendChild(el);
+ let results = null;
+ let output = null;
+ try {
+ let { svg } = await mermaid.render(id, raw, el);
+ svg = cleanMermaidSvg(svg);
+ results = makeMermaidImage(svg);
+ output = document.createElement("figure");
+ results.map(output.appendChild, output);
+ } catch (err) {
+ parent.classList.add("jp-mod-warning");
+ results = await makeMermaidError(raw);
+ output = results[0];
+ } finally {
+ el.remove();
+ }
+ parent.classList.add("jp-RenderedMermaid");
+ parent.appendChild(output);
+ }
+
+
+ /**
+ * Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
+ */
+ function cleanMermaidSvg(svg) {
+ return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
+ }
+
+
+ /**
+ * A regular expression for all void elements, which may include attributes and
+ * a slash.
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
+ *
+ * Of these, only `<br>` is generated by Mermaid in place of `\n`,
+ * but _any_ "malformed" tag will break the SVG rendering entirely.
+ */
+ const RE_VOID_ELEMENT =
+ /<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
+
+ /**
+ * Ensure a void element is closed with a slash, preserving any attributes.
+ */
+ function replaceVoidElement(match, tag, rest) {
+ rest = rest.trim();
+ if (!rest.endsWith('/')) {
+ rest = `${rest} /`;
+ }
+ return `<${tag} ${rest}>`;
+ }
+
+ void Promise.all([...diagrams].map(renderOneMarmaid));
+ });
+</script>
+<style>
+ .jp-Mermaid:not(.jp-RenderedMermaid) {
+ display: none;
+ }
+
+ .jp-RenderedMermaid {
+ overflow: auto;
+ display: flex;
+ }
+
+ .jp-RenderedMermaid.jp-mod-warning {
+ width: auto;
+ padding: 0.5em;
+ margin-top: 0.5em;
+ border: var(--jp-border-width) solid var(--jp-warn-color2);
+ border-radius: var(--jp-border-radius);
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ }
+
+ .jp-RenderedMermaid figure {
+ margin: 0;
+ overflow: auto;
+ max-width: 100%;
+ }
+
+ .jp-RenderedMermaid img {
+ max-width: 100%;
+ }
+
+ .jp-RenderedMermaid-Details > pre {
+ margin-top: 1em;
+ }
+
+ .jp-RenderedMermaid-Summary {
+ color: var(--jp-warn-color2);
+ }
+
+ .jp-RenderedMermaid:not(.jp-mod-warning) pre {
+ display: none;
+ }
+
+ .jp-RenderedMermaid-Summary > pre {
+ display: inline-block;
+ white-space: normal;
+ }
+</style>
+<!-- End of mermaid configuration --></head>
+<body class="jp-Notebook" data-jp-theme-light="false" data-jp-theme-name="JupyterLab Dark">
+<main>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0b397cbb-8db3-40d9-a0a9-27ba0a774021">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h2 id="Automatically-creating-new-binhost-directories-when-profile-or-gcc-version-changes">Automatically creating new binhost directories when profile or gcc version changes<a class="anchor-link" href="#Automatically-creating-new-binhost-directories-when-profile-or-gcc-version-changes">¶</a></h2>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=97c6e8be-a571-4fea-84c4-b226f03f56c6">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>On Gentoo Linux packages are compiled which is a time and energy consuming.
+To minimise both, I have a binhost to share compiled binaries between devices.
+The issues occurs when gcc major version changes - or a profile bump happens.
+If I do not notice either - problem. Binaries might not be compatible.
+So I wanted to automate a process of detection of those changes and automatically create subfolder for new binaries.
+When investigating I learned a neat trick. For the wise ones this is trivial, for me it was enligtening.
+Here it comes.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2a688afd-5f24-4eab-a1c7-119d372367b5">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>On a regular system, emerge resides here:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b1098db8-2f77-4b56-acef-f58113107dad">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">which</span> <span class="n">emerge</span>
+<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">emerge</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9a1dcd6c-3f8c-455f-9d56-21e5157d0846">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>On my box with binhost:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=bcb9918c-20fb-49fd-baaf-b3b63356de5a">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">which</span> <span class="n">emerge</span>
+<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">emerge</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a84cf35c-e744-47c9-9500-d9b8c7d3bfef">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>And here is $PATH:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=94092561-ae6b-41eb-831a-71bffcf30e6e">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">echo</span> <span class="err">$</span><span class="n">PATH</span>
+<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">sbin</span><span class="p">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="nb">bin</span><span class="p">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="nb">bin</span><span class="p">:</span><span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="nb">bin</span><span class="p">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">llvm</span><span class="o">/</span><span class="mi">18</span><span class="o">/</span><span class="nb">bin</span><span class="p">:</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">llvm</span><span class="o">/</span><span class="mi">17</span><span class="o">/</span><span class="nb">bin</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=eb05de7d-f2f3-4cd3-acc2-769e096a3a5b">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>So we see that on binhost box, there is emerge that resides in location preceeding regular emerge - so it gets called first.
+It contains a shell script as follows:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b9f78265-a1de-47eb-be21-bb66c1ed3bed">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="ch">#!/usr/bin/env bash</span>
+<span class="c1">#</span>
+<span class="c1"># Script checking that binhost path exists before running emerge and</span>
+<span class="c1"># creating it if not exists</span>
+
+<span class="n">PROFILE</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">eselect</span> <span class="n">profile</span> <span class="n">show</span><span class="o">|</span><span class="n">sed</span> <span class="o">-</span><span class="n">n</span> <span class="mi">2</span><span class="n">p</span><span class="o">|</span><span class="n">cut</span> <span class="o">-</span><span class="n">d</span> <span class="s1">'/'</span> <span class="o">-</span><span class="n">f4</span><span class="p">)</span>
+<span class="n">GCC_VERSION</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">eselect</span> <span class="n">gcc</span> <span class="n">show</span><span class="o">|</span><span class="n">cut</span> <span class="o">-</span><span class="n">d</span> <span class="s1">'-'</span> <span class="o">-</span><span class="n">f5</span><span class="p">)</span>
+<span class="n">BINHOST_DIR</span><span class="o">=</span><span class="s2">"/var/cache/binpkgs/$</span><span class="si">{PROFILE}</span><span class="s2">/gcc-$</span><span class="si">{GCC_VERSION}</span><span class="s2">.x/armv8a"</span>
+
+<span class="k">if</span> <span class="p">[</span> <span class="o">!</span><span class="w"> </span>-d<span class="w"> </span><span class="s2">"</span><span class="si">${</span><span class="nv">BINHOST_DIR</span><span class="si">}</span><span class="s2">"</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
+ <span class="n">echo</span> <span class="s2">"$</span><span class="si">{BINHOST_DIR}</span><span class="s2"> does not exist, creating"</span>
+ <span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="s2">"$</span><span class="si">{BINHOST_DIR}</span><span class="s2">"</span>
+<span class="k">else</span> <span class="n">echo</span> <span class="s2">"Binhost directory $</span><span class="si">{BINHOST_DIR}</span><span class="s2"> exists, proceeding with emerge ..."</span>
+<span class="n">fi</span>
+
+<span class="n">PKGDIR</span><span class="o">=</span><span class="s2">"$</span><span class="si">{BINHOST_DIR}</span><span class="s2">"</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">emerge</span> <span class="s2">"$@"</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d6d085ea-b68f-4220-adaf-00223393e58e">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>So on every profile change subfolder to /var/cache/binpkgs gets created,
+on every gcc major version change, subfolder to /var/cache/binpkgs/<profile> gets created.
+If folder already exists script only prints a message.
+Then it calls /usr/bin/emerge - the regular emerge - with $PKGDIR variable, so binary packages are saved to the correct directory.</profile></p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=1d464645-b7ac-4cbc-b5cc-1bd4bd976f06">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>This is structure of /var/cache/binpkgs:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=dee2b348-d16d-4709-a7cd-ac9424934009">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">tree</span> <span class="o">-</span><span class="n">L</span> <span class="mi">3</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">cache</span><span class="o">/</span><span class="n">binpkgs</span><span class="o">/</span>
+<span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">cache</span><span class="o">/</span><span class="n">binpkgs</span><span class="o">/</span>
+<span class="err">├──</span> <span class="mf">17.0</span>
+<span class="err">│</span>   <span class="err">└──</span> <span class="n">gcc</span><span class="o">-</span><span class="mf">13.</span><span class="n">x</span>
+<span class="err">│</span>   <span class="err">└──</span> <span class="n">armv8a</span>
+<span class="err">└──</span> <span class="mf">23.0</span>
+ <span class="err">├──</span> <span class="n">gcc</span><span class="o">-</span><span class="mf">13.</span><span class="n">x</span>
+ <span class="err">│</span>   <span class="err">└──</span> <span class="n">armv8a</span>
+ <span class="err">└──</span> <span class="n">gcc</span><span class="o">-</span><span class="mf">14.</span><span class="n">x</span>
+ <span class="err">└──</span> <span class="n">armv8a</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9f8f4a71-9fd1-4678-9cb0-a580c94f4582">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>One less thing to worry about.</p>
+</div>
+</div>
+</div>
+</div>
+</main>
+</body>
+</html>
diff --git a/static/html/creating_fastapi_static_blog.html b/static/html/creating_fastapi_static_blog.html
new file mode 100644
index 0000000..0a13e7f
--- /dev/null
+++ b/static/html/creating_fastapi_static_blog.html
@@ -0,0 +1,8160 @@
+<!DOCTYPE html>
+
+<html lang="en">
+<head><meta charset="utf-8"/>
+<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
+<title>creating_fastapi_static_blog</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
+<style type="text/css">
+ pre { line-height: 125%; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
+.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
+.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
+.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
+.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
+.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
+.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
+.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
+.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
+.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
+.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
+.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
+.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
+.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
+.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
+.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
+.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
+.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
+.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
+.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
+.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
+.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
+.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
+.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
+.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
+.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
+.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
+.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
+.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
+.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
+.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
+.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
+.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
+.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
+ </style>
+<style type="text/css">
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*
+ * Mozilla scrollbar styling
+ */
+
+/* use standard opaque scrollbars for most nodes */
+[data-jp-theme-scrollbars='true'] {
+ scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
+ var(--jp-scrollbar-background-color);
+}
+
+/* for code nodes, use a transparent style of scrollbar. These selectors
+ * will match lower in the tree, and so will override the above */
+[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
+[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
+ scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
+}
+
+/* tiny scrollbar */
+
+.jp-scrollbar-tiny {
+ scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
+ scrollbar-width: thin;
+}
+
+/* tiny scrollbar */
+
+.jp-scrollbar-tiny::-webkit-scrollbar,
+.jp-scrollbar-tiny::-webkit-scrollbar-corner {
+ background-color: transparent;
+ height: 4px;
+ width: 4px;
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
+ background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
+ border-left: 0 solid transparent;
+ border-right: 0 solid transparent;
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
+ border-top: 0 solid transparent;
+ border-bottom: 0 solid transparent;
+}
+
+/*
+ * Lumino
+ */
+
+.lm-ScrollBar[data-orientation='horizontal'] {
+ min-height: 16px;
+ max-height: 16px;
+ min-width: 45px;
+ border-top: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] {
+ min-width: 16px;
+ max-width: 16px;
+ min-height: 45px;
+ border-left: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar-button {
+ background-color: #f0f0f0;
+ background-position: center center;
+ min-height: 15px;
+ max-height: 15px;
+ min-width: 15px;
+ max-width: 15px;
+}
+
+.lm-ScrollBar-button:hover {
+ background-color: #dadada;
+}
+
+.lm-ScrollBar-button.lm-mod-active {
+ background-color: #cdcdcd;
+}
+
+.lm-ScrollBar-track {
+ background: #f0f0f0;
+}
+
+.lm-ScrollBar-thumb {
+ background: #cdcdcd;
+}
+
+.lm-ScrollBar-thumb:hover {
+ background: #bababa;
+}
+
+.lm-ScrollBar-thumb.lm-mod-active {
+ background: #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
+ height: 100%;
+ min-width: 15px;
+ border-left: 1px solid #a0a0a0;
+ border-right: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
+ width: 100%;
+ min-height: 15px;
+ border-top: 1px solid #a0a0a0;
+ border-bottom: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='horizontal']
+ .lm-ScrollBar-button[data-action='decrement'] {
+ background-image: var(--jp-icon-caret-left);
+ background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='horizontal']
+ .lm-ScrollBar-button[data-action='increment'] {
+ background-image: var(--jp-icon-caret-right);
+ background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='vertical']
+ .lm-ScrollBar-button[data-action='decrement'] {
+ background-image: var(--jp-icon-caret-up);
+ background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='vertical']
+ .lm-ScrollBar-button[data-action='increment'] {
+ background-image: var(--jp-icon-caret-down);
+ background-size: 17px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-Widget {
+ box-sizing: border-box;
+ position: relative;
+ overflow: hidden;
+}
+
+.lm-Widget.lm-mod-hidden {
+ display: none !important;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
+ /* Title is rotated for horizontal accordion panel using CSS */
+ display: block;
+ transform-origin: top left;
+ transform: rotate(-90deg) translate(-100%);
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette {
+ display: flex;
+ flex-direction: column;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-CommandPalette-search {
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-content {
+ flex: 1 1 auto;
+ margin: 0;
+ padding: 0;
+ min-height: 0;
+ overflow: auto;
+ list-style-type: none;
+}
+
+.lm-CommandPalette-header {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.lm-CommandPalette-item {
+ display: flex;
+ flex-direction: row;
+}
+
+.lm-CommandPalette-itemIcon {
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemContent {
+ flex: 1 1 auto;
+ overflow: hidden;
+}
+
+.lm-CommandPalette-itemShortcut {
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemLabel {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.lm-close-icon {
+ border: 1px solid transparent;
+ background-color: transparent;
+ position: absolute;
+ z-index: 1;
+ right: 3%;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ padding: 7px 0;
+ display: none;
+ vertical-align: middle;
+ outline: 0;
+ cursor: pointer;
+}
+.lm-close-icon:after {
+ content: 'X';
+ display: block;
+ width: 15px;
+ height: 15px;
+ text-align: center;
+ color: #000;
+ font-weight: normal;
+ font-size: 12px;
+ cursor: pointer;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-DockPanel {
+ z-index: 0;
+}
+
+.lm-DockPanel-widget {
+ z-index: 0;
+}
+
+.lm-DockPanel-tabBar {
+ z-index: 1;
+}
+
+.lm-DockPanel-handle {
+ z-index: 2;
+}
+
+.lm-DockPanel-handle.lm-mod-hidden {
+ display: none !important;
+}
+
+.lm-DockPanel-handle:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ content: '';
+}
+
+.lm-DockPanel-handle[data-orientation='horizontal'] {
+ cursor: ew-resize;
+}
+
+.lm-DockPanel-handle[data-orientation='vertical'] {
+ cursor: ns-resize;
+}
+
+.lm-DockPanel-handle[data-orientation='horizontal']:after {
+ left: 50%;
+ min-width: 8px;
+ transform: translateX(-50%);
+}
+
+.lm-DockPanel-handle[data-orientation='vertical']:after {
+ top: 50%;
+ min-height: 8px;
+ transform: translateY(-50%);
+}
+
+.lm-DockPanel-overlay {
+ z-index: 3;
+ box-sizing: border-box;
+ pointer-events: none;
+}
+
+.lm-DockPanel-overlay.lm-mod-hidden {
+ display: none !important;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-Menu {
+ z-index: 10000;
+ position: absolute;
+ white-space: nowrap;
+ overflow-x: hidden;
+ overflow-y: auto;
+ outline: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-Menu-content {
+ margin: 0;
+ padding: 0;
+ display: table;
+ list-style-type: none;
+}
+
+.lm-Menu-item {
+ display: table-row;
+}
+
+.lm-Menu-item.lm-mod-hidden,
+.lm-Menu-item.lm-mod-collapsed {
+ display: none !important;
+}
+
+.lm-Menu-itemIcon,
+.lm-Menu-itemSubmenuIcon {
+ display: table-cell;
+ text-align: center;
+}
+
+.lm-Menu-itemLabel {
+ display: table-cell;
+ text-align: left;
+}
+
+.lm-Menu-itemShortcut {
+ display: table-cell;
+ text-align: right;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-MenuBar {
+ outline: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-MenuBar-content {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: row;
+ list-style-type: none;
+}
+
+.lm-MenuBar-item {
+ box-sizing: border-box;
+}
+
+.lm-MenuBar-itemIcon,
+.lm-MenuBar-itemLabel {
+ display: inline-block;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-ScrollBar {
+ display: flex;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-ScrollBar[data-orientation='horizontal'] {
+ flex-direction: row;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] {
+ flex-direction: column;
+}
+
+.lm-ScrollBar-button {
+ box-sizing: border-box;
+ flex: 0 0 auto;
+}
+
+.lm-ScrollBar-track {
+ box-sizing: border-box;
+ position: relative;
+ overflow: hidden;
+ flex: 1 1 auto;
+}
+
+.lm-ScrollBar-thumb {
+ box-sizing: border-box;
+ position: absolute;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-SplitPanel-child {
+ z-index: 0;
+}
+
+.lm-SplitPanel-handle {
+ z-index: 1;
+}
+
+.lm-SplitPanel-handle.lm-mod-hidden {
+ display: none !important;
+}
+
+.lm-SplitPanel-handle:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ content: '';
+}
+
+.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
+ cursor: ew-resize;
+}
+
+.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
+ cursor: ns-resize;
+}
+
+.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
+ left: 50%;
+ min-width: 8px;
+ transform: translateX(-50%);
+}
+
+.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
+ top: 50%;
+ min-height: 8px;
+ transform: translateY(-50%);
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-TabBar {
+ display: flex;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.lm-TabBar[data-orientation='horizontal'] {
+ flex-direction: row;
+ align-items: flex-end;
+}
+
+.lm-TabBar[data-orientation='vertical'] {
+ flex-direction: column;
+ align-items: flex-end;
+}
+
+.lm-TabBar-content {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex: 1 1 auto;
+ list-style-type: none;
+}
+
+.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
+ flex-direction: row;
+}
+
+.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
+ flex-direction: column;
+}
+
+.lm-TabBar-tab {
+ display: flex;
+ flex-direction: row;
+ box-sizing: border-box;
+ overflow: hidden;
+ touch-action: none; /* Disable native Drag/Drop */
+}
+
+.lm-TabBar-tabIcon,
+.lm-TabBar-tabCloseIcon {
+ flex: 0 0 auto;
+}
+
+.lm-TabBar-tabLabel {
+ flex: 1 1 auto;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.lm-TabBar-tabInput {
+ user-select: all;
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.lm-TabBar-tab.lm-mod-hidden {
+ display: none !important;
+}
+
+.lm-TabBar-addButton.lm-mod-hidden {
+ display: none !important;
+}
+
+.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
+ position: relative;
+}
+
+.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
+ left: 0;
+ transition: left 150ms ease;
+}
+
+.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
+ top: 0;
+ transition: top 150ms ease;
+}
+
+.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
+ transition: none;
+}
+
+.lm-TabBar-tabLabel .lm-TabBar-tabInput {
+ user-select: all;
+ width: 100%;
+ box-sizing: border-box;
+ background: inherit;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-TabPanel-tabBar {
+ z-index: 1;
+}
+
+.lm-TabPanel-stackedPanel {
+ z-index: 0;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Collapse {
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+}
+
+.jp-Collapse-header {
+ padding: 1px 12px;
+ background-color: var(--jp-layout-color1);
+ border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
+ color: var(--jp-ui-font-color1);
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ font-size: var(--jp-ui-font-size0);
+ font-weight: 600;
+ text-transform: uppercase;
+ user-select: none;
+}
+
+.jp-Collapser-icon {
+ height: 16px;
+}
+
+.jp-Collapse-header-collapsed .jp-Collapser-icon {
+ transform: rotate(-90deg);
+ margin: auto 0;
+}
+
+.jp-Collapser-title {
+ line-height: 25px;
+}
+
+.jp-Collapse-contents {
+ padding: 0 12px;
+ background-color: var(--jp-layout-color1);
+ color: var(--jp-ui-font-color1);
+ overflow: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
+
+/**
+ * (DEPRECATED) Support for consuming icons as CSS background images
+ */
+
+/* Icons urls */
+
+:root {
+ --jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
+ --jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
+ --jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
+ --jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
+ --jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
+ --jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
+ --jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
+ --jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
+ --jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
+ --jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
+ --jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
+ --jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
+ --jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
+ --jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
+ --jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
+ --jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
+ --jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
+ --jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
+ --jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
+ --jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
+ --jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
+ --jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
+ --jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
+ --jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
+ --jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+ --jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
+ --jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
+ --jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
+ --jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
+ --jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
+ --jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
+ --jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
+ --jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
+ --jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
+}
+
+/* Icon CSS class declarations */
+
+.jp-AddAboveIcon {
+ background-image: var(--jp-icon-add-above);
+}
+
+.jp-AddBelowIcon {
+ background-image: var(--jp-icon-add-below);
+}
+
+.jp-AddIcon {
+ background-image: var(--jp-icon-add);
+}
+
+.jp-BellIcon {
+ background-image: var(--jp-icon-bell);
+}
+
+.jp-BugDotIcon {
+ background-image: var(--jp-icon-bug-dot);
+}
+
+.jp-BugIcon {
+ background-image: var(--jp-icon-bug);
+}
+
+.jp-BuildIcon {
+ background-image: var(--jp-icon-build);
+}
+
+.jp-CaretDownEmptyIcon {
+ background-image: var(--jp-icon-caret-down-empty);
+}
+
+.jp-CaretDownEmptyThinIcon {
+ background-image: var(--jp-icon-caret-down-empty-thin);
+}
+
+.jp-CaretDownIcon {
+ background-image: var(--jp-icon-caret-down);
+}
+
+.jp-CaretLeftIcon {
+ background-image: var(--jp-icon-caret-left);
+}
+
+.jp-CaretRightIcon {
+ background-image: var(--jp-icon-caret-right);
+}
+
+.jp-CaretUpEmptyThinIcon {
+ background-image: var(--jp-icon-caret-up-empty-thin);
+}
+
+.jp-CaretUpIcon {
+ background-image: var(--jp-icon-caret-up);
+}
+
+.jp-CaseSensitiveIcon {
+ background-image: var(--jp-icon-case-sensitive);
+}
+
+.jp-CheckIcon {
+ background-image: var(--jp-icon-check);
+}
+
+.jp-CircleEmptyIcon {
+ background-image: var(--jp-icon-circle-empty);
+}
+
+.jp-CircleIcon {
+ background-image: var(--jp-icon-circle);
+}
+
+.jp-ClearIcon {
+ background-image: var(--jp-icon-clear);
+}
+
+.jp-CloseIcon {
+ background-image: var(--jp-icon-close);
+}
+
+.jp-CodeCheckIcon {
+ background-image: var(--jp-icon-code-check);
+}
+
+.jp-CodeIcon {
+ background-image: var(--jp-icon-code);
+}
+
+.jp-CollapseAllIcon {
+ background-image: var(--jp-icon-collapse-all);
+}
+
+.jp-ConsoleIcon {
+ background-image: var(--jp-icon-console);
+}
+
+.jp-CopyIcon {
+ background-image: var(--jp-icon-copy);
+}
+
+.jp-CopyrightIcon {
+ background-image: var(--jp-icon-copyright);
+}
+
+.jp-CutIcon {
+ background-image: var(--jp-icon-cut);
+}
+
+.jp-DeleteIcon {
+ background-image: var(--jp-icon-delete);
+}
+
+.jp-DownloadIcon {
+ background-image: var(--jp-icon-download);
+}
+
+.jp-DuplicateIcon {
+ background-image: var(--jp-icon-duplicate);
+}
+
+.jp-EditIcon {
+ background-image: var(--jp-icon-edit);
+}
+
+.jp-EllipsesIcon {
+ background-image: var(--jp-icon-ellipses);
+}
+
+.jp-ErrorIcon {
+ background-image: var(--jp-icon-error);
+}
+
+.jp-ExpandAllIcon {
+ background-image: var(--jp-icon-expand-all);
+}
+
+.jp-ExtensionIcon {
+ background-image: var(--jp-icon-extension);
+}
+
+.jp-FastForwardIcon {
+ background-image: var(--jp-icon-fast-forward);
+}
+
+.jp-FileIcon {
+ background-image: var(--jp-icon-file);
+}
+
+.jp-FileUploadIcon {
+ background-image: var(--jp-icon-file-upload);
+}
+
+.jp-FilterDotIcon {
+ background-image: var(--jp-icon-filter-dot);
+}
+
+.jp-FilterIcon {
+ background-image: var(--jp-icon-filter);
+}
+
+.jp-FilterListIcon {
+ background-image: var(--jp-icon-filter-list);
+}
+
+.jp-FolderFavoriteIcon {
+ background-image: var(--jp-icon-folder-favorite);
+}
+
+.jp-FolderIcon {
+ background-image: var(--jp-icon-folder);
+}
+
+.jp-HomeIcon {
+ background-image: var(--jp-icon-home);
+}
+
+.jp-Html5Icon {
+ background-image: var(--jp-icon-html5);
+}
+
+.jp-ImageIcon {
+ background-image: var(--jp-icon-image);
+}
+
+.jp-InfoIcon {
+ background-image: var(--jp-icon-info);
+}
+
+.jp-InspectorIcon {
+ background-image: var(--jp-icon-inspector);
+}
+
+.jp-JsonIcon {
+ background-image: var(--jp-icon-json);
+}
+
+.jp-JuliaIcon {
+ background-image: var(--jp-icon-julia);
+}
+
+.jp-JupyterFaviconIcon {
+ background-image: var(--jp-icon-jupyter-favicon);
+}
+
+.jp-JupyterIcon {
+ background-image: var(--jp-icon-jupyter);
+}
+
+.jp-JupyterlabWordmarkIcon {
+ background-image: var(--jp-icon-jupyterlab-wordmark);
+}
+
+.jp-KernelIcon {
+ background-image: var(--jp-icon-kernel);
+}
+
+.jp-KeyboardIcon {
+ background-image: var(--jp-icon-keyboard);
+}
+
+.jp-LaunchIcon {
+ background-image: var(--jp-icon-launch);
+}
+
+.jp-LauncherIcon {
+ background-image: var(--jp-icon-launcher);
+}
+
+.jp-LineFormIcon {
+ background-image: var(--jp-icon-line-form);
+}
+
+.jp-LinkIcon {
+ background-image: var(--jp-icon-link);
+}
+
+.jp-ListIcon {
+ background-image: var(--jp-icon-list);
+}
+
+.jp-MarkdownIcon {
+ background-image: var(--jp-icon-markdown);
+}
+
+.jp-MoveDownIcon {
+ background-image: var(--jp-icon-move-down);
+}
+
+.jp-MoveUpIcon {
+ background-image: var(--jp-icon-move-up);
+}
+
+.jp-NewFolderIcon {
+ background-image: var(--jp-icon-new-folder);
+}
+
+.jp-NotTrustedIcon {
+ background-image: var(--jp-icon-not-trusted);
+}
+
+.jp-NotebookIcon {
+ background-image: var(--jp-icon-notebook);
+}
+
+.jp-NumberingIcon {
+ background-image: var(--jp-icon-numbering);
+}
+
+.jp-OfflineBoltIcon {
+ background-image: var(--jp-icon-offline-bolt);
+}
+
+.jp-PaletteIcon {
+ background-image: var(--jp-icon-palette);
+}
+
+.jp-PasteIcon {
+ background-image: var(--jp-icon-paste);
+}
+
+.jp-PdfIcon {
+ background-image: var(--jp-icon-pdf);
+}
+
+.jp-PythonIcon {
+ background-image: var(--jp-icon-python);
+}
+
+.jp-RKernelIcon {
+ background-image: var(--jp-icon-r-kernel);
+}
+
+.jp-ReactIcon {
+ background-image: var(--jp-icon-react);
+}
+
+.jp-RedoIcon {
+ background-image: var(--jp-icon-redo);
+}
+
+.jp-RefreshIcon {
+ background-image: var(--jp-icon-refresh);
+}
+
+.jp-RegexIcon {
+ background-image: var(--jp-icon-regex);
+}
+
+.jp-RunIcon {
+ background-image: var(--jp-icon-run);
+}
+
+.jp-RunningIcon {
+ background-image: var(--jp-icon-running);
+}
+
+.jp-SaveIcon {
+ background-image: var(--jp-icon-save);
+}
+
+.jp-SearchIcon {
+ background-image: var(--jp-icon-search);
+}
+
+.jp-SettingsIcon {
+ background-image: var(--jp-icon-settings);
+}
+
+.jp-ShareIcon {
+ background-image: var(--jp-icon-share);
+}
+
+.jp-SpreadsheetIcon {
+ background-image: var(--jp-icon-spreadsheet);
+}
+
+.jp-StopIcon {
+ background-image: var(--jp-icon-stop);
+}
+
+.jp-TabIcon {
+ background-image: var(--jp-icon-tab);
+}
+
+.jp-TableRowsIcon {
+ background-image: var(--jp-icon-table-rows);
+}
+
+.jp-TagIcon {
+ background-image: var(--jp-icon-tag);
+}
+
+.jp-TerminalIcon {
+ background-image: var(--jp-icon-terminal);
+}
+
+.jp-TextEditorIcon {
+ background-image: var(--jp-icon-text-editor);
+}
+
+.jp-TocIcon {
+ background-image: var(--jp-icon-toc);
+}
+
+.jp-TreeViewIcon {
+ background-image: var(--jp-icon-tree-view);
+}
+
+.jp-TrustedIcon {
+ background-image: var(--jp-icon-trusted);
+}
+
+.jp-UndoIcon {
+ background-image: var(--jp-icon-undo);
+}
+
+.jp-UserIcon {
+ background-image: var(--jp-icon-user);
+}
+
+.jp-UsersIcon {
+ background-image: var(--jp-icon-users);
+}
+
+.jp-VegaIcon {
+ background-image: var(--jp-icon-vega);
+}
+
+.jp-WordIcon {
+ background-image: var(--jp-icon-word);
+}
+
+.jp-YamlIcon {
+ background-image: var(--jp-icon-yaml);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * (DEPRECATED) Support for consuming icons as CSS background images
+ */
+
+.jp-Icon,
+.jp-MaterialIcon {
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: 16px;
+ min-width: 16px;
+ min-height: 16px;
+}
+
+.jp-Icon-cover {
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: cover;
+}
+
+/**
+ * (DEPRECATED) Support for specific CSS icon sizes
+ */
+
+.jp-Icon-16 {
+ background-size: 16px;
+ min-width: 16px;
+ min-height: 16px;
+}
+
+.jp-Icon-18 {
+ background-size: 18px;
+ min-width: 18px;
+ min-height: 18px;
+}
+
+.jp-Icon-20 {
+ background-size: 20px;
+ min-width: 20px;
+ min-height: 20px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.lm-TabBar .lm-TabBar-addButton {
+ align-items: center;
+ display: flex;
+ padding: 4px;
+ padding-bottom: 5px;
+ margin-right: 1px;
+ background-color: var(--jp-layout-color2);
+}
+
+.lm-TabBar .lm-TabBar-addButton:hover {
+ background-color: var(--jp-layout-color1);
+}
+
+.lm-DockPanel-tabBar .lm-TabBar-tab {
+ width: var(--jp-private-horizontal-tab-width);
+}
+
+.lm-DockPanel-tabBar .lm-TabBar-content {
+ flex: unset;
+}
+
+.lm-DockPanel-tabBar[data-orientation='horizontal'] {
+ flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * Support for icons as inline SVG HTMLElements
+ */
+
+/* recolor the primary elements of an icon */
+.jp-icon0[fill] {
+ fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon1[fill] {
+ fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon2[fill] {
+ fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon3[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon4[fill] {
+ fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon0[stroke] {
+ stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon1[stroke] {
+ stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon2[stroke] {
+ stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon3[stroke] {
+ stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon4[stroke] {
+ stroke: var(--jp-inverse-layout-color4);
+}
+
+/* recolor the accent elements of an icon */
+.jp-icon-accent0[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.jp-icon-accent1[fill] {
+ fill: var(--jp-layout-color1);
+}
+
+.jp-icon-accent2[fill] {
+ fill: var(--jp-layout-color2);
+}
+
+.jp-icon-accent3[fill] {
+ fill: var(--jp-layout-color3);
+}
+
+.jp-icon-accent4[fill] {
+ fill: var(--jp-layout-color4);
+}
+
+.jp-icon-accent0[stroke] {
+ stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-accent1[stroke] {
+ stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-accent2[stroke] {
+ stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-accent3[stroke] {
+ stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-accent4[stroke] {
+ stroke: var(--jp-layout-color4);
+}
+
+/* set the color of an icon to transparent */
+.jp-icon-none[fill] {
+ fill: none;
+}
+
+.jp-icon-none[stroke] {
+ stroke: none;
+}
+
+/* brand icon colors. Same for light and dark */
+.jp-icon-brand0[fill] {
+ fill: var(--jp-brand-color0);
+}
+
+.jp-icon-brand1[fill] {
+ fill: var(--jp-brand-color1);
+}
+
+.jp-icon-brand2[fill] {
+ fill: var(--jp-brand-color2);
+}
+
+.jp-icon-brand3[fill] {
+ fill: var(--jp-brand-color3);
+}
+
+.jp-icon-brand4[fill] {
+ fill: var(--jp-brand-color4);
+}
+
+.jp-icon-brand0[stroke] {
+ stroke: var(--jp-brand-color0);
+}
+
+.jp-icon-brand1[stroke] {
+ stroke: var(--jp-brand-color1);
+}
+
+.jp-icon-brand2[stroke] {
+ stroke: var(--jp-brand-color2);
+}
+
+.jp-icon-brand3[stroke] {
+ stroke: var(--jp-brand-color3);
+}
+
+.jp-icon-brand4[stroke] {
+ stroke: var(--jp-brand-color4);
+}
+
+/* warn icon colors. Same for light and dark */
+.jp-icon-warn0[fill] {
+ fill: var(--jp-warn-color0);
+}
+
+.jp-icon-warn1[fill] {
+ fill: var(--jp-warn-color1);
+}
+
+.jp-icon-warn2[fill] {
+ fill: var(--jp-warn-color2);
+}
+
+.jp-icon-warn3[fill] {
+ fill: var(--jp-warn-color3);
+}
+
+.jp-icon-warn0[stroke] {
+ stroke: var(--jp-warn-color0);
+}
+
+.jp-icon-warn1[stroke] {
+ stroke: var(--jp-warn-color1);
+}
+
+.jp-icon-warn2[stroke] {
+ stroke: var(--jp-warn-color2);
+}
+
+.jp-icon-warn3[stroke] {
+ stroke: var(--jp-warn-color3);
+}
+
+/* icon colors that contrast well with each other and most backgrounds */
+.jp-icon-contrast0[fill] {
+ fill: var(--jp-icon-contrast-color0);
+}
+
+.jp-icon-contrast1[fill] {
+ fill: var(--jp-icon-contrast-color1);
+}
+
+.jp-icon-contrast2[fill] {
+ fill: var(--jp-icon-contrast-color2);
+}
+
+.jp-icon-contrast3[fill] {
+ fill: var(--jp-icon-contrast-color3);
+}
+
+.jp-icon-contrast0[stroke] {
+ stroke: var(--jp-icon-contrast-color0);
+}
+
+.jp-icon-contrast1[stroke] {
+ stroke: var(--jp-icon-contrast-color1);
+}
+
+.jp-icon-contrast2[stroke] {
+ stroke: var(--jp-icon-contrast-color2);
+}
+
+.jp-icon-contrast3[stroke] {
+ stroke: var(--jp-icon-contrast-color3);
+}
+
+.jp-icon-dot[fill] {
+ fill: var(--jp-warn-color0);
+}
+
+.jp-jupyter-icon-color[fill] {
+ fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
+}
+
+.jp-notebook-icon-color[fill] {
+ fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
+}
+
+.jp-json-icon-color[fill] {
+ fill: var(--jp-json-icon-color, var(--jp-warn-color1));
+}
+
+.jp-console-icon-color[fill] {
+ fill: var(--jp-console-icon-color, white);
+}
+
+.jp-console-icon-background-color[fill] {
+ fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
+}
+
+.jp-terminal-icon-color[fill] {
+ fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
+}
+
+.jp-terminal-icon-background-color[fill] {
+ fill: var(
+ --jp-terminal-icon-background-color,
+ var(--jp-inverse-layout-color2)
+ );
+}
+
+.jp-text-editor-icon-color[fill] {
+ fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
+}
+
+.jp-inspector-icon-color[fill] {
+ fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
+}
+
+/* CSS for icons in selected filebrowser listing items */
+.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
+ fill: #fff;
+}
+
+.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
+ fill: var(--jp-brand-color1);
+}
+
+/* stylelint-disable selector-max-class, selector-max-compound-selectors */
+
+/**
+* TODO: come up with non css-hack solution for showing the busy icon on top
+* of the close icon
+* CSS for complex behavior of close icon of tabs in the main area tabbar
+*/
+.lm-DockPanel-tabBar
+ .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
+ > .lm-TabBar-tabCloseIcon
+ > :not(:hover)
+ > .jp-icon3[fill] {
+ fill: none;
+}
+
+.lm-DockPanel-tabBar
+ .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
+ > .lm-TabBar-tabCloseIcon
+ > :not(:hover)
+ > .jp-icon-busy[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+/* stylelint-enable selector-max-class, selector-max-compound-selectors */
+
+/* CSS for icons in status bar */
+#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
+ fill: #fff;
+}
+
+#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
+ fill: var(--jp-brand-color1);
+}
+
+/* special handling for splash icon CSS. While the theme CSS reloads during
+ splash, the splash icon can loose theming. To prevent that, we set a
+ default for its color variable */
+:root {
+ --jp-warn-color0: var(--md-orange-700);
+}
+
+/* not sure what to do with this one, used in filebrowser listing */
+.jp-DragIcon {
+ margin-right: 4px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * Support for alt colors for icons as inline SVG HTMLElements
+ */
+
+/* alt recolor the primary elements of an icon */
+.jp-icon-alt .jp-icon0[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.jp-icon-alt .jp-icon1[fill] {
+ fill: var(--jp-layout-color1);
+}
+
+.jp-icon-alt .jp-icon2[fill] {
+ fill: var(--jp-layout-color2);
+}
+
+.jp-icon-alt .jp-icon3[fill] {
+ fill: var(--jp-layout-color3);
+}
+
+.jp-icon-alt .jp-icon4[fill] {
+ fill: var(--jp-layout-color4);
+}
+
+.jp-icon-alt .jp-icon0[stroke] {
+ stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-alt .jp-icon1[stroke] {
+ stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-alt .jp-icon2[stroke] {
+ stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-alt .jp-icon3[stroke] {
+ stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-alt .jp-icon4[stroke] {
+ stroke: var(--jp-layout-color4);
+}
+
+/* alt recolor the accent elements of an icon */
+.jp-icon-alt .jp-icon-accent0[fill] {
+ fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-alt .jp-icon-accent1[fill] {
+ fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-alt .jp-icon-accent2[fill] {
+ fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-alt .jp-icon-accent3[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-alt .jp-icon-accent4[fill] {
+ fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-alt .jp-icon-accent0[stroke] {
+ stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-alt .jp-icon-accent1[stroke] {
+ stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-alt .jp-icon-accent2[stroke] {
+ stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-alt .jp-icon-accent3[stroke] {
+ stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-alt .jp-icon-accent4[stroke] {
+ stroke: var(--jp-inverse-layout-color4);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
+ display: none !important;
+}
+
+/**
+ * Support for hover colors for icons as inline SVG HTMLElements
+ */
+
+/**
+ * regular colors
+ */
+
+/* recolor the primary elements of an icon */
+.jp-icon-hover :hover .jp-icon0-hover[fill] {
+ fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon1-hover[fill] {
+ fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon2-hover[fill] {
+ fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon3-hover[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon4-hover[fill] {
+ fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-hover :hover .jp-icon0-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon1-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon2-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon3-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon4-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color4);
+}
+
+/* recolor the accent elements of an icon */
+.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
+ fill: var(--jp-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
+ fill: var(--jp-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
+ fill: var(--jp-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
+ fill: var(--jp-layout-color4);
+}
+
+.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
+ stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
+ stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
+ stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
+ stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
+ stroke: var(--jp-layout-color4);
+}
+
+/* set the color of an icon to transparent */
+.jp-icon-hover :hover .jp-icon-none-hover[fill] {
+ fill: none;
+}
+
+.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
+ stroke: none;
+}
+
+/**
+ * inverse colors
+ */
+
+/* inverse recolor the primary elements of an icon */
+.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
+ fill: var(--jp-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
+ fill: var(--jp-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
+ fill: var(--jp-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
+ fill: var(--jp-layout-color4);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
+ stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
+ stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
+ stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
+ stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
+ stroke: var(--jp-layout-color4);
+}
+
+/* inverse recolor the accent elements of an icon */
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
+ fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
+ fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
+ fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
+ fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
+ stroke: var(--jp-inverse-layout-color4);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-IFrame {
+ width: 100%;
+ height: 100%;
+}
+
+.jp-IFrame > iframe {
+ border: none;
+}
+
+/*
+When drag events occur, `lm-mod-override-cursor` is added to the body.
+Because iframes steal all cursor events, the following two rules are necessary
+to suppress pointer events while resize drags are occurring. There may be a
+better solution to this problem.
+*/
+body.lm-mod-override-cursor .jp-IFrame {
+ position: relative;
+}
+
+body.lm-mod-override-cursor .jp-IFrame::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-HoverBox {
+ position: fixed;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-FormGroup-content fieldset {
+ border: none;
+ padding: 0;
+ min-width: 0;
+ width: 100%;
+}
+
+/* stylelint-disable selector-max-type */
+
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
+ font-size: var(--jp-content-font-size2);
+ border-color: var(--jp-input-border-color);
+ border-style: solid;
+ border-radius: var(--jp-border-radius);
+ border-width: 1px;
+ padding: 6px 8px;
+ background: none;
+ color: var(--jp-ui-font-color0);
+ height: inherit;
+}
+
+.jp-FormGroup-content fieldset input[type='checkbox'] {
+ position: relative;
+ top: 2px;
+ margin-left: 0;
+}
+
+.jp-FormGroup-content button.jp-mod-styled {
+ cursor: pointer;
+}
+
+.jp-FormGroup-content .checkbox label {
+ cursor: pointer;
+ font-size: var(--jp-content-font-size1);
+}
+
+.jp-FormGroup-content .jp-root > fieldset > legend {
+ display: none;
+}
+
+.jp-FormGroup-content .jp-root > fieldset > p {
+ display: none;
+}
+
+/** copy of `input.jp-mod-styled:focus` style */
+.jp-FormGroup-content fieldset input:focus,
+.jp-FormGroup-content fieldset select:focus {
+ -moz-outline-radius: unset;
+ outline: var(--jp-border-width) solid var(--md-blue-500);
+ outline-offset: -1px;
+ box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-FormGroup-content fieldset input:hover:not(:focus),
+.jp-FormGroup-content fieldset select:hover:not(:focus) {
+ background-color: var(--jp-border-color2);
+}
+
+/* stylelint-enable selector-max-type */
+
+.jp-FormGroup-content .checkbox .field-description {
+ /* Disable default description field for checkbox:
+ because other widgets do not have description fields,
+ we add descriptions to each widget on the field level.
+ */
+ display: none;
+}
+
+.jp-FormGroup-content #root__description {
+ display: none;
+}
+
+.jp-FormGroup-content .jp-modifiedIndicator {
+ width: 5px;
+ background-color: var(--jp-brand-color2);
+ margin-top: 0;
+ margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
+ flex-shrink: 0;
+}
+
+.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
+ background-color: var(--jp-error-color0);
+ margin-right: 0.5em;
+}
+
+/* RJSF ARRAY style */
+
+.jp-arrayFieldWrapper legend {
+ font-size: var(--jp-content-font-size2);
+ color: var(--jp-ui-font-color0);
+ flex-basis: 100%;
+ padding: 4px 0;
+ font-weight: var(--jp-content-heading-font-weight);
+ border-bottom: 1px solid var(--jp-border-color2);
+}
+
+.jp-arrayFieldWrapper .field-description {
+ padding: 4px 0;
+ white-space: pre-wrap;
+}
+
+.jp-arrayFieldWrapper .array-item {
+ width: 100%;
+ border: 1px solid var(--jp-border-color2);
+ border-radius: 4px;
+ margin: 4px;
+}
+
+.jp-ArrayOperations {
+ display: flex;
+ margin-left: 8px;
+}
+
+.jp-ArrayOperationsButton {
+ margin: 2px;
+}
+
+.jp-ArrayOperationsButton .jp-icon3[fill] {
+ fill: var(--jp-ui-font-color0);
+}
+
+button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
+ cursor: not-allowed;
+ opacity: 0.5;
+}
+
+/* RJSF form validation error */
+
+.jp-FormGroup-content .validationErrors {
+ color: var(--jp-error-color0);
+}
+
+/* Hide panel level error as duplicated the field level error */
+.jp-FormGroup-content .panel.errors {
+ display: none;
+}
+
+/* RJSF normal content (settings-editor) */
+
+.jp-FormGroup-contentNormal {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
+ margin-left: 7px;
+ color: var(--jp-ui-font-color0);
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-description {
+ flex-basis: 100%;
+ padding: 4px 7px;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-default {
+ flex-basis: 100%;
+ padding: 4px 7px;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
+ font-size: var(--jp-content-font-size1);
+ font-weight: normal;
+ min-width: 120px;
+}
+
+.jp-FormGroup-contentNormal fieldset:not(:first-child) {
+ margin-left: 7px;
+}
+
+.jp-FormGroup-contentNormal .field-array-of-string .array-item {
+ /* Display `jp-ArrayOperations` buttons side-by-side with content except
+ for small screens where flex-wrap will place them one below the other.
+ */
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+}
+
+.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
+ padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
+ margin-top: 2px;
+}
+
+/* RJSF compact content (metadata-form) */
+
+.jp-FormGroup-content.jp-FormGroup-contentCompact {
+ width: 100%;
+}
+
+.jp-FormGroup-contentCompact .form-group {
+ display: flex;
+ padding: 0.5em 0.2em 0.5em 0;
+}
+
+.jp-FormGroup-contentCompact
+ .jp-FormGroup-compactTitle
+ .jp-FormGroup-description {
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
+ padding-bottom: 0.3em;
+}
+
+.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
+ padding-bottom: 7px;
+}
+
+.jp-FormGroup-contentCompact
+ .jp-objectFieldWrapper
+ .jp-objectFieldWrapper
+ .form-group {
+ padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
+ margin-top: 2px;
+}
+
+.jp-FormGroup-contentCompact ul.error-detail {
+ margin-block-start: 0.5em;
+ margin-block-end: 0.5em;
+ padding-inline-start: 1em;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-SidePanel {
+ display: flex;
+ flex-direction: column;
+ min-width: var(--jp-sidebar-min-width);
+ overflow-y: auto;
+ color: var(--jp-ui-font-color1);
+ background: var(--jp-layout-color1);
+ font-size: var(--jp-ui-font-size1);
+}
+
+.jp-SidePanel-header {
+ flex: 0 0 auto;
+ display: flex;
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
+ font-size: var(--jp-ui-font-size0);
+ font-weight: 600;
+ letter-spacing: 1px;
+ margin: 0;
+ padding: 2px;
+ text-transform: uppercase;
+}
+
+.jp-SidePanel-toolbar {
+ flex: 0 0 auto;
+}
+
+.jp-SidePanel-content {
+ flex: 1 1 auto;
+}
+
+.jp-SidePanel-toolbar,
+.jp-AccordionPanel-toolbar {
+ height: var(--jp-private-toolbar-height);
+}
+
+.jp-SidePanel-toolbar.jp-Toolbar-micro {
+ display: none;
+}
+
+.lm-AccordionPanel .jp-AccordionPanel-title {
+ box-sizing: border-box;
+ line-height: 25px;
+ margin: 0;
+ display: flex;
+ align-items: center;
+ background: var(--jp-layout-color1);
+ color: var(--jp-ui-font-color1);
+ border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ font-size: var(--jp-ui-font-size0);
+}
+
+.jp-AccordionPanel-title {
+ cursor: pointer;
+ user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ text-transform: uppercase;
+}
+
+.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
+ /* Title is rotated for horizontal accordion panel using CSS */
+ display: block;
+ transform-origin: top left;
+ transform: rotate(-90deg) translate(-100%);
+}
+
+.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
+ user-select: none;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
+ transform: rotate(-90deg);
+ margin: auto 0;
+ height: 16px;
+}
+
+.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
+ transform: rotate(0deg);
+}
+
+.lm-AccordionPanel .jp-AccordionPanel-toolbar {
+ background: none;
+ box-shadow: none;
+ border: none;
+ margin-left: auto;
+}
+
+.lm-AccordionPanel .lm-SplitPanel-handle:hover {
+ background: var(--jp-layout-color3);
+}
+
+.jp-text-truncated {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Spinner {
+ position: absolute;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 10;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background: var(--jp-layout-color0);
+ outline: none;
+}
+
+.jp-SpinnerContent {
+ font-size: 10px;
+ margin: 50px auto;
+ text-indent: -9999em;
+ width: 3em;
+ height: 3em;
+ border-radius: 50%;
+ background: var(--jp-brand-color3);
+ background: linear-gradient(
+ to right,
+ #f37626 10%,
+ rgba(255, 255, 255, 0) 42%
+ );
+ position: relative;
+ animation: load3 1s infinite linear, fadeIn 1s;
+}
+
+.jp-SpinnerContent::before {
+ width: 50%;
+ height: 50%;
+ background: #f37626;
+ border-radius: 100% 0 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ content: '';
+}
+
+.jp-SpinnerContent::after {
+ background: var(--jp-layout-color0);
+ width: 75%;
+ height: 75%;
+ border-radius: 50%;
+ content: '';
+ margin: auto;
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes load3 {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+button.jp-mod-styled {
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color0);
+ border: none;
+ box-sizing: border-box;
+ text-align: center;
+ line-height: 32px;
+ height: 32px;
+ padding: 0 12px;
+ letter-spacing: 0.8px;
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+
+input.jp-mod-styled {
+ background: var(--jp-input-background);
+ height: 28px;
+ box-sizing: border-box;
+ border: var(--jp-border-width) solid var(--jp-border-color1);
+ padding-left: 7px;
+ padding-right: 7px;
+ font-size: var(--jp-ui-font-size2);
+ color: var(--jp-ui-font-color0);
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+
+input[type='checkbox'].jp-mod-styled {
+ appearance: checkbox;
+ -webkit-appearance: checkbox;
+ -moz-appearance: checkbox;
+ height: auto;
+}
+
+input.jp-mod-styled:focus {
+ border: var(--jp-border-width) solid var(--md-blue-500);
+ box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-select-wrapper {
+ display: flex;
+ position: relative;
+ flex-direction: column;
+ padding: 1px;
+ background-color: var(--jp-layout-color1);
+ box-sizing: border-box;
+ margin-bottom: 12px;
+}
+
+.jp-select-wrapper:not(.multiple) {
+ height: 28px;
+}
+
+.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
+ border: var(--jp-border-width) solid var(--jp-input-active-border-color);
+ box-shadow: var(--jp-input-box-shadow);
+ background-color: var(--jp-input-active-background);
+}
+
+select.jp-mod-styled:hover {
+ cursor: pointer;
+ color: var(--jp-ui-font-color0);
+ background-color: var(--jp-input-hover-background);
+ box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
+}
+
+select.jp-mod-styled {
+ flex: 1 1 auto;
+ width: 100%;
+ font-size: var(--jp-ui-font-size2);
+ background: var(--jp-input-background);
+ color: var(--jp-ui-font-color0);
+ padding: 0 25px 0 8px;
+ border: var(--jp-border-width) solid var(--jp-input-border-color);
+ border-radius: 0;
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+
+select.jp-mod-styled:not([multiple]) {
+ height: 32px;
+}
+
+select.jp-mod-styled[multiple] {
+ max-height: 200px;
+ overflow-y: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-switch {
+ display: flex;
+ align-items: center;
+ padding-left: 4px;
+ padding-right: 4px;
+ font-size: var(--jp-ui-font-size1);
+ background-color: transparent;
+ color: var(--jp-ui-font-color1);
+ border: none;
+ height: 20px;
+}
+
+.jp-switch:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-switch-label {
+ margin-right: 5px;
+ font-family: var(--jp-ui-font-family);
+}
+
+.jp-switch-track {
+ cursor: pointer;
+ background-color: var(--jp-switch-color, var(--jp-border-color1));
+ -webkit-transition: 0.4s;
+ transition: 0.4s;
+ border-radius: 34px;
+ height: 16px;
+ width: 35px;
+ position: relative;
+}
+
+.jp-switch-track::before {
+ content: '';
+ position: absolute;
+ height: 10px;
+ width: 10px;
+ margin: 3px;
+ left: 0;
+ background-color: var(--jp-ui-inverse-font-color1);
+ -webkit-transition: 0.4s;
+ transition: 0.4s;
+ border-radius: 50%;
+}
+
+.jp-switch[aria-checked='true'] .jp-switch-track {
+ background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
+}
+
+.jp-switch[aria-checked='true'] .jp-switch-track::before {
+ /* track width (35) - margins (3 + 3) - thumb width (10) */
+ left: 19px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-toolbar-height: calc(
+ 28px + var(--jp-border-width)
+ ); /* leave 28px for content */
+}
+
+.jp-Toolbar {
+ color: var(--jp-ui-font-color1);
+ flex: 0 0 auto;
+ display: flex;
+ flex-direction: row;
+ border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ background: var(--jp-toolbar-background);
+ min-height: var(--jp-toolbar-micro-height);
+ padding: 2px;
+ z-index: 8;
+ overflow-x: hidden;
+}
+
+/* Toolbar items */
+
+.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
+ flex-grow: 1;
+ flex-shrink: 1;
+}
+
+.jp-Toolbar-item.jp-Toolbar-kernelStatus {
+ display: inline-block;
+ width: 32px;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 16px;
+}
+
+.jp-Toolbar > .jp-Toolbar-item {
+ flex: 0 0 auto;
+ display: flex;
+ padding-left: 1px;
+ padding-right: 1px;
+ font-size: var(--jp-ui-font-size1);
+ line-height: var(--jp-private-toolbar-height);
+ height: 100%;
+}
+
+/* Toolbar buttons */
+
+/* This is the div we use to wrap the react component into a Widget */
+div.jp-ToolbarButton {
+ color: transparent;
+ border: none;
+ box-sizing: border-box;
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ padding: 0;
+ margin: 0;
+}
+
+button.jp-ToolbarButtonComponent {
+ background: var(--jp-layout-color1);
+ border: none;
+ box-sizing: border-box;
+ outline: none;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ padding: 0 6px;
+ margin: 0;
+ height: 24px;
+ border-radius: var(--jp-border-radius);
+ display: flex;
+ align-items: center;
+ text-align: center;
+ font-size: 14px;
+ min-width: unset;
+ min-height: unset;
+}
+
+button.jp-ToolbarButtonComponent:disabled {
+ opacity: 0.4;
+}
+
+button.jp-ToolbarButtonComponent > span {
+ padding: 0;
+ flex: 0 0 auto;
+}
+
+button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
+ font-size: var(--jp-ui-font-size1);
+ line-height: 100%;
+ padding-left: 2px;
+ color: var(--jp-ui-font-color1);
+ font-family: var(--jp-ui-font-family);
+}
+
+#jp-main-dock-panel[data-mode='single-document']
+ .jp-MainAreaWidget
+ > .jp-Toolbar.jp-Toolbar-micro {
+ padding: 0;
+ min-height: 0;
+}
+
+#jp-main-dock-panel[data-mode='single-document']
+ .jp-MainAreaWidget
+ > .jp-Toolbar {
+ border: none;
+ box-shadow: none;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-WindowedPanel-outer {
+ position: relative;
+ overflow-y: auto;
+}
+
+.jp-WindowedPanel-inner {
+ position: relative;
+}
+
+.jp-WindowedPanel-window {
+ position: absolute;
+ left: 0;
+ right: 0;
+ overflow: visible;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/* Sibling imports */
+
+body {
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+}
+
+/* Disable native link decoration styles everywhere outside of dialog boxes */
+a {
+ text-decoration: unset;
+ color: unset;
+}
+
+a:hover {
+ text-decoration: unset;
+ color: unset;
+}
+
+/* Accessibility for links inside dialog box text */
+.jp-Dialog-content a {
+ text-decoration: revert;
+ color: var(--jp-content-link-color);
+}
+
+.jp-Dialog-content a:hover {
+ text-decoration: revert;
+}
+
+/* Styles for ui-components */
+.jp-Button {
+ color: var(--jp-ui-font-color2);
+ border-radius: var(--jp-border-radius);
+ padding: 0 12px;
+ font-size: var(--jp-ui-font-size1);
+
+ /* Copy from blueprint 3 */
+ display: inline-flex;
+ flex-direction: row;
+ border: none;
+ cursor: pointer;
+ align-items: center;
+ justify-content: center;
+ text-align: left;
+ vertical-align: middle;
+ min-height: 30px;
+ min-width: 30px;
+}
+
+.jp-Button:disabled {
+ cursor: not-allowed;
+}
+
+.jp-Button:empty {
+ padding: 0 !important;
+}
+
+.jp-Button.jp-mod-small {
+ min-height: 24px;
+ min-width: 24px;
+ font-size: 12px;
+ padding: 0 7px;
+}
+
+/* Use our own theme for hover styles */
+.jp-Button.jp-mod-minimal:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-Button.jp-mod-minimal {
+ background: none;
+}
+
+.jp-InputGroup {
+ display: block;
+ position: relative;
+}
+
+.jp-InputGroup input {
+ box-sizing: border-box;
+ border: none;
+ border-radius: 0;
+ background-color: transparent;
+ color: var(--jp-ui-font-color0);
+ box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
+ padding-bottom: 0;
+ padding-top: 0;
+ padding-left: 10px;
+ padding-right: 28px;
+ position: relative;
+ width: 100%;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ font-size: 14px;
+ font-weight: 400;
+ height: 30px;
+ line-height: 30px;
+ outline: none;
+ vertical-align: middle;
+}
+
+.jp-InputGroup input:focus {
+ box-shadow: inset 0 0 0 var(--jp-border-width)
+ var(--jp-input-active-box-shadow-color),
+ inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
+}
+
+.jp-InputGroup input:disabled {
+ cursor: not-allowed;
+ resize: block;
+ background-color: var(--jp-layout-color2);
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroup input:disabled ~ span {
+ cursor: not-allowed;
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroup input::placeholder,
+input::placeholder {
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroupAction {
+ position: absolute;
+ bottom: 1px;
+ right: 0;
+ padding: 6px;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select {
+ background-color: initial;
+ border: none;
+ border-radius: 0;
+ box-shadow: none;
+ color: var(--jp-ui-font-color0);
+ display: block;
+ font-size: var(--jp-ui-font-size1);
+ font-family: var(--jp-ui-font-family);
+ height: 24px;
+ line-height: 14px;
+ padding: 0 25px 0 10px;
+ text-align: left;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select:disabled {
+ background-color: var(--jp-layout-color2);
+ color: var(--jp-ui-font-color2);
+ cursor: not-allowed;
+ resize: block;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
+ cursor: not-allowed;
+}
+
+/* Use our own theme for hover and option styles */
+/* stylelint-disable-next-line selector-max-type */
+.jp-HTMLSelect.jp-DefaultStyle select:hover,
+.jp-HTMLSelect.jp-DefaultStyle select > option {
+ background-color: var(--jp-layout-color2);
+ color: var(--jp-ui-font-color0);
+}
+
+select {
+ box-sizing: border-box;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-StatusBar-Widget {
+ display: flex;
+ align-items: center;
+ background: var(--jp-layout-color2);
+ min-height: var(--jp-statusbar-height);
+ justify-content: space-between;
+ padding: 0 10px;
+}
+
+.jp-StatusBar-Left {
+ display: flex;
+ align-items: center;
+ flex-direction: row;
+}
+
+.jp-StatusBar-Middle {
+ display: flex;
+ align-items: center;
+}
+
+.jp-StatusBar-Right {
+ display: flex;
+ align-items: center;
+ flex-direction: row-reverse;
+}
+
+.jp-StatusBar-Item {
+ max-height: var(--jp-statusbar-height);
+ margin: 0 2px;
+ height: var(--jp-statusbar-height);
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: var(--jp-ui-font-color1);
+ padding: 0 6px;
+}
+
+.jp-mod-highlighted:hover {
+ background-color: var(--jp-layout-color3);
+}
+
+.jp-mod-clicked {
+ background-color: var(--jp-brand-color1);
+}
+
+.jp-mod-clicked:hover {
+ background-color: var(--jp-brand-color0);
+}
+
+.jp-mod-clicked .jp-StatusBar-TextItem {
+ color: var(--jp-ui-inverse-font-color1);
+}
+
+.jp-StatusBar-HoverItem {
+ box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
+}
+
+.jp-StatusBar-TextItem {
+ font-size: var(--jp-ui-font-size1);
+ font-family: var(--jp-ui-font-family);
+ line-height: 24px;
+ color: var(--jp-ui-font-color1);
+}
+
+.jp-StatusBar-GroupItem {
+ display: flex;
+ align-items: center;
+ flex-direction: row;
+}
+
+.jp-Statusbar-ProgressCircle svg {
+ display: block;
+ margin: 0 auto;
+ width: 16px;
+ height: 24px;
+ align-self: normal;
+}
+
+.jp-Statusbar-ProgressCircle path {
+ fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-Statusbar-ProgressBar-progress-bar {
+ height: 10px;
+ width: 100px;
+ border: solid 0.25px var(--jp-brand-color2);
+ border-radius: 3px;
+ overflow: hidden;
+ align-self: center;
+}
+
+.jp-Statusbar-ProgressBar-progress-bar > div {
+ background-color: var(--jp-brand-color2);
+ background-image: linear-gradient(
+ -45deg,
+ rgba(255, 255, 255, 0.2) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.2) 50%,
+ rgba(255, 255, 255, 0.2) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-size: 40px 40px;
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: 12px;
+ line-height: 14px;
+ color: #fff;
+ text-align: center;
+ animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
+}
+
+.jp-Statusbar-ProgressBar-progress-bar p {
+ color: var(--jp-ui-font-color1);
+ font-family: var(--jp-ui-font-family);
+ font-size: var(--jp-ui-font-size1);
+ line-height: 10px;
+ width: 100px;
+}
+
+@keyframes jp-Statusbar-ExecutionTime-progress-bar {
+ 0% {
+ background-position: 0 0;
+ }
+
+ 100% {
+ background-position: 40px 40px;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-commandpalette-search-height: 28px;
+}
+
+/*-----------------------------------------------------------------------------
+| Overall styles
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette {
+ padding-bottom: 0;
+ color: var(--jp-ui-font-color1);
+ background: var(--jp-layout-color1);
+
+ /* This is needed so that all font sizing of children done in ems is
+ * relative to this base size */
+ font-size: var(--jp-ui-font-size1);
+}
+
+/*-----------------------------------------------------------------------------
+| Modal variant
+|----------------------------------------------------------------------------*/
+
+.jp-ModalCommandPalette {
+ position: absolute;
+ z-index: 10000;
+ top: 38px;
+ left: 30%;
+ margin: 0;
+ padding: 4px;
+ width: 40%;
+ box-shadow: var(--jp-elevation-z4);
+ border-radius: 4px;
+ background: var(--jp-layout-color0);
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette {
+ max-height: 40vh;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
+ display: none;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
+ display: none;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
+ margin-left: 4px;
+ margin-right: 4px;
+}
+
+.jp-ModalCommandPalette
+ .lm-CommandPalette
+ .lm-CommandPalette-item.lm-mod-disabled {
+ display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Search
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette-search {
+ padding: 4px;
+ background-color: var(--jp-layout-color1);
+ z-index: 2;
+}
+
+.lm-CommandPalette-wrapper {
+ overflow: overlay;
+ padding: 0 9px;
+ background-color: var(--jp-input-active-background);
+ height: 30px;
+ box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
+}
+
+.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
+ box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
+ inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
+}
+
+.jp-SearchIconGroup {
+ color: white;
+ background-color: var(--jp-brand-color1);
+ position: absolute;
+ top: 4px;
+ right: 4px;
+ padding: 5px 5px 1px;
+}
+
+.jp-SearchIconGroup svg {
+ height: 20px;
+ width: 20px;
+}
+
+.jp-SearchIconGroup .jp-icon3[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.lm-CommandPalette-input {
+ background: transparent;
+ width: calc(100% - 18px);
+ float: left;
+ border: none;
+ outline: none;
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color0);
+ line-height: var(--jp-private-commandpalette-search-height);
+}
+
+.lm-CommandPalette-input::-webkit-input-placeholder,
+.lm-CommandPalette-input::-moz-placeholder,
+.lm-CommandPalette-input:-ms-input-placeholder {
+ color: var(--jp-ui-font-color2);
+ font-size: var(--jp-ui-font-size1);
+}
+
+/*-----------------------------------------------------------------------------
+| Results
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette-header:first-child {
+ margin-top: 0;
+}
+
+.lm-CommandPalette-header {
+ border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
+ color: var(--jp-ui-font-color1);
+ cursor: pointer;
+ display: flex;
+ font-size: var(--jp-ui-font-size0);
+ font-weight: 600;
+ letter-spacing: 1px;
+ margin-top: 8px;
+ padding: 8px 0 8px 12px;
+ text-transform: uppercase;
+}
+
+.lm-CommandPalette-header.lm-mod-active {
+ background: var(--jp-layout-color2);
+}
+
+.lm-CommandPalette-header > mark {
+ background-color: transparent;
+ font-weight: bold;
+ color: var(--jp-ui-font-color1);
+}
+
+.lm-CommandPalette-item {
+ padding: 4px 12px 4px 4px;
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ font-weight: 400;
+ display: flex;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled {
+ color: var(--jp-ui-font-color2);
+}
+
+.lm-CommandPalette-item.lm-mod-active {
+ color: var(--jp-ui-inverse-font-color1);
+ background: var(--jp-brand-color1);
+}
+
+.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
+ color: var(--jp-ui-inverse-font-color0);
+}
+
+.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
+ fill: var(--jp-layout-color0);
+}
+
+.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
+ color: var(--jp-ui-inverse-font-color1);
+ background: var(--jp-brand-color1);
+}
+
+.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
+ background: var(--jp-layout-color2);
+}
+
+.lm-CommandPalette-itemContent {
+ overflow: hidden;
+}
+
+.lm-CommandPalette-itemLabel > mark {
+ color: var(--jp-ui-font-color0);
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled mark {
+ color: var(--jp-ui-font-color2);
+}
+
+.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
+ margin: 0 4px 0 0;
+ position: relative;
+ width: 16px;
+ top: 2px;
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
+ opacity: 0.6;
+}
+
+.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
+ flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemCaption {
+ display: none;
+}
+
+.lm-CommandPalette-content {
+ background-color: var(--jp-layout-color1);
+}
+
+.lm-CommandPalette-content:empty::after {
+ content: 'No results';
+ margin: auto;
+ margin-top: 20px;
+ width: 100px;
+ display: block;
+ font-size: var(--jp-ui-font-size2);
+ font-family: var(--jp-ui-font-family);
+ font-weight: lighter;
+}
+
+.lm-CommandPalette-emptyMessage {
+ text-align: center;
+ margin-top: 24px;
+ line-height: 1.32;
+ padding: 0 8px;
+ color: var(--jp-content-font-color3);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Dialog {
+ position: absolute;
+ z-index: 10000;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ top: 0;
+ left: 0;
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ background: var(--jp-dialog-background);
+}
+
+.jp-Dialog-content {
+ display: flex;
+ flex-direction: column;
+ margin-left: auto;
+ margin-right: auto;
+ background: var(--jp-layout-color1);
+ padding: 24px 24px 12px;
+ min-width: 300px;
+ min-height: 150px;
+ max-width: 1000px;
+ max-height: 500px;
+ box-sizing: border-box;
+ box-shadow: var(--jp-elevation-z20);
+ word-wrap: break-word;
+ border-radius: var(--jp-border-radius);
+
+ /* This is needed so that all font sizing of children done in ems is
+ * relative to this base size */
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color1);
+ resize: both;
+}
+
+.jp-Dialog-content.jp-Dialog-content-small {
+ max-width: 500px;
+}
+
+.jp-Dialog-button {
+ overflow: visible;
+}
+
+button.jp-Dialog-button:focus {
+ outline: 1px solid var(--jp-brand-color1);
+ outline-offset: 4px;
+ -moz-outline-radius: 0;
+}
+
+button.jp-Dialog-button:focus::-moz-focus-inner {
+ border: 0;
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
+button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
+button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
+ outline-offset: 4px;
+ -moz-outline-radius: 0;
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
+ outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
+ outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
+ outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
+}
+
+button.jp-Dialog-close-button {
+ padding: 0;
+ height: 100%;
+ min-width: unset;
+ min-height: unset;
+}
+
+.jp-Dialog-header {
+ display: flex;
+ justify-content: space-between;
+ flex: 0 0 auto;
+ padding-bottom: 12px;
+ font-size: var(--jp-ui-font-size3);
+ font-weight: 400;
+ color: var(--jp-ui-font-color1);
+}
+
+.jp-Dialog-body {
+ display: flex;
+ flex-direction: column;
+ flex: 1 1 auto;
+ font-size: var(--jp-ui-font-size1);
+ background: var(--jp-layout-color1);
+ color: var(--jp-ui-font-color1);
+ overflow: auto;
+}
+
+.jp-Dialog-footer {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ flex: 0 0 auto;
+ margin-left: -12px;
+ margin-right: -12px;
+ padding: 12px;
+}
+
+.jp-Dialog-checkbox {
+ padding-right: 5px;
+}
+
+.jp-Dialog-checkbox > input:focus-visible {
+ outline: 1px solid var(--jp-input-active-border-color);
+ outline-offset: 1px;
+}
+
+.jp-Dialog-spacer {
+ flex: 1 1 auto;
+}
+
+.jp-Dialog-title {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.jp-Dialog-body > .jp-select-wrapper {
+ width: 100%;
+}
+
+.jp-Dialog-body > button {
+ padding: 0 16px;
+}
+
+.jp-Dialog-body > label {
+ line-height: 1.4;
+ color: var(--jp-ui-font-color0);
+}
+
+.jp-Dialog-button.jp-mod-styled:not(:last-child) {
+ margin-right: 12px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-Input-Boolean-Dialog {
+ flex-direction: row-reverse;
+ align-items: end;
+ width: 100%;
+}
+
+.jp-Input-Boolean-Dialog > label {
+ flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-MainAreaWidget > :focus {
+ outline: none;
+}
+
+.jp-MainAreaWidget .jp-MainAreaWidget-error {
+ padding: 6px;
+}
+
+.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
+ width: auto;
+ padding: 10px;
+ background: var(--jp-error-color3);
+ border: var(--jp-border-width) solid var(--jp-error-color1);
+ border-radius: var(--jp-border-radius);
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/**
+ * google-material-color v1.2.6
+ * https://github.com/danlevan/google-material-color
+ */
+:root {
+ --md-red-50: #ffebee;
+ --md-red-100: #ffcdd2;
+ --md-red-200: #ef9a9a;
+ --md-red-300: #e57373;
+ --md-red-400: #ef5350;
+ --md-red-500: #f44336;
+ --md-red-600: #e53935;
+ --md-red-700: #d32f2f;
+ --md-red-800: #c62828;
+ --md-red-900: #b71c1c;
+ --md-red-A100: #ff8a80;
+ --md-red-A200: #ff5252;
+ --md-red-A400: #ff1744;
+ --md-red-A700: #d50000;
+ --md-pink-50: #fce4ec;
+ --md-pink-100: #f8bbd0;
+ --md-pink-200: #f48fb1;
+ --md-pink-300: #f06292;
+ --md-pink-400: #ec407a;
+ --md-pink-500: #e91e63;
+ --md-pink-600: #d81b60;
+ --md-pink-700: #c2185b;
+ --md-pink-800: #ad1457;
+ --md-pink-900: #880e4f;
+ --md-pink-A100: #ff80ab;
+ --md-pink-A200: #ff4081;
+ --md-pink-A400: #f50057;
+ --md-pink-A700: #c51162;
+ --md-purple-50: #f3e5f5;
+ --md-purple-100: #e1bee7;
+ --md-purple-200: #ce93d8;
+ --md-purple-300: #ba68c8;
+ --md-purple-400: #ab47bc;
+ --md-purple-500: #9c27b0;
+ --md-purple-600: #8e24aa;
+ --md-purple-700: #7b1fa2;
+ --md-purple-800: #6a1b9a;
+ --md-purple-900: #4a148c;
+ --md-purple-A100: #ea80fc;
+ --md-purple-A200: #e040fb;
+ --md-purple-A400: #d500f9;
+ --md-purple-A700: #a0f;
+ --md-deep-purple-50: #ede7f6;
+ --md-deep-purple-100: #d1c4e9;
+ --md-deep-purple-200: #b39ddb;
+ --md-deep-purple-300: #9575cd;
+ --md-deep-purple-400: #7e57c2;
+ --md-deep-purple-500: #673ab7;
+ --md-deep-purple-600: #5e35b1;
+ --md-deep-purple-700: #512da8;
+ --md-deep-purple-800: #4527a0;
+ --md-deep-purple-900: #311b92;
+ --md-deep-purple-A100: #b388ff;
+ --md-deep-purple-A200: #7c4dff;
+ --md-deep-purple-A400: #651fff;
+ --md-deep-purple-A700: #6200ea;
+ --md-indigo-50: #e8eaf6;
+ --md-indigo-100: #c5cae9;
+ --md-indigo-200: #9fa8da;
+ --md-indigo-300: #7986cb;
+ --md-indigo-400: #5c6bc0;
+ --md-indigo-500: #3f51b5;
+ --md-indigo-600: #3949ab;
+ --md-indigo-700: #303f9f;
+ --md-indigo-800: #283593;
+ --md-indigo-900: #1a237e;
+ --md-indigo-A100: #8c9eff;
+ --md-indigo-A200: #536dfe;
+ --md-indigo-A400: #3d5afe;
+ --md-indigo-A700: #304ffe;
+ --md-blue-50: #e3f2fd;
+ --md-blue-100: #bbdefb;
+ --md-blue-200: #90caf9;
+ --md-blue-300: #64b5f6;
+ --md-blue-400: #42a5f5;
+ --md-blue-500: #2196f3;
+ --md-blue-600: #1e88e5;
+ --md-blue-700: #1976d2;
+ --md-blue-800: #1565c0;
+ --md-blue-900: #0d47a1;
+ --md-blue-A100: #82b1ff;
+ --md-blue-A200: #448aff;
+ --md-blue-A400: #2979ff;
+ --md-blue-A700: #2962ff;
+ --md-light-blue-50: #e1f5fe;
+ --md-light-blue-100: #b3e5fc;
+ --md-light-blue-200: #81d4fa;
+ --md-light-blue-300: #4fc3f7;
+ --md-light-blue-400: #29b6f6;
+ --md-light-blue-500: #03a9f4;
+ --md-light-blue-600: #039be5;
+ --md-light-blue-700: #0288d1;
+ --md-light-blue-800: #0277bd;
+ --md-light-blue-900: #01579b;
+ --md-light-blue-A100: #80d8ff;
+ --md-light-blue-A200: #40c4ff;
+ --md-light-blue-A400: #00b0ff;
+ --md-light-blue-A700: #0091ea;
+ --md-cyan-50: #e0f7fa;
+ --md-cyan-100: #b2ebf2;
+ --md-cyan-200: #80deea;
+ --md-cyan-300: #4dd0e1;
+ --md-cyan-400: #26c6da;
+ --md-cyan-500: #00bcd4;
+ --md-cyan-600: #00acc1;
+ --md-cyan-700: #0097a7;
+ --md-cyan-800: #00838f;
+ --md-cyan-900: #006064;
+ --md-cyan-A100: #84ffff;
+ --md-cyan-A200: #18ffff;
+ --md-cyan-A400: #00e5ff;
+ --md-cyan-A700: #00b8d4;
+ --md-teal-50: #e0f2f1;
+ --md-teal-100: #b2dfdb;
+ --md-teal-200: #80cbc4;
+ --md-teal-300: #4db6ac;
+ --md-teal-400: #26a69a;
+ --md-teal-500: #009688;
+ --md-teal-600: #00897b;
+ --md-teal-700: #00796b;
+ --md-teal-800: #00695c;
+ --md-teal-900: #004d40;
+ --md-teal-A100: #a7ffeb;
+ --md-teal-A200: #64ffda;
+ --md-teal-A400: #1de9b6;
+ --md-teal-A700: #00bfa5;
+ --md-green-50: #e8f5e9;
+ --md-green-100: #c8e6c9;
+ --md-green-200: #a5d6a7;
+ --md-green-300: #81c784;
+ --md-green-400: #66bb6a;
+ --md-green-500: #4caf50;
+ --md-green-600: #43a047;
+ --md-green-700: #388e3c;
+ --md-green-800: #2e7d32;
+ --md-green-900: #1b5e20;
+ --md-green-A100: #b9f6ca;
+ --md-green-A200: #69f0ae;
+ --md-green-A400: #00e676;
+ --md-green-A700: #00c853;
+ --md-light-green-50: #f1f8e9;
+ --md-light-green-100: #dcedc8;
+ --md-light-green-200: #c5e1a5;
+ --md-light-green-300: #aed581;
+ --md-light-green-400: #9ccc65;
+ --md-light-green-500: #8bc34a;
+ --md-light-green-600: #7cb342;
+ --md-light-green-700: #689f38;
+ --md-light-green-800: #558b2f;
+ --md-light-green-900: #33691e;
+ --md-light-green-A100: #ccff90;
+ --md-light-green-A200: #b2ff59;
+ --md-light-green-A400: #76ff03;
+ --md-light-green-A700: #64dd17;
+ --md-lime-50: #f9fbe7;
+ --md-lime-100: #f0f4c3;
+ --md-lime-200: #e6ee9c;
+ --md-lime-300: #dce775;
+ --md-lime-400: #d4e157;
+ --md-lime-500: #cddc39;
+ --md-lime-600: #c0ca33;
+ --md-lime-700: #afb42b;
+ --md-lime-800: #9e9d24;
+ --md-lime-900: #827717;
+ --md-lime-A100: #f4ff81;
+ --md-lime-A200: #eeff41;
+ --md-lime-A400: #c6ff00;
+ --md-lime-A700: #aeea00;
+ --md-yellow-50: #fffde7;
+ --md-yellow-100: #fff9c4;
+ --md-yellow-200: #fff59d;
+ --md-yellow-300: #fff176;
+ --md-yellow-400: #ffee58;
+ --md-yellow-500: #ffeb3b;
+ --md-yellow-600: #fdd835;
+ --md-yellow-700: #fbc02d;
+ --md-yellow-800: #f9a825;
+ --md-yellow-900: #f57f17;
+ --md-yellow-A100: #ffff8d;
+ --md-yellow-A200: #ff0;
+ --md-yellow-A400: #ffea00;
+ --md-yellow-A700: #ffd600;
+ --md-amber-50: #fff8e1;
+ --md-amber-100: #ffecb3;
+ --md-amber-200: #ffe082;
+ --md-amber-300: #ffd54f;
+ --md-amber-400: #ffca28;
+ --md-amber-500: #ffc107;
+ --md-amber-600: #ffb300;
+ --md-amber-700: #ffa000;
+ --md-amber-800: #ff8f00;
+ --md-amber-900: #ff6f00;
+ --md-amber-A100: #ffe57f;
+ --md-amber-A200: #ffd740;
+ --md-amber-A400: #ffc400;
+ --md-amber-A700: #ffab00;
+ --md-orange-50: #fff3e0;
+ --md-orange-100: #ffe0b2;
+ --md-orange-200: #ffcc80;
+ --md-orange-300: #ffb74d;
+ --md-orange-400: #ffa726;
+ --md-orange-500: #ff9800;
+ --md-orange-600: #fb8c00;
+ --md-orange-700: #f57c00;
+ --md-orange-800: #ef6c00;
+ --md-orange-900: #e65100;
+ --md-orange-A100: #ffd180;
+ --md-orange-A200: #ffab40;
+ --md-orange-A400: #ff9100;
+ --md-orange-A700: #ff6d00;
+ --md-deep-orange-50: #fbe9e7;
+ --md-deep-orange-100: #ffccbc;
+ --md-deep-orange-200: #ffab91;
+ --md-deep-orange-300: #ff8a65;
+ --md-deep-orange-400: #ff7043;
+ --md-deep-orange-500: #ff5722;
+ --md-deep-orange-600: #f4511e;
+ --md-deep-orange-700: #e64a19;
+ --md-deep-orange-800: #d84315;
+ --md-deep-orange-900: #bf360c;
+ --md-deep-orange-A100: #ff9e80;
+ --md-deep-orange-A200: #ff6e40;
+ --md-deep-orange-A400: #ff3d00;
+ --md-deep-orange-A700: #dd2c00;
+ --md-brown-50: #efebe9;
+ --md-brown-100: #d7ccc8;
+ --md-brown-200: #bcaaa4;
+ --md-brown-300: #a1887f;
+ --md-brown-400: #8d6e63;
+ --md-brown-500: #795548;
+ --md-brown-600: #6d4c41;
+ --md-brown-700: #5d4037;
+ --md-brown-800: #4e342e;
+ --md-brown-900: #3e2723;
+ --md-grey-50: #fafafa;
+ --md-grey-100: #f5f5f5;
+ --md-grey-200: #eee;
+ --md-grey-300: #e0e0e0;
+ --md-grey-400: #bdbdbd;
+ --md-grey-500: #9e9e9e;
+ --md-grey-600: #757575;
+ --md-grey-700: #616161;
+ --md-grey-800: #424242;
+ --md-grey-900: #212121;
+ --md-blue-grey-50: #eceff1;
+ --md-blue-grey-100: #cfd8dc;
+ --md-blue-grey-200: #b0bec5;
+ --md-blue-grey-300: #90a4ae;
+ --md-blue-grey-400: #78909c;
+ --md-blue-grey-500: #607d8b;
+ --md-blue-grey-600: #546e7a;
+ --md-blue-grey-700: #455a64;
+ --md-blue-grey-800: #37474f;
+ --md-blue-grey-900: #263238;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| RenderedText
+|----------------------------------------------------------------------------*/
+
+:root {
+ /* This is the padding value to fill the gaps between lines containing spans with background color. */
+ --jp-private-code-span-padding: calc(
+ (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
+ );
+}
+
+.jp-RenderedText {
+ text-align: left;
+ padding-left: var(--jp-code-padding);
+ line-height: var(--jp-code-line-height);
+ font-family: var(--jp-code-font-family);
+}
+
+.jp-RenderedText pre,
+.jp-RenderedJavaScript pre,
+.jp-RenderedHTMLCommon pre {
+ color: var(--jp-content-font-color1);
+ font-size: var(--jp-code-font-size);
+ border: none;
+ margin: 0;
+ padding: 0;
+}
+
+.jp-RenderedText pre a:link {
+ text-decoration: none;
+ color: var(--jp-content-link-color);
+}
+
+.jp-RenderedText pre a:hover {
+ text-decoration: underline;
+ color: var(--jp-content-link-color);
+}
+
+.jp-RenderedText pre a:visited {
+ text-decoration: none;
+ color: var(--jp-content-link-color);
+}
+
+/* console foregrounds and backgrounds */
+.jp-RenderedText pre .ansi-black-fg {
+ color: #3e424d;
+}
+
+.jp-RenderedText pre .ansi-red-fg {
+ color: #e75c58;
+}
+
+.jp-RenderedText pre .ansi-green-fg {
+ color: #00a250;
+}
+
+.jp-RenderedText pre .ansi-yellow-fg {
+ color: #ddb62b;
+}
+
+.jp-RenderedText pre .ansi-blue-fg {
+ color: #208ffb;
+}
+
+.jp-RenderedText pre .ansi-magenta-fg {
+ color: #d160c4;
+}
+
+.jp-RenderedText pre .ansi-cyan-fg {
+ color: #60c6c8;
+}
+
+.jp-RenderedText pre .ansi-white-fg {
+ color: #c5c1b4;
+}
+
+.jp-RenderedText pre .ansi-black-bg {
+ background-color: #3e424d;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-red-bg {
+ background-color: #e75c58;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-green-bg {
+ background-color: #00a250;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-yellow-bg {
+ background-color: #ddb62b;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-blue-bg {
+ background-color: #208ffb;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-magenta-bg {
+ background-color: #d160c4;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-cyan-bg {
+ background-color: #60c6c8;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-white-bg {
+ background-color: #c5c1b4;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-black-intense-fg {
+ color: #282c36;
+}
+
+.jp-RenderedText pre .ansi-red-intense-fg {
+ color: #b22b31;
+}
+
+.jp-RenderedText pre .ansi-green-intense-fg {
+ color: #007427;
+}
+
+.jp-RenderedText pre .ansi-yellow-intense-fg {
+ color: #b27d12;
+}
+
+.jp-RenderedText pre .ansi-blue-intense-fg {
+ color: #0065ca;
+}
+
+.jp-RenderedText pre .ansi-magenta-intense-fg {
+ color: #a03196;
+}
+
+.jp-RenderedText pre .ansi-cyan-intense-fg {
+ color: #258f8f;
+}
+
+.jp-RenderedText pre .ansi-white-intense-fg {
+ color: #a1a6b2;
+}
+
+.jp-RenderedText pre .ansi-black-intense-bg {
+ background-color: #282c36;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-red-intense-bg {
+ background-color: #b22b31;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-green-intense-bg {
+ background-color: #007427;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-yellow-intense-bg {
+ background-color: #b27d12;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-blue-intense-bg {
+ background-color: #0065ca;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-magenta-intense-bg {
+ background-color: #a03196;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-cyan-intense-bg {
+ background-color: #258f8f;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-white-intense-bg {
+ background-color: #a1a6b2;
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-default-inverse-fg {
+ color: var(--jp-ui-inverse-font-color0);
+}
+
+.jp-RenderedText pre .ansi-default-inverse-bg {
+ background-color: var(--jp-inverse-layout-color0);
+ padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-bold {
+ font-weight: bold;
+}
+
+.jp-RenderedText pre .ansi-underline {
+ text-decoration: underline;
+}
+
+.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
+ background: var(--jp-rendermime-error-background);
+ padding-top: var(--jp-code-padding);
+}
+
+/*-----------------------------------------------------------------------------
+| RenderedLatex
+|----------------------------------------------------------------------------*/
+
+.jp-RenderedLatex {
+ color: var(--jp-content-font-color1);
+ font-size: var(--jp-content-font-size1);
+ line-height: var(--jp-content-line-height);
+}
+
+/* Left-justify outputs.*/
+.jp-OutputArea-output.jp-RenderedLatex {
+ padding: var(--jp-code-padding);
+ text-align: left;
+}
+
+/*-----------------------------------------------------------------------------
+| RenderedHTML
+|----------------------------------------------------------------------------*/
+
+.jp-RenderedHTMLCommon {
+ color: var(--jp-content-font-color1);
+ font-family: var(--jp-content-font-family);
+ font-size: var(--jp-content-font-size1);
+ line-height: var(--jp-content-line-height);
+
+ /* Give a bit more R padding on Markdown text to keep line lengths reasonable */
+ padding-right: 20px;
+}
+
+.jp-RenderedHTMLCommon em {
+ font-style: italic;
+}
+
+.jp-RenderedHTMLCommon strong {
+ font-weight: bold;
+}
+
+.jp-RenderedHTMLCommon u {
+ text-decoration: underline;
+}
+
+.jp-RenderedHTMLCommon a:link {
+ text-decoration: none;
+ color: var(--jp-content-link-color);
+}
+
+.jp-RenderedHTMLCommon a:hover {
+ text-decoration: underline;
+ color: var(--jp-content-link-color);
+}
+
+.jp-RenderedHTMLCommon a:visited {
+ text-decoration: none;
+ color: var(--jp-content-link-color);
+}
+
+/* Headings */
+
+.jp-RenderedHTMLCommon h1,
+.jp-RenderedHTMLCommon h2,
+.jp-RenderedHTMLCommon h3,
+.jp-RenderedHTMLCommon h4,
+.jp-RenderedHTMLCommon h5,
+.jp-RenderedHTMLCommon h6 {
+ line-height: var(--jp-content-heading-line-height);
+ font-weight: var(--jp-content-heading-font-weight);
+ font-style: normal;
+ margin: var(--jp-content-heading-margin-top) 0
+ var(--jp-content-heading-margin-bottom) 0;
+}
+
+.jp-RenderedHTMLCommon h1:first-child,
+.jp-RenderedHTMLCommon h2:first-child,
+.jp-RenderedHTMLCommon h3:first-child,
+.jp-RenderedHTMLCommon h4:first-child,
+.jp-RenderedHTMLCommon h5:first-child,
+.jp-RenderedHTMLCommon h6:first-child {
+ margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
+}
+
+.jp-RenderedHTMLCommon h1:last-child,
+.jp-RenderedHTMLCommon h2:last-child,
+.jp-RenderedHTMLCommon h3:last-child,
+.jp-RenderedHTMLCommon h4:last-child,
+.jp-RenderedHTMLCommon h5:last-child,
+.jp-RenderedHTMLCommon h6:last-child {
+ margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
+}
+
+.jp-RenderedHTMLCommon h1 {
+ font-size: var(--jp-content-font-size5);
+}
+
+.jp-RenderedHTMLCommon h2 {
+ font-size: var(--jp-content-font-size4);
+}
+
+.jp-RenderedHTMLCommon h3 {
+ font-size: var(--jp-content-font-size3);
+}
+
+.jp-RenderedHTMLCommon h4 {
+ font-size: var(--jp-content-font-size2);
+}
+
+.jp-RenderedHTMLCommon h5 {
+ font-size: var(--jp-content-font-size1);
+}
+
+.jp-RenderedHTMLCommon h6 {
+ font-size: var(--jp-content-font-size0);
+}
+
+/* Lists */
+
+/* stylelint-disable selector-max-type, selector-max-compound-selectors */
+
+.jp-RenderedHTMLCommon ul:not(.list-inline),
+.jp-RenderedHTMLCommon ol:not(.list-inline) {
+ padding-left: 2em;
+}
+
+.jp-RenderedHTMLCommon ul {
+ list-style: disc;
+}
+
+.jp-RenderedHTMLCommon ul ul {
+ list-style: square;
+}
+
+.jp-RenderedHTMLCommon ul ul ul {
+ list-style: circle;
+}
+
+.jp-RenderedHTMLCommon ol {
+ list-style: decimal;
+}
+
+.jp-RenderedHTMLCommon ol ol {
+ list-style: upper-alpha;
+}
+
+.jp-RenderedHTMLCommon ol ol ol {
+ list-style: lower-alpha;
+}
+
+.jp-RenderedHTMLCommon ol ol ol ol {
+ list-style: lower-roman;
+}
+
+.jp-RenderedHTMLCommon ol ol ol ol ol {
+ list-style: decimal;
+}
+
+.jp-RenderedHTMLCommon ol,
+.jp-RenderedHTMLCommon ul {
+ margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon ul ul,
+.jp-RenderedHTMLCommon ul ol,
+.jp-RenderedHTMLCommon ol ul,
+.jp-RenderedHTMLCommon ol ol {
+ margin-bottom: 0;
+}
+
+/* stylelint-enable selector-max-type, selector-max-compound-selectors */
+
+.jp-RenderedHTMLCommon hr {
+ color: var(--jp-border-color2);
+ background-color: var(--jp-border-color1);
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon > pre {
+ margin: 1.5em 2em;
+}
+
+.jp-RenderedHTMLCommon pre,
+.jp-RenderedHTMLCommon code {
+ border: 0;
+ background-color: var(--jp-layout-color0);
+ color: var(--jp-content-font-color1);
+ font-family: var(--jp-code-font-family);
+ font-size: inherit;
+ line-height: var(--jp-code-line-height);
+ padding: 0;
+ white-space: pre-wrap;
+}
+
+.jp-RenderedHTMLCommon :not(pre) > code {
+ background-color: var(--jp-layout-color2);
+ padding: 1px 5px;
+}
+
+/* Tables */
+
+.jp-RenderedHTMLCommon table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ border: none;
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ table-layout: fixed;
+ margin-left: auto;
+ margin-bottom: 1em;
+ margin-right: auto;
+}
+
+.jp-RenderedHTMLCommon thead {
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
+ vertical-align: bottom;
+}
+
+.jp-RenderedHTMLCommon td,
+.jp-RenderedHTMLCommon th,
+.jp-RenderedHTMLCommon tr {
+ vertical-align: middle;
+ padding: 0.5em;
+ line-height: normal;
+ white-space: normal;
+ max-width: none;
+ border: none;
+}
+
+.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
+.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
+ max-width: none;
+}
+
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
+ text-align: right;
+}
+
+.jp-RenderedHTMLCommon th {
+ font-weight: bold;
+}
+
+.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
+ background: var(--jp-layout-color0);
+}
+
+.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
+ background: var(--jp-rendermime-table-row-background);
+}
+
+.jp-RenderedHTMLCommon tbody tr:hover {
+ background: var(--jp-rendermime-table-row-hover-background);
+}
+
+.jp-RenderedHTMLCommon p {
+ text-align: left;
+ margin: 0;
+ margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon img {
+ -moz-force-broken-image-icon: 1;
+}
+
+/* Restrict to direct children as other images could be nested in other content. */
+.jp-RenderedHTMLCommon > img {
+ display: block;
+ margin-left: 0;
+ margin-right: 0;
+ margin-bottom: 1em;
+}
+
+/* Change color behind transparent images if they need it... */
+[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
+ background-color: var(--jp-inverse-layout-color1);
+}
+
+[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
+ background-color: var(--jp-inverse-layout-color1);
+}
+
+.jp-RenderedHTMLCommon img,
+.jp-RenderedImage img,
+.jp-RenderedHTMLCommon svg,
+.jp-RenderedSVG svg {
+ max-width: 100%;
+ height: auto;
+}
+
+.jp-RenderedHTMLCommon img.jp-mod-unconfined,
+.jp-RenderedImage img.jp-mod-unconfined,
+.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
+.jp-RenderedSVG svg.jp-mod-unconfined {
+ max-width: none;
+}
+
+.jp-RenderedHTMLCommon .alert {
+ padding: var(--jp-notebook-padding);
+ border: var(--jp-border-width) solid transparent;
+ border-radius: var(--jp-border-radius);
+ margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon .alert-info {
+ color: var(--jp-info-color0);
+ background-color: var(--jp-info-color3);
+ border-color: var(--jp-info-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-info hr {
+ border-color: var(--jp-info-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-info > p:last-child,
+.jp-RenderedHTMLCommon .alert-info > ul:last-child {
+ margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-warning {
+ color: var(--jp-warn-color0);
+ background-color: var(--jp-warn-color3);
+ border-color: var(--jp-warn-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-warning hr {
+ border-color: var(--jp-warn-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-warning > p:last-child,
+.jp-RenderedHTMLCommon .alert-warning > ul:last-child {
+ margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-success {
+ color: var(--jp-success-color0);
+ background-color: var(--jp-success-color3);
+ border-color: var(--jp-success-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-success hr {
+ border-color: var(--jp-success-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-success > p:last-child,
+.jp-RenderedHTMLCommon .alert-success > ul:last-child {
+ margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-danger {
+ color: var(--jp-error-color0);
+ background-color: var(--jp-error-color3);
+ border-color: var(--jp-error-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-danger hr {
+ border-color: var(--jp-error-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-danger > p:last-child,
+.jp-RenderedHTMLCommon .alert-danger > ul:last-child {
+ margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon blockquote {
+ margin: 1em 2em;
+ padding: 0 1em;
+ border-left: 5px solid var(--jp-border-color2);
+}
+
+a.jp-InternalAnchorLink {
+ visibility: hidden;
+ margin-left: 8px;
+ color: var(--md-blue-800);
+}
+
+h1:hover .jp-InternalAnchorLink,
+h2:hover .jp-InternalAnchorLink,
+h3:hover .jp-InternalAnchorLink,
+h4:hover .jp-InternalAnchorLink,
+h5:hover .jp-InternalAnchorLink,
+h6:hover .jp-InternalAnchorLink {
+ visibility: visible;
+}
+
+.jp-RenderedHTMLCommon kbd {
+ background-color: var(--jp-rendermime-table-row-background);
+ border: 1px solid var(--jp-border-color0);
+ border-bottom-color: var(--jp-border-color2);
+ border-radius: 3px;
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
+ display: inline-block;
+ font-size: var(--jp-ui-font-size0);
+ line-height: 1em;
+ padding: 0.2em 0.5em;
+}
+
+/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
+ * At the bottom of cells this is a bit too much as there is also spacing
+ * between cells. Going all the way to 0 gets too tight between markdown and
+ * code cells.
+ */
+.jp-RenderedHTMLCommon > *:last-child {
+ margin-bottom: 0.5em;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-cursor-backdrop {
+ position: fixed;
+ width: 200px;
+ height: 200px;
+ margin-top: -100px;
+ margin-left: -100px;
+ will-change: transform;
+ z-index: 100;
+}
+
+.lm-mod-drag-image {
+ will-change: transform;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-lineFormSearch {
+ padding: 4px 12px;
+ background-color: var(--jp-layout-color2);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ z-index: 2;
+ font-size: var(--jp-ui-font-size1);
+}
+
+.jp-lineFormCaption {
+ font-size: var(--jp-ui-font-size0);
+ line-height: var(--jp-ui-font-size1);
+ margin-top: 4px;
+ color: var(--jp-ui-font-color0);
+}
+
+.jp-baseLineForm {
+ border: none;
+ border-radius: 0;
+ position: absolute;
+ background-size: 16px;
+ background-repeat: no-repeat;
+ background-position: center;
+ outline: none;
+}
+
+.jp-lineFormButtonContainer {
+ top: 4px;
+ right: 8px;
+ height: 24px;
+ padding: 0 12px;
+ width: 12px;
+}
+
+.jp-lineFormButtonIcon {
+ top: 0;
+ right: 0;
+ background-color: var(--jp-brand-color1);
+ height: 100%;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 4px 6px;
+}
+
+.jp-lineFormButton {
+ top: 0;
+ right: 0;
+ background-color: transparent;
+ height: 100%;
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.jp-lineFormWrapper {
+ overflow: hidden;
+ padding: 0 8px;
+ border: 1px solid var(--jp-border-color0);
+ background-color: var(--jp-input-active-background);
+ height: 22px;
+}
+
+.jp-lineFormWrapperFocusWithin {
+ border: var(--jp-border-width) solid var(--md-blue-500);
+ box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-lineFormInput {
+ background: transparent;
+ width: 200px;
+ height: 100%;
+ border: none;
+ outline: none;
+ color: var(--jp-ui-font-color0);
+ line-height: 28px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-JSONEditor {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.jp-JSONEditor-host {
+ flex: 1 1 auto;
+ border: var(--jp-border-width) solid var(--jp-input-border-color);
+ border-radius: 0;
+ background: var(--jp-layout-color0);
+ min-height: 50px;
+ padding: 1px;
+}
+
+.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
+ border-color: red;
+ outline-color: red;
+}
+
+.jp-JSONEditor-header {
+ display: flex;
+ flex: 1 0 auto;
+ padding: 0 0 0 12px;
+}
+
+.jp-JSONEditor-header label {
+ flex: 0 0 auto;
+}
+
+.jp-JSONEditor-commitButton {
+ height: 16px;
+ width: 16px;
+ background-size: 18px;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+
+.jp-JSONEditor-host.jp-mod-focused {
+ background-color: var(--jp-input-active-background);
+ border: 1px solid var(--jp-input-active-border-color);
+ box-shadow: var(--jp-input-box-shadow);
+}
+
+.jp-Editor.jp-mod-dropTarget {
+ border: var(--jp-border-width) solid var(--jp-input-active-border-color);
+ box-shadow: var(--jp-input-box-shadow);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+.jp-DocumentSearch-input {
+ border: none;
+ outline: none;
+ color: var(--jp-ui-font-color0);
+ font-size: var(--jp-ui-font-size1);
+ background-color: var(--jp-layout-color0);
+ font-family: var(--jp-ui-font-family);
+ padding: 2px 1px;
+ resize: none;
+}
+
+.jp-DocumentSearch-overlay {
+ position: absolute;
+ background-color: var(--jp-toolbar-background);
+ border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ border-left: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ top: 0;
+ right: 0;
+ z-index: 7;
+ min-width: 405px;
+ padding: 2px;
+ font-size: var(--jp-ui-font-size1);
+
+ --jp-private-document-search-button-height: 20px;
+}
+
+.jp-DocumentSearch-overlay button {
+ background-color: var(--jp-toolbar-background);
+ outline: 0;
+}
+
+.jp-DocumentSearch-overlay button:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-overlay button:active {
+ background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-overlay-row {
+ display: flex;
+ align-items: center;
+ margin-bottom: 2px;
+}
+
+.jp-DocumentSearch-button-content {
+ display: inline-block;
+ cursor: pointer;
+ box-sizing: border-box;
+ width: 100%;
+ height: 100%;
+}
+
+.jp-DocumentSearch-button-content svg {
+ width: 100%;
+ height: 100%;
+}
+
+.jp-DocumentSearch-input-wrapper {
+ border: var(--jp-border-width) solid var(--jp-border-color0);
+ display: flex;
+ background-color: var(--jp-layout-color0);
+ margin: 2px;
+}
+
+.jp-DocumentSearch-input-wrapper:focus-within {
+ border-color: var(--jp-cell-editor-active-border-color);
+}
+
+.jp-DocumentSearch-toggle-wrapper,
+.jp-DocumentSearch-button-wrapper {
+ all: initial;
+ overflow: hidden;
+ display: inline-block;
+ border: none;
+ box-sizing: border-box;
+}
+
+.jp-DocumentSearch-toggle-wrapper {
+ width: 14px;
+ height: 14px;
+}
+
+.jp-DocumentSearch-button-wrapper {
+ width: var(--jp-private-document-search-button-height);
+ height: var(--jp-private-document-search-button-height);
+}
+
+.jp-DocumentSearch-toggle-wrapper:focus,
+.jp-DocumentSearch-button-wrapper:focus {
+ outline: var(--jp-border-width) solid
+ var(--jp-cell-editor-active-border-color);
+ outline-offset: -1px;
+}
+
+.jp-DocumentSearch-toggle-wrapper,
+.jp-DocumentSearch-button-wrapper,
+.jp-DocumentSearch-button-content:focus {
+ outline: none;
+}
+
+.jp-DocumentSearch-toggle-placeholder {
+ width: 5px;
+}
+
+.jp-DocumentSearch-input-button::before {
+ display: block;
+ padding-top: 100%;
+}
+
+.jp-DocumentSearch-input-button-off {
+ opacity: var(--jp-search-toggle-off-opacity);
+}
+
+.jp-DocumentSearch-input-button-off:hover {
+ opacity: var(--jp-search-toggle-hover-opacity);
+}
+
+.jp-DocumentSearch-input-button-on {
+ opacity: var(--jp-search-toggle-on-opacity);
+}
+
+.jp-DocumentSearch-index-counter {
+ padding-left: 10px;
+ padding-right: 10px;
+ user-select: none;
+ min-width: 35px;
+ display: inline-block;
+}
+
+.jp-DocumentSearch-up-down-wrapper {
+ display: inline-block;
+ padding-right: 2px;
+ margin-left: auto;
+ white-space: nowrap;
+}
+
+.jp-DocumentSearch-spacer {
+ margin-left: auto;
+}
+
+.jp-DocumentSearch-up-down-wrapper button {
+ outline: 0;
+ border: none;
+ width: var(--jp-private-document-search-button-height);
+ height: var(--jp-private-document-search-button-height);
+ vertical-align: middle;
+ margin: 1px 5px 2px;
+}
+
+.jp-DocumentSearch-up-down-button:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-up-down-button:active {
+ background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-filter-button {
+ border-radius: var(--jp-border-radius);
+}
+
+.jp-DocumentSearch-filter-button:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-filter-button-enabled {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-filter-button-enabled:hover {
+ background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-search-options {
+ padding: 0 8px;
+ margin-left: 3px;
+ width: 100%;
+ display: grid;
+ justify-content: start;
+ grid-template-columns: 1fr 1fr;
+ align-items: center;
+ justify-items: stretch;
+}
+
+.jp-DocumentSearch-search-filter-disabled {
+ color: var(--jp-ui-font-color2);
+}
+
+.jp-DocumentSearch-search-filter {
+ display: flex;
+ align-items: center;
+ user-select: none;
+}
+
+.jp-DocumentSearch-regex-error {
+ color: var(--jp-error-color0);
+}
+
+.jp-DocumentSearch-replace-button-wrapper {
+ overflow: hidden;
+ display: inline-block;
+ box-sizing: border-box;
+ border: var(--jp-border-width) solid var(--jp-border-color0);
+ margin: auto 2px;
+ padding: 1px 4px;
+ height: calc(var(--jp-private-document-search-button-height) + 2px);
+}
+
+.jp-DocumentSearch-replace-button-wrapper:focus {
+ border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
+}
+
+.jp-DocumentSearch-replace-button {
+ display: inline-block;
+ text-align: center;
+ cursor: pointer;
+ box-sizing: border-box;
+ color: var(--jp-ui-font-color1);
+
+ /* height - 2 * (padding of wrapper) */
+ line-height: calc(var(--jp-private-document-search-button-height) - 2px);
+ width: 100%;
+ height: 100%;
+}
+
+.jp-DocumentSearch-replace-button:focus {
+ outline: none;
+}
+
+.jp-DocumentSearch-replace-wrapper-class {
+ margin-left: 14px;
+ display: flex;
+}
+
+.jp-DocumentSearch-replace-toggle {
+ border: none;
+ background-color: var(--jp-toolbar-background);
+ border-radius: var(--jp-border-radius);
+}
+
+.jp-DocumentSearch-replace-toggle:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.cm-editor {
+ line-height: var(--jp-code-line-height);
+ font-size: var(--jp-code-font-size);
+ font-family: var(--jp-code-font-family);
+ border: 0;
+ border-radius: 0;
+ height: auto;
+
+ /* Changed to auto to autogrow */
+}
+
+.cm-editor pre {
+ padding: 0 var(--jp-code-padding);
+}
+
+.jp-CodeMirrorEditor[data-type='inline'] .cm-dialog {
+ background-color: var(--jp-layout-color0);
+ color: var(--jp-content-font-color1);
+}
+
+.jp-CodeMirrorEditor {
+ cursor: text;
+}
+
+/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
+@media screen and (min-width: 2138px) and (max-width: 4319px) {
+ .jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
+ border-left: var(--jp-code-cursor-width1) solid
+ var(--jp-editor-cursor-color);
+ }
+}
+
+/* When zoomed out less than 33% */
+@media screen and (min-width: 4320px) {
+ .jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
+ border-left: var(--jp-code-cursor-width2) solid
+ var(--jp-editor-cursor-color);
+ }
+}
+
+.cm-editor.jp-mod-readOnly .cm-cursor {
+ display: none;
+}
+
+.jp-CollaboratorCursor {
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: none;
+ border-bottom: 3px solid;
+ background-clip: content-box;
+ margin-left: -5px;
+ margin-right: -5px;
+}
+
+.cm-searching,
+.cm-searching span {
+ /* `.cm-searching span`: we need to override syntax highlighting */
+ background-color: var(--jp-search-unselected-match-background-color);
+ color: var(--jp-search-unselected-match-color);
+}
+
+.cm-searching::selection,
+.cm-searching span::selection {
+ background-color: var(--jp-search-unselected-match-background-color);
+ color: var(--jp-search-unselected-match-color);
+}
+
+.jp-current-match > .cm-searching,
+.jp-current-match > .cm-searching span,
+.cm-searching > .jp-current-match,
+.cm-searching > .jp-current-match span {
+ background-color: var(--jp-search-selected-match-background-color);
+ color: var(--jp-search-selected-match-color);
+}
+
+.jp-current-match > .cm-searching::selection,
+.cm-searching > .jp-current-match::selection,
+.jp-current-match > .cm-searching span::selection {
+ background-color: var(--jp-search-selected-match-background-color);
+ color: var(--jp-search-selected-match-color);
+}
+
+.cm-trailingspace {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAsElEQVQIHQGlAFr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+r3zKmT0/+pk9P/7+r3zAAAAAAAAAAABAAAAAAAAAAA6OPzM+/q9wAAAAAA6OPzMwAAAAAAAAAAAgAAAAAAAAAAGR8NiRQaCgAZIA0AGR8NiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyoYJ/SY80UAAAAASUVORK5CYII=);
+ background-position: center left;
+ background-repeat: repeat-x;
+}
+
+.jp-CollaboratorCursor-hover {
+ position: absolute;
+ z-index: 1;
+ transform: translateX(-50%);
+ color: white;
+ border-radius: 3px;
+ padding-left: 4px;
+ padding-right: 4px;
+ padding-top: 1px;
+ padding-bottom: 1px;
+ text-align: center;
+ font-size: var(--jp-ui-font-size1);
+ white-space: nowrap;
+}
+
+.jp-CodeMirror-ruler {
+ border-left: 1px dashed var(--jp-border-color2);
+}
+
+/* Styles for shared cursors (remote cursor locations and selected ranges) */
+.jp-CodeMirrorEditor .cm-ySelectionCaret {
+ position: relative;
+ border-left: 1px solid black;
+ margin-left: -1px;
+ margin-right: -1px;
+ box-sizing: border-box;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionCaret > .cm-ySelectionInfo {
+ white-space: nowrap;
+ position: absolute;
+ top: -1.15em;
+ padding-bottom: 0.05em;
+ left: -1px;
+ font-size: 0.95em;
+ font-family: var(--jp-ui-font-family);
+ font-weight: bold;
+ line-height: normal;
+ user-select: none;
+ color: white;
+ padding-left: 2px;
+ padding-right: 2px;
+ z-index: 101;
+ transition: opacity 0.3s ease-in-out;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionInfo {
+ transition-delay: 0.7s;
+ opacity: 0;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionCaret:hover > .cm-ySelectionInfo {
+ opacity: 1;
+ transition-delay: 0s;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-MimeDocument {
+ outline: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-filebrowser-button-height: 28px;
+ --jp-private-filebrowser-button-width: 48px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-FileBrowser .jp-SidePanel-content {
+ display: flex;
+ flex-direction: column;
+}
+
+.jp-FileBrowser-toolbar.jp-Toolbar {
+ flex-wrap: wrap;
+ row-gap: 12px;
+ border-bottom: none;
+ height: auto;
+ margin: 8px 12px 0;
+ box-shadow: none;
+ padding: 0;
+ justify-content: flex-start;
+}
+
+.jp-FileBrowser-Panel {
+ flex: 1 1 auto;
+ display: flex;
+ flex-direction: column;
+}
+
+.jp-BreadCrumbs {
+ flex: 0 0 auto;
+ margin: 8px 12px;
+}
+
+.jp-BreadCrumbs-item {
+ margin: 0 2px;
+ padding: 0 2px;
+ border-radius: var(--jp-border-radius);
+ cursor: pointer;
+}
+
+.jp-BreadCrumbs-item:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-BreadCrumbs-item:first-child {
+ margin-left: 0;
+}
+
+.jp-BreadCrumbs-item.jp-mod-dropTarget {
+ background-color: var(--jp-brand-color2);
+ opacity: 0.7;
+}
+
+/*-----------------------------------------------------------------------------
+| Buttons
+|----------------------------------------------------------------------------*/
+
+.jp-FileBrowser-toolbar > .jp-Toolbar-item {
+ flex: 0 0 auto;
+ padding-left: 0;
+ padding-right: 2px;
+ align-items: center;
+ height: unset;
+}
+
+.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
+ width: 40px;
+}
+
+/*-----------------------------------------------------------------------------
+| Other styles
+|----------------------------------------------------------------------------*/
+
+.jp-FileDialog.jp-mod-conflict input {
+ color: var(--jp-error-color1);
+}
+
+.jp-FileDialog .jp-new-name-title {
+ margin-top: 12px;
+}
+
+.jp-LastModified-hidden {
+ display: none;
+}
+
+.jp-FileSize-hidden {
+ display: none;
+}
+
+.jp-FileBrowser .lm-AccordionPanel > h3:first-child {
+ display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| DirListing
+|----------------------------------------------------------------------------*/
+
+.jp-DirListing {
+ flex: 1 1 auto;
+ display: flex;
+ flex-direction: column;
+ outline: 0;
+}
+
+.jp-DirListing-header {
+ flex: 0 0 auto;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ overflow: hidden;
+ border-top: var(--jp-border-width) solid var(--jp-border-color2);
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ z-index: 2;
+}
+
+.jp-DirListing-headerItem {
+ padding: 4px 12px 2px;
+ font-weight: 500;
+}
+
+.jp-DirListing-headerItem:hover {
+ background: var(--jp-layout-color2);
+}
+
+.jp-DirListing-headerItem.jp-id-name {
+ flex: 1 0 84px;
+}
+
+.jp-DirListing-headerItem.jp-id-modified {
+ flex: 0 0 112px;
+ border-left: var(--jp-border-width) solid var(--jp-border-color2);
+ text-align: right;
+}
+
+.jp-DirListing-headerItem.jp-id-filesize {
+ flex: 0 0 75px;
+ border-left: var(--jp-border-width) solid var(--jp-border-color2);
+ text-align: right;
+}
+
+.jp-id-narrow {
+ display: none;
+ flex: 0 0 5px;
+ padding: 4px;
+ border-left: var(--jp-border-width) solid var(--jp-border-color2);
+ text-align: right;
+ color: var(--jp-border-color2);
+}
+
+.jp-DirListing-narrow .jp-id-narrow {
+ display: block;
+}
+
+.jp-DirListing-narrow .jp-id-modified,
+.jp-DirListing-narrow .jp-DirListing-itemModified {
+ display: none;
+}
+
+.jp-DirListing-headerItem.jp-mod-selected {
+ font-weight: 600;
+}
+
+/* increase specificity to override bundled default */
+.jp-DirListing-content {
+ flex: 1 1 auto;
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ overflow: auto;
+ background-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-content mark {
+ color: var(--jp-ui-font-color0);
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark {
+ color: var(--jp-ui-inverse-font-color0);
+}
+
+/* Style the directory listing content when a user drops a file to upload */
+.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
+ outline: 5px dashed rgba(128, 128, 128, 0.5);
+ outline-offset: -10px;
+ cursor: copy;
+}
+
+.jp-DirListing-item {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ padding: 4px 12px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.jp-DirListing-checkboxWrapper {
+ /* Increases hit area of checkbox. */
+ padding: 4px;
+}
+
+.jp-DirListing-header
+ .jp-DirListing-checkboxWrapper
+ + .jp-DirListing-headerItem {
+ padding-left: 4px;
+}
+
+.jp-DirListing-content .jp-DirListing-checkboxWrapper {
+ position: relative;
+ left: -4px;
+ margin: -4px 0 -4px -8px;
+}
+
+.jp-DirListing-checkboxWrapper.jp-mod-visible {
+ visibility: visible;
+}
+
+/* For devices that support hovering, hide checkboxes until hovered, selected...
+*/
+@media (hover: hover) {
+ .jp-DirListing-checkboxWrapper {
+ visibility: hidden;
+ }
+
+ .jp-DirListing-item:hover .jp-DirListing-checkboxWrapper,
+ .jp-DirListing-item.jp-mod-selected .jp-DirListing-checkboxWrapper {
+ visibility: visible;
+ }
+}
+
+.jp-DirListing-item[data-is-dot] {
+ opacity: 75%;
+}
+
+.jp-DirListing-item.jp-mod-selected {
+ color: var(--jp-ui-inverse-font-color1);
+ background: var(--jp-brand-color1);
+}
+
+.jp-DirListing-item.jp-mod-dropTarget {
+ background: var(--jp-brand-color3);
+}
+
+.jp-DirListing-item:hover:not(.jp-mod-selected) {
+ background: var(--jp-layout-color2);
+}
+
+.jp-DirListing-itemIcon {
+ flex: 0 0 20px;
+ margin-right: 4px;
+}
+
+.jp-DirListing-itemText {
+ flex: 1 0 64px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ user-select: none;
+}
+
+.jp-DirListing-itemText:focus {
+ outline-width: 2px;
+ outline-color: var(--jp-inverse-layout-color1);
+ outline-style: solid;
+ outline-offset: 1px;
+}
+
+.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus {
+ outline-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-itemModified {
+ flex: 0 0 125px;
+ text-align: right;
+}
+
+.jp-DirListing-itemFileSize {
+ flex: 0 0 90px;
+ text-align: right;
+}
+
+.jp-DirListing-editor {
+ flex: 1 0 64px;
+ outline: none;
+ border: none;
+ color: var(--jp-ui-font-color1);
+ background-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon::before {
+ color: var(--jp-success-color1);
+ content: '\25CF';
+ font-size: 8px;
+ position: absolute;
+ left: -8px;
+}
+
+.jp-DirListing-item.jp-mod-running.jp-mod-selected
+ .jp-DirListing-itemIcon::before {
+ color: var(--jp-ui-inverse-font-color1);
+}
+
+.jp-DirListing-item.lm-mod-drag-image,
+.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
+ font-size: var(--jp-ui-font-size1);
+ padding-left: 4px;
+ margin-left: 4px;
+ width: 160px;
+ background-color: var(--jp-ui-inverse-font-color2);
+ box-shadow: var(--jp-elevation-z2);
+ border-radius: 0;
+ color: var(--jp-ui-font-color1);
+ transform: translateX(-40%) translateY(-58%);
+}
+
+.jp-Document {
+ min-width: 120px;
+ min-height: 120px;
+ outline: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Main OutputArea
+| OutputArea has a list of Outputs
+|----------------------------------------------------------------------------*/
+
+.jp-OutputArea {
+ overflow-y: auto;
+}
+
+.jp-OutputArea-child {
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+ overflow: hidden;
+}
+
+.jp-OutputPrompt {
+ width: var(--jp-cell-prompt-width);
+ color: var(--jp-cell-outprompt-font-color);
+ font-family: var(--jp-cell-prompt-font-family);
+ padding: var(--jp-code-padding);
+ letter-spacing: var(--jp-cell-prompt-letter-spacing);
+ line-height: var(--jp-code-line-height);
+ font-size: var(--jp-code-font-size);
+ border: var(--jp-border-width) solid transparent;
+ opacity: var(--jp-cell-prompt-opacity);
+
+ /* Right align prompt text, don't wrap to handle large prompt numbers */
+ text-align: right;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ /* Disable text selection */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.jp-OutputArea-prompt {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.jp-OutputArea-output {
+ display: table-cell;
+ width: 100%;
+ height: auto;
+ overflow: auto;
+ user-select: text;
+ -moz-user-select: text;
+ -webkit-user-select: text;
+ -ms-user-select: text;
+}
+
+.jp-OutputArea .jp-RenderedText {
+ padding-left: 1ch;
+}
+
+/**
+ * Prompt overlay.
+ */
+
+.jp-OutputArea-promptOverlay {
+ position: absolute;
+ top: 0;
+ width: var(--jp-cell-prompt-width);
+ height: 100%;
+ opacity: 0.5;
+}
+
+.jp-OutputArea-promptOverlay:hover {
+ background: var(--jp-layout-color2);
+ box-shadow: inset 0 0 1px var(--jp-inverse-layout-color0);
+ cursor: zoom-out;
+}
+
+.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay:hover {
+ cursor: zoom-in;
+}
+
+/**
+ * Isolated output.
+ */
+.jp-OutputArea-output.jp-mod-isolated {
+ width: 100%;
+ display: block;
+}
+
+/*
+When drag events occur, `lm-mod-override-cursor` is added to the body.
+Because iframes steal all cursor events, the following two rules are necessary
+to suppress pointer events while resize drags are occurring. There may be a
+better solution to this problem.
+*/
+body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
+ position: relative;
+}
+
+body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: transparent;
+}
+
+/* pre */
+
+.jp-OutputArea-output pre {
+ border: none;
+ margin: 0;
+ padding: 0;
+ overflow-x: auto;
+ overflow-y: auto;
+ word-break: break-all;
+ word-wrap: break-word;
+ white-space: pre-wrap;
+}
+
+/* tables */
+
+.jp-OutputArea-output.jp-RenderedHTMLCommon table {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+/* description lists */
+
+.jp-OutputArea-output dl,
+.jp-OutputArea-output dt,
+.jp-OutputArea-output dd {
+ display: block;
+}
+
+.jp-OutputArea-output dl {
+ width: 100%;
+ overflow: hidden;
+ padding: 0;
+ margin: 0;
+}
+
+.jp-OutputArea-output dt {
+ font-weight: bold;
+ float: left;
+ width: 20%;
+ padding: 0;
+ margin: 0;
+}
+
+.jp-OutputArea-output dd {
+ float: left;
+ width: 80%;
+ padding: 0;
+ margin: 0;
+}
+
+.jp-TrimmedOutputs pre {
+ background: var(--jp-layout-color3);
+ font-size: calc(var(--jp-code-font-size) * 1.4);
+ text-align: center;
+ text-transform: uppercase;
+}
+
+/* Hide the gutter in case of
+ * - nested output areas (e.g. in the case of output widgets)
+ * - mirrored output areas
+ */
+.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
+ display: none;
+}
+
+/* Hide empty lines in the output area, for instance due to cleared widgets */
+.jp-OutputArea-prompt:empty {
+ padding: 0;
+ border: 0;
+}
+
+/*-----------------------------------------------------------------------------
+| executeResult is added to any Output-result for the display of the object
+| returned by a cell
+|----------------------------------------------------------------------------*/
+
+.jp-OutputArea-output.jp-OutputArea-executeResult {
+ margin-left: 0;
+ width: 100%;
+}
+
+/* Text output with the Out[] prompt needs a top padding to match the
+ * alignment of the Out[] prompt itself.
+ */
+.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
+ padding-top: var(--jp-code-padding);
+ border-top: var(--jp-border-width) solid transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| The Stdin output
+|----------------------------------------------------------------------------*/
+
+.jp-Stdin-prompt {
+ color: var(--jp-content-font-color0);
+ padding-right: var(--jp-code-padding);
+ vertical-align: baseline;
+ flex: 0 0 auto;
+}
+
+.jp-Stdin-input {
+ font-family: var(--jp-code-font-family);
+ font-size: inherit;
+ color: inherit;
+ background-color: inherit;
+ width: 42%;
+ min-width: 200px;
+
+ /* make sure input baseline aligns with prompt */
+ vertical-align: baseline;
+
+ /* padding + margin = 0.5em between prompt and cursor */
+ padding: 0 0.25em;
+ margin: 0 0.25em;
+ flex: 0 0 70%;
+}
+
+.jp-Stdin-input::placeholder {
+ opacity: 0;
+}
+
+.jp-Stdin-input:focus {
+ box-shadow: none;
+}
+
+.jp-Stdin-input:focus::placeholder {
+ opacity: 1;
+}
+
+/*-----------------------------------------------------------------------------
+| Output Area View
+|----------------------------------------------------------------------------*/
+
+.jp-LinkedOutputView .jp-OutputArea {
+ height: 100%;
+ display: block;
+}
+
+.jp-LinkedOutputView .jp-OutputArea-output:only-child {
+ height: 100%;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+@media print {
+ .jp-OutputArea-child {
+ break-inside: avoid-page;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Mobile
+|----------------------------------------------------------------------------*/
+@media only screen and (max-width: 760px) {
+ .jp-OutputPrompt {
+ display: table-row;
+ text-align: left;
+ }
+
+ .jp-OutputArea-child .jp-OutputArea-output {
+ display: table-row;
+ margin-left: var(--jp-notebook-padding);
+ }
+}
+
+/* Trimmed outputs warning */
+.jp-TrimmedOutputs > a {
+ margin: 10px;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.jp-TrimmedOutputs > a:hover {
+ text-decoration: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Table of Contents
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-toc-active-width: 4px;
+}
+
+.jp-TableOfContents {
+ display: flex;
+ flex-direction: column;
+ background: var(--jp-layout-color1);
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ height: 100%;
+}
+
+.jp-TableOfContents-placeholder {
+ text-align: center;
+}
+
+.jp-TableOfContents-placeholderContent {
+ color: var(--jp-content-font-color2);
+ padding: 8px;
+}
+
+.jp-TableOfContents-placeholderContent > h3 {
+ margin-bottom: var(--jp-content-heading-margin-bottom);
+}
+
+.jp-TableOfContents .jp-SidePanel-content {
+ overflow-y: auto;
+}
+
+.jp-TableOfContents-tree {
+ margin: 4px;
+}
+
+.jp-TableOfContents ol {
+ list-style-type: none;
+}
+
+/* stylelint-disable-next-line selector-max-type */
+.jp-TableOfContents li > ol {
+ /* Align left border with triangle icon center */
+ padding-left: 11px;
+}
+
+.jp-TableOfContents-content {
+ /* left margin for the active heading indicator */
+ margin: 0 0 0 var(--jp-private-toc-active-width);
+ padding: 0;
+ background-color: var(--jp-layout-color1);
+}
+
+.jp-tocItem {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.jp-tocItem-heading {
+ display: flex;
+ cursor: pointer;
+}
+
+.jp-tocItem-heading:hover {
+ background-color: var(--jp-layout-color2);
+}
+
+.jp-tocItem-content {
+ display: block;
+ padding: 4px 0;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow-x: hidden;
+}
+
+.jp-tocItem-collapser {
+ height: 20px;
+ margin: 2px 2px 0;
+ padding: 0;
+ background: none;
+ border: none;
+ cursor: pointer;
+}
+
+.jp-tocItem-collapser:hover {
+ background-color: var(--jp-layout-color3);
+}
+
+/* Active heading indicator */
+
+.jp-tocItem-heading::before {
+ content: ' ';
+ background: transparent;
+ width: var(--jp-private-toc-active-width);
+ height: 24px;
+ position: absolute;
+ left: 0;
+ border-radius: var(--jp-border-radius);
+}
+
+.jp-tocItem-heading.jp-tocItem-active::before {
+ background-color: var(--jp-brand-color1);
+}
+
+.jp-tocItem-heading:hover.jp-tocItem-active::before {
+ background: var(--jp-brand-color0);
+ opacity: 1;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Collapser {
+ flex: 0 0 var(--jp-cell-collapser-width);
+ padding: 0;
+ margin: 0;
+ border: none;
+ outline: none;
+ background: transparent;
+ border-radius: var(--jp-border-radius);
+ opacity: 1;
+}
+
+.jp-Collapser-child {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+
+ /* height: 100% doesn't work because the height of its parent is computed from content */
+ position: absolute;
+ top: 0;
+ bottom: 0;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+/*
+Hiding collapsers in print mode.
+
+Note: input and output wrappers have "display: block" propery in print mode.
+*/
+
+@media print {
+ .jp-Collapser {
+ display: none;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Header/Footer
+|----------------------------------------------------------------------------*/
+
+/* Hidden by zero height by default */
+.jp-CellHeader,
+.jp-CellFooter {
+ height: 0;
+ width: 100%;
+ padding: 0;
+ margin: 0;
+ border: none;
+ outline: none;
+ background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Input
+|----------------------------------------------------------------------------*/
+
+/* All input areas */
+.jp-InputArea {
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+ overflow: hidden;
+}
+
+.jp-InputArea-editor {
+ display: table-cell;
+ overflow: hidden;
+ vertical-align: top;
+
+ /* This is the non-active, default styling */
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ border-radius: 0;
+ background: var(--jp-cell-editor-background);
+}
+
+.jp-InputPrompt {
+ display: table-cell;
+ vertical-align: top;
+ width: var(--jp-cell-prompt-width);
+ color: var(--jp-cell-inprompt-font-color);
+ font-family: var(--jp-cell-prompt-font-family);
+ padding: var(--jp-code-padding);
+ letter-spacing: var(--jp-cell-prompt-letter-spacing);
+ opacity: var(--jp-cell-prompt-opacity);
+ line-height: var(--jp-code-line-height);
+ font-size: var(--jp-code-font-size);
+ border: var(--jp-border-width) solid transparent;
+
+ /* Right align prompt text, don't wrap to handle large prompt numbers */
+ text-align: right;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ /* Disable text selection */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Mobile
+|----------------------------------------------------------------------------*/
+@media only screen and (max-width: 760px) {
+ .jp-InputArea-editor {
+ display: table-row;
+ margin-left: var(--jp-notebook-padding);
+ }
+
+ .jp-InputPrompt {
+ display: table-row;
+ text-align: left;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Placeholder
+|----------------------------------------------------------------------------*/
+
+.jp-Placeholder {
+ display: table;
+ table-layout: fixed;
+ width: 100%;
+}
+
+.jp-Placeholder-prompt {
+ display: table-cell;
+ box-sizing: border-box;
+}
+
+.jp-Placeholder-content {
+ display: table-cell;
+ padding: 4px 6px;
+ border: 1px solid transparent;
+ border-radius: 0;
+ background: none;
+ box-sizing: border-box;
+ cursor: pointer;
+}
+
+.jp-Placeholder-contentContainer {
+ display: flex;
+}
+
+.jp-Placeholder-content:hover,
+.jp-InputPlaceholder > .jp-Placeholder-content:hover {
+ border-color: var(--jp-layout-color3);
+}
+
+.jp-Placeholder-content .jp-MoreHorizIcon {
+ width: 32px;
+ height: 16px;
+ border: 1px solid transparent;
+ border-radius: var(--jp-border-radius);
+}
+
+.jp-Placeholder-content .jp-MoreHorizIcon:hover {
+ border: 1px solid var(--jp-border-color1);
+ box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);
+ background-color: var(--jp-layout-color0);
+}
+
+.jp-PlaceholderText {
+ white-space: nowrap;
+ overflow-x: hidden;
+ color: var(--jp-inverse-layout-color3);
+ font-family: var(--jp-code-font-family);
+}
+
+.jp-InputPlaceholder > .jp-Placeholder-content {
+ border-color: var(--jp-cell-editor-border-color);
+ background: var(--jp-cell-editor-background);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Private CSS variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-private-cell-scrolling-output-offset: 5px;
+}
+
+/*-----------------------------------------------------------------------------
+| Cell
+|----------------------------------------------------------------------------*/
+
+.jp-Cell {
+ padding: var(--jp-cell-padding);
+ margin: 0;
+ border: none;
+ outline: none;
+ background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Common input/output
+|----------------------------------------------------------------------------*/
+
+.jp-Cell-inputWrapper,
+.jp-Cell-outputWrapper {
+ display: flex;
+ flex-direction: row;
+ padding: 0;
+ margin: 0;
+
+ /* Added to reveal the box-shadow on the input and output collapsers. */
+ overflow: visible;
+}
+
+/* Only input/output areas inside cells */
+.jp-Cell-inputArea,
+.jp-Cell-outputArea {
+ flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Collapser
+|----------------------------------------------------------------------------*/
+
+/* Make the output collapser disappear when there is not output, but do so
+ * in a manner that leaves it in the layout and preserves its width.
+ */
+.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
+ border: none !important;
+ background: transparent !important;
+}
+
+.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
+ min-height: var(--jp-cell-collapser-min-height);
+}
+
+/*-----------------------------------------------------------------------------
+| Output
+|----------------------------------------------------------------------------*/
+
+/* Put a space between input and output when there IS output */
+.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
+ margin-top: 5px;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
+ overflow-y: auto;
+ max-height: 24em;
+ margin-left: var(--jp-private-cell-scrolling-output-offset);
+ resize: vertical;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] {
+ max-height: unset;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
+ content: ' ';
+ box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
+ width: 100%;
+ height: 100%;
+ position: sticky;
+ bottom: 0;
+ top: 0;
+ margin-top: -50%;
+ float: left;
+ display: block;
+ pointer-events: none;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
+ padding-top: 6px;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
+ width: calc(
+ var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset)
+ );
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay {
+ left: calc(-1 * var(--jp-private-cell-scrolling-output-offset));
+}
+
+/*-----------------------------------------------------------------------------
+| CodeCell
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| MarkdownCell
+|----------------------------------------------------------------------------*/
+
+.jp-MarkdownOutput {
+ display: table-cell;
+ width: 100%;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-left: var(--jp-code-padding);
+}
+
+.jp-MarkdownOutput.jp-RenderedHTMLCommon {
+ overflow: auto;
+}
+
+/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
+.jp-collapseHeadingButton {
+ display: flex;
+ min-height: var(--jp-cell-collapser-min-height);
+ font-size: var(--jp-code-font-size);
+ position: absolute;
+ background-color: transparent;
+ background-size: 25px;
+ background-repeat: no-repeat;
+ background-position-x: center;
+ background-position-y: top;
+ background-image: var(--jp-icon-caret-down);
+ right: 0;
+ top: 0;
+ bottom: 0;
+}
+
+.jp-collapseHeadingButton.jp-mod-collapsed {
+ background-image: var(--jp-icon-caret-right);
+}
+
+/*
+ set the container font size to match that of content
+ so that the nested collapse buttons have the right size
+*/
+.jp-MarkdownCell .jp-InputPrompt {
+ font-size: var(--jp-content-font-size1);
+}
+
+/*
+ Align collapseHeadingButton with cell top header
+ The font sizes are identical to the ones in packages/rendermime/style/base.css
+*/
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
+ font-size: var(--jp-content-font-size5);
+ background-position-y: calc(0.3 * var(--jp-content-font-size5));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
+ font-size: var(--jp-content-font-size4);
+ background-position-y: calc(0.3 * var(--jp-content-font-size4));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
+ font-size: var(--jp-content-font-size3);
+ background-position-y: calc(0.3 * var(--jp-content-font-size3));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
+ font-size: var(--jp-content-font-size2);
+ background-position-y: calc(0.3 * var(--jp-content-font-size2));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
+ font-size: var(--jp-content-font-size1);
+ background-position-y: top;
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
+ font-size: var(--jp-content-font-size0);
+ background-position-y: top;
+}
+
+/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton {
+ display: none;
+}
+
+.jp-Notebook.jp-mod-showHiddenCellsButton
+ :is(.jp-MarkdownCell:hover, .jp-mod-active)
+ .jp-collapseHeadingButton {
+ display: flex;
+}
+
+/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which
+is a consequence of the showHiddenCellsButton option in Notebook Settings)*/
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton {
+ margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
+ margin-top: var(--jp-code-padding);
+ border: 1px solid var(--jp-border-color2);
+ background-color: var(--jp-border-color3) !important;
+ color: var(--jp-content-font-color0) !important;
+ display: flex;
+}
+
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover {
+ background-color: var(--jp-border-color2) !important;
+}
+
+.jp-showHiddenCellsButton {
+ display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+/*
+Using block instead of flex to allow the use of the break-inside CSS property for
+cell outputs.
+*/
+
+@media print {
+ .jp-Cell-inputWrapper,
+ .jp-Cell-outputWrapper {
+ display: block;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-notebook-toolbar-padding: 2px 5px 2px 2px;
+}
+
+/*-----------------------------------------------------------------------------
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-NotebookPanel-toolbar {
+ padding: var(--jp-notebook-toolbar-padding);
+
+ /* disable paint containment from lumino 2.0 default strict CSS containment */
+ contain: style size !important;
+}
+
+.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
+ border: none;
+ box-shadow: none;
+}
+
+.jp-Notebook-toolbarCellTypeDropdown select {
+ height: 24px;
+ font-size: var(--jp-ui-font-size1);
+ line-height: 14px;
+ border-radius: 0;
+ display: block;
+}
+
+.jp-Notebook-toolbarCellTypeDropdown span {
+ top: 5px !important;
+}
+
+.jp-Toolbar-responsive-popup {
+ position: absolute;
+ height: fit-content;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+ box-shadow: var(--jp-toolbar-box-shadow);
+ background: var(--jp-toolbar-background);
+ min-height: var(--jp-toolbar-micro-height);
+ padding: var(--jp-notebook-toolbar-padding);
+ z-index: 1;
+ right: 0;
+ top: 0;
+}
+
+.jp-Toolbar > .jp-Toolbar-responsive-opener {
+ margin-left: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-Notebook-ExecutionIndicator {
+ position: relative;
+ display: inline-block;
+ height: 100%;
+ z-index: 9997;
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip {
+ visibility: hidden;
+ height: auto;
+ width: max-content;
+ width: -moz-max-content;
+ background-color: var(--jp-layout-color2);
+ color: var(--jp-ui-font-color1);
+ text-align: justify;
+ border-radius: 6px;
+ padding: 0 5px;
+ position: fixed;
+ display: table;
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.up {
+ transform: translateX(-50%) translateY(-100%) translateY(-32px);
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.down {
+ transform: translateX(calc(-100% + 16px)) translateY(5px);
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.hidden {
+ display: none;
+}
+
+.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
+ visibility: visible;
+}
+
+.jp-Notebook-ExecutionIndicator span {
+ font-size: var(--jp-ui-font-size1);
+ font-family: var(--jp-ui-font-family);
+ color: var(--jp-ui-font-color1);
+ line-height: 24px;
+ display: block;
+}
+
+.jp-Notebook-ExecutionIndicator-progress-bar {
+ display: flex;
+ justify-content: center;
+ height: 100%;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*
+ * Execution indicator
+ */
+.jp-tocItem-content::after {
+ content: '';
+
+ /* Must be identical to form a circle */
+ width: 12px;
+ height: 12px;
+ background: none;
+ border: none;
+ position: absolute;
+ right: 0;
+}
+
+.jp-tocItem-content[data-running='0']::after {
+ border-radius: 50%;
+ border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
+ background: none;
+}
+
+.jp-tocItem-content[data-running='1']::after {
+ border-radius: 50%;
+ border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
+ background-color: var(--jp-inverse-layout-color3);
+}
+
+.jp-tocItem-content[data-running='0'],
+.jp-tocItem-content[data-running='1'] {
+ margin-right: 12px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-Notebook-footer {
+ height: 27px;
+ margin-left: calc(
+ var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
+ var(--jp-cell-padding)
+ );
+ width: calc(
+ 100% -
+ (
+ var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
+ var(--jp-cell-padding) + var(--jp-cell-padding)
+ )
+ );
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ color: var(--jp-ui-font-color3);
+ margin-top: 6px;
+ background: none;
+ cursor: pointer;
+}
+
+.jp-Notebook-footer:focus {
+ border-color: var(--jp-cell-editor-active-border-color);
+}
+
+/* For devices that support hovering, hide footer until hover */
+@media (hover: hover) {
+ .jp-Notebook-footer {
+ opacity: 0;
+ }
+
+ .jp-Notebook-footer:focus,
+ .jp-Notebook-footer:hover {
+ opacity: 1;
+ }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Imports
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| CSS variables
+|----------------------------------------------------------------------------*/
+
+:root {
+ --jp-side-by-side-output-size: 1fr;
+ --jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
+ --jp-private-notebook-dragImage-width: 304px;
+ --jp-private-notebook-dragImage-height: 36px;
+ --jp-private-notebook-selected-color: var(--md-blue-400);
+ --jp-private-notebook-active-color: var(--md-green-400);
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook
+|----------------------------------------------------------------------------*/
+
+/* stylelint-disable selector-max-class */
+
+.jp-NotebookPanel {
+ display: block;
+ height: 100%;
+}
+
+.jp-NotebookPanel.jp-Document {
+ min-width: 240px;
+ min-height: 120px;
+}
+
+.jp-Notebook {
+ padding: var(--jp-notebook-padding);
+ outline: none;
+ overflow: auto;
+ background: var(--jp-layout-color0);
+}
+
+.jp-Notebook.jp-mod-scrollPastEnd::after {
+ display: block;
+ content: '';
+ min-height: var(--jp-notebook-scroll-padding);
+}
+
+.jp-MainAreaWidget-ContainStrict .jp-Notebook * {
+ contain: strict;
+}
+
+.jp-Notebook .jp-Cell {
+ overflow: visible;
+}
+
+.jp-Notebook .jp-Cell .jp-InputPrompt {
+ cursor: move;
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook state related styling
+|
+| The notebook and cells each have states, here are the possibilities:
+|
+| - Notebook
+| - Command
+| - Edit
+| - Cell
+| - None
+| - Active (only one can be active)
+| - Selected (the cells actions are applied to)
+| - Multiselected (when multiple selected, the cursor)
+| - No outputs
+|----------------------------------------------------------------------------*/
+
+/* Command or edit modes */
+
+.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
+ opacity: var(--jp-cell-prompt-not-active-opacity);
+ color: var(--jp-cell-prompt-not-active-font-color);
+}
+
+.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
+ opacity: var(--jp-cell-prompt-not-active-opacity);
+ color: var(--jp-cell-prompt-not-active-font-color);
+}
+
+/* cell is active */
+.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
+ background: var(--jp-brand-color1);
+}
+
+/* cell is dirty */
+.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt {
+ color: var(--jp-warn-color1);
+}
+
+.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before {
+ color: var(--jp-warn-color1);
+ content: '•';
+}
+
+.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser {
+ background: var(--jp-warn-color1);
+}
+
+/* collapser is hovered */
+.jp-Notebook .jp-Cell .jp-Collapser:hover {
+ box-shadow: var(--jp-elevation-z2);
+ background: var(--jp-brand-color1);
+ opacity: var(--jp-cell-collapser-not-active-hover-opacity);
+}
+
+/* cell is active and collapser is hovered */
+.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
+ background: var(--jp-brand-color0);
+ opacity: 1;
+}
+
+/* Command mode */
+
+.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
+ background: var(--jp-notebook-multiselected-color);
+}
+
+.jp-Notebook.jp-mod-commandMode
+ .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
+ background: transparent;
+}
+
+/* Edit mode */
+
+.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
+ border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
+ box-shadow: var(--jp-input-box-shadow);
+ background-color: var(--jp-cell-editor-active-background);
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook drag and drop
+|----------------------------------------------------------------------------*/
+
+.jp-Notebook-cell.jp-mod-dropSource {
+ opacity: 0.5;
+}
+
+.jp-Notebook-cell.jp-mod-dropTarget,
+.jp-Notebook.jp-mod-commandMode
+ .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
+ border-top-color: var(--jp-private-notebook-selected-color);
+ border-top-style: solid;
+ border-top-width: 2px;
+}
+
+.jp-dragImage {
+ display: block;
+ flex-direction: row;
+ width: var(--jp-private-notebook-dragImage-width);
+ height: var(--jp-private-notebook-dragImage-height);
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ background: var(--jp-cell-editor-background);
+ overflow: visible;
+}
+
+.jp-dragImage-singlePrompt {
+ box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
+}
+
+.jp-dragImage .jp-dragImage-content {
+ flex: 1 1 auto;
+ z-index: 2;
+ font-size: var(--jp-code-font-size);
+ font-family: var(--jp-code-font-family);
+ line-height: var(--jp-code-line-height);
+ padding: var(--jp-code-padding);
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ background: var(--jp-cell-editor-background-color);
+ color: var(--jp-content-font-color3);
+ text-align: left;
+ margin: 4px 4px 4px 0;
+}
+
+.jp-dragImage .jp-dragImage-prompt {
+ flex: 0 0 auto;
+ min-width: 36px;
+ color: var(--jp-cell-inprompt-font-color);
+ padding: var(--jp-code-padding);
+ padding-left: 12px;
+ font-family: var(--jp-cell-prompt-font-family);
+ letter-spacing: var(--jp-cell-prompt-letter-spacing);
+ line-height: 1.9;
+ font-size: var(--jp-code-font-size);
+ border: var(--jp-border-width) solid transparent;
+}
+
+.jp-dragImage-multipleBack {
+ z-index: -1;
+ position: absolute;
+ height: 32px;
+ width: 300px;
+ top: 8px;
+ left: 8px;
+ background: var(--jp-layout-color2);
+ border: var(--jp-border-width) solid var(--jp-input-border-color);
+ box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
+}
+
+/*-----------------------------------------------------------------------------
+| Cell toolbar
+|----------------------------------------------------------------------------*/
+
+.jp-NotebookTools {
+ display: block;
+ min-width: var(--jp-sidebar-min-width);
+ color: var(--jp-ui-font-color1);
+ background: var(--jp-layout-color1);
+
+ /* This is needed so that all font sizing of children done in ems is
+ * relative to this base size */
+ font-size: var(--jp-ui-font-size1);
+ overflow: auto;
+}
+
+.jp-ActiveCellTool {
+ padding: 12px 0;
+ display: flex;
+}
+
+.jp-ActiveCellTool-Content {
+ flex: 1 1 auto;
+}
+
+.jp-ActiveCellTool .jp-ActiveCellTool-CellContent {
+ background: var(--jp-cell-editor-background);
+ border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+ border-radius: 0;
+ min-height: 29px;
+}
+
+.jp-ActiveCellTool .jp-InputPrompt {
+ min-width: calc(var(--jp-cell-prompt-width) * 0.75);
+}
+
+.jp-ActiveCellTool-CellContent > pre {
+ padding: 5px 4px;
+ margin: 0;
+ white-space: normal;
+}
+
+.jp-MetadataEditorTool {
+ flex-direction: column;
+ padding: 12px 0;
+}
+
+.jp-RankedPanel > :not(:first-child) {
+ margin-top: 12px;
+}
+
+.jp-KeySelector select.jp-mod-styled {
+ font-size: var(--jp-ui-font-size1);
+ color: var(--jp-ui-font-color0);
+ border: var(--jp-border-width) solid var(--jp-border-color1);
+}
+
+.jp-KeySelector label,
+.jp-MetadataEditorTool label,
+.jp-NumberSetter label {
+ line-height: 1.4;
+}
+
+.jp-NotebookTools .jp-select-wrapper {
+ margin-top: 4px;
+ margin-bottom: 0;
+}
+
+.jp-NumberSetter input {
+ width: 100%;
+ margin-top: 4px;
+}
+
+.jp-NotebookTools .jp-Collapse {
+ margin-top: 16px;
+}
+
+/*-----------------------------------------------------------------------------
+| Presentation Mode (.jp-mod-presentationMode)
+|----------------------------------------------------------------------------*/
+
+.jp-mod-presentationMode .jp-Notebook {
+ --jp-content-font-size1: var(--jp-content-presentation-font-size1);
+ --jp-code-font-size: var(--jp-code-presentation-font-size);
+}
+
+.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
+.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
+ flex: 0 0 110px;
+}
+
+/*-----------------------------------------------------------------------------
+| Side-by-side Mode (.jp-mod-sideBySide)
+|----------------------------------------------------------------------------*/
+.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
+ margin-top: 3em;
+ margin-bottom: 3em;
+ margin-left: 5%;
+ margin-right: 5%;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) min-content minmax(
+ 0,
+ var(--jp-side-by-side-output-size)
+ );
+ grid-template-rows: auto minmax(0, 1fr) auto;
+ grid-template-areas:
+ 'header header header'
+ 'input handle output'
+ 'footer footer footer';
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
+ grid-template-columns: minmax(0, 1fr) min-content minmax(
+ 0,
+ var(--jp-side-by-side-resized-cell)
+ );
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
+ grid-area: header;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
+ grid-area: input;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
+ /* overwrite the default margin (no vertical separation needed in side by side move */
+ margin-top: 0;
+ grid-area: output;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
+ grid-area: footer;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
+ grid-area: handle;
+ user-select: none;
+ display: block;
+ height: 100%;
+ cursor: ew-resize;
+ padding: 0 var(--jp-cell-padding);
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
+ content: '';
+ display: block;
+ background: var(--jp-border-color2);
+ height: 100%;
+ width: 5px;
+}
+
+.jp-mod-sideBySide.jp-Notebook
+ .jp-CodeCell.jp-mod-resizedCell
+ .jp-CellResizeHandle::after {
+ background: var(--jp-border-color0);
+}
+
+.jp-CellResizeHandle {
+ display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Placeholder
+|----------------------------------------------------------------------------*/
+
+.jp-Cell-Placeholder {
+ padding-left: 55px;
+}
+
+.jp-Cell-Placeholder-wrapper {
+ background: #fff;
+ border: 1px solid;
+ border-color: #e5e6e9 #dfe0e4 #d0d1d5;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ margin: 10px 15px;
+}
+
+.jp-Cell-Placeholder-wrapper-inner {
+ padding: 15px;
+ position: relative;
+}
+
+.jp-Cell-Placeholder-wrapper-body {
+ background-repeat: repeat;
+ background-size: 50% auto;
+}
+
+.jp-Cell-Placeholder-wrapper-body div {
+ background: #f6f7f8;
+ background-image: -webkit-linear-gradient(
+ left,
+ #f6f7f8 0%,
+ #edeef1 20%,
+ #f6f7f8 40%,
+ #f6f7f8 100%
+ );
+ background-repeat: no-repeat;
+ background-size: 800px 104px;
+ height: 104px;
+ position: absolute;
+ right: 15px;
+ left: 15px;
+ top: 15px;
+}
+
+div.jp-Cell-Placeholder-h1 {
+ top: 20px;
+ height: 20px;
+ left: 15px;
+ width: 150px;
+}
+
+div.jp-Cell-Placeholder-h2 {
+ left: 15px;
+ top: 50px;
+ height: 10px;
+ width: 100px;
+}
+
+div.jp-Cell-Placeholder-content-1,
+div.jp-Cell-Placeholder-content-2,
+div.jp-Cell-Placeholder-content-3 {
+ left: 15px;
+ right: 15px;
+ height: 10px;
+}
+
+div.jp-Cell-Placeholder-content-1 {
+ top: 100px;
+}
+
+div.jp-Cell-Placeholder-content-2 {
+ top: 120px;
+}
+
+div.jp-Cell-Placeholder-content-3 {
+ top: 140px;
+}
+
+</style>
+<style type="text/css">
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*
+The following CSS variables define the main, public API for styling JupyterLab.
+These variables should be used by all plugins wherever possible. In other
+words, plugins should not define custom colors, sizes, etc unless absolutely
+necessary. This enables users to change the visual theme of JupyterLab
+by changing these variables.
+
+Many variables appear in an ordered sequence (0,1,2,3). These sequences
+are designed to work well together, so for example, `--jp-border-color1` should
+be used with `--jp-layout-color1`. The numbers have the following meanings:
+
+* 0: super-primary, reserved for special emphasis
+* 1: primary, most important under normal situations
+* 2: secondary, next most important under normal situations
+* 3: tertiary, next most important under normal situations
+
+Throughout JupyterLab, we are mostly following principles from Google's
+Material Design when selecting colors. We are not, however, following
+all of MD as it is not optimized for dense, information rich UIs.
+*/
+
+:root {
+ /* Elevation
+ *
+ * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
+ *
+ * https://github.com/material-components/material-components-web
+ * https://material-components-web.appspot.com/elevation.html
+ */
+
+ /* The dark theme shadows need a bit of work, but this will probably also require work on the core layout
+ * colors used in the theme as well. */
+ --jp-shadow-base-lightness: 32;
+ --jp-shadow-umbra-color: rgba(
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ 0.2
+ );
+ --jp-shadow-penumbra-color: rgba(
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ 0.14
+ );
+ --jp-shadow-ambient-color: rgba(
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ var(--jp-shadow-base-lightness),
+ 0.12
+ );
+ --jp-elevation-z0: none;
+ --jp-elevation-z1: 0 2px 1px -1px var(--jp-shadow-umbra-color),
+ 0 1px 1px 0 var(--jp-shadow-penumbra-color),
+ 0 1px 3px 0 var(--jp-shadow-ambient-color);
+ --jp-elevation-z2: 0 3px 1px -2px var(--jp-shadow-umbra-color),
+ 0 2px 2px 0 var(--jp-shadow-penumbra-color),
+ 0 1px 5px 0 var(--jp-shadow-ambient-color);
+ --jp-elevation-z4: 0 2px 4px -1px var(--jp-shadow-umbra-color),
+ 0 4px 5px 0 var(--jp-shadow-penumbra-color),
+ 0 1px 10px 0 var(--jp-shadow-ambient-color);
+ --jp-elevation-z6: 0 3px 5px -1px var(--jp-shadow-umbra-color),
+ 0 6px 10px 0 var(--jp-shadow-penumbra-color),
+ 0 1px 18px 0 var(--jp-shadow-ambient-color);
+ --jp-elevation-z8: 0 5px 5px -3px var(--jp-shadow-umbra-color),
+ 0 8px 10px 1px var(--jp-shadow-penumbra-color),
+ 0 3px 14px 2px var(--jp-shadow-ambient-color);
+ --jp-elevation-z12: 0 7px 8px -4px var(--jp-shadow-umbra-color),
+ 0 12px 17px 2px var(--jp-shadow-penumbra-color),
+ 0 5px 22px 4px var(--jp-shadow-ambient-color);
+ --jp-elevation-z16: 0 8px 10px -5px var(--jp-shadow-umbra-color),
+ 0 16px 24px 2px var(--jp-shadow-penumbra-color),
+ 0 6px 30px 5px var(--jp-shadow-ambient-color);
+ --jp-elevation-z20: 0 10px 13px -6px var(--jp-shadow-umbra-color),
+ 0 20px 31px 3px var(--jp-shadow-penumbra-color),
+ 0 8px 38px 7px var(--jp-shadow-ambient-color);
+ --jp-elevation-z24: 0 11px 15px -7px var(--jp-shadow-umbra-color),
+ 0 24px 38px 3px var(--jp-shadow-penumbra-color),
+ 0 9px 46px 8px var(--jp-shadow-ambient-color);
+
+ /* Borders
+ *
+ * The following variables, specify the visual styling of borders in JupyterLab.
+ */
+
+ --jp-border-width: 1px;
+ --jp-border-color0: var(--md-grey-700);
+ --jp-border-color1: var(--md-grey-700);
+ --jp-border-color2: var(--md-grey-800);
+ --jp-border-color3: var(--md-grey-900);
+ --jp-inverse-border-color: var(--md-grey-600);
+ --jp-border-radius: 2px;
+
+ /* UI Fonts
+ *
+ * The UI font CSS variables are used for the typography all of the JupyterLab
+ * user interface elements that are not directly user generated content.
+ *
+ * The font sizing here is done assuming that the body font size of --jp-ui-font-size1
+ * is applied to a parent element. When children elements, such as headings, are sized
+ * in em all things will be computed relative to that body size.
+ */
+
+ --jp-ui-font-scale-factor: 1.2;
+ --jp-ui-font-size0: 0.83333em;
+ --jp-ui-font-size1: 13px; /* Base font size */
+ --jp-ui-font-size2: 1.2em;
+ --jp-ui-font-size3: 1.44em;
+ --jp-ui-font-family: system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI',
+ helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
+ 'Segoe UI Symbol';
+
+ /*
+ * Use these font colors against the corresponding main layout colors.
+ * In a light theme, these go from dark to light.
+ */
+
+ /* Defaults use Material Design specification */
+ --jp-ui-font-color0: rgba(255, 255, 255, 1);
+ --jp-ui-font-color1: rgba(255, 255, 255, 0.87);
+ --jp-ui-font-color2: rgba(255, 255, 255, 0.54);
+ --jp-ui-font-color3: rgba(255, 255, 255, 0.38);
+
+ /*
+ * Use these against the brand/accent/warn/error colors.
+ * These will typically go from light to darker, in both a dark and light theme.
+ */
+
+ --jp-ui-inverse-font-color0: rgba(0, 0, 0, 1);
+ --jp-ui-inverse-font-color1: rgba(0, 0, 0, 0.8);
+ --jp-ui-inverse-font-color2: rgba(0, 0, 0, 0.5);
+ --jp-ui-inverse-font-color3: rgba(0, 0, 0, 0.3);
+
+ /* Content Fonts
+ *
+ * Content font variables are used for typography of user generated content.
+ *
+ * The font sizing here is done assuming that the body font size of --jp-content-font-size1
+ * is applied to a parent element. When children elements, such as headings, are sized
+ * in em all things will be computed relative to that body size.
+ */
+
+ --jp-content-line-height: 1.6;
+ --jp-content-font-scale-factor: 1.2;
+ --jp-content-font-size0: 0.83333em;
+ --jp-content-font-size1: 14px; /* Base font size */
+ --jp-content-font-size2: 1.2em;
+ --jp-content-font-size3: 1.44em;
+ --jp-content-font-size4: 1.728em;
+ --jp-content-font-size5: 2.0736em;
+
+ /* This gives a magnification of about 125% in presentation mode over normal. */
+ --jp-content-presentation-font-size1: 17px;
+ --jp-content-heading-line-height: 1;
+ --jp-content-heading-margin-top: 1.2em;
+ --jp-content-heading-margin-bottom: 0.8em;
+ --jp-content-heading-font-weight: 500;
+
+ /* Defaults use Material Design specification */
+ --jp-content-font-color0: rgba(255, 255, 255, 1);
+ --jp-content-font-color1: rgba(255, 255, 255, 1);
+ --jp-content-font-color2: rgba(255, 255, 255, 0.7);
+ --jp-content-font-color3: rgba(255, 255, 255, 0.5);
+ --jp-content-link-color: var(--md-blue-300);
+ --jp-content-font-family: system-ui, -apple-system, blinkmacsystemfont,
+ 'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji',
+ 'Segoe UI Emoji', 'Segoe UI Symbol';
+
+ /*
+ * Code Fonts
+ *
+ * Code font variables are used for typography of code and other monospaces content.
+ */
+
+ --jp-code-font-size: 13px;
+ --jp-code-line-height: 1.3077; /* 17px for 13px base */
+ --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */
+ --jp-code-font-family-default: menlo, consolas, 'DejaVu Sans Mono', monospace;
+ --jp-code-font-family: var(--jp-code-font-family-default);
+
+ /* This gives a magnification of about 125% in presentation mode over normal. */
+ --jp-code-presentation-font-size: 16px;
+
+ /* may need to tweak cursor width if you change font size */
+ --jp-code-cursor-width0: 1.4px;
+ --jp-code-cursor-width1: 2px;
+ --jp-code-cursor-width2: 4px;
+
+ /* Layout
+ *
+ * The following are the main layout colors use in JupyterLab. In a light
+ * theme these would go from light to dark.
+ */
+
+ --jp-layout-color0: #111;
+ --jp-layout-color1: var(--md-grey-900);
+ --jp-layout-color2: var(--md-grey-800);
+ --jp-layout-color3: var(--md-grey-700);
+ --jp-layout-color4: var(--md-grey-600);
+
+ /* Inverse Layout
+ *
+ * The following are the inverse layout colors use in JupyterLab. In a light
+ * theme these would go from dark to light.
+ */
+
+ --jp-inverse-layout-color0: white;
+ --jp-inverse-layout-color1: white;
+ --jp-inverse-layout-color2: var(--md-grey-200);
+ --jp-inverse-layout-color3: var(--md-grey-400);
+ --jp-inverse-layout-color4: var(--md-grey-600);
+
+ /* Brand/accent */
+
+ --jp-brand-color0: var(--md-blue-700);
+ --jp-brand-color1: var(--md-blue-500);
+ --jp-brand-color2: var(--md-blue-300);
+ --jp-brand-color3: var(--md-blue-100);
+ --jp-brand-color4: var(--md-blue-50);
+ --jp-accent-color0: var(--md-green-700);
+ --jp-accent-color1: var(--md-green-500);
+ --jp-accent-color2: var(--md-green-300);
+ --jp-accent-color3: var(--md-green-100);
+
+ /* State colors (warn, error, success, info) */
+
+ --jp-warn-color0: var(--md-orange-700);
+ --jp-warn-color1: var(--md-orange-500);
+ --jp-warn-color2: var(--md-orange-300);
+ --jp-warn-color3: var(--md-orange-100);
+ --jp-error-color0: var(--md-red-700);
+ --jp-error-color1: var(--md-red-500);
+ --jp-error-color2: var(--md-red-300);
+ --jp-error-color3: var(--md-red-100);
+ --jp-success-color0: var(--md-green-700);
+ --jp-success-color1: var(--md-green-500);
+ --jp-success-color2: var(--md-green-300);
+ --jp-success-color3: var(--md-green-100);
+ --jp-info-color0: var(--md-cyan-700);
+ --jp-info-color1: var(--md-cyan-500);
+ --jp-info-color2: var(--md-cyan-300);
+ --jp-info-color3: var(--md-cyan-100);
+
+ /* Cell specific styles */
+
+ --jp-cell-padding: 5px;
+ --jp-cell-collapser-width: 8px;
+ --jp-cell-collapser-min-height: 20px;
+ --jp-cell-collapser-not-active-hover-opacity: 0.6;
+ --jp-cell-editor-background: var(--jp-layout-color1);
+ --jp-cell-editor-border-color: var(--md-grey-700);
+ --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
+ --jp-cell-editor-active-background: var(--jp-layout-color0);
+ --jp-cell-editor-active-border-color: var(--jp-brand-color1);
+ --jp-cell-prompt-width: 64px;
+ --jp-cell-prompt-font-family: var(--jp-code-font-family-default);
+ --jp-cell-prompt-letter-spacing: 0;
+ --jp-cell-prompt-opacity: 1;
+ --jp-cell-prompt-not-active-opacity: 1;
+ --jp-cell-prompt-not-active-font-color: var(--md-grey-300);
+
+ /* A custom blend of MD grey and blue 600
+ * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
+ --jp-cell-inprompt-font-color: #307fc1;
+
+ /* A custom blend of MD grey and orange 600
+ * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
+ --jp-cell-outprompt-font-color: #bf5b3d;
+
+ /* Notebook specific styles */
+
+ --jp-notebook-padding: 10px;
+ --jp-notebook-select-background: var(--jp-layout-color1);
+ --jp-notebook-multiselected-color: rgba(33, 150, 243, 0.24);
+
+ /* The scroll padding is calculated to fill enough space at the bottom of the
+ notebook to show one single-line cell (with appropriate padding) at the top
+ when the notebook is scrolled all the way to the bottom. We also subtract one
+ pixel so that no scrollbar appears if we have just one single-line cell in the
+ notebook. This padding is to enable a 'scroll past end' feature in a notebook.
+ */
+ --jp-notebook-scroll-padding: calc(
+ 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
+ var(--jp-code-padding) - var(--jp-cell-padding) - 1px
+ );
+
+ /* Rendermime styles */
+
+ --jp-rendermime-error-background: rgba(244, 67, 54, 0.28);
+ --jp-rendermime-table-row-background: var(--md-grey-900);
+ --jp-rendermime-table-row-hover-background: rgba(3, 169, 244, 0.2);
+
+ /* Dialog specific styles */
+
+ --jp-dialog-background: rgba(0, 0, 0, 0.6);
+
+ /* Console specific styles */
+
+ --jp-console-padding: 10px;
+
+ /* Toolbar specific styles */
+
+ --jp-toolbar-border-color: var(--jp-border-color2);
+ --jp-toolbar-micro-height: 8px;
+ --jp-toolbar-background: var(--jp-layout-color1);
+ --jp-toolbar-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.8);
+ --jp-toolbar-header-margin: 4px 4px 0 4px;
+ --jp-toolbar-active-background: var(--jp-layout-color0);
+
+ /* Statusbar specific styles */
+
+ --jp-statusbar-height: 24px;
+
+ /* Input field styles */
+
+ --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
+ --jp-input-active-background: var(--jp-layout-color0);
+ --jp-input-hover-background: var(--jp-layout-color2);
+ --jp-input-background: var(--md-grey-800);
+ --jp-input-border-color: var(--jp-inverse-border-color);
+ --jp-input-active-border-color: var(--jp-brand-color1);
+ --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
+
+ /* General editor styles */
+
+ --jp-editor-selected-background: var(--jp-layout-color2);
+ --jp-editor-selected-focused-background: rgba(33, 150, 243, 0.24);
+ --jp-editor-cursor-color: var(--jp-ui-font-color0);
+
+ /* Code mirror specific styles */
+
+ --jp-mirror-editor-keyword-color: var(--md-green-500);
+ --jp-mirror-editor-atom-color: var(--md-blue-300);
+ --jp-mirror-editor-number-color: var(--md-green-400);
+ --jp-mirror-editor-def-color: var(--md-blue-600);
+ --jp-mirror-editor-variable-color: var(--md-grey-300);
+ --jp-mirror-editor-variable-2-color: var(--md-blue-500);
+ --jp-mirror-editor-variable-3-color: var(--md-green-600);
+ --jp-mirror-editor-punctuation-color: var(--md-blue-400);
+ --jp-mirror-editor-property-color: var(--md-blue-400);
+ --jp-mirror-editor-operator-color: #a2f;
+ --jp-mirror-editor-comment-color: #408080;
+ --jp-mirror-editor-string-color: #ff7070;
+ --jp-mirror-editor-string-2-color: var(--md-purple-300);
+ --jp-mirror-editor-meta-color: #a2f;
+ --jp-mirror-editor-qualifier-color: #555;
+ --jp-mirror-editor-builtin-color: var(--md-green-600);
+ --jp-mirror-editor-bracket-color: #997;
+ --jp-mirror-editor-tag-color: var(--md-green-700);
+ --jp-mirror-editor-attribute-color: var(--md-blue-700);
+ --jp-mirror-editor-header-color: var(--md-blue-500);
+ --jp-mirror-editor-quote-color: var(--md-green-300);
+ --jp-mirror-editor-link-color: var(--md-blue-700);
+ --jp-mirror-editor-error-color: #f00;
+ --jp-mirror-editor-hr-color: #999;
+
+ /*
+ RTC user specific colors.
+ These colors are used for the cursor, username in the editor,
+ and the icon of the user.
+ */
+
+ --jp-collaborator-color1: #ad4a00;
+ --jp-collaborator-color2: #7b6a00;
+ --jp-collaborator-color3: #007e00;
+ --jp-collaborator-color4: #008772;
+ --jp-collaborator-color5: #0079b9;
+ --jp-collaborator-color6: #8b45c6;
+ --jp-collaborator-color7: #be208b;
+
+ /* Vega extension styles */
+
+ --jp-vega-background: var(--md-grey-400);
+
+ /* Sidebar-related styles */
+
+ --jp-sidebar-min-width: 250px;
+
+ /* Search-related styles */
+
+ --jp-search-toggle-off-opacity: 0.6;
+ --jp-search-toggle-hover-opacity: 0.8;
+ --jp-search-toggle-on-opacity: 1;
+ --jp-search-selected-match-background-color: rgb(255, 225, 0);
+ --jp-search-selected-match-color: black;
+ --jp-search-unselected-match-background-color: var(
+ --jp-inverse-layout-color0
+ );
+ --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
+
+ /* scrollbar related styles. Supports every browser except Edge. */
+
+ /* colors based on JetBrain's Darcula theme */
+
+ --jp-scrollbar-background-color: #3f4244;
+ --jp-scrollbar-thumb-color: 88, 96, 97; /* need to specify thumb color as an RGB triplet */
+ --jp-scrollbar-endpad: 3px; /* the minimum gap between the thumb and the ends of a scrollbar */
+
+ /* hacks for setting the thumb shape. These do nothing in Firefox */
+
+ --jp-scrollbar-thumb-margin: 3.5px; /* the space in between the sides of the thumb and the track */
+ --jp-scrollbar-thumb-radius: 9px; /* set to a large-ish value for rounded endcaps on the thumb */
+
+ /* Icon colors that work well with light or dark backgrounds */
+ --jp-icon-contrast-color0: var(--md-purple-600);
+ --jp-icon-contrast-color1: var(--md-green-600);
+ --jp-icon-contrast-color2: var(--md-pink-600);
+ --jp-icon-contrast-color3: var(--md-blue-600);
+
+ /* Button colors */
+ --jp-accept-color-normal: var(--md-blue-700);
+ --jp-accept-color-hover: var(--md-blue-800);
+ --jp-accept-color-active: var(--md-blue-900);
+ --jp-warn-color-normal: var(--md-red-700);
+ --jp-warn-color-hover: var(--md-red-800);
+ --jp-warn-color-active: var(--md-red-900);
+ --jp-reject-color-normal: var(--md-grey-600);
+ --jp-reject-color-hover: var(--md-grey-700);
+ --jp-reject-color-active: var(--md-grey-800);
+
+ /* File or activity icons and switch semantic variables */
+ --jp-jupyter-icon-color: #f37626;
+ --jp-notebook-icon-color: #f37626;
+ --jp-json-icon-color: var(--md-orange-500);
+ --jp-console-icon-background-color: var(--md-blue-500);
+ --jp-console-icon-color: white;
+ --jp-terminal-icon-background-color: var(--md-grey-200);
+ --jp-terminal-icon-color: var(--md-grey-800);
+ --jp-text-editor-icon-color: var(--md-grey-200);
+ --jp-inspector-icon-color: var(--md-grey-200);
+ --jp-switch-color: var(--md-grey-400);
+ --jp-switch-true-position-color: var(--md-orange-700);
+}
+</style>
+<style type="text/css">
+/* Force rendering true colors when outputing to pdf */
+* {
+ -webkit-print-color-adjust: exact;
+}
+
+/* Misc */
+a.anchor-link {
+ display: none;
+}
+
+/* Input area styling */
+.jp-InputArea {
+ overflow: hidden;
+}
+
+.jp-InputArea-editor {
+ overflow: hidden;
+}
+
+.cm-editor.cm-s-jupyter .highlight pre {
+/* weird, but --jp-code-padding defined to be 5px but 4px horizontal padding is hardcoded for pre.cm-line */
+ padding: var(--jp-code-padding) 4px;
+ margin: 0;
+
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ color: inherit;
+
+}
+
+.jp-OutputArea-output pre {
+ line-height: inherit;
+ font-family: inherit;
+}
+
+.jp-RenderedText pre {
+ color: var(--jp-content-font-color1);
+ font-size: var(--jp-code-font-size);
+}
+
+/* Hiding the collapser by default */
+.jp-Collapser {
+ display: none;
+}
+
+@page {
+ margin: 0.5in; /* Margin for each printed piece of paper */
+}
+
+@media print {
+ .jp-Cell-inputWrapper,
+ .jp-Cell-outputWrapper {
+ display: block;
+ }
+}
+</style>
+<!-- Load mathjax -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML-full,Safe"> </script>
+<!-- MathJax configuration -->
+<script type="text/x-mathjax-config">
+ init_mathjax = function() {
+ if (window.MathJax) {
+ // MathJax loaded
+ MathJax.Hub.Config({
+ TeX: {
+ equationNumbers: {
+ autoNumber: "AMS",
+ useLabelIds: true
+ }
+ },
+ tex2jax: {
+ inlineMath: [ ['$','$'], ["\\(","\\)"] ],
+ displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
+ processEscapes: true,
+ processEnvironments: true
+ },
+ displayAlign: 'center',
+ CommonHTML: {
+ linebreaks: {
+ automatic: true
+ }
+ }
+ });
+
+ MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
+ }
+ }
+ init_mathjax();
+ </script>
+<!-- End of mathjax configuration --><script type="module">
+ document.addEventListener("DOMContentLoaded", async () => {
+ const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
+ // do not load mermaidjs if not needed
+ if (!diagrams.length) {
+ return;
+ }
+ const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
+ const parser = new DOMParser();
+
+ mermaid.initialize({
+ maxTextSize: 100000,
+ maxEdges: 100000,
+ startOnLoad: false,
+ fontFamily: window
+ .getComputedStyle(document.body)
+ .getPropertyValue("--jp-ui-font-family"),
+ theme: document.querySelector("body[data-jp-theme-light='true']")
+ ? "default"
+ : "dark",
+ });
+
+ let _nextMermaidId = 0;
+
+ function makeMermaidImage(svg) {
+ const img = document.createElement("img");
+ const doc = parser.parseFromString(svg, "image/svg+xml");
+ const svgEl = doc.querySelector("svg");
+ const { maxWidth } = svgEl?.style || {};
+ const firstTitle = doc.querySelector("title");
+ const firstDesc = doc.querySelector("desc");
+
+ img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
+ if (maxWidth) {
+ img.width = parseInt(maxWidth);
+ }
+ if (firstTitle) {
+ img.setAttribute("alt", firstTitle.textContent);
+ }
+ if (firstDesc) {
+ const caption = document.createElement("figcaption");
+ caption.className = "sr-only";
+ caption.textContent = firstDesc.textContent;
+ return [img, caption];
+ }
+ return [img];
+ }
+
+ async function makeMermaidError(text) {
+ let errorMessage = "";
+ try {
+ await mermaid.parse(text);
+ } catch (err) {
+ errorMessage = `${err}`;
+ }
+
+ const result = document.createElement("details");
+ result.className = 'jp-RenderedMermaid-Details';
+ const summary = document.createElement("summary");
+ summary.className = 'jp-RenderedMermaid-Summary';
+ const pre = document.createElement("pre");
+ const code = document.createElement("code");
+ code.innerText = text;
+ pre.appendChild(code);
+ summary.appendChild(pre);
+ result.appendChild(summary);
+
+ const warning = document.createElement("pre");
+ warning.innerText = errorMessage;
+ result.appendChild(warning);
+ return [result];
+ }
+
+ async function renderOneMarmaid(src) {
+ const id = `jp-mermaid-${_nextMermaidId++}`;
+ const parent = src.parentNode;
+ let raw = src.textContent.trim();
+ const el = document.createElement("div");
+ el.style.visibility = "hidden";
+ document.body.appendChild(el);
+ let results = null;
+ let output = null;
+ try {
+ let { svg } = await mermaid.render(id, raw, el);
+ svg = cleanMermaidSvg(svg);
+ results = makeMermaidImage(svg);
+ output = document.createElement("figure");
+ results.map(output.appendChild, output);
+ } catch (err) {
+ parent.classList.add("jp-mod-warning");
+ results = await makeMermaidError(raw);
+ output = results[0];
+ } finally {
+ el.remove();
+ }
+ parent.classList.add("jp-RenderedMermaid");
+ parent.appendChild(output);
+ }
+
+
+ /**
+ * Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
+ */
+ function cleanMermaidSvg(svg) {
+ return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
+ }
+
+
+ /**
+ * A regular expression for all void elements, which may include attributes and
+ * a slash.
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
+ *
+ * Of these, only `<br>` is generated by Mermaid in place of `\n`,
+ * but _any_ "malformed" tag will break the SVG rendering entirely.
+ */
+ const RE_VOID_ELEMENT =
+ /<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
+
+ /**
+ * Ensure a void element is closed with a slash, preserving any attributes.
+ */
+ function replaceVoidElement(match, tag, rest) {
+ rest = rest.trim();
+ if (!rest.endsWith('/')) {
+ rest = `${rest} /`;
+ }
+ return `<${tag} ${rest}>`;
+ }
+
+ void Promise.all([...diagrams].map(renderOneMarmaid));
+ });
+</script>
+<style>
+ .jp-Mermaid:not(.jp-RenderedMermaid) {
+ display: none;
+ }
+
+ .jp-RenderedMermaid {
+ overflow: auto;
+ display: flex;
+ }
+
+ .jp-RenderedMermaid.jp-mod-warning {
+ width: auto;
+ padding: 0.5em;
+ margin-top: 0.5em;
+ border: var(--jp-border-width) solid var(--jp-warn-color2);
+ border-radius: var(--jp-border-radius);
+ color: var(--jp-ui-font-color1);
+ font-size: var(--jp-ui-font-size1);
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ }
+
+ .jp-RenderedMermaid figure {
+ margin: 0;
+ overflow: auto;
+ max-width: 100%;
+ }
+
+ .jp-RenderedMermaid img {
+ max-width: 100%;
+ }
+
+ .jp-RenderedMermaid-Details > pre {
+ margin-top: 1em;
+ }
+
+ .jp-RenderedMermaid-Summary {
+ color: var(--jp-warn-color2);
+ }
+
+ .jp-RenderedMermaid:not(.jp-mod-warning) pre {
+ display: none;
+ }
+
+ .jp-RenderedMermaid-Summary > pre {
+ display: inline-block;
+ white-space: normal;
+ }
+</style>
+<!-- End of mermaid configuration --></head>
+<body class="jp-Notebook" data-jp-theme-light="false" data-jp-theme-name="JupyterLab Dark">
+<main>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d745c9ae-31f8-47e5-83df-42c0a39e700e">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h1 id="Setting-up-FastAPI-with-Uvicorn-and-Openrc-to-serve-Jupyter-Notebook-generated-html-files.">Setting up FastAPI with Uvicorn and Openrc to serve Jupyter Notebook generated html files.<a class="anchor-link" href="#Setting-up-FastAPI-with-Uvicorn-and-Openrc-to-serve-Jupyter-Notebook-generated-html-files.">¶</a></h1>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=5dec85d7-1ac2-4bdd-a5c4-40dc8ec80c1f">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h2 id="Prerequisites:">Prerequisites:<a class="anchor-link" href="#Prerequisites:">¶</a></h2><ul>
+<li>system with openrc</li>
+<li>fastapi</li>
+<li>uvicorn</li>
+<li>jupyter notebook (optional)</li>
+<li>nginx</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=3d5a9177-1fcd-4bc6-97dd-f85c712e8a9e">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h2 id="Creating-FastAPI-application">Creating FastAPI application<a class="anchor-link" href="#Creating-FastAPI-application">¶</a></h2>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=6f2751d9-cdfe-417e-8a30-8768e2fd828e">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Create a directory for project and enter it:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=58fe2a08-afb0-400b-a8a2-063da88a2559">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="o">~/</span><span class="n">Fastapi_blog</span><span class="o">/</span><span class="n">static</span> <span class="o">&amp;&amp;</span> <span class="n">cd</span> <span class="o">~/</span><span class="n">Fastapi_blog</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2ad52653-7f16-489f-8a4b-e2fd08f90d05">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Create a file containing code and html template folder and template for the main page:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=27e461b5-279f-4143-ac69-5ef61b75e6af">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">touch</span> <span class="n">main</span><span class="o">.</span><span class="n">py</span>
+<span class="err">$</span> <span class="n">mkdir</span> <span class="n">templates</span>
+<span class="err">$</span> <span class="n">touch</span> <span class="n">templates</span><span class="o">/</span><span class="n">main_page</span><span class="o">.</span><span class="n">html</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9c3d9c08-81ea-43b0-bea8-8486adb06d85">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>main_page.html can be really minimal:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=e6a61c2c-708e-462d-b487-0ddd23b5e08a">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="o">&lt;</span><span class="n">html</span><span class="o">&gt;</span>
+<span class="o">&lt;</span><span class="n">body</span><span class="o">&gt;</span>
+ <span class="o">&lt;</span><span class="n">h1</span><span class="o">&gt;</span><span class="n">List</span> <span class="n">of</span> <span class="n">articles</span><span class="o">&lt;/</span><span class="n">h1</span><span class="o">&gt;</span>
+ <span class="o">&lt;</span><span class="n">h2</span><span class="o">&gt;</span><span class="n">Number</span> <span class="n">of</span> <span class="n">posts</span><span class="p">:</span> <span class="p">{{</span> <span class="n">files</span><span class="o">|</span><span class="n">length</span> <span class="p">}}</span><span class="o">&lt;/</span><span class="n">h2</span><span class="o">&gt;</span>
+ <span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="n">files</span> <span class="o">%</span><span class="p">}</span>
+ <span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">files</span> <span class="o">%</span><span class="p">}</span>
+ <span class="o">&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">"static/html/{{ item }}"</span><span class="o">&gt;</span><span class="p">{{</span> <span class="n">item</span> <span class="p">}}</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;&lt;</span><span class="n">br</span><span class="o">&gt;</span>
+ <span class="p">{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span>
+ <span class="p">{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span>
+<span class="o">&lt;/</span><span class="n">body</span><span class="o">&gt;</span>
+<span class="o">&lt;/</span><span class="n">html</span><span class="o">&gt;</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=b15b4217-9343-4c73-aa44-f069f6d5e776">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Create basic FastAPI application serving static files at '/'. I want that as I'll be serving if from behind Nginx reverse proxy. Prefix will be set with Nginx conf file</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=90f95ae9-4079-440e-9f40-2889541cb727">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
+
+<span class="sd">"""</span>
+<span class="sd">FastAPI site serving static html files.</span>
+<span class="sd">"""</span>
+
+<span class="kn">from</span> <span class="nn">os</span> <span class="kn">import</span> <span class="n">listdir</span>
+<span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">FastAPI</span>
+<span class="kn">from</span> <span class="nn">fastapi.staticfiles</span> <span class="kn">import</span> <span class="n">StaticFiles</span>
+<span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">FastAPI</span><span class="p">,</span> <span class="n">Request</span>
+<span class="kn">from</span> <span class="nn">fastapi.staticfiles</span> <span class="kn">import</span> <span class="n">StaticFiles</span>
+<span class="kn">from</span> <span class="nn">fastapi.templating</span> <span class="kn">import</span> <span class="n">Jinja2Templates</span>
+
+
+<span class="n">ARTICLES</span> <span class="o">=</span> <span class="s1">'static/html'</span>
+<span class="n">templates</span> <span class="o">=</span> <span class="n">Jinja2Templates</span><span class="p">(</span><span class="n">directory</span><span class="o">=</span><span class="s2">"templates"</span><span class="p">)</span>
+<span class="n">LIST_OF_ARTICLES</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">listdir</span><span class="p">(</span><span class="n">ARTICLES</span><span class="p">)</span> <span class="k">if</span> <span class="n">i</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'.html'</span><span class="p">)]</span>
+
+<span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
+
+<span class="n">app</span><span class="o">.</span><span class="n">mount</span><span class="p">(</span><span class="s2">"/"</span><span class="p">,</span> <span class="n">StaticFiles</span><span class="p">(</span><span class="n">directory</span><span class="o">=</span><span class="s2">"static"</span><span class="p">,</span> <span class="n">html</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s2">"static"</span><span class="p">)</span>
+
+
+<span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
+<span class="k">async</span> <span class="k">def</span> <span class="nf">main_page</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
+<span class="w"> </span><span class="sd">"""Generate main page"""</span>
+ <span class="k">return</span> <span class="n">templates</span><span class="o">.</span><span class="n">TemplateResponse</span><span class="p">(</span>
+ <span class="s2">"main_page.html"</span><span class="p">,</span> <span class="p">{</span>
+ <span class="s2">"request"</span><span class="p">:</span> <span class="n">request</span><span class="p">,</span>
+ <span class="s2">"files"</span><span class="p">:</span> <span class="n">LIST_OF_ARTICLES</span><span class="p">,</span>
+ <span class="s2">"static"</span><span class="p">:</span> <span class="n">ARTICLES</span><span class="p">,</span>
+ <span class="p">}</span>
+ <span class="p">)</span>
+
+
+<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
+ <span class="n">uvicorn</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
+ <span class="n">app</span><span class="p">,</span>
+ <span class="n">port</span><span class="o">=</span><span class="mi">8000</span><span class="p">,</span>
+ <span class="n">host</span><span class="o">=</span><span class="s1">'127.0.0.1'</span><span class="p">,</span>
+ <span class="n">log_level</span><span class="o">=</span><span class="s2">"info"</span><span class="p">,</span>
+ <span class="c1"># uds="/run/tech_blog.sock", &lt;- uncomment if you want Unix socket</span>
+ <span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0def2ab2-e037-4997-b472-59784554d12f">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Test run:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=7e4b78e2-9412-40a0-ad23-b1ebdc32b34d">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">uvicorn</span> <span class="n">main</span><span class="p">:</span><span class="n">app</span> <span class="o">--</span><span class="n">reload</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=1ff45780-0f1a-4f8a-a50d-7c52ad08f52d">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>If we try to run it as regular user with 'uds="/run/tech_blog.sock"' line uncommented we should get permission denied error as we don't have rights to create files in /run.</p>
+<p>In browser, take a peek at <a href="http://localhost:8000">http://localhost:8000</a> and you should already see something.</p>
+<p>Create a file with a test html code:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=f2cb8101-4914-494e-9c6e-222cd9cdb148">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">touch</span> <span class="n">static</span><span class="o">/</span><span class="n">test</span><span class="o">.</span><span class="n">html</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0496d679-15a2-4610-815b-9e1b57285ebf">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Put this in it:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=3db82cd2-3f9f-4c74-b98b-2cf1b19dd353">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="o">&lt;</span><span class="n">html</span><span class="o">&gt;</span>
+<span class="o">&lt;</span><span class="n">body</span><span class="o">&gt;</span>
+
+<span class="o">&lt;</span><span class="n">h1</span><span class="o">&gt;</span><span class="n">Fun</span> <span class="n">stuff</span> <span class="n">comming</span> <span class="n">up</span><span class="o">&lt;/</span><span class="n">h1</span><span class="o">&gt;</span>
+<span class="o">&lt;</span><span class="n">p</span><span class="o">&gt;</span><span class="n">Bob</span><span class="s1">'s your uncle!&lt;/p&gt;</span>
+
+<span class="o">&lt;/</span><span class="n">body</span><span class="o">&gt;</span>
+<span class="o">&lt;/</span><span class="n">html</span><span class="o">&gt;</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=fd3b37dc-e3d3-48a0-a496-7f0060bc69c0">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Visit <a href="http://localhost:8000/">http://localhost:8000/</a>
+You should see the main page with test article and you should be able to navigate to the article clicking the link.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=cba92c27-c741-4959-88c5-b9790de7eddf">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h2 id="Jupyter-side-note">Jupyter side note<a class="anchor-link" href="#Jupyter-side-note">¶</a></h2>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=f7fefa06-9d13-4793-8bb6-3f96f2171f25">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>To write stuff with Jupyter Notebook start it up:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=f7eadb7f-e811-4bee-a8d7-68c68ec9f9ca">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">jupyter</span><span class="o">-</span><span class="n">notebook</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d0ce0f2c-e633-4974-8ed4-1f4b3a021d6a">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>In browser a new tab with jupyter notebook should have started. Write your fun stuff. Save it. If you don't want to execute cell content convert to html with:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=7a4da315-d47b-4bec-8b17-f2cbf494f4d4">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">jupyter</span> <span class="n">nbconvert</span> <span class="o">--</span><span class="n">to</span> <span class="n">html</span> <span class="o">&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">your</span> <span class="n">file</span><span class="o">&gt;</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=80c327c4-d985-47d6-94fa-10e8e5b7d2b4">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>If you want to execute cell content convert with:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=54af67cd-0d26-4373-9647-8943dec2f4ab">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">jupyter</span> <span class="n">nbconvert</span> <span class="o">--</span><span class="n">execute</span> <span class="o">--</span><span class="n">to</span> <span class="n">html</span> <span class="o">&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">your</span> <span class="n">file</span><span class="o">&gt;</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=f8653115-4f64-40a7-9d72-0e088a607a07">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Want to change theme to dark?</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=52d5866b-813d-4ef3-9886-c775e1c67d5b">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">jupyter</span> <span class="n">nbconvert</span> <span class="o">--</span><span class="n">execute</span> <span class="o">--</span><span class="n">to</span> <span class="n">html</span> <span class="o">&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">your</span> <span class="n">file</span><span class="o">&gt;</span> <span class="o">--</span><span class="n">HTMLExporter</span><span class="o">.</span><span class="n">theme</span><span class="o">=</span><span class="n">dark</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e73f69fc-6c8a-4617-90bd-a0e788b89756">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Now put it in your <code>static</code> folder. It will be served by your FastAPI application.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c56ef398-9f2e-4253-bc37-22b5926b8c7c">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h2 id="Bash-script">Bash script<a class="anchor-link" href="#Bash-script">¶</a></h2>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=f37aba78-c09b-4807-ba02-c72f48b9dba5">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>In order to run our python script with Openrc first we need to create a Bash script:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=6f4052ac-f582-47fa-b702-34f1341dec88">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="ch">#!/usr/bin/env bash</span>
+
+<span class="n">cd</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">discordia</span><span class="o">/</span><span class="n">Fastapi_blog</span> <span class="o">||</span> <span class="n">exit</span> <span class="c1"># If your login is different, change home directory name.</span>
+<span class="n">exec</span> <span class="n">python</span> <span class="n">main</span><span class="o">.</span><span class="n">py</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=dedf511e-f6fd-4c41-8b02-a2eb25e9604a">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Save it (here as fastapi_blog.sh) as a root user to /usr/local/bin and make executable:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=7c6e7b2d-33a3-4305-917b-c24155a648f2">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># chmod ugo+x /usr/local/bin/fastapi_blog.sh</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=1bf1a799-25b0-4008-b1d2-1a555cef79c5">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h2 id="Openrc-service-file">Openrc service file<a class="anchor-link" href="#Openrc-service-file">¶</a></h2>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=43794484-8e10-400d-a598-d1acefd455ee">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Now create a minimal service file</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=f14c6b71-3f1f-4dd8-b62d-d79721a8d6fe">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="ch">#!/sbin/openrc-run</span>
+
+<span class="n">supervisor</span><span class="o">=</span><span class="n">supervise</span><span class="o">-</span><span class="n">daemon</span>
+<span class="n">command</span><span class="o">=</span><span class="s2">"/usr/local/bin/fastapi_blog.sh"</span>
+<span class="n">pidfile</span><span class="o">=</span><span class="s2">"/run/$</span><span class="si">{RC_SVCNAME}</span><span class="s2">.pid"</span>
+<span class="n">command_args</span><span class="o">=</span><span class="s2">"-p $</span><span class="si">{pidfile}</span><span class="s2">"</span>
+<span class="n">command_background</span><span class="o">=</span><span class="kc">True</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=8982eef9-a095-4b57-b0a6-5d59ac12be78">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Save it as a root user in /etc/init.d and make executable:</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=6336a60f-6e8a-489b-8bc8-9b9e6f8e02fc">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>Save it as a root user in /etc/init.d and make executable:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=445a5744-8e71-4104-8601-ad444ca0f9c1">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># chmod ugo+x /etc/init.d/fastapi_blog</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0985e123-559c-4f9b-8bfc-7f75e9251756">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>You should be able to start/restart/stop it normally:</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=c856613b-8541-43e4-b7e0-1d0f2a4a6d22">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># rc-service fastapi_blog start</span>
+<span class="c1"># rc-service fastapi_blog restart</span>
+<span class="c1"># rc-service fastapi_blog stop</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=719552bc-b736-41db-939c-6a1010ca9557">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>If you're using Unix socket, check for existence of /run/fastapi_blog.sock.
+Else navigate to <a href="http://127.0.0.1:8000/test.html">http://127.0.0.1:8000/test.html</a> to see page is indeed there.</p>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b8f408bf-120c-4adf-8e8b-3dc019a015ae">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="err">$</span> <span class="n">ps</span> <span class="n">aux</span> <span class="o">|</span> <span class="n">grep</span> <span class="s2">"python main.py"</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=13c17523-3603-4b8a-b8a2-563ae6dc27d5">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>You want to see only one 'python main.py'.
+At first I did not use exec which resulted in lingering processess. You don't want that.</p>
+<p>Now you can plug it in to your preffered proxy server using either a unix socket or a TCP socket.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=3134cb86-be0f-456c-b755-cd4f43ef2810">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p>If you're using unix socket, check for existence of /run/fastapi_blog.sock, else either use lsof to see what's using port 8000 or navigate to <a href="http://127.0.0.1:8000/test.html">http://127.0.0.1:8000/test.html</a></p>
+</div>
+</div>
+</div>
+</div>
+</main>
+</body>
+</html>