Seperate ipydrawio-widgets package for kernel-only installs (#89)

pull/90/head
Nicholas Bollweg 2022-01-19 16:32:13 -06:00 zatwierdzone przez GitHub
rodzic 8b4496554e
commit 0bd8b35499
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
56 zmienionych plików z 1629 dodań i 1066 usunięć

Wyświetl plik

@ -18,6 +18,7 @@ name: ipydrawio-demo
channels:
- conda-forge
- nodefaults
dependencies:
- python >=3.7
@ -58,7 +59,7 @@ dependencies:
- sphinx-jsonschema
- sphinxext-rediraffe
- pip:
- jupyterlite ==0.1.0a19
- jupyterlite ==0.1.0a20
### ipydrawio-docs-deps ###

Wyświetl plik

@ -2,7 +2,7 @@
black
doit
flake8
ipywidgets >=7.6
ipywidgets >=7.6,<8
isort >=5
jsonpointer
jupyterlab ==3.*

1
.gitignore vendored
Wyświetl plik

@ -27,5 +27,6 @@ packages/ipydrawio-webpack/dio/
py_packages/**/src/*/ext/
py_packages/ipydrawio-export/ipydrawio-export-*
py_packages/ipydrawio/ipydrawio-*
py_packages/ipydrawio-widgets/src/ipydrawio_widgets/js/**/*
untitled*
Untitled*

Wyświetl plik

@ -2,20 +2,25 @@
## Unreleased
### ipydrawio-widgets 1.2.0
- new kernel-only package for headless kernel installs [#63]
- adds `cell_ids` to widget diagrams [#88]
### ipydrawio 1.2.0
- fixes selection in widget diagrams with more than 10 shapes [#85]
- adds `cell_ids` to widget diagrams [#88]
- `jupyter ipydrawio clean` can now cleans `.ipynb` metadata and outputs [#88]
- minimum supported python is now to 3.7
#### @deathbeds/ipydrawio 1.2.0
- fixes selection in widget diagrams with more than 10 shapes [#85]
#### @deathbeds/ipydrawio-notebook 1.2.0
#### @deathbeds/ipydrawio-webpack 16.2.400
#### @deathbeds/ipydrawio-webpack 16.4.0
- updates to drawio v16.2.400
- updates to drawio v16.4.0
#### @deathbeds/ipydrawio-jupyter-templates 1.2.0
@ -25,6 +30,7 @@
#### @deathbeds/ipydrawio-pdf 1.2.0
[#63]: https://github.com/deathbeds/ipydrawio/issues/63
[#85]: https://github.com/deathbeds/ipydrawio/issues/85
[#88]: https://github.com/deathbeds/ipydrawio/issues/88

Wyświetl plik

@ -1 +1,21 @@
<mxGraphModel dx="1856" dy="1259" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="#ffffff"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="365" y="750" width="120" as="geom8etry"/></mxCell><mxCell id="3" value="u" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="310" y="430" width="180" height="190" as="geometry"/></mxCell><mxCell id="4" value="" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1"><mxGeometry x="350" y="130" width="230" height="230" as="geometry"/></mxCell><mxCell id="5" value="" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;size=0.4867722511291504;" vertex="1" parent="1"><mxGeometry x="120" y="230" width="120" height="80" as="geometry"/></mxCell><mxCell id="6" value="" style="shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;" vertex="1" parent="1"><mxGeometry x="190" y="445" width="120" height="80" as="geometry"/></mxCell></root></mxGraphModel>
<mxGraphModel dx="1856" dy="1259" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="#ffffff">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="365" y="750" width="120" as="geom8etry"/>
</mxCell>
<mxCell id="3" value="u" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="310" y="430" width="180" height="190" as="geometry"/>
</mxCell>
<mxCell id="4" value="" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="350" y="130" width="230" height="230" as="geometry"/>
</mxCell>
<mxCell id="5" value="" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;size=0.4867722511291504;" vertex="1" parent="1">
<mxGeometry x="120" y="230" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;" vertex="1" parent="1">
<mxGeometry x="190" y="445" width="120" height="80" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>

Wyświetl plik

@ -1 +1,26 @@
<mxGraphModel dx="2190" dy="0" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="#ffffff"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;" parent="1" vertex="1"><mxGeometry x="305" y="270" width="120" height="80" as="geometry"/></mxCell><mxCell id="5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.25;exitY=0;jettySize=auto;orthogonalLoop=1;" parent="1" source="3" target="2" edge="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="3" value="" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;" parent="1" vertex="1"><mxGeometry x="540" y="340" width="120" height="80" as="geometry"/></mxCell><mxCell id="6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=0;jettySize=auto;orthogonalLoop=1;" parent="1" source="4" target="3" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="380" y="430"/><mxPoint x="410" y="430"/></Array></mxGeometry></mxCell><mxCell id="4" value="" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;" parent="1" vertex="1"><mxGeometry x="320" y="460" width="120" height="80" as="geometry"/></mxCell></root></mxGraphModel>
<mxGraphModel dx="2190" dy="0" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="#ffffff">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;" parent="1" vertex="1">
<mxGeometry x="305" y="270" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.25;exitY=0;jettySize=auto;orthogonalLoop=1;" parent="1" source="3" target="2" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="3" value="" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;" parent="1" vertex="1">
<mxGeometry x="540" y="340" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=0;jettySize=auto;orthogonalLoop=1;" parent="1" source="4" target="3" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="380" y="430"/>
<mxPoint x="410" y="430"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4" value="" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;" parent="1" vertex="1">
<mxGeometry x="320" y="460" width="120" height="80" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>

Wyświetl plik

@ -50,7 +50,7 @@ Create Diagram Widget
[Arguments] ${label} ${add multiple}=${FALSE}
Set Screenshot Directory ${OUTPUT DIR}${/}screenshots${/}widget${/}${label}
Launch Untitled Notebook
Add and Run JupyterLab Code Cell import ipywidgets as W, traitlets as T; from ipydrawio import Diagram
Add and Run JupyterLab Code Cell import ipywidgets as W, traitlets as T; from ipydrawio_widgets import Diagram
Add and Run JupyterLab Code Cell diagram = Diagram(layout\=dict(min_height\="60vh"));
IF ${add multiple}
Create Linked SelectMultiple

Wyświetl plik

@ -17,7 +17,6 @@ Documentation A work-in-progress set of keywords for JupyterLite
Library OperatingSystem
Library Process
Library ../ports.py
Variables ../demo.py
*** Variable ***
${NEXT LITE LOG} ${0}
@ -74,7 +73,7 @@ Clean Up Lite Test
Start Lite Suite
[Documentation] Ensure lite assets are available
Set Screenshot Directory ${OUTPUT DIR}${/}lite
Start JupyterLite Server ${DEMO}
Start JupyterLite Server ${ROOT}${/}demo
Clean Up Lite Suite
[Documentation] Clean up after lite

Wyświetl plik

@ -13,6 +13,11 @@ package:
version: {{ version }}
source:
- folder: {{ name }}-widgets
url: file://{{ url_base }}/{{ name }}-widgets-{{ version }}.tar.gz
# url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
# sha256:
- folder: {{ name }}
url: file://{{ url_base }}/{{ name }}-{{ version }}.tar.gz
# url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
@ -39,6 +44,36 @@ test:
- echo "tests in outputs"
outputs:
- name: {{ name }}-widgets
version: {{ version }}
build:
number: {{ build_number }}
noarch: python
script:
- cd ipydrawio-widgets && {{ PYTHON }} -m pip install . -vv --no-deps
requirements:
host:
- pip
- python >=3.7
run:
- ipywidgets >=7.6,<8
- python >=3.7
test:
imports:
- ipydrawio_widgets
requires:
- pip
- pytest-console-scripts
- pytest-cov
commands:
- pip check
- pytest -vv --pyargs ipydrawio_widgets --cov=ipydrawio_widgets --cov-report=term-missing:skip-covered
about:
home: https://github.com/deathbeds/ipydrawio
summary: Draw.io Diagrams as Jupyter Widgets (kernel only)
license: Apache-2.0
license_file: ipydrawio-widgets/LICENSE.txt
- name: ipydrawio
version: {{ version }}
build:
@ -53,7 +88,7 @@ outputs:
- pip
- python >=3.7
run:
- ipywidgets >=7.6,<8
- ipydrawio-widgets =={{ version }}.*
- jupyterlab ==3.*
- jupyterlab_widgets >=1
- lxml

Wyświetl plik

@ -14,6 +14,8 @@
"lite_dir": ".",
"output_archive": "../build/demo/ipydrawio-lite-1.2.0.tgz",
"output_dir": "../build/demo",
"piplite_urls": ["../py_packages/ipydrawio/dist/ipydrawio-1.2.0-py3-none-any.whl"]
"piplite_urls": [
"../py_packages/ipydrawio-widgets/dist/ipydrawio_widgets-1.2.0-py3-none-any.whl"
]
}
}

Wyświetl plik

@ -31,17 +31,17 @@
"source": [
"## Opening a Diagram Document\n",
"- Find a _Diagram_ file in the JupyterLab _File Browser_ <kbd>Ctrl+Shift+F</kbd>\n",
"- Double click it"
"- Double click it or drag-and-drop it to the main work area"
]
},
{
"cell_type": "markdown",
"id": "forced-scheduling",
"id": "39f79606-eb20-4619-aebb-e975c7321e18",
"metadata": {},
"source": [
"### Other Formats\n",
"\n",
"Editable `drawio` XML can be embedded inside `png` and `svg` images and notebooks. If they have a compound suffix, like `.dio.png`, `.dio.ipynb`, the _Diagram Editor_ will be opened by default.\n",
"Editable `drawio` XML can be embedded inside `.png` and `.svg` images and `.ipynb` notebooks. If they have a compound suffix, like `.dio.png`, `.dio.ipynb`, the _Diagram Editor_ will be opened by default.\n",
"- right click on the file in the _File Browser_\n",
"- select _Open With..._\n",
"- select one of the _Diagram_ options"
@ -54,7 +54,7 @@
"source": [
"## Configuration\n",
"\n",
"In the JupyterLab _Advanced Settings_ Panel <kbd>Ctrl+,</kbd>, the _Diagrams Documents_ section offers many, many options."
"In the JupyterLab _Advanced Settings_ Panel <kbd>Ctrl+,</kbd>, the _Diagrams Documents_ section offers many, many options. See the [schema](./api/schema.rst) documentation for the most well-understood of options."
]
}
],

Wyświetl plik

@ -38,6 +38,16 @@
"MIMETYPE = \"application/x-drawio\""
]
},
{
"cell_type": "markdown",
"id": "3aa64017-9bc4-422a-9fa5-7de9377285f4",
"metadata": {},
"source": [
"```{note}\n",
"This mimetype is also available as `ipydrawio.constants.MIMETYPE`.\n",
"```\n"
]
},
{
"cell_type": "code",
"execution_count": null,

Wyświetl plik

@ -19,7 +19,7 @@
},
"outputs": [],
"source": [
"try: await __import__(\"piplite\").install('ipydrawio'); \n",
"try: await __import__(\"piplite\").install('ipydrawio-widgets'); \n",
"except: pass"
]
},
@ -33,7 +33,7 @@
"from ipywidgets import HBox, VBox, Textarea, jslink, jsdlink, FloatSlider, IntSlider, Checkbox, Text, SelectMultiple, Accordion\n",
"from lxml import etree\n",
"from traitlets import observe, link, dlink\n",
"from ipydrawio import Diagram\n",
"from ipydrawio_widgets import Diagram\n",
"\n",
"diagram = Diagram(layout=dict(min_height=\"80vh\", flex=\"1\"))\n",
"box = HBox([diagram])\n",

File diff suppressed because one or more lines are too long

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 68 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 326 KiB

File diff suppressed because one or more lines are too long

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 148 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 634 KiB

File diff suppressed because one or more lines are too long

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 83 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 142 KiB

File diff suppressed because one or more lines are too long

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 308 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 308 KiB

Wyświetl plik

@ -1,85 +1,85 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1001px" height="361px" viewBox="-0.5 -0.5 1001 361" content="&lt;mxfile version=&quot;14.7.3&quot; type=&quot;embed&quot;&gt;&#10; &lt;diagram id=&quot;5VtAhx_Kaj5QVmaxudvQ&quot; name=&quot;Page-1&quot;&gt;7VpNc5swEP01PqYjPk2OSZqmh3aaSabTY0aGtU2CESPk2PTXV4AEQsRfsTF2kxwy6LES0u57q0V4YN3MlncUJ9OfJIBoYKJgObC+DkzTsS/5/xzISmCI3BKY0DAoIaMGHsO/IEAk0HkYQNowZIRELEyaoE/iGHzWwDClZNE0G5Oo+dQET6AFPPo4aqN/woBNBWogVN/4DuFkKh7tOeLGDEtjAaRTHJCFAlm3A+uGEsLKq9nyBqLcd9IvZb9vK+5WE6MQs206eGWHVxzNxdrEvFgmFwsBX7toEsqmZEJiHN3W6DUl8ziAfETEW7XND0ISDhocfAbGMhFIPGeEQ+2pitmnZE598XDBC4bpBITVsITyaSndxPLugMyA0YwbUIgwC1+bIcMi8pPKTnS9ohRnikFCwpilysj3OcANBIdNW0Qwk9TUHL3J3mvY84tyBrKlLKWGiuAVzd8p0F+j55zcJorwiOurnHb2lGD/hfMvFZ6jAA8FnRQvyOi7yvoEMZTA4yicxPzS5wECyiPmkyjCSRqOCgtUIDHDYZzfLcJMwZ/TlDv9AdIy2GhdpF+BMliujaK4q3lPOA8tFPW5ApsqwpPd3gq74nrVs7ypOHets8MkCyhehKTp1eHZeLXyY6b58Dh+bWWjy/PLRnJLOnA6auWPam+RodJDUM5T9KqjsHNec3bMa+vtD5XXKqk9wTLhMW0qzkCDc5XccTNZu2A4dckZsr5TNeedRAng7VgCtOw7KgG23/8N1W+nrRuvV93sWAGUBO3er+Mwim5IRGgxrhVg8MY+x1NGyQsod1zfg9H4MJFwdRr3XDTIV6mzSmHSruuywXW1YA27KRv2zYWm223ZcLGAUZ4Ymzo1j5T/TkKnlf760ql5jjq1jqPToanpx0ZfkPIn53FisrXsjmUbEwYjQnTdWh9It5bZs27tc9St83/r1thRt+vtD6/bJBhrknV6kezY88F/U7Ijz7GdA72c6JLt+aVenlOdl2K7Odc/GcXuudPaZseKfZ4nGZfeBYNZwh0szw8qTh3pVPsktlwb9SzgbT7LxcFV/imTt2IS54INcDot9GqIxj1mPBhxgZjIqrwov1lyj1xvzgPvzaiakDcnBbRqG2/HTYmL80ZYJLZnqnCGWiXmaeFekRvab+FazrEsbaByza2BNuu6TZ1tDnR7os7WYt6VOsM2cxpHcEdnjq1/FTHey5xNAx2OOZKTH505q/aKnphzeSjm6AOtYM6uhY2jnzB66wsb3X7Pk782jbc5ZvoINFbPSD5p3DWN9zwJa9PY+qRx673jk8Zd03jP10zerH+7WJrXPwC1bv8B&lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1001px" height="361px" viewBox="-0.5 -0.5 1001 361" content="&lt;mxfile version=&quot;16.4.0&quot; type=&quot;embed&quot;&gt;&#10; &lt;diagram id=&quot;5VtAhx_Kaj5QVmaxudvQ&quot; name=&quot;Deployment&quot;&gt;7Vpdc6IwFP01PnYHCCB9rK7tPuzOdtrZ2cdOhKi0SJgQq+yv3wAJhuAHKoi27UvN5QaSe8653CT0wHC+eiAwmv3CHgp6huateuB7zzB0YJrsX2pJcktf03LDlPged1obnv1/iBuF28L3UFxypBgH1I/KRheHIXJpyQYJwcuy2wQH5adGcIoqhmcXBlXrX9+jM27VxTTSCz+QP53xRzsWvzCHwpkb4hn08FIygVEPDAnGNP81Xw1RkAZPxCXvd7/lajEwgkJap4OTd3iHwYLPjY+LJmKyyGNz501M6AxPcQiD0do6IHgReii9o8Zaa5+fGEfMqDPjK6I04UDCBcXMVB0qH32MF8TlD7c5upBMEffq56Z0WFI3Pr0HhOeIkoQ5EBRA6r+XIYMc+Wnhx7veEQITySHCfkhj6c6PqYE5cBIbJkcwEdRUAr3P3yn5sx/5CERLmsralIGXNf/EiPwev6bkNrQAjpnA8mEnLxF03xj/Yh45gtBTRicpCgJ9W5ofJ4YEPAz8ach+ugwgRBhiLg4CGMX+OPPQMktIoR+mVzOYCXIXJGZBf0JxDra2C+l3RCha7USRX1Wix4OnLSX12dw2k4Qnum2CXQq9HFnWlIK7M9h+lHgELn1cjmr/PFGNKcFvaIgDTLI7A3vojAb3zcS7iHCiRPc8Ea/kqdvry1PiZdVwoqpkluKtI6BSIcjHyXutUTg441kHZrzd/k1lvEKEL2gVMUzLWtS1XjdiHDiWaTWU/FQxnjf7VYuMSxejLmpCWY3ORZQNzoFlQ8W/pbKhfs2gy3G77KLB6VQ3B1YNOUHbj+vEDwIpT3kQORN3YznhOmg8aQYJW6Vxx+WEWH5dVQoTfm0XFLatgNVvp6A4NRcadrsFxc0SjdPEWNapcab8dxE6LfTXlU6Na9QpOI9O+4aiH1P7pkl/YhwXJltgtizbEFM0xljVLfhEugVGx7o1r1G31sfWrX6gbnf7N6/byJsokrU6kezEcZG7UbLjBhf1qmQ7XtSLHazrUmw7ZwEXo9gT37Sm0bJiXxdRwqR3Q9E8YgEW+wcFp860E34Rr1xT61jAdY7yQu8uPf5krRCHqWA9GM8yveq88QgpAyPMLIYGiiiKc04WkcH+PNBgRi3lAO2Et7aEi7UBFmE7MVVYfaUScxS4t+SG6ipcyTkAKDfKg1C50X5dV6lTZ0O3I+qcImaZOv0qc2pvCZ+HOaZ6XqIfy5x9N2qOOYKTn4w5tXfiOmLObVPMUW+0hTmHFjaWusPo7C5sVP8Td/6qNK6zzfQBaVx3o+qLxq3Q+MSdsCqNweekcd1V4BeNW6Fx68tMhhubp7K4BKY0o9bPoSvrwg1E3bpUVL/f6PpUBXS+16NI9ZjPq0r4X81nnzsrl2pvdQv22CUBUFalhnqke/SSgDXXXyvn7utvvsHoPw==&lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;">
<defs/>
<g>
<g id="cell-8">
<path d="M 160 20 L 200 20 L 200 100 L 233.63 100" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 238.88 100 L 231.88 103.5 L 233.63 100 L 231.88 96.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 160 20 L 200 20 L 200 100 L 233.63 100" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 238.88 100 L 231.88 103.5 L 233.63 100 L 231.88 96.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-6" content="&lt;UserObject label=&quot;py_packages&quot; treeRoot=&quot;1&quot;/&gt;" data-label="py_packages" data-treeRoot="1">
<rect x="0" y="0" width="160" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<rect x="0" y="0" width="160" height="40" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/>
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="79.5" y="24.5">py_packages</text>
</g>
</g>
<g id="cell-7" content="&lt;UserObject label=&quot;ipydrawio&quot;/&gt;" data-label="ipydrawio">
<rect x="240" y="80" width="160" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<rect x="240" y="80" width="160" height="40" fill="rgb(255, 255, 255)" stroke="#6c8ebf" pointer-events="all"/>
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="319.5" y="104.5">ipydrawio</text>
</g>
</g>
<g id="cell-9">
<path d="M 160 20 L 210 20 L 233.63 20" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 238.88 20 L 231.88 23.5 L 233.63 20 L 231.88 16.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 160 20 L 210 20 L 233.63 20" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 238.88 20 L 231.88 23.5 L 233.63 20 L 231.88 16.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-10" content="&lt;UserObject label=&quot;ipydrawio_export&quot;/&gt;" data-label="ipydrawio_export">
<rect x="240" y="0" width="160" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<rect x="240" y="0" width="160" height="40" fill="rgb(255, 255, 255)" stroke="#b85450" pointer-events="all"/>
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="319.5" y="24.5">ipydrawio_export</text>
</g>
</g>
<g id="cell-19">
<path d="M 840 20 L 800 20 L 800 100 L 766.37 100" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 100 L 768.12 96.5 L 766.37 100 L 768.12 103.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 840 20 L 800 20 L 800 100 L 766.37 100" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 100 L 768.12 96.5 L 766.37 100 L 768.12 103.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-11" content="&lt;UserObject label=&quot;packages&quot; treeRoot=&quot;1&quot;/&gt;" data-label="packages" data-treeRoot="1">
<rect x="840" y="0" width="160" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<rect x="840" y="0" width="160" height="40" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/>
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="919.5" y="24.5">packages</text>
</g>
</g>
<g id="cell-18" content="&lt;UserObject label=&quot;ipydrawio&quot;/&gt;" data-label="ipydrawio">
<rect x="600" y="80" width="160" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="679.5" y="104.5">ipydrawio</text>
</g>
</g>
<g id="cell-20">
<path d="M 840 20 L 800 20 L 800 180 L 766.37 180" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 180 L 768.12 176.5 L 766.37 180 L 768.12 183.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 840 20 L 800 20 L 800 180 L 766.37 180" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 180 L 768.12 176.5 L 766.37 180 L 768.12 183.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-21" content="&lt;UserObject label=&quot;ipydrawio-webpack&quot;/&gt;" data-label="ipydrawio-webpack">
<rect x="600" y="160" width="160" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="679.5" y="184.5">ipydrawio-webpack</text>
</g>
</g>
<g id="cell-22">
<path d="M 840 20 L 800 20 L 800 260 L 766.37 260" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 260 L 768.12 256.5 L 766.37 260 L 768.12 263.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 840 20 L 800 20 L 800 260 L 766.37 260" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 260 L 768.12 256.5 L 766.37 260 L 768.12 263.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-23" content="&lt;UserObject label=&quot;ipydrawio-notebook&quot;/&gt;" data-label="ipydrawio-notebook">
<rect x="600" y="240" width="160" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="679.5" y="264.5">ipydrawio-notebook</text>
</g>
</g>
<g id="cell-24">
<path d="M 840 20 L 770 20 L 766.37 20" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 20 L 768.12 16.5 L 766.37 20 L 768.12 23.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 840 20 L 770 20 L 766.37 20" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 20 L 768.12 16.5 L 766.37 20 L 768.12 23.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-25" content="&lt;UserObject label=&quot;ipydrawio-pdf&quot;/&gt;" data-label="ipydrawio-pdf">
<rect x="600" y="0" width="160" height="40" fill="#f8cecc" stroke="#b85450" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="679.5" y="24.5">ipydrawio-pdf</text>
</g>
</g>
<g id="cell-26">
<path d="M 840 20 L 800 20 L 800 340 L 766.37 340" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 340 L 768.12 336.5 L 766.37 340 L 768.12 343.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 840 20 L 800 20 L 800 340 L 766.37 340" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 761.12 340 L 768.12 336.5 L 766.37 340 L 768.12 343.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-27" content="&lt;UserObject label=&quot;ipydrawio-jupyter-templates&quot;/&gt;" data-label="ipydrawio-jupyter-templates">
<rect x="600" y="320" width="160" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/>
<g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="12px">
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="679.5" y="344.5">ipydrawio-jupyter-templates</text>
</g>
</g>
@ -98,5 +98,15 @@
<g id="cell-33">
<path d="M 400 100 L 510 100 Q 520 100 520 110 L 520 330 Q 520 340 530 340 L 600 340" fill="none" stroke="#6c8ebf" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 6" pointer-events="stroke"/>
</g>
<g id="cell-34" content="&lt;UserObject label=&quot;ipydrawio-widgets&quot;/&gt;" data-label="ipydrawio-widgets">
<rect x="240" y="160" width="160" height="40" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/>
<g fill="rgb(0, 0, 0)" font-family="Helvetica" text-anchor="middle" font-size="12px">
<text x="319.5" y="184.5">ipydrawio-widgets</text>
</g>
</g>
<g id="cell-36">
<path d="M 160 20 L 200 20 L 200 180 L 233.63 180" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 238.88 180 L 231.88 183.5 L 233.63 180 L 231.88 176.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/>
</g>
</g>
</svg>

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 8.3 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 9.3 KiB

Wyświetl plik

@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1144px" height="729px" viewBox="-0.5 -0.5 1144 729" content="&lt;mxfile version=&quot;14.7.3&quot; type=&quot;embed&quot;&gt;&#10; &lt;diagram id=&quot;6a731a19-8d31-9384-78a2-239565b7b9f0&quot; name=&quot;Page-1&quot;&gt;7Zxdb6M4FIZ/TS634pvksk2bmZF2pV1Vq7124IS4QzAypmn2168dTAJ4pso0WRsq56IKxzZgn6evjw8mM3+5e/tCUbn9g6SQzzwnfZv5jzPPW0QO/ysMh8YQunFjyChOG5N7Njzjf0EaZbusxilUvYqMkJzhsm9MSFFAwno2RCnZ96ttSN6/aokyUAzPCcpV6z84ZVtpdaPFueAr4GwrLz33ZP/WKPmeUVIX8noFKaAp2aH2NLKP1RalZN8x+U8zf0kJYc233dsScjGq7Yg17VY/KT3dMoWCXdQgDsKmzSvKa9lxeWvs0I4EpHxg5OGxM/7DsXsgzuLwo5d6Vw4qbNku50cu/3rqpKiaozXkD6cRWpKc0HOriiHK7oXzBrYVznN5BijStkaSo6rCSWOUVcQVX4CxgyQK1YxwE6FsSzJSoPx3Qsr2zhgl36G9h5nne6vwIV6eSlq/+9yyIQVboR3OBc5fIX8FhhMkC+S13Eged0/pB0H4KE5ZogQXGbeG/Ej1lHReRWqawMk9EjY+Bhm0FeMoaKzCMZ3G0sdfgOyA0QOvQCFHDL/2iUbyHyM71TsTwr9ISH4KTGSBmRwwsWsQmNgCMzlg2snbCDBzC8zkgAl9g8AsFGC+/Xl4pGiPiULOGRMx3PstZvDMh0GU7nkcewUnXcf1jD2fcSR+5N2P+nJ1/HA7ynFWCAC594C2DWW/XcXZiCbyrDE/KoFiPvBAn0+VvPeIeAXK4O1dP8vSYCEDTLkK8OfOnbTsO1F1KPVm2wmoY+cWcLRn/rCauLrV5MNS8TQPo8D7uFQE7+DVp2fI1oDqtQM+RJdLSiseA0mJzElK6FpqJkpNaJAaz1IzUWoMrqjbO+pQ83fFp3DPeXoTEzMUCYw8jIGWhqt9r4Qx78OgK4zhEcogjAkvDWOi24QxgQIJJeu6YgVU1cjp2DhzmLua6XA00hH14QidQDMcahK3JHshIZYLk1y4gWHRUHO1GzHMGFHMDpaOUamGF+pWDZuY7dDiRovFEcP/PaC9MFBtnTxIzBrMs4U2MTtBYDyDwKiJWQvM6IEx+KwwUpO138ScTfgsjNY8cBl91CKcnN7EpSNdCQ8T+mF8cUL/NmFLpKZm12K3D9Cxr4OjYL0GHVkSbRHsgIUo1M2CmnB9qcsD7yv332/pFJ4AfjoohgIRu5FmKNR8aopRRtGuuiv4PGd50MqDZ1wk1NTpI+Z+wOuaiZ6Om4eVM4+dUAMPYwkoPEc3H2r2tCh3I8diE6INX49/HpkYxhKuqxsDu7H1R7IzmsWqVPHBYtXg0/5IzZ8mpEiRVQ6zAaf2+MKmRScoHLFB4VDToiUurWyYXZdoDzjia3emWt0woBsLc7oRq5nPv3ir+5Erh+shtP7MK9hY2eMe3gWLzkerqqgp0RwXE0h0RG4SiWt/2v0e83gQp3qaN3zEamL01yac6WxPdr37+wcts8mNtye3Gj94f9MzOOuo6VOuJ5A1W8gcBpUVF/Pi4jpOX10CX7e6XPtLAlZdTKmLwZcfYjXrWheYWWEZrbD42sOWa/epWmExJSwG3+CM1awsShIoGTq+TmXlZRzyMlwUeYFudbl2j6pVF1PqMtekLvzw/JNcx7LOL575T/8B&lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1144px" height="753px" viewBox="-0.5 -0.5 1144 753" content="&lt;mxfile version=&quot;16.4.0&quot; type=&quot;embed&quot;&gt;&#10; &lt;diagram id=&quot;6a731a19-8d31-9384-78a2-239565b7b9f0&quot; name=&quot;Mind Map&quot;&gt;7ZxRb6M4EMc/TR6vMgZs8timze5Kd9KeqtM9O+AQdwlGxmma+/RngkkCbqtc07NJ5b40DMZgz48/48mQSThbv3wTpFr9wTNaTCDIXibh/QTCIIwi9a+x7FoLBqA15IJlutHR8Mj+odrYNduwjNa9hpLzQrKqb0x5WdJU9mxECL7tN1vyon/WiuTUMDympDCtf7NMrrQ1QNPjju+U5St96gTidseCpL9ywTelPl/JS9ruWZOuGz3GekUyvj0xhQ+TcCY4l+2n9cuMFs20djPWHjd/Y+/hkgUt5VkH4Chuj3kmxUYPXF+a3HUzQTM1MXpzP5jwbj882vQC1NbTZl0NGqzkulBbgfp4GGTTtCALWtwdZmjGCy6OR9WSCHnbOG9gm7Oi0D3QMutapAWpa5a2Rt2kOeMTlXKniSIbyZWJC7niOS9J8TvnVXdlUvBftLuGCQzhPL7Ds8Oezu+hsix5KedkzYoG5++0eKaSpUTv0OcKkN4+7VLdCPF902VFUlbmyhqrLdNT2nk134iUHtyjYVNzkNOuIUb61mocc3Kw9vE3ytdUip1qIGhBJHvuE030jZEf2h0JUR80JG8CgzwwVwcMDhwCgz0wVwcMAg6BSTwwVwdMHDoEZmoA8+Pn7l6QLeMGOUdMmunerpikj2oamr1bFchewMmp43rGns8UEq9596O+nO//lJ0ULC8bAJX3qOgO1OMODGcTkepesdqqqGBq4ql4PDSC7xHxTIWkL+/6We+NpjrA1KuAMAE32rI9iapjrTerk4Aag8+Ao+v5w2oS2FaTD0vFQxKjCH5cKqJ38OrTM2RrQPUC0JCi8yWlE4+BpCB3khIHnporpSZ2SA301FwpNQ5X1N0VnVDzV60e4RA8vDQPZlqmdORhDO1ouNj3RhjzPgy2whgVoQzCmPjcMAZ9ThgTGZAIvtjUsqR1PXI6liChSWCZDmCRDtSHIwaRZTjMJG7Ft42EeC5cchFEjkXDzNUum2lmRDC583SMSjVgbFs1fGL2hJYATad7DP/3gPbMQLVz8iAx6zDPFvvE7BUCAx0CYyZmPTCjB8bhd4XITNb+aJ7ZXD2FyUIFLqOPWhonZ5/i0pGuhIcJ/RifndD/nLAFmanZRVPtQ8XY18EoWiyojSyJtQh2wAKKbbNgJlyfNtVOjVX577fsGr4B/HJQRF2dX1f3FwGrSJjZ1IyRXJB1fVOqp5ynwSoN0LlEmInTe6b8wBYb2Yx03DzMQYJBbIGHsYQTENjmw8ydltV65FgsY7JUq/GvIxPDSCIIbGPgy1pfk53RLFW1ig+Wqg6/60dm9jTlZUa8crgtMLMeX/ik6BUKB3YoHGZStGKVlw236xLrAQe+tC7V64YD3Zi60w1s5j3/VEfdjlw5AkjI4iuvYLFR4R7fRNOTP6uqYiZEC1ZeQaIDBSlqzv1lqz0SPIhToeVyD2wmRv/bA+d6ipMDeHt7Z+Vp8snFyZ3GD97ehA6fOmb6VOkJzdsCMiBp7cXFvbgEAPTVJQptq8ulvyPg1cWVujh89QGbWddNyaQXltEKS2g9bLm0StULiythcfj+JjazsiRNaSXJ/mUqLy/jkJfhoghGttXl0gpVry6u1CVxpy6Jmbvtys6UYIxdVEZYYmQoxitYvF074LbgLLn0pwK+VCLfdpH74Pb/cNV7Al5n7Gz10If+5KyURzbj5qWuIFRMhiGCSRj2SEUR7B53XZfttepejhgaHUcY3EQJwjBGKMSHHyU83AJJv9t2sEa3e7oPo30NeLV5/DnCtvnx5x7Dh38B&lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;">
<defs/>
<g>
<g id="cell-1745">
@ -21,10 +21,10 @@
<rect x="482" y="331.5" width="150" height="70" rx="4.9" ry="4.9" fill="#2f5b7c" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 367px; margin-left: 486px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">IPyDrawio</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">IPyDrawio</div>
</div>
</div>
</foreignObject>
@ -48,10 +48,10 @@
<rect x="202" y="336.5" width="150" height="60" rx="4.2" ry="4.2" fill="#e85642" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 367px; margin-left: 206px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">User Experience</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">User Experience</div>
</div>
</div>
</foreignObject>
@ -63,10 +63,10 @@
<rect x="52" y="455.5" width="150" height="60" rx="4.2" ry="4.2" fill="#f08e81" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 486px; margin-left: 56px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">robustness</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">robustness</div>
</div>
</div>
</foreignObject>
@ -78,10 +78,10 @@
<rect x="1" y="336.5" width="150" height="60" rx="4.2" ry="4.2" fill="#f08e81" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 367px; margin-left: 5px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">power</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">power</div>
</div>
</div>
</foreignObject>
@ -93,10 +93,10 @@
<rect x="52" y="205.5" width="150" height="60" rx="4.2" ry="4.2" fill="#f08e81" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 236px; margin-left: 56px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">familiarity</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">familiarity</div>
</div>
</div>
</foreignObject>
@ -109,8 +109,8 @@
<path d="M 437.11 599.45 L 443.8 591.93 L 443.38 596.95 L 447.14 600.29 Z" fill="#1699d3" stroke="#1699d3" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-1758">
<path d="M 557 583.5 L 557 655.4" fill="none" stroke="#1699d3" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 557 662.15 L 552.5 653.15 L 557 655.4 L 561.5 653.15 Z" fill="#1699d3" stroke="#1699d3" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 539.06 583.5 L 484.88 680.19" fill="none" stroke="#1699d3" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 481.57 686.07 L 482.05 676.02 L 484.88 680.19 L 489.9 680.42 Z" fill="#1699d3" stroke="#1699d3" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-1759">
<path d="M 634 582.3 L 670.62 596.95" fill="none" stroke="#1699d3" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/>
@ -120,10 +120,10 @@
<rect x="482" y="521.5" width="150" height="60" rx="4.2" ry="4.2" fill="#1699d3" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 552px; margin-left: 486px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Interoperability</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Interoperability</div>
</div>
</div>
</foreignObject>
@ -135,10 +135,10 @@
<rect x="682" y="601.5" width="150" height="60" rx="4.2" ry="4.2" fill="#64bbe2" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 632px; margin-left: 686px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">browsers</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">browsers</div>
</div>
</div>
</foreignObject>
@ -147,17 +147,17 @@
</g>
</g>
<g id="cell-1762">
<rect x="482" y="667.5" width="150" height="60" rx="4.2" ry="4.2" fill="#64bbe2" stroke="none" pointer-events="all"/>
<rect x="387" y="691" width="150" height="60" rx="4.2" ry="4.2" fill="#64bbe2" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 698px; margin-left: 486px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">jupyterlab-drawio</div>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 721px; margin-left: 391px;">
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">jupyterlab-drawio</div>
</div>
</div>
</foreignObject>
<text x="557" y="702" fill="#FFFFFF" font-family="Helvetica" font-size="14px" text-anchor="middle">jupyterlab-drawio</text>
<text x="462" y="725" fill="#FFFFFF" font-family="Helvetica" font-size="14px" text-anchor="middle">jupyterlab-drawio</text>
</switch>
</g>
</g>
@ -165,10 +165,10 @@
<rect x="282" y="601.5" width="150" height="60" rx="4.2" ry="4.2" fill="#64bbe2" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 632px; margin-left: 286px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">diagrams.net</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">diagrams.net</div>
</div>
</div>
</foreignObject>
@ -180,10 +180,10 @@
<rect x="482" y="151.5" width="150" height="60" rx="4.2" ry="4.2" fill="#f08705" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 182px; margin-left: 486px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Distributing</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Distributing</div>
</div>
</div>
</foreignObject>
@ -195,10 +195,10 @@
<rect x="682" y="61.5" width="150" height="60" rx="4.2" ry="4.2" fill="#f5af58" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 92px; margin-left: 686px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">npm</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">npm</div>
</div>
</div>
</foreignObject>
@ -214,10 +214,10 @@
<rect x="482" y="1.5" width="150" height="60" rx="4.2" ry="4.2" fill="#f5af58" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 32px; margin-left: 486px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">conda</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">conda</div>
</div>
</div>
</foreignObject>
@ -233,10 +233,10 @@
<rect x="282" y="61.5" width="150" height="60" rx="4.2" ry="4.2" fill="#f5af58" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 92px; margin-left: 286px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">pip</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">pip</div>
</div>
</div>
</foreignObject>
@ -252,10 +252,10 @@
<rect x="782" y="336.5" width="150" height="60" rx="4.2" ry="4.2" fill="#12aab5" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 366px; margin-left: 786px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Q/A</div>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 367px; margin-left: 786px;">
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Q/A</div>
</div>
</div>
</foreignObject>
@ -267,10 +267,10 @@
<rect x="862" y="475.5" width="150" height="60" rx="4.2" ry="4.2" fill="#61c6ce" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 506px; margin-left: 866px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">linting</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">linting</div>
</div>
</div>
</foreignObject>
@ -286,10 +286,10 @@
<rect x="992" y="385.5" width="150" height="60" rx="4.2" ry="4.2" fill="#61c6ce" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 416px; margin-left: 996px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">integrity testing</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">integrity testing</div>
</div>
</div>
</foreignObject>
@ -305,10 +305,10 @@
<rect x="992" y="275.5" width="150" height="60" rx="4.2" ry="4.2" fill="#61c6ce" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 306px; margin-left: 996px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">unit testing</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">unit testing</div>
</div>
</div>
</foreignObject>
@ -324,10 +324,10 @@
<rect x="862" y="195.5" width="150" height="60" rx="4.2" ry="4.2" fill="#61c6ce" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 226px; margin-left: 866px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">acceptance testing</div>
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">acceptance testing</div>
</div>
</div>
</foreignObject>
@ -339,5 +339,24 @@
<path d="M 875.16 334.5 L 913.86 266.29" fill="none" stroke="#12aab5" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 917.19 260.42 L 916.66 270.47 L 913.86 266.29 L 908.83 266.02 Z" fill="#12aab5" stroke="#12aab5" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-1780">
<rect x="587" y="691" width="150" height="60" rx="4.2" ry="4.2" fill="#64bbe2" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 721px; margin-left: 591px;">
<div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">jupyterlite</div>
</div>
</div>
</foreignObject>
<text x="662" y="725" fill="#FFFFFF" font-family="Helvetica" font-size="14px" text-anchor="middle">jupyterlite</text>
</switch>
</g>
</g>
<g id="cell-1781">
<path d="M 576.82 583.5 L 636.86 680.41" fill="none" stroke="#1699d3" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 640.41 686.15 L 631.85 680.87 L 636.86 680.41 L 639.5 676.13 Z" fill="#1699d3" stroke="#1699d3" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/>
</g>
</g>
</svg>

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 28 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 30 KiB

Wyświetl plik

@ -1,24 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1061px" height="811px" viewBox="-0.5 -0.5 1061 811" content="&lt;mxfile version=&quot;14.7.3&quot; type=&quot;embed&quot;&gt;&#10; &lt;diagram name=&quot;Page-1&quot; id=&quot;03018318-947c-dd8e-b7a3-06fadd420f32&quot;&gt;7Vxbc6M2FP41zLQPZRDi+ri5eLfTy3Q2O7t9lbFiaxYQg+U66a+vZAsCSE6YLgbZIQ+OdSRk+L5POkdHsi14mz19LFGx+YOucGq5zurJgneW6wIPBPyfsDxLiwO9o2VdkpW0vRgeyL+4aiitO7LC21ZDRmnKSNE2JjTPccJaNlSWdN9u9kjT9qcWaI0Vw0OCUtX6jazYRlqB47xUfMJkvZEfHfmyYomS7+uS7nL5eTnN8bEmQ1U3sul2g1Z03zDBewvelpSy47vs6RanAtcKseN1ixO19S2XOGd9LgjCcBkuo9iLfeCD2P9F9vAPSncSBnmj7LnCZb8hDD8UKBHlPSffgjcblqW8BPjbw4Nj0b/DS/UDikKKlji9qdG5pSktedUBH96UlfR7DbXo6pHmbIEykgoJfcXlCuVImqVcAEfsBqVknfNCwh8a8w5vEpqRRPahIlI9Ii4ZfmqYJEIfMc0wK595E1lbkfXcLu4bonACadw0BVEpGUklruuuXyjhbyQrJyj1jWKEpGmnkSEkgQ5LAKg0xb6GpXAIlpRx5KqswQ8/ccvPttEDyo2MGFCxhij/HDx5Ck8LkmKFIv5grM1KQUnODnfi31j+XQO1FD+KtgIOwr3JB2lmVPC65TSTfP1FFO74p7cHineKo+HHB/QV0HVzmHsO0NUp7X5F2BWC7jrmgB4ooH8leH+NoIfmgB4qoH/e5VeIOfTMwTx+O2BKyQkHOYTb/X8xUkVOdaXlQufwN74/DlTy9AHuWSInoC5BFrTkK6crHDagM2xcTdA62rgBasz6ZYOzqwyGutNV5NgTzlgAqsjjrEgRew/g+/6UolfDIgXyCr/fxbT/F90SRqjAcUkZo1nXOazQdlO7DWXmbvB2gpaWT/KOvRfiTrKntci02RlNvu8K+1AgydbeEi4V/Gsi7kle3nAi8eFP8WdvuLAf81cDuycI3p4l6+VNyz/BASSjLlZ+w2Uukp1XNzI9MF0Up86AaLm9RoyjyTCOFIwfMGMchWvEufYq4+OsLkA+4bS4QoyD6XJKQE3c/SmyGbzrAGUClVQAxuowSlrX7OCTOs04EzjfCq/eadehbJpEO3etK4Sjx6SfZ34z267ECEES4eXjMM46ituaqH1w01nrVDFEerdPNCcIKPo/aL2/iJZVD86rANQP/AoAoW4j4iz57cqjv7fto+AEnSptY9CiWVofZ6s7gngcn12Ab+gPqKyN7QD4MPLq1/ao8JRB4Yd2EPNVRFi9nslzqIvtXc4IS7nEL3lkSBkMNi6qWse3wyYvYZtH3dq9fUWk8jjEugyoufXOmJKuPF9ui47Tn8z097VJTD/rDBBH1DGCFFqkCSM8zXQ9iLTUldLoYUQntA6B8vi6PfLQj88QRPSA45JkrI0hOD0MkVzYD7eloTY6we2rMcV4LLnqhCjOMlzC4r4/srVXao0Ol3scN4oA9P0Y8qHTdyF64rJhaVFHz+ddnnPc3gExoWs7nsMxiYMAOJXLNoIWNUtzIRnHH+UEgNB2DnQEHA7gV7nX5kJoKlaguly9r3Iz74KbANqwGi2CnsmocdVlkhLfLhwrXlixZ0X3Fx0QlEcoBz+S2t3ojDQHK+CZYlhXTZAqHE24sQmseWPT9Tp7FONubGp2NmeFGKYQP55UIWYfjpgVIuIBOKlC1DXnrBDDFaI/7HZGjfRIH80aMeuI1ega6XFoez6GZ1a0OrZGNLkBkzQyzyOaeHV0jfT4/vKsEbPiEd357zMqxJ0VYrpCutHIyArRZT7NUcgci2hikZEVMudWjVdINxIZWSFzbtV4hXTjkCAeVSFzbtV4hXTjkJEVMudWjVdINw4ZWSFzZtV4hXTjkJEVYnZe9VoUojnuq4jm9DemOr9XM+4OXnVGZVbI5Shk7KyqN2dVL04j4653vTmrenEKOWskwosvv2J7qGv8TDC8/w8=&lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1061px" height="811px" viewBox="-0.5 -0.5 1061 811" content="&lt;mxfile version=&quot;16.4.0&quot; type=&quot;embed&quot;&gt;&#10; &lt;diagram name=&quot;Page-1&quot; id=&quot;03018318-947c-dd8e-b7a3-06fadd420f32&quot;&gt;7Vxbc6M2FP41zLQPZRDi+ri5eLfTy3Q2O7t9lbFiaxYQg+U66a+vZAsCSE6YLgbZwQ+OdSRk+L5POkdHii14mz19LFGx+YOucGq5zurJgneW6wLoefyPsDwfLaHjHA3rkqxkoxfDA/kXS2PVbEdWeNtqyChNGSnaxoTmOU5Yy4bKku7bzR5p2v7WAq2xYnhIUKpav5EV20grqB5DVHzCZL2RXx35smKJku/rku5y+X05zfGxJkNVN7LpdoNWdN8wwXsL3paUsuOn7OkWpwLWCrHjdYsTtfUtlzhnfS4IwnAZLqPYi33gg9j/RfbwD0p3EgZ5o+y5wmW/IQw/FCgR5T3n3oI3G5alvAT4x8ODY9G/w0v1A4pCipY4vanRuaUpLXnVAR/elJX0ew216OqR5myBMpIKBX3F5QrlSJqlXABH7AalZJ3zQsIfGvMObxKakUT2oSJSPSIuGX5qmCRCHzHNMCufeRNZW5H13C7uG6JwAmncNAVRKRlJJa7rrl8o4R8kKyco9Y1ihKRpp5EhJIEOSwCoNMW+hqVwCJaUceSqrMEPP3HLz7bRA8qNjBhQsYYo/xw8eQpPC5JihSL+YKzNSkFJzg534t9Y/l0DtRQ/irYCDsK9yQdpZlTwuuU0k3z9RRTu+Le3B4p3iqPhxwf0FdB1c5h7DtDVKe1+RdgVgu465oAeKKB/JXh/jaCH5oAeKqB/3uVXiDn0zME8fjtgSskJBzmE2/1/MVJFTnWl5ULn8BrfHwcqefoA9yyRE1CXIAta8pXTFQ4b0Bk2riZoHW3cADVm/bLB2VUGQ93pKnLsCWcsAFXkcVakiL0H8H1/StGrYZECeYXf72La/4tuCSNU4LikjNGs6xxWaLup3YYyczd4O0FLyyd5x94LcSfZ01ok2uyMJt93hX0okGRrbwmXCv41EfckL284kfjwUvzZGy7sx/zVwO4JgrdnyXp50/JPcADJqIuV33CZi1zn1Y1MD0wXxakzIFpurxHjaDKMIwXjB8wYR+Eaca69yvg4qwuQTzgtrhDjYLqcElATd3+KbAbvOkCZQCUVgLE6jJLWNTv4pE4zzgTOt8Krd9p1KJsm0c5d6wrh6DHp55nfzLYrMUKQRHj5OIyzjuK2Jmof3HTWOlUMkd7tE80JAor+D1rvL6Jl1YPzKgD1A78CQKjbiDhLfrvy6O9t+yg4QadK2xi0aJbWx9nqjiAex2cX4Bv6AyprYzsAPoy8+r09KjxlUPihHcR8FRFW72fyHOpie5czwlIu8UseGVIGg42Lqtbx7bDJS9jmUbd2b18RqTwOsS4Dam69M6akK8+X26Lj9Ccz/X1tEtPPOgPEEXWMIIUWacIITzNdDyItdaU0ehjRCa1DoDy+bo889OMzBBE94LgkGWtjCE4PQyQX9sNtaaiNTnD7akwxHkuuOiGKswyXsLjvj2ztlVqjw+Uex40iAH0/hnzo9F2InrhsWFrU0fN5l+cct3dATOjajudwTOIgAE7lso2gRc3SXEjG8Uc5ASC0nQMdAYcD+FXutbkQmooVqC5X76vczLvgJoA2rEaLoGcyalx1maTEtwvHihdW7FnR/UUHBOURysGPpHY3OiPNwQp4phjWVROkCkcTbmwCa97YdL3OHsW4G5uanc1ZIYYpxI8nVYjZhyNmhYh4AE6qEHXNOSvEcIXoD7udUSM90kezRsw6YjW6Rnoc2p6P4ZkVrY6tEU1uwCSNzPOIJl4dXSM9/n951ohZ8Yju/PcZFeLOCjFdId1oZGSF6DKf5ihkjkU0scjICplzq8YrpBuJjKyQObdqvEK6cUgQj6qQObdqvEK6ccjICplzq8YrpBuHjKyQObNqvEK6ccjICjE7rzorhNdEnd+rGXcHrzqjMivkchQydlbVm7OqF6eRcde73pxVvTiFnDUS4cWXX7E91DV+JRje/wc=&lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;">
<defs/>
<g>
<g id="cell-677b7b8949515195-1">
<path d="M 0 0 L 0 -0.66 L 10 0.26 L 20 0.67 L 30 -0.25 L 40 -0.17 L 50 0.72 L 60 0.55 L 70 0.75 L 80 0.4 L 90 -0.07 L 100 -0.1 L 110 -0.12 L 120 0.51 L 130 0.5 L 140 0.42 L 150 -0.21 L 160 -0.37 L 170 -0.3 L 180 -0.03 L 190 0.53 L 200 -0.31 L 210 0.68 L 220 0.66 L 230 -0.68 L 240 0.11 L 250 0.55 L 260 0.71 L 270 -0.08 L 280 -0.31 L 290 0.01 L 300 -0.03 L 310 -0.65 L 320 0.12 L 330 -0.2 L 340 0.39 L 350 0.66 L 360 0.01 L 370 0.45 L 380 -0.04 L 390 -0.24 L 400 0.52 L 410 -0.58 L 420 -0.35 L 430 0.31 L 440 0.73 L 450 -0.33 L 460 0.1 L 470 0.15 L 480 -0.69 L 490 -0.27 L 500 0.35 L 510 0.36 L 520 -0.43 L 530 -0.56 L 540 -0.06 L 550 0.59 L 560 -0.67 L 570 -0.41 L 580 -0.74 L 590 -0.04 L 600 -0.49 L 610 -0.35 L 620 -0.57 L 630 0.03 L 640 -0.43 L 650 -0.6 L 660 0.01 L 670 -0.08 L 680 0.49 L 690 -0.39 L 700 0.35 L 710 -0.06 L 720 0.13 L 730 0.7 L 740 -0.06 L 750 -0.16 L 760 -0.4 L 770 0.71 L 780 0.03 L 790 -0.08 L 800 0.75 L 810 -0.44 L 820 0.6 L 830 0.57 L 840 0.55 L 850 -0.71 L 860 -0.24 L 870 0.09 L 880 0.64 L 890 0.25 L 900 0.18 L 910 -0.2 L 920 -0.55 L 930 -0.12 L 940 -0.42 L 950 0.69 L 960 -0.51 L 970 -0.63 L 980 -0.66 L 990 -0.7 L 1000 0.18 L 1010 -0.46 L 1020 0.58 L 1030 -0.61 L 1040 0.37 L 1050 -0.58 L 1060 0 L 1059.74 0 L 1059.58 10 L 1060.63 20 L 1060 30 L 1060.21 40 L 1059.85 50 L 1059.58 60 L 1059.27 70 L 1060.68 80 L 1059.59 90 L 1059.6 100 L 1060.65 110 L 1059.56 120 L 1060.49 130 L 1059.9 140 L 1060.66 150 L 1059.72 160 L 1059.28 170 L 1059.93 180 L 1060.25 190 L 1060.42 200 L 1060.5 210 L 1059.4 220 L 1059.66 230 L 1059.99 240 L 1059.46 250 L 1060.19 260 L 1059.55 270 L 1059.43 280 L 1060.42 290 L 1059.68 300 L 1059.57 310 L 1059.3 320 L 1059.51 330 L 1060.19 340 L 1060.18 350 L 1059.72 360 L 1060.21 370 L 1059.91 380 L 1059.88 390 L 1059.36 400 L 1060.14 410 L 1059.83 420 L 1060.02 430 L 1060.61 440 L 1060.12 450 L 1059.32 460 L 1060.6 470 L 1060.29 480 L 1059.31 490 L 1060.51 500 L 1060.21 510 L 1059.9 520 L 1060.3 530 L 1060.54 540 L 1059.27 550 L 1060.7 560 L 1060.55 570 L 1060.56 580 L 1059.43 590 L 1059.36 600 L 1059.76 610 L 1059.92 620 L 1060.24 630 L 1059.67 640 L 1060.57 650 L 1060.35 660 L 1059.96 670 L 1060.44 680 L 1060.74 690 L 1060.25 700 L 1060.27 710 L 1059.4 720 L 1060.7 730 L 1060.57 740 L 1060.43 750 L 1060.55 760 L 1059.96 770 L 1060.29 780 L 1060.43 790 L 1059.54 800 L 1060 810 L 1060 810.35 L 1050 810.01 L 1040 810.63 L 1030 810.6 L 1020 809.88 L 1010 809.45 L 1000 810.55 L 990 809.83 L 980 810.28 L 970 810.74 L 960 810.18 L 950 810.66 L 940 810.34 L 930 809.78 L 920 810.34 L 910 809.51 L 900 809.56 L 890 810.53 L 880 809.39 L 870 810.71 L 860 809.77 L 850 810.75 L 840 809.43 L 830 809.91 L 820 809.49 L 810 809.96 L 800 810.12 L 790 809.68 L 780 810.47 L 770 809.55 L 760 809.6 L 750 809.79 L 740 809.92 L 730 810.37 L 720 809.56 L 710 810.2 L 700 809.98 L 690 809.32 L 680 809.74 L 670 809.91 L 660 810.64 L 650 810.21 L 640 809.86 L 630 809.55 L 620 810.2 L 610 810.45 L 600 809.46 L 590 810.11 L 580 809.56 L 570 809.82 L 560 809.46 L 550 810.69 L 540 809.96 L 530 810.25 L 520 810.7 L 510 809.89 L 500 809.91 L 490 810.52 L 480 809.43 L 470 810.7 L 460 810.38 L 450 809.76 L 440 809.48 L 430 809.89 L 420 809.55 L 410 809.89 L 400 809.88 L 390 810.07 L 380 809.73 L 370 810.28 L 360 810.54 L 350 809.43 L 340 809.84 L 330 810.49 L 320 809.54 L 310 810.04 L 300 809.71 L 290 809.47 L 280 810.65 L 270 809.63 L 260 809.38 L 250 809.79 L 240 809.92 L 230 810.15 L 220 810.44 L 210 809.48 L 200 810.5 L 190 809.98 L 180 809.38 L 170 809.28 L 160 810.34 L 150 810.6 L 140 810.62 L 130 809.5 L 120 810.34 L 110 810.65 L 100 809.4 L 90 809.53 L 80 809.71 L 70 810.55 L 60 809.53 L 50 810.05 L 40 809.29 L 30 810.63 L 20 810.39 L 10 810.52 L 0 810 L -0.32 810 L 0.58 800 L 0.5 790 L -0.25 780 L 0.28 770 L -0.23 760 L 0.48 750 L 0.35 740 L 0.67 730 L 0.59 720 L -0.31 710 L 0.32 700 L 0.38 690 L 0.7 680 L -0.63 670 L 0.63 660 L -0.3 650 L 0.35 640 L 0.43 630 L -0.34 620 L 0.61 610 L 0.59 600 L 0.05 590 L -0.36 580 L -0.72 570 L 0.71 560 L -0.29 550 L 0.56 540 L -0.24 530 L -0.71 520 L -0.53 510 L 0.69 500 L -0.31 490 L -0.43 480 L -0.66 470 L 0.71 460 L -0.4 450 L -0.7 440 L 0.52 430 L -0.4 420 L 0.41 410 L -0.41 400 L 0.54 390 L 0.48 380 L -0.24 370 L -0.25 360 L -0.6 350 L 0.58 340 L -0.55 330 L -0.28 320 L -0.74 310 L 0.57 300 L -0.18 290 L -0.47 280 L -0.7 270 L -0.15 260 L -0.62 250 L 0.41 240 L -0.54 230 L -0.29 220 L 0.28 210 L -0.01 200 L 0.7 190 L -0.6 180 L -0.07 170 L -0.72 160 L 0.37 150 L 0.74 140 L 0.63 130 L 0.06 120 L -0.57 110 L 0.47 100 L -0.7 90 L -0.68 80 L -0.5 70 L 0.1 60 L -0.73 50 L -0.22 40 L 0.17 30 L 0.06 20 L -0.55 10 L 0 0 L 0 0 Z Z" fill="#ffffff" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 0 0 L 0 0.73 L 10 -0.69 L 20 -0.57 L 30 0.48 L 40 0.43 L 50 0.62 L 60 0.53 L 70 -0.01 L 80 0.63 L 90 0.63 L 100 -0.05 L 110 -0.4 L 120 -0.52 L 130 0.45 L 140 0.69 L 150 -0.25 L 160 -0.07 L 170 0.35 L 180 -0.45 L 190 -0.31 L 200 0.64 L 210 0.62 L 220 0.53 L 230 -0.5 L 240 0.12 L 250 -0.72 L 260 -0.65 L 270 -0.02 L 280 0.51 L 290 -0.55 L 300 -0.22 L 310 -0.6 L 320 0.23 L 330 0.57 L 340 -0.6 L 350 -0.58 L 360 0.06 L 370 0.48 L 380 0.47 L 390 -0.24 L 400 -0.49 L 410 -0.04 L 420 -0.46 L 430 0.18 L 440 -0.72 L 450 -0.24 L 460 0.27 L 470 -0.07 L 480 0.55 L 490 0.08 L 500 0.42 L 510 -0.1 L 520 0.12 L 530 -0.32 L 540 0.17 L 550 0.32 L 560 -0.09 L 570 -0.66 L 580 -0.67 L 590 0.09 L 600 -0.71 L 610 -0.7 L 620 0.23 L 630 0.34 L 640 -0.4 L 650 0.34 L 660 0.44 L 670 -0.31 L 680 -0.17 L 690 0.12 L 700 -0.42 L 710 -0.41 L 720 0.47 L 730 0.01 L 740 -0.18 L 750 0.1 L 760 -0.13 L 770 0.01 L 780 0.37 L 790 0 L 800 0.5 L 810 -0.7 L 820 -0.68 L 830 -0.73 L 840 -0.4 L 850 0.33 L 860 0.18 L 870 -0.13 L 880 -0.08 L 890 -0.18 L 900 -0.69 L 910 0.06 L 920 -0.17 L 930 0.17 L 940 -0.49 L 950 0.49 L 960 0 L 970 0.58 L 980 -0.37 L 990 0.71 L 1000 0.45 L 1010 0.35 L 1020 0.6 L 1030 -0.53 L 1040 0.43 L 1050 -0.61 L 1060 0 L 1059.77 0 L 1059.31 10 L 1060.16 20 L 1059.95 30 L 1060.26 40 L 1059.9 50 L 1060.38 60 L 1060.52 70 L 1059.95 80 L 1059.85 90 L 1060.68 100 L 1060.12 110 L 1059.61 120 L 1059.31 130 L 1060.72 140 L 1059.39 150 L 1060.12 160 L 1060.47 170 L 1060.35 180 L 1060.06 190 L 1060.31 200 L 1060.64 210 L 1059.88 220 L 1059.38 230 L 1059.88 240 L 1060.59 250 L 1060.15 260 L 1059.53 270 L 1060.6 280 L 1059.61 290 L 1059.79 300 L 1059.35 310 L 1060 320 L 1060.2 330 L 1060.61 340 L 1060.56 350 L 1060.61 360 L 1059.85 370 L 1060.41 380 L 1060.3 390 L 1060.26 400 L 1060.47 410 L 1060.22 420 L 1060.26 430 L 1059.9 440 L 1059.43 450 L 1059.56 460 L 1059.69 470 L 1060.21 480 L 1059.31 490 L 1059.7 500 L 1059.93 510 L 1060.4 520 L 1060.62 530 L 1059.91 540 L 1059.73 550 L 1059.8 560 L 1059.58 570 L 1060.56 580 L 1060.29 590 L 1059.83 600 L 1060.19 610 L 1060.41 620 L 1059.55 630 L 1059.7 640 L 1060.2 650 L 1059.7 660 L 1059.75 670 L 1060.59 680 L 1060.16 690 L 1060.32 700 L 1060.36 710 L 1059.84 720 L 1060.33 730 L 1059.89 740 L 1059.77 750 L 1059.38 760 L 1059.73 770 L 1059.59 780 L 1059.76 790 L 1060.39 800 L 1060 810 L 1060 809.79 L 1050 809.59 L 1040 810.28 L 1030 809.53 L 1020 809.67 L 1010 810.08 L 1000 810.51 L 990 809.39 L 980 809.52 L 970 809.32 L 960 810.63 L 950 809.91 L 940 810.42 L 930 810.4 L 920 809.27 L 910 809.86 L 900 809.9 L 890 810.34 L 880 809.67 L 870 810.45 L 860 810.22 L 850 809.88 L 840 810.24 L 830 809.36 L 820 810.39 L 810 809.6 L 800 809.54 L 790 809.7 L 780 809.36 L 770 810.65 L 760 810.23 L 750 810.45 L 740 809.97 L 730 809.31 L 720 809.7 L 710 810.69 L 700 810.47 L 690 809.33 L 680 810.61 L 670 810.18 L 660 809.93 L 650 809.72 L 640 809.88 L 630 810.31 L 620 810.11 L 610 810.5 L 600 810.47 L 590 809.7 L 580 809.52 L 570 809.66 L 560 809.85 L 550 809.83 L 540 809.49 L 530 809.41 L 520 810.48 L 510 810.08 L 500 809.32 L 490 810.62 L 480 809.95 L 470 809.44 L 460 809.7 L 450 809.43 L 440 810.43 L 430 809.82 L 420 810.28 L 410 809.9 L 400 810.3 L 390 810.31 L 380 810.12 L 370 810.5 L 360 810.53 L 350 810.45 L 340 809.55 L 330 810.1 L 320 809.87 L 310 810.15 L 300 809.99 L 290 809.98 L 280 809.86 L 270 810.39 L 260 810.28 L 250 809.98 L 240 810.65 L 230 809.64 L 220 810.09 L 210 809.69 L 200 809.73 L 190 809.72 L 180 810.73 L 170 809.81 L 160 809.92 L 150 809.34 L 140 809.7 L 130 810.01 L 120 809.51 L 110 810.03 L 100 809.65 L 90 810.7 L 80 809.55 L 70 809.6 L 60 809.5 L 50 810.1 L 40 809.96 L 30 810.33 L 20 809.73 L 10 809.5 L 0 810 L 0.69 810 L 0.22 800 L -0.3 790 L 0.08 780 L 0.02 770 L 0.17 760 L -0.43 750 L 0.61 740 L 0.37 730 L -0.31 720 L -0.37 710 L -0.4 700 L -0.27 690 L -0.26 680 L -0.68 670 L -0.17 660 L 0.43 650 L 0.18 640 L 0.49 630 L -0.39 620 L 0.34 610 L -0.18 600 L -0.49 590 L 0.64 580 L -0.17 570 L 0.32 560 L 0.48 550 L -0.18 540 L 0.56 530 L 0.32 520 L -0.29 510 L -0.17 500 L 0.06 490 L 0.72 480 L 0.28 470 L -0.35 460 L 0.62 450 L -0.42 440 L -0.55 430 L 0.68 420 L -0.17 410 L 0.63 400 L -0.44 390 L 0.72 380 L -0.04 370 L -0.64 360 L -0.05 350 L 0.09 340 L 0.02 330 L -0.15 320 L -0.49 310 L 0.43 300 L -0.07 290 L 0.38 280 L 0.6 270 L -0.28 260 L 0.09 250 L -0.14 240 L 0.33 230 L -0.02 220 L 0.09 210 L 0.75 200 L -0.62 190 L 0.2 180 L -0.08 170 L -0.67 160 L -0.72 150 L -0.06 140 L 0.03 130 L 0.72 120 L 0.45 110 L 0.4 100 L -0.66 90 L -0.5 80 L -0.65 70 L -0.72 60 L 0.54 50 L 0.1 40 L -0.58 30 L 0.65 20 L -0.27 10 L 0 0 L 0 0 Z Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-15">
<path d="M 100 90 L 100 89.9 L 110 89.78 L 120 90.56 L 130 89.77 L 140 89.7 L 150 89.97 L 160 90.64 L 170 89.35 L 180 89.68 L 190 90.73 L 200 89.69 L 210 89.92 L 220 89.93 L 230 89.47 L 240 90.58 L 250 90.08 L 260 89.61 L 270 90.16 L 280 89.9 L 290 89.5 L 300 89.84 L 310 90.46 L 320 89.31 L 330 89.46 L 340 89.42 L 350 90.26 L 360 90.4 L 370 90 L 380 89.63 L 390 89.68 L 400 90.11 L 410 90.06 L 420 89.38 L 430 90.73 L 440 89.28 L 450 90.42 L 460 89.99 L 470 90.67 L 480 90.4 L 490 89.32 L 500 89.31 L 510 90.5 L 520 89.97 L 530 89.58 L 540 90.45 L 550 90.72 L 560 89.6 L 570 90.7 L 580 90.57 L 590 90.55 L 600 89.64 L 610 90.67 L 620 89.25 L 630 89.33 L 640 89.44 L 650 90.68 L 660 90.04 L 670 89.93 L 680 90.6 L 690 89.94 L 700 90.05 L 710 89.66 L 720 90.01 L 730 89.63 L 740 90.34 L 750 90.26 L 760 89.8 L 770 90.25 L 780 89.44 L 790 90.26 L 800 89.79 L 810 90.53 L 820 90.59 L 830 90.16 L 840 89.82 L 850 90.56 L 860 89.49 L 870 89.52 L 880 89.79 L 890 90.62 L 900 90.02 L 910 89.36 L 920 89.72 L 930 89.64 L 940 90.75 L 950 90.68 L 960 90.65 L 970 89.56 L 980 90.2 L 990 90.31 L 1000 90.09 L 1010 90.24 L 1020 89.43 L 1030 90.36 L 1040 90.69 L 1050 90 L 1049.74 90 L 1049.45 100 L 1050.32 110 L 1050.56 120 L 1050.09 130 L 1049.48 140 L 1050.15 150 L 1049.65 160 L 1050.33 170 L 1050.7 180 L 1049.68 190 L 1049.34 200 L 1050.1 210 L 1050.45 220 L 1049.27 230 L 1049.38 240 L 1049.83 250 L 1050.64 260 L 1050.42 270 L 1049.94 280 L 1049.42 290 L 1049.33 300 L 1050.25 310 L 1050.11 320 L 1049.87 330 L 1049.77 340 L 1049.68 350 L 1050.59 360 L 1049.81 370 L 1050.3 380 L 1050.21 390 L 1049.94 400 L 1050.31 410 L 1049.98 420 L 1050.71 430 L 1049.55 440 L 1050.23 450 L 1050.14 460 L 1049.98 470 L 1050.59 480 L 1050.03 490 L 1049.87 500 L 1050.29 510 L 1049.27 520 L 1049.74 530 L 1049.53 540 L 1049.96 550 L 1050.57 560 L 1050.05 570 L 1050.14 580 L 1049.39 590 L 1049.96 600 L 1049.98 610 L 1050.09 620 L 1049.98 630 L 1049.58 640 L 1050.63 650 L 1049.5 660 L 1049.3 670 L 1050.37 680 L 1050.36 690 L 1050.46 700 L 1050.53 710 L 1049.5 720 L 1049.6 730 L 1049.26 740 L 1049.34 750 L 1050.52 760 L 1049.51 770 L 1050.63 780 L 1050.45 790 L 1050 800 L 1050 799.25 L 1040 800.63 L 1030 800.43 L 1020 800.39 L 1010 799.66 L 1000 799.69 L 990 799.91 L 980 799.36 L 970 799.55 L 960 800.73 L 950 800.53 L 940 800.32 L 930 799.67 L 920 799.83 L 910 799.9 L 900 799.36 L 890 800.52 L 880 799.6 L 870 799.96 L 860 799.79 L 850 799.4 L 840 800.03 L 830 800.66 L 820 800.55 L 810 799.4 L 800 799.58 L 790 799.56 L 780 799.52 L 770 799.27 L 760 800.33 L 750 800.51 L 740 800.38 L 730 800.51 L 720 799.38 L 710 799.84 L 700 800.52 L 690 799.43 L 680 800.16 L 670 799.92 L 660 800 L 650 799.33 L 640 799.79 L 630 799.8 L 620 800.61 L 610 800.16 L 600 800.3 L 590 800.34 L 580 800.09 L 570 799.69 L 560 800.49 L 550 800.7 L 540 800.52 L 530 800.67 L 520 799.35 L 510 799.9 L 500 800.54 L 490 800.68 L 480 800.25 L 470 800.43 L 460 800.02 L 450 800.01 L 440 799.72 L 430 800.34 L 420 800.61 L 410 799.42 L 400 799.48 L 390 799.67 L 380 800.5 L 370 800.31 L 360 799.78 L 350 799.83 L 340 800.73 L 330 800.56 L 320 799.8 L 310 799.81 L 300 799.75 L 290 800.18 L 280 800.69 L 270 800.66 L 260 800.73 L 250 799.68 L 240 800.3 L 230 799.69 L 220 799.93 L 210 799.59 L 200 800.15 L 190 799.5 L 180 799.87 L 170 799.83 L 160 800.16 L 150 799.46 L 140 800.67 L 130 800.16 L 120 799.59 L 110 800.24 L 100 800 L 100.04 800 L 100.42 790 L 100.37 780 L 99.7 770 L 99.35 760 L 100.1 750 L 100.3 740 L 100.15 730 L 99.66 720 L 99.32 710 L 100.16 700 L 99.6 690 L 100.63 680 L 99.92 670 L 100.24 660 L 100.09 650 L 99.35 640 L 100.54 630 L 100.29 620 L 99.45 610 L 99.99 600 L 100.58 590 L 100.39 580 L 100.08 570 L 100.49 560 L 100.34 550 L 100.35 540 L 100.32 530 L 99.6 520 L 100.36 510 L 100.09 500 L 99.64 490 L 99.39 480 L 99.58 470 L 100.7 460 L 100.56 450 L 100.09 440 L 99.89 430 L 100.3 420 L 100.56 410 L 99.5 400 L 99.33 390 L 99.45 380 L 100.67 370 L 100.7 360 L 100.51 350 L 100.31 340 L 99.39 330 L 99.58 320 L 100.42 310 L 100.61 300 L 100.17 290 L 99.92 280 L 100.2 270 L 99.45 260 L 100.6 250 L 100.53 240 L 100.16 230 L 99.45 220 L 99.39 210 L 100.01 200 L 100.02 190 L 99.45 180 L 100.73 170 L 99.92 160 L 100.08 150 L 100.14 140 L 99.46 130 L 99.79 120 L 99.91 110 L 100.21 100 L 100 90 L 100 90 Z Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 100 90 L 100 90.17 L 110 90.49 L 120 90.58 L 130 89.9 L 140 89.7 L 150 90.02 L 160 90.13 L 170 89.84 L 180 90.04 L 190 90.31 L 200 89.56 L 210 90.49 L 220 89.45 L 230 90.04 L 240 89.35 L 250 89.64 L 260 89.53 L 270 90.48 L 280 89.77 L 290 90.35 L 300 89.37 L 310 89.62 L 320 89.94 L 330 89.74 L 340 90.18 L 350 89.86 L 360 89.38 L 370 89.94 L 380 90.43 L 390 90.02 L 400 90.22 L 410 89.39 L 420 89.78 L 430 89.8 L 440 89.3 L 450 89.51 L 460 89.74 L 470 90.68 L 480 90.34 L 490 89.34 L 500 90.73 L 510 90.1 L 520 89.34 L 530 89.56 L 540 89.41 L 550 89.26 L 560 89.47 L 570 89.61 L 580 90.47 L 590 89.92 L 600 89.39 L 610 90.48 L 620 90.71 L 630 89.31 L 640 89.36 L 650 90.35 L 660 89.96 L 670 89.26 L 680 89.99 L 690 89.3 L 700 90.65 L 710 90.51 L 720 90.58 L 730 90.43 L 740 90.24 L 750 90.43 L 760 89.39 L 770 90.22 L 780 90.19 L 790 90.6 L 800 90.23 L 810 90.25 L 820 89.32 L 830 89.89 L 840 89.86 L 850 89.61 L 860 90.48 L 870 89.74 L 880 90.49 L 890 89.95 L 900 90.25 L 910 90.53 L 920 89.65 L 930 89.37 L 940 90.62 L 950 90.49 L 960 90.54 L 970 89.32 L 980 90.19 L 990 90.16 L 1000 89.93 L 1010 90.71 L 1020 89.35 L 1030 90.2 L 1040 89.54 L 1050 90 L 1049.27 90 L 1049.37 100 L 1049.87 110 L 1049.45 120 L 1050.4 130 L 1050.49 140 L 1049.37 150 L 1050.46 160 L 1049.68 170 L 1049.87 180 L 1050.55 190 L 1049.37 200 L 1049.36 210 L 1050.17 220 L 1049.63 230 L 1049.62 240 L 1049.84 250 L 1050.11 260 L 1049.64 270 L 1050.63 280 L 1049.33 290 L 1049.31 300 L 1049.27 310 L 1049.53 320 L 1049.77 330 L 1049.79 340 L 1049.48 350 L 1050.26 360 L 1049.74 370 L 1049.56 380 L 1050.24 390 L 1049.45 400 L 1050.58 410 L 1050.38 420 L 1050.65 430 L 1049.29 440 L 1049.63 450 L 1049.4 460 L 1050.1 470 L 1049.31 480 L 1050.67 490 L 1049.87 500 L 1050.06 510 L 1049.88 520 L 1049.53 530 L 1049.53 540 L 1049.72 550 L 1050.53 560 L 1050.11 570 L 1050.46 580 L 1050.34 590 L 1050.75 600 L 1050.17 610 L 1050.17 620 L 1049.86 630 L 1050.71 640 L 1049.73 650 L 1050.22 660 L 1050.37 670 L 1050.51 680 L 1049.67 690 L 1050.43 700 L 1049.79 710 L 1049.66 720 L 1049.99 730 L 1049.33 740 L 1050.59 750 L 1050.5 760 L 1050.62 770 L 1050.35 780 L 1049.33 790 L 1050 800 L 1050 799.77 L 1040 799.43 L 1030 799.41 L 1020 799.54 L 1010 799.97 L 1000 800.03 L 990 800.57 L 980 799.91 L 970 800.44 L 960 799.76 L 950 799.95 L 940 800.72 L 930 799.31 L 920 800.7 L 910 800.03 L 900 800.6 L 890 800.49 L 880 800.36 L 870 799.51 L 860 799.69 L 850 800.2 L 840 799.37 L 830 800.61 L 820 800.02 L 810 800 L 800 799.71 L 790 800.53 L 780 799.54 L 770 799.86 L 760 799.71 L 750 800.46 L 740 799.72 L 730 800.54 L 720 799.93 L 710 799.49 L 700 799.46 L 690 799.51 L 680 799.61 L 670 800.36 L 660 800.35 L 650 799.87 L 640 799.59 L 630 799.4 L 620 799.99 L 610 799.85 L 600 799.95 L 590 800.24 L 580 799.84 L 570 800.6 L 560 800.73 L 550 799.47 L 540 799.27 L 530 799.82 L 520 799.33 L 510 799.78 L 500 799.56 L 490 800.62 L 480 799.35 L 470 799.96 L 460 800.12 L 450 800.43 L 440 800.71 L 430 799.47 L 420 799.82 L 410 800.25 L 400 800.6 L 390 800.25 L 380 800.2 L 370 800.5 L 360 800.16 L 350 800.69 L 340 799.75 L 330 800.72 L 320 800.22 L 310 800.45 L 300 799.93 L 290 800.16 L 280 800.33 L 270 800.6 L 260 799.88 L 250 799.75 L 240 799.93 L 230 800.52 L 220 800.26 L 210 800.06 L 200 800.37 L 190 799.41 L 180 800.69 L 170 799.85 L 160 800.53 L 150 800.04 L 140 799.92 L 130 800.73 L 120 800.7 L 110 800.54 L 100 800 L 99.62 800 L 100.16 790 L 99.41 780 L 100.43 770 L 100.44 760 L 99.48 750 L 100.14 740 L 99.26 730 L 100.2 720 L 99.78 710 L 100.24 700 L 100.36 690 L 99.85 680 L 99.67 670 L 100.16 660 L 99.57 650 L 100.52 640 L 100.58 630 L 100.07 620 L 99.51 610 L 100.19 600 L 100.32 590 L 99.31 580 L 100.01 570 L 100.6 560 L 100.15 550 L 99.38 540 L 99.35 530 L 99.48 520 L 99.79 510 L 99.59 500 L 99.55 490 L 100.39 480 L 100.41 470 L 99.89 460 L 100.08 450 L 100.33 440 L 100.51 430 L 99.56 420 L 100.35 410 L 100.53 400 L 100.14 390 L 99.74 380 L 99.42 370 L 100 360 L 99.33 350 L 99.86 340 L 99.49 330 L 99.59 320 L 99.98 310 L 99.91 300 L 99.77 290 L 99.77 280 L 99.48 270 L 100.75 260 L 100.22 250 L 100.53 240 L 99.61 230 L 99.3 220 L 100.02 210 L 100.33 200 L 100.25 190 L 100.23 180 L 100.12 170 L 100.43 160 L 100.75 150 L 100.38 140 L 100.08 130 L 99.31 120 L 99.29 110 L 99.78 100 L 100 90 L 100 90 Z Z" fill="none" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-677b7b8949515195-2">
<path d="M 0 0 L 0 0.27 L 10 0.65 L 20 -0.52 L 30 -0.2 L 40 0.13 L 50 -0.04 L 60 -0.38 L 70 -0.61 L 80 -0.58 L 90 0 L 90.39 0 L 89.92 10 L 90.6 20 L 90.7 30 L 90.3 40 L 90 50 L 90 50.63 L 80 50.26 L 70 49.87 L 60 49.27 L 50 50.05 L 40 50.65 L 30 50.38 L 20 49.97 L 10 49.76 L 0 50 L 0.22 50 L 0.41 40 L 0.64 30 L 0.44 20 L 0.34 10 L 0 0 L 0 0 Z Z" fill="#ffffff" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 0 0 L 0 -0.42 L 10 0.75 L 20 -0.59 L 30 -0.02 L 40 0.46 L 50 0.12 L 60 -0.21 L 70 -0.3 L 80 -0.7 L 90 0 L 90.19 0 L 89.97 10 L 89.31 20 L 90.32 30 L 89.89 40 L 90 50 L 90 49.31 L 80 50.68 L 70 49.29 L 60 49.53 L 50 50.7 L 40 49.76 L 30 50.52 L 20 50.69 L 10 49.84 L 0 50 L -0.28 50 L 0.23 40 L 0.25 30 L -0.06 20 L 0.57 10 L 0 0 L 0 0 Z Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 25px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 28px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">:( ).</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 28px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">:( ).</div>
</div>
</div>
</foreignObject>
<text x="45" y="33" fill="#000000" font-family="Verdana" font-size="28px" text-anchor="middle">:( ).</text>
<text x="45" y="33" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="28px" text-anchor="middle">:( ).</text>
</switch>
</g>
</g>
@ -26,14 +26,14 @@
<rect x="100" y="15" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 18px; margin-left: 102px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">File</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">File</div>
</div>
</div>
</foreignObject>
<text x="102" y="32" fill="#000000" font-family="Verdana" font-size="14px">File</text>
<text x="102" y="32" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">File</text>
</switch>
</g>
</g>
@ -41,14 +41,14 @@
<rect x="180" y="15" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 18px; margin-left: 182px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Edit</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Edit</div>
</div>
</div>
</foreignObject>
<text x="182" y="32" fill="#000000" font-family="Verdana" font-size="14px">Edit</text>
<text x="182" y="32" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Edit</text>
</switch>
</g>
</g>
@ -56,14 +56,14 @@
<rect x="250" y="15" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 18px; margin-left: 252px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">View</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">View</div>
</div>
</div>
</foreignObject>
<text x="252" y="32" fill="#000000" font-family="Verdana" font-size="14px">View</text>
<text x="252" y="32" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">View</text>
</switch>
</g>
</g>
@ -71,32 +71,32 @@
<rect x="320" y="15" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 18px; margin-left: 322px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Run</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Run</div>
</div>
</div>
</foreignObject>
<text x="322" y="32" fill="#000000" font-family="Verdana" font-size="14px">Run</text>
<text x="322" y="32" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Run</text>
</switch>
</g>
</g>
<g id="cell-677b7b8949515195-9">
<path d="M 0 50 L 0 49.56 L 10 50.34 L 20 49.71 L 30 49.75 L 40 49.54 L 50 49.27 L 60 50.04 L 70 50.04 L 80 49.93 L 90 50.22 L 100 50.44 L 110 49.8 L 120 49.55 L 130 49.89 L 140 49.26 L 150 49.95 L 160 50.25 L 170 50.22 L 180 50.29 L 190 50.55 L 200 49.86 L 210 49.93 L 220 49.37 L 230 50.59 L 240 50.29 L 250 49.53 L 260 49.26 L 270 49.79 L 280 49.67 L 290 49.57 L 300 50.13 L 310 50.69 L 320 49.6 L 330 49.79 L 340 50.2 L 350 50.25 L 360 49.92 L 370 50.6 L 380 50.65 L 390 49.95 L 400 50.5 L 410 50.75 L 420 49.7 L 430 50.44 L 440 49.88 L 450 49.92 L 460 50.14 L 470 50.17 L 480 49.54 L 490 49.29 L 500 50.44 L 510 49.91 L 520 50.04 L 530 50.48 L 540 49.54 L 550 50.17 L 560 49.8 L 570 50.68 L 580 49.33 L 590 50.28 L 600 49.36 L 610 50.44 L 620 50.53 L 630 50.54 L 640 49.37 L 650 49.61 L 660 49.85 L 670 50.22 L 680 49.53 L 690 50.22 L 700 49.57 L 710 49.74 L 720 50.04 L 730 50.19 L 740 50.75 L 750 49.97 L 760 50.6 L 770 49.67 L 780 49.91 L 790 50.29 L 800 49.86 L 810 50.5 L 820 50.45 L 830 50.15 L 840 50.7 L 850 50.26 L 860 50.75 L 870 49.29 L 880 49.93 L 890 50.06 L 900 49.82 L 910 49.43 L 920 49.73 L 930 49.48 L 940 49.5 L 950 49.91 L 960 50.07 L 970 50.11 L 980 49.45 L 990 50.43 L 1000 50.47 L 1010 50.06 L 1020 50.06 L 1030 50.58 L 1040 49.72 L 1050 50.47 L 1060 50" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 0 50 L 0 50.6 L 10 49.51 L 20 49.3 L 30 49.54 L 40 49.49 L 50 50.24 L 60 49.57 L 70 50.63 L 80 50.21 L 90 50.61 L 100 49.51 L 110 49.73 L 120 50.65 L 130 49.84 L 140 50.41 L 150 49.58 L 160 50.59 L 170 50.02 L 180 49.43 L 190 49.4 L 200 49.45 L 210 49.47 L 220 50.43 L 230 50.48 L 240 50.19 L 250 49.3 L 260 49.38 L 270 50.38 L 280 50.03 L 290 50.56 L 300 50.71 L 310 49.37 L 320 50.16 L 330 50.73 L 340 50.67 L 350 49.74 L 360 49.58 L 370 49.34 L 380 50.62 L 390 49.91 L 400 50.65 L 410 49.6 L 420 50.07 L 430 49.45 L 440 49.5 L 450 50.19 L 460 50.59 L 470 49.85 L 480 50.13 L 490 50.75 L 500 49.34 L 510 50.04 L 520 50.52 L 530 50.63 L 540 49.84 L 550 50.42 L 560 50.24 L 570 49.44 L 580 50.01 L 590 49.74 L 600 50.21 L 610 49.71 L 620 49.76 L 630 49.95 L 640 50.41 L 650 49.51 L 660 50.3 L 670 49.33 L 680 49.36 L 690 49.92 L 700 49.68 L 710 50.6 L 720 49.55 L 730 49.35 L 740 49.74 L 750 49.98 L 760 49.57 L 770 49.39 L 780 50.01 L 790 50.45 L 800 49.41 L 810 49.27 L 820 49.52 L 830 50.27 L 840 50.59 L 850 49.77 L 860 49.26 L 870 49.59 L 880 49.54 L 890 50.04 L 900 50.28 L 910 50.71 L 920 49.38 L 930 49.51 L 940 49.41 L 950 49.95 L 960 50.16 L 970 50.28 L 980 49.65 L 990 50.27 L 1000 50.37 L 1010 50.04 L 1020 49.25 L 1030 49.49 L 1040 49.39 L 1050 50.67 L 1060 50" fill="none" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-677b7b8949515195-11">
<rect x="120" y="190" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 193px; margin-left: 122px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Format</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Format</div>
</div>
</div>
</foreignObject>
<text x="122" y="207" fill="#000000" font-family="Verdana" font-size="14px">Format</text>
<text x="122" y="207" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Format</text>
</switch>
</g>
</g>
@ -104,14 +104,14 @@
<rect x="120" y="360.5" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 364px; margin-left: 122px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Theme</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Theme</div>
</div>
</div>
</foreignObject>
<text x="122" y="378" fill="#000000" font-family="Verdana" font-size="14px">Theme</text>
<text x="122" y="378" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Theme</text>
</switch>
</g>
</g>
@ -119,33 +119,33 @@
<rect x="120" y="530" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 533px; margin-left: 122px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Template</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Template</div>
</div>
</div>
</foreignObject>
<text x="122" y="547" fill="#000000" font-family="Verdana" font-size="14px">Template</text>
<text x="122" y="547" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Template</text>
</switch>
</g>
</g>
<g id="cell-677b7b8949515195-16">
<rect x="290" y="190" width="120" height="130" fill="#ffffff" stroke="#999999" stroke-width="4" pointer-events="all"/>
<path d="M 290 190 L 289.94 189.94 L 296.32 196.9 L 303.26 204.38 L 309.78 211.47 L 316.32 218.57 L 323.74 226.49 L 329.66 233.02 L 336.21 240.13 L 343.03 247.5 L 350.22 255.2 L 356.67 262.22 L 363 269.14 L 370.34 276.98 L 376.6 283.83 L 383.37 291.14 L 389.65 298.01 L 396.55 305.45 L 403.58 313 L 410 320 M 290 320 L 290.32 320.3 L 296.87 312.97 L 303.67 305.86 L 310.09 298.42 L 316.79 291.23 L 323.43 283.97 L 330.38 277.02 L 336.91 269.66 L 342.83 261.76 L 350.35 255.32 L 356.76 247.86 L 363.65 240.85 L 370.43 233.73 L 376.41 225.88 L 383.16 218.73 L 389.84 211.52 L 397.15 204.89 L 403.65 197.51 L 410 190" fill="none" stroke="#999999" stroke-width="4" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
<rect x="290" y="190" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" stroke-width="4" pointer-events="all"/>
<path d="M 290 190 L 290.41 190.38 L 297.08 197.6 L 303.58 204.67 L 310.22 211.87 L 316.86 219.07 L 323.45 226.21 L 329.62 232.98 L 336.79 240.67 L 343.22 247.68 L 350.14 255.13 L 356.13 261.73 L 363.82 269.89 L 370.11 276.77 L 376.98 284.18 L 382.98 290.79 L 390.45 298.75 L 397.05 305.91 L 403.08 312.55 L 410 320 M 290 320 L 289.72 319.74 L 296.41 312.54 L 302.79 305.06 L 309.47 297.84 L 317.18 291.59 L 322.94 283.52 L 330.37 277.01 L 336.87 269.64 L 343.23 262.13 L 350 255 L 356.59 247.71 L 363.61 240.82 L 370.26 233.57 L 376.43 225.89 L 383.67 219.2 L 390.18 211.83 L 397.11 204.85 L 403.82 197.67 L 410 190" fill="none" stroke="#999999" stroke-width="4" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
</g>
<g id="cell-5">
<rect x="390" y="15" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 18px; margin-left: 392px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Kernel</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Kernel</div>
</div>
</div>
</foreignObject>
<text x="392" y="32" fill="#000000" font-family="Verdana" font-size="14px">Kernel</text>
<text x="392" y="32" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Kernel</text>
</switch>
</g>
</g>
@ -153,14 +153,14 @@
<rect x="460" y="15" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 18px; margin-left: 462px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Tabs</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Tabs</div>
</div>
</div>
</foreignObject>
<text x="462" y="32" fill="#000000" font-family="Verdana" font-size="14px">Tabs</text>
<text x="462" y="32" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Tabs</text>
</switch>
</g>
</g>
@ -168,14 +168,14 @@
<rect x="530" y="15" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 18px; margin-left: 532px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Settings</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Settings</div>
</div>
</div>
</foreignObject>
<text x="532" y="32" fill="#000000" font-family="Verdana" font-size="14px">Settings</text>
<text x="532" y="32" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Settings</text>
</switch>
</g>
</g>
@ -183,228 +183,228 @@
<rect x="600" y="15" width="60" height="20" fill="none" stroke="none" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 18px; margin-left: 602px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Help</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Help</div>
</div>
</div>
</foreignObject>
<text x="602" y="32" fill="#000000" font-family="Verdana" font-size="14px">Help</text>
<text x="602" y="32" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Help</text>
</switch>
</g>
</g>
<g id="cell-14">
<path d="M 870 110 L 870 110.24 L 880 109.5 L 890 110.59 L 900 109.64 L 910 110.03 L 920 109.57 L 930 109.98 L 940 109.98 L 950 110.71 L 960 109.53 L 970 110.25 L 980 109.69 L 990 109.75 L 1000 109.66 L 1010 110.54 L 1020 109.76 L 1030 110 L 1030 110 L 1030.72 120 L 1030.44 130 L 1029.68 140 L 1029.51 150 L 1030 160 L 1030 160.35 L 1020 159.84 L 1010 160.4 L 1000 160.35 L 990 159.93 L 980 159.47 L 970 160.01 L 960 159.64 L 950 159.7 L 940 159.33 L 930 159.87 L 920 159.59 L 910 160.43 L 900 160.34 L 890 160.19 L 880 159.59 L 870 160 L 869.3 160 L 870.48 150 L 869.76 140 L 869.89 130 L 869.76 120 L 870 110 L 870 110 Z Z" fill="#dae8fc" stroke="#6c8ebf" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 870 110 L 870 109.26 L 880 109.32 L 890 110.11 L 900 110.7 L 910 110.34 L 920 110.55 L 930 110.57 L 940 110.09 L 950 109.28 L 960 109.68 L 970 110.36 L 980 110.68 L 990 110.64 L 1000 110.72 L 1010 110.71 L 1020 110.46 L 1030 110 L 1029.3 110 L 1029.67 120 L 1030.29 130 L 1030.71 140 L 1029.46 150 L 1030 160 L 1030 160.18 L 1020 159.45 L 1010 160.06 L 1000 160.68 L 990 160.17 L 980 160.1 L 970 160.71 L 960 159.6 L 950 159.78 L 940 160.04 L 930 160.04 L 920 160.23 L 910 160.59 L 900 159.31 L 890 160.66 L 880 160.64 L 870 160 L 870.41 160 L 869.57 150 L 870.06 140 L 869.61 130 L 869.67 120 L 870 110 L 870 110 Z Z" fill="#dae8fc" stroke="#6c8ebf" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 135px; margin-left: 871px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">New &lt;template&gt; &lt;extension&gt;</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;">
<div style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">New &lt;template&gt; &lt;extension&gt;</div>
</div>
</div>
</foreignObject>
<text x="950" y="139" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">New &lt;template&gt; &lt;extension&gt;</text>
<text x="950" y="139" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="12px" text-anchor="middle">New &lt;template&gt; &lt;extension&gt;</text>
</switch>
</g>
</g>
<g id="cell-677b7b8949515195-10">
<path d="M 110 110 L 110 110.37 L 120 110.69 L 130 109.45 L 140 110.33 L 150 110.66 L 160 109.26 L 170 109.28 L 180 109.76 L 190 110.71 L 200 109.27 L 210 109.37 L 220 109.92 L 230 109.88 L 240 110.3 L 250 109.61 L 260 109.97 L 270 110.12 L 280 110.07 L 290 110.7 L 300 110.53 L 310 109.5 L 320 110.01 L 330 110.37 L 340 110.32 L 350 110.58 L 360 110.34 L 370 109.52 L 380 109.42 L 390 109.87 L 400 110.32 L 410 109.28 L 420 110.3 L 430 109.61 L 440 109.54 L 450 109.77 L 460 110.22 L 470 110.06 L 480 109.52 L 490 110.14 L 500 110.32 L 510 109.41 L 520 109.6 L 530 110.37 L 540 109.99 L 550 110.7 L 560 109.71 L 570 109.8 L 580 109.94 L 590 109.5 L 600 110.28 L 610 109.33 L 620 109.57 L 630 110.13 L 640 110.33 L 650 110.4 L 660 109.34 L 670 110.58 L 680 109.7 L 690 109.54 L 700 109.96 L 710 109.31 L 720 109.51 L 730 110.34 L 740 109.59 L 750 109.48 L 760 109.6 L 770 110.68 L 780 109.65 L 790 109.69 L 800 110.65 L 810 110.67 L 820 109.72 L 830 109.78 L 840 109.54 L 850 109.8 L 860 110 L 860.69 110 L 859.36 120 L 860.66 130 L 859.71 140 L 859.62 150 L 860 160 L 860 159.55 L 850 159.76 L 840 159.74 L 830 160.03 L 820 159.51 L 810 160.63 L 800 160.15 L 790 160.27 L 780 160.07 L 770 159.7 L 760 159.77 L 750 159.65 L 740 159.9 L 730 159.91 L 720 159.76 L 710 159.38 L 700 160.25 L 690 160.39 L 680 159.85 L 670 160.02 L 660 160.03 L 650 159.83 L 640 160.47 L 630 159.26 L 620 160.67 L 610 160.37 L 600 159.53 L 590 160.49 L 580 159.5 L 570 160.41 L 560 160.05 L 550 160.42 L 540 160.26 L 530 159.89 L 520 159.9 L 510 159.72 L 500 159.63 L 490 159.78 L 480 160.18 L 470 159.98 L 460 159.58 L 450 159.31 L 440 160.19 L 430 160.45 L 420 159.77 L 410 160.57 L 400 159.8 L 390 160.02 L 380 160.63 L 370 159.99 L 360 160.41 L 350 160.28 L 340 160.58 L 330 159.61 L 320 160.33 L 310 160.71 L 300 160.62 L 290 160.28 L 280 159.41 L 270 159.46 L 260 160.37 L 250 160.19 L 240 159.44 L 230 159.98 L 220 159.69 L 210 159.98 L 200 160.43 L 190 159.47 L 180 159.94 L 170 160.22 L 160 159.89 L 150 159.55 L 140 159.39 L 130 159.7 L 120 160.29 L 110 160 L 109.27 160 L 110.5 150 L 110.5 140 L 109.59 130 L 110.61 120 L 110 110 L 110 110 Z Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 110 110 L 110 110.24 L 120 109.77 L 130 109.27 L 140 109.69 L 150 110.62 L 160 109.45 L 170 110.67 L 180 109.7 L 190 109.63 L 200 109.59 L 210 110.72 L 220 110.45 L 230 109.57 L 240 109.79 L 250 110.34 L 260 109.75 L 270 109.5 L 280 109.49 L 290 109.89 L 300 109.87 L 310 110.66 L 320 109.81 L 330 109.27 L 340 109.56 L 350 110.42 L 360 110.71 L 370 110.33 L 380 109.71 L 390 109.87 L 400 109.64 L 410 109.68 L 420 110.16 L 430 109.55 L 440 110.63 L 450 110.72 L 460 109.84 L 470 109.95 L 480 110.19 L 490 109.94 L 500 109.8 L 510 109.82 L 520 109.95 L 530 109.84 L 540 110.05 L 550 110.09 L 560 109.29 L 570 109.33 L 580 109.98 L 590 110.46 L 600 110.08 L 610 109.36 L 620 110.15 L 630 110.33 L 640 110.2 L 650 109.61 L 660 109.32 L 670 109.68 L 680 110.2 L 690 109.79 L 700 109.46 L 710 110.1 L 720 109.4 L 730 110.48 L 740 109.89 L 750 110.29 L 760 109.89 L 770 109.6 L 780 109.42 L 790 109.54 L 800 110.04 L 810 109.4 L 820 110.11 L 830 110.13 L 840 110.62 L 850 110.3 L 860 110 L 859.93 110 L 860.39 120 L 859.5 130 L 860.67 140 L 860.74 150 L 860 160 L 860 159.4 L 850 159.67 L 840 159.89 L 830 159.5 L 820 160.43 L 810 159.79 L 800 159.62 L 790 160.5 L 780 160.33 L 770 160.73 L 760 160.72 L 750 160.66 L 740 160.18 L 730 159.58 L 720 160.02 L 710 159.39 L 700 159.58 L 690 160.04 L 680 159.58 L 670 159.51 L 660 159.81 L 650 160.33 L 640 159.79 L 630 160.3 L 620 160.08 L 610 160.13 L 600 159.67 L 590 160.59 L 580 160.16 L 570 160.72 L 560 159.62 L 550 159.85 L 540 160.18 L 530 159.69 L 520 160.48 L 510 159.93 L 500 160.29 L 490 159.69 L 480 159.93 L 470 160.56 L 460 160.63 L 450 160.07 L 440 160.25 L 430 160.69 L 420 160.05 L 410 159.79 L 400 159.46 L 390 159.92 L 380 159.46 L 370 160.39 L 360 159.55 L 350 159.26 L 340 159.39 L 330 159.35 L 320 159.36 L 310 160.37 L 300 159.92 L 290 160.2 L 280 160.32 L 270 160.58 L 260 160.28 L 250 159.88 L 240 160.09 L 230 159.43 L 220 160.25 L 210 159.64 L 200 159.39 L 190 160.58 L 180 159.41 L 170 159.7 L 160 159.44 L 150 160.36 L 140 159.33 L 130 159.27 L 120 160.44 L 110 160 L 110.06 160 L 110.15 150 L 110.1 140 L 109.97 130 L 110.43 120 L 110 110 L 110 110 Z Z" fill="none" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-12">
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 127px; margin-left: 122px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: none; white-space: nowrap; ">New Diagram</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;">New Diagram</div>
</div>
</div>
</foreignObject>
<text x="122" y="141" fill="#000000" font-family="Verdana" font-size="14px">New Diag...</text>
<text x="122" y="141" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">New Diag...</text>
</switch>
</g>
</g>
<g id="cell-13">
<path d="M 215.77 120 L 215.77 119.57 L 225.7 119.91 L 235.63 120.52 L 245.56 119.36 L 255.49 120.43 L 265.42 120.71 L 275.35 119.86 L 285.28 119.76 L 295.21 119.39 L 305.15 119.47 L 315.08 120.38 L 325.01 119.35 L 334.94 119.83 L 344.87 120.45 L 354.8 119.3 L 364.73 119.97 L 374.66 120.08 L 384.59 120.19 L 394.52 119.34 L 404.45 119.26 L 414.38 119.4 L 424.31 119.76 L 434.24 120.28 L 444.17 120.68 L 454.1 120.1 L 464.04 120.32 L 473.97 120.55 L 483.9 119.52 L 493.83 119.68 L 503.76 120.52 L 513.69 119.53 L 523.62 120.28 L 533.55 120.72 L 543.48 119.26 L 553.41 120.29 L 563.34 119.66 L 573.27 120.56 L 583.2 119.25 L 593.13 119.68 L 603.06 119.68 L 612.99 119.93 L 622.93 120.23 L 632.86 119.55 L 642.79 120.25 L 652.72 119.77 L 662.65 120.39 L 672.58 119.33 L 682.51 120.46 L 692.44 119.91 L 702.37 120.6 L 712.3 119.92 L 722.23 119.38 L 732.16 120.03 L 742.09 120.48 L 752.02 120.44 L 761.95 119.3 L 771.89 119.91 L 781.82 120.51 L 791.75 120.13 L 801.68 120.53 L 811.61 119.98 L 821.54 120 L 821.43 120 L 821.64 126 L 821.4 132 L 821.65 138 L 821.71 144 L 821.54 150 L 821.54 150.33 L 811.61 150.6 L 801.68 149.86 L 791.75 149.7 L 781.82 150.31 L 771.89 150.3 L 761.95 149.63 L 752.02 150.72 L 742.09 149.28 L 732.16 150.24 L 722.23 150.42 L 712.3 150.17 L 702.37 150.34 L 692.44 150.19 L 682.51 149.91 L 672.58 149.54 L 662.65 149.82 L 652.72 149.3 L 642.79 150.7 L 632.86 150.41 L 622.93 149.75 L 612.99 150.71 L 603.06 149.38 L 593.13 150.33 L 583.2 149.98 L 573.27 149.9 L 563.34 149.48 L 553.41 150.26 L 543.48 149.61 L 533.55 149.55 L 523.62 150.05 L 513.69 149.49 L 503.76 150.5 L 493.83 150.06 L 483.9 150.68 L 473.97 150.15 L 464.04 150.07 L 454.1 150.47 L 444.17 149.7 L 434.24 150.31 L 424.31 150.01 L 414.38 150.07 L 404.45 149.68 L 394.52 149.45 L 384.59 149.78 L 374.66 150.26 L 364.73 149.83 L 354.8 149.95 L 344.87 149.41 L 334.94 150.36 L 325.01 150.71 L 315.08 150.49 L 305.15 149.8 L 295.21 150.15 L 285.28 149.87 L 275.35 149.29 L 265.42 149.8 L 255.49 150.53 L 245.56 150.44 L 235.63 150.52 L 225.7 150.28 L 215.77 150 L 215.95 150 L 215.93 144 L 215.57 138 L 216.02 132 L 215.63 126 L 215.77 120 L 215.77 120 Z Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 215.77 120 L 215.77 119.67 L 225.7 120.2 L 235.63 120.16 L 245.56 119.34 L 255.49 120.01 L 265.42 119.87 L 275.35 120.72 L 285.28 120.53 L 295.21 120.08 L 305.15 119.98 L 315.08 119.62 L 325.01 120.23 L 334.94 120.39 L 344.87 119.94 L 354.8 120.58 L 364.73 120.27 L 374.66 120.24 L 384.59 119.67 L 394.52 120.55 L 404.45 120.07 L 414.38 119.64 L 424.31 119.49 L 434.24 120.13 L 444.17 120.17 L 454.1 120.65 L 464.04 119.43 L 473.97 119.61 L 483.9 120 L 493.83 120.24 L 503.76 120.62 L 513.69 119.62 L 523.62 119.67 L 533.55 120.73 L 543.48 120.54 L 553.41 120.11 L 563.34 120.34 L 573.27 120.24 L 583.2 119.42 L 593.13 119.41 L 603.06 120.73 L 612.99 120.64 L 622.93 119.3 L 632.86 120.18 L 642.79 120.35 L 652.72 120.11 L 662.65 120.2 L 672.58 120.06 L 682.51 119.4 L 692.44 119.9 L 702.37 120.45 L 712.3 119.64 L 722.23 120.62 L 732.16 119.83 L 742.09 120.45 L 752.02 120.58 L 761.95 119.58 L 771.89 119.7 L 781.82 120.52 L 791.75 119.51 L 801.68 119.61 L 811.61 119.86 L 821.54 120 L 821.46 120 L 821.78 126 L 821.52 132 L 821.65 138 L 821.63 144 L 821.54 150 L 821.54 150.39 L 811.61 149.71 L 801.68 149.64 L 791.75 149.56 L 781.82 149.47 L 771.89 150.24 L 761.95 149.67 L 752.02 150.21 L 742.09 149.69 L 732.16 150.28 L 722.23 150.46 L 712.3 149.29 L 702.37 150.3 L 692.44 149.65 L 682.51 149.9 L 672.58 149.95 L 662.65 150.11 L 652.72 150.68 L 642.79 150.54 L 632.86 149.96 L 622.93 149.94 L 612.99 149.36 L 603.06 150.41 L 593.13 150.53 L 583.2 149.45 L 573.27 150.65 L 563.34 149.36 L 553.41 149.25 L 543.48 150.19 L 533.55 150.22 L 523.62 150.37 L 513.69 150.46 L 503.76 149.86 L 493.83 150.12 L 483.9 150.15 L 473.97 149.69 L 464.04 149.51 L 454.1 149.96 L 444.17 150.28 L 434.24 149.87 L 424.31 149.26 L 414.38 149.38 L 404.45 149.6 L 394.52 150.05 L 384.59 149.8 L 374.66 149.59 L 364.73 149.52 L 354.8 149.32 L 344.87 150.45 L 334.94 150.27 L 325.01 150.4 L 315.08 150.15 L 305.15 149.69 L 295.21 150.51 L 285.28 150.08 L 275.35 150.16 L 265.42 149.65 L 255.49 149.52 L 245.56 150.68 L 235.63 150.12 L 225.7 150.33 L 215.77 150 L 215.95 150 L 215.83 144 L 215.93 138 L 215.98 132 L 215.76 126 L 215.77 120 L 215.77 120 Z Z" fill="none" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 604px; height: 1px; padding-top: 135px; margin-left: 218px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; ">untitled</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">untitled</div>
</div>
</div>
</foreignObject>
<text x="218" y="139" fill="#000000" font-family="Verdana" font-size="12px">untitled</text>
<text x="218" y="139" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="12px">untitled</text>
</switch>
</g>
</g>
<g id="cell-17">
<path d="M 140 60 L 140 59.7 L 150 60.63 L 160 60.19 L 170 60.09 L 180 59.67 L 190 60.72 L 200 60.6 L 210 60.12 L 220 60.6 L 230 60.42 L 240 60.51 L 250 60.23 L 260 60.2 L 270 60.73 L 280 60 L 280.23 60 L 279.76 66 L 279.87 72 L 279.97 78 L 280.24 84 L 280 90 L 280 90.28 L 270 90.04 L 260 90.67 L 250 89.85 L 240 90.58 L 230 89.44 L 220 89.28 L 210 89.47 L 200 89.75 L 190 89.88 L 180 90.59 L 170 90.61 L 160 90.07 L 150 89.53 L 140 90 L 139.8 90 L 140.14 84 L 139.88 78 L 140.13 72 L 139.79 66 L 140 60 L 140 60 Z Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 140 60 L 140 59.81 L 150 59.66 L 160 59.34 L 170 59.55 L 180 59.8 L 190 60.66 L 200 59.99 L 210 59.9 L 220 59.55 L 230 60.16 L 240 60.06 L 250 60.13 L 260 60.52 L 270 60.31 L 280 60 L 279.75 60 L 279.9 66 L 279.75 72 L 280.19 78 L 279.86 84 L 280 90 L 280 89.28 L 270 89.68 L 260 89.88 L 250 90.51 L 240 90.52 L 230 89.84 L 220 89.95 L 210 89.78 L 200 90.34 L 190 89.74 L 180 89.47 L 170 89.38 L 160 90.26 L 150 89.69 L 140 90 L 140.07 90 L 139.89 84 L 140.02 78 L 139.99 72 L 139.95 66 L 140 60 L 140 60 Z Z" fill="none" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 67px; margin-left: 142px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; ">New Diagram               X</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">New Diagram               X</div>
</div>
</div>
</foreignObject>
<text x="142" y="79" fill="#000000" font-family="Verdana" font-size="12px">New Diagram...</text>
<text x="142" y="79" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="12px">New Diagram...</text>
</switch>
</g>
</g>
<g id="cell-677b7b8949515195-8">
<path d="M 0 51 L 0 50.96 L 10 50.51 L 20 51.65 L 30 51.48 L 40 50.33 L 50 50.58 L 60 50.47 L 70 51.03 L 80 51.44 L 90 51 L 90.63 51 L 89.41 60.99 L 90.71 70.97 L 89.84 80.96 L 90.61 90.95 L 89.42 100.93 L 89.75 110.92 L 89.55 120.91 L 90.02 130.89 L 89.71 140.88 L 89.56 150.87 L 89.67 160.86 L 90.39 170.84 L 90.02 180.83 L 89.94 190.82 L 90.72 200.8 L 90.45 210.79 L 89.47 220.78 L 90.46 230.76 L 90.3 240.75 L 89.75 250.74 L 89.94 260.72 L 89.64 270.71 L 90.12 280.7 L 90.38 290.68 L 89.94 300.67 L 90.37 310.66 L 89.31 320.64 L 89.35 330.63 L 90.25 340.62 L 90.67 350.61 L 90.18 360.59 L 89.45 370.58 L 89.96 380.57 L 89.45 390.55 L 90.65 400.54 L 89.95 410.53 L 89.42 420.51 L 90.51 430.5 L 90.67 440.49 L 89.46 450.47 L 90.12 460.46 L 90.08 470.45 L 90.14 480.43 L 89.96 490.42 L 90.75 500.41 L 90.3 510.39 L 90.69 520.38 L 90.71 530.37 L 89.97 540.36 L 89.46 550.34 L 89.95 560.33 L 90.56 570.32 L 89.28 580.3 L 89.96 590.29 L 90.73 600.28 L 89.82 610.26 L 90.71 620.25 L 89.96 630.24 L 90.16 640.22 L 89.73 650.21 L 89.76 660.2 L 90.22 670.18 L 90.02 680.17 L 89.28 690.16 L 90.07 700.14 L 90.49 710.13 L 90.26 720.12 L 89.46 730.11 L 90.55 740.09 L 89.94 750.08 L 90.1 760.07 L 89.7 770.05 L 90.23 780.04 L 90.46 790.03 L 90.25 800.01 L 90 810 L 90 809.44 L 80 809.67 L 70 809.66 L 60 809.91 L 50 809.7 L 40 810.62 L 30 809.38 L 20 810.04 L 10 809.45 L 0 810 L 0.11 810 L -0.32 800.01 L -0.16 790.03 L 0.24 780.04 L -0.16 770.05 L 0.37 760.07 L -0.04 750.08 L -0.19 740.09 L -0.05 730.11 L -0.32 720.12 L -0.11 710.13 L -0.73 700.14 L 0.73 690.16 L 0.05 680.17 L -0.35 670.18 L 0.21 660.2 L 0.25 650.21 L 0.68 640.22 L -0.34 630.24 L -0.17 620.25 L -0.01 610.26 L 0.41 600.28 L 0.68 590.29 L -0.7 580.3 L 0.07 570.32 L 0.3 560.33 L 0.21 550.34 L 0.57 540.36 L -0.65 530.37 L 0.08 520.38 L -0.14 510.39 L 0.75 500.41 L -0.41 490.42 L -0.57 480.43 L 0.4 470.45 L -0.51 460.46 L -0.69 450.47 L 0.36 440.49 L -0.14 430.5 L -0.42 420.51 L -0.06 410.53 L -0.22 400.54 L -0.35 390.55 L -0.41 380.57 L 0.08 370.58 L -0.39 360.59 L 0.69 350.61 L 0.17 340.62 L 0.08 330.63 L 0.32 320.64 L 0.56 310.66 L -0.68 300.67 L 0.64 290.68 L -0.22 280.7 L -0.66 270.71 L -0.2 260.72 L 0.13 250.74 L -0.5 240.75 L -0.11 230.76 L 0.13 220.78 L -0.08 210.79 L 0.16 200.8 L -0.43 190.82 L 0.31 180.83 L 0.28 170.84 L 0.71 160.86 L 0.61 150.87 L -0.54 140.88 L -0.63 130.89 L 0.38 120.91 L -0.22 110.92 L -0.21 100.93 L -0.59 90.95 L 0.1 80.96 L 0.25 70.97 L 0.61 60.99 L 0 51 L 0 51 Z Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 0 51 L 0 50.39 L 10 50.73 L 20 50.49 L 30 51.27 L 40 51.38 L 50 51.19 L 60 50.51 L 70 51 L 80 51.62 L 90 51 L 90 51 L 89.94 60.99 L 90.5 70.97 L 89.97 80.96 L 90.72 90.95 L 90.02 100.93 L 90.46 110.92 L 90.48 120.91 L 90.6 130.89 L 89.98 140.88 L 89.3 150.87 L 89.93 160.86 L 90.68 170.84 L 90.12 180.83 L 89.64 190.82 L 90.69 200.8 L 90.49 210.79 L 90.25 220.78 L 90.3 230.76 L 89.49 240.75 L 89.58 250.74 L 90.45 260.72 L 89.66 270.71 L 90.74 280.7 L 89.6 290.68 L 90.71 300.67 L 90.51 310.66 L 90.16 320.64 L 90.73 330.63 L 90.7 340.62 L 89.27 350.61 L 90.28 360.59 L 90.25 370.58 L 90.1 380.57 L 90.7 390.55 L 90.61 400.54 L 89.63 410.53 L 90.18 420.51 L 89.94 430.5 L 90.21 440.49 L 89.44 450.47 L 90.44 460.46 L 90.33 470.45 L 89.53 480.43 L 90.49 490.42 L 90.69 500.41 L 89.64 510.39 L 90.21 520.38 L 90.57 530.37 L 89.48 540.36 L 89.46 550.34 L 89.5 560.33 L 90.33 570.32 L 90.23 580.3 L 90.63 590.29 L 90.1 600.28 L 90.34 610.26 L 90.36 620.25 L 89.45 630.24 L 90.11 640.22 L 89.84 650.21 L 90.38 660.2 L 90.44 670.18 L 89.41 680.17 L 89.39 690.16 L 89.46 700.14 L 89.41 710.13 L 90.54 720.12 L 89.72 730.11 L 90.48 740.09 L 90.69 750.08 L 89.45 760.07 L 90.13 770.05 L 89.49 780.04 L 90.65 790.03 L 90.56 800.01 L 90 810 L 90 809.25 L 80 810.12 L 70 810.24 L 60 810.38 L 50 810.62 L 40 810.57 L 30 809.98 L 20 810.56 L 10 809.37 L 0 810 L 0.46 810 L 0.72 800.01 L -0.34 790.03 L 0.05 780.04 L -0.54 770.05 L 0.16 760.07 L -0.27 750.08 L -0.04 740.09 L 0.06 730.11 L -0.73 720.12 L -0.11 710.13 L 0.06 700.14 L -0.47 690.16 L -0.66 680.17 L -0.19 670.18 L -0.1 660.2 L -0.65 650.21 L 0.72 640.22 L -0.54 630.24 L 0.74 620.25 L -0.21 610.26 L 0.25 600.28 L 0.51 590.29 L -0.02 580.3 L -0.21 570.32 L -0.05 560.33 L 0.69 550.34 L -0.02 540.36 L -0.53 530.37 L -0.25 520.38 L -0.26 510.39 L -0.09 500.41 L 0.11 490.42 L -0.39 480.43 L -0.51 470.45 L 0.52 460.46 L 0.2 450.47 L 0.07 440.49 L -0.62 430.5 L -0.51 420.51 L -0.25 410.53 L 0.45 400.54 L -0.42 390.55 L -0.56 380.57 L -0.57 370.58 L 0.69 360.59 L 0.63 350.61 L -0.03 340.62 L -0.13 330.63 L 0.67 320.64 L -0.36 310.66 L 0.09 300.67 L -0.46 290.68 L 0.42 280.7 L 0.52 270.71 L -0.51 260.72 L -0.52 250.74 L -0.35 240.75 L -0.36 230.76 L 0.65 220.78 L 0.46 210.79 L 0.06 200.8 L -0.11 190.82 L -0.68 180.83 L 0.27 170.84 L -0.15 160.86 L -0.21 150.87 L 0.54 140.88 L -0.57 130.89 L 0.65 120.91 L -0.16 110.92 L -0.3 100.93 L 0.54 90.95 L -0.56 80.96 L -0.56 70.97 L -0.06 60.99 L 0 51 L 0 51 Z Z" fill="none" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-677b7b8949515195-27">
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 80px; margin-left: 12px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: none; white-space: nowrap; ">Files</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;">Files</div>
</div>
</div>
</foreignObject>
<text x="12" y="94" fill="#000000" font-family="Verdana" font-size="14px">Files</text>
<text x="12" y="94" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Files</text>
</switch>
</g>
</g>
<g id="cell-677b7b8949515195-28">
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 126px; margin-left: 12px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: none; white-space: nowrap; ">Running</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;">Running</div>
</div>
</div>
</foreignObject>
<text x="12" y="140" fill="#000000" font-family="Verdana" font-size="14px">Running</text>
<text x="12" y="140" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Running</text>
</switch>
</g>
</g>
<g id="cell-677b7b8949515195-29">
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 171px; margin-left: 12px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: none; white-space: nowrap; ">Tabs</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;">Tabs</div>
</div>
</div>
</foreignObject>
<text x="12" y="185" fill="#000000" font-family="Verdana" font-size="14px">Tabs</text>
<text x="12" y="185" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Tabs</text>
</switch>
</g>
</g>
<g id="cell-677b7b8949515195-30">
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 217px; margin-left: 12px;">
<div style="box-sizing: border-box; font-size: 0; text-align: left; ">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: none; white-space: nowrap; ">Extensions</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;">
<div style="display: inline-block; font-size: 14px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;">Extensions</div>
</div>
</div>
</foreignObject>
<text x="12" y="231" fill="#000000" font-family="Verdana" font-size="14px">Extensions</text>
<text x="12" y="231" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="14px">Extensions</text>
</switch>
</g>
</g>
<g id="cell-23">
<path d="M 120 565 L 120 565.35 L 130 565.59 L 140 564.67 L 150 565.06 L 160 564.37 L 170 564.33 L 180 564.38 L 190 564.48 L 200 564.26 L 210 565.12 L 220 564.9 L 230 564.86 L 240 565.52 L 250 565 L 249.79 565 L 250.24 571 L 249.94 577 L 250.02 583 L 249.95 589 L 250 595 L 250 594.85 L 240 595.73 L 230 595.02 L 220 594.84 L 210 595.16 L 200 594.29 L 190 594.52 L 180 594.52 L 170 595.14 L 160 595.45 L 150 595.27 L 140 595.6 L 130 595.7 L 120 595 L 119.97 595 L 119.92 589 L 119.76 583 L 120.21 577 L 119.85 571 L 120 565 L 120 565 Z Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 120 565 L 120 565.09 L 130 564.61 L 140 564.69 L 150 565.37 L 160 565.3 L 170 564.75 L 180 565.62 L 190 565.17 L 200 564.51 L 210 564.29 L 220 564.5 L 230 565.11 L 240 565.13 L 250 565 L 250.04 565 L 250.04 571 L 249.99 577 L 250.11 583 L 250.01 589 L 250 595 L 250 595.69 L 240 594.34 L 230 595.48 L 220 594.84 L 210 595.48 L 200 595.69 L 190 595.6 L 180 595.11 L 170 595.38 L 160 595.56 L 150 595.16 L 140 595.16 L 130 595.74 L 120 595 L 120.03 595 L 120.19 589 L 119.87 583 L 119.97 577 L 120.21 571 L 120 565 L 120 565 Z Z" fill="none" stroke="rgb(0, 0, 0)" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 128px; height: 1px; padding-top: 580px; margin-left: 120px;">
<div style="box-sizing: border-box; font-size: 0; text-align: right; ">
<div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; "> 🔎</div>
<div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: right;">
<div style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> 🔎</div>
</div>
</div>
</foreignObject>
<text x="248" y="584" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="end"> 🔎</text>
<text x="248" y="584" fill="rgb(0, 0, 0)" font-family="Verdana" font-size="12px" text-anchor="end"> 🔎</text>
</switch>
</g>
</g>
<g id="cell-24">
<rect x="430" y="190" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 430 190 L 430.37 190.34 L 436.18 196.77 L 443.53 204.63 L 450.25 211.9 L 456.42 218.66 L 463.2 225.99 L 470.12 233.45 L 476.99 240.85 L 483.08 247.54 L 490.25 255.23 L 496.93 262.47 L 503.87 269.94 L 510.41 277.04 L 516.32 283.57 L 523.58 291.34 L 529.49 297.86 L 536.27 305.19 L 542.94 312.42 L 550 320 M 430 320 L 429.89 319.9 L 436.22 312.36 L 443.02 305.27 L 449.8 298.14 L 456.78 291.22 L 463.55 284.09 L 469.71 276.4 L 476.64 269.42 L 483.21 262.1 L 489.71 254.73 L 496.85 247.94 L 503.66 240.86 L 510.02 233.36 L 516.21 225.69 L 523.32 218.88 L 530.51 212.14 L 536.91 204.67 L 543.08 196.99 L 550 190" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="430" y="190" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 430 190 L 429.77 189.79 L 437.11 197.63 L 442.81 203.97 L 450.18 211.84 L 456.35 218.6 L 463.65 226.41 L 470.03 233.36 L 476.7 240.59 L 483.08 247.55 L 489.84 254.85 L 496.87 262.41 L 503.45 269.55 L 509.69 276.38 L 517.13 284.32 L 523.24 291.03 L 529.76 298.12 L 536.76 305.64 L 543.76 313.17 L 550 320 M 430 320 L 430.5 320.46 L 436.4 312.53 L 443.47 305.68 L 450.09 298.42 L 457.07 291.48 L 462.98 283.56 L 469.94 276.61 L 476.12 268.94 L 482.92 261.84 L 489.51 254.55 L 497.01 248.1 L 503.84 241.03 L 509.87 233.22 L 516.35 225.82 L 523.88 219.39 L 530.14 211.79 L 536.79 204.56 L 543.51 197.39 L 550 190" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-25">
<rect x="570" y="190" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 570 190 L 569.8 189.81 L 576.59 197.15 L 583.19 204.31 L 589.49 211.19 L 596.67 218.89 L 602.99 225.79 L 609.97 233.31 L 617.12 240.98 L 623.58 248 L 630.04 255.04 L 636.22 261.81 L 643.86 269.93 L 650.2 276.85 L 656.24 283.5 L 663.84 291.57 L 670.53 298.82 L 676.35 305.26 L 682.96 312.44 L 690 320 M 570 320 L 569.56 319.59 L 576.23 312.37 L 583.81 305.99 L 589.52 297.89 L 597 291.41 L 602.81 283.41 L 610.06 276.72 L 617.19 269.93 L 622.79 261.72 L 629.92 254.92 L 636.17 247.32 L 643.55 240.75 L 650.41 233.71 L 656.41 225.87 L 663.04 218.62 L 670.1 211.76 L 676.28 204.09 L 683.59 197.46 L 690 190" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="570" y="190" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 570 190 L 569.82 189.84 L 577.17 197.69 L 582.86 204 L 590.15 211.8 L 596.84 219.05 L 603.29 226.07 L 609.74 233.09 L 616.29 240.21 L 623.23 247.69 L 630.16 255.15 L 636.5 262.06 L 643.49 269.59 L 649.84 276.52 L 656.9 284.11 L 662.8 290.62 L 669.66 298.02 L 676.5 305.4 L 683.54 312.97 L 690 320 M 570 320 L 569.54 319.58 L 576.44 312.57 L 583.07 305.31 L 590.3 298.61 L 596.52 290.98 L 603.13 283.7 L 609.63 276.32 L 616.83 269.59 L 623.64 262.5 L 629.55 254.59 L 636.35 247.49 L 643.3 240.53 L 649.85 233.2 L 656.19 225.67 L 663.84 219.36 L 669.69 211.38 L 676.29 204.09 L 682.86 196.78 L 690 190" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-26">
<rect x="710" y="190" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 710 190 L 709.62 189.65 L 716.53 197.1 L 723.51 204.61 L 729.8 211.48 L 736.17 218.43 L 743.62 226.38 L 750.1 233.43 L 756.21 240.13 L 763.26 247.71 L 769.95 254.96 L 777.09 262.61 L 783.07 269.2 L 789.48 276.19 L 796.12 283.39 L 802.83 290.64 L 809.53 297.9 L 817.01 305.88 L 822.9 312.38 L 830 320 M 710 320 L 709.95 319.95 L 716.58 312.7 L 723.12 305.36 L 730.53 298.83 L 736.38 290.85 L 743.27 283.83 L 750.32 276.96 L 756.43 269.23 L 763.83 262.68 L 770.15 255.14 L 776.39 247.52 L 783.32 240.54 L 789.87 233.21 L 796.33 225.8 L 802.93 218.52 L 810.08 211.74 L 816.75 204.52 L 823.32 197.21 L 830 190" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="710" y="190" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 710 190 L 709.94 189.94 L 716.73 197.28 L 723.22 204.34 L 730.06 211.72 L 736.46 218.7 L 743.37 226.14 L 749.49 232.87 L 756.97 240.83 L 762.8 247.28 L 770.45 255.41 L 776.66 262.22 L 783.27 269.39 L 789.89 276.56 L 796.54 283.77 L 803.76 291.51 L 810.4 298.71 L 816.71 305.59 L 823.36 312.81 L 830 320 M 710 320 L 709.67 319.69 L 716.22 312.36 L 723.59 305.79 L 729.46 297.84 L 736.2 290.68 L 743.72 284.25 L 750.14 276.8 L 756.6 269.38 L 763.25 262.15 L 770.16 255.15 L 776.73 247.84 L 783.7 240.9 L 790.14 233.46 L 796.71 226.15 L 803.58 219.11 L 810.37 212.01 L 816.63 204.41 L 823.08 196.99 L 830 190" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-27">
<rect x="710" y="360.5" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 710 360.5 L 709.79 360.31 L 716.87 367.91 L 723.38 374.99 L 730.3 382.45 L 736.59 389.32 L 743.1 396.4 L 750.01 403.84 L 756.98 411.35 L 763.53 418.46 L 770.25 425.73 L 776.31 432.39 L 783.65 440.23 L 789.49 446.7 L 796.17 453.93 L 803.18 461.47 L 809.88 468.72 L 816.52 475.92 L 822.86 482.84 L 830 490.5 M 710 490.5 L 709.56 490.09 L 717.13 483.71 L 723.75 476.44 L 729.93 468.77 L 737.07 461.98 L 743.75 454.77 L 749.89 447.07 L 757.17 440.41 L 762.82 432.25 L 769.61 425.14 L 776.84 418.44 L 783.4 411.12 L 790.16 403.98 L 796.72 396.66 L 803.62 389.65 L 809.52 381.72 L 816.74 375.01 L 823.7 368.06 L 830 360.5" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="710" y="360.5" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 710 360.5 L 709.89 360.39 L 717.15 368.17 L 723.22 374.84 L 729.81 381.99 L 736.57 389.3 L 742.85 396.17 L 750.31 404.12 L 756.79 411.17 L 762.79 417.78 L 769.89 425.4 L 776.15 432.24 L 782.96 439.6 L 790.33 447.47 L 796.25 454.01 L 802.79 461.11 L 809.82 468.67 L 816.35 475.76 L 823.59 483.52 L 830 490.5 M 710 490.5 L 709.66 490.18 L 716.48 483.1 L 723.54 476.24 L 729.52 468.39 L 736.84 461.77 L 743.67 454.7 L 750.3 447.45 L 756.27 439.58 L 763.67 433.03 L 769.97 425.47 L 776.85 418.45 L 783.52 411.23 L 790.17 403.99 L 796.89 396.81 L 803.46 389.5 L 809.71 381.9 L 817.04 375.29 L 823.41 367.79 L 830 360.5" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-28">
<rect x="290" y="360.5" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 290 360.5 L 290.52 360.98 L 297.2 368.22 L 302.81 374.46 L 309.47 381.68 L 316.93 389.63 L 322.94 396.25 L 330.37 404.18 L 337 411.36 L 343.2 418.16 L 349.63 425.16 L 357.11 433.13 L 363.71 440.29 L 370.39 447.53 L 376.23 453.99 L 383.73 461.98 L 390.25 469.06 L 396.48 475.88 L 403.38 483.32 L 410 490.5 M 290 490.5 L 289.98 490.48 L 296.86 483.45 L 303.75 476.44 L 309.7 468.56 L 317.13 462.04 L 322.89 453.98 L 330.5 447.63 L 336.38 439.68 L 343.54 432.91 L 350.19 425.67 L 356.45 418.07 L 363 410.75 L 370.23 404.04 L 376.49 396.45 L 383.5 389.54 L 389.68 381.87 L 396.55 374.83 L 403.6 367.97 L 410 360.5" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="290" y="360.5" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 290 360.5 L 289.66 360.18 L 296.51 367.58 L 303.38 374.99 L 309.73 381.92 L 316.36 389.1 L 323.14 396.43 L 330.22 404.04 L 336.46 410.86 L 342.95 417.93 L 349.75 425.27 L 356.41 432.48 L 363.59 440.18 L 369.54 446.75 L 376.89 454.6 L 383.09 461.38 L 390.53 469.32 L 397.03 476.39 L 403 482.97 L 410 490.5 M 290 490.5 L 290.51 490.97 L 296.27 482.91 L 303.82 476.51 L 309.77 468.62 L 316.37 461.34 L 323.65 454.68 L 329.98 447.15 L 336.39 439.69 L 342.98 432.39 L 350.08 425.57 L 357.16 418.73 L 363.04 410.78 L 370.45 404.25 L 377.15 397.05 L 383.26 389.32 L 390.15 382.31 L 396.84 375.11 L 402.93 367.35 L 410 360.5" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-29">
<rect x="430" y="360.5" width="120" height="130" fill="#ffffff" stroke="#999999" stroke-width="4" pointer-events="none"/>
<path d="M 430 360.5 L 430.54 361 L 436.82 367.87 L 443.3 374.92 L 450.34 382.48 L 457.18 389.87 L 463.72 396.97 L 470.49 404.28 L 476.85 411.23 L 483.68 418.6 L 490.34 425.81 L 497.18 433.2 L 503.84 440.41 L 510.09 447.25 L 517.19 454.87 L 523.76 462.01 L 530.19 469.01 L 536.47 475.88 L 543.39 483.33 L 550 490.5 M 430 490.5 L 429.53 490.07 L 436.34 482.98 L 443.86 476.54 L 449.76 468.61 L 457.1 462.01 L 463.65 454.68 L 470.14 447.29 L 476.69 439.97 L 483.24 432.64 L 490.31 425.79 L 496.29 417.93 L 503.18 410.92 L 510.28 404.09 L 516.59 396.54 L 523.02 389.1 L 529.76 381.94 L 537.16 375.4 L 543.32 367.71 L 550 360.5" fill="none" stroke="#999999" stroke-width="4" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="430" y="360.5" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" stroke-width="4" pointer-events="none"/>
<path d="M 430 360.5 L 430.47 360.94 L 437.02 368.05 L 443.67 375.26 L 449.76 381.95 L 456.69 389.41 L 463.1 396.39 L 469.62 403.49 L 476.9 411.27 L 483.16 418.12 L 490.53 425.99 L 496.28 432.37 L 502.98 439.62 L 510.05 447.21 L 516.35 454.1 L 523 461.3 L 529.79 468.64 L 536.95 476.32 L 543.15 483.11 L 550 490.5 M 430 490.5 L 430.35 490.82 L 436.22 482.87 L 443.57 476.27 L 449.5 468.37 L 456.43 461.39 L 463.51 454.55 L 469.6 446.79 L 476.86 440.12 L 483.14 432.55 L 489.9 425.41 L 497.2 418.77 L 502.89 410.65 L 510.16 403.98 L 516.43 396.4 L 523.47 389.52 L 529.46 381.67 L 536.6 374.88 L 543.78 368.13 L 550 360.5" fill="none" stroke="#999999" stroke-width="4" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-30">
<rect x="570" y="360.5" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 570 360.5 L 570.13 360.62 L 577.22 368.23 L 583.04 374.67 L 589.67 381.87 L 596.16 388.92 L 603.58 396.84 L 610.35 404.16 L 616.62 411.01 L 623.38 418.32 L 630.33 425.8 L 636.36 432.44 L 643.07 439.71 L 649.71 446.9 L 656.7 454.42 L 663.3 461.58 L 669.65 468.51 L 676.44 475.84 L 683.01 482.98 L 690 490.5 M 570 490.5 L 570.07 490.57 L 577.03 483.61 L 583.71 476.4 L 589.88 468.72 L 596.92 461.85 L 602.97 454.05 L 610.34 447.48 L 616.4 439.7 L 623.55 432.93 L 629.55 425.08 L 636.76 418.36 L 643.54 411.24 L 650.07 403.9 L 656.39 396.35 L 663.59 389.63 L 669.86 382.04 L 677.19 375.43 L 683.87 368.22 L 690 360.5" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="570" y="360.5" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 570 360.5 L 570.54 361 L 577 368.03 L 583.5 375.1 L 589.93 382.1 L 596.96 389.66 L 603.58 396.84 L 609.45 403.33 L 616.45 410.85 L 623.33 418.28 L 630.06 425.56 L 636.27 432.35 L 642.89 439.54 L 649.69 446.88 L 656.18 453.94 L 663.36 461.63 L 670.15 468.97 L 676.88 476.26 L 683.81 483.72 L 690 490.5 M 570 490.5 L 569.67 490.2 L 576.98 483.57 L 583.08 475.82 L 590.02 468.85 L 596.21 461.19 L 603.08 454.16 L 610.4 447.53 L 616.43 439.73 L 623.69 433.05 L 630.42 425.89 L 636.57 418.19 L 642.93 410.68 L 650.38 404.19 L 657.21 397.12 L 662.98 389.07 L 669.65 381.85 L 677.13 375.37 L 683.76 368.11 L 690 360.5" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-31">
<rect x="710" y="530" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 710 530 L 709.47 529.51 L 716.67 537.22 L 723.04 544.18 L 730.07 551.73 L 736.74 558.96 L 743.02 565.82 L 750.08 573.41 L 756.39 580.3 L 763.56 587.98 L 770.49 595.45 L 776.99 602.52 L 782.81 608.96 L 789.75 616.44 L 797.14 624.33 L 803.21 631 L 810.19 638.51 L 817.09 645.94 L 823.8 653.21 L 830 660 M 710 660 L 709.52 659.56 L 716.38 652.52 L 723.3 645.53 L 729.6 637.96 L 736.76 631.2 L 743.2 623.77 L 750.04 616.71 L 756.2 609.02 L 763.06 601.97 L 770.31 595.29 L 776.84 587.94 L 783.3 580.52 L 790.19 573.51 L 796.66 566.1 L 802.8 558.39 L 809.9 551.58 L 816.86 544.63 L 823.82 537.68 L 830 530" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="710" y="530" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 710 530 L 709.64 529.66 L 716.71 537.26 L 722.84 543.99 L 729.63 551.33 L 736.71 558.93 L 743.32 566.09 L 749.63 572.99 L 756.2 580.12 L 762.82 587.31 L 769.86 594.87 L 776.15 601.75 L 783.56 609.65 L 789.57 616.27 L 796.85 624.06 L 803.33 631.11 L 810.3 638.61 L 817.19 646.04 L 823.61 653.03 L 830 660 M 710 660 L 709.47 659.51 L 716.87 652.96 L 722.95 645.2 L 729.66 638.02 L 736.45 630.91 L 743.4 623.95 L 750.28 616.92 L 756.71 609.48 L 762.97 601.89 L 770.01 595.01 L 776.68 587.79 L 783.35 580.57 L 790.41 573.71 L 796.39 565.86 L 803.35 558.9 L 810.31 551.96 L 816.97 544.72 L 823.06 536.97 L 830 530" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-32">
<rect x="290" y="530" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 290 530 L 289.57 529.6 L 296.14 536.74 L 303.23 544.35 L 309.97 551.64 L 317.05 559.24 L 323.41 566.18 L 329.8 573.15 L 336.38 580.29 L 342.85 587.33 L 350.26 595.24 L 356.63 602.18 L 363.63 609.72 L 370.04 616.7 L 377.18 624.37 L 383.37 631.15 L 390.49 638.79 L 397.18 646.03 L 402.94 652.42 L 410 660 M 290 660 L 290.31 660.29 L 296.73 652.83 L 303.77 645.96 L 309.86 638.2 L 316.55 631 L 323.72 624.24 L 330.41 617.05 L 336.29 609.1 L 343.02 601.93 L 350.53 595.49 L 356.18 587.33 L 363.69 580.88 L 370.31 573.62 L 377 566.42 L 383.65 559.18 L 390.41 552.05 L 396.28 544.08 L 403.87 537.72 L 410 530" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="290" y="530" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 290 530 L 289.75 529.77 L 296.44 537.01 L 303.63 544.72 L 310.2 551.85 L 316.6 558.82 L 323.52 566.28 L 330.47 573.76 L 336.38 580.29 L 343.8 588.21 L 349.87 594.88 L 357.19 602.71 L 363.34 609.45 L 370.07 616.73 L 376.21 623.47 L 382.91 630.72 L 390.03 638.36 L 396.52 645.42 L 403.47 652.9 L 410 660 M 290 660 L 290.5 660.46 L 296.66 652.77 L 302.92 645.17 L 310.24 638.55 L 317.09 631.51 L 323.08 623.66 L 329.7 616.39 L 337.04 609.79 L 343.57 602.44 L 350.17 595.15 L 357.08 588.16 L 362.92 580.17 L 370.01 573.35 L 376.99 566.41 L 383.75 559.27 L 390.3 551.95 L 397.1 544.85 L 403.11 537.02 L 410 530" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-33">
<rect x="430" y="530" width="120" height="130" fill="#ffffff" stroke="#999999" stroke-width="4" pointer-events="none"/>
<path d="M 430 530 L 429.61 529.64 L 436.85 537.39 L 442.84 543.99 L 450.41 552.04 L 456.8 559.02 L 463.66 566.41 L 469.99 573.33 L 477.01 580.87 L 483.29 587.74 L 489.49 594.53 L 496.49 602.06 L 502.94 609.08 L 509.76 616.45 L 516.69 623.91 L 522.81 630.63 L 529.54 637.9 L 536.49 645.39 L 542.96 652.43 L 550 660 M 430 660 L 429.85 659.86 L 436.93 653.02 L 443.71 645.9 L 450.13 638.45 L 456.45 630.91 L 463.18 623.75 L 470.09 616.75 L 476.62 609.4 L 482.97 601.89 L 490.15 595.14 L 496.41 587.54 L 503.02 580.27 L 510.2 573.52 L 516.99 566.41 L 523.46 559.01 L 529.65 551.34 L 536.92 544.68 L 543.78 537.64 L 550 530" fill="none" stroke="#999999" stroke-width="4" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="430" y="530" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" stroke-width="4" pointer-events="none"/>
<path d="M 430 530 L 429.99 529.99 L 436.44 537.02 L 443.35 544.46 L 449.49 551.2 L 456.82 559.03 L 462.87 565.68 L 470.11 573.43 L 476.31 580.23 L 483.24 587.69 L 490.44 595.4 L 496.48 602.05 L 503.17 609.3 L 510.27 616.92 L 516.76 623.98 L 523.32 631.1 L 530.12 638.45 L 536.36 645.27 L 542.88 652.36 L 550 660 M 430 660 L 429.99 659.99 L 436.6 652.72 L 443.79 645.97 L 450.21 638.53 L 456.13 630.62 L 463.08 623.66 L 469.63 616.33 L 476.45 609.25 L 482.88 601.8 L 490.08 595.07 L 496.46 587.59 L 503.73 580.92 L 509.99 573.32 L 517.19 566.6 L 523.06 558.64 L 529.59 551.28 L 536.71 544.48 L 543.85 537.7 L 550 530" fill="none" stroke="#999999" stroke-width="4" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-34">
<rect x="570" y="530" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 570 530 L 569.58 529.61 L 576.77 537.32 L 582.98 544.12 L 590.11 551.77 L 596.62 558.85 L 603.15 565.94 L 610.29 573.6 L 616.19 580.11 L 623.36 587.8 L 630.35 595.32 L 636.88 602.42 L 643.42 609.52 L 649.91 616.58 L 656.35 623.59 L 663.48 631.25 L 670.47 638.77 L 677.05 645.91 L 683.41 652.85 L 690 660 M 570 660 L 569.67 659.7 L 576.25 652.39 L 582.83 645.09 L 590.21 638.53 L 596.29 630.76 L 603.59 624.13 L 609.79 616.48 L 616.61 609.39 L 623.43 602.32 L 629.97 594.97 L 636.25 587.39 L 643.14 580.37 L 650.22 573.53 L 656.13 565.62 L 663.66 559.19 L 670.04 551.71 L 677.18 544.92 L 683.87 537.71 L 690 530" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="570" y="530" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 570 530 L 570.04 530.04 L 576.63 537.19 L 583.79 544.87 L 590.24 551.89 L 596.16 558.42 L 603.41 566.18 L 609.65 573.01 L 616.67 580.56 L 623.36 587.8 L 630.29 595.27 L 636.79 602.34 L 643.38 609.48 L 650.12 616.77 L 656.9 624.11 L 663.37 631.14 L 669.95 638.29 L 676.45 645.35 L 683.44 652.88 L 690 660 M 570 660 L 569.52 659.56 L 577.2 653.27 L 583.55 645.75 L 589.86 638.2 L 596.27 630.74 L 603.72 624.25 L 610.05 616.71 L 616.62 609.4 L 622.85 601.77 L 629.51 594.55 L 636.19 587.33 L 643.8 580.99 L 649.92 573.26 L 657.08 566.49 L 663.66 559.19 L 670.19 551.84 L 677.06 544.8 L 683.79 537.64 L 690 530" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-35">
<rect x="710" y="670" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 710 670 L 709.65 669.67 L 717.15 677.67 L 723.45 684.55 L 729.64 691.34 L 736.38 698.63 L 743.6 706.35 L 749.61 712.97 L 756.17 720.09 L 762.92 727.39 L 770.34 735.32 L 777.18 742.7 L 783.65 749.74 L 790.27 756.91 L 796.73 763.95 L 803.41 771.19 L 810.52 778.82 L 816.64 785.53 L 823.65 793.07 L 830 800 M 710 800 L 710.29 800.27 L 716.45 792.58 L 723.29 785.51 L 730.29 778.6 L 736.71 771.15 L 743.2 763.76 L 749.94 756.61 L 756.67 749.45 L 763.4 742.28 L 769.61 734.64 L 777.07 728.15 L 783.13 720.37 L 789.45 712.83 L 796.84 706.27 L 803.05 698.62 L 809.65 691.35 L 816.37 684.17 L 823.25 677.14 L 830 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="710" y="670" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 710 670 L 709.53 669.56 L 717.19 677.7 L 723.52 684.62 L 729.75 691.44 L 737.13 699.31 L 743.54 706.31 L 750.06 713.39 L 756.39 720.3 L 763.06 727.52 L 769.97 734.97 L 776.52 742.08 L 782.92 749.07 L 789.73 756.42 L 796.7 763.92 L 803.7 771.45 L 809.79 778.14 L 816.56 785.46 L 823.84 793.24 L 830 800 M 710 800 L 710.05 800.05 L 716.99 793.08 L 723.57 785.77 L 729.68 778.03 L 737.2 771.6 L 743.47 764.01 L 750.26 756.91 L 756.38 749.18 L 763.49 742.37 L 769.98 734.98 L 776.95 728.04 L 783.84 721.02 L 789.65 713.01 L 796.16 705.64 L 803.23 698.79 L 810.43 692.07 L 816.97 684.72 L 823.66 677.52 L 830 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-36">
<rect x="290" y="670" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 290 670 L 290.15 670.14 L 296.47 677.04 L 303.39 684.49 L 309.6 691.3 L 316.22 698.47 L 323.81 706.55 L 330.45 713.74 L 336.18 720.1 L 342.78 727.27 L 349.68 734.7 L 356.23 741.82 L 363.44 749.55 L 369.74 756.43 L 376.63 763.85 L 383.65 771.41 L 389.77 778.12 L 396.39 785.3 L 403.33 792.78 L 410 800 M 290 800 L 290.09 800.08 L 297.06 793.14 L 303.75 785.94 L 309.98 778.32 L 316.62 771.07 L 323.12 763.69 L 329.73 756.42 L 336.37 749.17 L 343.87 742.71 L 350.38 735.35 L 356.92 728.01 L 363.38 720.6 L 370.46 713.76 L 376.94 706.36 L 382.93 698.52 L 390.29 691.94 L 396.36 684.16 L 403.72 677.58 L 410 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="290" y="670" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 290 670 L 290.33 670.3 L 296.76 677.31 L 302.87 684.01 L 310.5 692.12 L 316.77 698.99 L 323.75 706.49 L 329.74 713.09 L 336.88 720.75 L 342.84 727.32 L 350.32 735.29 L 356.87 742.41 L 363.63 749.71 L 370.19 756.84 L 376.28 763.53 L 383.06 770.86 L 389.64 778.01 L 396.71 785.59 L 403.49 792.92 L 410 800 M 290 800 L 289.5 799.54 L 297.17 793.24 L 302.92 785.18 L 310.07 778.4 L 316.62 771.07 L 323.37 763.92 L 330.16 756.82 L 336.73 749.5 L 342.9 741.82 L 350.45 735.41 L 357.11 728.18 L 363.7 720.89 L 369.68 713.04 L 377 706.42 L 383.31 698.87 L 389.78 691.47 L 396.8 684.56 L 402.98 676.9 L 410 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-37">
<rect x="430" y="670" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 430 670 L 429.82 669.83 L 436.39 676.97 L 443.73 684.81 L 450.12 691.78 L 456.62 698.85 L 463.41 706.18 L 469.82 713.16 L 476.55 720.45 L 483.67 728.09 L 490.12 735.11 L 497.2 742.71 L 502.85 749 L 510.01 756.67 L 516.74 763.96 L 523.58 771.34 L 529.6 777.97 L 537.14 785.99 L 543.5 792.93 L 550 800 M 430 800 L 429.86 799.87 L 436.66 792.77 L 443.57 785.77 L 449.6 777.97 L 456.97 771.39 L 463.42 763.96 L 469.77 756.45 L 477.1 749.84 L 483.64 742.51 L 490.12 735.11 L 497.11 728.19 L 503.56 720.77 L 510.46 713.76 L 516.28 705.75 L 523.24 698.8 L 530.4 692.04 L 536.28 684.09 L 543.57 677.44 L 550 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="430" y="670" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 430 670 L 430.22 670.2 L 436.9 677.43 L 443.56 684.65 L 449.52 691.23 L 456.75 698.96 L 463.27 706.05 L 470.06 713.39 L 476.64 720.53 L 483.58 728 L 490.23 735.21 L 496.86 742.4 L 503.02 749.16 L 509.64 756.34 L 516.81 764.02 L 522.8 770.62 L 530.29 778.6 L 536.5 785.4 L 542.82 792.31 L 550 800 M 430 800 L 429.58 799.62 L 436.68 792.79 L 443.5 785.71 L 449.67 778.02 L 456.43 770.89 L 463.19 763.76 L 470.38 757.02 L 476.17 748.99 L 483.27 742.16 L 489.67 734.7 L 496.84 727.93 L 503.28 720.51 L 510.27 713.58 L 516.51 705.97 L 522.82 698.42 L 530.04 691.7 L 537.22 684.95 L 543.66 677.53 L 550 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-38">
<rect x="570" y="670" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 570 670 L 569.7 669.72 L 576.12 676.72 L 583.86 684.93 L 590.44 692.07 L 597.02 699.22 L 603.6 706.35 L 610.53 713.83 L 616.34 720.26 L 622.89 727.37 L 630.48 735.44 L 636.89 742.43 L 643.78 749.85 L 650.11 756.77 L 656.87 764.07 L 663.63 771.39 L 669.95 778.29 L 676.21 785.14 L 683.88 793.28 L 690 800 M 570 800 L 569.7 799.72 L 576.34 792.47 L 583.65 785.84 L 590.24 778.55 L 597.12 771.53 L 603.21 763.77 L 609.76 756.44 L 616.32 749.12 L 622.99 741.9 L 630.5 735.46 L 637 728.08 L 643.73 720.92 L 650.05 713.38 L 656.94 706.36 L 662.86 698.46 L 670.37 692.01 L 676.87 684.63 L 683.61 677.48 L 690 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="570" y="670" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 570 670 L 570.44 670.4 L 576.59 677.15 L 582.87 684.02 L 590.37 692 L 596.39 698.63 L 603.77 706.52 L 610.14 713.47 L 616.22 720.14 L 623.29 727.73 L 630.33 735.3 L 636.95 742.49 L 643.5 749.6 L 649.62 756.31 L 657.05 764.24 L 662.81 770.62 L 670.41 778.71 L 676.5 785.4 L 683.61 793.03 L 690 800 M 570 800 L 569.73 799.75 L 576.99 793.07 L 583.39 785.61 L 589.98 778.31 L 596.45 770.91 L 603.82 764.34 L 609.83 756.51 L 616.59 749.37 L 622.93 741.85 L 629.5 734.54 L 636.35 727.49 L 643.3 720.52 L 649.85 713.2 L 656.7 706.14 L 663.47 699.02 L 669.76 691.45 L 676.27 684.08 L 682.79 676.72 L 690 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-39">
<rect x="850" y="190" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 850 190 L 850.34 190.32 L 856.46 197.03 L 863.13 204.26 L 870.01 211.68 L 876.72 218.94 L 883.8 226.54 L 890.27 233.58 L 896.85 240.73 L 903.39 247.83 L 910.39 255.36 L 916.62 262.18 L 922.91 269.06 L 929.99 276.65 L 936.32 283.56 L 943.11 290.91 L 949.54 297.91 L 956.26 305.18 L 963.39 312.83 L 970 320 M 850 320 L 849.62 319.65 L 856.74 312.84 L 863.87 306.05 L 870.11 298.43 L 877.16 291.56 L 883.32 283.87 L 889.55 276.25 L 896.37 269.17 L 903.3 262.19 L 910.14 255.13 L 916.95 248.04 L 923.83 241.01 L 930.07 233.4 L 937.14 226.54 L 943.29 218.85 L 949.55 211.25 L 956.56 204.35 L 962.79 196.72 L 970 190" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="850" y="190" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 850 190 L 850.42 190.39 L 856.87 197.41 L 863.18 204.3 L 870.27 211.92 L 876.32 218.56 L 883.54 226.3 L 890.48 233.78 L 896.57 240.46 L 903.39 247.83 L 910.52 255.48 L 916.13 261.73 L 923.57 269.66 L 930.07 276.73 L 936.85 284.06 L 943.52 291.28 L 949.85 298.19 L 956.79 305.67 L 963.14 312.6 L 970 320 M 850 320 L 850.22 320.2 L 856.42 312.55 L 863 305.25 L 869.53 297.9 L 877.03 291.45 L 883.24 283.81 L 890.12 276.78 L 896.63 269.41 L 903.04 261.95 L 910.42 255.38 L 917.02 248.1 L 923.37 240.59 L 929.89 233.23 L 936.46 225.92 L 943.51 219.05 L 950.42 212.05 L 956.65 204.43 L 963.87 197.72 L 970 190" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-40">
<rect x="850" y="360.5" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 850 360.5 L 850.44 360.91 L 856.22 367.31 L 863.2 374.82 L 870.36 382.5 L 877.15 389.83 L 883.7 396.95 L 890.35 404.16 L 896.17 410.59 L 903.01 417.98 L 909.53 425.07 L 916.72 432.77 L 923.68 440.27 L 929.52 446.72 L 936.84 454.55 L 943.27 461.55 L 950.09 468.91 L 956.8 476.18 L 963.65 483.57 L 970 490.5 M 850 490.5 L 850.38 490.85 L 856.6 483.22 L 863.19 475.93 L 869.97 468.81 L 876.84 461.77 L 883.69 454.71 L 889.95 447.12 L 896.48 439.78 L 903.32 432.71 L 910.04 425.54 L 916.68 418.29 L 923.85 411.53 L 929.96 403.8 L 937.05 396.96 L 943.67 389.7 L 950.03 382.19 L 957.21 375.45 L 963.62 367.99 L 970 360.5" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="850" y="360.5" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 850 360.5 L 850.31 360.79 L 856.94 367.98 L 863.42 375.02 L 869.84 382.02 L 876.61 389.34 L 883.41 396.68 L 889.58 403.45 L 896.47 410.87 L 903.6 418.52 L 910.51 425.97 L 916.24 432.32 L 923.15 439.78 L 929.6 446.8 L 936.54 454.28 L 943.45 461.72 L 950.08 468.91 L 956.35 475.77 L 962.94 482.92 L 970 490.5 M 850 490.5 L 850.09 490.58 L 856.25 482.9 L 863.03 475.77 L 870.51 469.31 L 876.26 461.24 L 883.32 454.38 L 889.82 447 L 897.01 440.26 L 903.76 433.11 L 910.04 425.54 L 917.15 418.72 L 923.74 411.43 L 930.14 403.97 L 936.2 396.18 L 943.64 389.68 L 950.13 382.28 L 957.1 375.34 L 963.53 367.9 L 970 360.5" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-41">
<rect x="850" y="530" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 850 530 L 849.67 529.7 L 856.99 537.52 L 862.9 544.05 L 870.35 551.99 L 877.16 559.35 L 882.87 565.68 L 889.64 573 L 896.76 580.65 L 902.82 587.3 L 910.27 595.25 L 916.86 602.4 L 923.25 609.37 L 930.19 616.84 L 936.48 623.72 L 943.11 630.91 L 949.99 638.33 L 956.57 645.47 L 963.51 652.94 L 970 660 M 850 660 L 850.02 660.02 L 856.48 652.6 L 863.61 645.81 L 869.7 638.05 L 877.03 631.45 L 883.4 623.95 L 890.41 617.05 L 896.8 609.57 L 903.7 602.56 L 909.73 594.75 L 917.01 588.09 L 922.99 580.23 L 930.09 573.42 L 936.42 565.88 L 943.34 558.89 L 949.47 551.18 L 957.05 544.8 L 962.85 536.77 L 970 530" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="850" y="530" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 850 530 L 849.51 529.54 L 857.01 537.54 L 863.52 544.62 L 869.95 551.62 L 876.33 558.58 L 883.28 566.06 L 890.06 573.39 L 897.14 580.99 L 903.76 588.17 L 909.66 594.68 L 916.86 602.4 L 923.59 609.68 L 930.11 616.77 L 936.15 623.42 L 943.27 631.06 L 949.92 638.26 L 956.67 645.56 L 963.07 652.54 L 970 660 M 850 660 L 849.53 659.56 L 856.66 652.77 L 863.14 645.38 L 870.1 638.42 L 876.45 630.91 L 883.3 623.85 L 890.48 617.11 L 896.93 609.69 L 903.13 602.03 L 909.59 594.62 L 916.98 588.07 L 923.17 580.4 L 929.95 573.28 L 936.77 566.2 L 942.82 558.42 L 949.56 551.26 L 956.27 544.07 L 963.4 537.29 L 970 530" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
<g id="cell-42">
<rect x="850" y="670" width="120" height="130" fill="#ffffff" stroke="#999999" pointer-events="none"/>
<path d="M 850 670 L 849.93 669.94 L 857.16 677.68 L 863.64 684.73 L 870.03 691.69 L 876.61 698.84 L 883.77 706.51 L 889.8 713.15 L 897.15 721 L 903.41 727.85 L 910.43 735.4 L 916.21 741.8 L 922.89 749.03 L 930.33 756.97 L 936.31 763.56 L 942.83 770.65 L 950.43 778.73 L 956.53 785.43 L 962.81 792.3 L 970 800 M 850 800 L 849.94 799.95 L 856.95 793.03 L 863.15 785.39 L 870.18 778.5 L 876.91 771.34 L 883.65 764.18 L 889.57 756.27 L 896.53 749.32 L 903.49 742.37 L 909.72 734.74 L 916.2 727.34 L 923.06 720.31 L 930.11 713.43 L 936.32 705.79 L 943.09 698.66 L 950.35 691.99 L 956.15 683.97 L 963.43 677.31 L 970 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
<rect x="850" y="670" width="120" height="130" fill="rgb(255, 255, 255)" stroke="#999999" pointer-events="none"/>
<path d="M 850 670 L 850.5 670.46 L 856.44 677.01 L 862.88 684.02 L 870.23 691.88 L 876.42 698.66 L 883.27 706.05 L 889.8 713.15 L 896.61 720.51 L 902.93 727.41 L 909.51 734.55 L 916.76 742.3 L 923.72 749.8 L 929.58 756.28 L 936.98 764.18 L 943.5 771.26 L 950.45 778.75 L 957.21 786.06 L 963.39 792.83 L 970 800 M 850 800 L 849.94 799.95 L 856.69 792.8 L 863.88 786.06 L 869.68 778.04 L 876.79 771.22 L 883.77 764.29 L 890.2 756.85 L 896.86 749.63 L 903.77 742.63 L 909.78 734.8 L 916.53 727.65 L 922.79 720.06 L 929.84 713.19 L 936.74 706.18 L 943.1 698.68 L 949.52 691.22 L 956.9 684.66 L 962.94 676.86 L 970 670" fill="none" stroke="#999999" stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" pointer-events="none"/>
</g>
</g>
</svg>

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 61 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 62 KiB

Wyświetl plik

@ -2,8 +2,8 @@
Widgets
=======
.. py:currentmodule:: ipydrawio
.. py:currentmodule:: ipydrawio_widgets
.. automodule:: ipydrawio.widget_diagram
.. automodule:: ipydrawio_widgets.widget_diagram
:members:
:undoc-members:

Wyświetl plik

@ -32,7 +32,7 @@ dependencies:
- sphinx-jsonschema
- sphinxext-rediraffe
- pip:
- jupyterlite ==0.1.0a19
- jupyterlite ==0.1.0a20
### ipydrawio-docs-deps ###

Wyświetl plik

@ -6,30 +6,6 @@
[jupyterlab]: https://github.com/jupyterlab/jupyterlab
[widgets]: https://github.com/jupyter-widgets/ipywidgets
## Try it Now
```{warning}
<details>
<summary>The demo has some <strong>pointy edges</strong>...</summary>
<ul>
<li>
<em>Diagram Documents</em> and <em>Rich Display</em> work properly, <em>Widgets</em> are <em>close</em>, but can't be properly installed, yet
</li>
<li>
<code>jupyterlite</code> is <em>alpha</em> software, and evolving quickly
</li>
<li>
<strong>Don't</strong> use the demo site for important work
</li>
</ul>
</details>
```
Click the _Try IPyDrawio Now_ button to launch a new browser tab running IPyDrawio. It
contains all of the example _Diagrams_ from this documentation site.
[demo]: ./demo/index
---
## Get Started
@ -48,6 +24,28 @@ Start JupyterLab and [start making diagrams](./diagrams/index.md)!
---
## Try it Now
```{warning}
The in-browser demo has some <strong>pointy edges</strong>...
<ul>
<li>
<code>jupyterlite</code> is <em>alpha</em> software, and evolving quickly
</li>
<li>
<strong>Don't</strong> use the demo site for important work
</li>
</ul>
```
Click the _Try IPyDrawio Now_ button to launch a new browser tab running IPyDrawio in
JupyterLite. It contains all of the example _Diagrams_ from this documentation site, and
some notebooks that show what's posssible.
[demo]: ./demo/index
---
## Features
[![What is IPyDrawio?][poster]][poster]

Wyświetl plik

@ -78,7 +78,9 @@
"id": "93667624-a6e6-4e58-bb97-3d76c312f353",
"metadata": {},
"source": [
"![a mind map of ipydrawio](../../_static/tutorials/designing-jupyter-extensions/mindmap.dio.svg)"
"[![a mind map of ipydrawio][mindmap]][mindmap]\n",
"\n",
"[mindmap]: ../../_static/tutorials/designing-jupyter-extensions/mindmap.dio.svg"
]
},
{
@ -99,7 +101,9 @@
"id": "de02a784-aa8c-49a5-a1c2-e321c42912bd",
"metadata": {},
"source": [
"![an affinity diagram of ipydrawio](../../_static/tutorials/designing-jupyter-extensions/affinity.dio.svg)"
"[![an affinity diagram of ipydrawio][affinity]][affinity]\n",
"\n",
"[affinity]: ../../_static/tutorials/designing-jupyter-extensions/affinity.dio.svg"
]
},
{
@ -140,7 +144,9 @@
"metadata": {},
"source": [
"```{hint}\n",
"The [mermaid live editor](https://mermaid-js.github.io/mermaid-live-editor) is a more interactive editing experience than the `textarea` provided by drawio.\n",
"Here are some more interactive editing experience than the `textarea` provided by drawio.\n",
"- [jupyterlab-markup](https://github.com/agoose77/jupyterlab-markup)\n",
"- [mermaid live editor](https://mermaid-js.github.io/mermaid-live-editor)\n",
"```"
]
},
@ -149,7 +155,9 @@
"id": "0e4be3cd-a8d6-41a7-913a-645ef4487a5f",
"metadata": {},
"source": [
"![an affinity diagram of ipydrawio](../../_static/tutorials/designing-jupyter-extensions/mermaid.dio.svg)"
"[![mermaid diagrams][mermaid]][mermaid]\n",
"\n",
"[mermaid]: ../../_static/tutorials/designing-jupyter-extensions/mermaid.dio.svg"
]
},
{
@ -185,7 +193,10 @@
"id": "69f3416e-884b-4292-84cf-59e54e40a592",
"metadata": {},
"source": [
"![a wireframe of the ipydrawio custom diagram panel](../../_static/tutorials/designing-jupyter-extensions/wireframe.dio.svg)"
"[![a wireframe of the ipydrawio custom diagram panel][wireframe]][wireframe]\n",
"\n",
"\n",
"[wireframe]: ../../_static/tutorials/designing-jupyter-extensions/wireframe.dio.svg"
]
},
{
@ -243,7 +254,9 @@
"id": "2ed75f4f-d1ae-4d30-a082-1f7f5c3ce326",
"metadata": {},
"source": [
"![a comp of a future feature for IPyDrawio](../../_static/tutorials/designing-jupyter-extensions/comp.dio.svg)"
"[![a comp of a future feature for IPyDrawio][comp]][comp]\n",
"\n",
"[comp]: ../../_static/tutorials/designing-jupyter-extensions/comp.dio.svg"
]
},
{
@ -266,12 +279,14 @@
"id": "af1ef92c-69cd-4197-ba34-a25dd428f160",
"metadata": {},
"source": [
"![a deployment diagram of ipydrawio packages](../../_static/tutorials/designing-jupyter-extensions/deployment.dio.svg)"
"[![a deployment diagram of ipydrawio packages][deployment]][deployment]\n",
"\n",
"[deployment]: ../../_static/tutorials/designing-jupyter-extensions/deployment.dio.svg"
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 12,
"id": "9976fbb6-e3fb-43b4-a30d-a0ef1d182bbc",
"metadata": {},
"outputs": [],
@ -290,7 +305,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 13,
"id": "168ffd51-051f-40b2-83f5-c1d3c08a3a8d",
"metadata": {},
"outputs": [],
@ -300,7 +315,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 14,
"id": "45a41a7b-3f73-4e74-8c85-9cf2d7d8b012",
"metadata": {},
"outputs": [],
@ -317,7 +332,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 15,
"id": "ebbd6b25-bcf2-4047-8c72-adde387ec0ee",
"metadata": {},
"outputs": [],
@ -359,7 +374,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 16,
"id": "42de7083-e97a-4b52-a647-9dd718d20b08",
"metadata": {},
"outputs": [
@ -397,7 +412,7 @@
"source": [
"## Documentation\n",
"\n",
"Once these diagrams exist, they can be used directly within documentation sites. While alternatives exist for working directly with `.drawio` files, such as [sphinxcontrib-drawio](https://pypi.org/project/sphinxcontrib-drawio), again keeping the files in standards-compliant formats such as `.png` and `.svg` are more likely to stay editable and viewable over time."
"Once these diagrams exist, they can be used directly within documentation sites. While alternatives exist for working directly with `.drawio` files, such as [sphinxcontrib-drawio](https://pypi.org/project/sphinxcontrib-drawio), again keeping the files in standards-compliant, but editable, formats such as `.dio.png` and `.dio.svg` are more likely to stay editable and viewable over time."
]
},
{
@ -421,7 +436,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -435,7 +450,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4"
"version": "3.10.2"
}
},
"nbformat": 4,

86
dodo.py
Wyświetl plik

@ -178,38 +178,43 @@ def task_setup():
P.OK_PYSETUP[pkg],
)
else:
extra_deps = []
if pkg != "ipydrawio":
extra_deps += [P.OK_PYSETUP["ipydrawio"]]
extra_deps = P.PY_SETUP_DEPS[pkg_setup.parent]()
actions = [
CmdAction(
[
*P.PIP,
"install",
"-e",
".",
"--no-deps",
"-vv",
],
shell=False,
cwd=pkg_setup.parent,
),
]
if P.PY_HAS_EXT.get(pkg_setup.parent):
actions += [
CmdAction(
[
*P.LAB_EXT,
"develop",
"--debug",
"--overwrite",
".",
],
shell=False,
cwd=pkg_setup.parent,
),
]
yield P._ok(
dict(
name=f"py:{pkg}",
file_dep=[pkg_setup, P.PY_SETUP_CFG[pkg], *ext_deps, *extra_deps],
actions=[
CmdAction(
[
*P.PIP,
"install",
"-e",
".",
"--no-deps",
"-vv",
],
shell=False,
cwd=pkg_setup.parent,
),
CmdAction(
[
*P.LAB_EXT,
"develop",
"--debug",
"--overwrite",
".",
],
shell=False,
cwd=pkg_setup.parent,
),
],
actions=actions,
),
P.OK_PYSETUP[pkg],
)
@ -420,13 +425,13 @@ def task_build():
name="js:pre",
file_dep=[
P.YARN_INTEGRITY,
P.IPDW_IGNORE,
P.IPDWP_IGNORE,
P.OK_SUBMODULES,
*sum(P.JS_PY_SCRIPTS.values(), []),
*sum(P.JS_SCHEMAS.values(), []),
],
actions=[[*P.LERNA, "run", "build:pre", "--stream"]],
targets=[P.IPDW_APP],
targets=[P.IPDWP_APP],
),
P.OK_JS_BUILD_PRE,
)
@ -497,6 +502,7 @@ def task_build():
for ext, mod in P.JS_LABEXT_PY_HOST.items()
if mod == py_setup.parent.name
]
file_dep = sorted(
set(
[
@ -514,6 +520,15 @@ def task_build():
if py_setup.parent == P.IPDE:
file_dep += [P.IPDE_DIE2_YARN_LOCK]
elif py_setup.parent == P.IPDW:
for src, dest in P.IPDW_DEPS.items():
file_dep += [dest]
yield dict(
name=f"copy:{py_pkg}:{src.name}",
file_dep=[src],
targets=[dest],
actions=[(P._copy_one, [src, dest])],
)
yield dict(
name=f"sdist:{py_pkg}",
@ -574,6 +589,7 @@ def task_conda_build():
name="build",
file_dep=[
P.RECIPE,
P.CONDARC,
*[P.DIST / p.name for p in P.PY_SDIST.values()],
],
actions=[
@ -735,7 +751,7 @@ def task_demo():
yield dict(
name="extensions",
doc="update jupyter-lite.json from the conda env",
file_dep=[P.ENV_BINDER, P.PY_WHEEL[P.IPD.name]],
file_dep=[P.ENV_BINDER, *P.PY_WHEEL.values()],
targets=[P.DEMO_CONFIG],
actions=[
(
@ -745,6 +761,7 @@ def task_demo():
P.DEMO_CONFIG,
P.FED_EXT_MARKER,
[P.PY_WHEEL[P.IPD.name]],
[P.PY_WHEEL[P.IPDW.name]],
],
)
],
@ -914,9 +931,10 @@ def task_test():
dict(
name="integrity",
file_dep=[
*[*P.OK_SERVEREXT.values()],
*[*P.PY_SDIST.values()],
*[*P.PY_WHEEL.values()],
*P.OK_SERVEREXT.values(),
*P.PY_SDIST.values(),
*P.PY_WHEEL.values(),
*P.IPDW_DEPS.values(),
*P.ALL_SETUP_CFG,
P.DEMO_CONFIG,
P.ENV_BINDER,

Wyświetl plik

@ -70,12 +70,12 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"id": "16e420c3-0402-4c19-9bb7-dd9922cbcd16",
"metadata": {},
"outputs": [],
"source": [
"from ipydrawio import Diagram"
"from ipydrawio_widgets import Diagram"
]
},
{
@ -576,7 +576,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -590,7 +590,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4"
"version": "3.10.2"
}
},
"nbformat": 4,

@ -1 +1 @@
Subproject commit 07c1f206ed3c916fd970e9af20284ebad1276b6a
Subproject commit bbf17d5f5a1d73cb6c955b579cd3691fc55ebae7

Wyświetl plik

@ -1747,8 +1747,6 @@ import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/PostConfig.js'
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/PreConfig.js';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/app.min.js';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/clear.js';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/croppie/croppie.min.css';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/croppie/croppie.min.js';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/cryptojs/aes.min.js';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/deflate/base64.js';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/js/deflate/pako.min.js';
@ -2494,6 +2492,7 @@ import '!!file-loader?name=[path][name].[ext]&context=.!../dio/styles/dark.css';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/styles/default-old.xml';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/styles/default.xml';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/styles/down.gif';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/styles/fonts/ArchitectsDaughter-Regular.ttf';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/styles/grapheditor.css';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/styles/sprites.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/styles/thumb_horz.png';
@ -2804,6 +2803,8 @@ import '!!file-loader?name=[path][name].[ext]&context=.!../dio/templates/wirefra
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/templates/wireframes/home_page_hero_video_1.png';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/templates/wireframes/home_page_hero_video_1.xml';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/vsdxImporter.html';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/workbox-12cca165.js';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/workbox-12cca165.js.map';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/workbox-9fe249eb.js';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/workbox-9fe249eb.js.map';
import '!!file-loader?name=[path][name].[ext]&context=.!../dio/workbox-bed83ea8.js';

Wyświetl plik

@ -43,5 +43,5 @@
"build:pre": "python scripts/patch.py && python scripts/static.py"
},
"types": "lib/index.d.ts",
"version": "16.2.400"
"version": "16.4.0"
}

Wyświetl plik

@ -8,7 +8,7 @@
"@jupyterlab/application": "^3.1.0",
"@jupyterlab/launcher": "^3.1.0",
"@jupyterlab/mainmenu": "^3.1.0",
"@deathbeds/ipydrawio-webpack": "^16.1.0"
"@deathbeds/ipydrawio-webpack": "^16.4.0"
},
"description": "A JupyterLab extension for embedding interactive drawio / mxgraph diagrams.",
"devDependencies": {

Wyświetl plik

@ -1,7 +1,7 @@
# IPyDrawio Export
[![binder-badge][]][binder] [![install from pypi][pypi-badge]][pypi]
[![install from conda-forge][conda-badge]][conda]
[![docs][docs-badge]][docs] [![binder-badge][]][binder]
[![install from pypi][pypi-badge]][pypi] [![install from conda-forge][conda-badge]][conda]
[![build][workflow-badge]][workflow] [![coverage][cov-badge]][cov]
> PDF export of [drawio](https://www.diagrams.net) diagrams for JupyterLab.
@ -130,3 +130,5 @@ limitations under the License.
[cov-badge]:
https://codecov.io/gh/deathbeds/ipydrawio/branch/master/graph/badge.svg?token=9B74VKHQDK
[cov]: https://codecov.io/gh/deathbeds/ipydrawio
[docs-badge]: https://readthedocs.org/projects/ipydrawio/badge/?version=latest
[docs]: https://ipydrawio.rtfd.io

Wyświetl plik

@ -56,8 +56,7 @@ include_package_data = True
zip_safe = False
install_requires =
ipydrawio >=1.1.4
jupyterlab ==3.*
ipydrawio ==1.2.0
lxml
pillow
pypdf2

Wyświetl plik

@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Wyświetl plik

@ -0,0 +1,2 @@
include LICENSE.txt
recursive-include src/ipydrawio_widgets/js *.json

Wyświetl plik

@ -0,0 +1,90 @@
# IPyDrawio Widgets
[![docs][docs-badge]][docs] [![binder-badge][]][binder]
[![install from pypi][pypi-badge]][pypi] [![install from conda-forge][conda-badge]][conda]
[![build][workflow-badge]][workflow] [![coverage][cov-badge]][cov]
> The kernel-side classes for [ipydrawio](https://github.com/deathbeds/ipydrawio).
This package is useful in situations where your JupyterLab client is configured in another
environment than the kernel that might create widgets.
See the [main project repo](https://github.com/deathbeds/ipydrawio) for more
information.
## Installation
> _**Note:** Usually, you'll want the entire `ipydrawio` suite, replacing `ipydrawio-widgets`
> with `ipydrawio`!_
To install just the kernel-side widgets (without any of the front end assets):
```bash
pip install ipydrawio-widgets # or...
mamba install -c conda-forge ipydrawio-widgets # or...
conda install -c conda-forge ipydrawio-widgets
```
## Usage
Display a basic diagram:
```python
from ipydrawio_widgets import Diagram
diagram = Diagram()
diagram
```
Update the XML source:
```python
from pathlib import Path
diagram.source.value = Path("a-drawio.dio").read_text()
```
The `.source.value` will always contain the up-to-date XML.
For more, see the documentation
## Open Source
This work is licensed under the [Apache-2.0] License.
```
Copyright 2022 ipydrawio contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
[apache-2.0]:
https://github.com/deathbeds/ipydrawio/blob/master/py_packages/ipydrawio-widgets/LICENSE.txt
[binder]:
http://mybinder.org/v2/gh/deathbeds/ipydrawio/master?urlpath=lab/tree/docs/Poster.dio.svg
[binder-badge]: https://mybinder.org/badge_logo.svg
[cov-badge]:
https://codecov.io/gh/deathbeds/ipydrawio/branch/master/graph/badge.svg?token=9B74VKHQDK
[binder-badge]: https://mybinder.org/badge_logo.svg
[pypi-badge]: https://img.shields.io/pypi/v/ipydrawio-widgets
[pypi]: https://pypi.org/project/ipydrawio-widgets
[conda-badge]: https://img.shields.io/conda/vn/conda-forge/ipydrawio-widgets
[conda]: https://anaconda.org/conda-forge/ipydrawio-widgets
[workflow-badge]:
https://github.com/deathbeds/ipydrawio/workflows/.github/workflows/ci.yml/badge.svg
[workflow]:
https://github.com/deathbeds/ipydrawio/actions?query=branch%3Amaster+workflow%3A.github%2Fworkflows%2Fci.yml
[cov-badge]:
https://codecov.io/gh/deathbeds/ipydrawio/branch/master/graph/badge.svg?token=9B74VKHQDK
[cov]: https://codecov.io/gh/deathbeds/ipydrawio
[docs-badge]: https://readthedocs.org/projects/ipydrawio/badge/?version=latest
[docs]: https://ipydrawio.rtfd.io

Wyświetl plik

@ -14,7 +14,7 @@
[metadata]
name = ipydrawio-widgets
description = Draw.io Diagrams as Jupyter Widgets
description = Draw.io Diagrams as Jupyter Widgets (Kernel-only)
long_description = file: ./README.md
long_description_content_type = text/markdown
url = https://ipydrawio.rtfd.io
@ -30,11 +30,8 @@ project_urls =
Source Code = https://github.com/deathbeds/ipydrawio
classifiers =
Development Status :: 4 - Beta
Framework :: IPython
Framework :: Jupyter
Framework :: Jupyter :: JupyterLab :: 3
Framework :: Jupyter :: JupyterLab :: Extensions
Framework :: Jupyter :: JupyterLab :: Extensions :: Mime Renderers
Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
Intended Audience :: Developers
Intended Audience :: Information Technology
License :: OSI Approved :: Apache Software License
@ -44,8 +41,6 @@ classifiers =
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Topic :: Multimedia :: Graphics :: Editors :: Vector-Based
Topic :: Multimedia :: Graphics :: Presentation
[options]
python_requires = >=3.7
@ -58,6 +53,14 @@ zip_safe = False
install_requires =
ipywidgets >=7.6,<8
jsonschema
[options.extras_require]
test =
jsonpointer
pytest
pytest-console-scripts
pytest-cov
[options.packages.find]
where =

Wyświetl plik

@ -0,0 +1,29 @@
"""dynamic setup information for setuptools, also see package.json and setup.cfg"""
# Copyright 2022 ipydrawio contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json
from pathlib import Path
HERE = Path(__file__).parent
JS = HERE / "src/ipydrawio_widgets/js"
__js__ = json.loads((JS / "package.json").read_text(encoding="utf-8"))
if __name__ == "__main__":
import setuptools
setuptools.setup(version=__js__["version"])

Wyświetl plik

@ -0,0 +1,25 @@
""""main importable for ipydrawio-widgets"""
# Copyright 2022 ipydrawio contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from ._version import __js__, __version__
from .widget_diagram import XML, Diagram
__all__ = [
"__js__",
"__version__",
"Diagram",
"XML",
]

Wyświetl plik

@ -0,0 +1,28 @@
"""source of truth for ipydrawio-widgets version"""
# Copyright 2022 ipydrawio contributors
# Copyright 2020 jupyterlab-drawio contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json
from pathlib import Path
HERE = Path(__file__).parent
PKG_JSON = HERE / "js/package.json"
__js__ = json.loads(PKG_JSON.read_text(encoding="utf-8"))
__version__ = __js__["version"]
__all__ = ["__version__", "__js__"]

Wyświetl plik

@ -1,5 +1,3 @@
"""constants for ipydrawio"""
# Copyright 2022 ipydrawio contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
@ -14,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#: An empty drawio document
A_SHORT_DRAWIO = """<mxfile version="14.6.10">
<diagram id="x" name="Page-1">
<mxGraphModel dx="1450" dy="467" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
@ -27,18 +25,12 @@ A_SHORT_DRAWIO = """<mxfile version="14.6.10">
</mxfile>
"""
#: Sensible defaults for drawio page configuration
DEFAULT_PAGE_FORMAT = {"x": 0, "y": 0, "width": 850, "height": 1100}
#: Sensible defaults for drawio config
DEFAULT_DRAWIO_CONFIG = {
"compressXml": False,
"showStartScreen": False,
"override": True,
}
# key set in notebook#/metadata/
IPYNB_METADATA = "@deathbeds/ipydrawio"
SVG_NS_TAG = "{http://www.w3.org/2000/svg}svg"
MX_FILE_TAG = "mxfile"
MX_GRAPH_TAG = "mxGraphModel"

Wyświetl plik

@ -1,4 +1,4 @@
"""constants for ipydrawio"""
"""schema for ipydrawio-widgets"""
# Copyright 2022 ipydrawio contributors
#
@ -16,9 +16,9 @@
import json
from ._version import PKG_JSON, __js__
from ._version import PKG_JSON
SCHEMA = PKG_JSON.parent / f"""schemas/{__js__["name"]}/plugin.json"""
SCHEMA = PKG_JSON.parent / "plugin.json"
def get_schema():

Wyświetl plik

@ -0,0 +1,15 @@
"""tests for ipydrawio-widgets"""
# Copyright 2022 ipydrawio contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

Wyświetl plik

@ -15,8 +15,7 @@
# limitations under the License.
import pytest
from ipydrawio.schema import get_validator
from ipydrawio_widgets.schema import get_validator
validator = get_validator()

Wyświetl plik

@ -15,8 +15,7 @@
# limitations under the License.
import ipywidgets as W
from ipydrawio import Diagram
from ipydrawio_widgets import Diagram
def test_widget():

Wyświetl plik

@ -20,6 +20,7 @@ import traitlets as T
from ._version import __js__
from .constants import A_SHORT_DRAWIO, DEFAULT_DRAWIO_CONFIG, DEFAULT_PAGE_FORMAT
from .schema import get_schema
module_name = __js__["name"]
module_version = "^{version}".format(**__js__)
@ -34,18 +35,16 @@ class DiagramBase(W.Widget):
_view_module_version = T.Unicode(module_version).tag(sync=True)
@W.register
class XML(DiagramBase, W.Widget):
"""A Drawio XML-native Document"""
value = T.Unicode().tag(sync=True)
value = T.Unicode(A_SHORT_DRAWIO).tag(sync=True)
_model_name = T.Unicode("XMLModel").tag(sync=True)
_view_name = T.Unicode("XMLView").tag(sync=True)
@T.default("value")
def _default_value(self):
return A_SHORT_DRAWIO
@W.register
class Diagram(DiagramBase, W.Box):
"""A Drawio Diagram"""
@ -88,8 +87,6 @@ class Diagram(DiagramBase, W.Box):
@T.default("url_params")
def _default_url_params(self):
from .schema import get_schema
return get_schema()["properties"]["drawioUrlParams"]["default"]
@T.default("config")

Wyświetl plik

@ -57,7 +57,8 @@ include_package_data = True
zip_safe = False
install_requires =
ipywidgets >=7.6,<8
jupyterlab ==3.*
ipydrawio-widgets ==1.2.0
[options.extras_require]
clean =

Wyświetl plik

@ -17,8 +17,9 @@
import json
from pathlib import Path
from ipydrawio_widgets import XML, Diagram
from ._version import __js__, __version__
from .widget_diagram import Diagram
def _jupyter_labextension_paths():
@ -40,4 +41,5 @@ __all__ = [
"__version__",
"_jupyter_labextension_paths",
"Diagram",
"XML",
]

Wyświetl plik

@ -111,9 +111,7 @@ def clean_drawio_notebook_node(
changed = True
for cell in nb_node["cells"]:
if not hasattr(cell, "outputs"):
continue
for output in cell["outputs"]:
for output in cell.get("outputs", []):
in_xml = output.get("data", {}).get(MIMETYPE)
if not in_xml:
continue
@ -137,7 +135,13 @@ def clean_drawio_xml(
root = ET.fromstring(in_xml)
indent_chars = indent * ("\t" if tabs else " ")
if root.tag == MX_GRAPH_TAG:
if pretty:
ET.indent(root, space=indent_chars)
out_xml = ET.tostring(root, pretty_print=True, encoding=str)
return out_xml
return None
elif root.tag == MX_FILE_TAG:
mx = root
@ -152,7 +156,7 @@ def clean_drawio_xml(
del mx.attrib[key]
if pretty:
ET.indent(mx, space=indent * ("\t" if tabs else " "))
ET.indent(mx, space=indent_chars)
out_xml = ET.tostring(mx, pretty_print=True, encoding=str)
out_xml = restore_entity_placeholders(out_xml)
else:
@ -161,7 +165,7 @@ def clean_drawio_xml(
if root.tag == SVG_NS_TAG:
root.attrib["content"] = out_xml
if pretty:
ET.indent(root, space=indent * ("\t" if tabs else " "))
ET.indent(root, space=indent_chars)
out_xml = ET.tostring(root, pretty_print=True, encoding=str)
if in_xml == out_xml:

Wyświetl plik

@ -14,30 +14,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#: An empty drawio document
A_SHORT_DRAWIO = """<mxfile version="14.6.10">
<diagram id="x" name="Page-1">
<mxGraphModel dx="1450" dy="467" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>
"""
#: Sensible defaults for drawio page configuration
DEFAULT_PAGE_FORMAT = {"x": 0, "y": 0, "width": 850, "height": 1100}
#: Sensible defaults for drawio config
DEFAULT_DRAWIO_CONFIG = {
"compressXml": False,
"showStartScreen": False,
"override": True,
}
#: The XML namespace of an SVG
SVG_NS_TAG = "{http://www.w3.org/2000/svg}svg"

Wyświetl plik

@ -14,14 +14,58 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import re
from pathlib import Path
import nbformat
import pytest
from ..constants import IPYNB_METADATA, MIMETYPE
HERE = Path(__file__).parent
FIXTURES = HERE / "fixtures"
EMPTY_DIO = FIXTURES / "empty.dio"
EMPTY_IPYNB = FIXTURES / "empty.ipynb"
FIXTURE_NAMES = [
"dio",
"dio.svg",
"ipynb",
# derived
"no-meta.ipynb",
"no-output.ipynb",
"mxgraph.xml",
]
@pytest.fixture(params=["dio", "dio.svg", "ipynb"])
def an_empty_dio_file(request: str) -> Path:
return FIXTURES / f"empty.{request.param}"
@pytest.fixture(params=FIXTURE_NAMES)
def an_empty_dio_file(request: str, tmp_path) -> Path:
fixture = FIXTURES / f"empty.{request.param}"
if not fixture.exists() and "ipynb" in request.param:
nb_node = nbformat.reads(
EMPTY_IPYNB.read_text(encoding="utf-8"), nbformat.NO_CONVERT
)
if "no-meta" in request.param:
nb_node["metadata"].pop(IPYNB_METADATA, None)
if "no-output" in request.param:
for cell in nb_node["cells"]:
for output in cell.get("outputs", []):
output.get("data", {}).pop(MIMETYPE, None)
output.get("metadata", {}).pop(MIMETYPE, None)
derived = tmp_path / f"fixtures/empty.{request.param}"
derived.parent.mkdir(exist_ok=True)
derived.write_text(nbformat.writes(nb_node), encoding="utf-8")
return derived
if not fixture.exists() and "mxgraph" in request.param:
derived = tmp_path / f"fixtures/empty.{request.param}"
derived.parent.mkdir(exist_ok=True)
in_xml = EMPTY_DIO.read_text(encoding="utf-8")
out_xml = re.sub(r".*(<mxGraphModel(.*)/mxGraphModel>).*", r"\1", in_xml)
derived.write_text(out_xml, encoding="utf-8")
return derived
return fixture

Wyświetl plik

@ -49,6 +49,7 @@ def test_clean_fail_not_supported(script_runner, tmp_path):
def test_cli_clean(
script_runner, tmp_path, an_empty_dio_file, pretty, indent, tabs, mx_attrs
):
is_mxgraph = "mxgraph" in an_empty_dio_file.name
dest = tmp_path / an_empty_dio_file.name
shutil.copy2(an_empty_dio_file, dest)
@ -76,13 +77,16 @@ def test_cli_clean(
cleaned = dest.read_text(encoding="utf-8").strip()
assert cleaned != before
if not is_mxgraph or pretty:
assert cleaned != before
for attr in "host", "agent", "etag", "modified":
if mx_attrs is None or attr in mx_attrs:
assert f"{attr}=" not in cleaned, f"should _not_ have contained {attr}"
else:
assert f"{attr}=" in cleaned, f"should have contained {attr}"
if not is_mxgraph:
# mxgraph doesn't have these fields
for attr in "host", "agent", "etag", "modified":
if mx_attrs is None or attr in mx_attrs:
assert f"{attr}=" not in cleaned, f"should _not_ have contained {attr}"
else:
assert f"{attr}=" in cleaned, f"should have contained {attr}"
if dest.suffix != ".ipynb":
if pretty:

Wyświetl plik

@ -1,101 +0,0 @@
""" jupyter widgets for drawio"""
# Copyright 2022 ipydrawio contributors
# Copyright 2020 jupyterlab-drawio contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import ipywidgets as W
import traitlets as T
from ._version import __js__
from .constants import A_SHORT_DRAWIO, DEFAULT_DRAWIO_CONFIG, DEFAULT_PAGE_FORMAT
module_name = __js__["name"]
module_version = "^{version}".format(**__js__)
class DiagramBase(W.Widget):
"""Module metadata for SVG"""
_model_module = T.Unicode(module_name).tag(sync=True)
_model_module_version = T.Unicode(module_version).tag(sync=True)
_view_module = T.Unicode(module_name).tag(sync=True)
_view_module_version = T.Unicode(module_version).tag(sync=True)
class XML(DiagramBase, W.Widget):
"""A Drawio XML-native Document"""
value = T.Unicode().tag(sync=True)
_model_name = T.Unicode("XMLModel").tag(sync=True)
_view_name = T.Unicode("XMLView").tag(sync=True)
@T.default("value")
def _default_value(self):
return A_SHORT_DRAWIO
class Diagram(DiagramBase, W.Box):
"""A Drawio Diagram"""
_model_name = T.Unicode("DiagramModel").tag(sync=True)
_view_name = T.Unicode("DiagramView").tag(sync=True)
source = T.Instance(XML, help="a drawio xml document").tag(
sync=True, **W.widget_serialization
)
scroll_x = T.Float(help="the current viewport scroll x position").tag(sync=True)
scroll_y = T.Float(help="the current viewport scroll y position").tag(sync=True)
zoom = T.Float(help="the current zoom level").tag(sync=True)
page_ids = W.trait_types.TypedTuple(T.Unicode(), help="known page ids").tag(
sync=True
)
current_page = T.Int(0, min=0, help="the current, 0-based, page index").tag(
sync=True
)
page_format = T.Dict(
help=(
"the physical size of the diagram media in milli-inches (or something): "
"x, y, width, height"
)
).tag(sync=True)
grid_enabled = T.Bool(
True, help="show on-screen grid behind shapes (above background)"
).tag(sync=True)
grid_color = T.Unicode("#66666666").tag(sync=True)
grid_size = T.Float(10, min=0.01).tag(sync=True)
selected_cells = W.trait_types.TypedTuple(T.Unicode()).tag(sync=True)
cell_ids = W.trait_types.TypedTuple(T.Unicode()).tag(sync=True)
# these are important, but advanced
url_params = T.Dict(help="drawio URL params").tag(sync=True)
config = T.Dict(help="drawio JSON Configuration").tag(sync=True)
@T.default("source")
def _default_source(self):
return XML()
@T.default("url_params")
def _default_url_params(self):
from .schema import get_schema
return get_schema()["properties"]["drawioUrlParams"]["default"]
@T.default("config")
def _default_config(self):
return {**DEFAULT_DRAWIO_CONFIG}
@T.default("page_format")
def _default_page_format(self):
return {**DEFAULT_PAGE_FORMAT}

Wyświetl plik

@ -65,11 +65,11 @@ def run_tests(attempt=0, extra_args=None):
"--variable",
f"PY:{P.PY_MAJOR}",
"--variable",
f"DEMO:{P.DEMO}",
f"ROOT:{P.ROOT}",
"--randomize",
"all",
"--xunit",
".".join(["xunit", "xml"]),
"xunit.xml",
".",
]

Wyświetl plik

@ -77,8 +77,8 @@ def test_changelog(pkg, version, the_changelog):
def test_drawio_versions():
"""is the drawio version up-to-date with the submodule?"""
dv = (P.IPDW / "drawio/VERSION").read_text(encoding="utf-8")
pdv = P.JS_PKG_DATA[P.IPDW.name]["version"]
dv = (P.IPDWP / "drawio/VERSION").read_text(encoding="utf-8")
pdv = P.JS_PKG_DATA[P.IPDWP.name]["version"]
assert pdv.startswith(dv), "drawio version out of sync"
@ -97,7 +97,7 @@ def test_recipe_versions():
],
[
"piplite_urls/0",
f"""../{P.PY_WHEEL["ipydrawio"].relative_to(P.ROOT)}""",
f"""../{P.PY_WHEEL["ipydrawio-widgets"].relative_to(P.ROOT)}""",
],
],
)
@ -144,10 +144,27 @@ def test_setup_cfg_pythons(path, the_pythons, the_min_python):
assert classifier in cfg["metadata"]["classifiers"]
@pytest.mark.parametrize(
"path,upstream,version",
[
[P.PY_SETUP_CFG["ipydrawio"], P.IPDW.name, P.PY_VERSION["ipydrawio-widgets"]],
[P.PY_SETUP_CFG["ipydrawio-export"], P.IPD.name, P.PY_VERSION["ipydrawio"]],
],
)
def test_setup_cfg_version(path, upstream, version):
cfg = configparser.ConfigParser()
cfg.read_file(path.open())
install_requires = cfg["options"]["install_requires"]
spec = f"{upstream} =={version}"
assert (
spec in install_requires
), f"{spec} not in {path.parent.name}: {install_requires}"
@pytest.mark.parametrize(
"path,py_count",
[
[P.RECIPE, 6],
[P.RECIPE, 8],
[P.ENV_BINDER, 1],
],
)

Wyświetl plik

@ -293,13 +293,13 @@ JS_SCHEMAS = {
}
# special things for ipydrawio-webpack
IPDW = JS_PKG_JSON["ipydrawio-webpack"].parent
IPDW_APP = IPDW / "dio/js/app.min.js"
IPDW_PY = (IPDW / "scripts").rglob("*.py")
DRAWIO = IPDW / "drawio"
IPDW_LIB = IPDW / "lib"
IPDW_IGNORE = IPDW / ".npmignore"
ALL_IPDW_JS = IPDW_LIB.glob("*.js")
IPDWP = JS_PKG_JSON["ipydrawio-webpack"].parent
IPDWP_APP = IPDWP / "dio/js/app.min.js"
IPDWP_PY = (IPDWP / "scripts").rglob("*.py")
DRAWIO = IPDWP / "drawio"
IPDWP_LIB = IPDWP / "lib"
IPDWP_IGNORE = IPDWP / ".npmignore"
ALL_IPDWP_JS = IPDWP_LIB.glob("*.js")
IPJT = JS_PKG_JSON["ipydrawio-jupyter-templates"].parent
IPJT_TMPL = IPJT / "tmpl"
@ -317,21 +317,44 @@ PY_SETUP_CFG = {k: v.parent / "setup.cfg" for k, v in PY_SETUP.items()}
PY_VERSION = {
"ipydrawio": JS_PKG_DATA["ipydrawio"]["version"],
"ipydrawio-export": JS_PKG_DATA["ipydrawio-pdf"]["version"],
"ipydrawio-widgets": JS_PKG_DATA["ipydrawio"]["version"],
}
IPD = PY_SETUP["ipydrawio"].parent
IPDE = PY_SETUP["ipydrawio-export"].parent
IPDW = PY_SETUP["ipydrawio-widgets"].parent
IPDE_VENDOR = IPDE / "src/ipydrawio_export/vendor"
IPDE_DIE2 = IPDE_VENDOR / "draw-image-export2"
IPDE_DIE2_PACKAGE_JSON = IPDE_DIE2 / "package.json"
IPDE_DIE2_YARN_LOCK = IPDE_DIE2 / "yarn.lock"
IPDW_SRC = IPDW / "src/ipydrawio_widgets"
IPDW_DEPS = {
JS_PKG_JSON["ipydrawio"]: IPDW_SRC / "js/package.json",
JS_PKG_JSON["ipydrawio"].parent / "schema/plugin.json": IPDW_SRC / "js/plugin.json",
}
IPD_VERSION = PY_VERSION["ipydrawio"]
IPDW_VERSION = PY_VERSION["ipydrawio-widgets"]
IPDE_VERSION = PY_VERSION["ipydrawio-export"]
PY_HAS_EXT = {
IPD: True,
IPDE: True,
IPDW: False,
}
PY_SETUP_DEPS = {
IPD: lambda: [OK_PYSETUP["ipydrawio-widgets"]],
IPDE: lambda: [OK_PYSETUP["ipydrawio"]],
IPDW: lambda: [*IPDW_DEPS.values()],
}
PY_SDIST = {
IPDE.name: IPDE / "dist" / f"{IPDE.name}-{IPDE_VERSION}.tar.gz",
IPD.name: IPD / "dist" / f"{IPD.name}-{IPD_VERSION}.tar.gz",
IPDW.name: IPDW / "dist" / f"{IPDW.name}-{IPDW_VERSION}.tar.gz",
}
PY_WHEEL = {
IPDE.name: IPDE
@ -340,6 +363,9 @@ PY_WHEEL = {
IPD.name: IPD
/ "dist"
/ f"""{IPD.name.replace("-", "_")}-{IPD_VERSION}-py3-none-any.whl""",
IPDW.name: IPDW
/ "dist"
/ f"""{IPDW.name.replace("-", "_")}-{IPDW_VERSION}-py3-none-any.whl""",
}
PY_TEST_DEP = {}
@ -364,6 +390,7 @@ DEMO_CONTENTS_API = DEMO_BUILD / "api/contents/all.json"
DEMO_ARCHIVE = (
DEMO_BUILD / f"""ipydrawio-lite-{JS_PKG_DATA["ipydrawio"]["version"]}.tgz"""
)
BUILD_WHEELS = BUILD / "wheels"
DEMO_WHEELS = DEMO / "pypi"
NOARCH_WHL = "py3-none-any.whl"
IGNORED_WHEELS = ["widgetsnbextension", "nbformat", "ipykernel", "pyolite"]
@ -423,7 +450,7 @@ limitations under the License.
ALL_PY = [
*ATEST.rglob("*.py"),
*BINDER.glob("*.py"),
*IPDW_PY,
*IPDWP_PY,
*PY_SETUP.values(),
*SCRIPTS.glob("*.py"),
*sum(JS_PY_SCRIPTS.values(), []),
@ -510,10 +537,10 @@ JS_PKG_PACK = {
for k, v in JS_TSBUILDINFO.items()
if not k.startswith("_")
]
JS_PKG_PACK[IPDW.name][0] += [
IPDW_IGNORE,
IPDW_APP,
*ALL_IPDW_JS,
JS_PKG_PACK[IPDWP.name][0] += [
IPDWP_IGNORE,
IPDWP_APP,
*ALL_IPDWP_JS,
]
# provisioning stuff
@ -570,6 +597,8 @@ CONDA_BUILD_ARGS = [
"--override-channels",
"-c",
"conda-forge",
"-c",
"nodefaults",
]
CONDA_PKGS = {
pkg: CONDA_BLD / f"noarch/{pkg}-{ver}-py_0.tar.bz2"
@ -853,7 +882,7 @@ def _lite(lite_actions, extra_args=[]):
return False
def _sync_lite_config(from_env, to_json, marker, extras):
def _sync_lite_config(from_env, to_json, marker, extra_federated, extra_pyolite):
"""use conda list to derive tarball names"""
raw_lock = subprocess.check_output(["conda", "list", "--explicit"])
ext_packages = [
@ -862,9 +891,13 @@ def _sync_lite_config(from_env, to_json, marker, extras):
if p.strip()
]
tarball_urls = sorted(
["../" + str(extra.relative_to(ROOT).as_posix()) for extra in extras]
federated_extensions = sorted(
["../" + str(extra.relative_to(ROOT).as_posix()) for extra in extra_federated]
)
piplite_urls = [
"../" + str(extra.relative_to(ROOT).as_posix()) for extra in extra_pyolite
]
for raw_url in sorted(raw_lock.decode("utf-8").splitlines()):
try:
label, subdir, pkg = re.findall(RE_CONDA_FORGE_URL, raw_url)[0]
@ -877,12 +910,19 @@ def _sync_lite_config(from_env, to_json, marker, extras):
for ext in ext_packages:
if pkg.startswith(ext):
tarball_urls += ["/".join([CONDA_FORGE_RELEASE, subdir, pkg, pkg])]
federated_extensions += [
"/".join([CONDA_FORGE_RELEASE, subdir, pkg, pkg])
]
config = json.loads(to_json.read_text(**ENC))
config["LiteBuildConfig"]["federated_extensions"] = tarball_urls
config["LiteBuildConfig"]["piplite_urls"] = [tarball_urls[0]]
config["LiteBuildConfig"].update(
federated_extensions=federated_extensions,
piplite_urls=piplite_urls,
)
to_json.write_text(json.dumps(config, **JSON_FMT), **ENC)
subprocess.call([*PRETTIER, "--write", to_json])
@ -898,17 +938,29 @@ def fetch_pyodide_packages():
def fetch_wheels():
BUILD_WHEELS.mkdir(exist_ok=True, parents=True)
DEMO_WHEELS.mkdir(exist_ok=True, parents=True)
pyodide_pkgs = json.loads(PYODIDE_PACKAGES.read_text(encoding="utf-8"))
pyodide_norm_names = [k.lower().replace("-", "_") for k in pyodide_pkgs["packages"]]
subprocess.check_call(
["pip", "download", "-r", str(DEMO_REQS), "--prefer-binary"],
cwd=str(DEMO_WHEELS),
cwd=str(BUILD_WHEELS),
)
for pkg in sorted(DEMO_WHEELS.glob("*")):
for pkg in sorted(BUILD_WHEELS.glob("*")):
norm_name = pkg.name.split("-")[0].lower()
if not pkg.name.endswith(NOARCH_WHL):
pkg.unlink
continue
if any(re.findall(f"{p}-\\d", pkg.name) for p in IGNORED_WHEELS):
pkg.unlink()
if norm_name in pyodide_norm_names or norm_name in IGNORED_WHEELS:
continue
dest = DEMO_WHEELS / pkg.name
if dest.exists():
if pkg.stat().st_mtime > dest.stat().st_mtime():
dest.unlink()
else:
continue
shutil.copy2(pkg, dest)
def template_one(src, dest):

Wyświetl plik

@ -106,14 +106,14 @@
"@jupyterlab/application" "^3.1.0"
"@deathbeds/ipydrawio-webpack@file:packages/ipydrawio-webpack":
version "16.2.400"
version "16.4.0"
dependencies:
"@jupyterlab/application" "^3.1.0"
"@deathbeds/ipydrawio@file:packages/ipydrawio":
version "1.2.0"
dependencies:
"@deathbeds/ipydrawio-webpack" "^16.2.400"
"@deathbeds/ipydrawio-webpack" "^16.4.0"
"@jupyterlab/application" "^3.1.0"
"@jupyterlab/launcher" "^3.1.0"
"@jupyterlab/mainmenu" "^3.1.0"