mirror of
https://github.com/fverdugo/XM_40017.git
synced 2025-11-09 00:34:24 +01:00
8554 lines
678 KiB
HTML
8554 lines
678 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html lang="en">
|
||
<head><meta charset="utf-8"/>
|
||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||
<title>mpi_collectives</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
|
||
<script src='../assets/iframeResizer.contentWindow.min.js'></script>
|
||
|
||
<style type="text/css">
|
||
pre { line-height: 125%; }
|
||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||
.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
|
||
.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
|
||
.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
|
||
.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
|
||
.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
|
||
.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
|
||
.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
|
||
.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
|
||
.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
|
||
.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
|
||
.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
|
||
.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
|
||
.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
|
||
.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
|
||
.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
|
||
.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
|
||
.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
|
||
.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
|
||
.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
|
||
.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
|
||
.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
|
||
.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
|
||
.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
|
||
.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
|
||
.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
|
||
.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
|
||
.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
|
||
.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
|
||
.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
|
||
.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
|
||
.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
|
||
.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
|
||
.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
|
||
.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
|
||
.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
|
||
.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
|
||
.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
|
||
.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
|
||
.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
|
||
.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
|
||
.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
|
||
.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
|
||
.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
|
||
</style>
|
||
<style type="text/css">
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
* Mozilla scrollbar styling
|
||
*/
|
||
|
||
/* use standard opaque scrollbars for most nodes */
|
||
[data-jp-theme-scrollbars='true'] {
|
||
scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
|
||
var(--jp-scrollbar-background-color);
|
||
}
|
||
|
||
/* for code nodes, use a transparent style of scrollbar. These selectors
|
||
* will match lower in the tree, and so will override the above */
|
||
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
|
||
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
|
||
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
|
||
}
|
||
|
||
/* tiny scrollbar */
|
||
|
||
.jp-scrollbar-tiny {
|
||
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
|
||
scrollbar-width: thin;
|
||
}
|
||
|
||
/* tiny scrollbar */
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar,
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-corner {
|
||
background-color: transparent;
|
||
height: 4px;
|
||
width: 4px;
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
|
||
background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
|
||
border-left: 0 solid transparent;
|
||
border-right: 0 solid transparent;
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
|
||
border-top: 0 solid transparent;
|
||
border-bottom: 0 solid transparent;
|
||
}
|
||
|
||
/*
|
||
* Lumino
|
||
*/
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] {
|
||
min-height: 16px;
|
||
max-height: 16px;
|
||
min-width: 45px;
|
||
border-top: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] {
|
||
min-width: 16px;
|
||
max-width: 16px;
|
||
min-height: 45px;
|
||
border-left: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar-button {
|
||
background-color: #f0f0f0;
|
||
background-position: center center;
|
||
min-height: 15px;
|
||
max-height: 15px;
|
||
min-width: 15px;
|
||
max-width: 15px;
|
||
}
|
||
|
||
.lm-ScrollBar-button:hover {
|
||
background-color: #dadada;
|
||
}
|
||
|
||
.lm-ScrollBar-button.lm-mod-active {
|
||
background-color: #cdcdcd;
|
||
}
|
||
|
||
.lm-ScrollBar-track {
|
||
background: #f0f0f0;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb {
|
||
background: #cdcdcd;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb:hover {
|
||
background: #bababa;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb.lm-mod-active {
|
||
background: #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
|
||
height: 100%;
|
||
min-width: 15px;
|
||
border-left: 1px solid #a0a0a0;
|
||
border-right: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
|
||
width: 100%;
|
||
min-height: 15px;
|
||
border-top: 1px solid #a0a0a0;
|
||
border-bottom: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal']
|
||
.lm-ScrollBar-button[data-action='decrement'] {
|
||
background-image: var(--jp-icon-caret-left);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal']
|
||
.lm-ScrollBar-button[data-action='increment'] {
|
||
background-image: var(--jp-icon-caret-right);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical']
|
||
.lm-ScrollBar-button[data-action='decrement'] {
|
||
background-image: var(--jp-icon-caret-up);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical']
|
||
.lm-ScrollBar-button[data-action='increment'] {
|
||
background-image: var(--jp-icon-caret-down);
|
||
background-size: 17px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-Widget {
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-Widget.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
|
||
/* Title is rotated for horizontal accordion panel using CSS */
|
||
display: block;
|
||
transform-origin: top left;
|
||
transform: rotate(-90deg) translate(-100%);
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette {
|
||
display: flex;
|
||
flex-direction: column;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-CommandPalette-search {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-content {
|
||
flex: 1 1 auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
min-height: 0;
|
||
overflow: auto;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-CommandPalette-header {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.lm-CommandPalette-item {
|
||
display: flex;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-CommandPalette-itemIcon {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemContent {
|
||
flex: 1 1 auto;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-CommandPalette-itemShortcut {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemLabel {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.lm-close-icon {
|
||
border: 1px solid transparent;
|
||
background-color: transparent;
|
||
position: absolute;
|
||
z-index: 1;
|
||
right: 3%;
|
||
top: 0;
|
||
bottom: 0;
|
||
margin: auto;
|
||
padding: 7px 0;
|
||
display: none;
|
||
vertical-align: middle;
|
||
outline: 0;
|
||
cursor: pointer;
|
||
}
|
||
.lm-close-icon:after {
|
||
content: 'X';
|
||
display: block;
|
||
width: 15px;
|
||
height: 15px;
|
||
text-align: center;
|
||
color: #000;
|
||
font-weight: normal;
|
||
font-size: 12px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-DockPanel {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-DockPanel-widget {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-DockPanel-handle {
|
||
z-index: 2;
|
||
}
|
||
|
||
.lm-DockPanel-handle.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-DockPanel-handle:after {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
content: '';
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='horizontal'] {
|
||
cursor: ew-resize;
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='vertical'] {
|
||
cursor: ns-resize;
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='horizontal']:after {
|
||
left: 50%;
|
||
min-width: 8px;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='vertical']:after {
|
||
top: 50%;
|
||
min-height: 8px;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
.lm-DockPanel-overlay {
|
||
z-index: 3;
|
||
box-sizing: border-box;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.lm-DockPanel-overlay.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-Menu {
|
||
z-index: 10000;
|
||
position: absolute;
|
||
white-space: nowrap;
|
||
overflow-x: hidden;
|
||
overflow-y: auto;
|
||
outline: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-Menu-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: table;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-Menu-item {
|
||
display: table-row;
|
||
}
|
||
|
||
.lm-Menu-item.lm-mod-hidden,
|
||
.lm-Menu-item.lm-mod-collapsed {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-Menu-itemIcon,
|
||
.lm-Menu-itemSubmenuIcon {
|
||
display: table-cell;
|
||
text-align: center;
|
||
}
|
||
|
||
.lm-Menu-itemLabel {
|
||
display: table-cell;
|
||
text-align: left;
|
||
}
|
||
|
||
.lm-Menu-itemShortcut {
|
||
display: table-cell;
|
||
text-align: right;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-MenuBar {
|
||
outline: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-MenuBar-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex-direction: row;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-MenuBar-item {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.lm-MenuBar-itemIcon,
|
||
.lm-MenuBar-itemLabel {
|
||
display: inline-block;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-ScrollBar {
|
||
display: flex;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] {
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.lm-ScrollBar-button {
|
||
box-sizing: border-box;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-ScrollBar-track {
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
overflow: hidden;
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb {
|
||
box-sizing: border-box;
|
||
position: absolute;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-SplitPanel-child {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-SplitPanel-handle {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-SplitPanel-handle.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-SplitPanel-handle:after {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
content: '';
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
|
||
cursor: ew-resize;
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
|
||
cursor: ns-resize;
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
|
||
left: 50%;
|
||
min-width: 8px;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
|
||
top: 50%;
|
||
min-height: 8px;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabBar {
|
||
display: flex;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='horizontal'] {
|
||
flex-direction: row;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='vertical'] {
|
||
flex-direction: column;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.lm-TabBar-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex: 1 1 auto;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.lm-TabBar-tab {
|
||
display: flex;
|
||
flex-direction: row;
|
||
box-sizing: border-box;
|
||
overflow: hidden;
|
||
touch-action: none; /* Disable native Drag/Drop */
|
||
}
|
||
|
||
.lm-TabBar-tabIcon,
|
||
.lm-TabBar-tabCloseIcon {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-TabBar-tabLabel {
|
||
flex: 1 1 auto;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.lm-TabBar-tabInput {
|
||
user-select: all;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.lm-TabBar-tab.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-TabBar-addButton.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
|
||
position: relative;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
|
||
left: 0;
|
||
transition: left 150ms ease;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
|
||
top: 0;
|
||
transition: top 150ms ease;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
|
||
transition: none;
|
||
}
|
||
|
||
.lm-TabBar-tabLabel .lm-TabBar-tabInput {
|
||
user-select: all;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
background: inherit;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabPanel-tabBar {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-TabPanel-stackedPanel {
|
||
z-index: 0;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Collapse {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: stretch;
|
||
}
|
||
|
||
.jp-Collapse-header {
|
||
padding: 1px 12px;
|
||
background-color: var(--jp-layout-color1);
|
||
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
text-transform: uppercase;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-Collapser-icon {
|
||
height: 16px;
|
||
}
|
||
|
||
.jp-Collapse-header-collapsed .jp-Collapser-icon {
|
||
transform: rotate(-90deg);
|
||
margin: auto 0;
|
||
}
|
||
|
||
.jp-Collapser-title {
|
||
line-height: 25px;
|
||
}
|
||
|
||
.jp-Collapse-contents {
|
||
padding: 0 12px;
|
||
background-color: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
overflow: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
|
||
|
||
/**
|
||
* (DEPRECATED) Support for consuming icons as CSS background images
|
||
*/
|
||
|
||
/* Icons urls */
|
||
|
||
:root {
|
||
--jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
|
||
--jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
|
||
--jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
|
||
--jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
|
||
--jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
|
||
--jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
|
||
--jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
|
||
--jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
|
||
--jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
|
||
--jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
|
||
--jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
|
||
--jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
|
||
--jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
|
||
--jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
}
|
||
|
||
/* Icon CSS class declarations */
|
||
|
||
.jp-AddAboveIcon {
|
||
background-image: var(--jp-icon-add-above);
|
||
}
|
||
|
||
.jp-AddBelowIcon {
|
||
background-image: var(--jp-icon-add-below);
|
||
}
|
||
|
||
.jp-AddIcon {
|
||
background-image: var(--jp-icon-add);
|
||
}
|
||
|
||
.jp-BellIcon {
|
||
background-image: var(--jp-icon-bell);
|
||
}
|
||
|
||
.jp-BugDotIcon {
|
||
background-image: var(--jp-icon-bug-dot);
|
||
}
|
||
|
||
.jp-BugIcon {
|
||
background-image: var(--jp-icon-bug);
|
||
}
|
||
|
||
.jp-BuildIcon {
|
||
background-image: var(--jp-icon-build);
|
||
}
|
||
|
||
.jp-CaretDownEmptyIcon {
|
||
background-image: var(--jp-icon-caret-down-empty);
|
||
}
|
||
|
||
.jp-CaretDownEmptyThinIcon {
|
||
background-image: var(--jp-icon-caret-down-empty-thin);
|
||
}
|
||
|
||
.jp-CaretDownIcon {
|
||
background-image: var(--jp-icon-caret-down);
|
||
}
|
||
|
||
.jp-CaretLeftIcon {
|
||
background-image: var(--jp-icon-caret-left);
|
||
}
|
||
|
||
.jp-CaretRightIcon {
|
||
background-image: var(--jp-icon-caret-right);
|
||
}
|
||
|
||
.jp-CaretUpEmptyThinIcon {
|
||
background-image: var(--jp-icon-caret-up-empty-thin);
|
||
}
|
||
|
||
.jp-CaretUpIcon {
|
||
background-image: var(--jp-icon-caret-up);
|
||
}
|
||
|
||
.jp-CaseSensitiveIcon {
|
||
background-image: var(--jp-icon-case-sensitive);
|
||
}
|
||
|
||
.jp-CheckIcon {
|
||
background-image: var(--jp-icon-check);
|
||
}
|
||
|
||
.jp-CircleEmptyIcon {
|
||
background-image: var(--jp-icon-circle-empty);
|
||
}
|
||
|
||
.jp-CircleIcon {
|
||
background-image: var(--jp-icon-circle);
|
||
}
|
||
|
||
.jp-ClearIcon {
|
||
background-image: var(--jp-icon-clear);
|
||
}
|
||
|
||
.jp-CloseIcon {
|
||
background-image: var(--jp-icon-close);
|
||
}
|
||
|
||
.jp-CodeCheckIcon {
|
||
background-image: var(--jp-icon-code-check);
|
||
}
|
||
|
||
.jp-CodeIcon {
|
||
background-image: var(--jp-icon-code);
|
||
}
|
||
|
||
.jp-CollapseAllIcon {
|
||
background-image: var(--jp-icon-collapse-all);
|
||
}
|
||
|
||
.jp-ConsoleIcon {
|
||
background-image: var(--jp-icon-console);
|
||
}
|
||
|
||
.jp-CopyIcon {
|
||
background-image: var(--jp-icon-copy);
|
||
}
|
||
|
||
.jp-CopyrightIcon {
|
||
background-image: var(--jp-icon-copyright);
|
||
}
|
||
|
||
.jp-CutIcon {
|
||
background-image: var(--jp-icon-cut);
|
||
}
|
||
|
||
.jp-DeleteIcon {
|
||
background-image: var(--jp-icon-delete);
|
||
}
|
||
|
||
.jp-DownloadIcon {
|
||
background-image: var(--jp-icon-download);
|
||
}
|
||
|
||
.jp-DuplicateIcon {
|
||
background-image: var(--jp-icon-duplicate);
|
||
}
|
||
|
||
.jp-EditIcon {
|
||
background-image: var(--jp-icon-edit);
|
||
}
|
||
|
||
.jp-EllipsesIcon {
|
||
background-image: var(--jp-icon-ellipses);
|
||
}
|
||
|
||
.jp-ErrorIcon {
|
||
background-image: var(--jp-icon-error);
|
||
}
|
||
|
||
.jp-ExpandAllIcon {
|
||
background-image: var(--jp-icon-expand-all);
|
||
}
|
||
|
||
.jp-ExtensionIcon {
|
||
background-image: var(--jp-icon-extension);
|
||
}
|
||
|
||
.jp-FastForwardIcon {
|
||
background-image: var(--jp-icon-fast-forward);
|
||
}
|
||
|
||
.jp-FileIcon {
|
||
background-image: var(--jp-icon-file);
|
||
}
|
||
|
||
.jp-FileUploadIcon {
|
||
background-image: var(--jp-icon-file-upload);
|
||
}
|
||
|
||
.jp-FilterDotIcon {
|
||
background-image: var(--jp-icon-filter-dot);
|
||
}
|
||
|
||
.jp-FilterIcon {
|
||
background-image: var(--jp-icon-filter);
|
||
}
|
||
|
||
.jp-FilterListIcon {
|
||
background-image: var(--jp-icon-filter-list);
|
||
}
|
||
|
||
.jp-FolderFavoriteIcon {
|
||
background-image: var(--jp-icon-folder-favorite);
|
||
}
|
||
|
||
.jp-FolderIcon {
|
||
background-image: var(--jp-icon-folder);
|
||
}
|
||
|
||
.jp-HomeIcon {
|
||
background-image: var(--jp-icon-home);
|
||
}
|
||
|
||
.jp-Html5Icon {
|
||
background-image: var(--jp-icon-html5);
|
||
}
|
||
|
||
.jp-ImageIcon {
|
||
background-image: var(--jp-icon-image);
|
||
}
|
||
|
||
.jp-InfoIcon {
|
||
background-image: var(--jp-icon-info);
|
||
}
|
||
|
||
.jp-InspectorIcon {
|
||
background-image: var(--jp-icon-inspector);
|
||
}
|
||
|
||
.jp-JsonIcon {
|
||
background-image: var(--jp-icon-json);
|
||
}
|
||
|
||
.jp-JuliaIcon {
|
||
background-image: var(--jp-icon-julia);
|
||
}
|
||
|
||
.jp-JupyterFaviconIcon {
|
||
background-image: var(--jp-icon-jupyter-favicon);
|
||
}
|
||
|
||
.jp-JupyterIcon {
|
||
background-image: var(--jp-icon-jupyter);
|
||
}
|
||
|
||
.jp-JupyterlabWordmarkIcon {
|
||
background-image: var(--jp-icon-jupyterlab-wordmark);
|
||
}
|
||
|
||
.jp-KernelIcon {
|
||
background-image: var(--jp-icon-kernel);
|
||
}
|
||
|
||
.jp-KeyboardIcon {
|
||
background-image: var(--jp-icon-keyboard);
|
||
}
|
||
|
||
.jp-LaunchIcon {
|
||
background-image: var(--jp-icon-launch);
|
||
}
|
||
|
||
.jp-LauncherIcon {
|
||
background-image: var(--jp-icon-launcher);
|
||
}
|
||
|
||
.jp-LineFormIcon {
|
||
background-image: var(--jp-icon-line-form);
|
||
}
|
||
|
||
.jp-LinkIcon {
|
||
background-image: var(--jp-icon-link);
|
||
}
|
||
|
||
.jp-ListIcon {
|
||
background-image: var(--jp-icon-list);
|
||
}
|
||
|
||
.jp-MarkdownIcon {
|
||
background-image: var(--jp-icon-markdown);
|
||
}
|
||
|
||
.jp-MoveDownIcon {
|
||
background-image: var(--jp-icon-move-down);
|
||
}
|
||
|
||
.jp-MoveUpIcon {
|
||
background-image: var(--jp-icon-move-up);
|
||
}
|
||
|
||
.jp-NewFolderIcon {
|
||
background-image: var(--jp-icon-new-folder);
|
||
}
|
||
|
||
.jp-NotTrustedIcon {
|
||
background-image: var(--jp-icon-not-trusted);
|
||
}
|
||
|
||
.jp-NotebookIcon {
|
||
background-image: var(--jp-icon-notebook);
|
||
}
|
||
|
||
.jp-NumberingIcon {
|
||
background-image: var(--jp-icon-numbering);
|
||
}
|
||
|
||
.jp-OfflineBoltIcon {
|
||
background-image: var(--jp-icon-offline-bolt);
|
||
}
|
||
|
||
.jp-PaletteIcon {
|
||
background-image: var(--jp-icon-palette);
|
||
}
|
||
|
||
.jp-PasteIcon {
|
||
background-image: var(--jp-icon-paste);
|
||
}
|
||
|
||
.jp-PdfIcon {
|
||
background-image: var(--jp-icon-pdf);
|
||
}
|
||
|
||
.jp-PythonIcon {
|
||
background-image: var(--jp-icon-python);
|
||
}
|
||
|
||
.jp-RKernelIcon {
|
||
background-image: var(--jp-icon-r-kernel);
|
||
}
|
||
|
||
.jp-ReactIcon {
|
||
background-image: var(--jp-icon-react);
|
||
}
|
||
|
||
.jp-RedoIcon {
|
||
background-image: var(--jp-icon-redo);
|
||
}
|
||
|
||
.jp-RefreshIcon {
|
||
background-image: var(--jp-icon-refresh);
|
||
}
|
||
|
||
.jp-RegexIcon {
|
||
background-image: var(--jp-icon-regex);
|
||
}
|
||
|
||
.jp-RunIcon {
|
||
background-image: var(--jp-icon-run);
|
||
}
|
||
|
||
.jp-RunningIcon {
|
||
background-image: var(--jp-icon-running);
|
||
}
|
||
|
||
.jp-SaveIcon {
|
||
background-image: var(--jp-icon-save);
|
||
}
|
||
|
||
.jp-SearchIcon {
|
||
background-image: var(--jp-icon-search);
|
||
}
|
||
|
||
.jp-SettingsIcon {
|
||
background-image: var(--jp-icon-settings);
|
||
}
|
||
|
||
.jp-ShareIcon {
|
||
background-image: var(--jp-icon-share);
|
||
}
|
||
|
||
.jp-SpreadsheetIcon {
|
||
background-image: var(--jp-icon-spreadsheet);
|
||
}
|
||
|
||
.jp-StopIcon {
|
||
background-image: var(--jp-icon-stop);
|
||
}
|
||
|
||
.jp-TabIcon {
|
||
background-image: var(--jp-icon-tab);
|
||
}
|
||
|
||
.jp-TableRowsIcon {
|
||
background-image: var(--jp-icon-table-rows);
|
||
}
|
||
|
||
.jp-TagIcon {
|
||
background-image: var(--jp-icon-tag);
|
||
}
|
||
|
||
.jp-TerminalIcon {
|
||
background-image: var(--jp-icon-terminal);
|
||
}
|
||
|
||
.jp-TextEditorIcon {
|
||
background-image: var(--jp-icon-text-editor);
|
||
}
|
||
|
||
.jp-TocIcon {
|
||
background-image: var(--jp-icon-toc);
|
||
}
|
||
|
||
.jp-TreeViewIcon {
|
||
background-image: var(--jp-icon-tree-view);
|
||
}
|
||
|
||
.jp-TrustedIcon {
|
||
background-image: var(--jp-icon-trusted);
|
||
}
|
||
|
||
.jp-UndoIcon {
|
||
background-image: var(--jp-icon-undo);
|
||
}
|
||
|
||
.jp-UserIcon {
|
||
background-image: var(--jp-icon-user);
|
||
}
|
||
|
||
.jp-UsersIcon {
|
||
background-image: var(--jp-icon-users);
|
||
}
|
||
|
||
.jp-VegaIcon {
|
||
background-image: var(--jp-icon-vega);
|
||
}
|
||
|
||
.jp-WordIcon {
|
||
background-image: var(--jp-icon-word);
|
||
}
|
||
|
||
.jp-YamlIcon {
|
||
background-image: var(--jp-icon-yaml);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* (DEPRECATED) Support for consuming icons as CSS background images
|
||
*/
|
||
|
||
.jp-Icon,
|
||
.jp-MaterialIcon {
|
||
background-position: center;
|
||
background-repeat: no-repeat;
|
||
background-size: 16px;
|
||
min-width: 16px;
|
||
min-height: 16px;
|
||
}
|
||
|
||
.jp-Icon-cover {
|
||
background-position: center;
|
||
background-repeat: no-repeat;
|
||
background-size: cover;
|
||
}
|
||
|
||
/**
|
||
* (DEPRECATED) Support for specific CSS icon sizes
|
||
*/
|
||
|
||
.jp-Icon-16 {
|
||
background-size: 16px;
|
||
min-width: 16px;
|
||
min-height: 16px;
|
||
}
|
||
|
||
.jp-Icon-18 {
|
||
background-size: 18px;
|
||
min-width: 18px;
|
||
min-height: 18px;
|
||
}
|
||
|
||
.jp-Icon-20 {
|
||
background-size: 20px;
|
||
min-width: 20px;
|
||
min-height: 20px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabBar .lm-TabBar-addButton {
|
||
align-items: center;
|
||
display: flex;
|
||
padding: 4px;
|
||
padding-bottom: 5px;
|
||
margin-right: 1px;
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-TabBar .lm-TabBar-addButton:hover {
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.lm-DockPanel-tabBar .lm-TabBar-tab {
|
||
width: var(--jp-private-horizontal-tab-width);
|
||
}
|
||
|
||
.lm-DockPanel-tabBar .lm-TabBar-content {
|
||
flex: unset;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar[data-orientation='horizontal'] {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* Support for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/* recolor the primary elements of an icon */
|
||
.jp-icon0[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon1[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon2[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon3[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon4[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon0[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon1[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon2[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon3[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon4[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/* recolor the accent elements of an icon */
|
||
.jp-icon-accent0[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-accent1[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-accent2[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-accent3[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-accent4[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-accent0[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-accent1[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-accent2[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-accent3[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-accent4[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* set the color of an icon to transparent */
|
||
.jp-icon-none[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.jp-icon-none[stroke] {
|
||
stroke: none;
|
||
}
|
||
|
||
/* brand icon colors. Same for light and dark */
|
||
.jp-icon-brand0[fill] {
|
||
fill: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-icon-brand1[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-icon-brand2[fill] {
|
||
fill: var(--jp-brand-color2);
|
||
}
|
||
|
||
.jp-icon-brand3[fill] {
|
||
fill: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-icon-brand4[fill] {
|
||
fill: var(--jp-brand-color4);
|
||
}
|
||
|
||
.jp-icon-brand0[stroke] {
|
||
stroke: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-icon-brand1[stroke] {
|
||
stroke: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-icon-brand2[stroke] {
|
||
stroke: var(--jp-brand-color2);
|
||
}
|
||
|
||
.jp-icon-brand3[stroke] {
|
||
stroke: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-icon-brand4[stroke] {
|
||
stroke: var(--jp-brand-color4);
|
||
}
|
||
|
||
/* warn icon colors. Same for light and dark */
|
||
.jp-icon-warn0[fill] {
|
||
fill: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-icon-warn1[fill] {
|
||
fill: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-icon-warn2[fill] {
|
||
fill: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-icon-warn3[fill] {
|
||
fill: var(--jp-warn-color3);
|
||
}
|
||
|
||
.jp-icon-warn0[stroke] {
|
||
stroke: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-icon-warn1[stroke] {
|
||
stroke: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-icon-warn2[stroke] {
|
||
stroke: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-icon-warn3[stroke] {
|
||
stroke: var(--jp-warn-color3);
|
||
}
|
||
|
||
/* icon colors that contrast well with each other and most backgrounds */
|
||
.jp-icon-contrast0[fill] {
|
||
fill: var(--jp-icon-contrast-color0);
|
||
}
|
||
|
||
.jp-icon-contrast1[fill] {
|
||
fill: var(--jp-icon-contrast-color1);
|
||
}
|
||
|
||
.jp-icon-contrast2[fill] {
|
||
fill: var(--jp-icon-contrast-color2);
|
||
}
|
||
|
||
.jp-icon-contrast3[fill] {
|
||
fill: var(--jp-icon-contrast-color3);
|
||
}
|
||
|
||
.jp-icon-contrast0[stroke] {
|
||
stroke: var(--jp-icon-contrast-color0);
|
||
}
|
||
|
||
.jp-icon-contrast1[stroke] {
|
||
stroke: var(--jp-icon-contrast-color1);
|
||
}
|
||
|
||
.jp-icon-contrast2[stroke] {
|
||
stroke: var(--jp-icon-contrast-color2);
|
||
}
|
||
|
||
.jp-icon-contrast3[stroke] {
|
||
stroke: var(--jp-icon-contrast-color3);
|
||
}
|
||
|
||
.jp-icon-dot[fill] {
|
||
fill: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-jupyter-icon-color[fill] {
|
||
fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-notebook-icon-color[fill] {
|
||
fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-json-icon-color[fill] {
|
||
fill: var(--jp-json-icon-color, var(--jp-warn-color1));
|
||
}
|
||
|
||
.jp-console-icon-color[fill] {
|
||
fill: var(--jp-console-icon-color, white);
|
||
}
|
||
|
||
.jp-console-icon-background-color[fill] {
|
||
fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
|
||
}
|
||
|
||
.jp-terminal-icon-color[fill] {
|
||
fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
|
||
}
|
||
|
||
.jp-terminal-icon-background-color[fill] {
|
||
fill: var(
|
||
--jp-terminal-icon-background-color,
|
||
var(--jp-inverse-layout-color2)
|
||
);
|
||
}
|
||
|
||
.jp-text-editor-icon-color[fill] {
|
||
fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
|
||
}
|
||
|
||
.jp-inspector-icon-color[fill] {
|
||
fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
|
||
}
|
||
|
||
/* CSS for icons in selected filebrowser listing items */
|
||
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
|
||
fill: #fff;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* stylelint-disable selector-max-class, selector-max-compound-selectors */
|
||
|
||
/**
|
||
* TODO: come up with non css-hack solution for showing the busy icon on top
|
||
* of the close icon
|
||
* CSS for complex behavior of close icon of tabs in the main area tabbar
|
||
*/
|
||
.lm-DockPanel-tabBar
|
||
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
|
||
> .lm-TabBar-tabCloseIcon
|
||
> :not(:hover)
|
||
> .jp-icon3[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar
|
||
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
|
||
> .lm-TabBar-tabCloseIcon
|
||
> :not(:hover)
|
||
> .jp-icon-busy[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
/* stylelint-enable selector-max-class, selector-max-compound-selectors */
|
||
|
||
/* CSS for icons in status bar */
|
||
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
|
||
fill: #fff;
|
||
}
|
||
|
||
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* special handling for splash icon CSS. While the theme CSS reloads during
|
||
splash, the splash icon can loose theming. To prevent that, we set a
|
||
default for its color variable */
|
||
:root {
|
||
--jp-warn-color0: var(--md-orange-700);
|
||
}
|
||
|
||
/* not sure what to do with this one, used in filebrowser listing */
|
||
.jp-DragIcon {
|
||
margin-right: 4px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* Support for alt colors for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/* alt recolor the primary elements of an icon */
|
||
.jp-icon-alt .jp-icon0[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon1[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon2[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon3[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon4[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon0[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon1[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon2[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon3[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon4[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* alt recolor the accent elements of an icon */
|
||
.jp-icon-alt .jp-icon-accent0[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent1[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent2[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent3[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent4[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent0[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent1[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent2[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent3[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent4[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
|
||
display: none !important;
|
||
}
|
||
|
||
/**
|
||
* Support for hover colors for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/**
|
||
* regular colors
|
||
*/
|
||
|
||
/* recolor the primary elements of an icon */
|
||
.jp-icon-hover :hover .jp-icon0-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon1-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon2-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon3-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon4-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon0-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon1-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon2-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon3-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon4-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/* recolor the accent elements of an icon */
|
||
.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* set the color of an icon to transparent */
|
||
.jp-icon-hover :hover .jp-icon-none-hover[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
|
||
stroke: none;
|
||
}
|
||
|
||
/**
|
||
* inverse colors
|
||
*/
|
||
|
||
/* inverse recolor the primary elements of an icon */
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* inverse recolor the accent elements of an icon */
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-IFrame {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-IFrame > iframe {
|
||
border: none;
|
||
}
|
||
|
||
/*
|
||
When drag events occur, `lm-mod-override-cursor` is added to the body.
|
||
Because iframes steal all cursor events, the following two rules are necessary
|
||
to suppress pointer events while resize drags are occurring. There may be a
|
||
better solution to this problem.
|
||
*/
|
||
body.lm-mod-override-cursor .jp-IFrame {
|
||
position: relative;
|
||
}
|
||
|
||
body.lm-mod-override-cursor .jp-IFrame::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-HoverBox {
|
||
position: fixed;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FormGroup-content fieldset {
|
||
border: none;
|
||
padding: 0;
|
||
min-width: 0;
|
||
width: 100%;
|
||
}
|
||
|
||
/* stylelint-disable selector-max-type */
|
||
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
|
||
font-size: var(--jp-content-font-size2);
|
||
border-color: var(--jp-input-border-color);
|
||
border-style: solid;
|
||
border-radius: var(--jp-border-radius);
|
||
border-width: 1px;
|
||
padding: 6px 8px;
|
||
background: none;
|
||
color: var(--jp-ui-font-color0);
|
||
height: inherit;
|
||
}
|
||
|
||
.jp-FormGroup-content fieldset input[type='checkbox'] {
|
||
position: relative;
|
||
top: 2px;
|
||
margin-left: 0;
|
||
}
|
||
|
||
.jp-FormGroup-content button.jp-mod-styled {
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-FormGroup-content .checkbox label {
|
||
cursor: pointer;
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-root > fieldset > legend {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-root > fieldset > p {
|
||
display: none;
|
||
}
|
||
|
||
/** copy of `input.jp-mod-styled:focus` style */
|
||
.jp-FormGroup-content fieldset input:focus,
|
||
.jp-FormGroup-content fieldset select:focus {
|
||
-moz-outline-radius: unset;
|
||
outline: var(--jp-border-width) solid var(--md-blue-500);
|
||
outline-offset: -1px;
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-FormGroup-content fieldset input:hover:not(:focus),
|
||
.jp-FormGroup-content fieldset select:hover:not(:focus) {
|
||
background-color: var(--jp-border-color2);
|
||
}
|
||
|
||
/* stylelint-enable selector-max-type */
|
||
|
||
.jp-FormGroup-content .checkbox .field-description {
|
||
/* Disable default description field for checkbox:
|
||
because other widgets do not have description fields,
|
||
we add descriptions to each widget on the field level.
|
||
*/
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content #root__description {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-modifiedIndicator {
|
||
width: 5px;
|
||
background-color: var(--jp-brand-color2);
|
||
margin-top: 0;
|
||
margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
|
||
background-color: var(--jp-error-color0);
|
||
margin-right: 0.5em;
|
||
}
|
||
|
||
/* RJSF ARRAY style */
|
||
|
||
.jp-arrayFieldWrapper legend {
|
||
font-size: var(--jp-content-font-size2);
|
||
color: var(--jp-ui-font-color0);
|
||
flex-basis: 100%;
|
||
padding: 4px 0;
|
||
font-weight: var(--jp-content-heading-font-weight);
|
||
border-bottom: 1px solid var(--jp-border-color2);
|
||
}
|
||
|
||
.jp-arrayFieldWrapper .field-description {
|
||
padding: 4px 0;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
.jp-arrayFieldWrapper .array-item {
|
||
width: 100%;
|
||
border: 1px solid var(--jp-border-color2);
|
||
border-radius: 4px;
|
||
margin: 4px;
|
||
}
|
||
|
||
.jp-ArrayOperations {
|
||
display: flex;
|
||
margin-left: 8px;
|
||
}
|
||
|
||
.jp-ArrayOperationsButton {
|
||
margin: 2px;
|
||
}
|
||
|
||
.jp-ArrayOperationsButton .jp-icon3[fill] {
|
||
fill: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
|
||
cursor: not-allowed;
|
||
opacity: 0.5;
|
||
}
|
||
|
||
/* RJSF form validation error */
|
||
|
||
.jp-FormGroup-content .validationErrors {
|
||
color: var(--jp-error-color0);
|
||
}
|
||
|
||
/* Hide panel level error as duplicated the field level error */
|
||
.jp-FormGroup-content .panel.errors {
|
||
display: none;
|
||
}
|
||
|
||
/* RJSF normal content (settings-editor) */
|
||
|
||
.jp-FormGroup-contentNormal {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
|
||
margin-left: 7px;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-description {
|
||
flex-basis: 100%;
|
||
padding: 4px 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-default {
|
||
flex-basis: 100%;
|
||
padding: 4px 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
|
||
font-size: var(--jp-content-font-size1);
|
||
font-weight: normal;
|
||
min-width: 120px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal fieldset:not(:first-child) {
|
||
margin-left: 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .field-array-of-string .array-item {
|
||
/* Display `jp-ArrayOperations` buttons side-by-side with content except
|
||
for small screens where flex-wrap will place them one below the other.
|
||
*/
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
|
||
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
/* RJSF compact content (metadata-form) */
|
||
|
||
.jp-FormGroup-content.jp-FormGroup-contentCompact {
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .form-group {
|
||
display: flex;
|
||
padding: 0.5em 0.2em 0.5em 0;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact
|
||
.jp-FormGroup-compactTitle
|
||
.jp-FormGroup-description {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
|
||
padding-bottom: 0.3em;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
|
||
padding-bottom: 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact
|
||
.jp-objectFieldWrapper
|
||
.jp-objectFieldWrapper
|
||
.form-group {
|
||
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact ul.error-detail {
|
||
margin-block-start: 0.5em;
|
||
margin-block-end: 0.5em;
|
||
padding-inline-start: 1em;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-SidePanel {
|
||
display: flex;
|
||
flex-direction: column;
|
||
min-width: var(--jp-sidebar-min-width);
|
||
overflow-y: auto;
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
.jp-SidePanel-header {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
letter-spacing: 1px;
|
||
margin: 0;
|
||
padding: 2px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.jp-SidePanel-toolbar {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-SidePanel-content {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-SidePanel-toolbar,
|
||
.jp-AccordionPanel-toolbar {
|
||
height: var(--jp-private-toolbar-height);
|
||
}
|
||
|
||
.jp-SidePanel-toolbar.jp-Toolbar-micro {
|
||
display: none;
|
||
}
|
||
|
||
.lm-AccordionPanel .jp-AccordionPanel-title {
|
||
box-sizing: border-box;
|
||
line-height: 25px;
|
||
margin: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
font-size: var(--jp-ui-font-size0);
|
||
}
|
||
|
||
.jp-AccordionPanel-title {
|
||
cursor: pointer;
|
||
user-select: none;
|
||
-moz-user-select: none;
|
||
-webkit-user-select: none;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
|
||
/* Title is rotated for horizontal accordion panel using CSS */
|
||
display: block;
|
||
transform-origin: top left;
|
||
transform: rotate(-90deg) translate(-100%);
|
||
}
|
||
|
||
.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
|
||
user-select: none;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
|
||
transform: rotate(-90deg);
|
||
margin: auto 0;
|
||
height: 16px;
|
||
}
|
||
|
||
.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
.lm-AccordionPanel .jp-AccordionPanel-toolbar {
|
||
background: none;
|
||
box-shadow: none;
|
||
border: none;
|
||
margin-left: auto;
|
||
}
|
||
|
||
.lm-AccordionPanel .lm-SplitPanel-handle:hover {
|
||
background: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-text-truncated {
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Spinner {
|
||
position: absolute;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
z-index: 10;
|
||
left: 0;
|
||
top: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: var(--jp-layout-color0);
|
||
outline: none;
|
||
}
|
||
|
||
.jp-SpinnerContent {
|
||
font-size: 10px;
|
||
margin: 50px auto;
|
||
text-indent: -9999em;
|
||
width: 3em;
|
||
height: 3em;
|
||
border-radius: 50%;
|
||
background: var(--jp-brand-color3);
|
||
background: linear-gradient(
|
||
to right,
|
||
#f37626 10%,
|
||
rgba(255, 255, 255, 0) 42%
|
||
);
|
||
position: relative;
|
||
animation: load3 1s infinite linear, fadeIn 1s;
|
||
}
|
||
|
||
.jp-SpinnerContent::before {
|
||
width: 50%;
|
||
height: 50%;
|
||
background: #f37626;
|
||
border-radius: 100% 0 0;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
content: '';
|
||
}
|
||
|
||
.jp-SpinnerContent::after {
|
||
background: var(--jp-layout-color0);
|
||
width: 75%;
|
||
height: 75%;
|
||
border-radius: 50%;
|
||
content: '';
|
||
margin: auto;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
bottom: 0;
|
||
right: 0;
|
||
}
|
||
|
||
@keyframes fadeIn {
|
||
0% {
|
||
opacity: 0;
|
||
}
|
||
|
||
100% {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
@keyframes load3 {
|
||
0% {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
100% {
|
||
transform: rotate(360deg);
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
button.jp-mod-styled {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
border: none;
|
||
box-sizing: border-box;
|
||
text-align: center;
|
||
line-height: 32px;
|
||
height: 32px;
|
||
padding: 0 12px;
|
||
letter-spacing: 0.8px;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
input.jp-mod-styled {
|
||
background: var(--jp-input-background);
|
||
height: 28px;
|
||
box-sizing: border-box;
|
||
border: var(--jp-border-width) solid var(--jp-border-color1);
|
||
padding-left: 7px;
|
||
padding-right: 7px;
|
||
font-size: var(--jp-ui-font-size2);
|
||
color: var(--jp-ui-font-color0);
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
input[type='checkbox'].jp-mod-styled {
|
||
appearance: checkbox;
|
||
-webkit-appearance: checkbox;
|
||
-moz-appearance: checkbox;
|
||
height: auto;
|
||
}
|
||
|
||
input.jp-mod-styled:focus {
|
||
border: var(--jp-border-width) solid var(--md-blue-500);
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-select-wrapper {
|
||
display: flex;
|
||
position: relative;
|
||
flex-direction: column;
|
||
padding: 1px;
|
||
background-color: var(--jp-layout-color1);
|
||
box-sizing: border-box;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.jp-select-wrapper:not(.multiple) {
|
||
height: 28px;
|
||
}
|
||
|
||
.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
|
||
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
background-color: var(--jp-input-active-background);
|
||
}
|
||
|
||
select.jp-mod-styled:hover {
|
||
cursor: pointer;
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: var(--jp-input-hover-background);
|
||
box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
|
||
}
|
||
|
||
select.jp-mod-styled {
|
||
flex: 1 1 auto;
|
||
width: 100%;
|
||
font-size: var(--jp-ui-font-size2);
|
||
background: var(--jp-input-background);
|
||
color: var(--jp-ui-font-color0);
|
||
padding: 0 25px 0 8px;
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
border-radius: 0;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
select.jp-mod-styled:not([multiple]) {
|
||
height: 32px;
|
||
}
|
||
|
||
select.jp-mod-styled[multiple] {
|
||
max-height: 200px;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-switch {
|
||
display: flex;
|
||
align-items: center;
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
background-color: transparent;
|
||
color: var(--jp-ui-font-color1);
|
||
border: none;
|
||
height: 20px;
|
||
}
|
||
|
||
.jp-switch:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-switch-label {
|
||
margin-right: 5px;
|
||
font-family: var(--jp-ui-font-family);
|
||
}
|
||
|
||
.jp-switch-track {
|
||
cursor: pointer;
|
||
background-color: var(--jp-switch-color, var(--jp-border-color1));
|
||
-webkit-transition: 0.4s;
|
||
transition: 0.4s;
|
||
border-radius: 34px;
|
||
height: 16px;
|
||
width: 35px;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-switch-track::before {
|
||
content: '';
|
||
position: absolute;
|
||
height: 10px;
|
||
width: 10px;
|
||
margin: 3px;
|
||
left: 0;
|
||
background-color: var(--jp-ui-inverse-font-color1);
|
||
-webkit-transition: 0.4s;
|
||
transition: 0.4s;
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.jp-switch[aria-checked='true'] .jp-switch-track {
|
||
background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-switch[aria-checked='true'] .jp-switch-track::before {
|
||
/* track width (35) - margins (3 + 3) - thumb width (10) */
|
||
left: 19px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-toolbar-height: calc(
|
||
28px + var(--jp-border-width)
|
||
); /* leave 28px for content */
|
||
}
|
||
|
||
.jp-Toolbar {
|
||
color: var(--jp-ui-font-color1);
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
flex-direction: row;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
background: var(--jp-toolbar-background);
|
||
min-height: var(--jp-toolbar-micro-height);
|
||
padding: 2px;
|
||
z-index: 8;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
/* Toolbar items */
|
||
|
||
.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
|
||
flex-grow: 1;
|
||
flex-shrink: 1;
|
||
}
|
||
|
||
.jp-Toolbar-item.jp-Toolbar-kernelStatus {
|
||
display: inline-block;
|
||
width: 32px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
background-size: 16px;
|
||
}
|
||
|
||
.jp-Toolbar > .jp-Toolbar-item {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
padding-left: 1px;
|
||
padding-right: 1px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: var(--jp-private-toolbar-height);
|
||
height: 100%;
|
||
}
|
||
|
||
/* Toolbar buttons */
|
||
|
||
/* This is the div we use to wrap the react component into a Widget */
|
||
div.jp-ToolbarButton {
|
||
color: transparent;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent {
|
||
background: var(--jp-layout-color1);
|
||
border: none;
|
||
box-sizing: border-box;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
padding: 0 6px;
|
||
margin: 0;
|
||
height: 24px;
|
||
border-radius: var(--jp-border-radius);
|
||
display: flex;
|
||
align-items: center;
|
||
text-align: center;
|
||
font-size: 14px;
|
||
min-width: unset;
|
||
min-height: unset;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent:disabled {
|
||
opacity: 0.4;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent > span {
|
||
padding: 0;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 100%;
|
||
padding-left: 2px;
|
||
color: var(--jp-ui-font-color1);
|
||
font-family: var(--jp-ui-font-family);
|
||
}
|
||
|
||
#jp-main-dock-panel[data-mode='single-document']
|
||
.jp-MainAreaWidget
|
||
> .jp-Toolbar.jp-Toolbar-micro {
|
||
padding: 0;
|
||
min-height: 0;
|
||
}
|
||
|
||
#jp-main-dock-panel[data-mode='single-document']
|
||
.jp-MainAreaWidget
|
||
> .jp-Toolbar {
|
||
border: none;
|
||
box-shadow: none;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-WindowedPanel-outer {
|
||
position: relative;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-WindowedPanel-inner {
|
||
position: relative;
|
||
}
|
||
|
||
.jp-WindowedPanel-window {
|
||
position: absolute;
|
||
left: 0;
|
||
right: 0;
|
||
overflow: visible;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Sibling imports */
|
||
|
||
body {
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/* Disable native link decoration styles everywhere outside of dialog boxes */
|
||
a {
|
||
text-decoration: unset;
|
||
color: unset;
|
||
}
|
||
|
||
a:hover {
|
||
text-decoration: unset;
|
||
color: unset;
|
||
}
|
||
|
||
/* Accessibility for links inside dialog box text */
|
||
.jp-Dialog-content a {
|
||
text-decoration: revert;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-Dialog-content a:hover {
|
||
text-decoration: revert;
|
||
}
|
||
|
||
/* Styles for ui-components */
|
||
.jp-Button {
|
||
color: var(--jp-ui-font-color2);
|
||
border-radius: var(--jp-border-radius);
|
||
padding: 0 12px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
|
||
/* Copy from blueprint 3 */
|
||
display: inline-flex;
|
||
flex-direction: row;
|
||
border: none;
|
||
cursor: pointer;
|
||
align-items: center;
|
||
justify-content: center;
|
||
text-align: left;
|
||
vertical-align: middle;
|
||
min-height: 30px;
|
||
min-width: 30px;
|
||
}
|
||
|
||
.jp-Button:disabled {
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
.jp-Button:empty {
|
||
padding: 0 !important;
|
||
}
|
||
|
||
.jp-Button.jp-mod-small {
|
||
min-height: 24px;
|
||
min-width: 24px;
|
||
font-size: 12px;
|
||
padding: 0 7px;
|
||
}
|
||
|
||
/* Use our own theme for hover styles */
|
||
.jp-Button.jp-mod-minimal:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-Button.jp-mod-minimal {
|
||
background: none;
|
||
}
|
||
|
||
.jp-InputGroup {
|
||
display: block;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-InputGroup input {
|
||
box-sizing: border-box;
|
||
border: none;
|
||
border-radius: 0;
|
||
background-color: transparent;
|
||
color: var(--jp-ui-font-color0);
|
||
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
|
||
padding-bottom: 0;
|
||
padding-top: 0;
|
||
padding-left: 10px;
|
||
padding-right: 28px;
|
||
position: relative;
|
||
width: 100%;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
appearance: none;
|
||
font-size: 14px;
|
||
font-weight: 400;
|
||
height: 30px;
|
||
line-height: 30px;
|
||
outline: none;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.jp-InputGroup input:focus {
|
||
box-shadow: inset 0 0 0 var(--jp-border-width)
|
||
var(--jp-input-active-box-shadow-color),
|
||
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
|
||
}
|
||
|
||
.jp-InputGroup input:disabled {
|
||
cursor: not-allowed;
|
||
resize: block;
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroup input:disabled ~ span {
|
||
cursor: not-allowed;
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroup input::placeholder,
|
||
input::placeholder {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroupAction {
|
||
position: absolute;
|
||
bottom: 1px;
|
||
right: 0;
|
||
padding: 6px;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select {
|
||
background-color: initial;
|
||
border: none;
|
||
border-radius: 0;
|
||
box-shadow: none;
|
||
color: var(--jp-ui-font-color0);
|
||
display: block;
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
height: 24px;
|
||
line-height: 14px;
|
||
padding: 0 25px 0 10px;
|
||
text-align: left;
|
||
-moz-appearance: none;
|
||
-webkit-appearance: none;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select:disabled {
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color2);
|
||
cursor: not-allowed;
|
||
resize: block;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
/* Use our own theme for hover and option styles */
|
||
/* stylelint-disable-next-line selector-max-type */
|
||
.jp-HTMLSelect.jp-DefaultStyle select:hover,
|
||
.jp-HTMLSelect.jp-DefaultStyle select > option {
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
select {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-StatusBar-Widget {
|
||
display: flex;
|
||
align-items: center;
|
||
background: var(--jp-layout-color2);
|
||
min-height: var(--jp-statusbar-height);
|
||
justify-content: space-between;
|
||
padding: 0 10px;
|
||
}
|
||
|
||
.jp-StatusBar-Left {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.jp-StatusBar-Middle {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.jp-StatusBar-Right {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row-reverse;
|
||
}
|
||
|
||
.jp-StatusBar-Item {
|
||
max-height: var(--jp-statusbar-height);
|
||
margin: 0 2px;
|
||
height: var(--jp-statusbar-height);
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
color: var(--jp-ui-font-color1);
|
||
padding: 0 6px;
|
||
}
|
||
|
||
.jp-mod-highlighted:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-mod-clicked {
|
||
background-color: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-mod-clicked:hover {
|
||
background-color: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-mod-clicked .jp-StatusBar-TextItem {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
}
|
||
|
||
.jp-StatusBar-HoverItem {
|
||
box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
|
||
}
|
||
|
||
.jp-StatusBar-TextItem {
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
line-height: 24px;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.jp-StatusBar-GroupItem {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressCircle svg {
|
||
display: block;
|
||
margin: 0 auto;
|
||
width: 16px;
|
||
height: 24px;
|
||
align-self: normal;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressCircle path {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar {
|
||
height: 10px;
|
||
width: 100px;
|
||
border: solid 0.25px var(--jp-brand-color2);
|
||
border-radius: 3px;
|
||
overflow: hidden;
|
||
align-self: center;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar > div {
|
||
background-color: var(--jp-brand-color2);
|
||
background-image: linear-gradient(
|
||
-45deg,
|
||
rgba(255, 255, 255, 0.2) 25%,
|
||
transparent 25%,
|
||
transparent 50%,
|
||
rgba(255, 255, 255, 0.2) 50%,
|
||
rgba(255, 255, 255, 0.2) 75%,
|
||
transparent 75%,
|
||
transparent
|
||
);
|
||
background-size: 40px 40px;
|
||
float: left;
|
||
width: 0%;
|
||
height: 100%;
|
||
font-size: 12px;
|
||
line-height: 14px;
|
||
color: #fff;
|
||
text-align: center;
|
||
animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar p {
|
||
color: var(--jp-ui-font-color1);
|
||
font-family: var(--jp-ui-font-family);
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 10px;
|
||
width: 100px;
|
||
}
|
||
|
||
@keyframes jp-Statusbar-ExecutionTime-progress-bar {
|
||
0% {
|
||
background-position: 0 0;
|
||
}
|
||
|
||
100% {
|
||
background-position: 40px 40px;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-commandpalette-search-height: 28px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Overall styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette {
|
||
padding-bottom: 0;
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Modal variant
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-ModalCommandPalette {
|
||
position: absolute;
|
||
z-index: 10000;
|
||
top: 38px;
|
||
left: 30%;
|
||
margin: 0;
|
||
padding: 4px;
|
||
width: 40%;
|
||
box-shadow: var(--jp-elevation-z4);
|
||
border-radius: 4px;
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette {
|
||
max-height: 40vh;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
|
||
display: none;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
|
||
display: none;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
|
||
margin-left: 4px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.jp-ModalCommandPalette
|
||
.lm-CommandPalette
|
||
.lm-CommandPalette-item.lm-mod-disabled {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Search
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette-search {
|
||
padding: 4px;
|
||
background-color: var(--jp-layout-color1);
|
||
z-index: 2;
|
||
}
|
||
|
||
.lm-CommandPalette-wrapper {
|
||
overflow: overlay;
|
||
padding: 0 9px;
|
||
background-color: var(--jp-input-active-background);
|
||
height: 30px;
|
||
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
|
||
}
|
||
|
||
.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
|
||
box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
|
||
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
|
||
}
|
||
|
||
.jp-SearchIconGroup {
|
||
color: white;
|
||
background-color: var(--jp-brand-color1);
|
||
position: absolute;
|
||
top: 4px;
|
||
right: 4px;
|
||
padding: 5px 5px 1px;
|
||
}
|
||
|
||
.jp-SearchIconGroup svg {
|
||
height: 20px;
|
||
width: 20px;
|
||
}
|
||
|
||
.jp-SearchIconGroup .jp-icon3[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-input {
|
||
background: transparent;
|
||
width: calc(100% - 18px);
|
||
float: left;
|
||
border: none;
|
||
outline: none;
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
line-height: var(--jp-private-commandpalette-search-height);
|
||
}
|
||
|
||
.lm-CommandPalette-input::-webkit-input-placeholder,
|
||
.lm-CommandPalette-input::-moz-placeholder,
|
||
.lm-CommandPalette-input:-ms-input-placeholder {
|
||
color: var(--jp-ui-font-color2);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Results
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette-header:first-child {
|
||
margin-top: 0;
|
||
}
|
||
|
||
.lm-CommandPalette-header {
|
||
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
cursor: pointer;
|
||
display: flex;
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
letter-spacing: 1px;
|
||
margin-top: 8px;
|
||
padding: 8px 0 8px 12px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.lm-CommandPalette-header.lm-mod-active {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-header > mark {
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item {
|
||
padding: 4px 12px 4px 4px;
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-weight: 400;
|
||
display: flex;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-itemContent {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-CommandPalette-itemLabel > mark {
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled mark {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
|
||
margin: 0 4px 0 0;
|
||
position: relative;
|
||
width: 16px;
|
||
top: 2px;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
|
||
opacity: 0.6;
|
||
}
|
||
|
||
.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemCaption {
|
||
display: none;
|
||
}
|
||
|
||
.lm-CommandPalette-content {
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-content:empty::after {
|
||
content: 'No results';
|
||
margin: auto;
|
||
margin-top: 20px;
|
||
width: 100px;
|
||
display: block;
|
||
font-size: var(--jp-ui-font-size2);
|
||
font-family: var(--jp-ui-font-family);
|
||
font-weight: lighter;
|
||
}
|
||
|
||
.lm-CommandPalette-emptyMessage {
|
||
text-align: center;
|
||
margin-top: 24px;
|
||
line-height: 1.32;
|
||
padding: 0 8px;
|
||
color: var(--jp-content-font-color3);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Dialog {
|
||
position: absolute;
|
||
z-index: 10000;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
top: 0;
|
||
left: 0;
|
||
margin: 0;
|
||
padding: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: var(--jp-dialog-background);
|
||
}
|
||
|
||
.jp-Dialog-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
background: var(--jp-layout-color1);
|
||
padding: 24px 24px 12px;
|
||
min-width: 300px;
|
||
min-height: 150px;
|
||
max-width: 1000px;
|
||
max-height: 500px;
|
||
box-sizing: border-box;
|
||
box-shadow: var(--jp-elevation-z20);
|
||
word-wrap: break-word;
|
||
border-radius: var(--jp-border-radius);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color1);
|
||
resize: both;
|
||
}
|
||
|
||
.jp-Dialog-content.jp-Dialog-content-small {
|
||
max-width: 500px;
|
||
}
|
||
|
||
.jp-Dialog-button {
|
||
overflow: visible;
|
||
}
|
||
|
||
button.jp-Dialog-button:focus {
|
||
outline: 1px solid var(--jp-brand-color1);
|
||
outline-offset: 4px;
|
||
-moz-outline-radius: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button:focus::-moz-focus-inner {
|
||
border: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
|
||
outline-offset: 4px;
|
||
-moz-outline-radius: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
|
||
outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
|
||
outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
|
||
outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
|
||
}
|
||
|
||
button.jp-Dialog-close-button {
|
||
padding: 0;
|
||
height: 100%;
|
||
min-width: unset;
|
||
min-height: unset;
|
||
}
|
||
|
||
.jp-Dialog-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
flex: 0 0 auto;
|
||
padding-bottom: 12px;
|
||
font-size: var(--jp-ui-font-size3);
|
||
font-weight: 400;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.jp-Dialog-body {
|
||
display: flex;
|
||
flex-direction: column;
|
||
flex: 1 1 auto;
|
||
font-size: var(--jp-ui-font-size1);
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
overflow: auto;
|
||
}
|
||
|
||
.jp-Dialog-footer {
|
||
display: flex;
|
||
flex-direction: row;
|
||
justify-content: flex-end;
|
||
align-items: center;
|
||
flex: 0 0 auto;
|
||
margin-left: -12px;
|
||
margin-right: -12px;
|
||
padding: 12px;
|
||
}
|
||
|
||
.jp-Dialog-checkbox {
|
||
padding-right: 5px;
|
||
}
|
||
|
||
.jp-Dialog-checkbox > input:focus-visible {
|
||
outline: 1px solid var(--jp-input-active-border-color);
|
||
outline-offset: 1px;
|
||
}
|
||
|
||
.jp-Dialog-spacer {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-Dialog-title {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.jp-Dialog-body > .jp-select-wrapper {
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Dialog-body > button {
|
||
padding: 0 16px;
|
||
}
|
||
|
||
.jp-Dialog-body > label {
|
||
line-height: 1.4;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-Dialog-button.jp-mod-styled:not(:last-child) {
|
||
margin-right: 12px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-Input-Boolean-Dialog {
|
||
flex-direction: row-reverse;
|
||
align-items: end;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Input-Boolean-Dialog > label {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MainAreaWidget > :focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-MainAreaWidget .jp-MainAreaWidget-error {
|
||
padding: 6px;
|
||
}
|
||
|
||
.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
|
||
width: auto;
|
||
padding: 10px;
|
||
background: var(--jp-error-color3);
|
||
border: var(--jp-border-width) solid var(--jp-error-color1);
|
||
border-radius: var(--jp-border-radius);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/**
|
||
* google-material-color v1.2.6
|
||
* https://github.com/danlevan/google-material-color
|
||
*/
|
||
:root {
|
||
--md-red-50: #ffebee;
|
||
--md-red-100: #ffcdd2;
|
||
--md-red-200: #ef9a9a;
|
||
--md-red-300: #e57373;
|
||
--md-red-400: #ef5350;
|
||
--md-red-500: #f44336;
|
||
--md-red-600: #e53935;
|
||
--md-red-700: #d32f2f;
|
||
--md-red-800: #c62828;
|
||
--md-red-900: #b71c1c;
|
||
--md-red-A100: #ff8a80;
|
||
--md-red-A200: #ff5252;
|
||
--md-red-A400: #ff1744;
|
||
--md-red-A700: #d50000;
|
||
--md-pink-50: #fce4ec;
|
||
--md-pink-100: #f8bbd0;
|
||
--md-pink-200: #f48fb1;
|
||
--md-pink-300: #f06292;
|
||
--md-pink-400: #ec407a;
|
||
--md-pink-500: #e91e63;
|
||
--md-pink-600: #d81b60;
|
||
--md-pink-700: #c2185b;
|
||
--md-pink-800: #ad1457;
|
||
--md-pink-900: #880e4f;
|
||
--md-pink-A100: #ff80ab;
|
||
--md-pink-A200: #ff4081;
|
||
--md-pink-A400: #f50057;
|
||
--md-pink-A700: #c51162;
|
||
--md-purple-50: #f3e5f5;
|
||
--md-purple-100: #e1bee7;
|
||
--md-purple-200: #ce93d8;
|
||
--md-purple-300: #ba68c8;
|
||
--md-purple-400: #ab47bc;
|
||
--md-purple-500: #9c27b0;
|
||
--md-purple-600: #8e24aa;
|
||
--md-purple-700: #7b1fa2;
|
||
--md-purple-800: #6a1b9a;
|
||
--md-purple-900: #4a148c;
|
||
--md-purple-A100: #ea80fc;
|
||
--md-purple-A200: #e040fb;
|
||
--md-purple-A400: #d500f9;
|
||
--md-purple-A700: #a0f;
|
||
--md-deep-purple-50: #ede7f6;
|
||
--md-deep-purple-100: #d1c4e9;
|
||
--md-deep-purple-200: #b39ddb;
|
||
--md-deep-purple-300: #9575cd;
|
||
--md-deep-purple-400: #7e57c2;
|
||
--md-deep-purple-500: #673ab7;
|
||
--md-deep-purple-600: #5e35b1;
|
||
--md-deep-purple-700: #512da8;
|
||
--md-deep-purple-800: #4527a0;
|
||
--md-deep-purple-900: #311b92;
|
||
--md-deep-purple-A100: #b388ff;
|
||
--md-deep-purple-A200: #7c4dff;
|
||
--md-deep-purple-A400: #651fff;
|
||
--md-deep-purple-A700: #6200ea;
|
||
--md-indigo-50: #e8eaf6;
|
||
--md-indigo-100: #c5cae9;
|
||
--md-indigo-200: #9fa8da;
|
||
--md-indigo-300: #7986cb;
|
||
--md-indigo-400: #5c6bc0;
|
||
--md-indigo-500: #3f51b5;
|
||
--md-indigo-600: #3949ab;
|
||
--md-indigo-700: #303f9f;
|
||
--md-indigo-800: #283593;
|
||
--md-indigo-900: #1a237e;
|
||
--md-indigo-A100: #8c9eff;
|
||
--md-indigo-A200: #536dfe;
|
||
--md-indigo-A400: #3d5afe;
|
||
--md-indigo-A700: #304ffe;
|
||
--md-blue-50: #e3f2fd;
|
||
--md-blue-100: #bbdefb;
|
||
--md-blue-200: #90caf9;
|
||
--md-blue-300: #64b5f6;
|
||
--md-blue-400: #42a5f5;
|
||
--md-blue-500: #2196f3;
|
||
--md-blue-600: #1e88e5;
|
||
--md-blue-700: #1976d2;
|
||
--md-blue-800: #1565c0;
|
||
--md-blue-900: #0d47a1;
|
||
--md-blue-A100: #82b1ff;
|
||
--md-blue-A200: #448aff;
|
||
--md-blue-A400: #2979ff;
|
||
--md-blue-A700: #2962ff;
|
||
--md-light-blue-50: #e1f5fe;
|
||
--md-light-blue-100: #b3e5fc;
|
||
--md-light-blue-200: #81d4fa;
|
||
--md-light-blue-300: #4fc3f7;
|
||
--md-light-blue-400: #29b6f6;
|
||
--md-light-blue-500: #03a9f4;
|
||
--md-light-blue-600: #039be5;
|
||
--md-light-blue-700: #0288d1;
|
||
--md-light-blue-800: #0277bd;
|
||
--md-light-blue-900: #01579b;
|
||
--md-light-blue-A100: #80d8ff;
|
||
--md-light-blue-A200: #40c4ff;
|
||
--md-light-blue-A400: #00b0ff;
|
||
--md-light-blue-A700: #0091ea;
|
||
--md-cyan-50: #e0f7fa;
|
||
--md-cyan-100: #b2ebf2;
|
||
--md-cyan-200: #80deea;
|
||
--md-cyan-300: #4dd0e1;
|
||
--md-cyan-400: #26c6da;
|
||
--md-cyan-500: #00bcd4;
|
||
--md-cyan-600: #00acc1;
|
||
--md-cyan-700: #0097a7;
|
||
--md-cyan-800: #00838f;
|
||
--md-cyan-900: #006064;
|
||
--md-cyan-A100: #84ffff;
|
||
--md-cyan-A200: #18ffff;
|
||
--md-cyan-A400: #00e5ff;
|
||
--md-cyan-A700: #00b8d4;
|
||
--md-teal-50: #e0f2f1;
|
||
--md-teal-100: #b2dfdb;
|
||
--md-teal-200: #80cbc4;
|
||
--md-teal-300: #4db6ac;
|
||
--md-teal-400: #26a69a;
|
||
--md-teal-500: #009688;
|
||
--md-teal-600: #00897b;
|
||
--md-teal-700: #00796b;
|
||
--md-teal-800: #00695c;
|
||
--md-teal-900: #004d40;
|
||
--md-teal-A100: #a7ffeb;
|
||
--md-teal-A200: #64ffda;
|
||
--md-teal-A400: #1de9b6;
|
||
--md-teal-A700: #00bfa5;
|
||
--md-green-50: #e8f5e9;
|
||
--md-green-100: #c8e6c9;
|
||
--md-green-200: #a5d6a7;
|
||
--md-green-300: #81c784;
|
||
--md-green-400: #66bb6a;
|
||
--md-green-500: #4caf50;
|
||
--md-green-600: #43a047;
|
||
--md-green-700: #388e3c;
|
||
--md-green-800: #2e7d32;
|
||
--md-green-900: #1b5e20;
|
||
--md-green-A100: #b9f6ca;
|
||
--md-green-A200: #69f0ae;
|
||
--md-green-A400: #00e676;
|
||
--md-green-A700: #00c853;
|
||
--md-light-green-50: #f1f8e9;
|
||
--md-light-green-100: #dcedc8;
|
||
--md-light-green-200: #c5e1a5;
|
||
--md-light-green-300: #aed581;
|
||
--md-light-green-400: #9ccc65;
|
||
--md-light-green-500: #8bc34a;
|
||
--md-light-green-600: #7cb342;
|
||
--md-light-green-700: #689f38;
|
||
--md-light-green-800: #558b2f;
|
||
--md-light-green-900: #33691e;
|
||
--md-light-green-A100: #ccff90;
|
||
--md-light-green-A200: #b2ff59;
|
||
--md-light-green-A400: #76ff03;
|
||
--md-light-green-A700: #64dd17;
|
||
--md-lime-50: #f9fbe7;
|
||
--md-lime-100: #f0f4c3;
|
||
--md-lime-200: #e6ee9c;
|
||
--md-lime-300: #dce775;
|
||
--md-lime-400: #d4e157;
|
||
--md-lime-500: #cddc39;
|
||
--md-lime-600: #c0ca33;
|
||
--md-lime-700: #afb42b;
|
||
--md-lime-800: #9e9d24;
|
||
--md-lime-900: #827717;
|
||
--md-lime-A100: #f4ff81;
|
||
--md-lime-A200: #eeff41;
|
||
--md-lime-A400: #c6ff00;
|
||
--md-lime-A700: #aeea00;
|
||
--md-yellow-50: #fffde7;
|
||
--md-yellow-100: #fff9c4;
|
||
--md-yellow-200: #fff59d;
|
||
--md-yellow-300: #fff176;
|
||
--md-yellow-400: #ffee58;
|
||
--md-yellow-500: #ffeb3b;
|
||
--md-yellow-600: #fdd835;
|
||
--md-yellow-700: #fbc02d;
|
||
--md-yellow-800: #f9a825;
|
||
--md-yellow-900: #f57f17;
|
||
--md-yellow-A100: #ffff8d;
|
||
--md-yellow-A200: #ff0;
|
||
--md-yellow-A400: #ffea00;
|
||
--md-yellow-A700: #ffd600;
|
||
--md-amber-50: #fff8e1;
|
||
--md-amber-100: #ffecb3;
|
||
--md-amber-200: #ffe082;
|
||
--md-amber-300: #ffd54f;
|
||
--md-amber-400: #ffca28;
|
||
--md-amber-500: #ffc107;
|
||
--md-amber-600: #ffb300;
|
||
--md-amber-700: #ffa000;
|
||
--md-amber-800: #ff8f00;
|
||
--md-amber-900: #ff6f00;
|
||
--md-amber-A100: #ffe57f;
|
||
--md-amber-A200: #ffd740;
|
||
--md-amber-A400: #ffc400;
|
||
--md-amber-A700: #ffab00;
|
||
--md-orange-50: #fff3e0;
|
||
--md-orange-100: #ffe0b2;
|
||
--md-orange-200: #ffcc80;
|
||
--md-orange-300: #ffb74d;
|
||
--md-orange-400: #ffa726;
|
||
--md-orange-500: #ff9800;
|
||
--md-orange-600: #fb8c00;
|
||
--md-orange-700: #f57c00;
|
||
--md-orange-800: #ef6c00;
|
||
--md-orange-900: #e65100;
|
||
--md-orange-A100: #ffd180;
|
||
--md-orange-A200: #ffab40;
|
||
--md-orange-A400: #ff9100;
|
||
--md-orange-A700: #ff6d00;
|
||
--md-deep-orange-50: #fbe9e7;
|
||
--md-deep-orange-100: #ffccbc;
|
||
--md-deep-orange-200: #ffab91;
|
||
--md-deep-orange-300: #ff8a65;
|
||
--md-deep-orange-400: #ff7043;
|
||
--md-deep-orange-500: #ff5722;
|
||
--md-deep-orange-600: #f4511e;
|
||
--md-deep-orange-700: #e64a19;
|
||
--md-deep-orange-800: #d84315;
|
||
--md-deep-orange-900: #bf360c;
|
||
--md-deep-orange-A100: #ff9e80;
|
||
--md-deep-orange-A200: #ff6e40;
|
||
--md-deep-orange-A400: #ff3d00;
|
||
--md-deep-orange-A700: #dd2c00;
|
||
--md-brown-50: #efebe9;
|
||
--md-brown-100: #d7ccc8;
|
||
--md-brown-200: #bcaaa4;
|
||
--md-brown-300: #a1887f;
|
||
--md-brown-400: #8d6e63;
|
||
--md-brown-500: #795548;
|
||
--md-brown-600: #6d4c41;
|
||
--md-brown-700: #5d4037;
|
||
--md-brown-800: #4e342e;
|
||
--md-brown-900: #3e2723;
|
||
--md-grey-50: #fafafa;
|
||
--md-grey-100: #f5f5f5;
|
||
--md-grey-200: #eee;
|
||
--md-grey-300: #e0e0e0;
|
||
--md-grey-400: #bdbdbd;
|
||
--md-grey-500: #9e9e9e;
|
||
--md-grey-600: #757575;
|
||
--md-grey-700: #616161;
|
||
--md-grey-800: #424242;
|
||
--md-grey-900: #212121;
|
||
--md-blue-grey-50: #eceff1;
|
||
--md-blue-grey-100: #cfd8dc;
|
||
--md-blue-grey-200: #b0bec5;
|
||
--md-blue-grey-300: #90a4ae;
|
||
--md-blue-grey-400: #78909c;
|
||
--md-blue-grey-500: #607d8b;
|
||
--md-blue-grey-600: #546e7a;
|
||
--md-blue-grey-700: #455a64;
|
||
--md-blue-grey-800: #37474f;
|
||
--md-blue-grey-900: #263238;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedText
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
/* This is the padding value to fill the gaps between lines containing spans with background color. */
|
||
--jp-private-code-span-padding: calc(
|
||
(var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
|
||
);
|
||
}
|
||
|
||
.jp-RenderedText {
|
||
text-align: left;
|
||
padding-left: var(--jp-code-padding);
|
||
line-height: var(--jp-code-line-height);
|
||
font-family: var(--jp-code-font-family);
|
||
}
|
||
|
||
.jp-RenderedText pre,
|
||
.jp-RenderedJavaScript pre,
|
||
.jp-RenderedHTMLCommon pre {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-code-font-size);
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
.jp-RenderedText pre a:link {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedText pre a:hover {
|
||
text-decoration: underline;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedText pre a:visited {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
/* console foregrounds and backgrounds */
|
||
.jp-RenderedText pre .ansi-black-fg {
|
||
color: #3e424d;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-fg {
|
||
color: #e75c58;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-fg {
|
||
color: #00a250;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-fg {
|
||
color: #ddb62b;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-fg {
|
||
color: #208ffb;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-fg {
|
||
color: #d160c4;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-fg {
|
||
color: #60c6c8;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-fg {
|
||
color: #c5c1b4;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-bg {
|
||
background-color: #3e424d;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-bg {
|
||
background-color: #e75c58;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-bg {
|
||
background-color: #00a250;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-bg {
|
||
background-color: #ddb62b;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-bg {
|
||
background-color: #208ffb;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-bg {
|
||
background-color: #d160c4;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-bg {
|
||
background-color: #60c6c8;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-bg {
|
||
background-color: #c5c1b4;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-intense-fg {
|
||
color: #282c36;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-intense-fg {
|
||
color: #b22b31;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-intense-fg {
|
||
color: #007427;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-intense-fg {
|
||
color: #b27d12;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-intense-fg {
|
||
color: #0065ca;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-intense-fg {
|
||
color: #a03196;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-intense-fg {
|
||
color: #258f8f;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-intense-fg {
|
||
color: #a1a6b2;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-intense-bg {
|
||
background-color: #282c36;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-intense-bg {
|
||
background-color: #b22b31;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-intense-bg {
|
||
background-color: #007427;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-intense-bg {
|
||
background-color: #b27d12;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-intense-bg {
|
||
background-color: #0065ca;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-intense-bg {
|
||
background-color: #a03196;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-intense-bg {
|
||
background-color: #258f8f;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-intense-bg {
|
||
background-color: #a1a6b2;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-default-inverse-fg {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-default-inverse-bg {
|
||
background-color: var(--jp-inverse-layout-color0);
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-bold {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-underline {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
|
||
background: var(--jp-rendermime-error-background);
|
||
padding-top: var(--jp-code-padding);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedLatex
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-RenderedLatex {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-content-font-size1);
|
||
line-height: var(--jp-content-line-height);
|
||
}
|
||
|
||
/* Left-justify outputs.*/
|
||
.jp-OutputArea-output.jp-RenderedLatex {
|
||
padding: var(--jp-code-padding);
|
||
text-align: left;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedHTML
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-RenderedHTMLCommon {
|
||
color: var(--jp-content-font-color1);
|
||
font-family: var(--jp-content-font-family);
|
||
font-size: var(--jp-content-font-size1);
|
||
line-height: var(--jp-content-line-height);
|
||
|
||
/* Give a bit more R padding on Markdown text to keep line lengths reasonable */
|
||
padding-right: 20px;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon em {
|
||
font-style: italic;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon strong {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon u {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:link {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:hover {
|
||
text-decoration: underline;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:visited {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
/* Headings */
|
||
|
||
.jp-RenderedHTMLCommon h1,
|
||
.jp-RenderedHTMLCommon h2,
|
||
.jp-RenderedHTMLCommon h3,
|
||
.jp-RenderedHTMLCommon h4,
|
||
.jp-RenderedHTMLCommon h5,
|
||
.jp-RenderedHTMLCommon h6 {
|
||
line-height: var(--jp-content-heading-line-height);
|
||
font-weight: var(--jp-content-heading-font-weight);
|
||
font-style: normal;
|
||
margin: var(--jp-content-heading-margin-top) 0
|
||
var(--jp-content-heading-margin-bottom) 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1:first-child,
|
||
.jp-RenderedHTMLCommon h2:first-child,
|
||
.jp-RenderedHTMLCommon h3:first-child,
|
||
.jp-RenderedHTMLCommon h4:first-child,
|
||
.jp-RenderedHTMLCommon h5:first-child,
|
||
.jp-RenderedHTMLCommon h6:first-child {
|
||
margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1:last-child,
|
||
.jp-RenderedHTMLCommon h2:last-child,
|
||
.jp-RenderedHTMLCommon h3:last-child,
|
||
.jp-RenderedHTMLCommon h4:last-child,
|
||
.jp-RenderedHTMLCommon h5:last-child,
|
||
.jp-RenderedHTMLCommon h6:last-child {
|
||
margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1 {
|
||
font-size: var(--jp-content-font-size5);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h2 {
|
||
font-size: var(--jp-content-font-size4);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h3 {
|
||
font-size: var(--jp-content-font-size3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h4 {
|
||
font-size: var(--jp-content-font-size2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h5 {
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h6 {
|
||
font-size: var(--jp-content-font-size0);
|
||
}
|
||
|
||
/* Lists */
|
||
|
||
/* stylelint-disable selector-max-type, selector-max-compound-selectors */
|
||
|
||
.jp-RenderedHTMLCommon ul:not(.list-inline),
|
||
.jp-RenderedHTMLCommon ol:not(.list-inline) {
|
||
padding-left: 2em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul {
|
||
list-style: disc;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul {
|
||
list-style: square;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul ul {
|
||
list-style: circle;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol {
|
||
list-style: decimal;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol {
|
||
list-style: upper-alpha;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol {
|
||
list-style: lower-alpha;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol ol {
|
||
list-style: lower-roman;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol ol ol {
|
||
list-style: decimal;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol,
|
||
.jp-RenderedHTMLCommon ul {
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul,
|
||
.jp-RenderedHTMLCommon ul ol,
|
||
.jp-RenderedHTMLCommon ol ul,
|
||
.jp-RenderedHTMLCommon ol ol {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
/* stylelint-enable selector-max-type, selector-max-compound-selectors */
|
||
|
||
.jp-RenderedHTMLCommon hr {
|
||
color: var(--jp-border-color2);
|
||
background-color: var(--jp-border-color1);
|
||
margin-top: 1em;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon > pre {
|
||
margin: 1.5em 2em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon pre,
|
||
.jp-RenderedHTMLCommon code {
|
||
border: 0;
|
||
background-color: var(--jp-layout-color0);
|
||
color: var(--jp-content-font-color1);
|
||
font-family: var(--jp-code-font-family);
|
||
font-size: inherit;
|
||
line-height: var(--jp-code-line-height);
|
||
padding: 0;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon :not(pre) > code {
|
||
background-color: var(--jp-layout-color2);
|
||
padding: 1px 5px;
|
||
}
|
||
|
||
/* Tables */
|
||
|
||
.jp-RenderedHTMLCommon table {
|
||
border-collapse: collapse;
|
||
border-spacing: 0;
|
||
border: none;
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
table-layout: fixed;
|
||
margin-left: auto;
|
||
margin-bottom: 1em;
|
||
margin-right: auto;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon thead {
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
|
||
vertical-align: bottom;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon td,
|
||
.jp-RenderedHTMLCommon th,
|
||
.jp-RenderedHTMLCommon tr {
|
||
vertical-align: middle;
|
||
padding: 0.5em;
|
||
line-height: normal;
|
||
white-space: normal;
|
||
max-width: none;
|
||
border: none;
|
||
}
|
||
|
||
.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
|
||
.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
|
||
max-width: none;
|
||
}
|
||
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon th {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
|
||
background: var(--jp-rendermime-table-row-background);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:hover {
|
||
background: var(--jp-rendermime-table-row-hover-background);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon p {
|
||
text-align: left;
|
||
margin: 0;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img {
|
||
-moz-force-broken-image-icon: 1;
|
||
}
|
||
|
||
/* Restrict to direct children as other images could be nested in other content. */
|
||
.jp-RenderedHTMLCommon > img {
|
||
display: block;
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
/* Change color behind transparent images if they need it... */
|
||
[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
|
||
background-color: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
|
||
background-color: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img,
|
||
.jp-RenderedImage img,
|
||
.jp-RenderedHTMLCommon svg,
|
||
.jp-RenderedSVG svg {
|
||
max-width: 100%;
|
||
height: auto;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img.jp-mod-unconfined,
|
||
.jp-RenderedImage img.jp-mod-unconfined,
|
||
.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
|
||
.jp-RenderedSVG svg.jp-mod-unconfined {
|
||
max-width: none;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert {
|
||
padding: var(--jp-notebook-padding);
|
||
border: var(--jp-border-width) solid transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info {
|
||
color: var(--jp-info-color0);
|
||
background-color: var(--jp-info-color3);
|
||
border-color: var(--jp-info-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info hr {
|
||
border-color: var(--jp-info-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-info > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning {
|
||
color: var(--jp-warn-color0);
|
||
background-color: var(--jp-warn-color3);
|
||
border-color: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning hr {
|
||
border-color: var(--jp-warn-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-warning > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success {
|
||
color: var(--jp-success-color0);
|
||
background-color: var(--jp-success-color3);
|
||
border-color: var(--jp-success-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success hr {
|
||
border-color: var(--jp-success-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-success > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger {
|
||
color: var(--jp-error-color0);
|
||
background-color: var(--jp-error-color3);
|
||
border-color: var(--jp-error-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger hr {
|
||
border-color: var(--jp-error-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-danger > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon blockquote {
|
||
margin: 1em 2em;
|
||
padding: 0 1em;
|
||
border-left: 5px solid var(--jp-border-color2);
|
||
}
|
||
|
||
a.jp-InternalAnchorLink {
|
||
visibility: hidden;
|
||
margin-left: 8px;
|
||
color: var(--md-blue-800);
|
||
}
|
||
|
||
h1:hover .jp-InternalAnchorLink,
|
||
h2:hover .jp-InternalAnchorLink,
|
||
h3:hover .jp-InternalAnchorLink,
|
||
h4:hover .jp-InternalAnchorLink,
|
||
h5:hover .jp-InternalAnchorLink,
|
||
h6:hover .jp-InternalAnchorLink {
|
||
visibility: visible;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon kbd {
|
||
background-color: var(--jp-rendermime-table-row-background);
|
||
border: 1px solid var(--jp-border-color0);
|
||
border-bottom-color: var(--jp-border-color2);
|
||
border-radius: 3px;
|
||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||
display: inline-block;
|
||
font-size: var(--jp-ui-font-size0);
|
||
line-height: 1em;
|
||
padding: 0.2em 0.5em;
|
||
}
|
||
|
||
/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
|
||
* At the bottom of cells this is a bit too much as there is also spacing
|
||
* between cells. Going all the way to 0 gets too tight between markdown and
|
||
* code cells.
|
||
*/
|
||
.jp-RenderedHTMLCommon > *:last-child {
|
||
margin-bottom: 0.5em;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-cursor-backdrop {
|
||
position: fixed;
|
||
width: 200px;
|
||
height: 200px;
|
||
margin-top: -100px;
|
||
margin-left: -100px;
|
||
will-change: transform;
|
||
z-index: 100;
|
||
}
|
||
|
||
.lm-mod-drag-image {
|
||
will-change: transform;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-lineFormSearch {
|
||
padding: 4px 12px;
|
||
background-color: var(--jp-layout-color2);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
z-index: 2;
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
.jp-lineFormCaption {
|
||
font-size: var(--jp-ui-font-size0);
|
||
line-height: var(--jp-ui-font-size1);
|
||
margin-top: 4px;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-baseLineForm {
|
||
border: none;
|
||
border-radius: 0;
|
||
position: absolute;
|
||
background-size: 16px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
outline: none;
|
||
}
|
||
|
||
.jp-lineFormButtonContainer {
|
||
top: 4px;
|
||
right: 8px;
|
||
height: 24px;
|
||
padding: 0 12px;
|
||
width: 12px;
|
||
}
|
||
|
||
.jp-lineFormButtonIcon {
|
||
top: 0;
|
||
right: 0;
|
||
background-color: var(--jp-brand-color1);
|
||
height: 100%;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
padding: 4px 6px;
|
||
}
|
||
|
||
.jp-lineFormButton {
|
||
top: 0;
|
||
right: 0;
|
||
background-color: transparent;
|
||
height: 100%;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-lineFormWrapper {
|
||
overflow: hidden;
|
||
padding: 0 8px;
|
||
border: 1px solid var(--jp-border-color0);
|
||
background-color: var(--jp-input-active-background);
|
||
height: 22px;
|
||
}
|
||
|
||
.jp-lineFormWrapperFocusWithin {
|
||
border: var(--jp-border-width) solid var(--md-blue-500);
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-lineFormInput {
|
||
background: transparent;
|
||
width: 200px;
|
||
height: 100%;
|
||
border: none;
|
||
outline: none;
|
||
color: var(--jp-ui-font-color0);
|
||
line-height: 28px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-JSONEditor {
|
||
display: flex;
|
||
flex-direction: column;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-JSONEditor-host {
|
||
flex: 1 1 auto;
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
border-radius: 0;
|
||
background: var(--jp-layout-color0);
|
||
min-height: 50px;
|
||
padding: 1px;
|
||
}
|
||
|
||
.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
|
||
border-color: red;
|
||
outline-color: red;
|
||
}
|
||
|
||
.jp-JSONEditor-header {
|
||
display: flex;
|
||
flex: 1 0 auto;
|
||
padding: 0 0 0 12px;
|
||
}
|
||
|
||
.jp-JSONEditor-header label {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-JSONEditor-commitButton {
|
||
height: 16px;
|
||
width: 16px;
|
||
background-size: 18px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
}
|
||
|
||
.jp-JSONEditor-host.jp-mod-focused {
|
||
background-color: var(--jp-input-active-background);
|
||
border: 1px solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
}
|
||
|
||
.jp-Editor.jp-mod-dropTarget {
|
||
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
.jp-DocumentSearch-input {
|
||
border: none;
|
||
outline: none;
|
||
color: var(--jp-ui-font-color0);
|
||
font-size: var(--jp-ui-font-size1);
|
||
background-color: var(--jp-layout-color0);
|
||
font-family: var(--jp-ui-font-family);
|
||
padding: 2px 1px;
|
||
resize: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay {
|
||
position: absolute;
|
||
background-color: var(--jp-toolbar-background);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
border-left: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
top: 0;
|
||
right: 0;
|
||
z-index: 7;
|
||
min-width: 405px;
|
||
padding: 2px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
|
||
--jp-private-document-search-button-height: 20px;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button {
|
||
background-color: var(--jp-toolbar-background);
|
||
outline: 0;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button:active {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay-row {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-content {
|
||
display: inline-block;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-content svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-wrapper {
|
||
border: var(--jp-border-width) solid var(--jp-border-color0);
|
||
display: flex;
|
||
background-color: var(--jp-layout-color0);
|
||
margin: 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-wrapper:focus-within {
|
||
border-color: var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper,
|
||
.jp-DocumentSearch-button-wrapper {
|
||
all: initial;
|
||
overflow: hidden;
|
||
display: inline-block;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper {
|
||
width: 14px;
|
||
height: 14px;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-wrapper {
|
||
width: var(--jp-private-document-search-button-height);
|
||
height: var(--jp-private-document-search-button-height);
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper:focus,
|
||
.jp-DocumentSearch-button-wrapper:focus {
|
||
outline: var(--jp-border-width) solid
|
||
var(--jp-cell-editor-active-border-color);
|
||
outline-offset: -1px;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper,
|
||
.jp-DocumentSearch-button-wrapper,
|
||
.jp-DocumentSearch-button-content:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-placeholder {
|
||
width: 5px;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button::before {
|
||
display: block;
|
||
padding-top: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-off {
|
||
opacity: var(--jp-search-toggle-off-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-off:hover {
|
||
opacity: var(--jp-search-toggle-hover-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-on {
|
||
opacity: var(--jp-search-toggle-on-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-index-counter {
|
||
padding-left: 10px;
|
||
padding-right: 10px;
|
||
user-select: none;
|
||
min-width: 35px;
|
||
display: inline-block;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-wrapper {
|
||
display: inline-block;
|
||
padding-right: 2px;
|
||
margin-left: auto;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.jp-DocumentSearch-spacer {
|
||
margin-left: auto;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-wrapper button {
|
||
outline: 0;
|
||
border: none;
|
||
width: var(--jp-private-document-search-button-height);
|
||
height: var(--jp-private-document-search-button-height);
|
||
vertical-align: middle;
|
||
margin: 1px 5px 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-button:active {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button {
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button-enabled {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button-enabled:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-search-options {
|
||
padding: 0 8px;
|
||
margin-left: 3px;
|
||
width: 100%;
|
||
display: grid;
|
||
justify-content: start;
|
||
grid-template-columns: 1fr 1fr;
|
||
align-items: center;
|
||
justify-items: stretch;
|
||
}
|
||
|
||
.jp-DocumentSearch-search-filter-disabled {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-search-filter {
|
||
display: flex;
|
||
align-items: center;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-regex-error {
|
||
color: var(--jp-error-color0);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button-wrapper {
|
||
overflow: hidden;
|
||
display: inline-block;
|
||
box-sizing: border-box;
|
||
border: var(--jp-border-width) solid var(--jp-border-color0);
|
||
margin: auto 2px;
|
||
padding: 1px 4px;
|
||
height: calc(var(--jp-private-document-search-button-height) + 2px);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button-wrapper:focus {
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button {
|
||
display: inline-block;
|
||
text-align: center;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
color: var(--jp-ui-font-color1);
|
||
|
||
/* height - 2 * (padding of wrapper) */
|
||
line-height: calc(var(--jp-private-document-search-button-height) - 2px);
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-wrapper-class {
|
||
margin-left: 14px;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-toggle {
|
||
border: none;
|
||
background-color: var(--jp-toolbar-background);
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-toggle:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.cm-editor {
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
font-family: var(--jp-code-font-family);
|
||
border: 0;
|
||
border-radius: 0;
|
||
height: auto;
|
||
|
||
/* Changed to auto to autogrow */
|
||
}
|
||
|
||
.cm-editor pre {
|
||
padding: 0 var(--jp-code-padding);
|
||
}
|
||
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-dialog {
|
||
background-color: var(--jp-layout-color0);
|
||
color: var(--jp-content-font-color1);
|
||
}
|
||
|
||
.jp-CodeMirrorEditor {
|
||
cursor: text;
|
||
}
|
||
|
||
/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
|
||
@media screen and (min-width: 2138px) and (max-width: 4319px) {
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
|
||
border-left: var(--jp-code-cursor-width1) solid
|
||
var(--jp-editor-cursor-color);
|
||
}
|
||
}
|
||
|
||
/* When zoomed out less than 33% */
|
||
@media screen and (min-width: 4320px) {
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
|
||
border-left: var(--jp-code-cursor-width2) solid
|
||
var(--jp-editor-cursor-color);
|
||
}
|
||
}
|
||
|
||
.cm-editor.jp-mod-readOnly .cm-cursor {
|
||
display: none;
|
||
}
|
||
|
||
.jp-CollaboratorCursor {
|
||
border-left: 5px solid transparent;
|
||
border-right: 5px solid transparent;
|
||
border-top: none;
|
||
border-bottom: 3px solid;
|
||
background-clip: content-box;
|
||
margin-left: -5px;
|
||
margin-right: -5px;
|
||
}
|
||
|
||
.cm-searching,
|
||
.cm-searching span {
|
||
/* `.cm-searching span`: we need to override syntax highlighting */
|
||
background-color: var(--jp-search-unselected-match-background-color);
|
||
color: var(--jp-search-unselected-match-color);
|
||
}
|
||
|
||
.cm-searching::selection,
|
||
.cm-searching span::selection {
|
||
background-color: var(--jp-search-unselected-match-background-color);
|
||
color: var(--jp-search-unselected-match-color);
|
||
}
|
||
|
||
.jp-current-match > .cm-searching,
|
||
.jp-current-match > .cm-searching span,
|
||
.cm-searching > .jp-current-match,
|
||
.cm-searching > .jp-current-match span {
|
||
background-color: var(--jp-search-selected-match-background-color);
|
||
color: var(--jp-search-selected-match-color);
|
||
}
|
||
|
||
.jp-current-match > .cm-searching::selection,
|
||
.cm-searching > .jp-current-match::selection,
|
||
.jp-current-match > .cm-searching span::selection {
|
||
background-color: var(--jp-search-selected-match-background-color);
|
||
color: var(--jp-search-selected-match-color);
|
||
}
|
||
|
||
.cm-trailingspace {
|
||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAsElEQVQIHQGlAFr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+r3zKmT0/+pk9P/7+r3zAAAAAAAAAAABAAAAAAAAAAA6OPzM+/q9wAAAAAA6OPzMwAAAAAAAAAAAgAAAAAAAAAAGR8NiRQaCgAZIA0AGR8NiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyoYJ/SY80UAAAAASUVORK5CYII=);
|
||
background-position: center left;
|
||
background-repeat: repeat-x;
|
||
}
|
||
|
||
.jp-CollaboratorCursor-hover {
|
||
position: absolute;
|
||
z-index: 1;
|
||
transform: translateX(-50%);
|
||
color: white;
|
||
border-radius: 3px;
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
padding-top: 1px;
|
||
padding-bottom: 1px;
|
||
text-align: center;
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.jp-CodeMirror-ruler {
|
||
border-left: 1px dashed var(--jp-border-color2);
|
||
}
|
||
|
||
/* Styles for shared cursors (remote cursor locations and selected ranges) */
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret {
|
||
position: relative;
|
||
border-left: 1px solid black;
|
||
margin-left: -1px;
|
||
margin-right: -1px;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret > .cm-ySelectionInfo {
|
||
white-space: nowrap;
|
||
position: absolute;
|
||
top: -1.15em;
|
||
padding-bottom: 0.05em;
|
||
left: -1px;
|
||
font-size: 0.95em;
|
||
font-family: var(--jp-ui-font-family);
|
||
font-weight: bold;
|
||
line-height: normal;
|
||
user-select: none;
|
||
color: white;
|
||
padding-left: 2px;
|
||
padding-right: 2px;
|
||
z-index: 101;
|
||
transition: opacity 0.3s ease-in-out;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionInfo {
|
||
transition-delay: 0.7s;
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret:hover > .cm-ySelectionInfo {
|
||
opacity: 1;
|
||
transition-delay: 0s;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MimeDocument {
|
||
outline: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-filebrowser-button-height: 28px;
|
||
--jp-private-filebrowser-button-width: 48px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileBrowser .jp-SidePanel-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.jp-FileBrowser-toolbar.jp-Toolbar {
|
||
flex-wrap: wrap;
|
||
row-gap: 12px;
|
||
border-bottom: none;
|
||
height: auto;
|
||
margin: 8px 12px 0;
|
||
box-shadow: none;
|
||
padding: 0;
|
||
justify-content: flex-start;
|
||
}
|
||
|
||
.jp-FileBrowser-Panel {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.jp-BreadCrumbs {
|
||
flex: 0 0 auto;
|
||
margin: 8px 12px;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item {
|
||
margin: 0 2px;
|
||
padding: 0 2px;
|
||
border-radius: var(--jp-border-radius);
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-BreadCrumbs-item:first-child {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item.jp-mod-dropTarget {
|
||
background-color: var(--jp-brand-color2);
|
||
opacity: 0.7;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Buttons
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileBrowser-toolbar > .jp-Toolbar-item {
|
||
flex: 0 0 auto;
|
||
padding-left: 0;
|
||
padding-right: 2px;
|
||
align-items: center;
|
||
height: unset;
|
||
}
|
||
|
||
.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
|
||
width: 40px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Other styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileDialog.jp-mod-conflict input {
|
||
color: var(--jp-error-color1);
|
||
}
|
||
|
||
.jp-FileDialog .jp-new-name-title {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.jp-LastModified-hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FileSize-hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FileBrowser .lm-AccordionPanel > h3:first-child {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| DirListing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-DirListing {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
outline: 0;
|
||
}
|
||
|
||
.jp-DirListing-header {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
overflow: hidden;
|
||
border-top: var(--jp-border-width) solid var(--jp-border-color2);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
z-index: 2;
|
||
}
|
||
|
||
.jp-DirListing-headerItem {
|
||
padding: 4px 12px 2px;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.jp-DirListing-headerItem:hover {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-name {
|
||
flex: 1 0 84px;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-modified {
|
||
flex: 0 0 112px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-filesize {
|
||
flex: 0 0 75px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-id-narrow {
|
||
display: none;
|
||
flex: 0 0 5px;
|
||
padding: 4px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
color: var(--jp-border-color2);
|
||
}
|
||
|
||
.jp-DirListing-narrow .jp-id-narrow {
|
||
display: block;
|
||
}
|
||
|
||
.jp-DirListing-narrow .jp-id-modified,
|
||
.jp-DirListing-narrow .jp-DirListing-itemModified {
|
||
display: none;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-mod-selected {
|
||
font-weight: 600;
|
||
}
|
||
|
||
/* increase specificity to override bundled default */
|
||
.jp-DirListing-content {
|
||
flex: 1 1 auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
list-style-type: none;
|
||
overflow: auto;
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-content mark {
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
/* Style the directory listing content when a user drops a file to upload */
|
||
.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
|
||
outline: 5px dashed rgba(128, 128, 128, 0.5);
|
||
outline-offset: -10px;
|
||
cursor: copy;
|
||
}
|
||
|
||
.jp-DirListing-item {
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
padding: 4px 12px;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DirListing-checkboxWrapper {
|
||
/* Increases hit area of checkbox. */
|
||
padding: 4px;
|
||
}
|
||
|
||
.jp-DirListing-header
|
||
.jp-DirListing-checkboxWrapper
|
||
+ .jp-DirListing-headerItem {
|
||
padding-left: 4px;
|
||
}
|
||
|
||
.jp-DirListing-content .jp-DirListing-checkboxWrapper {
|
||
position: relative;
|
||
left: -4px;
|
||
margin: -4px 0 -4px -8px;
|
||
}
|
||
|
||
.jp-DirListing-checkboxWrapper.jp-mod-visible {
|
||
visibility: visible;
|
||
}
|
||
|
||
/* For devices that support hovering, hide checkboxes until hovered, selected...
|
||
*/
|
||
@media (hover: hover) {
|
||
.jp-DirListing-checkboxWrapper {
|
||
visibility: hidden;
|
||
}
|
||
|
||
.jp-DirListing-item:hover .jp-DirListing-checkboxWrapper,
|
||
.jp-DirListing-item.jp-mod-selected .jp-DirListing-checkboxWrapper {
|
||
visibility: visible;
|
||
}
|
||
}
|
||
|
||
.jp-DirListing-item[data-is-dot] {
|
||
opacity: 75%;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-dropTarget {
|
||
background: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-DirListing-item:hover:not(.jp-mod-selected) {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DirListing-itemIcon {
|
||
flex: 0 0 20px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.jp-DirListing-itemText {
|
||
flex: 1 0 64px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DirListing-itemText:focus {
|
||
outline-width: 2px;
|
||
outline-color: var(--jp-inverse-layout-color1);
|
||
outline-style: solid;
|
||
outline-offset: 1px;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus {
|
||
outline-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-itemModified {
|
||
flex: 0 0 125px;
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-itemFileSize {
|
||
flex: 0 0 90px;
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-editor {
|
||
flex: 1 0 64px;
|
||
outline: none;
|
||
border: none;
|
||
color: var(--jp-ui-font-color1);
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon::before {
|
||
color: var(--jp-success-color1);
|
||
content: '\25CF';
|
||
font-size: 8px;
|
||
position: absolute;
|
||
left: -8px;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-running.jp-mod-selected
|
||
.jp-DirListing-itemIcon::before {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.lm-mod-drag-image,
|
||
.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
|
||
font-size: var(--jp-ui-font-size1);
|
||
padding-left: 4px;
|
||
margin-left: 4px;
|
||
width: 160px;
|
||
background-color: var(--jp-ui-inverse-font-color2);
|
||
box-shadow: var(--jp-elevation-z2);
|
||
border-radius: 0;
|
||
color: var(--jp-ui-font-color1);
|
||
transform: translateX(-40%) translateY(-58%);
|
||
}
|
||
|
||
.jp-Document {
|
||
min-width: 120px;
|
||
min-height: 120px;
|
||
outline: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Main OutputArea
|
||
| OutputArea has a list of Outputs
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-OutputArea {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-OutputArea-child {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-OutputPrompt {
|
||
width: var(--jp-cell-prompt-width);
|
||
color: var(--jp-cell-outprompt-font-color);
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
padding: var(--jp-code-padding);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
opacity: var(--jp-cell-prompt-opacity);
|
||
|
||
/* Right align prompt text, don't wrap to handle large prompt numbers */
|
||
text-align: right;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
|
||
/* Disable text selection */
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-OutputArea-prompt {
|
||
display: table-cell;
|
||
vertical-align: top;
|
||
}
|
||
|
||
.jp-OutputArea-output {
|
||
display: table-cell;
|
||
width: 100%;
|
||
height: auto;
|
||
overflow: auto;
|
||
user-select: text;
|
||
-moz-user-select: text;
|
||
-webkit-user-select: text;
|
||
-ms-user-select: text;
|
||
}
|
||
|
||
.jp-OutputArea .jp-RenderedText {
|
||
padding-left: 1ch;
|
||
}
|
||
|
||
/**
|
||
* Prompt overlay.
|
||
*/
|
||
|
||
.jp-OutputArea-promptOverlay {
|
||
position: absolute;
|
||
top: 0;
|
||
width: var(--jp-cell-prompt-width);
|
||
height: 100%;
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.jp-OutputArea-promptOverlay:hover {
|
||
background: var(--jp-layout-color2);
|
||
box-shadow: inset 0 0 1px var(--jp-inverse-layout-color0);
|
||
cursor: zoom-out;
|
||
}
|
||
|
||
.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay:hover {
|
||
cursor: zoom-in;
|
||
}
|
||
|
||
/**
|
||
* Isolated output.
|
||
*/
|
||
.jp-OutputArea-output.jp-mod-isolated {
|
||
width: 100%;
|
||
display: block;
|
||
}
|
||
|
||
/*
|
||
When drag events occur, `lm-mod-override-cursor` is added to the body.
|
||
Because iframes steal all cursor events, the following two rules are necessary
|
||
to suppress pointer events while resize drags are occurring. There may be a
|
||
better solution to this problem.
|
||
*/
|
||
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
|
||
position: relative;
|
||
}
|
||
|
||
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
/* pre */
|
||
|
||
.jp-OutputArea-output pre {
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
overflow-x: auto;
|
||
overflow-y: auto;
|
||
word-break: break-all;
|
||
word-wrap: break-word;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
/* tables */
|
||
|
||
.jp-OutputArea-output.jp-RenderedHTMLCommon table {
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
}
|
||
|
||
/* description lists */
|
||
|
||
.jp-OutputArea-output dl,
|
||
.jp-OutputArea-output dt,
|
||
.jp-OutputArea-output dd {
|
||
display: block;
|
||
}
|
||
|
||
.jp-OutputArea-output dl {
|
||
width: 100%;
|
||
overflow: hidden;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-OutputArea-output dt {
|
||
font-weight: bold;
|
||
float: left;
|
||
width: 20%;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-OutputArea-output dd {
|
||
float: left;
|
||
width: 80%;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-TrimmedOutputs pre {
|
||
background: var(--jp-layout-color3);
|
||
font-size: calc(var(--jp-code-font-size) * 1.4);
|
||
text-align: center;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
/* Hide the gutter in case of
|
||
* - nested output areas (e.g. in the case of output widgets)
|
||
* - mirrored output areas
|
||
*/
|
||
.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
|
||
display: none;
|
||
}
|
||
|
||
/* Hide empty lines in the output area, for instance due to cleared widgets */
|
||
.jp-OutputArea-prompt:empty {
|
||
padding: 0;
|
||
border: 0;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| executeResult is added to any Output-result for the display of the object
|
||
| returned by a cell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-OutputArea-output.jp-OutputArea-executeResult {
|
||
margin-left: 0;
|
||
width: 100%;
|
||
}
|
||
|
||
/* Text output with the Out[] prompt needs a top padding to match the
|
||
* alignment of the Out[] prompt itself.
|
||
*/
|
||
.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
|
||
padding-top: var(--jp-code-padding);
|
||
border-top: var(--jp-border-width) solid transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| The Stdin output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Stdin-prompt {
|
||
color: var(--jp-content-font-color0);
|
||
padding-right: var(--jp-code-padding);
|
||
vertical-align: baseline;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-Stdin-input {
|
||
font-family: var(--jp-code-font-family);
|
||
font-size: inherit;
|
||
color: inherit;
|
||
background-color: inherit;
|
||
width: 42%;
|
||
min-width: 200px;
|
||
|
||
/* make sure input baseline aligns with prompt */
|
||
vertical-align: baseline;
|
||
|
||
/* padding + margin = 0.5em between prompt and cursor */
|
||
padding: 0 0.25em;
|
||
margin: 0 0.25em;
|
||
flex: 0 0 70%;
|
||
}
|
||
|
||
.jp-Stdin-input::placeholder {
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-Stdin-input:focus {
|
||
box-shadow: none;
|
||
}
|
||
|
||
.jp-Stdin-input:focus::placeholder {
|
||
opacity: 1;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Output Area View
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-LinkedOutputView .jp-OutputArea {
|
||
height: 100%;
|
||
display: block;
|
||
}
|
||
|
||
.jp-LinkedOutputView .jp-OutputArea-output:only-child {
|
||
height: 100%;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
@media print {
|
||
.jp-OutputArea-child {
|
||
break-inside: avoid-page;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Mobile
|
||
|----------------------------------------------------------------------------*/
|
||
@media only screen and (max-width: 760px) {
|
||
.jp-OutputPrompt {
|
||
display: table-row;
|
||
text-align: left;
|
||
}
|
||
|
||
.jp-OutputArea-child .jp-OutputArea-output {
|
||
display: table-row;
|
||
margin-left: var(--jp-notebook-padding);
|
||
}
|
||
}
|
||
|
||
/* Trimmed outputs warning */
|
||
.jp-TrimmedOutputs > a {
|
||
margin: 10px;
|
||
text-decoration: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-TrimmedOutputs > a:hover {
|
||
text-decoration: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Table of Contents
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-toc-active-width: 4px;
|
||
}
|
||
|
||
.jp-TableOfContents {
|
||
display: flex;
|
||
flex-direction: column;
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholder {
|
||
text-align: center;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholderContent {
|
||
color: var(--jp-content-font-color2);
|
||
padding: 8px;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholderContent > h3 {
|
||
margin-bottom: var(--jp-content-heading-margin-bottom);
|
||
}
|
||
|
||
.jp-TableOfContents .jp-SidePanel-content {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-TableOfContents-tree {
|
||
margin: 4px;
|
||
}
|
||
|
||
.jp-TableOfContents ol {
|
||
list-style-type: none;
|
||
}
|
||
|
||
/* stylelint-disable-next-line selector-max-type */
|
||
.jp-TableOfContents li > ol {
|
||
/* Align left border with triangle icon center */
|
||
padding-left: 11px;
|
||
}
|
||
|
||
.jp-TableOfContents-content {
|
||
/* left margin for the active heading indicator */
|
||
margin: 0 0 0 var(--jp-private-toc-active-width);
|
||
padding: 0;
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-tocItem {
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-tocItem-heading {
|
||
display: flex;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-tocItem-heading:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-tocItem-content {
|
||
display: block;
|
||
padding: 4px 0;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
.jp-tocItem-collapser {
|
||
height: 20px;
|
||
margin: 2px 2px 0;
|
||
padding: 0;
|
||
background: none;
|
||
border: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-tocItem-collapser:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
/* Active heading indicator */
|
||
|
||
.jp-tocItem-heading::before {
|
||
content: ' ';
|
||
background: transparent;
|
||
width: var(--jp-private-toc-active-width);
|
||
height: 24px;
|
||
position: absolute;
|
||
left: 0;
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-tocItem-heading.jp-tocItem-active::before {
|
||
background-color: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-tocItem-heading:hover.jp-tocItem-active::before {
|
||
background: var(--jp-brand-color0);
|
||
opacity: 1;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Collapser {
|
||
flex: 0 0 var(--jp-cell-collapser-width);
|
||
padding: 0;
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
opacity: 1;
|
||
}
|
||
|
||
.jp-Collapser-child {
|
||
display: block;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
|
||
/* height: 100% doesn't work because the height of its parent is computed from content */
|
||
position: absolute;
|
||
top: 0;
|
||
bottom: 0;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
Hiding collapsers in print mode.
|
||
|
||
Note: input and output wrappers have "display: block" propery in print mode.
|
||
*/
|
||
|
||
@media print {
|
||
.jp-Collapser {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Header/Footer
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Hidden by zero height by default */
|
||
.jp-CellHeader,
|
||
.jp-CellFooter {
|
||
height: 0;
|
||
width: 100%;
|
||
padding: 0;
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Input
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* All input areas */
|
||
.jp-InputArea {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-InputArea-editor {
|
||
display: table-cell;
|
||
overflow: hidden;
|
||
vertical-align: top;
|
||
|
||
/* This is the non-active, default styling */
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
border-radius: 0;
|
||
background: var(--jp-cell-editor-background);
|
||
}
|
||
|
||
.jp-InputPrompt {
|
||
display: table-cell;
|
||
vertical-align: top;
|
||
width: var(--jp-cell-prompt-width);
|
||
color: var(--jp-cell-inprompt-font-color);
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
padding: var(--jp-code-padding);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
opacity: var(--jp-cell-prompt-opacity);
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
|
||
/* Right align prompt text, don't wrap to handle large prompt numbers */
|
||
text-align: right;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
|
||
/* Disable text selection */
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Mobile
|
||
|----------------------------------------------------------------------------*/
|
||
@media only screen and (max-width: 760px) {
|
||
.jp-InputArea-editor {
|
||
display: table-row;
|
||
margin-left: var(--jp-notebook-padding);
|
||
}
|
||
|
||
.jp-InputPrompt {
|
||
display: table-row;
|
||
text-align: left;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Placeholder
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Placeholder {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Placeholder-prompt {
|
||
display: table-cell;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-Placeholder-content {
|
||
display: table-cell;
|
||
padding: 4px 6px;
|
||
border: 1px solid transparent;
|
||
border-radius: 0;
|
||
background: none;
|
||
box-sizing: border-box;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-Placeholder-contentContainer {
|
||
display: flex;
|
||
}
|
||
|
||
.jp-Placeholder-content:hover,
|
||
.jp-InputPlaceholder > .jp-Placeholder-content:hover {
|
||
border-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-Placeholder-content .jp-MoreHorizIcon {
|
||
width: 32px;
|
||
height: 16px;
|
||
border: 1px solid transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-Placeholder-content .jp-MoreHorizIcon:hover {
|
||
border: 1px solid var(--jp-border-color1);
|
||
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);
|
||
background-color: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-PlaceholderText {
|
||
white-space: nowrap;
|
||
overflow-x: hidden;
|
||
color: var(--jp-inverse-layout-color3);
|
||
font-family: var(--jp-code-font-family);
|
||
}
|
||
|
||
.jp-InputPlaceholder > .jp-Placeholder-content {
|
||
border-color: var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Private CSS variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-cell-scrolling-output-offset: 5px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Cell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell {
|
||
padding: var(--jp-cell-padding);
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Common input/output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: flex;
|
||
flex-direction: row;
|
||
padding: 0;
|
||
margin: 0;
|
||
|
||
/* Added to reveal the box-shadow on the input and output collapsers. */
|
||
overflow: visible;
|
||
}
|
||
|
||
/* Only input/output areas inside cells */
|
||
.jp-Cell-inputArea,
|
||
.jp-Cell-outputArea {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Collapser
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Make the output collapser disappear when there is not output, but do so
|
||
* in a manner that leaves it in the layout and preserves its width.
|
||
*/
|
||
.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
|
||
border: none !important;
|
||
background: transparent !important;
|
||
}
|
||
|
||
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
|
||
min-height: var(--jp-cell-collapser-min-height);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Put a space between input and output when there IS output */
|
||
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
|
||
margin-top: 5px;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
|
||
overflow-y: auto;
|
||
max-height: 24em;
|
||
margin-left: var(--jp-private-cell-scrolling-output-offset);
|
||
resize: vertical;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] {
|
||
max-height: unset;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
|
||
content: ' ';
|
||
box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
|
||
width: 100%;
|
||
height: 100%;
|
||
position: sticky;
|
||
bottom: 0;
|
||
top: 0;
|
||
margin-top: -50%;
|
||
float: left;
|
||
display: block;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
|
||
padding-top: 6px;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
|
||
width: calc(
|
||
var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset)
|
||
);
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay {
|
||
left: calc(-1 * var(--jp-private-cell-scrolling-output-offset));
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| CodeCell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| MarkdownCell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MarkdownOutput {
|
||
display: table-cell;
|
||
width: 100%;
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
padding-left: var(--jp-code-padding);
|
||
}
|
||
|
||
.jp-MarkdownOutput.jp-RenderedHTMLCommon {
|
||
overflow: auto;
|
||
}
|
||
|
||
/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
|
||
.jp-collapseHeadingButton {
|
||
display: flex;
|
||
min-height: var(--jp-cell-collapser-min-height);
|
||
font-size: var(--jp-code-font-size);
|
||
position: absolute;
|
||
background-color: transparent;
|
||
background-size: 25px;
|
||
background-repeat: no-repeat;
|
||
background-position-x: center;
|
||
background-position-y: top;
|
||
background-image: var(--jp-icon-caret-down);
|
||
right: 0;
|
||
top: 0;
|
||
bottom: 0;
|
||
}
|
||
|
||
.jp-collapseHeadingButton.jp-mod-collapsed {
|
||
background-image: var(--jp-icon-caret-right);
|
||
}
|
||
|
||
/*
|
||
set the container font size to match that of content
|
||
so that the nested collapse buttons have the right size
|
||
*/
|
||
.jp-MarkdownCell .jp-InputPrompt {
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
/*
|
||
Align collapseHeadingButton with cell top header
|
||
The font sizes are identical to the ones in packages/rendermime/style/base.css
|
||
*/
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
|
||
font-size: var(--jp-content-font-size5);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size5));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
|
||
font-size: var(--jp-content-font-size4);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size4));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
|
||
font-size: var(--jp-content-font-size3);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size3));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
|
||
font-size: var(--jp-content-font-size2);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size2));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
|
||
font-size: var(--jp-content-font-size1);
|
||
background-position-y: top;
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
|
||
font-size: var(--jp-content-font-size0);
|
||
background-position-y: top;
|
||
}
|
||
|
||
/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton {
|
||
display: none;
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton
|
||
:is(.jp-MarkdownCell:hover, .jp-mod-active)
|
||
.jp-collapseHeadingButton {
|
||
display: flex;
|
||
}
|
||
|
||
/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which
|
||
is a consequence of the showHiddenCellsButton option in Notebook Settings)*/
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton {
|
||
margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
|
||
margin-top: var(--jp-code-padding);
|
||
border: 1px solid var(--jp-border-color2);
|
||
background-color: var(--jp-border-color3) !important;
|
||
color: var(--jp-content-font-color0) !important;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover {
|
||
background-color: var(--jp-border-color2) !important;
|
||
}
|
||
|
||
.jp-showHiddenCellsButton {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
Using block instead of flex to allow the use of the break-inside CSS property for
|
||
cell outputs.
|
||
*/
|
||
|
||
@media print {
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: block;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-notebook-toolbar-padding: 2px 5px 2px 2px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-NotebookPanel-toolbar {
|
||
padding: var(--jp-notebook-toolbar-padding);
|
||
|
||
/* disable paint containment from lumino 2.0 default strict CSS containment */
|
||
contain: style size !important;
|
||
}
|
||
|
||
.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
|
||
border: none;
|
||
box-shadow: none;
|
||
}
|
||
|
||
.jp-Notebook-toolbarCellTypeDropdown select {
|
||
height: 24px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 14px;
|
||
border-radius: 0;
|
||
display: block;
|
||
}
|
||
|
||
.jp-Notebook-toolbarCellTypeDropdown span {
|
||
top: 5px !important;
|
||
}
|
||
|
||
.jp-Toolbar-responsive-popup {
|
||
position: absolute;
|
||
height: fit-content;
|
||
display: flex;
|
||
flex-direction: row;
|
||
flex-wrap: wrap;
|
||
justify-content: flex-end;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
background: var(--jp-toolbar-background);
|
||
min-height: var(--jp-toolbar-micro-height);
|
||
padding: var(--jp-notebook-toolbar-padding);
|
||
z-index: 1;
|
||
right: 0;
|
||
top: 0;
|
||
}
|
||
|
||
.jp-Toolbar > .jp-Toolbar-responsive-opener {
|
||
margin-left: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Notebook-ExecutionIndicator {
|
||
position: relative;
|
||
display: inline-block;
|
||
height: 100%;
|
||
z-index: 9997;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip {
|
||
visibility: hidden;
|
||
height: auto;
|
||
width: max-content;
|
||
width: -moz-max-content;
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
text-align: justify;
|
||
border-radius: 6px;
|
||
padding: 0 5px;
|
||
position: fixed;
|
||
display: table;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.up {
|
||
transform: translateX(-50%) translateY(-100%) translateY(-32px);
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.down {
|
||
transform: translateX(calc(-100% + 16px)) translateY(5px);
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
|
||
visibility: visible;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator span {
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
color: var(--jp-ui-font-color1);
|
||
line-height: 24px;
|
||
display: block;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-progress-bar {
|
||
display: flex;
|
||
justify-content: center;
|
||
height: 100%;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*
|
||
* Execution indicator
|
||
*/
|
||
.jp-tocItem-content::after {
|
||
content: '';
|
||
|
||
/* Must be identical to form a circle */
|
||
width: 12px;
|
||
height: 12px;
|
||
background: none;
|
||
border: none;
|
||
position: absolute;
|
||
right: 0;
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='0']::after {
|
||
border-radius: 50%;
|
||
border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
|
||
background: none;
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='1']::after {
|
||
border-radius: 50%;
|
||
border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
|
||
background-color: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='0'],
|
||
.jp-tocItem-content[data-running='1'] {
|
||
margin-right: 12px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-Notebook-footer {
|
||
height: 27px;
|
||
margin-left: calc(
|
||
var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
|
||
var(--jp-cell-padding)
|
||
);
|
||
width: calc(
|
||
100% -
|
||
(
|
||
var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
|
||
var(--jp-cell-padding) + var(--jp-cell-padding)
|
||
)
|
||
);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
color: var(--jp-ui-font-color3);
|
||
margin-top: 6px;
|
||
background: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-Notebook-footer:focus {
|
||
border-color: var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
/* For devices that support hovering, hide footer until hover */
|
||
@media (hover: hover) {
|
||
.jp-Notebook-footer {
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-Notebook-footer:focus,
|
||
.jp-Notebook-footer:hover {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Imports
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| CSS variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-side-by-side-output-size: 1fr;
|
||
--jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
|
||
--jp-private-notebook-dragImage-width: 304px;
|
||
--jp-private-notebook-dragImage-height: 36px;
|
||
--jp-private-notebook-selected-color: var(--md-blue-400);
|
||
--jp-private-notebook-active-color: var(--md-green-400);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* stylelint-disable selector-max-class */
|
||
|
||
.jp-NotebookPanel {
|
||
display: block;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-NotebookPanel.jp-Document {
|
||
min-width: 240px;
|
||
min-height: 120px;
|
||
}
|
||
|
||
.jp-Notebook {
|
||
padding: var(--jp-notebook-padding);
|
||
outline: none;
|
||
overflow: auto;
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-scrollPastEnd::after {
|
||
display: block;
|
||
content: '';
|
||
min-height: var(--jp-notebook-scroll-padding);
|
||
}
|
||
|
||
.jp-MainAreaWidget-ContainStrict .jp-Notebook * {
|
||
contain: strict;
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell {
|
||
overflow: visible;
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell .jp-InputPrompt {
|
||
cursor: move;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook state related styling
|
||
|
|
||
| The notebook and cells each have states, here are the possibilities:
|
||
|
|
||
| - Notebook
|
||
| - Command
|
||
| - Edit
|
||
| - Cell
|
||
| - None
|
||
| - Active (only one can be active)
|
||
| - Selected (the cells actions are applied to)
|
||
| - Multiselected (when multiple selected, the cursor)
|
||
| - No outputs
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Command or edit modes */
|
||
|
||
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
|
||
opacity: var(--jp-cell-prompt-not-active-opacity);
|
||
color: var(--jp-cell-prompt-not-active-font-color);
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
|
||
opacity: var(--jp-cell-prompt-not-active-opacity);
|
||
color: var(--jp-cell-prompt-not-active-font-color);
|
||
}
|
||
|
||
/* cell is active */
|
||
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* cell is dirty */
|
||
.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt {
|
||
color: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before {
|
||
color: var(--jp-warn-color1);
|
||
content: '•';
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser {
|
||
background: var(--jp-warn-color1);
|
||
}
|
||
|
||
/* collapser is hovered */
|
||
.jp-Notebook .jp-Cell .jp-Collapser:hover {
|
||
box-shadow: var(--jp-elevation-z2);
|
||
background: var(--jp-brand-color1);
|
||
opacity: var(--jp-cell-collapser-not-active-hover-opacity);
|
||
}
|
||
|
||
/* cell is active and collapser is hovered */
|
||
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
|
||
background: var(--jp-brand-color0);
|
||
opacity: 1;
|
||
}
|
||
|
||
/* Command mode */
|
||
|
||
.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
|
||
background: var(--jp-notebook-multiselected-color);
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-commandMode
|
||
.jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
|
||
background: transparent;
|
||
}
|
||
|
||
/* Edit mode */
|
||
|
||
.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
background-color: var(--jp-cell-editor-active-background);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook drag and drop
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Notebook-cell.jp-mod-dropSource {
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.jp-Notebook-cell.jp-mod-dropTarget,
|
||
.jp-Notebook.jp-mod-commandMode
|
||
.jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
|
||
border-top-color: var(--jp-private-notebook-selected-color);
|
||
border-top-style: solid;
|
||
border-top-width: 2px;
|
||
}
|
||
|
||
.jp-dragImage {
|
||
display: block;
|
||
flex-direction: row;
|
||
width: var(--jp-private-notebook-dragImage-width);
|
||
height: var(--jp-private-notebook-dragImage-height);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background);
|
||
overflow: visible;
|
||
}
|
||
|
||
.jp-dragImage-singlePrompt {
|
||
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
.jp-dragImage .jp-dragImage-content {
|
||
flex: 1 1 auto;
|
||
z-index: 2;
|
||
font-size: var(--jp-code-font-size);
|
||
font-family: var(--jp-code-font-family);
|
||
line-height: var(--jp-code-line-height);
|
||
padding: var(--jp-code-padding);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background-color);
|
||
color: var(--jp-content-font-color3);
|
||
text-align: left;
|
||
margin: 4px 4px 4px 0;
|
||
}
|
||
|
||
.jp-dragImage .jp-dragImage-prompt {
|
||
flex: 0 0 auto;
|
||
min-width: 36px;
|
||
color: var(--jp-cell-inprompt-font-color);
|
||
padding: var(--jp-code-padding);
|
||
padding-left: 12px;
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
line-height: 1.9;
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
}
|
||
|
||
.jp-dragImage-multipleBack {
|
||
z-index: -1;
|
||
position: absolute;
|
||
height: 32px;
|
||
width: 300px;
|
||
top: 8px;
|
||
left: 8px;
|
||
background: var(--jp-layout-color2);
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Cell toolbar
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-NotebookTools {
|
||
display: block;
|
||
min-width: var(--jp-sidebar-min-width);
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
overflow: auto;
|
||
}
|
||
|
||
.jp-ActiveCellTool {
|
||
padding: 12px 0;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-ActiveCellTool-Content {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-ActiveCellTool .jp-ActiveCellTool-CellContent {
|
||
background: var(--jp-cell-editor-background);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
border-radius: 0;
|
||
min-height: 29px;
|
||
}
|
||
|
||
.jp-ActiveCellTool .jp-InputPrompt {
|
||
min-width: calc(var(--jp-cell-prompt-width) * 0.75);
|
||
}
|
||
|
||
.jp-ActiveCellTool-CellContent > pre {
|
||
padding: 5px 4px;
|
||
margin: 0;
|
||
white-space: normal;
|
||
}
|
||
|
||
.jp-MetadataEditorTool {
|
||
flex-direction: column;
|
||
padding: 12px 0;
|
||
}
|
||
|
||
.jp-RankedPanel > :not(:first-child) {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.jp-KeySelector select.jp-mod-styled {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
border: var(--jp-border-width) solid var(--jp-border-color1);
|
||
}
|
||
|
||
.jp-KeySelector label,
|
||
.jp-MetadataEditorTool label,
|
||
.jp-NumberSetter label {
|
||
line-height: 1.4;
|
||
}
|
||
|
||
.jp-NotebookTools .jp-select-wrapper {
|
||
margin-top: 4px;
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-NumberSetter input {
|
||
width: 100%;
|
||
margin-top: 4px;
|
||
}
|
||
|
||
.jp-NotebookTools .jp-Collapse {
|
||
margin-top: 16px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Presentation Mode (.jp-mod-presentationMode)
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-mod-presentationMode .jp-Notebook {
|
||
--jp-content-font-size1: var(--jp-content-presentation-font-size1);
|
||
--jp-code-font-size: var(--jp-code-presentation-font-size);
|
||
}
|
||
|
||
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
|
||
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
|
||
flex: 0 0 110px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Side-by-side Mode (.jp-mod-sideBySide)
|
||
|----------------------------------------------------------------------------*/
|
||
.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
|
||
margin-top: 3em;
|
||
margin-bottom: 3em;
|
||
margin-left: 5%;
|
||
margin-right: 5%;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) min-content minmax(
|
||
0,
|
||
var(--jp-side-by-side-output-size)
|
||
);
|
||
grid-template-rows: auto minmax(0, 1fr) auto;
|
||
grid-template-areas:
|
||
'header header header'
|
||
'input handle output'
|
||
'footer footer footer';
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
|
||
grid-template-columns: minmax(0, 1fr) min-content minmax(
|
||
0,
|
||
var(--jp-side-by-side-resized-cell)
|
||
);
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
|
||
grid-area: header;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
|
||
grid-area: input;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
|
||
/* overwrite the default margin (no vertical separation needed in side by side move */
|
||
margin-top: 0;
|
||
grid-area: output;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
|
||
grid-area: footer;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
|
||
grid-area: handle;
|
||
user-select: none;
|
||
display: block;
|
||
height: 100%;
|
||
cursor: ew-resize;
|
||
padding: 0 var(--jp-cell-padding);
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
|
||
content: '';
|
||
display: block;
|
||
background: var(--jp-border-color2);
|
||
height: 100%;
|
||
width: 5px;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook
|
||
.jp-CodeCell.jp-mod-resizedCell
|
||
.jp-CellResizeHandle::after {
|
||
background: var(--jp-border-color0);
|
||
}
|
||
|
||
.jp-CellResizeHandle {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Placeholder
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell-Placeholder {
|
||
padding-left: 55px;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper {
|
||
background: #fff;
|
||
border: 1px solid;
|
||
border-color: #e5e6e9 #dfe0e4 #d0d1d5;
|
||
border-radius: 4px;
|
||
-webkit-border-radius: 4px;
|
||
margin: 10px 15px;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-inner {
|
||
padding: 15px;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-body {
|
||
background-repeat: repeat;
|
||
background-size: 50% auto;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-body div {
|
||
background: #f6f7f8;
|
||
background-image: -webkit-linear-gradient(
|
||
left,
|
||
#f6f7f8 0%,
|
||
#edeef1 20%,
|
||
#f6f7f8 40%,
|
||
#f6f7f8 100%
|
||
);
|
||
background-repeat: no-repeat;
|
||
background-size: 800px 104px;
|
||
height: 104px;
|
||
position: absolute;
|
||
right: 15px;
|
||
left: 15px;
|
||
top: 15px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-h1 {
|
||
top: 20px;
|
||
height: 20px;
|
||
left: 15px;
|
||
width: 150px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-h2 {
|
||
left: 15px;
|
||
top: 50px;
|
||
height: 10px;
|
||
width: 100px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-1,
|
||
div.jp-Cell-Placeholder-content-2,
|
||
div.jp-Cell-Placeholder-content-3 {
|
||
left: 15px;
|
||
right: 15px;
|
||
height: 10px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-1 {
|
||
top: 100px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-2 {
|
||
top: 120px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-3 {
|
||
top: 140px;
|
||
}
|
||
|
||
</style>
|
||
<style type="text/css">
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
The following CSS variables define the main, public API for styling JupyterLab.
|
||
These variables should be used by all plugins wherever possible. In other
|
||
words, plugins should not define custom colors, sizes, etc unless absolutely
|
||
necessary. This enables users to change the visual theme of JupyterLab
|
||
by changing these variables.
|
||
|
||
Many variables appear in an ordered sequence (0,1,2,3). These sequences
|
||
are designed to work well together, so for example, `--jp-border-color1` should
|
||
be used with `--jp-layout-color1`. The numbers have the following meanings:
|
||
|
||
* 0: super-primary, reserved for special emphasis
|
||
* 1: primary, most important under normal situations
|
||
* 2: secondary, next most important under normal situations
|
||
* 3: tertiary, next most important under normal situations
|
||
|
||
Throughout JupyterLab, we are mostly following principles from Google's
|
||
Material Design when selecting colors. We are not, however, following
|
||
all of MD as it is not optimized for dense, information rich UIs.
|
||
*/
|
||
|
||
:root {
|
||
/* Elevation
|
||
*
|
||
* We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
|
||
*
|
||
* https://github.com/material-components/material-components-web
|
||
* https://material-components-web.appspot.com/elevation.html
|
||
*/
|
||
|
||
--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',
|
||
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=7606d30a">
|
||
<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">
|
||
<img alt="No description has been provided for this image" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/VU_logo.png/800px-VU_logo.png?20161029201021" width="350"/>
|
||
<h3 id="Programming-large-scale-parallel-systems">Programming large-scale parallel systems<a class="anchor-link" href="#Programming-large-scale-parallel-systems">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=4ac1e5d9">
|
||
<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="Intro-to-MPI-(collectives)">Intro to MPI (collectives)<a class="anchor-link" href="#Intro-to-MPI-(collectives)">¶</a></h1>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a341be2e">
|
||
<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="Contents">Contents<a class="anchor-link" href="#Contents">¶</a></h2><p>In this notebook, we will continue learning the basics of parallel computing using the Message Passing Interface (MPI) from Julia. In particular, we will learn:</p>
|
||
<ul>
|
||
<li>How to use basic collective communication directives</li>
|
||
<li>How to use MPI communicators</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c87b3c82">
|
||
<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="Collective-communication">Collective communication<a class="anchor-link" href="#Collective-communication">¶</a></h2><p>MPI provides a set of routines for communication involving multiple processes. These are called <em>collective communication</em> operations. Some usual collective operations are:</p>
|
||
<ul>
|
||
<li><code>MPI_Barrier</code>: Synchronize all processes</li>
|
||
<li><code>MPI_Bcase</code>: Send the same data from one to all processes</li>
|
||
<li><code>MPI_Gather</code>: Gather data from all processes to one</li>
|
||
<li><code>MPI_Scatter</code>: Scatter data from one to all all processes</li>
|
||
<li><code>MPI_Reduce</code>: Reduce data from all processes to a single one</li>
|
||
<li><code>MPI_Scan</code>: Scan (or prefix) reduction</li>
|
||
<li><code>MPI_Allgather</code>: Like a <code>MPI_Gather</code> but all processes receive the result</li>
|
||
<li><code>MPI_Allreduce</code>: Like <code>MPI_Reduce</code> but all processes receive the result</li>
|
||
<li><code>MPI_Alltoall</code>: Exchange data from all to all processes</li>
|
||
</ul>
|
||
<p>We will discuss some of them in greater detail in this notebook.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=4ffa5e56">
|
||
<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="Why-collective-operations?">Why collective operations?<a class="anchor-link" href="#Why-collective-operations?">¶</a></h2><p>Point-to-point communication functions provide all the building blocks needed in parallel programs and could be used to implement the collective functions described above. Then, why does MPI provide collective communication functions? There are several reasons:</p>
|
||
<ul>
|
||
<li>Ease of use: It is handy for users to have these functions readily available instead of having to implement them.</li>
|
||
<li>Performance: Library implementations typically use efficient algorithms (such as reduction trees).</li>
|
||
<li>Hardware support: Hardware vendors can optimize the MPI library for their machine and even develop hardware specially design to perform MPI operations efficiently. For instance, <a href="https://en.wikipedia.org/wiki/IBM_Blue_Gene">IMB Blue Gene</a> was equipped with auxiliary networks for MPI collectives.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=53a0f5fa">
|
||
<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="Semantics-of-collective-operations">Semantics of collective operations<a class="anchor-link" href="#Semantics-of-collective-operations">¶</a></h2><p>These are key properties of collective operations:</p>
|
||
<ul>
|
||
<li>Completeness: All the collective communication directives above are <em>complete</em> operations. Thus, it is safe to use and reset the buffers once the function returns.</li>
|
||
<li>Standard mode: Collective directives are in standard mode only, like <code>MPI_Send</code>. Assuming that they block is erroneous, assuming that they do not block is also erroneous.</li>
|
||
<li>Synchronization: Completion of a call does not guarantee that other processes have completed the operation. A collective operation may or may not have the effect of synchronizing all processes, the only exception is <code>MPI_Barrier</code> of course.</li>
|
||
</ul>
|
||
<div class="alert alert-block alert-info">
|
||
<b>Note:</b> Recent versions of the MPI standard also include non-blocking (i.e., incomplete) versions of collective operations (not covered in this notebook). A particularly funny one is the non-blocking barrier `MPI_Ibarrier`.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e9e2a219">
|
||
<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="MPI_Barrier">MPI_Barrier<a class="anchor-link" href="#MPI_Barrier">¶</a></h2><p>This function is used to synchronizes a group of processes. All processes block until all have reached the barrier. It is often invoked at the end of for loops to make sure all processes have finished the current loop iteration to move to the next one. We will see an example later in another notebook when studying the traveling sales person problem (TSP).</p>
|
||
<p>In Julia:</p>
|
||
<div class="highlight"><pre><span></span><span class="n">MPI</span><span class="o">.</span><span class="n">Barrier</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
</pre></div>
|
||
<p>In C:</p>
|
||
<div class="highlight"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">MPI_Barrier</span><span class="p">(</span><span class="n">MPI_Comm</span><span class="w"> </span><span class="n">comm</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d9753e4b">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>In this example the ranks sleep for a random amount of time and then they call barrier. It is guaranteed that the message "Done!" will be printed after all processes printed "I woke up" since we used a barrier. Try also to comment out the call to <code>MPI.Barrier</code>. You will see that the message can be printed in any order in this case.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=9a66c717">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">sleep</span><span class="p">(</span><span class="n">rand</span><span class="p">(</span><span class="mi">1</span><span class="o">:</span><span class="mi">3</span><span class="p">))</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I woke up"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Barrier</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] Done!"</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 4 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=df0223ff">
|
||
<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="MPI_Reduce">MPI_Reduce<a class="anchor-link" href="#MPI_Reduce">¶</a></h2><p>This function combines values provided by different processors according to a given reduction operation. The result is received in a single process (called the root process).</p>
|
||
<p>In Julia:</p>
|
||
<div class="highlight"><pre><span></span><span class="n">MPI</span><span class="o">.</span><span class="n">Reduce!</span><span class="p">(</span><span class="n">sendbuf</span><span class="p">,</span><span class="w"> </span><span class="n">recvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">op</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="p">)</span>
|
||
</pre></div>
|
||
<p>In C:</p>
|
||
<pre><code>int MPI_Reduce(const void *sendbuf, void *recvbuf, int count,
|
||
MPI_Datatype datatype, MPI_Op op, int root,
|
||
MPI_Comm comm)
|
||
</code></pre>
|
||
<div class="alert alert-block alert-info">
|
||
<b>Note:</b> `MPI_Reduce` (and related functions like `MPI_Allreduce`) use operations that are *commutative* and *associative*, such as addition, multiplication, maximum, minimum, logical and, logical or. Otherwise the result will be undefined as it will depend in which order the operations are done.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2fc1aa28">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Each process generates a random integer. Compute the sum of all these integers. Receive the result on rank 0.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=341b8438">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">1</span><span class="o">:</span><span class="mi">4</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">value</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="c"># This can be anything as only the root process</span>
|
||
<span class="w"> </span><span class="c"># Will receive data</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nothing</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am contributing with </span><span class="si">$sndbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Reduce!</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="o">+</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] The sum is </span><span class="si">$rcvbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 3 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=3ea77a8f">
|
||
<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="Reducing-multiple-values">Reducing multiple values<a class="anchor-link" href="#Reducing-multiple-values">¶</a></h2><p>If more than one item is provided in the send buffers, <code>MPI_Reduce</code> does the reduction element by element.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=b26fd0b2">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Each process generates 2 random integers. Take a look to the result of reduce. Note that the values have ben reduced "element by element".</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=1a145948">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">1</span><span class="o">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nothing</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am contributing with </span><span class="si">$sndbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Reduce!</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="o">+</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] The sum is </span><span class="si">$rcvbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 3 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=539df34f">
|
||
<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="MPI_Allreduce">MPI_Allreduce<a class="anchor-link" href="#MPI_Allreduce">¶</a></h2><p>This is a variant of <code>MPI_Reduce</code> in which all processes get the result.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=be0381bb">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>This is the same example as above, but all processes get the result.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=1595f4f5">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">1</span><span class="o">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="c"># All ranks allocate a receive buffer</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am contributing with </span><span class="si">$sndbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Allreduce!</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="o">+</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] The sum is </span><span class="si">$rcvbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 3 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=97dc2886">
|
||
<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="MPI_Gather">MPI_Gather<a class="anchor-link" href="#MPI_Gather">¶</a></h2><p>Each rank sends a message to the root rank (the root rank also sends a message to itself). The root rank receives all these values in a buffer (e.g. a vector). This function assumes that the amount of data sent from each rank is the same. The root process can be any process and it is rank 0 by default in Julia.</p>
|
||
<p>In Julia:</p>
|
||
<div class="highlight"><pre><span></span><span class="n">MPI</span><span class="o">.</span><span class="n">Gather!</span><span class="p">(</span><span class="n">sendbuf</span><span class="p">,</span><span class="w"> </span><span class="n">recvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||
</pre></div>
|
||
<p>In C:</p>
|
||
<div class="highlight"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">MPI_Gather</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">sendbuf</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sendcount</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_Datatype</span><span class="w"> </span><span class="n">sendtype</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">recvbuf</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">recvcount</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_Datatype</span><span class="w"> </span><span class="n">recvtype</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">root</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="n">MPI_Comm</span><span class="w"> </span><span class="n">comm</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=3d0a1e9d">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Each process sends an integer to rank 0.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=4bdf9c02">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="350">
|
||
</img></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=1f8a70c6">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="o">*</span><span class="p">(</span><span class="n">rank</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">msg</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">nranks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_size</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="kt">Int</span><span class="p">,</span><span class="n">nranks</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="c"># This can be anything as only the root process</span>
|
||
<span class="w"> </span><span class="c"># Will receive data</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nothing</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am sending </span><span class="si">$sndbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Gather!</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I received </span><span class="si">$rcvbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 3 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0f85f08d">
|
||
<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="MPI_Allgather">MPI_Allgather<a class="anchor-link" href="#MPI_Allgather">¶</a></h2><p>This is a variant of <code>MPI_Gather</code> in which all processes get the result.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=4bf2ef34">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=070e1fc1">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="o">*</span><span class="p">(</span><span class="n">rank</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">msg</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="n">nranks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_size</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="kt">Int</span><span class="p">,</span><span class="n">nranks</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am sending </span><span class="si">$sndbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Allgather!</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="c"># All ranks receive the result</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I received </span><span class="si">$rcvbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 3 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=fb6a9034">
|
||
<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="MPI_Gatherv">MPI_Gatherv<a class="anchor-link" href="#MPI_Gatherv">¶</a></h2><p>This function is similar to <code>MPI_Gather</code>, but it is used when there is a different amount of data sent from each process. There is also <code>MPI_Allgatherv</code> for which all processes will receive the result.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e0d2998c">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Each processes sends <code>rank+1</code> integers to rank 0.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=23814278">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fill</span><span class="p">(</span><span class="mi">10</span><span class="o">*</span><span class="n">rank</span><span class="p">,</span><span class="n">rank</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">nranks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_size</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="c"># Define the amount of data to be received</span>
|
||
<span class="w"> </span><span class="c"># from each rank</span>
|
||
<span class="w"> </span><span class="n">counts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">rank</span><span class="o">+</span><span class="mi">1</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">:</span><span class="p">(</span><span class="n">nranks</span><span class="o">-</span><span class="mi">1</span><span class="p">)]</span>
|
||
<span class="w"> </span><span class="c"># Total amount of receive data</span>
|
||
<span class="w"> </span><span class="n">ndata</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sum</span><span class="p">(</span><span class="n">counts</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="kt">Int</span><span class="p">,</span><span class="n">ndata</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">VBuffer</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">counts</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="c"># This can be anything as only the root process</span>
|
||
<span class="w"> </span><span class="c"># Will receive data</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nothing</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am sending </span><span class="si">$sndbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Gatherv!</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I received </span><span class="si">$data</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 4 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=25c2fb1e">
|
||
<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="How-to-get-the-amount-of-data-to-be-received?">How to get the amount of data to be received?<a class="anchor-link" href="#How-to-get-the-amount-of-data-to-be-received?">¶</a></h2><p>Remember that <code>MPI_Probe</code> allows you to query the amount of data to be received with <code>MPI_Recv</code>. Unfortunately, this mechanism does not work for MPI collectives. A workaround is to first communicate the amount of data to be gathered, allocate the receive buffer accordingly, and then communicate the actual message.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=12f9e2ca">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Each process sends a random amount of integers to rank 0.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b10430a9">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="c"># Get number of ints to send</span>
|
||
<span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rand</span><span class="p">(</span><span class="mi">1</span><span class="o">:</span><span class="mi">4</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="c"># Generate data to send</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fill</span><span class="p">(</span><span class="n">rank</span><span class="p">,</span><span class="n">count</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="c"># Communicate counts</span>
|
||
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">nranks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_size</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">counts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="kt">Int</span><span class="p">,</span><span class="n">nranks</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="n">counts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nothing</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Gather!</span><span class="p">([</span><span class="n">count</span><span class="p">],</span><span class="w"> </span><span class="n">counts</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="c"># Allocate receive buffer</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">ndata</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sum</span><span class="p">(</span><span class="n">counts</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="kt">Int</span><span class="p">,</span><span class="n">ndata</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">VBuffer</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">counts</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nothing</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="c"># Communicate data</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am sending </span><span class="si">$sndbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Gatherv!</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I received </span><span class="si">$data</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 4 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=8b4254d1">
|
||
<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="MPI_Scatter">MPI_Scatter<a class="anchor-link" href="#MPI_Scatter">¶</a></h2><p>This is the inverse operation of <code>MPI_Gather</code>. The root rank sends a distinct message to each rank.</p>
|
||
<p>In Julia:</p>
|
||
<div class="highlight"><pre><span></span><span class="n">MPI</span><span class="o">.</span><span class="n">Scatter!</span><span class="p">(</span><span class="n">sendbuf</span><span class="p">,</span><span class="w"> </span><span class="n">recvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||
</pre></div>
|
||
<p>In C:</p>
|
||
<div class="highlight"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">MPI_Scatter</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">sendbuf</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sendcount</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_Datatype</span><span class="w"> </span><span class="n">sendtype</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">recvbuf</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">recvcount</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_Datatype</span><span class="w"> </span><span class="n">recvtype</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">root</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="n">MPI_Comm</span><span class="w"> </span><span class="n">comm</span><span class="p">)</span>
|
||
</pre></div>
|
||
<div class="alert alert-block alert-info">
|
||
<b>Note:</b> `MPI_Scatter` sends the same amount of data to each rank. To send a variable amount of data there is `MPI_Scatterv` (`MPI.Scatterv!` in julia), which works similar to `MPI_Gatherv`.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e55aa353">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Rank 0 sends a unique integer to each rank.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=74d5b606">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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P3489evXtzYyIUJMeXk5f/vb3/jLX/7iMQMuLRGijnUFPgC0ZrqMjY3l97//PVOnTqVVq1bWRiZECFq2bBl5eXlVJh+8+eabycvLk9ZLURfqAe+jkt9ekycAPXr0wG63k5CgVawiRESpruo7VFajkiRKdPo58CYaF/GYmBhSU1P505/+RJs2WsUqQkSUlStXkpOTw+7du122y2pUIkjqA/8CGunsLK2XIppt27YNm83G+vXrXbZL66UIgmJggM6OV111FU899RS//vWvMQytfIsQEePEiRPMmjWLgoICysvLK7fHxMRw1113YbPZuPzyy4MYoSJJlOiUi0YCpXv37uTl5UkGXESlL7/8kpycHFatWuWyPVQy4CJq/QGNBEr79u2x2WzcfvvtdRCSEKHlyJEjzJw5k4ULF0rrpQgV/bzt0LBhQyZOnMikSZNo1EgrTy5ExLh48SILFizg2Wef5ejRoy7f69u3L7m5uSH1QEiSKNHJ6+SD9erVY/jw4dx88811EY8QIePkyZOV8554yoBnZWXJalQimK7R2alv37707t3b6liECCnl5eX8/e9/5/nnn5fWSxFKYlHzENaoU6dODBs2TBIoIuqUlpaSnZ3N9u3bXbZfd911/OlPfyIlJSVIkVVP1m6LTl952+HChQs8/fTT9O/fn+XLl9dFTEIE1cWLF3n99dfp06cPr776qksCJTExkeLiYvLz8yWBIoJtp85OCxcuJDExkb///e9cuHDB6piECLpVq1YxePBgcnJyXBIoHTp04PXXX+fNN9+UBIoIaZ999hnDhw/nscce4/vvvw92OEJY7uuvv2bs2LHcfffdLgmUxo0bk5GRwerVq0MygQKSRIlW3+ruuHfvXu6//35++9vfVpkVWYhIsW7dOoYOHcoTTzzhUkIYHx/P7NmzKSwsDKkSQhHVTuvuePz4cTIzM0lOTmbt2rVWxiRE0OzevZv77ruPUaNG8eWXX1Zub9asGZmZmaxevVrmrhJho6KigoULF9K3b19eeukllwc6QkSKU6dO8cwzz9C/f3/ef//9yu2GYZCWlsb69evJyMgI6eW8JYkitKxdu5bk5GSmTp3KkSNHgh2OEAFRVlbGlClTSEtL85gBX7duHampqUGMUIja27FjB7/97W+555572LlTq5BFiJB38uRJpk+fzuDBg1m5cmXl9piYGNLS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" width="350"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=5ea413fd">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">nranks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_size</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="n">rcv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">Ref</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">10</span><span class="o">*</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">nranks</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am sending: </span><span class="si">$snd</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="c"># Only the root rank sends data</span>
|
||
<span class="w"> </span><span class="c"># so this can be anything</span>
|
||
<span class="w"> </span><span class="n">snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nothing</span>
|
||
<span class="w"> </span><span class="k">end</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Scatter!</span><span class="p">(</span><span class="n">snd</span><span class="p">,</span><span class="n">rcv</span><span class="p">,</span><span class="n">comm</span><span class="p">;</span><span class="n">root</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I have received: </span><span class="si">$</span><span class="p">(</span><span class="n">rcv</span><span class="p">[])</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 4 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=ed8da7f9">
|
||
<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="MPI_Bcast">MPI_Bcast<a class="anchor-link" href="#MPI_Bcast">¶</a></h2><p>Similar to <code>MPI_Scatter</code>, but we send the same message to all processes.</p>
|
||
<p>In Julia:</p>
|
||
<div class="highlight"><pre><span></span><span class="n">MPI</span><span class="o">.</span><span class="n">Bcast!</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">root</span><span class="p">)</span>
|
||
</pre></div>
|
||
<p>In C:</p>
|
||
<div class="highlight"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">MPI_Bcast</span><span class="p">(</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">buffer</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_Datatype</span><span class="w"> </span><span class="n">datatype</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">root</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_Comm</span><span class="w"> </span><span class="n">comm</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=97369713">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Rank 0 sends the same integer to all processes.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=26b56c81">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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1rm6uvrUsBthcRq57dy5My+99BK/+tWvOP3000NolTdr167lzjvv9FNiNidLFKY6jecOjqX0X+Bmh+iU/vv27UtxczLSSTU1NRlZh+T8889n+vTpzJgxg4suuijs5iRkJdoYOnSol0QbL+EhmYdIHlH8TuykLVu2ZGz8fuKJJ7IufntMlKT4LdLQfkyeANdJ96yyeWVlZW4T+2W7wrq6un5hN8KJVaLwxRdf5Nprrw27OQlZJWatm7YuzcVUFCnFlH7LOUHVxFgGFOMxpX9xcXFepPQPKytsvBIobdq0YdKkSbz55psMGJBRS0scWeszPJaAsP4mh+Hib1Ikjyl+N6JJkyYZF78ffPBB3nzzTYYNG5bmVnmn+C0SCE/lPOvq6pg1a5bXknNZq6CgIJSL23hxu2XLltx7771UVlZmVYlCjyVmV3Psb3JloA0MWdD/e7OBy/CR0n/JkiUBNy08kUgklA/1BRdcQMuWLb9+3qRJE+644w4qKyv53ve+lzV164qKipg4cSJffulqYGI7Zn2G69E2EQF8xu/BgwcrfgegsfhdWlqaq/F7B4rfIl7MBa7D5Sjg3r17mTx5Mn379qWioiLwxoUolHXT7dq147TTTmvw2rBhw3jrrbcYP348xx13XBjN8sRHidkvMUsPriRPShSm41bIQY6tb3Kd0v+WW27J5ZT+3Xbu3Hliuk968skn84c//IEePXowdOhQXnvtNR599FFOOeWUdDfFs48++oiRI0dSUlLC559/7maXWsz6zwsx6zPyM328SHI8x+8VK1Z8Hb83b94cdPvCcEMY8btt27Y89dRT9OzZM+vid3SOFMVvkcBFr099HBfrU9etW0dJSQljx45l1apVQbcvDGdXVVWlvb5U06ZNmT59On369KF///4899xzPPHEE5xzzjnpbopnKjHrXkEI57we8+XYzc3GrVq14vvf/z733HNPVmS28+Ab7du3/3sjP/8HDun8y8vL+eEPfxhcqzLMrl27+MUvfsEf//hHL+XU5gBluCjZJiKe+Irfd999d4NR1Rwwsn379i808vPXccj8XVZWxo9+9KPgWpVhdu/ezZQpUxS/RcLVEfglcJObjZs1a8a4ceO4//77syKJoQf3tm/f/rFGfv4/wHfsL9566638+te/Dq5VGebAgQP87ne/4ze/+Y2XcmrvYHKuuC4wnUvC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RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERHLUT4C1UY8fh9ucpLUAmobdCBGRHLKMht8TvcNtjoiIpNhlNIzzazHX1NnoBKBZ2I2Ipo5JbjsVuCDqebuwGuLT9cA4oCfQHjgNqANqgM+BN4CngM/CaqCISJY7D2gb9fy4kNrhVwFwIdAZ816ifQS8lO4GiYhkmBY07A+AiZ2ZrDnQC+gHXAtcCZzBsY70l0AV8A4wH3gG2Jf+ZkqumwZEoh6/D7c5rp0HvELDtsd7HMW8z5PCaKiISJbbScOYenO4zUmoPTAMmATMBr4g/vfDn8JpoohIRrmW2PjYMtQWOWuGie9Wx9hNP8B67AV+Dhyf9lZLTsvGznQ3YBvePkAR4FPg3BDaKyKSzbKlM30GsANv3wvqTIuIZE9nehner//tjzWY95s2muYtmaQj8Cqxo8x1wLuYD0iz+u2utm1zKTAHMzV8d7DNFBGRNGsOnBx2I0REJDCtE/x8B2Y2UlPgLJyXJV0IVAB9gQ9T2jrJS9k0Mt0EWE7sHabXgEsctu+K8x2sv6ajsSIiOSJbRqbPpfHRiLXAYdtrGpkWEcmekenVNGzjauA/gYGYxGPRmmJms87ADLrZ399nZG+SNckg2dSZ/jaxH4S/0fjsidbAQts+dZjRaRERSSwbO9NVmPXSkzDr606t38a+REidaRGR7OpMH8WsmS7GfZK0ocABYt/j+ADaKHkmWzrTzYF1NGzrFtwlFTuf2CQFbwbSShGR3JMtnekTgP40zDxup860iEisbOlMPwpc7nPf/0Pse/w4Re2SPJYtnemRxH4ASj3sP8Vh/0tT3EYRkVyULZ1pN9SZFhGJlS2d6WRVEvs+zw/6pLmWgOxSzBTf8zGL0g9iFp8/n2C/pkCn+sd5wImYNby7MYvdPwSWArVBNLpeAXANcAVwNtAGc2GwAZhHbifVGmF7/iXwFw/7/x74VxpOB7kF+GmS7RKR3NKbOY3kAAAZ0ElEQVQU6I6Js2fVP9+BSV74foJ929TvdxlmWvGJmO+EXZiEKO9gpqgFqRXQE/Mdd3b9a9uBDzBLXo4EfH4RkWzQBlOj+FLgdMwSwK2Y6cM1CfY9ExPrO2JmSB6P6U/sAjZhOmxfBNLqY07FfFd1wFQyOIRpfyUabW3M80AP22vnA+tDaEvGORNz9zz6YV1IFAB3ACtxTkryaZxjno3pgL2Gu1pm+zGL3K/w0f4etrZHf5ALgLswmarjnbsW07k8z+N5kx2Z/jbmQi267UswF6Gp0rT+HNHtTHTzw8kK2zEWpaqBIpIVvkvDWDUv6mdtgMnEL630X3GOeT3wM+A9TEc10ffEFmAi/rJO/9jW/mlRPzsJMwOnse+qncC/YTrcXiQzMt0C871o/37+LeaGdLppZFok9z1Nw3jzUNTPLgL+DHyFc5wc6HC85pg1t9No/Fo8+vE+MA5TYcar+bb2fyvqZx2B52j8+2YVMBr364kh+ZHpszHX/9Ht3g6UeDhGOowg9n2ODbVFGeQsYn8552IukF5x+Fn04zOH4/0TZoG7mw+M/VGHySxX6KH9xbZjHK5//URMKSi3594DFHk4bzKd6QeJzY63mGOJXlLlKmLf530+jvNb2zGOkJtTWETE2Q9oGAOW1L9+HWY0obHY6jSL5X8T7NPYYwfOF22N+aXtGH+rf70LsNnDud8FTvFwXr+d6baY/BT28/8Mbxd5qaTOtEjue46Gn/NH618vwYwgNxYfB9mO1ZzYGOjl8QHepxHbK9dYyxrvctH+6McTuO+LJNOZvorY76CDwCiX+6fTGGLfZ+BLl7x0CDNNC+AlEv+SnL7U2+L/vRcADwB/9Lm/pRnmYu0mD/u0wXS+nUpFpUozTCd8Eg1/d/8L9MNcrKRSR4fX3vFxHPs+TQj29yQime8KzAj12Qm2c/qe8NIhtTsZc6N3dBLHABMf5+BtNlBXTKbrIEeGOwBvA72jXjsKlAH3Yy5gRETSZRzwFIk7iPZr/wIaT2qYyFWYG5gXJXEMgNsx195eBoG+h5lxFaT+wAIafgftBAYAswI+tx9O1/2bgz5pNq+ZfpiGo7RzgBcx0x92Y9YYXIlZX9aYtZiO4hLM2uitmBHgFkA7zKjAKEySrOjpHHdiLib8JvV6DDNiDWaN8B8xHeUNmDs+p2I6r+X178VyfP05+/g8b2NaAzOJvXP3O8yoz9EAztnJ4bX1Po7jtE9HzPRvEck/LTCjuyfWP98PPIv5rtiMmb1yNqZD2FhOijrMOrXXMVP7PsWsnduFuQg7F7OU51s0LMvXBHgSWIb5nvHqJODvUe1fjfmeeAuzVKgAMyIyEjOiEf391B24B/M9k2rXAi9jll9ZDmIuBl8I4HwiIo25BBPvrJuimzGx/23M2uYWmGWSI2g8r8QBzNLPtzCxfj2mP3AIE4c7Yq7L/wkT9y3tgL9i+huH8a4zZrmq5c369r+H6bi2xPRn7iL2+vz/Yb7XEuX88GMc8D+Y0XvLemAw8ZfQhm2M7fkXwEdhNCQTOU3zth5baHh33I17MX/4XTzscw2xxcS34259mn2ad/RjLg07y3ZtMXe97Pt1dnFeL9O822Mu+qK3rwN+5OI8yZhhO+dh/M0aOI/Y39F/pKaJIpIF7NO8ox+v4T3Xw2zMWrzG4rPdXcSu1Zvhcl/7NO/oODyJxtfm9cBc9EXvtx53sdTLNO9BwF7b9tuJTfgSFk3zFsl99mne0Y+f4C1vRAtMx/AuTOJiN1oBUx3O/U8u97dP87Yee4lNyGtX5rDfUy7O6XWa938Qu9TzPbx9H6Zbf5ynwku9eJ3pHfibWuF3+ts5xCbL+o6L/eJ1pt+i4R2feDpgRlWi9/2li/3cdqYvAzbatv0KM9IQtJds593k8zgtiP39TklFA0UkK8TrTP8Dd3HWzu/3xB3ExtIzG93DiNeZ/qHL85Y67Fvc6B6G2870XZhkmNHbriWzltOoMy2S++J1ph/0cawC/C/7tF9jL3e5n1Nn+jDub0r+zbbvlySeHu62M90UMxpt3/YV4ASX7QtDS8zMZPt37wVhNirTxOtMfyuEttxna8NsF/s4daYPYjrnbj1l23+xi33cdKZ7E3sxtRszlSUd3rSde1USx7Jf6OmOlEj+cOpM7yW11QfcetvWjrtc7OPUmZ6P+2RezYjtTLrpiCfqTBdgRsbtbXsXU3Imk6gzLZL7nDrT75D+CgInYzqy0e04z8V+Tp3phz2ct7PD/l0T7OOmM30CZgmPfbsnyfxlwb8itt1uBh1TIpsTkG0hnC9Ke9mm6x23SuzPeBuFfdn2/CqS///7JmYdYHTyhc2YtejzHPdIPfudrkNJHOug7XnrJI4lItnvT5jvinR7zvb8Bp/H+SnmosCNWqDC9to1Ps9raQb8gdgRn5eBviSu1yoikg4/I5i8Po3ZCbxhe81PrD+It/wWSzH5naIlG+vPwAxuDY56zRrt/w6NrzUP27cw+aWifYxJFp0W2dyZnkX6PzhgEoTVRj0/DXdT+OzcjGhHW2l73opjiWn8GI/p0LeIeu1DTOKaD5M4rlf2NSrJdKbt+7pd/yIiuemZkM67xvb8Kh/HOIRJluaF/XsimZHj1phlON+yvf574BbM0iMRkbAdwCQSDkMqYn0lZtmqF/ZYn8xa5k7AIhrmYqrFzKjyMmIehl7Af9teO4ipLX0gXY3I9GH7xixJvIknx2PWDl+G6aQeT/zO6lEaJoM5Gaj2eL73PG6/3eG1EzEZZb1oAjwOfN/2+jxMVtg9Ho+XrK9sz/2sbYy3bzIdcxHJbkcxSRVT6XRMVtXzOfY94ZTs5lzb85N9nGsFsfExEXvpwpN8nBdMQsqXaTjaEQEmEHwpFhERL1bgL4t2PFalhKswMf8kzCxKpySQ9unVfmK91/4AxPYJ/A6uFWGqRkS3ex+mitE/fB4zXbpibvhGDwoexWQht99sCFQ2d6ZXp+AYLTC/9G9i1g77Han3c8Hi1DlujNMdluM9HuN4zDT14bbXZ2CyEKYyGLn1pe25lxp7dvaLWvuxRSR/VJOaGHAuZprb/wEu9nkMP98R9o6xG/bRYj+zcy7H3OmPviFQi/kdPO3jeCIiQbKPDvt1PeZa+FbgFJ/H8FOzOqxYPwaTWyj6ursaGEIwpbZS6WpMlY7omwgRzP9f2utfZ3Nnem+S+/fD/BElW2gdvKXhB3Nh4nXEwe26ucZ8k9hkNv+FWVeQiuP7Yb/Y9fq7tDQldmRanWmR/JXsd0QBpjTgf5D8khE/cS2sadSP0vB7Yi/m4tLrlHMRkXRIdkblSZgZm3fgPuFjPH4GhPzE+lRcs/+Rhu/3Y8ya6Y0pOHaQLsPkB7HPAigDpqe/OdndmU5mLvw3MKnl400pPoBJxLUvzs+vIf1ZA1PBHiQiHMt+Ghb77/hUn8dx2i/Zi2kRyV7JfEcUYm62Nlb6cBsmAZfTjdHWJF8yKqy4bP+eqMX7ciIRkXSxJ5/14mTMdObOcX5+FJPsaxvOeZra4y9vUiawx/oDxO/3ZIqLMTd27df8/w78Jv3NMbK5M+3XOZgMr9Ed6Vrg2frHYuCLBMfYhf+1aGGag/lD7FD/vAD4BWbU5MchtWmt7flxQDu8T4O3r1F0OraIiBvfJrYj/QUm+dbrmLXYjXXW+xCb5TVbTAdu59j1wSmY747BmCQ1IiKZJJkbj48T25H+CHMz9Q3gUxrPZP0wJpdENpqGmRZt6YJ5zwNI3A8Kw3nAXGJvXjyCmWUbmmzO5u3XQzRca7wbs176Dkw2wER/QAVkduHyxqzH1Ly2ry+ZDPxn+psDmEBl18HhtUSc9nE6tohIY5oRe3OxEjO1bAKmhnSiUe82AbQrXZ7BZEKNzqFxEmb0pk8YDRIRCcB1wG22136NWY/7a0wSq0QlobI51v8AmGJ77SpMiaz2aW9N487BJEo+x/b6T4GJ6W9OQ/nWmW6KKekR7Ud4u9t+Etk9ov85pkP9se31BzCj1MmuF/HqE4fX4k23aYx9n0icY4uINKY3puSh5TAm+ZiX0iXtUtqi9HsesxwqevrkCZgM34NCaZGISGqNouE17wrgX/FWdjebY30E+H+Ykd1onYD5+BvYCsJZmI70+bbXf4npw4Uu3zrTnWiYae8o8FePx7gudc0JTTVmhGG57fV/BX5Lev8uVhK73qWnj+P0sj3/DK2ZFhHv7PHnLUwODS9y4XviFWAoDZPjHAe8SGxFCBGRbNPD9vyveOtIA1yboraEaSLwb7bXLsR0qFORpDkZZ2Cmdtvb8RvgvvQ3x1m+daZPtz3fjvcO140pakvYtmEymr9re/2fMeso0pVg7QDmgxJtAN5G/08jttbf35NplIjkrdNsz/3kXuiXioZkgHmYkejobLktMKVHxoTSIhGR1LD3CdZ53P8szCBdLvgJUE7D9efnYm4mh/UeT8N8B11qe/0JTObuMJMnN5BvnWl7ynqvHcYWwF0paksm2IXpuC6wvf4t4M84F6gPwou252di6ty5VUJsW+3HFBFxI9nvib7kzgUWmPXi/YGdUa81A/4CjAulRSIiyUs21v8z6V8aGaTHgVKgLuq19pg11FenuS2nYgba7N+lTwHfJ4M60pB/nWl7huh2OGeBjuffib2Tle32AjdharZFGwvMxNxACNrzxM4QeAB3ge1EzN20aJ8A76SgXSKSf+zfE16m8TUDfp7CtmSK9zA3CaITdDbBXNiUhtIiEZHk2GO9l+U5FxB77ZkL/gczQBU93d0aIbbPAA3KKZg+yRW212dgqmzUxewRsnzrTH9EwwylYBbfuzEM05nORQcwa+Besr0+AjNdulXA59+JSSQQrSuxazjsCjAZF8+yvT6RDPywiUhWsOeS6IK7LNaFmHiUC+ulnazAJGfbEvVaIfA74N5QWiQi4t/7tuffwtSdTqQtpupB61Q3KEPMwCTdjO4vnYwpkWjPT5RqbTGVI+wj4c9g/n8y8to+m7NS+7EPU0MtOhvpPZiSUb/CedpAM8zdpx9jfl919Y9c+90dAkZipu6Ninr9JkwG1+HAlwGe/xfAv9BwveIjmI78w8BXtu3bAFMxJc2iLQGeC6iNIpL7/oFJihh9E/FvmBhozzFhORPTkb61/vlhoHlQDQzRp5gO9RxMzU8wNzV/ifl9BV3rswNwcSM/ty/3ORMzRT2exQT7vSYimet/ge9GPW8HzMbE8a1x9ukC/AG4sv55rsb6WZh+wUyOTYdvA7yGGWiz5zpKhRbA68TekF4N/BEzO8qPjfXHyHtnYTq60Q8v07Oj9cR0hu3Hex/4IWatbn/gm8DPMB3t6O1+jBlJjX6tsS9rMKWoore3j4670cqhzZcn2GeabfvfuzhPE+Bph3NVYqZUB+lmzNQS+7mrMWs5yoD/i5mGssdhu71Ax4DbKCKZ6Qc0jAdLkjjWz4mNL0cwS1K+i8k1cTMmh8YMTOyxtqvFzKqxx6ZEfmnb528+2n2b7RifutjH/n12s4t9zsVUTLD/juwlVlLtfodzJvOwTyMUkcz3HA0/x4/6PE4BZgmLPS7swVS2+Sbm+n4YZlDtdRpeo27EXJtG7+sm+e1y2z5+lsr8j+0Yv02w/bXEvk/7mnEn/TEVHaL3OwgM9tHmRE5zaGMqHrm49MqXVHamwXzh+/kPeRbT2czlzjSYqXtPOJxvCWYtQ5Duwly0ev2/2YsZMRGR/JTKzvRx9ft7jUNHMOvN+hAbnxLJps40mFHflcT+Dn5OcEl51JkWkVR1psFkirbHQDePHZjR6Ydsr+daZxqgiNgBrK8ws1lTKWs70/m2ZtoyEZiA+3pyRzDT177pYZ9sVofJUviY7fUumCQEQSZh+wNmavnnHvZZDnTHpPAXEUnWAUyn8nUP+9Rgpr9ND6RFmacaM+3Ovu7wPkwN0FzKcisiuWkVpuStlxKIS4FuwIeBtCjzLMDMxtoV9VpzzDrm20JpUYbJlnW/+4kdVU1mnVME+E/MHaT7gKGYtRJ2WzBrKn4DfBz1+nTMyEX0do2ppmH7/XTIjxD7O9jltGGUt+r3s7zt4XwRTFKZDcSmpr+N2IRhqTQHuAz4NmZNdFdib/wcxnzA/4CZMXAEEclnK2kYIzcmebztmKlsIzC5NXoSW90ggulMPlN/7t31r1fZ2nLIxfkW0fB75T3vTWaN7bw1Lvaxf59t8nC+bZgL0Uk0HOVoipkp9KaHY7nxAe5nWLmxM/EmIpJhKmiYiTvZ6i3vYxJefQczO/IKYq85D2GuoZ/CxHvrOn4pDWPSBy7O9xwN2/yJ9yYzn4bJuBJd328nNnZ66Yu8C/TD5DaK1qu+LZs9HCueg6Q2vlsWB3DMBnTn2CjApLk/HZPA5AvMxdCeMBslXzseuBBTd+4o5v9nDf6my4uI+NEKE4dOwayLrsIkqXHTURYRkezQFpNg8RTMoFU15rpTgzYiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIhJHQdgNkJzSB7gh6vlnwAvhNEVEREREREQkO/wUiEQ9ng+3OSIiIiIiIsEoDLsBIiIiIiIiItlGnWkRERERERERj9SZFhEREREREfFInWkRERERERERj9SZFhEREREREfGoadgNyHAFwHW21z4BDkQ9PxMYAXQDLgJaAkfqt/t2guO3wpSTGgicD7Sr3387sA1YBLwCbPD/FmKcAwwGegCn1Z/zcP05NwIVwFwavsfGnAecUv/vM2w/OwnonGD/dcAul+cSERERERGRLNCMhqWeIkCX+p+1BX4LfOWwTYTGO4jHAROAvXH2tT8qgGuSfC+XAy+7PN+XwCNAaxfH/YPLY8Z7jE7yfYmIiIiIiEiGideZvghY4/Cz6MfuOMe8DDPS7LXTeRTTAffjPsxouddzbiZxJ16daREREREREWnAqTM9EOeO9BFgJ6bTGwH2OByvC2Y6tVOnciewFHgLWA3Uxdnu1x7fw3/FOU4EWAssAN4FdsTZZjfQq5HjqzMtIiIiIiIiDTh1ppdH/Xsn8B+YKdQFUftcATxoO9aJwHqH460EhhC7fv0C4HGOdc6jH3e5bP8Yh33rgP8GLrZt2wRzo+B9h32qMWurnRyPmfLeFnjMtt9LUT+L92ju8r2IiIiIiIhIlnDqTFuPd4BTPRzLaQT3eaBFgv2GYhKERe+3F+iQYL/TiR1trgVGJtivGfA3h7bOTLAfwE+JfX8iIiIiIiKSZ+J1pjdgRprdOpfYNcvLMJm73fhnhzb8MsE+DznsU+7yfM0xNwvsI9qdEuynzrSIiIiIiIjE7UwP93icHxPbMe3mYf9CYju3u4ET4mzfHDM12955b+LhnJ2JnWI+NcE+6kyLiIiIiIiIY2d6PaZz68WntmMs9NGW2xzaMizOtr0dti3xcc43bMeoSrC9OtMiIiIiIpIXvHYKBV7BjCy71Ra4xPbaMz7O+wJw0PZa9zjb3mB7Xou/ju1fbc/PJPFabRERERERkZynzrR3yzxu34Vjmb4t7/o470HgQ9trXeNse73t+afAPh/nfMfFsUVERERERPKOOtPebfG4/ekOr33s89wrbc/PdHnOj3ye72PMdO1oZ/g8loiIiIiISM5QZ9q7PR63b2t7fhRT2sqPnQmOHe/1XT7PV0vsiHa8c4qIiIiIiOQNdaa9q/W4fWvb8wPEjva69aXteRuX59zv83xezikiIiIiIpI31JkO3gHbc7e1pZ0cb3tu7+ha7J3ndJxTREREREQkb6gzHTz7FOtmxHZQ3ToxwbEtu23PT/J5vkJia1nbjy0iIiIiIpJ31JkO3jaH1+ylsty61MWxnV637+fWxUAT22tf+DyWiIiIiIhIzlBnOnhOpbSu83GcJsA1tteWujznFUBzH+fs7OLYIiIiIiIieUed6eBtBTbYXvuGj+MMJHaa98I42y6yPW8F3OzjnKNsz3cAqxrZ/ivbc3siNBEREREREckDzTCZt6MfXXwcZ6rtGLXA+R6P8b+2YxwETomz7fGYtc3R27/i8XwdMJ3j6GPMSLDP/bbt3/d4ThEREREREckBqepMXw7U2Y7zdw/73+TQjqcS7POYwz6DPZzzeYf9uyXY53bb9tuAAg/nFBERERERkRyQqs40wEsOx3rIxX5XYqZX20e2r0yw30WY0evo/Xa62I/6dtnb+paL/S532G+gi/1EREREREQkh6SyM302pjNrP96zmCnVdi2AUmCPwz4TXZ7z/zrsuwf4l/rj251T3x77PvswnfNECoC1tn33Aj/GrL/uiUlqFv1o6/K9iIiIiIiISJZIZWcaYASx65AjmCngi4Gngf8GZmNqSNu3iwCvAU1dnq8Q5+naEcya6tn155uOSVp21GG7I8A3PbzHH8Q5X7zHaA/HFhERERERkSyQ6s40wCDMSK+XDqf1+AveS1w1Bab5PN8BzA0ALwqAP3k4hzrTIiIiIiIiOSaIzjSYTN5/JTYpWbzHOmAsySXzGgl85vJ8EeA54OIkz/cPnEfi1ZkWEREREZGspkzLjSsEbrW9NgczBTsVLgGGYZJ0dQDOwNSE3oapT70YeBmYR2wNZz+aAX0xWb171p+vHSahWTWwCdMBfgn4OAXns855MdAeU3faPkV9EbA5RecSERERERFJi/8PMo2NDEAFRP4AAAAASUVORK5CYII=" width="350"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=4de15781">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">nranks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_size</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="n">buffer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">Ref</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span>
|
||
<span class="w"> </span><span class="n">buffer</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">20</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I am sending: </span><span class="si">$</span><span class="p">(</span><span class="n">buffer</span><span class="p">[])</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Bcast!</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span><span class="n">comm</span><span class="p">;</span><span class="n">root</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">] I have received: </span><span class="si">$</span><span class="p">(</span><span class="n">buffer</span><span class="p">[])</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 4 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e83be96d">
|
||
<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="Communicators">Communicators<a class="anchor-link" href="#Communicators">¶</a></h2><p>A key component in MPI programming are so-called communicators. A communicator object has to main purposes:</p>
|
||
<ol>
|
||
<li>To provide an isolated communication context</li>
|
||
<li>To define a group of processes</li>
|
||
</ol>
|
||
<h3 id="Communication-context">Communication context<a class="anchor-link" href="#Communication-context">¶</a></h3><p>When you write an MPI program it is very likely that you are going to use libraries that also use MPI to send messages. Ideally, these libraries should not interfere with application messages. Using tags to isolate the messages send by your application does not solve the problem. MPI communicators fix this problem as they provided an isolated communication context. For instance, <code>MPI_SEND</code> and <code>MPI_RECV</code> specify a communicator. <code>MPI_RECV</code> can only receive messages sent to same communicator. The same is also true for collective communication directives. If two libraries use different communicators, their message will never interfere. In particular it is recommended to never use the default communicator, <code>MPI_COMM_WORLD</code>, directly when working with other libraries. A new isolated communicator can be created with <code>MPI_Comm_dup</code>.</p>
|
||
<h3 id="Groups-of-processes">Groups of processes<a class="anchor-link" href="#Groups-of-processes">¶</a></h3><p>On the other hand, imagine that we want to use an MPI communication directive like <code>MPI_Gather</code>, but we only want a subset of the processes to participate in the operation. So far, we have used always the default communication <code>MPI_COMM_WORLD</code>, which represents all processes. Thus, by using this communicator, we are including all processes in the operation. We can create other communicators that contain only a subset of processes. To this end, we can use function <code>MPI_Comm_split</code>.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=556ca223">
|
||
<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="MPI_Comm_dup">MPI_Comm_dup<a class="anchor-link" href="#MPI_Comm_dup">¶</a></h2><p>Duplicate a given communicator, creating a new one with an new communication context.</p>
|
||
<p>In Julia:</p>
|
||
<div class="highlight"><pre><span></span><span class="n">newcomm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_dup</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
</pre></div>
|
||
<p>In C:</p>
|
||
<div class="highlight"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">MPI_Comm_dup</span><span class="p">(</span><span class="n">MPI_Comm</span><span class="w"> </span><span class="n">comm</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_Comm</span><span class="w"> </span><span class="o">*</span><span class="n">newcomm</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9acfb792">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Send value 2 from rank 2 to rank 3. Then send value 1 also from rank 2 to rank 3. Note that we are using 2 different communicators for each send receive pair in such a way that we first receive value 1 and then value 2, even if this not was the other in which the data was sent. Try also to define <code>comm2 = comm</code> and see how the result will change.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=e50d44f6">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="c"># We create a new communicator</span>
|
||
<span class="w"> </span><span class="n">comm2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_dup</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Send</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm2</span><span class="p">;</span><span class="w"> </span><span class="n">dest</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Send</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">dest</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="kt">Int</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Recv!</span><span class="p">(</span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm</span><span class="p">;</span><span class="w"> </span><span class="n">source</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="nd">@show</span><span class="w"> </span><span class="n">rcvbuf</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Recv!</span><span class="p">(</span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="n">comm2</span><span class="p">;</span><span class="w"> </span><span class="n">source</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="nd">@show</span><span class="w"> </span><span class="n">rcvbuf</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 4 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=5e1b13eb">
|
||
<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="MPI_Comm_split">MPI_Comm_split<a class="anchor-link" href="#MPI_Comm_split">¶</a></h2><p>Split a given communicator.</p>
|
||
<p>In Julia:</p>
|
||
<div class="highlight"><pre><span></span><span class="n">newcomm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_split</span><span class="p">(</span><span class="n">comm</span><span class="p">,</span><span class="w"> </span><span class="n">color</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">)</span>
|
||
</pre></div>
|
||
<p>In C:</p>
|
||
<div class="highlight"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">MPI_Comm_split</span><span class="p">(</span><span class="n">MPI_Comm</span><span class="w"> </span><span class="n">comm</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">color</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">key</span><span class="p">,</span>
|
||
<span class="w"> </span><span class="n">MPI_Comm</span><span class="w"> </span><span class="o">*</span><span class="n">newcomm</span><span class="p">)</span>
|
||
</pre></div>
|
||
<p>There are two key parameters:</p>
|
||
<ul>
|
||
<li><code>color</code>: all processes with the same color will be grouped in the same new communicator.</li>
|
||
<li><code>key</code>: The processes will be ranked in the new communicator according to key, breaking ties with the rank in the old communicator.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2b128840">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Create two groups of processes, one for processes with rank id even, and another for the rest. Note that the rank id will be function of the given communicator.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b18cb74d">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">color</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mod</span><span class="p">(</span><span class="n">rank</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="n">newcomm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_split</span><span class="p">(</span><span class="n">comm</span><span class="p">,</span><span class="w"> </span><span class="n">color</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">newrank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">newcomm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"Hello, I am rank </span><span class="si">$rank</span><span class="s"> in world and rank </span><span class="si">$newrank</span><span class="s"> in group </span><span class="si">$color</span><span class="s">."</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 4 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=b22e4bf4">
|
||
<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">
|
||
<h3 id="Example">Example<a class="anchor-link" href="#Example">¶</a></h3><p>Processes with odd rank id generate a random integer. Sum all these integers and send them to the first process with odd rank id. Note that we are using a new communicator to perform the reduction.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=4c0e504b">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">quote</span>
|
||
<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">MPI</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Init</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">comm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
|
||
<span class="w"> </span><span class="n">rank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">comm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">color</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mod</span><span class="p">(</span><span class="n">rank</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="n">newcomm</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_split</span><span class="p">(</span><span class="n">comm</span><span class="p">,</span><span class="w"> </span><span class="n">color</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="c"># Only odd rank ids will execute this</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">color</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">newrank</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Comm_rank</span><span class="p">(</span><span class="n">newcomm</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">newroot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="n">sndbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">rand</span><span class="p">(</span><span class="mi">1</span><span class="o">:</span><span class="mi">4</span><span class="p">)]</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">newrank</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">newroot</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="n">rcvbuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nothing</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">, newrank </span><span class="si">$newrank</span><span class="s">] I am contributing with </span><span class="si">$sndbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">MPI</span><span class="o">.</span><span class="n">Reduce!</span><span class="p">(</span><span class="n">sndbuf</span><span class="p">,</span><span class="w"> </span><span class="n">rcvbuf</span><span class="p">,</span><span class="w"> </span><span class="o">+</span><span class="p">,</span><span class="w"> </span><span class="n">newcomm</span><span class="p">;</span><span class="n">root</span><span class="o">=</span><span class="n">newroot</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"[rank </span><span class="si">$rank</span><span class="s">, newrank </span><span class="si">$newrank</span><span class="s">] The sum is </span><span class="si">$rcvbuf</span><span class="s">"</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="k">end</span>
|
||
<span class="n">run</span><span class="p">(</span><span class="sb">`</span><span class="si">$</span><span class="p">(</span><span class="n">mpiexec</span><span class="p">())</span><span class="sb"> -np 4 julia --project=. -e </span><span class="si">$code</span><span class="sb">`</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d465ebce">
|
||
<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>Try to run the code without splitting the communicator. I.e., replace <code>newcomm = MPI.Comm_split(comm, color, key)</code> with <code>newcomm = comm</code>. Try to figure out what will happen before executing the code.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d334aea1">
|
||
<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="Conclusion">Conclusion<a class="anchor-link" href="#Conclusion">¶</a></h2><ul>
|
||
<li>MPI also defines operations involving several processes called, collective operations.</li>
|
||
<li>These are provided both for convenience and performance.</li>
|
||
<li>The semantics are equivalent to "standard mode" <code>MPI_Send</code>, but there are also non-blocking versions (not discussed in this notebook).</li>
|
||
<li>Discovering message sizes is often done by communicating the message size, instead of using <code>MPI_Probe</code>.</li>
|
||
<li>Finally, we discussed MPI communicators. They provide two key features: isolated communication context and creating groups of processes. They are useful, for instance, to combine different libraries using MPI in the same application, and to use collective operations in a subset of the processes.</li>
|
||
</ul>
|
||
<p>After learning this material and the previous MPI notebook, you have a solid basis to start implementing sophisticated parallel algorithms using MPI.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c6b23485">
|
||
<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="Exercises">Exercises<a class="anchor-link" href="#Exercises">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=90dc58bb">
|
||
<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">
|
||
<h3 id="Exercise-1">Exercise 1<a class="anchor-link" href="#Exercise-1">¶</a></h3><p>In the parallel implementation of the Jacobi method in previous notebook, we assumed that the method runs for a given number of iterations. However, other stopping criteria are used in practice. The following sequential code implements a version of Jacobi in which the method iterates until the norm of the difference between u and u_new is below a tolerance.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=0fcb0cd6">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="k">function</span><span class="w"> </span><span class="n">jacobi_with_tol</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">tol</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">copy</span><span class="p">(</span><span class="n">u</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">increment</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">similar</span><span class="p">(</span><span class="n">u</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="nb">true</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">2</span><span class="o">:</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">increment</span><span class="w"> </span><span class="o">.=</span><span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">.-</span><span class="w"> </span><span class="n">u</span>
|
||
<span class="w"> </span><span class="n">norm_increment</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.0</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">n</span>
|
||
<span class="w"> </span><span class="n">increment_i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">increment</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="n">norm_increment</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">increment_i</span><span class="o">*</span><span class="n">increment_i</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">norm_increment</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqrt</span><span class="p">(</span><span class="n">norm_increment</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">norm_increment</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">tol</span><span class="o">*</span><span class="n">n</span>
|
||
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">u_new</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">,</span><span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u_new</span><span class="p">,</span><span class="w"> </span><span class="n">u</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">u</span>
|
||
<span class="k">end</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=dbf0c3b8">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span>
|
||
<span class="n">tol</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1e-12</span>
|
||
<span class="n">jacobi_with_tol</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">tol</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=aab1455e">
|
||
<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>Implement a parallel version of this algorithm. Recommended: start with the parallel implementation given in the previous notebook (see function <code>jacobi_mpi</code>) and introduce the new stopping criteria. Think carefully about which MPI operations you need to use in this case.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=5e8f6e6a">
|
||
<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="License">License<a class="anchor-link" href="#License">¶</a></h1><p>This notebook is part of the course <a href="https://www.francescverdugo.com/XM_40017">Programming Large Scale Parallel Systems</a> at Vrije Universiteit Amsterdam and may be used under a <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a> license.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
</html>
|