+
+
+{%- endblock body_header -%}
+
+{% block body_footer %}
+
+diff --git a/.venv/share/jupyter/nbconvert/templates/latex/style_jupyter.tex.j2 b/.venv/share/jupyter/nbconvert/templates/latex/style_jupyter.tex.j2
new file mode 100644
index 0000000000000000000000000000000000000000..9e561c70141f1f737fc7640854017b4591ce713d
--- /dev/null
+++ b/.venv/share/jupyter/nbconvert/templates/latex/style_jupyter.tex.j2
@@ -0,0 +1,178 @@
+((=- IPython input/output style -=))
+((*- extends 'base.tex.j2' -*))
+
+((*- block packages -*))
+ \usepackage[breakable]{tcolorbox}
+ \usepackage{parskip} % Stop auto-indenting (to mimic markdown behaviour)
+ ((( super() )))
+((*- endblock packages -*))
+
+((*- block definitions -*))
+ ((( super() )))
+% Pygments definitions
+ (((- resources.latex.pygments_definitions )))
+
+ % For linebreaks inside Verbatim environment from package fancyvrb.
+ \makeatletter
+ \newbox\Wrappedcontinuationbox
+ \newbox\Wrappedvisiblespacebox
+ \newcommand*\Wrappedvisiblespace {\textcolor{red}{\textvisiblespace}}
+ \newcommand*\Wrappedcontinuationsymbol {\textcolor{red}{\llap{\tiny$\m@th\hookrightarrow$}}}
+ \newcommand*\Wrappedcontinuationindent {3ex }
+ \newcommand*\Wrappedafterbreak {\kern\Wrappedcontinuationindent\copy\Wrappedcontinuationbox}
+ % Take advantage of the already applied Pygments mark-up to insert
+ % potential linebreaks for TeX processing.
+ % {, <, #, %, $, ' and ": go to next line.
+ % _, }, ^, &, >, - and ~: stay at end of broken line.
+ % Use of \textquotesingle for straight quote.
+ \newcommand*\Wrappedbreaksatspecials {%
+ \def\PYGZus{\discretionary{\char`\_}{\Wrappedafterbreak}{\char`\_}}%
+ \def\PYGZob{\discretionary{}{\Wrappedafterbreak\char`\{}{\char`\{}}%
+ \def\PYGZcb{\discretionary{\char`\}}{\Wrappedafterbreak}{\char`\}}}%
+ \def\PYGZca{\discretionary{\char`\^}{\Wrappedafterbreak}{\char`\^}}%
+ \def\PYGZam{\discretionary{\char`\&}{\Wrappedafterbreak}{\char`\&}}%
+ \def\PYGZlt{\discretionary{}{\Wrappedafterbreak\char`\<}{\char`\<}}%
+ \def\PYGZgt{\discretionary{\char`\>}{\Wrappedafterbreak}{\char`\>}}%
+ \def\PYGZsh{\discretionary{}{\Wrappedafterbreak\char`\#}{\char`\#}}%
+ \def\PYGZpc{\discretionary{}{\Wrappedafterbreak\char`\%}{\char`\%}}%
+ \def\PYGZdl{\discretionary{}{\Wrappedafterbreak\char`\$}{\char`\$}}%
+ \def\PYGZhy{\discretionary{\char`\-}{\Wrappedafterbreak}{\char`\-}}%
+ \def\PYGZsq{\discretionary{}{\Wrappedafterbreak\textquotesingle}{\textquotesingle}}%
+ \def\PYGZdq{\discretionary{}{\Wrappedafterbreak\char`\"}{\char`\"}}%
+ \def\PYGZti{\discretionary{\char`\~}{\Wrappedafterbreak}{\char`\~}}%
+ }
+ % Some characters . , ; ? ! / are not pygmentized.
+ % This macro makes them "active" and they will insert potential linebreaks
+ \newcommand*\Wrappedbreaksatpunct {%
+ \lccode`\~`\.\lowercase{\def~}{\discretionary{\hbox{\char`\.}}{\Wrappedafterbreak}{\hbox{\char`\.}}}%
+ \lccode`\~`\,\lowercase{\def~}{\discretionary{\hbox{\char`\,}}{\Wrappedafterbreak}{\hbox{\char`\,}}}%
+ \lccode`\~`\;\lowercase{\def~}{\discretionary{\hbox{\char`\;}}{\Wrappedafterbreak}{\hbox{\char`\;}}}%
+ \lccode`\~`\:\lowercase{\def~}{\discretionary{\hbox{\char`\:}}{\Wrappedafterbreak}{\hbox{\char`\:}}}%
+ \lccode`\~`\?\lowercase{\def~}{\discretionary{\hbox{\char`\?}}{\Wrappedafterbreak}{\hbox{\char`\?}}}%
+ \lccode`\~`\!\lowercase{\def~}{\discretionary{\hbox{\char`\!}}{\Wrappedafterbreak}{\hbox{\char`\!}}}%
+ \lccode`\~`\/\lowercase{\def~}{\discretionary{\hbox{\char`\/}}{\Wrappedafterbreak}{\hbox{\char`\/}}}%
+ \catcode`\.\active
+ \catcode`\,\active
+ \catcode`\;\active
+ \catcode`\:\active
+ \catcode`\?\active
+ \catcode`\!\active
+ \catcode`\/\active
+ \lccode`\~`\~
+ }
+ \makeatother
+
+ \let\OriginalVerbatim=\Verbatim
+ \makeatletter
+ \renewcommand{\Verbatim}[1][1]{%
+ %\parskip\z@skip
+ \sbox\Wrappedcontinuationbox {\Wrappedcontinuationsymbol}%
+ \sbox\Wrappedvisiblespacebox {\FV@SetupFont\Wrappedvisiblespace}%
+ \def\FancyVerbFormatLine ##1{\hsize\linewidth
+ \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@
+ \doublehyphendemerits\z@\finalhyphendemerits\z@
+ \strut ##1\strut}%
+ }%
+ % If the linebreak is at a space, the latter will be displayed as visible
+ % space at end of first line, and a continuation symbol starts next line.
+ % Stretch/shrink are however usually zero for typewriter font.
+ \def\FV@Space {%
+ \nobreak\hskip\z@ plus\fontdimen3\font minus\fontdimen4\font
+ \discretionary{\copy\Wrappedvisiblespacebox}{\Wrappedafterbreak}
+ {\kern\fontdimen2\font}%
+ }%
+
+ % Allow breaks at special characters using \PYG... macros.
+ \Wrappedbreaksatspecials
+ % Breaks at punctuation characters . , ; ? ! and / need catcode=\active
+ \OriginalVerbatim[#1,codes*=\Wrappedbreaksatpunct]%
+ }
+ \makeatother
+
+ % Exact colors from NB
+ ((*- block style_colors *))
+ \definecolor{incolor}{HTML}{303F9F}
+ \definecolor{outcolor}{HTML}{D84315}
+ \definecolor{cellborder}{HTML}{CFCFCF}
+ \definecolor{cellbackground}{HTML}{F7F7F7}
+ ((*- endblock style_colors *))
+
+ % prompt
+ \makeatletter
+ \newcommand{\boxspacing}{\kern\kvtcb@left@rule\kern\kvtcb@boxsep}
+ \makeatother
+ ((*- block style_prompt *))
+ \newcommand{\prompt}[4]{
+ {\ttfamily\llap{{\color{#2}[#3]:\hspace{3pt}#4}}\vspace{-\baselineskip}}
+ }
+ ((* endblock style_prompt *))
+
+((*- endblock definitions -*))
+
+%===============================================================================
+% Input
+%===============================================================================
+
+((* block input scoped *))
+ ((( draw_cell(cell.source | highlight_code(strip_verbatim=True), cell, 'In', 'incolor', '\\boxspacing') )))
+((* endblock input *))
+
+
+%===============================================================================
+% Output
+%===============================================================================
+
+((*- if charlim is not defined -*))
+ ((* set charlim = 80 *))
+((*- endif -*))
+
+((* block execute_result scoped *))
+ ((*- for type in output.data | filter_data_type -*))
+ ((*- if type in ['text/plain']*))
+ ((( draw_cell(output.data['text/plain'] | wrap_text(charlim) | escape_latex | ansi2latex, cell, 'Out', 'outcolor', '\\boxspacing') )))
+ ((* else -*))
+ ((( " " )))
+ ((( draw_prompt(cell, 'Out', 'outcolor','') )))((( super() )))
+ ((*- endif -*))
+ ((*- endfor -*))
+((* endblock execute_result *))
+
+((* block stream *))
+ \begin{Verbatim}[commandchars=\\\{\}]
+((( output.text | wrap_text(charlim) | escape_latex | strip_trailing_newline | ansi2latex )))
+ \end{Verbatim}
+((* endblock stream *))
+
+%==============================================================================
+% Support Macros
+%==============================================================================
+
+% Name: draw_cell
+% Purpose: Renders an output/input prompt
+((*- if draw_cell is not defined -*)) % Required to allow overriding.
+((* macro draw_cell(text, cell, prompt, prompt_color, extra_space) -*))
+((*- if prompt == 'In' -*))
+((*- set style = "breakable, size=fbox, boxrule=1pt, pad at break*=1mm,colback=cellbackground, colframe=cellborder"-*))
+((*- else -*))((*- set style = "breakable, size=fbox, boxrule=.5pt, pad at break*=1mm, opacityfill=0"-*))((*- endif -*))
+
+\begin{tcolorbox}[((( style )))]
+(((- draw_prompt(cell, prompt, prompt_color, extra_space) )))
+\begin{Verbatim}[commandchars=\\\{\}]
+((( text )))
+\end{Verbatim}
+\end{tcolorbox}
+((*- endmacro *))
+((*- endif -*))
+
+% Name: draw_prompt
+% Purpose: Renders an output/input prompt
+((* macro draw_prompt(cell, prompt, prompt_color, extra_space) -*))
+ ((*- if cell.execution_count is defined -*))
+ ((*- set execution_count = "" ~ (cell.execution_count | replace(None, " ")) -*))
+ ((*- else -*))((*- set execution_count = " " -*))((*- endif *))
+
+ ((*- if (resources.global_content_filter.include_output_prompt and prompt == 'Out')
+ or (resources.global_content_filter.include_input_prompt and prompt == 'In' ) *))
+\prompt{(((prompt)))}{(((prompt_color)))}{(((execution_count)))}{(((extra_space)))}
+ ((*- endif -*))
+((*- endmacro *))
diff --git a/.venv/share/jupyter/nbconvert/templates/latex/style_python.tex.j2 b/.venv/share/jupyter/nbconvert/templates/latex/style_python.tex.j2
new file mode 100644
index 0000000000000000000000000000000000000000..60cc2ad71bfb0e853155dbc67da8d9eb9587f7aa
--- /dev/null
+++ b/.venv/share/jupyter/nbconvert/templates/latex/style_python.tex.j2
@@ -0,0 +1,25 @@
+((= Python input/output style =))
+
+((*- extends 'base.tex.j2' -*))
+
+% Custom definitions
+((* block definitions *))
+ ((( super() )))
+
+ % Pygments definitions
+ ((( resources.latex.pygments_definitions )))
+((* endblock definitions *))
+
+%===============================================================================
+% Input
+%===============================================================================
+
+((* block input scoped *))
+ \begin{Verbatim}[commandchars=\\\{\}]
+((*- if resources.global_content_filter.include_input_prompt *))
+((( cell.source | highlight_code(strip_verbatim=True, metadata=cell.metadata) | add_prompts )))
+((* else *))
+((( cell.source | highlight_code(strip_verbatim=True, metadata=cell.metadata) )))
+((* endif *))
+ \end{Verbatim}
+((* endblock input *))
diff --git a/.venv/share/jupyter/nbconvert/templates/markdown/conf.json b/.venv/share/jupyter/nbconvert/templates/markdown/conf.json
new file mode 100644
index 0000000000000000000000000000000000000000..33113b55cddd1bf37cc48e37970ed3ede99e262b
--- /dev/null
+++ b/.venv/share/jupyter/nbconvert/templates/markdown/conf.json
@@ -0,0 +1,6 @@
+{
+ "base_template": "base",
+ "mimetypes": {
+ "text/markdown": true
+ }
+}
diff --git a/.venv/share/jupyter/nbconvert/templates/markdown/index.md.j2 b/.venv/share/jupyter/nbconvert/templates/markdown/index.md.j2
new file mode 100644
index 0000000000000000000000000000000000000000..8b92e24533a8474b7cfed5c1dfbabb7391392381
--- /dev/null
+++ b/.venv/share/jupyter/nbconvert/templates/markdown/index.md.j2
@@ -0,0 +1,86 @@
+{% extends 'base/display_priority.j2' %}
+
+
+{% block in_prompt %}
+{% endblock in_prompt %}
+
+{% block output_prompt %}
+{%- endblock output_prompt %}
+
+{% block input %}
+```
+{%- if 'magics_language' in cell.metadata -%}
+ {{ cell.metadata.magics_language}}
+{%- elif 'name' in nb.metadata.get('language_info', {}) -%}
+ {{ nb.metadata.language_info.name }}
+{%- endif %}
+{{ cell.source}}
+```
+{% endblock input %}
+
+{% block error %}
+{{ super() }}
+{% endblock error %}
+
+{% block traceback_line %}
+{{ line | indent | strip_ansi }}
+{% endblock traceback_line %}
+
+{% block execute_result %}
+
+{% block data_priority scoped %}
+{{ super() }}
+{% endblock %}
+{% endblock execute_result %}
+
+{% block stream %}
+{{ output.text | indent }}
+{% endblock stream %}
+
+{% block data_svg %}
+ {% if "filenames" in output.metadata %}
+
+ {% else %}
+
+ {% endif %}
+{% endblock data_svg %}
+
+{% block data_png %}
+ {% if "filenames" in output.metadata %}
+
+ {% else %}
+
+ {% endif %}
+{% endblock data_png %}
+
+{% block data_jpg %}
+ {% if "filenames" in output.metadata %}
+
+ {% else %}
+
+ {% endif %}
+{% endblock data_jpg %}
+
+{% block data_latex %}
+{{ output.data['text/latex'] }}
+{% endblock data_latex %}
+
+{% block data_html scoped %}
+{{ output.data['text/html'] }}
+{% endblock data_html %}
+
+{% block data_markdown scoped %}
+{{ output.data['text/markdown'] }}
+{% endblock data_markdown %}
+
+{% block data_text scoped %}
+{{ output.data['text/plain'] | indent }}
+{% endblock data_text %}
+
+{% block markdowncell scoped %}
+{{ cell.source }}
+{% endblock markdowncell %}
+
+{% block unknowncell scoped %}
+unknown type {{ cell.type }}
+{% endblock unknowncell %}
diff --git a/.venv/share/jupyter/nbconvert/templates/python/conf.json b/.venv/share/jupyter/nbconvert/templates/python/conf.json
new file mode 100644
index 0000000000000000000000000000000000000000..5aeb837ff6765ce0412a403c92e19b56244c07c1
--- /dev/null
+++ b/.venv/share/jupyter/nbconvert/templates/python/conf.json
@@ -0,0 +1,6 @@
+{
+ "base_template": "base",
+ "mimetypes": {
+ "text/x-python": true
+ }
+}
diff --git a/.venv/share/jupyter/nbconvert/templates/python/index.py.j2 b/.venv/share/jupyter/nbconvert/templates/python/index.py.j2
new file mode 100644
index 0000000000000000000000000000000000000000..a09fe9d1f5d42c241794bae9a7dae71d9148adda
--- /dev/null
+++ b/.venv/share/jupyter/nbconvert/templates/python/index.py.j2
@@ -0,0 +1,20 @@
+{%- extends 'null.j2' -%}
+
+{%- block header -%}
+#!/usr/bin/env python
+# coding: utf-8
+{% endblock header %}
+
+{% block in_prompt %}
+{% if resources.global_content_filter.include_input_prompt -%}
+ # In[{{ cell.execution_count if cell.execution_count else ' ' }}]:
+{% endif %}
+{% endblock in_prompt %}
+
+{% block input %}
+{{ cell.source | ipython2python }}
+{% endblock input %}
+
+{% block markdowncell scoped %}
+{{ cell.source | comment_lines }}
+{% endblock markdowncell %}
diff --git a/.venv/share/jupyter/nbconvert/templates/reveal/base.html.j2 b/.venv/share/jupyter/nbconvert/templates/reveal/base.html.j2
new file mode 100644
index 0000000000000000000000000000000000000000..be07920d4d569f1beb9f17a9728662d0d223dca6
--- /dev/null
+++ b/.venv/share/jupyter/nbconvert/templates/reveal/base.html.j2
@@ -0,0 +1,33 @@
+{%- extends 'lab/base.html.j2' -%}
+{% from 'cellslidedata.j2' import cellslidedata %}
+
+{%- block any_cell scoped -%}
+{%- if cell.metadata.get('slide_start', False) -%}
+
+{%- endif -%}
+
+{%- if cell.metadata.slide_type == 'notes' -%}
+
+{%- elif cell.metadata.slide_type == 'skip' -%}
+{%- else -%}
+{{ super() }}
+{%- endif -%}
+
+{%- if cell.metadata.get('fragment_end', False) -%}
+
+{%- endif -%}
+{%- if cell.metadata.get('subslide_end', False) -%}
+