8452 lines
506 KiB
HTML
8452 lines
506 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html lang="en">
|
||
<head><meta charset="utf-8"/>
|
||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||
<title>tutorial</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script><script>
|
||
(function() {
|
||
function addWidgetsRenderer() {
|
||
var mimeElement = document.querySelector('script[type="application/vnd.jupyter.widget-view+json"]');
|
||
var scriptElement = document.createElement('script');
|
||
|
||
var widgetRendererSrc = 'https://unpkg.com/@jupyter-widgets/html-manager@*/dist/embed-amd.js';
|
||
|
||
var widgetState;
|
||
|
||
// Fallback for older version:
|
||
try {
|
||
widgetState = mimeElement && JSON.parse(mimeElement.innerHTML);
|
||
|
||
if (widgetState && (widgetState.version_major < 2 || !widgetState.version_major)) {
|
||
|
||
var widgetRendererSrc = 'https://unpkg.com/@jupyter-js-widgets@*/dist/embed.js';
|
||
|
||
}
|
||
} catch(e) {}
|
||
|
||
scriptElement.src = widgetRendererSrc;
|
||
document.body.appendChild(scriptElement);
|
||
}
|
||
|
||
document.addEventListener('DOMContentLoaded', addWidgetsRenderer);
|
||
}());
|
||
</script>
|
||
<style type="text/css">
|
||
pre { line-height: 125%; }
|
||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||
.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
|
||
.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
|
||
.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
|
||
.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
|
||
.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
|
||
.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
|
||
.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
|
||
.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
|
||
.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
|
||
.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
|
||
.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
|
||
.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
|
||
.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
|
||
.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
|
||
.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
|
||
.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
|
||
.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
|
||
.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
|
||
.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
|
||
.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
|
||
.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
|
||
.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
|
||
.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
|
||
.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
|
||
.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
|
||
.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
|
||
.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
|
||
.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
|
||
.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
|
||
.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
|
||
.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
|
||
.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
|
||
.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
|
||
.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
|
||
.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
|
||
.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
|
||
.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
|
||
.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
|
||
.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
|
||
.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
|
||
.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
|
||
.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
|
||
.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
|
||
</style>
|
||
<style type="text/css">
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
* Mozilla scrollbar styling
|
||
*/
|
||
|
||
/* use standard opaque scrollbars for most nodes */
|
||
[data-jp-theme-scrollbars='true'] {
|
||
scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
|
||
var(--jp-scrollbar-background-color);
|
||
}
|
||
|
||
/* for code nodes, use a transparent style of scrollbar. These selectors
|
||
* will match lower in the tree, and so will override the above */
|
||
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
|
||
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
|
||
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
|
||
}
|
||
|
||
/* tiny scrollbar */
|
||
|
||
.jp-scrollbar-tiny {
|
||
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
|
||
scrollbar-width: thin;
|
||
}
|
||
|
||
/* tiny scrollbar */
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar,
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-corner {
|
||
background-color: transparent;
|
||
height: 4px;
|
||
width: 4px;
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
|
||
background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
|
||
border-left: 0 solid transparent;
|
||
border-right: 0 solid transparent;
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
|
||
border-top: 0 solid transparent;
|
||
border-bottom: 0 solid transparent;
|
||
}
|
||
|
||
/*
|
||
* Lumino
|
||
*/
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] {
|
||
min-height: 16px;
|
||
max-height: 16px;
|
||
min-width: 45px;
|
||
border-top: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] {
|
||
min-width: 16px;
|
||
max-width: 16px;
|
||
min-height: 45px;
|
||
border-left: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar-button {
|
||
background-color: #f0f0f0;
|
||
background-position: center center;
|
||
min-height: 15px;
|
||
max-height: 15px;
|
||
min-width: 15px;
|
||
max-width: 15px;
|
||
}
|
||
|
||
.lm-ScrollBar-button:hover {
|
||
background-color: #dadada;
|
||
}
|
||
|
||
.lm-ScrollBar-button.lm-mod-active {
|
||
background-color: #cdcdcd;
|
||
}
|
||
|
||
.lm-ScrollBar-track {
|
||
background: #f0f0f0;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb {
|
||
background: #cdcdcd;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb:hover {
|
||
background: #bababa;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb.lm-mod-active {
|
||
background: #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
|
||
height: 100%;
|
||
min-width: 15px;
|
||
border-left: 1px solid #a0a0a0;
|
||
border-right: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
|
||
width: 100%;
|
||
min-height: 15px;
|
||
border-top: 1px solid #a0a0a0;
|
||
border-bottom: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal']
|
||
.lm-ScrollBar-button[data-action='decrement'] {
|
||
background-image: var(--jp-icon-caret-left);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal']
|
||
.lm-ScrollBar-button[data-action='increment'] {
|
||
background-image: var(--jp-icon-caret-right);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical']
|
||
.lm-ScrollBar-button[data-action='decrement'] {
|
||
background-image: var(--jp-icon-caret-up);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical']
|
||
.lm-ScrollBar-button[data-action='increment'] {
|
||
background-image: var(--jp-icon-caret-down);
|
||
background-size: 17px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-Widget {
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-Widget.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
|
||
/* Title is rotated for horizontal accordion panel using CSS */
|
||
display: block;
|
||
transform-origin: top left;
|
||
transform: rotate(-90deg) translate(-100%);
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette {
|
||
display: flex;
|
||
flex-direction: column;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-CommandPalette-search {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-content {
|
||
flex: 1 1 auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
min-height: 0;
|
||
overflow: auto;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-CommandPalette-header {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.lm-CommandPalette-item {
|
||
display: flex;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-CommandPalette-itemIcon {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemContent {
|
||
flex: 1 1 auto;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-CommandPalette-itemShortcut {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemLabel {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.lm-close-icon {
|
||
border: 1px solid transparent;
|
||
background-color: transparent;
|
||
position: absolute;
|
||
z-index: 1;
|
||
right: 3%;
|
||
top: 0;
|
||
bottom: 0;
|
||
margin: auto;
|
||
padding: 7px 0;
|
||
display: none;
|
||
vertical-align: middle;
|
||
outline: 0;
|
||
cursor: pointer;
|
||
}
|
||
.lm-close-icon:after {
|
||
content: 'X';
|
||
display: block;
|
||
width: 15px;
|
||
height: 15px;
|
||
text-align: center;
|
||
color: #000;
|
||
font-weight: normal;
|
||
font-size: 12px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-DockPanel {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-DockPanel-widget {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-DockPanel-handle {
|
||
z-index: 2;
|
||
}
|
||
|
||
.lm-DockPanel-handle.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-DockPanel-handle:after {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
content: '';
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='horizontal'] {
|
||
cursor: ew-resize;
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='vertical'] {
|
||
cursor: ns-resize;
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='horizontal']:after {
|
||
left: 50%;
|
||
min-width: 8px;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='vertical']:after {
|
||
top: 50%;
|
||
min-height: 8px;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
.lm-DockPanel-overlay {
|
||
z-index: 3;
|
||
box-sizing: border-box;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.lm-DockPanel-overlay.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-Menu {
|
||
z-index: 10000;
|
||
position: absolute;
|
||
white-space: nowrap;
|
||
overflow-x: hidden;
|
||
overflow-y: auto;
|
||
outline: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-Menu-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: table;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-Menu-item {
|
||
display: table-row;
|
||
}
|
||
|
||
.lm-Menu-item.lm-mod-hidden,
|
||
.lm-Menu-item.lm-mod-collapsed {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-Menu-itemIcon,
|
||
.lm-Menu-itemSubmenuIcon {
|
||
display: table-cell;
|
||
text-align: center;
|
||
}
|
||
|
||
.lm-Menu-itemLabel {
|
||
display: table-cell;
|
||
text-align: left;
|
||
}
|
||
|
||
.lm-Menu-itemShortcut {
|
||
display: table-cell;
|
||
text-align: right;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-MenuBar {
|
||
outline: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-MenuBar-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex-direction: row;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-MenuBar-item {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.lm-MenuBar-itemIcon,
|
||
.lm-MenuBar-itemLabel {
|
||
display: inline-block;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-ScrollBar {
|
||
display: flex;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] {
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.lm-ScrollBar-button {
|
||
box-sizing: border-box;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-ScrollBar-track {
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
overflow: hidden;
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb {
|
||
box-sizing: border-box;
|
||
position: absolute;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-SplitPanel-child {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-SplitPanel-handle {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-SplitPanel-handle.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-SplitPanel-handle:after {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
content: '';
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
|
||
cursor: ew-resize;
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
|
||
cursor: ns-resize;
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
|
||
left: 50%;
|
||
min-width: 8px;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
|
||
top: 50%;
|
||
min-height: 8px;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabBar {
|
||
display: flex;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='horizontal'] {
|
||
flex-direction: row;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='vertical'] {
|
||
flex-direction: column;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.lm-TabBar-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex: 1 1 auto;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.lm-TabBar-tab {
|
||
display: flex;
|
||
flex-direction: row;
|
||
box-sizing: border-box;
|
||
overflow: hidden;
|
||
touch-action: none; /* Disable native Drag/Drop */
|
||
}
|
||
|
||
.lm-TabBar-tabIcon,
|
||
.lm-TabBar-tabCloseIcon {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-TabBar-tabLabel {
|
||
flex: 1 1 auto;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.lm-TabBar-tabInput {
|
||
user-select: all;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.lm-TabBar-tab.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-TabBar-addButton.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
|
||
position: relative;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
|
||
left: 0;
|
||
transition: left 150ms ease;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
|
||
top: 0;
|
||
transition: top 150ms ease;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
|
||
transition: none;
|
||
}
|
||
|
||
.lm-TabBar-tabLabel .lm-TabBar-tabInput {
|
||
user-select: all;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
background: inherit;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabPanel-tabBar {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-TabPanel-stackedPanel {
|
||
z-index: 0;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Collapse {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: stretch;
|
||
}
|
||
|
||
.jp-Collapse-header {
|
||
padding: 1px 12px;
|
||
background-color: var(--jp-layout-color1);
|
||
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
text-transform: uppercase;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-Collapser-icon {
|
||
height: 16px;
|
||
}
|
||
|
||
.jp-Collapse-header-collapsed .jp-Collapser-icon {
|
||
transform: rotate(-90deg);
|
||
margin: auto 0;
|
||
}
|
||
|
||
.jp-Collapser-title {
|
||
line-height: 25px;
|
||
}
|
||
|
||
.jp-Collapse-contents {
|
||
padding: 0 12px;
|
||
background-color: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
overflow: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
|
||
|
||
/**
|
||
* (DEPRECATED) Support for consuming icons as CSS background images
|
||
*/
|
||
|
||
/* Icons urls */
|
||
|
||
:root {
|
||
--jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
|
||
--jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
|
||
--jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
|
||
--jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
|
||
--jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
|
||
--jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
|
||
--jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
|
||
--jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
|
||
--jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
|
||
--jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
|
||
--jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
|
||
--jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
|
||
--jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
|
||
--jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
}
|
||
|
||
/* Icon CSS class declarations */
|
||
|
||
.jp-AddAboveIcon {
|
||
background-image: var(--jp-icon-add-above);
|
||
}
|
||
|
||
.jp-AddBelowIcon {
|
||
background-image: var(--jp-icon-add-below);
|
||
}
|
||
|
||
.jp-AddIcon {
|
||
background-image: var(--jp-icon-add);
|
||
}
|
||
|
||
.jp-BellIcon {
|
||
background-image: var(--jp-icon-bell);
|
||
}
|
||
|
||
.jp-BugDotIcon {
|
||
background-image: var(--jp-icon-bug-dot);
|
||
}
|
||
|
||
.jp-BugIcon {
|
||
background-image: var(--jp-icon-bug);
|
||
}
|
||
|
||
.jp-BuildIcon {
|
||
background-image: var(--jp-icon-build);
|
||
}
|
||
|
||
.jp-CaretDownEmptyIcon {
|
||
background-image: var(--jp-icon-caret-down-empty);
|
||
}
|
||
|
||
.jp-CaretDownEmptyThinIcon {
|
||
background-image: var(--jp-icon-caret-down-empty-thin);
|
||
}
|
||
|
||
.jp-CaretDownIcon {
|
||
background-image: var(--jp-icon-caret-down);
|
||
}
|
||
|
||
.jp-CaretLeftIcon {
|
||
background-image: var(--jp-icon-caret-left);
|
||
}
|
||
|
||
.jp-CaretRightIcon {
|
||
background-image: var(--jp-icon-caret-right);
|
||
}
|
||
|
||
.jp-CaretUpEmptyThinIcon {
|
||
background-image: var(--jp-icon-caret-up-empty-thin);
|
||
}
|
||
|
||
.jp-CaretUpIcon {
|
||
background-image: var(--jp-icon-caret-up);
|
||
}
|
||
|
||
.jp-CaseSensitiveIcon {
|
||
background-image: var(--jp-icon-case-sensitive);
|
||
}
|
||
|
||
.jp-CheckIcon {
|
||
background-image: var(--jp-icon-check);
|
||
}
|
||
|
||
.jp-CircleEmptyIcon {
|
||
background-image: var(--jp-icon-circle-empty);
|
||
}
|
||
|
||
.jp-CircleIcon {
|
||
background-image: var(--jp-icon-circle);
|
||
}
|
||
|
||
.jp-ClearIcon {
|
||
background-image: var(--jp-icon-clear);
|
||
}
|
||
|
||
.jp-CloseIcon {
|
||
background-image: var(--jp-icon-close);
|
||
}
|
||
|
||
.jp-CodeCheckIcon {
|
||
background-image: var(--jp-icon-code-check);
|
||
}
|
||
|
||
.jp-CodeIcon {
|
||
background-image: var(--jp-icon-code);
|
||
}
|
||
|
||
.jp-CollapseAllIcon {
|
||
background-image: var(--jp-icon-collapse-all);
|
||
}
|
||
|
||
.jp-ConsoleIcon {
|
||
background-image: var(--jp-icon-console);
|
||
}
|
||
|
||
.jp-CopyIcon {
|
||
background-image: var(--jp-icon-copy);
|
||
}
|
||
|
||
.jp-CopyrightIcon {
|
||
background-image: var(--jp-icon-copyright);
|
||
}
|
||
|
||
.jp-CutIcon {
|
||
background-image: var(--jp-icon-cut);
|
||
}
|
||
|
||
.jp-DeleteIcon {
|
||
background-image: var(--jp-icon-delete);
|
||
}
|
||
|
||
.jp-DownloadIcon {
|
||
background-image: var(--jp-icon-download);
|
||
}
|
||
|
||
.jp-DuplicateIcon {
|
||
background-image: var(--jp-icon-duplicate);
|
||
}
|
||
|
||
.jp-EditIcon {
|
||
background-image: var(--jp-icon-edit);
|
||
}
|
||
|
||
.jp-EllipsesIcon {
|
||
background-image: var(--jp-icon-ellipses);
|
||
}
|
||
|
||
.jp-ErrorIcon {
|
||
background-image: var(--jp-icon-error);
|
||
}
|
||
|
||
.jp-ExpandAllIcon {
|
||
background-image: var(--jp-icon-expand-all);
|
||
}
|
||
|
||
.jp-ExtensionIcon {
|
||
background-image: var(--jp-icon-extension);
|
||
}
|
||
|
||
.jp-FastForwardIcon {
|
||
background-image: var(--jp-icon-fast-forward);
|
||
}
|
||
|
||
.jp-FileIcon {
|
||
background-image: var(--jp-icon-file);
|
||
}
|
||
|
||
.jp-FileUploadIcon {
|
||
background-image: var(--jp-icon-file-upload);
|
||
}
|
||
|
||
.jp-FilterDotIcon {
|
||
background-image: var(--jp-icon-filter-dot);
|
||
}
|
||
|
||
.jp-FilterIcon {
|
||
background-image: var(--jp-icon-filter);
|
||
}
|
||
|
||
.jp-FilterListIcon {
|
||
background-image: var(--jp-icon-filter-list);
|
||
}
|
||
|
||
.jp-FolderFavoriteIcon {
|
||
background-image: var(--jp-icon-folder-favorite);
|
||
}
|
||
|
||
.jp-FolderIcon {
|
||
background-image: var(--jp-icon-folder);
|
||
}
|
||
|
||
.jp-HomeIcon {
|
||
background-image: var(--jp-icon-home);
|
||
}
|
||
|
||
.jp-Html5Icon {
|
||
background-image: var(--jp-icon-html5);
|
||
}
|
||
|
||
.jp-ImageIcon {
|
||
background-image: var(--jp-icon-image);
|
||
}
|
||
|
||
.jp-InfoIcon {
|
||
background-image: var(--jp-icon-info);
|
||
}
|
||
|
||
.jp-InspectorIcon {
|
||
background-image: var(--jp-icon-inspector);
|
||
}
|
||
|
||
.jp-JsonIcon {
|
||
background-image: var(--jp-icon-json);
|
||
}
|
||
|
||
.jp-JuliaIcon {
|
||
background-image: var(--jp-icon-julia);
|
||
}
|
||
|
||
.jp-JupyterFaviconIcon {
|
||
background-image: var(--jp-icon-jupyter-favicon);
|
||
}
|
||
|
||
.jp-JupyterIcon {
|
||
background-image: var(--jp-icon-jupyter);
|
||
}
|
||
|
||
.jp-JupyterlabWordmarkIcon {
|
||
background-image: var(--jp-icon-jupyterlab-wordmark);
|
||
}
|
||
|
||
.jp-KernelIcon {
|
||
background-image: var(--jp-icon-kernel);
|
||
}
|
||
|
||
.jp-KeyboardIcon {
|
||
background-image: var(--jp-icon-keyboard);
|
||
}
|
||
|
||
.jp-LaunchIcon {
|
||
background-image: var(--jp-icon-launch);
|
||
}
|
||
|
||
.jp-LauncherIcon {
|
||
background-image: var(--jp-icon-launcher);
|
||
}
|
||
|
||
.jp-LineFormIcon {
|
||
background-image: var(--jp-icon-line-form);
|
||
}
|
||
|
||
.jp-LinkIcon {
|
||
background-image: var(--jp-icon-link);
|
||
}
|
||
|
||
.jp-ListIcon {
|
||
background-image: var(--jp-icon-list);
|
||
}
|
||
|
||
.jp-MarkdownIcon {
|
||
background-image: var(--jp-icon-markdown);
|
||
}
|
||
|
||
.jp-MoveDownIcon {
|
||
background-image: var(--jp-icon-move-down);
|
||
}
|
||
|
||
.jp-MoveUpIcon {
|
||
background-image: var(--jp-icon-move-up);
|
||
}
|
||
|
||
.jp-NewFolderIcon {
|
||
background-image: var(--jp-icon-new-folder);
|
||
}
|
||
|
||
.jp-NotTrustedIcon {
|
||
background-image: var(--jp-icon-not-trusted);
|
||
}
|
||
|
||
.jp-NotebookIcon {
|
||
background-image: var(--jp-icon-notebook);
|
||
}
|
||
|
||
.jp-NumberingIcon {
|
||
background-image: var(--jp-icon-numbering);
|
||
}
|
||
|
||
.jp-OfflineBoltIcon {
|
||
background-image: var(--jp-icon-offline-bolt);
|
||
}
|
||
|
||
.jp-PaletteIcon {
|
||
background-image: var(--jp-icon-palette);
|
||
}
|
||
|
||
.jp-PasteIcon {
|
||
background-image: var(--jp-icon-paste);
|
||
}
|
||
|
||
.jp-PdfIcon {
|
||
background-image: var(--jp-icon-pdf);
|
||
}
|
||
|
||
.jp-PythonIcon {
|
||
background-image: var(--jp-icon-python);
|
||
}
|
||
|
||
.jp-RKernelIcon {
|
||
background-image: var(--jp-icon-r-kernel);
|
||
}
|
||
|
||
.jp-ReactIcon {
|
||
background-image: var(--jp-icon-react);
|
||
}
|
||
|
||
.jp-RedoIcon {
|
||
background-image: var(--jp-icon-redo);
|
||
}
|
||
|
||
.jp-RefreshIcon {
|
||
background-image: var(--jp-icon-refresh);
|
||
}
|
||
|
||
.jp-RegexIcon {
|
||
background-image: var(--jp-icon-regex);
|
||
}
|
||
|
||
.jp-RunIcon {
|
||
background-image: var(--jp-icon-run);
|
||
}
|
||
|
||
.jp-RunningIcon {
|
||
background-image: var(--jp-icon-running);
|
||
}
|
||
|
||
.jp-SaveIcon {
|
||
background-image: var(--jp-icon-save);
|
||
}
|
||
|
||
.jp-SearchIcon {
|
||
background-image: var(--jp-icon-search);
|
||
}
|
||
|
||
.jp-SettingsIcon {
|
||
background-image: var(--jp-icon-settings);
|
||
}
|
||
|
||
.jp-ShareIcon {
|
||
background-image: var(--jp-icon-share);
|
||
}
|
||
|
||
.jp-SpreadsheetIcon {
|
||
background-image: var(--jp-icon-spreadsheet);
|
||
}
|
||
|
||
.jp-StopIcon {
|
||
background-image: var(--jp-icon-stop);
|
||
}
|
||
|
||
.jp-TabIcon {
|
||
background-image: var(--jp-icon-tab);
|
||
}
|
||
|
||
.jp-TableRowsIcon {
|
||
background-image: var(--jp-icon-table-rows);
|
||
}
|
||
|
||
.jp-TagIcon {
|
||
background-image: var(--jp-icon-tag);
|
||
}
|
||
|
||
.jp-TerminalIcon {
|
||
background-image: var(--jp-icon-terminal);
|
||
}
|
||
|
||
.jp-TextEditorIcon {
|
||
background-image: var(--jp-icon-text-editor);
|
||
}
|
||
|
||
.jp-TocIcon {
|
||
background-image: var(--jp-icon-toc);
|
||
}
|
||
|
||
.jp-TreeViewIcon {
|
||
background-image: var(--jp-icon-tree-view);
|
||
}
|
||
|
||
.jp-TrustedIcon {
|
||
background-image: var(--jp-icon-trusted);
|
||
}
|
||
|
||
.jp-UndoIcon {
|
||
background-image: var(--jp-icon-undo);
|
||
}
|
||
|
||
.jp-UserIcon {
|
||
background-image: var(--jp-icon-user);
|
||
}
|
||
|
||
.jp-UsersIcon {
|
||
background-image: var(--jp-icon-users);
|
||
}
|
||
|
||
.jp-VegaIcon {
|
||
background-image: var(--jp-icon-vega);
|
||
}
|
||
|
||
.jp-WordIcon {
|
||
background-image: var(--jp-icon-word);
|
||
}
|
||
|
||
.jp-YamlIcon {
|
||
background-image: var(--jp-icon-yaml);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* (DEPRECATED) Support for consuming icons as CSS background images
|
||
*/
|
||
|
||
.jp-Icon,
|
||
.jp-MaterialIcon {
|
||
background-position: center;
|
||
background-repeat: no-repeat;
|
||
background-size: 16px;
|
||
min-width: 16px;
|
||
min-height: 16px;
|
||
}
|
||
|
||
.jp-Icon-cover {
|
||
background-position: center;
|
||
background-repeat: no-repeat;
|
||
background-size: cover;
|
||
}
|
||
|
||
/**
|
||
* (DEPRECATED) Support for specific CSS icon sizes
|
||
*/
|
||
|
||
.jp-Icon-16 {
|
||
background-size: 16px;
|
||
min-width: 16px;
|
||
min-height: 16px;
|
||
}
|
||
|
||
.jp-Icon-18 {
|
||
background-size: 18px;
|
||
min-width: 18px;
|
||
min-height: 18px;
|
||
}
|
||
|
||
.jp-Icon-20 {
|
||
background-size: 20px;
|
||
min-width: 20px;
|
||
min-height: 20px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabBar .lm-TabBar-addButton {
|
||
align-items: center;
|
||
display: flex;
|
||
padding: 4px;
|
||
padding-bottom: 5px;
|
||
margin-right: 1px;
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-TabBar .lm-TabBar-addButton:hover {
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.lm-DockPanel-tabBar .lm-TabBar-tab {
|
||
width: var(--jp-private-horizontal-tab-width);
|
||
}
|
||
|
||
.lm-DockPanel-tabBar .lm-TabBar-content {
|
||
flex: unset;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar[data-orientation='horizontal'] {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* Support for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/* recolor the primary elements of an icon */
|
||
.jp-icon0[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon1[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon2[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon3[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon4[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon0[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon1[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon2[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon3[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon4[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/* recolor the accent elements of an icon */
|
||
.jp-icon-accent0[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-accent1[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-accent2[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-accent3[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-accent4[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-accent0[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-accent1[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-accent2[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-accent3[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-accent4[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* set the color of an icon to transparent */
|
||
.jp-icon-none[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.jp-icon-none[stroke] {
|
||
stroke: none;
|
||
}
|
||
|
||
/* brand icon colors. Same for light and dark */
|
||
.jp-icon-brand0[fill] {
|
||
fill: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-icon-brand1[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-icon-brand2[fill] {
|
||
fill: var(--jp-brand-color2);
|
||
}
|
||
|
||
.jp-icon-brand3[fill] {
|
||
fill: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-icon-brand4[fill] {
|
||
fill: var(--jp-brand-color4);
|
||
}
|
||
|
||
.jp-icon-brand0[stroke] {
|
||
stroke: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-icon-brand1[stroke] {
|
||
stroke: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-icon-brand2[stroke] {
|
||
stroke: var(--jp-brand-color2);
|
||
}
|
||
|
||
.jp-icon-brand3[stroke] {
|
||
stroke: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-icon-brand4[stroke] {
|
||
stroke: var(--jp-brand-color4);
|
||
}
|
||
|
||
/* warn icon colors. Same for light and dark */
|
||
.jp-icon-warn0[fill] {
|
||
fill: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-icon-warn1[fill] {
|
||
fill: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-icon-warn2[fill] {
|
||
fill: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-icon-warn3[fill] {
|
||
fill: var(--jp-warn-color3);
|
||
}
|
||
|
||
.jp-icon-warn0[stroke] {
|
||
stroke: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-icon-warn1[stroke] {
|
||
stroke: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-icon-warn2[stroke] {
|
||
stroke: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-icon-warn3[stroke] {
|
||
stroke: var(--jp-warn-color3);
|
||
}
|
||
|
||
/* icon colors that contrast well with each other and most backgrounds */
|
||
.jp-icon-contrast0[fill] {
|
||
fill: var(--jp-icon-contrast-color0);
|
||
}
|
||
|
||
.jp-icon-contrast1[fill] {
|
||
fill: var(--jp-icon-contrast-color1);
|
||
}
|
||
|
||
.jp-icon-contrast2[fill] {
|
||
fill: var(--jp-icon-contrast-color2);
|
||
}
|
||
|
||
.jp-icon-contrast3[fill] {
|
||
fill: var(--jp-icon-contrast-color3);
|
||
}
|
||
|
||
.jp-icon-contrast0[stroke] {
|
||
stroke: var(--jp-icon-contrast-color0);
|
||
}
|
||
|
||
.jp-icon-contrast1[stroke] {
|
||
stroke: var(--jp-icon-contrast-color1);
|
||
}
|
||
|
||
.jp-icon-contrast2[stroke] {
|
||
stroke: var(--jp-icon-contrast-color2);
|
||
}
|
||
|
||
.jp-icon-contrast3[stroke] {
|
||
stroke: var(--jp-icon-contrast-color3);
|
||
}
|
||
|
||
.jp-icon-dot[fill] {
|
||
fill: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-jupyter-icon-color[fill] {
|
||
fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-notebook-icon-color[fill] {
|
||
fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-json-icon-color[fill] {
|
||
fill: var(--jp-json-icon-color, var(--jp-warn-color1));
|
||
}
|
||
|
||
.jp-console-icon-color[fill] {
|
||
fill: var(--jp-console-icon-color, white);
|
||
}
|
||
|
||
.jp-console-icon-background-color[fill] {
|
||
fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
|
||
}
|
||
|
||
.jp-terminal-icon-color[fill] {
|
||
fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
|
||
}
|
||
|
||
.jp-terminal-icon-background-color[fill] {
|
||
fill: var(
|
||
--jp-terminal-icon-background-color,
|
||
var(--jp-inverse-layout-color2)
|
||
);
|
||
}
|
||
|
||
.jp-text-editor-icon-color[fill] {
|
||
fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
|
||
}
|
||
|
||
.jp-inspector-icon-color[fill] {
|
||
fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
|
||
}
|
||
|
||
/* CSS for icons in selected filebrowser listing items */
|
||
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
|
||
fill: #fff;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* stylelint-disable selector-max-class, selector-max-compound-selectors */
|
||
|
||
/**
|
||
* TODO: come up with non css-hack solution for showing the busy icon on top
|
||
* of the close icon
|
||
* CSS for complex behavior of close icon of tabs in the main area tabbar
|
||
*/
|
||
.lm-DockPanel-tabBar
|
||
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
|
||
> .lm-TabBar-tabCloseIcon
|
||
> :not(:hover)
|
||
> .jp-icon3[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar
|
||
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
|
||
> .lm-TabBar-tabCloseIcon
|
||
> :not(:hover)
|
||
> .jp-icon-busy[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
/* stylelint-enable selector-max-class, selector-max-compound-selectors */
|
||
|
||
/* CSS for icons in status bar */
|
||
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
|
||
fill: #fff;
|
||
}
|
||
|
||
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* special handling for splash icon CSS. While the theme CSS reloads during
|
||
splash, the splash icon can loose theming. To prevent that, we set a
|
||
default for its color variable */
|
||
:root {
|
||
--jp-warn-color0: var(--md-orange-700);
|
||
}
|
||
|
||
/* not sure what to do with this one, used in filebrowser listing */
|
||
.jp-DragIcon {
|
||
margin-right: 4px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* Support for alt colors for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/* alt recolor the primary elements of an icon */
|
||
.jp-icon-alt .jp-icon0[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon1[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon2[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon3[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon4[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon0[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon1[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon2[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon3[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon4[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* alt recolor the accent elements of an icon */
|
||
.jp-icon-alt .jp-icon-accent0[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent1[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent2[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent3[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent4[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent0[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent1[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent2[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent3[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent4[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
|
||
display: none !important;
|
||
}
|
||
|
||
/**
|
||
* Support for hover colors for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/**
|
||
* regular colors
|
||
*/
|
||
|
||
/* recolor the primary elements of an icon */
|
||
.jp-icon-hover :hover .jp-icon0-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon1-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon2-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon3-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon4-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon0-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon1-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon2-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon3-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon4-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/* recolor the accent elements of an icon */
|
||
.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* set the color of an icon to transparent */
|
||
.jp-icon-hover :hover .jp-icon-none-hover[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
|
||
stroke: none;
|
||
}
|
||
|
||
/**
|
||
* inverse colors
|
||
*/
|
||
|
||
/* inverse recolor the primary elements of an icon */
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* inverse recolor the accent elements of an icon */
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-IFrame {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-IFrame > iframe {
|
||
border: none;
|
||
}
|
||
|
||
/*
|
||
When drag events occur, `lm-mod-override-cursor` is added to the body.
|
||
Because iframes steal all cursor events, the following two rules are necessary
|
||
to suppress pointer events while resize drags are occurring. There may be a
|
||
better solution to this problem.
|
||
*/
|
||
body.lm-mod-override-cursor .jp-IFrame {
|
||
position: relative;
|
||
}
|
||
|
||
body.lm-mod-override-cursor .jp-IFrame::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-HoverBox {
|
||
position: fixed;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FormGroup-content fieldset {
|
||
border: none;
|
||
padding: 0;
|
||
min-width: 0;
|
||
width: 100%;
|
||
}
|
||
|
||
/* stylelint-disable selector-max-type */
|
||
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
|
||
font-size: var(--jp-content-font-size2);
|
||
border-color: var(--jp-input-border-color);
|
||
border-style: solid;
|
||
border-radius: var(--jp-border-radius);
|
||
border-width: 1px;
|
||
padding: 6px 8px;
|
||
background: none;
|
||
color: var(--jp-ui-font-color0);
|
||
height: inherit;
|
||
}
|
||
|
||
.jp-FormGroup-content fieldset input[type='checkbox'] {
|
||
position: relative;
|
||
top: 2px;
|
||
margin-left: 0;
|
||
}
|
||
|
||
.jp-FormGroup-content button.jp-mod-styled {
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-FormGroup-content .checkbox label {
|
||
cursor: pointer;
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-root > fieldset > legend {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-root > fieldset > p {
|
||
display: none;
|
||
}
|
||
|
||
/** copy of `input.jp-mod-styled:focus` style */
|
||
.jp-FormGroup-content fieldset input:focus,
|
||
.jp-FormGroup-content fieldset select:focus {
|
||
-moz-outline-radius: unset;
|
||
outline: var(--jp-border-width) solid var(--md-blue-500);
|
||
outline-offset: -1px;
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-FormGroup-content fieldset input:hover:not(:focus),
|
||
.jp-FormGroup-content fieldset select:hover:not(:focus) {
|
||
background-color: var(--jp-border-color2);
|
||
}
|
||
|
||
/* stylelint-enable selector-max-type */
|
||
|
||
.jp-FormGroup-content .checkbox .field-description {
|
||
/* Disable default description field for checkbox:
|
||
because other widgets do not have description fields,
|
||
we add descriptions to each widget on the field level.
|
||
*/
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content #root__description {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-modifiedIndicator {
|
||
width: 5px;
|
||
background-color: var(--jp-brand-color2);
|
||
margin-top: 0;
|
||
margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
|
||
background-color: var(--jp-error-color0);
|
||
margin-right: 0.5em;
|
||
}
|
||
|
||
/* RJSF ARRAY style */
|
||
|
||
.jp-arrayFieldWrapper legend {
|
||
font-size: var(--jp-content-font-size2);
|
||
color: var(--jp-ui-font-color0);
|
||
flex-basis: 100%;
|
||
padding: 4px 0;
|
||
font-weight: var(--jp-content-heading-font-weight);
|
||
border-bottom: 1px solid var(--jp-border-color2);
|
||
}
|
||
|
||
.jp-arrayFieldWrapper .field-description {
|
||
padding: 4px 0;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
.jp-arrayFieldWrapper .array-item {
|
||
width: 100%;
|
||
border: 1px solid var(--jp-border-color2);
|
||
border-radius: 4px;
|
||
margin: 4px;
|
||
}
|
||
|
||
.jp-ArrayOperations {
|
||
display: flex;
|
||
margin-left: 8px;
|
||
}
|
||
|
||
.jp-ArrayOperationsButton {
|
||
margin: 2px;
|
||
}
|
||
|
||
.jp-ArrayOperationsButton .jp-icon3[fill] {
|
||
fill: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
|
||
cursor: not-allowed;
|
||
opacity: 0.5;
|
||
}
|
||
|
||
/* RJSF form validation error */
|
||
|
||
.jp-FormGroup-content .validationErrors {
|
||
color: var(--jp-error-color0);
|
||
}
|
||
|
||
/* Hide panel level error as duplicated the field level error */
|
||
.jp-FormGroup-content .panel.errors {
|
||
display: none;
|
||
}
|
||
|
||
/* RJSF normal content (settings-editor) */
|
||
|
||
.jp-FormGroup-contentNormal {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
|
||
margin-left: 7px;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-description {
|
||
flex-basis: 100%;
|
||
padding: 4px 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-default {
|
||
flex-basis: 100%;
|
||
padding: 4px 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
|
||
font-size: var(--jp-content-font-size1);
|
||
font-weight: normal;
|
||
min-width: 120px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal fieldset:not(:first-child) {
|
||
margin-left: 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .field-array-of-string .array-item {
|
||
/* Display `jp-ArrayOperations` buttons side-by-side with content except
|
||
for small screens where flex-wrap will place them one below the other.
|
||
*/
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
|
||
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
/* RJSF compact content (metadata-form) */
|
||
|
||
.jp-FormGroup-content.jp-FormGroup-contentCompact {
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .form-group {
|
||
display: flex;
|
||
padding: 0.5em 0.2em 0.5em 0;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact
|
||
.jp-FormGroup-compactTitle
|
||
.jp-FormGroup-description {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
|
||
padding-bottom: 0.3em;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
|
||
padding-bottom: 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact
|
||
.jp-objectFieldWrapper
|
||
.jp-objectFieldWrapper
|
||
.form-group {
|
||
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact ul.error-detail {
|
||
margin-block-start: 0.5em;
|
||
margin-block-end: 0.5em;
|
||
padding-inline-start: 1em;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-SidePanel {
|
||
display: flex;
|
||
flex-direction: column;
|
||
min-width: var(--jp-sidebar-min-width);
|
||
overflow-y: auto;
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
.jp-SidePanel-header {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
letter-spacing: 1px;
|
||
margin: 0;
|
||
padding: 2px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.jp-SidePanel-toolbar {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-SidePanel-content {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-SidePanel-toolbar,
|
||
.jp-AccordionPanel-toolbar {
|
||
height: var(--jp-private-toolbar-height);
|
||
}
|
||
|
||
.jp-SidePanel-toolbar.jp-Toolbar-micro {
|
||
display: none;
|
||
}
|
||
|
||
.lm-AccordionPanel .jp-AccordionPanel-title {
|
||
box-sizing: border-box;
|
||
line-height: 25px;
|
||
margin: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
font-size: var(--jp-ui-font-size0);
|
||
}
|
||
|
||
.jp-AccordionPanel-title {
|
||
cursor: pointer;
|
||
user-select: none;
|
||
-moz-user-select: none;
|
||
-webkit-user-select: none;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
|
||
/* Title is rotated for horizontal accordion panel using CSS */
|
||
display: block;
|
||
transform-origin: top left;
|
||
transform: rotate(-90deg) translate(-100%);
|
||
}
|
||
|
||
.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
|
||
user-select: none;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
|
||
transform: rotate(-90deg);
|
||
margin: auto 0;
|
||
height: 16px;
|
||
}
|
||
|
||
.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
.lm-AccordionPanel .jp-AccordionPanel-toolbar {
|
||
background: none;
|
||
box-shadow: none;
|
||
border: none;
|
||
margin-left: auto;
|
||
}
|
||
|
||
.lm-AccordionPanel .lm-SplitPanel-handle:hover {
|
||
background: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-text-truncated {
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Spinner {
|
||
position: absolute;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
z-index: 10;
|
||
left: 0;
|
||
top: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: var(--jp-layout-color0);
|
||
outline: none;
|
||
}
|
||
|
||
.jp-SpinnerContent {
|
||
font-size: 10px;
|
||
margin: 50px auto;
|
||
text-indent: -9999em;
|
||
width: 3em;
|
||
height: 3em;
|
||
border-radius: 50%;
|
||
background: var(--jp-brand-color3);
|
||
background: linear-gradient(
|
||
to right,
|
||
#f37626 10%,
|
||
rgba(255, 255, 255, 0) 42%
|
||
);
|
||
position: relative;
|
||
animation: load3 1s infinite linear, fadeIn 1s;
|
||
}
|
||
|
||
.jp-SpinnerContent::before {
|
||
width: 50%;
|
||
height: 50%;
|
||
background: #f37626;
|
||
border-radius: 100% 0 0;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
content: '';
|
||
}
|
||
|
||
.jp-SpinnerContent::after {
|
||
background: var(--jp-layout-color0);
|
||
width: 75%;
|
||
height: 75%;
|
||
border-radius: 50%;
|
||
content: '';
|
||
margin: auto;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
bottom: 0;
|
||
right: 0;
|
||
}
|
||
|
||
@keyframes fadeIn {
|
||
0% {
|
||
opacity: 0;
|
||
}
|
||
|
||
100% {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
@keyframes load3 {
|
||
0% {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
100% {
|
||
transform: rotate(360deg);
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
button.jp-mod-styled {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
border: none;
|
||
box-sizing: border-box;
|
||
text-align: center;
|
||
line-height: 32px;
|
||
height: 32px;
|
||
padding: 0 12px;
|
||
letter-spacing: 0.8px;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
input.jp-mod-styled {
|
||
background: var(--jp-input-background);
|
||
height: 28px;
|
||
box-sizing: border-box;
|
||
border: var(--jp-border-width) solid var(--jp-border-color1);
|
||
padding-left: 7px;
|
||
padding-right: 7px;
|
||
font-size: var(--jp-ui-font-size2);
|
||
color: var(--jp-ui-font-color0);
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
input[type='checkbox'].jp-mod-styled {
|
||
appearance: checkbox;
|
||
-webkit-appearance: checkbox;
|
||
-moz-appearance: checkbox;
|
||
height: auto;
|
||
}
|
||
|
||
input.jp-mod-styled:focus {
|
||
border: var(--jp-border-width) solid var(--md-blue-500);
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-select-wrapper {
|
||
display: flex;
|
||
position: relative;
|
||
flex-direction: column;
|
||
padding: 1px;
|
||
background-color: var(--jp-layout-color1);
|
||
box-sizing: border-box;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.jp-select-wrapper:not(.multiple) {
|
||
height: 28px;
|
||
}
|
||
|
||
.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
|
||
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
background-color: var(--jp-input-active-background);
|
||
}
|
||
|
||
select.jp-mod-styled:hover {
|
||
cursor: pointer;
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: var(--jp-input-hover-background);
|
||
box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
|
||
}
|
||
|
||
select.jp-mod-styled {
|
||
flex: 1 1 auto;
|
||
width: 100%;
|
||
font-size: var(--jp-ui-font-size2);
|
||
background: var(--jp-input-background);
|
||
color: var(--jp-ui-font-color0);
|
||
padding: 0 25px 0 8px;
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
border-radius: 0;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
select.jp-mod-styled:not([multiple]) {
|
||
height: 32px;
|
||
}
|
||
|
||
select.jp-mod-styled[multiple] {
|
||
max-height: 200px;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-switch {
|
||
display: flex;
|
||
align-items: center;
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
background-color: transparent;
|
||
color: var(--jp-ui-font-color1);
|
||
border: none;
|
||
height: 20px;
|
||
}
|
||
|
||
.jp-switch:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-switch-label {
|
||
margin-right: 5px;
|
||
font-family: var(--jp-ui-font-family);
|
||
}
|
||
|
||
.jp-switch-track {
|
||
cursor: pointer;
|
||
background-color: var(--jp-switch-color, var(--jp-border-color1));
|
||
-webkit-transition: 0.4s;
|
||
transition: 0.4s;
|
||
border-radius: 34px;
|
||
height: 16px;
|
||
width: 35px;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-switch-track::before {
|
||
content: '';
|
||
position: absolute;
|
||
height: 10px;
|
||
width: 10px;
|
||
margin: 3px;
|
||
left: 0;
|
||
background-color: var(--jp-ui-inverse-font-color1);
|
||
-webkit-transition: 0.4s;
|
||
transition: 0.4s;
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.jp-switch[aria-checked='true'] .jp-switch-track {
|
||
background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-switch[aria-checked='true'] .jp-switch-track::before {
|
||
/* track width (35) - margins (3 + 3) - thumb width (10) */
|
||
left: 19px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-toolbar-height: calc(
|
||
28px + var(--jp-border-width)
|
||
); /* leave 28px for content */
|
||
}
|
||
|
||
.jp-Toolbar {
|
||
color: var(--jp-ui-font-color1);
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
flex-direction: row;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
background: var(--jp-toolbar-background);
|
||
min-height: var(--jp-toolbar-micro-height);
|
||
padding: 2px;
|
||
z-index: 8;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
/* Toolbar items */
|
||
|
||
.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
|
||
flex-grow: 1;
|
||
flex-shrink: 1;
|
||
}
|
||
|
||
.jp-Toolbar-item.jp-Toolbar-kernelStatus {
|
||
display: inline-block;
|
||
width: 32px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
background-size: 16px;
|
||
}
|
||
|
||
.jp-Toolbar > .jp-Toolbar-item {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
padding-left: 1px;
|
||
padding-right: 1px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: var(--jp-private-toolbar-height);
|
||
height: 100%;
|
||
}
|
||
|
||
/* Toolbar buttons */
|
||
|
||
/* This is the div we use to wrap the react component into a Widget */
|
||
div.jp-ToolbarButton {
|
||
color: transparent;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent {
|
||
background: var(--jp-layout-color1);
|
||
border: none;
|
||
box-sizing: border-box;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
padding: 0 6px;
|
||
margin: 0;
|
||
height: 24px;
|
||
border-radius: var(--jp-border-radius);
|
||
display: flex;
|
||
align-items: center;
|
||
text-align: center;
|
||
font-size: 14px;
|
||
min-width: unset;
|
||
min-height: unset;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent:disabled {
|
||
opacity: 0.4;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent > span {
|
||
padding: 0;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 100%;
|
||
padding-left: 2px;
|
||
color: var(--jp-ui-font-color1);
|
||
font-family: var(--jp-ui-font-family);
|
||
}
|
||
|
||
#jp-main-dock-panel[data-mode='single-document']
|
||
.jp-MainAreaWidget
|
||
> .jp-Toolbar.jp-Toolbar-micro {
|
||
padding: 0;
|
||
min-height: 0;
|
||
}
|
||
|
||
#jp-main-dock-panel[data-mode='single-document']
|
||
.jp-MainAreaWidget
|
||
> .jp-Toolbar {
|
||
border: none;
|
||
box-shadow: none;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-WindowedPanel-outer {
|
||
position: relative;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-WindowedPanel-inner {
|
||
position: relative;
|
||
}
|
||
|
||
.jp-WindowedPanel-window {
|
||
position: absolute;
|
||
left: 0;
|
||
right: 0;
|
||
overflow: visible;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Sibling imports */
|
||
|
||
body {
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/* Disable native link decoration styles everywhere outside of dialog boxes */
|
||
a {
|
||
text-decoration: unset;
|
||
color: unset;
|
||
}
|
||
|
||
a:hover {
|
||
text-decoration: unset;
|
||
color: unset;
|
||
}
|
||
|
||
/* Accessibility for links inside dialog box text */
|
||
.jp-Dialog-content a {
|
||
text-decoration: revert;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-Dialog-content a:hover {
|
||
text-decoration: revert;
|
||
}
|
||
|
||
/* Styles for ui-components */
|
||
.jp-Button {
|
||
color: var(--jp-ui-font-color2);
|
||
border-radius: var(--jp-border-radius);
|
||
padding: 0 12px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
|
||
/* Copy from blueprint 3 */
|
||
display: inline-flex;
|
||
flex-direction: row;
|
||
border: none;
|
||
cursor: pointer;
|
||
align-items: center;
|
||
justify-content: center;
|
||
text-align: left;
|
||
vertical-align: middle;
|
||
min-height: 30px;
|
||
min-width: 30px;
|
||
}
|
||
|
||
.jp-Button:disabled {
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
.jp-Button:empty {
|
||
padding: 0 !important;
|
||
}
|
||
|
||
.jp-Button.jp-mod-small {
|
||
min-height: 24px;
|
||
min-width: 24px;
|
||
font-size: 12px;
|
||
padding: 0 7px;
|
||
}
|
||
|
||
/* Use our own theme for hover styles */
|
||
.jp-Button.jp-mod-minimal:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-Button.jp-mod-minimal {
|
||
background: none;
|
||
}
|
||
|
||
.jp-InputGroup {
|
||
display: block;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-InputGroup input {
|
||
box-sizing: border-box;
|
||
border: none;
|
||
border-radius: 0;
|
||
background-color: transparent;
|
||
color: var(--jp-ui-font-color0);
|
||
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
|
||
padding-bottom: 0;
|
||
padding-top: 0;
|
||
padding-left: 10px;
|
||
padding-right: 28px;
|
||
position: relative;
|
||
width: 100%;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
appearance: none;
|
||
font-size: 14px;
|
||
font-weight: 400;
|
||
height: 30px;
|
||
line-height: 30px;
|
||
outline: none;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.jp-InputGroup input:focus {
|
||
box-shadow: inset 0 0 0 var(--jp-border-width)
|
||
var(--jp-input-active-box-shadow-color),
|
||
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
|
||
}
|
||
|
||
.jp-InputGroup input:disabled {
|
||
cursor: not-allowed;
|
||
resize: block;
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroup input:disabled ~ span {
|
||
cursor: not-allowed;
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroup input::placeholder,
|
||
input::placeholder {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroupAction {
|
||
position: absolute;
|
||
bottom: 1px;
|
||
right: 0;
|
||
padding: 6px;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select {
|
||
background-color: initial;
|
||
border: none;
|
||
border-radius: 0;
|
||
box-shadow: none;
|
||
color: var(--jp-ui-font-color0);
|
||
display: block;
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
height: 24px;
|
||
line-height: 14px;
|
||
padding: 0 25px 0 10px;
|
||
text-align: left;
|
||
-moz-appearance: none;
|
||
-webkit-appearance: none;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select:disabled {
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color2);
|
||
cursor: not-allowed;
|
||
resize: block;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
/* Use our own theme for hover and option styles */
|
||
/* stylelint-disable-next-line selector-max-type */
|
||
.jp-HTMLSelect.jp-DefaultStyle select:hover,
|
||
.jp-HTMLSelect.jp-DefaultStyle select > option {
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
select {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-StatusBar-Widget {
|
||
display: flex;
|
||
align-items: center;
|
||
background: var(--jp-layout-color2);
|
||
min-height: var(--jp-statusbar-height);
|
||
justify-content: space-between;
|
||
padding: 0 10px;
|
||
}
|
||
|
||
.jp-StatusBar-Left {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.jp-StatusBar-Middle {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.jp-StatusBar-Right {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row-reverse;
|
||
}
|
||
|
||
.jp-StatusBar-Item {
|
||
max-height: var(--jp-statusbar-height);
|
||
margin: 0 2px;
|
||
height: var(--jp-statusbar-height);
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
color: var(--jp-ui-font-color1);
|
||
padding: 0 6px;
|
||
}
|
||
|
||
.jp-mod-highlighted:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-mod-clicked {
|
||
background-color: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-mod-clicked:hover {
|
||
background-color: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-mod-clicked .jp-StatusBar-TextItem {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
}
|
||
|
||
.jp-StatusBar-HoverItem {
|
||
box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
|
||
}
|
||
|
||
.jp-StatusBar-TextItem {
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
line-height: 24px;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.jp-StatusBar-GroupItem {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressCircle svg {
|
||
display: block;
|
||
margin: 0 auto;
|
||
width: 16px;
|
||
height: 24px;
|
||
align-self: normal;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressCircle path {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar {
|
||
height: 10px;
|
||
width: 100px;
|
||
border: solid 0.25px var(--jp-brand-color2);
|
||
border-radius: 3px;
|
||
overflow: hidden;
|
||
align-self: center;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar > div {
|
||
background-color: var(--jp-brand-color2);
|
||
background-image: linear-gradient(
|
||
-45deg,
|
||
rgba(255, 255, 255, 0.2) 25%,
|
||
transparent 25%,
|
||
transparent 50%,
|
||
rgba(255, 255, 255, 0.2) 50%,
|
||
rgba(255, 255, 255, 0.2) 75%,
|
||
transparent 75%,
|
||
transparent
|
||
);
|
||
background-size: 40px 40px;
|
||
float: left;
|
||
width: 0%;
|
||
height: 100%;
|
||
font-size: 12px;
|
||
line-height: 14px;
|
||
color: #fff;
|
||
text-align: center;
|
||
animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar p {
|
||
color: var(--jp-ui-font-color1);
|
||
font-family: var(--jp-ui-font-family);
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 10px;
|
||
width: 100px;
|
||
}
|
||
|
||
@keyframes jp-Statusbar-ExecutionTime-progress-bar {
|
||
0% {
|
||
background-position: 0 0;
|
||
}
|
||
|
||
100% {
|
||
background-position: 40px 40px;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-commandpalette-search-height: 28px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Overall styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette {
|
||
padding-bottom: 0;
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Modal variant
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-ModalCommandPalette {
|
||
position: absolute;
|
||
z-index: 10000;
|
||
top: 38px;
|
||
left: 30%;
|
||
margin: 0;
|
||
padding: 4px;
|
||
width: 40%;
|
||
box-shadow: var(--jp-elevation-z4);
|
||
border-radius: 4px;
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette {
|
||
max-height: 40vh;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
|
||
display: none;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
|
||
display: none;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
|
||
margin-left: 4px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.jp-ModalCommandPalette
|
||
.lm-CommandPalette
|
||
.lm-CommandPalette-item.lm-mod-disabled {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Search
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette-search {
|
||
padding: 4px;
|
||
background-color: var(--jp-layout-color1);
|
||
z-index: 2;
|
||
}
|
||
|
||
.lm-CommandPalette-wrapper {
|
||
overflow: overlay;
|
||
padding: 0 9px;
|
||
background-color: var(--jp-input-active-background);
|
||
height: 30px;
|
||
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
|
||
}
|
||
|
||
.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
|
||
box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
|
||
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
|
||
}
|
||
|
||
.jp-SearchIconGroup {
|
||
color: white;
|
||
background-color: var(--jp-brand-color1);
|
||
position: absolute;
|
||
top: 4px;
|
||
right: 4px;
|
||
padding: 5px 5px 1px;
|
||
}
|
||
|
||
.jp-SearchIconGroup svg {
|
||
height: 20px;
|
||
width: 20px;
|
||
}
|
||
|
||
.jp-SearchIconGroup .jp-icon3[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-input {
|
||
background: transparent;
|
||
width: calc(100% - 18px);
|
||
float: left;
|
||
border: none;
|
||
outline: none;
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
line-height: var(--jp-private-commandpalette-search-height);
|
||
}
|
||
|
||
.lm-CommandPalette-input::-webkit-input-placeholder,
|
||
.lm-CommandPalette-input::-moz-placeholder,
|
||
.lm-CommandPalette-input:-ms-input-placeholder {
|
||
color: var(--jp-ui-font-color2);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Results
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette-header:first-child {
|
||
margin-top: 0;
|
||
}
|
||
|
||
.lm-CommandPalette-header {
|
||
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
cursor: pointer;
|
||
display: flex;
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
letter-spacing: 1px;
|
||
margin-top: 8px;
|
||
padding: 8px 0 8px 12px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.lm-CommandPalette-header.lm-mod-active {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-header > mark {
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item {
|
||
padding: 4px 12px 4px 4px;
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-weight: 400;
|
||
display: flex;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-itemContent {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-CommandPalette-itemLabel > mark {
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled mark {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
|
||
margin: 0 4px 0 0;
|
||
position: relative;
|
||
width: 16px;
|
||
top: 2px;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
|
||
opacity: 0.6;
|
||
}
|
||
|
||
.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemCaption {
|
||
display: none;
|
||
}
|
||
|
||
.lm-CommandPalette-content {
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-content:empty::after {
|
||
content: 'No results';
|
||
margin: auto;
|
||
margin-top: 20px;
|
||
width: 100px;
|
||
display: block;
|
||
font-size: var(--jp-ui-font-size2);
|
||
font-family: var(--jp-ui-font-family);
|
||
font-weight: lighter;
|
||
}
|
||
|
||
.lm-CommandPalette-emptyMessage {
|
||
text-align: center;
|
||
margin-top: 24px;
|
||
line-height: 1.32;
|
||
padding: 0 8px;
|
||
color: var(--jp-content-font-color3);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Dialog {
|
||
position: absolute;
|
||
z-index: 10000;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
top: 0;
|
||
left: 0;
|
||
margin: 0;
|
||
padding: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: var(--jp-dialog-background);
|
||
}
|
||
|
||
.jp-Dialog-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
background: var(--jp-layout-color1);
|
||
padding: 24px 24px 12px;
|
||
min-width: 300px;
|
||
min-height: 150px;
|
||
max-width: 1000px;
|
||
max-height: 500px;
|
||
box-sizing: border-box;
|
||
box-shadow: var(--jp-elevation-z20);
|
||
word-wrap: break-word;
|
||
border-radius: var(--jp-border-radius);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color1);
|
||
resize: both;
|
||
}
|
||
|
||
.jp-Dialog-content.jp-Dialog-content-small {
|
||
max-width: 500px;
|
||
}
|
||
|
||
.jp-Dialog-button {
|
||
overflow: visible;
|
||
}
|
||
|
||
button.jp-Dialog-button:focus {
|
||
outline: 1px solid var(--jp-brand-color1);
|
||
outline-offset: 4px;
|
||
-moz-outline-radius: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button:focus::-moz-focus-inner {
|
||
border: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
|
||
outline-offset: 4px;
|
||
-moz-outline-radius: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
|
||
outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
|
||
outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
|
||
outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
|
||
}
|
||
|
||
button.jp-Dialog-close-button {
|
||
padding: 0;
|
||
height: 100%;
|
||
min-width: unset;
|
||
min-height: unset;
|
||
}
|
||
|
||
.jp-Dialog-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
flex: 0 0 auto;
|
||
padding-bottom: 12px;
|
||
font-size: var(--jp-ui-font-size3);
|
||
font-weight: 400;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.jp-Dialog-body {
|
||
display: flex;
|
||
flex-direction: column;
|
||
flex: 1 1 auto;
|
||
font-size: var(--jp-ui-font-size1);
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
overflow: auto;
|
||
}
|
||
|
||
.jp-Dialog-footer {
|
||
display: flex;
|
||
flex-direction: row;
|
||
justify-content: flex-end;
|
||
align-items: center;
|
||
flex: 0 0 auto;
|
||
margin-left: -12px;
|
||
margin-right: -12px;
|
||
padding: 12px;
|
||
}
|
||
|
||
.jp-Dialog-checkbox {
|
||
padding-right: 5px;
|
||
}
|
||
|
||
.jp-Dialog-checkbox > input:focus-visible {
|
||
outline: 1px solid var(--jp-input-active-border-color);
|
||
outline-offset: 1px;
|
||
}
|
||
|
||
.jp-Dialog-spacer {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-Dialog-title {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.jp-Dialog-body > .jp-select-wrapper {
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Dialog-body > button {
|
||
padding: 0 16px;
|
||
}
|
||
|
||
.jp-Dialog-body > label {
|
||
line-height: 1.4;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-Dialog-button.jp-mod-styled:not(:last-child) {
|
||
margin-right: 12px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-Input-Boolean-Dialog {
|
||
flex-direction: row-reverse;
|
||
align-items: end;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Input-Boolean-Dialog > label {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MainAreaWidget > :focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-MainAreaWidget .jp-MainAreaWidget-error {
|
||
padding: 6px;
|
||
}
|
||
|
||
.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
|
||
width: auto;
|
||
padding: 10px;
|
||
background: var(--jp-error-color3);
|
||
border: var(--jp-border-width) solid var(--jp-error-color1);
|
||
border-radius: var(--jp-border-radius);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/**
|
||
* google-material-color v1.2.6
|
||
* https://github.com/danlevan/google-material-color
|
||
*/
|
||
:root {
|
||
--md-red-50: #ffebee;
|
||
--md-red-100: #ffcdd2;
|
||
--md-red-200: #ef9a9a;
|
||
--md-red-300: #e57373;
|
||
--md-red-400: #ef5350;
|
||
--md-red-500: #f44336;
|
||
--md-red-600: #e53935;
|
||
--md-red-700: #d32f2f;
|
||
--md-red-800: #c62828;
|
||
--md-red-900: #b71c1c;
|
||
--md-red-A100: #ff8a80;
|
||
--md-red-A200: #ff5252;
|
||
--md-red-A400: #ff1744;
|
||
--md-red-A700: #d50000;
|
||
--md-pink-50: #fce4ec;
|
||
--md-pink-100: #f8bbd0;
|
||
--md-pink-200: #f48fb1;
|
||
--md-pink-300: #f06292;
|
||
--md-pink-400: #ec407a;
|
||
--md-pink-500: #e91e63;
|
||
--md-pink-600: #d81b60;
|
||
--md-pink-700: #c2185b;
|
||
--md-pink-800: #ad1457;
|
||
--md-pink-900: #880e4f;
|
||
--md-pink-A100: #ff80ab;
|
||
--md-pink-A200: #ff4081;
|
||
--md-pink-A400: #f50057;
|
||
--md-pink-A700: #c51162;
|
||
--md-purple-50: #f3e5f5;
|
||
--md-purple-100: #e1bee7;
|
||
--md-purple-200: #ce93d8;
|
||
--md-purple-300: #ba68c8;
|
||
--md-purple-400: #ab47bc;
|
||
--md-purple-500: #9c27b0;
|
||
--md-purple-600: #8e24aa;
|
||
--md-purple-700: #7b1fa2;
|
||
--md-purple-800: #6a1b9a;
|
||
--md-purple-900: #4a148c;
|
||
--md-purple-A100: #ea80fc;
|
||
--md-purple-A200: #e040fb;
|
||
--md-purple-A400: #d500f9;
|
||
--md-purple-A700: #a0f;
|
||
--md-deep-purple-50: #ede7f6;
|
||
--md-deep-purple-100: #d1c4e9;
|
||
--md-deep-purple-200: #b39ddb;
|
||
--md-deep-purple-300: #9575cd;
|
||
--md-deep-purple-400: #7e57c2;
|
||
--md-deep-purple-500: #673ab7;
|
||
--md-deep-purple-600: #5e35b1;
|
||
--md-deep-purple-700: #512da8;
|
||
--md-deep-purple-800: #4527a0;
|
||
--md-deep-purple-900: #311b92;
|
||
--md-deep-purple-A100: #b388ff;
|
||
--md-deep-purple-A200: #7c4dff;
|
||
--md-deep-purple-A400: #651fff;
|
||
--md-deep-purple-A700: #6200ea;
|
||
--md-indigo-50: #e8eaf6;
|
||
--md-indigo-100: #c5cae9;
|
||
--md-indigo-200: #9fa8da;
|
||
--md-indigo-300: #7986cb;
|
||
--md-indigo-400: #5c6bc0;
|
||
--md-indigo-500: #3f51b5;
|
||
--md-indigo-600: #3949ab;
|
||
--md-indigo-700: #303f9f;
|
||
--md-indigo-800: #283593;
|
||
--md-indigo-900: #1a237e;
|
||
--md-indigo-A100: #8c9eff;
|
||
--md-indigo-A200: #536dfe;
|
||
--md-indigo-A400: #3d5afe;
|
||
--md-indigo-A700: #304ffe;
|
||
--md-blue-50: #e3f2fd;
|
||
--md-blue-100: #bbdefb;
|
||
--md-blue-200: #90caf9;
|
||
--md-blue-300: #64b5f6;
|
||
--md-blue-400: #42a5f5;
|
||
--md-blue-500: #2196f3;
|
||
--md-blue-600: #1e88e5;
|
||
--md-blue-700: #1976d2;
|
||
--md-blue-800: #1565c0;
|
||
--md-blue-900: #0d47a1;
|
||
--md-blue-A100: #82b1ff;
|
||
--md-blue-A200: #448aff;
|
||
--md-blue-A400: #2979ff;
|
||
--md-blue-A700: #2962ff;
|
||
--md-light-blue-50: #e1f5fe;
|
||
--md-light-blue-100: #b3e5fc;
|
||
--md-light-blue-200: #81d4fa;
|
||
--md-light-blue-300: #4fc3f7;
|
||
--md-light-blue-400: #29b6f6;
|
||
--md-light-blue-500: #03a9f4;
|
||
--md-light-blue-600: #039be5;
|
||
--md-light-blue-700: #0288d1;
|
||
--md-light-blue-800: #0277bd;
|
||
--md-light-blue-900: #01579b;
|
||
--md-light-blue-A100: #80d8ff;
|
||
--md-light-blue-A200: #40c4ff;
|
||
--md-light-blue-A400: #00b0ff;
|
||
--md-light-blue-A700: #0091ea;
|
||
--md-cyan-50: #e0f7fa;
|
||
--md-cyan-100: #b2ebf2;
|
||
--md-cyan-200: #80deea;
|
||
--md-cyan-300: #4dd0e1;
|
||
--md-cyan-400: #26c6da;
|
||
--md-cyan-500: #00bcd4;
|
||
--md-cyan-600: #00acc1;
|
||
--md-cyan-700: #0097a7;
|
||
--md-cyan-800: #00838f;
|
||
--md-cyan-900: #006064;
|
||
--md-cyan-A100: #84ffff;
|
||
--md-cyan-A200: #18ffff;
|
||
--md-cyan-A400: #00e5ff;
|
||
--md-cyan-A700: #00b8d4;
|
||
--md-teal-50: #e0f2f1;
|
||
--md-teal-100: #b2dfdb;
|
||
--md-teal-200: #80cbc4;
|
||
--md-teal-300: #4db6ac;
|
||
--md-teal-400: #26a69a;
|
||
--md-teal-500: #009688;
|
||
--md-teal-600: #00897b;
|
||
--md-teal-700: #00796b;
|
||
--md-teal-800: #00695c;
|
||
--md-teal-900: #004d40;
|
||
--md-teal-A100: #a7ffeb;
|
||
--md-teal-A200: #64ffda;
|
||
--md-teal-A400: #1de9b6;
|
||
--md-teal-A700: #00bfa5;
|
||
--md-green-50: #e8f5e9;
|
||
--md-green-100: #c8e6c9;
|
||
--md-green-200: #a5d6a7;
|
||
--md-green-300: #81c784;
|
||
--md-green-400: #66bb6a;
|
||
--md-green-500: #4caf50;
|
||
--md-green-600: #43a047;
|
||
--md-green-700: #388e3c;
|
||
--md-green-800: #2e7d32;
|
||
--md-green-900: #1b5e20;
|
||
--md-green-A100: #b9f6ca;
|
||
--md-green-A200: #69f0ae;
|
||
--md-green-A400: #00e676;
|
||
--md-green-A700: #00c853;
|
||
--md-light-green-50: #f1f8e9;
|
||
--md-light-green-100: #dcedc8;
|
||
--md-light-green-200: #c5e1a5;
|
||
--md-light-green-300: #aed581;
|
||
--md-light-green-400: #9ccc65;
|
||
--md-light-green-500: #8bc34a;
|
||
--md-light-green-600: #7cb342;
|
||
--md-light-green-700: #689f38;
|
||
--md-light-green-800: #558b2f;
|
||
--md-light-green-900: #33691e;
|
||
--md-light-green-A100: #ccff90;
|
||
--md-light-green-A200: #b2ff59;
|
||
--md-light-green-A400: #76ff03;
|
||
--md-light-green-A700: #64dd17;
|
||
--md-lime-50: #f9fbe7;
|
||
--md-lime-100: #f0f4c3;
|
||
--md-lime-200: #e6ee9c;
|
||
--md-lime-300: #dce775;
|
||
--md-lime-400: #d4e157;
|
||
--md-lime-500: #cddc39;
|
||
--md-lime-600: #c0ca33;
|
||
--md-lime-700: #afb42b;
|
||
--md-lime-800: #9e9d24;
|
||
--md-lime-900: #827717;
|
||
--md-lime-A100: #f4ff81;
|
||
--md-lime-A200: #eeff41;
|
||
--md-lime-A400: #c6ff00;
|
||
--md-lime-A700: #aeea00;
|
||
--md-yellow-50: #fffde7;
|
||
--md-yellow-100: #fff9c4;
|
||
--md-yellow-200: #fff59d;
|
||
--md-yellow-300: #fff176;
|
||
--md-yellow-400: #ffee58;
|
||
--md-yellow-500: #ffeb3b;
|
||
--md-yellow-600: #fdd835;
|
||
--md-yellow-700: #fbc02d;
|
||
--md-yellow-800: #f9a825;
|
||
--md-yellow-900: #f57f17;
|
||
--md-yellow-A100: #ffff8d;
|
||
--md-yellow-A200: #ff0;
|
||
--md-yellow-A400: #ffea00;
|
||
--md-yellow-A700: #ffd600;
|
||
--md-amber-50: #fff8e1;
|
||
--md-amber-100: #ffecb3;
|
||
--md-amber-200: #ffe082;
|
||
--md-amber-300: #ffd54f;
|
||
--md-amber-400: #ffca28;
|
||
--md-amber-500: #ffc107;
|
||
--md-amber-600: #ffb300;
|
||
--md-amber-700: #ffa000;
|
||
--md-amber-800: #ff8f00;
|
||
--md-amber-900: #ff6f00;
|
||
--md-amber-A100: #ffe57f;
|
||
--md-amber-A200: #ffd740;
|
||
--md-amber-A400: #ffc400;
|
||
--md-amber-A700: #ffab00;
|
||
--md-orange-50: #fff3e0;
|
||
--md-orange-100: #ffe0b2;
|
||
--md-orange-200: #ffcc80;
|
||
--md-orange-300: #ffb74d;
|
||
--md-orange-400: #ffa726;
|
||
--md-orange-500: #ff9800;
|
||
--md-orange-600: #fb8c00;
|
||
--md-orange-700: #f57c00;
|
||
--md-orange-800: #ef6c00;
|
||
--md-orange-900: #e65100;
|
||
--md-orange-A100: #ffd180;
|
||
--md-orange-A200: #ffab40;
|
||
--md-orange-A400: #ff9100;
|
||
--md-orange-A700: #ff6d00;
|
||
--md-deep-orange-50: #fbe9e7;
|
||
--md-deep-orange-100: #ffccbc;
|
||
--md-deep-orange-200: #ffab91;
|
||
--md-deep-orange-300: #ff8a65;
|
||
--md-deep-orange-400: #ff7043;
|
||
--md-deep-orange-500: #ff5722;
|
||
--md-deep-orange-600: #f4511e;
|
||
--md-deep-orange-700: #e64a19;
|
||
--md-deep-orange-800: #d84315;
|
||
--md-deep-orange-900: #bf360c;
|
||
--md-deep-orange-A100: #ff9e80;
|
||
--md-deep-orange-A200: #ff6e40;
|
||
--md-deep-orange-A400: #ff3d00;
|
||
--md-deep-orange-A700: #dd2c00;
|
||
--md-brown-50: #efebe9;
|
||
--md-brown-100: #d7ccc8;
|
||
--md-brown-200: #bcaaa4;
|
||
--md-brown-300: #a1887f;
|
||
--md-brown-400: #8d6e63;
|
||
--md-brown-500: #795548;
|
||
--md-brown-600: #6d4c41;
|
||
--md-brown-700: #5d4037;
|
||
--md-brown-800: #4e342e;
|
||
--md-brown-900: #3e2723;
|
||
--md-grey-50: #fafafa;
|
||
--md-grey-100: #f5f5f5;
|
||
--md-grey-200: #eee;
|
||
--md-grey-300: #e0e0e0;
|
||
--md-grey-400: #bdbdbd;
|
||
--md-grey-500: #9e9e9e;
|
||
--md-grey-600: #757575;
|
||
--md-grey-700: #616161;
|
||
--md-grey-800: #424242;
|
||
--md-grey-900: #212121;
|
||
--md-blue-grey-50: #eceff1;
|
||
--md-blue-grey-100: #cfd8dc;
|
||
--md-blue-grey-200: #b0bec5;
|
||
--md-blue-grey-300: #90a4ae;
|
||
--md-blue-grey-400: #78909c;
|
||
--md-blue-grey-500: #607d8b;
|
||
--md-blue-grey-600: #546e7a;
|
||
--md-blue-grey-700: #455a64;
|
||
--md-blue-grey-800: #37474f;
|
||
--md-blue-grey-900: #263238;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedText
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
/* This is the padding value to fill the gaps between lines containing spans with background color. */
|
||
--jp-private-code-span-padding: calc(
|
||
(var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
|
||
);
|
||
}
|
||
|
||
.jp-RenderedText {
|
||
text-align: left;
|
||
padding-left: var(--jp-code-padding);
|
||
line-height: var(--jp-code-line-height);
|
||
font-family: var(--jp-code-font-family);
|
||
}
|
||
|
||
.jp-RenderedText pre,
|
||
.jp-RenderedJavaScript pre,
|
||
.jp-RenderedHTMLCommon pre {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-code-font-size);
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
.jp-RenderedText pre a:link {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedText pre a:hover {
|
||
text-decoration: underline;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedText pre a:visited {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
/* console foregrounds and backgrounds */
|
||
.jp-RenderedText pre .ansi-black-fg {
|
||
color: #3e424d;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-fg {
|
||
color: #e75c58;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-fg {
|
||
color: #00a250;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-fg {
|
||
color: #ddb62b;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-fg {
|
||
color: #208ffb;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-fg {
|
||
color: #d160c4;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-fg {
|
||
color: #60c6c8;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-fg {
|
||
color: #c5c1b4;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-bg {
|
||
background-color: #3e424d;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-bg {
|
||
background-color: #e75c58;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-bg {
|
||
background-color: #00a250;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-bg {
|
||
background-color: #ddb62b;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-bg {
|
||
background-color: #208ffb;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-bg {
|
||
background-color: #d160c4;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-bg {
|
||
background-color: #60c6c8;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-bg {
|
||
background-color: #c5c1b4;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-intense-fg {
|
||
color: #282c36;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-intense-fg {
|
||
color: #b22b31;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-intense-fg {
|
||
color: #007427;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-intense-fg {
|
||
color: #b27d12;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-intense-fg {
|
||
color: #0065ca;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-intense-fg {
|
||
color: #a03196;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-intense-fg {
|
||
color: #258f8f;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-intense-fg {
|
||
color: #a1a6b2;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-intense-bg {
|
||
background-color: #282c36;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-intense-bg {
|
||
background-color: #b22b31;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-intense-bg {
|
||
background-color: #007427;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-intense-bg {
|
||
background-color: #b27d12;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-intense-bg {
|
||
background-color: #0065ca;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-intense-bg {
|
||
background-color: #a03196;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-intense-bg {
|
||
background-color: #258f8f;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-intense-bg {
|
||
background-color: #a1a6b2;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-default-inverse-fg {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-default-inverse-bg {
|
||
background-color: var(--jp-inverse-layout-color0);
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-bold {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-underline {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
|
||
background: var(--jp-rendermime-error-background);
|
||
padding-top: var(--jp-code-padding);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedLatex
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-RenderedLatex {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-content-font-size1);
|
||
line-height: var(--jp-content-line-height);
|
||
}
|
||
|
||
/* Left-justify outputs.*/
|
||
.jp-OutputArea-output.jp-RenderedLatex {
|
||
padding: var(--jp-code-padding);
|
||
text-align: left;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedHTML
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-RenderedHTMLCommon {
|
||
color: var(--jp-content-font-color1);
|
||
font-family: var(--jp-content-font-family);
|
||
font-size: var(--jp-content-font-size1);
|
||
line-height: var(--jp-content-line-height);
|
||
|
||
/* Give a bit more R padding on Markdown text to keep line lengths reasonable */
|
||
padding-right: 20px;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon em {
|
||
font-style: italic;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon strong {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon u {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:link {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:hover {
|
||
text-decoration: underline;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:visited {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
/* Headings */
|
||
|
||
.jp-RenderedHTMLCommon h1,
|
||
.jp-RenderedHTMLCommon h2,
|
||
.jp-RenderedHTMLCommon h3,
|
||
.jp-RenderedHTMLCommon h4,
|
||
.jp-RenderedHTMLCommon h5,
|
||
.jp-RenderedHTMLCommon h6 {
|
||
line-height: var(--jp-content-heading-line-height);
|
||
font-weight: var(--jp-content-heading-font-weight);
|
||
font-style: normal;
|
||
margin: var(--jp-content-heading-margin-top) 0
|
||
var(--jp-content-heading-margin-bottom) 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1:first-child,
|
||
.jp-RenderedHTMLCommon h2:first-child,
|
||
.jp-RenderedHTMLCommon h3:first-child,
|
||
.jp-RenderedHTMLCommon h4:first-child,
|
||
.jp-RenderedHTMLCommon h5:first-child,
|
||
.jp-RenderedHTMLCommon h6:first-child {
|
||
margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1:last-child,
|
||
.jp-RenderedHTMLCommon h2:last-child,
|
||
.jp-RenderedHTMLCommon h3:last-child,
|
||
.jp-RenderedHTMLCommon h4:last-child,
|
||
.jp-RenderedHTMLCommon h5:last-child,
|
||
.jp-RenderedHTMLCommon h6:last-child {
|
||
margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1 {
|
||
font-size: var(--jp-content-font-size5);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h2 {
|
||
font-size: var(--jp-content-font-size4);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h3 {
|
||
font-size: var(--jp-content-font-size3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h4 {
|
||
font-size: var(--jp-content-font-size2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h5 {
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h6 {
|
||
font-size: var(--jp-content-font-size0);
|
||
}
|
||
|
||
/* Lists */
|
||
|
||
/* stylelint-disable selector-max-type, selector-max-compound-selectors */
|
||
|
||
.jp-RenderedHTMLCommon ul:not(.list-inline),
|
||
.jp-RenderedHTMLCommon ol:not(.list-inline) {
|
||
padding-left: 2em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul {
|
||
list-style: disc;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul {
|
||
list-style: square;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul ul {
|
||
list-style: circle;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol {
|
||
list-style: decimal;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol {
|
||
list-style: upper-alpha;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol {
|
||
list-style: lower-alpha;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol ol {
|
||
list-style: lower-roman;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol ol ol {
|
||
list-style: decimal;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol,
|
||
.jp-RenderedHTMLCommon ul {
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul,
|
||
.jp-RenderedHTMLCommon ul ol,
|
||
.jp-RenderedHTMLCommon ol ul,
|
||
.jp-RenderedHTMLCommon ol ol {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
/* stylelint-enable selector-max-type, selector-max-compound-selectors */
|
||
|
||
.jp-RenderedHTMLCommon hr {
|
||
color: var(--jp-border-color2);
|
||
background-color: var(--jp-border-color1);
|
||
margin-top: 1em;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon > pre {
|
||
margin: 1.5em 2em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon pre,
|
||
.jp-RenderedHTMLCommon code {
|
||
border: 0;
|
||
background-color: var(--jp-layout-color0);
|
||
color: var(--jp-content-font-color1);
|
||
font-family: var(--jp-code-font-family);
|
||
font-size: inherit;
|
||
line-height: var(--jp-code-line-height);
|
||
padding: 0;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon :not(pre) > code {
|
||
background-color: var(--jp-layout-color2);
|
||
padding: 1px 5px;
|
||
}
|
||
|
||
/* Tables */
|
||
|
||
.jp-RenderedHTMLCommon table {
|
||
border-collapse: collapse;
|
||
border-spacing: 0;
|
||
border: none;
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
table-layout: fixed;
|
||
margin-left: auto;
|
||
margin-bottom: 1em;
|
||
margin-right: auto;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon thead {
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
|
||
vertical-align: bottom;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon td,
|
||
.jp-RenderedHTMLCommon th,
|
||
.jp-RenderedHTMLCommon tr {
|
||
vertical-align: middle;
|
||
padding: 0.5em;
|
||
line-height: normal;
|
||
white-space: normal;
|
||
max-width: none;
|
||
border: none;
|
||
}
|
||
|
||
.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
|
||
.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
|
||
max-width: none;
|
||
}
|
||
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon th {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
|
||
background: var(--jp-rendermime-table-row-background);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:hover {
|
||
background: var(--jp-rendermime-table-row-hover-background);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon p {
|
||
text-align: left;
|
||
margin: 0;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img {
|
||
-moz-force-broken-image-icon: 1;
|
||
}
|
||
|
||
/* Restrict to direct children as other images could be nested in other content. */
|
||
.jp-RenderedHTMLCommon > img {
|
||
display: block;
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
/* Change color behind transparent images if they need it... */
|
||
[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
|
||
background-color: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
|
||
background-color: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img,
|
||
.jp-RenderedImage img,
|
||
.jp-RenderedHTMLCommon svg,
|
||
.jp-RenderedSVG svg {
|
||
max-width: 100%;
|
||
height: auto;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img.jp-mod-unconfined,
|
||
.jp-RenderedImage img.jp-mod-unconfined,
|
||
.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
|
||
.jp-RenderedSVG svg.jp-mod-unconfined {
|
||
max-width: none;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert {
|
||
padding: var(--jp-notebook-padding);
|
||
border: var(--jp-border-width) solid transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info {
|
||
color: var(--jp-info-color0);
|
||
background-color: var(--jp-info-color3);
|
||
border-color: var(--jp-info-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info hr {
|
||
border-color: var(--jp-info-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-info > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning {
|
||
color: var(--jp-warn-color0);
|
||
background-color: var(--jp-warn-color3);
|
||
border-color: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning hr {
|
||
border-color: var(--jp-warn-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-warning > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success {
|
||
color: var(--jp-success-color0);
|
||
background-color: var(--jp-success-color3);
|
||
border-color: var(--jp-success-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success hr {
|
||
border-color: var(--jp-success-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-success > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger {
|
||
color: var(--jp-error-color0);
|
||
background-color: var(--jp-error-color3);
|
||
border-color: var(--jp-error-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger hr {
|
||
border-color: var(--jp-error-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-danger > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon blockquote {
|
||
margin: 1em 2em;
|
||
padding: 0 1em;
|
||
border-left: 5px solid var(--jp-border-color2);
|
||
}
|
||
|
||
a.jp-InternalAnchorLink {
|
||
visibility: hidden;
|
||
margin-left: 8px;
|
||
color: var(--md-blue-800);
|
||
}
|
||
|
||
h1:hover .jp-InternalAnchorLink,
|
||
h2:hover .jp-InternalAnchorLink,
|
||
h3:hover .jp-InternalAnchorLink,
|
||
h4:hover .jp-InternalAnchorLink,
|
||
h5:hover .jp-InternalAnchorLink,
|
||
h6:hover .jp-InternalAnchorLink {
|
||
visibility: visible;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon kbd {
|
||
background-color: var(--jp-rendermime-table-row-background);
|
||
border: 1px solid var(--jp-border-color0);
|
||
border-bottom-color: var(--jp-border-color2);
|
||
border-radius: 3px;
|
||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||
display: inline-block;
|
||
font-size: var(--jp-ui-font-size0);
|
||
line-height: 1em;
|
||
padding: 0.2em 0.5em;
|
||
}
|
||
|
||
/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
|
||
* At the bottom of cells this is a bit too much as there is also spacing
|
||
* between cells. Going all the way to 0 gets too tight between markdown and
|
||
* code cells.
|
||
*/
|
||
.jp-RenderedHTMLCommon > *:last-child {
|
||
margin-bottom: 0.5em;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-cursor-backdrop {
|
||
position: fixed;
|
||
width: 200px;
|
||
height: 200px;
|
||
margin-top: -100px;
|
||
margin-left: -100px;
|
||
will-change: transform;
|
||
z-index: 100;
|
||
}
|
||
|
||
.lm-mod-drag-image {
|
||
will-change: transform;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-lineFormSearch {
|
||
padding: 4px 12px;
|
||
background-color: var(--jp-layout-color2);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
z-index: 2;
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
.jp-lineFormCaption {
|
||
font-size: var(--jp-ui-font-size0);
|
||
line-height: var(--jp-ui-font-size1);
|
||
margin-top: 4px;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-baseLineForm {
|
||
border: none;
|
||
border-radius: 0;
|
||
position: absolute;
|
||
background-size: 16px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
outline: none;
|
||
}
|
||
|
||
.jp-lineFormButtonContainer {
|
||
top: 4px;
|
||
right: 8px;
|
||
height: 24px;
|
||
padding: 0 12px;
|
||
width: 12px;
|
||
}
|
||
|
||
.jp-lineFormButtonIcon {
|
||
top: 0;
|
||
right: 0;
|
||
background-color: var(--jp-brand-color1);
|
||
height: 100%;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
padding: 4px 6px;
|
||
}
|
||
|
||
.jp-lineFormButton {
|
||
top: 0;
|
||
right: 0;
|
||
background-color: transparent;
|
||
height: 100%;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-lineFormWrapper {
|
||
overflow: hidden;
|
||
padding: 0 8px;
|
||
border: 1px solid var(--jp-border-color0);
|
||
background-color: var(--jp-input-active-background);
|
||
height: 22px;
|
||
}
|
||
|
||
.jp-lineFormWrapperFocusWithin {
|
||
border: var(--jp-border-width) solid var(--md-blue-500);
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-lineFormInput {
|
||
background: transparent;
|
||
width: 200px;
|
||
height: 100%;
|
||
border: none;
|
||
outline: none;
|
||
color: var(--jp-ui-font-color0);
|
||
line-height: 28px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-JSONEditor {
|
||
display: flex;
|
||
flex-direction: column;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-JSONEditor-host {
|
||
flex: 1 1 auto;
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
border-radius: 0;
|
||
background: var(--jp-layout-color0);
|
||
min-height: 50px;
|
||
padding: 1px;
|
||
}
|
||
|
||
.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
|
||
border-color: red;
|
||
outline-color: red;
|
||
}
|
||
|
||
.jp-JSONEditor-header {
|
||
display: flex;
|
||
flex: 1 0 auto;
|
||
padding: 0 0 0 12px;
|
||
}
|
||
|
||
.jp-JSONEditor-header label {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-JSONEditor-commitButton {
|
||
height: 16px;
|
||
width: 16px;
|
||
background-size: 18px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
}
|
||
|
||
.jp-JSONEditor-host.jp-mod-focused {
|
||
background-color: var(--jp-input-active-background);
|
||
border: 1px solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
}
|
||
|
||
.jp-Editor.jp-mod-dropTarget {
|
||
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
.jp-DocumentSearch-input {
|
||
border: none;
|
||
outline: none;
|
||
color: var(--jp-ui-font-color0);
|
||
font-size: var(--jp-ui-font-size1);
|
||
background-color: var(--jp-layout-color0);
|
||
font-family: var(--jp-ui-font-family);
|
||
padding: 2px 1px;
|
||
resize: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay {
|
||
position: absolute;
|
||
background-color: var(--jp-toolbar-background);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
border-left: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
top: 0;
|
||
right: 0;
|
||
z-index: 7;
|
||
min-width: 405px;
|
||
padding: 2px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
|
||
--jp-private-document-search-button-height: 20px;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button {
|
||
background-color: var(--jp-toolbar-background);
|
||
outline: 0;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button:active {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay-row {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-content {
|
||
display: inline-block;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-content svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-wrapper {
|
||
border: var(--jp-border-width) solid var(--jp-border-color0);
|
||
display: flex;
|
||
background-color: var(--jp-layout-color0);
|
||
margin: 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-wrapper:focus-within {
|
||
border-color: var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper,
|
||
.jp-DocumentSearch-button-wrapper {
|
||
all: initial;
|
||
overflow: hidden;
|
||
display: inline-block;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper {
|
||
width: 14px;
|
||
height: 14px;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-wrapper {
|
||
width: var(--jp-private-document-search-button-height);
|
||
height: var(--jp-private-document-search-button-height);
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper:focus,
|
||
.jp-DocumentSearch-button-wrapper:focus {
|
||
outline: var(--jp-border-width) solid
|
||
var(--jp-cell-editor-active-border-color);
|
||
outline-offset: -1px;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper,
|
||
.jp-DocumentSearch-button-wrapper,
|
||
.jp-DocumentSearch-button-content:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-placeholder {
|
||
width: 5px;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button::before {
|
||
display: block;
|
||
padding-top: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-off {
|
||
opacity: var(--jp-search-toggle-off-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-off:hover {
|
||
opacity: var(--jp-search-toggle-hover-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-on {
|
||
opacity: var(--jp-search-toggle-on-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-index-counter {
|
||
padding-left: 10px;
|
||
padding-right: 10px;
|
||
user-select: none;
|
||
min-width: 35px;
|
||
display: inline-block;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-wrapper {
|
||
display: inline-block;
|
||
padding-right: 2px;
|
||
margin-left: auto;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.jp-DocumentSearch-spacer {
|
||
margin-left: auto;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-wrapper button {
|
||
outline: 0;
|
||
border: none;
|
||
width: var(--jp-private-document-search-button-height);
|
||
height: var(--jp-private-document-search-button-height);
|
||
vertical-align: middle;
|
||
margin: 1px 5px 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-button:active {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button {
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button-enabled {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button-enabled:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-search-options {
|
||
padding: 0 8px;
|
||
margin-left: 3px;
|
||
width: 100%;
|
||
display: grid;
|
||
justify-content: start;
|
||
grid-template-columns: 1fr 1fr;
|
||
align-items: center;
|
||
justify-items: stretch;
|
||
}
|
||
|
||
.jp-DocumentSearch-search-filter-disabled {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-search-filter {
|
||
display: flex;
|
||
align-items: center;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-regex-error {
|
||
color: var(--jp-error-color0);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button-wrapper {
|
||
overflow: hidden;
|
||
display: inline-block;
|
||
box-sizing: border-box;
|
||
border: var(--jp-border-width) solid var(--jp-border-color0);
|
||
margin: auto 2px;
|
||
padding: 1px 4px;
|
||
height: calc(var(--jp-private-document-search-button-height) + 2px);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button-wrapper:focus {
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button {
|
||
display: inline-block;
|
||
text-align: center;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
color: var(--jp-ui-font-color1);
|
||
|
||
/* height - 2 * (padding of wrapper) */
|
||
line-height: calc(var(--jp-private-document-search-button-height) - 2px);
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-wrapper-class {
|
||
margin-left: 14px;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-toggle {
|
||
border: none;
|
||
background-color: var(--jp-toolbar-background);
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-toggle:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.cm-editor {
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
font-family: var(--jp-code-font-family);
|
||
border: 0;
|
||
border-radius: 0;
|
||
height: auto;
|
||
|
||
/* Changed to auto to autogrow */
|
||
}
|
||
|
||
.cm-editor pre {
|
||
padding: 0 var(--jp-code-padding);
|
||
}
|
||
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-dialog {
|
||
background-color: var(--jp-layout-color0);
|
||
color: var(--jp-content-font-color1);
|
||
}
|
||
|
||
.jp-CodeMirrorEditor {
|
||
cursor: text;
|
||
}
|
||
|
||
/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
|
||
@media screen and (min-width: 2138px) and (max-width: 4319px) {
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
|
||
border-left: var(--jp-code-cursor-width1) solid
|
||
var(--jp-editor-cursor-color);
|
||
}
|
||
}
|
||
|
||
/* When zoomed out less than 33% */
|
||
@media screen and (min-width: 4320px) {
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
|
||
border-left: var(--jp-code-cursor-width2) solid
|
||
var(--jp-editor-cursor-color);
|
||
}
|
||
}
|
||
|
||
.cm-editor.jp-mod-readOnly .cm-cursor {
|
||
display: none;
|
||
}
|
||
|
||
.jp-CollaboratorCursor {
|
||
border-left: 5px solid transparent;
|
||
border-right: 5px solid transparent;
|
||
border-top: none;
|
||
border-bottom: 3px solid;
|
||
background-clip: content-box;
|
||
margin-left: -5px;
|
||
margin-right: -5px;
|
||
}
|
||
|
||
.cm-searching,
|
||
.cm-searching span {
|
||
/* `.cm-searching span`: we need to override syntax highlighting */
|
||
background-color: var(--jp-search-unselected-match-background-color);
|
||
color: var(--jp-search-unselected-match-color);
|
||
}
|
||
|
||
.cm-searching::selection,
|
||
.cm-searching span::selection {
|
||
background-color: var(--jp-search-unselected-match-background-color);
|
||
color: var(--jp-search-unselected-match-color);
|
||
}
|
||
|
||
.jp-current-match > .cm-searching,
|
||
.jp-current-match > .cm-searching span,
|
||
.cm-searching > .jp-current-match,
|
||
.cm-searching > .jp-current-match span {
|
||
background-color: var(--jp-search-selected-match-background-color);
|
||
color: var(--jp-search-selected-match-color);
|
||
}
|
||
|
||
.jp-current-match > .cm-searching::selection,
|
||
.cm-searching > .jp-current-match::selection,
|
||
.jp-current-match > .cm-searching span::selection {
|
||
background-color: var(--jp-search-selected-match-background-color);
|
||
color: var(--jp-search-selected-match-color);
|
||
}
|
||
|
||
.cm-trailingspace {
|
||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAsElEQVQIHQGlAFr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+r3zKmT0/+pk9P/7+r3zAAAAAAAAAAABAAAAAAAAAAA6OPzM+/q9wAAAAAA6OPzMwAAAAAAAAAAAgAAAAAAAAAAGR8NiRQaCgAZIA0AGR8NiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyoYJ/SY80UAAAAASUVORK5CYII=);
|
||
background-position: center left;
|
||
background-repeat: repeat-x;
|
||
}
|
||
|
||
.jp-CollaboratorCursor-hover {
|
||
position: absolute;
|
||
z-index: 1;
|
||
transform: translateX(-50%);
|
||
color: white;
|
||
border-radius: 3px;
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
padding-top: 1px;
|
||
padding-bottom: 1px;
|
||
text-align: center;
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.jp-CodeMirror-ruler {
|
||
border-left: 1px dashed var(--jp-border-color2);
|
||
}
|
||
|
||
/* Styles for shared cursors (remote cursor locations and selected ranges) */
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret {
|
||
position: relative;
|
||
border-left: 1px solid black;
|
||
margin-left: -1px;
|
||
margin-right: -1px;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret > .cm-ySelectionInfo {
|
||
white-space: nowrap;
|
||
position: absolute;
|
||
top: -1.15em;
|
||
padding-bottom: 0.05em;
|
||
left: -1px;
|
||
font-size: 0.95em;
|
||
font-family: var(--jp-ui-font-family);
|
||
font-weight: bold;
|
||
line-height: normal;
|
||
user-select: none;
|
||
color: white;
|
||
padding-left: 2px;
|
||
padding-right: 2px;
|
||
z-index: 101;
|
||
transition: opacity 0.3s ease-in-out;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionInfo {
|
||
transition-delay: 0.7s;
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret:hover > .cm-ySelectionInfo {
|
||
opacity: 1;
|
||
transition-delay: 0s;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MimeDocument {
|
||
outline: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-filebrowser-button-height: 28px;
|
||
--jp-private-filebrowser-button-width: 48px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileBrowser .jp-SidePanel-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.jp-FileBrowser-toolbar.jp-Toolbar {
|
||
flex-wrap: wrap;
|
||
row-gap: 12px;
|
||
border-bottom: none;
|
||
height: auto;
|
||
margin: 8px 12px 0;
|
||
box-shadow: none;
|
||
padding: 0;
|
||
justify-content: flex-start;
|
||
}
|
||
|
||
.jp-FileBrowser-Panel {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.jp-BreadCrumbs {
|
||
flex: 0 0 auto;
|
||
margin: 8px 12px;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item {
|
||
margin: 0 2px;
|
||
padding: 0 2px;
|
||
border-radius: var(--jp-border-radius);
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-BreadCrumbs-item:first-child {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item.jp-mod-dropTarget {
|
||
background-color: var(--jp-brand-color2);
|
||
opacity: 0.7;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Buttons
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileBrowser-toolbar > .jp-Toolbar-item {
|
||
flex: 0 0 auto;
|
||
padding-left: 0;
|
||
padding-right: 2px;
|
||
align-items: center;
|
||
height: unset;
|
||
}
|
||
|
||
.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
|
||
width: 40px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Other styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileDialog.jp-mod-conflict input {
|
||
color: var(--jp-error-color1);
|
||
}
|
||
|
||
.jp-FileDialog .jp-new-name-title {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.jp-LastModified-hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FileSize-hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FileBrowser .lm-AccordionPanel > h3:first-child {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| DirListing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-DirListing {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
outline: 0;
|
||
}
|
||
|
||
.jp-DirListing-header {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
overflow: hidden;
|
||
border-top: var(--jp-border-width) solid var(--jp-border-color2);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
z-index: 2;
|
||
}
|
||
|
||
.jp-DirListing-headerItem {
|
||
padding: 4px 12px 2px;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.jp-DirListing-headerItem:hover {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-name {
|
||
flex: 1 0 84px;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-modified {
|
||
flex: 0 0 112px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-filesize {
|
||
flex: 0 0 75px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-id-narrow {
|
||
display: none;
|
||
flex: 0 0 5px;
|
||
padding: 4px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
color: var(--jp-border-color2);
|
||
}
|
||
|
||
.jp-DirListing-narrow .jp-id-narrow {
|
||
display: block;
|
||
}
|
||
|
||
.jp-DirListing-narrow .jp-id-modified,
|
||
.jp-DirListing-narrow .jp-DirListing-itemModified {
|
||
display: none;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-mod-selected {
|
||
font-weight: 600;
|
||
}
|
||
|
||
/* increase specificity to override bundled default */
|
||
.jp-DirListing-content {
|
||
flex: 1 1 auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
list-style-type: none;
|
||
overflow: auto;
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-content mark {
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
/* Style the directory listing content when a user drops a file to upload */
|
||
.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
|
||
outline: 5px dashed rgba(128, 128, 128, 0.5);
|
||
outline-offset: -10px;
|
||
cursor: copy;
|
||
}
|
||
|
||
.jp-DirListing-item {
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
padding: 4px 12px;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DirListing-checkboxWrapper {
|
||
/* Increases hit area of checkbox. */
|
||
padding: 4px;
|
||
}
|
||
|
||
.jp-DirListing-header
|
||
.jp-DirListing-checkboxWrapper
|
||
+ .jp-DirListing-headerItem {
|
||
padding-left: 4px;
|
||
}
|
||
|
||
.jp-DirListing-content .jp-DirListing-checkboxWrapper {
|
||
position: relative;
|
||
left: -4px;
|
||
margin: -4px 0 -4px -8px;
|
||
}
|
||
|
||
.jp-DirListing-checkboxWrapper.jp-mod-visible {
|
||
visibility: visible;
|
||
}
|
||
|
||
/* For devices that support hovering, hide checkboxes until hovered, selected...
|
||
*/
|
||
@media (hover: hover) {
|
||
.jp-DirListing-checkboxWrapper {
|
||
visibility: hidden;
|
||
}
|
||
|
||
.jp-DirListing-item:hover .jp-DirListing-checkboxWrapper,
|
||
.jp-DirListing-item.jp-mod-selected .jp-DirListing-checkboxWrapper {
|
||
visibility: visible;
|
||
}
|
||
}
|
||
|
||
.jp-DirListing-item[data-is-dot] {
|
||
opacity: 75%;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-dropTarget {
|
||
background: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-DirListing-item:hover:not(.jp-mod-selected) {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DirListing-itemIcon {
|
||
flex: 0 0 20px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.jp-DirListing-itemText {
|
||
flex: 1 0 64px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DirListing-itemText:focus {
|
||
outline-width: 2px;
|
||
outline-color: var(--jp-inverse-layout-color1);
|
||
outline-style: solid;
|
||
outline-offset: 1px;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus {
|
||
outline-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-itemModified {
|
||
flex: 0 0 125px;
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-itemFileSize {
|
||
flex: 0 0 90px;
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-editor {
|
||
flex: 1 0 64px;
|
||
outline: none;
|
||
border: none;
|
||
color: var(--jp-ui-font-color1);
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon::before {
|
||
color: var(--jp-success-color1);
|
||
content: '\25CF';
|
||
font-size: 8px;
|
||
position: absolute;
|
||
left: -8px;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-running.jp-mod-selected
|
||
.jp-DirListing-itemIcon::before {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.lm-mod-drag-image,
|
||
.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
|
||
font-size: var(--jp-ui-font-size1);
|
||
padding-left: 4px;
|
||
margin-left: 4px;
|
||
width: 160px;
|
||
background-color: var(--jp-ui-inverse-font-color2);
|
||
box-shadow: var(--jp-elevation-z2);
|
||
border-radius: 0;
|
||
color: var(--jp-ui-font-color1);
|
||
transform: translateX(-40%) translateY(-58%);
|
||
}
|
||
|
||
.jp-Document {
|
||
min-width: 120px;
|
||
min-height: 120px;
|
||
outline: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Main OutputArea
|
||
| OutputArea has a list of Outputs
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-OutputArea {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-OutputArea-child {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-OutputPrompt {
|
||
width: var(--jp-cell-prompt-width);
|
||
color: var(--jp-cell-outprompt-font-color);
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
padding: var(--jp-code-padding);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
opacity: var(--jp-cell-prompt-opacity);
|
||
|
||
/* Right align prompt text, don't wrap to handle large prompt numbers */
|
||
text-align: right;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
|
||
/* Disable text selection */
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-OutputArea-prompt {
|
||
display: table-cell;
|
||
vertical-align: top;
|
||
}
|
||
|
||
.jp-OutputArea-output {
|
||
display: table-cell;
|
||
width: 100%;
|
||
height: auto;
|
||
overflow: auto;
|
||
user-select: text;
|
||
-moz-user-select: text;
|
||
-webkit-user-select: text;
|
||
-ms-user-select: text;
|
||
}
|
||
|
||
.jp-OutputArea .jp-RenderedText {
|
||
padding-left: 1ch;
|
||
}
|
||
|
||
/**
|
||
* Prompt overlay.
|
||
*/
|
||
|
||
.jp-OutputArea-promptOverlay {
|
||
position: absolute;
|
||
top: 0;
|
||
width: var(--jp-cell-prompt-width);
|
||
height: 100%;
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.jp-OutputArea-promptOverlay:hover {
|
||
background: var(--jp-layout-color2);
|
||
box-shadow: inset 0 0 1px var(--jp-inverse-layout-color0);
|
||
cursor: zoom-out;
|
||
}
|
||
|
||
.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay:hover {
|
||
cursor: zoom-in;
|
||
}
|
||
|
||
/**
|
||
* Isolated output.
|
||
*/
|
||
.jp-OutputArea-output.jp-mod-isolated {
|
||
width: 100%;
|
||
display: block;
|
||
}
|
||
|
||
/*
|
||
When drag events occur, `lm-mod-override-cursor` is added to the body.
|
||
Because iframes steal all cursor events, the following two rules are necessary
|
||
to suppress pointer events while resize drags are occurring. There may be a
|
||
better solution to this problem.
|
||
*/
|
||
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
|
||
position: relative;
|
||
}
|
||
|
||
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
/* pre */
|
||
|
||
.jp-OutputArea-output pre {
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
overflow-x: auto;
|
||
overflow-y: auto;
|
||
word-break: break-all;
|
||
word-wrap: break-word;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
/* tables */
|
||
|
||
.jp-OutputArea-output.jp-RenderedHTMLCommon table {
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
}
|
||
|
||
/* description lists */
|
||
|
||
.jp-OutputArea-output dl,
|
||
.jp-OutputArea-output dt,
|
||
.jp-OutputArea-output dd {
|
||
display: block;
|
||
}
|
||
|
||
.jp-OutputArea-output dl {
|
||
width: 100%;
|
||
overflow: hidden;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-OutputArea-output dt {
|
||
font-weight: bold;
|
||
float: left;
|
||
width: 20%;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-OutputArea-output dd {
|
||
float: left;
|
||
width: 80%;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-TrimmedOutputs pre {
|
||
background: var(--jp-layout-color3);
|
||
font-size: calc(var(--jp-code-font-size) * 1.4);
|
||
text-align: center;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
/* Hide the gutter in case of
|
||
* - nested output areas (e.g. in the case of output widgets)
|
||
* - mirrored output areas
|
||
*/
|
||
.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
|
||
display: none;
|
||
}
|
||
|
||
/* Hide empty lines in the output area, for instance due to cleared widgets */
|
||
.jp-OutputArea-prompt:empty {
|
||
padding: 0;
|
||
border: 0;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| executeResult is added to any Output-result for the display of the object
|
||
| returned by a cell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-OutputArea-output.jp-OutputArea-executeResult {
|
||
margin-left: 0;
|
||
width: 100%;
|
||
}
|
||
|
||
/* Text output with the Out[] prompt needs a top padding to match the
|
||
* alignment of the Out[] prompt itself.
|
||
*/
|
||
.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
|
||
padding-top: var(--jp-code-padding);
|
||
border-top: var(--jp-border-width) solid transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| The Stdin output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Stdin-prompt {
|
||
color: var(--jp-content-font-color0);
|
||
padding-right: var(--jp-code-padding);
|
||
vertical-align: baseline;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-Stdin-input {
|
||
font-family: var(--jp-code-font-family);
|
||
font-size: inherit;
|
||
color: inherit;
|
||
background-color: inherit;
|
||
width: 42%;
|
||
min-width: 200px;
|
||
|
||
/* make sure input baseline aligns with prompt */
|
||
vertical-align: baseline;
|
||
|
||
/* padding + margin = 0.5em between prompt and cursor */
|
||
padding: 0 0.25em;
|
||
margin: 0 0.25em;
|
||
flex: 0 0 70%;
|
||
}
|
||
|
||
.jp-Stdin-input::placeholder {
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-Stdin-input:focus {
|
||
box-shadow: none;
|
||
}
|
||
|
||
.jp-Stdin-input:focus::placeholder {
|
||
opacity: 1;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Output Area View
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-LinkedOutputView .jp-OutputArea {
|
||
height: 100%;
|
||
display: block;
|
||
}
|
||
|
||
.jp-LinkedOutputView .jp-OutputArea-output:only-child {
|
||
height: 100%;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
@media print {
|
||
.jp-OutputArea-child {
|
||
break-inside: avoid-page;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Mobile
|
||
|----------------------------------------------------------------------------*/
|
||
@media only screen and (max-width: 760px) {
|
||
.jp-OutputPrompt {
|
||
display: table-row;
|
||
text-align: left;
|
||
}
|
||
|
||
.jp-OutputArea-child .jp-OutputArea-output {
|
||
display: table-row;
|
||
margin-left: var(--jp-notebook-padding);
|
||
}
|
||
}
|
||
|
||
/* Trimmed outputs warning */
|
||
.jp-TrimmedOutputs > a {
|
||
margin: 10px;
|
||
text-decoration: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-TrimmedOutputs > a:hover {
|
||
text-decoration: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Table of Contents
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-toc-active-width: 4px;
|
||
}
|
||
|
||
.jp-TableOfContents {
|
||
display: flex;
|
||
flex-direction: column;
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholder {
|
||
text-align: center;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholderContent {
|
||
color: var(--jp-content-font-color2);
|
||
padding: 8px;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholderContent > h3 {
|
||
margin-bottom: var(--jp-content-heading-margin-bottom);
|
||
}
|
||
|
||
.jp-TableOfContents .jp-SidePanel-content {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-TableOfContents-tree {
|
||
margin: 4px;
|
||
}
|
||
|
||
.jp-TableOfContents ol {
|
||
list-style-type: none;
|
||
}
|
||
|
||
/* stylelint-disable-next-line selector-max-type */
|
||
.jp-TableOfContents li > ol {
|
||
/* Align left border with triangle icon center */
|
||
padding-left: 11px;
|
||
}
|
||
|
||
.jp-TableOfContents-content {
|
||
/* left margin for the active heading indicator */
|
||
margin: 0 0 0 var(--jp-private-toc-active-width);
|
||
padding: 0;
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-tocItem {
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-tocItem-heading {
|
||
display: flex;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-tocItem-heading:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-tocItem-content {
|
||
display: block;
|
||
padding: 4px 0;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
.jp-tocItem-collapser {
|
||
height: 20px;
|
||
margin: 2px 2px 0;
|
||
padding: 0;
|
||
background: none;
|
||
border: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-tocItem-collapser:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
/* Active heading indicator */
|
||
|
||
.jp-tocItem-heading::before {
|
||
content: ' ';
|
||
background: transparent;
|
||
width: var(--jp-private-toc-active-width);
|
||
height: 24px;
|
||
position: absolute;
|
||
left: 0;
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-tocItem-heading.jp-tocItem-active::before {
|
||
background-color: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-tocItem-heading:hover.jp-tocItem-active::before {
|
||
background: var(--jp-brand-color0);
|
||
opacity: 1;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Collapser {
|
||
flex: 0 0 var(--jp-cell-collapser-width);
|
||
padding: 0;
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
opacity: 1;
|
||
}
|
||
|
||
.jp-Collapser-child {
|
||
display: block;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
|
||
/* height: 100% doesn't work because the height of its parent is computed from content */
|
||
position: absolute;
|
||
top: 0;
|
||
bottom: 0;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
Hiding collapsers in print mode.
|
||
|
||
Note: input and output wrappers have "display: block" propery in print mode.
|
||
*/
|
||
|
||
@media print {
|
||
.jp-Collapser {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Header/Footer
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Hidden by zero height by default */
|
||
.jp-CellHeader,
|
||
.jp-CellFooter {
|
||
height: 0;
|
||
width: 100%;
|
||
padding: 0;
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Input
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* All input areas */
|
||
.jp-InputArea {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-InputArea-editor {
|
||
display: table-cell;
|
||
overflow: hidden;
|
||
vertical-align: top;
|
||
|
||
/* This is the non-active, default styling */
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
border-radius: 0;
|
||
background: var(--jp-cell-editor-background);
|
||
}
|
||
|
||
.jp-InputPrompt {
|
||
display: table-cell;
|
||
vertical-align: top;
|
||
width: var(--jp-cell-prompt-width);
|
||
color: var(--jp-cell-inprompt-font-color);
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
padding: var(--jp-code-padding);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
opacity: var(--jp-cell-prompt-opacity);
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
|
||
/* Right align prompt text, don't wrap to handle large prompt numbers */
|
||
text-align: right;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
|
||
/* Disable text selection */
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Mobile
|
||
|----------------------------------------------------------------------------*/
|
||
@media only screen and (max-width: 760px) {
|
||
.jp-InputArea-editor {
|
||
display: table-row;
|
||
margin-left: var(--jp-notebook-padding);
|
||
}
|
||
|
||
.jp-InputPrompt {
|
||
display: table-row;
|
||
text-align: left;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Placeholder
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Placeholder {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Placeholder-prompt {
|
||
display: table-cell;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-Placeholder-content {
|
||
display: table-cell;
|
||
padding: 4px 6px;
|
||
border: 1px solid transparent;
|
||
border-radius: 0;
|
||
background: none;
|
||
box-sizing: border-box;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-Placeholder-contentContainer {
|
||
display: flex;
|
||
}
|
||
|
||
.jp-Placeholder-content:hover,
|
||
.jp-InputPlaceholder > .jp-Placeholder-content:hover {
|
||
border-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-Placeholder-content .jp-MoreHorizIcon {
|
||
width: 32px;
|
||
height: 16px;
|
||
border: 1px solid transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-Placeholder-content .jp-MoreHorizIcon:hover {
|
||
border: 1px solid var(--jp-border-color1);
|
||
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);
|
||
background-color: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-PlaceholderText {
|
||
white-space: nowrap;
|
||
overflow-x: hidden;
|
||
color: var(--jp-inverse-layout-color3);
|
||
font-family: var(--jp-code-font-family);
|
||
}
|
||
|
||
.jp-InputPlaceholder > .jp-Placeholder-content {
|
||
border-color: var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Private CSS variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-cell-scrolling-output-offset: 5px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Cell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell {
|
||
padding: var(--jp-cell-padding);
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Common input/output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: flex;
|
||
flex-direction: row;
|
||
padding: 0;
|
||
margin: 0;
|
||
|
||
/* Added to reveal the box-shadow on the input and output collapsers. */
|
||
overflow: visible;
|
||
}
|
||
|
||
/* Only input/output areas inside cells */
|
||
.jp-Cell-inputArea,
|
||
.jp-Cell-outputArea {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Collapser
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Make the output collapser disappear when there is not output, but do so
|
||
* in a manner that leaves it in the layout and preserves its width.
|
||
*/
|
||
.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
|
||
border: none !important;
|
||
background: transparent !important;
|
||
}
|
||
|
||
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
|
||
min-height: var(--jp-cell-collapser-min-height);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Put a space between input and output when there IS output */
|
||
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
|
||
margin-top: 5px;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
|
||
overflow-y: auto;
|
||
max-height: 24em;
|
||
margin-left: var(--jp-private-cell-scrolling-output-offset);
|
||
resize: vertical;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] {
|
||
max-height: unset;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
|
||
content: ' ';
|
||
box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
|
||
width: 100%;
|
||
height: 100%;
|
||
position: sticky;
|
||
bottom: 0;
|
||
top: 0;
|
||
margin-top: -50%;
|
||
float: left;
|
||
display: block;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
|
||
padding-top: 6px;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
|
||
width: calc(
|
||
var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset)
|
||
);
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay {
|
||
left: calc(-1 * var(--jp-private-cell-scrolling-output-offset));
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| CodeCell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| MarkdownCell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MarkdownOutput {
|
||
display: table-cell;
|
||
width: 100%;
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
padding-left: var(--jp-code-padding);
|
||
}
|
||
|
||
.jp-MarkdownOutput.jp-RenderedHTMLCommon {
|
||
overflow: auto;
|
||
}
|
||
|
||
/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
|
||
.jp-collapseHeadingButton {
|
||
display: flex;
|
||
min-height: var(--jp-cell-collapser-min-height);
|
||
font-size: var(--jp-code-font-size);
|
||
position: absolute;
|
||
background-color: transparent;
|
||
background-size: 25px;
|
||
background-repeat: no-repeat;
|
||
background-position-x: center;
|
||
background-position-y: top;
|
||
background-image: var(--jp-icon-caret-down);
|
||
right: 0;
|
||
top: 0;
|
||
bottom: 0;
|
||
}
|
||
|
||
.jp-collapseHeadingButton.jp-mod-collapsed {
|
||
background-image: var(--jp-icon-caret-right);
|
||
}
|
||
|
||
/*
|
||
set the container font size to match that of content
|
||
so that the nested collapse buttons have the right size
|
||
*/
|
||
.jp-MarkdownCell .jp-InputPrompt {
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
/*
|
||
Align collapseHeadingButton with cell top header
|
||
The font sizes are identical to the ones in packages/rendermime/style/base.css
|
||
*/
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
|
||
font-size: var(--jp-content-font-size5);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size5));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
|
||
font-size: var(--jp-content-font-size4);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size4));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
|
||
font-size: var(--jp-content-font-size3);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size3));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
|
||
font-size: var(--jp-content-font-size2);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size2));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
|
||
font-size: var(--jp-content-font-size1);
|
||
background-position-y: top;
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
|
||
font-size: var(--jp-content-font-size0);
|
||
background-position-y: top;
|
||
}
|
||
|
||
/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton {
|
||
display: none;
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton
|
||
:is(.jp-MarkdownCell:hover, .jp-mod-active)
|
||
.jp-collapseHeadingButton {
|
||
display: flex;
|
||
}
|
||
|
||
/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which
|
||
is a consequence of the showHiddenCellsButton option in Notebook Settings)*/
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton {
|
||
margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
|
||
margin-top: var(--jp-code-padding);
|
||
border: 1px solid var(--jp-border-color2);
|
||
background-color: var(--jp-border-color3) !important;
|
||
color: var(--jp-content-font-color0) !important;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover {
|
||
background-color: var(--jp-border-color2) !important;
|
||
}
|
||
|
||
.jp-showHiddenCellsButton {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
Using block instead of flex to allow the use of the break-inside CSS property for
|
||
cell outputs.
|
||
*/
|
||
|
||
@media print {
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: block;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-notebook-toolbar-padding: 2px 5px 2px 2px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-NotebookPanel-toolbar {
|
||
padding: var(--jp-notebook-toolbar-padding);
|
||
|
||
/* disable paint containment from lumino 2.0 default strict CSS containment */
|
||
contain: style size !important;
|
||
}
|
||
|
||
.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
|
||
border: none;
|
||
box-shadow: none;
|
||
}
|
||
|
||
.jp-Notebook-toolbarCellTypeDropdown select {
|
||
height: 24px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 14px;
|
||
border-radius: 0;
|
||
display: block;
|
||
}
|
||
|
||
.jp-Notebook-toolbarCellTypeDropdown span {
|
||
top: 5px !important;
|
||
}
|
||
|
||
.jp-Toolbar-responsive-popup {
|
||
position: absolute;
|
||
height: fit-content;
|
||
display: flex;
|
||
flex-direction: row;
|
||
flex-wrap: wrap;
|
||
justify-content: flex-end;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
background: var(--jp-toolbar-background);
|
||
min-height: var(--jp-toolbar-micro-height);
|
||
padding: var(--jp-notebook-toolbar-padding);
|
||
z-index: 1;
|
||
right: 0;
|
||
top: 0;
|
||
}
|
||
|
||
.jp-Toolbar > .jp-Toolbar-responsive-opener {
|
||
margin-left: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Notebook-ExecutionIndicator {
|
||
position: relative;
|
||
display: inline-block;
|
||
height: 100%;
|
||
z-index: 9997;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip {
|
||
visibility: hidden;
|
||
height: auto;
|
||
width: max-content;
|
||
width: -moz-max-content;
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
text-align: justify;
|
||
border-radius: 6px;
|
||
padding: 0 5px;
|
||
position: fixed;
|
||
display: table;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.up {
|
||
transform: translateX(-50%) translateY(-100%) translateY(-32px);
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.down {
|
||
transform: translateX(calc(-100% + 16px)) translateY(5px);
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
|
||
visibility: visible;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator span {
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
color: var(--jp-ui-font-color1);
|
||
line-height: 24px;
|
||
display: block;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-progress-bar {
|
||
display: flex;
|
||
justify-content: center;
|
||
height: 100%;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*
|
||
* Execution indicator
|
||
*/
|
||
.jp-tocItem-content::after {
|
||
content: '';
|
||
|
||
/* Must be identical to form a circle */
|
||
width: 12px;
|
||
height: 12px;
|
||
background: none;
|
||
border: none;
|
||
position: absolute;
|
||
right: 0;
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='0']::after {
|
||
border-radius: 50%;
|
||
border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
|
||
background: none;
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='1']::after {
|
||
border-radius: 50%;
|
||
border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
|
||
background-color: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='0'],
|
||
.jp-tocItem-content[data-running='1'] {
|
||
margin-right: 12px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-Notebook-footer {
|
||
height: 27px;
|
||
margin-left: calc(
|
||
var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
|
||
var(--jp-cell-padding)
|
||
);
|
||
width: calc(
|
||
100% -
|
||
(
|
||
var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
|
||
var(--jp-cell-padding) + var(--jp-cell-padding)
|
||
)
|
||
);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
color: var(--jp-ui-font-color3);
|
||
margin-top: 6px;
|
||
background: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-Notebook-footer:focus {
|
||
border-color: var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
/* For devices that support hovering, hide footer until hover */
|
||
@media (hover: hover) {
|
||
.jp-Notebook-footer {
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-Notebook-footer:focus,
|
||
.jp-Notebook-footer:hover {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Imports
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| CSS variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-side-by-side-output-size: 1fr;
|
||
--jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
|
||
--jp-private-notebook-dragImage-width: 304px;
|
||
--jp-private-notebook-dragImage-height: 36px;
|
||
--jp-private-notebook-selected-color: var(--md-blue-400);
|
||
--jp-private-notebook-active-color: var(--md-green-400);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* stylelint-disable selector-max-class */
|
||
|
||
.jp-NotebookPanel {
|
||
display: block;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-NotebookPanel.jp-Document {
|
||
min-width: 240px;
|
||
min-height: 120px;
|
||
}
|
||
|
||
.jp-Notebook {
|
||
padding: var(--jp-notebook-padding);
|
||
outline: none;
|
||
overflow: auto;
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-scrollPastEnd::after {
|
||
display: block;
|
||
content: '';
|
||
min-height: var(--jp-notebook-scroll-padding);
|
||
}
|
||
|
||
.jp-MainAreaWidget-ContainStrict .jp-Notebook * {
|
||
contain: strict;
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell {
|
||
overflow: visible;
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell .jp-InputPrompt {
|
||
cursor: move;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook state related styling
|
||
|
|
||
| The notebook and cells each have states, here are the possibilities:
|
||
|
|
||
| - Notebook
|
||
| - Command
|
||
| - Edit
|
||
| - Cell
|
||
| - None
|
||
| - Active (only one can be active)
|
||
| - Selected (the cells actions are applied to)
|
||
| - Multiselected (when multiple selected, the cursor)
|
||
| - No outputs
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Command or edit modes */
|
||
|
||
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
|
||
opacity: var(--jp-cell-prompt-not-active-opacity);
|
||
color: var(--jp-cell-prompt-not-active-font-color);
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
|
||
opacity: var(--jp-cell-prompt-not-active-opacity);
|
||
color: var(--jp-cell-prompt-not-active-font-color);
|
||
}
|
||
|
||
/* cell is active */
|
||
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* cell is dirty */
|
||
.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt {
|
||
color: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before {
|
||
color: var(--jp-warn-color1);
|
||
content: '•';
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser {
|
||
background: var(--jp-warn-color1);
|
||
}
|
||
|
||
/* collapser is hovered */
|
||
.jp-Notebook .jp-Cell .jp-Collapser:hover {
|
||
box-shadow: var(--jp-elevation-z2);
|
||
background: var(--jp-brand-color1);
|
||
opacity: var(--jp-cell-collapser-not-active-hover-opacity);
|
||
}
|
||
|
||
/* cell is active and collapser is hovered */
|
||
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
|
||
background: var(--jp-brand-color0);
|
||
opacity: 1;
|
||
}
|
||
|
||
/* Command mode */
|
||
|
||
.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
|
||
background: var(--jp-notebook-multiselected-color);
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-commandMode
|
||
.jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
|
||
background: transparent;
|
||
}
|
||
|
||
/* Edit mode */
|
||
|
||
.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
background-color: var(--jp-cell-editor-active-background);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook drag and drop
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Notebook-cell.jp-mod-dropSource {
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.jp-Notebook-cell.jp-mod-dropTarget,
|
||
.jp-Notebook.jp-mod-commandMode
|
||
.jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
|
||
border-top-color: var(--jp-private-notebook-selected-color);
|
||
border-top-style: solid;
|
||
border-top-width: 2px;
|
||
}
|
||
|
||
.jp-dragImage {
|
||
display: block;
|
||
flex-direction: row;
|
||
width: var(--jp-private-notebook-dragImage-width);
|
||
height: var(--jp-private-notebook-dragImage-height);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background);
|
||
overflow: visible;
|
||
}
|
||
|
||
.jp-dragImage-singlePrompt {
|
||
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
.jp-dragImage .jp-dragImage-content {
|
||
flex: 1 1 auto;
|
||
z-index: 2;
|
||
font-size: var(--jp-code-font-size);
|
||
font-family: var(--jp-code-font-family);
|
||
line-height: var(--jp-code-line-height);
|
||
padding: var(--jp-code-padding);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background-color);
|
||
color: var(--jp-content-font-color3);
|
||
text-align: left;
|
||
margin: 4px 4px 4px 0;
|
||
}
|
||
|
||
.jp-dragImage .jp-dragImage-prompt {
|
||
flex: 0 0 auto;
|
||
min-width: 36px;
|
||
color: var(--jp-cell-inprompt-font-color);
|
||
padding: var(--jp-code-padding);
|
||
padding-left: 12px;
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
line-height: 1.9;
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
}
|
||
|
||
.jp-dragImage-multipleBack {
|
||
z-index: -1;
|
||
position: absolute;
|
||
height: 32px;
|
||
width: 300px;
|
||
top: 8px;
|
||
left: 8px;
|
||
background: var(--jp-layout-color2);
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Cell toolbar
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-NotebookTools {
|
||
display: block;
|
||
min-width: var(--jp-sidebar-min-width);
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
overflow: auto;
|
||
}
|
||
|
||
.jp-ActiveCellTool {
|
||
padding: 12px 0;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-ActiveCellTool-Content {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-ActiveCellTool .jp-ActiveCellTool-CellContent {
|
||
background: var(--jp-cell-editor-background);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
border-radius: 0;
|
||
min-height: 29px;
|
||
}
|
||
|
||
.jp-ActiveCellTool .jp-InputPrompt {
|
||
min-width: calc(var(--jp-cell-prompt-width) * 0.75);
|
||
}
|
||
|
||
.jp-ActiveCellTool-CellContent > pre {
|
||
padding: 5px 4px;
|
||
margin: 0;
|
||
white-space: normal;
|
||
}
|
||
|
||
.jp-MetadataEditorTool {
|
||
flex-direction: column;
|
||
padding: 12px 0;
|
||
}
|
||
|
||
.jp-RankedPanel > :not(:first-child) {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.jp-KeySelector select.jp-mod-styled {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
border: var(--jp-border-width) solid var(--jp-border-color1);
|
||
}
|
||
|
||
.jp-KeySelector label,
|
||
.jp-MetadataEditorTool label,
|
||
.jp-NumberSetter label {
|
||
line-height: 1.4;
|
||
}
|
||
|
||
.jp-NotebookTools .jp-select-wrapper {
|
||
margin-top: 4px;
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-NumberSetter input {
|
||
width: 100%;
|
||
margin-top: 4px;
|
||
}
|
||
|
||
.jp-NotebookTools .jp-Collapse {
|
||
margin-top: 16px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Presentation Mode (.jp-mod-presentationMode)
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-mod-presentationMode .jp-Notebook {
|
||
--jp-content-font-size1: var(--jp-content-presentation-font-size1);
|
||
--jp-code-font-size: var(--jp-code-presentation-font-size);
|
||
}
|
||
|
||
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
|
||
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
|
||
flex: 0 0 110px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Side-by-side Mode (.jp-mod-sideBySide)
|
||
|----------------------------------------------------------------------------*/
|
||
.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
|
||
margin-top: 3em;
|
||
margin-bottom: 3em;
|
||
margin-left: 5%;
|
||
margin-right: 5%;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) min-content minmax(
|
||
0,
|
||
var(--jp-side-by-side-output-size)
|
||
);
|
||
grid-template-rows: auto minmax(0, 1fr) auto;
|
||
grid-template-areas:
|
||
'header header header'
|
||
'input handle output'
|
||
'footer footer footer';
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
|
||
grid-template-columns: minmax(0, 1fr) min-content minmax(
|
||
0,
|
||
var(--jp-side-by-side-resized-cell)
|
||
);
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
|
||
grid-area: header;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
|
||
grid-area: input;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
|
||
/* overwrite the default margin (no vertical separation needed in side by side move */
|
||
margin-top: 0;
|
||
grid-area: output;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
|
||
grid-area: footer;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
|
||
grid-area: handle;
|
||
user-select: none;
|
||
display: block;
|
||
height: 100%;
|
||
cursor: ew-resize;
|
||
padding: 0 var(--jp-cell-padding);
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
|
||
content: '';
|
||
display: block;
|
||
background: var(--jp-border-color2);
|
||
height: 100%;
|
||
width: 5px;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook
|
||
.jp-CodeCell.jp-mod-resizedCell
|
||
.jp-CellResizeHandle::after {
|
||
background: var(--jp-border-color0);
|
||
}
|
||
|
||
.jp-CellResizeHandle {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Placeholder
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell-Placeholder {
|
||
padding-left: 55px;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper {
|
||
background: #fff;
|
||
border: 1px solid;
|
||
border-color: #e5e6e9 #dfe0e4 #d0d1d5;
|
||
border-radius: 4px;
|
||
-webkit-border-radius: 4px;
|
||
margin: 10px 15px;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-inner {
|
||
padding: 15px;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-body {
|
||
background-repeat: repeat;
|
||
background-size: 50% auto;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-body div {
|
||
background: #f6f7f8;
|
||
background-image: -webkit-linear-gradient(
|
||
left,
|
||
#f6f7f8 0%,
|
||
#edeef1 20%,
|
||
#f6f7f8 40%,
|
||
#f6f7f8 100%
|
||
);
|
||
background-repeat: no-repeat;
|
||
background-size: 800px 104px;
|
||
height: 104px;
|
||
position: absolute;
|
||
right: 15px;
|
||
left: 15px;
|
||
top: 15px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-h1 {
|
||
top: 20px;
|
||
height: 20px;
|
||
left: 15px;
|
||
width: 150px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-h2 {
|
||
left: 15px;
|
||
top: 50px;
|
||
height: 10px;
|
||
width: 100px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-1,
|
||
div.jp-Cell-Placeholder-content-2,
|
||
div.jp-Cell-Placeholder-content-3 {
|
||
left: 15px;
|
||
right: 15px;
|
||
height: 10px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-1 {
|
||
top: 100px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-2 {
|
||
top: 120px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-3 {
|
||
top: 140px;
|
||
}
|
||
|
||
</style>
|
||
<style type="text/css">
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
The following CSS variables define the main, public API for styling JupyterLab.
|
||
These variables should be used by all plugins wherever possible. In other
|
||
words, plugins should not define custom colors, sizes, etc unless absolutely
|
||
necessary. This enables users to change the visual theme of JupyterLab
|
||
by changing these variables.
|
||
|
||
Many variables appear in an ordered sequence (0,1,2,3). These sequences
|
||
are designed to work well together, so for example, `--jp-border-color1` should
|
||
be used with `--jp-layout-color1`. The numbers have the following meanings:
|
||
|
||
* 0: super-primary, reserved for special emphasis
|
||
* 1: primary, most important under normal situations
|
||
* 2: secondary, next most important under normal situations
|
||
* 3: tertiary, next most important under normal situations
|
||
|
||
Throughout JupyterLab, we are mostly following principles from Google's
|
||
Material Design when selecting colors. We are not, however, following
|
||
all of MD as it is not optimized for dense, information rich UIs.
|
||
*/
|
||
|
||
:root {
|
||
/* Elevation
|
||
*
|
||
* We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
|
||
*
|
||
* https://github.com/material-components/material-components-web
|
||
* https://material-components-web.appspot.com/elevation.html
|
||
*/
|
||
|
||
--jp-shadow-base-lightness: 0;
|
||
--jp-shadow-umbra-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.2
|
||
);
|
||
--jp-shadow-penumbra-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.14
|
||
);
|
||
--jp-shadow-ambient-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.12
|
||
);
|
||
--jp-elevation-z0: none;
|
||
--jp-elevation-z1: 0 2px 1px -1px var(--jp-shadow-umbra-color),
|
||
0 1px 1px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 3px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z2: 0 3px 1px -2px var(--jp-shadow-umbra-color),
|
||
0 2px 2px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 5px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z4: 0 2px 4px -1px var(--jp-shadow-umbra-color),
|
||
0 4px 5px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 10px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z6: 0 3px 5px -1px var(--jp-shadow-umbra-color),
|
||
0 6px 10px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 18px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z8: 0 5px 5px -3px var(--jp-shadow-umbra-color),
|
||
0 8px 10px 1px var(--jp-shadow-penumbra-color),
|
||
0 3px 14px 2px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z12: 0 7px 8px -4px var(--jp-shadow-umbra-color),
|
||
0 12px 17px 2px var(--jp-shadow-penumbra-color),
|
||
0 5px 22px 4px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z16: 0 8px 10px -5px var(--jp-shadow-umbra-color),
|
||
0 16px 24px 2px var(--jp-shadow-penumbra-color),
|
||
0 6px 30px 5px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z20: 0 10px 13px -6px var(--jp-shadow-umbra-color),
|
||
0 20px 31px 3px var(--jp-shadow-penumbra-color),
|
||
0 8px 38px 7px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z24: 0 11px 15px -7px var(--jp-shadow-umbra-color),
|
||
0 24px 38px 3px var(--jp-shadow-penumbra-color),
|
||
0 9px 46px 8px var(--jp-shadow-ambient-color);
|
||
|
||
/* Borders
|
||
*
|
||
* The following variables, specify the visual styling of borders in JupyterLab.
|
||
*/
|
||
|
||
--jp-border-width: 1px;
|
||
--jp-border-color0: var(--md-grey-400);
|
||
--jp-border-color1: var(--md-grey-400);
|
||
--jp-border-color2: var(--md-grey-300);
|
||
--jp-border-color3: var(--md-grey-200);
|
||
--jp-inverse-border-color: var(--md-grey-600);
|
||
--jp-border-radius: 2px;
|
||
|
||
/* UI Fonts
|
||
*
|
||
* The UI font CSS variables are used for the typography all of the JupyterLab
|
||
* user interface elements that are not directly user generated content.
|
||
*
|
||
* The font sizing here is done assuming that the body font size of --jp-ui-font-size1
|
||
* is applied to a parent element. When children elements, such as headings, are sized
|
||
* in em all things will be computed relative to that body size.
|
||
*/
|
||
|
||
--jp-ui-font-scale-factor: 1.2;
|
||
--jp-ui-font-size0: 0.83333em;
|
||
--jp-ui-font-size1: 13px; /* Base font size */
|
||
--jp-ui-font-size2: 1.2em;
|
||
--jp-ui-font-size3: 1.44em;
|
||
--jp-ui-font-family: system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI',
|
||
helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
||
'Segoe UI Symbol';
|
||
|
||
/*
|
||
* Use these font colors against the corresponding main layout colors.
|
||
* In a light theme, these go from dark to light.
|
||
*/
|
||
|
||
/* Defaults use Material Design specification */
|
||
--jp-ui-font-color0: rgba(0, 0, 0, 1);
|
||
--jp-ui-font-color1: rgba(0, 0, 0, 0.87);
|
||
--jp-ui-font-color2: rgba(0, 0, 0, 0.54);
|
||
--jp-ui-font-color3: rgba(0, 0, 0, 0.38);
|
||
|
||
/*
|
||
* Use these against the brand/accent/warn/error colors.
|
||
* These will typically go from light to darker, in both a dark and light theme.
|
||
*/
|
||
|
||
--jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);
|
||
--jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);
|
||
--jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);
|
||
--jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);
|
||
|
||
/* Content Fonts
|
||
*
|
||
* Content font variables are used for typography of user generated content.
|
||
*
|
||
* The font sizing here is done assuming that the body font size of --jp-content-font-size1
|
||
* is applied to a parent element. When children elements, such as headings, are sized
|
||
* in em all things will be computed relative to that body size.
|
||
*/
|
||
|
||
--jp-content-line-height: 1.6;
|
||
--jp-content-font-scale-factor: 1.2;
|
||
--jp-content-font-size0: 0.83333em;
|
||
--jp-content-font-size1: 14px; /* Base font size */
|
||
--jp-content-font-size2: 1.2em;
|
||
--jp-content-font-size3: 1.44em;
|
||
--jp-content-font-size4: 1.728em;
|
||
--jp-content-font-size5: 2.0736em;
|
||
|
||
/* This gives a magnification of about 125% in presentation mode over normal. */
|
||
--jp-content-presentation-font-size1: 17px;
|
||
--jp-content-heading-line-height: 1;
|
||
--jp-content-heading-margin-top: 1.2em;
|
||
--jp-content-heading-margin-bottom: 0.8em;
|
||
--jp-content-heading-font-weight: 500;
|
||
|
||
/* Defaults use Material Design specification */
|
||
--jp-content-font-color0: rgba(0, 0, 0, 1);
|
||
--jp-content-font-color1: rgba(0, 0, 0, 0.87);
|
||
--jp-content-font-color2: rgba(0, 0, 0, 0.54);
|
||
--jp-content-font-color3: rgba(0, 0, 0, 0.38);
|
||
--jp-content-link-color: var(--md-blue-900);
|
||
--jp-content-font-family: system-ui, -apple-system, blinkmacsystemfont,
|
||
'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji',
|
||
'Segoe UI Emoji', 'Segoe UI Symbol';
|
||
|
||
/*
|
||
* Code Fonts
|
||
*
|
||
* Code font variables are used for typography of code and other monospaces content.
|
||
*/
|
||
|
||
--jp-code-font-size: 13px;
|
||
--jp-code-line-height: 1.3077; /* 17px for 13px base */
|
||
--jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */
|
||
--jp-code-font-family-default: menlo, consolas, 'DejaVu Sans Mono', monospace;
|
||
--jp-code-font-family: var(--jp-code-font-family-default);
|
||
|
||
/* This gives a magnification of about 125% in presentation mode over normal. */
|
||
--jp-code-presentation-font-size: 16px;
|
||
|
||
/* may need to tweak cursor width if you change font size */
|
||
--jp-code-cursor-width0: 1.4px;
|
||
--jp-code-cursor-width1: 2px;
|
||
--jp-code-cursor-width2: 4px;
|
||
|
||
/* Layout
|
||
*
|
||
* The following are the main layout colors use in JupyterLab. In a light
|
||
* theme these would go from light to dark.
|
||
*/
|
||
|
||
--jp-layout-color0: white;
|
||
--jp-layout-color1: white;
|
||
--jp-layout-color2: var(--md-grey-200);
|
||
--jp-layout-color3: var(--md-grey-400);
|
||
--jp-layout-color4: var(--md-grey-600);
|
||
|
||
/* Inverse Layout
|
||
*
|
||
* The following are the inverse layout colors use in JupyterLab. In a light
|
||
* theme these would go from dark to light.
|
||
*/
|
||
|
||
--jp-inverse-layout-color0: #111;
|
||
--jp-inverse-layout-color1: var(--md-grey-900);
|
||
--jp-inverse-layout-color2: var(--md-grey-800);
|
||
--jp-inverse-layout-color3: var(--md-grey-700);
|
||
--jp-inverse-layout-color4: var(--md-grey-600);
|
||
|
||
/* Brand/accent */
|
||
|
||
--jp-brand-color0: var(--md-blue-900);
|
||
--jp-brand-color1: var(--md-blue-700);
|
||
--jp-brand-color2: var(--md-blue-300);
|
||
--jp-brand-color3: var(--md-blue-100);
|
||
--jp-brand-color4: var(--md-blue-50);
|
||
--jp-accent-color0: var(--md-green-900);
|
||
--jp-accent-color1: var(--md-green-700);
|
||
--jp-accent-color2: var(--md-green-300);
|
||
--jp-accent-color3: var(--md-green-100);
|
||
|
||
/* State colors (warn, error, success, info) */
|
||
|
||
--jp-warn-color0: var(--md-orange-900);
|
||
--jp-warn-color1: var(--md-orange-700);
|
||
--jp-warn-color2: var(--md-orange-300);
|
||
--jp-warn-color3: var(--md-orange-100);
|
||
--jp-error-color0: var(--md-red-900);
|
||
--jp-error-color1: var(--md-red-700);
|
||
--jp-error-color2: var(--md-red-300);
|
||
--jp-error-color3: var(--md-red-100);
|
||
--jp-success-color0: var(--md-green-900);
|
||
--jp-success-color1: var(--md-green-700);
|
||
--jp-success-color2: var(--md-green-300);
|
||
--jp-success-color3: var(--md-green-100);
|
||
--jp-info-color0: var(--md-cyan-900);
|
||
--jp-info-color1: var(--md-cyan-700);
|
||
--jp-info-color2: var(--md-cyan-300);
|
||
--jp-info-color3: var(--md-cyan-100);
|
||
|
||
/* Cell specific styles */
|
||
|
||
--jp-cell-padding: 5px;
|
||
--jp-cell-collapser-width: 8px;
|
||
--jp-cell-collapser-min-height: 20px;
|
||
--jp-cell-collapser-not-active-hover-opacity: 0.6;
|
||
--jp-cell-editor-background: var(--md-grey-100);
|
||
--jp-cell-editor-border-color: var(--md-grey-300);
|
||
--jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
|
||
--jp-cell-editor-active-background: var(--jp-layout-color0);
|
||
--jp-cell-editor-active-border-color: var(--jp-brand-color1);
|
||
--jp-cell-prompt-width: 64px;
|
||
--jp-cell-prompt-font-family: var(--jp-code-font-family-default);
|
||
--jp-cell-prompt-letter-spacing: 0;
|
||
--jp-cell-prompt-opacity: 1;
|
||
--jp-cell-prompt-not-active-opacity: 0.5;
|
||
--jp-cell-prompt-not-active-font-color: var(--md-grey-700);
|
||
|
||
/* A custom blend of MD grey and blue 600
|
||
* See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
|
||
--jp-cell-inprompt-font-color: #307fc1;
|
||
|
||
/* A custom blend of MD grey and orange 600
|
||
* https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
|
||
--jp-cell-outprompt-font-color: #bf5b3d;
|
||
|
||
/* Notebook specific styles */
|
||
|
||
--jp-notebook-padding: 10px;
|
||
--jp-notebook-select-background: var(--jp-layout-color1);
|
||
--jp-notebook-multiselected-color: var(--md-blue-50);
|
||
|
||
/* The scroll padding is calculated to fill enough space at the bottom of the
|
||
notebook to show one single-line cell (with appropriate padding) at the top
|
||
when the notebook is scrolled all the way to the bottom. We also subtract one
|
||
pixel so that no scrollbar appears if we have just one single-line cell in the
|
||
notebook. This padding is to enable a 'scroll past end' feature in a notebook.
|
||
*/
|
||
--jp-notebook-scroll-padding: calc(
|
||
100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
|
||
var(--jp-code-padding) - var(--jp-cell-padding) - 1px
|
||
);
|
||
|
||
/* Rendermime styles */
|
||
|
||
--jp-rendermime-error-background: #fdd;
|
||
--jp-rendermime-table-row-background: var(--md-grey-100);
|
||
--jp-rendermime-table-row-hover-background: var(--md-light-blue-50);
|
||
|
||
/* Dialog specific styles */
|
||
|
||
--jp-dialog-background: rgba(0, 0, 0, 0.25);
|
||
|
||
/* Console specific styles */
|
||
|
||
--jp-console-padding: 10px;
|
||
|
||
/* Toolbar specific styles */
|
||
|
||
--jp-toolbar-border-color: var(--jp-border-color1);
|
||
--jp-toolbar-micro-height: 8px;
|
||
--jp-toolbar-background: var(--jp-layout-color1);
|
||
--jp-toolbar-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.24);
|
||
--jp-toolbar-header-margin: 4px 4px 0 4px;
|
||
--jp-toolbar-active-background: var(--md-grey-300);
|
||
|
||
/* Statusbar specific styles */
|
||
|
||
--jp-statusbar-height: 24px;
|
||
|
||
/* Input field styles */
|
||
|
||
--jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
|
||
--jp-input-active-background: var(--jp-layout-color1);
|
||
--jp-input-hover-background: var(--jp-layout-color1);
|
||
--jp-input-background: var(--md-grey-100);
|
||
--jp-input-border-color: var(--jp-inverse-border-color);
|
||
--jp-input-active-border-color: var(--jp-brand-color1);
|
||
--jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
|
||
|
||
/* General editor styles */
|
||
|
||
--jp-editor-selected-background: #d9d9d9;
|
||
--jp-editor-selected-focused-background: #d7d4f0;
|
||
--jp-editor-cursor-color: var(--jp-ui-font-color0);
|
||
|
||
/* Code mirror specific styles */
|
||
|
||
--jp-mirror-editor-keyword-color: #008000;
|
||
--jp-mirror-editor-atom-color: #88f;
|
||
--jp-mirror-editor-number-color: #080;
|
||
--jp-mirror-editor-def-color: #00f;
|
||
--jp-mirror-editor-variable-color: var(--md-grey-900);
|
||
--jp-mirror-editor-variable-2-color: rgb(0, 54, 109);
|
||
--jp-mirror-editor-variable-3-color: #085;
|
||
--jp-mirror-editor-punctuation-color: #05a;
|
||
--jp-mirror-editor-property-color: #05a;
|
||
--jp-mirror-editor-operator-color: #a2f;
|
||
--jp-mirror-editor-comment-color: #408080;
|
||
--jp-mirror-editor-string-color: #ba2121;
|
||
--jp-mirror-editor-string-2-color: #708;
|
||
--jp-mirror-editor-meta-color: #a2f;
|
||
--jp-mirror-editor-qualifier-color: #555;
|
||
--jp-mirror-editor-builtin-color: #008000;
|
||
--jp-mirror-editor-bracket-color: #997;
|
||
--jp-mirror-editor-tag-color: #170;
|
||
--jp-mirror-editor-attribute-color: #00c;
|
||
--jp-mirror-editor-header-color: blue;
|
||
--jp-mirror-editor-quote-color: #090;
|
||
--jp-mirror-editor-link-color: #00c;
|
||
--jp-mirror-editor-error-color: #f00;
|
||
--jp-mirror-editor-hr-color: #999;
|
||
|
||
/*
|
||
RTC user specific colors.
|
||
These colors are used for the cursor, username in the editor,
|
||
and the icon of the user.
|
||
*/
|
||
|
||
--jp-collaborator-color1: #ffad8e;
|
||
--jp-collaborator-color2: #dac83d;
|
||
--jp-collaborator-color3: #72dd76;
|
||
--jp-collaborator-color4: #00e4d0;
|
||
--jp-collaborator-color5: #45d4ff;
|
||
--jp-collaborator-color6: #e2b1ff;
|
||
--jp-collaborator-color7: #ff9de6;
|
||
|
||
/* Vega extension styles */
|
||
|
||
--jp-vega-background: white;
|
||
|
||
/* Sidebar-related styles */
|
||
|
||
--jp-sidebar-min-width: 250px;
|
||
|
||
/* Search-related styles */
|
||
|
||
--jp-search-toggle-off-opacity: 0.5;
|
||
--jp-search-toggle-hover-opacity: 0.8;
|
||
--jp-search-toggle-on-opacity: 1;
|
||
--jp-search-selected-match-background-color: rgb(245, 200, 0);
|
||
--jp-search-selected-match-color: black;
|
||
--jp-search-unselected-match-background-color: var(
|
||
--jp-inverse-layout-color0
|
||
);
|
||
--jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
|
||
|
||
/* Icon colors that work well with light or dark backgrounds */
|
||
--jp-icon-contrast-color0: var(--md-purple-600);
|
||
--jp-icon-contrast-color1: var(--md-green-600);
|
||
--jp-icon-contrast-color2: var(--md-pink-600);
|
||
--jp-icon-contrast-color3: var(--md-blue-600);
|
||
|
||
/* Button colors */
|
||
--jp-accept-color-normal: var(--md-blue-700);
|
||
--jp-accept-color-hover: var(--md-blue-800);
|
||
--jp-accept-color-active: var(--md-blue-900);
|
||
--jp-warn-color-normal: var(--md-red-700);
|
||
--jp-warn-color-hover: var(--md-red-800);
|
||
--jp-warn-color-active: var(--md-red-900);
|
||
--jp-reject-color-normal: var(--md-grey-600);
|
||
--jp-reject-color-hover: var(--md-grey-700);
|
||
--jp-reject-color-active: var(--md-grey-800);
|
||
|
||
/* File or activity icons and switch semantic variables */
|
||
--jp-jupyter-icon-color: #f37626;
|
||
--jp-notebook-icon-color: #f37626;
|
||
--jp-json-icon-color: var(--md-orange-700);
|
||
--jp-console-icon-background-color: var(--md-blue-700);
|
||
--jp-console-icon-color: white;
|
||
--jp-terminal-icon-background-color: var(--md-grey-800);
|
||
--jp-terminal-icon-color: var(--md-grey-200);
|
||
--jp-text-editor-icon-color: var(--md-grey-700);
|
||
--jp-inspector-icon-color: var(--md-grey-700);
|
||
--jp-switch-color: var(--md-grey-400);
|
||
--jp-switch-true-position-color: var(--md-orange-900);
|
||
}
|
||
</style>
|
||
<style type="text/css">
|
||
/* Force rendering true colors when outputing to pdf */
|
||
* {
|
||
-webkit-print-color-adjust: exact;
|
||
}
|
||
|
||
/* Misc */
|
||
a.anchor-link {
|
||
display: none;
|
||
}
|
||
|
||
/* Input area styling */
|
||
.jp-InputArea {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-InputArea-editor {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.cm-editor.cm-s-jupyter .highlight pre {
|
||
/* weird, but --jp-code-padding defined to be 5px but 4px horizontal padding is hardcoded for pre.cm-line */
|
||
padding: var(--jp-code-padding) 4px;
|
||
margin: 0;
|
||
|
||
font-family: inherit;
|
||
font-size: inherit;
|
||
line-height: inherit;
|
||
color: inherit;
|
||
|
||
}
|
||
|
||
.jp-OutputArea-output pre {
|
||
line-height: inherit;
|
||
font-family: inherit;
|
||
}
|
||
|
||
.jp-RenderedText pre {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-code-font-size);
|
||
}
|
||
|
||
/* Hiding the collapser by default */
|
||
.jp-Collapser {
|
||
display: none;
|
||
}
|
||
|
||
@page {
|
||
margin: 0.5in; /* Margin for each printed piece of paper */
|
||
}
|
||
|
||
@media print {
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: block;
|
||
}
|
||
}
|
||
</style>
|
||
<!-- Load mathjax -->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML-full,Safe"> </script>
|
||
<!-- MathJax configuration -->
|
||
<script type="text/x-mathjax-config">
|
||
init_mathjax = function() {
|
||
if (window.MathJax) {
|
||
// MathJax loaded
|
||
MathJax.Hub.Config({
|
||
TeX: {
|
||
equationNumbers: {
|
||
autoNumber: "AMS",
|
||
useLabelIds: true
|
||
}
|
||
},
|
||
tex2jax: {
|
||
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
|
||
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
|
||
processEscapes: true,
|
||
processEnvironments: true
|
||
},
|
||
displayAlign: 'center',
|
||
messageStyle: 'none',
|
||
CommonHTML: {
|
||
linebreaks: {
|
||
automatic: true
|
||
}
|
||
}
|
||
});
|
||
|
||
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
|
||
}
|
||
}
|
||
init_mathjax();
|
||
</script>
|
||
<!-- End of mathjax configuration --><script type="module">
|
||
document.addEventListener("DOMContentLoaded", async () => {
|
||
const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
|
||
// do not load mermaidjs if not needed
|
||
if (!diagrams.length) {
|
||
return;
|
||
}
|
||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
|
||
const parser = new DOMParser();
|
||
|
||
mermaid.initialize({
|
||
maxTextSize: 100000,
|
||
maxEdges: 100000,
|
||
startOnLoad: false,
|
||
fontFamily: window
|
||
.getComputedStyle(document.body)
|
||
.getPropertyValue("--jp-ui-font-family"),
|
||
theme: document.querySelector("body[data-jp-theme-light='true']")
|
||
? "default"
|
||
: "dark",
|
||
});
|
||
|
||
let _nextMermaidId = 0;
|
||
|
||
function makeMermaidImage(svg) {
|
||
const img = document.createElement("img");
|
||
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||
const svgEl = doc.querySelector("svg");
|
||
const { maxWidth } = svgEl?.style || {};
|
||
const firstTitle = doc.querySelector("title");
|
||
const firstDesc = doc.querySelector("desc");
|
||
|
||
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||
if (maxWidth) {
|
||
img.width = parseInt(maxWidth);
|
||
}
|
||
if (firstTitle) {
|
||
img.setAttribute("alt", firstTitle.textContent);
|
||
}
|
||
if (firstDesc) {
|
||
const caption = document.createElement("figcaption");
|
||
caption.className = "sr-only";
|
||
caption.textContent = firstDesc.textContent;
|
||
return [img, caption];
|
||
}
|
||
return [img];
|
||
}
|
||
|
||
async function makeMermaidError(text) {
|
||
let errorMessage = "";
|
||
try {
|
||
await mermaid.parse(text);
|
||
} catch (err) {
|
||
errorMessage = `${err}`;
|
||
}
|
||
|
||
const result = document.createElement("details");
|
||
result.className = 'jp-RenderedMermaid-Details';
|
||
const summary = document.createElement("summary");
|
||
summary.className = 'jp-RenderedMermaid-Summary';
|
||
const pre = document.createElement("pre");
|
||
const code = document.createElement("code");
|
||
code.innerText = text;
|
||
pre.appendChild(code);
|
||
summary.appendChild(pre);
|
||
result.appendChild(summary);
|
||
|
||
const warning = document.createElement("pre");
|
||
warning.innerText = errorMessage;
|
||
result.appendChild(warning);
|
||
return [result];
|
||
}
|
||
|
||
async function renderOneMarmaid(src) {
|
||
const id = `jp-mermaid-${_nextMermaidId++}`;
|
||
const parent = src.parentNode;
|
||
let raw = src.textContent.trim();
|
||
const el = document.createElement("div");
|
||
el.style.visibility = "hidden";
|
||
document.body.appendChild(el);
|
||
let results = null;
|
||
let output = null;
|
||
try {
|
||
let { svg } = await mermaid.render(id, raw, el);
|
||
svg = cleanMermaidSvg(svg);
|
||
results = makeMermaidImage(svg);
|
||
output = document.createElement("figure");
|
||
results.map(output.appendChild, output);
|
||
} catch (err) {
|
||
parent.classList.add("jp-mod-warning");
|
||
results = await makeMermaidError(raw);
|
||
output = results[0];
|
||
} finally {
|
||
el.remove();
|
||
}
|
||
parent.classList.add("jp-RenderedMermaid");
|
||
parent.appendChild(output);
|
||
}
|
||
|
||
|
||
/**
|
||
* Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
|
||
*/
|
||
function cleanMermaidSvg(svg) {
|
||
return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
|
||
}
|
||
|
||
|
||
/**
|
||
* A regular expression for all void elements, which may include attributes and
|
||
* a slash.
|
||
*
|
||
* @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
|
||
*
|
||
* Of these, only `<br>` is generated by Mermaid in place of `\n`,
|
||
* but _any_ "malformed" tag will break the SVG rendering entirely.
|
||
*/
|
||
const RE_VOID_ELEMENT =
|
||
/<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
|
||
|
||
/**
|
||
* Ensure a void element is closed with a slash, preserving any attributes.
|
||
*/
|
||
function replaceVoidElement(match, tag, rest) {
|
||
rest = rest.trim();
|
||
if (!rest.endsWith('/')) {
|
||
rest = `${rest} /`;
|
||
}
|
||
return `<${tag} ${rest}>`;
|
||
}
|
||
|
||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||
});
|
||
</script>
|
||
<style>
|
||
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||
display: none;
|
||
}
|
||
|
||
.jp-RenderedMermaid {
|
||
overflow: auto;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-RenderedMermaid.jp-mod-warning {
|
||
width: auto;
|
||
padding: 0.5em;
|
||
margin-top: 0.5em;
|
||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||
border-radius: var(--jp-border-radius);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
.jp-RenderedMermaid figure {
|
||
margin: 0;
|
||
overflow: auto;
|
||
max-width: 100%;
|
||
}
|
||
|
||
.jp-RenderedMermaid img {
|
||
max-width: 100%;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Details > pre {
|
||
margin-top: 1em;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Summary {
|
||
color: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||
display: none;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Summary > pre {
|
||
display: inline-block;
|
||
white-space: normal;
|
||
}
|
||
</style>
|
||
<!-- End of mermaid configuration --></head>
|
||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||
<main>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=de19422d">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h1 id="Tutorial:-Enhancing-PINNs-with-Extra-Features-to-solve-the-Poisson-Problem">Tutorial: Enhancing PINNs with Extra Features to solve the Poisson Problem<a class="anchor-link" href="#Tutorial:-Enhancing-PINNs-with-Extra-Features-to-solve-the-Poisson-Problem">¶</a></h1><p><a href="https://colab.research.google.com/github/mathLab/PINA/blob/master/tutorials/tutorial2/tutorial.ipynb"><img alt="Open In Colab" src="https://colab.research.google.com/assets/colab-badge.svg"/></a></p>
|
||
<p>This tutorial presents how to solve with Physics-Informed Neural Networks (PINNs) a 2D Poisson problem with Dirichlet boundary conditions. We will train with standard PINN's training, and with extrafeatures. For more insights on extrafeature learning please read <a href="https://www.sciencedirect.com/science/article/abs/pii/S0898122123002018"><em>An extended physics informed neural network for preliminary analysis of parametric optimal control problems</em></a>.</p>
|
||
<p>First of all, some useful imports.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=ad0b8dd7">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [1]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1">## routine needed to run the notebook on Google Colab</span>
|
||
<span class="k">try</span><span class="p">:</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">google.colab</span>
|
||
|
||
<span class="n">IN_COLAB</span> <span class="o">=</span> <span class="kc">True</span>
|
||
<span class="k">except</span><span class="p">:</span>
|
||
<span class="n">IN_COLAB</span> <span class="o">=</span> <span class="kc">False</span>
|
||
<span class="k">if</span> <span class="n">IN_COLAB</span><span class="p">:</span>
|
||
<span class="o">!</span>pip<span class="w"> </span>install<span class="w"> </span><span class="s2">"pina-mathlab[tutorial]"</span>
|
||
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">warnings</span>
|
||
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina</span><span class="w"> </span><span class="kn">import</span> <span class="n">LabelTensor</span><span class="p">,</span> <span class="n">Trainer</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.model</span><span class="w"> </span><span class="kn">import</span> <span class="n">FeedForward</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.solver</span><span class="w"> </span><span class="kn">import</span> <span class="n">PINN</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="kn">import</span> <span class="n">Softplus</span>
|
||
|
||
<span class="n">warnings</span><span class="o">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s2">"ignore"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=492a37b4">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="The-problem-definition">The problem definition<a class="anchor-link" href="#The-problem-definition">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2c0b1777">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>The two-dimensional Poisson problem is mathematically written as:
|
||
\begin{equation}
|
||
\begin{cases}
|
||
\Delta u = 2\pi^2\sin{(\pi x)} \sin{(\pi y)} \text{ in } D, \\
|
||
u = 0 \text{ on } \Gamma_1 \cup \Gamma_2 \cup \Gamma_3 \cup \Gamma_4,
|
||
\end{cases}
|
||
\end{equation}
|
||
where $D$ is a square domain $[0,1]^2$, and $\Gamma_i$, with $i=1,...,4$, are the boundaries of the square.</p>
|
||
<p>The Poisson problem is written in <strong>PINA</strong> code as a class. The equations are written as <em>conditions</em> that should be satisfied in the corresponding domains. The <em>solution</em>
|
||
is the exact solution which will be compared with the predicted one. If interested in how to write problems see <a href="https://mathlab.github.io/PINA/_rst/tutorials/tutorial16/tutorial.html">this tutorial</a>.</p>
|
||
<p>We will directly import the problem from <code>pina.problem.zoo</code>, which contains a vast list of PINN problems and more.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=82c24040">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [2]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">pina.problem.zoo</span><span class="w"> </span><span class="kn">import</span> <span class="n">Poisson2DSquareProblem</span> <span class="k">as</span> <span class="n">Poisson</span>
|
||
|
||
<span class="c1"># initialize the problem</span>
|
||
<span class="n">problem</span> <span class="o">=</span> <span class="n">Poisson</span><span class="p">()</span>
|
||
|
||
<span class="c1"># print the conditions</span>
|
||
<span class="nb">print</span><span class="p">(</span>
|
||
<span class="sa">f</span><span class="s2">"The problem is made of </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="si">}</span><span class="s2"> conditions: </span><span class="se">\n</span><span class="s2">"</span>
|
||
<span class="sa">f</span><span class="s2">"They are: </span><span class="si">{</span><span class="nb">list</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="si">}</span><span class="s2">"</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="c1"># let's discretise the domain</span>
|
||
<span class="n">problem</span><span class="o">.</span><span class="n">discretise_domain</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="s2">"grid"</span><span class="p">,</span> <span class="n">domains</span><span class="o">=</span><span class="p">[</span><span class="s2">"D"</span><span class="p">])</span>
|
||
<span class="n">problem</span><span class="o">.</span><span class="n">discretise_domain</span><span class="p">(</span>
|
||
<span class="mi">100</span><span class="p">,</span>
|
||
<span class="s2">"grid"</span><span class="p">,</span>
|
||
<span class="n">domains</span><span class="o">=</span><span class="p">[</span><span class="s2">"g1"</span><span class="p">,</span> <span class="s2">"g2"</span><span class="p">,</span> <span class="s2">"g3"</span><span class="p">,</span> <span class="s2">"g4"</span><span class="p">],</span>
|
||
<span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>The problem is made of 5 conditions:
|
||
They are: ['g1', 'g2', 'g3', 'g4', 'D']
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=7086c64d">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="Solving-the-problem-with-standard-PINNs">Solving the problem with standard PINNs<a class="anchor-link" href="#Solving-the-problem-with-standard-PINNs">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=72ba4501">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>After the problem, the feed-forward neural network is defined, through the class <code>FeedForward</code>. This neural network takes as input the coordinates (in this case $x$ and $y$) and provides the unkwown field of the Poisson problem. The residual of the equations are evaluated at several sampling points and the loss minimized by the neural network is the sum of the residuals.</p>
|
||
<p>In this tutorial, the neural network is composed by two hidden layers of 10 neurons each, and it is trained for 1000 epochs with a learning rate of 0.006 and $l_2$ weight regularization set to $10^{-8}$. These parameters can be modified as desired. We set the <code>train_size</code> to 0.8 and <code>test_size</code> to 0.2, this mean that the discretised points will be divided in a 80%-20% fashion, where 80% will be used for training and the remaining 20% for testing.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=e7d20d6d">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [3]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># make model + solver + trainer</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.optim</span><span class="w"> </span><span class="kn">import</span> <span class="n">TorchOptimizer</span>
|
||
|
||
<span class="n">model</span> <span class="o">=</span> <span class="n">FeedForward</span><span class="p">(</span>
|
||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
|
||
<span class="n">func</span><span class="o">=</span><span class="n">Softplus</span><span class="p">,</span>
|
||
<span class="n">output_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">output_variables</span><span class="p">),</span>
|
||
<span class="n">input_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">input_variables</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">pinn</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span>
|
||
<span class="n">problem</span><span class="p">,</span>
|
||
<span class="n">model</span><span class="p">,</span>
|
||
<span class="n">optimizer</span><span class="o">=</span><span class="n">TorchOptimizer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.006</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer_base</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="o">=</span><span class="n">pinn</span><span class="p">,</span> <span class="c1"># setting the solver, i.e. PINN</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="c1"># setting max epochs in training</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="c1"># we train on cpu, also other are available</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># model summary statistics not printed</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="c1"># set train size</span>
|
||
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="c1"># set validation size</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="c1"># set testing size</span>
|
||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># shuffle the data</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="c1"># train</span>
|
||
<span class="n">trainer_base</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>You are using the plain ModelCheckpoint callback. Consider using LitModelCheckpoint which with seamless uploading to Model registry.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>GPU available: False, used: False
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>TPU available: False, using: 0 TPU cores
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>HPU available: False, using: 0 HPUs
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="9a2a4367-ffd2-4ec9-9a84-567725180a15" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('9a2a4367-ffd2-4ec9-9a84-567725180a15');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "71882bbb2b6049839891bee85bfcd226"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>`Trainer.fit` stopped: `max_epochs=1000` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=eb83cc7a">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>Now we plot the results using <code>matplotlib</code>.
|
||
The solution predicted by the neural network is plotted on the left, the exact one is in the center and on the right the error between the exact and the predicted solutions is showed.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=1ab83c03">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [4]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">plot_solution</span><span class="p">(</span><span class="n">solver</span><span class="p">):</span>
|
||
<span class="c1"># get the problem</span>
|
||
<span class="n">problem</span> <span class="o">=</span> <span class="n">solver</span><span class="o">.</span><span class="n">problem</span>
|
||
<span class="c1"># get spatial points</span>
|
||
<span class="n">spatial_samples</span> <span class="o">=</span> <span class="n">problem</span><span class="o">.</span><span class="n">spatial_domain</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="s2">"grid"</span><span class="p">)</span>
|
||
<span class="c1"># compute pinn solution, true solution and absolute difference</span>
|
||
<span class="n">data</span> <span class="o">=</span> <span class="p">{</span>
|
||
<span class="s2">"PINN solution"</span><span class="p">:</span> <span class="n">solver</span><span class="p">(</span><span class="n">spatial_samples</span><span class="p">),</span>
|
||
<span class="s2">"True solution"</span><span class="p">:</span> <span class="n">problem</span><span class="o">.</span><span class="n">solution</span><span class="p">(</span><span class="n">spatial_samples</span><span class="p">),</span>
|
||
<span class="s2">"Absolute Difference"</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="p">(</span><span class="n">spatial_samples</span><span class="p">)</span> <span class="o">-</span> <span class="n">problem</span><span class="o">.</span><span class="n">solution</span><span class="p">(</span><span class="n">spatial_samples</span><span class="p">)</span>
|
||
<span class="p">),</span>
|
||
<span class="p">}</span>
|
||
<span class="c1"># plot the solution</span>
|
||
<span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">tricontourf</span><span class="p">(</span> <span class="c1"># convert to torch tensor + flatten</span>
|
||
<span class="n">spatial_samples</span><span class="o">.</span><span class="n">extract</span><span class="p">(</span><span class="s2">"x"</span><span class="p">)</span><span class="o">.</span><span class="n">tensor</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span>
|
||
<span class="n">spatial_samples</span><span class="o">.</span><span class="n">extract</span><span class="p">(</span><span class="s2">"y"</span><span class="p">)</span><span class="o">.</span><span class="n">tensor</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span>
|
||
<span class="n">field</span><span class="o">.</span><span class="n">tensor</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(),</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=dfec566d">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>Here the solution:</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=7db10610">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [5]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
|
||
<span class="n">plot_solution</span><span class="p">(</span><span class="n">solver</span><span class="o">=</span><span class="n">pinn</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKcAAAJNCAYAAADkjxajAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAACtH0lEQVR4nOzde3wU1f3/8XcSSMIl4SIhEblEQA0igoJGqIrWCKhVsaiIKIqIVo0KeAOrgKIiFhEVlIripYUfqFVq1UYjSL0QQUFasYCKYLiYAKXcSwLJ/v7gm5Ulm2Rvs3Nm5vV8PPJQNrO7Z2cnc2be8zlnEnw+n08AAAAAAACADRLtbgAAAAAAAAC8i3AKAAAAAAAAtiGcAgAAAAAAgG0IpwAAAAAAAGAbwikAAAAAAADYhnAKAAAAAAAAtiGcAgAAAAAAgG0IpwAAAAAAAGAbwikAAAAAAADYhnAKrrNo0SIlJCRo0aJFMX3d66+/XtnZ2TF9TQCAvbKzs3X99dfH9DWt6ocAINbWr1+vhIQETZ48Oa7v65bj6mCfY8+ePbrxxhuVlZWlhIQEjRgxQpJUWlqqyy+/XEcddZQSEhI0derUuLcXMBnhlAu98sorSkhI8P+kpqbq+OOPV35+vkpLS/3LVR08v/nmm9Wem5qaqk2bNlV77XPOOUcnnXRSwGPZ2dlKSEjQ7bffXm35YO9hss2bN2v8+PFasWKF3U0BgLg7vO+o7YfQ5ZDnnntOr7zyit3NAIAaPffcc0pISFBubq7dTYmZ999/X+PHj4/5644fPz6gr2vYsKHatm2riy++WC+//LLKyspCep3HHntMr7zyim655Rb96U9/0rXXXitJGjlypD744AONGTNGf/rTn9SvX7+YfwbAyerZ3QBY5+GHH9axxx6r/fv367PPPtPzzz+v999/XytXrlTDhg1rfW5ZWZkef/xxPfvssyG/38yZMzVmzBi1atUq2qbbZvPmzXrooYeUnZ2tbt26Bfxu5syZqqystKdhABAHf/rTnwL+/dprr6mwsLDa4506dYpns4z13HPPqUWLFtUqr84++2z973//U3Jysj0NA4D/M3v2bGVnZ2vp0qX64Ycf1LFjR7ubFLX3339f06dPtySgkqTnn39ejRs3VllZmTZt2qQPPvhAN9xwg6ZOnap3331Xbdq08S8b7Pxg4cKFOuOMMzRu3Lhqj1966aW6++67LWk34HSEUy52wQUXqEePHpKkG2+8UUcddZSmTJmiv/71rxo0aFCtz+3WrVtYYVPnzp21Zs0aPf7443rmmWdi0n7T1K9f3+4mAIClrrnmmoB/f/HFFyosLKz2+JH27dtX50UPL0lMTFRqaqrdzQDgcevWrdPixYv11ltv6eabb9bs2bOrBSao7vLLL1eLFi38/x47dqxmz56tIUOG6IorrtAXX3zh/12w84MtW7boxBNPDPp406ZNY9bOgwcPqrKykgshcA2G9XnIr3/9a0mHOqq63H///aqoqNDjjz8e0mtnZ2dryJAhmjlzpjZv3hxR+5599ll17txZDRs2VLNmzdSjRw/NmTMnYJmvv/5aF1xwgdLT09W4cWOdd955AR1Ebe0LNqfIOeeco3POOUfSoSGIp512miRp6NCh/pLeqiEbwcaU7927V3fddZfatGmjlJQUnXDCCZo8ebJ8Pl/AcgkJCcrPz9f8+fN10kknKSUlRZ07d1ZBQUFoKwcADFE1vHvZsmU6++yz1bBhQ91///2SDu3rgl3JDrYP3rFjh0aMGOHff3bs2FGTJk0KqUL1q6++Ut++fdWiRQs1aNBAxx57rG644YaAZULdPx+paljHkaqGva9fv97/mb799lv94x//8PcXh/cnwYY/vvHGG+revbsaNGigFi1a6Jprrqk2hP76669X48aNtWnTJvXv31+NGzdWRkaG7r77blVUVNS5bgCgyuzZs9WsWTNddNFFuvzyyzV79uxal3/qqafUrl07NWjQQL1799bKlSsDfl9SUqKhQ4eqdevWSklJ0dFHH61LL73Uv1+s8txzz6lz585KSUlRq1atdNttt2nHjh21vndN+82qObEOPx6fPn26pMCh6FUqKys1depUde7cWampqcrMzNTNN9+s//73v7W+f10GDx6sG2+8UUuWLFFhYaH/8cPPD6o+w7p16/Tee+8FnEskJCTI5/Np+vTp1docSn94+NxgU6dOVYcOHZSSkqJ///vfkqTVq1fr8ssvV/PmzZWamqoePXronXfeCfgMVe34/PPPNWrUKGVkZKhRo0a67LLLtHXr1mqf+e9//7t69+6ttLQ0paen67TTTqt2brZkyRL169dPTZo0UcOGDdW7d299/vnnUa1reBeVUx6ydu1aSdJRRx1V57LHHnusP2waPXp0SNVTv//97/Xaa69FVD01c+ZM3XHHHbr88st15513av/+/frXv/6lJUuW6Oqrr5YkffvttzrrrLOUnp6ue++9V/Xr19cf//hHnXPOOfrHP/4R9Vj6Tp066eGHH9bYsWN100036ayzzpIk9erVK+jyPp9Pl1xyiT7++GMNGzZM3bp10wcffKB77rlHmzZt0lNPPRWw/Geffaa33npLt956q9LS0vTMM89owIABKi4uDuk7AQBT/Oc//9EFF1ygq666Stdcc40yMzPDev6+ffvUu3dvbdq0STfffLPatm2rxYsXa8yYMfr5559rnSR2y5Yt6tOnjzIyMjR69Gg1bdpU69ev11tvveVfJtz9cySmTp2q22+/XY0bN9bvf/97Sap1PbzyyisaOnSoTjvtNE2cOFGlpaV6+umn9fnnn+vrr78OuJpeUVGhvn37Kjc3V5MnT9ZHH32kJ598Uh06dNAtt9wSddsBeMPs2bP129/+VsnJyRo0aJCef/55ffnll/6LsYd77bXXtHv3bt12223av3+/nn76af3617/WN99849+3DRgwQN9++61uv/12ZWdna8uWLSosLFRxcbE/oBk/frweeugh5eXl6ZZbbtGaNWv87/v5559HPRLh5ptv1ubNm4MOOa/6fdX+9o477tC6des0bdo0ff3111G//7XXXqsXXnhBH374oc4///xqv+/UqZP+9Kc/aeTIkWrdurXuuusuSdIpp5zin3vq/PPP15AhQ/zPCbc/fPnll7V//37ddNNNSklJUfPmzfXtt9/qV7/6lY455hiNHj1ajRo10uuvv67+/fvrL3/5iy677LKA17j99tvVrFkzjRs3TuvXr9fUqVOVn5+vefPm+Zd55ZVXdMMNN6hz584aM2aMmjZtqq+//loFBQX+c7OFCxfqggsuUPfu3TVu3DglJibq5Zdf1q9//Wt9+umnOv300yNe1/AoH1zn5Zdf9knyffTRR76tW7f6NmzY4Js7d67vqKOO8jVo0MC3ceNGn8/n83388cc+Sb433nij2nO//PJL39q1a3316tXz3XHHHf7f9+7d29e5c+eA92vXrp3voosu8vl8Pt/QoUN9qampvs2bN9f4HsFceuml1V73SP379/clJyf71q5d639s8+bNvrS0NN/ZZ5/tf6zqPT/++OOANl533XXVXrN3796+3r17+//95Zdf+iT5Xn755WrLXnfddb527dr5/z1//nyfJN8jjzwSsNzll1/uS0hI8P3www/+xyT5kpOTAx775z//6ZPke/bZZ2v93ABgl9tuu8135KFC7969fZJ8M2bMqLa8JN+4ceOqPX7kPnjChAm+Ro0a+b777ruA5UaPHu1LSkryFRcX19imt99+299P1SSc/fORbRs3bly1z+zz/dI/rlu3zv9Y586dA/qQKkf2Q+Xl5b6WLVv6TjrpJN///vc//3LvvvuuT5Jv7Nix/seuu+46nyTfww8/HPCap5xyiq979+41fmYAONxXX33lk+QrLCz0+Xw+X2Vlpa9169a+O++8M2C5devW+SQFnCP4fD7fkiVLfJJ8I0eO9Pl8Pt9///tfnyTfH/7whxrfc8uWLb7k5GRfnz59fBUVFf7Hp02b5pPkmzVrlv+xI4+rgx2/H96+w4/Ng/VNPp/P9+mnn/ok+WbPnh3weEFBQdDHj1S1/9+6dWvQ31etg8suu6zGz+HzBZ4bHU6S77bbbgt4LNT+sGo9pKen+7Zs2RKw7Hnnnefr0qWLb//+/f7HKisrfb169fIdd9xx/seq+rG8vDxfZWWl//GRI0f6kpKSfDt27PD5fD7fjh07fGlpab7c3NyAPqvqdav+e9xxx/n69u0b8Fr79u3zHXvssb7zzz+/2ucH6sKwPhfLy8tTRkaG2rRpo6uuukqNGzfW22+/rWOOOSak57dv395/heDnn38O6TkPPPCADh48GPJwwCpNmzbVxo0b9eWXXwb9fUVFhT788EP1799f7du39z9+9NFH6+qrr9Znn32mXbt2hfWe0Xr//feVlJSkO+64I+Dxu+66Sz6fT3//+98DHs/Ly1OHDh38/z755JOVnp6uH3/8MS7tBYBYSUlJ0dChQyN+/htvvKGzzjpLzZo107Zt2/w/eXl5qqio0CeffFLjc6sqjN59910dOHAg6DLh7p+t9tVXX2nLli269dZbA+aiuuiii5STk6P33nuv2nN+97vfBfz7rLPOor8AELLZs2crMzNT5557rqRDQ+AGDhyouXPnBh0i3L9//4BzhNNPP125ubl6//33JUkNGjRQcnKyFi1aVOMQuY8++kjl5eUaMWKEEhN/Oc0cPny40tPTg+7rYumNN95QkyZNdP755wf0Ld27d1fjxo318ccfR/X6jRs3liTt3r07Fs2VFH5/OGDAAGVkZPj/vX37di1cuFBXXnmldu/e7X/+f/7zH/Xt21fff/99teHjN910U8CwwrPOOksVFRX66aefJEmFhYXavXu3Ro8eXW3+xKrnrVixQt9//72uvvpq/ec///G/7969e3Xeeefpk08+4UZSCBvhlItNnz5dhYWF+vjjj/Xvf/9bP/74o/r27RvWa4QbNkUSaEnSfffdp8aNG+v000/Xcccdp9tuuy1gvPLWrVu1b98+nXDCCdWe26lTJ1VWVmrDhg0hv18s/PTTT2rVqpXS0tKqtafq94dr27Zttddo1qxZ1GPgASDejjnmmKgmYP3+++9VUFCgjIyMgJ+8vDxJh4bu1aR3794aMGCAHnroIbVo0UKXXnpptVt8h7t/tlrV+wXrw3Jycqq1JzU1NeDkQ6K/ABC6iooKzZ07V+eee67WrVunH374QT/88INyc3NVWlqqBQsWVHvOcccdV+2x448/3j+fVEpKiiZNmqS///3vyszM1Nlnn60nnnhCJSUl/uVr2tclJyerffv2lu97v//+e+3cuVMtW7as1r/s2bOn1r4lFHv27JGkan1LNMLtD4899tiAf//www/y+Xx68MEHq71G1eT3R77GkeckzZo1kyR/H1M1FcxJJ51Ua7sl6brrrqv2vi+++KLKysq0c+fOsNYFwJxTLnb66af779YXqfbt2+uaa67RCy+8oNGjR4f0nN///vf605/+pEmTJql///4hPadTp05as2aN3n33XRUUFOgvf/mLnnvuOY0dO1YPPfRQFJ/gkGCT20qHOu+kpKSoXz8UNb2Pr47JeQHANA0aNAhr+SOv0ldWVur888/XvffeG3T5448/vsbXSkhI0JtvvqkvvvhCf/vb3/y3+H7yySf1xRdf+K9sR6q2/iJe4tUvAXCnhQsX6ueff9bcuXM1d+7car+fPXu2+vTpE/brjhgxQhdffLHmz5+vDz74QA8++KAmTpyohQsX6pRTTomqzbHY91ZWVqply5Y1Tvx+ZOgfrqoJ4jt27BjV6xwu3P7wyP63qjrp7rvvrrEI4cj2xuKcpOp9//CHP6hbt25Bl4m2P4b3EE6hTg888ID+/Oc/a9KkSSEt36FDB11zzTX64x//GNYk5Y0aNdLAgQM1cOBAlZeX67e//a0effRRjRkzRhkZGWrYsKHWrFlT7XmrV69WYmKi2rRpU+NrN2vWLOhdQn766aeAYYI1dYzBtGvXTh999JF2794dcAVl9erV/t8DgJcE29eWl5dXq6Tt0KGD9uzZ478yHIkzzjhDZ5xxhh599FHNmTNHgwcP1ty5c3XjjTdGtX+uuoK8Y8eOgEnKg13xD7XPqHq/NWvW+O+cW2XNmjX0FwBiavbs2WrZsqX/rnaHe+utt/T2229rxowZAUFHVSXM4b777rtqd6ru0KGD7rrrLt111136/vvv1a1bNz355JP685//HLCvO/z4ury8XOvWrat1n3/4vvdw4ex7O3TooI8++ki/+tWvwr6IEoqqCdjDHYlSm2j7w6r1XL9+/aj61CPbJB0K42oK4qqWSU9Pj9n7AgzrQ50OD5sOL92tzQMPPKADBw7oiSeeCGn5//znPwH/Tk5O1oknniifz6cDBw4oKSlJffr00V//+teA29WWlpZqzpw5OvPMM5Wenl7rZ/jiiy9UXl7uf+zdd9+tNhSwUaNGkqp3jMFceOGFqqio0LRp0wIef+qpp5SQkKALLrigztcAADfp0KFDtfkxXnjhhWpXvq+88koVFRXpgw8+qPYaO3bs0MGDB2t8j//+97/Vru5WXbWtGtoXzf656oD78M+xd+9evfrqq9WWbdSoUUj9RY8ePdSyZUvNmDEjYPjh3//+d61atUoXXXRRna8BAKH43//+p7feeku/+c1vdPnll1f7yc/P1+7du/XOO+8EPG/+/PkBcxMtXbpUS5Ys8e8v9+3bp/379wc8p0OHDkpLS/Pv1/Ly8pScnKxnnnkmYD/90ksvaefOnbXu69q1a6ekpKRqfchzzz1XbdmajtevvPJKVVRUaMKECdWec/DgwZD21zWZM2eOXnzxRfXs2VPnnXdexK9zpGj6Q0lq2bKlzjnnHP3xj38MOqXK1q1bw25Tnz59lJaWpokTJ1b7zqu+1+7du6tDhw6aPHmyf7hjtO8LUDmFkFQN1VuzZo06d+5c5/JVgVawg/lg+vTpo6ysLP3qV79SZmamVq1apWnTpumiiy7yX/V+5JFHVFhYqDPPPFO33nqr6tWrpz/+8Y8qKyurMwS78cYb9eabb6pfv3668sortXbtWv35z38OmKC8qt1NmzbVjBkzlJaWpkaNGik3N7fa+G5Juvjii3Xuuefq97//vdavX6+uXbvqww8/1F//+leNGDGi2msDgNvdeOON+t3vfqcBAwbo/PPP1z//+U998MEHatGiRcBy99xzj9555x395je/0fXXX6/u3btr7969+uabb/Tmm29q/fr11Z5T5dVXX9Vzzz2nyy67TB06dNDu3bs1c+ZMpaen68ILL5QU3f65T58+atu2rYYNG6Z77rlHSUlJmjVrljIyMlRcXBywbPfu3fX888/rkUceUceOHdWyZctqlVHSoSvakyZN0tChQ9W7d28NGjRIpaWlevrpp5Wdna2RI0eGu6oBIKh33nlHu3fv1iWXXBL092eccYYyMjI0e/ZsDRw40P94x44ddeaZZ+qWW25RWVmZpk6dqqOOOso/3Oy7777TeeedpyuvvFInnnii6tWrp7ffflulpaW66qqrJB0aNjdmzBg99NBD6tevny655BKtWbNGzz33nE477TRdc801Nba7SZMmuuKKK/Tss88qISFBHTp00Lvvvht0nqju3btLku644w717dtXSUlJuuqqq9S7d2/dfPPNmjhxolasWKE+ffqofv36+v777/XGG2/o6aef1uWXX17nOnzzzTfVuHFjlZeXa9OmTfrggw/0+eefq2vXrnrjjTfqfH44oukPq0yfPl1nnnmmunTpouHDh6t9+/YqLS1VUVGRNm7cqH/+859htSk9PV1PPfWUbrzxRp122mm6+uqr1axZM/3zn//Uvn379OqrryoxMVEvvviiLrjgAnXu3FlDhw7VMccco02bNunjjz9Wenq6/va3v0WzauBFtt0nEJapuk1obbfZ9vl+uWXrG2+8EdJzq25v3blz54DHa7pd6vfff+9LSkqq9h7B/PGPf/SdffbZvqOOOsqXkpLi69Chg++ee+7x7dy5M2C55cuX+/r27etr3Lixr2HDhr5zzz3Xt3jx4qCf68hb0T755JO+Y445xpeSkuL71a9+5fvqq698vXv3rnYb8L/+9a++E0880VevXr2AW9cGu1Xs7t27fSNHjvS1atXKV79+fd9xxx3n+8Mf/hBwS1WfL/itY32+6rcwBwCTBLtdd+/evav1A1UqKip89913n69Fixa+hg0b+vr27ev74Ycfgu7rdu/e7RszZoyvY8eOvuTkZF+LFi18vXr18k2ePNlXXl5eY5uWL1/uGzRokK9t27a+lJQUX8uWLX2/+c1vfF999VW11w9l/xysbcuWLfPl5ub6kpOTfW3btvVNmTLF3z+uW7fOv1xJSYnvoosu8qWlpfkk+fuTmvqhefPm+U455RRfSkqKr3nz5r7BgwcH3Lrd5zvU1zRq1Kja5666xTkA1Obiiy/2paam+vbu3VvjMtdff72vfv36vm3btvnWrVvnk+T7wx/+4HvyySd9bdq08aWkpPjOOuss3z//+U//c7Zt2+a77bbbfDk5Ob5GjRr5mjRp4svNzfW9/vrr1V5/2rRpvpycHF/9+vV9mZmZvltuucX33//+N2CZYMfVW7du9Q0YMMDXsGFDX7NmzXw333yzb+XKlQHH4z6fz3fw4EHf7bff7svIyPAlJCRU2ze+8MILvu7du/saNGjgS0tL83Xp0sV37733+jZv3lzruqvaz1b9pKam+lq3bu37zW9+45s1a5Zv//791Z4T7HPUdG5U0/lAKP3h4d9TMGvXrvUNGTLEl5WV5atfv77vmGOO8f3mN7/xvfnmm/5lajrPq6nPeuedd3y9evXyNWjQwJeenu47/fTTff/v//2/gGW+/vpr329/+1v/OVy7du18V155pW/BggVB2wnUJsHnYzZmAAAAAAAA2IM5pwAAAAAAAGAbwikAAAAAAADYhnAKAAAAAAAAtgk7nPrkk0908cUXq1WrVkpISND8+fPrfM6iRYt06qmnKiUlRR07dtQrr7wSQVMBwN2mT5+u7OxspaamKjc3V0uXLg3peXPnzlVCQoL69+9vbQMjRL8BANYJp+/49ttvNWDAAGVnZyshIUFTp06ttsz48eOVkJAQ8JOTk2PhJwiOvgMArBNO3zFz5kydddZZatasmZo1a6a8vLxal//d735XYx9Tm7DDqb1796pr166aPn16SMuvW7dOF110kc4991ytWLFCI0aM0I033qgPPvgg3LcGANeaN2+eRo0apXHjxmn58uXq2rWr+vbtG/QWyodbv3697r77bp111llxamn46DcAwBrh9h379u1T+/bt9fjjjysrK6vG1+3cubN+/vln/89nn31m1UeoEX0HAFgj3L5j0aJFGjRokD7++GMVFRWpTZs26tOnjzZt2lRt2bfffltffPGFWrVqFXa7orpbX0JCgt5+++1ar9bfd999eu+997Ry5Ur/Y1dddZV27NihgoKCoM8pKytTWVmZ/9+VlZXavn27jjrqKCUkJETaXAAO5/P5tHv3brVq1UqJiZGNSt6/f7/K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atiwYdqzZ09Iz/X5fLrggguUkJCg+fPnW9tQAIAxrOo7EhISqv3MnTvXgk/gfARU0akKqUL5AVC76dOnKzs7W6mpqcrNzdXSpUtrXPbbb7/VgAEDlJ2drYSEBE2dOrXaMhMnTtRpp52mtLQ0tWzZUv3799eaNWvCahPhFAA4zODBg/Xtt9+qsLBQ7777rj755BPddNNNIT136tSpSkhIsLiFAADTWNl3vPzyy/r555/9P/37949Rq92HgCo8kQZNhFVAzebNm6dRo0Zp3LhxWr58ubp27aq+fftqy5YtQZfft2+f2rdvr8cff1xZWVlBl/nHP/6h2267TV988YUKCwt14MAB9enTR3v37g25XfUi+jQekVKcbHcTADjcrl27Av6dkpKilJTID0xXrVqlgoICffnll+rRo4ck6dlnn9WFF16oyZMnq1WrVjU+d8WKFXryySf11Vdf6eijj464DQAA68S635Cs7zuaNm1a4wkLEKlYhkqRvhbz1MIpwuk7pkyZouHDh2vo0KGSpBkzZui9997TrFmzNHr06GrLn3baaTrttNMkKejvJamgoCDg36+88opatmypZcuW6eyzzw7pMxBOAfCc5A3JSkq1Nnyu2F8pSWrTpk3A4+PGjdP48eMjft2ioiI1bdrUf3IhSXl5eUpMTNSSJUt02WWXBX3evn37dPXVV2v69OmcQABABKzuO6zqNyTr+47bbrtNN954o9q3b6/f/e53Gjp0qKOrdHe3SVDTUutef2eHFDVZW2bdGyBmYhWQEXLFV5O1ZcZUKZrWd5SXl2vZsmUaM2aM/7HExETl5eWpqKgoZu3auXOnJKl58+YhP8d14dT6jRl2NwEA/DZs2KD09HT/v6O9+l1SUqKWLVsGPFavXj01b95cJSUlNT5v5MiR6tWrly699NKo3h8AYK1Y9xuStX3Hww8/rF//+tdq2LChPvzwQ916663as2eP7rjjjqjbbafd7RK4mZGN3DYUL5TPQ4CFaITad2zbtk0VFRXKzMwMeDwzM1OrV6+OSVsqKys1YsQI/epXv9JJJ50U8vNcF04BgEnS09MDOoqajB49WpMmTap1mVWrVkXUhnfeeUcLFy7U119/HdHzAQDxE2q/IZnRdzz44IP+/z/llFO0d+9e/eEPf3B8OGU1qqdwpCMDLMIqhCOcvsNqt912m1auXKnPPvss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/rUaNWqk9PR0nX322frf//4XhxbDSeyszCH08Q6qZ+PPqr4j0tf1Ii4eAs7gheqp6dOnKzs7W6mpqcrNzdXSpUtrXf6NN95QTk6OUlNT1aVLF73//vsBvy8tLdX111+vVq1aqWHDhurXr5++//77sNpEOAUADjN48GB9++23Kiws1LvvvqtPPvlEN910U63PKSoqUr9+/dSnTx8tXbpUX375pfLz85lIFsYxPaAyvX3h4E593mJV3xHJ6wJwF6qnnGXevHkaNWqUxo0bp+XLl6tr167q27evtmzZEnT5xYsXa9CgQRo2bJi+/vpr9e/fX/3799fKlSslST6fT/3799ePP/6ov/71r/r666/Vrl075eXlae/evSG3K6IJ0b3CbRMectc++7ihcq2sbbndTYCkVatWqaCgQF9++aV69OghSXr22Wd14YUXavLkyWrVqlXQ540cOVJ33HGHRo8e7X/shBNOiEubgXCZOkG63cEU800hUlb1HZG+LtyNoAJukL7OvefNU6ZM0fDhwzV06FBJ0owZM/Tee+9p1qxZAfv7Kk8//bT69eune+65R5I0YcIEFRYWatq0aZoxY4a+//57ffHFF1q5cqU6d+4sSXr++eeVlZWl//f//p9uvPHGkNrFJXMAsNCuXbsCfsrKouvoioqK1LRpU/9JgCTl5eUpMTFRS5YsCfqcLVu2aMmSJWrZsqV69eqlzMxM9e7dW5999llUbXGr87NW292EsMW6AsaEEMTuIOhIprXHBFy0sEas+w3Jur4jktd1A7Z9oDpCSXuF2neUl5dr2bJlysvL8z+WmJiovLw8FRUVBX1OUVFRwPKS1LdvX//yVe+Vmpoa8JopKSlhnW9QOQVYLN5VU8xnULe0DT4lJfssfY+K8kOv36ZN4AntuHHjNH78+Ihft6SkRC1btgx4rF69emrevLlKSkqCPufHH3+UJI0fP16TJ09Wt27d9Nprr+m8887TypUrddxxx0XcHsBKplRQEUxBktKKre07rOo3JOv6jkheFwC8xOrzjnD7jm3btqmiokKZmZkBj2dmZmr16uAXaEtKSoIuX7Wfz8nJUdu2bTVmzBj98Y9/VKNGjfTUU09p48aN+vnnn0P+LFROeYwbhpcBTrJhwwbt3LnT/zNmzJigy40ePVoJCQm1/tTUYdSlsrJSknTzzTdr6NChOuWUU/TUU0/phBNO0KxZsyL+bAjEBM/WsDsYsvv94T2h9hsSfQcAs1A9ZZ9w+o5Yq1+/vt566y199913at68uRo2bKiPP/5YF1xwQVjz21I5ZaPd7RKU9pO11RsA7JWenq709PQ6l7vrrrt0/fXX17pM+/btlZWVVW2ywoMHD2r79u3KysoK+ryjjz5aknTiiScGPN6pUycVFxfX2TZYz21zHMaaXRVUJgVTsR5qyWTo5gq135Ds7zsieV24G+EEkldvVHlOa7ub4Tmh9h0tWrRQUlKSSktLAx4vLS2tcb+dlZVV5/Ldu3fXihUrtHPnTpWXlysjI0O5ubkBw77rQjjlQUyMHj9UqiFUGRkZysjIqHO5nj17aseOHVq2bJm6d+8uSVq4cKEqKyuVm5sb9DnZ2dlq1aqV1qxZE/D4d999pwsuuCD6xsOVdrZPUZMfzekr4h1QmRRMATWxu++I5HUBAPZJTk5W9+7dtWDBAvXv31/SoUrZBQsWKD8/P+hzevbsqQULFmjEiBH+xwoLC9WzZ89qyzZp0kSS9P333+urr77ShAkTQm4bw/oAF2G+Kffr1KmT+vXrp+HDh2vp0qX6/PPPlZ+fr6uuusp/V6RNmzYpJydHS5culSQlJCTonnvu0TPPPKM333xTP/zwgx588EGtXr1aw4YNs/PjIIa8UAlT3qmN5aFRPN4DiDer+o5QXheA91BBZ7ZRo0Zp5syZevXVV7Vq1Srdcsst2rt3r//ufUOGDAkYFnjnnXeqoKBATz75pFavXq3x48frq6++Cgiz3njjDS1atEg//vij/vrXv+r8889X//791adPn5DbReWUR1E9ZT2qpmCV2bNnKz8/X+edd54SExM1YMAAPfPMM/7fHzhwQGvWrNG+ffv8j40YMUL79+/XyJEjtX37dnXt2lWFhYXq0KGDHR8BiEpVeBTLSiqTAykT7p4I57Oq76jrdQEAZhk4cKC2bt2qsWPHqqSkRN26dVNBQYF/0vPi4uKAuaJ69eqlOXPm6IEHHtD999+v4447TvPnz9dJJ53kX+bnn3/WqFGjVFpaqqOPPlpDhgzRgw8+GFa7CKdsxrxTcAJumWyW5s2ba86cOTX+Pjs7Wz5f9f3K6NGjNXr0aCubBpcxbWjfkWIRUpkcSgGxZFXfUdfrwjuolsHhmHvKbPn5+TUO41u0aFG1x6644gpdccUVNb7eHXfcoTvuuCOqNhFOARagagoA4ieSkMrLoVQshoBy0QIAUBcCKoSDcMrDGNoHu2S33mp3EwC4kBsDJ4b0AWbiLqsAEFtMiA64BJOhA7BiUnTCEcQaFygA92FIH2rCtoFQEU7Vwe1l6ww/iz3WKYBIuL2/QfgIBgH34WIiAARHOGUAOikAgMkISQAAQKSonkIoCKdApU8MsS4BACazYugnAABAtAinABeg+g4wA3PpIFaoVgMAuAnVU6gL4RQkUfGDmjEPDuAsVlXGEJYAAIIhdECo2FZQG8IpQ1D54nwEfAAAL7DrosX5WatteV/AVBx7AnATwin40cFFjnUHwAuonooP1jOAUDRZW2Z3E4CwUT2FmhBOAQ5H1R3gHgyjhZWYDB0AYAICKgRDOBUCL50sUAEUPtYZANNYGUJQ1WMt1i8AJyFkQKTYdnAkwimDmFIBQ9gSOtZV+LibGQB4F30AAAAIhnAKQRG61M0L68hLVYMAQkd1jzWsXK+xqqajXwBQhcoXRIttCIcjnAIczJRqO8Bt3HBXMOYXAgAApiOgQhXCKdTIC5VBkWLdALCKUypTqJ6KLdYnAMCrCKggEU4Zx7RKGEKY6lgnAGrDnDowDVV0gDWccjHBCoQJAGKNcAp1Iowxk2lBJgDvodonNliPAACvI/AE4VSIvHxlBL8gqAPgJFTMAAAApyCg8jbCKQOZWBFDKOO9dUAgCyAUVP1Ex0nrj34BgESAAMAahFMImdfCGZOZGGACAMITj2CK6jkAgJMQfnoX4RQQAoK52GCiaCA0saxQiUc44aTqH9iHPgAAEAoCKm8inDKUqZUxXgxpvPiZASBcBFThYX0BAFAzAirvIZxC2LwU1pj4WU0NLgEAoYlXMMWQPsC9mqwts+V9CQwQT2xv3kI4FQYmAv2FiaFNrHnhM9aEbR1wl3iFFFQDuRf9AgDADgRU3kE4ZTDTK2R2dkhxbYDj1s8FID6YWwc1IcADACA8BFTeQDiFqLktyDH585geWAKIHadWqhC+1Cye68ZtQ/rOz1ptdxMAzyMggJ3Y/tyPcMpwTgkjTA50QuXmSjAAiGdYQUAFAABijYDK3QinEDNODnac3PZYc2q1BgCzEFAFYn0AABA9Air3IpwKkx0n7k6pnpKcGfI4pc1O2g4AQCKQqRLv9RDrKrlYHPswDxsAIFYIqNyJcAoxVzU8zvTQxwltBOBtsb4g4rZ5iJyAgA7A4dJ+8tndhIgQBsA0bJPuQzjlEE6tmjEx/HFiKOXU7/9wXDUHvMnL4YyXPzsA6zRZW2Z3EwAjJK/eSEjlIq4IpzjpNZspYZAp7TAZ800B7mdH9ZQXQxq7PjPVcQBijZN/mI5t1B1cEU7Fm10n8E6vnrErHCKUAmAHLpwE8lJA5abPykULAIATEFA5H+EU4i4ec1I5Zd6rUDg9lASc6vys1XY3wXXcFNrUxM7PSNUUAMDLCKicrZ7dDYC3HRkeRTOG3g1BFAAcqaxtuVKKk2P6mruzE5S23p5JeXe2T1GTH905X4oXwjcAv4j1vtlEnOzDaZJXb1R5Tmu7m4EIEE45zO52CY69y0coCJgCxbNqiqEbAOLFjQGV3cEUVVMAABxCQOVMDOuLECfyAAAnszvM2Nk+xfZAJ1bc8jmOFKtjHeZfAwDEG1V/zkM45UDMQeQNbvqeOTEBouPmCyJOD3ZMaL/dQSOA+IlmCoxwcXIPp0tevZHt2EEIpwAAsIjpwawpoYYJAU8knNpup+HmBACAaBBSOQNzTjmU2+ee8jo3VU0BQCiqgh4nzEVlUihlVcDo5mo9AIA3VQVUzEdlJiqnosCBG9yCbRnwLlOqp6qYFPwcyU3zZAFAbagygZtRSWUmwikHo7rGnfheAQTjpRDZtBDItPZUMS1YDMb0oa1APDHqATALIZVZCKcAAPA4U0MOE0Ihu98fAABYi5DKDIRTDkeVjbvwfQLuQ+VI9OwIqUwIxmpjZaDopSo9ANVxkg6vIqSyF+FUlEw4gCPQQDSs3oY5MYeTmXaXMCv/Xk2tnjpcVWBkRWh0+GubHEoB8K4ma82/YQTgBsmrNyr5u812N8NzuFsfYAhCRgAI3ZEBUrh3+XNyAOWEIBGAM1E1AsAurgmnsltv1fqNGXY3wza72yUwyaKDEUwBMMHu7ASlrXdmX+LksMkksazOo3IWAACEimF9MWDC0D6JgAPhM2XbBRA6q/9uqcoxG98PAKtQNQXAToRTLkNA5Tx8Z4D7UUECAO6SUpwc1/djvikAbkc4BdiIYAqAiajOMZPV3wvVtIB1mH4DAGpHOBUjJh3QEXggFPHYZqkWAaxhUp+D+CAwBGAlhvQBsBvhlEsRUJmP7wiAyQhDEI1YXZw4P2t1TF4HAACYjXDKxQg/zMV3A8AJCKjMEI/vgWo8wFzMNwXAC1wVTtk9hIgDOzgF2yoQf7Huo/g79gYCQgBWY0gfABO4KpxCdVTomIfvBNHavn27Bg8erPT0dDVt2lTDhg3Tnj17an1OSUmJrr32WmVlZalRo0Y69dRT9Ze//CVOLYaTEY7Yh3WPWAq371i/fr0SEhKC/rzxxhv+5YL9fu7cufH4SACACE2fPl3Z2dlKTU1Vbm6uli5dWuvyb7zxhnJycpSamqouXbro/fffr7bMqlWrdMkll6hJkyZq1KiRTjvtNBUXF4fcJsKpGDPxSjZhiDn4LhALgwcP1rfffqvCwkK9++67+uSTT3TTTTfV+pwhQ4ZozZo1euedd/TNN9/ot7/9ra688kp9/fXXcWq1czHnDSGJ25l47ILYC7fvaNOmjX7++eeAn4ceekiNGzfWBRdcELDsyy+/HLBc//79Lf40iBWqpgDvmTdvnkaNGqVx48Zp+fLl6tq1q/r27astW7YEXX7x4sUaNGiQhg0bpq+//lr9+/dX//79tXLlSv8ya9eu1ZlnnqmcnBwtWrRI//rXv/Tggw8qNTU15HbVi/qTwRF2t0vgFrY2MyWYitdJiN3DbE2xa9eugH+npKQoJSUl4tdbtWqVCgoK9OWXX6pHjx6SpGeffVYXXnihJk+erFatWgV93uLFi/X888/r9NNPlyQ98MADeuqpp7Rs2TKdcsopEbcH9iprW66U4uS4vNfu7ASlracfiRcnB4Ls/6MT635DiqzvSEpKUlZWVsBjb7/9tq688ko1btw44PGmTZtWWxa/iOYYnPmmAIQinL5jypQpGj58uIYOHSpJmjFjht577z3NmjVLo0ePrrb8008/rX79+umee+6RJE2YMEGFhYWaNm2aZsyYIUn6/e9/rwsvvFBPPPGE/3kdOnQI6zMQTlkgnicL4SCgso8pwRQOSV9Xpnr1rP1ODh48dDDZpk2bgMfHjRun8ePHR/y6RUVFatq0qf/kQpLy8vKUmJioJUuW6LLLLgv6vF69emnevHm66KKL1LRpU73++uvav3+/zjnnnIjbAu8hoIqPeAZTVE2FLn29tX2HVf2GFHnfcbhly5ZpxYoVmj59erXf3XbbbbrxxhvVvn17/e53v9PQoUOVkODeYx8Tj/MBmMnq845w+47y8nItW7ZMY8aM8T+WmJiovLw8FRUVBX2PoqIijRo1KuCxvn37av78+ZKkyspKvffee7r33nvVt29fff311zr22GM1ZsyYsCppCac8hoAq/gimvG3Dhg1KT0/3/zvaq98lJSVq2bJlwGP16tVT8+bNVVJSUuPzXn/9dQ0cOFBHHXWU6tWrp4YNG+rtt99Wx44do2oPwpPdeqvWb8yI6WuaekEEkXFyxRRiI9b9hhR533G4l156SZ06dVKvXr0CHn/44Yf161//Wg0bNtSHH36oW2+9VXv27NEdd9wRdbthLYb0Ae4Rat+xbds2VVRUKDMzM+DxzMxMrV4dfCqLkpKSoMtX9R9btmzRnj179Pjjj+uRRx7RpEmTVFBQoN/+9rf6+OOP1bt375A+A+GUBxFQeRdXyOMvPT09oKOoyejRozVp0qRal1m1alXE7XjwwQe1Y8cOffTRR2rRooXmz5+vK6+8Up9++qm6dOkS8evCe6iesk68gyn6BDOF2m9I1vcdVf73v/9pzpw5evDBB6v97vDHTjnlFO3du1d/+MMfCKcAII7C6TtirbKyUpJ06aWXauTIkZKkbt26afHixZoxY4Z3wykrrkpHwvQr2QRU8UHVFEJ111136frrr691mfbt2ysrK6vaZIUHDx7U9u3ba5zvY+3atZo2bZpWrlypzp07S5K6du2qTz/9VNOnT/ePFYdzxbvPIaACzGBl33G4N998U/v27dOQIUPqXDY3N1cTJkxQWVlZTKq+AACx06JFCyUlJam0tDTg8dLS0hr7g6ysrFqXb9GiherVq6cTTzwxYJlOnTrps88+C7ltrgunEDoCKmuZFkxxhdxsGRkZysioO1jv2bOnduzYoWXLlql79+6SpIULF6qyslK5ublBn7Nv3z5Jh8aTHy4pKcl/pQMIFwFVbLllOF8sJ0PnTpl1s7LvONxLL72kSy65JKT3WrFihZo1a0YwFQNWTobOkD7Am5KTk9W9e3ctWLDAPx9UZWWlFixYoPz8/KDP6dmzpxYsWKARI0b4HyssLFTPnj39r3naaadpzZo1Ac/77rvv1K5du5Dbllj3IoiUE8IA0wIUt/D6euVOTdbp1KmT+vXrp+HDh2vp0qX6/PPPlZ+fr6uuusp/t6VNmzYpJydHS5culSTl5OSoY8eOuvnmm7V06VKtXbtWTz75pAoLC7ndtw2s+vuwo89xS6BiNzvWoxOOURA7kfQdVX744Qd98sknuvHGG6u97t/+9je9+OKLWrlypX744Qc9//zzeuyxx3T77bfH5XM5AReCAZhm1KhRmjlzpl599VWtWrVKt9xyi/bu3eu/e9+QIUMCJky/8847VVBQoCeffFKrV6/W+PHj9dVXXwWEWffcc4/mzZunmTNn6ocfftC0adP0t7/9TbfeemvI7aJyClRQxZjXgylYb/bs2crPz9d5552nxMREDRgwQM8884z/9wcOHNCaNWv8FVP169fX+++/r9GjR+viiy/Wnj171LFjR7366qu68MIL7foYjnJ+1moVluTY3QwjUUEVHQI+xEu4fUeVWbNmqXXr1urTp0+116xfv76mT5+ukSNHyufzqWPHjv5blMNcVE0B3jZw4EBt3bpVY8eOVUlJibp166aCggL/pOfFxcUBIy569eqlOXPm6IEHHtD999+v4447TvPnz9dJJ53kX+ayyy7TjBkzNHHiRN1xxx064YQT9Je//EVnnnlmyO0inLKY6XNPVSGgig1TgymukLtL8+bNNWfOnBp/n52dLZ8v8O/5uOOO01/+8hermwab2dXnEFBFxq5gyqo+gapZs0XSd0jSY489psceeyzoc/r166d+/frFrI0AgPjIz8+vcRjfokWLqj12xRVX6Iorrqj1NW+44QbdcMMNEbeJYX3wMzVYcQrWH4BQufEkngqg8LC+AGeK1wUAq+abomoKgKlcGU6ZdtDvpKqV3e0SCFnCZPo6i/f2Z9rfH+A1dvY5BC51252dYOt6ctIxCeB0jEoAgNC5MpxC9EwOW0zCegKAQARUNXPzuuHCBGA+qqYAmIxwKk6ceKWS4KV2Tlg/TtzuAK+w8mTe7r99u6uDTGTC+rB7uwjH+Vmr7W4CYBurhvQBgMkIp1Ar04es2YF1AgChMSGQMYEJ68FJwRSA2KNqCoDpCKfiyMkHhgQyhzhpHdixvTGsA27mtEoOU/ocE4IZu3ilgox9P7winMnQmW8KAMLj2nDK1AMlU04WIuXVkMqrnxuAtUztq2LNKyFNFdM+r9OPPQBEh6opAE5Qz+4GwJmqghq3XxVyaiDFiQgA6dC+IF63PQ9FVWCTtt69fYdJoRQA52G+KQBeRThlA9NOFqLh1pDKqaEUABzJxD7HjSGVqaGU1RcrvFL9BwAArEU4ZRMTTxai4ZaQyg2hFFVTAJzCDSGVqaGURH8AgCF9AJzDtXNOSVzNs4NT52ZyartNwt8bEJl4/O2YHlKYHPDUxLR5pdzEaTcfAI4U6cVahvQB8DIqp2zktuqpwx0e9JhaTeXGMMr0E1AA9jG9zzk86DG5ksopgRT9ARBbJu8/a0LVFAAnIZyymeknC7FgUlDlxkAKANzGtKDKKYFUlXgFU1TMAgCAWHH1sD6JAyfTVA2fi+cwuni/n124Sg5Yz6rhRvHqq5y4n6gaPhfvgMiu9wUAAPAiKqcM4IXqqZrUFBiFW2Hl9uDJdITAAOLhyKAoVlVVbgqgnBhAAoj9fFMM6QPgNBFVTk2fPl3Z2dlKTU1Vbm6uli5dWuOyM2fO1FlnnaVmzZqpWbNmysvLq3V5r+JgMtCRFVZ1/Xgd2w+cgL7DDG7aXxxe3RTND8LHRQnEi9P6DrunsAAApwo7nJo3b55GjRqlcePGafny5eratav69u2rLVu2BF1+0aJFGjRokD7++GMVFRWpTZs26tOnjzZt2hR140PllAMoN50wIH7YbuAETuw74i2efRX7DXfie4Xb0HdEhqopAE4Udjg1ZcoUDR8+XEOHDtWJJ56oGTNmqGHDhpo1a1bQ5WfPnq1bb71V3bp1U05Ojl588UVVVlZqwYIFNb5HWVmZdu3aFfDjFRxYAnAj+g7z0N+4Szy/TyuDVKvmdYMzWd13hNpvWD39RqyH9AGAE4UVTpWXl2vZsmXKy8v75QUSE5WXl6eioqKQXmPfvn06cOCAmjdvXuMyEydOVJMmTfw/bdq0CaeZgGeYcHLplMpE2MdtfYebTp5N2IcgenyPcKN49B1uPOegagqAU4UVTm3btk0VFRXKzMwMeDwzM1MlJSUhvcZ9992nVq1aBXQ0RxozZox27tzp/9mwYUM4zQzKSSfQHGQiFGwncAon9x3xZkdfxb7E2fj+4Fbx6Dti3W9EMt8UVVMAcEhc79b3+OOPa+7cuVq0aJFSU1NrXC4lJUUpKSlxbJl5vHwHPwA4HH2H9ehznMmOYMpJF/vgbaH0HW7rN6iaAuBkYVVOtWjRQklJSSotLQ14vLS0VFlZWbU+d/LkyXr88cf14Ycf6uSTTw6/pTHgtAMqroaiJqZsG077m4I9nN53xJtdf1em7FcQGr4vuJ0pfYdTgnuCKQBOF1Y4lZycrO7duwdMKlg1yWDPnj1rfN4TTzyhCRMmqKCgQD169Ii8tR7EwSeOxDYBp3Fj3+GmeacOx/7FGez6nrgggXhyWt/BkD4AiE7Yd+sbNWqUZs6cqVdffVWrVq3SLbfcor1792ro0KGSpCFDhmjMmDH+5SdNmqQHH3xQs2bNUnZ2tkpKSlRSUqI9e/bE7lOEwYkHVpwsoArbApzK6X1HvDmxr0J80A/AS+g7QkPVFAA3CHvOqYEDB2rr1q0aO3asSkpK1K1bNxUUFPgnKywuLlZi4i+Z1/PPP6/y8nJdfvnlAa8zbtw4jR8/PrrWewjzgcA0nDwjHPQdzkF/Yy63B1NurUhE5Og7AMA7IpoQPT8/X/n5+UF/t2jRooB/r1+/PpK3sFR2661avzHD7maEjRMGb3P7SQncz+l9R7zZ2VfR35jH7j6ACxKwi519h5X7wVgN6aNqCoBbhD2sD/ay++AU9uB7BxBv7HfMwXcBmC2S+aYAAIEIpxyIg1RvMfH75go6EJ8hSHb/rZm4//EaE76DeGyHDOkDwkfVFAA38Ww4ZfcBf7RMOFiF9fieAdiN/ZB9WPeAO3GXPgCozrPhlBtw0OpufL8AJDMuppS1LWefFGemrG8Ttj/ADqHON8WQPgCIDU+HU2444DLl4BWxZfL36oa/GwCRMXnf5CamrGf294C5GNIHwG08HU65BVe03YXvEsCRTAoJ2EdZx6v9OfNNwUsY0gcAwXk+nDLpgD9aXjygdRu+QwBO4NUQxUqmrU83HR8BbkPVFAA38nw45TamHdwidE747uw+WTk38ztb3x84UjwrPuz++wvGCfst0xH0AeZJ3sB8UwAQb4RTMvOAPxoc6DoP3xeAUJjYX9HnRMbk9Wbidga4QSyG9FE1BcCtCKdczNSDXvzC5JMTAAgH+7PQmbyeCKYAAIAdCKf+j1sPxjhZMJfTvhe3/o0ATmP63yL9Ts1YN9UxGTqcKtwhfVRNAUDtCKcOY/oBfzQ4IDYL3wXgHnacXDuhv6Lf+YVT1oUTtivAqwimALgd4dQR3H5g5pQDZDdz4vp3+98FAOt4ud9x0mdnPw8AAOxEOBWEFw7QnHTA7BascwCx5LS+yiv7wKrP6aTPate2xJA+OFW8h/RRNQXACwinauC0g/5IOeng2cmcvJ698rcARMOuk2wn/n06MbwJhVM/kxO3IcBLCKYAeEU9uxsA+1UdTKcUJ9vcEvdx4okKAMTL4ftIJ/ZB7OMB1CUWE6EDgBcQTtUiu/VWrd+YYXcz4oaQKnY4YQEQL27pq47cb5rWF7lxv25n1RRD+uBU4Q7pAwCEhnCqDm456A+H069k28ltJy8M9wBCd37WahWW5Njy3m7sq+wOq9y2Pz8S+3fAesw1BQChI5wKgRsP+kNFNVVo3H4SA8B8bu+r6trPhttPeXm/TTAFAABMQzgVIrcf9NeFaqrq3H5iY9rJy/lZq7V/j92tAMzm5b7K7fvkWDFh386QPjhVPIf0UTUFwGu4W18YTDigM4Fb77QUCi9/dgB1M+Gkm74KAOzHROgAEB4qpxAVr1RUeS2M4uQWcDYvV1ChZibs200IcAHTUTUFwIuonAqTCQd2pjq8qsgNYY6bPks42MaB6Jhy8s3fMg7H9gBEh7v0AYC1qJyKAFekQ2P3nZbC5bUQCoD70V9BIpgC4i2aIX1UTQHwKsKpCHHAH76awh9uD24OTmAA96G/8jaT9uumVBUCpiKYAuBlhFNR4IA/NiIJiw4PtAibAJjm/KzVKizJsbsZfvRX3mRSMAU4WThD+pgIHQAiQzgVJQ747UEgFXucxADuRn/lHSbuz6maAmpH1RQAr2NC9Bgw8SAQAGAvE0/G6a/cj+8YiC2qpgAgPginYoSDQTgZ26+zPProo+rVq5caNmyopk2bhvQcn8+nsWPH6uijj1aDBg2Ul5en77//3tqGwkjZrbfyN+9Spn6vJga1XrR9+3YNHjxY6enpatq0qYYNG6Y9e/bU+py1a9fqsssuU0ZGhtLT03XllVeqtLQ06tdFIKqmAMTb9OnTlZ2drdTUVOXm5mrp0qW1Lv/GG28oJydHqamp6tKli95///2A348fP145OTlq1KiRmjVrpry8PC1ZsiSsNhFOxZCpB4VAbZyw3XJiE6i8vFxXXHGFbrnllpCf88QTT+iZZ57RjBkztGTJEjVq1Eh9+/bV/v37LWwpTN52nfC3j9DxfaIugwcP1rfffqvCwkK9++67+uSTT3TTTTfVuPzevXvVp08fJSQkaOHChfr8889VXl6uiy++WJWVlRG/LgIRTAGIt3nz5mnUqFEaN26cli9frq5du6pv377asmVL0OUXL16sQYMGadiwYfr666/Vv39/9e/fXytXrvQvc/zxx2vatGn65ptv9Nlnnyk7O1t9+vTR1q2hH58QTsUYV6ThJGyrzvTQQw9p5MiR6tKlS0jL+3w+TZ06VQ888IAuvfRSnXzyyXrttde0efNmzZ8/39rGwmjsA5zP9OMOkwNaL1m1apUKCgr04osvKjc3V2eeeaaeffZZzZ07V5s3bw76nM8//1zr16/XK6+8oi5duqhLly569dVX9dVXX2nhwoURv66TMKQPgBtNmTJFw4cP19ChQ3XiiSdqxowZatiwoWbNmhV0+aefflr9+vXTPffco06dOmnChAk69dRTNW3aNP8yV199tfLy8tS+fXt17txZU6ZM0a5du/Svf/0r5HYRTlnE5ANFQGIbjZddu3YF/JSVxf/gdd26dSopKVFeXp7/sSZNmig3N1dFRUVxb4/XmH5ybnq4gZrxvbmTFf1GUVGRmjZtqh49evgfy8vLU2JiYo3DLsrKypSQkKCUlBT/Y6mpqUpMTNRnn30W8eviF1RNAYiVUPuO8vJyLVu2LOC8IDExUXl5eTWeFxQVFQUsL0l9+/atcfny8nK98MILatKkibp27RryZ+BufRaqOmjk7kgwjddPaJK/26x6icmWvkdi5aE7SrZp0ybg8XHjxmn8+PGWvveRSkpKJEmZmZkBj2dmZvp/B3A3P2dxwn7c9GA2XMlrNlnad1jZb5SUlKhly5YBj9WrV0/NmzevsR8444wz1KhRI91333167LHH5PP5NHr0aFVUVOjnn3+O+HWdgqopALFg9XlHuH3Htm3bVFFREfS8YPXq4P12SUlJSOcR7777rq666irt27dPRx99tAoLC9WiRYvQP0vISyJiTjiABGCNDRs2aOfOnf6fMWPGBF1u9OjRSkhIqPWnpg4D5nPKSTpVVObjO3K/UPsNydq+IyMjQ2+88Yb+9re/qXHjxmrSpIl27NihU089VYmJnEJEi6opALEUTt9hlXPPPVcrVqzQ4sWL1a9fP1155ZU1zmMVDJVTccIVaZiCk5r4Sk9PV3p6ep3L3XXXXbr++utrXaZ9+/YRtSErK0uSVFpaqqOPPtr/eGlpqbp16xbRa8LdqPw1j9P23U4JZE0Uar8hhd53ZGVlVTtBOHjwoLZv3+7vI4Lp06eP1q5dq23btqlevXpq2rSpsrKy/P1RpK9rurQNPinEQgeqpgCYINS+o0WLFkpKSqp259XS0tIa99tZWVkhLd+oUSN17NhRHTt21BlnnKHjjjtOL730UshBGeFUHHGwD7s57eTGSzIyMpSRYc2+4dhjj1VWVpYWLFjgD6N27dqlJUuWhHXHP0Tn/KzVKizJsbsZYaHfsh/7bdQm1L6jZ8+e2rFjh5YtW6bu3btLkhYuXKjKykrl5ubW+fyqYRkLFy7Uli1bdMkll8Tkdb2KqikAdklOTlb37t21YMEC9e/fX5JUWVmpBQsWKD8/P+hzevbsqQULFmjEiBH+xwoLC9WzZ89a36uysjKseROpybUBJfmwA9ucexQXF2vFihUqLi5WRUWFVqxYoRUrVmjPnj3+ZXJycvT2229LkhISEjRixAg98sgjeuedd/TNN99oyJAhatWqlb9TAmpDvxV/Tl7nVE2Zp1OnTurXr5+GDx+upUuX6vPPP1d+fr6uuuoqtWrVSpK0adMm5eTkaOnSpf7nvfzyy/riiy+0du1a/fnPf9YVV1yhkSNH6oQTTgj5dd0skqopgikAdhs1apRmzpypV199VatWrdItt9yivXv3aujQoZKkIUOGBFQ73XnnnSooKNCTTz6p1atXa/z48frqq6/8YdbevXt1//3364svvtBPP/2kZcuW6YYbbtCmTZt0xRVXhNwuKqdsxFA/xItTT3AQ3NixY/Xqq6/6/33KKadIkj7++GOdc845kqQ1a9Zo586d/mXuvfde7d27VzfddJN27NihM888UwUFBUpNTY1r273OidVThzt8X0L/ZQ3217DK7NmzlZ+fr/POO0+JiYkaMGCAnnnmGf/vDxw4oDVr1mjfvn3+x9asWaMxY8Zo+/btys7O1u9//3uNHDkyrNcFAJhl4MCB2rp1q8aOHauSkhJ169ZNBQUF/knPi4uLA+YW7NWrl+bMmaMHHnhA999/v4477jjNnz9fJ510kiQpKSlJq1ev1quvvqpt27bpqKOO0mmnnaZPP/1UnTt3DrldCT6fL/RbUdhk165datKkiX7113zVa5RS9xMciIN8WMUNJzpVV+H37zmgR874UDt37gx5Po7DVe1L8lreaPnd+g5WluujLS9G3FZEr+r7fuCLPkptXN/u5vg5OZwKhv4rem7YT1cxsWoqZn1HxjBL+46DleX6aOtL9Bs2qvquu137qJKSa794Q9UU4G7RHsvH67zDTeccDOszhJPL92EuN2xTJp7oANFw2zZN/xU51h0AAMAhDOszDJPPIlY44QHM5fThfcEw5C80bt43uy14BWpC1RQAxB7hlKEIqRANN5/8AG7hxoCqCkHVL7yyPyaYAgAA0SCcMhwhFcLllRMhAM5w5D7JC/2Z1/bDBFPwEqqmAMAahFMOQUiFULjthIgTHridm6unauLGsMpt+95wsJ8GAACxQDjlMIRUCMbLJ0aA03kxoDpcTfsvE/s59rUAwkXVFACEhnDKoQipUIWTJcD5vB5QBRPKvi2WfSD70vBRNQWviWRIHwAgNIRTDseks97FiRTgLgRU4WM/aB+CKaBuXqyaKs9pHfKyXlw/AGpGOOUiBFXewQkZ4E4EVHACgil4UbhVU14KXsIJpEJ9npfWH4BDCKdciqDKnbwUSnHyA68ioILJ2DcDdXNjsBJpABWr93PjOgUQiHDKA5ifyh28FEwBXkdABRMRTMGrvDrXVLwDqdoQVgHuRzjlIVRTOROhFOBNBFQwCcEUEBo3hCYmhVI1Kc9p7Yp1DeAXhFMeRVBlNgIpAIApCKbgZV6pmnJCIHWkqjYTUgHuQDiFoEEIgZU9CKUAHK4qFKCCCnYhmIKXeWESdCeGUkeiigpwB8IpBHVkSEJYZS1CqUCcDAGBGOKHeGM/DITHaeGIG0KpwxFQAc5HOIWQMAwwtgijAISLKirEC8EU4N7hfG4LpQ7HMD/A2QinEDaGAYaPMApArFBFBasQSgGRcUIY4uZQ6khUUQHORDiFmKgpfPFiaEUQBcBqBFSIJUIpIFD6ujKpXqrdzYgZLwVTVaiiApyHcAqW8kpoRSAFIN4Y5odoEUoB0TM5/PBiKHUkqqgA5yCcgi1CCXNMCrAInwCYipAKkSCYAqJncuhBMPULAirAGQinYCwCIQAIHSEVQkEoBbgboVRwBFSA+QinABiFEycgOoRUCIZ9KxBbJgYdBFO1I6ACzEY4BQCACx0eRhBUeRehFOB+hFKhI6ACzEU4BQCAy1FN5S0EUoC1TAo3CKbCR0AFmIlwCgAAj6Cayt0IpQDrmRJqEEpFh4AKMA/hFAAAHkRQ5XyEUYA3EUzFBgEVYBbCKQDG4EQLsAdBlXOwnwTsY0KQQTAVWwRUgDkIpwAAgN+R4Qdhlf0IpAD72R1gEEpZh4AKMAPhFAAAqFGwYITAylqEUQAORzBlPQIqwH6EUwCMwMkY4BxUV0WPfR7gHHaGFgRTALyCcAoAAESlpqCF0IoQCnA6ginvoHoKsBfhFAAAsESowYyTQyzCJwBWIJiyBwEVYB/CKQC24+QO8LZY7AOiCbjYBwEIxo6QglDKfgRUgD0IpwAAgOMRMAGIJYIpAIivRLsbAMDbOKEEAABeRzBlFr4PIP4IpwAAAADg/yR/tzmu70cQAgCEUwAAAABgC4Ipc/HdAPFFOAXANgzpAwAAXkX4AQC/IJwCAAAAgDgimHIGvicgfginANiCqikAAOBFBB4AUF09uxtgglidJBeW5MTkdQAAAAC4D8GU85TntFby6o12NwNwPU+FU1ZXaoTz+gRZAAAAgHeYGkzt7JAS8rJN1pZZ2BLAHOXHt5K22N0Kb3F9OGXq0KHa2kVwBbcz9e8SAADACqYEU+EEUXU930tBFdVTgPVcGU45/cS3rvYTXgFA6Pqn/VMFvh52NwMA4FF2BlPRhlHhvraXAisAseWacMrpgVQ4CK8AAAAA89kVTFkZSoX6vm4LqqieAqzl+HDKS6FUqBgyCJPxNws7XJ6+XG/uOtXuZgAAPCSewZRdYVRtdnZIcV1ABcA6jgynOLmNHMEV7MLfLQAA8Ip4BFMmBlJHclslFdVT3lCe01o6uN/uZniO48IpTnCtU9O6JbRCtPi7hQmongIAxIPVwZQTQqlgqtrthpAKQOw5Kpw6N/M7SfXtbobnMMcVAAAAUDcrgymnhlJHcnpIRfUUYA1HhVMwE+EVakPVFExC9RQAwCpWBVNuCaWO5PSQCkBsEU7BcoRX3kUwBQAAvIBgKnJODKmongJij3AKtiO8cieCKZiK6ikAQCxZEUx5IZQ6Enf3A7yNcArGCzXkIMSyH4EUAABwo5oqZQimYouACnaLx502ERzhFFyDCix7EEjBiaieAgCE68iAKtYnsV4OpQ7nlICKoX1AbBFOwTPCCVEIsmpGGAUAALyqKpAgmLKWUwIqALGTGMmTpk+fruzsbKWmpio3N1dLly6tdfk33nhDOTk5Sk1NVZcuXfT+++9H1FggXs7PWh3yjxd47fOa7tFHH1WvXr3UsGFDNW3atM7lDxw4oPvuu09dunRRo0aN1KpVKw0ZMuT/t3f/QVGVbR/Av/xwdy0FJGSBAhUbxDGNUYPQzKdihhkb0T/eNG0QZywtSUexEjPd0lLidbTJTCcr6XlzImuwGmUsRZlGUWtkd7JAUkCsid0eZ0IYld/X80cvWxsL7Fn3nD2s38/M+YOb+7DX5bL3V+49u4vffvtN/WL/Rm/Z8T9hlT79eUREeqY0OwBARLBx40bExsZi6NChyMjIwMWLF13mjB49GkFBQS5HQUGBz+rWW3YAvr1i6tpYIzem+sB/FyL1+Hpt9SQvBqJ4c+rTTz9FXl4eLBYLKisrcf/99yMzMxO///672/kVFRVYsGABlixZAqvVirlz52Lu3Ln48ccfld40kS4p2cgaDJs7g7Hm2017ezueeOIJPPfccx7Nv3HjBiorK7FhwwZUVlaipKQENTU1yMrKUrnSvzA7iIj8S2l2AEBhYSHefvtt7NmzB2fPnsWdd96JzMxMtLa2uszbtGkTGhsbnceKFSt8UrOeskONl29x82Vg/Dci8j011lZP86I/QSIiShpJS0vDAw88gHfeeQcA0N3djfj4eKxYsQL5+fm95s+fPx/Xr1/HoUOHnGMPPvggUlJSsGfPHre30dbWhra2vy7jvHbtGhISEvBi2aMw3slXIhK5c8KR1GvsEfPPfqhEPW3XO/G/jx1HU1MTwsPDFZ/f3NyM8PBw/GvkIoQGGVSo8C+d0o7y//wbv/zyC8LCwpzjRqMRRqNv/qNVVFSEVatWoampSfG533//PVJTU9HQ0ICEhASf1NMff2ZH+dmRGDas7+divmi539u2iGgQ8Fl2RGWrmh2d0o7yq/+nam4AnmeHiCAuLg5r1qzBCy+8AODPddVsNqOoqAhPPvkkgD+vnFq1ahVWrVrlsxp7qJ0dfeXGv6IWITS4933dnhTni7bQPIYbLkqF1ev3JX6Gn7W9Ep3U1fM47+xsQ8WZN3X/d4c3f3P4em31NC8GJAq0tbVJSEiIHDx40GV80aJFkpWV5fac+Ph42bFjh8vYxo0bZdKkSX3ejsViEQA8ePDg4faora1VsnQ53bx5U2JiYjSrc9iwYb3GLBaLV7W7s2/fPgkPD/fq3KNHj0pQUJBcu3bNZ/X0hdnBgwcPPRyDITvUzg0Rz7OjtrZWAIjVanUZf/jhh2XlypXOr0eNGiVms1kiIyMlJSVFCgsLpaOj45br1CI7mBs8ePAY6Ai07FBjbfU0Lwai6DKkq1evoqurC2az2WXcbDbjwgX3L/2x2+1u59vt9j5vZ926dcjLy3N+3dTUhFGjRuHKlSte7VrqTXNzM+Lj43vtbg5WgdRPIPUCBF4/Pc9oRkZGenW+yWRCfX092tvbfVyZeyKCoKAglzFfPvvtrdbWVqxduxYLFizQ5PeC2XHrAu2xzH70LdD6GUzZoafc6FlvB1qLV65cicmTJyMyMhIVFRVYt24dGhsbsX379lu6fS2yI5BzAwi8xzL70bdA6ydQs0ONtdXTvBiILl8j19claOHh4QHxi94jLCyM/ehUIPUCBF4/wcFefZYDgD+DwmQy+bAa38jPz8ebb77Z75zq6mokJ9/aJ0l2dHRg3rx5EBHs3r37ln6W3twO2RFoj2X2o2+B1g+zQx1/39yZNGkSDAYDli1bhq1bt+riCZn+3A65AQTeY5n96Fug9ROI2aFXijanoqKiEBISAofD4TLucDgQExPj9pyYmBhF84mIbkdr1qzB4sWL+52TmJh4S7fRszHV0NCA48ePa/YfB2YHEZE61MyOnvXW4XAgNjbWOe5wOJCSktLneWlpaejs7MTly5cxbtw4r24bYHYQEalBjbXV27z4J0XbgAaDAVOmTEFZWZlzrLu7G2VlZUhPT3d7Tnp6ust8ADh69Gif84mIbkcjR45EcnJyv4fB4P2bKfZsTF28eBHHjh3DXXfd5cPq+8fsICJSh5rZMWbMGMTExLisxc3NzTh79my/a7HNZkNwcDCio6O9ut0ezA4iIt9TY231Ni968fjdqf5fcXGxGI1GKSoqkqqqKlm6dKlERESI3W4XEZHs7GzJz893zj916pSEhobKtm3bpLq6WiwWiwwZMkTOnz/v8W22traKxWKR1tZWpeXqEvvRr0DqRYT9BKqGhgaxWq3y2muvybBhw8RqtYrVapWWlhbnnHHjxklJSYmIiLS3t0tWVpbcc889YrPZpLGx0Xm0tbVpUjOz49YEUi8i7Efv2E9gUpodIiIFBQUSEREhX375pfzwww8yZ84cGTNmjNy8eVNERCoqKmTHjh1is9mktrZWPv74Yxk5cqQsWrTIJzVrnR2B9rvCfvSN/ehboPXzd2qsrQPlhScUb06JiOzcuVMSEhLEYDBIamqqnDlzxvm9mTNnSk5Ojsv8AwcOSFJSkhgMBpkwYYIcPnzYm5slIiIRycnJcftJHSdOnHDOASD79u0TEZH6+vo+P93j7+eojdlBROQ/SrNDRKS7u1s2bNggZrNZjEajPPbYY1JTU+P8/rlz5yQtLU3Cw8PFZDLJ+PHjZcuWLT79Y47ZQUTke75eWwfKC08EiYh4fp0VERERERERERGR73j/1vNERERERERERES3iJtTRERERERERETkN9ycIiIiIiIiIiIiv+HmFBERERERERER+Y1uNqd27dqF0aNHw2QyIS0tDd99912/8z/77DMkJyfDZDJh4sSJKC0t1ahSzyjpZ+/evZgxYwZGjBiBESNGICMjY8D+taT0vulRXFyMoKAgzJ07V90CFVLaT1NTE3JzcxEbGwuj0YikpCRd/b4p7eett97CuHHjMHToUMTHx2P16tVobW3VqNr+ffvtt5g9ezbi4uIQFBSEL774YsBzysvLMXnyZBiNRtx7770oKipSvU7SB+aGfnMDYHYwO7TD7CAlmB3MDi0xO/SZHcwNnfLykwd9qri4WAwGg3z44Yfy008/yTPPPCMRERHicDjczj916pSEhIRIYWGhVFVVySuvvCJDhgyR8+fPa1y5e0r7WbhwoezatUusVqtUV1fL4sWLJTw8XH799VeNK+9NaS896uvr5e6775YZM2bInDlztCnWA0r7aWtrk6lTp8qsWbPk5MmTUl9fL+Xl5WKz2TSu3D2l/ezfv1+MRqPs379f6uvr5euvv5bY2FhZvXq1xpW7V1paKuvXr5eSkhIBIAcPHux3fl1dndxxxx2Sl5cnVVVVsnPnTgkJCZEjR45oUzD5DXNDv7khwuxgdmiL2UGeYnYwO7TE7NBvdjA39EkXm1OpqamSm5vr/Lqrq0vi4uJk69atbufPmzdPHn/8cZextLQ0WbZsmap1ekppP//U2dkpw4cPl48++kitEj3mTS+dnZ0ybdo0ef/99yUnJ0dXIaG0n927d0tiYqK0t7drVaIiSvvJzc2VRx991GUsLy9Ppk+frmqd3vAkKF566SWZMGGCy9j8+fMlMzNTxcpID5gbrvSUGyLMDmaH/zA7qD/MDlfMDnUxOwZHdjA39MPvL+trb2/HuXPnkJGR4RwLDg5GRkYGTp8+7fac06dPu8wHgMzMzD7na8mbfv7pxo0b6OjoQGRkpFplesTbXjZt2oTo6GgsWbJEizI95k0/X331FdLT05Gbmwuz2Yz77rsPW7ZsQVdXl1Zl98mbfqZNm4Zz5845L8Gtq6tDaWkpZs2apUnNvqbntYDUw9zoTS+5ATA7AGaH3ul5PSD1MDt6Y3aoh9kRWNmh57UgkIT6u4CrV6+iq6sLZrPZZdxsNuPChQtuz7Hb7W7n2+121er0lDf9/NPatWsRFxfX6wGgNW96OXnyJD744APYbDYNKlTGm37q6upw/PhxPPXUUygtLcWlS5ewfPlydHR0wGKxaFF2n7zpZ+HChbh69SoeeughiAg6Ozvx7LPP4uWXX9aiZJ/ray1obm7GzZs3MXToUD9VRmpibvSml9wAmB0As0PvmB23J2ZHb8wO9TA7Ais7mBva8PuVU+SqoKAAxcXFOHjwIEwmk7/LUaSlpQXZ2dnYu3cvoqKi/F2OT3R3dyM6OhrvvfcepkyZgvnz52P9+vXYs2ePv0vzSnl5ObZs2YJ3330XlZWVKCkpweHDh7F582Z/l0ZEXhrMuQEwOwYDZgdR4GF26A+zg253fr9yKioqCiEhIXA4HC7jDocDMTExbs+JiYlRNF9L3vTTY9u2bSgoKMCxY8cwadIkNcv0iNJeamtrcfnyZcyePds51t3dDQAIDQ1FTU0Nxo4dq27R/fDmvomNjcWQIUMQEhLiHBs/fjzsdjva29thMBhUrbk/3vSzYcMGZGdn4+mnnwYATJw4EdevX8fSpUuxfv16BAcPrv3qvtaCsLAwPoMRwJgbf9FbbgDMDoDZoXfMjtsTs+MvzA71MTsCKzuYG9rw+2+EwWDAlClTUFZW5hzr7u5GWVkZ0tPT3Z6Tnp7uMh8Ajh492ud8LXnTDwAUFhZi8+bNOHLkCKZOnapFqQNS2ktycjLOnz8Pm83mPLKysvDII4/AZrMhPj5ey/J78ea+mT59Oi5duuQMOwD4+eefERsb69eAALzr58aNG72CoCcARUS9YlWi57WA1MPc+JMecwNgdgDMDr3T83pA6mF2/InZoQ1mR2Blh57XgoDiz3dj71FcXCxGo1GKioqkqqpKli5dKhEREWK320VEJDs7W/Lz853zT506JaGhobJt2zaprq4Wi8Wiu491VdJPQUGBGAwG+fzzz6WxsdF5tLS0+KsFJ6W9/JPePjVDaT9XrlyR4cOHy/PPPy81NTVy6NAhiY6Oltdff91fLbhQ2o/FYpHhw4fLJ598InV1dfLNN9/I2LFjZd68ef5qwUVLS4tYrVaxWq0CQLZv3y5Wq1UaGhpERCQ/P1+ys7Od83s+1vXFF1+U6upq2bVrFz/W9TbB3NBvbogwO5gd2mJ2kKeYHcwOLTE79JsdzA190sXmlIjIzp07JSEhQQwGg6SmpsqZM2ec35s5c6bk5OS4zD9w4IAkJSWJwWCQCRMmyOHDhzWuuH9K+hk1apQA6HVYLBbtC3dD6X3zd3oLCRHl/VRUVEhaWpoYjUZJTEyUN954Qzo7OzWuum9K+uno6JBXX31Vxo4dKyaTSeLj42X58uXyxx9/aF+4GydOnHD7WOjpIScnR2bOnNnrnJSUFDEYDJKYmCj79u3TvG7yD+aGfnNDhNnB7NAOs4OUYHYwO7TE7NBndjA39ClIZJBdU0dERERERERERAHD7+85RUREREREREREty9uThERERERERERkd9wc4qIiIiIiIiIiPyGm1NEREREREREROQ33JwiIiIiIiIiIiK/4eYUERERERERERH5DTeniIiIiIiIiIjIb7g5RUREREREREREfsPNKSIiIiIiIiIi8htuThERERERERERkd9wc4qIiIiIiIiIiPzmv2IAzASdA47BAAAAAElFTkSuQmCC"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=49142e7f">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>As you can see the solution is not very accurate, in what follows we will use <strong>Extra Feature</strong> as introduced in <a href="https://www.sciencedirect.com/science/article/abs/pii/S0898122123002018"><em>An extended physics informed neural network for preliminary analysis of parametric optimal control problems</em></a> to boost the training accuracy. Of course, even extra training will benefit, this tutorial is just to show that convergence using Extra Features is usally faster.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=20fdf23e">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="Solving-the-problem-with-extra-features-PINNs">Solving the problem with extra-features PINNs<a class="anchor-link" href="#Solving-the-problem-with-extra-features-PINNs">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a1e76351">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>Now, the same problem is solved in a different way.
|
||
A new neural network is now defined, with an additional input variable, named extra-feature, which coincides with the forcing term in the Laplace equation.
|
||
The set of input variables to the neural network is:</p>
|
||
<p>\begin{equation}
|
||
[x, y, k(x, y)], \text{ with } k(x, y)= 2\pi^2\sin{(\pi x)}\sin{(\pi y)},
|
||
\end{equation}</p>
|
||
<p>where $x$ and $y$ are the spatial coordinates and $k(x, y)$ is the added feature which is equal to the forcing term.</p>
|
||
<p>This feature is initialized in the class <code>SinSin</code>, which is a simple <code>torch.nn.Module</code>. After declaring such feature, we can just adjust the <code>FeedForward</code> class by creating a subclass <code>FeedForwardWithExtraFeatures</code> with an adjusted forward method and the additional attribute <code>extra_features</code>.</p>
|
||
<p>Finally, we perform the same training as before: the problem is <code>Poisson</code>, the network is composed by the same number of neurons and optimizer parameters are equal to previous test, the only change is the new extra feature.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=ef3ad372">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [6]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">SinSin</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">"""Feature: sin(x)*sin(y)"""</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pts</span><span class="p">):</span>
|
||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">pts</span><span class="o">.</span><span class="n">extract</span><span class="p">([</span><span class="s2">"x"</span><span class="p">]),</span> <span class="n">pts</span><span class="o">.</span><span class="n">extract</span><span class="p">([</span><span class="s2">"y"</span><span class="p">])</span>
|
||
<span class="n">f</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span><span class="o">**</span><span class="mi">2</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">y</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span>
|
||
<span class="k">return</span> <span class="n">LabelTensor</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[</span><span class="s2">"feat"</span><span class="p">])</span>
|
||
|
||
|
||
<span class="k">class</span><span class="w"> </span><span class="nc">FeedForwardWithExtraFeatures</span><span class="p">(</span><span class="n">FeedForward</span><span class="p">):</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">extra_features</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">extra_features</span> <span class="o">=</span> <span class="n">extra_features</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||
<span class="n">extra_feature</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">extra_features</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># we append extra features</span>
|
||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">extra_feature</span><span class="p">)</span>
|
||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">forward</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||
|
||
|
||
<span class="n">model_feat</span> <span class="o">=</span> <span class="n">FeedForwardWithExtraFeatures</span><span class="p">(</span>
|
||
<span class="n">input_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">input_variables</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
|
||
<span class="n">output_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">output_variables</span><span class="p">),</span>
|
||
<span class="n">func</span><span class="o">=</span><span class="n">Softplus</span><span class="p">,</span>
|
||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
|
||
<span class="n">extra_features</span><span class="o">=</span><span class="n">SinSin</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="n">pinn_feat</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span>
|
||
<span class="n">problem</span><span class="p">,</span>
|
||
<span class="n">model_feat</span><span class="p">,</span>
|
||
<span class="n">optimizer</span><span class="o">=</span><span class="n">TorchOptimizer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.006</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer_feat</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="o">=</span><span class="n">pinn_feat</span><span class="p">,</span> <span class="c1"># setting the solver, i.e. PINN</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="c1"># setting max epochs in training</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="c1"># we train on cpu, also other are available</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># model summary statistics not printed</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="c1"># set train size</span>
|
||
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="c1"># set validation size</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="c1"># set testing size</span>
|
||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># shuffle the data</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="n">trainer_feat</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>You are using the plain ModelCheckpoint callback. Consider using LitModelCheckpoint which with seamless uploading to Model registry.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>GPU available: False, used: False
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>TPU available: False, using: 0 TPU cores
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>HPU available: False, using: 0 HPUs
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="6dc7908e-e0f9-4471-971f-1a0d1d23e981" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('6dc7908e-e0f9-4471-971f-1a0d1d23e981');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "d37b4cf703e8447f8e0fc88721578a8b"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>`Trainer.fit` stopped: `max_epochs=1000` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9748a13e">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>The predicted and exact solutions and the error between them are represented below.
|
||
We can easily note that now our network, having almost the same condition as before, is able to reach additional order of magnitudes in accuracy.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=2be6b145">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [7]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
|
||
<span class="n">plot_solution</span><span class="p">(</span><span class="n">solver</span><span class="o">=</span><span class="n">pinn_feat</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKcAAAJNCAYAAADkjxajAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAACnOklEQVR4nOzdeXhU5f3//1cSSMIW1pAAggFEAUHRIDEURSUSlKpYRECUpQhWiQtxA4sEwYoLIC5YigpqhR8Uq9QqRSOU2koE2fopClSUNAhMgFIIBEkgmd8ffDMyZJLMZJazPR/XNZfmzJkz95kZzvu83/d9nxPldrvdAgAAAAAAAAwQbXQDAAAAAAAA4FwUpwAAAAAAAGAYilMAAAAAAAAwDMUpAAAAAAAAGIbiFAAAAAAAAAxDcQoAAAAAAACGoTgFAAAAAAAAw1CcAgAAAAAAgGEoTgEAAAAAAMAwFKdgC2vXrlVUVJTWrl0b0u2OHj1aKSkpId0mACByUlJSNHr06JBuM1wxBwBqKz8/X1FRUZo1a1ZE39cu58q+9uP48eO6++67lZycrKioKD300EOSpMLCQt12221q3ry5oqKiNHfu3Ii3F7AjilM28dZbbykqKsrziI+P14UXXqisrCwVFhZ61qs4oX7vvfcqvTY+Pl579+6ttO1rrrlG3bp181qWkpKiqKgo3X///ZXW9/UeZrZv3z5NmzZNW7duNbopABBWZ8eJ6h4UXc547bXX9NZbbxndDADQa6+9pqioKKWlpRndlJBZuXKlpk2bFvLtTps2zSum1a9fX+3atdNNN92kRYsWqaSkxK/tPPPMM3rrrbd077336ve//73uuusuSdLEiRP1ySefaPLkyfr973+vAQMGhHwfACeqY3QDEFrTp09X+/btdfLkSf3jH//Qb3/7W61cuVLbtm1T/fr1q31tSUmJnn32Wb3yyit+v9/rr7+uyZMnq3Xr1sE23TD79u3TU089pZSUFPXo0cPruddff13l5eXGNAwAQuz3v/+919/vvPOOcnNzKy3v0qVLJJtlWq+99ppatGhRaeTV1VdfrR9//FGxsbHGNAyA4yxevFgpKSnasGGDdu3apQsuuMDoJgVt5cqVmjdvXlgKVJL029/+Vg0bNlRJSYn27t2rTz75RL/85S81d+5cffTRR2rbtq1nXV/n/GvWrNGVV16pnJycSstvueUWPfLII2FpN+BUFKds5oYbblDPnj0lSXfffbeaN2+uOXPm6E9/+pOGDx9e7Wt79OgRULHp4osv1s6dO/Xss8/q5ZdfDkn7zaZu3bpGNwEAQubOO+/0+vvLL79Ubm5upeXnOnHiRI0dHE4SHR2t+Ph4o5sBwCF2796tdevW6f3339c999yjxYsXVyqYoLLbbrtNLVq08Pw9depULV68WCNHjtSQIUP05Zdfep7zdc5/4MABde3a1efyJk2ahKydp0+fVnl5OR0ecDym9dncddddJ+lMUKvJE088obKyMj377LN+bTslJUUjR47U66+/rn379tWqfa+88oouvvhi1a9fX02bNlXPnj21ZMkSr3W2bNmiG264QQkJCWrYsKH69evnFUyqa5+v64xcc801uuaaaySdmYJ4xRVXSJLGjBnjGf5bMY3D1/zz4uJiPfzww2rbtq3i4uJ00UUXadasWXK73V7rRUVFKSsrSytWrFC3bt0UFxeniy++WKtWrfLvwwEAA1RM5d60aZOuvvpq1a9fX0888YSkM8c1Xz3cvo63R44c0UMPPeQ5Vl5wwQV67rnn/BqNunHjRmVmZqpFixaqV6+e2rdvr1/+8pde6/h7LD5XxXSPc1VMcc/Pz/fs09dff62//e1vnthwduzwNf1x+fLlSk1NVb169dSiRQvdeeedlabLjx49Wg0bNtTevXs1aNAgNWzYUImJiXrkkUdUVlZW42cDwHkWL16spk2bauDAgbrtttu0ePHiatd/8cUXdf7556tevXrq27evtm3b5vW8y+XSmDFjdN555ykuLk6tWrXSLbfc4jn+VXjttdd08cUXKy4uTq1bt9aECRN05MiRat+7quNjxTWxzj7HnjdvniTvKecVysvLNXfuXF188cWKj49XUlKS7rnnHv3vf/+r9v1rMmLECN19991av369cnNzPcvPPuev2Ifdu3fr448/9soPoqKi5Ha7NW/evEpt9ifunX1tsLlz56pjx46Ki4vTN998I0nasWOHbrvtNjVr1kzx8fHq2bOnPvzwQ699qGjHF198oezsbCUmJqpBgwa69dZbdfDgwUr7/Je//EV9+/ZVo0aNlJCQoCuuuKJSvrV+/XoNGDBAjRs3Vv369dW3b1998cUXQX3WQKAYOWVz3333nSSpefPmNa7bvn17T7Fp0qRJfo2e+vWvf6133nmnVqOnXn/9dT3wwAO67bbb9OCDD+rkyZP6v//7P61fv1533HGHJOnrr7/WVVddpYSEBD322GOqW7eufve73+maa67R3/72t6Dn3Xfp0kXTp0/X1KlTNX78eF111VWSpN69e/tc3+126+abb9Zf//pXjR07Vj169NAnn3yiRx99VHv37tWLL77otf4//vEPvf/++7rvvvvUqFEjvfzyyxo8eLAKCgr8+k4AwAj//e9/dcMNN2jYsGG68847lZSUFNDrT5w4ob59+2rv3r2655571K5dO61bt06TJ0/W/v37q7147IEDB9S/f38lJiZq0qRJatKkifLz8/X+++971gn0WFwbc+fO1f3336+GDRvq17/+tSRV+zm89dZbGjNmjK644grNnDlThYWFeumll/TFF19oy5YtXr3sZWVlyszMVFpammbNmqXPPvtMs2fPVseOHXXvvfcG3XYA9rJ48WL94he/UGxsrIYPH67f/va3+uqrrzwdrGd75513dOzYMU2YMEEnT57USy+9pOuuu07/+te/PMewwYMH6+uvv9b999+vlJQUHThwQLm5uSooKPAUaKZNm6annnpKGRkZuvfee7Vz507P+37xxRdBzy645557tG/fPp9TyyuerziuPvDAA9q9e7deffVVbdmyJej3v+uuu7RgwQJ9+umnuv766ys936VLF/3+97/XxIkTdd555+nhhx+WJF122WWea09df/31GjlypOc1gca9RYsW6eTJkxo/frzi4uLUrFkzff311/rZz36mNm3aaNKkSWrQoIH+8Ic/aNCgQfrjH/+oW2+91Wsb999/v5o2baqcnBzl5+dr7ty5ysrK0rJlyzzrvPXWW/rlL3+piy++WJMnT1aTJk20ZcsWrVq1ypNvrVmzRjfccINSU1OVk5Oj6OhoLVq0SNddd53+/ve/q1evXrX+rIGAuGELixYtcktyf/bZZ+6DBw+69+zZ4166dKm7efPm7nr16rl/+OEHt9vtdv/1r391S3IvX7680mu/+uor93fffeeuU6eO+4EHHvA837dvX/fFF1/s9X7nn3++e+DAgW632+0eM2aMOz4+3r1v374q38OXW265pdJ2zzVo0CB3bGys+7vvvvMs27dvn7tRo0buq6++2rOs4j3/+te/erVx1KhRlbbZt29fd9++fT1/f/XVV25J7kWLFlVad9SoUe7zzz/f8/eKFSvcktxPP/2013q33XabOyoqyr1r1y7PMknu2NhYr2X//Oc/3ZLcr7zySrX7DQCRMGHCBPe5pwJ9+/Z1S3LPnz+/0vqS3Dk5OZWWn3u8nTFjhrtBgwbuf//7317rTZo0yR0TE+MuKCiosk0ffPCBJyZVJZBj8blty8nJqbTPbvdPsXD37t2eZRdffLFXvKhwbswpLS11t2zZ0t2tWzf3jz/+6Fnvo48+cktyT5061bNs1KhRbknu6dOne23zsssuc6empla5zwCcaePGjW5J7tzcXLfb7XaXl5e7zzvvPPeDDz7otd7u3bvdkrzO+91ut3v9+vVuSe6JEye63W63+3//+59bkvuFF16o8j0PHDjgjo2Ndffv399dVlbmWf7qq6+6JbkXLlzoWXbuubKvc/Kz23f2+bavGOR2u91///vf3ZLcixcv9lq+atUqn8vPVXGcP3jwoM/nKz6DW2+9tcr9cLu9852zSXJPmDDBa5m/ca/ic0hISHAfOHDAa91+/fq5u3fv7j558qRnWXl5ubt3797uTp06eZZVxKuMjAx3eXm5Z/nEiRPdMTEx7iNHjrjdbrf7yJEj7kaNGrnT0tK8YlPFdiv+26lTJ3dmZqbXtk6cOOFu3769+/rrr6+0/0C4MK3PZjIyMpSYmKi2bdtq2LBhatiwoT744AO1adPGr9d36NDB05uwf/9+v14zZcoUnT592u/pgBWaNGmiH374QV999ZXP58vKyvTpp59q0KBB6tChg2d5q1atdMcdd+gf//iHioqKAnrPYK1cuVIxMTF64IEHvJY//PDDcrvd+stf/uK1PCMjQx07dvT8fckllyghIUHff/99RNoLALURFxenMWPG1Pr1y5cv11VXXaWmTZvq0KFDnkdGRobKysr0+eefV/naihFGH330kU6dOuVznUCPxeG2ceNGHThwQPfdd5/XtagGDhyozp076+OPP670ml/96ldef1911VXEBgCVLF68WElJSbr22mslnZkCN3ToUC1dutTnVOBBgwZ5nff36tVLaWlpWrlypSSpXr16io2N1dq1a6ucIvfZZ5+ptLRUDz30kKKjf0oXx40bp4SEBJ/HtFBavny5GjdurOuvv94rhqSmpqphw4b661//GtT2GzZsKEk6duxYKJorKfC4N3jwYCUmJnr+Pnz4sNasWaPbb79dx44d87z+v//9rzIzM/Xtt99WmiY+fvx4r2mFV111lcrKyvSf//xHkpSbm6tjx45p0qRJla6TWPG6rVu36ttvv9Udd9yh//73v573LS4uVr9+/fT5559zcyhEDMUpm5k3b55yc3P117/+Vd98842+//57ZWZmBrSNQItNtSloSdLjjz+uhg0bqlevXurUqZMmTJjgNbf54MGDOnHihC666KJKr+3SpYvKy8u1Z88ev98vFP7zn/+odevWatSoUaX2VDx/tnbt2lXaRtOmTYOeLw8A4dSmTZugLsz67bffatWqVUpMTPR6ZGRkSDozda8qffv21eDBg/XUU0+pRYsWuuWWWyrd+jvQY3G4Vbyfr3jVuXPnSu2Jj4/3SkokYgOAysrKyrR06VJde+212r17t3bt2qVdu3YpLS1NhYWFWr16daXXdOrUqdKyCy+80HM9qbi4OD333HP6y1/+oqSkJF199dV6/vnn5XK5POtXdUyLjY1Vhw4dwn6M/fbbb3X06FG1bNmyUhw5fvx4tTHEH8ePH5ekSjEkGIHGvfbt23v9vWvXLrndbj355JOVtlFx8ftzt3FuntG0aVNJ8sSSisu7dOvWrdp2S9KoUaMqve8bb7yhkpISHT16NKDPAqgtrjllM7169fLcra+2OnTooDvvvFMLFizQpEmT/HrNr3/9a/3+97/Xc889p0GDBvn1mi5dumjnzp366KOPtGrVKv3xj3/Ua6+9pqlTp+qpp54KYg/O8HXBW+lMoI+JiQl6+/6o6n3cNVywFwCMVK9evYDWP7f3vry8XNdff70ee+wxn+tfeOGFVW4rKipK7733nr788kv9+c9/9tz6e/bs2fryyy89Pd61VV1siJRIxSAA1rZmzRrt379fS5cu1dKlSys9v3jxYvXv3z/g7T700EO66aabtGLFCn3yySd68sknNXPmTK1Zs0aXXXZZUG0OxTG2vLxcLVu2rPLC7+cW9wNVcYH4Cy64IKjtnC3QuHdunK0YnfTII49UObDg3PaGIs+oeN8XXnhBPXr08LlOsHEX8BfFKfg0ZcoUvfvuu3ruuef8Wr9jx46688479bvf/S6gi5Q3aNBAQ4cO1dChQ1VaWqpf/OIX+s1vfqPJkycrMTFR9evX186dOyu9bseOHYqOjlbbtm2r3HbTpk193lHkP//5j9c0waqCqC/nn3++PvvsMx07dsyrt2XHjh2e5wHArnwdV0tLSyuNmu3YsaOOHz/u6TGujSuvvFJXXnmlfvOb32jJkiUaMWKEli5dqrvvvjuoY3FFz/KRI0e8LlLuaySAv/Gh4v127tzpuUtuhZ07dxIbANTK4sWL1bJlS89d7c72/vvv64MPPtD8+fO9Ch0VI2HO9u9//7vS3ac7duyohx9+WA8//LC+/fZb9ejRQ7Nnz9a7777rdUw7+5y5tLRUu3fvrvbYfvYx9myBHGM7duyozz77TD/72c8C7izxR8UF2AOdXVKdYONexedct27doGLnuW2SzhTjqirEVayTkJAQsvcFaotpffDp7GLT2cN8qzNlyhSdOnVKzz//vF/r//e///X6OzY2Vl27dpXb7dapU6cUExOj/v37609/+pPXrW0LCwu1ZMkS9enTRwkJCdXuw5dffqnS0lLPso8++qjSVMAGDRpIqhxEfbnxxhtVVlamV1991Wv5iy++qKioKN1www01bgMArKpjx46VrpuxYMGCSj3it99+u/Ly8vTJJ59U2saRI0d0+vTpKt/jf//7X6Ve34re3IqpfcEciytOxM/ej+LiYr399tuV1m3QoIFfsaFnz55q2bKl5s+f7zX98C9/+Yu2b9+ugQMH1rgNADjbjz/+qPfff18///nPddttt1V6ZGVl6dixY/rwww+9XrdixQqvaxNt2LBB69ev9xwXT5w4oZMnT3q9pmPHjmrUqJHn+JWRkaHY2Fi9/PLLXsfjN998U0ePHq32mHb++ecrJiamUqx47bXXKq1b1Tn47bffrrKyMs2YMaPSa06fPu3XcbkqS5Ys0RtvvKH09HT169ev1ts5VzBxT5Jatmypa665Rr/73e98Xibl4MGDAbepf//+atSokWbOnFnpO6/4XlNTU9WxY0fNmjXLM90x2PcFaouRU6hSxVS9nTt36uKLL65x/YqClq8TfF/69++v5ORk/exnP1NSUpK2b9+uV199VQMHDvT0hD/99NPKzc1Vnz59dN9996lOnTr63e9+p5KSkhqLYHfffbfee+89DRgwQLfffru+++47vfvuu14XKK9od5MmTTR//nw1atRIDRo0UFpaWqW54JJ000036dprr9Wvf/1r5efn69JLL9Wnn36qP/3pT3rooYcqbRsA7OTuu+/Wr371Kw0ePFjXX3+9/vnPf+qTTz5RixYtvNZ79NFH9eGHH+rnP/+5Ro8erdTUVBUXF+tf//qX3nvvPeXn51d6TYW3335br732mm699VZ17NhRx44d0+uvv66EhATdeOONkoI7Fvfv31/t2rXT2LFj9eijjyomJkYLFy5UYmKiCgoKvNZNTU3Vb3/7Wz399NO64IIL1LJly0ojo6QzPd3PPfecxowZo759+2r48OEqLCzUSy+9pJSUFE2cODHQjxqAw3344Yc6duyYbr75Zp/PX3nllUpMTNTixYs1dOhQz/ILLrhAffr00b333quSkhLNnTtXzZs390w3+/e//61+/frp9ttvV9euXVWnTh198MEHKiws1LBhwySdmTY3efJkPfXUUxowYIBuvvlm7dy5U6+99pquuOIK3XnnnVW2u3HjxhoyZIheeeUVRUVFqWPHjvroo498XicqNTVVkvTAAw8oMzNTMTExGjZsmPr27at77rlHM2fO1NatW9W/f3/VrVtX3377rZYvX66XXnpJt912W42f4XvvvaeGDRuqtLRUe/fu1SeffKIvvvhCl156qZYvX17j6wMRTNyrMG/ePPXp00fdu3fXuHHj1KFDBxUWFiovL08//PCD/vnPfwbUpoSEBL344ou6++67dcUVV+iOO+5Q06ZN9c9//lMnTpzQ22+/rejoaL3xxhu64YYbdPHFF2vMmDFq06aN9u7dq7/+9a9KSEjQn//852A+GsB/ht0nECFVcUvR6m697Xb/dHvX5cuX+/XailteX3zxxV7Lq7q16rfffuuOiYmp9B6+/O53v3NfffXV7ubNm7vj4uLcHTt2dD/66KPuo0ePeq23efNmd2Zmprthw4bu+vXru6+99lr3unXrfO7XubetnT17trtNmzbuuLg4989+9jP3xo0b3X379q10a/A//elP7q5du7rr1KnjdZtbX7eVPXbsmHvixInu1q1bu+vWrevu1KmT+4UXXvC6/arb7fs2s2535duaA4BRfN3Gu2/fvpWO+RXKysrcjz/+uLtFixbu+vXruzMzM927du3yeVw7duyYe/Lkye4LLrjAHRsb627RooW7d+/e7lmzZrlLS0urbNPmzZvdw4cPd7dr184dFxfnbtmypfvnP/+5e+PGjZW278+x2FfbNm3a5E5LS3PHxsa627Vr554zZ44nFu7evduznsvlcg8cONDdqFEjtyRP7Kgq5ixbtsx92WWXuePi4tzNmjVzjxgxwuuW7m73mbjSoEGDSvtdcetzAHC73e6bbrrJHR8f7y4uLq5yndGjR7vr1q3rPnTokHv37t1uSe4XXnjBPXv2bHfbtm3dcXFx7quuusr9z3/+0/OaQ4cOuSdMmODu3Lmzu0GDBu7GjRu709LS3H/4wx8qbf/VV191d+7c2V23bl13UlKS+95773X/73//81rH17nywYMH3YMHD3bXr1/f3bRpU/c999zj3rZtm9c5ttvtdp8+fdp9//33uxMTE91RUVGVjoELFixwp6amuuvVq+du1KiRu3v37u7HHnvMvW/fvmo/u4rjacUjPj7efd5557l//vOfuxcuXOg+efJkpdf42o+q8p2qzvH9iXtnf0++fPfdd+6RI0e6k5OT3XXr1nW3adPG/fOf/9z93nvvedapKnerKjZ9+OGH7t69e7vr1avnTkhIcPfq1cv9//1//5/XOlu2bHH/4he/8ORl559/vvv22293r1692mc7gXCIcru5MjMAAAAAAACMwTWnAAAAAAAAYBiKUwAAAAAAADAMxSkAAAAAAAAYJuDi1Oeff66bbrpJrVu3VlRUlFasWFHja9auXavLL79ccXFxuuCCC/TWW2/VoqkAYB/z5s1TSkqK4uPjlZaWpg0bNlS57tdff63BgwcrJSVFUVFRmjt3bqV1pk2bpqioKK9H586dw7gHvhEjACB4xIifECMAwFsgMUKSli9frs6dOys+Pl7du3fXypUrvZ5///331b9/fzVv3lxRUVHaunWr1/P5+fmVYkjF4+w7X/p6funSpX7vV8DFqeLiYl166aWaN2+eX+vv3r1bAwcO1LXXXqutW7fqoYce0t13361PPvkk0LcGAFtYtmyZsrOzlZOTo82bN+vSSy9VZmamz9ssS9KJEyfUoUMHPfvss0pOTq5yuxdffLH279/vefzjH/8I1y5UiRgBAMEhRvyEGAEA3gKNEevWrdPw4cM1duxYbdmyRYMGDdKgQYO0bds2zzrFxcXq06ePnnvuOZ/baNu2rVf82L9/v5566ik1bNhQN9xwg9e6ixYt8lpv0KBBfu9bUHfri4qK0gcffFDtGz7++OP6+OOPvXZ+2LBhOnLkiFatWuXzNSUlJSopKfH8XV5ersOHD3sqeQDsz+1269ixY2rdurWio2s3A/nkyZMqLS0Nccsqc7vdlY5NcXFxiouL87l+WlqarrjiCr366quSzhzj2rZtq/vvv1+TJk2q9r1SUlL00EMP6aGHHvJaPm3aNK1YsaJST4eRiBEAwoUY4RsxghgBgBhxtqFDh6q4uFgfffSRZ9mVV16pHj16aP78+V7r5ufnq3379tqyZYt69OhRbbsvu+wyXX755XrzzTc9y/w5rlfLHQRJ7g8++KDada666ir3gw8+6LVs4cKF7oSEhCpfk5OT45bEgwcPHu49e/bU6vj0448/uhMToyPSxoYNG1ZalpOT47NdJSUl7piYmErHzpEjR7pvvvnmGvfr/PPPd7/44ouVlufk5Ljr16/vbtWqlbt9+/buO+64w/2f//ynFp9c6EjECB48eIT3QYzwRowgRvDgweOnRzAxooVNYkTbtm0rxYWpU6e6L7nkkkrr7t692y3JvWXLlmo/n40bN7olub/44guv5ZLcrVu3djdv3tx9xRVXuN988013eXl5tds6Wx2FmcvlUlJSkteypKQkFRUV6ccff1S9evUqvWby5MnKzs72/H306FG1a9dOj66+TnENwt5kACZQUnxaL/Rbo0aNGtXq9aWlpTp4sFxr17dUw4bh6yk9ftyta9IOaM+ePUpISPAsr6q349ChQyorK/N5XNyxY0et25GWlqa33npLF110kWeo7VVXXaVt27bV+jOMBGIEAF8GNfpntc8fP16ua9IOEiP8RIxop0++TFaDhtwLCnCC4uPlyrzSFVSMOHSwPOzHjYp2hjNGVHUcdblctW73m2++qS5duqh3795ey6dPn67rrrtO9evX16effqr77rtPx48f1wMPPODXdk15Fl/VMLa4BnUU37CuAS0CYJRgh+A3bBilho3CeTJaLklKSEjwCiqRdvZ870suuURpaWk6//zz9Yc//EFjx441rF3hQIwA7M/f4zYxwj/ECKlBw+gwf9cAzCbYGBGp44bRMSIQP/74o5YsWaInn3yy0nNnL7vssstUXFysF154we/iVNg/6eTkZBUWFnotKywsVEJCgs/eDgCwsxYtWigmJsbncbG6C9kGqkmTJrrwwgu1a9eukG0zHIgRAHx5r+hyo5tgCGKEN2IEAPykNjGiquNobWPKe++9pxMnTmjkyJE1rpuWlqYffvjB6zqA1Ql7cSo9PV2rV6/2Wpabm6v09PRwvzUAmE5sbKxSU1O9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WrJkiQYNGqTNmzerW7dukqTi4mL16dNHt99+u8aNG+fzfSdOnKiPP/5Yy5cvV+PGjZWVlaVf/OIX+uKLLyRJZWVlGjhwoJKTk7Vu3Trt379fI0eOVN26dfXMM8/4tW8UpwAAAAAgzIwaJRSocwszTiwmnL3PFKqC48TfTzjNmTNH48aN05gxYyRJ8+fP18cff6yFCxdq0qRJldZ/6aWXNGDAAD366KOSpBkzZig3N1evvvqq5s+fL0m66667JEn5+fk+3/Po0aN68803tWTJEl133XWSpEWLFqlLly768ssvdeWVV+rTTz/VN998o88++0xJSUnq0aOHZsyYoccff1zTpk1TbGzN12BlWh9qRI84AADerBIbuW4ZYDyrTVtiyps3PovA8ZkFpqioyOtRUuJ7ZlRpaak2bdqkjIwMz7Lo6GhlZGQoLy/P52vy8vK81pekzMzMKtf3ZdOmTTp16pTXdjp37qx27dp5tpOXl6fu3bsrKSnJ632Kior09ddf+/U+jJwCDMQFbwGEG1O/UVtM/QaCQ2JuP4yoqpodf+/F/0lQdHx82LZffvKkJKltW++brOTk5GjatGmV1j906JDKysq8CkCSlJSUpB07dvh8D5fL5XN9l8vldztdLpdiY2PVpEmTKrdT1ftUPOcPilNANSJxRyYAsDKrjCACgEixY5KOyihUncHvPXh79uxRQkKC5++4OGcOXqA4BQAAAABBIkl3LqcVqvith1ZCQoJXcaoqLVq0UExMTKW75BUWFio5Odnna5KTkwNav6ptlJaW6siRI16jp87eTnJycqW7Bla8r7/vxTWnDMR1IADAOvJ/SDS6CTCZcI8aY0omYH5cWwfnsuvvgd+68WJjY5WamqrVq1d7lpWXl2v16tVKT0/3+Zr09HSv9SUpNze3yvV9SU1NVd26db22s3PnThUUFHi2k56ern/96186cOCA1/skJCSoa9eufr0PI6dQLaZrAAAAAD8hOYc/7DKait+7uWRnZ2vUqFHq2bOnevXqpblz56q4uNhz976RI0eqTZs2mjlzpiTpwQcfVN++fTV79mwNHDhQS5cu1caNG7VgwQLPNg8fPqyCggLt27dP0pnCk3RmxFNycrIaN26ssWPHKjs7W82aNVNCQoLuv/9+paen68orr5Qk9e/fX127dtVdd92l559/Xi6XS1OmTNGECRP8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oU4+Io0CVehFMuGgN9x/CfklqlMnfN/N6dMlks70SJ8tJydH06ZNq/V28/Ly1KRJE0/SIUkZGRmKjo7W+vXrdeutt9a4jU2bNmnr1q2aN29epecmTJigu+++Wx06dNCvfvUrjRkzRlFRJM1OR2ywD+KEf4gRxAgA4UdRCv6gOGUi9I5bFz3h2LNnjxISEjx/B9MjLkkul0stW7b0WlanTh01a9ZMLpfLr228+eab6tKli3r37u21fPr06bruuutUv359ffrpp7rvvvt0/PhxPfDAA0G1GeHD6Fp7IFY4FzECgBNRlEIgHFecCtW0DTsgAQmNSCcb4egN53pTwUtISPBKPKoyadIkPffcc9Wus3379qDb8+OPP2rJkiV68sknKz139rLLLrtMxcXFeuGFF0g84EF8CD2rj64lTgSHGAHASShKoTYcV5wyu0iPniIBASLr4Ycf1ujRo6tdp0OHDkpOTtaBAwe8lp8+fVqHDx/26zog7733nk6cOKGRI0fWuG5aWppmzJihkpKSoHvzcUY4pn4zuta6GDEFfxEjAFgVBSkEi+JUEKx+3akKFKhqzw6jphBZiYmJSkys+biRnp6uI0eOaNOmTUpNTZUkrVmzRuXl5UpLS6vx9W+++aZuvvlmv95r69atatq0KUkHvBAbQoPCFAJBjABgJRSkEEoUp0zIiN5xkpDA2SXhCOVUjeuTd4RsW07XpUsXDRgwQOPGjdP8+fN16tQpZWVladiwYZ67MO3du1f9+vXTO++8o169enleu2vXLn3++edauXJlpe3++c9/VmFhoa688krFx8crNzdXzzzzjB555JGI7Rtqj9G11mJEnDB7JwZxIjSIEQCMRFEK4UBxCh4kIf4xqihl9oQDobd48WJlZWWpX79+io6O1uDBg/Xyyy97nj916pR27typEydOeL1u4cKFOu+889S/f/9K26xbt67mzZuniRMnyu1264ILLtCcOXM0bty4sO8PrInYUDt26cCQuN6UWREjAEQSBSmEG8WpIIVrap9R1xYhCamenZINmF+zZs20ZMmSKp9PSUmR21353+szzzyjZ555xudrBgwYoAEDBoSsjaianeIDsSEwdGIgEogRAMKJYhQiLdroBhiBIeXVowDjm5GfS7gSDnrDAW/Eh6oRG/zD5wQAsKJjHcu9HkCkMXLKxIy8M1PFyTU95WeQ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0RKWIuK4YjuZO97nyTnUkhGAenKCGcGMcDfuep8nx2NGMCMciRnBjCAnc+W7sbfIy8sTrVYrubm5UlpaKsnJyRIQECBGo1FERBITEyU9Pd28/ujRo+Lt7S3r1q2TsrIy0ev1bvERsEr7yMzMFI1GI99++61cu3bNvNXW1rqqBTOlvdzLnT5lQ2kvV65ckZ49e8qbb74pFy5ckL1790pQUJD8+9//dlULZkp70ev10rNnT/n666+loqJCfvrpJxkwYIBMnTrVVS2IiEhtba0YDAYxGAwCQNavXy8Gg0EuX74sIiLp6emSmJhoXt/yEbBvv/22lJWVSU5ODj8CtgtRS0aIqCcnmBHMCEdiRpASzAhmhCMxI5gR5DxuMZwSEcnOzpZ+/fqJRqORmJgYOX78uPm28ePHS1JSksX6HTt2yKBBg0Sj0ciQIUMkPz/fyRVbp6SP8PBwAdBq0+v1zi/cCqW/k7u5U6iIKO+lqKhIYmNjRavVSkREhKxcuVKampqcXLV1SnppbGyUZcuWyYABA8THx0fCwsJk3rx58tdffzm/8LscPHjQ6t9+S+1JSUkyfvz4VsdER0eLRqORiIgI2bZtm9PrJtdRS0aIqCcnmBHMCEdhRpBSzAhmhCMxI5gR5BweIg/Qa/KIiIiIiIiIiEhVXP6eU0RERERERERE1HVxOEVERERERERERC7D4RQREREREREREbkMh1NEREREREREROQyHE4REREREREREZHLcDhFREREREREREQuw+EUERERERERERG5DIdTRERERERERETkMhxOERERERERERGRy3A4RURERERERERELsPhFBERERERERERucz/AT8+f54QiweoAAAAAElFTkSuQmCC"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e7bc0577">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="Solving-the-problem-with-learnable-extra-features-PINNs">Solving the problem with learnable extra-features PINNs<a class="anchor-link" href="#Solving-the-problem-with-learnable-extra-features-PINNs">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=86c1d7b0">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>We can still do better!</p>
|
||
<p>Another way to exploit the extra features is the addition of learnable parameter inside them.
|
||
In this way, the added parameters are learned during the training phase of the neural network. In this case, we use:</p>
|
||
<p>\begin{equation}
|
||
k(x, \mathbf{y}) = \beta \sin{(\alpha x)} \sin{(\alpha y)},
|
||
\end{equation}</p>
|
||
<p>where $\alpha$ and $\beta$ are the abovementioned parameters.
|
||
Their implementation is quite trivial: by using the class <code>torch.nn.Parameter</code> we cam define all the learnable parameters we need, and they are managed by <code>autograd</code> module!</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=ae8716e7">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [8]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">SinSinAB</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">""" """</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">([</span><span class="mf">1.0</span><span class="p">]))</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">([</span><span class="mf">1.0</span><span class="p">]))</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||
<span class="n">t</span> <span class="o">=</span> <span class="p">(</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">beta</span>
|
||
<span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">*</span> <span class="n">x</span><span class="o">.</span><span class="n">extract</span><span class="p">([</span><span class="s2">"x"</span><span class="p">])</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span>
|
||
<span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">*</span> <span class="n">x</span><span class="o">.</span><span class="n">extract</span><span class="p">([</span><span class="s2">"y"</span><span class="p">])</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span>
|
||
<span class="p">)</span>
|
||
<span class="k">return</span> <span class="n">LabelTensor</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="p">[</span><span class="s2">"b*sin(a*x)sin(a*y)"</span><span class="p">])</span>
|
||
|
||
|
||
<span class="c1"># make model + solver + trainer</span>
|
||
<span class="n">model_learn</span> <span class="o">=</span> <span class="n">FeedForwardWithExtraFeatures</span><span class="p">(</span>
|
||
<span class="n">input_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">input_variables</span><span class="p">)</span>
|
||
<span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="c1"># we add one as also we consider the extra feature dimension</span>
|
||
<span class="n">output_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">output_variables</span><span class="p">),</span>
|
||
<span class="n">func</span><span class="o">=</span><span class="n">Softplus</span><span class="p">,</span>
|
||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
|
||
<span class="n">extra_features</span><span class="o">=</span><span class="n">SinSinAB</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="n">pinn_learn</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span>
|
||
<span class="n">problem</span><span class="p">,</span>
|
||
<span class="n">model_learn</span><span class="p">,</span>
|
||
<span class="n">optimizer</span><span class="o">=</span><span class="n">TorchOptimizer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.006</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer_learn</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="o">=</span><span class="n">pinn_learn</span><span class="p">,</span> <span class="c1"># setting the solver, i.e. PINN</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="c1"># setting max epochs in training</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="c1"># we train on cpu, also other are available</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># model summary statistics not printed</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="c1"># set train size</span>
|
||
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="c1"># set validation size</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="c1"># set testing size</span>
|
||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># shuffle the data</span>
|
||
<span class="p">)</span>
|
||
<span class="c1"># train</span>
|
||
<span class="n">trainer_learn</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>You are using the plain ModelCheckpoint callback. Consider using LitModelCheckpoint which with seamless uploading to Model registry.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>GPU available: False, used: False
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>TPU available: False, using: 0 TPU cores
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>HPU available: False, using: 0 HPUs
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="74f3e410-dffc-4746-888e-a213329d634e" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('74f3e410-dffc-4746-888e-a213329d634e');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "c4c163680f16462c8d860e4b8c752918"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>`Trainer.fit` stopped: `max_epochs=1000` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0319fb3b">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>Umh, the final loss is not appreciabily better than previous model (with static extra features), despite the usage of learnable parameters. This is mainly due to the over-parametrization of the network: there are many parameter to optimize during the training, and the model in unable to understand automatically that only the parameters of the extra feature (and not the weights/bias of the FFN) should be tuned in order to fit our problem. A longer training can be helpful, but in this case the faster way to reach machine precision for solving the Poisson problem is removing all the hidden layers in the <code>FeedForward</code>, keeping only the $\alpha$ and $\beta$ parameters of the extra feature.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=daa9cf17">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [9]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># make model + solver + trainer</span>
|
||
<span class="n">model_learn</span> <span class="o">=</span> <span class="n">FeedForwardWithExtraFeatures</span><span class="p">(</span>
|
||
<span class="n">layers</span><span class="o">=</span><span class="p">[],</span>
|
||
<span class="n">func</span><span class="o">=</span><span class="n">Softplus</span><span class="p">,</span>
|
||
<span class="n">output_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">output_variables</span><span class="p">),</span>
|
||
<span class="n">input_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">input_variables</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
|
||
<span class="n">extra_features</span><span class="o">=</span><span class="n">SinSinAB</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">pinn_learn</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span>
|
||
<span class="n">problem</span><span class="p">,</span>
|
||
<span class="n">model_learn</span><span class="p">,</span>
|
||
<span class="n">optimizer</span><span class="o">=</span><span class="n">TorchOptimizer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.006</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer_learn</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="o">=</span><span class="n">pinn_learn</span><span class="p">,</span> <span class="c1"># setting the solver, i.e. PINN</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="c1"># setting max epochs in training</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="c1"># we train on cpu, also other are available</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># model summary statistics not printed</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="c1"># set train size</span>
|
||
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="c1"># set validation size</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="c1"># set testing size</span>
|
||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># shuffle the data</span>
|
||
<span class="p">)</span>
|
||
<span class="c1"># train</span>
|
||
<span class="n">trainer_learn</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>You are using the plain ModelCheckpoint callback. Consider using LitModelCheckpoint which with seamless uploading to Model registry.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>GPU available: False, used: False
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>TPU available: False, using: 0 TPU cores
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>HPU available: False, using: 0 HPUs
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="90ad8c04-792f-4f37-a420-6a53b29fa3da" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('90ad8c04-792f-4f37-a420-6a53b29fa3da');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "cbad7d4618224154aafab643f3f85064"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>`Trainer.fit` stopped: `max_epochs=1000` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=150b3e62">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>In such a way, the model is able to reach a very high accuracy!
|
||
Of course, this is a toy problem for understanding the usage of extra features: similar precision could be obtained if the extra features are very similar to the true solution. The analyzed Poisson problem shows a forcing term very close to the solution, resulting in a perfect problem to address with such an approach.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=8c64fcb4">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>We conclude here by showing the test error for the analysed methodologies: the standard PINN, PINN with extra features, and PINN with learnable extra features.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=a04e8a5d">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [10]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># test error base pinn</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"PINN"</span><span class="p">)</span>
|
||
<span class="n">trainer_base</span><span class="o">.</span><span class="n">test</span><span class="p">()</span>
|
||
<span class="c1"># test error extra features pinn</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"PINN with extra features"</span><span class="p">)</span>
|
||
<span class="n">trainer_feat</span><span class="o">.</span><span class="n">test</span><span class="p">()</span>
|
||
<span class="c1"># test error learnable extra features pinn</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"PINN with learnable extra features"</span><span class="p">)</span>
|
||
<span class="n">_</span> <span class="o">=</span> <span class="n">trainer_learn</span><span class="o">.</span><span class="n">test</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>PINN
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="828e3165-b1b5-4321-a839-499ecf471734" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('828e3165-b1b5-4321-a839-499ecf471734');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "396880d5729d49f58bc54aeb20536560"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
Test metric DataLoader 0
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
test_loss 0.017359161749482155
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
PINN with extra features
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="435f220e-f47d-41e3-a096-10b9609a14c7" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('435f220e-f47d-41e3-a096-10b9609a14c7');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "f2e344e33eaa436cbcc46bec1543258e"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
Test metric DataLoader 0
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
test_loss 0.001503044506534934
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
PINN with learnable extra features
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="499a4411-fbc9-4629-9404-c5967dbba8e6" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('499a4411-fbc9-4629-9404-c5967dbba8e6');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "6647a580eb824e2bbe545f1cc2951493"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
Test metric DataLoader 0
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
test_loss 8.48059296398862e-12
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0a4c8895">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="What's-Next?">What's Next?<a class="anchor-link" href="#What's-Next?">¶</a></h2><p>Congratulations on completing the two-dimensional Poisson tutorial of <strong>PINA</strong>! Now that you've learned the basics, there are multiple directions you can explore:</p>
|
||
<ol>
|
||
<li><p><strong>Train the Network for Longer</strong>: Continue training the network for a longer duration or experiment with different layer sizes to assess the final accuracy.</p>
|
||
</li>
|
||
<li><p><strong>Propose New Types of Extrafeatures</strong>: Experiment with new extrafeatures and investigate how they affect the learning process.</p>
|
||
</li>
|
||
<li><p><strong>Leverage Extrafeature Training for Complex Problems</strong>: Apply extrafeature training techniques to more complex problems to improve model performance.</p>
|
||
</li>
|
||
<li><p><strong>... and many more!.</strong>: There are endless possibilities! Continue exploring and experimenting with new ideas.</p>
|
||
</li>
|
||
</ol>
|
||
<p>For more resources and tutorials, check out the <a href="https://mathlab.github.io/PINA/">PINA Documentation</a>.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
<script type="application/vnd.jupyter.widget-state+json">
|
||
{"state": {"a549d06f0f2543169d4ed543d0f09bd1": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "a27af4bed2e246b193da033b776bfc41": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "04c2d59416584269a56d259adeee84f2": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_a549d06f0f2543169d4ed543d0f09bd1", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_a27af4bed2e246b193da033b776bfc41", "tabbable": null, "tooltip": null, "value": 1.0}}, "3e8eb4de98da45f7ad5ff0f22182772c": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "f977e06e673d463ba064c5004e018a7c": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "0a7484f4bbab4ccbad3f047600da5a9a": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_3e8eb4de98da45f7ad5ff0f22182772c", "placeholder": "\u200b", "style": "IPY_MODEL_f977e06e673d463ba064c5004e018a7c", "tabbable": null, "tooltip": null, "value": "Epoch\u2007999:\u2007100%"}}, "af4fce4e698349cdac63ead27b8c0fef": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "319327725c66455095a7c5c2eff7266b": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "0029c1b3a0f445859e97004977af0325": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_af4fce4e698349cdac63ead27b8c0fef", "placeholder": "\u200b", "style": "IPY_MODEL_319327725c66455095a7c5c2eff7266b", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200748.73it\/s,\u2007v_num=0,\u2007g1_loss=0.00851,\u2007g2_loss=0.00203,\u2007g3_loss=0.00283,\u2007g4_loss=0.015,\u2007D_loss=0.0474,\u2007train_loss=0.0757]"}}, "a91000b5051e4ced82dd2d4a666b485d": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "71882bbb2b6049839891bee85bfcd226": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_0a7484f4bbab4ccbad3f047600da5a9a", "IPY_MODEL_04c2d59416584269a56d259adeee84f2", "IPY_MODEL_0029c1b3a0f445859e97004977af0325"], "layout": "IPY_MODEL_a91000b5051e4ced82dd2d4a666b485d", "tabbable": null, "tooltip": null}}, "e78ff13312f4481f826baad2f3d86408": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "e41a87f1ec8a4e088531c8fccc9fc5a0": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "27eb6f003a2342d683d553552e13db05": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_e78ff13312f4481f826baad2f3d86408", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_e41a87f1ec8a4e088531c8fccc9fc5a0", "tabbable": null, "tooltip": null, "value": 1.0}}, "e8835615624e4a9c8da814aa5ac59957": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "f43fefca96894c61970682045f850c19": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "5b4d11e690dd4273962517a04d40695f": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_e8835615624e4a9c8da814aa5ac59957", "placeholder": "\u200b", "style": "IPY_MODEL_f43fefca96894c61970682045f850c19", "tabbable": null, "tooltip": null, "value": "Epoch\u2007999:\u2007100%"}}, "e75762101225455aa1319178f32a2b23": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "32177c5437a344e692c79e919f3de925": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "a970e8bb42264000846b58835b0d8684": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_e75762101225455aa1319178f32a2b23", "placeholder": "\u200b", "style": "IPY_MODEL_32177c5437a344e692c79e919f3de925", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200741.99it\/s,\u2007v_num=1,\u2007g1_loss=0.000252,\u2007g2_loss=0.000205,\u2007g3_loss=8.26e-5,\u2007g4_loss=7.35e-5,\u2007D_loss=0.0059,\u2007train_loss=0.00651]"}}, "207b62702c914ca3b52263a702473323": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "d37b4cf703e8447f8e0fc88721578a8b": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_5b4d11e690dd4273962517a04d40695f", "IPY_MODEL_27eb6f003a2342d683d553552e13db05", "IPY_MODEL_a970e8bb42264000846b58835b0d8684"], "layout": "IPY_MODEL_207b62702c914ca3b52263a702473323", "tabbable": null, "tooltip": null}}, "54d4c7dbeef04b65b626414beb4d7195": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "72c4445a75e348fa871d235b11c48767": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "3a07e01417da4a1685ce94cb9f5d275f": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_54d4c7dbeef04b65b626414beb4d7195", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_72c4445a75e348fa871d235b11c48767", "tabbable": null, "tooltip": null, "value": 1.0}}, "6faf1b00e81c47d4937ccf220bdb0689": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "8c478379d80a4eeaa9fa88dd0ed2571a": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "c933ead97ca94c82b4ac846c87fe4e54": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_6faf1b00e81c47d4937ccf220bdb0689", "placeholder": "\u200b", "style": "IPY_MODEL_8c478379d80a4eeaa9fa88dd0ed2571a", "tabbable": null, "tooltip": null, "value": "Epoch\u2007999:\u2007100%"}}, "af57a082dd9f4005b831f1fbfd7e08f4": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "c6f4e2ecb9d5454bb958315e8ccd4cbf": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "d52bda26027645f682140c5eea15192a": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_af57a082dd9f4005b831f1fbfd7e08f4", "placeholder": "\u200b", "style": "IPY_MODEL_c6f4e2ecb9d5454bb958315e8ccd4cbf", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200740.36it\/s,\u2007v_num=2,\u2007g1_loss=2e-5,\u2007g2_loss=2.84e-6,\u2007g3_loss=1.75e-5,\u2007g4_loss=2.14e-6,\u2007D_loss=0.000945,\u2007train_loss=0.000988]"}}, "b824db7a69dc497381dfe62c261137e3": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "c4c163680f16462c8d860e4b8c752918": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_c933ead97ca94c82b4ac846c87fe4e54", "IPY_MODEL_3a07e01417da4a1685ce94cb9f5d275f", "IPY_MODEL_d52bda26027645f682140c5eea15192a"], "layout": "IPY_MODEL_b824db7a69dc497381dfe62c261137e3", "tabbable": null, "tooltip": null}}, "7cdbd6527a6b45bb8ac396006d3d13bc": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "9e65f2ebcdfe4ff989582b4c1eabe431": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "d0451da55f6d4e409cf19d9c06ad3ef8": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_7cdbd6527a6b45bb8ac396006d3d13bc", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_9e65f2ebcdfe4ff989582b4c1eabe431", "tabbable": null, "tooltip": null, "value": 1.0}}, "9dca70c764c5487a9a4733370f4ea5a3": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "34bebf0777a74a10b0777338d960785c": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "e867907176574804a8e9bfc4e78a7dde": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_9dca70c764c5487a9a4733370f4ea5a3", "placeholder": "\u200b", "style": "IPY_MODEL_34bebf0777a74a10b0777338d960785c", "tabbable": null, "tooltip": null, "value": "Epoch\u2007999:\u2007100%"}}, "b58ab925ad5d4b169863b72038890dd7": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "9f966d27d4ac4801b9c55698a611c78d": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "a5f3784392bf4594862041d4d2cf530b": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_b58ab925ad5d4b169863b72038890dd7", "placeholder": "\u200b", "style": "IPY_MODEL_9f966d27d4ac4801b9c55698a611c78d", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200749.92it\/s,\u2007v_num=3,\u2007g1_loss=9.84e-14,\u2007g2_loss=1.64e-13,\u2007g3_loss=1.15e-13,\u2007g4_loss=1.52e-13,\u2007D_loss=4.93e-11,\u2007train_loss=4.99e-11]"}}, "28498a2a6c9344f79bab3842bb24fccc": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "cbad7d4618224154aafab643f3f85064": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_e867907176574804a8e9bfc4e78a7dde", "IPY_MODEL_d0451da55f6d4e409cf19d9c06ad3ef8", "IPY_MODEL_a5f3784392bf4594862041d4d2cf530b"], "layout": "IPY_MODEL_28498a2a6c9344f79bab3842bb24fccc", "tabbable": null, "tooltip": null}}, "8642f9efaccb48faad84f4d74c44e9f2": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "352fc26352644125b576276fb2b3012e": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "f35496014f9a4163a2651649ac7d556f": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_8642f9efaccb48faad84f4d74c44e9f2", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_352fc26352644125b576276fb2b3012e", "tabbable": null, "tooltip": null, "value": 1.0}}, "9ef46eb557de4622a250d76958373be6": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "1f38f5242f6d4f46b1447609a43e7740": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "092b7548ce794d64ac697fdbef0c37e6": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_9ef46eb557de4622a250d76958373be6", "placeholder": "\u200b", "style": "IPY_MODEL_1f38f5242f6d4f46b1447609a43e7740", "tabbable": null, "tooltip": null, "value": "Testing\u2007DataLoader\u20070:\u2007100%"}}, "c0fb79e7a0d2433fa501693a8de64878": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "b36c3fb6d4864f8eba64c3b67e6dfe67": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "4cedb31df7be4fe68ed21c38dc9bde50": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_c0fb79e7a0d2433fa501693a8de64878", "placeholder": "\u200b", "style": "IPY_MODEL_b36c3fb6d4864f8eba64c3b67e6dfe67", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u2007104.72it\/s]"}}, "fba3a307f76a413c99152b9f05d529fc": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "396880d5729d49f58bc54aeb20536560": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_092b7548ce794d64ac697fdbef0c37e6", "IPY_MODEL_f35496014f9a4163a2651649ac7d556f", "IPY_MODEL_4cedb31df7be4fe68ed21c38dc9bde50"], "layout": "IPY_MODEL_fba3a307f76a413c99152b9f05d529fc", "tabbable": null, "tooltip": null}}, "4a51cadb8a6d462a8558e5c4329ce843": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "6c29fd86d5c24681891b534a23f3a70e": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "61eab616dbc24098824d16e2894f1edd": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_4a51cadb8a6d462a8558e5c4329ce843", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_6c29fd86d5c24681891b534a23f3a70e", "tabbable": null, "tooltip": null, "value": 1.0}}, "0f37c97622564675867221c2852e8faa": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "466e8a2200d54fbbbef40b2949195450": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "6c9d7733db014badae81f81a0c95f477": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_0f37c97622564675867221c2852e8faa", "placeholder": "\u200b", "style": "IPY_MODEL_466e8a2200d54fbbbef40b2949195450", "tabbable": null, "tooltip": null, "value": "Testing\u2007DataLoader\u20070:\u2007100%"}}, "b98e3c82ccd54ee0abcb885adf591b29": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "cbe1564bd40a4246aa89a2b3f283a6e0": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "84731f96a66f4b2195db9ce585341c9c": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_b98e3c82ccd54ee0abcb885adf591b29", "placeholder": "\u200b", "style": "IPY_MODEL_cbe1564bd40a4246aa89a2b3f283a6e0", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200789.12it\/s]"}}, "cf15bd950c524199bf1655f8e966eb29": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "f2e344e33eaa436cbcc46bec1543258e": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_6c9d7733db014badae81f81a0c95f477", "IPY_MODEL_61eab616dbc24098824d16e2894f1edd", "IPY_MODEL_84731f96a66f4b2195db9ce585341c9c"], "layout": "IPY_MODEL_cf15bd950c524199bf1655f8e966eb29", "tabbable": null, "tooltip": null}}, "1691ed3fc40a4bf4a320a44f24eabae1": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "cace04dec4294a279fbec0be6d5505a5": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "3e7d68d4619643aea0f3f744d84646f0": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_1691ed3fc40a4bf4a320a44f24eabae1", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_cace04dec4294a279fbec0be6d5505a5", "tabbable": null, "tooltip": null, "value": 1.0}}, "3be8fc2d29f4477ba5fcad3113901e1d": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "c2d58e0b781440a891605d153695bbeb": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "a184eb4f723e48c5928a654e7b734545": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_3be8fc2d29f4477ba5fcad3113901e1d", "placeholder": "\u200b", "style": "IPY_MODEL_c2d58e0b781440a891605d153695bbeb", "tabbable": null, "tooltip": null, "value": "Testing\u2007DataLoader\u20070:\u2007100%"}}, "b12c932b4f114939af6b5a3c9eb9dcb7": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "b6d84e51996747c6b06611bccb7d29c6": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "76d7aa1fc3d949158f585d57e4f47d6e": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_b12c932b4f114939af6b5a3c9eb9dcb7", "placeholder": "\u200b", "style": "IPY_MODEL_b6d84e51996747c6b06611bccb7d29c6", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200794.94it\/s]"}}, "b553b7d6401f4665a83ae84876d9fb16": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "6647a580eb824e2bbe545f1cc2951493": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_a184eb4f723e48c5928a654e7b734545", "IPY_MODEL_3e7d68d4619643aea0f3f744d84646f0", "IPY_MODEL_76d7aa1fc3d949158f585d57e4f47d6e"], "layout": "IPY_MODEL_b553b7d6401f4665a83ae84876d9fb16", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0}
|
||
</script>
|
||
</html>
|