{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.7.10","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Imports","metadata":{"id":"05npebh9y3qh"}},{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n for filename in filenames:\n print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:16:48.950656Z","iopub.execute_input":"2021-08-07T17:16:48.951059Z","iopub.status.idle":"2021-08-07T17:16:48.973861Z","shell.execute_reply.started":"2021-08-07T17:16:48.950940Z","shell.execute_reply":"2021-08-07T17:16:48.973088Z"},"trusted":true},"execution_count":1,"outputs":[{"name":"stdout","text":"/kaggle/input/malaysia-14-stations/SANDAKAN_.csv\n/kaggle/input/malaysia-14-stations/KOTA_KINABALU_INTERNATIONAL_.csv\n/kaggle/input/malaysia-14-stations/SULTAN_ABDUL_AZIZ_SHAH_INTERNATIONAL_.csv\n/kaggle/input/malaysia-14-stations/TAWAU_.csv\n/kaggle/input/malaysia-14-stations/MALACCA_.csv\n/kaggle/input/malaysia-14-stations/PENANG_INTERNATIONAL_.csv\n/kaggle/input/malaysia-14-stations/KUALA_LUMPUR_INTERNATIONAL_.csv\n/kaggle/input/malaysia-14-stations/KUANTAN_.csv\n/kaggle/input/malaysia-14-stations/SIBU_.csv\n/kaggle/input/malaysia-14-stations/SITIAWAN_.csv\n/kaggle/input/malaysia-14-stations/SULTAN_ISMAIL_PETRA_.csv\n/kaggle/input/malaysia-14-stations/LABUAN_.csv\n/kaggle/input/malaysia-14-stations/MIRI_.csv\n/kaggle/input/malaysia-14-stations/KUCHING_.csv\n","output_type":"stream"}]},{"cell_type":"code","source":"!pip install isoweek\n!pip install chart_studio","metadata":{"id":"RYbUqAty3Gcc","outputId":"d779b374-3502-45e5-8a7e-95de79d747ba","execution":{"iopub.status.busy":"2021-08-07T17:16:48.975678Z","iopub.execute_input":"2021-08-07T17:16:48.976034Z","iopub.status.idle":"2021-08-07T17:17:02.308349Z","shell.execute_reply.started":"2021-08-07T17:16:48.975997Z","shell.execute_reply":"2021-08-07T17:17:02.307413Z"},"trusted":true},"execution_count":2,"outputs":[{"name":"stdout","text":"Requirement already satisfied: isoweek in /opt/conda/lib/python3.7/site-packages (1.3.3)\n\u001b[33mWARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv\u001b[0m\nCollecting chart_studio\n Downloading chart_studio-1.1.0-py3-none-any.whl (64 kB)\n\u001b[K |████████████████████████████████| 64 kB 1.8 MB/s eta 0:00:011\n\u001b[?25hRequirement already satisfied: retrying>=1.3.3 in /opt/conda/lib/python3.7/site-packages (from chart_studio) (1.3.3)\nRequirement already satisfied: six in /opt/conda/lib/python3.7/site-packages (from chart_studio) (1.15.0)\nRequirement already satisfied: plotly in /opt/conda/lib/python3.7/site-packages (from chart_studio) (5.1.0)\nRequirement already satisfied: requests in /opt/conda/lib/python3.7/site-packages (from chart_studio) (2.25.1)\nRequirement already satisfied: tenacity>=6.2.0 in /opt/conda/lib/python3.7/site-packages (from plotly->chart_studio) (7.0.0)\nRequirement already satisfied: chardet<5,>=3.0.2 in /opt/conda/lib/python3.7/site-packages (from requests->chart_studio) (4.0.0)\nRequirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.7/site-packages (from requests->chart_studio) (1.26.5)\nRequirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.7/site-packages (from requests->chart_studio) (2021.5.30)\nRequirement already satisfied: idna<3,>=2.5 in /opt/conda/lib/python3.7/site-packages (from requests->chart_studio) (2.10)\nInstalling collected packages: chart-studio\nSuccessfully installed chart-studio-1.1.0\n\u001b[33mWARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv\u001b[0m\n","output_type":"stream"}]},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom urllib.request import urlopen\nimport json\nimport pandas as pd\nimport plotly.express as px\nimport chart_studio\nimport chart_studio.plotly as py\nimport plotly.figure_factory as ff\nimport warnings\nwarnings.filterwarnings('ignore')\nfrom IPython.display import HTML\nimport os\nimport isoweek\nimport holoviews as hv\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom holoviews import opts\nhv.extension('bokeh', 'matplotlib')","metadata":{"id":"Rd4Rg2cPz3GJ","outputId":"5e8c92df-eb7b-4d4c-d166-e99c04c0bb27","execution":{"iopub.status.busy":"2021-08-07T17:17:02.312004Z","iopub.execute_input":"2021-08-07T17:17:02.312262Z","iopub.status.idle":"2021-08-07T17:17:08.927264Z","shell.execute_reply.started":"2021-08-07T17:17:02.312235Z","shell.execute_reply":"2021-08-07T17:17:08.926492Z"},"trusted":true},"execution_count":3,"outputs":[{"output_type":"display_data","data":{"application/javascript":"\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'paths': {'tabulator': 'https://unpkg.com/tabulator-tables@4.9.3/dist/js/tabulator'}});\n require([\"tabulator\"], function(Tabulator,) {\n window.Tabulator = Tabulator;\n })\n }\n if (((window['tabulator'] !== undefined) && (!(window['tabulator'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://unpkg.com/tabulator-tables@4.9.3/dist/js/tabulator.js', 'https://unpkg.com/moment@2.27.0/moment.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) >= 0) { on_load(); continue; }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) >= 0) { on_load(); continue; }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://unpkg.com/tabulator-tables@4.9.3/dist/js/tabulator.js\", \"https://unpkg.com/moment@2.27.0/moment.js\"];\n var js_modules = [];\n var css_urls = [\"https://unpkg.com/tabulator-tables@4.9.3/dist/css/tabulator_simple.min.css\"];\n var inline_js = [\n function(Bokeh) {\n inject_raw_css(\".bk.pn-loading:before {\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n content: '';\\n z-index: 1000;\\n background-color: rgb(255,255,255,0.50);\\n border-color: lightgray;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: auto 50%;\\n border-width: 1px;\\n cursor: progress;\\n}\\n.bk.pn-loading.arcs:hover:before {\\n cursor: progress;\\n}\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\".bk.alert {\\n padding: 0.75rem 1.25rem;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n /* Don't set margin because that will not render correctly! */\\n /* margin-bottom: 1rem; */\\n margin-top: 15px;\\n margin-bottom: 15px;\\n}\\n.bk.alert a {\\n color: rgb(11, 46, 19); /* #002752; */\\n font-weight: 700;\\n text-decoration: rgb(11, 46, 19);\\n text-decoration-color: rgb(11, 46, 19);\\n text-decoration-line: none;\\n text-decoration-style: solid;\\n text-decoration-thickness: auto;\\n }\\n.bk.alert a:hover {\\n color: rgb(11, 46, 19);\\n font-weight: 700;\\n text-decoration: underline;\\n}\\n\\n.bk.alert-primary {\\n color: #004085;\\n background-color: #cce5ff;\\n border-color: #b8daff;\\n}\\n.bk.alert-primary hr {\\n border-top-color: #9fcdff;\\n}\\n\\n.bk.alert-secondary {\\n color: #383d41;\\n background-color: #e2e3e5;\\n border-color: #d6d8db;\\n }\\n.bk.alert-secondary hr {\\n border-top-color: #c8cbcf;\\n}\\n\\n.bk.alert-success {\\n color: #155724;\\n background-color: #d4edda;\\n border-color: #c3e6cb;\\n }\\n\\n.bk.alert-success hr {\\n border-top-color: #b1dfbb;\\n}\\n\\n.bk.alert-info {\\n color: #0c5460;\\n background-color: #d1ecf1;\\n border-color: #bee5eb;\\n }\\n.bk.alert-info hr {\\n border-top-color: #abdde5;\\n}\\n\\n.bk.alert-warning {\\n color: #856404;\\n background-color: #fff3cd;\\n border-color: #ffeeba;\\n }\\n\\n.bk.alert-warning hr {\\n border-top-color: #ffe8a1;\\n}\\n\\n.bk.alert-danger {\\n color: #721c24;\\n background-color: #f8d7da;\\n border-color: #f5c6cb;\\n}\\n.bk.alert-danger hr {\\n border-top-color: #f1b0b7;\\n}\\n\\n.bk.alert-light {\\n color: #818182;\\n background-color: #fefefe;\\n border-color: #fdfdfe;\\n }\\n.bk.alert-light hr {\\n border-top-color: #ececf6;\\n}\\n\\n.bk.alert-dark {\\n color: #1b1e21;\\n background-color: #d6d8d9;\\n border-color: #c6c8ca;\\n }\\n.bk.alert-dark hr {\\n border-top-color: #b9bbbe;\\n}\\n\\n\\n/* adjf\\u00e6l */\\n\\n.bk.alert-primary a {\\n color: #002752;\\n}\\n\\n.bk.alert-secondary a {\\n color: #202326;\\n}\\n\\n\\n.bk.alert-success a {\\n color: #0b2e13;\\n}\\n\\n\\n.bk.alert-info a {\\n color: #062c33;\\n}\\n\\n\\n.bk.alert-warning a {\\n color: #533f03;\\n}\\n\\n\\n.bk.alert-danger a {\\n color: #491217;\\n}\\n\\n.bk.alert-light a {\\n color: #686868;\\n}\\n\\n.bk.alert-dark a {\\n color: #040505;\\n}\");\n },\n function(Bokeh) {\n inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\".bk.panel-widget-box {\\n min-height: 20px;\\n background-color: #f5f5f5;\\n border: 1px solid #e3e3e3;\\n border-radius: 4px;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n overflow-x: hidden;\\n overflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n appearance: none;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n border: none;\\n height: 20px;\\n background-color: whiteSmoke;\\n border-radius: 3px;\\n box-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n color: royalblue;\\n position: relative;\\n margin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n background-color: whiteSmoke;\\n border-radius: 3px;\\n box-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n position: relative;\\n background-size: 35px 20px, 100% 100%, 100% 100%;\\n border-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n background-size: 35px 20px, 100% 100%, 100% 100%;\\n border-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n border-radius:3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n border-radius: 3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n content:\\\" \\\";\\n position:absolute;\\n height: 20px;\\n top:0;\\n left:0;\\n right:0;\\n bottom:0;\\n border-radius: 3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\\n.bk-root .bk.loader {\\n overflow: hidden;\\n}\\n\\n.bk.loader::after {\\n content: \\\"\\\";\\n border-radius: 50%;\\n -webkit-mask-image: radial-gradient(transparent 50%, rgba(0, 0, 0, 1) 54%);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n position: absolute;\\n}\\n\\n.bk-root .bk.loader.dark::after {\\n background: #0f0f0f;\\n}\\n\\n.bk-root .bk.loader.light::after {\\n background: #f0f0f0;\\n}\\n\\n.bk-root .bk.loader.spin::after {\\n animation: spin 2s linear infinite;\\n}\\n\\n.bk-root div.bk.loader.spin.primary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #dc3545 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.warning-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.dark-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #343a40 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.primary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #dc3545 50%)\\n}\\n\\n.bk-root div.bk.loader.spin.warning-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.dark-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #343a40 50%);\\n}\\n\\n/* Safari */\\n@-webkit-keyframes spin {\\n 0% { -webkit-transform: rotate(0deg); }\\n 100% { -webkit-transform: rotate(360deg); }\\n}\\n\\n@keyframes spin {\\n 0% { transform: rotate(0deg); }\\n 100% { transform: rotate(360deg); }\\n}\\n\\n.dot div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n background-color: #fff;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled.primary div {\\n background-color: #007bff;\\n}\\n\\n.dot-filled.secondary div {\\n background-color: #6c757d;\\n}\\n\\n.dot-filled.success div {\\n background-color: #28a745;\\n}\\n\\n.dot-filled.danger div {\\n background-color: #dc3545;\\n}\\n\\n.dot-filled.warning div {\\n background-color: #ffc107;\\n}\\n\\n.dot-filled.info div {\\n background-color: #17a2b8;\\n}\\n\\n.dot-filled.dark div {\\n background-color: #343a40;\\n}\\n\\n.dot-filled.light div {\\n background-color: #f8f9fa;\\n}\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\".bk.card {\\n border: 1px solid rgba(0,0,0,.125);\\n border-radius: 0.25rem;\\n}\\n.bk.accordion {\\n border: 1px solid rgba(0,0,0,.125);\\n}\\n.bk.card-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0.25rem;\\n display: flex;\\n justify-content: space-between;\\n padding: 0 1.25rem 0 0;\\n width: 100%;\\n}\\n.bk.accordion-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0;\\n display: flex;\\n justify-content: space-between;\\n padding: 0 1.25rem 0 0;\\n width: 100%;\\n}\\np.bk.card-button {\\n background-color: transparent;\\n font-size: 1.25rem;\\n font-weight: 700;\\n margin: 0;\\n margin-left: -15px;\\n}\\n.bk.card-header-row {\\n position: relative !important;\\n}\\n.bk.card-title {\\n align-items: center;\\n display: flex !important;\\n font-size: 1.4em;\\n font-weight: bold;\\n padding: 0.25em;\\n position: relative !important;\\n}\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n },\n function(Bokeh) {\n inject_raw_css(\"\\n .bk.pn-loading.arcs:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0ibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiBub25lOyBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvOyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4gIDxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjMyIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZT0iI2MzYzNjMyIgc3Ryb2tlLWRhc2hhcnJheT0iNTAuMjY1NDgyNDU3NDM2NjkgNTAuMjY1NDgyNDU3NDM2NjkiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+ICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCI+PC9hbmltYXRlVHJhbnNmb3JtPiAgPC9jaXJjbGU+PC9zdmc+\\\")\\n }\\n \");\n },\n function(Bokeh) {\n /* BEGIN bokeh.min.js */\n /*!\n * Copyright (c) 2012 - 2021, Anaconda, Inc., and Bokeh Contributors\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n * \n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * Neither the name of Anaconda nor the names of any contributors\n * may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\n (function(root, factory) {\n const bokeh = factory();\n bokeh.__bokeh__ = true;\n if (typeof root.Bokeh === \"undefined\" || typeof root.Bokeh.__bokeh__ === \"undefined\") {\n root.Bokeh = bokeh;\n }\n const Bokeh = root.Bokeh;\n Bokeh[bokeh.version] = bokeh;\n })(this, function() {\n var define;\n var parent_require = typeof require === \"function\" && require\n return (function(modules, entry, aliases, externals) {\n if (aliases === undefined) aliases = {};\n if (externals === undefined) externals = {};\n\n var cache = {};\n\n var normalize = function(name) {\n if (typeof name === \"number\")\n return name;\n\n if (name === \"bokehjs\")\n return entry;\n\n if (!externals[name]) {\n var prefix = \"@bokehjs/\"\n if (name.slice(0, prefix.length) === prefix)\n name = name.slice(prefix.length)\n }\n\n var alias = aliases[name]\n if (alias != null)\n return alias;\n\n var trailing = name.length > 0 && name[name.lenght-1] === \"/\";\n var index = aliases[name + (trailing ? \"\" : \"/\") + \"index\"];\n if (index != null)\n return index;\n\n return name;\n }\n\n var require = function(name) {\n var mod = cache[name];\n if (!mod) {\n var id = normalize(name);\n\n mod = cache[id];\n if (!mod) {\n if (!modules[id]) {\n if (externals[id] === false || (externals[id] == true && parent_require)) {\n try {\n mod = {exports: externals[id] ? parent_require(id) : {}};\n cache[id] = cache[name] = mod;\n return mod.exports;\n } catch (e) {}\n }\n\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n mod = {exports: {}};\n cache[id] = cache[name] = mod;\n\n function __esModule() {\n Object.defineProperty(mod.exports, \"__esModule\", {value: true});\n }\n\n function __esExport(name, value) {\n Object.defineProperty(mod.exports, name, {\n enumerable: true, get: function () { return value; }\n });\n }\n\n modules[id].call(mod.exports, require, mod, mod.exports, __esModule, __esExport);\n } else {\n cache[name] = mod;\n }\n }\n\n return mod.exports;\n }\n require.resolve = function(name) {\n return \"\"\n }\n\n var main = require(entry);\n main.require = require;\n\n if (typeof Proxy !== \"undefined\") {\n // allow Bokeh.loader[\"@bokehjs/module/name\"] syntax\n main.loader = new Proxy({}, {\n get: function(_obj, module) {\n return require(module);\n }\n });\n }\n\n main.register_plugin = function(plugin_modules, plugin_entry, plugin_aliases, plugin_externals) {\n if (plugin_aliases === undefined) plugin_aliases = {};\n if (plugin_externals === undefined) plugin_externals = {};\n\n for (var name in plugin_modules) {\n modules[name] = plugin_modules[name];\n }\n\n for (var name in plugin_aliases) {\n aliases[name] = plugin_aliases[name];\n }\n\n for (var name in plugin_externals) {\n externals[name] = plugin_externals[name];\n }\n\n var plugin = require(plugin_entry);\n\n for (var name in plugin) {\n main[name] = plugin[name];\n }\n\n return plugin;\n }\n\n return main;\n })\n ([\n function _(t,_,n,o,r){o();t(1).__exportStar(t(2),n)},\n function _(t,e,n,r,o){r();var a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)};n.__extends=function(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)};function i(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function c(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,a=n.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}function u(t){return this instanceof u?(this.v=t,this):new u(t)}n.__assign=function(){return n.__assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0;c--)(o=t[c])&&(i=(a<3?o(i):a>3?o(e,n,i):o(e,n))||i);return a>3&&i&&Object.defineProperty(e,n,i),i},n.__param=function(t,e){return function(n,r){e(n,r,t)}},n.__metadata=function(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},n.__awaiter=function(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function c(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,c)}u((r=r.apply(t,e||[])).next())}))},n.__generator=function(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(a){return function(c){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]1||c(t,e)}))})}function c(t,e){try{(n=o[t](e)).value instanceof u?Promise.resolve(n.value.v).then(f,l):s(a[0][2],n)}catch(t){s(a[0][3],t)}var n}function f(t){c(\"next\",t)}function l(t){c(\"throw\",t)}function s(t,e){t(e),a.shift(),a.length&&c(a[0][0],a[0][1])}},n.__asyncDelegator=function(t){var e,n;return e={},r(\"next\"),r(\"throw\",(function(t){throw t})),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:u(t[r](e)),done:\"return\"===r}:o?o(e):e}:o}},n.__asyncValues=function(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=i(t),e={},r(\"next\"),r(\"throw\"),r(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,o){(function(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)})(r,o,(e=t[n](e)).done,e.value)}))}}},n.__makeTemplateObject=function(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t};var f=Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e};n.__importStar=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)\"default\"!==r&&Object.prototype.hasOwnProperty.call(t,r)&&n.__createBinding(e,t,r);return f(e,t),e},n.__importDefault=function(t){return t&&t.__esModule?t:{default:t}},n.__classPrivateFieldGet=function(t,e){if(!e.has(t))throw new TypeError(\"attempted to get private field on non-instance\");return e.get(t)},n.__classPrivateFieldSet=function(t,e,n){if(!e.has(t))throw new TypeError(\"attempted to set private field on non-instance\");return e.set(t,n),n}},\n function _(e,t,o,s,l){s();const n=e(1);l(\"version\",e(3).version),l(\"index\",e(4).index),o.embed=n.__importStar(e(4)),o.protocol=n.__importStar(e(404)),o._testing=n.__importStar(e(405));var r=e(19);l(\"logger\",r.logger),l(\"set_log_level\",r.set_log_level),l(\"settings\",e(28).settings),l(\"Models\",e(7).Models),l(\"documents\",e(5).documents),l(\"safely\",e(406).safely)},\n function _(n,i,o,c,e){c(),o.version=\"2.3.2\"},\n function _(e,o,t,n,s){n();const d=e(5),r=e(19),_=e(34),c=e(13),i=e(8),a=e(16),u=e(395),l=e(397),m=e(396);var f=e(395);s(\"add_document_standalone\",f.add_document_standalone),s(\"index\",f.index),s(\"add_document_from_session\",e(397).add_document_from_session);var g=e(402);async function w(e,o,t,n){i.isString(e)&&(e=JSON.parse(_.unescape(e)));const s={};for(const[o,t]of c.entries(e))s[o]=d.Document.from_json(t);const a=[];for(const e of o){const o=m._resolve_element(e),d=m._resolve_root_elements(e);if(null!=e.docid)a.push(await u.add_document_standalone(s[e.docid],o,d,e.use_for_title));else{if(null==e.token)throw new Error(\"Error rendering Bokeh items: either 'docid' or 'token' was expected.\");{const s=l._get_ws_url(t,n);r.logger.debug(`embed: computed ws url: ${s}`);try{a.push(await l.add_document_from_session(s,e.token,o,d,e.use_for_title)),console.log(\"Bokeh items were rendered successfully\")}catch(e){console.log(\"Error rendering Bokeh items:\",e)}}}}return a}s(\"embed_items_notebook\",g.embed_items_notebook),s(\"kernels\",g.kernels),s(\"BOKEH_ROOT\",e(396).BOKEH_ROOT),t.embed_item=async function(e,o){const t={},n=_.uuid4();t[n]=e.doc,null==o&&(o=e.target_id);const s=document.getElementById(o);null!=s&&s.classList.add(m.BOKEH_ROOT);const d={roots:{[e.root_id]:o},root_ids:[e.root_id],docid:n};await a.defer();const[r]=await w(t,[d]);return r},t.embed_items=async function(e,o,t,n){return await a.defer(),w(e,o,t,n)}},\n function _(t,_,o,r,n){r();const a=t(1);a.__exportStar(t(6),o),a.__exportStar(t(35),o)},\n function _(e,t,s,o,n){o();const r=e(1),i=e(7),l=e(3),_=e(19),a=e(264),c=e(14),d=e(30),h=e(15),f=e(17),u=e(31),m=e(9),g=e(13),v=r.__importStar(e(132)),w=e(26),p=e(8),b=e(319),y=e(130),k=e(53),M=e(394),j=e(35);class S{constructor(e){this.document=e,this.session=null,this.subscribed_models=new Set}send_event(e){const t=new j.MessageSentEvent(this.document,\"bokeh_event\",e.to_json());this.document._trigger_on_change(t)}trigger(e){for(const t of this.subscribed_models)null!=e.origin&&e.origin!=t||t._process_event(e)}}s.EventManager=S,S.__name__=\"EventManager\",s.documents=[],s.DEFAULT_TITLE=\"Bokeh Application\";class E{constructor(e){var t;s.documents.push(this),this._init_timestamp=Date.now(),this._resolver=null!==(t=null==e?void 0:e.resolver)&&void 0!==t?t:new i.ModelResolver,this._title=s.DEFAULT_TITLE,this._roots=[],this._all_models=new Map,this._all_models_freeze_count=0,this._callbacks=new Map,this._message_callbacks=new Map,this.event_manager=new S(this),this.idle=new h.Signal0(this,\"idle\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}get layoutables(){return this._roots.filter((e=>e instanceof b.LayoutDOM))}get is_idle(){for(const e of this.layoutables)if(!this._idle_roots.has(e))return!1;return!0}notify_idle(e){this._idle_roots.set(e,!0),this.is_idle&&(_.logger.info(`document idle at ${Date.now()-this._init_timestamp} ms`),this.event_manager.send_event(new a.DocumentReady),this.idle.emit())}clear(){this._push_all_models_freeze();try{for(;this._roots.length>0;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}}interactive_start(e){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new a.LODStart)),this._interactive_timestamp=Date.now()}interactive_stop(){null!=this._interactive_plot&&this._interactive_plot.trigger_event(new a.LODEnd),this._interactive_plot=null,this._interactive_timestamp=null}interactive_duration(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp}destructively_move(e){if(e===this)throw new Error(\"Attempted to overwrite a document with itself\");e.clear();const t=m.copy(this._roots);this.clear();for(const e of t)if(null!=e.document)throw new Error(`Somehow we didn't detach ${e}`);if(0!=this._all_models.size)throw new Error(`this._all_models still had stuff in it: ${this._all_models}`);for(const s of t)e.add_root(s);e.set_title(this._title)}_push_all_models_freeze(){this._all_models_freeze_count+=1}_pop_all_models_freeze(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()}_invalidate_all_models(){_.logger.debug(\"invalidating document models\"),0===this._all_models_freeze_count&&this._recompute_all_models()}_recompute_all_models(){let e=new Set;for(const t of this._roots)e=v.union(e,t.references());const t=new Set(this._all_models.values()),s=v.difference(t,e),o=v.difference(e,t),n=new Map;for(const t of e)n.set(t.id,t);for(const e of s)e.detach_document();for(const e of o)e.attach_document(this);this._all_models=n}roots(){return this._roots}add_root(e,t){if(_.logger.debug(`Adding root: ${e}`),!m.includes(this._roots,e)){this._push_all_models_freeze();try{this._roots.push(e)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new j.RootAddedEvent(this,e,t))}}remove_root(e,t){const s=this._roots.indexOf(e);if(!(s<0)){this._push_all_models_freeze();try{this._roots.splice(s,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new j.RootRemovedEvent(this,e,t))}}title(){return this._title}set_title(e,t){e!==this._title&&(this._title=e,this._trigger_on_change(new j.TitleChangedEvent(this,e,t)))}get_model_by_id(e){var t;return null!==(t=this._all_models.get(e))&&void 0!==t?t:null}get_model_by_name(e){const t=[];for(const s of this._all_models.values())s instanceof k.Model&&s.name==e&&t.push(s);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(`Multiple models are named '${e}'`)}}on_message(e,t){const s=this._message_callbacks.get(e);null==s?this._message_callbacks.set(e,new Set([t])):s.add(t)}remove_on_message(e,t){var s;null===(s=this._message_callbacks.get(e))||void 0===s||s.delete(t)}_trigger_on_message(e,t){const s=this._message_callbacks.get(e);if(null!=s)for(const e of s)e(t)}on_change(e,t=!1){this._callbacks.has(e)||this._callbacks.set(e,t)}remove_on_change(e){this._callbacks.delete(e)}_trigger_on_change(e){for(const[t,s]of this._callbacks)if(!s&&e instanceof j.DocumentEventBatch)for(const s of e.events)t(s);else t(e)}_notify_change(e,t,s,o,n){this._trigger_on_change(new j.ModelChangedEvent(this,e,t,s,o,null==n?void 0:n.setter_id,null==n?void 0:n.hint))}static _instantiate_object(e,t,s,o){const n=Object.assign(Object.assign({},s),{id:e,__deferred__:!0});return new(o.get(t))(n)}static _instantiate_references_json(e,t,s){var o;const n=new Map;for(const r of e){const e=r.id,i=r.type,l=null!==(o=r.attributes)&&void 0!==o?o:{};let _=t.get(e);null==_&&(_=E._instantiate_object(e,i,l,s),null!=r.subtype&&_.set_subtype(r.subtype)),n.set(_.id,_)}return n}static _resolve_refs(e,t,s,o){function n(e){var r;if(f.is_ref(e)){const o=null!==(r=t.get(e.id))&&void 0!==r?r:s.get(e.id);if(null!=o)return o;throw new Error(`reference ${JSON.stringify(e)} isn't known (not in Document?)`)}return u.is_NDArray_ref(e)?u.decode_NDArray(e,o):p.isArray(e)?function(e){const t=[];for(const s of e)t.push(n(s));return t}(e):p.isPlainObject(e)?function(e){const t={};for(const[s,o]of g.entries(e))t[s]=n(o);return t}(e):e}return n(e)}static _initialize_references_json(e,t,s,o){const n=new Map;for(const{id:r,attributes:i}of e){const e=!t.has(r),l=e?s.get(r):t.get(r),_=E._resolve_refs(i,t,s,o);l.setv(_,{silent:!0}),n.set(r,{instance:l,is_new:e})}const r=[],i=new Set;function l(e){if(e instanceof c.HasProps){if(n.has(e.id)&&!i.has(e.id)){i.add(e.id);const{instance:t,is_new:s}=n.get(e.id),{attributes:o}=t;for(const e of g.values(o))l(e);s&&(t.finalize(),r.push(t))}}else if(p.isArray(e))for(const t of e)l(t);else if(p.isPlainObject(e))for(const t of g.values(e))l(t)}for(const e of n.values())l(e.instance);for(const e of r)e.connect_signals()}static _event_for_attribute_change(e,t,s,o,n){if(o.get_model_by_id(e.id).property(t).syncable){const r={kind:\"ModelChanged\",model:{id:e.id},attr:t,new:s};return c.HasProps._json_record_references(o,s,n,{recursive:!0}),r}return null}static _events_to_sync_objects(e,t,s,o){const n=Object.keys(e.attributes),r=Object.keys(t.attributes),i=m.difference(n,r),l=m.difference(r,n),a=m.intersection(n,r),c=[];for(const e of i)_.logger.warn(`Server sent key ${e} but we don't seem to have it in our JSON`);for(const n of l){const r=t.attributes[n];c.push(E._event_for_attribute_change(e,n,r,s,o))}for(const n of a){const r=e.attributes[n],i=t.attributes[n];null==r&&null==i||(null==r||null==i?c.push(E._event_for_attribute_change(e,n,i,s,o)):w.is_equal(r,i)||c.push(E._event_for_attribute_change(e,n,i,s,o)))}return c.filter((e=>null!=e))}static _compute_patch_since_json(e,t){const s=t.to_json(!1);function o(e){const t=new Map;for(const s of e.roots.references)t.set(s.id,s);return t}const n=o(e),r=new Map,i=[];for(const t of e.roots.root_ids)r.set(t,n.get(t)),i.push(t);const l=o(s),_=new Map,a=[];for(const e of s.roots.root_ids)_.set(e,l.get(e)),a.push(e);if(i.sort(),a.sort(),m.difference(i,a).length>0||m.difference(a,i).length>0)throw new Error(\"Not implemented: computing add/remove of document roots\");const c=new Set;let h=[];for(const e of t._all_models.keys())if(n.has(e)){const s=E._events_to_sync_objects(n.get(e),l.get(e),t,c);h=h.concat(s)}const f=new d.Serializer({include_defaults:!1});return f.to_serializable([...c]),{references:[...f.definitions],events:h}}to_json_string(e=!0){return JSON.stringify(this.to_json(e))}to_json(e=!0){const t=new d.Serializer({include_defaults:e}),s=t.to_serializable(this._roots);return{version:l.version,title:this._title,roots:{root_ids:s.map((e=>e.id)),references:[...t.definitions]}}}static from_json_string(e){const t=JSON.parse(e);return E.from_json(t)}static from_json(e){_.logger.debug(\"Creating Document from JSON\");const t=e.version,s=-1!==t.indexOf(\"+\")||-1!==t.indexOf(\"-\"),o=`Library versions: JS (${l.version}) / Python (${t})`;s||l.version.replace(/-(dev|rc)\\./,\"$1\")==t?_.logger.debug(o):(_.logger.warn(\"JS/Python version mismatch\"),_.logger.warn(o));const n=new i.ModelResolver;null!=e.defs&&M.resolve_defs(e.defs,n);const r=e.roots,a=r.root_ids,c=r.references,d=E._instantiate_references_json(c,new Map,n);E._initialize_references_json(c,new Map,d,new Map);const h=new E({resolver:n});for(const e of a){const t=d.get(e);null!=t&&h.add_root(t)}return h.set_title(e.title),h}replace_with_json(e){E.from_json(e).destructively_move(this)}create_json_patch_string(e){return JSON.stringify(this.create_json_patch(e))}create_json_patch(e){for(const t of e)if(t.document!=this)throw new Error(\"Cannot create a patch using events from a different document\");const t=new d.Serializer,s=t.to_serializable(e);for(const e of this._all_models.values())t.remove_def(e);return{events:s,references:[...t.definitions]}}apply_json_patch(e,t=new Map,s){const o=e.references,n=e.events,r=E._instantiate_references_json(o,this._all_models,this._resolver);t instanceof Map||(t=new Map(t));for(const e of n)switch(e.kind){case\"RootAdded\":case\"RootRemoved\":case\"ModelChanged\":{const t=e.model.id,s=this._all_models.get(t);if(null!=s)r.set(t,s);else if(!r.has(t))throw _.logger.warn(`Got an event for unknown model ${e.model}\"`),new Error(\"event model wasn't known\");break}}const i=new Map(this._all_models),l=new Map;for(const[e,t]of r)i.has(e)||l.set(e,t);E._initialize_references_json(o,i,l,t);for(const e of n)switch(e.kind){case\"MessageSent\":{const{msg_type:s,msg_data:o}=e;let n;if(void 0===o){if(1!=t.size)throw new Error(\"expected exactly one buffer\");{const[[,e]]=t;n=e}}else n=E._resolve_refs(o,i,l,t);this._trigger_on_message(s,n);break}case\"ModelChanged\":{const o=e.model.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot apply patch to ${o} which is not in the document`);const r=e.attr,_=E._resolve_refs(e.new,i,l,t);n.setv({[r]:_},{setter_id:s});break}case\"ColumnDataChanged\":{const o=e.column_source.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot stream to ${o} which is not in the document`);const r=E._resolve_refs(e.new,new Map,new Map,t);if(null!=e.cols)for(const e in n.data)e in r||(r[e]=n.data[e]);n.setv({data:r},{setter_id:s,check_eq:!1});break}case\"ColumnsStreamed\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot stream to ${t} which is not in the document`);if(!(o instanceof y.ColumnDataSource))throw new Error(\"Cannot stream to non-ColumnDataSource\");const n=e.data,r=e.rollover;o.stream(n,r,s);break}case\"ColumnsPatched\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot patch ${t} which is not in the document`);if(!(o instanceof y.ColumnDataSource))throw new Error(\"Cannot patch non-ColumnDataSource\");const n=e.patches;o.patch(n,s);break}case\"RootAdded\":{const t=e.model.id,o=r.get(t);this.add_root(o,s);break}case\"RootRemoved\":{const t=e.model.id,o=r.get(t);this.remove_root(o,s);break}case\"TitleChanged\":this.set_title(e.title,s);break;default:throw new Error(\"Unknown patch event \"+JSON.stringify(e))}}}s.Document=E,E.__name__=\"Document\"},\n function _(e,o,s,r,t){r();const l=e(1),d=e(8),i=e(13),n=e(14);s.overrides={};const a=new Map;s.Models=e=>{const o=s.Models.get(e);if(null!=o)return o;throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`)},s.Models.get=e=>{var o;return null!==(o=s.overrides[e])&&void 0!==o?o:a.get(e)},s.Models.register=(e,o)=>{s.overrides[e]=o},s.Models.unregister=e=>{delete s.overrides[e]},s.Models.register_models=(e,o=!1,s)=>{var r;if(null!=e)for(const t of d.isArray(e)?e:i.values(e))if(r=t,d.isObject(r)&&r.prototype instanceof n.HasProps){const e=t.__qualified__;o||!a.has(e)?a.set(e,t):null!=s?s(e):console.warn(`Model '${e}' was already registered`)}},s.register_models=s.Models.register_models,s.Models.registered_names=()=>[...a.keys()];class u{constructor(){this._known_models=new Map}get(e,o){var r;const t=null!==(r=s.Models.get(e))&&void 0!==r?r:this._known_models.get(e);if(null!=t)return t;if(void 0!==o)return o;throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`)}register(e){const o=e.__qualified__;null==this.get(o,null)?this._known_models.set(o,e):console.warn(`Model '${o}' was already registered with this resolver`)}}s.ModelResolver=u,u.__name__=\"ModelResolver\";const _=l.__importStar(e(38));s.register_models(_)},\n function _(n,r,t,e,i){e();\n // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n // Underscore may be freely distributed under the MIT license.\n const o=n(9),u=Object.prototype.toString;function c(n){return!0===n||!1===n||\"[object Boolean]\"===u.call(n)}function f(n){return\"[object Number]\"===u.call(n)}function a(n){return\"[object String]\"===u.call(n)}function l(n){const r=typeof n;return\"function\"===r||\"object\"===r&&!!n}function s(n){return l(n)&&void 0!==n[Symbol.iterator]}t.isBoolean=c,t.isNumber=f,t.isInteger=function(n){return f(n)&&Number.isInteger(n)},t.isString=a,t.isPrimitive=function(n){return null===n||c(n)||f(n)||a(n)},t.isFunction=function(n){return\"[object Function]\"===u.call(n)},t.isArray=function(n){return Array.isArray(n)},t.isArrayOf=function(n,r){return o.every(n,r)},t.isArrayableOf=function(n,r){for(let t=0,e=n.length;t0,\"'step' must be a positive number\"),null==t&&(t=n,n=0);const{max:r,ceil:o,abs:i}=Math,c=n<=t?e:-e,f=r(o(i(t-n)/e),0),s=new Array(f);for(let t=0;t=0?t:n.length+t]},e.zip=function(...n){if(0==n.length)return[];const t=c.min(n.map((n=>n.length))),e=n.length,r=new Array(t);for(let o=0;on.length))),r=Array(e);for(let n=0;nn[t]))},e.argmax=function(n){return c.max_by(m(n.length),(t=>n[t]))},e.sort_by=function(n,t){const e=n.map(((n,e)=>({value:n,index:e,key:t(n)})));return e.sort(((n,t)=>{const e=n.key,r=t.key;if(e!==r){if(e>r||void 0===e)return 1;if(en.value))},e.uniq=function(n){const t=new Set;for(const e of n)t.add(e);return[...t]},e.uniq_by=function(n,t){const e=[],r=[];for(const o of n){const n=t(o);l(r,n)||(r.push(n),e.push(o))}return e},e.union=function(...n){const t=new Set;for(const e of n)for(const n of e)t.add(n);return[...t]},e.intersection=function(n,...t){const e=[];n:for(const r of n)if(!l(e,r)){for(const n of t)if(!l(n,r))continue n;e.push(r)}return e},e.difference=function(n,...t){const e=a(t);return n.filter((n=>!l(e,n)))},e.remove_at=function(n,t){const e=s(n);return e.splice(t,1),e},e.remove_by=function(n,t){for(let e=0;e2*u;)n-=2*u;return n}function c(n,r){return a(n-r)}function f(){return Math.random()}function i(n){switch(n){case\"deg\":return u/180;case\"rad\":return 1;case\"grad\":return u/200;case\"turn\":return 2*u}}t.angle_norm=a,t.angle_dist=c,t.angle_between=function(n,r,t,e=!1){const o=c(r,t);if(0==o)return!1;if(o==2*u)return!0;const f=a(n),i=c(r,f)<=o&&c(f,t)<=o;return e?!i:i},t.random=f,t.randomIn=function(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))},t.atan2=function(n,r){return Math.atan2(r[1]-n[1],r[0]-n[0])},t.radians=function(n){return n*(u/180)},t.degrees=function(n){return n/(u/180)},t.resolve_angle=function(n,r){return-i(r)*n},t.to_radians_coeff=i,t.rnorm=function(n,r){let t,e;for(;t=f(),e=f(),e=(2*e-1)*Math.sqrt(1/Math.E*2),!(-4*t*t*Math.log(t)>=e*e););let o=e/t;return o=n+r*o,o},t.clamp=function(n,r,t){return nt?t:n},t.log=function(n,r=Math.E){return Math.log(n)/Math.log(r)}},\n function _(r,n,e,o,s){o();class t extends Error{}e.AssertionError=t,t.__name__=\"AssertionError\",e.assert=function(r,n){if(!(!0===r||!1!==r&&r()))throw new t(null!=n?n:\"Assertion failed\")},e.unreachable=function(){throw new Error(\"unreachable code\")}},\n function _(n,t,e,r,o){r();const i=n(10);function l(n,t,e,...r){const o=n.length;t<0&&(t+=o),t<0?t=0:t>o&&(t=o),null==e||e>o-t?e=o-t:e<0&&(e=0);const i=o-e+r.length,l=new n.constructor(i);let u=0;for(;u0?0:r-1;for(;o>=0&&ot[t.length-1])return t.length;let e=0,r=t.length-1;for(;r-e!=1;){const o=e+Math.floor((r-e)/2);n>=t[o]?e=o:r=o}return e}e.is_empty=function(n){return 0==n.length},e.copy=function(n){return Array.isArray(n)?n.slice():new n.constructor(n)},e.splice=l,e.head=u,e.insert=function(n,t,e){return l(n,e,0,t)},e.append=function(n,t){return l(n,n.length,0,t)},e.prepend=function(n,t){return l(n,0,0,t)},e.indexOf=function(n,t){for(let e=0,r=n.length;ee&&(e=t);return e},e.minmax=function(n){let t,e=1/0,r=-1/0;for(let o=0,i=n.length;or&&(r=t));return[e,r]},e.min_by=function(n,t){if(0==n.length)throw new Error(\"min_by() called with an empty array\");let e=n[0],r=t(e);for(let o=1,i=n.length;or&&(e=i,r=l)}return e},e.sum=function(n){let t=0;for(let e=0,r=n.length;et[r]=n+e),0),t},e.every=function(n,t){for(let e=0,r=n.length;e(n-t)/r))}},\n function _(t,e,n,c,o){c();const s=t(9),{hasOwnProperty:r}=Object.prototype;function u(t){return Object.keys(t).length}n.keys=Object.keys,n.values=Object.values,n.entries=Object.entries,n.extend=Object.assign,n.clone=function(t){return Object.assign({},t)},n.merge=function(t,e){const n=Object.create(Object.prototype),c=s.concat([Object.keys(t),Object.keys(e)]);for(const o of c){const c=r.call(t,o)?t[o]:[],u=r.call(e,o)?e[o]:[];n[o]=s.union(c,u)}return n},n.size=u,n.isEmpty=function(t){return 0==u(t)},n.to_object=function(t){const e={};for(const[n,c]of t)e[n]=c;return e}},\n function _(t,e,s,n,r){n();const i=t(1),o=t(15),c=t(17),a=i.__importStar(t(18)),_=i.__importStar(t(21)),h=t(34),u=t(13),l=t(8),f=t(26),p=t(30),d=t(35),g=t(26),y=t(36),v=t(37),m=i.__importStar(t(21));class b extends(o.Signalable()){constructor(t={}){var e,s;super(),this._subtype=void 0,this.document=null,this.destroyed=new o.Signal0(this,\"destroyed\"),this.change=new o.Signal0(this,\"change\"),this.transformchange=new o.Signal0(this,\"transformchange\"),this.exprchange=new o.Signal0(this,\"exprchange\"),this.properties={},this._pending=!1,this._changing=!1;const n=t instanceof Map?t.get.bind(t):e=>t[e];this.id=null!==(e=n(\"id\"))&&void 0!==e?e:h.uniqueId();for(const[t,{type:e,default_value:s,options:r}]of u.entries(this._props)){let i;e instanceof a.PropertyAlias?Object.defineProperty(this.properties,t,{get:()=>this.properties[e.attr],configurable:!1,enumerable:!1}):(i=e instanceof _.Kind?new a.PrimitiveProperty(this,t,e,s,n(t),r):new e(this,t,_.Any,s,n(t),r),this.properties[t]=i)}null!==(s=n(\"__deferred__\"))&&void 0!==s&&s||(this.finalize(),this.connect_signals())}get is_syncable(){return!0}set type(t){console.warn(\"prototype.type = 'ModelName' is deprecated, use static __name__ instead\"),this.constructor.__name__=t}get type(){return this.constructor.__qualified__}static get __qualified__(){const{__module__:t,__name__:e}=this;return null!=t?`${t}.${e}`:e}static get[Symbol.toStringTag](){return this.__name__}static init_HasProps(){this.prototype._props={},this.prototype._mixins=[]}static _fix_default(t,e){if(void 0===t||l.isFunction(t))return t;if(l.isPrimitive(t))return()=>t;{const e=new v.Cloner;return()=>e.clone(t)}}static define(t){for(const[e,s]of u.entries(l.isFunction(t)?t(m):t)){if(null!=this.prototype._props[e])throw new Error(`attempted to redefine property '${this.prototype.type}.${e}'`);if(null!=this.prototype[e])throw new Error(`attempted to redefine attribute '${this.prototype.type}.${e}'`);Object.defineProperty(this.prototype,e,{get(){return this.properties[e].get_value()},set(t){return this.setv({[e]:t}),this},configurable:!1,enumerable:!0});const[t,n,r={}]=s,i={type:t,default_value:this._fix_default(n,e),options:r},o=Object.assign({},this.prototype._props);o[e]=i,this.prototype._props=o}}static internal(t){const e={};for(const[s,n]of u.entries(l.isFunction(t)?t(m):t)){const[t,r,i={}]=n;e[s]=[t,r,Object.assign(Object.assign({},i),{internal:!0})]}this.define(e)}static mixins(t){function e(t,e){const s={};for(const[n,r]of u.entries(e))s[t+n]=r;return s}const s={},n=[];for(const r of l.isArray(t)?t:[t])if(l.isArray(r)){const[t,i]=r;u.extend(s,e(t,i)),n.push([t,i])}else{const t=r;u.extend(s,t),n.push([\"\",t])}this.define(s),this.prototype._mixins=[...this.prototype._mixins,...n]}static override(t){for(const[e,s]of u.entries(t)){const t=this._fix_default(s,e),n=this.prototype._props[e];if(null==n)throw new Error(`attempted to override nonexistent '${this.prototype.type}.${e}'`);const r=Object.assign({},this.prototype._props);r[e]=Object.assign(Object.assign({},n),{default_value:t}),this.prototype._props=r}}toString(){return`${this.type}(${this.id})`}property(t){const e=this.properties[t];if(null!=e)return e;throw new Error(`unknown property ${this.type}.${t}`)}get attributes(){const t={};for(const e of this)t[e.attr]=e.get_value();return t}[v.clone](t){const e=new Map;for(const s of this)s.dirty&&e.set(s.attr,t.clone(s.get_value()));return new this.constructor(e)}[g.equals](t,e){for(const s of this){const n=t.property(s.attr);if(e.eq(s.get_value(),n.get_value()))return!1}return!0}[y.pretty](t){const e=t.token,s=[];for(const n of this)if(n.dirty){const r=n.get_value();s.push(`${n.attr}${e(\":\")} ${t.to_string(r)}`)}return`${this.constructor.__qualified__}${e(\"(\")}${e(\"{\")}${s.join(`${e(\",\")} `)}${e(\"}\")}${e(\")\")}`}[p.serialize](t){const e=this.ref();t.add_ref(this,e);const s=this.struct();for(const e of this)e.syncable&&(t.include_defaults||e.dirty)&&(s.attributes[e.attr]=t.to_serializable(e.get_value()));return t.add_def(this,s),e}finalize(){for(const t of this){if(!(t instanceof a.VectorSpec||t instanceof a.ScalarSpec))continue;const e=t.get_value();if(null!=e){const{transform:t,expr:s}=e;null!=t&&this.connect(t.change,(()=>this.transformchange.emit())),null!=s&&this.connect(s.change,(()=>this.exprchange.emit()))}}this.initialize()}initialize(){}connect_signals(){}disconnect_signals(){o.Signal.disconnectReceiver(this)}destroy(){this.disconnect_signals(),this.destroyed.emit()}clone(){return(new v.Cloner).clone(this)}_setv(t,e){const s=e.check_eq,n=[],r=this._changing;this._changing=!0;for(const[e,r]of t)!1!==s&&f.is_equal(e.get_value(),r)||(e.set_value(r),n.push(e));n.length>0&&(this._pending=!0);for(const t of n)t.change.emit();if(!r){if(!e.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}}setv(t,e={}){const s=u.entries(t);if(0==s.length)return;if(!0===e.silent){for(const[t,e]of s)this.properties[t].set_value(e);return}const n=new Map,r=new Map;for(const[t,e]of s){const s=this.properties[t];n.set(s,e),r.set(s,s.get_value())}this._setv(n,e);const{document:i}=this;if(null!=i){const t=[];for(const[e,s]of r)t.push([e,s,e.get_value()]);for(const[,e,s]of t)if(this._needs_invalidate(e,s)){i._invalidate_all_models();break}this._push_changes(t,e)}}getv(t){return this.property(t).get_value()}ref(){return{id:this.id}}struct(){const t={type:this.type,id:this.id,attributes:{}};return null!=this._subtype&&(t.subtype=this._subtype),t}set_subtype(t){this._subtype=t}*[Symbol.iterator](){yield*u.values(this.properties)}*syncable_properties(){for(const t of this)t.syncable&&(yield t)}serializable_attributes(){const t={};for(const e of this.syncable_properties())t[e.attr]=e.get_value();return t}static _json_record_references(t,e,s,n){const{recursive:r}=n;if(c.is_ref(e)){const n=t.get_model_by_id(e.id);null==n||s.has(n)||b._value_record_references(n,s,{recursive:r})}else if(l.isArray(e))for(const n of e)b._json_record_references(t,n,s,{recursive:r});else if(l.isPlainObject(e))for(const n of u.values(e))b._json_record_references(t,n,s,{recursive:r})}static _value_record_references(t,e,s){const{recursive:n}=s;if(t instanceof b){if(!e.has(t)&&(e.add(t),n))for(const s of t.syncable_properties()){const t=s.get_value();b._value_record_references(t,e,{recursive:n})}}else if(l.isArray(t))for(const s of t)b._value_record_references(s,e,{recursive:n});else if(l.isPlainObject(t))for(const s of u.values(t))b._value_record_references(s,e,{recursive:n})}references(){const t=new Set;return b._value_record_references(this,t,{recursive:!0}),t}_doc_attached(){}_doc_detached(){}attach_document(t){if(null!=this.document&&this.document!=t)throw new Error(\"models must be owned by only a single document\");this.document=t,this._doc_attached()}detach_document(){this._doc_detached(),this.document=null}_needs_invalidate(t,e){const s=new Set;b._value_record_references(e,s,{recursive:!1});const n=new Set;b._value_record_references(t,n,{recursive:!1});for(const t of s)if(!n.has(t))return!0;for(const t of n)if(!s.has(t))return!0;return!1}_push_changes(t,e={}){if(!this.is_syncable)return;const{document:s}=this;if(null==s)return;const{setter_id:n}=e,r=[];for(const[e,i,o]of t)e.syncable&&r.push(new d.ModelChangedEvent(s,this,e.attr,i,o,n));if(0!=r.length){let t;1==r.length?[t]=r:t=new d.DocumentEventBatch(s,r,n),s._trigger_on_change(t)}}on_change(t,e){for(const s of l.isArray(t)?t:[t])this.connect(s.change,e)}}s.HasProps=b,b.init_HasProps()},\n function _(n,t,e,l,s){l();const i=n(16),o=n(9);class c{constructor(n,t){this.sender=n,this.name=t}connect(n,t=null){u.has(this.sender)||u.set(this.sender,[]);const e=u.get(this.sender);if(null!=g(e,this,n,t))return!1;const l=null!=t?t:n;a.has(l)||a.set(l,[]);const s=a.get(l),i={signal:this,slot:n,context:t};return e.push(i),s.push(i),!0}disconnect(n,t=null){const e=u.get(this.sender);if(null==e||0===e.length)return!1;const l=g(e,this,n,t);if(null==l)return!1;const s=null!=t?t:n,i=a.get(s);return l.signal=null,d(e),d(i),!0}emit(n){var t;const e=null!==(t=u.get(this.sender))&&void 0!==t?t:[];for(const{signal:t,slot:l,context:s}of e)t===this&&l.call(s,n,this.sender)}}e.Signal=c,c.__name__=\"Signal\";class r extends c{emit(){super.emit(void 0)}}e.Signal0=r,r.__name__=\"Signal0\",function(n){function t(n,t){const e=u.get(n);if(null==e||0===e.length)return;const l=a.get(t);if(null!=l&&0!==l.length){for(const t of l){if(null==t.signal)return;t.signal.sender===n&&(t.signal=null)}d(e),d(l)}}function e(n){var t;const e=u.get(n);if(null!=e&&0!==e.length){for(const n of e){if(null==n.signal)return;const e=null!==(t=n.context)&&void 0!==t?t:n.slot;n.signal=null,d(a.get(e))}d(e)}}function l(n,t,e){const l=a.get(n);if(null!=l&&0!==l.length){for(const n of l){if(null==n.signal)return;if(null!=t&&n.slot!=t)continue;const l=n.signal.sender;null!=e&&e.has(l)||(n.signal=null,d(u.get(l)))}d(l)}}function s(n){const t=u.get(n);if(null!=t&&0!==t.length){for(const n of t)n.signal=null;d(t)}const e=a.get(n);if(null!=e&&0!==e.length){for(const n of e)n.signal=null;d(e)}}n.disconnect_between=t,n.disconnect_sender=e,n.disconnect_receiver=l,n.disconnect_all=s,n.disconnectBetween=t,n.disconnectSender=e,n.disconnectReceiver=l,n.disconnectAll=s}(c||(e.Signal=c={})),e.Signalable=function(){return class{connect(n,t){return n.connect(t,this)}disconnect(n,t){return n.disconnect(t,this)}}};const u=new WeakMap,a=new WeakMap;function g(n,t,e,l){return o.find(n,(n=>n.signal===t&&n.slot===e&&n.context===l))}const f=new Set;function d(n){0===f.size&&(async()=>{await i.defer(),function(){for(const n of f)o.remove_by(n,(n=>null==n.signal));f.clear()}()})(),f.add(n)}},\n function _(e,n,t,s,o){s();const a=new MessageChannel,l=new Map;a.port1.onmessage=e=>{const n=e.data,t=l.get(n);if(null!=t)try{t()}finally{l.delete(n)}};let r=1;t.defer=function(){return new Promise((e=>{const n=r++;l.set(n,e),a.port2.postMessage(n)}))}},\n function _(n,t,i,e,c){e();const r=n(8),s=n(13);i.is_ref=function(n){if(r.isPlainObject(n)){const t=s.keys(n);return 1==t.length&&\"id\"==t[0]}return!1}},\n function _(e,t,n,a,r){a(),n.YCoordinateSeqSeqSeqSpec=n.XCoordinateSeqSeqSeqSpec=n.YCoordinateSeqSpec=n.XCoordinateSeqSpec=n.YCoordinateSpec=n.XCoordinateSpec=n.CoordinateSeqSeqSeqSpec=n.CoordinateSeqSpec=n.CoordinateSpec=n.BaseCoordinateSpec=n.NumberUnitsSpec=n.UnitsSpec=n.DataSpec=n.VectorSpec=n.TextBaselineScalar=n.TextAlignScalar=n.FontStyleScalar=n.FontSizeScalar=n.FontScalar=n.LineDashScalar=n.LineCapScalar=n.LineJoinScalar=n.ArrayScalar=n.NullStringScalar=n.StringScalar=n.NumberScalar=n.ColorScalar=n.AnyScalar=n.ScalarSpec=n.VerticalAlign=n.UpdateMode=n.TooltipAttachment=n.TickLabelOrientation=n.TextureRepetition=n.TextBaseline=n.TextAlign=n.TapBehavior=n.StepMode=n.StartEnd=n.SpatialUnits=n.Sort=n.SizingMode=n.Side=n.RoundingFunction=n.ResetPolicy=n.RenderMode=n.RenderLevel=n.RadiusDimension=n.PointPolicy=n.Place=void 0,n.TextBaselineSpec=n.TextAlignSpec=n.FontStyleSpec=n.FontSizeSpec=n.FontSpec=n.LineDashSpec=n.LineCapSpec=n.LineJoinSpec=n.MarkerSpec=n.ArraySpec=n.NullStringSpec=n.StringSpec=n.AnySpec=n.NDArraySpec=n.ColorSpec=n.NumberSpec=n.BooleanSpec=n.ScreenDistanceSpec=n.NullDistanceSpec=n.DistanceSpec=n.AngleSpec=void 0;const i=e(1),s=e(15),l=e(19),o=i.__importStar(e(20)),c=e(24),_=e(9),u=e(12),d=e(10),S=e(22),p=e(27),m=e(8),h=e(28),v=e(29),y=e(33);function x(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function g(e){return m.isPlainObject(e)&&(void 0===e.value?0:1)+(void 0===e.field?0:1)+(void 0===e.expr?0:1)==1}r(\"Uniform\",y.Uniform),r(\"UniformScalar\",y.UniformScalar),r(\"UniformVector\",y.UniformVector),n.isSpec=g;class f{constructor(e,t,n,a,r,i={}){var l;let o;if(this.obj=e,this.attr=t,this.kind=n,this.default_value=a,this._dirty=!1,this.change=new s.Signal0(this.obj,\"change\"),this.internal=null!==(l=i.internal)&&void 0!==l&&l,this.on_update=i.on_update,void 0!==r)o=r,this._dirty=!0;else{const t=this._default_override();if(void 0!==t)o=t;else{if(void 0===a)return void(this.spec={value:null});o=a(e)}}this._update(o)}get is_value(){return void 0!==this.spec.value}get syncable(){return!this.internal}get_value(){return this.spec.value}set_value(e){this._update(e),this._dirty=!0}_default_override(){}get dirty(){return this._dirty}_update(e){var t;this.validate(e),this.spec={value:e},null===(t=this.on_update)||void 0===t||t.call(this,e,this.obj)}toString(){return`Prop(${this.obj}.${this.attr}, spec: ${x(this.spec)})`}normalize(e){return e}validate(e){if(!this.valid(e))throw new Error(`${this.obj}.${this.attr} given invalid value: ${x(e)}`)}valid(e){return this.kind.valid(e)}_value(e=!0){if(!this.is_value)throw new Error(\"attempted to retrieve property value for property without value specification\");let t=this.normalize([this.spec.value])[0];return null!=this.spec.transform&&e&&(t=this.spec.transform.compute(t)),t}}n.Property=f,f.__name__=\"Property\";class A{constructor(e){this.attr=e}}n.PropertyAlias=A,A.__name__=\"PropertyAlias\",n.Alias=function(e){return new A(e)};class C extends f{}n.PrimitiveProperty=C,C.__name__=\"PrimitiveProperty\";class L extends f{}n.Any=L,L.__name__=\"Any\";class T extends f{valid(e){return m.isArray(e)||m.isTypedArray(e)}}n.Array=T,T.__name__=\"Array\";class P extends f{valid(e){return m.isBoolean(e)}}n.Boolean=P,P.__name__=\"Boolean\";class b extends f{valid(e){return S.is_Color(e)}}n.Color=b,b.__name__=\"Color\";class w extends f{}n.Instance=w,w.__name__=\"Instance\";class q extends f{valid(e){return m.isNumber(e)}}n.Number=q,q.__name__=\"Number\";class N extends q{valid(e){return m.isNumber(e)&&(0|e)==e}}n.Int=N,N.__name__=\"Int\";class B extends q{}n.Angle=B,B.__name__=\"Angle\";class D extends q{valid(e){return m.isNumber(e)&&0<=e&&e<=1}}n.Percent=D,D.__name__=\"Percent\";class F extends f{valid(e){return m.isString(e)}}n.String=F,F.__name__=\"String\";class z extends f{valid(e){return null===e||m.isString(e)}}n.NullString=z,z.__name__=\"NullString\";class U extends F{}n.FontSize=U,U.__name__=\"FontSize\";class M extends F{_default_override(){return h.settings.dev?\"Bokeh\":void 0}}n.Font=M,M.__name__=\"Font\";class R extends f{valid(e){return m.isString(e)&&_.includes(this.enum_values,e)}}function k(e){return class extends R{get enum_values(){return[...e]}}}n.EnumProperty=R,R.__name__=\"EnumProperty\",n.Enum=k;class O extends R{get enum_values(){return[...o.Direction]}normalize(e){const t=new Uint8Array(e.length);for(let n=0;n0){let o=r[e];return null==o&&(r[e]=o=new v(e,l)),o}throw new TypeError(\"Logger.get() expects a non-empty string name and an optional log-level\")}get level(){return this.get_level()}get_level(){return this._log_level}set_level(e){if(e instanceof i)this._log_level=e;else{if(!s.isString(e)||null==v.log_levels[e])throw new Error(\"Logger.set_level() expects a log-level object or a string name of a log-level\");this._log_level=v.log_levels[e]}const l=`[${this._name}]`;for(const[e,o]of g.entries(v.log_levels))o.level\",\"*\"),t.HTTPMethod=a.Enum(\"POST\",\"GET\"),t.HexTileOrientation=a.Enum(\"pointytop\",\"flattop\"),t.HoverMode=a.Enum(\"mouse\",\"hline\",\"vline\"),t.LatLon=a.Enum(\"lat\",\"lon\"),t.LegendClickPolicy=a.Enum(\"none\",\"hide\",\"mute\"),t.LegendLocation=t.Anchor,t.LineCap=a.Enum(\"butt\",\"round\",\"square\"),t.LineJoin=a.Enum(\"miter\",\"round\",\"bevel\"),t.LineDash=a.Enum(\"solid\",\"dashed\",\"dotted\",\"dotdash\",\"dashdot\"),t.LinePolicy=a.Enum(\"prev\",\"next\",\"nearest\",\"interp\",\"none\"),t.Location=a.Enum(\"above\",\"below\",\"left\",\"right\"),t.Logo=a.Enum(\"normal\",\"grey\"),t.MarkerType=a.Enum(\"asterisk\",\"circle\",\"circle_cross\",\"circle_dot\",\"circle_x\",\"circle_y\",\"cross\",\"dash\",\"diamond\",\"diamond_cross\",\"diamond_dot\",\"dot\",\"hex\",\"hex_dot\",\"inverted_triangle\",\"plus\",\"square\",\"square_cross\",\"square_dot\",\"square_pin\",\"square_x\",\"star\",\"star_dot\",\"triangle\",\"triangle_dot\",\"triangle_pin\",\"x\",\"y\"),t.MutedPolicy=a.Enum(\"show\",\"ignore\"),t.Orientation=a.Enum(\"vertical\",\"horizontal\"),t.OutputBackend=a.Enum(\"canvas\",\"svg\",\"webgl\"),t.PaddingUnits=a.Enum(\"percent\",\"absolute\"),t.Place=a.Enum(\"above\",\"below\",\"left\",\"right\",\"center\"),t.PointPolicy=a.Enum(\"snap_to_data\",\"follow_mouse\",\"none\"),t.RadiusDimension=a.Enum(\"x\",\"y\",\"max\",\"min\"),t.RenderLevel=a.Enum(\"image\",\"underlay\",\"glyph\",\"guide\",\"annotation\",\"overlay\"),t.RenderMode=a.Enum(\"canvas\",\"css\"),t.ResetPolicy=a.Enum(\"standard\",\"event_only\"),t.RoundingFunction=a.Enum(\"round\",\"nearest\",\"floor\",\"rounddown\",\"ceil\",\"roundup\"),t.SelectionMode=a.Enum(\"replace\",\"append\",\"intersect\",\"subtract\"),t.Side=a.Enum(\"above\",\"below\",\"left\",\"right\"),t.SizingMode=a.Enum(\"stretch_width\",\"stretch_height\",\"stretch_both\",\"scale_width\",\"scale_height\",\"scale_both\",\"fixed\"),t.Sort=a.Enum(\"ascending\",\"descending\"),t.SpatialUnits=a.Enum(\"screen\",\"data\"),t.StartEnd=a.Enum(\"start\",\"end\"),t.StepMode=a.Enum(\"after\",\"before\",\"center\"),t.TapBehavior=a.Enum(\"select\",\"inspect\"),t.TextAlign=a.Enum(\"left\",\"right\",\"center\"),t.TextBaseline=a.Enum(\"top\",\"middle\",\"bottom\",\"alphabetic\",\"hanging\",\"ideographic\"),t.TextureRepetition=a.Enum(\"repeat\",\"repeat_x\",\"repeat_y\",\"no_repeat\"),t.TickLabelOrientation=a.Enum(\"vertical\",\"horizontal\",\"parallel\",\"normal\"),t.TooltipAttachment=a.Enum(\"horizontal\",\"vertical\",\"left\",\"right\",\"above\",\"below\"),t.UpdateMode=a.Enum(\"replace\",\"append\"),t.VerticalAlign=a.Enum(\"top\",\"middle\",\"bottom\")},\n function _(e,n,t,s,r){s();const i=e(1).__importStar(e(8)),a=e(22),l=e(13),_=window.Map,{hasOwnProperty:u}=Object.prototype;class d{}t.Kind=d,d.__name__=\"Kind\",function(e){class n extends d{valid(e){return!0}}n.__name__=\"Any\",e.Any=n;class t extends d{valid(e){return!0}}t.__name__=\"Unknown\",e.Unknown=t;class s extends d{valid(e){return i.isBoolean(e)}}s.__name__=\"Boolean\",e.Boolean=s;class r extends d{constructor(e){super(),this.obj_type=e}valid(e){return!0}}r.__name__=\"Ref\",e.Ref=r;class c extends d{valid(e){return!0}}c.__name__=\"AnyRef\",e.AnyRef=c;class o extends d{valid(e){return i.isNumber(e)}}o.__name__=\"Number\",e.Number=o;class p extends o{valid(e){return super.valid(e)&&i.isInteger(e)}}p.__name__=\"Int\",e.Int=p;class y extends o{valid(e){return super.valid(e)&&0<=e&&e<=1}}y.__name__=\"Percent\",e.Percent=y;class m extends d{constructor(e){super(),this.types=e,this.types=e}valid(e){return this.types.some((n=>n.valid(e)))}}m.__name__=\"Or\",e.Or=m;class v extends d{constructor(e){super(),this.types=e,this.types=e}valid(e){if(!i.isArray(e))return!1;for(let n=0;nthis.item_type.valid(e)))}}f.__name__=\"Array\",e.Array=f;class K extends d{valid(e){return null===e}}K.__name__=\"Null\",e.Null=K;class b extends d{constructor(e){super(),this.base_type=e}valid(e){return null===e||this.base_type.valid(e)}}b.__name__=\"Nullable\",e.Nullable=b;class A extends d{constructor(e){super(),this.base_type=e}valid(e){return void 0===e||this.base_type.valid(e)}}A.__name__=\"Opt\",e.Opt=A;class x extends d{valid(e){return i.isString(e)}}x.__name__=\"String\",e.String=x;class S extends d{constructor(e){super(),this.values=new Set(e)}valid(e){return this.values.has(e)}*[Symbol.iterator](){yield*this.values}}S.__name__=\"Enum\",e.Enum=S;class N extends d{constructor(e){super(),this.item_type=e}valid(e){if(!i.isPlainObject(e))return!1;for(const n in e)if(u.call(e,n)){const t=e[n];if(!this.item_type.valid(t))return!1}return!0}}N.__name__=\"Dict\",e.Dict=N;class O extends d{constructor(e,n){super(),this.key_type=e,this.item_type=n}valid(e){if(!(e instanceof _))return!1;for(const[n,t]of e.entries())if(!this.key_type.valid(n)||!this.item_type.valid(t))return!1;return!0}}O.__name__=\"Map\",e.Map=O;class g extends d{valid(e){return a.is_Color(e)}}g.__name__=\"Color\",e.Color=g;class P extends d{valid(e){return i.isFunction(e)}}P.__name__=\"Function\",e.Function=P}(t.Kinds||(t.Kinds={})),t.Any=new t.Kinds.Any,t.Unknown=new t.Kinds.Unknown,t.Boolean=new t.Kinds.Boolean,t.Number=new t.Kinds.Number,t.Int=new t.Kinds.Int,t.String=new t.Kinds.String,t.Null=new t.Kinds.Null;t.Nullable=e=>new t.Kinds.Nullable(e);t.Opt=e=>new t.Kinds.Opt(e);t.Or=(...e)=>new t.Kinds.Or(e);t.Tuple=(...e)=>new t.Kinds.Tuple(e);t.Struct=e=>new t.Kinds.Struct(e),t.Arrayable=new t.Kinds.Arrayable;t.Array=e=>new t.Kinds.Array(e);t.Dict=e=>new t.Kinds.Dict(e);t.Map=(e,n)=>new t.Kinds.Map(e,n);t.Enum=(...e)=>new t.Kinds.Enum(e);t.Ref=e=>new t.Kinds.Ref(e);t.AnyRef=()=>new t.Kinds.AnyRef;t.Function=()=>new t.Kinds.Function,t.Percent=new t.Kinds.Percent,t.Alpha=t.Percent,t.Color=new t.Kinds.Color,t.Auto=t.Enum(\"auto\"),t.FontSize=t.String,t.Font=t.String,t.Angle=t.Number},\n function _(n,t,r,e,s){e();const u=n(23),c=n(10),l=n(8),{round:i}=Math;function o(n){return c.clamp(i(n),0,255)}function a(){return[0,0,0,0]}function f(n){return[n>>24&255,n>>16&255,n>>8&255,255&n]}function d(n,t){var r;let e,s,u,c;return null==n?[e,s,u,c]=[0,0,0,0]:l.isInteger(n)?[e,s,u,c]=f(n):l.isString(n)?[e,s,u,c]=null!==(r=_(n))&&void 0!==r?r:[0,0,0,0]:([e,s,u,c=1]=n,c=o(255*c)),255==c&&null!=t&&(c=o(255*t)),[e,s,u,c]}r.transparent=a,r.encode_rgba=function([n,t,r,e]){return n<<24|t<<16|r<<8|e},r.decode_rgba=f,r.compose_alpha=function(n,t){return 255==(255&n)?4294967040&n|o(255*t):n},r.color2rgba=d;const h={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"a\",11:\"b\",12:\"c\",13:\"d\",14:\"e\",15:\"f\"};function g(n){return h[n>>4]+h[15&n]}r.color2css=function(n,t){const[r,e,s,u]=d(n,t);return`rgba(${r}, ${e}, ${s}, ${u/255})`},r.color2hex=function(n,t){const[r,e,s,u]=d(n,t),c=`#${g(r)}${g(e)}${g(s)}`;return 255==u?c:`${c}${g(u)}`},r.color2hexrgb=function(n){const[t,r,e]=d(n);return`#${g(t)}${g(r)}${g(e)}`};const b=/^rgba?\\(\\s*([^\\s,]+?)\\s+([^\\s,]+?)\\s+([^\\s,]+?)(?:\\s*\\/\\s*([^\\s,]+?))?\\s*\\)$/,m=/^rgba?\\(\\s*([^\\s,]+?)\\s*,\\s*([^\\s,]+?)\\s*,\\s*([^\\s,]+?)(?:\\s*,\\s*([^\\s,]+?))?\\s*\\)$/,$=(()=>{const n=document.createElement(\"canvas\");n.width=1,n.height=1;const t=n.getContext(\"2d\"),r=t.createLinearGradient(0,0,1,1);return n=>{t.fillStyle=r,t.fillStyle=n;const e=t.fillStyle;return e!=r?e:null}})();function _(n){var t;if(!(n=n.trim().toLowerCase()))return null;if(\"transparent\"==n)return[0,0,0,0];if(u.is_named_color(n))return f(u.named_colors[n]);if(\"#\"==n[0]){const t=Number(\"0x\"+n.substr(1));if(isNaN(t))return null;switch(n.length-1){case 3:{const n=t>>8&15,r=t>>4&15,e=t>>0&15;return[n<<4|n,r<<4|r,e<<4|e,255]}case 4:{const n=t>>12&15,r=t>>8&15,e=t>>4&15,s=t>>0&15;return[n<<4|n,r<<4|r,e<<4|e,s<<4|s]}case 6:return[t>>16&255,t>>8&255,t>>0&255,255];case 8:return[t>>24&255,t>>16&255,t>>8&255,t>>0&255]}}else if(n.startsWith(\"rgb\")){const r=null!==(t=n.match(b))&&void 0!==t?t:n.match(m);if(null!=r){let[,n,t,e,s=\"1\"]=r;const u=n.endsWith(\"%\"),c=t.endsWith(\"%\"),l=e.endsWith(\"%\"),i=s.endsWith(\"%\");if(!(u&&c&&l)&&(u||c||l))return null;u&&(n=n.slice(0,-1)),c&&(t=t.slice(0,-1)),l&&(e=e.slice(0,-1)),i&&(s=s.slice(0,-1));let a=Number(n),f=Number(t),d=Number(e),h=Number(s);return isNaN(a+f+d+h)?null:(u&&(a=a/100*255),c&&(f=f/100*255),l&&(d=d/100*255),h=255*(i?h/100:h),a=o(a),f=o(f),d=o(d),h=o(h),[a,f,d,h])}}else{const t=$(n);if(null!=t)return _(t)}return null}r.css4_parse=_,r.is_Color=function(n){return!!l.isInteger(n)||(!(!l.isString(n)||null==_(n))||!(!l.isArray(n)||3!=n.length&&4!=n.length))},r.is_dark=function([n,t,r]){return 1-(.299*n+.587*t+.114*r)/255>=.6}},\n function _(e,r,l,a,i){a();l.named_colors={aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199},l.is_named_color=function(e){return e in l.named_colors}},\n function _(r,t,n,a,o){a(),n.GeneratorFunction=Object.getPrototypeOf((function*(){})).constructor,n.ColorArray=Uint32Array,n.RGBAArray=Uint8ClampedArray,n.infer_type=function(r,t){return r instanceof Float64Array||r instanceof Array||t instanceof Float64Array||t instanceof Array?Float64Array:Float32Array},n.ScreenArray=Float32Array,n.to_screen=function(r){return r instanceof Float32Array?r:new Float32Array(r)},o(\"Indices\",r(25).BitSet)},\n function _(t,s,r,e,i){e();const n=t(26),o=t(11);class a{constructor(t,s=0){this.size=t,this[Symbol.toStringTag]=\"BitSet\",this._count=null,this._nwords=Math.ceil(t/32),0==s||1==s?(this._array=new Uint32Array(this._nwords),1==s&&this._array.fill(4294967295)):(o.assert(s.length==this._nwords,\"Initializer size mismatch\"),this._array=s)}clone(){return new a(this.size,new Uint32Array(this._array))}[n.equals](t,s){if(!s.eq(this.size,t.size))return!1;const{_nwords:r}=this,e=this.size%r,i=0==e?r:r-1;for(let s=0;s>>5,r=31&t;return!!(this._array[s]>>r&1)}set(t,s=!0){this._check_bounds(t),this._count=null;const r=t>>>5,e=31&t;s?this._array[r]|=1<>>t&1&&(e+=1)}return e}*ones(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1&&(yield e);else e+=32}}*zeros(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1||(yield e);else e+=32}}_check_size(t){o.assert(this.size==t.size,\"Size mismatch\")}add(t){this._check_size(t);for(let s=0;s{if(a(t)&&a(e))return t[r.equals](e,this);switch(n){case\"[object Array]\":case\"[object Uint8Array]\":case\"[object Int8Array]\":case\"[object Uint16Array]\":case\"[object Int16Array]\":case\"[object Uint32Array]\":case\"[object Int32Array]\":case\"[object Float32Array]\":case\"[object Float64Array]\":return this.arrays(t,e);case\"[object Map]\":return this.maps(t,e);case\"[object Set]\":return this.sets(t,e);case\"[object Object]\":if(t.constructor==e.constructor&&(null==t.constructor||t.constructor===Object))return this.objects(t,e);case\"[object Function]\":if(t.constructor==e.constructor&&t.constructor===Function)return this.eq(`${t}`,`${e}`)}if(t instanceof Node)return this.nodes(t,e);throw Error(`can't compare objects of type ${n}`)})();return s.pop(),o.pop(),u}numbers(t,e){return Object.is(t,e)}arrays(t,e){const{length:r}=t;if(r!=e.length)return!1;for(let n=0;n{const n=navigator.userAgent;return n.includes(\"MSIE\")||n.includes(\"Trident\")||n.includes(\"Edge\")})(),e.is_mobile=\"undefined\"!=typeof window&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0),e.is_little_endian=(()=>{const n=new ArrayBuffer(4),i=new Uint8Array(n);new Uint32Array(n)[1]=168496141;let e=!0;return 10==i[4]&&11==i[5]&&12==i[6]&&13==i[7]&&(e=!1),e})(),e.BYTE_ORDER=e.is_little_endian?\"little\":\"big\",e.to_big_endian=function(n){if(e.is_little_endian){const i=new Uint32Array(n.length),e=new DataView(i.buffer);let t=0;for(const i of n)e.setUint32(t,i),t+=4;return i}return n}},\n function _(e,t,r,i,s){i();class _{constructor(){this._dev=!1,this._wireframe=!1}set dev(e){this._dev=e}get dev(){return this._dev}set wireframe(e){this._wireframe=e}get wireframe(){return this._wireframe}}r.Settings=_,_.__name__=\"Settings\",r.settings=new _},\n function _(t,e,s,r,n){var a,i,h,u,l,c,o,y;r();const p=t(8),_=t(11),A=t(26),d=t(30),D=t(31),N=Symbol(\"__ndarray__\");class f extends Uint8Array{constructor(t,e){super(t),this[a]=!0,this.dtype=\"uint8\",this.shape=null!=e?e:z(t)?t.shape:[this.length],this.dimension=this.shape.length}[(a=N,A.equals)](t,e){return e.eq(this.shape,t.shape)&&e.arrays(this,t)}[d.serialize](t){return D.encode_NDArray(this)}}s.Uint8NDArray=f,f.__name__=\"Uint8NDArray\";class m extends Int8Array{constructor(t,e){super(t),this[i]=!0,this.dtype=\"int8\",this.shape=null!=e?e:z(t)?t.shape:[this.length],this.dimension=this.shape.length}[(i=N,A.equals)](t,e){return e.eq(this.shape,t.shape)&&e.arrays(this,t)}[d.serialize](t){return D.encode_NDArray(this)}}s.Int8NDArray=m,m.__name__=\"Int8NDArray\";class g extends Uint16Array{constructor(t,e){super(t),this[h]=!0,this.dtype=\"uint16\",this.shape=null!=e?e:z(t)?t.shape:[this.length],this.dimension=this.shape.length}[(h=N,A.equals)](t,e){return e.eq(this.shape,t.shape)&&e.arrays(this,t)}[d.serialize](t){return D.encode_NDArray(this)}}s.Uint16NDArray=g,g.__name__=\"Uint16NDArray\";class q extends Int16Array{constructor(t,e){super(t),this[u]=!0,this.dtype=\"int16\",this.shape=null!=e?e:z(t)?t.shape:[this.length],this.dimension=this.shape.length}[(u=N,A.equals)](t,e){return e.eq(this.shape,t.shape)&&e.arrays(this,t)}[d.serialize](t){return D.encode_NDArray(this)}}s.Int16NDArray=q,q.__name__=\"Int16NDArray\";class I extends Uint32Array{constructor(t,e){super(t),this[l]=!0,this.dtype=\"uint32\",this.shape=null!=e?e:z(t)?t.shape:[this.length],this.dimension=this.shape.length}[(l=N,A.equals)](t,e){return e.eq(this.shape,t.shape)&&e.arrays(this,t)}[d.serialize](t){return D.encode_NDArray(this)}}s.Uint32NDArray=I,I.__name__=\"Uint32NDArray\";class U extends Int32Array{constructor(t,e){super(t),this[c]=!0,this.dtype=\"int32\",this.shape=null!=e?e:z(t)?t.shape:[this.length],this.dimension=this.shape.length}[(c=N,A.equals)](t,e){return e.eq(this.shape,t.shape)&&e.arrays(this,t)}[d.serialize](t){return D.encode_NDArray(this)}}s.Int32NDArray=U,U.__name__=\"Int32NDArray\";class w extends Float32Array{constructor(t,e){super(t),this[o]=!0,this.dtype=\"float32\",this.shape=null!=e?e:z(t)?t.shape:[this.length],this.dimension=this.shape.length}[(o=N,A.equals)](t,e){return e.eq(this.shape,t.shape)&&e.arrays(this,t)}[d.serialize](t){return D.encode_NDArray(this)}}s.Float32NDArray=w,w.__name__=\"Float32NDArray\";class x extends Float64Array{constructor(t,e){super(t),this[y]=!0,this.dtype=\"float64\",this.shape=null!=e?e:z(t)?t.shape:[this.length],this.dimension=this.shape.length}[(y=N,A.equals)](t,e){return e.eq(this.shape,t.shape)&&e.arrays(this,t)}[d.serialize](t){return D.encode_NDArray(this)}}function z(t){return p.isObject(t)&&void 0!==t[N]}s.Float64NDArray=x,x.__name__=\"Float64NDArray\",s.is_NDArray=z,s.ndarray=function(t,e={}){let{dtype:s}=e;null==s&&(s=t instanceof ArrayBuffer||p.isArray(t)?\"float64\":(()=>{switch(!0){case t instanceof Uint8Array:return\"uint8\";case t instanceof Int8Array:return\"int8\";case t instanceof Uint16Array:return\"uint16\";case t instanceof Int16Array:return\"int16\";case t instanceof Uint32Array:return\"uint32\";case t instanceof Int32Array:return\"int32\";case t instanceof Float32Array:return\"float32\";case t instanceof Float64Array:return\"float64\";default:_.unreachable()}})());const{shape:r}=e;switch(s){case\"uint8\":return new f(t,r);case\"int8\":return new m(t,r);case\"uint16\":return new g(t,r);case\"int16\":return new q(t,r);case\"uint32\":return new I(t,r);case\"int32\":return new U(t,r);case\"float32\":return new w(t,r);case\"float64\":return new x(t,r)}}},\n function _(e,r,t,i,s){i();const n=e(11),a=e(13),l=e(8);t.serialize=Symbol(\"serialize\");class o extends Error{}t.SerializationError=o,o.__name__=\"SerializationError\";class f{constructor(e){var r;this._references=new Map,this._definitions=new Map,this._refmap=new Map,this.include_defaults=null===(r=null==e?void 0:e.include_defaults)||void 0===r||r}get_ref(e){return this._references.get(e)}add_ref(e,r){n.assert(!this._references.has(e)),this._references.set(e,r)}add_def(e,r){const t=this.get_ref(e);n.assert(null!=t),this._definitions.set(e,r),this._refmap.set(t,r)}get objects(){return new Set(this._references.keys())}get references(){return new Set(this._references.values())}get definitions(){return new Set(this._definitions.values())}resolve_ref(e){return this._refmap.get(e)}remove_ref(e){return this._references.delete(e)}remove_def(e){return this._definitions.delete(e)}to_serializable(e){const r=this.get_ref(e);if(null!=r)return r;if(function(e){return l.isObject(e)&&void 0!==e[t.serialize]}(e))return e[t.serialize](this);if(l.isArray(e)||l.isTypedArray(e)){const r=e.length,t=new Array(r);for(let i=0;i{switch(t){case\"uint8\":return new u.Uint8NDArray(a,n);case\"int8\":return new u.Int8NDArray(a,n);case\"uint16\":return new u.Uint16NDArray(a,n);case\"int16\":return new u.Int16NDArray(a,n);case\"uint32\":return new u.Uint32NDArray(a,n);case\"int32\":return new u.Int32NDArray(a,n);case\"float32\":return new u.Float32NDArray(a,n);case\"float64\":return new u.Float64NDArray(a,n)}})();return _!==s.BYTE_ORDER&&o.swap(f),f},n.encode_NDArray=function(r,e){const n={order:s.BYTE_ORDER,dtype:r.dtype,shape:r.shape};if(null!=e){const t=`${e.size}`;return e.set(t,r.buffer),Object.assign({__buffer__:t},n)}{const e={toJSON:()=>o.buffer_to_base64(r.buffer)};return Object.assign({__ndarray__:e},n)}}},\n function _(t,e,n,r,f){r(),n.buffer_to_base64=function(t){const e=new Uint8Array(t),n=Array.from(e).map((t=>String.fromCharCode(t)));return btoa(n.join(\"\"))},n.base64_to_buffer=function(t){const e=atob(t),n=e.length,r=new Uint8Array(n);for(let t=0,f=n;t\"'`])/g,(t=>{switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}}))},r.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,((t,e)=>{switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}}))},r.use_strict=function(t){return`'use strict';\\n${t}`},r.to_fixed=function(t,e){return t.toFixed(e).replace(/(\\.[0-9]*?)0+$/,\"$1\").replace(/\\.$/,\"\")}},\n function _(e,t,s,n,o){n();const i=e(30);class r{constructor(e){this.document=e}}s.DocumentEvent=r,r.__name__=\"DocumentEvent\";class a extends r{constructor(e,t,s){super(e),this.events=t,this.setter_id=s}}s.DocumentEventBatch=a,a.__name__=\"DocumentEventBatch\";class d extends r{}s.DocumentChangedEvent=d,d.__name__=\"DocumentChangedEvent\";class l extends d{constructor(e,t,s){super(e),this.msg_type=t,this.msg_data=s}[i.serialize](e){const t=this.msg_data,s=e.to_serializable(t);return{kind:\"MessageSent\",msg_type:this.msg_type,msg_data:s}}}s.MessageSentEvent=l,l.__name__=\"MessageSentEvent\";class _ extends d{constructor(e,t,s,n,o,i,r){super(e),this.model=t,this.attr=s,this.old=n,this.new_=o,this.setter_id=i,this.hint=r}[i.serialize](e){if(null!=this.hint)return e.to_serializable(this.hint);const t=this.new_,s=e.to_serializable(t);return this.model!=t&&e.remove_def(this.model),{kind:\"ModelChanged\",model:this.model.ref(),attr:this.attr,new:s}}}s.ModelChangedEvent=_,_.__name__=\"ModelChangedEvent\";class c extends d{constructor(e,t,s){super(e),this.column_source=t,this.patches=s}[i.serialize](e){return{kind:\"ColumnsPatched\",column_source:this.column_source,patches:this.patches}}}s.ColumnsPatchedEvent=c,c.__name__=\"ColumnsPatchedEvent\";class h extends d{constructor(e,t,s,n){super(e),this.column_source=t,this.data=s,this.rollover=n}[i.serialize](e){return{kind:\"ColumnsStreamed\",column_source:this.column_source,data:this.data,rollover:this.rollover}}}s.ColumnsStreamedEvent=h,h.__name__=\"ColumnsStreamedEvent\";class m extends d{constructor(e,t,s){super(e),this.title=t,this.setter_id=s}[i.serialize](e){return{kind:\"TitleChanged\",title:this.title}}}s.TitleChangedEvent=m,m.__name__=\"TitleChangedEvent\";class u extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}[i.serialize](e){return{kind:\"RootAdded\",model:e.to_serializable(this.model)}}}s.RootAddedEvent=u,u.__name__=\"RootAddedEvent\";class v extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}[i.serialize](e){return{kind:\"RootRemoved\",model:this.model.ref()}}}s.RootRemovedEvent=v,v.__name__=\"RootRemovedEvent\"},\n function _(t,r,n,i,e){i();const s=t(8),o=t(13);n.pretty=Symbol(\"pretty\");class c{constructor(t){this.precision=null==t?void 0:t.precision}to_string(t){return function(t){return s.isObject(t)&&void 0!==t[n.pretty]}(t)?t[n.pretty](this):s.isBoolean(t)?this.boolean(t):s.isNumber(t)?this.number(t):s.isString(t)?this.string(t):s.isArray(t)?this.array(t):s.isIterable(t)?this.iterable(t):s.isPlainObject(t)?this.object(t):`${t}`}token(t){return t}boolean(t){return`${t}`}number(t){return null!=this.precision?t.toFixed(this.precision):`${t}`}string(t){return`\"${t.replace(/'/g,\"\\\\'\")}\"`}array(t){const r=this.token,n=[];for(const r of t)n.push(this.to_string(r));return`${r(\"[\")}${n.join(`${r(\",\")} `)}${r(\"]\")}`}iterable(t){var r;const n=this.token,i=null!==(r=Object(t)[Symbol.toStringTag])&&void 0!==r?r:\"Object\",e=this.array(t);return`${i}${n(\"(\")}${e}${n(\")\")}`}object(t){const r=this.token,n=[];for(const[i,e]of o.entries(t))n.push(`${i}${r(\":\")} ${this.to_string(e)}`);return`${r(\"{\")}${n.join(`${r(\",\")} `)}${r(\"}\")}`}}n.Printer=c,c.__name__=\"Printer\",n.to_string=function(t,r){return new c(r).to_string(t)}},\n function _(n,o,r,e,t){e();const l=n(13),i=n(8);function c(n){return i.isObject(n)&&void 0!==n[r.clone]}r.clone=Symbol(\"clone\"),r.is_Cloneable=c;class s extends Error{}r.CloningError=s,s.__name__=\"CloningError\";class a{constructor(){}clone(n){if(c(n))return n[r.clone](this);if(i.isArray(n)){const o=n.length,r=new Array(o);for(let e=0;e{null!=this.layout&&(this.layout.visible=this.model.visible,this.plot_view.request_layout())}))}get needs_clip(){return null==this.layout}serializable_state(){const t=super.serializable_state();return null==this.layout?t:Object.assign(Object.assign({},t),{bbox:this.layout.bbox.box})}}i.AnnotationView=a,a.__name__=\"AnnotationView\";class l extends o.Renderer{constructor(t){super(t)}static init_Annotation(){this.override({level:\"annotation\"})}}i.Annotation=l,l.__name__=\"Annotation\",l.init_Annotation()},\n function _(e,i,t,n,s){n();const r=e(1),a=e(42),_=r.__importStar(e(45)),o=e(20),l=e(53),d=e(54);class h extends a.View{get coordinates(){const{_coordinates:e}=this;return null!=e?e:this._coordinates=this._initialize_coordinates()}initialize(){super.initialize(),this.visuals=new _.Visuals(this),this.needs_webgl_blit=!1}connect_signals(){super.connect_signals();const{x_range_name:e,y_range_name:i}=this.model.properties;this.on_change([e,i],(()=>this._initialize_coordinates()))}_initialize_coordinates(){const{x_range_name:e,y_range_name:i}=this.model,{frame:t}=this.plot_view,n=t.x_scales.get(e),s=t.y_scales.get(i);return new d.CoordinateTransform(n,s)}get plot_view(){return this.parent}get plot_model(){return this.parent.model}get layer(){const{overlays:e,primary:i}=this.canvas;return\"overlay\"==this.model.level?e:i}get canvas(){return this.plot_view.canvas_view}request_render(){this.request_paint()}request_paint(){this.plot_view.request_paint(this)}notify_finished(){this.plot_view.notify_finished()}get needs_clip(){return!1}get has_webgl(){return!1}render(){this.model.visible&&this._render(),this._has_finished=!0}renderer_view(e){}}t.RendererView=h,h.__name__=\"RendererView\";class c extends l.Model{constructor(e){super(e)}static init_Renderer(){this.define((({Boolean:e,String:i})=>({level:[o.RenderLevel,\"image\"],visible:[e,!0],x_range_name:[i,\"default\"],y_range_name:[i,\"default\"]})))}}t.Renderer=c,c.__name__=\"Renderer\",c.init_Renderer()},\n function _(t,e,s,i,n){i();const r=t(1),o=t(15),h=t(43),l=t(8),a=r.__importDefault(t(44));class _{constructor(t){this.removed=new o.Signal0(this,\"removed\"),this._ready=Promise.resolve(void 0),this._slots=new WeakMap;const{model:e,parent:s}=t;this.model=e,this.parent=s,this.root=null==s?this:s.root,this.removed.emit()}get ready(){return this._ready}connect(t,e){let s=this._slots.get(e);return null==s&&(s=(t,s)=>{const i=Promise.resolve(e.call(this,t,s));this._ready=this._ready.then((()=>i))},this._slots.set(e,s)),t.connect(s,this)}disconnect(t,e){return t.disconnect(e,this)}initialize(){this._has_finished=!1,this.is_root&&(this._stylesheet=h.stylesheet);for(const t of this.styles())this.stylesheet.append(t)}async lazy_initialize(){}remove(){this.disconnect_signals(),this.removed.emit()}toString(){return`${this.model.type}View(${this.model.id})`}serializable_state(){return{type:this.model.type}}get is_root(){return null==this.parent}assert_root(){if(!this.is_root)throw new Error(`${this.toString()} is not a root layout`)}has_finished(){return this._has_finished}get is_idle(){return this.has_finished()}connect_signals(){}disconnect_signals(){o.Signal.disconnect_receiver(this)}on_change(t,e){for(const s of l.isArray(t)?t:[t])this.connect(s.change,e)}cursor(t,e){return null}get stylesheet(){return this.is_root?this._stylesheet:this.root.stylesheet}styles(){return[a.default]}}s.View=_,_.__name__=\"View\"},\n function _(t,e,n,i,o){i();const s=t(8),l=t(13),r=t=>(e={},...n)=>{const i=document.createElement(t);i.classList.add(\"bk\");for(let[t,n]of l.entries(e))if(null!=n&&(!s.isBoolean(n)||n))if(\"class\"===t&&(s.isString(n)&&(n=n.split(/\\s+/)),s.isArray(n)))for(const t of n)null!=t&&i.classList.add(t);else if(\"style\"===t&&s.isPlainObject(n))for(const[t,e]of l.entries(n))i.style[t]=e;else if(\"data\"===t&&s.isPlainObject(n))for(const[t,e]of l.entries(n))i.dataset[t]=e;else i.setAttribute(t,n);function o(t){if(s.isString(t))i.appendChild(document.createTextNode(t));else if(t instanceof Node)i.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)i.appendChild(e);else if(null!=t&&!1!==t)throw new Error(`expected a DOM element, string, false or null, got ${JSON.stringify(t)}`)}for(const t of n)if(s.isArray(t))for(const e of t)o(e);else o(t);return i};function a(t){const e=t.parentNode;null!=e&&e.removeChild(t)}function c(t,...e){const n=t.firstChild;for(const i of e)t.insertBefore(i,n)}function d(t,e){var n,i,o;const s=Element.prototype;return(null!==(o=null!==(i=null!==(n=s.matches)&&void 0!==n?n:s.webkitMatchesSelector)&&void 0!==i?i:s.mozMatchesSelector)&&void 0!==o?o:s.msMatchesSelector).call(t,e)}function h(t){return parseFloat(t)||0}function u(t){const e=getComputedStyle(t);return{border:{top:h(e.borderTopWidth),bottom:h(e.borderBottomWidth),left:h(e.borderLeftWidth),right:h(e.borderRightWidth)},margin:{top:h(e.marginTop),bottom:h(e.marginBottom),left:h(e.marginLeft),right:h(e.marginRight)},padding:{top:h(e.paddingTop),bottom:h(e.paddingBottom),left:h(e.paddingLeft),right:h(e.paddingRight)}}}function f(t){const e=t.getBoundingClientRect();return{width:Math.ceil(e.width),height:Math.ceil(e.height)}}n.createElement=function(t,e,...n){return r(t)(e,...n)},n.div=r(\"div\"),n.span=r(\"span\"),n.canvas=r(\"canvas\"),n.link=r(\"link\"),n.style=r(\"style\"),n.a=r(\"a\"),n.p=r(\"p\"),n.i=r(\"i\"),n.pre=r(\"pre\"),n.button=r(\"button\"),n.label=r(\"label\"),n.input=r(\"input\"),n.select=r(\"select\"),n.option=r(\"option\"),n.optgroup=r(\"optgroup\"),n.textarea=r(\"textarea\"),n.nbsp=function(){return document.createTextNode(\" \")},n.append=function(t,...e){for(const n of e)t.appendChild(n)},n.remove=a,n.removeElement=a,n.replaceWith=function(t,e){const n=t.parentNode;null!=n&&n.replaceChild(e,t)},n.prepend=c,n.empty=function(t,e=!1){let n;for(;n=t.firstChild;)t.removeChild(n);if(e&&t instanceof Element)for(const e of t.attributes)t.removeAttributeNode(e)},n.display=function(t){t.style.display=\"\"},n.undisplay=function(t){t.style.display=\"none\"},n.show=function(t){t.style.visibility=\"\"},n.hide=function(t){t.style.visibility=\"hidden\"},n.offset=function(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},n.matches=d,n.parent=function(t,e){let n=t;for(;n=n.parentElement;)if(d(n,e))return n;return null},n.extents=u,n.size=f,n.scroll_size=function(t){return{width:Math.ceil(t.scrollWidth),height:Math.ceil(t.scrollHeight)}},n.outer_size=function(t){const{margin:{left:e,right:n,top:i,bottom:o}}=u(t),{width:s,height:l}=f(t);return{width:Math.ceil(s+e+n),height:Math.ceil(l+i+o)}},n.content_size=function(t){const{left:e,top:n}=t.getBoundingClientRect(),{padding:i}=u(t);let o=0,s=0;for(const l of t.children){const t=l.getBoundingClientRect();o=Math.max(o,Math.ceil(t.left-e-i.left+t.width)),s=Math.max(s,Math.ceil(t.top-n-i.top+t.height))}return{width:o,height:s}},n.position=function(t,e,n){const{style:i}=t;if(i.left=`${e.x}px`,i.top=`${e.y}px`,i.width=`${e.width}px`,i.height=`${e.height}px`,null==n)i.margin=\"\";else{const{top:t,right:e,bottom:o,left:s}=n;i.margin=`${t}px ${e}px ${o}px ${s}px`}},n.children=function(t){return Array.from(t.children)};class p{constructor(t){this.el=t,this.classList=t.classList}get values(){const t=[];for(let e=0;e{document.addEventListener(\"DOMContentLoaded\",(()=>t()),{once:!0})}))}},\n function _(o,i,t,e,r){e(),t.root=\"bk-root\",t.default=\".bk-root{position:relative;width:auto;height:auto;z-index:0;box-sizing:border-box;font-family:Helvetica, Arial, sans-serif;font-size:13px;}.bk-root .bk,.bk-root .bk:before,.bk-root .bk:after{box-sizing:inherit;margin:0;border:0;padding:0;background-image:none;font-family:inherit;font-size:100%;line-height:1.42857143;}.bk-root pre.bk{font-family:Courier, monospace;}\"},\n function _(e,t,r,a,c){a();const l=e(1),n=e(46);c(\"Line\",n.Line),c(\"LineScalar\",n.LineScalar),c(\"LineVector\",n.LineVector);const i=e(49);c(\"Fill\",i.Fill),c(\"FillScalar\",i.FillScalar),c(\"FillVector\",i.FillVector);const s=e(50);c(\"Text\",s.Text),c(\"TextScalar\",s.TextScalar),c(\"TextVector\",s.TextVector);const o=e(51);c(\"Hatch\",o.Hatch),c(\"HatchScalar\",o.HatchScalar),c(\"HatchVector\",o.HatchVector);const u=l.__importStar(e(48)),V=e(47);c(\"VisualProperties\",V.VisualProperties),c(\"VisualUniforms\",V.VisualUniforms);class h{constructor(e){this._visuals=[];for(const[t,r]of e.model._mixins){const a=(()=>{switch(r){case u.Line:return new n.Line(e,t);case u.LineScalar:return new n.LineScalar(e,t);case u.LineVector:return new n.LineVector(e,t);case u.Fill:return new i.Fill(e,t);case u.FillScalar:return new i.FillScalar(e,t);case u.FillVector:return new i.FillVector(e,t);case u.Text:return new s.Text(e,t);case u.TextScalar:return new s.TextScalar(e,t);case u.TextVector:return new s.TextVector(e,t);case u.Hatch:return new o.Hatch(e,t);case u.HatchScalar:return new o.HatchScalar(e,t);case u.HatchVector:return new o.HatchVector(e,t);default:throw new Error(\"unknown visual\")}})();this._visuals.push(a),Object.defineProperty(this,t+a.type,{get:()=>a,configurable:!1,enumerable:!0})}}*[Symbol.iterator](){yield*this._visuals}}r.Visuals=h,h.__name__=\"Visuals\"},\n function _(e,t,i,l,s){l();const n=e(1),a=e(47),o=n.__importStar(e(48)),r=e(22),_=e(8);function h(e){if(_.isArray(e))return e;switch(e){case\"solid\":return[];case\"dashed\":return[6];case\"dotted\":return[2,4];case\"dotdash\":return[2,4,6,4];case\"dashdot\":return[6,4,2,4];default:return e.split(\" \").map(Number).filter(_.isInteger)}}i.resolve_line_dash=h;class c extends a.VisualProperties{get doit(){const e=this.line_color.get_value(),t=this.line_alpha.get_value(),i=this.line_width.get_value();return!(null==e||0==t||0==i)}set_value(e){const t=this.line_color.get_value(),i=this.line_alpha.get_value();e.strokeStyle=r.color2css(t,i),e.lineWidth=this.line_width.get_value(),e.lineJoin=this.line_join.get_value(),e.lineCap=this.line_cap.get_value(),e.lineDash=h(this.line_dash.get_value()),e.lineDashOffset=this.line_dash_offset.get_value()}}i.Line=c,c.__name__=\"Line\";class u extends a.VisualUniforms{get doit(){const e=this.line_color.value,t=this.line_alpha.value,i=this.line_width.value;return!(0==e||0==t||0==i)}set_value(e){const t=this.line_color.value,i=this.line_alpha.value;e.strokeStyle=r.color2css(t,i),e.lineWidth=this.line_width.value,e.lineJoin=this.line_join.value,e.lineCap=this.line_cap.value,e.lineDash=h(this.line_dash.value),e.lineDashOffset=this.line_dash_offset.value}}i.LineScalar=u,u.__name__=\"LineScalar\";class d extends a.VisualUniforms{get doit(){const{line_color:e}=this;if(e.is_Scalar()&&0==e.value)return!1;const{line_alpha:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{line_width:i}=this;return!i.is_Scalar()||0!=i.value}set_vectorize(e,t){const i=this.line_color.get(t),l=this.line_alpha.get(t),s=this.line_width.get(t),n=this.line_join.get(t),a=this.line_cap.get(t),o=this.line_dash.get(t),_=this.line_dash_offset.get(t);e.strokeStyle=r.color2css(i,l),e.lineWidth=s,e.lineJoin=n,e.lineCap=a,e.lineDash=h(o),e.lineDashOffset=_}}i.LineVector=d,d.__name__=\"LineVector\",c.prototype.type=\"line\",c.prototype.attrs=Object.keys(o.Line),u.prototype.type=\"line\",u.prototype.attrs=Object.keys(o.LineScalar),d.prototype.type=\"line\",d.prototype.attrs=Object.keys(o.LineVector)},\n function _(t,s,o,i,r){i();class e{constructor(t,s=\"\"){this.obj=t,this.prefix=s;const o=this;this._props=[];for(const i of this.attrs){const r=t.model.properties[s+i];r.change.connect((()=>this.update())),o[i]=r,this._props.push(r)}this.update()}*[Symbol.iterator](){yield*this._props}update(){}}o.VisualProperties=e,e.__name__=\"VisualProperties\";class p{constructor(t,s=\"\"){this.obj=t,this.prefix=s;for(const o of this.attrs)Object.defineProperty(this,o,{get:()=>t[s+o]})}*[Symbol.iterator](){for(const t of this.attrs)yield this.obj.model.properties[this.prefix+t]}update(){}}o.VisualUniforms=p,p.__name__=\"VisualUniforms\"},\n function _(e,l,t,a,c){a();const r=e(1),o=r.__importStar(e(18)),n=e(20),i=r.__importStar(e(21)),_=e(13);t.Line={line_color:[i.Nullable(i.Color),\"black\"],line_alpha:[i.Alpha,1],line_width:[i.Number,1],line_join:[n.LineJoin,\"bevel\"],line_cap:[n.LineCap,\"butt\"],line_dash:[i.Or(n.LineDash,i.Array(i.Number)),[]],line_dash_offset:[i.Number,0]},t.Fill={fill_color:[i.Nullable(i.Color),\"gray\"],fill_alpha:[i.Alpha,1]},t.Hatch={hatch_color:[i.Nullable(i.Color),\"black\"],hatch_alpha:[i.Alpha,1],hatch_scale:[i.Number,12],hatch_pattern:[i.Nullable(i.Or(n.HatchPatternType,i.String)),null],hatch_weight:[i.Number,1],hatch_extra:[i.Dict(i.AnyRef()),{}]},t.Text={text_color:[i.Nullable(i.Color),\"#444444\"],text_alpha:[i.Alpha,1],text_font:[o.Font,\"helvetica\"],text_font_size:[i.FontSize,\"16px\"],text_font_style:[n.FontStyle,\"normal\"],text_align:[n.TextAlign,\"left\"],text_baseline:[n.TextBaseline,\"bottom\"],text_line_height:[i.Number,1.2]},t.LineScalar={line_color:[o.ColorScalar,\"black\"],line_alpha:[o.NumberScalar,1],line_width:[o.NumberScalar,1],line_join:[o.LineJoinScalar,\"bevel\"],line_cap:[o.LineCapScalar,\"butt\"],line_dash:[o.LineDashScalar,[]],line_dash_offset:[o.NumberScalar,0]},t.FillScalar={fill_color:[o.ColorScalar,\"gray\"],fill_alpha:[o.NumberScalar,1]},t.HatchScalar={hatch_color:[o.ColorScalar,\"black\"],hatch_alpha:[o.NumberScalar,1],hatch_scale:[o.NumberScalar,12],hatch_pattern:[o.NullStringScalar,null],hatch_weight:[o.NumberScalar,1],hatch_extra:[o.AnyScalar,{}]},t.TextScalar={text_color:[o.ColorScalar,\"#444444\"],text_alpha:[o.NumberScalar,1],text_font:[o.FontScalar,\"helvetica\"],text_font_size:[o.FontSizeScalar,\"16px\"],text_font_style:[o.FontStyleScalar,\"normal\"],text_align:[o.TextAlignScalar,\"left\"],text_baseline:[o.TextBaselineScalar,\"bottom\"],text_line_height:[o.NumberScalar,1.2]},t.LineVector={line_color:[o.ColorSpec,\"black\"],line_alpha:[o.NumberSpec,1],line_width:[o.NumberSpec,1],line_join:[o.LineJoinSpec,\"bevel\"],line_cap:[o.LineCapSpec,\"butt\"],line_dash:[o.LineDashSpec,[]],line_dash_offset:[o.NumberSpec,0]},t.FillVector={fill_color:[o.ColorSpec,\"gray\"],fill_alpha:[o.NumberSpec,1]},t.HatchVector={hatch_color:[o.ColorSpec,\"black\"],hatch_alpha:[o.NumberSpec,1],hatch_scale:[o.NumberSpec,12],hatch_pattern:[o.NullStringSpec,null],hatch_weight:[o.NumberSpec,1],hatch_extra:[o.AnyScalar,{}]},t.TextVector={text_color:[o.ColorSpec,\"#444444\"],text_alpha:[o.NumberSpec,1],text_font:[o.FontSpec,\"helvetica\"],text_font_size:[o.FontSizeSpec,\"16px\"],text_font_style:[o.FontStyleSpec,\"normal\"],text_align:[o.TextAlignSpec,\"left\"],text_baseline:[o.TextBaselineSpec,\"bottom\"],text_line_height:[o.NumberSpec,1.2]},t.attrs_of=function(e,l,t,a=!1){const c={};for(const r of _.keys(t)){const t=`${l}${r}`,o=e[t];c[a?t:r]=o}return c}},\n function _(l,t,e,i,s){i();const o=l(1),a=l(47),r=o.__importStar(l(48)),c=l(22);class _ extends a.VisualProperties{get doit(){const l=this.fill_color.get_value(),t=this.fill_alpha.get_value();return!(null==l||0==t)}set_value(l){const t=this.fill_color.get_value(),e=this.fill_alpha.get_value();l.fillStyle=c.color2css(t,e)}}e.Fill=_,_.__name__=\"Fill\";class n extends a.VisualUniforms{get doit(){const l=this.fill_color.value,t=this.fill_alpha.value;return!(0==l||0==t)}set_value(l){const t=this.fill_color.value,e=this.fill_alpha.value;l.fillStyle=c.color2css(t,e)}}e.FillScalar=n,n.__name__=\"FillScalar\";class p extends a.VisualUniforms{get doit(){const{fill_color:l}=this;if(l.is_Scalar()&&0==l.value)return!1;const{fill_alpha:t}=this;return!t.is_Scalar()||0!=t.value}set_vectorize(l,t){const e=this.fill_color.get(t),i=this.fill_alpha.get(t);l.fillStyle=c.color2css(e,i)}}e.FillVector=p,p.__name__=\"FillVector\",_.prototype.type=\"fill\",_.prototype.attrs=Object.keys(r.Fill),n.prototype.type=\"fill\",n.prototype.attrs=Object.keys(r.FillScalar),p.prototype.type=\"fill\",p.prototype.attrs=Object.keys(r.FillVector)},\n function _(t,e,s,l,a){l();const o=t(1),_=t(47),i=o.__importStar(t(48)),n=t(22);class x extends _.VisualProperties{get doit(){const t=this.text_color.get_value(),e=this.text_alpha.get_value();return!(null==t||0==e)}set_value(t){const e=this.text_color.get_value(),s=this.text_alpha.get_value();t.fillStyle=n.color2css(e,s),t.font=this.font_value(),t.textAlign=this.text_align.get_value(),t.textBaseline=this.text_baseline.get_value()}font_value(){return`${this.text_font_style.get_value()} ${this.text_font_size.get_value()} ${this.text_font.get_value()}`}}s.Text=x,x.__name__=\"Text\";class r extends _.VisualUniforms{get doit(){const t=this.text_color.value,e=this.text_alpha.value;return!(0==t||0==e)}set_value(t){const e=this.text_color.value,s=this.text_alpha.value,l=this.font_value(),a=this.text_align.value,o=this.text_baseline.value;t.fillStyle=n.color2css(e,s),t.font=l,t.textAlign=a,t.textBaseline=o}font_value(){return`${this.text_font_style.value} ${this.text_font_size.value} ${this.text_font.value}`}}s.TextScalar=r,r.__name__=\"TextScalar\";class u extends _.VisualUniforms{get doit(){const{text_color:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{text_alpha:e}=this;return!e.is_Scalar()||0!=e.value}set_vectorize(t,e){const s=this.text_color.get(e),l=this.text_alpha.get(e),a=this.font_value(e),o=this.text_align.get(e),_=this.text_baseline.get(e);t.fillStyle=n.color2css(s,l),t.font=a,t.textAlign=o,t.textBaseline=_}font_value(t){return`${this.text_font_style.get(t)} ${this.text_font_size.get(t)} ${this.text_font.get(t)}`}}s.TextVector=u,u.__name__=\"TextVector\",x.prototype.type=\"text\",x.prototype.attrs=Object.keys(i.Text),r.prototype.type=\"text\",r.prototype.attrs=Object.keys(i.TextScalar),u.prototype.type=\"text\",u.prototype.attrs=Object.keys(i.TextVector)},\n function _(t,e,a,h,r){h();const i=t(1),s=t(47),c=t(52),n=i.__importStar(t(18)),_=i.__importStar(t(48));class l extends s.VisualProperties{constructor(){super(...arguments),this._update_iteration=0}update(){if(this._update_iteration++,this._hatch_image=null,!this.doit)return;const t=this.hatch_color.get_value(),e=this.hatch_alpha.get_value(),a=this.hatch_scale.get_value(),h=this.hatch_pattern.get_value(),r=this.hatch_weight.get_value(),i=t=>{this._hatch_image=t},s=this.hatch_extra.get_value()[h];if(null!=s){const h=s.get_pattern(t,e,a,r);if(h instanceof Promise){const{_update_iteration:t}=this;h.then((e=>{this._update_iteration==t&&(i(e),this.obj.request_render())}))}else i(h)}else{const s=this.obj.canvas.create_layer(),n=c.get_pattern(s,h,t,e,a,r);i(n)}}get doit(){const t=this.hatch_color.get_value(),e=this.hatch_alpha.get_value(),a=this.hatch_pattern.get_value();return!(null==t||0==e||\" \"==a||\"blank\"==a||null==a)}set_value(t){const e=this.pattern(t);t.fillStyle=null!=e?e:\"transparent\"}pattern(t){const e=this._hatch_image;return null==e?null:t.createPattern(e,this.repetition())}repetition(){const t=this.hatch_pattern.get_value(),e=this.hatch_extra.get_value()[t];if(null==e)return\"repeat\";switch(e.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.Hatch=l,l.__name__=\"Hatch\";class o extends s.VisualUniforms{constructor(){super(...arguments),this._static_doit=!1,this._update_iteration=0}_compute_static_doit(){const t=this.hatch_color.value,e=this.hatch_alpha.value,a=this.hatch_pattern.value;return!(null==t||0==e||\" \"==a||\"blank\"==a||null==a)}update(){this._update_iteration++;const t=this.hatch_color.length;if(this._hatch_image=new n.UniformScalar(null,t),this._static_doit=this._compute_static_doit(),!this._static_doit)return;const e=this.hatch_color.value,a=this.hatch_alpha.value,h=this.hatch_scale.value,r=this.hatch_pattern.value,i=this.hatch_weight.value,s=e=>{this._hatch_image=new n.UniformScalar(e,t)},_=this.hatch_extra.value[r];if(null!=_){const t=_.get_pattern(e,a,h,i);if(t instanceof Promise){const{_update_iteration:e}=this;t.then((t=>{this._update_iteration==e&&(s(t),this.obj.request_render())}))}else s(t)}else{const t=this.obj.canvas.create_layer(),n=c.get_pattern(t,r,e,a,h,i);s(n)}}get doit(){return this._static_doit}set_value(t){var e;t.fillStyle=null!==(e=this.pattern(t))&&void 0!==e?e:\"transparent\"}pattern(t){const e=this._hatch_image.value;return null==e?null:t.createPattern(e,this.repetition())}repetition(){const t=this.hatch_pattern.value,e=this.hatch_extra.value[t];if(null==e)return\"repeat\";switch(e.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.HatchScalar=o,o.__name__=\"HatchScalar\";class u extends s.VisualUniforms{constructor(){super(...arguments),this._static_doit=!1,this._update_iteration=0}_compute_static_doit(){const{hatch_color:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{hatch_alpha:e}=this;if(e.is_Scalar()&&0==e.value)return!1;const{hatch_pattern:a}=this;if(a.is_Scalar()){const t=a.value;if(\" \"==t||\"blank\"==t||null==t)return!1}return!0}update(){this._update_iteration++;const t=this.hatch_color.length;if(this._hatch_image=new n.UniformScalar(null,t),this._static_doit=this._compute_static_doit(),!this._static_doit)return;const e=(t,e,a,h,r,i)=>{const s=this.hatch_extra.value[t];if(null!=s){const t=s.get_pattern(e,a,h,r);if(t instanceof Promise){const{_update_iteration:e}=this;t.then((t=>{this._update_iteration==e&&(i(t),this.obj.request_render())}))}else i(t)}else{const s=this.obj.canvas.create_layer(),n=c.get_pattern(s,t,e,a,h,r);i(n)}};if(this.hatch_color.is_Scalar()&&this.hatch_alpha.is_Scalar()&&this.hatch_scale.is_Scalar()&&this.hatch_pattern.is_Scalar()&&this.hatch_weight.is_Scalar()){const a=this.hatch_color.value,h=this.hatch_alpha.value,r=this.hatch_scale.value;e(this.hatch_pattern.value,a,h,r,this.hatch_weight.value,(e=>{this._hatch_image=new n.UniformScalar(e,t)}))}else{const a=new Array(t);a.fill(null),this._hatch_image=new n.UniformVector(a);for(let h=0;h{a[h]=t}))}}}get doit(){return this._static_doit}set_vectorize(t,e){var a;t.fillStyle=null!==(a=this.pattern(t,e))&&void 0!==a?a:\"transparent\"}pattern(t,e){const a=this._hatch_image.get(e);return null==a?null:t.createPattern(a,this.repetition(e))}repetition(t){const e=this.hatch_pattern.get(t),a=this.hatch_extra.value[e];if(null==a)return\"repeat\";switch(a.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.HatchVector=u,u.__name__=\"HatchVector\",l.prototype.type=\"hatch\",l.prototype.attrs=Object.keys(_.Hatch),o.prototype.type=\"hatch\",o.prototype.attrs=Object.keys(_.HatchScalar),u.prototype.type=\"hatch\",u.prototype.attrs=Object.keys(_.HatchVector)},\n function _(e,o,a,s,r){s();const i=e(22);function l(e,o,a){e.moveTo(0,a+.5),e.lineTo(o,a+.5),e.stroke()}function n(e,o,a){e.moveTo(a+.5,0),e.lineTo(a+.5,o),e.stroke()}function t(e,o){e.moveTo(0,o),e.lineTo(o,0),e.stroke(),e.moveTo(0,0),e.lineTo(o,o),e.stroke()}a.hatch_aliases={\" \":\"blank\",\".\":\"dot\",o:\"ring\",\"-\":\"horizontal_line\",\"|\":\"vertical_line\",\"+\":\"cross\",'\"':\"horizontal_dash\",\":\":\"vertical_dash\",\"@\":\"spiral\",\"/\":\"right_diagonal_line\",\"\\\\\":\"left_diagonal_line\",x:\"diagonal_cross\",\",\":\"right_diagonal_dash\",\"`\":\"left_diagonal_dash\",v:\"horizontal_wave\",\">\":\"vertical_wave\",\"*\":\"criss_cross\"},a.get_pattern=function(e,o,s,r,c,k){return e.resize(c,c),e.prepare(),function(e,o,s,r,c,k){var _;const T=c,v=T/2,h=v/2,d=i.color2css(s,r);switch(e.strokeStyle=d,e.fillStyle=d,e.lineCap=\"square\",e.lineWidth=k,null!==(_=a.hatch_aliases[o])&&void 0!==_?_:o){case\"blank\":break;case\"dot\":e.arc(v,v,v/2,0,2*Math.PI,!0),e.fill();break;case\"ring\":e.arc(v,v,v/2,0,2*Math.PI,!0),e.stroke();break;case\"horizontal_line\":l(e,T,v);break;case\"vertical_line\":n(e,T,v);break;case\"cross\":l(e,T,v),n(e,T,v);break;case\"horizontal_dash\":l(e,v,v);break;case\"vertical_dash\":n(e,v,v);break;case\"spiral\":{const o=T/30;e.moveTo(v,v);for(let a=0;a<360;a++){const s=.1*a,r=v+o*s*Math.cos(s),i=v+o*s*Math.sin(s);e.lineTo(r,i)}e.stroke();break}case\"right_diagonal_line\":e.moveTo(.5-h,T),e.lineTo(h+.5,0),e.stroke(),e.moveTo(h+.5,T),e.lineTo(3*h+.5,0),e.stroke(),e.moveTo(3*h+.5,T),e.lineTo(5*h+.5,0),e.stroke(),e.stroke();break;case\"left_diagonal_line\":e.moveTo(h+.5,T),e.lineTo(.5-h,0),e.stroke(),e.moveTo(3*h+.5,T),e.lineTo(h+.5,0),e.stroke(),e.moveTo(5*h+.5,T),e.lineTo(3*h+.5,0),e.stroke(),e.stroke();break;case\"diagonal_cross\":t(e,T);break;case\"right_diagonal_dash\":e.moveTo(h+.5,3*h+.5),e.lineTo(3*h+.5,h+.5),e.stroke();break;case\"left_diagonal_dash\":e.moveTo(h+.5,h+.5),e.lineTo(3*h+.5,3*h+.5),e.stroke();break;case\"horizontal_wave\":e.moveTo(0,h),e.lineTo(v,3*h),e.lineTo(T,h),e.stroke();break;case\"vertical_wave\":e.moveTo(h,0),e.lineTo(3*h,v),e.lineTo(h,T),e.stroke();break;case\"criss_cross\":t(e,T),l(e,T,v),n(e,T,v)}}(e.ctx,o,s,r,c,k),e.canvas}},\n function _(e,t,s,n,c){n();const a=e(14),i=e(8),r=e(13),l=e(19);class o extends a.HasProps{constructor(e){super(e)}get is_syncable(){return this.syncable}static init_Model(){this.define((({Any:e,Unknown:t,Boolean:s,String:n,Array:c,Dict:a,Nullable:i})=>({tags:[c(t),[]],name:[i(n),null],js_property_callbacks:[a(c(e)),{}],js_event_callbacks:[a(c(e)),{}],subscribed_events:[c(n),[]],syncable:[s,!0]})))}initialize(){super.initialize(),this._js_callbacks=new Map}connect_signals(){super.connect_signals(),this._update_property_callbacks(),this.connect(this.properties.js_property_callbacks.change,(()=>this._update_property_callbacks())),this.connect(this.properties.js_event_callbacks.change,(()=>this._update_event_callbacks())),this.connect(this.properties.subscribed_events.change,(()=>this._update_event_callbacks()))}_process_event(e){var t;for(const s of null!==(t=this.js_event_callbacks[e.event_name])&&void 0!==t?t:[])s.execute(e);null!=this.document&&this.subscribed_events.some((t=>t==e.event_name))&&this.document.event_manager.send_event(e)}trigger_event(e){null!=this.document&&(e.origin=this,this.document.event_manager.trigger(e))}_update_event_callbacks(){null!=this.document?this.document.event_manager.subscribed_models.add(this):l.logger.warn(\"WARNING: Document not defined for updating event callbacks\")}_update_property_callbacks(){const e=e=>{const[t,s=null]=e.split(\":\");return null!=s?this.properties[s][t]:this[t]};for(const[t,s]of this._js_callbacks){const n=e(t);for(const e of s)this.disconnect(n,e)}this._js_callbacks.clear();for(const[t,s]of r.entries(this.js_property_callbacks)){const n=s.map((e=>()=>e.execute(this)));this._js_callbacks.set(t,n);const c=e(t);for(const e of n)this.connect(c,e)}}_doc_attached(){r.isEmpty(this.js_event_callbacks)&&0==this.subscribed_events.length||this._update_event_callbacks()}_doc_detached(){this.document.event_manager.subscribed_models.delete(this)}select(e){if(i.isString(e))return[...this.references()].filter((t=>t instanceof o&&t.name===e));if(e.prototype instanceof a.HasProps)return[...this.references()].filter((t=>t instanceof e));throw new Error(\"invalid selector\")}select_one(e){const t=this.select(e);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(\"found more than one object matching given selector\")}}}s.Model=o,o.__name__=\"Model\",o.init_Model()},\n function _(s,e,_,t,a){t();class r{constructor(s,e){this.x_scale=s,this.y_scale=e,this.x_range=this.x_scale.source_range,this.y_range=this.y_scale.source_range,this.ranges=[this.x_range,this.y_range],this.scales=[this.x_scale,this.y_scale]}map_to_screen(s,e){return[this.x_scale.v_compute(s),this.y_scale.v_compute(e)]}map_from_screen(s,e){return[this.x_scale.v_invert(s),this.y_scale.v_invert(e)]}}_.CoordinateTransform=r,r.__name__=\"CoordinateTransform\"},\n function _(t,e,s,a,i){a();const n=t(1),_=t(56),r=t(133),o=t(48),l=t(20),d=t(24),h=t(122),c=n.__importStar(t(18)),u=t(10);class v extends _.DataAnnotationView{async lazy_initialize(){await super.lazy_initialize();const{start:t,end:e}=this.model;null!=t&&(this.start=await h.build_view(t,{parent:this})),null!=e&&(this.end=await h.build_view(e,{parent:this}))}set_data(t){var e,s;super.set_data(t),null===(e=this.start)||void 0===e||e.set_data(t),null===(s=this.end)||void 0===s||s.set_data(t)}remove(){var t,e;null===(t=this.start)||void 0===t||t.remove(),null===(e=this.end)||void 0===e||e.remove(),super.remove()}map_data(){const{frame:t}=this.plot_view;\"data\"==this.model.start_units?(this._sx_start=this.coordinates.x_scale.v_compute(this._x_start),this._sy_start=this.coordinates.y_scale.v_compute(this._y_start)):(this._sx_start=t.bbox.xview.v_compute(this._x_start),this._sy_start=t.bbox.yview.v_compute(this._y_start)),\"data\"==this.model.end_units?(this._sx_end=this.coordinates.x_scale.v_compute(this._x_end),this._sy_end=this.coordinates.y_scale.v_compute(this._y_end)):(this._sx_end=t.bbox.xview.v_compute(this._x_end),this._sy_end=t.bbox.yview.v_compute(this._y_end));const{_sx_start:e,_sy_start:s,_sx_end:a,_sy_end:i}=this,n=e.length,_=this._angles=new d.ScreenArray(n);for(let t=0;t({x_start:[c.XCoordinateSpec,{field:\"x_start\"}],y_start:[c.YCoordinateSpec,{field:\"y_start\"}],start_units:[l.SpatialUnits,\"data\"],start:[e(t(r.ArrowHead)),null],x_end:[c.XCoordinateSpec,{field:\"x_end\"}],y_end:[c.YCoordinateSpec,{field:\"y_end\"}],end_units:[l.SpatialUnits,\"data\"],end:[e(t(r.ArrowHead)),()=>new r.OpenHead]})))}}s.Arrow=p,p.__name__=\"Arrow\",p.init_Arrow()},\n function _(t,n,s,a,e){a();const i=t(1),o=t(40),c=t(57),_=t(130),r=t(65),l=i.__importStar(t(18));class h extends o.AnnotationView{constructor(){super(...arguments),this._initial_set_data=!1}connect_signals(){super.connect_signals();const t=()=>{this.set_data(this.model.source),this.request_render()};this.connect(this.model.change,t),this.connect(this.model.source.streaming,t),this.connect(this.model.source.patching,t),this.connect(this.model.source.change,t)}set_data(t){const n=this;for(const s of this.model)if(s instanceof l.VectorSpec||s instanceof l.ScalarSpec)if(s instanceof l.BaseCoordinateSpec){const a=s.array(t);n[`_${s.attr}`]=a}else{const a=s.uniform(t);n[`${s.attr}`]=a}this.plot_model.use_map&&(null!=n._x&&r.inplace.project_xy(n._x,n._y),null!=n._xs&&r.inplace.project_xsys(n._xs,n._ys));for(const t of this.visuals)t.update()}_render(){this._initial_set_data||(this.set_data(this.model.source),this._initial_set_data=!0),this.map_data(),this.paint(this.layer.ctx)}}s.DataAnnotationView=h,h.__name__=\"DataAnnotationView\";class u extends o.Annotation{constructor(t){super(t)}static init_DataAnnotation(){this.define((({Ref:t})=>({source:[t(c.ColumnarDataSource),()=>new _.ColumnDataSource]})))}}s.DataAnnotation=u,u.__name__=\"DataAnnotation\",u.init_DataAnnotation()},\n function _(t,e,n,a,i){a();const s=t(58),r=t(15),l=t(19),o=t(60),c=t(8),u=t(9),h=t(13),g=t(59),d=t(129),_=t(29);class m extends s.DataSource{constructor(t){super(t)}get_array(t){let e=this.data[t];return null==e?this.data[t]=e=[]:c.isArray(e)||(this.data[t]=e=Array.from(e)),e}static init_ColumnarDataSource(){this.define((({Ref:t})=>({selection_policy:[t(d.SelectionPolicy),()=>new d.UnionRenderers]}))),this.internal((({AnyRef:t})=>({selection_manager:[t(),t=>new o.SelectionManager({source:t})],inspected:[t(),()=>new g.Selection]})))}initialize(){super.initialize(),this._select=new r.Signal0(this,\"select\"),this.inspect=new r.Signal(this,\"inspect\"),this.streaming=new r.Signal0(this,\"streaming\"),this.patching=new r.Signal(this,\"patching\")}get_column(t){const e=this.data[t];return null!=e?e:null}columns(){return h.keys(this.data)}get_length(t=!0){const e=u.uniq(h.values(this.data).map((t=>_.is_NDArray(t)?t.shape[0]:t.length)));switch(e.length){case 0:return null;case 1:return e[0];default:{const n=\"data source has columns of inconsistent lengths\";if(t)return l.logger.warn(n),e.sort()[0];throw new Error(n)}}}get length(){var t;return null!==(t=this.get_length())&&void 0!==t?t:0}clear(){const t={};for(const e of this.columns())t[e]=new this.data[e].constructor(0);this.data=t}}n.ColumnarDataSource=m,m.__name__=\"ColumnarDataSource\",m.init_ColumnarDataSource()},\n function _(e,t,c,n,a){n();const o=e(53),i=e(59);class s extends o.Model{constructor(e){super(e)}static init_DataSource(){this.define((({Ref:e})=>({selected:[e(i.Selection),()=>new i.Selection]})))}}c.DataSource=s,s.__name__=\"DataSource\",s.init_DataSource()},\n function _(i,e,s,t,n){t();const l=i(53),c=i(9),h=i(13);class d extends l.Model{constructor(i){super(i)}get_view(){return this.view}static init_Selection(){this.define((({Int:i,Array:e,Dict:s})=>({indices:[e(i),[]],line_indices:[e(i),[]],multiline_indices:[s(e(i)),{}]}))),this.internal((({Int:i,Array:e,AnyRef:s,Struct:t,Nullable:n})=>({selected_glyphs:[e(s()),[]],view:[n(s()),null],image_indices:[e(t({index:i,dim1:i,dim2:i,flat_index:i})),[]]})))}get selected_glyph(){return this.selected_glyphs.length>0?this.selected_glyphs[0]:null}add_to_selected_glyphs(i){this.selected_glyphs.push(i)}update(i,e=!0,s=\"replace\"){switch(s){case\"replace\":this.indices=i.indices,this.line_indices=i.line_indices,this.selected_glyphs=i.selected_glyphs,this.view=i.view,this.multiline_indices=i.multiline_indices,this.image_indices=i.image_indices;break;case\"append\":this.update_through_union(i);break;case\"intersect\":this.update_through_intersection(i);break;case\"subtract\":this.update_through_subtraction(i)}}clear(){this.indices=[],this.line_indices=[],this.multiline_indices={},this.view=null,this.selected_glyphs=[]}is_empty(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length}update_through_union(i){this.indices=c.union(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}update_through_intersection(i){this.indices=c.intersection(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}update_through_subtraction(i){this.indices=c.difference(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}}s.Selection=d,d.__name__=\"Selection\",d.init_Selection()},\n function _(e,t,s,n,i){n();const o=e(14),c=e(59),r=e(61),l=e(123);class p extends o.HasProps{constructor(e){super(e),this.inspectors=new Map}static init_SelectionManager(){this.internal((({AnyRef:e})=>({source:[e()]})))}select(e,t,s,n=\"replace\"){const i=[],o=[];for(const t of e)t instanceof r.GlyphRendererView?i.push(t):t instanceof l.GraphRendererView&&o.push(t);let c=!1;for(const e of o){const i=e.model.selection_policy.hit_test(t,e);c=c||e.model.selection_policy.do_selection(i,e.model,s,n)}if(i.length>0){const e=this.source.selection_policy.hit_test(t,i);c=c||this.source.selection_policy.do_selection(e,this.source,s,n)}return c}inspect(e,t){let s=!1;if(e instanceof r.GlyphRendererView){const n=e.hit_test(t);if(null!=n){s=!n.is_empty();const i=this.get_or_create_inspector(e.model);i.update(n,!0,\"replace\"),this.source.setv({inspected:i},{silent:!0}),this.source.inspect.emit([e.model,{geometry:t}])}}else if(e instanceof l.GraphRendererView){const n=e.model.inspection_policy.hit_test(t,e);s=s||e.model.inspection_policy.do_inspection(n,t,e,!1,\"replace\")}return s}clear(e){this.source.selected.clear(),null!=e&&this.get_or_create_inspector(e.model).clear()}get_or_create_inspector(e){let t=this.inspectors.get(e);return null==t&&(t=new c.Selection,this.inspectors.set(e,t)),t}}s.SelectionManager=p,p.__name__=\"SelectionManager\",p.init_SelectionManager()},\n function _(e,t,i,s,l){s();const h=e(62),n=e(63),o=e(116),a=e(117),c=e(119),d=e(98),_=e(57),r=e(120),p=e(24),g=e(12),u=e(9),y=e(13),m=e(122),v=e(104),f={fill:{},line:{}},w={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},b={fill:{fill_alpha:.2},line:{}};class V extends h.DataRendererView{get glyph_view(){return this.glyph}async lazy_initialize(){var e,t;await super.lazy_initialize();const i=this.model.glyph;this.glyph=await this.build_glyph_view(i);const s=\"fill\"in this.glyph.visuals,l=\"line\"in this.glyph.visuals,h=Object.assign({},i.attributes);function n(e){const t=y.clone(h);return s&&y.extend(t,e.fill),l&&y.extend(t,e.line),new i.constructor(t)}delete h.id;let{selection_glyph:o}=this.model;null==o?o=n({fill:{},line:{}}):\"auto\"==o&&(o=n(f)),this.selection_glyph=await this.build_glyph_view(o);let{nonselection_glyph:a}=this.model;null==a?a=n({fill:{},line:{}}):\"auto\"==a&&(a=n(b)),this.nonselection_glyph=await this.build_glyph_view(a);const{hover_glyph:c}=this.model;null!=c&&(this.hover_glyph=await this.build_glyph_view(c));const{muted_glyph:d}=this.model;null!=d&&(this.muted_glyph=await this.build_glyph_view(d));const _=n(w);this.decimated_glyph=await this.build_glyph_view(_),this.selection_glyph.set_base(this.glyph),this.nonselection_glyph.set_base(this.glyph),null===(e=this.hover_glyph)||void 0===e||e.set_base(this.glyph),null===(t=this.muted_glyph)||void 0===t||t.set_base(this.glyph),this.decimated_glyph.set_base(this.glyph),this.set_data()}async build_glyph_view(e){return m.build_view(e,{parent:this})}remove(){var e,t;this.glyph.remove(),this.selection_glyph.remove(),this.nonselection_glyph.remove(),null===(e=this.hover_glyph)||void 0===e||e.remove(),null===(t=this.muted_glyph)||void 0===t||t.remove(),this.decimated_glyph.remove(),super.remove()}connect_signals(){super.connect_signals();const e=()=>this.request_render(),t=()=>this.update_data();this.connect(this.model.change,e),this.connect(this.glyph.model.change,t),this.connect(this.selection_glyph.model.change,t),this.connect(this.nonselection_glyph.model.change,t),null!=this.hover_glyph&&this.connect(this.hover_glyph.model.change,t),null!=this.muted_glyph&&this.connect(this.muted_glyph.model.change,t),this.connect(this.decimated_glyph.model.change,t),this.connect(this.model.data_source.change,t),this.connect(this.model.data_source.streaming,t),this.connect(this.model.data_source.patching,(e=>this.update_data(e))),this.connect(this.model.data_source.selected.change,e),this.connect(this.model.data_source._select,e),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,e),this.connect(this.model.properties.view.change,t),this.connect(this.model.view.properties.indices.change,t),this.connect(this.model.view.properties.masked.change,(()=>this.set_visuals())),this.connect(this.model.properties.visible.change,(()=>this.plot_view.invalidate_dataranges=!0));const{x_ranges:i,y_ranges:s}=this.plot_view.frame;for(const[,e]of i)e instanceof v.FactorRange&&this.connect(e.change,t);for(const[,e]of s)e instanceof v.FactorRange&&this.connect(e.change,t);const{transformchange:l,exprchange:h}=this.model.glyph;this.connect(l,t),this.connect(h,t)}_update_masked_indices(){const e=this.glyph.mask_data();return this.model.view.masked=e,e}update_data(e){this.set_data(e),this.request_render()}set_data(e){const t=this.model.data_source;this.all_indices=this.model.view.indices;const{all_indices:i}=this;this.glyph.set_data(t,i,e),this.set_visuals(),this._update_masked_indices();const{lod_factor:s}=this.plot_model,l=this.all_indices.count;this.decimated=new p.Indices(l);for(let e=0;e!d||d.is_empty()?[]:d.selected_glyph?this.model.view.convert_indices_from_subset(i):d.indices.length>0?d.indices:Object.keys(d.multiline_indices).map((e=>parseInt(e))))()),r=g.filter(i,(e=>_.has(t[e]))),{lod_threshold:p}=this.plot_model;let y,m,v;if(null!=this.model.document&&this.model.document.interactive_duration()>0&&!e&&null!=p&&t.length>p?(i=[...this.decimated],y=this.decimated_glyph,m=this.decimated_glyph,v=this.selection_glyph):(y=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,m=this.nonselection_glyph,v=this.selection_glyph),null!=this.hover_glyph&&r.length&&(i=u.difference(i,r)),h.length){const e={};for(const t of h)e[t]=!0;const l=new Array,o=new Array;if(this.glyph instanceof n.LineView)for(const i of t)null!=e[i]?l.push(i):o.push(i);else for(const s of i)null!=e[t[s]]?l.push(s):o.push(s);m.render(s,o),v.render(s,l),null!=this.hover_glyph&&(this.glyph instanceof n.LineView?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(r)):this.hover_glyph.render(s,r))}else if(this.glyph instanceof n.LineView)this.hover_glyph&&r.length?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(r)):y.render(s,t);else if(this.glyph instanceof o.PatchView||this.glyph instanceof a.HAreaView||this.glyph instanceof c.VAreaView)if(0==d.selected_glyphs.length||null==this.hover_glyph)y.render(s,t);else for(const e of d.selected_glyphs)e==this.glyph.model&&this.hover_glyph.render(s,t);else y.render(s,i),this.hover_glyph&&r.length&&this.hover_glyph.render(s,r);s.restore()}draw_legend(e,t,i,s,l,h,n,o){0!=this.glyph.data_size&&(null==o&&(o=this.model.get_reference_point(h,n)),this.glyph.draw_legend_for_index(e,{x0:t,x1:i,y0:s,y1:l},o))}hit_test(e){if(!this.model.visible)return null;const t=this.glyph.hit_test(e);return null==t?null:this.model.view.convert_selection_from_subset(t)}}i.GlyphRendererView=V,V.__name__=\"GlyphRendererView\";class G extends h.DataRenderer{constructor(e){super(e)}static init_GlyphRenderer(){this.prototype.default_view=V,this.define((({Boolean:e,Auto:t,Or:i,Ref:s,Null:l,Nullable:h})=>({data_source:[s(_.ColumnarDataSource)],view:[s(r.CDSView),e=>new r.CDSView({source:e.data_source})],glyph:[s(d.Glyph)],hover_glyph:[h(s(d.Glyph)),null],nonselection_glyph:[i(s(d.Glyph),t,l),\"auto\"],selection_glyph:[i(s(d.Glyph),t,l),\"auto\"],muted_glyph:[h(s(d.Glyph)),null],muted:[e,!1]})))}initialize(){super.initialize(),this.view.source!=this.data_source&&(this.view.source=this.data_source,this.view.compute_indices())}get_reference_point(e,t){if(null!=e){const i=this.data_source.get_column(e);if(null!=i)for(const[e,s]of Object.entries(this.view.indices_map))if(i[parseInt(e)]==t)return s}return 0}get_selection_manager(){return this.data_source.selection_manager}}i.GlyphRenderer=G,G.__name__=\"GlyphRenderer\",G.init_GlyphRenderer()},\n function _(e,r,t,a,n){a();const s=e(41);class i extends s.RendererView{get xscale(){return this.coordinates.x_scale}get yscale(){return this.coordinates.y_scale}}t.DataRendererView=i,i.__name__=\"DataRendererView\";class _ extends s.Renderer{constructor(e){super(e)}static init_DataRenderer(){this.override({level:\"glyph\"})}get selection_manager(){return this.get_selection_manager()}}t.DataRenderer=_,_.__name__=\"DataRenderer\",_.init_DataRenderer()},\n function _(e,i,t,s,n){s();const l=e(1),_=e(64),r=e(106),h=e(108),o=l.__importStar(e(48)),a=l.__importStar(e(107)),c=e(59);class d extends _.XYGlyphView{initialize(){super.initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;null!=e&&(this.glglyph=new h.LineGL(e.gl,this))}_render(e,i,t){const{sx:s,sy:n}=null!=t?t:this;let l=!0;e.beginPath();for(const t of i){const i=s[t],_=n[t];isFinite(i+_)?l?(e.moveTo(i,_),l=!1):e.lineTo(i,_):l=!0}this.visuals.line.set_value(e),e.stroke()}_hit_point(e){const i=new c.Selection,t={x:e.sx,y:e.sy};let s=9999;const n=Math.max(2,this.line_width.value/2);for(let e=0,l=this.sx.length-1;e({x:[p.XCoordinateSpec,{field:\"x\"}],y:[p.YCoordinateSpec,{field:\"y\"}]})))}}i.XYGlyph=d,d.__name__=\"XYGlyph\",d.init_XYGlyph()},\n function _(n,t,e,o,r){o();const c=n(1),l=c.__importDefault(n(66)),i=c.__importDefault(n(67)),u=n(24),a=new i.default(\"GOOGLE\"),s=new i.default(\"WGS84\"),f=l.default(s,a);e.wgs84_mercator={compute:(n,t)=>isFinite(n)&&isFinite(t)?f.forward([n,t]):[NaN,NaN],invert:(n,t)=>isFinite(n)&&isFinite(t)?f.inverse([n,t]):[NaN,NaN]};const _={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},p={lon:[-180,180],lat:[-85.06,85.06]},{min:g,max:h}=Math;function m(n,t){const o=g(n.length,t.length),r=u.infer_type(n,t),c=new r(o),l=new r(o);return e.inplace.project_xy(n,t,c,l),[c,l]}e.clip_mercator=function(n,t,e){const[o,r]=_[e];return[h(n,o),g(t,r)]},e.in_bounds=function(n,t){const[e,o]=p[t];return e2?void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name?\"number\"==typeof r.z?[r.x,r.y,r.z].concat(t.splice(3)):[r.x,r.y,t[2]].concat(t.splice(3)):[r.x,r.y].concat(t.splice(2)):[r.x,r.y]):(o=c.default(e,n,t),2===(a=Object.keys(t)).length||a.forEach((function(r){if(void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name){if(\"x\"===r||\"y\"===r||\"z\"===r)return}else if(\"x\"===r||\"y\"===r)return;o[r]=t[r]})),o)}function l(e){return e instanceof i.default?e:e.oProj?e.oProj:i.default(e)}t.default=function(e,n,t){e=l(e);var r,o=!1;return void 0===n?(n=e,e=u,o=!0):(void 0!==n.x||Array.isArray(n))&&(t=n,n=e,e=u,o=!0),n=l(n),t?f(e,n,t):(r={forward:function(t){return f(e,n,t)},inverse:function(t){return f(n,e,t)}},o&&(r.oProj=n),r)}},\n function _(t,e,a,s,i){s();const u=t(1),l=u.__importDefault(t(68)),o=u.__importDefault(t(79)),r=u.__importDefault(t(80)),f=t(88),p=u.__importDefault(t(90)),d=u.__importDefault(t(91)),m=u.__importDefault(t(75));function n(t,e){if(!(this instanceof n))return new n(t);e=e||function(t){if(t)throw t};var a=l.default(t);if(\"object\"==typeof a){var s=n.projections.get(a.projName);if(s){if(a.datumCode&&\"none\"!==a.datumCode){var i=m.default(p.default,a.datumCode);i&&(a.datum_params=i.towgs84?i.towgs84.split(\",\"):null,a.ellps=i.ellipse,a.datumName=i.datumName?i.datumName:a.datumCode)}a.k0=a.k0||1,a.axis=a.axis||\"enu\",a.ellps=a.ellps||\"wgs84\";var u=f.sphere(a.a,a.b,a.rf,a.ellps,a.sphere),r=f.eccentricity(u.a,u.b,u.rf,a.R_A),h=a.datum||d.default(a.datumCode,a.datum_params,u.a,u.b,r.es,r.ep2);o.default(this,a),o.default(this,s),this.a=u.a,this.b=u.b,this.rf=u.rf,this.sphere=u.sphere,this.es=r.es,this.e=r.e,this.ep2=r.ep2,this.datum=h,this.init(),e(null,this)}else e(t)}else e(t)}n.projections=r.default,n.projections.start(),a.default=n},\n function _(t,r,n,u,e){u();const f=t(1),i=f.__importDefault(t(69)),a=f.__importDefault(t(76)),o=f.__importDefault(t(71)),l=f.__importDefault(t(75));var C=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];var d=[\"3857\",\"900913\",\"3785\",\"102113\"];n.default=function(t){if(!function(t){return\"string\"==typeof t}(t))return t;if(function(t){return t in i.default}(t))return i.default[t];if(function(t){return C.some((function(r){return t.indexOf(r)>-1}))}(t)){var r=a.default(t);if(function(t){var r=l.default(t,\"authority\");if(r){var n=l.default(r,\"epsg\");return n&&d.indexOf(n)>-1}}(r))return i.default[\"EPSG:3857\"];var n=function(t){var r=l.default(t,\"extension\");if(r)return l.default(r,\"proj4\")}(r);return n?o.default(n):r}return function(t){return\"+\"===t[0]}(t)?o.default(t):void 0}},\n function _(t,r,i,e,n){e();const f=t(1),a=f.__importDefault(t(70)),l=f.__importDefault(t(71)),u=f.__importDefault(t(76));function o(t){var r=this;if(2===arguments.length){var i=arguments[1];\"string\"==typeof i?\"+\"===i.charAt(0)?o[t]=l.default(arguments[1]):o[t]=u.default(arguments[1]):o[t]=i}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?o.apply(r,t):o(t)}));if(\"string\"==typeof t){if(t in o)return o[t]}else\"EPSG\"in t?o[\"EPSG:\"+t.EPSG]=t:\"ESRI\"in t?o[\"ESRI:\"+t.ESRI]=t:\"IAU2000\"in t?o[\"IAU2000:\"+t.IAU2000]=t:console.log(t);return}}a.default(o),i.default=o},\n function _(t,l,G,S,e){S(),G.default=function(t){t(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),t(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),t(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),t.WGS84=t[\"EPSG:4326\"],t[\"EPSG:3785\"]=t[\"EPSG:3857\"],t.GOOGLE=t[\"EPSG:3857\"],t[\"EPSG:900913\"]=t[\"EPSG:3857\"],t[\"EPSG:102113\"]=t[\"EPSG:3857\"]}},\n function _(t,n,o,a,u){a();const e=t(1),r=t(72),i=e.__importDefault(t(73)),f=e.__importDefault(t(74)),l=e.__importDefault(t(75));o.default=function(t){var n,o,a,u={},e=t.split(\"+\").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,n){var o=n.split(\"=\");return o.push(!0),t[o[0].toLowerCase()]=o[1],t}),{}),c={proj:\"projName\",datum:\"datumCode\",rf:function(t){u.rf=parseFloat(t)},lat_0:function(t){u.lat0=t*r.D2R},lat_1:function(t){u.lat1=t*r.D2R},lat_2:function(t){u.lat2=t*r.D2R},lat_ts:function(t){u.lat_ts=t*r.D2R},lon_0:function(t){u.long0=t*r.D2R},lon_1:function(t){u.long1=t*r.D2R},lon_2:function(t){u.long2=t*r.D2R},alpha:function(t){u.alpha=parseFloat(t)*r.D2R},lonc:function(t){u.longc=t*r.D2R},x_0:function(t){u.x0=parseFloat(t)},y_0:function(t){u.y0=parseFloat(t)},k_0:function(t){u.k0=parseFloat(t)},k:function(t){u.k0=parseFloat(t)},a:function(t){u.a=parseFloat(t)},b:function(t){u.b=parseFloat(t)},r_a:function(){u.R_A=!0},zone:function(t){u.zone=parseInt(t,10)},south:function(){u.utmSouth=!0},towgs84:function(t){u.datum_params=t.split(\",\").map((function(t){return parseFloat(t)}))},to_meter:function(t){u.to_meter=parseFloat(t)},units:function(t){u.units=t;var n=l.default(f.default,t);n&&(u.to_meter=n.to_meter)},from_greenwich:function(t){u.from_greenwich=t*r.D2R},pm:function(t){var n=l.default(i.default,t);u.from_greenwich=(n||parseFloat(t))*r.D2R},nadgrids:function(t){\"@null\"===t?u.datumCode=\"none\":u.nadgrids=t},axis:function(t){var n=\"ewnsud\";3===t.length&&-1!==n.indexOf(t.substr(0,1))&&-1!==n.indexOf(t.substr(1,1))&&-1!==n.indexOf(t.substr(2,1))&&(u.axis=t)}};for(n in e)o=e[n],n in c?\"function\"==typeof(a=c[n])?a(o):u[a]=o:u[n]=o;return\"string\"==typeof u.datumCode&&\"WGS84\"!==u.datumCode&&(u.datumCode=u.datumCode.toLowerCase()),u}},\n function _(P,A,_,D,I){D(),_.PJD_3PARAM=1,_.PJD_7PARAM=2,_.PJD_WGS84=4,_.PJD_NODATUM=5,_.SEC_TO_RAD=484813681109536e-20,_.HALF_PI=Math.PI/2,_.SIXTH=.16666666666666666,_.RA4=.04722222222222222,_.RA6=.022156084656084655,_.EPSLN=1e-10,_.D2R=.017453292519943295,_.R2D=57.29577951308232,_.FORTPI=Math.PI/4,_.TWO_PI=2*Math.PI,_.SPI=3.14159265359},\n function _(o,r,a,e,s){e();var n={};a.default=n,n.greenwich=0,n.lisbon=-9.131906111111,n.paris=2.337229166667,n.bogota=-74.080916666667,n.madrid=-3.687938888889,n.rome=12.452333333333,n.bern=7.439583333333,n.jakarta=106.807719444444,n.ferro=-17.666666666667,n.brussels=4.367975,n.stockholm=18.058277777778,n.athens=23.7163375,n.oslo=10.722916666667},\n function _(t,e,f,o,u){o(),f.default={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}}},\n function _(e,r,t,a,n){a();var o=/[\\s_\\-\\/\\(\\)]/g;t.default=function(e,r){if(e[r])return e[r];for(var t,a=Object.keys(e),n=r.toLowerCase().replace(o,\"\"),f=-1;++f0?90:-90),e.lat_ts=e.lat1)}(d),d}},\n function _(t,e,r,i,s){i(),r.default=function(t){return new d(t).output()};var h=/\\s/,o=/[A-Za-z]/,n=/[A-Za-z84]/,a=/[,\\]]/,u=/[\\d\\.E\\-\\+]/;function d(t){if(\"string\"!=typeof t)throw new Error(\"not a string\");this.text=t.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=1}d.prototype.readCharicter=function(){var t=this.text[this.place++];if(4!==this.state)for(;h.test(t);){if(this.place>=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},d.prototype.afterquote=function(t){if('\"'===t)return this.word+='\"',void(this.state=4);if(a.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in afterquote yet, index '+this.place)},d.prototype.afterItem=function(t){return\",\"===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):\"]\"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},d.prototype.number=function(t){if(!u.test(t)){if(a.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in number yet, index '+this.place)}this.word+=t},d.prototype.quoted=function(t){'\"'!==t?this.word+=t:this.state=5},d.prototype.keyword=function(t){if(n.test(t))this.word+=t;else{if(\"[\"===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!a.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in keyword yet, index '+this.place);this.afterItem(t)}},d.prototype.neutral=function(t){if(o.test(t))return this.word=t,void(this.state=2);if('\"'===t)return this.word=\"\",void(this.state=4);if(u.test(t))return this.word=t,void(this.state=3);if(!a.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in neutral yet, index '+this.place);this.afterItem(t)},d.prototype.output=function(){for(;this.place90&&a*o.R2D<-90&&h*o.R2D>180&&h*o.R2D<-180)return null;if(Math.abs(Math.abs(a)-o.HALF_PI)<=o.EPSLN)return null;if(this.sphere)i=this.x0+this.a*this.k0*n.default(h-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(o.FORTPI+.5*a));else{var e=Math.sin(a),r=l.default(this.e,a,e);i=this.x0+this.a*this.k0*n.default(h-this.long0),s=this.y0-this.a*this.k0*Math.log(r)}return t.x=i,t.y=s,t}function M(t){var i,s,h=t.x-this.x0,a=t.y-this.y0;if(this.sphere)s=o.HALF_PI-2*Math.atan(Math.exp(-a/(this.a*this.k0)));else{var e=Math.exp(-a/(this.a*this.k0));if(-9999===(s=u.default(this.e,e)))return null}return i=n.default(this.long0+h/(this.a*this.k0)),t.x=i,t.y=s,t}s.init=f,s.forward=_,s.inverse=M,s.names=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],s.default={init:f,forward:_,inverse:M,names:s.names}},\n function _(t,n,r,u,a){u(),r.default=function(t,n,r){var u=t*n;return r/Math.sqrt(1-u*u)}},\n function _(t,n,u,a,f){a();const e=t(1),o=t(72),_=e.__importDefault(t(84));u.default=function(t){return Math.abs(t)<=o.SPI?t:t-_.default(t)*o.TWO_PI}},\n function _(n,t,u,f,c){f(),u.default=function(n){return n<0?-1:1}},\n function _(t,n,a,o,u){o();const c=t(72);a.default=function(t,n,a){var o=t*a,u=.5*t;return o=Math.pow((1-o)/(1+o),u),Math.tan(.5*(c.HALF_PI-n))/o}},\n function _(t,a,n,r,f){r();const h=t(72);n.default=function(t,a){for(var n,r,f=.5*t,o=h.HALF_PI-2*Math.atan(a),u=0;u<=15;u++)if(n=t*Math.sin(o),o+=r=h.HALF_PI-2*Math.atan(a*Math.pow((1-n)/(1+n),f))-o,Math.abs(r)<=1e-10)return o;return-9999}},\n function _(n,i,e,t,r){function a(){}function f(n){return n}t(),e.init=a,e.forward=f,e.inverse=f,e.names=[\"longlat\",\"identity\"],e.default={init:a,forward:f,inverse:f,names:e.names}},\n function _(t,r,e,a,n){a();const f=t(1),i=t(72),u=f.__importStar(t(89)),c=f.__importDefault(t(75));e.eccentricity=function(t,r,e,a){var n=t*t,f=r*r,u=(n-f)/n,c=0;return a?(n=(t*=1-u*(i.SIXTH+u*(i.RA4+u*i.RA6)))*t,u=0):c=Math.sqrt(u),{es:u,e:c,ep2:(n-f)/f}},e.sphere=function(t,r,e,a,n){if(!t){var f=c.default(u.default,a);f||(f=u.WGS84),t=f.a,r=f.b,e=f.rf}return e&&!r&&(r=(1-1/e)*t),(0===e||Math.abs(t-r)3&&(0===r.datum_params[3]&&0===r.datum_params[4]&&0===r.datum_params[5]&&0===r.datum_params[6]||(r.datum_type=p.PJD_7PARAM,r.datum_params[3]*=p.SEC_TO_RAD,r.datum_params[4]*=p.SEC_TO_RAD,r.datum_params[5]*=p.SEC_TO_RAD,r.datum_params[6]=r.datum_params[6]/1e6+1))),r.a=_,r.b=t,r.es=u,r.ep2=d,r}},\n function _(t,e,a,r,u){r();const m=t(1),_=t(72),o=m.__importDefault(t(93)),d=m.__importDefault(t(95)),f=m.__importDefault(t(67)),n=m.__importDefault(t(96)),i=m.__importDefault(t(97));a.default=function t(e,a,r){var u;if(Array.isArray(r)&&(r=n.default(r)),i.default(r),e.datum&&a.datum&&function(t,e){return(t.datum.datum_type===_.PJD_3PARAM||t.datum.datum_type===_.PJD_7PARAM)&&\"WGS84\"!==e.datumCode||(e.datum.datum_type===_.PJD_3PARAM||e.datum.datum_type===_.PJD_7PARAM)&&\"WGS84\"!==t.datumCode}(e,a)&&(r=t(e,u=new f.default(\"WGS84\"),r),e=u),\"enu\"!==e.axis&&(r=d.default(e,!1,r)),\"longlat\"===e.projName)r={x:r.x*_.D2R,y:r.y*_.D2R,z:r.z||0};else if(e.to_meter&&(r={x:r.x*e.to_meter,y:r.y*e.to_meter,z:r.z||0}),!(r=e.inverse(r)))return;return e.from_greenwich&&(r.x+=e.from_greenwich),r=o.default(e.datum,a.datum,r),a.from_greenwich&&(r={x:r.x-a.from_greenwich,y:r.y,z:r.z||0}),\"longlat\"===a.projName?r={x:r.x*_.R2D,y:r.y*_.R2D,z:r.z||0}:(r=a.forward(r),a.to_meter&&(r={x:r.x/a.to_meter,y:r.y/a.to_meter,z:r.z||0})),\"enu\"!==a.axis?d.default(a,!0,r):r}},\n function _(t,e,a,u,c){u();const m=t(72),o=t(94);function _(t){return t===m.PJD_3PARAM||t===m.PJD_7PARAM}a.default=function(t,e,a){return o.compareDatums(t,e)||t.datum_type===m.PJD_NODATUM||e.datum_type===m.PJD_NODATUM?a:t.es!==e.es||t.a!==e.a||_(t.datum_type)||_(e.datum_type)?(a=o.geodeticToGeocentric(a,t.es,t.a),_(t.datum_type)&&(a=o.geocentricToWgs84(a,t.datum_type,t.datum_params)),_(e.datum_type)&&(a=o.geocentricFromWgs84(a,e.datum_type,e.datum_params)),o.geocentricToGeodetic(a,e.es,e.a,e.b)):a}},\n function _(a,t,r,m,s){m();const u=a(72);r.compareDatums=function(a,t){return a.datum_type===t.datum_type&&(!(a.a!==t.a||Math.abs(a.es-t.es)>5e-11)&&(a.datum_type===u.PJD_3PARAM?a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]:a.datum_type!==u.PJD_7PARAM||a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]&&a.datum_params[3]===t.datum_params[3]&&a.datum_params[4]===t.datum_params[4]&&a.datum_params[5]===t.datum_params[5]&&a.datum_params[6]===t.datum_params[6]))},r.geodeticToGeocentric=function(a,t,r){var m,s,_,e,n=a.x,d=a.y,i=a.z?a.z:0;if(d<-u.HALF_PI&&d>-1.001*u.HALF_PI)d=-u.HALF_PI;else if(d>u.HALF_PI&&d<1.001*u.HALF_PI)d=u.HALF_PI;else{if(d<-u.HALF_PI)return{x:-1/0,y:-1/0,z:a.z};if(d>u.HALF_PI)return{x:1/0,y:1/0,z:a.z}}return n>Math.PI&&(n-=2*Math.PI),s=Math.sin(d),e=Math.cos(d),_=s*s,{x:((m=r/Math.sqrt(1-t*_))+i)*e*Math.cos(n),y:(m+i)*e*Math.sin(n),z:(m*(1-t)+i)*s}},r.geocentricToGeodetic=function(a,t,r,m){var s,_,e,n,d,i,p,P,y,z,M,o,A,c,x,h=1e-12,f=a.x,I=a.y,F=a.z?a.z:0;if(s=Math.sqrt(f*f+I*I),_=Math.sqrt(f*f+I*I+F*F),s/r1e-24&&A<30);return{x:c,y:Math.atan(M/Math.abs(z)),z:x}},r.geocentricToWgs84=function(a,t,r){if(t===u.PJD_3PARAM)return{x:a.x+r[0],y:a.y+r[1],z:a.z+r[2]};if(t===u.PJD_7PARAM){var m=r[0],s=r[1],_=r[2],e=r[3],n=r[4],d=r[5],i=r[6];return{x:i*(a.x-d*a.y+n*a.z)+m,y:i*(d*a.x+a.y-e*a.z)+s,z:i*(-n*a.x+e*a.y+a.z)+_}}},r.geocentricFromWgs84=function(a,t,r){if(t===u.PJD_3PARAM)return{x:a.x-r[0],y:a.y-r[1],z:a.z-r[2]};if(t===u.PJD_7PARAM){var m=r[0],s=r[1],_=r[2],e=r[3],n=r[4],d=r[5],i=r[6],p=(a.x-m)/i,P=(a.y-s)/i,y=(a.z-_)/i;return{x:p+d*P-n*y,y:-d*p+P+e*y,z:n*p-e*P+y}}}},\n function _(e,a,i,r,s){r(),i.default=function(e,a,i){var r,s,n,c=i.x,d=i.y,f=i.z||0,u={};for(n=0;n<3;n++)if(!a||2!==n||void 0!==i.z)switch(0===n?(r=c,s=-1!==\"ew\".indexOf(e.axis[n])?\"x\":\"y\"):1===n?(r=d,s=-1!==\"ns\".indexOf(e.axis[n])?\"y\":\"x\"):(r=f,s=\"z\"),e.axis[n]){case\"e\":u[s]=r;break;case\"w\":u[s]=-r;break;case\"n\":u[s]=r;break;case\"s\":u[s]=-r;break;case\"u\":void 0!==i[s]&&(u.z=r);break;case\"d\":void 0!==i[s]&&(u.z=-r);break;default:return null}return u}},\n function _(n,t,e,u,f){u(),e.default=function(n){var t={x:n[0],y:n[1]};return n.length>2&&(t.z=n[2]),n.length>3&&(t.m=n[3]),t}},\n function _(e,i,n,t,r){function o(e){if(\"function\"==typeof Number.isFinite){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(\"number\"!=typeof e||e!=e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}t(),n.default=function(e){o(e.x),o(e.y)}},\n function _(e,t,s,i,n){i();const r=e(1),a=r.__importStar(e(18)),o=r.__importStar(e(99)),_=r.__importStar(e(45)),l=e(42),c=e(53),h=e(19),d=e(24),u=e(8),f=e(100),p=e(12),g=e(26),y=e(101),x=e(104),v=e(59),{abs:b,ceil:m}=Math;class w extends l.View{constructor(){super(...arguments),this._index=null,this._data_size=null,this._nohit_warned=new Set}get renderer(){return this.parent}get has_webgl(){return null!=this.glglyph}get index(){const{_index:e}=this;if(null!=e)return e;throw new Error(`${this}.index_data() wasn't called`)}get data_size(){const{_data_size:e}=this;if(null!=e)return e;throw new Error(`${this}.set_data() wasn't called`)}initialize(){super.initialize(),this.visuals=new _.Visuals(this)}request_render(){this.parent.request_render()}get canvas(){return this.renderer.parent.canvas_view}render(e,t,s){var i;null!=this.glglyph&&(this.renderer.needs_webgl_blit=this.glglyph.render(e,t,null!==(i=this.base)&&void 0!==i?i:this),this.renderer.needs_webgl_blit)||(e.beginPath(),this._render(e,t,null!=s?s:this.base))}has_finished(){return!0}notify_finished(){this.renderer.notify_finished()}_bounds(e){return e}bounds(){return this._bounds(this.index.bbox)}log_bounds(){const{x0:e,x1:t}=this.index.bounds(o.positive_x()),{y0:s,y1:i}=this.index.bounds(o.positive_y());return this._bounds({x0:e,y0:s,x1:t,y1:i})}get_anchor_point(e,t,[s,i]){switch(e){case\"center\":case\"center_center\":{const[e,n]=this.scenterxy(t,s,i);return{x:e,y:n}}default:return null}}scenterx(e,t,s){return this.scenterxy(e,t,s)[0]}scentery(e,t,s){return this.scenterxy(e,t,s)[1]}sdist(e,t,s,i=\"edge\",n=!1){const r=t.length,a=new d.ScreenArray(r),o=e.s_compute;if(\"center\"==i)for(let e=0;em(e))),a}draw_legend_for_index(e,t,s){}hit_test(e){switch(e.type){case\"point\":if(null!=this._hit_point)return this._hit_point(e);break;case\"span\":if(null!=this._hit_span)return this._hit_span(e);break;case\"rect\":if(null!=this._hit_rect)return this._hit_rect(e);break;case\"poly\":if(null!=this._hit_poly)return this._hit_poly(e)}return this._nohit_warned.has(e.type)||(h.logger.debug(`'${e.type}' selection not available for ${this.model.type}`),this._nohit_warned.add(e.type)),null}_hit_rect_against_index(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,[r,a]=this.renderer.coordinates.x_scale.r_invert(t,s),[o,_]=this.renderer.coordinates.y_scale.r_invert(i,n),l=[...this.index.indices({x0:r,x1:a,y0:o,y1:_})];return new v.Selection({indices:l})}_project_data(){}*_iter_visuals(){for(const e of this.visuals)for(const t of e)(t instanceof a.VectorSpec||t instanceof a.ScalarSpec)&&(yield t)}set_base(e){e!=this&&e instanceof this.constructor&&(this.base=e)}_configure(e,t){Object.defineProperty(this,u.isString(e)?e:e.attr,Object.assign({configurable:!0,enumerable:!0},t))}set_visuals(e,t){var s;for(const s of this._iter_visuals()){const{base:i}=this;if(null!=i){const e=i.model.properties[s.attr];if(null!=e&&g.is_equal(s.get_value(),e.get_value())){this._configure(s,{get:()=>i[`${s.attr}`]});continue}}const n=s.uniform(e).select(t);this._configure(s,{value:n})}for(const e of this.visuals)e.update();null===(s=this.glglyph)||void 0===s||s.set_visuals_changed()}set_data(e,t,s){var i;const{x_range:n,y_range:r}=this.renderer.coordinates,o=new Set(this._iter_visuals());this._data_size=t.count;for(const s of this.model)if((s instanceof a.VectorSpec||s instanceof a.ScalarSpec)&&!o.has(s))if(s instanceof a.BaseCoordinateSpec){const i=s.array(e);let o=t.select(i);const _=\"x\"==s.dimension?n:r;if(_ instanceof x.FactorRange)if(s instanceof a.CoordinateSpec)o=_.v_synthetic(o);else if(s instanceof a.CoordinateSeqSpec)for(let e=0;e=0&&r>=0))throw new Error(`invalid bbox {x: ${i}, y: ${e}, width: ${h}, height: ${r}}`);this.x0=i,this.y0=e,this.x1=i+h,this.y1=e+r}else{let i,e,h,r;if(\"width\"in t)if(\"left\"in t)i=t.left,e=i+t.width;else if(\"right\"in t)e=t.right,i=e-t.width;else{const h=t.width/2;i=t.hcenter-h,e=t.hcenter+h}else i=t.left,e=t.right;if(\"height\"in t)if(\"top\"in t)h=t.top,r=h+t.height;else if(\"bottom\"in t)r=t.bottom,h=r-t.height;else{const i=t.height/2;h=t.vcenter-i,r=t.vcenter+i}else h=t.top,r=t.bottom;if(!(i<=e&&h<=r))throw new Error(`invalid bbox {left: ${i}, top: ${h}, right: ${e}, bottom: ${r}}`);this.x0=i,this.y0=h,this.x1=e,this.y1=r}}static from_rect({left:t,right:i,top:e,bottom:h}){return new o({x0:Math.min(t,i),y0:Math.min(e,h),x1:Math.max(t,i),y1:Math.max(e,h)})}equals(t){return this.x0==t.x0&&this.y0==t.y0&&this.x1==t.x1&&this.y1==t.y1}[n.equals](t,i){return i.eq(this.x0,t.x0)&&i.eq(this.y0,t.y0)&&i.eq(this.x1,t.x1)&&i.eq(this.y1,t.y1)}toString(){return`BBox({left: ${this.left}, top: ${this.top}, width: ${this.width}, height: ${this.height}})`}get left(){return this.x0}get top(){return this.y0}get right(){return this.x1}get bottom(){return this.y1}get p0(){return[this.x0,this.y0]}get p1(){return[this.x1,this.y1]}get x(){return this.x0}get y(){return this.y0}get width(){return this.x1-this.x0}get height(){return this.y1-this.y0}get size(){return{width:this.width,height:this.height}}get rect(){const{x0:t,y0:i,x1:e,y1:h}=this;return{p0:{x:t,y:i},p1:{x:e,y:i},p2:{x:e,y:h},p3:{x:t,y:h}}}get box(){const{x:t,y:i,width:e,height:h}=this;return{x:t,y:i,width:e,height:h}}get h_range(){return{start:this.x0,end:this.x1}}get v_range(){return{start:this.y0,end:this.y1}}get ranges(){return[this.h_range,this.v_range]}get aspect(){return this.width/this.height}get hcenter(){return(this.left+this.right)/2}get vcenter(){return(this.top+this.bottom)/2}get area(){return this.width*this.height}relative(){const{width:t,height:i}=this;return new o({x:0,y:0,width:t,height:i})}translate(t,i){const{x:e,y:h,width:r,height:s}=this;return new o({x:t+e,y:i+h,width:r,height:s})}relativize(t,i){return[t-this.x,i-this.y]}contains(t,i){return this.x0<=t&&t<=this.x1&&this.y0<=i&&i<=this.y1}clip(t,i){return tthis.x1&&(t=this.x1),ithis.y1&&(i=this.y1),[t,i]}grow_by(t){return new o({left:this.left-t,right:this.right+t,top:this.top-t,bottom:this.bottom+t})}shrink_by(t){return new o({left:this.left+t,right:this.right-t,top:this.top+t,bottom:this.bottom-t})}union(t){return new o({x0:x(this.x0,t.x0),y0:x(this.y0,t.y0),x1:y(this.x1,t.x1),y1:y(this.y1,t.y1)})}intersection(t){return this.intersects(t)?new o({x0:y(this.x0,t.x0),y0:y(this.y0,t.y0),x1:x(this.x1,t.x1),y1:x(this.y1,t.y1)}):null}intersects(t){return!(t.x1this.x1||t.y1this.y1)}get xview(){return{compute:t=>this.left+t,v_compute:t=>{const i=new s.ScreenArray(t.length),e=this.left;for(let h=0;hthis.bottom-t,v_compute:t=>{const i=new s.ScreenArray(t.length),e=this.bottom;for(let h=0;h{const s=new Uint32Array(r);for(let n=0;n>1;i[s]>n?e=s:t=s+1}return i[t]}class r extends o.default{search_indices(n,i,t,e){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let s=this._boxes.length-4;const o=[],x=new d.Indices(this.numItems);for(;void 0!==s;){const d=Math.min(s+4*this.nodeSize,h(s,this._levelBounds));for(let h=s;h>2];tthis._boxes[h+2]||i>this._boxes[h+3]||(s<4*this.numItems?x.set(d):o.push(d)))}s=o.pop()}return x}}r.__name__=\"_FlatBush\";class l{constructor(n){this.index=null,n>0&&(this.index=new r(n))}add(n,i,t,e){var s;null===(s=this.index)||void 0===s||s.add(n,i,t,e)}add_empty(){var n;null===(n=this.index)||void 0===n||n.add(1/0,1/0,-1/0,-1/0)}finish(){var n;null===(n=this.index)||void 0===n||n.finish()}_normalize(n){let{x0:i,y0:t,x1:e,y1:s}=n;return i>e&&([i,e]=[e,i]),t>s&&([t,s]=[s,t]),{x0:i,y0:t,x1:e,y1:s}}get bbox(){if(null==this.index)return x.empty();{const{minX:n,minY:i,maxX:t,maxY:e}=this.index;return{x0:n,y0:i,x1:t,y1:e}}}indices(n){if(null==this.index)return new d.Indices(0);{const{x0:i,y0:t,x1:e,y1:s}=this._normalize(n);return this.index.search_indices(i,t,e,s)}}bounds(n){const i=x.empty();for(const t of this.indices(n)){const n=this.index._boxes,e=n[4*t+0],s=n[4*t+1],o=n[4*t+2],d=n[4*t+3];oi.x1&&(i.x1=e),di.y1&&(i.y1=s)}return i}}t.SpatialIndex=l,l.__name__=\"SpatialIndex\"},\n function _(t,s,i,e,h){e();const n=t(1).__importDefault(t(103)),o=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class r{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[s,i]=new Uint8Array(t,0,2);if(251!==s)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(i>>4!=3)throw new Error(`Got v${i>>4} data when expected v3.`);const[e]=new Uint16Array(t,2,1),[h]=new Uint32Array(t,4,1);return new r(h,e,o[15&i],t)}constructor(t,s=16,i=Float64Array,e){if(void 0===t)throw new Error(\"Missing required argument: numItems.\");if(isNaN(t)||t<=0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+s,2),65535);let h=t,r=h;this._levelBounds=[4*h];do{h=Math.ceil(h/this.nodeSize),r+=h,this._levelBounds.push(4*r)}while(1!==h);this.ArrayType=i||Float64Array,this.IndexArrayType=r<16384?Uint16Array:Uint32Array;const a=o.indexOf(this.ArrayType),_=4*r*this.ArrayType.BYTES_PER_ELEMENT;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);e&&e instanceof ArrayBuffer?(this.data=e,this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=4*r,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+_+r*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+a]),new Uint16Array(this.data,2,1)[0]=s,new Uint32Array(this.data,4,1)[0]=t),this._queue=new n.default}add(t,s,i,e){const h=this._pos>>2;return this._indices[h]=h,this._boxes[this._pos++]=t,this._boxes[this._pos++]=s,this._boxes[this._pos++]=i,this._boxes[this._pos++]=e,tthis.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e),h}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);if(this.numItems<=this.nodeSize)return this._boxes[this._pos++]=this.minX,this._boxes[this._pos++]=this.minY,this._boxes[this._pos++]=this.maxX,void(this._boxes[this._pos++]=this.maxY);const t=this.maxX-this.minX,s=this.maxY-this.minY,i=new Uint32Array(this.numItems);for(let e=0;e>2]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=h,this._boxes[this._pos++]=n,this._boxes[this._pos++]=o}}}search(t,s,i,e,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=[],r=[];for(;void 0!==n;){const a=Math.min(n+4*this.nodeSize,_(n,this._levelBounds));for(let _=n;_>2];ithis._boxes[_+2]||s>this._boxes[_+3]||(n<4*this.numItems?(void 0===h||h(a))&&r.push(a):o.push(a)))}n=o.pop()}return r}neighbors(t,s,i=1/0,e=1/0,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=this._queue,r=[],x=e*e;for(;void 0!==n;){const e=Math.min(n+4*this.nodeSize,_(n,this._levelBounds));for(let i=n;i>2],r=a(t,this._boxes[i],this._boxes[i+2]),_=a(s,this._boxes[i+1],this._boxes[i+3]),x=r*r+_*_;n<4*this.numItems?(void 0===h||h(e))&&o.push(-e-1,x):o.push(e,x)}for(;o.length&&o.peek()<0;){if(o.peekValue()>x)return o.clear(),r;if(r.push(-o.pop()-1),r.length===i)return o.clear(),r}n=o.pop()}return o.clear(),r}}function a(t,s,i){return t>1;s[h]>t?e=h:i=h+1}return s[i]}function x(t,s,i,e,h,n){if(Math.floor(e/n)>=Math.floor(h/n))return;const o=t[e+h>>1];let r=e-1,a=h+1;for(;;){do{r++}while(t[r]o);if(r>=a)break;d(t,s,i,r,a)}x(t,s,i,e,a,n),x(t,s,i,a+1,h,n)}function d(t,s,i,e,h){const n=t[e];t[e]=t[h],t[h]=n;const o=4*e,r=4*h,a=s[o],_=s[o+1],x=s[o+2],d=s[o+3];s[o]=s[r],s[o+1]=s[r+1],s[o+2]=s[r+2],s[o+3]=s[r+3],s[r]=a,s[r+1]=_,s[r+2]=x,s[r+3]=d;const m=i[e];i[e]=i[h],i[h]=m}function m(t,s){let i=t^s,e=65535^i,h=65535^(t|s),n=t&(65535^s),o=i|e>>1,r=i>>1^i,a=h>>1^e&n>>1^h,_=i&h>>1^n>>1^n;i=o,e=r,h=a,n=_,o=i&i>>2^e&e>>2,r=i&e>>2^e&(i^e)>>2,a^=i&h>>2^e&n>>2,_^=e&h>>2^(i^e)&n>>2,i=o,e=r,h=a,n=_,o=i&i>>4^e&e>>4,r=i&e>>4^e&(i^e)>>4,a^=i&h>>4^e&n>>4,_^=e&h>>4^(i^e)&n>>4,i=o,e=r,h=a,n=_,a^=i&h>>8^e&n>>8,_^=e&h>>8^(i^e)&n>>8,i=a^a>>1,e=_^_>>1;let x=t^s,d=e|65535^(x|i);return x=16711935&(x|x<<8),x=252645135&(x|x<<4),x=858993459&(x|x<<2),x=1431655765&(x|x<<1),d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),(d<<1|x)>>>0}i.default=r},\n function _(s,t,i,h,e){h();i.default=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(s,t){let i=this.length++;for(this.ids[i]=s,this.values[i]=t;i>0;){const s=i-1>>1,h=this.values[s];if(t>=h)break;this.ids[i]=this.ids[s],this.values[i]=h,i=s}this.ids[i]=s,this.values[i]=t}pop(){if(0===this.length)return;const s=this.ids[0];if(this.length--,this.length>0){const s=this.ids[0]=this.ids[this.length],t=this.values[0]=this.values[this.length],i=this.length>>1;let h=0;for(;h=t)break;this.ids[h]=e,this.values[h]=l,h=s}this.ids[h]=s,this.values[h]=t}return s}peek(){if(0!==this.length)return this.ids[0]}peekValue(){if(0!==this.length)return this.values[0]}}},\n function _(t,n,e,i,s){i();const r=t(105),a=t(20),o=t(21),g=t(24),p=t(9),c=t(8),l=t(11);function u(t,n,e=0){const i=new Map;for(let s=0;sa.get(t).value)));r.set(t,{value:l/s,mapping:a}),o+=s+n+c}return[r,(a.size-1)*n+g]}function d(t,n,e,i,s=0){var r;const a=new Map,o=new Map;for(const[n,e,i]of t){const t=null!==(r=o.get(n))&&void 0!==r?r:[];o.set(n,[...t,[e,i]])}let g=s,c=0;for(const[t,s]of o){const r=s.length,[o,l]=h(s,e,i,g);c+=l;const u=p.sum(s.map((([t])=>o.get(t).value)));a.set(t,{value:u/r,mapping:o}),g+=r+n+l}return[a,(o.size-1)*n+c]}e.Factor=o.Or(o.String,o.Tuple(o.String,o.String),o.Tuple(o.String,o.String,o.String)),e.FactorSeq=o.Or(o.Array(o.String),o.Array(o.Tuple(o.String,o.String)),o.Array(o.Tuple(o.String,o.String,o.String))),e.map_one_level=u,e.map_two_levels=h,e.map_three_levels=d;class _ extends r.Range{constructor(t){super(t)}static init_FactorRange(){this.define((({Number:t})=>({factors:[e.FactorSeq,[]],factor_padding:[t,0],subgroup_padding:[t,.8],group_padding:[t,1.4],range_padding:[t,0],range_padding_units:[a.PaddingUnits,\"percent\"],start:[t],end:[t]}))),this.internal((({Number:t,String:n,Array:e,Tuple:i,Nullable:s})=>({levels:[t],mids:[s(e(i(n,n))),null],tops:[s(e(n)),null]})))}get min(){return this.start}get max(){return this.end}initialize(){super.initialize(),this._init(!0)}connect_signals(){super.connect_signals(),this.connect(this.properties.factors.change,(()=>this.reset())),this.connect(this.properties.factor_padding.change,(()=>this.reset())),this.connect(this.properties.group_padding.change,(()=>this.reset())),this.connect(this.properties.subgroup_padding.change,(()=>this.reset())),this.connect(this.properties.range_padding.change,(()=>this.reset())),this.connect(this.properties.range_padding_units.change,(()=>this.reset()))}reset(){this._init(!1),this.change.emit()}_lookup(t){switch(t.length){case 1:{const[n]=t,e=this._mapping.get(n);return null!=e?e.value:NaN}case 2:{const[n,e]=t,i=this._mapping.get(n);if(null!=i){const t=i.mapping.get(e);if(null!=t)return t.value}return NaN}case 3:{const[n,e,i]=t,s=this._mapping.get(n);if(null!=s){const t=s.mapping.get(e);if(null!=t){const n=t.mapping.get(i);if(null!=n)return n.value}}return NaN}default:l.unreachable()}}synthetic(t){if(c.isNumber(t))return t;if(c.isString(t))return this._lookup([t]);let n=0;const e=t[t.length-1];return c.isNumber(e)&&(n=e,t=t.slice(0,-1)),this._lookup(t)+n}v_synthetic(t){const n=t.length,e=new g.ScreenArray(n);for(let i=0;i{if(p.every(this.factors,c.isString)){const t=this.factors,[n,e]=u(t,this.factor_padding);return{levels:1,mapping:n,tops:null,mids:null,inside_padding:e}}if(p.every(this.factors,(t=>c.isArray(t)&&2==t.length&&c.isString(t[0])&&c.isString(t[1])))){const t=this.factors,[n,e]=h(t,this.group_padding,this.factor_padding),i=[...n.keys()];return{levels:2,mapping:n,tops:i,mids:null,inside_padding:e}}if(p.every(this.factors,(t=>c.isArray(t)&&3==t.length&&c.isString(t[0])&&c.isString(t[1])&&c.isString(t[2])))){const t=this.factors,[n,e]=d(t,this.group_padding,this.subgroup_padding,this.factor_padding),i=[...n.keys()],s=[];for(const[t,e]of n)for(const n of e.mapping.keys())s.push([t,n]);return{levels:3,mapping:n,tops:i,mids:s,inside_padding:e}}l.unreachable()})();this._mapping=e,this.tops=i,this.mids=s;let a=0,o=this.factors.length+r;if(\"percent\"==this.range_padding_units){const t=(o-a)*this.range_padding/2;a-=t,o+=t}else a-=this.range_padding,o+=this.range_padding;this.setv({start:a,end:o,levels:n},{silent:t}),\"auto\"==this.bounds&&this.setv({bounds:[a,o]},{silent:!0})}}e.FactorRange=_,_.__name__=\"FactorRange\",_.init_FactorRange()},\n function _(e,t,i,n,s){n();const a=e(53);class l extends a.Model{constructor(e){super(e),this.have_updated_interactively=!1}static init_Range(){this.define((({Number:e,Tuple:t,Or:i,Auto:n,Nullable:s})=>({bounds:[s(i(t(s(e),s(e)),n)),null],min_interval:[s(e),null],max_interval:[s(e),null]}))),this.internal((({Array:e,AnyRef:t})=>({plots:[e(t()),[]]})))}get is_reversed(){return this.start>this.end}get is_valid(){return isFinite(this.min)&&isFinite(this.max)}}i.Range=l,l.__name__=\"Range\",l.init_Range()},\n function _(e,t,i,n,l){n();const o=e(1).__importStar(e(107));function a(e,t,{x0:i,x1:n,y0:l,y1:o},a){t.save(),t.beginPath(),t.moveTo(i,(l+o)/2),t.lineTo(n,(l+o)/2),e.line.doit&&(e.line.set_vectorize(t,a),t.stroke()),t.restore()}function r(e,t,{x0:i,x1:n,y0:l,y1:o},a){var r,c;const s=.1*Math.abs(n-i),_=.1*Math.abs(o-l),v=i+s,d=n-s,h=l+_,g=o-_;t.beginPath(),t.rect(v,h,d-v,g-h),e.fill.doit&&(e.fill.set_vectorize(t,a),t.fill()),(null===(r=e.hatch)||void 0===r?void 0:r.doit)&&(e.hatch.set_vectorize(t,a),t.fill()),(null===(c=e.line)||void 0===c?void 0:c.doit)&&(e.line.set_vectorize(t,a),t.stroke())}i.generic_line_scalar_legend=function(e,t,{x0:i,x1:n,y0:l,y1:o}){t.save(),t.beginPath(),t.moveTo(i,(l+o)/2),t.lineTo(n,(l+o)/2),e.line.doit&&(e.line.set_value(t),t.stroke()),t.restore()},i.generic_line_vector_legend=a,i.generic_line_legend=a,i.generic_area_scalar_legend=function(e,t,{x0:i,x1:n,y0:l,y1:o}){var a,r;const c=.1*Math.abs(n-i),s=.1*Math.abs(o-l),_=i+c,v=n-c,d=l+s,h=o-s;t.beginPath(),t.rect(_,d,v-_,h-d),e.fill.doit&&(e.fill.set_value(t),t.fill()),(null===(a=e.hatch)||void 0===a?void 0:a.doit)&&(e.hatch.set_value(t),t.fill()),(null===(r=e.line)||void 0===r?void 0:r.doit)&&(e.line.set_value(t),t.stroke())},i.generic_area_vector_legend=r,i.generic_area_legend=r,i.line_interpolation=function(e,t,i,n,l,a){const{sx:r,sy:c}=t;let s,_,v,d;\"point\"==t.type?([v,d]=e.yscale.r_invert(c-1,c+1),[s,_]=e.xscale.r_invert(r-1,r+1)):\"v\"==t.direction?([v,d]=e.yscale.r_invert(c,c),[s,_]=[Math.min(i-1,l-1),Math.max(i+1,l+1)]):([s,_]=e.xscale.r_invert(r,r),[v,d]=[Math.min(n-1,a-1),Math.max(n+1,a+1)]);const{x:h,y:g}=o.check_2_segments_intersect(s,v,_,d,i,n,l,a);return[h,g]}},\n function _(t,n,e,i,r){function s(t,n){return(t.x-n.x)**2+(t.y-n.y)**2}function o(t,n,e){const i=s(n,e);if(0==i)return s(t,n);const r=((t.x-n.x)*(e.x-n.x)+(t.y-n.y)*(e.y-n.y))/i;if(r<0)return s(t,n);if(r>1)return s(t,e);return s(t,{x:n.x+r*(e.x-n.x),y:n.y+r*(e.y-n.y)})}i(),e.point_in_poly=function(t,n,e,i){let r=!1,s=e[e.length-1],o=i[i.length-1];for(let u=0;u0&&_<1&&h>0&&h<1,x:t+_*(e-t),y:n+_*(i-n)}}}},\n function _(t,e,s,i,a){i();const o=t(1),n=t(109),_=t(113),r=o.__importDefault(t(114)),h=o.__importDefault(t(115)),l=t(22),g=t(46);class u{constructor(t){this._atlas=new Map,this._width=256,this._height=256,this.tex=new n.Texture2d(t),this.tex.set_wrapping(t.REPEAT,t.REPEAT),this.tex.set_interpolation(t.NEAREST,t.NEAREST),this.tex.set_size([this._width,this._height],t.RGBA),this.tex.set_data([0,0],[this._width,this._height],new Uint8Array(4*this._width*this._height)),this.get_atlas_data([1])}get_atlas_data(t){const e=t.join(\"-\");let s=this._atlas.get(e);if(null==s){const[i,a]=this.make_pattern(t),o=this._atlas.size;this.tex.set_data([0,o],[this._width,1],new Uint8Array(i.map((t=>t+10)))),s=[o/this._height,a],this._atlas.set(e,s)}return s}make_pattern(t){t.length>1&&t.length%2&&(t=t.concat(t));let e=0;for(const s of t)e+=s;const s=[];let i=0;for(let e=0,a=t.length+2;es[h]?-1:0,n=s[h-1],i=s[h]),o[4*t+0]=s[h],o[4*t+1]=_,o[4*t+2]=n,o[4*t+3]=i}return[o,e]}}u.__name__=\"DashAtlas\";const f={miter:0,round:1,bevel:2},c={\"\":0,none:0,\".\":0,round:1,\")\":1,\"(\":1,o:1,\"triangle in\":2,\"<\":2,\"triangle out\":3,\">\":3,square:4,\"[\":4,\"]\":4,\"=\":4,butt:5,\"|\":5};class d extends _.BaseGLGlyph{constructor(t,e){super(t,e),this.glyph=e,this._scale_aspect=0;const s=r.default,i=h.default;this.prog=new n.Program(t),this.prog.set_shaders(s,i),this.index_buffer=new n.IndexBuffer(t),this.vbo_position=new n.VertexBuffer(t),this.vbo_tangents=new n.VertexBuffer(t),this.vbo_segment=new n.VertexBuffer(t),this.vbo_angles=new n.VertexBuffer(t),this.vbo_texcoord=new n.VertexBuffer(t),this.dash_atlas=new u(t)}draw(t,e,s){const i=e.glglyph;if(i.data_changed&&(i._set_data(),i.data_changed=!1),this.visuals_changed&&(this._set_visuals(),this.visuals_changed=!1),i._update_scale(1,1),this._scale_aspect=1,this.prog.set_attribute(\"a_position\",\"vec2\",i.vbo_position),this.prog.set_attribute(\"a_tangents\",\"vec4\",i.vbo_tangents),this.prog.set_attribute(\"a_segment\",\"vec2\",i.vbo_segment),this.prog.set_attribute(\"a_angles\",\"vec2\",i.vbo_angles),this.prog.set_attribute(\"a_texcoord\",\"vec2\",i.vbo_texcoord),this.prog.set_uniform(\"u_length\",\"float\",[i.cumsum]),this.prog.set_texture(\"u_dash_atlas\",this.dash_atlas.tex),this.prog.set_uniform(\"u_pixel_ratio\",\"float\",[s.pixel_ratio]),this.prog.set_uniform(\"u_canvas_size\",\"vec2\",[s.width,s.height]),this.prog.set_uniform(\"u_scale_aspect\",\"vec2\",[1,1]),this.prog.set_uniform(\"u_scale_length\",\"float\",[Math.sqrt(2)]),this.I_triangles=i.I_triangles,this.I_triangles.length<65535)this.index_buffer.set_size(2*this.I_triangles.length),this.index_buffer.set_data(0,new Uint16Array(this.I_triangles)),this.prog.draw(this.gl.TRIANGLES,this.index_buffer);else{t=Array.from(this.I_triangles);const e=this.I_triangles.length,s=64008,a=[];for(let t=0,i=Math.ceil(e/s);t1)for(let e=0;e0||console.log(`Variable ${t} is not an active attribute`));else if(this._unset_variables.has(t)&&this._unset_variables.delete(t),this.activate(),i instanceof r.VertexBuffer){const[r,o]=this.ATYPEINFO[e],l=\"vertexAttribPointer\",_=[r,o,n,s,a];this._attributes.set(t,[i.handle,h,l,_])}else{const s=this.ATYPEMAP[e];this._attributes.set(t,[null,h,s,i])}}_pre_draw(){this.activate();for(const[t,e,i]of this._samplers.values())this.gl.activeTexture(this.gl.TEXTURE0+i),this.gl.bindTexture(t,e);for(const[t,e,i,s]of this._attributes.values())null!=t?(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t),this.gl.enableVertexAttribArray(e),this.gl[i].apply(this.gl,[e,...s])):(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),this.gl.disableVertexAttribArray(e),this.gl[i].apply(this.gl,[e,...s]));this._validated||(this._validated=!0,this._validate())}_validate(){if(this._unset_variables.size&&console.log(`Program has unset variables: ${this._unset_variables}`),this.gl.validateProgram(this.handle),!this.gl.getProgramParameter(this.handle,this.gl.VALIDATE_STATUS))throw console.log(this.gl.getProgramInfoLog(this.handle)),new Error(\"Program validation error\")}draw(t,e){if(!this._linked)throw new Error(\"Cannot draw program if code has not been set\");if(e instanceof r.IndexBuffer){this._pre_draw(),e.activate();const i=e.buffer_size/2,s=this.gl.UNSIGNED_SHORT;this.gl.drawElements(t,i,s,0),e.deactivate()}else{const[i,s]=e;0!=s&&(this._pre_draw(),this.gl.drawArrays(t,i,s))}}}i.Program=n,n.__name__=\"Program\"},\n function _(t,e,s,i,a){i();class r{constructor(t){this.gl=t,this._usage=35048,this.buffer_size=0,this.handle=this.gl.createBuffer()}delete(){this.gl.deleteBuffer(this.handle)}activate(){this.gl.bindBuffer(this._target,this.handle)}deactivate(){this.gl.bindBuffer(this._target,null)}set_size(t){t!=this.buffer_size&&(this.activate(),this.gl.bufferData(this._target,t,this._usage),this.buffer_size=t)}set_data(t,e){this.activate(),this.gl.bufferSubData(this._target,t,e)}}s.Buffer=r,r.__name__=\"Buffer\";class f extends r{constructor(){super(...arguments),this._target=34962}}s.VertexBuffer=f,f.__name__=\"VertexBuffer\";class h extends r{constructor(){super(...arguments),this._target=34963}}s.IndexBuffer=h,h.__name__=\"IndexBuffer\"},\n function _(t,e,i,a,r){a();const s=t(11);class h{constructor(t){this.gl=t,this._target=3553,this._types={Int8Array:5120,Uint8Array:5121,Int16Array:5122,Uint16Array:5123,Int32Array:5124,Uint32Array:5125,Float32Array:5126},this.handle=this.gl.createTexture()}delete(){this.gl.deleteTexture(this.handle)}activate(){this.gl.bindTexture(this._target,this.handle)}deactivate(){this.gl.bindTexture(this._target,0)}_get_alignment(t){const e=[4,8,2,1];for(const i of e)if(t%i==0)return i;s.unreachable()}set_wrapping(t,e){this.activate(),this.gl.texParameterf(this._target,this.gl.TEXTURE_WRAP_S,t),this.gl.texParameterf(this._target,this.gl.TEXTURE_WRAP_T,e)}set_interpolation(t,e){this.activate(),this.gl.texParameterf(this._target,this.gl.TEXTURE_MIN_FILTER,t),this.gl.texParameterf(this._target,this.gl.TEXTURE_MAG_FILTER,e)}set_size([t,e],i){var a,r,s;t==(null===(a=this._shape_format)||void 0===a?void 0:a.width)&&e==(null===(r=this._shape_format)||void 0===r?void 0:r.height)&&i==(null===(s=this._shape_format)||void 0===s?void 0:s.format)||(this._shape_format={width:t,height:e,format:i},this.activate(),this.gl.texImage2D(this._target,0,i,t,e,0,i,this.gl.UNSIGNED_BYTE,null))}set_data(t,[e,i],a){this.activate();const{format:r}=this._shape_format,[s,h]=t,l=this._types[a.constructor.name];if(null==l)throw new Error(`Type ${a.constructor.name} not allowed for texture`);const _=this._get_alignment(e);4!=_&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,_),this.gl.texSubImage2D(this._target,0,s,h,e,i,r,l,a),4!=_&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,4)}}i.Texture2d=h,h.__name__=\"Texture2d\"},\n function _(e,t,s,i,h){i();class a{constructor(e,t){this.gl=e,this.glyph=t,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1}set_data_changed(){const{data_size:e}=this.glyph;e!=this.nvertices&&(this.nvertices=e,this.size_changed=!0),this.data_changed=!0}set_visuals_changed(){this.visuals_changed=!0}render(e,t,s){if(0==t.length)return!0;const{width:i,height:h}=this.glyph.renderer.plot_view.canvas_view.webgl.canvas,a={pixel_ratio:this.glyph.renderer.plot_view.canvas_view.pixel_ratio,width:i,height:h};return this.draw(t,s,a),!0}}s.BaseGLGlyph=a,a.__name__=\"BaseGLGlyph\"},\n function _(n,e,t,a,i){a();t.default=\"\\nprecision mediump float;\\n\\nconst float PI = 3.14159265358979323846264;\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\n\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size, u_offset;\\nuniform vec2 u_scale_aspect;\\nuniform float u_scale_length;\\n\\nuniform vec4 u_color;\\nuniform float u_antialias;\\nuniform float u_length;\\nuniform float u_linewidth;\\nuniform float u_dash_index;\\nuniform float u_closed;\\n\\nattribute vec2 a_position;\\nattribute vec4 a_tangents;\\nattribute vec2 a_segment;\\nattribute vec2 a_angles;\\nattribute vec2 a_texcoord;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_segment;\\nvarying vec2 v_angles;\\nvarying vec2 v_texcoord;\\nvarying vec2 v_miter;\\nvarying float v_length;\\nvarying float v_linewidth;\\n\\nfloat cross(in vec2 v1, in vec2 v2)\\n{\\n return v1.x*v2.y - v1.y*v2.x;\\n}\\n\\nfloat signed_distance(in vec2 v1, in vec2 v2, in vec2 v3)\\n{\\n return cross(v2-v1,v1-v3) / length(v2-v1);\\n}\\n\\nvoid rotate( in vec2 v, in float alpha, out vec2 result )\\n{\\n float c = cos(alpha);\\n float s = sin(alpha);\\n result = vec2( c*v.x - s*v.y,\\n s*v.x + c*v.y );\\n}\\n\\nvoid main()\\n{\\n bool closed = (u_closed > 0.0);\\n\\n // Attributes and uniforms to varyings\\n v_color = u_color;\\n v_linewidth = u_linewidth;\\n v_segment = a_segment * u_scale_length;\\n v_length = u_length * u_scale_length;\\n\\n // Scale to map to pixel coordinates. The original algorithm from the paper\\n // assumed isotropic scale. We obviously do not have this.\\n vec2 abs_scale_aspect = abs(u_scale_aspect);\\n vec2 abs_scale = u_scale_length * abs_scale_aspect;\\n\\n // Correct angles for aspect ratio\\n vec2 av;\\n av = vec2(1.0, tan(a_angles.x)) / abs_scale_aspect;\\n v_angles.x = atan(av.y, av.x);\\n av = vec2(1.0, tan(a_angles.y)) / abs_scale_aspect;\\n v_angles.y = atan(av.y, av.x);\\n\\n // Thickness below 1 pixel are represented using a 1 pixel thickness\\n // and a modified alpha\\n v_color.a = min(v_linewidth, v_color.a);\\n v_linewidth = max(v_linewidth, 1.0);\\n\\n // If color is fully transparent we just will discard the fragment anyway\\n if( v_color.a <= 0.0 ) {\\n gl_Position = vec4(0.0,0.0,0.0,1.0);\\n return;\\n }\\n\\n // This is the actual half width of the line\\n float w = ceil(u_antialias+v_linewidth)/2.0;\\n\\n vec2 position = a_position;\\n\\n vec2 t1 = normalize(a_tangents.xy * abs_scale_aspect); // note the scaling for aspect ratio here\\n vec2 t2 = normalize(a_tangents.zw * abs_scale_aspect);\\n float u = a_texcoord.x;\\n float v = a_texcoord.y;\\n vec2 o1 = vec2( +t1.y, -t1.x);\\n vec2 o2 = vec2( +t2.y, -t2.x);\\n\\n // This is a join\\n // ----------------------------------------------------------------\\n if( t1 != t2 ) {\\n float angle = atan (t1.x*t2.y-t1.y*t2.x, t1.x*t2.x+t1.y*t2.y); // Angle needs recalculation for some reason\\n vec2 t = normalize(t1+t2);\\n vec2 o = vec2( + t.y, - t.x);\\n\\n if ( u_dash_index > 0.0 )\\n {\\n // Broken angle\\n // ----------------------------------------------------------------\\n if( (abs(angle) > THETA) ) {\\n position += v * w * o / cos(angle/2.0);\\n float s = sign(angle);\\n if( angle < 0.0 ) {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n if( v == 1.0 ) {\\n position -= 2.0 * w * t1 / sin(angle);\\n u -= 2.0 * w / sin(angle);\\n }\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n if( v == 1.0 ) {\\n position += 2.0 * w * t2 / sin(angle);\\n u += 2.0*w / sin(angle);\\n }\\n }\\n } else {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n if( v == -1.0 ) {\\n position += 2.0 * w * t1 / sin(angle);\\n u += 2.0 * w / sin(angle);\\n }\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n if( v == -1.0 ) {\\n position -= 2.0 * w * t2 / sin(angle);\\n u -= 2.0*w / sin(angle);\\n }\\n }\\n }\\n // Continuous angle\\n // ------------------------------------------------------------\\n } else {\\n position += v * w * o / cos(angle/2.0);\\n if( u == +1.0 ) u = v_segment.y;\\n else u = v_segment.x;\\n }\\n }\\n\\n // Solid line\\n // --------------------------------------------------------------------\\n else\\n {\\n position.xy += v * w * o / cos(angle/2.0);\\n if( angle < 0.0 ) {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n }\\n } else {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n }\\n }\\n }\\n\\n // This is a line start or end (t1 == t2)\\n // ------------------------------------------------------------------------\\n } else {\\n position += v * w * o1;\\n if( u == -1.0 ) {\\n u = v_segment.x - w;\\n position -= w * t1;\\n } else {\\n u = v_segment.y + w;\\n position += w * t2;\\n }\\n }\\n\\n // Miter distance\\n // ------------------------------------------------------------------------\\n vec2 t;\\n vec2 curr = a_position * abs_scale;\\n if( a_texcoord.x < 0.0 ) {\\n vec2 next = curr + t2*(v_segment.y-v_segment.x);\\n\\n rotate( t1, +v_angles.x/2.0, t);\\n v_miter.x = signed_distance(curr, curr+t, position);\\n\\n rotate( t2, +v_angles.y/2.0, t);\\n v_miter.y = signed_distance(next, next+t, position);\\n } else {\\n vec2 prev = curr - t1*(v_segment.y-v_segment.x);\\n\\n rotate( t1, -v_angles.x/2.0,t);\\n v_miter.x = signed_distance(prev, prev+t, position);\\n\\n rotate( t2, -v_angles.y/2.0,t);\\n v_miter.y = signed_distance(curr, curr+t, position);\\n }\\n\\n if (!closed && v_segment.x <= 0.0) {\\n v_miter.x = 1e10;\\n }\\n if (!closed && v_segment.y >= v_length)\\n {\\n v_miter.y = 1e10;\\n }\\n\\n v_texcoord = vec2( u, v*w );\\n\\n // Calculate position in device coordinates. Note that we\\n // already scaled with abs scale above.\\n vec2 normpos = position * sign(u_scale_aspect);\\n normpos += 0.5; // make up for Bokeh's offset\\n normpos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(normpos*2.0-1.0, 0.0, 1.0);\\n gl_Position.y *= -1.0;\\n}\\n\"},\n function _(n,t,e,s,a){s();e.default=\"\\nprecision mediump float;\\n\\nconst float PI = 3.14159265358979323846264;\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\n\\nuniform sampler2D u_dash_atlas;\\n\\nuniform vec2 u_linecaps;\\nuniform float u_miter_limit;\\nuniform float u_linejoin;\\nuniform float u_antialias;\\nuniform float u_dash_phase;\\nuniform float u_dash_period;\\nuniform float u_dash_index;\\nuniform vec2 u_dash_caps;\\nuniform float u_closed;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_segment;\\nvarying vec2 v_angles;\\nvarying vec2 v_texcoord;\\nvarying vec2 v_miter;\\nvarying float v_length;\\nvarying float v_linewidth;\\n\\n// Compute distance to cap ----------------------------------------------------\\nfloat cap( int type, float dx, float dy, float t, float linewidth )\\n{\\n float d = 0.0;\\n dx = abs(dx);\\n dy = abs(dy);\\n if (type == 0) discard; // None\\n else if (type == 1) d = sqrt(dx*dx+dy*dy); // Round\\n else if (type == 3) d = (dx+abs(dy)); // Triangle in\\n else if (type == 2) d = max(abs(dy),(t+dx-abs(dy))); // Triangle out\\n else if (type == 4) d = max(dx,dy); // Square\\n else if (type == 5) d = max(dx+t,dy); // Butt\\n return d;\\n}\\n\\n// Compute distance to join -------------------------------------------------\\nfloat join( in int type, in float d, in vec2 segment, in vec2 texcoord, in vec2 miter,\\n in float linewidth )\\n{\\n // texcoord.x is distance from start\\n // texcoord.y is distance from centerline\\n // segment.x and y indicate the limits (as for texcoord.x) for this segment\\n\\n float dx = texcoord.x;\\n\\n // Round join\\n if( type == 1 ) {\\n if (dx < segment.x) {\\n d = max(d,length( texcoord - vec2(segment.x,0.0)));\\n //d = length( texcoord - vec2(segment.x,0.0));\\n } else if (dx > segment.y) {\\n d = max(d,length( texcoord - vec2(segment.y,0.0)));\\n //d = length( texcoord - vec2(segment.y,0.0));\\n }\\n }\\n // Bevel join\\n else if ( type == 2 ) {\\n if (dx < segment.x) {\\n vec2 x = texcoord - vec2(segment.x,0.0);\\n d = max(d, max(abs(x.x), abs(x.y)));\\n\\n } else if (dx > segment.y) {\\n vec2 x = texcoord - vec2(segment.y,0.0);\\n d = max(d, max(abs(x.x), abs(x.y)));\\n }\\n /* Original code for bevel which does not work for us\\n if( (dx < segment.x) || (dx > segment.y) )\\n d = max(d, min(abs(x.x),abs(x.y)));\\n */\\n }\\n\\n return d;\\n}\\n\\nvoid main()\\n{\\n // If color is fully transparent we just discard the fragment\\n if( v_color.a <= 0.0 ) {\\n discard;\\n }\\n\\n // Test if dash pattern is the solid one (0)\\n bool solid = (u_dash_index == 0.0);\\n\\n // Test if path is closed\\n bool closed = (u_closed > 0.0);\\n\\n vec4 color = v_color;\\n float dx = v_texcoord.x;\\n float dy = v_texcoord.y;\\n float t = v_linewidth/2.0-u_antialias;\\n float width = 1.0; //v_linewidth; original code had dashes scale with line width, we do not\\n float d = 0.0;\\n\\n vec2 linecaps = u_linecaps;\\n vec2 dash_caps = u_dash_caps;\\n float line_start = 0.0;\\n float line_stop = v_length;\\n\\n // Apply miter limit; fragments too far into the miter are simply discarded\\n if( (dx < v_segment.x) || (dx > v_segment.y) ) {\\n float into_miter = max(v_segment.x - dx, dx - v_segment.y);\\n if (into_miter > u_miter_limit*v_linewidth/2.0)\\n discard;\\n }\\n\\n // Solid line --------------------------------------------------------------\\n if( solid ) {\\n d = abs(dy);\\n if( (!closed) && (dx < line_start) ) {\\n d = cap( int(u_linecaps.x), abs(dx), abs(dy), t, v_linewidth );\\n }\\n else if( (!closed) && (dx > line_stop) ) {\\n d = cap( int(u_linecaps.y), abs(dx)-line_stop, abs(dy), t, v_linewidth );\\n }\\n else {\\n d = join( int(u_linejoin), abs(dy), v_segment, v_texcoord, v_miter, v_linewidth );\\n }\\n\\n // Dash line --------------------------------------------------------------\\n } else {\\n float segment_start = v_segment.x;\\n float segment_stop = v_segment.y;\\n float segment_center= (segment_start+segment_stop)/2.0;\\n float freq = u_dash_period*width;\\n float u = mod( dx + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n float dash_center= tex.x * width;\\n float dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n float dash_start = dx - u + _start;\\n float dash_stop = dx - u + _stop;\\n\\n // Compute extents of the first dash (the one relative to v_segment.x)\\n // Note: this could be computed in the vertex shader\\n if( (dash_stop < segment_start) && (dash_caps.x != 5.0) ) {\\n float u = mod(segment_start + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n dash_center= tex.x * width;\\n //dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n dash_start = segment_start - u + _start;\\n dash_stop = segment_start - u + _stop;\\n }\\n\\n // Compute extents of the last dash (the one relatives to v_segment.y)\\n // Note: This could be computed in the vertex shader\\n else if( (dash_start > segment_stop) && (dash_caps.y != 5.0) ) {\\n float u = mod(segment_stop + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n dash_center= tex.x * width;\\n //dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n dash_start = segment_stop - u + _start;\\n dash_stop = segment_stop - u + _stop;\\n }\\n\\n // This test if the we are dealing with a discontinuous angle\\n bool discontinuous = ((dx < segment_center) && abs(v_angles.x) > THETA) ||\\n ((dx >= segment_center) && abs(v_angles.y) > THETA);\\n //if( dx < line_start) discontinuous = false;\\n //if( dx > line_stop) discontinuous = false;\\n\\n float d_join = join( int(u_linejoin), abs(dy),\\n v_segment, v_texcoord, v_miter, v_linewidth );\\n\\n // When path is closed, we do not have room for linecaps, so we make room\\n // by shortening the total length\\n if (closed) {\\n line_start += v_linewidth/2.0;\\n line_stop -= v_linewidth/2.0;\\n }\\n\\n // We also need to take antialias area into account\\n //line_start += u_antialias;\\n //line_stop -= u_antialias;\\n\\n // Check is dash stop is before line start\\n if( dash_stop <= line_start ) {\\n discard;\\n }\\n // Check is dash start is beyond line stop\\n if( dash_start >= line_stop ) {\\n discard;\\n }\\n\\n // Check if current dash start is beyond segment stop\\n if( discontinuous ) {\\n // Dash start is beyond segment, we discard\\n if( (dash_start > segment_stop) ) {\\n discard;\\n //gl_FragColor = vec4(1.0,0.0,0.0,.25); return;\\n }\\n\\n // Dash stop is before segment, we discard\\n if( (dash_stop < segment_start) ) {\\n discard; //gl_FragColor = vec4(0.0,1.0,0.0,.25); return;\\n }\\n\\n // Special case for round caps (nicer with this)\\n if( dash_caps.x == 1.0 ) {\\n if( (u > _stop) && (dash_stop > segment_stop ) && (abs(v_angles.y) < PI/2.0)) {\\n discard;\\n }\\n }\\n\\n // Special case for round caps (nicer with this)\\n if( dash_caps.y == 1.0 ) {\\n if( (u < _start) && (dash_start < segment_start ) && (abs(v_angles.x) < PI/2.0)) {\\n discard;\\n }\\n }\\n\\n // Special case for triangle caps (in & out) and square\\n // We make sure the cap stop at crossing frontier\\n if( (dash_caps.x != 1.0) && (dash_caps.x != 5.0) ) {\\n if( (dash_start < segment_start ) && (abs(v_angles.x) < PI/2.0) ) {\\n float a = v_angles.x/2.0;\\n float x = (segment_start-dx)*cos(a) - dy*sin(a);\\n float y = (segment_start-dx)*sin(a) + dy*cos(a);\\n if( x > 0.0 ) discard;\\n // We transform the cap into square to avoid holes\\n dash_caps.x = 4.0;\\n }\\n }\\n\\n // Special case for triangle caps (in & out) and square\\n // We make sure the cap stop at crossing frontier\\n if( (dash_caps.y != 1.0) && (dash_caps.y != 5.0) ) {\\n if( (dash_stop > segment_stop ) && (abs(v_angles.y) < PI/2.0) ) {\\n float a = v_angles.y/2.0;\\n float x = (dx-segment_stop)*cos(a) - dy*sin(a);\\n float y = (dx-segment_stop)*sin(a) + dy*cos(a);\\n if( x > 0.0 ) discard;\\n // We transform the caps into square to avoid holes\\n dash_caps.y = 4.0;\\n }\\n }\\n }\\n\\n // Line cap at start\\n if( (dx < line_start) && (dash_start < line_start) && (dash_stop > line_start) ) {\\n d = cap( int(linecaps.x), dx-line_start, dy, t, v_linewidth);\\n }\\n // Line cap at stop\\n else if( (dx > line_stop) && (dash_stop > line_stop) && (dash_start < line_stop) ) {\\n d = cap( int(linecaps.y), dx-line_stop, dy, t, v_linewidth);\\n }\\n // Dash cap left - dash_type = -1, 0 or 1, but there may be roundoff errors\\n else if( dash_type < -0.5 ) {\\n d = cap( int(dash_caps.y), abs(u-dash_center), dy, t, v_linewidth);\\n if( (dx > line_start) && (dx < line_stop) )\\n d = max(d,d_join);\\n }\\n // Dash cap right\\n else if( dash_type > 0.5 ) {\\n d = cap( int(dash_caps.x), abs(dash_center-u), dy, t, v_linewidth);\\n if( (dx > line_start) && (dx < line_stop) )\\n d = max(d,d_join);\\n }\\n // Dash body (plain)\\n else {// if( dash_type > -0.5 && dash_type < 0.5) {\\n d = abs(dy);\\n }\\n\\n // Line join\\n if( (dx > line_start) && (dx < line_stop)) {\\n if( (dx <= segment_start) && (dash_start <= segment_start)\\n && (dash_stop >= segment_start) ) {\\n d = d_join;\\n // Antialias at outer border\\n float angle = PI/2.+v_angles.x;\\n float f = abs( (segment_start - dx)*cos(angle) - dy*sin(angle));\\n d = max(f,d);\\n }\\n else if( (dx > segment_stop) && (dash_start <= segment_stop)\\n && (dash_stop >= segment_stop) ) {\\n d = d_join;\\n // Antialias at outer border\\n float angle = PI/2.+v_angles.y;\\n float f = abs((dx - segment_stop)*cos(angle) - dy*sin(angle));\\n d = max(f,d);\\n }\\n else if( dx < (segment_start - v_linewidth/2.)) {\\n discard;\\n }\\n else if( dx > (segment_stop + v_linewidth/2.)) {\\n discard;\\n }\\n }\\n else if( dx < (segment_start - v_linewidth/2.)) {\\n discard;\\n }\\n else if( dx > (segment_stop + v_linewidth/2.)) {\\n discard;\\n }\\n }\\n\\n // Distance to border ------------------------------------------------------\\n d = d - t;\\n if( d < 0.0 ) {\\n gl_FragColor = color;\\n } else {\\n d /= u_antialias;\\n gl_FragColor = vec4(color.rgb, exp(-d*d)*color.a);\\n }\\n}\\n\"},\n function _(i,t,s,e,l){e();const a=i(1),n=i(64),_=i(106),o=a.__importStar(i(107)),h=a.__importStar(i(48)),c=i(59);class r extends n.XYGlyphView{_inner_loop(i,t,s,e,l){for(const a of t){const t=s[a],n=e[a];0!=a?isNaN(t+n)?(i.closePath(),l.apply(i),i.beginPath()):i.lineTo(t,n):(i.beginPath(),i.moveTo(t,n))}i.closePath(),l.call(i)}_render(i,t,s){const{sx:e,sy:l}=null!=s?s:this;this.visuals.fill.doit&&(this.visuals.fill.set_value(i),this._inner_loop(i,t,e,l,i.fill)),this.visuals.hatch.doit&&(this.visuals.hatch.set_value(i),this._inner_loop(i,t,e,l,i.fill)),this.visuals.line.doit&&(this.visuals.line.set_value(i),this._inner_loop(i,t,e,l,i.stroke))}draw_legend_for_index(i,t,s){_.generic_area_scalar_legend(this.visuals,i,t)}_hit_point(i){const t=new c.Selection;return o.point_in_poly(i.sx,i.sy,this.sx,this.sy)&&(t.add_to_selected_glyphs(this.model),t.view=this),t}}s.PatchView=r,r.__name__=\"PatchView\";class p extends n.XYGlyph{constructor(i){super(i)}static init_Patch(){this.prototype.default_view=r,this.mixins([h.LineScalar,h.FillScalar,h.HatchScalar])}}s.Patch=p,p.__name__=\"Patch\",p.init_Patch()},\n function _(t,e,s,i,n){i();const a=t(1),r=t(24),h=t(118),_=a.__importStar(t(107)),l=a.__importStar(t(18)),o=t(59);class c extends h.AreaView{_index_data(t){const{min:e,max:s}=Math,{data_size:i}=this;for(let n=0;n=0;e--)t.lineTo(s[e],i[e]);t.closePath(),n.call(t)}_render(t,e,s){const{sx1:i,sx2:n,sy:a}=null!=s?s:this;this.visuals.fill.doit&&(this.visuals.fill.set_value(t),this._inner(t,i,n,a,t.fill)),this.visuals.hatch.doit&&(this.visuals.hatch.set_value(t),this._inner(t,i,n,a,t.fill))}_hit_point(t){const e=this.sy.length,s=new r.ScreenArray(2*e),i=new r.ScreenArray(2*e);for(let t=0,n=e;t({x1:[l.XCoordinateSpec,{field:\"x1\"}],x2:[l.XCoordinateSpec,{field:\"x2\"}],y:[l.YCoordinateSpec,{field:\"y\"}]})))}}s.HArea=d,d.__name__=\"HArea\",d.init_HArea()},\n function _(e,a,_,i,r){i();const s=e(1),n=e(98),t=e(106),c=s.__importStar(e(48));class l extends n.GlyphView{draw_legend_for_index(e,a,_){t.generic_area_scalar_legend(this.visuals,e,a)}}_.AreaView=l,l.__name__=\"AreaView\";class d extends n.Glyph{constructor(e){super(e)}static init_Area(){this.mixins([c.FillScalar,c.HatchScalar])}}_.Area=d,d.__name__=\"Area\",d.init_Area()},\n function _(t,e,s,i,n){i();const a=t(1),r=t(24),h=t(118),_=a.__importStar(t(107)),l=a.__importStar(t(18)),o=t(59);class c extends h.AreaView{_index_data(t){const{min:e,max:s}=Math,{data_size:i}=this;for(let n=0;n=0;s--)t.lineTo(e[s],i[s]);t.closePath(),n.call(t)}_render(t,e,s){const{sx:i,sy1:n,sy2:a}=null!=s?s:this;this.visuals.fill.doit&&(this.visuals.fill.set_value(t),this._inner(t,i,n,a,t.fill)),this.visuals.hatch.doit&&(this.visuals.hatch.set_value(t),this._inner(t,i,n,a,t.fill))}scenterxy(t){return[this.sx[t],(this.sy1[t]+this.sy2[t])/2]}_hit_point(t){const e=this.sx.length,s=new r.ScreenArray(2*e),i=new r.ScreenArray(2*e);for(let t=0,n=e;t({x:[l.XCoordinateSpec,{field:\"x\"}],y1:[l.YCoordinateSpec,{field:\"y1\"}],y2:[l.YCoordinateSpec,{field:\"y2\"}]})))}}s.VArea=d,d.__name__=\"VArea\",d.init_VArea()},\n function _(i,e,s,t,n){t();const c=i(53),o=i(59),r=i(24),a=i(121),u=i(57);class _ extends c.Model{constructor(i){super(i)}static init_CDSView(){this.define((({Array:i,Ref:e})=>({filters:[i(e(a.Filter)),[]],source:[e(u.ColumnarDataSource)]}))),this.internal((({Int:i,Dict:e,Ref:s,Nullable:t})=>({indices:[s(r.Indices)],indices_map:[e(i),{}],masked:[t(s(r.Indices)),null]})))}initialize(){super.initialize(),this.compute_indices()}connect_signals(){super.connect_signals(),this.connect(this.properties.filters.change,(()=>this.compute_indices()));const i=()=>{const i=()=>this.compute_indices();null!=this.source&&(this.connect(this.source.change,i),this.source instanceof u.ColumnarDataSource&&(this.connect(this.source.streaming,i),this.connect(this.source.patching,i)))};let e=null!=this.source;e?i():this.connect(this.properties.source.change,(()=>{e||(i(),e=!0)}))}compute_indices(){var i;const{source:e}=this;if(null==e)return;const s=null!==(i=e.get_length())&&void 0!==i?i:1,t=r.Indices.all_set(s);for(const i of this.filters)t.intersect(i.compute_indices(e));this.indices=t,this._indices=[...t],this.indices_map_to_subset()}indices_map_to_subset(){this.indices_map={};for(let i=0;ithis._indices[i]));return new o.Selection(Object.assign(Object.assign({},i.attributes),{indices:e}))}convert_selection_to_subset(i){const e=i.indices.map((i=>this.indices_map[i]));return new o.Selection(Object.assign(Object.assign({},i.attributes),{indices:e}))}convert_indices_from_subset(i){return i.map((i=>this._indices[i]))}}s.CDSView=_,_.__name__=\"CDSView\",_.init_CDSView()},\n function _(e,t,n,s,c){s();const o=e(53);class r extends o.Model{constructor(e){super(e)}}n.Filter=r,r.__name__=\"Filter\"},\n function _(n,e,t,i,o){i();const s=n(9);async function c(n,e,t){const i=new n(Object.assign(Object.assign({},t),{model:e}));return i.initialize(),await i.lazy_initialize(),i}t.build_view=async function(n,e={parent:null},t=(n=>n.default_view)){const i=await c(t(n),n,e);return i.connect_signals(),i},t.build_views=async function(n,e,t={parent:null},i=(n=>n.default_view)){const o=s.difference([...n.keys()],e);for(const e of o)n.get(e).remove(),n.delete(e);const a=[],f=e.filter((e=>!n.has(e)));for(const e of f){const o=await c(i(e),e,t);n.set(e,o),a.push(o)}for(const n of a)n.connect_signals();return a},t.remove_views=function(n){for(const[e,t]of n)t.remove(),n.delete(e)}},\n function _(e,r,n,t,i){t();const s=e(62),o=e(61),l=e(124),d=e(125),a=e(126),p=e(122),_=e(64),h=e(127),c=e(128),u=e(11);class y extends s.DataRendererView{get glyph_view(){return this.node_view.glyph}async lazy_initialize(){await super.lazy_initialize();const e=this.model;let r=null,n=null;const t=new class extends l.Expression{_v_compute(n){u.assert(null==r);const[t]=r=e.layout_provider.get_edge_coordinates(n);return t}},i=new class extends l.Expression{_v_compute(e){u.assert(null!=r);const[,n]=r;return r=null,n}},s=new class extends l.Expression{_v_compute(r){u.assert(null==n);const[t]=n=e.layout_provider.get_node_coordinates(r);return t}},o=new class extends l.Expression{_v_compute(e){u.assert(null!=n);const[,r]=n;return n=null,r}},{edge_renderer:d,node_renderer:a}=this.model;if(!(d.glyph instanceof h.MultiLine||d.glyph instanceof c.Patches))throw new Error(`${this}.edge_renderer.glyph must be a MultiLine glyph`);if(!(a.glyph instanceof _.XYGlyph))throw new Error(`${this}.node_renderer.glyph must be a XYGlyph glyph`);d.glyph.properties.xs.internal=!0,d.glyph.properties.ys.internal=!0,a.glyph.properties.x.internal=!0,a.glyph.properties.y.internal=!0,d.glyph.xs={expr:t},d.glyph.ys={expr:i},a.glyph.x={expr:s},a.glyph.y={expr:o};const{parent:y}=this;this.edge_view=await p.build_view(d,{parent:y}),this.node_view=await p.build_view(a,{parent:y})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,(()=>{this.edge_view.set_data(),this.node_view.set_data(),this.request_render()}))}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}renderer_view(e){if(e instanceof o.GlyphRenderer){if(e==this.edge_view.model)return this.edge_view;if(e==this.node_view.model)return this.node_view}return super.renderer_view(e)}}n.GraphRendererView=y,y.__name__=\"GraphRendererView\";class g extends s.DataRenderer{constructor(e){super(e)}static init_GraphRenderer(){this.prototype.default_view=y,this.define((({Ref:e})=>({layout_provider:[e(d.LayoutProvider)],node_renderer:[e(o.GlyphRenderer)],edge_renderer:[e(o.GlyphRenderer)],selection_policy:[e(a.GraphHitTestPolicy),()=>new a.NodesOnly],inspection_policy:[e(a.GraphHitTestPolicy),()=>new a.NodesOnly]})))}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}n.GraphRenderer=g,g.__name__=\"GraphRenderer\",g.init_GraphRenderer()},\n function _(e,t,s,n,i){n();const c=e(53);class l extends c.Model{constructor(e){super(e)}initialize(){super.initialize(),this._connected=new Set,this._result=new Map}v_compute(e){this._connected.has(e)||(this.connect(e.change,(()=>this._result.delete(e))),this.connect(e.patching,(()=>this._result.delete(e))),this.connect(e.streaming,(()=>this._result.delete(e))),this._connected.add(e));let t=this._result.get(e);return null==t&&(t=this._v_compute(e),this._result.set(e,t)),t}}s.Expression=l,l.__name__=\"Expression\";class h extends c.Model{constructor(e){super(e)}initialize(){super.initialize(),this._connected=new Set,this._result=new Map}compute(e){this._connected.has(e)||(this.connect(e.change,(()=>this._result.delete(e))),this.connect(e.patching,(()=>this._result.delete(e))),this.connect(e.streaming,(()=>this._result.delete(e))),this._connected.add(e));let t=this._result.get(e);return null==t&&(t=this._compute(e),this._result.set(e,t)),t}}s.ScalarExpression=h,h.__name__=\"ScalarExpression\"},\n function _(o,e,r,t,n){t();const s=o(53);class c extends s.Model{constructor(o){super(o)}}r.LayoutProvider=c,c.__name__=\"LayoutProvider\"},\n function _(e,t,d,n,s){n();const o=e(53),r=e(12),_=e(9),i=e(59);class c extends o.Model{constructor(e){super(e)}_hit_test(e,t,d){if(!t.model.visible)return null;const n=d.glyph.hit_test(e);return null==n?null:d.model.view.convert_selection_from_subset(n)}}d.GraphHitTestPolicy=c,c.__name__=\"GraphHitTestPolicy\";class a extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.edge_view)}do_selection(e,t,d,n){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;return s.update(e,d,n),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const{edge_renderer:o}=d.model,r=o.get_selection_manager().get_or_create_inspector(d.edge_view.model);return r.update(e,n,s),d.edge_view.model.data_source.setv({inspected:r},{silent:!0}),d.edge_view.model.data_source.inspect.emit([d.edge_view.model,{geometry:t}]),!r.is_empty()}}d.EdgesOnly=a,a.__name__=\"EdgesOnly\";class l extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.node_view)}do_selection(e,t,d,n){if(null==e)return!1;const s=t.node_renderer.data_source.selected;return s.update(e,d,n),t.node_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const{node_renderer:o}=d.model,r=o.get_selection_manager().get_or_create_inspector(d.node_view.model);return r.update(e,n,s),d.node_view.model.data_source.setv({inspected:r},{silent:!0}),d.node_view.model.data_source.inspect.emit([d.node_view.model,{geometry:t}]),!r.is_empty()}}d.NodesOnly=l,l.__name__=\"NodesOnly\";class u extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.node_view)}get_linked_edges(e,t,d){let n=[];\"selection\"==d?n=e.selected.indices.map((t=>e.data.index[t])):\"inspection\"==d&&(n=e.inspected.indices.map((t=>e.data.index[t])));const s=[];for(let e=0;er.indexOf(e.data.index,t)));return new i.Selection({indices:o})}do_selection(e,t,d,n){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;s.update(e,d,n);const o=t.node_renderer.data_source.selected,r=this.get_linked_nodes(t.node_renderer.data_source,t.edge_renderer.data_source,\"selection\");return o.update(r,d,n),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const o=d.edge_view.model.data_source.selection_manager.get_or_create_inspector(d.edge_view.model);o.update(e,n,s),d.edge_view.model.data_source.setv({inspected:o},{silent:!0});const r=d.node_view.model.data_source.selection_manager.get_or_create_inspector(d.node_view.model),_=this.get_linked_nodes(d.node_view.model.data_source,d.edge_view.model.data_source,\"inspection\");return r.update(_,n,s),d.node_view.model.data_source.setv({inspected:r},{silent:!0}),d.edge_view.model.data_source.inspect.emit([d.edge_view.model,{geometry:t}]),!o.is_empty()}}d.EdgesAndLinkedNodes=m,m.__name__=\"EdgesAndLinkedNodes\"},\n function _(t,e,i,n,s){n();const o=t(1),l=t(65),r=t(48),_=o.__importStar(t(107)),c=o.__importStar(t(18)),h=t(12),a=t(13),d=t(98),x=t(106),y=t(59);class g extends d.GlyphView{_project_data(){l.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(t){const{data_size:e}=this;for(let i=0;i0&&o.set(t,i)}return new y.Selection({indices:[...o.keys()],multiline_indices:a.to_object(o)})}get_interpolation_hit(t,e,i){const n=this._xs.get(t),s=this._ys.get(t),o=n[e],l=s[e],r=n[e+1],_=s[e+1];return x.line_interpolation(this.renderer,i,o,l,r,_)}draw_legend_for_index(t,e,i){x.generic_line_vector_legend(this.visuals,t,e,i)}scenterxy(){throw new Error(`${this}.scenterxy() is not implemented`)}}i.MultiLineView=g,g.__name__=\"MultiLineView\";class u extends d.Glyph{constructor(t){super(t)}static init_MultiLine(){this.prototype.default_view=g,this.define((({})=>({xs:[c.XCoordinateSeqSpec,{field:\"xs\"}],ys:[c.YCoordinateSeqSpec,{field:\"ys\"}]}))),this.mixins(r.LineVector)}}i.MultiLine=u,u.__name__=\"MultiLine\",u.init_MultiLine()},\n function _(e,t,s,i,n){i();const r=e(1),o=e(98),a=e(106),_=e(12),c=e(48),l=r.__importStar(e(107)),h=r.__importStar(e(18)),d=e(59),y=e(11),p=e(65);class x extends o.GlyphView{_project_data(){p.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let s=0;s({xs:[h.XCoordinateSeqSpec,{field:\"xs\"}],ys:[h.YCoordinateSeqSpec,{field:\"ys\"}]}))),this.mixins([c.LineVector,c.FillVector,c.HatchVector])}}s.Patches=f,f.__name__=\"Patches\",f.init_Patches()},\n function _(e,t,n,s,o){s();const r=e(53);class c extends r.Model{do_selection(e,t,n,s){return null!=e&&(t.selected.update(e,n,s),t._select.emit(),!t.selected.is_empty())}}n.SelectionPolicy=c,c.__name__=\"SelectionPolicy\";class l extends c{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!=t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_intersection(t);return e}return null}}n.IntersectRenderers=l,l.__name__=\"IntersectRenderers\";class _ extends c{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!=t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_union(t);return e}return null}}n.UnionRenderers=_,_.__name__=\"UnionRenderers\"},\n function _(t,n,e,s,o){s();const r=t(1),i=t(57),l=t(8),c=t(13),a=r.__importStar(t(131)),u=t(132),h=t(35);function d(t,n,e){if(l.isArray(t)){const s=t.concat(n);return null!=e&&s.length>e?s.slice(-e):s}if(l.isTypedArray(t)){const s=t.length+n.length;if(null!=e&&s>e){const o=s-e,r=t.length;let i;t.length({data:[t(n),{}]})))}stream(t,n,e){const{data:s}=this;for(const[e,o]of c.entries(t))s[e]=d(s[e],o,n);if(this.setv({data:s},{silent:!0}),this.streaming.emit(),null!=this.document){const s=new h.ColumnsStreamedEvent(this.document,this.ref(),t,n);this.document._notify_change(this,\"data\",null,null,{setter_id:e,hint:s})}}patch(t,n){const{data:e}=this;let s=new Set;for(const[n,o]of c.entries(t))s=u.union(s,m(e[n],o));if(this.setv({data:e},{silent:!0}),this.patching.emit([...s]),null!=this.document){const e=new h.ColumnsPatchedEvent(this.document,this.ref(),t);this.document._notify_change(this,\"data\",null,null,{setter_id:n,hint:e})}}}e.ColumnDataSource=_,_.__name__=\"ColumnDataSource\",_.init_ColumnDataSource()},\n function _(t,n,o,e,c){e(),o.concat=function(t,...n){let o=t.length;for(const t of n)o+=t.length;const e=new t.constructor(o);e.set(t,0);let c=t.length;for(const t of n)e.set(t,c),c+=t.length;return e}},\n function _(n,o,t,e,f){function c(...n){const o=new Set;for(const t of n)for(const n of t)o.add(n);return o}e(),t.union=c,t.intersection=function(n,...o){const t=new Set;n:for(const e of n){for(const n of o)if(!n.has(e))continue n;t.add(e)}return t},t.difference=function(n,...o){const t=new Set(n);for(const n of c(...o))t.delete(n);return t}},\n function _(e,i,t,s,o){s();const n=e(1),a=e(53),l=e(42),r=n.__importStar(e(45)),_=e(48),c=n.__importStar(e(18));class d extends l.View{initialize(){super.initialize(),this.visuals=new r.Visuals(this)}request_render(){this.parent.request_render()}get canvas(){return this.parent.canvas}set_data(e){const i=this;for(const t of this.model){if(!(t instanceof c.VectorSpec||t instanceof c.ScalarSpec))continue;const s=t.uniform(e);i[`${t.attr}`]=s}}}t.ArrowHeadView=d,d.__name__=\"ArrowHeadView\";class h extends a.Model{constructor(e){super(e)}static init_ArrowHead(){this.define((()=>({size:[c.NumberSpec,25]})))}}t.ArrowHead=h,h.__name__=\"ArrowHead\",h.init_ArrowHead();class v extends d{clip(e,i){this.visuals.line.set_vectorize(e,i);const t=this.size.get(i);e.moveTo(.5*t,t),e.lineTo(.5*t,-2),e.lineTo(-.5*t,-2),e.lineTo(-.5*t,t),e.lineTo(0,0),e.lineTo(.5*t,t)}render(e,i){if(this.visuals.line.doit){this.visuals.line.set_vectorize(e,i);const t=this.size.get(i);e.beginPath(),e.moveTo(.5*t,t),e.lineTo(0,0),e.lineTo(-.5*t,t),e.stroke()}}}t.OpenHeadView=v,v.__name__=\"OpenHeadView\";class u extends h{constructor(e){super(e)}static init_OpenHead(){this.prototype.default_view=v,this.mixins(_.LineVector)}}t.OpenHead=u,u.__name__=\"OpenHead\",u.init_OpenHead();class m extends d{clip(e,i){this.visuals.line.set_vectorize(e,i);const t=this.size.get(i);e.moveTo(.5*t,t),e.lineTo(.5*t,-2),e.lineTo(-.5*t,-2),e.lineTo(-.5*t,t),e.lineTo(.5*t,t)}render(e,i){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,i),this._normal(e,i),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,i),this._normal(e,i),e.stroke())}_normal(e,i){const t=this.size.get(i);e.beginPath(),e.moveTo(.5*t,t),e.lineTo(0,0),e.lineTo(-.5*t,t),e.closePath()}}t.NormalHeadView=m,m.__name__=\"NormalHeadView\";class T extends h{constructor(e){super(e)}static init_NormalHead(){this.prototype.default_view=m,this.mixins([_.LineVector,_.FillVector]),this.override({fill_color:\"black\"})}}t.NormalHead=T,T.__name__=\"NormalHead\",T.init_NormalHead();class p extends d{clip(e,i){this.visuals.line.set_vectorize(e,i);const t=this.size.get(i);e.moveTo(.5*t,t),e.lineTo(.5*t,-2),e.lineTo(-.5*t,-2),e.lineTo(-.5*t,t),e.lineTo(0,.5*t),e.lineTo(.5*t,t)}render(e,i){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,i),this._vee(e,i),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,i),this._vee(e,i),e.stroke())}_vee(e,i){const t=this.size.get(i);e.beginPath(),e.moveTo(.5*t,t),e.lineTo(0,0),e.lineTo(-.5*t,t),e.lineTo(0,.5*t),e.closePath()}}t.VeeHeadView=p,p.__name__=\"VeeHeadView\";class H extends h{constructor(e){super(e)}static init_VeeHead(){this.prototype.default_view=p,this.mixins([_.LineVector,_.FillVector]),this.override({fill_color:\"black\"})}}t.VeeHead=H,H.__name__=\"VeeHead\",H.init_VeeHead();class V extends d{render(e,i){if(this.visuals.line.doit){this.visuals.line.set_vectorize(e,i);const t=this.size.get(i);e.beginPath(),e.moveTo(.5*t,0),e.lineTo(-.5*t,0),e.stroke()}}clip(e,i){}}t.TeeHeadView=V,V.__name__=\"TeeHeadView\";class f extends h{constructor(e){super(e)}static init_TeeHead(){this.prototype.default_view=V,this.mixins(_.LineVector)}}t.TeeHead=f,f.__name__=\"TeeHead\",f.init_TeeHead()},\n function _(s,e,i,t,l){t();const _=s(1),o=s(135),r=_.__importStar(s(48));class h extends o.UpperLowerView{paint(s){s.beginPath(),s.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let e=0,i=this._lower_sx.length;e=0;e--)s.lineTo(this._upper_sx[e],this._upper_sy[e]);s.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(s),s.fill()),s.beginPath(),s.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let e=0,i=this._lower_sx.length;e({dimension:[n.Dimension,\"height\"],lower:[h,{field:\"lower\"}],upper:[h,{field:\"upper\"}],base:[h,{field:\"base\"}]})))}}i.UpperLower=d,d.__name__=\"UpperLower\",d.init_UpperLower()},\n function _(t,i,o,n,e){n();const s=t(1),l=t(40),a=s.__importStar(t(48)),r=t(20),h=t(99);o.EDGE_TOLERANCE=2.5;class c extends l.AnnotationView{constructor(){super(...arguments),this.bbox=new h.BBox}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{left:t,right:i,top:o,bottom:n}=this.model;if(null==t&&null==i&&null==o&&null==n)return;const{frame:e}=this.plot_view,s=this.coordinates.x_scale,l=this.coordinates.y_scale,a=(t,i,o,n,e)=>{let s;return s=null!=t?this.model.screen?t:\"data\"==i?o.compute(t):n.compute(t):e,s};this.bbox=h.BBox.from_rect({left:a(t,this.model.left_units,s,e.bbox.xview,e.bbox.left),right:a(i,this.model.right_units,s,e.bbox.xview,e.bbox.right),top:a(o,this.model.top_units,l,e.bbox.yview,e.bbox.top),bottom:a(n,this.model.bottom_units,l,e.bbox.yview,e.bbox.bottom)}),this._paint_box()}_paint_box(){const{ctx:t}=this.layer;t.save();const{left:i,top:o,width:n,height:e}=this.bbox;t.beginPath(),t.rect(i,o,n,e),this.visuals.fill.doit&&(this.visuals.fill.set_value(t),t.fill()),this.visuals.hatch.doit&&(this.visuals.hatch.set_value(t),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_value(t),t.stroke()),t.restore()}interactive_bbox(){const t=this.model.line_width+o.EDGE_TOLERANCE;return this.bbox.grow_by(t)}interactive_hit(t,i){if(null==this.model.in_cursor)return!1;return this.interactive_bbox().contains(t,i)}cursor(t,i){const{left:o,right:n,bottom:e,top:s}=this.bbox;return Math.abs(t-o)<3||Math.abs(t-n)<3?this.model.ew_cursor:Math.abs(i-e)<3||Math.abs(i-s)<3?this.model.ns_cursor:this.bbox.contains(t,i)?this.model.in_cursor:null}}o.BoxAnnotationView=c,c.__name__=\"BoxAnnotationView\";class u extends l.Annotation{constructor(t){super(t)}static init_BoxAnnotation(){this.prototype.default_view=c,this.mixins([a.Line,a.Fill,a.Hatch]),this.define((({Number:t,Nullable:i})=>({top:[i(t),null],top_units:[r.SpatialUnits,\"data\"],bottom:[i(t),null],bottom_units:[r.SpatialUnits,\"data\"],left:[i(t),null],left_units:[r.SpatialUnits,\"data\"],right:[i(t),null],right_units:[r.SpatialUnits,\"data\"],render_mode:[r.RenderMode,\"canvas\"]}))),this.internal((({Boolean:t,String:i,Nullable:o})=>({screen:[t,!1],ew_cursor:[o(i),null],ns_cursor:[o(i),null],in_cursor:[o(i),null]}))),this.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})}update({left:t,right:i,top:o,bottom:n}){this.setv({left:t,right:i,top:o,bottom:n,screen:!0})}}o.BoxAnnotation=u,u.__name__=\"BoxAnnotation\",u.init_BoxAnnotation()},\n function _(t,e,i,a,n){a();const o=t(1),r=t(40),s=t(138),l=t(144),_=t(162),c=t(165),h=t(198),u=t(166),p=t(205),m=t(169),g=t(203),d=t(202),f=t(209),w=t(217),b=t(220),v=t(20),y=o.__importStar(t(48)),k=t(9),x=t(221),C=t(222),j=t(225),z=t(140),L=t(11),S=t(122),M=t(8);class T extends r.AnnotationView{get orientation(){return this._orientation}initialize(){super.initialize();const{ticker:t,formatter:e,color_mapper:i}=this.model;this._ticker=\"auto\"!=t?t:(()=>{switch(!0){case i instanceof f.LogColorMapper:return new h.LogTicker;case i instanceof f.ScanningColorMapper:return new h.BinnedTicker({mapper:i});case i instanceof f.CategoricalColorMapper:return new h.CategoricalTicker;default:return new h.BasicTicker}})(),this._formatter=\"auto\"!=e?e:(()=>{switch(!0){case this._ticker instanceof h.LogTicker:return new p.LogTickFormatter;case i instanceof f.CategoricalColorMapper:return new p.CategoricalTickFormatter;default:return new p.BasicTickFormatter}})(),this._major_range=(()=>{if(i instanceof f.CategoricalColorMapper){const{factors:t}=i;return new b.FactorRange({factors:t})}if(i instanceof d.ContinuousColorMapper){const{min:t,max:e}=i.metrics;return new b.Range1d({start:t,end:e})}L.unreachable()})(),this._major_scale=(()=>{if(i instanceof f.LinearColorMapper)return new w.LinearScale;if(i instanceof f.LogColorMapper)return new w.LogScale;if(i instanceof f.ScanningColorMapper){const{binning:t}=i.metrics;return new w.LinearInterpolationScale({binning:t})}if(i instanceof f.CategoricalColorMapper)return new w.CategoricalScale;L.unreachable()})(),this._minor_range=new b.Range1d({start:0,end:1}),this._minor_scale=new w.LinearScale;const a=y.attrs_of(this.model,\"major_label_\",y.Text,!0),n=y.attrs_of(this.model,\"major_tick_\",y.Line,!0),o=y.attrs_of(this.model,\"minor_tick_\",y.Line,!0),r=y.attrs_of(this.model,\"title_\",y.Text),l=i instanceof f.CategoricalColorMapper?_.CategoricalAxis:i instanceof f.LogColorMapper?_.LogAxis:_.LinearAxis;this._axis=new l(Object.assign(Object.assign(Object.assign({ticker:this._ticker,formatter:this._formatter,major_tick_in:this.model.major_tick_in,major_tick_out:this.model.major_tick_out,minor_tick_in:this.model.minor_tick_in,minor_tick_out:this.model.minor_tick_out,major_label_standoff:this.model.label_standoff,major_label_overrides:this.model.major_label_overrides,major_label_policy:this.model.major_label_policy,axis_line_color:null},a),n),o));const{title:c}=this.model;c&&(this._title=new s.Title(Object.assign({text:c,standoff:this.model.title_standoff},r)))}async lazy_initialize(){await super.lazy_initialize();const t=this,e={get parent(){return t.parent},get root(){return t.root},get frame(){return t._frame},get canvas_view(){return t.parent.canvas_view},request_layout(){t.parent.request_layout()}};this._axis_view=await S.build_view(this._axis,{parent:e}),null!=this._title&&(this._title_view=await S.build_view(this._title,{parent:e}))}remove(){var t;null===(t=this._title_view)||void 0===t||t.remove(),this._axis_view.remove(),super.remove()}connect_signals(){super.connect_signals(),this.connect(this._ticker.change,(()=>this.request_render())),this.connect(this._formatter.change,(()=>this.request_render())),this.connect(this.model.color_mapper.metrics_change,(()=>{const t=this._major_range,e=this._major_scale,{color_mapper:i}=this.model;if(i instanceof d.ContinuousColorMapper&&t instanceof b.Range1d){const{min:e,max:a}=i.metrics;t.setv({start:e,end:a})}if(i instanceof f.ScanningColorMapper&&e instanceof w.LinearInterpolationScale){const{binning:t}=i.metrics;e.binning=t}this._set_canvas_image(),this.plot_view.request_layout()}))}_set_canvas_image(){const{orientation:t}=this,e=(()=>{const{palette:e}=this.model.color_mapper;return\"vertical\"==t?k.reversed(e):e})(),[i,a]=\"vertical\"==t?[1,e.length]:[e.length,1],n=this._image=document.createElement(\"canvas\");n.width=i,n.height=a;const o=n.getContext(\"2d\"),r=o.getImageData(0,0,i,a),s=new f.LinearColorMapper({palette:e}).rgba_mapper.v_compute(k.range(0,e.length));r.data.set(s),o.putImageData(r,0,0)}update_layout(){const{location:t,width:e,height:i,padding:a,margin:n}=this.model,[o,r]=(()=>{if(!M.isString(t))return[\"end\",\"start\"];switch(t){case\"top_left\":return[\"start\",\"start\"];case\"top\":case\"top_center\":return[\"start\",\"center\"];case\"top_right\":return[\"start\",\"end\"];case\"bottom_left\":return[\"end\",\"start\"];case\"bottom\":case\"bottom_center\":return[\"end\",\"center\"];case\"bottom_right\":return[\"end\",\"end\"];case\"left\":case\"center_left\":return[\"center\",\"start\"];case\"center\":case\"center_center\":return[\"center\",\"center\"];case\"right\":case\"center_right\":return[\"center\",\"end\"]}})(),s=this._orientation=(()=>{const{orientation:t}=this.model;return\"auto\"==t?null!=this.panel?this.panel.is_horizontal?\"horizontal\":\"vertical\":\"start\"==r||\"end\"==r||\"center\"==r&&\"center\"==o?\"vertical\":\"horizontal\":t})(),_=new C.NodeLayout,c=new C.VStack,h=new C.VStack,u=new C.HStack,p=new C.HStack;_.absolute=!0,c.absolute=!0,h.absolute=!0,u.absolute=!0,p.absolute=!0;const[m,g,d,f]=(()=>\"horizontal\"==s?[this._major_scale,this._minor_scale,this._major_range,this._minor_range]:[this._minor_scale,this._major_scale,this._minor_range,this._major_range])();this._frame=new l.CartesianFrame(m,g,d,f),_.on_resize((t=>this._frame.set_geometry(t)));const w=new j.BorderLayout;this._inner_layout=w,w.absolute=!0,w.center_panel=_,w.top_panel=c,w.bottom_panel=h,w.left_panel=u,w.right_panel=p;const b={left:a,right:a,top:a,bottom:a},v=(()=>{if(null==this.panel){if(M.isString(t))return{left:n,right:n,top:n,bottom:n};{const[e,i]=t;return{left:e,right:n,top:n,bottom:i}}}if(!M.isString(t)){const[e,i]=t;return{left:e,right:0,top:0,bottom:i}}})();let y,k,L,S;if(w.padding=b,null!=this.panel?(y=\"max\",k=void 0,L=void 0,S=void 0):\"auto\"==(\"horizontal\"==s?e:i)?(y=\"fixed\",k=25*this.model.color_mapper.palette.length,L={percent:.3},S={percent:.8}):(y=\"fit\",k=void 0),\"horizontal\"==s){const t=\"auto\"==e?void 0:e,a=\"auto\"==i?25:i;w.set_sizing({width_policy:y,height_policy:\"min\",width:k,min_width:L,max_width:S,halign:r,valign:o,margin:v}),w.center_panel.set_sizing({width_policy:\"auto\"==e?\"fit\":\"fixed\",height_policy:\"fixed\",width:t,height:a})}else{const t=\"auto\"==e?25:e,a=\"auto\"==i?void 0:i;w.set_sizing({width_policy:\"min\",height_policy:y,height:k,min_height:L,max_height:S,halign:r,valign:o,margin:v}),w.center_panel.set_sizing({width_policy:\"fixed\",height_policy:\"auto\"==i?\"fit\":\"fixed\",width:t,height:a})}c.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),h.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),u.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),p.set_sizing({width_policy:\"min\",height_policy:\"fit\"});const{_title_view:T}=this;null!=T&&(\"horizontal\"==s?(T.panel=new z.Panel(\"above\"),T.update_layout(),c.children.push(T.layout)):(T.panel=new z.Panel(\"left\"),T.update_layout(),u.children.push(T.layout)));const{panel:B}=this,A=null!=B&&s==B.orientation?B.side:\"horizontal\"==s?\"below\":\"right\",O=(()=>{switch(A){case\"above\":return c;case\"below\":return h;case\"left\":return u;case\"right\":return p}})(),{_axis_view:R}=this;if(R.panel=new z.Panel(A),R.update_layout(),O.children.push(R.layout),null!=this.panel){const t=new x.Grid([{layout:w,row:0,col:0}]);t.absolute=!0,\"horizontal\"==s?t.set_sizing({width_policy:\"max\",height_policy:\"min\"}):t.set_sizing({width_policy:\"min\",height_policy:\"max\"}),this.layout=t}else this.layout=this._inner_layout;const{visible:F}=this.model;this.layout.sizing.visible=F,this._set_canvas_image()}_render(){var t;const{ctx:e}=this.layer;e.save(),this._paint_bbox(e,this._inner_layout.bbox),this._paint_image(e,this._inner_layout.center_panel.bbox),null===(t=this._title_view)||void 0===t||t.render(),this._axis_view.render(),e.restore()}_paint_bbox(t,e){const{x:i,y:a}=e;let{width:n,height:o}=e;i+n>=this.parent.canvas_view.bbox.width&&(n-=1),a+o>=this.parent.canvas_view.bbox.height&&(o-=1),t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(i,a,n,o)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(i,a,n,o)),t.restore()}_paint_image(t,e){const{x:i,y:a,width:n,height:o}=e;t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this._image,i,a,n,o),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(i,a,n,o)),t.restore()}serializable_state(){const t=super.serializable_state(),{children:e=[]}=t,i=o.__rest(t,[\"children\"]);return null!=this._title_view&&e.push(this._title_view.serializable_state()),e.push(this._axis_view.serializable_state()),Object.assign(Object.assign({},i),{children:e})}}i.ColorBarView=T,T.__name__=\"ColorBarView\";class B extends r.Annotation{constructor(t){super(t)}static init_ColorBar(){this.prototype.default_view=T,this.mixins([[\"major_label_\",y.Text],[\"title_\",y.Text],[\"major_tick_\",y.Line],[\"minor_tick_\",y.Line],[\"border_\",y.Line],[\"bar_\",y.Line],[\"background_\",y.Fill]]),this.define((({Alpha:t,Number:e,String:i,Tuple:a,Dict:n,Or:o,Ref:r,Auto:s,Nullable:l})=>({location:[o(v.Anchor,a(e,e)),\"top_right\"],orientation:[o(v.Orientation,s),\"auto\"],title:[l(i),null],title_standoff:[e,2],width:[o(e,s),\"auto\"],height:[o(e,s),\"auto\"],scale_alpha:[t,1],ticker:[o(r(c.Ticker),s),\"auto\"],formatter:[o(r(u.TickFormatter),s),\"auto\"],major_label_overrides:[n(i),{}],major_label_policy:[r(m.LabelingPolicy),()=>new m.NoOverlap],color_mapper:[r(g.ColorMapper)],label_standoff:[e,5],margin:[e,30],padding:[e,10],major_tick_in:[e,5],major_tick_out:[e,0],minor_tick_in:[e,0],minor_tick_out:[e,0]}))),this.override({background_fill_color:\"#ffffff\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_font_size:\"11px\",major_tick_line_color:\"#ffffff\",minor_tick_line_color:null,title_text_font_size:\"13px\",title_text_font_style:\"italic\"})}}i.ColorBar=B,B.__name__=\"ColorBar\",B.init_ColorBar()},\n function _(t,e,i,s,l){s();const o=t(1),a=t(139),n=t(20),r=t(143),c=o.__importStar(t(48));class h extends a.TextAnnotationView{_get_location(){const t=this.model.offset,e=this.model.standoff/2;let i,s;const{bbox:l}=this.layout;switch(this.panel.side){case\"above\":case\"below\":switch(this.model.vertical_align){case\"top\":s=l.top+e;break;case\"middle\":s=l.vcenter;break;case\"bottom\":s=l.bottom-e}switch(this.model.align){case\"left\":i=l.left+t;break;case\"center\":i=l.hcenter;break;case\"right\":i=l.right-t}break;case\"left\":switch(this.model.vertical_align){case\"top\":i=l.left+e;break;case\"middle\":i=l.hcenter;break;case\"bottom\":i=l.right-e}switch(this.model.align){case\"left\":s=l.bottom-t;break;case\"center\":s=l.vcenter;break;case\"right\":s=l.top+t}break;case\"right\":switch(this.model.vertical_align){case\"top\":i=l.right-e;break;case\"middle\":i=l.hcenter;break;case\"bottom\":i=l.left+e}switch(this.model.align){case\"left\":s=l.top+t;break;case\"center\":s=l.vcenter;break;case\"right\":s=l.bottom-t}}return[i,s]}_render(){const{text:t}=this.model;if(null==t||0==t.length)return;this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;const[e,i]=this._get_location(),s=this.panel.get_label_angle_heuristic(\"parallel\");(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,t,e,i,s)}_get_size(){const{text:t}=this.model;if(null==t||0==t.length)return{width:0,height:0};{const{ctx:e}=this.layer;this.visuals.text.set_value(e);const{width:i}=this.layer.ctx.measureText(t),{height:s}=r.font_metrics(e.font);return{width:i,height:2+s*this.model.text_line_height+this.model.standoff}}}}i.TitleView=h,h.__name__=\"TitleView\";class _ extends a.TextAnnotation{constructor(t){super(t)}static init_Title(){this.prototype.default_view=h,this.mixins([c.Text,[\"border_\",c.Line],[\"background_\",c.Fill]]),this.define((({Number:t,String:e})=>({text:[e,\"\"],vertical_align:[n.VerticalAlign,\"bottom\"],align:[n.TextAlign,\"left\"],offset:[t,0],standoff:[t,10]}))),this.prototype._props.text_align.options.internal=!0,this.prototype._props.text_baseline.options.internal=!0,this.override({text_font_size:\"13px\",text_font_style:\"bold\",text_line_height:1,background_fill_color:null,border_line_color:null})}}i.Title=_,_.__name__=\"Title\",_.init_Title()},\n function _(e,t,s,i,n){i();const l=e(40),a=e(43),o=e(20),r=e(140),d=e(143),c=e(11);class _ extends l.AnnotationView{update_layout(){const{panel:e}=this;this.layout=null!=e?new r.SideLayout(e,(()=>this.get_size()),!0):void 0}initialize(){super.initialize(),\"css\"==this.model.render_mode&&(this.el=a.div(),this.plot_view.canvas_view.add_overlay(this.el))}remove(){null!=this.el&&a.remove(this.el),super.remove()}connect_signals(){super.connect_signals(),\"css\"==this.model.render_mode?this.connect(this.model.change,(()=>this.render())):this.connect(this.model.change,(()=>this.request_render()))}render(){this.model.visible||\"css\"!=this.model.render_mode||a.undisplay(this.el),super.render()}_calculate_text_dimensions(e,t){const{width:s}=e.measureText(t),{height:i}=d.font_metrics(this.visuals.text.font_value());return[s,i]}_calculate_bounding_box_dimensions(e,t){const[s,i]=this._calculate_text_dimensions(e,t);let n,l;switch(e.textAlign){case\"left\":n=0;break;case\"center\":n=-s/2;break;case\"right\":n=-s;break;default:c.unreachable()}switch(e.textBaseline){case\"top\":l=0;break;case\"middle\":l=-.5*i;break;case\"bottom\":l=-1*i;break;case\"alphabetic\":l=-.8*i;break;case\"hanging\":l=-.17*i;break;case\"ideographic\":l=-.83*i;break;default:c.unreachable()}return[n,l,s,i]}_canvas_text(e,t,s,i,n){this.visuals.text.set_value(e);const l=this._calculate_bounding_box_dimensions(e,t);e.save(),e.beginPath(),e.translate(s,i),n&&e.rotate(n),e.rect(l[0],l[1],l[2],l[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),e.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(e),e.stroke()),this.visuals.text.doit&&(this.visuals.text.set_value(e),e.fillText(t,0,0)),e.restore()}_css_text(e,t,s,i,n){const{el:l}=this;c.assert(null!=l),a.undisplay(l),this.visuals.text.set_value(e);const[o,r]=this._calculate_bounding_box_dimensions(e,t);l.style.position=\"absolute\",l.style.left=`${s+o}px`,l.style.top=`${i+r}px`,l.style.color=e.fillStyle,l.style.font=e.font,l.style.lineHeight=\"normal\",n&&(l.style.transform=`rotate(${n}rad)`),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),l.style.backgroundColor=e.fillStyle),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(e),l.style.borderStyle=e.lineDash.length<2?\"solid\":\"dashed\",l.style.borderWidth=`${e.lineWidth}px`,l.style.borderColor=e.strokeStyle),l.textContent=t,a.display(l)}}s.TextAnnotationView=_,_.__name__=\"TextAnnotationView\";class u extends l.Annotation{constructor(e){super(e)}static init_TextAnnotation(){this.define((()=>({render_mode:[o.RenderMode,\"canvas\"]})))}}s.TextAnnotation=u,u.__name__=\"TextAnnotation\",u.init_TextAnnotation()},\n function _(t,e,i,l,r){l();const a=t(141),o=t(142),n=t(8),h=Math.PI/2,s={above:{parallel:0,normal:-h,horizontal:0,vertical:-h},below:{parallel:0,normal:h,horizontal:0,vertical:h},left:{parallel:-h,normal:0,horizontal:0,vertical:-h},right:{parallel:h,normal:0,horizontal:0,vertical:h}},c={above:{parallel:\"bottom\",normal:\"center\",horizontal:\"bottom\",vertical:\"center\"},below:{parallel:\"top\",normal:\"center\",horizontal:\"top\",vertical:\"center\"},left:{parallel:\"bottom\",normal:\"center\",horizontal:\"center\",vertical:\"bottom\"},right:{parallel:\"bottom\",normal:\"center\",horizontal:\"center\",vertical:\"bottom\"}},g={above:{parallel:\"center\",normal:\"left\",horizontal:\"center\",vertical:\"left\"},below:{parallel:\"center\",normal:\"left\",horizontal:\"center\",vertical:\"left\"},left:{parallel:\"center\",normal:\"right\",horizontal:\"right\",vertical:\"center\"},right:{parallel:\"center\",normal:\"left\",horizontal:\"left\",vertical:\"center\"}},_={above:\"right\",below:\"left\",left:\"right\",right:\"left\"},b={above:\"left\",below:\"right\",left:\"right\",right:\"left\"};class z{constructor(t){this.side=t}get dimension(){return\"above\"==this.side||\"below\"==this.side?0:1}get normals(){switch(this.side){case\"above\":return[0,-1];case\"below\":return[0,1];case\"left\":return[-1,0];case\"right\":return[1,0]}}get orientation(){return this.is_horizontal?\"horizontal\":\"vertical\"}get is_horizontal(){return 0==this.dimension}get is_vertical(){return 1==this.dimension}get_label_text_heuristics(t){const{side:e}=this;return n.isString(t)?{vertical_align:c[e][t],align:g[e][t]}:{vertical_align:\"center\",align:(t<0?_:b)[e]}}get_label_angle_heuristic(t){return n.isString(t)?s[this.side][t]:-t}}i.Panel=z,z.__name__=\"Panel\";class m extends o.ContentLayoutable{constructor(t,e,i=!1){super(),this.panel=t,this.get_size=e,this.rotate=i,this.panel.is_horizontal?this.set_sizing({width_policy:\"max\",height_policy:\"fixed\"}):this.set_sizing({width_policy:\"fixed\",height_policy:\"max\"})}_content_size(){const{width:t,height:e}=this.get_size();return!this.rotate||this.panel.is_horizontal?new a.Sizeable({width:t,height:e}):new a.Sizeable({width:e,height:t})}has_size_changed(){const{width:t,height:e}=this._content_size();return this.panel.is_horizontal?this.bbox.height!=e:this.bbox.width!=t}}i.SideLayout=m,m.__name__=\"SideLayout\"},\n function _(h,t,i,e,w){e();const n=h(21),{min:d,max:s}=Math;class g{constructor(h={}){this.width=null!=h.width?h.width:0,this.height=null!=h.height?h.height:0}bounded_to({width:h,height:t}){return new g({width:this.width==1/0&&null!=h?h:this.width,height:this.height==1/0&&null!=t?t:this.height})}expanded_to({width:h,height:t}){return new g({width:h!=1/0?s(this.width,h):this.width,height:t!=1/0?s(this.height,t):this.height})}expand_to({width:h,height:t}){this.width=s(this.width,h),this.height=s(this.height,t)}narrowed_to({width:h,height:t}){return new g({width:d(this.width,h),height:d(this.height,t)})}narrow_to({width:h,height:t}){this.width=d(this.width,h),this.height=d(this.height,t)}grow_by({left:h,right:t,top:i,bottom:e}){const w=this.width+h+t,n=this.height+i+e;return new g({width:w,height:n})}shrink_by({left:h,right:t,top:i,bottom:e}){const w=s(this.width-h-t,0),n=s(this.height-i-e,0);return new g({width:w,height:n})}map(h,t){return new g({width:h(this.width),height:(null!=t?t:h)(this.height)})}}i.Sizeable=g,g.__name__=\"Sizeable\",i.SizingPolicy=n.Enum(\"fixed\",\"fit\",\"min\",\"max\")},\n function _(i,t,h,e,n){e();const s=i(141),r=i(99),g=i(8),{min:l,max:a,round:_}=Math;class o{constructor(){this.absolute=!1,this._bbox=new r.BBox,this._inner_bbox=new r.BBox,this._dirty=!1,this._handlers=[]}*[Symbol.iterator](){}get bbox(){return this._bbox}get inner_bbox(){return this._inner_bbox}get sizing(){return this._sizing}set visible(i){this._sizing.visible=i,this._dirty=!0}set_sizing(i){var t,h,e,n,s;const r=null!==(t=i.width_policy)&&void 0!==t?t:\"fit\",g=i.width,l=i.min_width,a=i.max_width,_=null!==(h=i.height_policy)&&void 0!==h?h:\"fit\",o=i.height,d=i.min_height,u=i.max_height,c=i.aspect,w=null!==(e=i.margin)&&void 0!==e?e:{top:0,right:0,bottom:0,left:0},m=!1!==i.visible,x=null!==(n=i.halign)&&void 0!==n?n:\"start\",b=null!==(s=i.valign)&&void 0!==s?s:\"start\";this._sizing={width_policy:r,min_width:l,width:g,max_width:a,height_policy:_,min_height:d,height:o,max_height:u,aspect:c,margin:w,visible:m,halign:x,valign:b,size:{width:g,height:o}},this._init()}_init(){}_set_geometry(i,t){this._bbox=i,this._inner_bbox=t}set_geometry(i,t){this._set_geometry(i,null!=t?t:i);for(const i of this._handlers)i(this._bbox,this._inner_bbox)}on_resize(i){this._handlers.push(i)}is_width_expanding(){return\"max\"==this.sizing.width_policy}is_height_expanding(){return\"max\"==this.sizing.height_policy}apply_aspect(i,{width:t,height:h}){const{aspect:e}=this.sizing;if(null!=e){const{width_policy:n,height_policy:s}=this.sizing,r=(i,t)=>{const h={max:4,fit:3,min:2,fixed:1};return h[i]>h[t]};if(\"fixed\"!=n&&\"fixed\"!=s)if(n==s){const n=t,s=_(t/e),r=_(h*e),g=h;Math.abs(i.width-n)+Math.abs(i.height-s)<=Math.abs(i.width-r)+Math.abs(i.height-g)?(t=n,h=s):(t=r,h=g)}else r(n,s)?h=_(t/e):t=_(h*e);else\"fixed\"==n?h=_(t/e):\"fixed\"==s&&(t=_(h*e))}return{width:t,height:h}}measure(i){if(!this.sizing.visible)return{width:0,height:0};const t=new s.Sizeable(i).shrink_by(this.sizing.margin).map((i=>i==1/0&&\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:i),(i=>i==1/0&&\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:i)),h=this._measure(t),e=this.clip_size(h,t),n=this.apply_aspect(t,e);return Object.assign(Object.assign({},h),n)}compute(i={}){const t={width:null!=i.width&&this.is_width_expanding()?i.width:1/0,height:null!=i.height&&this.is_height_expanding()?i.height:1/0},h=this.measure(t),{width:e,height:n}=h,s=new r.BBox({left:0,top:0,width:e,height:n});let g;if(null!=h.inner){const{left:i,top:t,right:s,bottom:l}=h.inner;g=new r.BBox({left:i,top:t,right:e-s,bottom:n-l})}this.set_geometry(s,g)}get xview(){return this.bbox.xview}get yview(){return this.bbox.yview}clip_size(i,t){function h(i,t,h,e){return null==h?h=0:g.isNumber(h)||(h=Math.round(h.percent*t)),null==e?e=1/0:g.isNumber(e)||(e=Math.round(e.percent*t)),a(h,l(i,e))}return{width:h(i.width,t.width,this.sizing.min_width,this.sizing.max_width),height:h(i.height,t.height,this.sizing.min_height,this.sizing.max_height)}}has_size_changed(){const{_dirty:i}=this;return this._dirty=!1,i}}h.Layoutable=o,o.__name__=\"Layoutable\";class d extends o{_measure(i){const{width_policy:t,height_policy:h}=this.sizing;return{width:(()=>{const{width:h}=this.sizing;if(i.width==1/0)return null!=h?h:0;switch(t){case\"fixed\":return null!=h?h:0;case\"min\":return null!=h?l(i.width,h):0;case\"fit\":return null!=h?l(i.width,h):i.width;case\"max\":return null!=h?a(i.width,h):i.width}})(),height:(()=>{const{height:t}=this.sizing;if(i.height==1/0)return null!=t?t:0;switch(h){case\"fixed\":return null!=t?t:0;case\"min\":return null!=t?l(i.height,t):0;case\"fit\":return null!=t?l(i.height,t):i.height;case\"max\":return null!=t?a(i.height,t):i.height}})()}}}h.LayoutItem=d,d.__name__=\"LayoutItem\";class u extends o{_measure(i){const t=this._content_size(),h=i.bounded_to(this.sizing.size).bounded_to(t);return{width:(()=>{switch(this.sizing.width_policy){case\"fixed\":return null!=this.sizing.width?this.sizing.width:t.width;case\"min\":return t.width;case\"fit\":return h.width;case\"max\":return Math.max(t.width,h.width)}})(),height:(()=>{switch(this.sizing.height_policy){case\"fixed\":return null!=this.sizing.height?this.sizing.height:t.height;case\"min\":return t.height;case\"fit\":return h.height;case\"max\":return Math.max(t.height,h.height)}})()}}}h.ContentLayoutable=u,u.__name__=\"ContentLayoutable\"},\n function _(t,e,n,r,a){r();const l=t(11),c=(()=>{try{return\"undefined\"!=typeof OffscreenCanvas&&null!=new OffscreenCanvas(0,0).getContext(\"2d\")}catch(t){return!1}})()?(t,e)=>new OffscreenCanvas(t,e):(t,e)=>{const n=document.createElement(\"canvas\");return n.width=t,n.height=e,n},o=(()=>{const t=c(0,0).getContext(\"2d\");return e=>{t.font=e;const n=t.measureText(\"M\"),r=t.measureText(\"x\"),a=t.measureText(\"ÅŚg|\"),c=a.fontBoundingBoxAscent,o=a.fontBoundingBoxDescent;if(null!=c&&null!=o)return{height:c+o,ascent:c,descent:o,cap_height:n.actualBoundingBoxAscent,x_height:r.actualBoundingBoxAscent};const s=a.actualBoundingBoxAscent,u=a.actualBoundingBoxDescent;if(null!=s&&null!=u)return{height:s+u,ascent:s,descent:u,cap_height:n.actualBoundingBoxAscent,x_height:r.actualBoundingBoxAscent};l.unreachable()}})(),s=(()=>{const t=c(0,0).getContext(\"2d\");return(e,n)=>{t.font=n;const r=t.measureText(e),a=r.actualBoundingBoxAscent,c=r.actualBoundingBoxDescent;if(null!=a&&null!=c)return{width:r.width,height:a+c,ascent:a,descent:c};l.unreachable()}})(),u=(()=>{const t=document.createElement(\"canvas\"),e=t.getContext(\"2d\");let n=-1,r=-1;return(a,l=1)=>{e.font=a;const{width:c}=e.measureText(\"M\"),o=c*l,s=Math.ceil(o),u=Math.ceil(2*o),i=Math.ceil(1.5*o);n{let e=0;for(let n=0;n<=i;n++)for(let r=0;r{let e=t.length-4;for(let n=u;n>=i;n--)for(let r=0;r{const t=document.createElement(\"canvas\"),e=t.getContext(\"2d\");let n=-1,r=-1;return(a,l,c=1)=>{e.font=l;const{width:o}=e.measureText(\"M\"),s=o*c,u=Math.ceil(s),i=Math.ceil(2*s),f=Math.ceil(1.5*s);(n{let e=0;for(let n=0;n<=f;n++)for(let r=0;r{let e=t.length-4;for(let n=i;n>=f;n--)for(let r=0;r{try{return o(\"normal 10px sans-serif\"),o}catch(t){return u}})(),h=(()=>{try{return s(\"A\",\"normal 10px sans-serif\"),s}catch(t){return i}})(),g=new Map;function d(t){let e=g.get(t);return null==e&&(e={font:f(t),glyphs:new Map},g.set(t,e)),e.font}n.font_metrics=d,n.glyph_metrics=function(t,e){let n=g.get(e);null==n&&(d(e),n=g.get(e));let r=n.glyphs.get(t);return null==r&&(r=h(t,e),n.glyphs.set(t,r)),r}},\n function _(e,t,s,_,a){_();const r=e(145),n=e(157),g=e(156),i=e(159),c=e(104),h=e(99),o=e(13),l=e(11);class x{constructor(e,t,s,_,a={},r={}){this.in_x_scale=e,this.in_y_scale=t,this.x_range=s,this.y_range=_,this.extra_x_ranges=a,this.extra_y_ranges=r,this._bbox=new h.BBox,l.assert(null==e.source_range&&null==e.target_range),l.assert(null==t.source_range&&null==t.target_range),this._configure_scales()}get bbox(){return this._bbox}_get_ranges(e,t){return new Map(o.entries(Object.assign(Object.assign({},t),{default:e})))}_get_scales(e,t,s){const _=new Map;for(const[a,g]of t){if(g instanceof c.FactorRange!=e instanceof r.CategoricalScale)throw new Error(`Range ${g.type} is incompatible is Scale ${e.type}`);e instanceof n.LogScale&&g instanceof i.DataRange1d&&(g.scale_hint=\"log\");const t=e.clone();t.setv({source_range:g,target_range:s}),_.set(a,t)}return _}_configure_frame_ranges(){const{bbox:e}=this;this._x_target=new g.Range1d({start:e.left,end:e.right}),this._y_target=new g.Range1d({start:e.bottom,end:e.top})}_configure_scales(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._x_scales=this._get_scales(this.in_x_scale,this._x_ranges,this._x_target),this._y_scales=this._get_scales(this.in_y_scale,this._y_ranges,this._y_target)}_update_scales(){this._configure_frame_ranges();for(const[,e]of this._x_scales)e.target_range=this._x_target;for(const[,e]of this._y_scales)e.target_range=this._y_target}set_geometry(e){this._bbox=e,this._update_scales()}get x_target(){return this._x_target}get y_target(){return this._y_target}get x_ranges(){return this._x_ranges}get y_ranges(){return this._y_ranges}get x_scales(){return this._x_scales}get y_scales(){return this._y_scales}get x_scale(){return this._x_scales.get(\"default\")}get y_scale(){return this._y_scales.get(\"default\")}get xscales(){return o.to_object(this.x_scales)}get yscales(){return o.to_object(this.y_scales)}}s.CartesianFrame=x,x.__name__=\"CartesianFrame\"},\n function _(e,t,r,n,_){n();const c=e(146);class s extends c.Scale{constructor(e){super(e)}get s_compute(){const[e,t]=this._linear_compute_state(),r=this.source_range;return n=>e*r.synthetic(n)+t}compute(e){return super._linear_compute(this.source_range.synthetic(e))}v_compute(e){return super._linear_v_compute(this.source_range.v_synthetic(e))}invert(e){return this._linear_invert(e)}v_invert(e){return this._linear_v_invert(e)}}r.CategoricalScale=s,s.__name__=\"CategoricalScale\"},\n function _(t,e,r,n,s){n();const i=t(147),_=t(105),a=t(156),c=t(24);class o extends i.Transform{constructor(t){super(t)}static init_Scale(){this.internal((({Ref:t})=>({source_range:[t(_.Range)],target_range:[t(a.Range1d)]})))}r_compute(t,e){return this.target_range.is_reversed?[this.compute(e),this.compute(t)]:[this.compute(t),this.compute(e)]}r_invert(t,e){return this.target_range.is_reversed?[this.invert(e),this.invert(t)]:[this.invert(t),this.invert(e)]}_linear_compute(t){const[e,r]=this._linear_compute_state();return e*t+r}_linear_v_compute(t){const[e,r]=this._linear_compute_state(),n=new c.ScreenArray(t.length);for(let s=0;s({args:[s(t),{}],func:[r,\"\"],v_func:[r,\"\"]})))}get names(){return o.keys(this.args)}get values(){return o.values(this.args)}_make_transform(t,r){return new Function(...this.names,t,u.use_strict(r))}get scalar_transform(){return this._make_transform(\"x\",this.func)}get vector_transform(){return this._make_transform(\"xs\",this.v_func)}compute(t){return this.scalar_transform(...this.values,t)}v_compute(t){return this.vector_transform(...this.values,t)}}s.CustomJSTransform=m,m.__name__=\"CustomJSTransform\",m.init_CustomJSTransform()},\n function _(n,s,o,r,c){r();const e=n(53);class t extends e.Model{constructor(n){super(n)}}o.Transform=t,t.__name__=\"Transform\"},\n function _(e,t,n,o,s){o();const i=e(151);class r extends i.RangeTransform{constructor(e){super(e)}static init_Dodge(){this.define((({Number:e})=>({value:[e,0]})))}_compute(e){return e+this.value}}n.Dodge=r,r.__name__=\"Dodge\",r.init_Dodge()},\n function _(e,n,t,r,s){r();const a=e(149),i=e(105),o=e(104),c=e(24),f=e(8);class u extends a.Transform{constructor(e){super(e)}static init_RangeTransform(){this.define((({Ref:e,Nullable:n})=>({range:[n(e(i.Range)),null]})))}v_compute(e){let n;if(this.range instanceof o.FactorRange)n=this.range.v_synthetic(e);else{if(!f.isArrayableOf(e,f.isNumber))throw new Error(\"unexpected\");n=e}const t=new(c.infer_type(n))(n.length);for(let e=0;e({x:[s(r,o(e))],y:[s(r,o(e))],data:[a(n(i.ColumnarDataSource)),null],clip:[t,!0]})))}connect_signals(){super.connect_signals(),this.connect(this.change,(()=>this._sorted_dirty=!0))}v_compute(t){const e=new(a.infer_type(t))(t.length);for(let r=0;rs*(e[t]-e[r]))),this._x_sorted=new(a.infer_type(e))(n),this._y_sorted=new(a.infer_type(r))(n);for(let t=0;t({mean:[t,0],width:[t,1],distribution:[o.Distribution,\"uniform\"]})))}v_compute(t){return null!=this.previous_values&&this.previous_values.length==t.length||(this.previous_values=super.v_compute(t)),this.previous_values}_compute(t){switch(this.distribution){case\"uniform\":return t+this.mean+(a.random()-.5)*this.width;case\"normal\":return t+a.rnorm(this.mean,this.width)}}}e.Jitter=h,h.__name__=\"Jitter\",h.init_Jitter()},\n function _(t,s,_,r,e){r();const i=t(9),o=t(152);class n extends o.Interpolator{constructor(t){super(t)}compute(t){if(this.sort(!1),this.clip){if(tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(t==this._x_sorted[0])return this._y_sorted[0];const s=i.find_last_index(this._x_sorted,(s=>s({mode:[_.StepMode,\"after\"]})))}compute(t){if(this.sort(!1),this.clip){if(tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let e;switch(this.mode){case\"after\":e=n.find_last_index(this._x_sorted,(e=>t>=e));break;case\"before\":e=n.find_index(this._x_sorted,(e=>t<=e));break;case\"center\":{const s=n.map(this._x_sorted,(e=>Math.abs(e-t))),r=n.min(s);e=n.find_index(s,(t=>r===t));break}default:throw new Error(`unknown mode: ${this.mode}`)}return-1!=e?this._y_sorted[e]:NaN}}s.StepInterpolator=d,d.__name__=\"StepInterpolator\",d.init_StepInterpolator()},\n function _(t,e,s,n,i){n();const a=t(105);class r extends a.Range{constructor(t){super(t)}static init_Range1d(){this.define((({Number:t,Nullable:e})=>({start:[t,0],end:[t,1],reset_start:[e(t),null,{on_update(t,e){e._reset_start=null!=t?t:e.start}}],reset_end:[e(t),null,{on_update(t,e){e._reset_end=null!=t?t:e.end}}]})))}_set_auto_bounds(){if(\"auto\"==this.bounds){const t=Math.min(this._reset_start,this._reset_end),e=Math.max(this._reset_start,this._reset_end);this.setv({bounds:[t,e]},{silent:!0})}}initialize(){super.initialize(),this._set_auto_bounds()}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}reset(){this._set_auto_bounds();const{_reset_start:t,_reset_end:e}=this;this.start!=t||this.end!=e?this.setv({start:t,end:e}):this.change.emit()}map(t){return new r({start:t(this.start),end:t(this.end)})}widen(t){let{start:e,end:s}=this;return this.is_reversed?(e+=t,s-=t):(e-=t,s+=t),new r({start:e,end:s})}}s.Range1d=r,r.__name__=\"Range1d\",r.init_Range1d()},\n function _(t,e,o,n,s){n();const a=t(158),r=t(24);class c extends a.ContinuousScale{constructor(t){super(t)}get s_compute(){const[t,e,o,n]=this._compute_state();return s=>{if(0==o)return 0;{const a=(Math.log(s)-n)/o;return isFinite(a)?a*t+e:NaN}}}compute(t){const[e,o,n,s]=this._compute_state();let a;if(0==n)a=0;else{const r=(Math.log(t)-s)/n;a=isFinite(r)?r*e+o:NaN}return a}v_compute(t){const[e,o,n,s]=this._compute_state(),a=new r.ScreenArray(t.length);if(0==n)for(let e=0;e({start:[i],end:[i],range_padding:[i,.1],range_padding_units:[_.PaddingUnits,\"percent\"],flipped:[t,!1],follow:[n(_.StartEnd),null],follow_interval:[n(i),null],default_span:[i,2],only_visible:[t,!1]}))),this.internal((({Enum:t})=>({scale_hint:[t(\"log\",\"auto\"),\"auto\"]})))}initialize(){super.initialize(),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span,this._plot_bounds=new Map}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}computed_renderers(){const{renderers:t,names:i}=this,n=o.concat(this.plots.map((t=>t.data_renderers)));return d.compute_renderers(0==t.length?\"auto\":t,n,i)}_compute_plot_bounds(t,i){let n=r.empty();for(const a of t){const t=i.get(a);null==t||!a.visible&&this.only_visible||(n=r.union(n,t))}return n}adjust_bounds_for_aspect(t,i){const n=r.empty();let a=t.x1-t.x0;a<=0&&(a=1);let e=t.y1-t.y0;e<=0&&(e=1);const s=.5*(t.x1+t.x0),l=.5*(t.y1+t.y0);return al&&(\"start\"==this.follow?e=a+s*l:\"end\"==this.follow&&(a=e-s*l)),[a,e]}update(t,i,n,a){if(this.have_updated_interactively)return;const e=this.computed_renderers();let s=this._compute_plot_bounds(e,t);null!=a&&(s=this.adjust_bounds_for_aspect(s,a)),this._plot_bounds.set(n,s);const[l,_]=this._compute_min_max(this._plot_bounds.values(),i);let[o,h]=this._compute_range(l,_);null!=this._initial_start&&(\"log\"==this.scale_hint?this._initial_start>0&&(o=this._initial_start):o=this._initial_start),null!=this._initial_end&&(\"log\"==this.scale_hint?this._initial_end>0&&(h=this._initial_end):h=this._initial_end);let r=!1;\"auto\"==this.bounds&&(this.setv({bounds:[o,h]},{silent:!0}),r=!0);const[d,u]=[this.start,this.end];if(o!=d||h!=u){const t={};o!=d&&(t.start=o),h!=u&&(t.end=h),this.setv(t),r=!1}r&&this.change.emit()}reset(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()}}n.DataRange1d=u,u.__name__=\"DataRange1d\",u.init_DataRange1d()},\n function _(a,e,n,t,r){t();const s=a(105),i=a(62);class R extends s.Range{constructor(a){super(a)}static init_DataRange(){this.define((({String:a,Array:e,Ref:n})=>({names:[e(a),[]],renderers:[e(n(i.DataRenderer)),[]]})))}}n.DataRange=R,R.__name__=\"DataRange\",R.init_DataRange()},\n function _(n,e,t,r,u){r();const l=n(9);t.compute_renderers=function(n,e,t){if(null==n)return[];let r=\"auto\"==n?e:n;return t.length>0&&(r=r.filter((n=>l.includes(t,n.name)))),r}},\n function _(i,s,x,A,o){A(),o(\"Axis\",i(163).Axis),o(\"CategoricalAxis\",i(170).CategoricalAxis),o(\"ContinuousAxis\",i(173).ContinuousAxis),o(\"DatetimeAxis\",i(174).DatetimeAxis),o(\"LinearAxis\",i(175).LinearAxis),o(\"LogAxis\",i(192).LogAxis),o(\"MercatorAxis\",i(195).MercatorAxis)},\n function _(t,e,i,s,o){s();const n=t(1),a=t(164),l=t(165),r=t(166),_=t(169),h=n.__importStar(t(48)),c=t(20),b=t(24),m=t(140),d=t(9),u=t(8),x=t(167),g=t(104),{abs:f}=Math;class p extends a.GuideRendererView{update_layout(){this.layout=new m.SideLayout(this.panel,(()=>this.get_size()),!0),this.layout.on_resize((()=>this._coordinates=void 0))}get_size(){const{visible:t,fixed_location:e}=this.model;if(t&&null==e&&this.is_renderable){const{extents:t}=this;return{width:0,height:Math.round(t.tick+t.tick_label+t.axis_label)}}return{width:0,height:0}}get is_renderable(){const[t,e]=this.ranges;return t.is_valid&&e.is_valid}_render(){var t;if(!this.is_renderable)return;const{tick_coords:e,extents:i}=this,s=this.layer.ctx;s.save(),this._draw_rule(s,i),this._draw_major_ticks(s,i,e),this._draw_minor_ticks(s,i,e),this._draw_major_labels(s,i,e),this._draw_axis_label(s,i,e),null===(t=this._paint)||void 0===t||t.call(this,s,i,e),s.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.plot_view.request_layout()))}get needs_clip(){return null!=this.model.fixed_location}_draw_rule(t,e){if(!this.visuals.axis_line.doit)return;const[i,s]=this.rule_coords,[o,n]=this.coordinates.map_to_screen(i,s),[a,l]=this.normals,[r,_]=this.offsets;this.visuals.axis_line.set_value(t),t.beginPath();for(let e=0;e0?o+s+3:0}_draw_axis_label(t,e,i){const s=this.model.axis_label;if(!s||null!=this.model.fixed_location)return;const o=new x.TextBox({text:s});o.angle=this.panel.get_label_angle_heuristic(\"parallel\"),o.visuals=this.visuals.axis_label_text;const[n,a]=(()=>{const{bbox:t}=this.layout;switch(this.panel.side){case\"above\":return[t.hcenter,t.bottom];case\"below\":return[t.hcenter,t.top];case\"left\":return[t.right,t.vcenter];case\"right\":return[t.left,t.vcenter]}})(),[l,r]=this.normals,_=e.tick+e.tick_label+this.model.axis_label_standoff,{vertical_align:h,align:c}=this.panel.get_label_text_heuristics(\"parallel\");o.position={sx:n+l*_,sy:a+r*_,x_anchor:c,y_anchor:h},o.align=c,o.paint(t)}_draw_ticks(t,e,i,s,o){if(!o.doit)return;const[n,a]=e,[l,r]=this.coordinates.map_to_screen(n,a),[_,h]=this.normals,[c,b]=this.offsets,[m,d]=[_*(c-i),h*(b-i)],[u,x]=[_*(c+s),h*(b+s)];o.set_value(t),t.beginPath();for(let e=0;et.bbox())),O=(()=>{const[t]=this.ranges;return t.is_reversed?0==this.dimension?(t,e)=>T[t].left-T[e].right:(t,e)=>T[e].top-T[t].bottom:0==this.dimension?(t,e)=>T[e].left-T[t].right:(t,e)=>T[t].top-T[e].bottom})(),{major_label_policy:A}=this.model,M=A.filter(v,T,O),z=[...M.ones()];if(0!=z.length){const t=this.parent.canvas_view.bbox,e=e=>{const i=T[e];if(i.left<0){const t=-i.left,{position:s}=y[e];y[e].position=Object.assign(Object.assign({},s),{sx:s.sx+t})}else if(i.right>t.width){const s=i.right-t.width,{position:o}=y[e];y[e].position=Object.assign(Object.assign({},o),{sx:o.sx-s})}},i=e=>{const i=T[e];if(i.top<0){const t=-i.top,{position:s}=y[e];y[e].position=Object.assign(Object.assign({},s),{sy:s.sy+t})}else if(i.bottom>t.height){const s=i.bottom-t.height,{position:o}=y[e];y[e].position=Object.assign(Object.assign({},o),{sy:o.sy-s})}},s=z[0],o=z[z.length-1];0==this.dimension?(e(s),e(o)):(i(s),i(o))}for(const e of M){y[e].paint(t)}}_tick_extent(){return this.model.major_tick_out}_tick_label_extents(){const t=this.tick_coords.major,e=this.compute_labels(t[this.dimension]),i=this.model.major_label_orientation,s=this.model.major_label_standoff,o=this.visuals.major_label_text;return[this._oriented_labels_extent(e,i,s,o)]}get extents(){const t=this._tick_label_extents();return{tick:this._tick_extent(),tick_labels:t,tick_label:d.sum(t),axis_label:this._axis_label_extent()}}_oriented_labels_extent(t,e,i,s){if(0==t.length)return 0;const o=this.panel.get_label_angle_heuristic(e);t.visuals=s,t.angle=o;const n=t.max_size(),a=0==this.dimension?n.height:n.width;return a>0?i+a+3:0}get normals(){return this.panel.normals}get dimension(){return this.panel.dimension}compute_labels(t){const e=this.model.formatter.format_graphics(t,this),{major_label_overrides:i}=this.model;for(let s=0;sf(a-l)?(t=_(r(o,n),a),s=r(_(o,n),l)):(t=r(o,n),s=_(o,n)),[t,s]}}get rule_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,o]=this.computed_bounds,n=[new Array(2),new Array(2)];return n[t][0]=Math.max(s,i.min),n[t][1]=Math.min(o,i.max),n[t][0]>n[t][1]&&(n[t][0]=n[t][1]=NaN),n[e][0]=this.loc,n[e][1]=this.loc,n}get tick_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,o]=this.computed_bounds,n=this.model.ticker.get_ticks(s,o,i,this.loc),a=n.major,l=n.minor,r=[[],[]],_=[[],[]],[h,c]=[i.min,i.max];for(let i=0;ic||(r[t].push(a[i]),r[e].push(this.loc));for(let i=0;ic||(_[t].push(l[i]),_[e].push(this.loc));return{major:r,minor:_}}get loc(){const{fixed_location:t}=this.model;if(null!=t){if(u.isNumber(t))return t;const[,e]=this.ranges;if(e instanceof g.FactorRange)return e.synthetic(t);throw new Error(\"unexpected\")}const[,e]=this.ranges;switch(this.panel.side){case\"left\":case\"below\":return e.start;case\"right\":case\"above\":return e.end}}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box})}}i.AxisView=p,p.__name__=\"AxisView\";class k extends a.GuideRenderer{constructor(t){super(t)}static init_Axis(){this.prototype.default_view=p,this.mixins([[\"axis_\",h.Line],[\"major_tick_\",h.Line],[\"minor_tick_\",h.Line],[\"major_label_\",h.Text],[\"axis_label_\",h.Text]]),this.define((({Any:t,Int:e,Number:i,String:s,Ref:o,Dict:n,Tuple:a,Or:h,Nullable:b,Auto:m})=>({bounds:[h(a(i,i),m),\"auto\"],ticker:[o(l.Ticker)],formatter:[o(r.TickFormatter)],axis_label:[b(s),\"\"],axis_label_standoff:[e,5],major_label_standoff:[e,5],major_label_orientation:[h(c.TickLabelOrientation,i),\"horizontal\"],major_label_overrides:[n(s),{}],major_label_policy:[o(_.LabelingPolicy),()=>new _.AllLabels],major_tick_in:[i,2],major_tick_out:[i,6],minor_tick_in:[i,0],minor_tick_out:[i,4],fixed_location:[b(h(i,t)),null]}))),this.override({axis_line_color:\"black\",major_tick_line_color:\"black\",minor_tick_line_color:\"black\",major_label_text_font_size:\"11px\",major_label_text_align:\"center\",major_label_text_baseline:\"alphabetic\",axis_label_text_font_size:\"13px\",axis_label_text_font_style:\"italic\"})}}i.Axis=k,k.__name__=\"Axis\",k.init_Axis()},\n function _(e,r,d,i,n){i();const s=e(41);class t extends s.RendererView{}d.GuideRendererView=t,t.__name__=\"GuideRendererView\";class _ extends s.Renderer{constructor(e){super(e)}static init_GuideRenderer(){this.override({level:\"guide\"})}}d.GuideRenderer=_,_.__name__=\"GuideRenderer\",_.init_GuideRenderer()},\n function _(c,e,n,s,o){s();const r=c(53);class t extends r.Model{constructor(c){super(c)}}n.Ticker=t,t.__name__=\"Ticker\"},\n function _(t,o,r,e,c){e();const n=t(53),a=t(167);class m extends n.Model{constructor(t){super(t)}format_graphics(t,o){return this.doFormat(t,o).map((t=>new a.TextBox({text:t})))}compute(t,o){return this.doFormat([t],null!=o?o:{loc:0})[0]}v_compute(t,o){return this.doFormat(t,null!=o?o:{loc:0})}}r.TickFormatter=m,m.__name__=\"TickFormatter\"},\n function _(t,e,s,i,n){i();const h=t(99),o=t(143),r=t(9),a=t(8),c=t(168),_=t(22);s.text_width=(()=>{const t=document.createElement(\"canvas\").getContext(\"2d\");let e=\"\";return(s,i)=>(i!=e&&(e=i,t.font=i),t.measureText(s).width)})();class l{constructor(){this._position={sx:0,sy:0},this.font_size_scale=1}set position(t){this._position=t}get position(){return this._position}infer_text_height(){return\"ascent_descent\"}bbox(){const{p0:t,p1:e,p2:s,p3:i}=this.rect(),n=Math.min(t.x,e.x,s.x,i.x),o=Math.min(t.y,e.y,s.y,i.y),r=Math.max(t.x,e.x,s.x,i.x),a=Math.max(t.y,e.y,s.y,i.y);return new h.BBox({left:n,right:r,top:o,bottom:a})}size(){const{width:t,height:e}=this._size(),{angle:s}=this;if(s){const i=Math.cos(Math.abs(s)),n=Math.sin(Math.abs(s));return{width:Math.abs(t*i+e*n),height:Math.abs(t*n+e*i)}}return{width:t,height:e}}rect(){const t=this._rect(),{angle:e}=this;if(e){const{sx:s,sy:i}=this.position,n=new c.AffineTransform;return n.translate(s,i),n.rotate(e),n.translate(-s,-i),n.apply_rect(t)}return t}paint_rect(t){const{p0:e,p1:s,p2:i,p3:n}=this.rect();t.save(),t.strokeStyle=\"red\",t.lineWidth=1,t.beginPath();const{round:h}=Math;t.moveTo(h(e.x),h(e.y)),t.lineTo(h(s.x),h(s.y)),t.lineTo(h(i.x),h(i.y)),t.lineTo(h(n.x),h(n.y)),t.closePath(),t.stroke(),t.restore()}paint_bbox(t){const{x:e,y:s,width:i,height:n}=this.bbox();t.save(),t.strokeStyle=\"blue\",t.lineWidth=1,t.beginPath();const{round:h}=Math;t.moveTo(h(e),h(s)),t.lineTo(h(e),h(s+n)),t.lineTo(h(e+i),h(s+n)),t.lineTo(h(e+i),h(s)),t.closePath(),t.stroke(),t.restore()}}s.GraphicsBox=l,l.__name__=\"GraphicsBox\";class x extends l{constructor({text:t}){super(),this.align=\"left\",this.text=t}set visuals(t){const e=t.text_color.get_value(),s=t.text_alpha.get_value(),i=t.text_font_style.get_value();let n=t.text_font_size.get_value();const h=t.text_font.get_value(),{font_size_scale:o}=this;if(1!=o){const t=n.match(/^\\s*(\\d+(\\.\\d+)?)(\\w+)\\s*$/);if(null!=t){const[,e,,s]=t,i=Number(e);isNaN(i)||(n=`${i*o}${s}`)}}const r=`${i} ${n} ${h}`;this.font=r,this.color=_.color2css(e,s),this.line_height=t.text_line_height.get_value()}infer_text_height(){if(this.text.includes(\"\\n\"))return\"ascent_descent\";return function(t){for(const e of new Set(t))if(!(\"0\"<=e&&e<=\"9\"))switch(e){case\",\":case\".\":case\"+\":case\"-\":case\"−\":case\"e\":continue;default:return!1}return!0}(this.text)?\"cap\":\"ascent_descent\"}_text_line(t){var e;const s=null!==(e=this.text_height_metric)&&void 0!==e?e:this.infer_text_height(),i=(()=>{switch(s){case\"x\":case\"x_descent\":return t.x_height;case\"cap\":case\"cap_descent\":return t.cap_height;case\"ascent\":case\"ascent_descent\":return t.ascent}})(),n=(()=>{switch(s){case\"x\":case\"cap\":case\"ascent\":return 0;case\"x_descent\":case\"cap_descent\":case\"ascent_descent\":return t.descent}})();return{height:i+n,ascent:i,descent:n}}get nlines(){return this.text.split(\"\\n\").length}_size(){var t,e;const{font:i}=this,n=o.font_metrics(i),h=(this.line_height-1)*n.height,a=\"\"==this.text,c=this.text.split(\"\\n\"),_=c.length,l=c.map((t=>s.text_width(t,i))),x=this._text_line(n).height*_,u=\"%\"==(null===(t=this.width)||void 0===t?void 0:t.unit)?this.width.value:1,p=\"%\"==(null===(e=this.height)||void 0===e?void 0:e.unit)?this.height.value:1;return{width:r.max(l)*u,height:a?0:(x+h*(_-1))*p,metrics:n}}_computed_position(t,e,s){const{width:i,height:n}=t,{sx:h,sy:o,x_anchor:r=\"left\",y_anchor:c=\"center\"}=this.position;return{x:h-(()=>{if(a.isNumber(r))return r*i;switch(r){case\"left\":return 0;case\"center\":return.5*i;case\"right\":return i}})(),y:o-(()=>{var t;if(a.isNumber(c))return c*n;switch(c){case\"top\":return 0;case\"center\":return.5*n;case\"bottom\":return n;case\"baseline\":if(1!=s)return.5*n;switch(null!==(t=this.text_height_metric)&&void 0!==t?t:this.infer_text_height()){case\"x\":case\"x_descent\":return e.x_height;case\"cap\":case\"cap_descent\":return e.cap_height;case\"ascent\":case\"ascent_descent\":return e.ascent}}})()}}_rect(){const{width:t,height:e,metrics:s}=this._size(),i=this.text.split(\"\\n\").length,{x:n,y:o}=this._computed_position({width:t,height:e},s,i);return new h.BBox({x:n,y:o,width:t,height:e}).rect}paint(t){var e,i;const{font:n}=this,h=o.font_metrics(n),a=(this.line_height-1)*h.height,c=this.text.split(\"\\n\"),_=c.length,l=c.map((t=>s.text_width(t,n))),x=this._text_line(h),u=x.height*_,p=\"%\"==(null===(e=this.width)||void 0===e?void 0:e.unit)?this.width.value:1,g=\"%\"==(null===(i=this.height)||void 0===i?void 0:i.unit)?this.height.value:1,f=r.max(l)*p,d=(u+a*(_-1))*g;t.save(),t.fillStyle=this.color,t.font=this.font,t.textAlign=\"left\",t.textBaseline=\"alphabetic\";const{sx:m,sy:b}=this.position,{align:y}=this,{angle:w}=this;w&&(t.translate(m,b),t.rotate(w),t.translate(-m,-b));let{x:v,y:z}=this._computed_position({width:f,height:d},h,_);if(\"justify\"==y)for(let e=0;e<_;e++){let i=v;const h=c[e].split(\" \"),o=h.length,_=h.map((t=>s.text_width(t,n))),l=(f-r.sum(_))/(o-1);for(let e=0;e{switch(y){case\"left\":return 0;case\"center\":return.5*(f-l[e]);case\"right\":return f-l[e]}})();t.fillStyle=this.color,t.fillText(c[e],s,z+x.ascent),z+=x.height+a}t.restore()}}s.TextBox=x,x.__name__=\"TextBox\";class u extends l{constructor(t,e){super(),this.base=t,this.expo=e}get children(){return[this.base,this.expo]}set position(t){this._position=t;const e=this.base.size(),s=this.expo.size(),i=this._shift_scale()*e.height,n=Math.max(e.height,i+s.height);this.base.position={sx:0,x_anchor:\"left\",sy:n,y_anchor:\"bottom\"},this.expo.position={sx:e.width,x_anchor:\"left\",sy:i,y_anchor:\"bottom\"}}get position(){return this._position}set visuals(t){this.expo.font_size_scale=.7,this.base.visuals=t,this.expo.visuals=t}_shift_scale(){if(this.base instanceof x&&1==this.base.nlines){const{x_height:t,cap_height:e}=o.font_metrics(this.base.font);return t/e}return 2/3}infer_text_height(){return this.base.infer_text_height()}_rect(){const t=this.base.bbox(),e=this.expo.bbox(),s=t.union(e),{x:i,y:n}=this._computed_position();return s.translate(i,n).rect}_size(){const t=this.base.size(),e=this.expo.size();return{width:t.width+e.width,height:Math.max(t.height,this._shift_scale()*t.height+e.height)}}paint(t){t.save();const{angle:e}=this;if(e){const{sx:s,sy:i}=this.position;t.translate(s,i),t.rotate(e),t.translate(-s,-i)}const{x:s,y:i}=this._computed_position();t.translate(s,i),this.base.paint(t),this.expo.paint(t),t.restore()}paint_bbox(t){super.paint_bbox(t);const{x:e,y:s}=this._computed_position();t.save(),t.translate(e,s);for(const e of this.children)e.paint_bbox(t);t.restore()}_computed_position(){const{width:t,height:e}=this._size(),{sx:s,sy:i,x_anchor:n=\"left\",y_anchor:h=\"center\"}=this.position;return{x:s-(()=>{if(a.isNumber(n))return n*t;switch(n){case\"left\":return 0;case\"center\":return.5*t;case\"right\":return t}})(),y:i-(()=>{if(a.isNumber(h))return h*e;switch(h){case\"top\":return 0;case\"center\":return.5*e;case\"bottom\":return e;case\"baseline\":return.5*e}})()}}}s.BaseExpo=u,u.__name__=\"BaseExpo\";class p{constructor(t){this.items=t}get length(){return this.items.length}set visuals(t){for(const e of this.items)e.visuals=t;const e={x:0,cap:1,ascent:2,x_descent:3,cap_descent:4,ascent_descent:5},s=r.max_by(this.items.map((t=>t.infer_text_height())),(t=>e[t]));for(const t of this.items)t.text_height_metric=s}set angle(t){for(const e of this.items)e.angle=t}max_size(){let t=0,e=0;for(const s of this.items){const i=s.size();t=Math.max(t,i.width),e=Math.max(e,i.height)}return{width:t,height:e}}}s.GraphicsBoxes=p,p.__name__=\"GraphicsBoxes\"},\n function _(t,s,r,n,i){n();const{sin:e,cos:a}=Math;class h{constructor(t=1,s=0,r=0,n=1,i=0,e=0){this.a=t,this.b=s,this.c=r,this.d=n,this.e=i,this.f=e}toString(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return`matrix(${t}, ${s}, ${r}, ${n}, ${i}, ${e})`}clone(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return new h(t,s,r,n,i,e)}get is_identity(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return 1==t&&0==s&&0==r&&1==n&&0==i&&0==e}apply_point(t){const[s,r]=this.apply(t.x,t.y);return{x:s,y:r}}apply_rect(t){return{p0:this.apply_point(t.p0),p1:this.apply_point(t.p1),p2:this.apply_point(t.p2),p3:this.apply_point(t.p3)}}apply(t,s){const{a:r,b:n,c:i,d:e,e:a,f:h}=this;return[r*t+i*s+a,n*t+e*s+h]}iv_apply(t,s){const{a:r,b:n,c:i,d:e,e:a,f:h}=this,p=t.length;for(let o=0;o({min_distance:[e,5]})))}filter(e,n,s){const{min_distance:t}=this;let i=null;for(const n of e)null!=i&&s(i,n)({args:[s(e),{}],code:[n,\"\"]})))}get names(){return c.keys(this.args)}get values(){return c.values(this.args)}get func(){const e=o.use_strict(this.code);return new a.GeneratorFunction(\"indices\",\"bboxes\",\"distance\",...this.names,e)}filter(e,n,s){const t=Object.create(null),i=this.func.call(t,e,n,s,...this.values);let l=i.next();if(l.done&&void 0!==l.value){const{value:n}=l;return n instanceof a.Indices?n:void 0===n?e:r.isIterable(n)?a.Indices.from_indices(e.size,n):a.Indices.all_unset(e.size)}{const n=[];do{n.push(l.value),l=i.next()}while(!l.done);return a.Indices.from_indices(e.size,n)}}}s.CustomLabelingPolicy=m,m.__name__=\"CustomLabelingPolicy\",m.init_CustomLabelingPolicy()},\n function _(t,s,e,o,i){o();const a=t(1),r=t(163),l=t(171),_=t(172),n=a.__importStar(t(48)),c=t(20),p=t(167),h=t(8);class m extends r.AxisView{_paint(t,s,e){this._draw_group_separators(t,s,e)}_draw_group_separators(t,s,e){const[o]=this.ranges,[i,a]=this.computed_bounds;if(!o.tops||o.tops.length<2||!this.visuals.separator_line.doit)return;const r=this.dimension,l=(r+1)%2,_=[[],[]];let n=0;for(let t=0;ti&&cnew p.GraphicsBoxes(t.map((t=>h.isString(t)?new p.TextBox({text:t}):t))),_=t=>l(this.model.formatter.doFormat(t,this));if(1==t.levels){const t=_(i.major);r.push([t,a.major,this.model.major_label_orientation,this.visuals.major_label_text])}else if(2==t.levels){const t=_(i.major.map((t=>t[1])));r.push([t,a.major,this.model.major_label_orientation,this.visuals.major_label_text]),r.push([l(i.tops),a.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){const t=_(i.major.map((t=>t[2]))),s=i.mids.map((t=>t[1]));r.push([t,a.major,this.model.major_label_orientation,this.visuals.major_label_text]),r.push([l(s),a.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),r.push([l(i.tops),a.tops,this.model.group_label_orientation,this.visuals.group_text])}return r}get tick_coords(){const t=this.dimension,s=(t+1)%2,[e]=this.ranges,[o,i]=this.computed_bounds,a=this.model.ticker.get_ticks(o,i,e,this.loc),r={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return r.major[t]=a.major,r.major[s]=a.major.map((()=>this.loc)),3==e.levels&&(r.mids[t]=a.mids,r.mids[s]=a.mids.map((()=>this.loc))),e.levels>1&&(r.tops[t]=a.tops,r.tops[s]=a.tops.map((()=>this.loc))),r}}e.CategoricalAxisView=m,m.__name__=\"CategoricalAxisView\";class u extends r.Axis{constructor(t){super(t)}static init_CategoricalAxis(){this.prototype.default_view=m,this.mixins([[\"separator_\",n.Line],[\"group_\",n.Text],[\"subgroup_\",n.Text]]),this.define((({Number:t,Or:s})=>({group_label_orientation:[s(c.TickLabelOrientation,t),\"parallel\"],subgroup_label_orientation:[s(c.TickLabelOrientation,t),\"parallel\"]}))),this.override({ticker:()=>new l.CategoricalTicker,formatter:()=>new _.CategoricalTickFormatter,separator_line_color:\"lightgrey\",separator_line_width:2,group_text_font_style:\"bold\",group_text_font_size:\"11px\",group_text_color:\"grey\",subgroup_text_font_style:\"bold\",subgroup_text_font_size:\"11px\"})}}e.CategoricalAxis=u,u.__name__=\"CategoricalAxis\",u.init_CategoricalAxis()},\n function _(t,c,o,s,e){s();const r=t(165);class i extends r.Ticker{constructor(t){super(t)}get_ticks(t,c,o,s){var e,r;return{major:this._collect(o.factors,o,t,c),minor:[],tops:this._collect(null!==(e=o.tops)&&void 0!==e?e:[],o,t,c),mids:this._collect(null!==(r=o.mids)&&void 0!==r?r:[],o,t,c)}}_collect(t,c,o,s){const e=[];for(const r of t){const t=c.synthetic(r);t>o&&tnew m.DatetimeTicker,formatter:()=>new r.DatetimeTickFormatter})}}i.DatetimeAxis=c,c.__name__=\"DatetimeAxis\",c.init_DatetimeAxis()},\n function _(i,e,s,n,t){n();const r=i(173),a=i(176),o=i(177);class c extends r.ContinuousAxisView{}s.LinearAxisView=c,c.__name__=\"LinearAxisView\";class _ extends r.ContinuousAxis{constructor(i){super(i)}static init_LinearAxis(){this.prototype.default_view=c,this.override({ticker:()=>new o.BasicTicker,formatter:()=>new a.BasicTickFormatter})}}s.LinearAxis=_,_.__name__=\"LinearAxis\",_.init_LinearAxis()},\n function _(i,t,e,n,o){n();const s=i(166),r=i(34);function c(i){let t=\"\";for(const e of i)t+=\"-\"==e?\"−\":e;return t}e.unicode_replace=c;class _ extends s.TickFormatter{constructor(i){super(i),this.last_precision=3}static init_BasicTickFormatter(){this.define((({Boolean:i,Int:t,Auto:e,Or:n})=>({precision:[n(t,e),\"auto\"],use_scientific:[i,!0],power_limit_high:[t,5],power_limit_low:[t,-3]})))}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}_need_sci(i){if(!this.use_scientific)return!1;const{scientific_limit_high:t}=this,{scientific_limit_low:e}=this,n=i.length<2?0:Math.abs(i[1]-i[0])/1e4;for(const o of i){const i=Math.abs(o);if(!(i<=n)&&(i>=t||i<=e))return!0}return!1}_format_with_precision(i,t,e){return t?i.map((i=>c(i.toExponential(e)))):i.map((i=>c(r.to_fixed(i,e))))}_auto_precision(i,t){const e=new Array(i.length),n=this.last_precision<=15;i:for(let o=this.last_precision;n?o<=15:o>=1;n?o++:o--){if(t){e[0]=i[0].toExponential(o);for(let t=1;t({base:[t,10],mantissas:[i(t),[1,2,5]],min_interval:[t,0],max_interval:[a(t),null]})))}get_min_interval(){return this.min_interval}get_max_interval(){var t;return null!==(t=this.max_interval)&&void 0!==t?t:1/0}initialize(){super.initialize();const t=r.nth(this.mantissas,-1)/this.base,i=r.nth(this.mantissas,0)*this.base;this.extended_mantissas=[t,...this.mantissas,i],this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()}get_interval(t,i,a){const e=i-t,s=this.get_ideal_interval(t,i,a),n=Math.floor(_.log(s/this.base_factor,this.base)),l=this.base**n*this.base_factor,h=this.extended_mantissas,m=h.map((t=>Math.abs(a-e/(t*l)))),v=h[r.argmin(m)]*l;return _.clamp(v,this.get_min_interval(),this.get_max_interval())}}a.AdaptiveTicker=l,l.__name__=\"AdaptiveTicker\",l.init_AdaptiveTicker()},\n function _(t,i,n,s,e){s();const o=t(165),r=t(9);class c extends o.Ticker{constructor(t){super(t)}static init_ContinuousTicker(){this.define((({Int:t})=>({num_minor_ticks:[t,5],desired_num_ticks:[t,6]})))}get_ticks(t,i,n,s){return this.get_ticks_no_defaults(t,i,s,this.desired_num_ticks)}get_ticks_no_defaults(t,i,n,s){const e=this.get_interval(t,i,s),o=Math.floor(t/e),c=Math.ceil(i/e);let _;_=isFinite(o)&&isFinite(c)?r.range(o,c+1):[];const u=_.map((t=>t*e)).filter((n=>t<=n&&n<=i)),a=this.num_minor_ticks,f=[];if(a>0&&u.length>0){const n=e/a,s=r.range(0,a).map((t=>t*n));for(const n of s.slice(1)){const s=u[0]-n;t<=s&&s<=i&&f.push(s)}for(const n of u)for(const e of s){const s=n+e;t<=s&&s<=i&&f.push(s)}}return{major:u,minor:f}}get_ideal_interval(t,i,n){return(i-t)/n}}n.ContinuousTicker=c,c.__name__=\"ContinuousTicker\",c.init_ContinuousTicker()},\n function _(t,s,e,i,n){i();const r=t(1).__importDefault(t(181)),o=t(166),a=t(19),c=t(182),m=t(9),u=t(8);function h(t){return r.default(t,\"%Y %m %d %H %M %S\").split(/\\s+/).map((t=>parseInt(t,10)))}function d(t,s){if(u.isFunction(s))return s(t);{const e=c.sprintf(\"$1%06d\",function(t){return Math.round(t/1e3%1*1e6)}(t));return-1==(s=s.replace(/((^|[^%])(%%)*)%f/,e)).indexOf(\"%\")?s:r.default(t,s)}}const l=[\"microseconds\",\"milliseconds\",\"seconds\",\"minsec\",\"minutes\",\"hourmin\",\"hours\",\"days\",\"months\",\"years\"];class f extends o.TickFormatter{constructor(t){super(t),this.strip_leading_zeros=!0}static init_DatetimeTickFormatter(){this.define((({String:t,Array:s})=>({microseconds:[s(t),[\"%fus\"]],milliseconds:[s(t),[\"%3Nms\",\"%S.%3Ns\"]],seconds:[s(t),[\"%Ss\"]],minsec:[s(t),[\":%M:%S\"]],minutes:[s(t),[\":%M\",\"%Mm\"]],hourmin:[s(t),[\"%H:%M\"]],hours:[s(t),[\"%Hh\",\"%H:%M\"]],days:[s(t),[\"%m/%d\",\"%a%d\"]],months:[s(t),[\"%m/%Y\",\"%b %Y\"]],years:[s(t),[\"%Y\"]]})))}initialize(){super.initialize(),this._update_width_formats()}_update_width_formats(){const t=+r.default(new Date),s=function(s){const e=s.map((s=>d(t,s).length)),i=m.sort_by(m.zip(e,s),(([t])=>t));return m.unzip(i)};this._width_formats={microseconds:s(this.microseconds),milliseconds:s(this.milliseconds),seconds:s(this.seconds),minsec:s(this.minsec),minutes:s(this.minutes),hourmin:s(this.hourmin),hours:s(this.hours),days:s(this.days),months:s(this.months),years:s(this.years)}}_get_resolution_str(t,s){const e=1.1*t;switch(!1){case!(e<.001):return\"microseconds\";case!(e<1):return\"milliseconds\";case!(e<60):return s>=60?\"minsec\":\"seconds\";case!(e<3600):return s>=3600?\"hourmin\":\"minutes\";case!(e<86400):return\"hours\";case!(e<2678400):return\"days\";case!(e<31536e3):return\"months\";default:return\"years\"}}doFormat(t,s){if(0==t.length)return[];const e=Math.abs(t[t.length-1]-t[0])/1e3,i=e/(t.length-1),n=this._get_resolution_str(i,e),[,[r]]=this._width_formats[n],o=[],c=l.indexOf(n),m={};for(const t of l)m[t]=0;m.seconds=5,m.minsec=4,m.minutes=4,m.hourmin=3,m.hours=3;for(const s of t){let t,e;try{e=h(s),t=d(s,r)}catch(t){a.logger.warn(`unable to format tick for timestamp value ${s}`),a.logger.warn(` - ${t}`),o.push(\"ERR\");continue}let i=!1,u=c;for(;0==e[m[l[u]]];){let r;if(u+=1,u==l.length)break;if((\"minsec\"==n||\"hourmin\"==n)&&!i){if(\"minsec\"==n&&0==e[4]&&0!=e[5]||\"hourmin\"==n&&0==e[3]&&0!=e[4]){r=this._width_formats[l[c-1]][1][0],t=d(s,r);break}i=!0}r=this._width_formats[l[u]][1][0],t=d(s,r)}if(this.strip_leading_zeros){let s=t.replace(/^0+/g,\"\");s!=t&&isNaN(parseInt(s))&&(s=`0${s}`),o.push(s)}else o.push(t)}return o}}e.DatetimeTickFormatter=f,f.__name__=\"DatetimeTickFormatter\",f.init_DatetimeTickFormatter()},\n function _(e,t,n,r,o){!function(e){\"object\"==typeof t&&t.exports?t.exports=e():\"function\"==typeof define?define(e):this.tz=e()}((function(){function e(e,t,n){var r,o=t.day[1];do{r=new Date(Date.UTC(n,t.month,Math.abs(o++)))}while(t.day[0]<7&&r.getUTCDay()!=t.day[0]);return(r={clock:t.clock,sort:r.getTime(),rule:t,save:6e4*t.save,offset:e.offset})[r.clock]=r.sort+6e4*t.time,r.posix?r.wallclock=r[r.clock]+(e.offset+t.saved):r.posix=r[r.clock]-(e.offset+t.saved),r}function t(t,n,r){var o,a,u,i,l,s,c,f=t[t.zone],h=[],T=new Date(r).getUTCFullYear(),g=1;for(o=1,a=f.length;o=T-g;--c)for(o=0,a=s.length;o=h[o][n]&&h[o][h[o].clock]>u[h[o].clock]&&(i=h[o])}return i&&((l=/^(.*)\\/(.*)$/.exec(u.format))?i.abbrev=l[i.save?2:1]:i.abbrev=u.format.replace(/%s/,i.rule.letter)),i||u}function n(e,n){return\"UTC\"==e.zone?n:(e.entry=t(e,\"posix\",n),n+e.entry.offset+e.entry.save)}function r(e,n){return\"UTC\"==e.zone?n:(e.entry=r=t(e,\"wallclock\",n),0<(o=n-r.wallclock)&&o9)t+=s*l[c-10];else{if(a=new Date(n(e,t)),c<7)for(;s;)a.setUTCDate(a.getUTCDate()+i),a.getUTCDay()==c&&(s-=i);else 7==c?a.setUTCFullYear(a.getUTCFullYear()+s):8==c?a.setUTCMonth(a.getUTCMonth()+s):a.setUTCDate(a.getUTCDate()+s);null==(t=r(e,a.getTime()))&&(t=r(e,a.getTime()+864e5*i)-864e5*i)}return t}var a={clock:function(){return+new Date},zone:\"UTC\",entry:{abbrev:\"UTC\",offset:0,save:0},UTC:1,z:function(e,t,n,r){var o,a,u=this.entry.offset+this.entry.save,i=Math.abs(u/1e3),l=[],s=3600;for(o=0;o<3;o++)l.push((\"0\"+Math.floor(i/s)).slice(-2)),i%=s,s/=60;return\"^\"!=n||u?(\"^\"==n&&(r=3),3==r?(a=(a=l.join(\":\")).replace(/:00$/,\"\"),\"^\"!=n&&(a=a.replace(/:00$/,\"\"))):r?(a=l.slice(0,r+1).join(\":\"),\"^\"==n&&(a=a.replace(/:00$/,\"\"))):a=l.slice(0,2).join(\"\"),a=(a=(u<0?\"-\":\"+\")+a).replace(/([-+])(0)/,{_:\" $1\",\"-\":\"$1\"}[n]||\"$1$2\")):\"Z\"},\"%\":function(e){return\"%\"},n:function(e){return\"\\n\"},t:function(e){return\"\\t\"},U:function(e){return s(e,0)},W:function(e){return s(e,1)},V:function(e){return c(e)[0]},G:function(e){return c(e)[1]},g:function(e){return c(e)[1]%100},j:function(e){return Math.floor((e.getTime()-Date.UTC(e.getUTCFullYear(),0))/864e5)+1},s:function(e){return Math.floor(e.getTime()/1e3)},C:function(e){return Math.floor(e.getUTCFullYear()/100)},N:function(e){return e.getTime()%1e3*1e6},m:function(e){return e.getUTCMonth()+1},Y:function(e){return e.getUTCFullYear()},y:function(e){return e.getUTCFullYear()%100},H:function(e){return e.getUTCHours()},M:function(e){return e.getUTCMinutes()},S:function(e){return e.getUTCSeconds()},e:function(e){return e.getUTCDate()},d:function(e){return e.getUTCDate()},u:function(e){return e.getUTCDay()||7},w:function(e){return e.getUTCDay()},l:function(e){return e.getUTCHours()%12||12},I:function(e){return e.getUTCHours()%12||12},k:function(e){return e.getUTCHours()},Z:function(e){return this.entry.abbrev},a:function(e){return this[this.locale].day.abbrev[e.getUTCDay()]},A:function(e){return this[this.locale].day.full[e.getUTCDay()]},h:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},b:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},B:function(e){return this[this.locale].month.full[e.getUTCMonth()]},P:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)].toLowerCase()},p:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)]},R:function(e,t){return this.convert([t,\"%H:%M\"])},T:function(e,t){return this.convert([t,\"%H:%M:%S\"])},D:function(e,t){return this.convert([t,\"%m/%d/%y\"])},F:function(e,t){return this.convert([t,\"%Y-%m-%d\"])},x:function(e,t){return this.convert([t,this[this.locale].date])},r:function(e,t){return this.convert([t,this[this.locale].time12||\"%I:%M:%S\"])},X:function(e,t){return this.convert([t,this[this.locale].time24])},c:function(e,t){return this.convert([t,this[this.locale].dateTime])},convert:function(e){if(!e.length)return\"1.0.23\";var t,a,u,l,s,c=Object.create(this),f=[];for(t=0;t=o?Math.floor((n-o)/7)+1:0}function c(e){var t,n,r;return n=e.getUTCFullYear(),t=new Date(Date.UTC(n,0)).getUTCDay(),(r=s(e,1)+(t>1&&t<=4?1:0))?53!=r||4==t||3==t&&29==new Date(n,1,29).getDate()?[r,e.getUTCFullYear()]:[1,e.getUTCFullYear()+1]:(n=e.getUTCFullYear()-1,[r=4==(t=new Date(Date.UTC(n,0)).getUTCDay())||3==t&&29==new Date(n,1,29).getDate()?53:52,e.getUTCFullYear()-1])}return u=u.toLowerCase().split(\"|\"),\"delmHMSUWVgCIky\".replace(/./g,(function(e){a[e].pad=2})),a.N.pad=9,a.j.pad=3,a.k.style=\"_\",a.l.style=\"_\",a.e.style=\"_\",function(){return a.convert(arguments)}}))},\n function _(r,t,n,e,i){e();const u=r(1),a=u.__importStar(r(183)),f=r(184),o=u.__importDefault(r(181)),l=r(21),s=r(8);function c(r,...t){return f.sprintf(r,...t)}function m(r,t,n){if(s.isNumber(r)){return c((()=>{switch(!1){case Math.floor(r)!=r:return\"%d\";case!(Math.abs(r)>.1&&Math.abs(r)<1e3):return\"%0.3f\";default:return\"%0.3e\"}})(),r)}return`${r}`}function p(r,t,e){if(null==t)return m;if(null!=e&&r in e){const t=e[r];if(s.isString(t)){if(t in n.DEFAULT_FORMATTERS)return n.DEFAULT_FORMATTERS[t];throw new Error(`Unknown tooltip field formatter type '${t}'`)}return function(r,n,e){return t.format(r,n,e)}}return n.DEFAULT_FORMATTERS.numeral}function d(r,t,n,e){if(\"$\"==r[0]){return function(r,t){if(r in t)return t[r];throw new Error(`Unknown special variable '$${r}'`)}(r.substring(1),e)}return function(r,t,n){const e=t.get_column(r);if(null==e)return null;if(s.isNumber(n))return e[n];const i=e[n.index];if(s.isTypedArray(i)||s.isArray(i))return s.isArray(i[0])?i[n.dim2][n.dim1]:i[n.flat_index];return i}(r.substring(1).replace(/[{}]/g,\"\"),t,n)}n.FormatterType=l.Enum(\"numeral\",\"printf\",\"datetime\"),n.DEFAULT_FORMATTERS={numeral:(r,t,n)=>a.format(r,t),datetime:(r,t,n)=>o.default(r,t),printf:(r,t,n)=>c(t,r)},n.sprintf=c,n.basic_formatter=m,n.get_formatter=p,n.get_value=d,n.replace_placeholders=function(r,t,n,e,i={},u){let a,f;if(s.isString(r)?(a=r,f=!1):(a=r.html,f=!0),a=a.replace(/@\\$name/g,(r=>`@{${i.name}}`)),a=a.replace(/((?:\\$\\w+)|(?:@\\w+)|(?:@{(?:[^{}]+)}))(?:{([^{}]+)})?/g,((r,a,o)=>{const l=d(a,t,n,i);if(null==l)return u?u(\"???\"):\"???\";if(\"safe\"==o)return f=!0,`${l}`;const s=`${p(a,o,e)(l,o,i)}`;return u?u(s):s})),f){return[...(new DOMParser).parseFromString(a,\"text/html\").body.childNodes]}return a}},\n function _(e,n,t,r,i){\n /*!\n * numbro.js\n * version : 1.6.2\n * author : Företagsplatsen AB\n * license : MIT\n * http://www.foretagsplatsen.se\n */\n var a,o={},l=o,u=\"en-US\",c=null,s=\"0,0\";void 0!==n&&n.exports;function f(e){this._value=e}function d(e){var n,t=\"\";for(n=0;n-1?function(e,n){var t,r,i,a;return t=(a=e.toString()).split(\"e\")[0],i=a.split(\"e\")[1],a=t.split(\".\")[0]+(r=t.split(\".\")[1]||\"\")+d(i-r.length),n>0&&(a+=\".\"+d(n)),a}(e,n):(t(e*o)/o).toFixed(n),r&&(i=new RegExp(\"0{1,\"+r+\"}$\"),a=a.replace(i,\"\")),a}function p(e,n,t){return n.indexOf(\"$\")>-1?function(e,n,t){var r,i,a=n,l=a.indexOf(\"$\"),c=a.indexOf(\"(\"),s=a.indexOf(\"+\"),f=a.indexOf(\"-\"),d=\"\",h=\"\";-1===a.indexOf(\"$\")?\"infix\"===o[u].currency.position?(h=o[u].currency.symbol,o[u].currency.spaceSeparated&&(h=\" \"+h+\" \")):o[u].currency.spaceSeparated&&(d=\" \"):a.indexOf(\" $\")>-1?(d=\" \",a=a.replace(\" $\",\"\")):a.indexOf(\"$ \")>-1?(d=\" \",a=a.replace(\"$ \",\"\")):a=a.replace(\"$\",\"\");if(i=m(e,a,t,h),-1===n.indexOf(\"$\"))switch(o[u].currency.position){case\"postfix\":i.indexOf(\")\")>-1?((i=i.split(\"\")).splice(-1,0,d+o[u].currency.symbol),i=i.join(\"\")):i=i+d+o[u].currency.symbol;break;case\"infix\":break;case\"prefix\":i.indexOf(\"(\")>-1||i.indexOf(\"-\")>-1?(i=i.split(\"\"),r=Math.max(c,f)+1,i.splice(r,0,o[u].currency.symbol+d),i=i.join(\"\")):i=o[u].currency.symbol+d+i;break;default:throw Error('Currency position should be among [\"prefix\", \"infix\", \"postfix\"]')}else l<=1?i.indexOf(\"(\")>-1||i.indexOf(\"+\")>-1||i.indexOf(\"-\")>-1?(r=1,(l-1?((i=i.split(\"\")).splice(-1,0,d+o[u].currency.symbol),i=i.join(\"\")):i=i+d+o[u].currency.symbol;return i}(e,n,t):n.indexOf(\"%\")>-1?function(e,n,t){var r,i=\"\";e*=100,n.indexOf(\" %\")>-1?(i=\" \",n=n.replace(\" %\",\"\")):n=n.replace(\"%\",\"\");(r=m(e,n,t)).indexOf(\")\")>-1?((r=r.split(\"\")).splice(-1,0,i+\"%\"),r=r.join(\"\")):r=r+i+\"%\";return r}(e,n,t):n.indexOf(\":\")>-1?function(e){var n=Math.floor(e/60/60),t=Math.floor((e-60*n*60)/60),r=Math.round(e-60*n*60-60*t);return n+\":\"+(t<10?\"0\"+t:t)+\":\"+(r<10?\"0\"+r:r)}(e):m(e,n,t)}function m(e,n,t,r){var i,a,l,s,f,d,p,m,x,g,O,b,w,y,M,v,$,B=!1,E=!1,F=!1,k=\"\",U=!1,N=!1,S=!1,j=!1,D=!1,C=\"\",L=\"\",T=Math.abs(e),K=[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"],G=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"],I=\"\",P=!1,R=!1;if(0===e&&null!==c)return c;if(!isFinite(e))return\"\"+e;if(0===n.indexOf(\"{\")){var W=n.indexOf(\"}\");if(-1===W)throw Error('Format should also contain a \"}\"');b=n.slice(1,W),n=n.slice(W+1)}else b=\"\";if(n.indexOf(\"}\")===n.length-1){var Y=n.indexOf(\"{\");if(-1===Y)throw Error('Format should also contain a \"{\"');w=n.slice(Y+1,-1),n=n.slice(0,Y+1)}else w=\"\";if(v=null===($=-1===n.indexOf(\".\")?n.match(/([0-9]+).*/):n.match(/([0-9]+)\\..*/))?-1:$[1].length,-1!==n.indexOf(\"-\")&&(P=!0),n.indexOf(\"(\")>-1?(B=!0,n=n.slice(1,-1)):n.indexOf(\"+\")>-1&&(E=!0,n=n.replace(/\\+/g,\"\")),n.indexOf(\"a\")>-1){if(g=n.split(\".\")[0].match(/[0-9]+/g)||[\"0\"],g=parseInt(g[0],10),U=n.indexOf(\"aK\")>=0,N=n.indexOf(\"aM\")>=0,S=n.indexOf(\"aB\")>=0,j=n.indexOf(\"aT\")>=0,D=U||N||S||j,n.indexOf(\" a\")>-1?(k=\" \",n=n.replace(\" a\",\"\")):n=n.replace(\"a\",\"\"),p=0===(p=(f=Math.floor(Math.log(T)/Math.LN10)+1)%3)?3:p,g&&0!==T&&(d=Math.floor(Math.log(T)/Math.LN10)+1-g,m=3*~~((Math.min(g,f)-p)/3),T/=Math.pow(10,m),-1===n.indexOf(\".\")&&g>3))for(n+=\"[.]\",M=(M=0===d?0:3*~~(d/3)-d)<0?M+3:M,i=0;i=Math.pow(10,12)&&!D||j?(k+=o[u].abbreviations.trillion,e/=Math.pow(10,12)):T=Math.pow(10,9)&&!D||S?(k+=o[u].abbreviations.billion,e/=Math.pow(10,9)):T=Math.pow(10,6)&&!D||N?(k+=o[u].abbreviations.million,e/=Math.pow(10,6)):(T=Math.pow(10,3)&&!D||U)&&(k+=o[u].abbreviations.thousand,e/=Math.pow(10,3)))}if(n.indexOf(\"b\")>-1)for(n.indexOf(\" b\")>-1?(C=\" \",n=n.replace(\" b\",\"\")):n=n.replace(\"b\",\"\"),s=0;s<=K.length;s++)if(a=Math.pow(1024,s),l=Math.pow(1024,s+1),e>=a&&e0&&(e/=a);break}if(n.indexOf(\"d\")>-1)for(n.indexOf(\" d\")>-1?(C=\" \",n=n.replace(\" d\",\"\")):n=n.replace(\"d\",\"\"),s=0;s<=G.length;s++)if(a=Math.pow(1e3,s),l=Math.pow(1e3,s+1),e>=a&&e0&&(e/=a);break}if(n.indexOf(\"o\")>-1&&(n.indexOf(\" o\")>-1?(L=\" \",n=n.replace(\" o\",\"\")):n=n.replace(\"o\",\"\"),o[u].ordinal&&(L+=o[u].ordinal(e))),n.indexOf(\"[.]\")>-1&&(F=!0,n=n.replace(\"[.]\",\".\")),x=e.toString().split(\".\")[0],O=n.split(\".\")[1],y=n.indexOf(\",\"),O){if(x=(I=-1!==O.indexOf(\"*\")?h(e,e.toString().split(\".\")[1].length,t):O.indexOf(\"[\")>-1?h(e,(O=(O=O.replace(\"]\",\"\")).split(\"[\"))[0].length+O[1].length,t,O[1].length):h(e,O.length,t)).split(\".\")[0],I.split(\".\")[1].length)I=(r?k+r:o[u].delimiters.decimal)+I.split(\".\")[1];else I=\"\";F&&0===Number(I.slice(1))&&(I=\"\")}else x=h(e,null,t);return x.indexOf(\"-\")>-1&&(x=x.slice(1),R=!0),x.length-1&&(x=x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+o[u].delimiters.thousands)),0===n.indexOf(\".\")&&(x=\"\"),b+(n.indexOf(\"(\")2)&&(o.length<2?!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u):1===o[0].length?!!o[0].match(/^\\d+$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/):!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/)))))},n.exports={format:function(e,n,t,r){return null!=t&&t!==a.culture()&&a.setCulture(t),p(Number(e),null!=n?n:s,null==r?Math.round:r)}}},\n function _(e,n,t,r,i){!function(){\"use strict\";var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function n(e){return i(a(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(t,r){var i,s,a,o,p,c,l,u,f,d=1,g=t.length,y=\"\";for(s=0;s=0),o.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,o.width?parseInt(o.width):0);break;case\"e\":i=o.precision?parseFloat(i).toExponential(o.precision):parseFloat(i).toExponential();break;case\"f\":i=o.precision?parseFloat(i).toFixed(o.precision):parseFloat(i);break;case\"g\":i=o.precision?String(Number(i.toPrecision(o.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=o.precision?i.substring(0,o.precision):i;break;case\"t\":i=String(!!i),i=o.precision?i.substring(0,o.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o.precision?i.substring(0,o.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o.precision?i.substring(0,o.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?y+=i:(!e.number.test(o.type)||u&&!o.sign?f=\"\":(f=u?\"+\":\"-\",i=i.toString().replace(e.sign,\"\")),c=o.pad_char?\"0\"===o.pad_char?\"0\":o.pad_char.charAt(1):\" \",l=o.width-(f+i).length,p=o.width&&l>0?c.repeat(l):\"\",y+=o.align?f+i+p:\"0\"===c?f+p+i:p+f+i)}return y}var s=Object.create(null);function a(n){if(s[n])return s[n];for(var t,r=n,i=[],a=0;r;){if(null!==(t=e.text.exec(r)))i.push(t[0]);else if(null!==(t=e.modulo.exec(r)))i.push(\"%\");else{if(null===(t=e.placeholder.exec(r)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(t[2]){a|=1;var o=[],p=t[2],c=[];if(null===(c=e.key.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(o.push(c[1]);\"\"!==(p=p.substring(c[0].length));)if(null!==(c=e.key_access.exec(p)))o.push(c[1]);else{if(null===(c=e.index_access.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");o.push(c[1])}t[2]=o}else a|=2;if(3===a)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return s[n]=i}void 0!==t&&(t.sprintf=n,t.vsprintf=r),\"undefined\"!=typeof window&&(window.sprintf=n,window.vsprintf=r,\"function\"==typeof define&&define.amd&&define((function(){return{sprintf:n,vsprintf:r}})))}()},\n function _(e,i,n,t,a){t();const s=e(9),r=e(178),c=e(186),m=e(187),_=e(190),k=e(191),o=e(189);class T extends c.CompositeTicker{constructor(e){super(e)}static init_DatetimeTicker(){this.override({num_minor_ticks:0,tickers:()=>[new r.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*o.ONE_MILLI,num_minor_ticks:0}),new r.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:o.ONE_SECOND,max_interval:30*o.ONE_MINUTE,num_minor_ticks:0}),new r.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:o.ONE_HOUR,max_interval:12*o.ONE_HOUR,num_minor_ticks:0}),new m.DaysTicker({days:s.range(1,32)}),new m.DaysTicker({days:s.range(1,31,3)}),new m.DaysTicker({days:[1,8,15,22]}),new m.DaysTicker({days:[1,15]}),new _.MonthsTicker({months:s.range(0,12,1)}),new _.MonthsTicker({months:s.range(0,12,2)}),new _.MonthsTicker({months:s.range(0,12,4)}),new _.MonthsTicker({months:s.range(0,12,6)}),new k.YearsTicker({})]})}}n.DatetimeTicker=T,T.__name__=\"DatetimeTicker\",T.init_DatetimeTicker()},\n function _(t,e,i,s,r){s();const n=t(179),_=t(9);class a extends n.ContinuousTicker{constructor(t){super(t)}static init_CompositeTicker(){this.define((({Array:t,Ref:e})=>({tickers:[t(e(n.ContinuousTicker)),[]]})))}get min_intervals(){return this.tickers.map((t=>t.get_min_interval()))}get max_intervals(){return this.tickers.map((t=>t.get_max_interval()))}get_min_interval(){return this.min_intervals[0]}get_max_interval(){return this.max_intervals[0]}get_best_ticker(t,e,i){const s=e-t,r=this.get_ideal_interval(t,e,i),n=[_.sorted_index(this.min_intervals,r)-1,_.sorted_index(this.max_intervals,r)],a=[this.min_intervals[n[0]],this.max_intervals[n[1]]].map((t=>Math.abs(i-s/t)));let c;if(_.is_empty(a.filter((t=>!isNaN(t)))))c=this.tickers[0];else{const t=n[_.argmin(a)];c=this.tickers[t]}return c}get_interval(t,e,i){return this.get_best_ticker(t,e,i).get_interval(t,e,i)}get_ticks_no_defaults(t,e,i,s){return this.get_best_ticker(t,e,s).get_ticks_no_defaults(t,e,i,s)}}i.CompositeTicker=a,a.__name__=\"CompositeTicker\",a.init_CompositeTicker()},\n function _(t,e,n,i,s){i();const a=t(188),o=t(189),r=t(9);class c extends a.SingleIntervalTicker{constructor(t){super(t)}static init_DaysTicker(){this.define((({Int:t,Array:e})=>({days:[e(t),[]]}))),this.override({num_minor_ticks:0})}initialize(){super.initialize();const t=this.days;t.length>1?this.interval=(t[1]-t[0])*o.ONE_DAY:this.interval=31*o.ONE_DAY}get_ticks_no_defaults(t,e,n,i){const s=function(t,e){const n=o.last_month_no_later_than(new Date(t)),i=o.last_month_no_later_than(new Date(e));i.setUTCMonth(i.getUTCMonth()+1);const s=[],a=n;for(;s.push(o.copy_date(a)),a.setUTCMonth(a.getUTCMonth()+1),!(a>i););return s}(t,e),a=this.days,c=this.interval;return{major:r.concat(s.map((t=>((t,e)=>{const n=t.getUTCMonth(),i=[];for(const s of a){const a=o.copy_date(t);a.setUTCDate(s),new Date(a.getTime()+e/2).getUTCMonth()==n&&i.push(a)}return i})(t,c)))).map((t=>t.getTime())).filter((n=>t<=n&&n<=e)),minor:[]}}}n.DaysTicker=c,c.__name__=\"DaysTicker\",c.init_DaysTicker()},\n function _(e,t,n,i,r){i();const l=e(179);class a extends l.ContinuousTicker{constructor(e){super(e)}static init_SingleIntervalTicker(){this.define((({Number:e})=>({interval:[e]})))}get_interval(e,t,n){return this.interval}get_min_interval(){return this.interval}get_max_interval(){return this.interval}}n.SingleIntervalTicker=a,a.__name__=\"SingleIntervalTicker\",a.init_SingleIntervalTicker()},\n function _(t,n,e,_,E){function N(t){return new Date(t.getTime())}function O(t){const n=N(t);return n.setUTCDate(1),n.setUTCHours(0),n.setUTCMinutes(0),n.setUTCSeconds(0),n.setUTCMilliseconds(0),n}_(),e.ONE_MILLI=1,e.ONE_SECOND=1e3,e.ONE_MINUTE=60*e.ONE_SECOND,e.ONE_HOUR=60*e.ONE_MINUTE,e.ONE_DAY=24*e.ONE_HOUR,e.ONE_MONTH=30*e.ONE_DAY,e.ONE_YEAR=365*e.ONE_DAY,e.copy_date=N,e.last_month_no_later_than=O,e.last_year_no_later_than=function(t){const n=O(t);return n.setUTCMonth(0),n}},\n function _(t,e,n,i,s){i();const r=t(188),a=t(189),o=t(9);class c extends r.SingleIntervalTicker{constructor(t){super(t)}static init_MonthsTicker(){this.define((({Int:t,Array:e})=>({months:[e(t),[]]})))}initialize(){super.initialize();const t=this.months;t.length>1?this.interval=(t[1]-t[0])*a.ONE_MONTH:this.interval=12*a.ONE_MONTH}get_ticks_no_defaults(t,e,n,i){const s=function(t,e){const n=a.last_year_no_later_than(new Date(t)),i=a.last_year_no_later_than(new Date(e));i.setUTCFullYear(i.getUTCFullYear()+1);const s=[],r=n;for(;s.push(a.copy_date(r)),r.setUTCFullYear(r.getUTCFullYear()+1),!(r>i););return s}(t,e),r=this.months;return{major:o.concat(s.map((t=>r.map((e=>{const n=a.copy_date(t);return n.setUTCMonth(e),n}))))).map((t=>t.getTime())).filter((n=>t<=n&&n<=e)),minor:[]}}}n.MonthsTicker=c,c.__name__=\"MonthsTicker\",c.init_MonthsTicker()},\n function _(e,t,a,i,r){i();const n=e(177),_=e(188),s=e(189);class c extends _.SingleIntervalTicker{constructor(e){super(e)}initialize(){super.initialize(),this.interval=s.ONE_YEAR,this.basic_ticker=new n.BasicTicker({num_minor_ticks:0})}get_ticks_no_defaults(e,t,a,i){const r=s.last_year_no_later_than(new Date(e)).getUTCFullYear(),n=s.last_year_no_later_than(new Date(t)).getUTCFullYear();return{major:this.basic_ticker.get_ticks_no_defaults(r,n,a,i).major.map((e=>Date.UTC(e,0,1))).filter((a=>e<=a&&a<=t)),minor:[]}}}a.YearsTicker=c,c.__name__=\"YearsTicker\"},\n function _(i,s,t,e,o){e();const n=i(173),r=i(193),_=i(194);class c extends n.ContinuousAxisView{}t.LogAxisView=c,c.__name__=\"LogAxisView\";class x extends n.ContinuousAxis{constructor(i){super(i)}static init_LogAxis(){this.prototype.default_view=c,this.override({ticker:()=>new _.LogTicker,formatter:()=>new r.LogTickFormatter})}}t.LogAxis=x,x.__name__=\"LogAxis\",x.init_LogAxis()},\n function _(t,e,r,i,n){i();const o=t(166),a=t(176),s=t(194),c=t(167),{log:l,round:u}=Math;class _ extends o.TickFormatter{constructor(t){super(t)}static init_LogTickFormatter(){this.define((({Ref:t,Nullable:e})=>({ticker:[e(t(s.LogTicker)),null]})))}initialize(){super.initialize(),this.basic_formatter=new a.BasicTickFormatter}format_graphics(t,e){var r,i;if(0==t.length)return[];const n=null!==(i=null===(r=this.ticker)||void 0===r?void 0:r.base)&&void 0!==i?i:10,o=this._exponents(t,n);return null==o?this.basic_formatter.format_graphics(t,e):o.map((t=>{const e=new c.TextBox({text:a.unicode_replace(`${n}`)}),r=new c.TextBox({text:a.unicode_replace(`${t}`)});return new c.BaseExpo(e,r)}))}_exponents(t,e){let r=null;const i=[];for(const n of t){const t=u(l(n)/l(e));if(r==t)return null;r=t,i.push(t)}return i}doFormat(t,e){var r,i;if(0==t.length)return[];const n=null!==(i=null===(r=this.ticker)||void 0===r?void 0:r.base)&&void 0!==i?i:10,o=this._exponents(t,n);return null==o?this.basic_formatter.doFormat(t,e):o.map((t=>a.unicode_replace(`${n}^${t}`)))}}r.LogTickFormatter=_,_.__name__=\"LogTickFormatter\",_.init_LogTickFormatter()},\n function _(t,o,e,i,s){i();const n=t(178),r=t(9);class c extends n.AdaptiveTicker{constructor(t){super(t)}static init_LogTicker(){this.override({mantissas:[1,5]})}get_ticks_no_defaults(t,o,e,i){const s=this.num_minor_ticks,n=[],c=this.base,a=Math.log(t)/Math.log(c),f=Math.log(o)/Math.log(c),l=f-a;let h;if(isFinite(l))if(l<2){const e=this.get_interval(t,o,i),c=Math.floor(t/e),a=Math.ceil(o/e);if(h=r.range(c,a+1).filter((t=>0!=t)).map((t=>t*e)).filter((e=>t<=e&&e<=o)),s>0&&h.length>0){const t=e/s,o=r.range(0,s).map((o=>o*t));for(const t of o.slice(1))n.push(h[0]-t);for(const t of h)for(const e of o)n.push(t+e)}}else{const t=Math.ceil(.999999*a),o=Math.floor(1.000001*f),e=Math.ceil((o-t)/9);if(h=r.range(t-1,o+1,e).map((t=>c**t)),s>0&&h.length>0){const t=c**e/s,o=r.range(1,s+1).map((o=>o*t));for(const t of o)n.push(h[0]/t);n.push(h[0]);for(const t of h)for(const e of o)n.push(t*e)}}else h=[];return{major:h.filter((e=>t<=e&&e<=o)),minor:n.filter((e=>t<=e&&e<=o))}}}e.LogTicker=c,c.__name__=\"LogTicker\",c.init_LogTicker()},\n function _(e,t,i,r,s){r();const a=e(163),o=e(175),c=e(196),n=e(197);class _ extends a.AxisView{}i.MercatorAxisView=_,_.__name__=\"MercatorAxisView\";class x extends o.LinearAxis{constructor(e){super(e)}static init_MercatorAxis(){this.prototype.default_view=_,this.override({ticker:()=>new n.MercatorTicker({dimension:\"lat\"}),formatter:()=>new c.MercatorTickFormatter({dimension:\"lat\"})})}}i.MercatorAxis=x,x.__name__=\"MercatorAxis\",x.init_MercatorAxis()},\n function _(r,t,e,o,n){o();const i=r(176),c=r(20),a=r(65);class s extends i.BasicTickFormatter{constructor(r){super(r)}static init_MercatorTickFormatter(){this.define((({Nullable:r})=>({dimension:[r(c.LatLon),null]})))}doFormat(r,t){if(null==this.dimension)throw new Error(\"MercatorTickFormatter.dimension not configured\");if(0==r.length)return[];const e=r.length,o=new Array(e);if(\"lon\"==this.dimension)for(let n=0;n({dimension:[t(e.LatLon),null]})))}get_ticks_no_defaults(t,o,n,r){if(null==this.dimension)throw new Error(`${this}.dimension wasn't configured`);return[t,o]=c.clip_mercator(t,o,this.dimension),\"lon\"==this.dimension?this._get_ticks_lon(t,o,n,r):this._get_ticks_lat(t,o,n,r)}_get_ticks_lon(t,o,n,r){const[s]=c.wgs84_mercator.invert(t,n),[i,e]=c.wgs84_mercator.invert(o,n),_=super.get_ticks_no_defaults(s,i,n,r),a=[];for(const t of _.major)if(c.in_bounds(t,\"lon\")){const[o]=c.wgs84_mercator.compute(t,e);a.push(o)}const m=[];for(const t of _.minor)if(c.in_bounds(t,\"lon\")){const[o]=c.wgs84_mercator.compute(t,e);m.push(o)}return{major:a,minor:m}}_get_ticks_lat(t,o,n,r){const[,s]=c.wgs84_mercator.invert(n,t),[i,e]=c.wgs84_mercator.invert(n,o),_=super.get_ticks_no_defaults(s,e,n,r),a=[];for(const t of _.major)if(c.in_bounds(t,\"lat\")){const[,o]=c.wgs84_mercator.compute(i,t);a.push(o)}const m=[];for(const t of _.minor)if(c.in_bounds(t,\"lat\")){const[,o]=c.wgs84_mercator.compute(i,t);m.push(o)}return{major:a,minor:m}}}n.MercatorTicker=_,_.__name__=\"MercatorTicker\",_.init_MercatorTicker()},\n function _(e,i,r,c,k){c(),k(\"AdaptiveTicker\",e(178).AdaptiveTicker),k(\"BasicTicker\",e(177).BasicTicker),k(\"CategoricalTicker\",e(171).CategoricalTicker),k(\"CompositeTicker\",e(186).CompositeTicker),k(\"ContinuousTicker\",e(179).ContinuousTicker),k(\"DatetimeTicker\",e(185).DatetimeTicker),k(\"DaysTicker\",e(187).DaysTicker),k(\"FixedTicker\",e(199).FixedTicker),k(\"LogTicker\",e(194).LogTicker),k(\"MercatorTicker\",e(197).MercatorTicker),k(\"MonthsTicker\",e(190).MonthsTicker),k(\"SingleIntervalTicker\",e(188).SingleIntervalTicker),k(\"Ticker\",e(165).Ticker),k(\"YearsTicker\",e(191).YearsTicker),k(\"BinnedTicker\",e(200).BinnedTicker)},\n function _(i,t,e,r,n){r();const s=i(179);class _ extends s.ContinuousTicker{constructor(i){super(i)}static init_FixedTicker(){this.define((({Number:i,Array:t})=>({ticks:[t(i),[]],minor_ticks:[t(i),[]]})))}get_ticks_no_defaults(i,t,e,r){return{major:this.ticks,minor:this.minor_ticks}}get_interval(i,t,e){return 0}get_min_interval(){return 0}get_max_interval(){return 0}}e.FixedTicker=_,_.__name__=\"FixedTicker\",_.init_FixedTicker()},\n function _(e,n,t,i,r){i();const c=e(165),o=e(201),s=e(12);class a extends c.Ticker{constructor(e){super(e)}static init_BinnedTicker(){this.define((({Number:e,Ref:n,Or:t,Auto:i})=>({mapper:[n(o.ScanningColorMapper)],num_major_ticks:[t(e,i),8]})))}get_ticks(e,n,t,i){const{binning:r}=this.mapper.metrics,c=Math.max(0,s.left_edge_index(e,r)),o=Math.min(s.left_edge_index(n,r)+1,r.length-1),a=[];for(let e=c;e<=o;e++)a.push(r[e]);const{num_major_ticks:_}=this,m=[],h=\"auto\"==_?a.length:_,l=Math.max(1,Math.floor(a.length/h));for(let e=0;eo.binning[o.binning.length-1])return r;return e[a.left_edge_index(n,o.binning)]}}i.ScanningColorMapper=c,c.__name__=\"ScanningColorMapper\"},\n function _(t,o,e,n,s){n();const l=t(203),i=t(61),c=t(9),a=t(8);class r extends l.ColorMapper{constructor(t){super(t),this._scan_data=null}static init_ContinuousColorMapper(){this.define((({Number:t,String:o,Ref:e,Color:n,Or:s,Tuple:l,Array:c,Nullable:a})=>({high:[a(t),null],low:[a(t),null],high_color:[a(n),null],low_color:[a(n),null],domain:[c(l(e(i.GlyphRenderer),s(o,c(o)))),[]]})))}connect_signals(){super.connect_signals();const t=()=>{for(const[t]of this.domain)this.connect(t.view.change,(()=>this.update_data())),this.connect(t.data_source.selected.change,(()=>this.update_data()))};this.connect(this.properties.domain.change,(()=>t())),t()}update_data(){const{domain:t,palette:o}=this,e=[...this._collect(t)];this._scan_data=this.scan(e,o.length),this.metrics_change.emit(),this.change.emit()}get metrics(){return null==this._scan_data&&this.update_data(),this._scan_data}*_collect(t){for(const[o,e]of t)for(const t of a.isArray(e)?e:[e]){let e=o.data_source.get_column(t);e=o.view.indices.select(e);const n=o.view.masked,s=o.data_source.selected.indices;let l;if(null!=n&&s.length>0?l=c.intersection([...n],s):null!=n?l=[...n]:s.length>0&&(l=s),null!=l&&(e=c.map(l,(t=>e[t]))),e.length>0&&!a.isNumber(e[0]))for(const t of e)yield*t;else yield*e}}_v_compute(t,o,e,n){const{nan_color:s}=n;let{low_color:l,high_color:i}=n;null==l&&(l=e[0]),null==i&&(i=e[e.length-1]);const{domain:a}=this,r=c.is_empty(a)?t:[...this._collect(a)];this._scan_data=this.scan(r,e.length),this.metrics_change.emit();for(let n=0,c=t.length;n({palette:[r(t)],nan_color:[t,\"gray\"]})))}v_compute(t){const r=new Array(t.length);return this._v_compute(t,r,this.palette,this._colors((t=>t))),r}get rgba_mapper(){const t=this,r=p(this.palette),e=this._colors(s);return{v_compute(n){const o=new c.ColorArray(n.length);return t._v_compute(n,o,r,e),new Uint8ClampedArray(l.to_big_endian(o).buffer)}}}_colors(t){return{nan_color:t(this.nan_color)}}}e.ColorMapper=u,u.__name__=\"ColorMapper\",u.init_ColorMapper()},\n function _(r,e,n,s,o){s();const p=r(149);class t extends p.Transform{constructor(r){super(r)}compute(r){throw new Error(\"mapping single values is not supported\")}}n.Mapper=t,t.__name__=\"Mapper\"},\n function _(t,r,a,e,c){e(),c(\"BasicTickFormatter\",t(176).BasicTickFormatter),c(\"CategoricalTickFormatter\",t(172).CategoricalTickFormatter),c(\"DatetimeTickFormatter\",t(180).DatetimeTickFormatter),c(\"FuncTickFormatter\",t(206).FuncTickFormatter),c(\"LogTickFormatter\",t(193).LogTickFormatter),c(\"MercatorTickFormatter\",t(196).MercatorTickFormatter),c(\"NumeralTickFormatter\",t(207).NumeralTickFormatter),c(\"PrintfTickFormatter\",t(208).PrintfTickFormatter),c(\"TickFormatter\",t(166).TickFormatter)},\n function _(t,n,e,s,i){s();const r=t(166),c=t(13),a=t(34);class u extends r.TickFormatter{constructor(t){super(t)}static init_FuncTickFormatter(){this.define((({Unknown:t,String:n,Dict:e})=>({args:[e(t),{}],code:[n,\"\"]})))}get names(){return c.keys(this.args)}get values(){return c.values(this.args)}_make_func(){const t=a.use_strict(this.code);return new Function(\"tick\",\"index\",\"ticks\",...this.names,t)}doFormat(t,n){const e=this._make_func().bind({});return t.map(((t,n,s)=>`${e(t,n,s,...this.values)}`))}}e.FuncTickFormatter=u,u.__name__=\"FuncTickFormatter\",u.init_FuncTickFormatter()},\n function _(r,t,n,e,a){e();const o=r(1).__importStar(r(183)),i=r(166),u=r(20);class c extends i.TickFormatter{constructor(r){super(r)}static init_NumeralTickFormatter(){this.define((({String:r})=>({format:[r,\"0,0\"],language:[r,\"en\"],rounding:[u.RoundingFunction,\"round\"]})))}get _rounding_fn(){switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}doFormat(r,t){const{format:n,language:e,_rounding_fn:a}=this;return r.map((r=>o.format(r,n,e,a)))}}n.NumeralTickFormatter=c,c.__name__=\"NumeralTickFormatter\",c.init_NumeralTickFormatter()},\n function _(t,r,i,n,o){n();const a=t(166),e=t(182);class c extends a.TickFormatter{constructor(t){super(t)}static init_PrintfTickFormatter(){this.define((({String:t})=>({format:[t,\"%s\"]})))}doFormat(t,r){return t.map((t=>e.sprintf(this.format,t)))}}i.PrintfTickFormatter=c,c.__name__=\"PrintfTickFormatter\",c.init_PrintfTickFormatter()},\n function _(r,o,a,p,e){p(),e(\"CategoricalColorMapper\",r(210).CategoricalColorMapper),e(\"CategoricalMarkerMapper\",r(212).CategoricalMarkerMapper),e(\"CategoricalPatternMapper\",r(213).CategoricalPatternMapper),e(\"ContinuousColorMapper\",r(202).ContinuousColorMapper),e(\"ColorMapper\",r(203).ColorMapper),e(\"LinearColorMapper\",r(214).LinearColorMapper),e(\"LogColorMapper\",r(215).LogColorMapper),e(\"ScanningColorMapper\",r(201).ScanningColorMapper),e(\"EqHistColorMapper\",r(216).EqHistColorMapper)},\n function _(t,o,a,r,e){r();const c=t(211),l=t(203),i=t(104);class s extends l.ColorMapper{constructor(t){super(t)}static init_CategoricalColorMapper(){this.define((({Number:t,Nullable:o})=>({factors:[i.FactorSeq],start:[t,0],end:[o(t),null]})))}_v_compute(t,o,a,{nan_color:r}){c.cat_v_compute(t,this.factors,a,o,this.start,this.end,r)}}a.CategoricalColorMapper=s,s.__name__=\"CategoricalColorMapper\",s.init_CategoricalColorMapper()},\n function _(n,t,e,l,i){l();const c=n(12),u=n(8);function f(n,t){if(n.length!=t.length)return!1;for(let e=0,l=n.length;ef(n,h)))),s=_<0||_>=e.length?r:e[_],l[g]=s}}},\n function _(r,e,a,t,s){t();const c=r(211),i=r(104),l=r(204),n=r(20);class p extends l.Mapper{constructor(r){super(r)}static init_CategoricalMarkerMapper(){this.define((({Number:r,Array:e,Nullable:a})=>({factors:[i.FactorSeq],markers:[e(n.MarkerType)],start:[r,0],end:[a(r),null],default_value:[n.MarkerType,\"circle\"]})))}v_compute(r){const e=new Array(r.length);return c.cat_v_compute(r,this.factors,this.markers,e,this.start,this.end,this.default_value),e}}a.CategoricalMarkerMapper=p,p.__name__=\"CategoricalMarkerMapper\",p.init_CategoricalMarkerMapper()},\n function _(t,a,e,r,n){r();const s=t(211),c=t(104),i=t(204),p=t(20);class l extends i.Mapper{constructor(t){super(t)}static init_CategoricalPatternMapper(){this.define((({Number:t,Array:a,Nullable:e})=>({factors:[c.FactorSeq],patterns:[a(p.HatchPatternType)],start:[t,0],end:[e(t),null],default_value:[p.HatchPatternType,\" \"]})))}v_compute(t){const a=new Array(t.length);return s.cat_v_compute(t,this.factors,this.patterns,a,this.start,this.end,this.default_value),a}}e.CategoricalPatternMapper=l,l.__name__=\"CategoricalPatternMapper\",l.init_CategoricalPatternMapper()},\n function _(n,r,o,t,a){t();const e=n(202),i=n(12);class s extends e.ContinuousColorMapper{constructor(n){super(n)}scan(n,r){const o=null!=this.low?this.low:i.min(n),t=null!=this.high?this.high:i.max(n);return{max:t,min:o,norm_factor:1/(t-o),normed_interval:1/r}}cmap(n,r,o,t,a){const e=r.length-1;if(n==a.max)return r[e];const i=(n-a.min)*a.norm_factor,s=Math.floor(i/a.normed_interval);return s<0?o:s>e?t:r[s]}}o.LinearColorMapper=s,s.__name__=\"LinearColorMapper\"},\n function _(o,t,n,r,l){r();const a=o(202),s=o(12);class e extends a.ContinuousColorMapper{constructor(o){super(o)}scan(o,t){const n=null!=this.low?this.low:s.min(o),r=null!=this.high?this.high:s.max(o);return{max:r,min:n,scale:t/(Math.log(r)-Math.log(n))}}cmap(o,t,n,r,l){const a=t.length-1;if(o>l.max)return r;if(o==l.max)return t[a];if(oa&&(e=a),t[e]}}n.LogColorMapper=e,e.__name__=\"LogColorMapper\"},\n function _(n,t,i,e,o){e();const s=n(201),r=n(12),a=n(9),l=n(19);class c extends s.ScanningColorMapper{constructor(n){super(n)}static init_EqHistColorMapper(){this.define((({Int:n})=>({bins:[n,65536]})))}scan(n,t){const i=null!=this.low?this.low:r.min(n),e=null!=this.high?this.high:r.max(n),o=this.bins,s=a.linspace(i,e,o+1),c=r.bin_counts(n,s),h=new Array(o);for(let n=0,t=s.length;nn/g));let m=t-1,M=[],_=0,f=2*t;for(;m!=t&&_<4&&0!=m;){const n=f/m;if(n>1e3)break;f=Math.round(Math.max(t*n,t));const i=a.range(0,f),e=r.map(u,(n=>n*(f-1)));M=r.interpolate(i,e,h);m=a.uniq(M).length-1,_++}if(0==m){M=[i,e];for(let n=0;ne*n+t}compute(e){return this._linear_compute(e)}v_compute(e){return this._linear_v_compute(e)}invert(e){return this._linear_invert(e)}v_invert(e){return this._linear_v_invert(e)}}n.LinearScale=u,u.__name__=\"LinearScale\"},\n function _(n,e,t,r,i){r();const a=n(146),o=n(12);class c extends a.Scale{constructor(n){super(n)}static init_LinearInterpolationScale(){this.internal((({Arrayable:n})=>({binning:[n]})))}get s_compute(){throw new Error(\"not implemented\")}compute(n){return n}v_compute(n){const{binning:e}=this,{start:t,end:r}=this.source_range,i=t,a=r,c=e.length,l=(r-t)/(c-1),s=new Float64Array(c);for(let n=0;n{if(na)return a;const t=o.left_edge_index(n,e),r=e[t],c=(n-r)/(e[t+1]-r),l=s[t];return l+c*(s[t+1]-l)}));return this._linear_v_compute(_)}invert(n){return n}v_invert(n){return new Float64Array(n)}}t.LinearInterpolationScale=c,c.__name__=\"LinearInterpolationScale\",c.init_LinearInterpolationScale()},\n function _(a,n,e,g,R){g(),R(\"DataRange\",a(160).DataRange),R(\"DataRange1d\",a(159).DataRange1d),R(\"FactorRange\",a(104).FactorRange),R(\"Range\",a(105).Range),R(\"Range1d\",a(156).Range1d)},\n function _(a,o,i,t,e){t();var n=a(141);e(\"Sizeable\",n.Sizeable),e(\"SizingPolicy\",n.SizingPolicy);var c=a(142);e(\"Layoutable\",c.Layoutable),e(\"LayoutItem\",c.LayoutItem);var r=a(222);e(\"HStack\",r.HStack),e(\"VStack\",r.VStack);var l=a(223);e(\"Grid\",l.Grid),e(\"Row\",l.Row),e(\"Column\",l.Column);var S=a(224);e(\"ContentBox\",S.ContentBox),e(\"VariadicBox\",S.VariadicBox)},\n function _(t,e,h,i,r){i();const n=t(142),o=t(99);class s extends n.Layoutable{constructor(){super(...arguments),this.children=[]}*[Symbol.iterator](){yield*this.children}}h.Stack=s,s.__name__=\"Stack\";class c extends s{_measure(t){let e=0,h=0;for(const t of this.children){const i=t.measure({width:0,height:0});e+=i.width,h=Math.max(h,i.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t.top:0;let i=this.absolute?t.left:0;const{height:r}=t;for(const t of this.children){const{width:e}=t.measure({width:0,height:0});t.set_geometry(new o.BBox({left:i,width:e,top:h,height:r})),i+=e}}}h.HStack=c,c.__name__=\"HStack\";class a extends s{_measure(t){let e=0,h=0;for(const t of this.children){const i=t.measure({width:0,height:0});e=Math.max(e,i.width),h+=i.height}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t.left:0;let i=this.absolute?t.top:0;const{width:r}=t;for(const t of this.children){const{height:e}=t.measure({width:0,height:0});t.set_geometry(new o.BBox({top:i,height:e,left:h,width:r})),i+=e}}}h.VStack=a,a.__name__=\"VStack\";class l extends n.Layoutable{constructor(){super(...arguments),this.children=[]}*[Symbol.iterator](){yield*this.children}_measure(t){const{width_policy:e,height_policy:h}=this.sizing,{min:i,max:r}=Math;let n=0,o=0;for(const e of this.children){const{width:h,height:i}=e.measure(t);n=r(n,h),o=r(o,i)}return{width:(()=>{const{width:h}=this.sizing;if(t.width==1/0)return\"fixed\"==e&&null!=h?h:n;switch(e){case\"fixed\":return null!=h?h:n;case\"min\":return n;case\"fit\":return null!=h?i(t.width,h):t.width;case\"max\":return null!=h?r(t.width,h):t.width}})(),height:(()=>{const{height:e}=this.sizing;if(t.height==1/0)return\"fixed\"==h&&null!=e?e:o;switch(h){case\"fixed\":return null!=e?e:o;case\"min\":return o;case\"fit\":return null!=e?i(t.height,e):t.height;case\"max\":return null!=e?r(t.height,e):t.height}})()}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t:t.relative(),{left:i,right:r,top:n,bottom:s}=h,c=Math.round(h.vcenter),a=Math.round(h.hcenter);for(const e of this.children){const{margin:h,halign:l,valign:d}=e.sizing,{width:u,height:g,inner:_}=e.measure(t),w=(()=>{switch(`${d}_${l}`){case\"start_start\":return new o.BBox({left:i+h.left,top:n+h.top,width:u,height:g});case\"start_center\":return new o.BBox({hcenter:a,top:n+h.top,width:u,height:g});case\"start_end\":return new o.BBox({right:r-h.right,top:n+h.top,width:u,height:g});case\"center_start\":return new o.BBox({left:i+h.left,vcenter:c,width:u,height:g});case\"center_center\":return new o.BBox({hcenter:a,vcenter:c,width:u,height:g});case\"center_end\":return new o.BBox({right:r-h.right,vcenter:c,width:u,height:g});case\"end_start\":return new o.BBox({left:i+h.left,bottom:s-h.bottom,width:u,height:g});case\"end_center\":return new o.BBox({hcenter:a,bottom:s-h.bottom,width:u,height:g});case\"end_end\":return new o.BBox({right:r-h.right,bottom:s-h.bottom,width:u,height:g})}})(),m=null==_?w:new o.BBox({left:w.left+_.left,top:w.top+_.top,right:w.right-_.right,bottom:w.bottom-_.bottom});e.set_geometry(w,m)}}}h.NodeLayout=l,l.__name__=\"NodeLayout\"},\n function _(t,i,s,e,o){e();const n=t(141),l=t(142),r=t(8),h=t(99),c=t(9),{max:a,round:g}=Math;class p{constructor(t){this.def=t,this._map=new Map}get(t){let i=this._map.get(t);return void 0===i&&(i=this.def(),this._map.set(t,i)),i}apply(t,i){const s=this.get(t);this._map.set(t,i(s))}}p.__name__=\"DefaultMap\";class f{constructor(){this._items=[],this._nrows=0,this._ncols=0}get nrows(){return this._nrows}get ncols(){return this._ncols}add(t,i){const{r1:s,c1:e}=t;this._nrows=a(this._nrows,s+1),this._ncols=a(this._ncols,e+1),this._items.push({span:t,data:i})}at(t,i){return this._items.filter((({span:s})=>s.r0<=t&&t<=s.r1&&s.c0<=i&&i<=s.c1)).map((({data:t})=>t))}row(t){return this._items.filter((({span:i})=>i.r0<=t&&t<=i.r1)).map((({data:t})=>t))}col(t){return this._items.filter((({span:i})=>i.c0<=t&&t<=i.c1)).map((({data:t})=>t))}foreach(t){for(const{span:i,data:s}of this._items)t(i,s)}map(t){const i=new f;for(const{span:s,data:e}of this._items)i.add(s,t(s,e));return i}}f.__name__=\"Container\";class _ extends l.Layoutable{constructor(t=[]){super(),this.items=t,this.rows=\"auto\",this.cols=\"auto\",this.spacing=0}*[Symbol.iterator](){for(const{layout:t}of this.items)yield t}is_width_expanding(){if(super.is_width_expanding())return!0;if(\"fixed\"==this.sizing.width_policy)return!1;const{cols:t}=this._state;return c.some(t,(t=>\"max\"==t.policy))}is_height_expanding(){if(super.is_height_expanding())return!0;if(\"fixed\"==this.sizing.height_policy)return!1;const{rows:t}=this._state;return c.some(t,(t=>\"max\"==t.policy))}_init(){var t,i,s,e;super._init();const o=new f;for(const{layout:t,row:i,col:s,row_span:e,col_span:n}of this.items)if(t.sizing.visible){const l=i,r=s,h=i+(null!=e?e:1)-1,c=s+(null!=n?n:1)-1;o.add({r0:l,c0:r,r1:h,c1:c},t)}const{nrows:n,ncols:l}=o,h=new Array(n);for(let s=0;s{var t;const i=r.isPlainObject(this.rows)?null!==(t=this.rows[s])&&void 0!==t?t:this.rows[\"*\"]:this.rows;return null==i?{policy:\"auto\"}:r.isNumber(i)?{policy:\"fixed\",height:i}:r.isString(i)?{policy:i}:i})(),n=null!==(t=e.align)&&void 0!==t?t:\"auto\";if(\"fixed\"==e.policy)h[s]={policy:\"fixed\",height:e.height,align:n};else if(\"min\"==e.policy)h[s]={policy:\"min\",align:n};else if(\"fit\"==e.policy||\"max\"==e.policy)h[s]={policy:e.policy,flex:null!==(i=e.flex)&&void 0!==i?i:1,align:n};else{if(\"auto\"!=e.policy)throw new Error(\"unrechable\");c.some(o.row(s),(t=>t.is_height_expanding()))?h[s]={policy:\"max\",flex:1,align:n}:h[s]={policy:\"min\",align:n}}}const a=new Array(l);for(let t=0;t{var i;const s=r.isPlainObject(this.cols)?null!==(i=this.cols[t])&&void 0!==i?i:this.cols[\"*\"]:this.cols;return null==s?{policy:\"auto\"}:r.isNumber(s)?{policy:\"fixed\",width:s}:r.isString(s)?{policy:s}:s})(),n=null!==(s=i.align)&&void 0!==s?s:\"auto\";if(\"fixed\"==i.policy)a[t]={policy:\"fixed\",width:i.width,align:n};else if(\"min\"==i.policy)a[t]={policy:\"min\",align:n};else if(\"fit\"==i.policy||\"max\"==i.policy)a[t]={policy:i.policy,flex:null!==(e=i.flex)&&void 0!==e?e:1,align:n};else{if(\"auto\"!=i.policy)throw new Error(\"unrechable\");c.some(o.col(t),(t=>t.is_width_expanding()))?a[t]={policy:\"max\",flex:1,align:n}:a[t]={policy:\"min\",align:n}}}const[g,p]=r.isNumber(this.spacing)?[this.spacing,this.spacing]:this.spacing;this._state={items:o,nrows:n,ncols:l,rows:h,cols:a,rspacing:g,cspacing:p}}_measure_totals(t,i){const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state;return{height:c.sum(t)+(s-1)*o,width:c.sum(i)+(e-1)*n}}_measure_cells(t){const{items:i,nrows:s,ncols:e,rows:o,cols:l,rspacing:r,cspacing:h}=this._state,c=new Array(s);for(let t=0;t{const{r0:e,c0:f,r1:d,c1:u}=i,w=(d-e)*r,m=(u-f)*h;let y=0;for(let i=e;i<=d;i++)y+=t(i,f).height;y+=w;let x=0;for(let i=f;i<=u;i++)x+=t(e,i).width;x+=m;const b=s.measure({width:x,height:y});_.add(i,{layout:s,size_hint:b});const z=new n.Sizeable(b).grow_by(s.sizing.margin);z.height-=w,z.width-=m;const v=[];for(let t=e;t<=d;t++){const i=o[t];\"fixed\"==i.policy?z.height-=i.height:v.push(t)}if(z.height>0){const t=g(z.height/v.length);for(const i of v)c[i]=a(c[i],t)}const j=[];for(let t=f;t<=u;t++){const i=l[t];\"fixed\"==i.policy?z.width-=i.width:j.push(t)}if(z.width>0){const t=g(z.width/j.length);for(const i of j)p[i]=a(p[i],t)}}));return{size:this._measure_totals(c,p),row_heights:c,col_widths:p,size_hints:_}}_measure_grid(t){const{nrows:i,ncols:s,rows:e,cols:o,rspacing:n,cspacing:l}=this._state,r=s=>{let o;o=\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:t.height!=1/0&&this.is_height_expanding()?Math.max(t.height,s.size.height):s.size.height;let l=0;for(let t=0;t0)for(let t=0;ti?i:e,t--}}}},h=i=>{let e;e=\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:t.width!=1/0&&this.is_width_expanding()?t.width:i.size.width;let n=0;for(let t=0;t0)for(let t=0;ts?s:o,t--}}}},c=this._measure_cells(((t,i)=>{const s=e[t],n=o[i];return{width:\"fixed\"==n.policy?n.width:1/0,height:\"fixed\"==s.policy?s.height:1/0}}));r(c),h(c);const p=this._measure_cells(((t,i)=>({width:c.col_widths[i],height:c.row_heights[t]})));r(p),h(p);const{row_heights:f,col_widths:_}=p;return{size:this._measure_totals(f,_),row_heights:f,col_widths:_}}_measure(t){const{size:i}=this._measure_grid(t);return i}_set_geometry(t,i){super._set_geometry(t,i);const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state,{row_heights:l,col_widths:r}=this._measure_grid(t),{size_hints:c}=this._measure_cells(((t,i)=>({width:r[i],height:l[t]}))),f=this._state.rows.map(((t,i)=>Object.assign(Object.assign({},t),{top:0,height:l[i],get bottom(){return this.top+this.height}}))),_=this._state.cols.map(((t,i)=>Object.assign(Object.assign({},t),{left:0,width:r[i],get right(){return this.left+this.width}}))),d=c.map(((t,i)=>Object.assign(Object.assign({},i),{outer:new h.BBox,inner:new h.BBox})));for(let i=0,e=this.absolute?t.top:0;i{const{layout:r,size_hint:c}=l,{sizing:a}=r,{width:p,height:d}=c,u=function(t,i){let s=(i-t)*n;for(let e=t;e<=i;e++)s+=_[e].width;return s}(i,e),w=function(t,i){let s=(i-t)*o;for(let e=t;e<=i;e++)s+=f[e].height;return s}(t,s),m=i==e&&\"auto\"!=_[i].align?_[i].align:a.halign,y=t==s&&\"auto\"!=f[t].align?f[t].align:a.valign;let x=_[i].left;\"start\"==m?x+=a.margin.left:\"center\"==m?x+=g((u-p)/2):\"end\"==m&&(x+=u-a.margin.right-p);let b=f[t].top;\"start\"==y?b+=a.margin.top:\"center\"==y?b+=g((w-d)/2):\"end\"==y&&(b+=w-a.margin.bottom-d),l.outer=new h.BBox({left:x,top:b,width:p,height:d})}));const u=f.map((()=>({start:new p((()=>0)),end:new p((()=>0))}))),w=_.map((()=>({start:new p((()=>0)),end:new p((()=>0))})));d.foreach((({r0:t,c0:i,r1:s,c1:e},{size_hint:o,outer:n})=>{const{inner:l}=o;null!=l&&(u[t].start.apply(n.top,(t=>a(t,l.top))),u[s].end.apply(f[s].bottom-n.bottom,(t=>a(t,l.bottom))),w[i].start.apply(n.left,(t=>a(t,l.left))),w[e].end.apply(_[e].right-n.right,(t=>a(t,l.right))))})),d.foreach((({r0:t,c0:i,r1:s,c1:e},o)=>{const{size_hint:n,outer:l}=o,r=t=>{const i=this.absolute?l:l.relative(),s=i.left+t.left,e=i.top+t.top,o=i.right-t.right,n=i.bottom-t.bottom;return new h.BBox({left:s,top:e,right:o,bottom:n})};if(null!=n.inner){let h=r(n.inner);if(!1!==n.align){const o=u[t].start.get(l.top),n=u[s].end.get(f[s].bottom-l.bottom),c=w[i].start.get(l.left),a=w[e].end.get(_[e].right-l.right);try{h=r({top:o,bottom:n,left:c,right:a})}catch(t){}}o.inner=h}else o.inner=l})),d.foreach(((t,{layout:i,outer:s,inner:e})=>{i.set_geometry(s,e)}))}}s.Grid=_,_.__name__=\"Grid\";class d extends _{constructor(t){super(),this.items=t.map(((t,i)=>({layout:t,row:0,col:i}))),this.rows=\"fit\"}}s.Row=d,d.__name__=\"Row\";class u extends _{constructor(t){super(),this.items=t.map(((t,i)=>({layout:t,row:i,col:0}))),this.cols=\"fit\"}}s.Column=u,u.__name__=\"Column\"},\n function _(e,t,s,n,i){n();const a=e(142),c=e(141),o=e(43);class r extends a.ContentLayoutable{constructor(e){super(),this.content_size=o.unsized(e,(()=>new c.Sizeable(o.size(e))))}_content_size(){return this.content_size}}s.ContentBox=r,r.__name__=\"ContentBox\";class _ extends a.Layoutable{constructor(e){super(),this.el=e}_measure(e){const t=new c.Sizeable(e).bounded_to(this.sizing.size);return o.sized(this.el,t,(()=>{const e=new c.Sizeable(o.content_size(this.el)),{border:t,padding:s}=o.extents(this.el);return e.grow_by(t).grow_by(s).map(Math.ceil)}))}}s.VariadicBox=_,_.__name__=\"VariadicBox\";class h extends _{constructor(e){super(e),this._cache=new Map}_measure(e){const{width:t,height:s}=e,n=`${t},${s}`;let i=this._cache.get(n);return null==i&&(i=super._measure(e),this._cache.set(n,i)),i}invalidate_cache(){this._cache.clear()}}s.CachedVariadicBox=h,h.__name__=\"CachedVariadicBox\"},\n function _(t,e,i,h,o){h();const s=t(141),r=t(142),n=t(99);class g extends r.Layoutable{constructor(){super(...arguments),this.min_border={left:0,top:0,right:0,bottom:0},this.padding={left:0,top:0,right:0,bottom:0}}*[Symbol.iterator](){yield this.top_panel,yield this.bottom_panel,yield this.left_panel,yield this.right_panel,yield this.center_panel}_measure(t){t=new s.Sizeable({width:\"fixed\"==this.sizing.width_policy||t.width==1/0?this.sizing.width:t.width,height:\"fixed\"==this.sizing.height_policy||t.height==1/0?this.sizing.height:t.height});const e=this.left_panel.measure({width:0,height:t.height}),i=Math.max(e.width,this.min_border.left)+this.padding.left,h=this.right_panel.measure({width:0,height:t.height}),o=Math.max(h.width,this.min_border.right)+this.padding.right,r=this.top_panel.measure({width:t.width,height:0}),n=Math.max(r.height,this.min_border.top)+this.padding.top,g=this.bottom_panel.measure({width:t.width,height:0}),a=Math.max(g.height,this.min_border.bottom)+this.padding.bottom,d=new s.Sizeable(t).shrink_by({left:i,right:o,top:n,bottom:a}),l=this.center_panel.measure(d);return{width:i+l.width+o,height:n+l.height+a,inner:{left:i,right:o,top:n,bottom:a},align:(()=>{const{width_policy:t,height_policy:e}=this.center_panel.sizing;return\"fixed\"!=t&&\"fixed\"!=e})()}}_set_geometry(t,e){super._set_geometry(t,e),this.center_panel.set_geometry(e);const i=this.left_panel.measure({width:0,height:t.height}),h=this.right_panel.measure({width:0,height:t.height}),o=this.top_panel.measure({width:t.width,height:0}),s=this.bottom_panel.measure({width:t.width,height:0}),{left:r,top:g,right:a,bottom:d}=e;this.top_panel.set_geometry(new n.BBox({left:r,right:a,bottom:g,height:o.height})),this.bottom_panel.set_geometry(new n.BBox({left:r,right:a,top:d,height:s.height})),this.left_panel.set_geometry(new n.BBox({top:g,bottom:d,right:r,width:i.width})),this.right_panel.set_geometry(new n.BBox({top:g,bottom:d,left:a,width:h.width}))}}i.BorderLayout=g,g.__name__=\"BorderLayout\"},\n function _(t,e,i,s,n){s();const o=t(1),l=t(139),a=t(10),_=t(143),d=t(20),h=o.__importStar(t(48));class r extends l.TextAnnotationView{_get_size(){const{ctx:t}=this.layer;this.visuals.text.set_value(t);const{width:e}=t.measureText(this.model.text),{height:i}=_.font_metrics(t.font);return{width:e,height:i}}_render(){const{angle:t,angle_units:e}=this.model,i=a.resolve_angle(t,e),s=null!=this.layout?this.layout:this.plot_view.frame,n=this.coordinates.x_scale,o=this.coordinates.y_scale;let l=\"data\"==this.model.x_units?n.compute(this.model.x):s.bbox.xview.compute(this.model.x),_=\"data\"==this.model.y_units?o.compute(this.model.y):s.bbox.yview.compute(this.model.y);l+=this.model.x_offset,_-=this.model.y_offset;(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,this.model.text,l,_,i)}}i.LabelView=r,r.__name__=\"LabelView\";class c extends l.TextAnnotation{constructor(t){super(t)}static init_Label(){this.prototype.default_view=r,this.mixins([h.Text,[\"border_\",h.Line],[\"background_\",h.Fill]]),this.define((({Number:t,String:e,Angle:i})=>({x:[t],x_units:[d.SpatialUnits,\"data\"],y:[t],y_units:[d.SpatialUnits,\"data\"],text:[e,\"\"],angle:[i,0],angle_units:[d.AngleUnits,\"rad\"],x_offset:[t,0],y_offset:[t,0]}))),this.override({background_fill_color:null,border_line_color:null})}}i.Label=c,c.__name__=\"Label\",c.init_Label()},\n function _(t,e,s,i,o){i();const l=t(1),n=t(139),a=t(56),r=t(130),_=l.__importStar(t(48)),c=t(20),h=t(43),d=l.__importStar(t(18)),u=t(143);class x extends n.TextAnnotationView{set_data(t){a.DataAnnotationView.prototype.set_data.call(this,t)}initialize(){if(super.initialize(),this.set_data(this.model.source),\"css\"==this.model.render_mode)for(let t=0,e=this.text.length;t{this.set_data(this.model.source),\"css\"==this.model.render_mode?this.render():this.request_render()};this.connect(this.model.change,t),this.connect(this.model.source.streaming,t),this.connect(this.model.source.patching,t),this.connect(this.model.source.change,t)}_calculate_text_dimensions(t,e){const{width:s}=t.measureText(e),{height:i}=u.font_metrics(this.visuals.text.font_value(0));return[s,i]}_map_data(){const t=this.coordinates.x_scale,e=this.coordinates.y_scale,s=null!=this.layout?this.layout:this.plot_view.frame;return[\"data\"==this.model.x_units?t.v_compute(this._x):s.bbox.xview.v_compute(this._x),\"data\"==this.model.y_units?e.v_compute(this._y):s.bbox.yview.v_compute(this._y)]}_render(){const t=\"canvas\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),{ctx:e}=this.layer,[s,i]=this._map_data();for(let o=0,l=this.text.length;o({x:[d.XCoordinateSpec,{field:\"x\"}],y:[d.YCoordinateSpec,{field:\"y\"}],x_units:[c.SpatialUnits,\"data\"],y_units:[c.SpatialUnits,\"data\"],text:[d.StringSpec,{field:\"text\"}],angle:[d.AngleSpec,0],x_offset:[d.NumberSpec,{value:0}],y_offset:[d.NumberSpec,{value:0}],source:[t(r.ColumnDataSource),()=>new r.ColumnDataSource]}))),this.override({background_fill_color:null,border_line_color:null})}}s.LabelSet=v,v.__name__=\"LabelSet\",v.init_LabelSet()},\n function _(t,e,i,s,l){s();const n=t(1),h=t(40),o=t(229),a=t(20),_=n.__importStar(t(48)),r=t(15),d=t(140),c=t(143),g=t(99),m=t(9),b=t(8),f=t(11);class u extends h.AnnotationView{update_layout(){const{panel:t}=this;this.layout=null!=t?new d.SideLayout(t,(()=>this.get_size())):void 0}cursor(t,e){return\"none\"==this.model.click_policy?null:\"pointer\"}get legend_padding(){return null!=this.model.border_line_color?this.model.padding:0}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render())),this.connect(this.model.item_change,(()=>this.request_render()))}compute_legend_bbox(){const t=this.model.get_legend_names(),{glyph_height:e,glyph_width:i}=this.model,{label_height:s,label_width:l}=this.model;this.max_label_height=m.max([c.font_metrics(this.visuals.label_text.font_value()).height,s,e]);const{ctx:n}=this.layer;n.save(),this.visuals.label_text.set_value(n),this.text_widths=new Map;for(const e of t)this.text_widths.set(e,m.max([n.measureText(e).width,l]));this.visuals.title_text.set_value(n),this.title_height=this.model.title?c.font_metrics(this.visuals.title_text.font_value()).height+this.model.title_standoff:0,this.title_width=this.model.title?n.measureText(this.model.title).width:0,n.restore();const h=Math.max(m.max([...this.text_widths.values()]),0),o=this.model.margin,{legend_padding:a}=this,_=this.model.spacing,{label_standoff:r}=this.model;let d,u;if(\"vertical\"==this.model.orientation)d=t.length*this.max_label_height+Math.max(t.length-1,0)*_+2*a+this.title_height,u=m.max([h+i+r+2*a,this.title_width+2*a]);else{let e=2*a+Math.max(t.length-1,0)*_;for(const[,t]of this.text_widths)e+=m.max([t,l])+i+r;u=m.max([this.title_width+2*a,e]),d=this.max_label_height+this.title_height+2*a}const x=null!=this.layout?this.layout:this.plot_view.frame,[p,w]=x.bbox.ranges,{location:v}=this.model;let y,k;if(b.isString(v))switch(v){case\"top_left\":y=p.start+o,k=w.start+o;break;case\"top\":case\"top_center\":y=(p.end+p.start)/2-u/2,k=w.start+o;break;case\"top_right\":y=p.end-o-u,k=w.start+o;break;case\"bottom_right\":y=p.end-o-u,k=w.end-o-d;break;case\"bottom\":case\"bottom_center\":y=(p.end+p.start)/2-u/2,k=w.end-o-d;break;case\"bottom_left\":y=p.start+o,k=w.end-o-d;break;case\"left\":case\"center_left\":y=p.start+o,k=(w.end+w.start)/2-d/2;break;case\"center\":case\"center_center\":y=(p.end+p.start)/2-u/2,k=(w.end+w.start)/2-d/2;break;case\"right\":case\"center_right\":y=p.end-o-u,k=(w.end+w.start)/2-d/2}else if(b.isArray(v)&&2==v.length){const[t,e]=v;y=x.bbox.xview.compute(t),k=x.bbox.yview.compute(e)-d}else f.unreachable();return new g.BBox({left:y,top:k,width:u,height:d})}interactive_bbox(){return this.compute_legend_bbox()}interactive_hit(t,e){return this.interactive_bbox().contains(t,e)}on_hit(t,e){let i;const{glyph_width:s}=this.model,{legend_padding:l}=this,n=this.model.spacing,{label_standoff:h}=this.model;let o=i=l;const a=this.compute_legend_bbox(),_=\"vertical\"==this.model.orientation;for(const r of this.model.items){const d=r.get_labels_list_from_label_prop();for(const c of d){const d=a.x+o,m=a.y+i+this.title_height;let b,f;[b,f]=_?[a.width-2*l,this.max_label_height]:[this.text_widths.get(c)+s+h,this.max_label_height];if(new g.BBox({left:d,top:m,width:b,height:f}).contains(t,e)){switch(this.model.click_policy){case\"hide\":for(const t of r.renderers)t.visible=!t.visible;break;case\"mute\":for(const t of r.renderers)t.muted=!t.muted}return!0}_?i+=this.max_label_height+n:o+=this.text_widths.get(c)+s+h+n}}return!1}_render(){if(0==this.model.items.length)return;for(const t of this.model.items)t.legend=this.model;const{ctx:t}=this.layer,e=this.compute_legend_bbox();t.save(),this._draw_legend_box(t,e),this._draw_legend_items(t,e),this._draw_title(t,e),t.restore()}_draw_legend_box(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.set_value(t),t.fill(),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke())}_draw_legend_items(t,e){const{glyph_width:i,glyph_height:s}=this.model,{legend_padding:l}=this,n=this.model.spacing,{label_standoff:h}=this.model;let o=l,a=l;const _=\"vertical\"==this.model.orientation;for(const r of this.model.items){const d=r.get_labels_list_from_label_prop(),c=r.get_field_from_label_prop();if(0==d.length)continue;const g=(()=>{switch(this.model.click_policy){case\"none\":return!0;case\"hide\":return m.every(r.renderers,(t=>t.visible));case\"mute\":return m.every(r.renderers,(t=>!t.muted))}})();for(const m of d){const d=e.x+o,b=e.y+a+this.title_height,f=d+i,u=b+s;_?a+=this.max_label_height+n:o+=this.text_widths.get(m)+i+h+n,this.visuals.label_text.set_value(t),t.fillText(m,f+h,b+this.max_label_height/2);for(const e of r.renderers){const i=this.plot_view.renderer_view(e);null==i||i.draw_legend(t,d,f,b,u,c,m,r.index)}if(!g){let s,n;[s,n]=_?[e.width-2*l,this.max_label_height]:[this.text_widths.get(m)+i+h,this.max_label_height],t.beginPath(),t.rect(d,b,s,n),this.visuals.inactive_fill.set_value(t),t.fill()}}}}_draw_title(t,e){const{title:i}=this.model;i&&this.visuals.title_text.doit&&(t.save(),t.translate(e.x0,e.y0+this.title_height),this.visuals.title_text.set_value(t),t.fillText(i,this.legend_padding,this.legend_padding-this.model.title_standoff),t.restore())}_get_size(){const{width:t,height:e}=this.compute_legend_bbox();return{width:t+2*this.model.margin,height:e+2*this.model.margin}}}i.LegendView=u,u.__name__=\"LegendView\";class x extends h.Annotation{constructor(t){super(t)}initialize(){super.initialize(),this.item_change=new r.Signal0(this,\"item_change\")}static init_Legend(){this.prototype.default_view=u,this.mixins([[\"label_\",_.Text],[\"title_\",_.Text],[\"inactive_\",_.Fill],[\"border_\",_.Line],[\"background_\",_.Fill]]),this.define((({Number:t,String:e,Array:i,Tuple:s,Or:l,Ref:n,Nullable:h})=>({orientation:[a.Orientation,\"vertical\"],location:[l(a.LegendLocation,s(t,t)),\"top_right\"],title:[h(e),null],title_standoff:[t,5],label_standoff:[t,5],glyph_height:[t,20],glyph_width:[t,20],label_height:[t,20],label_width:[t,20],margin:[t,10],padding:[t,10],spacing:[t,3],items:[i(n(o.LegendItem)),[]],click_policy:[a.LegendClickPolicy,\"none\"]}))),this.override({border_line_color:\"#e5e5e5\",border_line_alpha:.5,border_line_width:1,background_fill_color:\"#ffffff\",background_fill_alpha:.95,inactive_fill_color:\"white\",inactive_fill_alpha:.7,label_text_font_size:\"13px\",label_text_baseline:\"middle\",title_text_font_size:\"13px\",title_text_font_style:\"italic\"})}get_legend_names(){const t=[];for(const e of this.items){const i=e.get_labels_list_from_label_prop();t.push(...i)}return t}}i.Legend=x,x.__name__=\"Legend\",x.init_Legend()},\n function _(e,r,n,l,t){l();const i=e(1),s=e(53),o=e(61),_=e(57),a=e(230),u=i.__importStar(e(18)),d=e(19),c=e(9);class f extends s.Model{constructor(e){super(e)}static init_LegendItem(){this.define((({Int:e,Array:r,Ref:n,Nullable:l})=>({label:[u.NullStringSpec,null],renderers:[r(n(o.GlyphRenderer)),[]],index:[l(e),null]})))}_check_data_sources_on_renderers(){if(null!=this.get_field_from_label_prop()){if(this.renderers.length<1)return!1;const e=this.renderers[0].data_source;if(null!=e)for(const r of this.renderers)if(r.data_source!=e)return!1}return!0}_check_field_label_on_data_source(){const e=this.get_field_from_label_prop();if(null!=e){if(this.renderers.length<1)return!1;const r=this.renderers[0].data_source;if(null!=r&&!c.includes(r.columns(),e))return!1}return!0}initialize(){super.initialize(),this.legend=null,this.connect(this.change,(()=>{var e;return null===(e=this.legend)||void 0===e?void 0:e.item_change.emit()}));this._check_data_sources_on_renderers()||d.logger.error(\"Non matching data sources on legend item renderers\");this._check_field_label_on_data_source()||d.logger.error(`Bad column name on label: ${this.label}`)}get_field_from_label_prop(){const{label:e}=this;return a.isField(e)?e.field:null}get_labels_list_from_label_prop(){if(a.isValue(this.label)){const{value:e}=this.label;return null!=e?[e]:[]}const e=this.get_field_from_label_prop();if(null!=e){let r;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\"No source found\"];if(r=this.renderers[0].data_source,r instanceof _.ColumnarDataSource){const n=r.get_column(e);return null!=n?c.uniq(Array.from(n)):[\"Invalid field\"]}}return[]}}n.LegendItem=f,f.__name__=\"LegendItem\",f.init_LegendItem()},\n function _(i,n,e,t,u){t();const c=i(8);e.isValue=function(i){return c.isPlainObject(i)&&\"value\"in i},e.isField=function(i){return c.isPlainObject(i)&&\"field\"in i},e.isExpr=function(i){return c.isPlainObject(i)&&\"expr\"in i}},\n function _(t,i,s,n,e){n();const o=t(1),l=t(40),a=o.__importStar(t(48)),c=t(20);class h extends l.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{xs:t,ys:i}=this.model;if(t.length!=i.length)return;const s=t.length;if(s<3)return;const{frame:n}=this.plot_view,{ctx:e}=this.layer,o=this.coordinates.x_scale,l=this.coordinates.y_scale,{screen:a}=this.model;function c(t,i,s,n){return a?t:\"data\"==i?s.v_compute(t):n.v_compute(t)}const h=c(t,this.model.xs_units,o,n.bbox.xview),r=c(i,this.model.ys_units,l,n.bbox.yview);e.beginPath();for(let t=0;t({xs:[i(t),[]],xs_units:[c.SpatialUnits,\"data\"],ys:[i(t),[]],ys_units:[c.SpatialUnits,\"data\"]}))),this.internal((({Boolean:t})=>({screen:[t,!1]}))),this.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})}update({xs:t,ys:i}){this.setv({xs:t,ys:i,screen:!0},{check_eq:!1})}}s.PolyAnnotation=r,r.__name__=\"PolyAnnotation\",r.init_PolyAnnotation()},\n function _(e,t,i,n,o){n();const s=e(1),l=e(40),r=s.__importStar(e(48));class c extends l.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{gradient:e,y_intercept:t}=this.model;if(null==e||null==t)return;const{frame:i}=this.plot_view,n=this.coordinates.x_scale,o=this.coordinates.y_scale;let s,l,r,c;if(0==e)s=o.compute(t),l=s,r=i.bbox.left,c=r+i.bbox.width;else{s=i.bbox.top,l=s+i.bbox.height;const a=(o.invert(s)-t)/e,_=(o.invert(l)-t)/e;r=n.compute(a),c=n.compute(_)}const{ctx:a}=this.layer;a.save(),a.beginPath(),this.visuals.line.set_value(a),a.moveTo(r,s),a.lineTo(c,l),a.stroke(),a.restore()}}i.SlopeView=c,c.__name__=\"SlopeView\";class a extends l.Annotation{constructor(e){super(e)}static init_Slope(){this.prototype.default_view=c,this.mixins(r.Line),this.define((({Number:e,Nullable:t})=>({gradient:[t(e),null],y_intercept:[t(e),null]}))),this.override({line_color:\"black\"})}}i.Slope=a,a.__name__=\"Slope\",a.init_Slope()},\n function _(e,i,t,n,o){n();const s=e(1),a=e(40),l=s.__importStar(e(48)),h=e(20);class c extends a.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.plot_view.request_paint(this)))}_render(){const{location:e}=this.model;if(null==e)return;const{frame:i}=this.plot_view,t=this.coordinates.x_scale,n=this.coordinates.y_scale,o=(i,t)=>\"data\"==this.model.location_units?i.compute(e):this.model.for_hover?e:t.compute(e);let s,a,l,h;\"width\"==this.model.dimension?(l=o(n,i.bbox.yview),a=i.bbox.left,h=i.bbox.width,s=this.model.line_width):(l=i.bbox.top,a=o(t,i.bbox.xview),h=this.model.line_width,s=i.bbox.height);const{ctx:c}=this.layer;c.save(),c.beginPath(),this.visuals.line.set_value(c),c.moveTo(a,l),\"width\"==this.model.dimension?c.lineTo(a+h,l):c.lineTo(a,l+s),c.stroke(),c.restore()}}t.SpanView=c,c.__name__=\"SpanView\";class d extends a.Annotation{constructor(e){super(e)}static init_Span(){this.prototype.default_view=c,this.mixins(l.Line),this.define((({Number:e,Nullable:i})=>({render_mode:[h.RenderMode,\"canvas\"],location:[i(e),null],location_units:[h.SpatialUnits,\"data\"],dimension:[h.Dimension,\"width\"]}))),this.internal((({Boolean:e})=>({for_hover:[e,!1]}))),this.override({line_color:\"black\"})}}t.Span=d,d.__name__=\"Span\",d.init_Span()},\n function _(i,e,t,o,l){o();const s=i(40),a=i(235),n=i(122),r=i(43),_=i(140),h=i(99);class b extends s.AnnotationView{constructor(){super(...arguments),this._invalidate_toolbar=!0,this._previous_bbox=new h.BBox}update_layout(){this.layout=new _.SideLayout(this.panel,(()=>this.get_size()),!0)}initialize(){super.initialize(),this.el=r.div(),this.plot_view.canvas_view.add_event(this.el)}async lazy_initialize(){await super.lazy_initialize(),this._toolbar_view=await n.build_view(this.model.toolbar,{parent:this}),this.plot_view.visibility_callbacks.push((i=>this._toolbar_view.set_visibility(i)))}remove(){this._toolbar_view.remove(),r.remove(this.el),super.remove()}render(){this.model.visible||r.undisplay(this.el),super.render()}_render(){const{bbox:i}=this.layout;this._previous_bbox.equals(i)||(r.position(this.el,i),this._previous_bbox=i),this._invalidate_toolbar&&(this.el.style.position=\"absolute\",this.el.style.overflow=\"hidden\",this._toolbar_view.render(),r.empty(this.el),this.el.appendChild(this._toolbar_view.el),this._invalidate_toolbar=!1),r.display(this.el)}_get_size(){const{tools:i,logo:e}=this.model.toolbar;return{width:30*i.length+(null!=e?25:0),height:30}}}t.ToolbarPanelView=b,b.__name__=\"ToolbarPanelView\";class d extends s.Annotation{constructor(i){super(i)}static init_ToolbarPanel(){this.prototype.default_view=b,this.define((({Ref:i})=>({toolbar:[i(a.Toolbar)]})))}}t.ToolbarPanel=d,d.__name__=\"ToolbarPanel\",d.init_ToolbarPanel()},\n function _(t,s,e,i,o){i();const c=t(8),n=t(9),a=t(13),l=t(236),r=t(237),_=t(247),p=t(248);e.Drag=l.Tool,e.Inspection=l.Tool,e.Scroll=l.Tool,e.Tap=l.Tool;const u=t=>{switch(t){case\"tap\":return\"active_tap\";case\"pan\":return\"active_drag\";case\"pinch\":case\"scroll\":return\"active_scroll\";case\"multi\":return\"active_multi\"}return null},h=t=>\"tap\"==t||\"pan\"==t;class v extends p.ToolbarBase{constructor(t){super(t)}static init_Toolbar(){this.prototype.default_view=p.ToolbarBaseView,this.define((({Or:t,Ref:s,Auto:i,Null:o,Nullable:c})=>({active_drag:[t(s(e.Drag),i,o),\"auto\"],active_inspect:[t(s(e.Inspection),i,o),\"auto\"],active_scroll:[t(s(e.Scroll),i,o),\"auto\"],active_tap:[t(s(e.Tap),i,o),\"auto\"],active_multi:[c(s(r.GestureTool)),null]})))}connect_signals(){super.connect_signals();const{tools:t,active_drag:s,active_inspect:e,active_scroll:i,active_tap:o,active_multi:c}=this.properties;this.on_change([t,s,e,i,o,c],(()=>this._init_tools()))}_init_tools(){if(super._init_tools(),\"auto\"==this.active_inspect);else if(this.active_inspect instanceof _.InspectTool){let t=!1;for(const s of this.inspectors)s!=this.active_inspect?s.active=!1:t=!0;t||(this.active_inspect=null)}else if(c.isArray(this.active_inspect)){const t=n.intersection(this.active_inspect,this.inspectors);t.length!=this.active_inspect.length&&(this.active_inspect=t);for(const t of this.inspectors)n.includes(this.active_inspect,t)||(t.active=!1)}else if(null==this.active_inspect)for(const t of this.inspectors)t.active=!1;const t=t=>{t.active?this._active_change(t):t.active=!0};for(const t of a.values(this.gestures)){t.tools=n.sort_by(t.tools,(t=>t.default_order));for(const s of t.tools)this.connect(s.properties.active.change,(()=>this._active_change(s)))}for(const[s,e]of a.entries(this.gestures)){const i=u(s);if(i){const o=this[i];\"auto\"==o?0!=e.tools.length&&h(s)&&t(e.tools[0]):null!=o&&(n.includes(this.tools,o)?t(o):this[i]=null)}}}}e.Toolbar=v,v.__name__=\"Toolbar\",v.init_Toolbar()},\n function _(t,e,n,i,o){i();const s=t(42),a=t(9),r=t(53);class l extends s.View{get plot_view(){return this.parent}get plot_model(){return this.parent.model}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>{this.model.active?this.activate():this.deactivate()}))}activate(){}deactivate(){}}n.ToolView=l,l.__name__=\"ToolView\";class _ extends r.Model{constructor(t){super(t)}static init_Tool(){this.prototype._known_aliases=new Map,this.define((({String:t,Nullable:e})=>({description:[e(t),null]}))),this.internal((({Boolean:t})=>({active:[t,!1]})))}get synthetic_renderers(){return[]}_get_dim_limits([t,e],[n,i],o,s){const r=o.bbox.h_range;let l;\"width\"==s||\"both\"==s?(l=[a.min([t,n]),a.max([t,n])],l=[a.max([l[0],r.start]),a.min([l[1],r.end])]):l=[r.start,r.end];const _=o.bbox.v_range;let c;return\"height\"==s||\"both\"==s?(c=[a.min([e,i]),a.max([e,i])],c=[a.max([c[0],_.start]),a.min([c[1],_.end])]):c=[_.start,_.end],[l,c]}static register_alias(t,e){this.prototype._known_aliases.set(t,e)}static from_string(t){const e=this.prototype._known_aliases.get(t);if(null!=e)return e();{const e=[...this.prototype._known_aliases.keys()];throw new Error(`unexpected tool name '${t}', possible tools are ${e.join(\", \")}`)}}}n.Tool=_,_.__name__=\"Tool\",_.init_Tool()},\n function _(e,o,t,s,n){s();const u=e(238),_=e(246);class l extends u.ButtonToolView{}t.GestureToolView=l,l.__name__=\"GestureToolView\";class i extends u.ButtonTool{constructor(e){super(e),this.button_view=_.OnOffButtonView}}t.GestureTool=i,i.__name__=\"GestureTool\"},\n function _(t,e,o,i,s){i();const n=t(1),l=n.__importDefault(t(239)),r=t(240),a=t(236),u=t(43),h=t(34),_=t(8),c=t(9),d=n.__importStar(t(241)),m=d,p=n.__importDefault(t(242)),g=n.__importDefault(t(243)),v=t(244);class f extends r.DOMView{initialize(){super.initialize();const t=this.model.menu;if(null!=t){const e=this.parent.model.toolbar_location,o=\"left\"==e||\"above\"==e,i=this.parent.model.horizontal?\"vertical\":\"horizontal\";this._menu=new v.ContextMenu(o?c.reversed(t):t,{orientation:i,prevent_hide:t=>t.target==this.el})}this._hammer=new l.default(this.el,{touchAction:\"auto\",inputClass:l.default.TouchMouseInput}),this.connect(this.model.change,(()=>this.render())),this._hammer.on(\"tap\",(t=>{var e;(null===(e=this._menu)||void 0===e?void 0:e.is_open)?this._menu.hide():t.target==this.el&&this._clicked()})),this._hammer.on(\"press\",(()=>this._pressed()))}remove(){var t;this._hammer.destroy(),null===(t=this._menu)||void 0===t||t.remove(),super.remove()}styles(){return[...super.styles(),d.default,p.default,g.default]}css_classes(){return super.css_classes().concat(m.toolbar_button)}render(){u.empty(this.el);const t=this.model.computed_icon;_.isString(t)&&(h.startsWith(t,\"data:image\")?this.el.style.backgroundImage=\"url('\"+t+\"')\":this.el.classList.add(t)),this.el.title=this.model.tooltip,null!=this._menu&&this.root.el.appendChild(this._menu.el)}_pressed(){var t;const{left:e,top:o,right:i,bottom:s}=this.el.getBoundingClientRect(),n=(()=>{switch(this.parent.model.toolbar_location){case\"right\":return{right:e,top:o};case\"left\":return{left:i,top:o};case\"above\":return{left:e,top:s};case\"below\":return{left:e,bottom:o}}})();null===(t=this._menu)||void 0===t||t.toggle(n)}}o.ButtonToolButtonView=f,f.__name__=\"ButtonToolButtonView\";class b extends a.ToolView{}o.ButtonToolView=b,b.__name__=\"ButtonToolView\";class B extends a.Tool{constructor(t){super(t)}static init_ButtonTool(){this.internal((({Boolean:t})=>({disabled:[t,!1]})))}_get_dim_tooltip(t){const{description:e,tool_name:o}=this;return null!=e?e:\"both\"==t?o:`${o} (${\"width\"==t?\"x\":\"y\"}-axis)`}get tooltip(){var t;return null!==(t=this.description)&&void 0!==t?t:this.tool_name}get computed_icon(){return this.icon}get menu(){return null}}o.ButtonTool=B,B.__name__=\"ButtonTool\",B.init_ButtonTool()},\n function _(t,e,i,n,r){\n /*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n !function(t,i,n,r){\"use strict\";var s,o=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],a=i.createElement(\"div\"),h=Math.round,u=Math.abs,c=Date.now;function l(t,e,i){return setTimeout(T(t,i),e)}function p(t,e,i){return!!Array.isArray(t)&&(f(t,i[e],i),!0)}function f(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==r)for(n=0;n\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",s=t.console&&(t.console.warn||t.console.log);return s&&s.call(t.console,r,n),e.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(t===r||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;i-1}function S(t){return t.trim().split(/\\s+/g)}function b(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;ni[e]})):n.sort()),n}function x(t,e){for(var i,n,s=e[0].toUpperCase()+e.slice(1),a=0;a1&&!i.firstMultiple?i.firstMultiple=H(e):1===s&&(i.firstMultiple=!1);var o=i.firstInput,a=i.firstMultiple,h=a?a.center:o.center,l=e.center=L(n);e.timeStamp=c(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=G(h,l),e.distance=j(h,l),function(t,e){var i=e.center,n=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};1!==e.eventType&&4!==s.eventType||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},n=t.offsetDelta={x:i.x,y:i.y});e.deltaX=r.x+(i.x-n.x),e.deltaY=r.y+(i.y-n.y)}(i,e),e.offsetDirection=V(e.deltaX,e.deltaY);var p=U(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=p.x,e.overallVelocityY=p.y,e.overallVelocity=u(p.x)>u(p.y)?p.x:p.y,e.scale=a?(f=a.pointers,v=n,j(v[0],v[1],W)/j(f[0],f[1],W)):1,e.rotation=a?function(t,e){return G(e[1],e[0],W)+G(t[1],t[0],W)}(a.pointers,n):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,s,o,a=t.lastInterval||e,h=e.timeStamp-a.timeStamp;if(8!=e.eventType&&(h>25||a.velocity===r)){var c=e.deltaX-a.deltaX,l=e.deltaY-a.deltaY,p=U(h,c,l);n=p.x,s=p.y,i=u(p.x)>u(p.y)?p.x:p.y,o=V(c,l),t.lastInterval=e}else i=a.velocity,n=a.velocityX,s=a.velocityY,o=a.direction;e.velocity=i,e.velocityX=n,e.velocityY=s,e.direction=o}(i,e);var f,v;var d=t.element;_(e.srcEvent.target,d)&&(d=e.srcEvent.target);e.target=d}(t,i),t.emit(\"hammer.input\",i),t.recognize(i),t.session.prevInput=i}function H(t){for(var e=[],i=0;i=u(e)?t<0?2:4:e<0?8:16}function j(t,e,i){i||(i=F);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function G(t,e,i){i||(i=F);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}q.prototype={handler:function(){},init:function(){this.evEl&&I(this.element,this.evEl,this.domHandler),this.evTarget&&I(this.target,this.evTarget,this.domHandler),this.evWin&&I(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&A(this.element,this.evEl,this.domHandler),this.evTarget&&A(this.target,this.evTarget,this.domHandler),this.evWin&&A(O(this.element),this.evWin,this.domHandler)}};var Z={mousedown:1,mousemove:2,mouseup:4},B=\"mousedown\",$=\"mousemove mouseup\";function J(){this.evEl=B,this.evWin=$,this.pressed=!1,q.apply(this,arguments)}g(J,q,{handler:function(t){var e=Z[t.type];1&e&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=4),this.pressed&&(4&e&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:X,srcEvent:t}))}});var K={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},Q={2:N,3:\"pen\",4:X,5:\"kinect\"},tt=\"pointerdown\",et=\"pointermove pointerup pointercancel\";function it(){this.evEl=tt,this.evWin=et,q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(tt=\"MSPointerDown\",et=\"MSPointerMove MSPointerUp MSPointerCancel\"),g(it,q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\"ms\",\"\"),r=K[n],s=Q[t.pointerType]||t.pointerType,o=s==N,a=b(e,t.pointerId,\"pointerId\");1&r&&(0===t.button||o)?a<0&&(e.push(t),a=e.length-1):12&r&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var nt={touchstart:1,touchmove:2,touchend:4,touchcancel:8},rt=\"touchstart\",st=\"touchstart touchmove touchend touchcancel\";function ot(){this.evTarget=rt,this.evWin=st,this.started=!1,q.apply(this,arguments)}function at(t,e){var i=P(t.touches),n=P(t.changedTouches);return 12&e&&(i=D(i.concat(n),\"identifier\",!0)),[i,n]}g(ot,q,{handler:function(t){var e=nt[t.type];if(1===e&&(this.started=!0),this.started){var i=at.call(this,t,e);12&e&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:N,srcEvent:t})}}});var ht={touchstart:1,touchmove:2,touchend:4,touchcancel:8},ut=\"touchstart touchmove touchend touchcancel\";function ct(){this.evTarget=ut,this.targetIds={},q.apply(this,arguments)}function lt(t,e){var i=P(t.touches),n=this.targetIds;if(3&e&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,s,o=P(t.changedTouches),a=[],h=this.target;if(s=i.filter((function(t){return _(t.target,h)})),1===e)for(r=0;r-1&&n.splice(t,1)}),2500)}}function dt(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,i=this.state;function n(i){e.manager.emit(i,t)}i<8&&n(e.options.event+Dt(i)),n(e.options.event),t.additionalEvent&&n(t.additionalEvent),i>=8&&n(e.options.event+Dt(i))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=bt},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return Ot.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=xt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),g(Mt,Ot,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[It]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),g(zt,Pt,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[yt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distancee.time;if(this._input=t,!n||!i||12&t.eventType&&!r)this.reset();else if(1&t.eventType)this.reset(),this._timer=l((function(){this.state=8,this.tryEmit()}),e.time,this);else if(4&t.eventType)return 8;return bt},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&4&t.eventType?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=c(),this.manager.emit(this.options.event,this._input)))}}),g(Nt,Ot,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[It]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),g(Xt,Ot,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return Rt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return 30&i?e=t.overallVelocity:6&i?e=t.overallVelocityX:i&Y&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&u(e)>this.options.velocity&&4&t.eventType},emit:function(t){var e=xt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),g(Yt,Pt,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Et]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance .bk-divider{cursor:default;overflow:hidden;background-color:#e5e5e5;}.bk-root .bk-context-menu.bk-horizontal > .bk-divider{width:1px;margin:5px 0;}.bk-root .bk-context-menu.bk-vertical > .bk-divider{height:1px;margin:0 5px;}.bk-root .bk-context-menu > :not(.bk-divider){border:1px solid transparent;}.bk-root .bk-context-menu > :not(.bk-divider).bk-active{border-color:#26aae1;}.bk-root .bk-context-menu > :not(.bk-divider):hover{background-color:#f9f9f9;}.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):first-child{border-top-left-radius:4px;border-bottom-left-radius:4px;}.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;}.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):first-child{border-top-left-radius:4px;border-top-right-radius:4px;}.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;}.bk-root .bk-menu{position:absolute;left:0;width:100%;z-index:100;cursor:pointer;font-size:12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 6px 12px rgba(0, 0, 0, 0.175);}.bk-root .bk-menu.bk-above{bottom:100%;}.bk-root .bk-menu.bk-below{top:100%;}.bk-root .bk-menu > .bk-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.bk-root .bk-menu > :not(.bk-divider){padding:6px 12px;}.bk-root .bk-menu > :not(.bk-divider):hover,.bk-root .bk-menu > :not(.bk-divider).bk-active{background-color:#e6e6e6;}.bk-root .bk-caret{display:inline-block;vertical-align:middle;width:0;height:0;margin:0 5px;}.bk-root .bk-caret.bk-down{border-top:4px solid;}.bk-root .bk-caret.bk-up{border-bottom:4px solid;}.bk-root .bk-caret.bk-down,.bk-root .bk-caret.bk-up{border-right:4px solid transparent;border-left:4px solid transparent;}.bk-root .bk-caret.bk-left{border-right:4px solid;}.bk-root .bk-caret.bk-right{border-left:4px solid;}.bk-root .bk-caret.bk-left,.bk-root .bk-caret.bk-right{border-top:4px solid transparent;border-bottom:4px solid transparent;}\"},\n function _(t,e,i,n,s){n();const o=t(1),l=t(43),h=t(245),d=o.__importStar(t(243));class r{constructor(t,e={}){this.items=t,this.options=e,this.el=l.div(),this._open=!1,this._item_click=t=>{var e;null===(e=this.items[t])||void 0===e||e.handler(),this.hide()},this._on_mousedown=t=>{var e,i;const{target:n}=t;n instanceof Node&&this.el.contains(n)||(null===(i=(e=this.options).prevent_hide)||void 0===i?void 0:i.call(e,t))||this.hide()},this._on_keydown=t=>{t.keyCode==l.Keys.Esc&&this.hide()},this._on_blur=()=>{this.hide()},l.undisplay(this.el)}get is_open(){return this._open}get can_open(){return 0!=this.items.length}remove(){l.remove(this.el),this._unlisten()}_listen(){document.addEventListener(\"mousedown\",this._on_mousedown),document.addEventListener(\"keydown\",this._on_keydown),window.addEventListener(\"blur\",this._on_blur)}_unlisten(){document.removeEventListener(\"mousedown\",this._on_mousedown),document.removeEventListener(\"keydown\",this._on_keydown),window.removeEventListener(\"blur\",this._on_blur)}_position(t){const e=this.el.parentElement;if(null!=e){const i=e.getBoundingClientRect();this.el.style.left=null!=t.left?t.left-i.left+\"px\":\"\",this.el.style.top=null!=t.top?t.top-i.top+\"px\":\"\",this.el.style.right=null!=t.right?i.right-t.right+\"px\":\"\",this.el.style.bottom=null!=t.bottom?i.bottom-t.bottom+\"px\":\"\"}}render(){var t,e;l.empty(this.el,!0);const i=null!==(t=this.options.orientation)&&void 0!==t?t:\"vertical\";l.classes(this.el).add(\"bk-context-menu\",`bk-${i}`);for(const[t,i]of h.enumerate(this.items)){let n;if(null==t)n=l.div({class:d.divider});else{if(null!=t.if&&!t.if())continue;{const i=null!=t.icon?l.div({class:[\"bk-menu-icon\",t.icon]}):null;n=l.div({class:(null===(e=t.active)||void 0===e?void 0:e.call(t))?\"bk-active\":null,title:t.tooltip},i,t.label)}}n.addEventListener(\"click\",(()=>this._item_click(i))),this.el.appendChild(n)}}show(t){if(0!=this.items.length&&!this._open){if(this.render(),0==this.el.children.length)return;this._position(null!=t?t:{left:0,top:0}),l.display(this.el),this._listen(),this._open=!0}}hide(){this._open&&(this._open=!1,this._unlisten(),l.undisplay(this.el))}toggle(t){this._open?this.hide():this.show(t)}}i.ContextMenu=r,r.__name__=\"ContextMenu\"},\n function _(n,e,o,t,r){t();const f=n(9);function*i(n,e){const o=n.length;if(e>o)return;const t=f.range(e);for(yield t.map((e=>n[e]));;){let r;for(const n of f.reversed(f.range(e)))if(t[n]!=n+o-e){r=n;break}if(null==r)return;t[r]+=1;for(const n of f.range(r+1,e))t[n]=t[n-1]+1;yield t.map((e=>n[e]))}}o.enumerate=function*(n){let e=0;for(const o of n)yield[o,e++]},o.combinations=i,o.subsets=function*(n){for(const e of f.range(n.length+1))yield*i(n,e)}},\n function _(t,e,i,n,o){n();const s=t(1),c=t(238),l=s.__importStar(t(241)),a=t(43);class _ extends c.ButtonToolButtonView{render(){super.render(),a.classes(this.el).toggle(l.active,this.model.active)}_clicked(){const{active:t}=this.model;this.model.active=!t}}i.OnOffButtonView=_,_.__name__=\"OnOffButtonView\"},\n function _(t,e,o,n,s){n();const i=t(238),c=t(246);class l extends i.ButtonToolView{}o.InspectToolView=l,l.__name__=\"InspectToolView\";class _ extends i.ButtonTool{constructor(t){super(t),this.event_type=\"move\"}static init_InspectTool(){this.prototype.button_view=c.OnOffButtonView,this.define((({Boolean:t})=>({toggleable:[t,!0]}))),this.override({active:!0})}}o.InspectTool=_,_.__name__=\"InspectTool\",_.init_InspectTool()},\n function _(t,o,e,i,s){i();const l=t(1),n=t(19),a=t(43),r=t(122),c=t(240),_=t(20),u=t(9),h=t(13),v=t(8),p=t(249),d=t(99),b=t(53),g=t(236),f=t(237),m=t(251),w=t(252),y=t(247),T=l.__importStar(t(241)),z=T,B=l.__importStar(t(253)),x=B;class L extends b.Model{constructor(t){super(t)}static init_ToolbarViewModel(){this.define((({Boolean:t,Nullable:o})=>({_visible:[o(t),null],autohide:[t,!1]})))}get visible(){return!this.autohide||null!=this._visible&&this._visible}}e.ToolbarViewModel=L,L.__name__=\"ToolbarViewModel\",L.init_ToolbarViewModel();class M extends c.DOMView{constructor(){super(...arguments),this.layout={bbox:new d.BBox}}initialize(){super.initialize(),this._tool_button_views=new Map,this._toolbar_view_model=new L({autohide:this.model.autohide})}async lazy_initialize(){await super.lazy_initialize(),await this._build_tool_button_views()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tools.change,(async()=>{await this._build_tool_button_views(),this.render()})),this.connect(this.model.properties.autohide.change,(()=>{this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change()})),this.connect(this._toolbar_view_model.properties._visible.change,(()=>this._on_visible_change()))}styles(){return[...super.styles(),T.default,B.default]}remove(){r.remove_views(this._tool_button_views),super.remove()}async _build_tool_button_views(){const t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;await r.build_views(this._tool_button_views,t,{parent:this},(t=>t.button_view))}set_visibility(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)}_on_visible_change(){const t=this._toolbar_view_model.visible,o=z.toolbar_hidden;this.el.classList.contains(o)&&t?this.el.classList.remove(o):t||this.el.classList.add(o)}render(){if(a.empty(this.el),this.el.classList.add(z.toolbar),this.el.classList.add(z[this.model.toolbar_location]),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change(),null!=this.model.logo){const t=\"grey\"===this.model.logo?x.grey:null,o=a.a({href:\"https://bokeh.org/\",target:\"_blank\",class:[x.logo,x.logo_small,t]});this.el.appendChild(o)}for(const[,t]of this._tool_button_views)t.render();const t=[],o=t=>this._tool_button_views.get(t).el,{gestures:e}=this.model;for(const i of h.values(e))t.push(i.tools.map(o));t.push(this.model.actions.map(o)),t.push(this.model.inspectors.filter((t=>t.toggleable)).map(o));for(const o of t)if(0!==o.length){const t=a.div({class:z.button_bar},o);this.el.appendChild(t)}}update_layout(){}update_position(){}after_layout(){this._has_finished=!0}export(t,o=!0){const e=\"png\"==t?\"canvas\":\"svg\",i=new p.CanvasLayer(e,o);return i.resize(0,0),i}}function V(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}e.ToolbarBaseView=M,M.__name__=\"ToolbarBaseView\";class S extends b.Model{constructor(t){super(t)}static init_ToolbarBase(){this.prototype.default_view=M,this.define((({Boolean:t,Array:o,Ref:e,Nullable:i})=>({tools:[o(e(g.Tool)),[]],logo:[i(_.Logo),\"normal\"],autohide:[t,!1]}))),this.internal((({Array:t,Struct:o,Ref:e,Nullable:i})=>{const s=o({tools:t(e(f.GestureTool)),active:i(e(g.Tool))});return{gestures:[o({pan:s,scroll:s,pinch:s,tap:s,doubletap:s,press:s,pressup:s,rotate:s,move:s,multi:s}),V],actions:[t(e(m.ActionTool)),[]],inspectors:[t(e(y.InspectTool)),[]],help:[t(e(w.HelpTool)),[]],toolbar_location:[_.Location,\"right\"]}}))}initialize(){super.initialize(),this._init_tools()}_init_tools(){const t=function(t,o){if(t.length!=o.length)return!0;const e=new Set(o.map((t=>t.id)));return u.some(t,(t=>!e.has(t.id)))},o=this.tools.filter((t=>t instanceof y.InspectTool));t(this.inspectors,o)&&(this.inspectors=o);const e=this.tools.filter((t=>t instanceof w.HelpTool));t(this.help,e)&&(this.help=e);const i=this.tools.filter((t=>t instanceof m.ActionTool));t(this.actions,i)&&(this.actions=i);const s=(t,o)=>{t in this.gestures||n.logger.warn(`Toolbar: unknown event type '${t}' for tool: ${o}`)},l={pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}};for(const t of this.tools)if(t instanceof f.GestureTool&&t.event_type)if(v.isString(t.event_type))l[t.event_type].tools.push(t),s(t.event_type,t);else{l.multi.tools.push(t);for(const o of t.event_type)s(o,t)}for(const o of Object.keys(l)){const e=this.gestures[o];t(e.tools,l[o].tools)&&(e.tools=l[o].tools),e.active&&u.every(e.tools,(t=>t.id!=e.active.id))&&(e.active=null)}}get horizontal(){return\"above\"===this.toolbar_location||\"below\"===this.toolbar_location}get vertical(){return\"left\"===this.toolbar_location||\"right\"===this.toolbar_location}_active_change(t){const{event_type:o}=t;if(null==o)return;const e=v.isString(o)?[o]:o;for(const o of e)if(t.active){const e=this.gestures[o].active;null!=e&&t!=e&&(n.logger.debug(`Toolbar: deactivating tool: ${e} for event type '${o}'`),e.active=!1),this.gestures[o].active=t,n.logger.debug(`Toolbar: activating tool: ${t} for event type '${o}'`)}else this.gestures[o].active=null}}e.ToolbarBase=S,S.__name__=\"ToolbarBase\",S.init_ToolbarBase()},\n function _(e,t,i,n,s){n();const o=e(250),a=e(99),r=e(43);function h(e){!function(e){void 0===e.lineDash&&Object.defineProperty(e,\"lineDash\",{get:()=>e.getLineDash(),set:t=>e.setLineDash(t)})}(e),function(e){e.setImageSmoothingEnabled=t=>{e.imageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.oImageSmoothingEnabled=t,e.webkitImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t},e.getImageSmoothingEnabled=()=>{const t=e.imageSmoothingEnabled;return null==t||t}}(e),function(e){e.ellipse||(e.ellipse=function(t,i,n,s,o,a,r,h=!1){const l=.551784;e.translate(t,i),e.rotate(o);let c=n,g=s;h&&(c=-n,g=-s),e.moveTo(-c,0),e.bezierCurveTo(-c,g*l,-c*l,g,0,g),e.bezierCurveTo(c*l,g,c,g*l,c,0),e.bezierCurveTo(c,-g*l,c*l,-g,0,-g),e.bezierCurveTo(-c*l,-g,-c,-g*l,-c,0),e.rotate(-o),e.translate(-t,-i)})}(e)}const l={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class c{constructor(e,t){switch(this.backend=e,this.hidpi=t,this.pixel_ratio=1,this.bbox=new a.BBox,e){case\"webgl\":case\"canvas\":{this._el=this._canvas=r.canvas({style:l});const e=this.canvas.getContext(\"2d\");if(null==e)throw new Error(\"unable to obtain 2D rendering context\");this._ctx=e,t&&(this.pixel_ratio=devicePixelRatio);break}case\"svg\":{const e=new o.SVGRenderingContext2D;this._ctx=e,this._canvas=e.get_svg(),this._el=r.div({style:l},this._canvas);break}}h(this._ctx)}get canvas(){return this._canvas}get ctx(){return this._ctx}get el(){return this._el}resize(e,t){this.bbox=new a.BBox({left:0,top:0,width:e,height:t});const i=this._ctx instanceof o.SVGRenderingContext2D?this._ctx:this.canvas;i.width=e*this.pixel_ratio,i.height=t*this.pixel_ratio}prepare(){const{ctx:e,hidpi:t,pixel_ratio:i}=this;e.save(),t&&(e.scale(i,i),e.translate(.5,.5)),this.clear()}clear(){const{x:e,y:t,width:i,height:n}=this.bbox;this.ctx.clearRect(e,t,i,n)}finish(){this.ctx.restore()}to_blob(){const{_canvas:e}=this;if(e instanceof HTMLCanvasElement)return null!=e.msToBlob?Promise.resolve(e.msToBlob()):new Promise(((t,i)=>{e.toBlob((e=>null!=e?t(e):i()),\"image/png\")}));{const e=this._ctx.get_serialized_svg(!0),t=new Blob([e],{type:\"image/svg+xml\"});return Promise.resolve(t)}}}i.CanvasLayer=c,c.__name__=\"CanvasLayer\"},\n function _(t,e,i,s,n){s();const r=t(168),a=t(8),o=t(43);function l(t){if(!t)throw new Error(\"cannot create a random attribute name for an undefined object\");const e=\"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\";let i=\"\";do{i=\"\";for(let t=0;t<12;t++)i+=e[Math.floor(Math.random()*e.length)]}while(t[i]);return i}function h(t){var e;const i={left:\"start\",right:\"end\",center:\"middle\",start:\"start\",end:\"end\"};return null!==(e=i[t])&&void 0!==e?e:i.start}function c(t){var e;const i={alphabetic:\"alphabetic\",hanging:\"hanging\",top:\"text-before-edge\",bottom:\"text-after-edge\",middle:\"central\"};return null!==(e=i[t])&&void 0!==e?e:i.alphabetic}const _=function(t,e){const i=new Map,s=t.split(\",\");e=null!=e?e:10;for(let t=0;t=0?Math.acos(e):-Math.acos(e)}const w=v(f),b=v(g);this.lineTo(d+f[0]*n,m+f[1]*n),this.arc(d,m,n,w,b)}stroke(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"fill\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"stroke\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}fill(t){if(\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"stroke\"),\"none\"!=this.__currentElement.getAttribute(\"fill\")){const t=this.__currentElement.cloneNode(!0);this.__root.appendChild(t),this.__currentElement=t}this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"fill\"),null!=t&&this.__currentElement.setAttribute(\"fill-rule\",t),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}rect(t,e,i,s){isFinite(t+e+i+s)&&(\"path\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+s),this.lineTo(t,e+s),this.lineTo(t,e))}fillRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.fill())}strokeRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.stroke())}__clearCanvas(){o.empty(this.__defs),o.empty(this.__root),this.__root.appendChild(this.__defs),this.__currentElement=this.__root}clearRect(t,e,i,s){if(!isFinite(t+e+i+s))return;if(0===t&&0===e&&i===this.width&&s===this.height)return void this.__clearCanvas();const n=this.__createElement(\"rect\",{x:t,y:e,width:i,height:s,fill:\"#FFFFFF\"},!0);this._apply_transform(n),this.__root.appendChild(n)}createLinearGradient(t,e,i,s){if(!isFinite(t+e+i+s))throw new Error(\"The provided double value is non-finite\");const[n,r]=this._transform.apply(t,e),[a,o]=this._transform.apply(i,s),h=this.__createElement(\"linearGradient\",{id:l(this.__ids),x1:`${n}px`,x2:`${a}px`,y1:`${r}px`,y2:`${o}px`,gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(h),new p(h,this)}createRadialGradient(t,e,i,s,n,r){if(!isFinite(t+e+i+s+n+r))throw new Error(\"The provided double value is non-finite\");const[a,o]=this._transform.apply(t,e),[h,c]=this._transform.apply(s,n),_=this.__createElement(\"radialGradient\",{id:l(this.__ids),cx:`${h}px`,cy:`${c}px`,r:`${r}px`,fx:`${a}px`,fy:`${o}px`,gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(_),new p(_,this)}__parseFont(){var t,e,i,s,n;const r=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\'\\\"\\sa-z0-9]+?)\\s*$/i.exec(this.font),a={style:null!==(t=r[1])&&void 0!==t?t:\"normal\",size:null!==(e=r[4])&&void 0!==e?e:\"10px\",family:null!==(i=r[6])&&void 0!==i?i:\"sans-serif\",weight:null!==(s=r[3])&&void 0!==s?s:\"normal\",decoration:null!==(n=r[2])&&void 0!==n?n:\"normal\"};return\"underline\"===this.__fontUnderline&&(a.decoration=\"underline\"),null!=this.__fontHref&&(a.href=this.__fontHref),a}__wrapTextLink(t,e){if(t.href){const i=this.__createElement(\"a\");return i.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.href),i.appendChild(e),i}return e}__applyText(t,e,i,s){const n=this.__parseFont(),r=this.__createElement(\"text\",{\"font-family\":n.family,\"font-size\":n.size,\"font-style\":n.style,\"font-weight\":n.weight,\"text-decoration\":n.decoration,x:e,y:i,\"text-anchor\":h(this.textAlign),\"dominant-baseline\":c(this.textBaseline)},!0);r.appendChild(this.__document.createTextNode(t)),this._apply_transform(r),this.__currentElement=r,this.__applyStyleToCurrentElement(s),this.__root.appendChild(this.__wrapTextLink(n,r))}fillText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"fill\")}strokeText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"stroke\")}measureText(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)}arc(t,e,i,s,n,r=!1){if(!isFinite(t+e+i+s+n))return;if(s===n)return;(s%=2*Math.PI)===(n%=2*Math.PI)&&(n=(n+2*Math.PI-.001*(r?-1:1))%(2*Math.PI));const a=t+i*Math.cos(n),o=e+i*Math.sin(n),l=t+i*Math.cos(s),h=e+i*Math.sin(s),c=r?0:1;let _=0,u=n-s;u<0&&(u+=2*Math.PI),_=r?u>Math.PI?0:1:u>Math.PI?1:0,this.lineTo(l,h);const p=i,d=i,[m,f]=this._transform.apply(a,o);this.__addPathCommand(m,f,`A ${p} ${d} 0 ${_} ${c} ${m} ${f}`)}clip(){const t=this.__createElement(\"clipPath\"),e=l(this.__ids);this.__applyCurrentDefaultPath(),t.setAttribute(\"id\",e),t.appendChild(this.__currentElement),this.__defs.appendChild(t),this._clip_path=`url(#${e})`}drawImage(t,...e){let i,s,n,r,a,o,l,h;if(2==e.length){if([i,s]=e,!isFinite(i+s))return;a=0,o=0,l=t.width,h=t.height,n=l,r=h}else if(4==e.length){if([i,s,n,r]=e,!isFinite(i+s+n+r))return;a=0,o=0,l=t.width,h=t.height}else{if(8!==e.length)throw new Error(`Inavlid number of arguments passed to drawImage: ${arguments.length}`);if([a,o,l,h,i,s,n,r]=e,!isFinite(a+o+l+h+i+s+n+r))return}const c=this.__root,_=this._transform.clone().translate(i,s);if(t instanceof m||t instanceof SVGSVGElement){const e=(t instanceof SVGSVGElement?t:t.get_svg()).cloneNode(!0);let i;_.is_identity?i=c:(i=this.__createElement(\"g\"),this._apply_transform(i,_),c.appendChild(i));for(const t of[...e.childNodes])if(t instanceof SVGDefsElement){for(const e of[...t.childNodes])if(e instanceof Element){const t=e.getAttribute(\"id\");this.__ids[t]=t,this.__defs.appendChild(e)}}else i.appendChild(t)}else if(t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__createElement(\"image\");if(e.setAttribute(\"width\",`${n}`),e.setAttribute(\"height\",`${r}`),e.setAttribute(\"preserveAspectRatio\",\"none\"),a||o||l!==t.width||h!==t.height){const e=this.__document.createElement(\"canvas\");e.width=n,e.height=r;e.getContext(\"2d\").drawImage(t,a,o,l,h,0,0,n,r),t=e}this._apply_transform(e,_);const i=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",i),c.appendChild(e)}else if(t instanceof HTMLCanvasElement){const e=this.__createElement(\"image\");e.setAttribute(\"width\",`${n}`),e.setAttribute(\"height\",`${r}`),e.setAttribute(\"preserveAspectRatio\",\"none\");const i=this.__document.createElement(\"canvas\");i.width=n,i.height=r;const s=i.getContext(\"2d\");s.imageSmoothingEnabled=!1,s.drawImage(t,a,o,l,h,0,0,n,r),t=i,this._apply_transform(e,_),e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.toDataURL()),c.appendChild(e)}}createPattern(t,e){const i=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"pattern\"),s=l(this.__ids);if(i.setAttribute(\"id\",s),i.setAttribute(\"width\",`${this._to_number(t.width)}`),i.setAttribute(\"height\",`${this._to_number(t.height)}`),i.setAttribute(\"patternUnits\",\"userSpaceOnUse\"),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\"),s=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",s),i.appendChild(e),this.__defs.appendChild(i)}else if(t instanceof m){for(const e of[...t.__root.childNodes])e instanceof SVGDefsElement||i.appendChild(e);this.__defs.appendChild(i)}else{if(!(t instanceof SVGSVGElement))throw new Error(\"unsupported\");for(const e of[...t.childNodes])e instanceof SVGDefsElement||i.appendChild(e);this.__defs.appendChild(i)}return new d(i,this)}setLineDash(t){t&&t.length>0?this.lineDash=t.join(\",\"):this.lineDash=null}_to_number(t){return a.isNumber(t)?t:t.baseVal.value}}i.SVGRenderingContext2D=m,m.__name__=\"SVGRenderingContext2D\"},\n function _(o,t,n,i,e){i();const s=o(238),c=o(15);class l extends s.ButtonToolButtonView{_clicked(){this.model.do.emit(void 0)}}n.ActionToolButtonView=l,l.__name__=\"ActionToolButtonView\";class _ extends s.ButtonToolView{connect_signals(){super.connect_signals(),this.connect(this.model.do,(o=>this.doit(o)))}}n.ActionToolView=_,_.__name__=\"ActionToolView\";class d extends s.ButtonTool{constructor(o){super(o),this.button_view=l,this.do=new c.Signal(this,\"do\")}}n.ActionTool=d,d.__name__=\"ActionTool\"},\n function _(o,e,t,i,l){i();const s=o(251),n=o(242);class r extends s.ActionToolView{doit(){window.open(this.model.redirect)}}t.HelpToolView=r,r.__name__=\"HelpToolView\";class c extends s.ActionTool{constructor(o){super(o),this.tool_name=\"Help\",this.icon=n.tool_icon_help}static init_HelpTool(){this.prototype.default_view=r,this.define((({String:o})=>({redirect:[o,\"https://docs.bokeh.org/en/latest/docs/user_guide/tools.html\"]}))),this.override({description:\"Click the question mark to learn more about Bokeh plot tools.\"}),this.register_alias(\"help\",(()=>new c))}}t.HelpTool=c,c.__name__=\"HelpTool\",c.init_HelpTool()},\n function _(o,l,g,A,r){A(),g.root=\"bk-root\",g.logo=\"bk-logo\",g.grey=\"bk-grey\",g.logo_small=\"bk-logo-small\",g.logo_notebook=\"bk-logo-notebook\",g.default=\".bk-root .bk-logo{margin:5px;position:relative;display:block;background-repeat:no-repeat;}.bk-root .bk-logo.bk-grey{filter:url(\\\"data:image/svg+xml;utf8,#grayscale\\\");filter:gray;-webkit-filter:grayscale(100%);}.bk-root .bk-logo-small{width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==);}.bk-root .bk-logo-notebook{display:inline-block;vertical-align:middle;margin-right:5px;}\"},\n function _(t,e,i,s,l){s();const o=t(1),n=t(40),h=t(20),a=t(43),r=o.__importStar(t(255)),c=r;class d extends n.AnnotationView{initialize(){super.initialize(),this.el=a.div({class:c.tooltip}),a.undisplay(this.el),this.plot_view.canvas_view.add_overlay(this.el)}remove(){a.remove(this.el),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.content.change,(()=>this.render())),this.connect(this.model.properties.position.change,(()=>this._reposition()))}styles(){return[...super.styles(),r.default]}render(){this.model.visible||a.undisplay(this.el),super.render()}_render(){const{content:t}=this.model;null!=t?(a.empty(this.el),a.classes(this.el).toggle(\"bk-tooltip-custom\",this.model.custom),this.el.appendChild(t),this.model.show_arrow&&this.el.classList.add(c.tooltip_arrow)):a.undisplay(this.el)}_reposition(){const{position:t}=this.model;if(null==t)return void a.undisplay(this.el);const[e,i]=t,s=(()=>{const t=this.parent.layout.bbox.relative(),{attachment:s}=this.model;switch(s){case\"horizontal\":return e({attachment:[h.TooltipAttachment,\"horizontal\"],inner_only:[t,!0],show_arrow:[t,!0]}))),this.internal((({Boolean:t,Number:e,Tuple:i,Ref:s,Nullable:l})=>({position:[l(i(e,e)),null],content:[s(HTMLElement),()=>a.div()],custom:[t]}))),this.override({level:\"overlay\"})}clear(){this.position=null}}i.Tooltip=p,p.__name__=\"Tooltip\",p.init_Tooltip()},\n function _(o,t,r,e,l){e(),r.root=\"bk-root\",r.tooltip=\"bk-tooltip\",r.left=\"bk-left\",r.tooltip_arrow=\"bk-tooltip-arrow\",r.right=\"bk-right\",r.above=\"bk-above\",r.below=\"bk-below\",r.tooltip_row_label=\"bk-tooltip-row-label\",r.tooltip_row_value=\"bk-tooltip-row-value\",r.tooltip_color_block=\"bk-tooltip-color-block\",r.default='.bk-root{}.bk-root .bk-tooltip{font-weight:300;font-size:12px;position:absolute;padding:5px;border:1px solid #e5e5e5;color:#2f2f2f;background-color:white;pointer-events:none;opacity:0.95;z-index:100;}.bk-root .bk-tooltip > div:not(:first-child){margin-top:5px;border-top:#e5e5e5 1px dashed;}.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\" \";display:block;left:-10px;border-right-width:10px;border-right-color:#909599;}.bk-root .bk-tooltip.bk-left::before{left:-10px;border-right-width:10px;border-right-color:#909599;}.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\" \";display:block;right:-10px;border-left-width:10px;border-left-color:#909599;}.bk-root .bk-tooltip.bk-right::after{right:-10px;border-left-width:10px;border-left-color:#909599;}.bk-root .bk-tooltip.bk-above::before{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\" \";display:block;top:-10px;border-bottom-width:10px;border-bottom-color:#909599;}.bk-root .bk-tooltip.bk-below::after{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\" \";display:block;bottom:-10px;border-top-width:10px;border-top-color:#909599;}.bk-root .bk-tooltip-row-label{text-align:right;color:#26aae1;}.bk-root .bk-tooltip-row-value{color:default;}.bk-root .bk-tooltip-color-block{width:12px;height:12px;margin-left:5px;margin-right:5px;outline:#dddddd solid 1px;display:inline-block;}'},\n function _(e,t,i,s,r){s();const a=e(135),h=e(133),_=e(122),l=e(48);class o extends a.UpperLowerView{async lazy_initialize(){await super.lazy_initialize();const{lower_head:e,upper_head:t}=this.model;null!=e&&(this.lower_head=await _.build_view(e,{parent:this})),null!=t&&(this.upper_head=await _.build_view(t,{parent:this}))}set_data(e){var t,i;super.set_data(e),null===(t=this.lower_head)||void 0===t||t.set_data(e),null===(i=this.upper_head)||void 0===i||i.set_data(e)}paint(e){if(this.visuals.line.doit)for(let t=0,i=this._lower_sx.length;t({lower_head:[t(e(h.ArrowHead)),()=>new h.TeeHead({size:10})],upper_head:[t(e(h.ArrowHead)),()=>new h.TeeHead({size:10})]}))),this.override({level:\"underlay\"})}}i.Whisker=n,n.__name__=\"Whisker\",n.init_Whisker()},\n function _(n,o,t,u,e){u(),e(\"CustomJS\",n(258).CustomJS),e(\"OpenURL\",n(260).OpenURL)},\n function _(t,s,e,n,c){n();const u=t(259),i=t(13),a=t(34);class r extends u.Callback{constructor(t){super(t)}static init_CustomJS(){this.define((({Unknown:t,String:s,Dict:e})=>({args:[e(t),{}],code:[s,\"\"]})))}get names(){return i.keys(this.args)}get values(){return i.values(this.args)}get func(){const t=a.use_strict(this.code);return new Function(...this.names,\"cb_obj\",\"cb_data\",t)}execute(t,s={}){return this.func.apply(t,this.values.concat(t,s))}}e.CustomJS=r,r.__name__=\"CustomJS\",r.init_CustomJS()},\n function _(c,a,l,n,s){n();const e=c(53);class o extends e.Model{constructor(c){super(c)}}l.Callback=o,o.__name__=\"Callback\"},\n function _(e,t,n,i,o){i();const s=e(259),c=e(182),r=e(8);class a extends s.Callback{constructor(e){super(e)}static init_OpenURL(){this.define((({Boolean:e,String:t})=>({url:[t,\"http://\"],same_tab:[e,!1]})))}navigate(e){this.same_tab?window.location.href=e:window.open(e)}execute(e,{source:t}){const n=e=>{const n=c.replace_placeholders(this.url,t,e,void 0,void 0,encodeURI);if(!r.isString(n))throw new Error(\"HTML output is not supported in this context\");this.navigate(n)},{selected:i}=t;for(const e of i.indices)n(e);for(const e of i.line_indices)n(e)}}n.OpenURL=a,a.__name__=\"OpenURL\",a.init_OpenURL()},\n function _(a,n,e,r,s){r(),s(\"Canvas\",a(262).Canvas),s(\"CartesianFrame\",a(144).CartesianFrame)},\n function _(e,t,s,i,a){i();const l=e(14),n=e(240),r=e(19),o=e(43),h=e(20),_=e(13),c=e(263),d=e(99),p=e(249),v=(()=>{const e=document.createElement(\"canvas\"),t=e.getContext(\"webgl\",{premultipliedAlpha:!0});return null!=t?{canvas:e,gl:t}:void r.logger.trace(\"WebGL is not supported\")})(),u={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class b extends n.DOMView{constructor(){super(...arguments),this.bbox=new d.BBox}initialize(){super.initialize(),\"webgl\"==this.model.output_backend&&(this.webgl=v),this.underlays_el=o.div({style:u}),this.primary=this.create_layer(),this.overlays=this.create_layer(),this.overlays_el=o.div({style:u}),this.events_el=o.div({class:\"bk-canvas-events\",style:u});const e=[this.underlays_el,this.primary.el,this.overlays.el,this.overlays_el,this.events_el];_.extend(this.el.style,u),o.append(this.el,...e),this.ui_event_bus=new c.UIEventBus(this)}remove(){this.ui_event_bus.destroy(),super.remove()}add_underlay(e){this.underlays_el.appendChild(e)}add_overlay(e){this.overlays_el.appendChild(e)}add_event(e){this.events_el.appendChild(e)}get pixel_ratio(){return this.primary.pixel_ratio}resize(e,t){this.bbox=new d.BBox({left:0,top:0,width:e,height:t}),this.primary.resize(e,t),this.overlays.resize(e,t)}prepare_webgl(e){const{webgl:t}=this;if(null!=t){const{width:s,height:i}=this.bbox;t.canvas.width=this.pixel_ratio*s,t.canvas.height=this.pixel_ratio*i;const{gl:a}=t;a.enable(a.SCISSOR_TEST);const[l,n,r,o]=e,{xview:h,yview:_}=this.bbox,c=h.compute(l),d=_.compute(n+o),p=this.pixel_ratio;a.scissor(p*c,p*d,p*r,p*o),a.enable(a.BLEND),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE_MINUS_DST_ALPHA,a.ONE),this._clear_webgl()}}blit_webgl(e){const{webgl:t}=this;if(null!=t){if(r.logger.debug(\"Blitting WebGL canvas\"),e.restore(),e.drawImage(t.canvas,0,0),e.save(),this.model.hidpi){const t=this.pixel_ratio;e.scale(t,t),e.translate(.5,.5)}this._clear_webgl()}}_clear_webgl(){const{webgl:e}=this;if(null!=e){const{gl:t,canvas:s}=e;t.viewport(0,0,s.width,s.height),t.clearColor(0,0,0,0),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}}compose(){const e=this.create_layer(),{width:t,height:s}=this.bbox;return e.resize(t,s),e.ctx.drawImage(this.primary.canvas,0,0),e.ctx.drawImage(this.overlays.canvas,0,0),e}create_layer(){const{output_backend:e,hidpi:t}=this.model;return new p.CanvasLayer(e,t)}to_blob(){return this.compose().to_blob()}}s.CanvasView=b,b.__name__=\"CanvasView\";class g extends l.HasProps{constructor(e){super(e)}static init_Canvas(){this.prototype.default_view=b,this.internal((({Boolean:e})=>({hidpi:[e,!0],output_backend:[h.OutputBackend,\"canvas\"]})))}}s.Canvas=g,g.__name__=\"Canvas\",g.init_Canvas()},\n function _(t,e,s,n,i){n();const r=t(1),a=r.__importDefault(t(239)),_=t(15),h=t(19),o=t(43),l=r.__importStar(t(264)),c=t(265),p=t(9),u=t(8),v=t(27),d=t(244);class g{constructor(t){this.canvas_view=t,this.pan_start=new _.Signal(this,\"pan:start\"),this.pan=new _.Signal(this,\"pan\"),this.pan_end=new _.Signal(this,\"pan:end\"),this.pinch_start=new _.Signal(this,\"pinch:start\"),this.pinch=new _.Signal(this,\"pinch\"),this.pinch_end=new _.Signal(this,\"pinch:end\"),this.rotate_start=new _.Signal(this,\"rotate:start\"),this.rotate=new _.Signal(this,\"rotate\"),this.rotate_end=new _.Signal(this,\"rotate:end\"),this.tap=new _.Signal(this,\"tap\"),this.doubletap=new _.Signal(this,\"doubletap\"),this.press=new _.Signal(this,\"press\"),this.pressup=new _.Signal(this,\"pressup\"),this.move_enter=new _.Signal(this,\"move:enter\"),this.move=new _.Signal(this,\"move\"),this.move_exit=new _.Signal(this,\"move:exit\"),this.scroll=new _.Signal(this,\"scroll\"),this.keydown=new _.Signal(this,\"keydown\"),this.keyup=new _.Signal(this,\"keyup\"),this.hammer=new a.default(this.hit_area,{touchAction:\"auto\",inputClass:a.default.TouchMouseInput}),this._prev_move=null,this._curr_pan=null,this._curr_pinch=null,this._curr_rotate=null,this._configure_hammerjs(),this.hit_area.addEventListener(\"mousemove\",(t=>this._mouse_move(t))),this.hit_area.addEventListener(\"mouseenter\",(t=>this._mouse_enter(t))),this.hit_area.addEventListener(\"mouseleave\",(t=>this._mouse_exit(t))),this.hit_area.addEventListener(\"contextmenu\",(t=>this._context_menu(t))),this.hit_area.addEventListener(\"wheel\",(t=>this._mouse_wheel(t))),document.addEventListener(\"keydown\",this),document.addEventListener(\"keyup\",this),this.menu=new d.ContextMenu([],{prevent_hide:t=>2==t.button&&t.target==this.hit_area}),this.hit_area.appendChild(this.menu.el)}get hit_area(){return this.canvas_view.events_el}destroy(){this.menu.remove(),this.hammer.destroy(),document.removeEventListener(\"keydown\",this),document.removeEventListener(\"keyup\",this)}handleEvent(t){\"keydown\"==t.type?this._key_down(t):\"keyup\"==t.type&&this._key_up(t)}_configure_hammerjs(){this.hammer.get(\"doubletap\").recognizeWith(\"tap\"),this.hammer.get(\"tap\").requireFailure(\"doubletap\"),this.hammer.get(\"doubletap\").dropRequireFailure(\"tap\"),this.hammer.on(\"doubletap\",(t=>this._doubletap(t))),this.hammer.on(\"tap\",(t=>this._tap(t))),this.hammer.on(\"press\",(t=>this._press(t))),this.hammer.on(\"pressup\",(t=>this._pressup(t))),this.hammer.get(\"pan\").set({direction:a.default.DIRECTION_ALL}),this.hammer.on(\"panstart\",(t=>this._pan_start(t))),this.hammer.on(\"pan\",(t=>this._pan(t))),this.hammer.on(\"panend\",(t=>this._pan_end(t))),this.hammer.get(\"pinch\").set({enable:!0}),this.hammer.on(\"pinchstart\",(t=>this._pinch_start(t))),this.hammer.on(\"pinch\",(t=>this._pinch(t))),this.hammer.on(\"pinchend\",(t=>this._pinch_end(t))),this.hammer.get(\"rotate\").set({enable:!0}),this.hammer.on(\"rotatestart\",(t=>this._rotate_start(t))),this.hammer.on(\"rotate\",(t=>this._rotate(t))),this.hammer.on(\"rotateend\",(t=>this._rotate_end(t)))}register_tool(t){const e=t.model.event_type;null!=e&&(u.isString(e)?this._register_tool(t,e):e.forEach(((e,s)=>this._register_tool(t,e,s<1))))}_register_tool(t,e,s=!0){const n=t,{id:i}=n.model,r=t=>e=>{e.id==i&&t(e.e)},a=t=>e=>{t(e.e)};switch(e){case\"pan\":null!=n._pan_start&&n.connect(this.pan_start,r(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,r(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,r(n._pan_end.bind(n)));break;case\"pinch\":null!=n._pinch_start&&n.connect(this.pinch_start,r(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,r(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,r(n._pinch_end.bind(n)));break;case\"rotate\":null!=n._rotate_start&&n.connect(this.rotate_start,r(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,r(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,r(n._rotate_end.bind(n)));break;case\"move\":null!=n._move_enter&&n.connect(this.move_enter,r(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,r(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,r(n._move_exit.bind(n)));break;case\"tap\":null!=n._tap&&n.connect(this.tap,r(n._tap.bind(n))),null!=n._doubletap&&n.connect(this.doubletap,r(n._doubletap.bind(n)));break;case\"press\":null!=n._press&&n.connect(this.press,r(n._press.bind(n))),null!=n._pressup&&n.connect(this.pressup,r(n._pressup.bind(n)));break;case\"scroll\":null!=n._scroll&&n.connect(this.scroll,r(n._scroll.bind(n)));break;default:throw new Error(`unsupported event_type: ${e}`)}s&&(null!=n._keydown&&n.connect(this.keydown,a(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,a(n._keyup.bind(n))),v.is_mobile&&null!=n._scroll&&\"pinch\"==e&&(h.logger.debug(\"Registering scroll on touch screen\"),n.connect(this.scroll,r(n._scroll.bind(n)))))}_hit_test_renderers(t,e,s){var n;const i=t.get_renderer_views();for(const t of p.reversed(i))if(null===(n=t.interactive_hit)||void 0===n?void 0:n.call(t,e,s))return t;return null}set_cursor(t=\"default\"){this.hit_area.style.cursor=t}_hit_test_frame(t,e,s){return t.frame.bbox.contains(e,s)}_hit_test_canvas(t,e,s){return t.layout.bbox.contains(e,s)}_hit_test_plot(t,e){for(const s of this.canvas_view.plot_views)if(s.layout.bbox.relative().contains(t,e))return s;return null}_trigger(t,e,s){var n;const{sx:i,sy:r}=e,a=this._hit_test_plot(i,r),_=t=>{const[s,n]=[i,r];return Object.assign(Object.assign({},e),{sx:s,sy:n})};if(\"panstart\"==e.type||\"pan\"==e.type||\"panend\"==e.type){let n;if(\"panstart\"==e.type&&null!=a?(this._curr_pan={plot_view:a},n=a):\"pan\"==e.type&&null!=this._curr_pan?n=this._curr_pan.plot_view:\"panend\"==e.type&&null!=this._curr_pan?(n=this._curr_pan.plot_view,this._curr_pan=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"pinchstart\"==e.type||\"pinch\"==e.type||\"pinchend\"==e.type){let n;if(\"pinchstart\"==e.type&&null!=a?(this._curr_pinch={plot_view:a},n=a):\"pinch\"==e.type&&null!=this._curr_pinch?n=this._curr_pinch.plot_view:\"pinchend\"==e.type&&null!=this._curr_pinch?(n=this._curr_pinch.plot_view,this._curr_pinch=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"rotatestart\"==e.type||\"rotate\"==e.type||\"rotateend\"==e.type){let n;if(\"rotatestart\"==e.type&&null!=a?(this._curr_rotate={plot_view:a},n=a):\"rotate\"==e.type&&null!=this._curr_rotate?n=this._curr_rotate.plot_view:\"rotateend\"==e.type&&null!=this._curr_rotate?(n=this._curr_rotate.plot_view,this._curr_rotate=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"mouseenter\"==e.type||\"mousemove\"==e.type||\"mouseleave\"==e.type){const h=null===(n=this._prev_move)||void 0===n?void 0:n.plot_view;if(null!=h&&(\"mouseleave\"==e.type||h!=a)){const{sx:t,sy:e}=_();this.__trigger(h,this.move_exit,{type:\"mouseleave\",sx:t,sy:e,shiftKey:!1,ctrlKey:!1},s)}if(null!=a&&(\"mouseenter\"==e.type||h!=a)){const{sx:t,sy:e}=_();this.__trigger(a,this.move_enter,{type:\"mouseenter\",sx:t,sy:e,shiftKey:!1,ctrlKey:!1},s)}if(null!=a&&\"mousemove\"==e.type){const e=_();this.__trigger(a,t,e,s)}this._prev_move={sx:i,sy:r,plot_view:a}}else if(null!=a){const e=_();this.__trigger(a,t,e,s)}}__trigger(t,e,s,n){var i,r;const a=t.model.toolbar.gestures,_=e.name.split(\":\")[0],h=this._hit_test_renderers(t,s.sx,s.sy),o=this._hit_test_canvas(t,s.sx,s.sy);switch(_){case\"move\":{const n=a[_].active;null!=n&&this.trigger(e,s,n.id);const r=t.model.toolbar.inspectors.filter((t=>t.active));let l=\"default\";null!=h?(l=null!==(i=h.cursor(s.sx,s.sy))&&void 0!==i?i:l,p.is_empty(r)||(e=this.move_exit)):this._hit_test_frame(t,s.sx,s.sy)&&(p.is_empty(r)||(l=\"crosshair\")),this.set_cursor(l),t.set_toolbar_visibility(o),r.map((t=>this.trigger(e,s,t.id)));break}case\"tap\":{const{target:t}=n;if(null!=t&&t!=this.hit_area)return;null!=h&&null!=h.on_hit&&h.on_hit(s.sx,s.sy);const i=a[_].active;null!=i&&this.trigger(e,s,i.id);break}case\"doubletap\":{const t=null!==(r=a.doubletap.active)&&void 0!==r?r:a.tap.active;null!=t&&this.trigger(e,s,t.id);break}case\"scroll\":{const t=a[v.is_mobile?\"pinch\":\"scroll\"].active;null!=t&&(n.preventDefault(),n.stopPropagation(),this.trigger(e,s,t.id));break}case\"pan\":{const t=a[_].active;null!=t&&(n.preventDefault(),this.trigger(e,s,t.id));break}default:{const t=a[_].active;null!=t&&this.trigger(e,s,t.id)}}this._trigger_bokeh_event(t,s)}trigger(t,e,s=null){t.emit({id:s,e})}_trigger_bokeh_event(t,e){const s=(()=>{const{sx:s,sy:n}=e,i=t.frame.x_scale.invert(s),r=t.frame.y_scale.invert(n);switch(e.type){case\"wheel\":return new l.MouseWheel(s,n,i,r,e.delta);case\"mousemove\":return new l.MouseMove(s,n,i,r);case\"mouseenter\":return new l.MouseEnter(s,n,i,r);case\"mouseleave\":return new l.MouseLeave(s,n,i,r);case\"tap\":return new l.Tap(s,n,i,r);case\"doubletap\":return new l.DoubleTap(s,n,i,r);case\"press\":return new l.Press(s,n,i,r);case\"pressup\":return new l.PressUp(s,n,i,r);case\"pan\":return new l.Pan(s,n,i,r,e.deltaX,e.deltaY);case\"panstart\":return new l.PanStart(s,n,i,r);case\"panend\":return new l.PanEnd(s,n,i,r);case\"pinch\":return new l.Pinch(s,n,i,r,e.scale);case\"pinchstart\":return new l.PinchStart(s,n,i,r);case\"pinchend\":return new l.PinchEnd(s,n,i,r);case\"rotate\":return new l.Rotate(s,n,i,r,e.rotation);case\"rotatestart\":return new l.RotateStart(s,n,i,r);case\"rotateend\":return new l.RotateEnd(s,n,i,r);default:return}})();null!=s&&t.model.trigger_event(s)}_get_sxy(t){const{pageX:e,pageY:s}=function(t){return\"undefined\"!=typeof TouchEvent&&t instanceof TouchEvent}(t)?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t,{left:n,top:i}=o.offset(this.hit_area);return{sx:e-n,sy:s-i}}_pan_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{deltaX:t.deltaX,deltaY:t.deltaY,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_pinch_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{scale:t.scale,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_rotate_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{rotation:t.rotation,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_tap_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_move_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_scroll_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{delta:c.getDeltaY(t),shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_key_event(t){return{type:t.type,keyCode:t.keyCode}}_pan_start(t){const e=this._pan_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)}_pan(t){this._trigger(this.pan,this._pan_event(t),t.srcEvent)}_pan_end(t){this._trigger(this.pan_end,this._pan_event(t),t.srcEvent)}_pinch_start(t){this._trigger(this.pinch_start,this._pinch_event(t),t.srcEvent)}_pinch(t){this._trigger(this.pinch,this._pinch_event(t),t.srcEvent)}_pinch_end(t){this._trigger(this.pinch_end,this._pinch_event(t),t.srcEvent)}_rotate_start(t){this._trigger(this.rotate_start,this._rotate_event(t),t.srcEvent)}_rotate(t){this._trigger(this.rotate,this._rotate_event(t),t.srcEvent)}_rotate_end(t){this._trigger(this.rotate_end,this._rotate_event(t),t.srcEvent)}_tap(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)}_doubletap(t){this._trigger(this.doubletap,this._tap_event(t),t.srcEvent)}_press(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)}_pressup(t){this._trigger(this.pressup,this._tap_event(t),t.srcEvent)}_mouse_enter(t){this._trigger(this.move_enter,this._move_event(t),t)}_mouse_move(t){this._trigger(this.move,this._move_event(t),t)}_mouse_exit(t){this._trigger(this.move_exit,this._move_event(t),t)}_mouse_wheel(t){this._trigger(this.scroll,this._scroll_event(t),t)}_context_menu(t){!this.menu.is_open&&this.menu.can_open&&t.preventDefault();const{sx:e,sy:s}=this._get_sxy(t);this.menu.toggle({left:e,top:s})}_key_down(t){this.trigger(this.keydown,this._key_event(t))}_key_up(t){this.trigger(this.keyup,this._key_event(t))}}s.UIEventBus=g,g.__name__=\"UIEventBus\"},\n function _(e,t,s,n,_){n();var a=this&&this.__decorate||function(e,t,s,n){var _,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,s):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,n);else for(var c=e.length-1;c>=0;c--)(_=e[c])&&(o=(a<3?_(o):a>3?_(t,s,o):_(t,s))||o);return a>3&&o&&Object.defineProperty(t,s,o),o};function o(e){return function(t){t.prototype.event_name=e}}class c{to_json(){const{event_name:e}=this;return{event_name:e,event_values:this._to_json()}}}s.BokehEvent=c,c.__name__=\"BokehEvent\";class r extends c{constructor(){super(...arguments),this.origin=null}_to_json(){return{model:this.origin}}}s.ModelEvent=r,r.__name__=\"ModelEvent\";let l=class extends c{_to_json(){return{}}};s.DocumentReady=l,l.__name__=\"DocumentReady\",s.DocumentReady=l=a([o(\"document_ready\")],l);let i=class extends r{};s.ButtonClick=i,i.__name__=\"ButtonClick\",s.ButtonClick=i=a([o(\"button_click\")],i);let u=class extends r{constructor(e){super(),this.item=e}_to_json(){const{item:e}=this;return Object.assign(Object.assign({},super._to_json()),{item:e})}};s.MenuItemClick=u,u.__name__=\"MenuItemClick\",s.MenuItemClick=u=a([o(\"menu_item_click\")],u);class d extends r{}s.UIEvent=d,d.__name__=\"UIEvent\";let h=class extends d{};s.LODStart=h,h.__name__=\"LODStart\",s.LODStart=h=a([o(\"lodstart\")],h);let m=class extends d{};s.LODEnd=m,m.__name__=\"LODEnd\",s.LODEnd=m=a([o(\"lodend\")],m);let x=class extends d{constructor(e,t){super(),this.geometry=e,this.final=t}_to_json(){const{geometry:e,final:t}=this;return Object.assign(Object.assign({},super._to_json()),{geometry:e,final:t})}};s.SelectionGeometry=x,x.__name__=\"SelectionGeometry\",s.SelectionGeometry=x=a([o(\"selectiongeometry\")],x);let p=class extends d{};s.Reset=p,p.__name__=\"Reset\",s.Reset=p=a([o(\"reset\")],p);class j extends d{constructor(e,t,s,n){super(),this.sx=e,this.sy=t,this.x=s,this.y=n}_to_json(){const{sx:e,sy:t,x:s,y:n}=this;return Object.assign(Object.assign({},super._to_json()),{sx:e,sy:t,x:s,y:n})}}s.PointEvent=j,j.__name__=\"PointEvent\";let y=class extends j{constructor(e,t,s,n,_,a){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.delta_x=_,this.delta_y=a}_to_json(){const{delta_x:e,delta_y:t}=this;return Object.assign(Object.assign({},super._to_json()),{delta_x:e,delta_y:t})}};s.Pan=y,y.__name__=\"Pan\",s.Pan=y=a([o(\"pan\")],y);let P=class extends j{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.scale=_}_to_json(){const{scale:e}=this;return Object.assign(Object.assign({},super._to_json()),{scale:e})}};s.Pinch=P,P.__name__=\"Pinch\",s.Pinch=P=a([o(\"pinch\")],P);let v=class extends j{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.rotation=_}_to_json(){const{rotation:e}=this;return Object.assign(Object.assign({},super._to_json()),{rotation:e})}};s.Rotate=v,v.__name__=\"Rotate\",s.Rotate=v=a([o(\"rotate\")],v);let g=class extends j{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.delta=_}_to_json(){const{delta:e}=this;return Object.assign(Object.assign({},super._to_json()),{delta:e})}};s.MouseWheel=g,g.__name__=\"MouseWheel\",s.MouseWheel=g=a([o(\"wheel\")],g);let E=class extends j{};s.MouseMove=E,E.__name__=\"MouseMove\",s.MouseMove=E=a([o(\"mousemove\")],E);let O=class extends j{};s.MouseEnter=O,O.__name__=\"MouseEnter\",s.MouseEnter=O=a([o(\"mouseenter\")],O);let b=class extends j{};s.MouseLeave=b,b.__name__=\"MouseLeave\",s.MouseLeave=b=a([o(\"mouseleave\")],b);let M=class extends j{};s.Tap=M,M.__name__=\"Tap\",s.Tap=M=a([o(\"tap\")],M);let R=class extends j{};s.DoubleTap=R,R.__name__=\"DoubleTap\",s.DoubleTap=R=a([o(\"doubletap\")],R);let f=class extends j{};s.Press=f,f.__name__=\"Press\",s.Press=f=a([o(\"press\")],f);let S=class extends j{};s.PressUp=S,S.__name__=\"PressUp\",s.PressUp=S=a([o(\"pressup\")],S);let D=class extends j{};s.PanStart=D,D.__name__=\"PanStart\",s.PanStart=D=a([o(\"panstart\")],D);let k=class extends j{};s.PanEnd=k,k.__name__=\"PanEnd\",s.PanEnd=k=a([o(\"panend\")],k);let L=class extends j{};s.PinchStart=L,L.__name__=\"PinchStart\",s.PinchStart=L=a([o(\"pinchstart\")],L);let C=class extends j{};s.PinchEnd=C,C.__name__=\"PinchEnd\",s.PinchEnd=C=a([o(\"pinchend\")],C);let T=class extends j{};s.RotateStart=T,T.__name__=\"RotateStart\",s.RotateStart=T=a([o(\"rotatestart\")],T);let B=class extends j{};s.RotateEnd=B,B.__name__=\"RotateEnd\",s.RotateEnd=B=a([o(\"rotateend\")],B)},\n function _(t,e,n,l,o){\n /*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n function u(t){const e=getComputedStyle(t).fontSize;return null!=e?parseInt(e,10):null}l(),n.getDeltaY=function(t){let e=-t.deltaY;if(t.target instanceof HTMLElement)switch(t.deltaMode){case t.DOM_DELTA_LINE:e*=(n=t.target,null!==(a=null!==(o=u(null!==(l=n.offsetParent)&&void 0!==l?l:document.body))&&void 0!==o?o:u(n))&&void 0!==a?a:16);break;case t.DOM_DELTA_PAGE:e*=function(t){return t.clientHeight}(t.target)}var n,l,o,a;return e}},\n function _(m,i,u,s,a){s(),a(\"Expression\",m(124).Expression),a(\"CustomJSExpr\",m(267).CustomJSExpr),a(\"Stack\",m(268).Stack),a(\"CumSum\",m(269).CumSum),a(\"ScalarExpression\",m(124).ScalarExpression),a(\"Minimum\",m(270).Minimum),a(\"Maximum\",m(271).Maximum)},\n function _(t,e,s,n,r){n();const i=t(14),o=t(124),a=t(24),c=t(9),u=t(13),l=t(34),h=t(8);class p extends o.Expression{constructor(t){super(t)}static init_CustomJSExpr(){this.define((({Unknown:t,String:e,Dict:s})=>({args:[s(t),{}],code:[e,\"\"]})))}connect_signals(){super.connect_signals();for(const t of u.values(this.args))t instanceof i.HasProps&&t.change.connect((()=>{this._result.clear(),this.change.emit()}))}get names(){return u.keys(this.args)}get values(){return u.values(this.args)}get func(){const t=l.use_strict(this.code);return new a.GeneratorFunction(...this.names,t)}_v_compute(t){const e=this.func.apply(t,this.values);let s=e.next();if(s.done&&void 0!==s.value){const{value:e}=s;return h.isArray(e)||h.isTypedArray(e)?e:h.isIterable(e)?[...e]:c.repeat(e,t.length)}{const t=[];do{t.push(s.value),s=e.next()}while(!s.done);return t}}}s.CustomJSExpr=p,p.__name__=\"CustomJSExpr\",p.init_CustomJSExpr()},\n function _(t,n,e,i,s){i();const a=t(124);class c extends a.Expression{constructor(t){super(t)}static init_Stack(){this.define((({String:t,Array:n})=>({fields:[n(t),[]]})))}_v_compute(t){var n;const e=null!==(n=t.get_length())&&void 0!==n?n:0,i=new Float64Array(e);for(const n of this.fields){const s=t.data[n];if(null!=s)for(let t=0,n=Math.min(e,s.length);t({field:[t],include_zero:[e,!1]})))}_v_compute(e){var t;const n=new Float64Array(null!==(t=e.get_length())&&void 0!==t?t:0),i=e.data[this.field],u=this.include_zero?1:0;n[0]=this.include_zero?0:i[0];for(let e=1;e({field:[n],initial:[t(i),null]})))}_compute(i){var n,t;const l=null!==(n=i.data[this.field])&&void 0!==n?n:[];return Math.min(null!==(t=this.initial)&&void 0!==t?t:1/0,m.min(l))}}t.Minimum=s,s.__name__=\"Minimum\",s.init_Minimum()},\n function _(i,t,a,n,l){n();const u=i(124),e=i(9);class m extends u.ScalarExpression{constructor(i){super(i)}static init_Maximum(){this.define((({Number:i,String:t,Nullable:a})=>({field:[t],initial:[a(i),null]})))}_compute(i){var t,a;const n=null!==(t=i.data[this.field])&&void 0!==t?t:[];return Math.max(null!==(a=this.initial)&&void 0!==a?a:-1/0,e.max(n))}}a.Maximum=m,m.__name__=\"Maximum\",m.init_Maximum()},\n function _(e,t,l,r,i){r(),i(\"BooleanFilter\",e(273).BooleanFilter),i(\"CustomJSFilter\",e(274).CustomJSFilter),i(\"Filter\",e(121).Filter),i(\"GroupFilter\",e(275).GroupFilter),i(\"IndexFilter\",e(276).IndexFilter)},\n function _(e,n,l,o,t){o();const i=e(121),s=e(24);class a extends i.Filter{constructor(e){super(e)}static init_BooleanFilter(){this.define((({Boolean:e,Array:n,Nullable:l})=>({booleans:[l(n(e)),null]})))}compute_indices(e){const n=e.length,{booleans:l}=this;return null==l?s.Indices.all_set(n):s.Indices.from_booleans(n,l)}}l.BooleanFilter=a,a.__name__=\"BooleanFilter\",a.init_BooleanFilter()},\n function _(e,t,s,n,r){n();const i=e(121),o=e(24),u=e(13),c=e(8),a=e(34);class l extends i.Filter{constructor(e){super(e)}static init_CustomJSFilter(){this.define((({Unknown:e,String:t,Dict:s})=>({args:[s(e),{}],code:[t,\"\"]})))}get names(){return u.keys(this.args)}get values(){return u.values(this.args)}get func(){const e=a.use_strict(this.code);return new Function(...this.names,\"source\",e)}compute_indices(e){const t=e.length,s=this.func(...this.values,e);if(null==s)return o.Indices.all_set(t);if(c.isArrayOf(s,c.isInteger))return o.Indices.from_indices(t,s);if(c.isArrayOf(s,c.isBoolean))return o.Indices.from_booleans(t,s);throw new Error(`expect an array of integers or booleans, or null, got ${s}`)}}s.CustomJSFilter=l,l.__name__=\"CustomJSFilter\",l.init_CustomJSFilter()},\n function _(n,t,e,i,o){i();const r=n(121),u=n(24),s=n(19);class c extends r.Filter{constructor(n){super(n)}static init_GroupFilter(){this.define((({String:n})=>({column_name:[n],group:[n]})))}compute_indices(n){const t=n.get_column(this.column_name);if(null==t)return s.logger.warn(`${this}: groupby column '${this.column_name}' not found in the data source`),new u.Indices(n.length,1);{const e=new u.Indices(n.length);for(let n=0;n({indices:[i(n(e)),null]})))}compute_indices(e){const n=e.length,{indices:i}=this;return null==i?c.Indices.all_set(n):c.Indices.from_indices(n,i)}}i.IndexFilter=r,r.__name__=\"IndexFilter\",r.init_IndexFilter()},\n function _(e,a,l,i,t){i(),t(\"AnnularWedge\",e(278).AnnularWedge),t(\"Annulus\",e(279).Annulus),t(\"Arc\",e(280).Arc),t(\"Bezier\",e(281).Bezier),t(\"Circle\",e(282).Circle),t(\"Ellipse\",e(286).Ellipse),t(\"EllipseOval\",e(287).EllipseOval),t(\"Glyph\",e(98).Glyph),t(\"HArea\",e(117).HArea),t(\"HBar\",e(289).HBar),t(\"HexTile\",e(291).HexTile),t(\"Image\",e(292).Image),t(\"ImageRGBA\",e(294).ImageRGBA),t(\"ImageURL\",e(295).ImageURL),t(\"Line\",e(63).Line),t(\"MultiLine\",e(127).MultiLine),t(\"MultiPolygons\",e(297).MultiPolygons),t(\"Oval\",e(298).Oval),t(\"Patch\",e(116).Patch),t(\"Patches\",e(128).Patches),t(\"Quad\",e(299).Quad),t(\"Quadratic\",e(300).Quadratic),t(\"Ray\",e(301).Ray),t(\"Rect\",e(302).Rect),t(\"Scatter\",e(303).Scatter),t(\"Segment\",e(306).Segment),t(\"Spline\",e(307).Spline),t(\"Step\",e(309).Step),t(\"Text\",e(310).Text),t(\"VArea\",e(119).VArea),t(\"VBar\",e(311).VBar),t(\"Wedge\",e(312).Wedge)},\n function _(e,t,s,i,r){i();const n=e(1),a=e(64),o=e(106),_=e(48),d=e(24),u=e(20),h=n.__importStar(e(18)),l=e(10),c=e(59);class g extends a.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=d.to_screen(this.inner_radius),\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=d.to_screen(this.outer_radius)}_render(e,t,s){const{sx:i,sy:r,start_angle:n,end_angle:a,sinner_radius:o,souter_radius:_}=null!=s?s:this,d=\"anticlock\"==this.model.direction;for(const s of t){const t=i[s],u=r[s],h=o[s],l=_[s],c=n.get(s),g=a.get(s);if(isNaN(t+u+h+l+c+g))continue;const x=g-c;e.translate(t,u),e.rotate(c),e.beginPath(),e.moveTo(l,0),e.arc(0,0,l,0,x,d),e.rotate(x),e.lineTo(h,0),e.arc(0,0,h,0,-x,!d),e.closePath(),e.rotate(-x-c),e.translate(-t,-u),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,s),e.fill()),this.visuals.hatch.doit&&(this.visuals.hatch.set_vectorize(e,s),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,s),e.stroke())}}_hit_point(e){const{sx:t,sy:s}=e,i=this.renderer.xscale.invert(t),r=this.renderer.yscale.invert(s);let n,a,o,_;if(\"data\"==this.model.properties.outer_radius.units)n=i-this.max_outer_radius,o=i+this.max_outer_radius,a=r-this.max_outer_radius,_=r+this.max_outer_radius;else{const e=t-this.max_outer_radius,i=t+this.max_outer_radius;[n,o]=this.renderer.xscale.r_invert(e,i);const r=s-this.max_outer_radius,d=s+this.max_outer_radius;[a,_]=this.renderer.yscale.r_invert(r,d)}const d=[];for(const e of this.index.indices({x0:n,x1:o,y0:a,y1:_})){const t=this.souter_radius[e]**2,s=this.sinner_radius[e]**2,[n,a]=this.renderer.xscale.r_compute(i,this._x[e]),[o,_]=this.renderer.yscale.r_compute(r,this._y[e]),u=(n-a)**2+(o-_)**2;u<=t&&u>=s&&d.push(e)}const u=\"anticlock\"==this.model.direction,h=[];for(const e of d){const i=Math.atan2(s-this.sy[e],t-this.sx[e]);l.angle_between(-i,-this.start_angle.get(e),-this.end_angle.get(e),u)&&h.push(e)}return new c.Selection({indices:h})}draw_legend_for_index(e,t,s){o.generic_area_vector_legend(this.visuals,e,t,s)}scenterxy(e){const t=(this.sinner_radius[e]+this.souter_radius[e])/2,s=(this.start_angle.get(e)+this.end_angle.get(e))/2;return[this.sx[e]+t*Math.cos(s),this.sy[e]+t*Math.sin(s)]}}s.AnnularWedgeView=g,g.__name__=\"AnnularWedgeView\";class x extends a.XYGlyph{constructor(e){super(e)}static init_AnnularWedge(){this.prototype.default_view=g,this.mixins([_.LineVector,_.FillVector,_.HatchVector]),this.define((({})=>({direction:[u.Direction,\"anticlock\"],inner_radius:[h.DistanceSpec,{field:\"inner_radius\"}],outer_radius:[h.DistanceSpec,{field:\"outer_radius\"}],start_angle:[h.AngleSpec,{field:\"start_angle\"}],end_angle:[h.AngleSpec,{field:\"end_angle\"}]})))}}s.AnnularWedge=x,x.__name__=\"AnnularWedge\",x.init_AnnularWedge()},\n function _(s,i,t,e,r){e();const n=s(1),a=s(64),u=s(24),_=s(48),o=n.__importStar(s(18)),h=s(27),d=s(59);class c extends a.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=u.to_screen(this.inner_radius),\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=u.to_screen(this.outer_radius)}_render(s,i,t){const{sx:e,sy:r,sinner_radius:n,souter_radius:a}=null!=t?t:this;for(const t of i){const i=e[t],_=r[t],o=n[t],d=a[t];function u(){if(s.beginPath(),h.is_ie)for(const t of[!1,!0])s.arc(i,_,o,0,Math.PI,t),s.arc(i,_,d,Math.PI,0,!t);else s.arc(i,_,o,0,2*Math.PI,!0),s.arc(i,_,d,2*Math.PI,0,!1)}isNaN(i+_+o+d)||(this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(s,t),u(),s.fill()),this.visuals.hatch.doit&&(this.visuals.hatch.set_vectorize(s,t),u(),s.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(s,t),s.beginPath(),s.arc(i,_,o,0,2*Math.PI),s.moveTo(i+d,_),s.arc(i,_,d,0,2*Math.PI),s.stroke()))}}_hit_point(s){const{sx:i,sy:t}=s,e=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(t);let n,a,u,_;if(\"data\"==this.model.properties.outer_radius.units)n=e-this.max_outer_radius,u=e+this.max_outer_radius,a=r-this.max_outer_radius,_=r+this.max_outer_radius;else{const s=i-this.max_outer_radius,e=i+this.max_outer_radius;[n,u]=this.renderer.xscale.r_invert(s,e);const r=t-this.max_outer_radius,o=t+this.max_outer_radius;[a,_]=this.renderer.yscale.r_invert(r,o)}const o=[];for(const s of this.index.indices({x0:n,x1:u,y0:a,y1:_})){const i=this.souter_radius[s]**2,t=this.sinner_radius[s]**2,[n,a]=this.renderer.xscale.r_compute(e,this._x[s]),[u,_]=this.renderer.yscale.r_compute(r,this._y[s]),h=(n-a)**2+(u-_)**2;h<=i&&h>=t&&o.push(s)}return new d.Selection({indices:o})}draw_legend_for_index(s,{x0:i,y0:t,x1:e,y1:r},n){const a=n+1,u=new Array(a);u[n]=(i+e)/2;const _=new Array(a);_[n]=(t+r)/2;const o=.5*Math.min(Math.abs(e-i),Math.abs(r-t)),h=new Array(a);h[n]=.4*o;const d=new Array(a);d[n]=.8*o,this._render(s,[n],{sx:u,sy:_,sinner_radius:h,souter_radius:d})}}t.AnnulusView=c,c.__name__=\"AnnulusView\";class l extends a.XYGlyph{constructor(s){super(s)}static init_Annulus(){this.prototype.default_view=c,this.mixins([_.LineVector,_.FillVector,_.HatchVector]),this.define((({})=>({inner_radius:[o.DistanceSpec,{field:\"inner_radius\"}],outer_radius:[o.DistanceSpec,{field:\"outer_radius\"}]})))}}t.Annulus=l,l.__name__=\"Annulus\",l.init_Annulus()},\n function _(e,i,s,t,n){t();const r=e(1),a=e(64),c=e(106),d=e(48),_=e(24),l=e(20),o=r.__importStar(e(18));class h extends a.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=_.to_screen(this.radius)}_render(e,i,s){if(this.visuals.line.doit){const{sx:t,sy:n,sradius:r,start_angle:a,end_angle:c}=null!=s?s:this,d=\"anticlock\"==this.model.direction;for(const s of i){const i=t[s],_=n[s],l=r[s],o=a.get(s),h=c.get(s);isNaN(i+_+l+o+h)||(e.beginPath(),e.arc(i,_,l,o,h,d),this.visuals.line.set_vectorize(e,s),e.stroke())}}}draw_legend_for_index(e,i,s){c.generic_line_vector_legend(this.visuals,e,i,s)}}s.ArcView=h,h.__name__=\"ArcView\";class u extends a.XYGlyph{constructor(e){super(e)}static init_Arc(){this.prototype.default_view=h,this.mixins(d.LineVector),this.define((({})=>({direction:[l.Direction,\"anticlock\"],radius:[o.DistanceSpec,{field:\"radius\"}],start_angle:[o.AngleSpec,{field:\"start_angle\"}],end_angle:[o.AngleSpec,{field:\"end_angle\"}]})))}}s.Arc=u,u.__name__=\"Arc\",u.init_Arc()},\n function _(e,t,i,s,n){s();const o=e(1),c=e(48),r=e(98),a=e(106),_=e(65),d=o.__importStar(e(18));function l(e,t,i,s,n,o,c,r){const a=[],_=[[],[]];for(let _=0;_<=2;_++){let d,l,x;if(0===_?(l=6*e-12*i+6*n,d=-3*e+9*i-9*n+3*c,x=3*i-3*e):(l=6*t-12*s+6*o,d=-3*t+9*s-9*o+3*r,x=3*s-3*t),Math.abs(d)<1e-12){if(Math.abs(l)<1e-12)continue;const e=-x/l;0({x0:[d.XCoordinateSpec,{field:\"x0\"}],y0:[d.YCoordinateSpec,{field:\"y0\"}],x1:[d.XCoordinateSpec,{field:\"x1\"}],y1:[d.YCoordinateSpec,{field:\"y1\"}],cx0:[d.XCoordinateSpec,{field:\"cx0\"}],cy0:[d.YCoordinateSpec,{field:\"cy0\"}],cx1:[d.XCoordinateSpec,{field:\"cx1\"}],cy1:[d.YCoordinateSpec,{field:\"cy1\"}]}))),this.mixins(c.LineVector)}}i.Bezier=h,h.__name__=\"Bezier\",h.init_Bezier()},\n function _(s,i,e,t,r){t();const a=s(1),n=s(64),h=s(283),d=s(48),l=s(24),c=s(20),_=a.__importStar(s(107)),u=a.__importStar(s(18)),o=s(9),x=s(12),m=s(59);class y extends n.XYGlyphView{initialize(){super.initialize();const{webgl:s}=this.renderer.plot_view.canvas_view;null!=s&&(this.glglyph=new h.MarkerGL(s.gl,this,\"circle\"))}get use_radius(){return!(this.radius.is_Scalar()&&isNaN(this.radius.value))}_map_data(){if(this.use_radius)if(\"data\"==this.model.properties.radius.units)switch(this.model.radius_dimension){case\"x\":this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius);break;case\"y\":this.sradius=this.sdist(this.renderer.yscale,this._y,this.radius);break;case\"max\":{const s=this.sdist(this.renderer.xscale,this._x,this.radius),i=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=x.map(s,((s,e)=>Math.max(s,i[e])));break}case\"min\":{const s=this.sdist(this.renderer.xscale,this._x,this.radius),i=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=x.map(s,((s,e)=>Math.min(s,i[e])));break}}else this.sradius=l.to_screen(this.radius),this._configure(\"max_size\",{value:2*this.max_radius});else{const s=new l.ScreenArray(this.size);this.sradius=x.map(s,(s=>s/2))}}_mask_data(){const{frame:s}=this.renderer.plot_view,i=s.x_target,e=s.y_target;let t,r;return this.use_radius&&\"data\"==this.model.properties.radius.units?(t=i.map((s=>this.renderer.xscale.invert(s))).widen(this.max_radius),r=e.map((s=>this.renderer.yscale.invert(s))).widen(this.max_radius)):(t=i.widen(this.max_size).map((s=>this.renderer.xscale.invert(s))),r=e.widen(this.max_size).map((s=>this.renderer.yscale.invert(s)))),this.index.indices({x0:t.start,x1:t.end,y0:r.start,y1:r.end})}_render(s,i,e){const{sx:t,sy:r,sradius:a}=null!=e?e:this;for(const e of i){const i=t[e],n=r[e],h=a[e];isNaN(i+n+h)||(s.beginPath(),s.arc(i,n,h,0,2*Math.PI,!1),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(s,e),s.fill()),this.visuals.hatch.doit&&(this.visuals.hatch.set_vectorize(s,e),s.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(s,e),s.stroke()))}}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e),{hit_dilation:a}=this.model;let n,h,d,l;if(this.use_radius&&\"data\"==this.model.properties.radius.units)n=t-this.max_radius*a,h=t+this.max_radius*a,d=r-this.max_radius*a,l=r+this.max_radius*a;else{const s=i-this.max_size*a,t=i+this.max_size*a;[n,h]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_size*a,c=e+this.max_size*a;[d,l]=this.renderer.yscale.r_invert(r,c)}const c=this.index.indices({x0:n,x1:h,y0:d,y1:l}),_=[];if(this.use_radius&&\"data\"==this.model.properties.radius.units)for(const s of c){const i=(this.sradius[s]*a)**2,[e,n]=this.renderer.xscale.r_compute(t,this._x[s]),[h,d]=this.renderer.yscale.r_compute(r,this._y[s]);(e-n)**2+(h-d)**2<=i&&_.push(s)}else for(const s of c){const t=(this.sradius[s]*a)**2;(this.sx[s]-i)**2+(this.sy[s]-e)**2<=t&&_.push(s)}return new m.Selection({indices:_})}_hit_span(s){const{sx:i,sy:e}=s,t=this.bounds();let r,a,n,h;if(\"h\"==s.direction){let s,e;if(n=t.y0,h=t.y1,this.use_radius&&\"data\"==this.model.properties.radius.units)s=i-this.max_radius,e=i+this.max_radius,[r,a]=this.renderer.xscale.r_invert(s,e);else{const t=this.max_size/2;s=i-t,e=i+t,[r,a]=this.renderer.xscale.r_invert(s,e)}}else{let s,i;if(r=t.x0,a=t.x1,this.use_radius&&\"data\"==this.model.properties.radius.units)s=e-this.max_radius,i=e+this.max_radius,[n,h]=this.renderer.yscale.r_invert(s,i);else{const t=this.max_size/2;s=e-t,i=e+t,[n,h]=this.renderer.yscale.r_invert(s,i)}}const d=[...this.index.indices({x0:r,x1:a,y0:n,y1:h})];return new m.Selection({indices:d})}_hit_rect(s){const{sx0:i,sx1:e,sy0:t,sy1:r}=s,[a,n]=this.renderer.xscale.r_invert(i,e),[h,d]=this.renderer.yscale.r_invert(t,r),l=[...this.index.indices({x0:a,x1:n,y0:h,y1:d})];return new m.Selection({indices:l})}_hit_poly(s){const{sx:i,sy:e}=s,t=o.range(0,this.sx.length),r=[];for(let s=0,a=t.length;s({angle:[u.AngleSpec,0],size:[u.ScreenDistanceSpec,{value:4}],radius:[u.NullDistanceSpec,null],radius_dimension:[c.RadiusDimension,\"x\"],hit_dilation:[s,1]})))}}e.Circle=p,p.__name__=\"Circle\",p.init_Circle()},\n function _(t,e,s,i,a){i();const r=t(1),o=t(109),_=t(113),l=r.__importDefault(t(284)),h=r.__importDefault(t(285)),n=t(282),f=t(12),u=t(19),c=t(24),g=t(22),b=t(11);function d(t,e,s,i,a,r,o){if(a.doit)if(r.is_Scalar()&&o.is_Scalar()){e.used=!1;const[i,a,_,l]=g.color2rgba(r.value,o.value);t.set_attribute(s,\"vec4\",[i/255,a/255,_/255,l/255])}else{let a;if(e.used=!0,r.is_Vector()){const t=new c.ColorArray(r.array);if(a=new c.RGBAArray(t.buffer),!o.is_Scalar()||1!=o.value)for(let t=0;t2*t))),i.data_changed=!1),this.visuals_changed&&(this._set_visuals(a),this.visuals_changed=!1),this.prog.set_uniform(\"u_pixel_ratio\",\"float\",[s.pixel_ratio]),this.prog.set_uniform(\"u_canvas_size\",\"vec2\",[s.width,s.height]),this.prog.set_attribute(\"a_sx\",\"float\",i.vbo_sx),this.prog.set_attribute(\"a_sy\",\"float\",i.vbo_sy),this.prog.set_attribute(\"a_size\",\"float\",i.vbo_s),this.prog.set_attribute(\"a_angle\",\"float\",i.vbo_a),0!=t.length)if(t.length===a)this.prog.draw(this.gl.POINTS,[0,a]);else if(a<65535){const e=window.navigator.userAgent;e.indexOf(\"MSIE \")+e.indexOf(\"Trident/\")+e.indexOf(\"Edge/\")>0&&u.logger.warn(\"WebGL warning: IE is known to produce 1px sprites whith selections.\"),this.index_buffer.set_size(2*t.length),this.index_buffer.set_data(0,new Uint16Array(t)),this.prog.draw(this.gl.POINTS,this.index_buffer)}else{const e=64e3,s=[];for(let t=0,i=Math.ceil(a/e);t2*t))):this.vbo_s.set_data(0,new Float32Array(this.glyph.size))}_set_visuals(t){const{line:e,fill:s}=this.glyph.visuals;!function(t,e,s,i,a,r){if(a.doit){if(r.is_Scalar())e.used=!1,t.set_attribute(s,\"float\",[r.value]);else if(r.is_Vector()){e.used=!0;const a=new Float32Array(r.array);e.set_size(4*i),e.set_data(0,a),t.set_attribute(s,\"float\",e)}}else e.used=!1,t.set_attribute(s,\"float\",[0])}(this.prog,this.vbo_linewidth,\"a_linewidth\",t,e,e.line_width),d(this.prog,this.vbo_fg_color,\"a_fg_color\",t,e,e.line_color,e.line_alpha),d(this.prog,this.vbo_bg_color,\"a_bg_color\",t,s,s.fill_color,s.fill_alpha),this.prog.set_uniform(\"u_antialias\",\"float\",[.8])}}s.MarkerGL=p,p.__name__=\"MarkerGL\"},\n function _(n,i,a,o,_){o();a.default=\"\\nprecision mediump float;\\nconst float SQRT_2 = 1.4142135623730951;\\n//\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size;\\nuniform vec2 u_offset;\\nuniform vec2 u_scale;\\nuniform float u_antialias;\\n//\\nattribute float a_sx;\\nattribute float a_sy;\\nattribute float a_size;\\nattribute float a_angle; // in radians\\nattribute float a_linewidth;\\nattribute vec4 a_fg_color;\\nattribute vec4 a_bg_color;\\n//\\nvarying float v_linewidth;\\nvarying float v_size;\\nvarying vec4 v_fg_color;\\nvarying vec4 v_bg_color;\\nvarying vec2 v_rotation;\\n\\nvoid main (void)\\n{\\n v_size = a_size * u_pixel_ratio;\\n v_linewidth = a_linewidth * u_pixel_ratio;\\n v_fg_color = a_fg_color;\\n v_bg_color = a_bg_color;\\n v_rotation = vec2(cos(-a_angle), sin(-a_angle));\\n vec2 pos = vec2(a_sx, a_sy); // in pixels\\n pos += 0.5; // make up for Bokeh's offset\\n pos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(pos*2.0-1.0, 0.0, 1.0);\\n gl_Position.y *= -1.0;\\n gl_PointSize = SQRT_2 * v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\n}\\n\"},\n function _(n,a,s,e,t){e();s.default='\\nprecision mediump float;\\n\\nconst float SQRT_2 = 1.4142135623730951;\\nconst float PI = 3.14159265358979323846264;\\n\\nconst float IN_ANGLE = 0.6283185307179586; // PI/5. = 36 degrees (star of 5 pikes)\\n//const float OUT_ANGLE = PI/2. - IN_ANGLE; // External angle for regular stars\\nconst float COS_A = 0.8090169943749475; // cos(IN_ANGLE)\\nconst float SIN_A = 0.5877852522924731; // sin(IN_ANGLE)\\nconst float COS_B = 0.5877852522924731; // cos(OUT_ANGLE)\\nconst float SIN_B = 0.8090169943749475; // sin(OUT_ANGLE)\\n\\n//\\nuniform float u_antialias;\\n//\\nvarying vec4 v_fg_color;\\nvarying vec4 v_bg_color;\\nvarying float v_linewidth;\\nvarying float v_size;\\nvarying vec2 v_rotation;\\n\\n#ifdef USE_ASTERISK\\n// asterisk\\nfloat marker(vec2 P, float size)\\n{\\n // Masks\\n float diamond = max(abs(SQRT_2 / 2.0 * (P.x - P.y)), abs(SQRT_2 / 2.0 * (P.x + P.y))) - size / (2.0 * SQRT_2);\\n float square = max(abs(P.x), abs(P.y)) - size / (2.0 * SQRT_2);\\n // Shapes\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n float cross = min(abs(P.x), abs(P.y)) - size / 100.0; // bit of \"width\" for aa\\n // Result is union of masked shapes\\n return min(max(X, diamond), max(cross, square));\\n}\\n#endif\\n\\n#ifdef USE_CIRCLE\\n// circle\\nfloat marker(vec2 P, float size)\\n{\\n return length(P) - size/2.0;\\n}\\n#endif\\n\\n#ifdef USE_SQUARE\\n// square\\nfloat marker(vec2 P, float size)\\n{\\n return max(abs(P.x), abs(P.y)) - size/2.0;\\n}\\n#endif\\n\\n#ifdef USE_DIAMOND\\n// diamond\\nfloat marker(vec2 P, float size)\\n{\\n float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\n return r1 / SQRT_2;\\n}\\n#endif\\n\\n#ifdef USE_HEX\\n// hex\\nfloat marker(vec2 P, float size)\\n{\\n vec2 q = abs(P);\\n return max(q.y * 0.57735 + q.x - 1.0 * size/2.0, q.y - 0.866 * size/2.0);\\n}\\n#endif\\n\\n#ifdef USE_STAR\\n// star\\n// https://iquilezles.org/www/articles/distfunctions2d/distfunctions2d.htm\\nfloat marker(vec2 P, float size)\\n{\\n float bn = mod(atan(P.x, -P.y), 2.0*IN_ANGLE) - IN_ANGLE;\\n P = length(P)*vec2(cos(bn), abs(sin(bn)));\\n P -= size*vec2(COS_A, SIN_A)/2.;\\n P += vec2(COS_B, SIN_B)*clamp(-(P.x*COS_B + P.y*SIN_B), 0.0, size*SIN_A/SIN_B/2.);\\n\\n return length(P)*sign(P.x);\\n}\\n#endif\\n\\n#ifdef USE_TRIANGLE\\n// triangle\\nfloat marker(vec2 P, float size)\\n{\\n P.y -= size * 0.3;\\n float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / 1.6;\\n float r2 = P.y;\\n return max(r1 / SQRT_2, r2); // Intersect diamond with rectangle\\n}\\n#endif\\n\\n#ifdef USE_INVERTED_TRIANGLE\\n// inverted_triangle\\nfloat marker(vec2 P, float size)\\n{\\n P.y += size * 0.3;\\n float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / 1.6;\\n float r2 = - P.y;\\n return max(r1 / SQRT_2, r2); // Intersect diamond with rectangle\\n}\\n#endif\\n\\n#ifdef USE_CROSS\\n// cross\\nfloat marker(vec2 P, float size)\\n{\\n float square = max(abs(P.x), abs(P.y)) - size / 2.5; // 2.5 is a tweak\\n float cross = min(abs(P.x), abs(P.y)) - size / 100.0; // bit of \"width\" for aa\\n return max(square, cross);\\n}\\n#endif\\n\\n#ifdef USE_CIRCLE_CROSS\\n// circle_cross\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float circle = length(P) - size/2.0;\\n float c1 = max(circle, s1);\\n float c2 = max(circle, s2);\\n float c3 = max(circle, s3);\\n float c4 = max(circle, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n#endif\\n\\n#ifdef USE_SQUARE_CROSS\\n// square_cross\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float square = max(abs(P.x), abs(P.y)) - size/2.0;\\n float c1 = max(square, s1);\\n float c2 = max(square, s2);\\n float c3 = max(square, s3);\\n float c4 = max(square, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n#endif\\n\\n#ifdef USE_DIAMOND_CROSS\\n// diamond_cross\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\n float diamond = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\n diamond /= SQRT_2;\\n float c1 = max(diamond, s1);\\n float c2 = max(diamond, s2);\\n float c3 = max(diamond, s3);\\n float c4 = max(diamond, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n#endif\\n\\n#ifdef USE_X\\n// x\\nfloat marker(vec2 P, float size)\\n{\\n float circle = length(P) - size / 1.6;\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n return max(circle, X);\\n}\\n#endif\\n\\n#ifdef USE_CIRCLE_X\\n// circle_x\\nfloat marker(vec2 P, float size)\\n{\\n float x = P.x - P.y;\\n float y = P.x + P.y;\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\n float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\n float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\n float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float circle = length(P) - size/2.0;\\n float c1 = max(circle, s1);\\n float c2 = max(circle, s2);\\n float c3 = max(circle, s3);\\n float c4 = max(circle, s4);\\n // Union\\n float almost = min(min(min(c1, c2), c3), c4);\\n // In this case, the X is also outside of the main shape\\n float Xmask = length(P) - size / 1.6; // a circle\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n return min(max(X, Xmask), almost);\\n}\\n#endif\\n\\n#ifdef USE_SQUARE_X\\n// square_x\\nfloat marker(vec2 P, float size)\\n{\\n float x = P.x - P.y;\\n float y = P.x + P.y;\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\n float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\n float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\n float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float square = max(abs(P.x), abs(P.y)) - size/2.0;\\n float c1 = max(square, s1);\\n float c2 = max(square, s2);\\n float c3 = max(square, s3);\\n float c4 = max(square, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n#endif\\n\\nvec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)\\n{\\n vec4 frag_color;\\n float t = linewidth/2.0 - antialias;\\n float signed_distance = distance;\\n float border_distance = abs(signed_distance) - t;\\n float alpha = border_distance/antialias;\\n alpha = exp(-alpha*alpha);\\n\\n // If fg alpha is zero, it probably means no outline. To avoid a dark outline\\n // shining through due to aa, we set the fg color to the bg color. Avoid if (i.e. branching).\\n float select = float(bool(fg_color.a));\\n fg_color.rgb = select * fg_color.rgb + (1.0 - select) * bg_color.rgb;\\n // Similarly, if we want a transparent bg\\n select = float(bool(bg_color.a));\\n bg_color.rgb = select * bg_color.rgb + (1.0 - select) * fg_color.rgb;\\n\\n if( border_distance < 0.0)\\n frag_color = fg_color;\\n else if( signed_distance < 0.0 ) {\\n frag_color = mix(bg_color, fg_color, sqrt(alpha));\\n } else {\\n if( abs(signed_distance) < (linewidth/2.0 + antialias) ) {\\n frag_color = vec4(fg_color.rgb, fg_color.a * alpha);\\n } else {\\n discard;\\n }\\n }\\n return frag_color;\\n}\\n\\nvoid main()\\n{\\n vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);\\n P = vec2(v_rotation.x*P.x - v_rotation.y*P.y,\\n v_rotation.y*P.x + v_rotation.x*P.y);\\n float point_size = SQRT_2*v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\n float distance = marker(P*point_size, v_size);\\n gl_FragColor = outline(distance, v_linewidth, u_antialias, v_fg_color, v_bg_color);\\n}\\n'},\n function _(e,l,i,s,t){s();const _=e(287);class p extends _.EllipseOvalView{}i.EllipseView=p,p.__name__=\"EllipseView\";class n extends _.EllipseOval{constructor(e){super(e)}static init_Ellipse(){this.prototype.default_view=p}}i.Ellipse=n,n.__name__=\"Ellipse\",n.init_Ellipse()},\n function _(t,s,i,e,h){e();const r=t(1),a=t(288),n=r.__importStar(t(107)),l=t(24),o=t(59);class _ extends a.CenterRotatableView{_map_data(){\"data\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this.width,\"center\"):this.sw=l.to_screen(this.width),\"data\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this.height,\"center\"):this.sh=l.to_screen(this.height)}_render(t,s,i){const{sx:e,sy:h,sw:r,sh:a,angle:n}=null!=i?i:this;for(const i of s){const s=e[i],l=h[i],o=r[i],_=a[i],d=n.get(i);isNaN(s+l+o+_+d)||(t.beginPath(),t.ellipse(s,l,o/2,_/2,d,0,2*Math.PI),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,i),t.fill()),this.visuals.hatch.doit&&(this.visuals.hatch.set_vectorize(t,i),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,i),t.stroke()))}}_hit_point(t){let s,i,e,h,r,a,l,_,d;const{sx:c,sy:x}=t,w=this.renderer.xscale.invert(c),p=this.renderer.yscale.invert(x);\"data\"==this.model.properties.width.units?(s=w-this.max_width,i=w+this.max_width):(a=c-this.max_width,l=c+this.max_width,[s,i]=this.renderer.xscale.r_invert(a,l)),\"data\"==this.model.properties.height.units?(e=p-this.max_height,h=p+this.max_height):(_=x-this.max_height,d=x+this.max_height,[e,h]=this.renderer.yscale.r_invert(_,d));const m=this.index.indices({x0:s,x1:i,y0:e,y1:h}),v=[];for(const t of m)r=n.point_in_ellipse(c,x,this.angle.get(t),this.sh[t]/2,this.sw[t]/2,this.sx[t],this.sy[t]),r&&v.push(t);return new o.Selection({indices:v})}draw_legend_for_index(t,{x0:s,y0:i,x1:e,y1:h},r){const a=r+1,n=new Array(a);n[r]=(s+e)/2;const l=new Array(a);l[r]=(i+h)/2;const o=this.sw[r]/this.sh[r],_=.8*Math.min(Math.abs(e-s),Math.abs(h-i)),d=new Array(a),c=new Array(a);o>1?(d[r]=_,c[r]=_/o):(d[r]=_*o,c[r]=_),this._render(t,[r],{sx:n,sy:l,sw:d,sh:c,_angle:[0]})}}i.EllipseOvalView=_,_.__name__=\"EllipseOvalView\";class d extends a.CenterRotatable{constructor(t){super(t)}}i.EllipseOval=d,d.__name__=\"EllipseOval\"},\n function _(t,e,i,a,n){a();const s=t(1),h=t(64),r=t(48),o=s.__importStar(t(18));class _ extends h.XYGlyphView{get max_w2(){return\"data\"==this.model.properties.width.units?this.max_width/2:0}get max_h2(){return\"data\"==this.model.properties.height.units?this.max_height/2:0}_bounds({x0:t,x1:e,y0:i,y1:a}){const{max_w2:n,max_h2:s}=this;return{x0:t-n,x1:e+n,y0:i-s,y1:a+s}}}i.CenterRotatableView=_,_.__name__=\"CenterRotatableView\";class l extends h.XYGlyph{constructor(t){super(t)}static init_CenterRotatable(){this.mixins([r.LineVector,r.FillVector,r.HatchVector]),this.define((({})=>({angle:[o.AngleSpec,0],width:[o.DistanceSpec,{field:\"width\"}],height:[o.DistanceSpec,{field:\"height\"}]})))}}i.CenterRotatable=l,l.__name__=\"CenterRotatable\",l.init_CenterRotatable()},\n function _(t,e,s,i,h){i();const r=t(1),a=t(290),n=t(24),_=r.__importStar(t(18));class o extends a.BoxView{scenterxy(t){return[(this.sleft[t]+this.sright[t])/2,this.sy[t]]}_lrtb(t){const e=this._left[t],s=this._right[t],i=this._y[t],h=this.height.get(t)/2;return[Math.min(e,s),Math.max(e,s),i+h,i-h]}_map_data(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this.height,\"center\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);const t=this.sy.length;this.stop=new n.ScreenArray(t),this.sbottom=new n.ScreenArray(t);for(let e=0;e({left:[_.XCoordinateSpec,{value:0}],y:[_.YCoordinateSpec,{field:\"y\"}],height:[_.NumberSpec,{value:1}],right:[_.XCoordinateSpec,{field:\"right\"}]})))}}s.HBar=c,c.__name__=\"HBar\",c.init_HBar()},\n function _(t,e,s,i,r){i();const n=t(48),o=t(98),a=t(106),h=t(59);class c extends o.GlyphView{get_anchor_point(t,e,s){const i=Math.min(this.sleft[e],this.sright[e]),r=Math.max(this.sright[e],this.sleft[e]),n=Math.min(this.stop[e],this.sbottom[e]),o=Math.max(this.sbottom[e],this.stop[e]);switch(t){case\"top_left\":return{x:i,y:n};case\"top\":case\"top_center\":return{x:(i+r)/2,y:n};case\"top_right\":return{x:r,y:n};case\"bottom_left\":return{x:i,y:o};case\"bottom\":case\"bottom_center\":return{x:(i+r)/2,y:o};case\"bottom_right\":return{x:r,y:o};case\"left\":case\"center_left\":return{x:i,y:(n+o)/2};case\"center\":case\"center_center\":return{x:(i+r)/2,y:(n+o)/2};case\"right\":case\"center_right\":return{x:r,y:(n+o)/2}}}_index_data(t){const{min:e,max:s}=Math,{data_size:i}=this;for(let r=0;r({r:[c.NumberSpec,{field:\"r\"}],q:[c.NumberSpec,{field:\"q\"}],scale:[c.NumberSpec,1],size:[e,1],aspect_scale:[e,1],orientation:[h.HexTileOrientation,\"pointytop\"]}))),this.override({line_color:null})}}s.HexTile=y,y.__name__=\"HexTile\",y.init_HexTile()},\n function _(e,a,t,_,s){_();const i=e(293),n=e(203),r=e(214);class o extends i.ImageBaseView{connect_signals(){super.connect_signals(),this.connect(this.model.color_mapper.change,(()=>this._update_image()))}_update_image(){null!=this.image_data&&(this._set_data(null),this.renderer.request_render())}_flat_img_to_buf8(e){return this.model.color_mapper.rgba_mapper.v_compute(e)}}t.ImageView=o,o.__name__=\"ImageView\";class m extends i.ImageBase{constructor(e){super(e)}static init_Image(){this.prototype.default_view=o,this.define((({Ref:e})=>({color_mapper:[e(n.ColorMapper),()=>new r.LinearColorMapper({palette:[\"#000000\",\"#252525\",\"#525252\",\"#737373\",\"#969696\",\"#bdbdbd\",\"#d9d9d9\",\"#f0f0f0\",\"#ffffff\"]})]})))}}t.Image=m,m.__name__=\"Image\",m.init_Image()},\n function _(e,t,i,s,a){s();const h=e(1),n=e(64),r=e(24),_=h.__importStar(e(18)),d=e(59),l=e(9),g=e(29),o=e(11);class c extends n.XYGlyphView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,(()=>this.renderer.request_render()))}_render(e,t,i){const{image_data:s,sx:a,sy:h,sw:n,sh:r}=null!=i?i:this,_=e.getImageSmoothingEnabled();e.setImageSmoothingEnabled(!1),e.globalAlpha=this.model.global_alpha;for(const i of t){const t=s[i],_=a[i],d=h[i],l=n[i],g=r[i];if(null==t||isNaN(_+d+l+g))continue;const o=d;e.translate(0,o),e.scale(1,-1),e.translate(0,-o),e.drawImage(t,0|_,0|d,l,g),e.translate(0,o),e.scale(1,-1),e.translate(0,-o)}e.setImageSmoothingEnabled(_)}_set_data(e){this._set_width_heigh_data();for(let t=0,i=this.image.length;t({image:[_.NDArraySpec,{field:\"image\"}],dw:[_.DistanceSpec,{field:\"dw\"}],dh:[_.DistanceSpec,{field:\"dh\"}],dilate:[e,!1],global_alpha:[t,1]})))}}i.ImageBase=m,m.__name__=\"ImageBase\",m.init_ImageBase()},\n function _(e,a,t,_,i){_();const n=e(293),s=e(8);class r extends n.ImageBaseView{_flat_img_to_buf8(e){let a;return a=s.isArray(e)?new Uint32Array(e):e,new Uint8ClampedArray(a.buffer)}}t.ImageRGBAView=r,r.__name__=\"ImageRGBAView\";class m extends n.ImageBase{constructor(e){super(e)}static init_ImageRGBA(){this.prototype.default_view=r}}t.ImageRGBA=m,m.__name__=\"ImageRGBA\",m.init_ImageRGBA()},\n function _(e,t,s,r,a){r();const i=e(1),n=e(64),o=e(24),c=e(20),_=i.__importStar(e(18)),h=e(12),l=e(296);class d extends n.XYGlyphView{constructor(){super(...arguments),this._images_rendered=!1,this._set_data_iteration=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,(()=>this.renderer.request_render()))}_index_data(e){const{data_size:t}=this;for(let s=0;s{this._set_data_iteration==r&&(this.image[a]=e,this.renderer.request_render())},attempts:t+1,timeout:s})}const a=\"data\"==this.model.properties.w.units,i=\"data\"==this.model.properties.h.units,n=this._x.length,c=new o.ScreenArray(a?2*n:n),_=new o.ScreenArray(i?2*n:n),{anchor:d}=this.model;function m(e,t){switch(d){case\"top_left\":case\"bottom_left\":case\"left\":case\"center_left\":return[e,e+t];case\"top\":case\"top_center\":case\"bottom\":case\"bottom_center\":case\"center\":case\"center_center\":return[e-t/2,e+t/2];case\"top_right\":case\"bottom_right\":case\"right\":case\"center_right\":return[e-t,e]}}function g(e,t){switch(d){case\"top_left\":case\"top\":case\"top_center\":case\"top_right\":return[e,e-t];case\"bottom_left\":case\"bottom\":case\"bottom_center\":case\"bottom_right\":return[e+t,e];case\"left\":case\"center_left\":case\"center\":case\"center_center\":case\"right\":case\"center_right\":return[e+t/2,e-t/2]}}if(a)for(let e=0;e({url:[_.StringSpec,{field:\"url\"}],anchor:[c.Anchor,\"top_left\"],global_alpha:[s,1],angle:[_.AngleSpec,0],w:[_.NullDistanceSpec,null],h:[_.NullDistanceSpec,null],dilate:[e,!1],retry_attempts:[t,0],retry_timeout:[t,0]})))}}s.ImageURL=m,m.__name__=\"ImageURL\",m.init_ImageURL()},\n function _(i,e,t,s,o){s();const a=i(19);class n{constructor(i,e={}){this._image=new Image,this._finished=!1;const{attempts:t=1,timeout:s=1}=e;this.promise=new Promise(((o,n)=>{this._image.crossOrigin=\"anonymous\";let r=0;this._image.onerror=()=>{if(++r==t){const s=`unable to load ${i} image after ${t} attempts`;if(a.logger.warn(s),null==this._image.crossOrigin)return void(null!=e.failed&&e.failed());a.logger.warn(`attempting to load ${i} without a cross origin policy`),this._image.crossOrigin=null,r=0}setTimeout((()=>this._image.src=i),s)},this._image.onload=()=>{this._finished=!0,null!=e.loaded&&e.loaded(this._image),o(this._image)},this._image.src=i}))}get finished(){return this._finished}get image(){if(this._finished)return this._image;throw new Error(\"not loaded yet\")}}t.ImageLoader=n,n.__name__=\"ImageLoader\"},\n function _(t,s,e,i,n){i();const o=t(1),l=t(101),r=t(98),h=t(106),_=t(12),a=t(12),c=t(48),d=o.__importStar(t(107)),x=o.__importStar(t(18)),y=t(59),f=t(11);class g extends r.GlyphView{_project_data(){}_index_data(t){const{min:s,max:e}=Math,{data_size:i}=this;for(let n=0;n1&&c.length>1)for(let e=1,i=n.length;e1){let l=!1;for(let t=1;t({xs:[x.XCoordinateSeqSeqSeqSpec,{field:\"xs\"}],ys:[x.YCoordinateSeqSeqSeqSpec,{field:\"ys\"}]}))),this.mixins([c.LineVector,c.FillVector,c.HatchVector])}}e.MultiPolygons=p,p.__name__=\"MultiPolygons\",p.init_MultiPolygons()},\n function _(a,t,e,l,s){l();const _=a(287),i=a(12);class n extends _.EllipseOvalView{_map_data(){super._map_data(),i.mul(this.sw,.75)}}e.OvalView=n,n.__name__=\"OvalView\";class v extends _.EllipseOval{constructor(a){super(a)}static init_Oval(){this.prototype.default_view=n}}e.Oval=v,v.__name__=\"Oval\",v.init_Oval()},\n function _(t,e,i,o,s){o();const r=t(1),_=t(290),d=r.__importStar(t(18));class n extends _.BoxView{scenterxy(t){return[this.sleft[t]/2+this.sright[t]/2,this.stop[t]/2+this.sbottom[t]/2]}_lrtb(t){return[this._left[t],this._right[t],this._top[t],this._bottom[t]]}}i.QuadView=n,n.__name__=\"QuadView\";class a extends _.Box{constructor(t){super(t)}static init_Quad(){this.prototype.default_view=n,this.define((({})=>({right:[d.XCoordinateSpec,{field:\"right\"}],bottom:[d.YCoordinateSpec,{field:\"bottom\"}],left:[d.XCoordinateSpec,{field:\"left\"}],top:[d.YCoordinateSpec,{field:\"top\"}]})))}}i.Quad=a,a.__name__=\"Quad\",a.init_Quad()},\n function _(e,t,i,s,n){s();const a=e(1),c=e(48),o=e(65),r=e(98),_=e(106),d=a.__importStar(e(18));function l(e,t,i){if(t==(e+i)/2)return[e,i];{const s=(e-t)/(e-2*t+i),n=e*(1-s)**2+2*t*(1-s)*s+i*s**2;return[Math.min(e,i,n),Math.max(e,i,n)]}}class x extends r.GlyphView{_project_data(){o.inplace.project_xy(this._x0,this._y0),o.inplace.project_xy(this._x1,this._y1)}_index_data(e){const{_x0:t,_x1:i,_y0:s,_y1:n,_cx:a,_cy:c,data_size:o}=this;for(let r=0;r({x0:[d.XCoordinateSpec,{field:\"x0\"}],y0:[d.YCoordinateSpec,{field:\"y0\"}],x1:[d.XCoordinateSpec,{field:\"x1\"}],y1:[d.YCoordinateSpec,{field:\"y1\"}],cx:[d.XCoordinateSpec,{field:\"cx\"}],cy:[d.YCoordinateSpec,{field:\"cy\"}]}))),this.mixins(c.LineVector)}}i.Quadratic=y,y.__name__=\"Quadratic\",y.init_Quadratic()},\n function _(e,t,s,i,n){i();const a=e(1),l=e(64),h=e(106),r=e(48),o=e(24),_=a.__importStar(e(18));class c extends l.XYGlyphView{_map_data(){\"data\"==this.model.properties.length.units?this.slength=this.sdist(this.renderer.xscale,this._x,this.length):this.slength=o.to_screen(this.length);const{width:e,height:t}=this.renderer.plot_view.frame.bbox,s=2*(e+t),{slength:i}=this;for(let e=0,t=i.length;e({length:[_.DistanceSpec,0],angle:[_.AngleSpec,0]})))}}s.Ray=g,g.__name__=\"Ray\",g.init_Ray()},\n function _(t,s,e,i,h){i();const r=t(288),n=t(106),a=t(24),o=t(12),l=t(59);class _ extends r.CenterRotatableView{_map_data(){if(\"data\"==this.model.properties.width.units)[this.sw,this.sx0]=this._map_dist_corner_for_data_side_length(this._x,this.width,this.renderer.xscale);else{this.sw=a.to_screen(this.width);const t=this.sx.length;this.sx0=new a.ScreenArray(t);for(let s=0;s({dilate:[t,!1]})))}}e.Rect=c,c.__name__=\"Rect\",c.init_Rect()},\n function _(e,t,r,s,i){s();const a=e(1),n=e(304),_=e(305),l=e(283),c=a.__importStar(e(18));class o extends n.MarkerView{_init_webgl(){const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e){const t=new Set(this.marker);if(1==t.size){const[r]=[...t];if(l.MarkerGL.is_supported(r)){const{glglyph:t}=this;if(null==t||t.marker_type!=r)return void(this.glglyph=new l.MarkerGL(e.gl,this,r))}}}delete this.glglyph}_set_data(e){super._set_data(e),this._init_webgl()}_render(e,t,r){const{sx:s,sy:i,size:a,angle:n,marker:l}=null!=r?r:this;for(const r of t){const t=s[r],c=i[r],o=a.get(r),g=n.get(r),h=l.get(r);if(isNaN(t+c+o+g)||null==h)continue;const d=o/2;e.beginPath(),e.translate(t,c),g&&e.rotate(g),_.marker_funcs[h](e,r,d,this.visuals),g&&e.rotate(-g),e.translate(-t,-c)}}draw_legend_for_index(e,{x0:t,x1:r,y0:s,y1:i},a){const n=a+1,_=this.marker.get(a),l=Object.assign(Object.assign({},this._get_legend_args({x0:t,x1:r,y0:s,y1:i},a)),{marker:new c.UniformScalar(_,n)});this._render(e,[a],l)}}r.ScatterView=o,o.__name__=\"ScatterView\";class g extends n.Marker{constructor(e){super(e)}static init_Scatter(){this.prototype.default_view=o,this.define((()=>({marker:[c.MarkerSpec,{value:\"circle\"}]})))}}r.Scatter=g,g.__name__=\"Scatter\",g.init_Scatter()},\n function _(e,t,s,i,n){i();const r=e(1),a=e(64),c=e(48),_=r.__importStar(e(107)),o=r.__importStar(e(18)),h=e(9),l=e(59);class x extends a.XYGlyphView{_render(e,t,s){const{sx:i,sy:n,size:r,angle:a}=null!=s?s:this;for(const s of t){const t=i[s],c=n[s],_=r.get(s),o=a.get(s);if(isNaN(t+c+_+o))continue;const h=_/2;e.beginPath(),e.translate(t,c),o&&e.rotate(o),this._render_one(e,s,h,this.visuals),o&&e.rotate(-o),e.translate(-t,-c)}}_mask_data(){const{x_target:e,y_target:t}=this.renderer.plot_view.frame,s=e.widen(this.max_size).map((e=>this.renderer.xscale.invert(e))),i=t.widen(this.max_size).map((e=>this.renderer.yscale.invert(e)));return this.index.indices({x0:s.start,x1:s.end,y0:i.start,y1:i.end})}_hit_point(e){const{sx:t,sy:s}=e,{max_size:i}=this,{hit_dilation:n}=this.model,r=t-i*n,a=t+i*n,[c,_]=this.renderer.xscale.r_invert(r,a),o=s-i*n,h=s+i*n,[x,d]=this.renderer.yscale.r_invert(o,h),y=this.index.indices({x0:c,x1:_,y0:x,y1:d}),g=[];for(const e of y){const i=this.size.get(e)/2*n;Math.abs(this.sx[e]-t)<=i&&Math.abs(this.sy[e]-s)<=i&&g.push(e)}return new l.Selection({indices:g})}_hit_span(e){const{sx:t,sy:s}=e,i=this.bounds(),n=this.max_size/2;let r,a,c,_;if(\"h\"==e.direction){c=i.y0,_=i.y1;const e=t-n,s=t+n;[r,a]=this.renderer.xscale.r_invert(e,s)}else{r=i.x0,a=i.x1;const e=s-n,t=s+n;[c,_]=this.renderer.yscale.r_invert(e,t)}const o=[...this.index.indices({x0:r,x1:a,y0:c,y1:_})];return new l.Selection({indices:o})}_hit_rect(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,[r,a]=this.renderer.xscale.r_invert(t,s),[c,_]=this.renderer.yscale.r_invert(i,n),o=[...this.index.indices({x0:r,x1:a,y0:c,y1:_})];return new l.Selection({indices:o})}_hit_poly(e){const{sx:t,sy:s}=e,i=h.range(0,this.sx.length),n=[];for(let e=0,r=i.length;e({size:[o.ScreenDistanceSpec,{value:4}],angle:[o.AngleSpec,0],hit_dilation:[e,1]})))}}s.Marker=d,d.__name__=\"Marker\",d.init_Marker()},\n function _(t,e,i,o,l){o();const n=Math.sqrt(3),c=Math.sqrt(5),r=(c+1)/4,s=Math.sqrt((5-c)/8),f=(c-1)/4,a=Math.sqrt((5+c)/8);function h(t,e){t.rotate(Math.PI/4),d(t,e),t.rotate(-Math.PI/4)}function v(t,e){const i=e*n,o=i/3;t.moveTo(-i/2,-o),t.lineTo(0,0),t.lineTo(i/2,-o),t.lineTo(0,0),t.lineTo(0,e)}function d(t,e){t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-e,0),t.lineTo(e,0)}function _(t,e){t.moveTo(0,e),t.lineTo(e/1.5,0),t.lineTo(0,-e),t.lineTo(-e/1.5,0),t.closePath()}function u(t,e){const i=e*n,o=i/3;t.moveTo(-e,o),t.lineTo(e,o),t.lineTo(0,o-i),t.closePath()}function z(t,e,i,o){t.arc(0,0,i,0,2*Math.PI,!1),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())}function T(t,e,i,o){_(t,i),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())}function k(t,e,i,o){!function(t,e){t.beginPath(),t.arc(0,0,e/4,0,2*Math.PI,!1),t.closePath()}(t,i),o.line.set_vectorize(t,e),t.fillStyle=t.strokeStyle,t.fill()}function P(t,e,i,o){!function(t,e){const i=e/2,o=n*i;t.moveTo(e,0),t.lineTo(i,-o),t.lineTo(-i,-o),t.lineTo(-e,0),t.lineTo(-i,o),t.lineTo(i,o),t.closePath()}(t,i),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())}function m(t,e,i,o){const l=2*i;t.rect(-i,-i,l,l),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())}function q(t,e,i,o){!function(t,e){const i=Math.sqrt(5-2*c)*e;t.moveTo(0,-e),t.lineTo(i*f,i*a-e),t.lineTo(i*(1+f),i*a-e),t.lineTo(i*(1+f-r),i*(a+s)-e),t.lineTo(i*(1+2*f-r),i*(2*a+s)-e),t.lineTo(0,2*i*a-e),t.lineTo(-i*(1+2*f-r),i*(2*a+s)-e),t.lineTo(-i*(1+f-r),i*(a+s)-e),t.lineTo(-i*(1+f),i*a-e),t.lineTo(-i*f,i*a-e),t.closePath()}(t,i),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())}function M(t,e,i,o){u(t,i),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())}i.marker_funcs={asterisk:function(t,e,i,o){d(t,i),h(t,i),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())},circle:z,circle_cross:function(t,e,i,o){t.arc(0,0,i,0,2*Math.PI,!1),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),d(t,i),t.stroke())},circle_dot:function(t,e,i,o){z(t,e,i,o),k(t,e,i,o)},circle_y:function(t,e,i,o){t.arc(0,0,i,0,2*Math.PI,!1),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),v(t,i),t.stroke())},circle_x:function(t,e,i,o){t.arc(0,0,i,0,2*Math.PI,!1),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),h(t,i),t.stroke())},cross:function(t,e,i,o){d(t,i),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())},diamond:T,diamond_dot:function(t,e,i,o){T(t,e,i,o),k(t,e,i,o)},diamond_cross:function(t,e,i,o){_(t,i),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i/1.5,0),t.lineTo(i/1.5,0),t.stroke())},dot:k,hex:P,hex_dot:function(t,e,i,o){P(t,e,i,o),k(t,e,i,o)},inverted_triangle:function(t,e,i,o){t.rotate(Math.PI),u(t,i),t.rotate(-Math.PI),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())},plus:function(t,e,i,o){const l=3*i/8,n=[l,l,i,i,l,l,-l,-l,-i,-i,-l,-l],c=[i,l,l,-l,-l,-i,-i,-l,-l,l,l,i];t.beginPath();for(let e=0;e<12;e++)t.lineTo(n[e],c[e]);t.closePath(),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())},square:m,square_cross:function(t,e,i,o){const l=2*i;t.rect(-i,-i,l,l),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),d(t,i),t.stroke())},square_dot:function(t,e,i,o){m(t,e,i,o),k(t,e,i,o)},square_pin:function(t,e,i,o){const l=3*i/8;t.moveTo(-i,-i),t.quadraticCurveTo(0,-l,i,-i),t.quadraticCurveTo(l,0,i,i),t.quadraticCurveTo(0,l,-i,i),t.quadraticCurveTo(-l,0,-i,-i),t.closePath(),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())},square_x:function(t,e,i,o){const l=2*i;t.rect(-i,-i,l,l),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.moveTo(-i,i),t.lineTo(i,-i),t.moveTo(-i,-i),t.lineTo(i,i),t.stroke())},star:q,star_dot:function(t,e,i,o){q(t,e,i,o),k(t,e,i,o)},triangle:M,triangle_dot:function(t,e,i,o){M(t,e,i,o),k(t,e,i,o)},triangle_pin:function(t,e,i,o){const l=i*n,c=l/3,r=3*c/8;t.moveTo(-i,c),t.quadraticCurveTo(0,r,i,c),t.quadraticCurveTo(n*r/2,r/2,0,c-l),t.quadraticCurveTo(-n*r/2,r/2,-i,c),t.closePath(),o.fill.doit&&(o.fill.set_vectorize(t,e),t.fill()),o.hatch.doit&&(o.hatch.set_vectorize(t,e),t.fill()),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())},dash:function(t,e,i,o){!function(t,e){t.moveTo(-e,0),t.lineTo(e,0)}(t,i),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())},x:function(t,e,i,o){h(t,i),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())},y:function(t,e,i,o){v(t,i),o.line.doit&&(o.line.set_vectorize(t,e),t.stroke())}}},\n function _(e,t,s,i,n){i();const r=e(1),_=r.__importStar(e(107)),o=r.__importStar(e(18)),h=e(48),a=e(65),c=e(98),d=e(106),x=e(59);class y extends c.GlyphView{_project_data(){a.inplace.project_xy(this._x0,this._y0),a.inplace.project_xy(this._x1,this._y1)}_index_data(e){const{min:t,max:s}=Math,{_x0:i,_x1:n,_y0:r,_y1:_,data_size:o}=this;for(let h=0;h({x0:[o.XCoordinateSpec,{field:\"x0\"}],y0:[o.YCoordinateSpec,{field:\"y0\"}],x1:[o.XCoordinateSpec,{field:\"x1\"}],y1:[o.YCoordinateSpec,{field:\"y1\"}]}))),this.mixins(h.LineVector)}}s.Segment=l,l.__name__=\"Segment\",l.init_Segment()},\n function _(t,e,s,i,n){i();const _=t(1),l=t(64),o=_.__importStar(t(48)),a=t(308);class c extends l.XYGlyphView{_set_data(){const{tension:t,closed:e}=this.model;[this._xt,this._yt]=a.catmullrom_spline(this._x,this._y,20,t,e)}_map_data(){const{x_scale:t,y_scale:e}=this.renderer.coordinates;this.sxt=t.v_compute(this._xt),this.syt=e.v_compute(this._yt)}_render(t,e,s){const{sxt:i,syt:n}=null!=s?s:this;this.visuals.line.set_value(t);const _=i.length;for(let e=0;e<_;e++)0!=e?isNaN(i[e])||isNaN(n[e])?(t.stroke(),t.beginPath()):t.lineTo(i[e],n[e]):(t.beginPath(),t.moveTo(i[e],n[e]));t.stroke()}}s.SplineView=c,c.__name__=\"SplineView\";class h extends l.XYGlyph{constructor(t){super(t)}static init_Spline(){this.prototype.default_view=c,this.mixins(o.LineScalar),this.define((({Boolean:t,Number:e})=>({tension:[e,.5],closed:[t,!1]})))}}s.Spline=h,h.__name__=\"Spline\",h.init_Spline()},\n function _(n,t,e,o,s){o();const c=n(24),l=n(11);e.catmullrom_spline=function(n,t,e=10,o=.5,s=!1){l.assert(n.length==t.length);const r=n.length,f=s?r+1:r,w=c.infer_type(n,t),i=new w(f+2),u=new w(f+2);i.set(n,1),u.set(t,1),s?(i[0]=n[r-1],u[0]=t[r-1],i[f]=n[0],u[f]=t[0],i[f+1]=n[1],u[f+1]=t[1]):(i[0]=n[0],u[0]=t[0],i[f+1]=n[r-1],u[f+1]=t[r-1]);const g=new w(4*(e+1));for(let n=0,t=0;n<=e;n++){const o=n/e,s=o**2,c=o*s;g[t++]=2*c-3*s+1,g[t++]=-2*c+3*s,g[t++]=c-2*s+o,g[t++]=c-s}const h=new w((f-1)*(e+1)),_=new w((f-1)*(e+1));for(let n=1,t=0;n1&&(e.stroke(),o=!1)}o?(e.lineTo(t,a),e.lineTo(r,_)):(e.beginPath(),e.moveTo(n[i],s[i]),o=!0),l=i}e.lineTo(n[r-1],s[r-1]),e.stroke()}}draw_legend_for_index(e,t,i){r.generic_line_scalar_legend(this.visuals,e,t)}}i.StepView=c,c.__name__=\"StepView\";class d extends l.XYGlyph{constructor(e){super(e)}static init_Step(){this.prototype.default_view=c,this.mixins(a.LineScalar),this.define((()=>({mode:[_.StepMode,\"before\"]})))}}i.Step=d,d.__name__=\"Step\",d.init_Step()},\n function _(t,e,s,i,n){i();const o=t(1),_=t(64),h=t(48),l=o.__importStar(t(107)),r=o.__importStar(t(18)),a=t(143),c=t(11),x=t(59);class u extends _.XYGlyphView{_rotate_point(t,e,s,i,n){return[(t-s)*Math.cos(n)-(e-i)*Math.sin(n)+s,(t-s)*Math.sin(n)+(e-i)*Math.cos(n)+i]}_text_bounds(t,e,s,i){return[[t,t+s,t+s,t,t],[e,e,e-i,e-i,e]]}_render(t,e,s){const{sx:i,sy:n,x_offset:o,y_offset:_,angle:h,text:l}=null!=s?s:this;this._sys=[],this._sxs=[];for(const s of e){const e=this._sxs[s]=[],r=this._sys[s]=[],c=i[s],x=n[s],u=o.get(s),f=_.get(s),p=h.get(s),g=l.get(s);if(!isNaN(c+x+u+f+p)&&null!=g&&this.visuals.text.doit){const i=`${g}`;t.save(),t.translate(c+u,x+f),t.rotate(p),this.visuals.text.set_vectorize(t,s);const n=this.visuals.text.font_value(s),{height:o}=a.font_metrics(n),_=this.text_line_height.get(s)*o;if(-1==i.indexOf(\"\\n\")){t.fillText(i,0,0);const s=c+u,n=x+f,o=t.measureText(i).width,[h,l]=this._text_bounds(s,n,o,_);e.push(h),r.push(l)}else{const n=i.split(\"\\n\"),o=_*n.length,h=this.text_baseline.get(s);let l;switch(h){case\"top\":l=0;break;case\"middle\":l=-o/2+_/2;break;case\"bottom\":l=-o+_;break;default:l=0,console.warn(`'${h}' baseline not supported with multi line text`)}for(const s of n){t.fillText(s,0,l);const i=c+u,n=l+x+f,o=t.measureText(s).width,[h,a]=this._text_bounds(i,n,o,_);e.push(h),r.push(a),l+=_}}t.restore()}}}_hit_point(t){const{sx:e,sy:s}=t,i=[];for(let t=0;t({text:[r.NullStringSpec,{field:\"text\"}],angle:[r.AngleSpec,0],x_offset:[r.NumberSpec,0],y_offset:[r.NumberSpec,0]})))}}s.Text=f,f.__name__=\"Text\",f.init_Text()},\n function _(t,s,e,i,r){i();const h=t(1),o=t(290),a=t(24),n=h.__importStar(t(18));class _ extends o.BoxView{scenterxy(t){return[this.sx[t],(this.stop[t]+this.sbottom[t])/2]}_lrtb(t){const s=this.width.get(t)/2,e=this._x[t],i=this._top[t],r=this._bottom[t];return[e-s,e+s,Math.max(i,r),Math.min(i,r)]}_map_data(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this.width,\"center\"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);const t=this.sx.length;this.sleft=new a.ScreenArray(t),this.sright=new a.ScreenArray(t);for(let s=0;s({x:[n.XCoordinateSpec,{field:\"x\"}],bottom:[n.YCoordinateSpec,{value:0}],width:[n.NumberSpec,{value:1}],top:[n.YCoordinateSpec,{field:\"top\"}]})))}}e.VBar=c,c.__name__=\"VBar\",c.init_VBar()},\n function _(e,t,s,i,n){i();const r=e(1),a=e(64),l=e(106),c=e(48),d=e(24),h=e(20),o=r.__importStar(e(18)),_=e(10),u=e(59);class g extends a.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=d.to_screen(this.radius)}_render(e,t,s){const{sx:i,sy:n,sradius:r,start_angle:a,end_angle:l}=null!=s?s:this,c=\"anticlock\"==this.model.direction;for(const s of t){const t=i[s],d=n[s],h=r[s],o=a.get(s),_=l.get(s);isNaN(t+d+h+o+_)||(e.beginPath(),e.arc(t,d,h,o,_,c),e.lineTo(t,d),e.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,s),e.fill()),this.visuals.hatch.doit&&(this.visuals.hatch.set_vectorize(e,s),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,s),e.stroke()))}}_hit_point(e){let t,s,i,n,r,a,l,c,d;const{sx:h,sy:o}=e,g=this.renderer.xscale.invert(h),p=this.renderer.yscale.invert(o),x=2*this.max_radius;\"data\"===this.model.properties.radius.units?(a=g-x,l=g+x,c=p-x,d=p+x):(s=h-x,i=h+x,[a,l]=this.renderer.xscale.r_invert(s,i),n=o-x,r=o+x,[c,d]=this.renderer.yscale.r_invert(n,r));const f=[];for(const e of this.index.indices({x0:a,x1:l,y0:c,y1:d})){const a=this.sradius[e]**2;[s,i]=this.renderer.xscale.r_compute(g,this._x[e]),[n,r]=this.renderer.yscale.r_compute(p,this._y[e]),t=(s-i)**2+(n-r)**2,t<=a&&f.push(e)}const v=\"anticlock\"==this.model.direction,y=[];for(const e of f){const t=Math.atan2(o-this.sy[e],h-this.sx[e]);_.angle_between(-t,-this.start_angle.get(e),-this.end_angle.get(e),v)&&y.push(e)}return new u.Selection({indices:y})}draw_legend_for_index(e,t,s){l.generic_area_vector_legend(this.visuals,e,t,s)}scenterxy(e){const t=this.sradius[e]/2,s=(this.start_angle.get(e)+this.end_angle.get(e))/2;return[this.sx[e]+t*Math.cos(s),this.sy[e]+t*Math.sin(s)]}}s.WedgeView=g,g.__name__=\"WedgeView\";class p extends a.XYGlyph{constructor(e){super(e)}static init_Wedge(){this.prototype.default_view=g,this.mixins([c.LineVector,c.FillVector,c.HatchVector]),this.define((({})=>({direction:[h.Direction,\"anticlock\"],radius:[o.DistanceSpec,{field:\"radius\"}],start_angle:[o.AngleSpec,{field:\"start_angle\"}],end_angle:[o.AngleSpec,{field:\"end_angle\"}]})))}}s.Wedge=p,p.__name__=\"Wedge\",p.init_Wedge()},\n function _(t,_,r,o,a){o();const e=t(1);e.__exportStar(t(126),r),e.__exportStar(t(125),r),e.__exportStar(t(314),r)},\n function _(t,a,o,r,e){r();const n=t(125);class l extends n.LayoutProvider{constructor(t){super(t)}static init_StaticLayoutProvider(){this.define((({Number:t,Tuple:a,Dict:o})=>({graph_layout:[o(a(t,t)),{}]})))}get_node_coordinates(t){var a;const o=null!==(a=t.data.index)&&void 0!==a?a:[],r=o.length,e=new Float64Array(r),n=new Float64Array(r);for(let t=0;tthis.request_render()))}_draw_regions(i){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;const[e,t]=this.grid_coords(\"major\",!1);for(let s=0;st[1]&&(n=t[1]);else{[s,n]=t;for(const i of this.plot_view.axis_views)i.dimension==this.model.dimension&&i.model.x_range_name==this.model.x_range_name&&i.model.y_range_name==this.model.y_range_name&&([s,n]=i.computed_bounds)}return[s,n]}grid_coords(i,e=!0){const t=this.model.dimension,s=(t+1)%2,[n,r]=this.ranges();let[o,d]=this.computed_bounds();[o,d]=[Math.min(o,d),Math.max(o,d)];const l=[[],[]],_=this.model.get_ticker();if(null==_)return l;const a=_.get_ticks(o,d,n,r.min)[i],h=n.min,u=n.max,c=r.min,m=r.max;e||(a[0]!=h&&a.splice(0,0,h),a[a.length-1]!=u&&a.push(u));for(let i=0;i({bounds:[r(n(i,i),e),\"auto\"],dimension:[t(0,1),0],axis:[d(s(o.Axis)),null],ticker:[d(s(l.Ticker)),null]}))),this.override({level:\"underlay\",band_fill_color:null,band_fill_alpha:0,grid_line_color:\"#e5e5e5\",minor_grid_line_color:null})}get_ticker(){return null!=this.ticker?this.ticker:null!=this.axis?this.axis.ticker:null}}t.Grid=u,u.__name__=\"Grid\",u.init_Grid()},\n function _(o,a,x,B,e){B(),e(\"Box\",o(318).Box),e(\"Column\",o(320).Column),e(\"GridBox\",o(321).GridBox),e(\"HTMLBox\",o(322).HTMLBox),e(\"LayoutDOM\",o(319).LayoutDOM),e(\"Panel\",o(323).Panel),e(\"Row\",o(324).Row),e(\"Spacer\",o(325).Spacer),e(\"Tabs\",o(326).Tabs),e(\"WidgetBox\",o(329).WidgetBox)},\n function _(e,n,i,t,s){t();const o=e(319);class c extends o.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,(()=>this.rebuild()))}get child_models(){return this.model.children}}i.BoxView=c,c.__name__=\"BoxView\";class r extends o.LayoutDOM{constructor(e){super(e)}static init_Box(){this.define((({Number:e,Array:n,Ref:i})=>({children:[n(i(o.LayoutDOM)),[]],spacing:[e,0]})))}}i.Box=r,r.__name__=\"Box\",r.init_Box()},\n function _(t,i,e,s,o){s();const l=t(53),n=t(20),h=t(43),a=t(19),r=t(8),_=t(22),d=t(122),c=t(240),u=t(221),m=t(44),p=t(249);class g extends c.DOMView{constructor(){super(...arguments),this._idle_notified=!1,this._offset_parent=null,this._viewport={}}initialize(){super.initialize(),this.el.style.position=this.is_root?\"relative\":\"absolute\",this._child_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this.build_child_views()}remove(){for(const t of this.child_views)t.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener(\"resize\",this._on_resize),this._parent_observer=setInterval((()=>{const t=this.el.offsetParent;this._offset_parent!=t&&(this._offset_parent=t,null!=t&&(this.compute_viewport(),this.invalidate_layout()))}),250));const t=this.model.properties;this.on_change([t.width,t.height,t.min_width,t.min_height,t.max_width,t.max_height,t.margin,t.width_policy,t.height_policy,t.sizing_mode,t.aspect_ratio,t.visible],(()=>this.invalidate_layout())),this.on_change([t.background,t.css_classes],(()=>this.invalidate_render()))}disconnect_signals(){null!=this._parent_observer&&clearTimeout(this._parent_observer),null!=this._on_resize&&window.removeEventListener(\"resize\",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map((t=>this._child_views.get(t)))}async build_child_views(){await d.build_views(this._child_views,this.child_models,{parent:this})}render(){super.render(),h.empty(this.el);const{background:t}=this.model;this.el.style.backgroundColor=null!=t?_.color2css(t):\"\",h.classes(this.el).clear().add(...this.css_classes());for(const t of this.child_views)this.el.appendChild(t.el),t.render()}update_layout(){for(const t of this.child_views)t.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?\"block\":\"none\";const t=this.is_root?this.layout.sizing.margin:void 0;h.position(this.el,this.layout.bbox,t);for(const t of this.child_views)t.update_position()}after_layout(){for(const t of this.child_views)t.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(t){t.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build()}build(){return this.assert_root(),this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const t=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),a.logger.debug(`layout computed in ${Date.now()-t} ms`),this.notify_finished()}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const t of this.child_views)if(!t.has_finished())return!1;return!0}notify_finished(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):this.root.notify_finished()}_width_policy(){return null!=this.model.width?\"fixed\":\"fit\"}_height_policy(){return null!=this.model.height?\"fixed\":\"fit\"}box_sizing(){let{width_policy:t,height_policy:i,aspect_ratio:e}=this.model;\"auto\"==t&&(t=this._width_policy()),\"auto\"==i&&(i=this._height_policy());const{sizing_mode:s}=this.model;if(null!=s)if(\"fixed\"==s)t=i=\"fixed\";else if(\"stretch_both\"==s)t=i=\"max\";else if(\"stretch_width\"==s)t=\"max\";else if(\"stretch_height\"==s)i=\"max\";else switch(null==e&&(e=\"auto\"),s){case\"scale_width\":t=\"max\",i=\"min\";break;case\"scale_height\":t=\"min\",i=\"max\";break;case\"scale_both\":t=\"max\",i=\"max\"}const o={width_policy:t,height_policy:i},{min_width:l,min_height:n}=this.model;null!=l&&(o.min_width=l),null!=n&&(o.min_height=n);const{width:h,height:a}=this.model;null!=h&&(o.width=h),null!=a&&(o.height=a);const{max_width:_,max_height:d}=this.model;null!=_&&(o.max_width=_),null!=d&&(o.max_height=d),\"auto\"==e&&null!=h&&null!=a?o.aspect=h/a:r.isNumber(e)&&(o.aspect=e);const{margin:c}=this.model;if(null!=c)if(r.isNumber(c))o.margin={top:c,right:c,bottom:c,left:c};else if(2==c.length){const[t,i]=c;o.margin={top:t,right:i,bottom:t,left:i}}else{const[t,i,e,s]=c;o.margin={top:t,right:i,bottom:e,left:s}}o.visible=this.model.visible;const{align:u}=this.model;return r.isArray(u)?[o.halign,o.valign]=u:o.halign=o.valign=u,o}_viewport_size(){return h.undisplayed(this.el,(()=>{let t=this.el;for(;t=t.parentElement;){if(t.classList.contains(m.root))continue;if(t==document.body){const{margin:{left:t,right:i,top:e,bottom:s}}=h.extents(document.body);return{width:Math.ceil(document.documentElement.clientWidth-t-i),height:Math.ceil(document.documentElement.clientHeight-e-s)}}const{padding:{left:i,right:e,top:s,bottom:o}}=h.extents(t),{width:l,height:n}=t.getBoundingClientRect();let a=0;for(const i of t.children){const{height:t}=i.getBoundingClientRect(),{margin:{top:e,bottom:s}}=h.extents(i);a+=t+e+s}const r=Math.ceil(l-i-e),_=Math.ceil(n-s-o-a);if(r>0||_>0)return{width:r>0?r:void 0,height:_>0?_:void 0}}return{}}))}export(t,i=!0){const e=\"png\"==t?\"canvas\":\"svg\",s=new p.CanvasLayer(e,i),{width:o,height:l}=this.layout.bbox;s.resize(o,l);for(const e of this.child_views){const o=e.export(t,i),{x:l,y:n}=e.layout.bbox;s.ctx.drawImage(o.canvas,l,n)}return s}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map((t=>t.serializable_state()))})}}e.LayoutDOMView=g,g.__name__=\"LayoutDOMView\";class f extends l.Model{constructor(t){super(t)}static init_LayoutDOM(){this.define((t=>{const{Boolean:i,Number:e,String:s,Auto:o,Color:l,Array:h,Tuple:a,Or:r,Null:_,Nullable:d}=t,c=a(e,e),m=a(e,e,e,e);return{width:[d(e),null],height:[d(e),null],min_width:[d(e),null],min_height:[d(e),null],max_width:[d(e),null],max_height:[d(e),null],margin:[d(r(e,c,m)),[0,0,0,0]],width_policy:[r(u.SizingPolicy,o),\"auto\"],height_policy:[r(u.SizingPolicy,o),\"auto\"],aspect_ratio:[r(e,o,_),null],sizing_mode:[d(n.SizingMode),null],visible:[i,!0],disabled:[i,!1],align:[r(n.Align,a(n.Align,n.Align)),\"start\"],background:[d(l),null],css_classes:[h(s),[]]}}))}}e.LayoutDOM=f,f.__name__=\"LayoutDOM\",f.init_LayoutDOM()},\n function _(t,s,i,o,n){o();const e=t(318),l=t(223);class u extends e.BoxView{_update_layout(){const t=this.child_views.map((t=>t.layout));this.layout=new l.Column(t),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}i.ColumnView=u,u.__name__=\"ColumnView\";class a extends e.Box{constructor(t){super(t)}static init_Column(){this.prototype.default_view=u,this.define((({Any:t})=>({rows:[t,\"auto\"]})))}}i.Column=a,a.__name__=\"Column\",a.init_Column()},\n function _(t,s,i,o,e){o();const n=t(319),l=t(223);class a extends n.LayoutDOMView{connect_signals(){super.connect_signals();const{children:t,rows:s,cols:i,spacing:o}=this.model.properties;this.on_change([t,s,i,o],(()=>this.rebuild()))}get child_models(){return this.model.children.map((([t])=>t))}_update_layout(){this.layout=new l.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[t,s,i,o,e]of this.model.children){const n=this._child_views.get(t);this.layout.items.push({layout:n.layout,row:s,col:i,row_span:o,col_span:e})}this.layout.set_sizing(this.box_sizing())}}i.GridBoxView=a,a.__name__=\"GridBoxView\";class r extends n.LayoutDOM{constructor(t){super(t)}static init_GridBox(){this.prototype.default_view=a,this.define((({Any:t,Int:s,Number:i,Tuple:o,Array:e,Ref:l,Or:a,Opt:r})=>({children:[e(o(l(n.LayoutDOM),s,s,r(s),r(s))),[]],rows:[t,\"auto\"],cols:[t,\"auto\"],spacing:[a(i,o(i,i)),0]})))}}i.GridBox=r,r.__name__=\"GridBox\",r.init_GridBox()},\n function _(t,e,o,s,n){s();const _=t(319),i=t(221);class a extends _.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new i.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}o.HTMLBoxView=a,a.__name__=\"HTMLBoxView\";class u extends _.LayoutDOM{constructor(t){super(t)}}o.HTMLBox=u,u.__name__=\"HTMLBox\"},\n function _(e,n,t,i,l){i();const a=e(53),o=e(319);class s extends a.Model{constructor(e){super(e)}static init_Panel(){this.define((({Boolean:e,String:n,Ref:t})=>({title:[n,\"\"],child:[t(o.LayoutDOM)],closable:[e,!1]})))}}t.Panel=s,s.__name__=\"Panel\",s.init_Panel()},\n function _(t,s,i,o,e){o();const n=t(318),a=t(223);class _ extends n.BoxView{_update_layout(){const t=this.child_views.map((t=>t.layout));this.layout=new a.Row(t),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}i.RowView=_,_.__name__=\"RowView\";class l extends n.Box{constructor(t){super(t)}static init_Row(){this.prototype.default_view=_,this.define((({Any:t})=>({cols:[t,\"auto\"]})))}}i.Row=l,l.__name__=\"Row\",l.init_Row()},\n function _(t,e,a,i,s){i();const _=t(319),c=t(221);class n extends _.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new c.LayoutItem,this.layout.set_sizing(this.box_sizing())}}a.SpacerView=n,n.__name__=\"SpacerView\";class o extends _.LayoutDOM{constructor(t){super(t)}static init_Spacer(){this.prototype.default_view=n}}a.Spacer=o,o.__name__=\"Spacer\",o.init_Spacer()},\n function _(e,t,s,i,a){i();const l=e(1),h=e(221),o=e(43),c=e(9),d=e(20),r=e(319),n=e(323),_=l.__importStar(e(327)),p=_,b=l.__importStar(e(328)),u=b,m=l.__importStar(e(243)),v=m;class g extends r.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,(()=>this.rebuild())),this.connect(this.model.properties.active.change,(()=>this.on_active_change()))}styles(){return[...super.styles(),b.default,m.default,_.default]}get child_models(){return this.model.tabs.map((e=>e.child))}_update_layout(){const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,{scroll_el:s,headers_el:i}=this;this.header=new class extends h.ContentBox{_measure(e){const a=o.size(s),l=o.children(i).slice(0,3).map((e=>o.size(e))),{width:h,height:d}=super._measure(e);if(t){const t=a.width+c.sum(l.map((e=>e.width)));return{width:e.width!=1/0?e.width:t,height:d}}{const t=a.height+c.sum(l.map((e=>e.height)));return{width:h,height:e.height!=1/0?e.height:t}}}}(this.header_el),t?this.header.set_sizing({width_policy:\"fit\",height_policy:\"fixed\"}):this.header.set_sizing({width_policy:\"fixed\",height_policy:\"fit\"});let a=1,l=1;switch(e){case\"above\":a-=1;break;case\"below\":a+=1;break;case\"left\":l-=1;break;case\"right\":l+=1}const d={layout:this.header,row:a,col:l},r=this.child_views.map((e=>({layout:e.layout,row:1,col:1})));this.layout=new h.Grid([d,...r]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position=\"absolute\",o.position(this.header_el,this.header.bbox);const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,s=o.size(this.scroll_el),i=o.scroll_size(this.headers_el);if(t){const{width:e}=this.header.bbox;i.width>e?(this.wrapper_el.style.maxWidth=e-s.width+\"px\",o.display(this.scroll_el)):(this.wrapper_el.style.maxWidth=\"\",o.undisplay(this.scroll_el))}else{const{height:e}=this.header.bbox;i.height>e?(this.wrapper_el.style.maxHeight=e-s.height+\"px\",o.display(this.scroll_el)):(this.wrapper_el.style.maxHeight=\"\",o.undisplay(this.scroll_el))}const{child_views:a}=this;for(const e of a)o.hide(e.el);const l=a[this.model.active];null!=l&&o.show(l.el)}render(){super.render();const{active:e}=this.model,t=this.model.tabs_location,s=\"above\"==t||\"below\"==t,i=this.model.tabs.map(((t,s)=>{const i=o.div({class:[p.tab,s==e?p.active:null]},t.title);if(i.addEventListener(\"click\",(e=>{e.target==e.currentTarget&&this.change_active(s)})),t.closable){const e=o.div({class:p.close});e.addEventListener(\"click\",(e=>{if(e.target==e.currentTarget){this.model.tabs=c.remove_at(this.model.tabs,s);const e=this.model.tabs.length;this.model.active>e-1&&(this.model.active=e-1)}})),i.appendChild(e)}return i}));this.headers_el=o.div({class:[p.headers]},i),this.wrapper_el=o.div({class:p.headers_wrapper},this.headers_el);const a=o.div({class:[u.btn,u.btn_default],disabled:\"\"},o.div({class:[v.caret,p.left]})),l=o.div({class:[u.btn,u.btn_default]},o.div({class:[v.caret,p.right]}));let h=0;const d=e=>()=>{const t=this.model.tabs.length;h=\"left\"==e?Math.max(h-1,0):Math.min(h+1,t-1),0==h?a.setAttribute(\"disabled\",\"\"):a.removeAttribute(\"disabled\"),h==t-1?l.setAttribute(\"disabled\",\"\"):l.removeAttribute(\"disabled\");const i=o.children(this.headers_el).slice(0,h).map((e=>e.getBoundingClientRect()));if(s){const e=-c.sum(i.map((e=>e.width)));this.headers_el.style.left=`${e}px`}else{const e=-c.sum(i.map((e=>e.height)));this.headers_el.style.top=`${e}px`}};a.addEventListener(\"click\",d(\"left\")),l.addEventListener(\"click\",d(\"right\")),this.scroll_el=o.div({class:u.btn_group},a,l),this.header_el=o.div({class:[p.tabs_header,p[t]]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}change_active(e){e!=this.model.active&&(this.model.active=e)}on_active_change(){const e=this.model.active,t=o.children(this.headers_el);for(const e of t)e.classList.remove(p.active);t[e].classList.add(p.active);const{child_views:s}=this;for(const e of s)o.hide(e.el);o.show(s[e].el)}}s.TabsView=g,g.__name__=\"TabsView\";class w extends r.LayoutDOM{constructor(e){super(e)}static init_Tabs(){this.prototype.default_view=g,this.define((({Int:e,Array:t,Ref:s})=>({tabs:[t(s(n.Panel)),[]],tabs_location:[d.Location,\"above\"],active:[e,0]})))}}s.Tabs=w,w.__name__=\"Tabs\",w.init_Tabs()},\n function _(e,r,b,o,t){o(),b.root=\"bk-root\",b.tabs_header=\"bk-tabs-header\",b.btn_group=\"bk-btn-group\",b.btn=\"bk-btn\",b.headers_wrapper=\"bk-headers-wrapper\",b.above=\"bk-above\",b.right=\"bk-right\",b.below=\"bk-below\",b.left=\"bk-left\",b.headers=\"bk-headers\",b.tab=\"bk-tab\",b.active=\"bk-active\",b.close=\"bk-close\",b.default='.bk-root .bk-tabs-header{display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;align-items:center;-webkit-align-items:center;overflow:hidden;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-tabs-header .bk-btn-group{height:auto;margin-right:5px;}.bk-root .bk-tabs-header .bk-btn-group > .bk-btn{flex-grow:0;-webkit-flex-grow:0;height:auto;padding:4px 4px;}.bk-root .bk-tabs-header .bk-headers-wrapper{flex-grow:1;-webkit-flex-grow:1;overflow:hidden;color:#666666;}.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper{border-bottom:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper{border-left:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper{border-top:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper{border-right:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-above,.bk-root .bk-tabs-header.bk-below{flex-direction:row;-webkit-flex-direction:row;}.bk-root .bk-tabs-header.bk-above .bk-headers,.bk-root .bk-tabs-header.bk-below .bk-headers{flex-direction:row;-webkit-flex-direction:row;}.bk-root .bk-tabs-header.bk-left,.bk-root .bk-tabs-header.bk-right{flex-direction:column;-webkit-flex-direction:column;}.bk-root .bk-tabs-header.bk-left .bk-headers,.bk-root .bk-tabs-header.bk-right .bk-headers{flex-direction:column;-webkit-flex-direction:column;}.bk-root .bk-tabs-header .bk-headers{position:relative;display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;align-items:center;-webkit-align-items:center;}.bk-root .bk-tabs-header .bk-tab{padding:4px 8px;border:solid transparent;white-space:nowrap;cursor:pointer;}.bk-root .bk-tabs-header .bk-tab:hover{background-color:#f2f2f2;}.bk-root .bk-tabs-header .bk-tab.bk-active{color:#4d4d4d;background-color:white;border-color:#e6e6e6;}.bk-root .bk-tabs-header .bk-tab .bk-close{margin-left:10px;}.bk-root .bk-tabs-header.bk-above .bk-tab{border-width:3px 1px 0px 1px;border-radius:4px 4px 0 0;}.bk-root .bk-tabs-header.bk-right .bk-tab{border-width:1px 3px 1px 0px;border-radius:0 4px 4px 0;}.bk-root .bk-tabs-header.bk-below .bk-tab{border-width:0px 1px 3px 1px;border-radius:0 0 4px 4px;}.bk-root .bk-tabs-header.bk-left .bk-tab{border-width:1px 0px 1px 3px;border-radius:4px 0 0 4px;}.bk-root .bk-close{display:inline-block;width:10px;height:10px;vertical-align:middle;background-image:url(\\'data:image/svg+xml;utf8, \\');}.bk-root .bk-close:hover{background-image:url(\\'data:image/svg+xml;utf8, \\');}'},\n function _(o,b,r,t,e){t(),r.root=\"bk-root\",r.btn=\"bk-btn\",r.active=\"bk-active\",r.btn_default=\"bk-btn-default\",r.btn_primary=\"bk-btn-primary\",r.btn_success=\"bk-btn-success\",r.btn_warning=\"bk-btn-warning\",r.btn_danger=\"bk-btn-danger\",r.btn_light=\"bk-btn-light\",r.btn_group=\"bk-btn-group\",r.dropdown_toggle=\"bk-dropdown-toggle\",r.default=\".bk-root .bk-btn{height:100%;display:inline-block;text-align:center;vertical-align:middle;white-space:nowrap;cursor:pointer;padding:6px 12px;font-size:12px;border:1px solid transparent;border-radius:4px;outline:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-btn:hover,.bk-root .bk-btn:focus{text-decoration:none;}.bk-root .bk-btn:active,.bk-root .bk-btn.bk-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);}.bk-root .bk-btn[disabled]{cursor:not-allowed;pointer-events:none;opacity:0.65;box-shadow:none;}.bk-root .bk-btn-default{color:#333;background-color:#fff;border-color:#ccc;}.bk-root .bk-btn-default:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-default.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-default[disabled],.bk-root .bk-btn-default[disabled]:hover,.bk-root .bk-btn-default[disabled]:focus,.bk-root .bk-btn-default[disabled]:active,.bk-root .bk-btn-default[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd;}.bk-root .bk-btn-primary:hover{background-color:#3681c1;border-color:#2c699e;}.bk-root .bk-btn-primary.bk-active{background-color:#3276b1;border-color:#285e8e;}.bk-root .bk-btn-primary[disabled],.bk-root .bk-btn-primary[disabled]:hover,.bk-root .bk-btn-primary[disabled]:focus,.bk-root .bk-btn-primary[disabled]:active,.bk-root .bk-btn-primary[disabled].bk-active{background-color:#506f89;border-color:#357ebd;}.bk-root .bk-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;}.bk-root .bk-btn-success:hover{background-color:#4eb24e;border-color:#409240;}.bk-root .bk-btn-success.bk-active{background-color:#47a447;border-color:#398439;}.bk-root .bk-btn-success[disabled],.bk-root .bk-btn-success[disabled]:hover,.bk-root .bk-btn-success[disabled]:focus,.bk-root .bk-btn-success[disabled]:active,.bk-root .bk-btn-success[disabled].bk-active{background-color:#667b66;border-color:#4cae4c;}.bk-root .bk-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236;}.bk-root .bk-btn-warning:hover{background-color:#eea43b;border-color:#e89014;}.bk-root .bk-btn-warning.bk-active{background-color:#ed9c28;border-color:#d58512;}.bk-root .bk-btn-warning[disabled],.bk-root .bk-btn-warning[disabled]:hover,.bk-root .bk-btn-warning[disabled]:focus,.bk-root .bk-btn-warning[disabled]:active,.bk-root .bk-btn-warning[disabled].bk-active{background-color:#c89143;border-color:#eea236;}.bk-root .bk-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a;}.bk-root .bk-btn-danger:hover{background-color:#d5433e;border-color:#bd2d29;}.bk-root .bk-btn-danger.bk-active{background-color:#d2322d;border-color:#ac2925;}.bk-root .bk-btn-danger[disabled],.bk-root .bk-btn-danger[disabled]:hover,.bk-root .bk-btn-danger[disabled]:focus,.bk-root .bk-btn-danger[disabled]:active,.bk-root .bk-btn-danger[disabled].bk-active{background-color:#a55350;border-color:#d43f3a;}.bk-root .bk-btn-light{color:#333;background-color:#fff;border-color:#ccc;border-color:transparent;}.bk-root .bk-btn-light:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-light.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-light[disabled],.bk-root .bk-btn-light[disabled]:hover,.bk-root .bk-btn-light[disabled]:focus,.bk-root .bk-btn-light[disabled]:active,.bk-root .bk-btn-light[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-group{height:100%;display:flex;display:-webkit-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;align-items:center;-webkit-align-items:center;flex-direction:row;-webkit-flex-direction:row;}.bk-root .bk-btn-group > .bk-btn{flex-grow:1;-webkit-flex-grow:1;}.bk-root .bk-btn-group > .bk-btn + .bk-btn{margin-left:-1px;}.bk-root .bk-btn-group > .bk-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group > .bk-btn:not(:first-child):last-child{border-bottom-left-radius:0;border-top-left-radius:0;}.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child){border-radius:0;}.bk-root .bk-btn-group .bk-dropdown-toggle{flex:0 0 0;-webkit-flex:0 0 0;padding:6px 6px;}\"},\n function _(t,e,i,o,n){o();const _=t(320);class s extends _.ColumnView{}i.WidgetBoxView=s,s.__name__=\"WidgetBoxView\";class d extends _.Column{constructor(t){super(t)}static init_WidgetBox(){this.prototype.default_view=s}}i.WidgetBox=d,d.__name__=\"WidgetBox\",d.init_WidgetBox()},\n function _(p,o,t,a,n){a(),n(\"MapOptions\",p(331).MapOptions),n(\"GMapOptions\",p(331).GMapOptions),n(\"GMapPlot\",p(331).GMapPlot),n(\"Plot\",p(332).Plot)},\n function _(t,i,n,e,a){e();const s=t(332),o=t(53),p=t(156),_=t(337);a(\"GMapPlotView\",_.GMapPlotView);class l extends o.Model{constructor(t){super(t)}static init_MapOptions(){this.define((({Int:t,Number:i})=>({lat:[i],lng:[i],zoom:[t,12]})))}}n.MapOptions=l,l.__name__=\"MapOptions\",l.init_MapOptions();class r extends l{constructor(t){super(t)}static init_GMapOptions(){this.define((({Boolean:t,Int:i,String:n})=>({map_type:[n,\"roadmap\"],scale_control:[t,!1],styles:[n],tilt:[i,45]})))}}n.GMapOptions=r,r.__name__=\"GMapOptions\",r.init_GMapOptions();class c extends s.Plot{constructor(t){super(t),this.use_map=!0}static init_GMapPlot(){this.prototype.default_view=_.GMapPlotView,this.define((({String:t,Ref:i})=>({map_options:[i(r)],api_key:[t],api_version:[t,\"3.43\"]}))),this.override({x_range:()=>new p.Range1d,y_range:()=>new p.Range1d})}}n.GMapPlot=c,c.__name__=\"GMapPlot\",c.init_GMapPlot()},\n function _(e,t,i,n,r){n();const o=e(1),a=o.__importStar(e(48)),s=o.__importStar(e(18)),l=e(15),_=e(20),h=e(9),c=e(13),d=e(8),u=e(319),g=e(163),p=e(316),f=e(40),b=e(138),w=e(218),m=e(235),y=e(105),v=e(146),x=e(130),A=e(41),R=e(62),S=e(61),P=e(159),D=e(333);r(\"PlotView\",D.PlotView);class L extends u.LayoutDOM{constructor(e){super(e),this.use_map=!1}static init_Plot(){this.prototype.default_view=D.PlotView,this.mixins([[\"outline_\",a.Line],[\"background_\",a.Fill],[\"border_\",a.Fill]]),this.define((({Boolean:e,Number:t,String:i,Array:n,Dict:r,Or:o,Ref:a,Null:l,Nullable:h})=>({toolbar:[a(m.Toolbar),()=>new m.Toolbar],toolbar_location:[h(_.Location),\"right\"],toolbar_sticky:[e,!0],plot_width:[s.Alias(\"width\")],plot_height:[s.Alias(\"height\")],frame_width:[h(t),null],frame_height:[h(t),null],title:[o(a(b.Title),i,l),()=>new b.Title({text:\"\"})],title_location:[h(_.Location),\"above\"],above:[n(o(a(f.Annotation),a(g.Axis))),[]],below:[n(o(a(f.Annotation),a(g.Axis))),[]],left:[n(o(a(f.Annotation),a(g.Axis))),[]],right:[n(o(a(f.Annotation),a(g.Axis))),[]],center:[n(o(a(f.Annotation),a(p.Grid))),[]],renderers:[n(a(A.Renderer)),[]],x_range:[a(y.Range),()=>new P.DataRange1d],extra_x_ranges:[r(a(y.Range)),{}],y_range:[a(y.Range),()=>new P.DataRange1d],extra_y_ranges:[r(a(y.Range)),{}],x_scale:[a(v.Scale),()=>new w.LinearScale],y_scale:[a(v.Scale),()=>new w.LinearScale],lod_factor:[t,10],lod_interval:[t,300],lod_threshold:[h(t),2e3],lod_timeout:[t,500],hidpi:[e,!0],output_backend:[_.OutputBackend,\"canvas\"],min_border:[h(t),5],min_border_top:[h(t),null],min_border_left:[h(t),null],min_border_bottom:[h(t),null],min_border_right:[h(t),null],inner_width:[t,0],inner_height:[t,0],outer_width:[t,0],outer_height:[t,0],match_aspect:[e,!1],aspect_scale:[t,1],reset_policy:[_.ResetPolicy,\"standard\"]}))),this.override({width:600,height:600,outline_line_color:\"#e5e5e5\",border_fill_color:\"#ffffff\",background_fill_color:\"#ffffff\"})}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new l.Signal0(this,\"reset\");for(const e of c.values(this.extra_x_ranges).concat(this.x_range)){let t=e.plots;d.isArray(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}for(const e of c.values(this.extra_y_ranges).concat(this.y_range)){let t=e.plots;d.isArray(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}}add_layout(e,t=\"center\"){const i=this.properties[t].get_value();this.setv({[t]:[...i,e]})}remove_layout(e){const t=t=>{h.remove_by(t,(t=>t==e))};t(this.left),t(this.right),t(this.above),t(this.below),t(this.center)}get data_renderers(){return this.renderers.filter((e=>e instanceof R.DataRenderer))}add_renderers(...e){this.renderers=this.renderers.concat(e)}add_glyph(e,t=new x.ColumnDataSource,i={}){const n=new S.GlyphRenderer(Object.assign(Object.assign({},i),{data_source:t,glyph:e}));return this.add_renderers(n),n}add_tools(...e){this.toolbar.tools=this.toolbar.tools.concat(e)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:e,below:t,left:i,right:n}=this;return h.concat([e,t,i,n])}}i.Plot=L,L.__name__=\"Plot\",L.init_Plot()},\n function _(e,t,i,s,a){s();const n=e(1),o=e(144),l=e(262),r=e(319),_=e(40),h=e(138),d=e(163),u=e(234),c=e(264),p=e(122),v=e(45),b=e(19),g=e(334),m=e(8),w=e(9),y=e(249),f=e(222),x=e(225),z=e(223),k=e(140),q=e(99),M=e(335),V=e(336),P=e(28);class R extends r.LayoutDOMView{constructor(){super(...arguments),this._outer_bbox=new q.BBox,this._inner_bbox=new q.BBox,this._needs_paint=!0,this._needs_layout=!1,this._invalidated_painters=new Set,this._invalidate_all=!0}get canvas(){return this.canvas_view}get state(){return this._state_manager}set invalidate_dataranges(e){this._range_manager.invalidate_dataranges=e}renderer_view(e){const t=this.renderer_views.get(e);if(null==t)for(const[,t]of this.renderer_views){const i=t.renderer_view(e);if(null!=i)return i}return t}get is_paused(){return null!=this._is_paused&&0!==this._is_paused}get child_models(){return[]}pause(){null==this._is_paused?this._is_paused=1:this._is_paused+=1}unpause(e=!1){if(null==this._is_paused)throw new Error(\"wasn't paused\");this._is_paused-=1,0!=this._is_paused||e||this.request_paint(\"everything\")}request_render(){this.request_paint(\"everything\")}request_paint(e){this.invalidate_painters(e),this.schedule_paint()}invalidate_painters(e){if(\"everything\"==e)this._invalidate_all=!0;else if(m.isArray(e))for(const t of e)this._invalidated_painters.add(t);else this._invalidated_painters.add(e)}schedule_paint(){if(!this.is_paused){const e=this.throttled_paint();this._ready=this._ready.then((()=>e))}}request_layout(){this._needs_layout=!0,this.request_paint(\"everything\")}reset(){\"standard\"==this.model.reset_policy&&(this.state.clear(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new c.Reset)}remove(){p.remove_views(this.renderer_views),p.remove_views(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.lod_started=!1,this.visuals=new v.Visuals(this),this._initial_state={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.renderer_views=new Map,this.tool_views=new Map,this.frame=new o.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges),this._range_manager=new M.RangeManager(this),this._state_manager=new V.StateManager(this,this._initial_state),this.throttled_paint=g.throttle((()=>this.repaint()),1e3/60);const{title_location:e,title:t}=this.model;null!=e&&null!=t&&(this._title=t instanceof h.Title?t:new h.Title({text:t}));const{toolbar_location:i,toolbar:s}=this.model;null!=i&&null!=s&&(this._toolbar=new u.ToolbarPanel({toolbar:s}),s.toolbar_location=i)}async lazy_initialize(){await super.lazy_initialize();const{hidpi:e,output_backend:t}=this.model,i=new l.Canvas({hidpi:e,output_backend:t});this.canvas_view=await p.build_view(i,{parent:this}),this.canvas_view.plot_views=[this],await this.build_renderer_views(),await this.build_tool_views(),this._range_manager.update_dataranges(),this.unpause(!0),b.logger.debug(\"PlotView initialized\")}_width_policy(){return null==this.model.frame_width?super._width_policy():\"min\"}_height_policy(){return null==this.model.frame_height?super._height_policy():\"min\"}_update_layout(){var e,t,i,s,a;this.layout=new x.BorderLayout,this.layout.set_sizing(this.box_sizing());const n=w.copy(this.model.above),o=w.copy(this.model.below),l=w.copy(this.model.left),r=w.copy(this.model.right),d=e=>{switch(e){case\"above\":return n;case\"below\":return o;case\"left\":return l;case\"right\":return r}},{title_location:c,title:p}=this.model;null!=c&&null!=p&&d(c).push(this._title);const{toolbar_location:v,toolbar:b}=this.model;if(null!=v&&null!=b){const e=d(v);let t=!0;if(this.model.toolbar_sticky)for(let i=0;i{var i;const s=this.renderer_view(t);return s.panel=new k.Panel(e),null===(i=s.update_layout)||void 0===i||i.call(s),s.layout},y=(e,t)=>{const i=\"above\"==e||\"below\"==e,s=[];for(const a of t)if(m.isArray(a)){const t=a.map((t=>{const s=g(e,t);if(t instanceof u.ToolbarPanel){const e=i?\"width_policy\":\"height_policy\";s.set_sizing(Object.assign(Object.assign({},s.sizing),{[e]:\"min\"}))}return s}));let n;i?(n=new z.Row(t),n.set_sizing({width_policy:\"max\",height_policy:\"min\"})):(n=new z.Column(t),n.set_sizing({width_policy:\"min\",height_policy:\"max\"})),n.absolute=!0,s.push(n)}else s.push(g(e,a));return s},q=null!==(e=this.model.min_border)&&void 0!==e?e:0;this.layout.min_border={left:null!==(t=this.model.min_border_left)&&void 0!==t?t:q,top:null!==(i=this.model.min_border_top)&&void 0!==i?i:q,right:null!==(s=this.model.min_border_right)&&void 0!==s?s:q,bottom:null!==(a=this.model.min_border_bottom)&&void 0!==a?a:q};const M=new f.NodeLayout,V=new f.VStack,P=new f.VStack,R=new f.HStack,O=new f.HStack;M.absolute=!0,V.absolute=!0,P.absolute=!0,R.absolute=!0,O.absolute=!0,M.children=this.model.center.filter((e=>e instanceof _.Annotation)).map((e=>{var t;const i=this.renderer_view(e);return null===(t=i.update_layout)||void 0===t||t.call(i),i.layout})).filter((e=>null!=e));const{frame_width:S,frame_height:j}=this.model;M.set_sizing(Object.assign(Object.assign({},null!=S?{width_policy:\"fixed\",width:S}:{width_policy:\"fit\"}),null!=j?{height_policy:\"fixed\",height:j}:{height_policy:\"fit\"})),M.on_resize((e=>this.frame.set_geometry(e))),V.children=w.reversed(y(\"above\",n)),P.children=y(\"below\",o),R.children=w.reversed(y(\"left\",l)),O.children=y(\"right\",r),V.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),P.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),R.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),O.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),this.layout.center_panel=M,this.layout.top_panel=V,this.layout.bottom_panel=P,this.layout.left_panel=R,this.layout.right_panel=O}get axis_views(){const e=[];for(const[,t]of this.renderer_views)t instanceof d.AxisView&&e.push(t);return e}set_toolbar_visibility(e){for(const t of this.visibility_callbacks)t(e)}update_range(e,t){this.pause(),this._range_manager.update(e,t),this.unpause()}reset_range(){this.update_range(null)}get_selection(){const e=new Map;for(const t of this.model.data_renderers){const{selected:i}=t.selection_manager.source;e.set(t,i)}return e}update_selection(e){for(const t of this.model.data_renderers){const i=t.selection_manager.source;if(null!=e){const s=e.get(t);null!=s&&i.selected.update(s,!0)}else i.selection_manager.clear()}}reset_selection(){this.update_selection(null)}_invalidate_layout(){(()=>{var e;for(const t of this.model.side_panels){const i=this.renderer_views.get(t);if(null===(e=i.layout)||void 0===e?void 0:e.has_size_changed())return this.invalidate_painters(i),!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map((e=>this.renderer_views.get(e)))}*_compute_renderers(){const{above:e,below:t,left:i,right:s,center:a,renderers:n}=this.model;yield*n,yield*e,yield*t,yield*i,yield*s,yield*a,null!=this._title&&(yield this._title),null!=this._toolbar&&(yield this._toolbar);for(const e of this.model.toolbar.tools)null!=e.overlay&&(yield e.overlay),yield*e.synthetic_renderers}async build_renderer_views(){this.computed_renderers=[...this._compute_renderers()],await p.build_views(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const e=this.model.toolbar.tools;(await p.build_views(this.tool_views,e,{parent:this})).map((e=>this.canvas_view.ui_event_bus.register_tool(e)))}connect_signals(){super.connect_signals();const{x_ranges:e,y_ranges:t}=this.frame;for(const[,t]of e)this.connect(t.change,(()=>{this._needs_layout=!0,this.request_paint(\"everything\")}));for(const[,e]of t)this.connect(e.change,(()=>{this._needs_layout=!0,this.request_paint(\"everything\")}));const{above:i,below:s,left:a,right:n,center:o,renderers:l}=this.model.properties;this.on_change([i,s,a,n,o,l],(async()=>await this.build_renderer_views())),this.connect(this.model.toolbar.properties.tools.change,(async()=>{await this.build_renderer_views(),await this.build_tool_views()})),this.connect(this.model.change,(()=>this.request_paint(\"everything\"))),this.connect(this.model.reset,(()=>this.reset()))}has_finished(){if(!super.has_finished())return!1;if(this.model.visible)for(const[,e]of this.renderer_views)if(!e.has_finished())return!1;return!0}after_layout(){var e;super.after_layout();for(const[,t]of this.renderer_views)t instanceof _.AnnotationView&&(null===(e=t.after_layout)||void 0===e||e.call(t));if(this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),!1!==this.model.match_aspect&&(this.pause(),this._range_manager.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:e,height:t}=this.layout.bbox;this.canvas_view.resize(e,t),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}const{inner_bbox:t}=this.layout;this._inner_bbox.equals(t)||(this._inner_bbox=t,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){var e;if(this.is_paused||!this.model.visible)return;b.logger.trace(`PlotView.paint() for ${this.model.id}`);const{document:t}=this.model;if(null!=t){const e=t.interactive_duration();e>=0&&e{t.interactive_duration()>this.model.lod_timeout&&t.interactive_stop(),this.request_paint(\"everything\")}),this.model.lod_timeout):t.interactive_stop()}this._range_manager.invalidate_dataranges&&(this._range_manager.update_dataranges(),this._invalidate_layout());let i=!1,s=!1;if(this._invalidate_all)i=!0,s=!0;else for(const e of this._invalidated_painters){const{level:t}=e.model;if(\"overlay\"!=t?i=!0:s=!0,i&&s)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const a=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:n,overlays:o}=this.canvas_view;i&&(n.prepare(),this.canvas_view.prepare_webgl(a),this._map_hook(n.ctx,a),this._paint_empty(n.ctx,a),this._paint_outline(n.ctx,a),this._paint_levels(n.ctx,\"image\",a,!0),this._paint_levels(n.ctx,\"underlay\",a,!0),this._paint_levels(n.ctx,\"glyph\",a,!0),this._paint_levels(n.ctx,\"guide\",a,!1),this._paint_levels(n.ctx,\"annotation\",a,!1),n.finish()),(s||P.settings.wireframe)&&(o.prepare(),this._paint_levels(o.ctx,\"overlay\",a,!1),P.settings.wireframe&&this._paint_layout(o.ctx,this.layout),o.finish()),null==this._initial_state.range&&(this._initial_state.range=null!==(e=this._range_manager.compute_initial())&&void 0!==e?e:void 0),this._needs_paint=!1}_paint_levels(e,t,i,s){for(const a of this.computed_renderers){if(a.level!=t)continue;const n=this.renderer_views.get(a);e.save(),(s||n.needs_clip)&&(e.beginPath(),e.rect(...i),e.clip()),n.render(),e.restore(),n.has_webgl&&n.needs_webgl_blit&&this.canvas_view.blit_webgl(e)}}_paint_layout(e,t){const{x:i,y:s,width:a,height:n}=t.bbox;e.strokeStyle=\"blue\",e.strokeRect(i,s,a,n);for(const a of t)e.save(),t.absolute||e.translate(i,s),this._paint_layout(e,a),e.restore()}_map_hook(e,t){}_paint_empty(e,t){const[i,s,a,n]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[o,l,r,_]=t;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(e),e.fillRect(i,s,a,n),e.clearRect(o,l,r,_)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),e.fillRect(o,l,r,_))}_paint_outline(e,t){if(this.visuals.outline_line.doit){e.save(),this.visuals.outline_line.set_value(e);let[i,s,a,n]=t;i+a==this.layout.bbox.width&&(a-=1),s+n==this.layout.bbox.height&&(n-=1),e.strokeRect(i,s,a,n),e.restore()}}to_blob(){return this.canvas_view.to_blob()}export(e,t=!0){const i=\"png\"==e?\"canvas\":\"svg\",s=new y.CanvasLayer(i,t),{width:a,height:n}=this.layout.bbox;s.resize(a,n);const{canvas:o}=this.canvas_view.compose();return s.ctx.drawImage(o,0,0),s}serializable_state(){const e=super.serializable_state(),{children:t}=e,i=n.__rest(e,[\"children\"]),s=this.get_renderer_views().map((e=>e.serializable_state())).filter((e=>null!=e.bbox));return Object.assign(Object.assign({},i),{children:[...null!=t?t:[],...s]})}}i.PlotView=R,R.__name__=\"PlotView\"},\n function _(t,n,e,o,u){o(),e.throttle=function(t,n){let e=null,o=0,u=!1;return function(){return new Promise(((r,i)=>{const l=function(){o=Date.now(),e=null,u=!1;try{t(),r()}catch(t){i(t)}},a=Date.now(),c=n-(a-o);c<=0&&!u?(null!=e&&clearTimeout(e),u=!0,requestAnimationFrame(l)):e||u?r():e=setTimeout((()=>requestAnimationFrame(l)),c)}))}}},\n function _(t,n,e,s,a){s();const o=t(159),r=t(19);class l{constructor(t){this.parent=t,this.invalidate_dataranges=!0}get frame(){return this.parent.frame}update(t,n){const{x_ranges:e,y_ranges:s}=this.frame;if(null==t){for(const[,t]of e)t.reset();for(const[,t]of s)t.reset();this.update_dataranges()}else{const a=[];for(const[n,s]of e)a.push([s,t.xrs.get(n)]);for(const[n,e]of s)a.push([e,t.yrs.get(n)]);(null==n?void 0:n.scrolling)&&this._update_ranges_together(a),this._update_ranges_individually(a,n)}}reset(){this.update(null)}update_dataranges(){const t=new Map,n=new Map;let e=!1;for(const[,t]of this.frame.x_ranges)t instanceof o.DataRange1d&&\"log\"==t.scale_hint&&(e=!0);for(const[,t]of this.frame.y_ranges)t instanceof o.DataRange1d&&\"log\"==t.scale_hint&&(e=!0);for(const s of this.parent.model.data_renderers){const a=this.parent.renderer_view(s);if(null==a)continue;const o=a.glyph_view.bounds();if(null!=o&&t.set(s,o),e){const t=a.glyph_view.log_bounds();null!=t&&n.set(s,t)}}let s=!1,a=!1;const{width:l,height:i}=this.frame.bbox;let d;!1!==this.parent.model.match_aspect&&0!=l&&0!=i&&(d=1/this.parent.model.aspect_scale*(l/i));for(const[,e]of this.frame.x_ranges){if(e instanceof o.DataRange1d){const a=\"log\"==e.scale_hint?n:t;e.update(a,0,this.parent.model,d),e.follow&&(s=!0)}null!=e.bounds&&(a=!0)}for(const[,e]of this.frame.y_ranges){if(e instanceof o.DataRange1d){const a=\"log\"==e.scale_hint?n:t;e.update(a,1,this.parent.model,d),e.follow&&(s=!0)}null!=e.bounds&&(a=!0)}if(s&&a){r.logger.warn(\"Follow enabled so bounds are unset.\");for(const[,t]of this.frame.x_ranges)t.bounds=null;for(const[,t]of this.frame.y_ranges)t.bounds=null}this.invalidate_dataranges=!1}compute_initial(){let t=!0;const{x_ranges:n,y_ranges:e}=this.frame,s=new Map,a=new Map;for(const[e,a]of n){const{start:n,end:o}=a;if(null==n||null==o||isNaN(n+o)){t=!1;break}s.set(e,{start:n,end:o})}if(t)for(const[n,s]of e){const{start:e,end:o}=s;if(null==e||null==o||isNaN(e+o)){t=!1;break}a.set(n,{start:e,end:o})}return t?{xrs:s,yrs:a}:(r.logger.warn(\"could not set initial ranges\"),null)}_update_ranges_together(t){let n=1;for(const[e,s]of t)n=Math.min(n,this._get_weight_to_constrain_interval(e,s));if(n<1)for(const[e,s]of t)s.start=n*s.start+(1-n)*e.start,s.end=n*s.end+(1-n)*e.end}_update_ranges_individually(t,n){const e=!!(null==n?void 0:n.panning),s=!!(null==n?void 0:n.scrolling);let a=!1;for(const[n,o]of t){if(!s){const t=this._get_weight_to_constrain_interval(n,o);t<1&&(o.start=t*o.start+(1-t)*n.start,o.end=t*o.end+(1-t)*n.end)}if(null!=n.bounds&&\"auto\"!=n.bounds){const[t,r]=n.bounds,l=Math.abs(o.end-o.start);n.is_reversed?(null!=t&&t>=o.end&&(a=!0,o.end=t,(e||s)&&(o.start=t+l)),null!=r&&r<=o.start&&(a=!0,o.start=r,(e||s)&&(o.end=r-l))):(null!=t&&t>=o.start&&(a=!0,o.start=t,(e||s)&&(o.end=t+l)),null!=r&&r<=o.end&&(a=!0,o.end=r,(e||s)&&(o.start=r-l)))}}if(!(s&&a&&(null==n?void 0:n.maintain_focus)))for(const[n,e]of t)n.have_updated_interactively=!0,n.start==e.start&&n.end==e.end||n.setv(e)}_get_weight_to_constrain_interval(t,n){const{min_interval:e}=t;let{max_interval:s}=t;if(null!=t.bounds&&\"auto\"!=t.bounds){const[n,e]=t.bounds;if(null!=n&&null!=e){const t=Math.abs(e-n);s=null!=s?Math.min(s,t):t}}let a=1;if(null!=e||null!=s){const o=Math.abs(t.end-t.start),r=Math.abs(n.end-n.start);null!=e&&e>0&&r0&&r>s&&(a=(s-o)/(r-o)),a=Math.max(0,Math.min(1,a))}return a}}e.RangeManager=l,l.__name__=\"RangeManager\"},\n function _(t,i,s,e,n){e();const h=t(15);class a{constructor(t,i){this.parent=t,this.initial_state=i,this.changed=new h.Signal0(this.parent,\"state_changed\"),this.history=[],this.index=-1}_do_state_change(t){const i=null!=this.history[t]?this.history[t].state:this.initial_state;null!=i.range&&this.parent.update_range(i.range),null!=i.selection&&this.parent.update_selection(i.selection)}push(t,i){const{history:s,index:e}=this,n=null!=s[e]?s[e].state:{},h=Object.assign(Object.assign(Object.assign({},this.initial_state),n),i);this.history=this.history.slice(0,this.index+1),this.history.push({type:t,state:h}),this.index=this.history.length-1,this.changed.emit()}clear(){this.history=[],this.index=-1,this.changed.emit()}undo(){this.can_undo&&(this.index-=1,this._do_state_change(this.index),this.changed.emit())}redo(){this.can_redo&&(this.index+=1,this._do_state_change(this.index),this.changed.emit())}get can_undo(){return this.index>=0}get can_redo(){return this.indexm.emit();const s=encodeURIComponent,o=document.createElement(\"script\");o.type=\"text/javascript\",o.src=`https://maps.googleapis.com/maps/api/js?v=${s(e)}&key=${s(t)}&callback=_bokeh_gmaps_callback`,document.body.appendChild(o)}(t,e)}m.connect((()=>this.request_paint(\"everything\")))}this.unpause()}remove(){p.remove(this.map_el),super.remove()}update_range(t,e){var s,o;if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null,e);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(null!==(s=t.sdx)&&void 0!==s?s:0,null!==(o=t.sdy)&&void 0!==o?o:0),super.update_range(t,e);else if(null!=t.factor){if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t,e);const s=t.factor<0?-1:1,o=this.map.getZoom(),i=o+s;if(i>=2){this.map.setZoom(i);const[t,e,,]=this._get_projected_bounds();e-t<0&&this.map.setZoom(o)}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const e=this.model.map_options,s={center:new t.LatLng(e.lat,e.lng),zoom:e.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[e.map_type],scaleControl:e.scale_control,tilt:e.tilt};null!=e.styles&&(s.styles=JSON.parse(e.styles)),this.map_el=p.div({style:{position:\"absolute\"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,s),t.event.addListener(this.map,\"idle\",(()=>this._set_bokeh_ranges())),t.event.addListener(this.map,\"bounds_changed\",(()=>this._set_bokeh_ranges())),t.event.addListenerOnce(this.map,\"tilesloaded\",(()=>this._render_finished())),this.connect(this.model.properties.map_options.change,(()=>this._update_options())),this.connect(this.model.map_options.properties.styles.change,(()=>this._update_styles())),this.connect(this.model.map_options.properties.lat.change,(()=>this._update_center(\"lat\"))),this.connect(this.model.map_options.properties.lng.change,(()=>this._update_center(\"lng\"))),this.connect(this.model.map_options.properties.zoom.change,(()=>this._update_zoom())),this.connect(this.model.map_options.properties.map_type.change,(()=>this._update_map_type())),this.connect(this.model.map_options.properties.scale_control.change,(()=>this._update_scale_control())),this.connect(this.model.map_options.properties.tilt.change,(()=>this._update_tilt()))}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&!0===this._tiles_loaded}_get_latlon_bounds(){const t=this.map.getBounds(),e=t.getNorthEast(),s=t.getSouthWest();return[s.lng(),e.lng(),s.lat(),e.lat()]}_get_projected_bounds(){const[t,e,s,o]=this._get_latlon_bounds(),[i,a]=l.wgs84_mercator.compute(t,s),[n,p]=l.wgs84_mercator.compute(e,o);return[i,n,a,p]}_set_bokeh_ranges(){const[t,e,s,o]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:e}),this.frame.y_range.setv({start:s,end:o})}_update_center(t){const e=this.map.getCenter().toJSON();e[t]=this.model.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center(\"lat\"),this._update_center(\"lng\"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,e){if(null==this.map&&\"undefined\"!=typeof google&&null!=google.maps&&this._build_map(),null!=this.map_el){const[t,s,o,i]=e;this.map_el.style.top=`${s}px`,this.map_el.style.left=`${t}px`,this.map_el.style.width=`${o}px`,this.map_el.style.height=`${i}px`}}_paint_empty(t,e){const s=this.layout.bbox.width,o=this.layout.bbox.height,[i,a,n,p]=e;t.clearRect(0,0,s,o),t.beginPath(),t.moveTo(0,0),t.lineTo(0,o),t.lineTo(s,o),t.lineTo(s,0),t.lineTo(0,0),t.moveTo(i,a),t.lineTo(i+n,a),t.lineTo(i+n,a+p),t.lineTo(i,a+p),t.lineTo(i,a),t.closePath(),null!=this.model.border_fill_color&&(t.fillStyle=_.color2css(this.model.border_fill_color),t.fill())}}s.GMapPlotView=d,d.__name__=\"GMapPlotView\"},\n function _(t,_,n,o,r){o();t(1).__exportStar(t(169),n)},\n function _(e,r,d,n,R){n(),R(\"GlyphRenderer\",e(61).GlyphRenderer),R(\"GraphRenderer\",e(123).GraphRenderer),R(\"GuideRenderer\",e(164).GuideRenderer),R(\"Renderer\",e(41).Renderer)},\n function _(e,t,n,o,c){o();e(1).__exportStar(e(129),n),c(\"Selection\",e(59).Selection)},\n function _(a,e,S,o,r){o(),r(\"ServerSentDataSource\",a(342).ServerSentDataSource),r(\"AjaxDataSource\",a(344).AjaxDataSource),r(\"ColumnDataSource\",a(130).ColumnDataSource),r(\"ColumnarDataSource\",a(57).ColumnarDataSource),r(\"CDSView\",a(120).CDSView),r(\"DataSource\",a(58).DataSource),r(\"GeoJSONDataSource\",a(345).GeoJSONDataSource),r(\"WebDataSource\",a(343).WebDataSource)},\n function _(e,t,i,a,s){a();const n=e(343);class r extends n.WebDataSource{constructor(e){super(e),this.initialized=!1}setup(){if(!this.initialized){this.initialized=!0;new EventSource(this.data_url).onmessage=e=>{var t;this.load_data(JSON.parse(e.data),this.mode,null!==(t=this.max_size)&&void 0!==t?t:void 0)}}}}i.ServerSentDataSource=r,r.__name__=\"ServerSentDataSource\"},\n function _(t,e,a,n,s){n();const r=t(130),i=t(20);class l extends r.ColumnDataSource{constructor(t){super(t)}get_column(t){const e=this.data[t];return null!=e?e:[]}get_length(){var t;return null!==(t=super.get_length())&&void 0!==t?t:0}initialize(){super.initialize(),this.setup()}load_data(t,e,a){const{adapter:n}=this;let s;switch(s=null!=n?n.execute(this,{response:t}):t,e){case\"replace\":this.data=s;break;case\"append\":{const t=this.data;for(const e of this.columns()){const n=Array.from(t[e]),r=Array.from(s[e]),i=n.concat(r);s[e]=null!=a?i.slice(-a):i}this.data=s;break}}}static init_WebDataSource(){this.define((({Any:t,Int:e,String:a,Nullable:n})=>({max_size:[n(e),null],mode:[i.UpdateMode,\"replace\"],adapter:[n(t),null],data_url:[a]})))}}a.WebDataSource=l,l.__name__=\"WebDataSource\",l.init_WebDataSource()},\n function _(t,e,i,s,a){s();const n=t(343),r=t(20),o=t(19),l=t(13);class d extends n.WebDataSource{constructor(t){super(t),this.interval=null,this.initialized=!1}static init_AjaxDataSource(){this.define((({Boolean:t,Int:e,String:i,Dict:s,Nullable:a})=>({polling_interval:[a(e),null],content_type:[i,\"application/json\"],http_headers:[s(i),{}],method:[r.HTTPMethod,\"POST\"],if_modified:[t,!1]})))}destroy(){null!=this.interval&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),null!=this.polling_interval)){const t=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(t,this.polling_interval)}}get_data(t,e=null,i=!1){const s=this.prepare_request();s.addEventListener(\"load\",(()=>this.do_load(s,t,null!=e?e:void 0))),s.addEventListener(\"error\",(()=>this.do_error(s))),s.send()}prepare_request(){const t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\"Content-Type\",this.content_type);const e=this.http_headers;for(const[i,s]of l.entries(e))t.setRequestHeader(i,s);return t}do_load(t,e,i){if(200===t.status){const s=JSON.parse(t.responseText);this.load_data(s,e,i)}}do_error(t){o.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${t.status}`)}}i.AjaxDataSource=d,d.__name__=\"AjaxDataSource\",d.init_AjaxDataSource()},\n function _(e,t,o,r,n){r();const s=e(57),a=e(19),i=e(9),l=e(13);function c(e){return null!=e?e:NaN}const{hasOwnProperty:_}=Object.prototype;class g extends s.ColumnarDataSource{constructor(e){super(e)}static init_GeoJSONDataSource(){this.define((({String:e})=>({geojson:[e]}))),this.internal((({Dict:e,Arrayable:t})=>({data:[e(t),{}]})))}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,(()=>this._update_data()))}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(e){return i.range(0,e).map((e=>[]))}_get_new_nan_array(e){return i.range(0,e).map((e=>NaN))}_add_properties(e,t,o,r){var n;const s=null!==(n=e.properties)&&void 0!==n?n:{};for(const[e,n]of l.entries(s))_.call(t,e)||(t[e]=this._get_new_nan_array(r)),t[e][o]=c(n)}_add_geometry(e,t,o){function r(e,t){return e.concat([[NaN,NaN,NaN]]).concat(t)}switch(e.type){case\"Point\":{const[r,n,s]=e.coordinates;t.x[o]=r,t.y[o]=n,t.z[o]=c(s);break}case\"LineString\":{const{coordinates:r}=e;for(let e=0;e1&&a.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\");const r=e.coordinates[0];for(let e=0;e1&&a.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\"),n.push(t[0]);const s=n.reduce(r);for(let e=0;e({use_latlon:[e,!1]})))}get_image_url(e,t,r){const i=this.string_lookup_replace(this.url,this.extra_url_vars);let o,l,n,s;return this.use_latlon?[l,s,o,n]=this.get_tile_geographic_bounds(e,t,r):[l,s,o,n]=this.get_tile_meter_bounds(e,t,r),i.replace(\"{XMIN}\",l.toString()).replace(\"{YMIN}\",s.toString()).replace(\"{XMAX}\",o.toString()).replace(\"{YMAX}\",n.toString())}}r.BBoxTileSource=n,n.__name__=\"BBoxTileSource\",n.init_BBoxTileSource()},\n function _(t,e,i,_,s){_();const r=t(349),o=t(9),n=t(350);class l extends r.TileSource{constructor(t){super(t)}static init_MercatorTileSource(){this.define((({Boolean:t})=>({snap_to_zoom:[t,!1],wrap_around:[t,!0]}))),this.override({x_origin_offset:20037508.34,y_origin_offset:20037508.34,initial_resolution:156543.03392804097})}initialize(){super.initialize(),this._resolutions=o.range(this.min_zoom,this.max_zoom+1).map((t=>this.get_resolution(t)))}_computed_initial_resolution(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(t,e,i){return!(!this.wrap_around&&(t<0||t>=2**i))&&!(e<0||e>=2**i)}parent_by_tile_xyz(t,e,i){const _=this.tile_xyz_to_quadkey(t,e,i),s=_.substring(0,_.length-1);return this.quadkey_to_tile_xyz(s)}get_resolution(t){return this._computed_initial_resolution()/2**t}get_resolution_by_extent(t,e,i){return[(t[2]-t[0])/i,(t[3]-t[1])/e]}get_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s);let o=0;for(const t of this._resolutions){if(r>t){if(0==o)return 0;if(o>0)return o-1}o+=1}return o-1}get_closest_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s),o=this._resolutions.reduce((function(t,e){return Math.abs(e-r)e?(u=o-s,a*=t):(u*=e,a=n-r)}const h=(u-(o-s))/2,c=(a-(n-r))/2;return[s-h,r-c,o+h,n+c]}tms_to_wmts(t,e,i){return[t,2**i-1-e,i]}wmts_to_tms(t,e,i){return[t,2**i-1-e,i]}pixels_to_meters(t,e,i){const _=this.get_resolution(i);return[t*_-this.x_origin_offset,e*_-this.y_origin_offset]}meters_to_pixels(t,e,i){const _=this.get_resolution(i);return[(t+this.x_origin_offset)/_,(e+this.y_origin_offset)/_]}pixels_to_tile(t,e){let i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;return[i,Math.max(Math.ceil(e/this.tile_size)-1,0)]}pixels_to_raster(t,e,i){return[t,(this.tile_size<=l;t--)for(let i=n;i<=u;i++)this.is_valid_tile(i,t,e)&&h.push([i,t,e,this.get_tile_meter_bounds(i,t,e)]);return this.sort_tiles_from_center(h,[n,l,u,a]),h}quadkey_to_tile_xyz(t){let e=0,i=0;const _=t.length;for(let s=_;s>0;s--){const r=1<0;s--){const i=1<0;)if(s=s.substring(0,s.length-1),[t,e,i]=this.quadkey_to_tile_xyz(s),[t,e,i]=this.denormalize_xyz(t,e,i,_),this.tiles.has(this.tile_xyz_to_key(t,e,i)))return[t,e,i];return[0,0,0]}normalize_xyz(t,e,i){if(this.wrap_around){const _=2**i;return[(t%_+_)%_,e,i]}return[t,e,i]}denormalize_xyz(t,e,i,_){return[t+_*2**i,e,i]}denormalize_meters(t,e,i,_){return[t+2*_*Math.PI*6378137,e]}calculate_world_x_by_tile_xyz(t,e,i){return Math.floor(t/2**i)}}i.MercatorTileSource=l,l.__name__=\"MercatorTileSource\",l.init_MercatorTileSource()},\n function _(e,t,r,i,n){i();const l=e(53),s=e(13);class a extends l.Model{constructor(e){super(e)}static init_TileSource(){this.define((({Number:e,String:t,Dict:r,Nullable:i})=>({url:[t,\"\"],tile_size:[e,256],max_zoom:[e,30],min_zoom:[e,0],extra_url_vars:[r(t),{}],attribution:[t,\"\"],x_origin_offset:[e],y_origin_offset:[e],initial_resolution:[i(e),null]})))}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,(()=>this._clear_cache()))}string_lookup_replace(e,t){let r=e;for(const[e,i]of s.entries(t))r=r.replace(`{${e}}`,i);return r}_normalize_case(){const e=this.url.replace(\"{x}\",\"{X}\").replace(\"{y}\",\"{Y}\").replace(\"{z}\",\"{Z}\").replace(\"{q}\",\"{Q}\").replace(\"{xmin}\",\"{XMIN}\").replace(\"{ymin}\",\"{YMIN}\").replace(\"{xmax}\",\"{XMAX}\").replace(\"{ymax}\",\"{YMAX}\");this.url=e}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(e,t,r){return`${e}:${t}:${r}`}key_to_tile_xyz(e){const[t,r,i]=e.split(\":\").map((e=>parseInt(e)));return[t,r,i]}sort_tiles_from_center(e,t){const[r,i,n,l]=t,s=(n-r)/2+r,a=(l-i)/2+i;e.sort((function(e,t){return Math.sqrt((s-e[0])**2+(a-e[1])**2)-Math.sqrt((s-t[0])**2+(a-t[1])**2)}))}get_image_url(e,t,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",t.toString()).replace(\"{Z}\",r.toString())}}r.TileSource=a,a.__name__=\"TileSource\",a.init_TileSource()},\n function _(t,e,r,n,o){n();const c=t(65);function _(t,e){return c.wgs84_mercator.compute(t,e)}function g(t,e){return c.wgs84_mercator.invert(t,e)}r.geographic_to_meters=_,r.meters_to_geographic=g,r.geographic_extent_to_meters=function(t){const[e,r,n,o]=t,[c,g]=_(e,r),[i,u]=_(n,o);return[c,g,i,u]},r.meters_extent_to_geographic=function(t){const[e,r,n,o]=t,[c,_]=g(e,r),[i,u]=g(n,o);return[c,_,i,u]}},\n function _(e,t,r,s,_){s();const o=e(348);class c extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const s=this.string_lookup_replace(this.url,this.extra_url_vars),[_,o,c]=this.tms_to_wmts(e,t,r),i=this.tile_xyz_to_quadkey(_,o,c);return s.replace(\"{Q}\",i)}}r.QUADKEYTileSource=c,c.__name__=\"QUADKEYTileSource\"},\n function _(t,e,i,s,_){s();const n=t(1),a=t(349),h=t(353),r=t(41),o=t(156),l=t(43),d=t(296),m=t(9),c=t(8),p=n.__importStar(t(354));class g extends r.RendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render())),this.connect(this.model.tile_source.change,(()=>this.request_render()))}styles(){return[...super.styles(),p.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){null!=this.attribution_el&&l.removeElement(this.attribution_el);const{attribution:t}=this.model.tile_source;if(c.isString(t)&&t.length>0){const{layout:e,frame:i}=this.plot_view,s=e.bbox.width-i.bbox.right,_=e.bbox.height-i.bbox.bottom,n=i.bbox.width;this.attribution_el=l.div({class:p.tile_attribution,style:{position:\"absolute\",right:`${s}px`,bottom:`${_}px`,\"max-width\":n-4+\"px\",padding:\"2px\",\"background-color\":\"rgba(255,255,255,0.5)\",\"font-size\":\"9px\",\"line-height\":\"1.05\",\"white-space\":\"nowrap\",overflow:\"hidden\",\"text-overflow\":\"ellipsis\"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=t,this.attribution_el.title=this.attribution_el.textContent.replace(/\\s*\\n\\s*/g,\" \")}}_map_data(){this.initial_extent=this.get_extent();const t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof o.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof o.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._update_attribution()}_create_tile(t,e,i,s,_=!1){const[n,a,h]=this.model.tile_source.normalize_xyz(t,e,i),r={img:void 0,tile_coords:[t,e,i],normalized_coords:[n,a,h],quadkey:this.model.tile_source.tile_xyz_to_quadkey(t,e,i),cache_key:this.model.tile_source.tile_xyz_to_key(t,e,i),bounds:s,loaded:!1,finished:!1,x_coord:s[0],y_coord:s[3]},o=this.model.tile_source.get_image_url(n,a,h);new d.ImageLoader(o,{loaded:t=>{Object.assign(r,{img:t,loaded:!0}),_?(r.finished=!0,this.notify_finished()):this.request_render()},failed(){r.finished=!0}}),this.model.tile_source.tiles.set(r.cache_key,r),this._tiles.push(r)}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame.bbox.height,this.map_frame.bbox.width),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame.bbox.height,this.map_frame.bbox.width,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished())return!1;if(0===this._tiles.length)return!1;for(const t of this._tiles)if(!t.finished)return!1;return!0}_render(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(t){const e=this.model.tile_source.tiles.get(t);if(null!=e&&e.loaded){const[[t],[i]]=this.coordinates.map_to_screen([e.bounds[0]],[e.bounds[3]]),[[s],[_]]=this.coordinates.map_to_screen([e.bounds[2]],[e.bounds[1]]),n=s-t,a=_-i,h=t,r=i,o=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,h,r,n,a),this.map_canvas.setImageSmoothingEnabled(o),e.finished=!0}}_set_rect(){const t=this.plot_model.outline_line_width,e=this.map_frame.bbox.left+t/2,i=this.map_frame.bbox.top+t/2,s=this.map_frame.bbox.width-t,_=this.map_frame.bbox.height-t;this.map_canvas.rect(e,i,s,_),this.map_canvas.clip()}_render_tiles(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const e of t)this._draw_tile(e);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:t}=this.model,e=this.get_extent(),i=this.map_frame.bbox.height,s=this.map_frame.bbox.width,_=this.model.tile_source.get_level_by_extent(e,i,s),n=this.model.tile_source.get_tiles_by_extent(e,_);for(let e=0,i=Math.min(10,n.length);ei&&(s=this.extent,h=i,r=!0),r&&(this.x_range.setv({start:s[0],end:s[2]}),this.y_range.setv({start:s[1],end:s[3]})),this.extent=s;const o=t.get_tiles_by_extent(s,h),l=[],d=[],c=[],p=[];for(const e of o){const[i,s,n]=e,a=t.tile_xyz_to_key(i,s,n),h=t.tiles.get(a);if(null!=h&&h.loaded)d.push(a);else if(this.model.render_parents){const[e,a,h]=t.get_closest_parent_by_tile_xyz(i,s,n),r=t.tile_xyz_to_key(e,a,h),o=t.tiles.get(r);if(null!=o&&o.loaded&&!m.includes(c,r)&&c.push(r),_){const e=t.children_by_tile_xyz(i,s,n);for(const[i,s,_]of e){const e=t.tile_xyz_to_key(i,s,_);t.tiles.has(e)&&p.push(e)}}}null==h&&l.push(e)}this._render_tiles(c),this._render_tiles(p),this._render_tiles(d),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout((()=>this._fetch_tiles(l)),65)}}i.TileRendererView=g,g.__name__=\"TileRendererView\";class u extends r.Renderer{constructor(t){super(t)}static init_TileRenderer(){this.prototype.default_view=g,this.define((({Boolean:t,Number:e,Ref:i})=>({alpha:[e,1],smoothing:[t,!0],tile_source:[i(a.TileSource),()=>new h.WMTSTileSource],render_parents:[t,!0]}))),this.override({level:\"image\"})}}i.TileRenderer=u,u.__name__=\"TileRenderer\",u.init_TileRenderer()},\n function _(t,e,r,o,s){o();const c=t(348);class i extends c.MercatorTileSource{constructor(t){super(t)}get_image_url(t,e,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[s,c,i]=this.tms_to_wmts(t,e,r);return o.replace(\"{X}\",s.toString()).replace(\"{Y}\",c.toString()).replace(\"{Z}\",i.toString())}}r.WMTSTileSource=i,i.__name__=\"WMTSTileSource\"},\n function _(t,o,i,b,r){b(),i.root=\"bk-root\",i.tile_attribution=\"bk-tile-attribution\",i.default=\".bk-root .bk-tile-attribution a{color:black;}\"},\n function _(e,r,t,c,o){c();const i=e(348);class l extends i.MercatorTileSource{constructor(e){super(e)}get_image_url(e,r,t){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",r.toString()).replace(\"{Z}\",t.toString())}}t.TMSTileSource=l,l.__name__=\"TMSTileSource\"},\n function _(e,t,u,a,r){a(),r(\"CanvasTexture\",e(357).CanvasTexture),r(\"ImageURLTexture\",e(359).ImageURLTexture),r(\"Texture\",e(358).Texture)},\n function _(t,e,n,c,s){c();const a=t(358),i=t(34);class r extends a.Texture{constructor(t){super(t)}static init_CanvasTexture(){this.define((({String:t})=>({code:[t]})))}get func(){const t=i.use_strict(this.code);return new Function(\"ctx\",\"color\",\"scale\",\"weight\",t)}get_pattern(t,e,n){const c=document.createElement(\"canvas\");c.width=e,c.height=e;const s=c.getContext(\"2d\");return this.func.call(this,s,t,e,n),c}}n.CanvasTexture=r,r.__name__=\"CanvasTexture\",r.init_CanvasTexture()},\n function _(e,t,i,n,r){n();const s=e(53),u=e(20);class o extends s.Model{constructor(e){super(e)}static init_Texture(){this.define((()=>({repetition:[u.TextureRepetition,\"repeat\"]})))}}i.Texture=o,o.__name__=\"Texture\",o.init_Texture()},\n function _(e,t,i,r,n){r();const a=e(358),s=e(296);class u extends a.Texture{constructor(e){super(e)}static init_ImageURLTexture(){this.define((({String:e})=>({url:[e]})))}initialize(){super.initialize(),this._loader=new s.ImageLoader(this.url)}get_pattern(e,t,i){const{_loader:r}=this;return this._loader.finished?r.image:r.promise}}i.ImageURLTexture=u,u.__name__=\"ImageURLTexture\",u.init_ImageURLTexture()},\n function _(o,l,T,e,t){e(),t(\"ActionTool\",o(251).ActionTool),t(\"CustomAction\",o(361).CustomAction),t(\"HelpTool\",o(252).HelpTool),t(\"RedoTool\",o(362).RedoTool),t(\"ResetTool\",o(363).ResetTool),t(\"SaveTool\",o(364).SaveTool),t(\"UndoTool\",o(365).UndoTool),t(\"ZoomInTool\",o(366).ZoomInTool),t(\"ZoomOutTool\",o(369).ZoomOutTool),t(\"ButtonTool\",o(238).ButtonTool),t(\"EditTool\",o(370).EditTool),t(\"BoxEditTool\",o(371).BoxEditTool),t(\"FreehandDrawTool\",o(372).FreehandDrawTool),t(\"PointDrawTool\",o(373).PointDrawTool),t(\"PolyDrawTool\",o(374).PolyDrawTool),t(\"PolyTool\",o(375).PolyTool),t(\"PolyEditTool\",o(376).PolyEditTool),t(\"BoxSelectTool\",o(377).BoxSelectTool),t(\"BoxZoomTool\",o(379).BoxZoomTool),t(\"GestureTool\",o(237).GestureTool),t(\"LassoSelectTool\",o(380).LassoSelectTool),t(\"LineEditTool\",o(382).LineEditTool),t(\"PanTool\",o(384).PanTool),t(\"PolySelectTool\",o(381).PolySelectTool),t(\"RangeTool\",o(385).RangeTool),t(\"SelectTool\",o(378).SelectTool),t(\"TapTool\",o(386).TapTool),t(\"WheelPanTool\",o(387).WheelPanTool),t(\"WheelZoomTool\",o(388).WheelZoomTool),t(\"CrosshairTool\",o(389).CrosshairTool),t(\"CustomJSHover\",o(390).CustomJSHover),t(\"HoverTool\",o(391).HoverTool),t(\"InspectTool\",o(247).InspectTool),t(\"Tool\",o(236).Tool),t(\"ToolProxy\",o(392).ToolProxy),t(\"Toolbar\",o(235).Toolbar),t(\"ToolbarBase\",o(248).ToolbarBase),t(\"ProxyToolbar\",o(393).ProxyToolbar),t(\"ToolbarBox\",o(393).ToolbarBox)},\n function _(t,o,i,s,n){s();const e=t(251);class c extends e.ActionToolButtonView{css_classes(){return super.css_classes().concat(\"bk-toolbar-button-custom-action\")}}i.CustomActionButtonView=c,c.__name__=\"CustomActionButtonView\";class u extends e.ActionToolView{doit(){var t;null===(t=this.model.callback)||void 0===t||t.execute(this.model)}}i.CustomActionView=u,u.__name__=\"CustomActionView\";class l extends e.ActionTool{constructor(t){super(t),this.tool_name=\"Custom Action\",this.button_view=c}static init_CustomAction(){this.prototype.default_view=u,this.define((({Any:t,String:o,Nullable:i})=>({callback:[i(t)],icon:[o]}))),this.override({description:\"Perform a Custom Action\"})}}i.CustomAction=l,l.__name__=\"CustomAction\",l.init_CustomAction()},\n function _(o,e,t,i,s){i();const n=o(251),d=o(242);class l extends n.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,(()=>this.model.disabled=!this.plot_view.state.can_redo))}doit(){this.plot_view.state.redo()}}t.RedoToolView=l,l.__name__=\"RedoToolView\";class _ extends n.ActionTool{constructor(o){super(o),this.tool_name=\"Redo\",this.icon=d.tool_icon_redo}static init_RedoTool(){this.prototype.default_view=l,this.override({disabled:!0}),this.register_alias(\"redo\",(()=>new _))}}t.RedoTool=_,_.__name__=\"RedoTool\",_.init_RedoTool()},\n function _(e,t,o,s,i){s();const _=e(251),n=e(242);class l extends _.ActionToolView{doit(){this.plot_view.reset()}}o.ResetToolView=l,l.__name__=\"ResetToolView\";class c extends _.ActionTool{constructor(e){super(e),this.tool_name=\"Reset\",this.icon=n.tool_icon_reset}static init_ResetTool(){this.prototype.default_view=l,this.register_alias(\"reset\",(()=>new c))}}o.ResetTool=c,c.__name__=\"ResetTool\",c.init_ResetTool()},\n function _(o,e,t,a,i){a();const n=o(251),s=o(242);class c extends n.ActionToolView{async copy(){const o=await this.plot_view.to_blob(),e=new ClipboardItem({[o.type]:o});await navigator.clipboard.write([e])}async save(o){const e=await this.plot_view.to_blob(),t=document.createElement(\"a\");t.href=URL.createObjectURL(e),t.download=o,t.target=\"_blank\",t.dispatchEvent(new MouseEvent(\"click\"))}doit(o=\"save\"){switch(o){case\"save\":this.save(\"bokeh_plot\");break;case\"copy\":this.copy()}}}t.SaveToolView=c,c.__name__=\"SaveToolView\";class l extends n.ActionTool{constructor(o){super(o),this.tool_name=\"Save\",this.icon=s.tool_icon_save}static init_SaveTool(){this.prototype.default_view=c,this.register_alias(\"save\",(()=>new l))}get menu(){return[{icon:\"bk-tool-icon-copy-to-clipboard\",tooltip:\"Copy image to clipboard\",if:()=>\"undefined\"!=typeof ClipboardItem,handler:()=>{this.do.emit(\"copy\")}}]}}t.SaveTool=l,l.__name__=\"SaveTool\",l.init_SaveTool()},\n function _(o,t,n,i,e){i();const s=o(251),d=o(242);class l extends s.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,(()=>this.model.disabled=!this.plot_view.state.can_undo))}doit(){this.plot_view.state.undo()}}n.UndoToolView=l,l.__name__=\"UndoToolView\";class _ extends s.ActionTool{constructor(o){super(o),this.tool_name=\"Undo\",this.icon=d.tool_icon_undo}static init_UndoTool(){this.prototype.default_view=l,this.override({disabled:!0}),this.register_alias(\"undo\",(()=>new _))}}n.UndoTool=_,_.__name__=\"UndoTool\",_.init_UndoTool()},\n function _(o,i,n,s,e){s();const t=o(367),_=o(242);class m extends t.ZoomBaseToolView{}n.ZoomInToolView=m,m.__name__=\"ZoomInToolView\";class l extends t.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name=\"Zoom In\",this.icon=_.tool_icon_zoom_in}static init_ZoomInTool(){this.prototype.default_view=m,this.register_alias(\"zoom_in\",(()=>new l({dimensions:\"both\"}))),this.register_alias(\"xzoom_in\",(()=>new l({dimensions:\"width\"}))),this.register_alias(\"yzoom_in\",(()=>new l({dimensions:\"height\"})))}}n.ZoomInTool=l,l.__name__=\"ZoomInTool\",l.init_ZoomInTool()},\n function _(o,t,e,i,s){i();const n=o(251),l=o(20),a=o(368);class _ extends n.ActionToolView{doit(){var o;const t=this.plot_view.frame,e=this.model.dimensions,i=\"width\"==e||\"both\"==e,s=\"height\"==e||\"both\"==e,n=a.scale_range(t,this.model.sign*this.model.factor,i,s);this.plot_view.state.push(\"zoom_out\",{range:n}),this.plot_view.update_range(n,{scrolling:!0}),null===(o=this.model.document)||void 0===o||o.interactive_start(this.plot_model)}}e.ZoomBaseToolView=_,_.__name__=\"ZoomBaseToolView\";class m extends n.ActionTool{constructor(o){super(o)}static init_ZoomBaseTool(){this.define((({Percent:o})=>({factor:[o,.1],dimensions:[l.Dimensions,\"both\"]})))}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.ZoomBaseTool=m,m.__name__=\"ZoomBaseTool\",m.init_ZoomBaseTool()},\n function _(n,t,o,r,s){r();const c=n(10);function e(n,t,o){const[r,s]=[n.start,n.end],c=null!=o?o:(s+r)/2;return[r-(r-c)*t,s-(s-c)*t]}function a(n,[t,o]){const r=new Map;for(const[s,c]of n){const[n,e]=c.r_invert(t,o);r.set(s,{start:n,end:e})}return r}o.scale_highlow=e,o.get_info=a,o.scale_range=function(n,t,o=!0,r=!0,s){t=c.clamp(t,-.9,.9);const l=o?t:0,[u,i]=e(n.bbox.h_range,l,null!=s?s.x:void 0),_=a(n.x_scales,[u,i]),f=r?t:0,[g,x]=e(n.bbox.v_range,f,null!=s?s.y:void 0);return{xrs:_,yrs:a(n.y_scales,[g,x]),factor:t}}},\n function _(o,t,i,s,e){s();const n=o(367),_=o(242);class m extends n.ZoomBaseToolView{}i.ZoomOutToolView=m,m.__name__=\"ZoomOutToolView\";class l extends n.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name=\"Zoom Out\",this.icon=_.tool_icon_zoom_out}static init_ZoomOutTool(){this.prototype.default_view=m,this.register_alias(\"zoom_out\",(()=>new l({dimensions:\"both\"}))),this.register_alias(\"xzoom_out\",(()=>new l({dimensions:\"width\"}))),this.register_alias(\"yzoom_out\",(()=>new l({dimensions:\"height\"})))}}i.ZoomOutTool=l,l.__name__=\"ZoomOutTool\",l.init_ZoomOutTool()},\n function _(e,t,s,o,n){o();const i=e(9),r=e(8),c=e(11),a=e(61),_=e(237);class l extends _.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void c.unreachable():\"replace\"}_move_enter(e){this._mouse_in_frame=!0}_move_exit(e){this._mouse_in_frame=!1}_map_drag(e,t,s){if(!this.plot_view.frame.bbox.contains(e,t))return null;const o=this.plot_view.renderer_view(s);if(null==o)return null;return[o.coordinates.x_scale.invert(e),o.coordinates.y_scale.invert(t)]}_delete_selected(e){const t=e.data_source,s=t.selected.indices;s.sort();for(const e of t.columns()){const o=t.get_array(e);for(let e=0;e({custom_icon:[n(t),null],empty_value:[e],renderers:[s(o(a.GlyphRenderer)),[]]})))}get computed_icon(){var e;return null!==(e=this.custom_icon)&&void 0!==e?e:this.icon}}s.EditTool=d,d.__name__=\"EditTool\",d.init_EditTool()},\n function _(e,t,s,i,_){i();const o=e(43),n=e(20),a=e(370),d=e(242);class l extends a.EditToolView{_tap(e){null==this._draw_basepoint&&null==this._basepoint&&this._select_event(e,this._select_mode(e),this.model.renderers)}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)if(e.keyCode===o.Keys.Backspace)this._delete_selected(t);else if(e.keyCode==o.Keys.Esc){t.data_source.selection_manager.clear()}}_set_extent([e,t],[s,i],_,o=!1){const n=this.model.renderers[0],a=this.plot_view.renderer_view(n);if(null==a)return;const d=n.glyph,l=n.data_source,[r,h]=a.coordinates.x_scale.r_invert(e,t),[p,u]=a.coordinates.y_scale.r_invert(s,i),[c,m]=[(r+h)/2,(p+u)/2],[f,b]=[h-r,u-p],[x,y]=[d.x.field,d.y.field],[w,v]=[d.width.field,d.height.field];if(_)this._pop_glyphs(l,this.model.num_objects),x&&l.get_array(x).push(c),y&&l.get_array(y).push(m),w&&l.get_array(w).push(f),v&&l.get_array(v).push(b),this._pad_empty_columns(l,[x,y,w,v]);else{const e=l.data[x].length-1;x&&(l.data[x][e]=c),y&&(l.data[y][e]=m),w&&(l.data[w][e]=f),v&&(l.data[v][e]=b)}this._emit_cds_changes(l,!0,!1,o)}_update_box(e,t=!1,s=!1){if(null==this._draw_basepoint)return;const i=[e.sx,e.sy],_=this.plot_view.frame,o=this.model.dimensions,n=this.model._get_dim_limits(this._draw_basepoint,i,_,o);if(null!=n){const[e,i]=n;this._set_extent(e,i,t,s)}}_doubletap(e){this.model.active&&(null!=this._draw_basepoint?(this._update_box(e,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[e.sx,e.sy],this._select_event(e,\"append\",this.model.renderers),this._update_box(e,!0,!1)))}_move(e){this._update_box(e,!1,!1)}_pan_start(e){if(e.shiftKey){if(null!=this._draw_basepoint)return;this._draw_basepoint=[e.sx,e.sy],this._update_box(e,!0,!1)}else{if(null!=this._basepoint)return;this._select_event(e,\"append\",this.model.renderers),this._basepoint=[e.sx,e.sy]}}_pan(e,t=!1,s=!1){if(e.shiftKey){if(null==this._draw_basepoint)return;this._update_box(e,t,s)}else{if(null==this._basepoint)return;this._drag_points(e,this.model.renderers)}}_pan_end(e){if(this._pan(e,!1,!0),e.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(const e of this.model.renderers)this._emit_cds_changes(e.data_source,!1,!0,!0)}}}s.BoxEditToolView=l,l.__name__=\"BoxEditToolView\";class r extends a.EditTool{constructor(e){super(e),this.tool_name=\"Box Edit Tool\",this.icon=d.tool_icon_box_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=1}static init_BoxEditTool(){this.prototype.default_view=l,this.define((({Int:e})=>({dimensions:[n.Dimensions,\"both\"],num_objects:[e,0]})))}}s.BoxEditTool=r,r.__name__=\"BoxEditTool\",r.init_BoxEditTool()},\n function _(e,t,a,s,r){s();const _=e(43),i=e(8),o=e(370),d=e(242);class n extends o.EditToolView{_draw(e,t,a=!1){if(!this.model.active)return;const s=this.model.renderers[0],r=this._map_drag(e.sx,e.sy,s);if(null==r)return;const[_,o]=r,d=s.data_source,n=s.glyph,[h,l]=[n.xs.field,n.ys.field];if(\"new\"==t)this._pop_glyphs(d,this.model.num_objects),h&&d.get_array(h).push([_]),l&&d.get_array(l).push([o]),this._pad_empty_columns(d,[h,l]);else if(\"add\"==t){if(h){const e=d.data[h].length-1;let t=d.get_array(h)[e];i.isArray(t)||(t=Array.from(t),d.data[h][e]=t),t.push(_)}if(l){const e=d.data[l].length-1;let t=d.get_array(l)[e];i.isArray(t)||(t=Array.from(t),d.data[l][e]=t),t.push(o)}}this._emit_cds_changes(d,!0,!0,a)}_pan_start(e){this._draw(e,\"new\")}_pan(e){this._draw(e,\"add\")}_pan_end(e){this._draw(e,\"add\",!0)}_tap(e){this._select_event(e,this._select_mode(e),this.model.renderers)}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)e.keyCode===_.Keys.Esc?t.data_source.selection_manager.clear():e.keyCode===_.Keys.Backspace&&this._delete_selected(t)}}a.FreehandDrawToolView=n,n.__name__=\"FreehandDrawToolView\";class h extends o.EditTool{constructor(e){super(e),this.tool_name=\"Freehand Draw Tool\",this.icon=d.tool_icon_freehand_draw,this.event_type=[\"pan\",\"tap\"],this.default_order=3}static init_FreehandDrawTool(){this.prototype.default_view=n,this.define((({Int:e})=>({num_objects:[e,0]}))),this.register_alias(\"freehand_draw\",(()=>new h))}}a.FreehandDrawTool=h,h.__name__=\"FreehandDrawTool\",h.init_FreehandDrawTool()},\n function _(e,t,s,o,i){o();const a=e(43),n=e(370),_=e(242);class r extends n.EditToolView{_tap(e){if(this._select_event(e,this._select_mode(e),this.model.renderers).length||!this.model.add)return;const t=this.model.renderers[0],s=this._map_drag(e.sx,e.sy,t);if(null==s)return;const o=t.glyph,i=t.data_source,[a,n]=[o.x.field,o.y.field],[_,r]=s;this._pop_glyphs(i,this.model.num_objects),a&&i.get_array(a).push(_),n&&i.get_array(n).push(r),this._pad_empty_columns(i,[a,n]),i.change.emit(),i.data=i.data,i.properties.data.change.emit()}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)e.keyCode===a.Keys.Backspace?this._delete_selected(t):e.keyCode==a.Keys.Esc&&t.data_source.selection_manager.clear()}_pan_start(e){this.model.drag&&(this._select_event(e,\"append\",this.model.renderers),this._basepoint=[e.sx,e.sy])}_pan(e){this.model.drag&&null!=this._basepoint&&this._drag_points(e,this.model.renderers)}_pan_end(e){if(this.model.drag){this._pan(e);for(const e of this.model.renderers)this._emit_cds_changes(e.data_source,!1,!0,!0);this._basepoint=null}}}s.PointDrawToolView=r,r.__name__=\"PointDrawToolView\";class d extends n.EditTool{constructor(e){super(e),this.tool_name=\"Point Draw Tool\",this.icon=_.tool_icon_point_draw,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=2}static init_PointDrawTool(){this.prototype.default_view=r,this.define((({Boolean:e,Int:t})=>({add:[e,!0],drag:[e,!0],num_objects:[t,0]})))}}s.PointDrawTool=d,d.__name__=\"PointDrawTool\",d.init_PointDrawTool()},\n function _(e,t,s,i,a){i();const o=e(43),r=e(8),n=e(375),_=e(242);class d extends n.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._initialized=!1}_tap(e){this._drawing?this._draw(e,\"add\",!0):this._select_event(e,this._select_mode(e),this.model.renderers)}_draw(e,t,s=!1){const i=this.model.renderers[0],a=this._map_drag(e.sx,e.sy,i);if(this._initialized||this.activate(),null==a)return;const[o,n]=this._snap_to_vertex(e,...a),_=i.data_source,d=i.glyph,[l,h]=[d.xs.field,d.ys.field];if(\"new\"==t)this._pop_glyphs(_,this.model.num_objects),l&&_.get_array(l).push([o,o]),h&&_.get_array(h).push([n,n]),this._pad_empty_columns(_,[l,h]);else if(\"edit\"==t){if(l){const e=_.data[l][_.data[l].length-1];e[e.length-1]=o}if(h){const e=_.data[h][_.data[h].length-1];e[e.length-1]=n}}else if(\"add\"==t){if(l){const e=_.data[l].length-1;let t=_.get_array(l)[e];const s=t[t.length-1];t[t.length-1]=o,r.isArray(t)||(t=Array.from(t),_.data[l][e]=t),t.push(s)}if(h){const e=_.data[h].length-1;let t=_.get_array(h)[e];const s=t[t.length-1];t[t.length-1]=n,r.isArray(t)||(t=Array.from(t),_.data[h][e]=t),t.push(s)}}this._emit_cds_changes(_,!0,!1,s)}_show_vertices(){if(!this.model.active)return;const e=[],t=[];for(let s=0;sthis._show_vertices()))}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}s.PolyDrawToolView=d,d.__name__=\"PolyDrawToolView\";class l extends n.PolyTool{constructor(e){super(e),this.tool_name=\"Polygon Draw Tool\",this.icon=_.tool_icon_poly_draw,this.event_type=[\"pan\",\"tap\",\"move\"],this.default_order=3}static init_PolyDrawTool(){this.prototype.default_view=d,this.define((({Boolean:e,Int:t})=>({drag:[e,!0],num_objects:[t,0]})))}}s.PolyDrawTool=l,l.__name__=\"PolyDrawTool\",l.init_PolyDrawTool()},\n function _(e,t,r,o,s){o();const i=e(8),l=e(370);class _ extends l.EditToolView{_set_vertices(e,t){const r=this.model.vertex_renderer.glyph,o=this.model.vertex_renderer.data_source,[s,l]=[r.x.field,r.y.field];s&&(i.isArray(e)?o.data[s]=e:r.x={value:e}),l&&(i.isArray(t)?o.data[l]=t:r.y={value:t}),this._emit_cds_changes(o,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(e,t,r){if(this.model.vertex_renderer){const o=this._select_event(e,\"replace\",[this.model.vertex_renderer]),s=this.model.vertex_renderer.data_source,i=this.model.vertex_renderer.glyph,[l,_]=[i.x.field,i.y.field];if(o.length){const e=s.selected.indices[0];l&&(t=s.data[l][e]),_&&(r=s.data[_][e]),s.selection_manager.clear()}}return[t,r]}}r.PolyToolView=_,_.__name__=\"PolyToolView\";class d extends l.EditTool{constructor(e){super(e)}static init_PolyTool(){this.define((({AnyRef:e})=>({vertex_renderer:[e()]})))}}r.PolyTool=d,d.__name__=\"PolyTool\",d.init_PolyTool()},\n function _(e,t,s,r,i){r();const _=e(43),d=e(8),n=e(375),l=e(242);class a extends n.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._cur_index=null}_doubletap(e){if(!this.model.active)return;const t=this._map_drag(e.sx,e.sy,this.model.vertex_renderer);if(null==t)return;const[s,r]=t,i=this._select_event(e,\"replace\",[this.model.vertex_renderer]),_=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[n,l]=[d.x.field,d.y.field];if(i.length&&null!=this._selected_renderer){const e=_.selected.indices[0];this._drawing?(this._drawing=!1,_.selection_manager.clear()):(_.selected.indices=[e+1],n&&_.get_array(n).splice(e+1,0,s),l&&_.get_array(l).splice(e+1,0,r),this._drawing=!0),_.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(e)}_show_vertices(e){if(!this.model.active)return;const t=this.model.renderers[0],s=()=>this._update_vertices(t),r=null==t?void 0:t.data_source,i=this._select_event(e,\"replace\",this.model.renderers);if(!i.length)return this._set_vertices([],[]),this._selected_renderer=null,this._drawing=!1,this._cur_index=null,void(null!=r&&r.disconnect(r.properties.data.change,s));null!=r&&r.connect(r.properties.data.change,s),this._cur_index=i[0].data_source.selected.indices[0],this._update_vertices(i[0])}_update_vertices(e){const t=e.glyph,s=e.data_source,r=this._cur_index,[i,_]=[t.xs.field,t.ys.field];if(this._drawing)return;if(null==r&&(i||_))return;let n,l;i&&null!=r?(n=s.data[i][r],d.isArray(n)||(s.data[i][r]=n=Array.from(n))):n=t.xs.value,_&&null!=r?(l=s.data[_][r],d.isArray(l)||(s.data[_][r]=l=Array.from(l))):l=t.ys.value,this._selected_renderer=e,this._set_vertices(n,l)}_move(e){if(this._drawing&&null!=this._selected_renderer){const t=this.model.vertex_renderer,s=t.data_source,r=t.glyph,i=this._map_drag(e.sx,e.sy,t);if(null==i)return;let[_,d]=i;const n=s.selected.indices;[_,d]=this._snap_to_vertex(e,_,d),s.selected.indices=n;const[l,a]=[r.x.field,r.y.field],c=n[0];l&&(s.data[l][c]=_),a&&(s.data[a][c]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(e){const t=this.model.vertex_renderer,s=this._map_drag(e.sx,e.sy,t);if(null==s)return;if(this._drawing&&this._selected_renderer){let[r,i]=s;const _=t.data_source,d=t.glyph,[n,l]=[d.x.field,d.y.field],a=_.selected.indices;[r,i]=this._snap_to_vertex(e,r,i);const c=a[0];if(_.selected.indices=[c+1],n){const e=_.get_array(n),t=e[c];e[c]=r,e.splice(c+1,0,t)}if(l){const e=_.get_array(l),t=e[c];e[c]=i,e.splice(c+1,0,t)}return _.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const r=this._select_mode(e);this._select_event(e,r,[t]),this._select_event(e,r,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const e=this.model.vertex_renderer,t=e.data_source,s=e.glyph,r=t.selected.indices[0],[i,_]=[s.x.field,s.y.field];i&&t.get_array(i).splice(r,1),_&&t.get_array(_).splice(r,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(e){this._select_event(e,\"append\",[this.model.vertex_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(e){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)e.keyCode===_.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):e.keyCode==_.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}s.PolyEditToolView=a,a.__name__=\"PolyEditToolView\";class c extends n.PolyTool{constructor(e){super(e),this.tool_name=\"Poly Edit Tool\",this.icon=l.tool_icon_poly_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}static init_PolyEditTool(){this.prototype.default_view=a}}s.PolyEditTool=c,c.__name__=\"PolyEditTool\",c.init_PolyEditTool()},\n function _(e,t,o,s,i){s();const l=e(378),n=e(136),_=e(20),c=e(242);class h extends l.SelectToolView{_compute_limits(e){const t=this.plot_view.frame,o=this.model.dimensions;let s=this._base_point;if(\"center\"==this.model.origin){const[t,o]=s,[i,l]=e;s=[t-(i-t),o-(l-o)]}return this.model._get_dim_limits(s,e,t,o)}_pan_start(e){const{sx:t,sy:o}=e;this._base_point=[t,o]}_pan(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this.model.overlay.update({left:i[0],right:i[1],top:l[0],bottom:l[1]}),this.model.select_every_mousemove&&this._do_select(i,l,!1,this._select_mode(e))}_pan_end(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this._do_select(i,l,!0,this._select_mode(e)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.state.push(\"box_select\",{selection:this.plot_view.get_selection()})}_do_select([e,t],[o,s],i,l=\"replace\"){const n={type:\"rect\",sx0:e,sx1:t,sy0:o,sy1:s};this._select(n,i,l)}}o.BoxSelectToolView=h,h.__name__=\"BoxSelectToolView\";const r=()=>new n.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class a extends l.SelectTool{constructor(e){super(e),this.tool_name=\"Box Select\",this.icon=c.tool_icon_box_select,this.event_type=\"pan\",this.default_order=30}static init_BoxSelectTool(){this.prototype.default_view=h,this.define((({Boolean:e,Ref:t})=>({dimensions:[_.Dimensions,\"both\"],select_every_mousemove:[e,!1],overlay:[t(n.BoxAnnotation),r],origin:[_.BoxOrigin,\"corner\"]}))),this.register_alias(\"box_select\",(()=>new a)),this.register_alias(\"xbox_select\",(()=>new a({dimensions:\"width\"}))),this.register_alias(\"ybox_select\",(()=>new a({dimensions:\"height\"})))}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}o.BoxSelectTool=a,a.__name__=\"BoxSelectTool\",a.init_BoxSelectTool()},\n function _(e,t,s,n,o){n();const r=e(237),c=e(61),i=e(123),l=e(62),a=e(161),_=e(20),d=e(43),h=e(264),p=e(15),u=e(11);class m extends r.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect((()=>this._clear()))}get computed_renderers(){const{renderers:e,names:t}=this.model,s=this.plot_model.data_renderers;return a.compute_renderers(e,s,t)}_computed_renderers_by_data_source(){var e;const t=new Map;for(const s of this.computed_renderers){let n;if(s instanceof c.GlyphRenderer)n=s.data_source;else{if(!(s instanceof i.GraphRenderer))continue;n=s.node_renderer.data_source}const o=null!==(e=t.get(n))&&void 0!==e?e:[];t.set(n,[...o,s])}return t}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void u.unreachable():this.model.mode}_keyup(e){e.keyCode==d.Keys.Esc&&this._clear()}_clear(){for(const e of this.computed_renderers)e.get_selection_manager().clear();const e=this.computed_renderers.map((e=>this.plot_view.renderer_view(e)));this.plot_view.request_paint(e)}_select(e,t,s){const n=this._computed_renderers_by_data_source();for(const[,o]of n){const n=o[0].get_selection_manager(),r=[];for(const e of o){const t=this.plot_view.renderer_view(e);null!=t&&r.push(t)}n.select(r,e,t,s)}null!=this.model.callback&&this._emit_callback(e),this._emit_selection_event(e,t)}_emit_selection_event(e,t=!0){const{x_scale:s,y_scale:n}=this.plot_view.frame;let o;switch(e.type){case\"point\":{const{sx:t,sy:r}=e,c=s.invert(t),i=n.invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"span\":{const{sx:t,sy:r}=e,c=s.invert(t),i=n.invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"rect\":{const{sx0:t,sx1:r,sy0:c,sy1:i}=e,[l,a]=s.r_invert(t,r),[_,d]=n.r_invert(c,i);o=Object.assign(Object.assign({},e),{x0:l,y0:_,x1:a,y1:d});break}case\"poly\":{const{sx:t,sy:r}=e,c=s.v_invert(t),i=n.v_invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}}this.plot_model.trigger_event(new h.SelectionGeometry(o,t))}}s.SelectToolView=m,m.__name__=\"SelectToolView\";class v extends r.GestureTool{constructor(e){super(e)}initialize(){super.initialize(),this.clear=new p.Signal0(this,\"clear\")}static init_SelectTool(){this.define((({String:e,Array:t,Ref:s,Or:n,Auto:o})=>({renderers:[n(t(s(l.DataRenderer)),o),\"auto\"],names:[t(e),[]],mode:[_.SelectionMode,\"replace\"]})))}get menu(){return[{icon:\"bk-tool-icon-replace-mode\",tooltip:\"Replace the current selection\",active:()=>\"replace\"==this.mode,handler:()=>{this.mode=\"replace\",this.active=!0}},{icon:\"bk-tool-icon-append-mode\",tooltip:\"Append to the current selection (Shift)\",active:()=>\"append\"==this.mode,handler:()=>{this.mode=\"append\",this.active=!0}},{icon:\"bk-tool-icon-intersect-mode\",tooltip:\"Intersect with the current selection (Ctrl)\",active:()=>\"intersect\"==this.mode,handler:()=>{this.mode=\"intersect\",this.active=!0}},{icon:\"bk-tool-icon-subtract-mode\",tooltip:\"Subtract from the current selection (Shift+Ctrl)\",active:()=>\"subtract\"==this.mode,handler:()=>{this.mode=\"subtract\",this.active=!0}},null,{icon:\"bk-tool-icon-clear-selection\",tooltip:\"Clear the current selection (Esc)\",handler:()=>{this.clear.emit()}}]}}s.SelectTool=v,v.__name__=\"SelectTool\",v.init_SelectTool()},\n function _(t,o,e,s,i){s();const n=t(237),_=t(136),a=t(20),l=t(242);class r extends n.GestureToolView{_match_aspect(t,o,e){const s=e.bbox.aspect,i=e.bbox.h_range.end,n=e.bbox.h_range.start,_=e.bbox.v_range.end,a=e.bbox.v_range.start;let l=Math.abs(t[0]-o[0]),r=Math.abs(t[1]-o[1]);const h=0==r?0:l/r,[c]=h>=s?[1,h/s]:[s/h,1];let m,p,d,b;return t[0]<=o[0]?(m=t[0],p=t[0]+l*c,p>i&&(p=i)):(p=t[0],m=t[0]-l*c,m_&&(d=_)):(d=t[1],b=t[1]-l/s,bnew _.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class c extends n.GestureTool{constructor(t){super(t),this.tool_name=\"Box Zoom\",this.icon=l.tool_icon_box_zoom,this.event_type=\"pan\",this.default_order=20}static init_BoxZoomTool(){this.prototype.default_view=r,this.define((({Boolean:t,Ref:o})=>({dimensions:[a.Dimensions,\"both\"],overlay:[o(_.BoxAnnotation),h],match_aspect:[t,!1],origin:[a.BoxOrigin,\"corner\"]}))),this.register_alias(\"box_zoom\",(()=>new c({dimensions:\"both\"}))),this.register_alias(\"xbox_zoom\",(()=>new c({dimensions:\"width\"}))),this.register_alias(\"ybox_zoom\",(()=>new c({dimensions:\"height\"})))}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.BoxZoomTool=c,c.__name__=\"BoxZoomTool\",c.init_BoxZoomTool()},\n function _(s,e,t,o,i){o();const l=s(378),_=s(231),a=s(381),c=s(43),n=s(242);class h extends l.SelectToolView{constructor(){super(...arguments),this.sxs=[],this.sys=[]}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._active_change()))}_active_change(){this.model.active||this._clear_overlay()}_keyup(s){s.keyCode==c.Keys.Enter&&this._clear_overlay()}_pan_start(s){this.sxs=[],this.sys=[];const{sx:e,sy:t}=s;this._append_overlay(e,t)}_pan(s){const[e,t]=this.plot_view.frame.bbox.clip(s.sx,s.sy);this._append_overlay(e,t),this.model.select_every_mousemove&&this._do_select(this.sxs,this.sys,!1,this._select_mode(s))}_pan_end(s){const{sxs:e,sys:t}=this;this._clear_overlay(),this._do_select(e,t,!0,this._select_mode(s)),this.plot_view.state.push(\"lasso_select\",{selection:this.plot_view.get_selection()})}_append_overlay(s,e){const{sxs:t,sys:o}=this;t.push(s),o.push(e),this.model.overlay.update({xs:t,ys:o})}_clear_overlay(){this.sxs=[],this.sys=[],this.model.overlay.update({xs:this.sxs,ys:this.sys})}_do_select(s,e,t,o){const i={type:\"poly\",sx:s,sy:e};this._select(i,t,o)}}t.LassoSelectToolView=h,h.__name__=\"LassoSelectToolView\";class r extends l.SelectTool{constructor(s){super(s),this.tool_name=\"Lasso Select\",this.icon=n.tool_icon_lasso_select,this.event_type=\"pan\",this.default_order=12}static init_LassoSelectTool(){this.prototype.default_view=h,this.define((({Boolean:s,Ref:e})=>({select_every_mousemove:[s,!0],overlay:[e(_.PolyAnnotation),a.DEFAULT_POLY_OVERLAY]}))),this.register_alias(\"lasso_select\",(()=>new r))}}t.LassoSelectTool=r,r.__name__=\"LassoSelectTool\",r.init_LassoSelectTool()},\n function _(e,t,s,l,o){l();const i=e(378),a=e(231),_=e(43),c=e(9),n=e(242);class h extends i.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._active_change()))}_active_change(){this.model.active||this._clear_data()}_keyup(e){e.keyCode==_.Keys.Enter&&this._clear_data()}_doubletap(e){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.state.push(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(e){const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)&&(this.data.sx.push(t),this.data.sy.push(s),this.model.overlay.update({xs:c.copy(this.data.sx),ys:c.copy(this.data.sy)}))}_do_select(e,t,s,l){const o={type:\"poly\",sx:e,sy:t};this._select(o,s,l)}}s.PolySelectToolView=h,h.__name__=\"PolySelectToolView\";s.DEFAULT_POLY_OVERLAY=()=>new a.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class y extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Poly Select\",this.icon=n.tool_icon_polygon_select,this.event_type=\"tap\",this.default_order=11}static init_PolySelectTool(){this.prototype.default_view=h,this.define((({Ref:e})=>({overlay:[e(a.PolyAnnotation),s.DEFAULT_POLY_OVERLAY]}))),this.register_alias(\"poly_select\",(()=>new y))}}s.PolySelectTool=y,y.__name__=\"PolySelectTool\",y.init_PolySelectTool()},\n function _(e,t,i,s,n){s();const r=e(20),_=e(383),d=e(242);class o extends _.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this.model.renderers;for(const i of t){1==this._select_event(e,\"replace\",[i]).length&&(this._selected_renderer=i)}this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active)return;if(null==this._selected_renderer)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const e=this._selected_renderer.data_source,t=this._selected_renderer.glyph,[i,s]=[t.x.field,t.y.field],n=e.get_array(i),r=e.get_array(s);this._set_intersection(n,r)}_tap(e){const t=this.model.intersection_renderer;if(null==this._map_drag(e.sx,e.sy,t))return;if(this._drawing&&this._selected_renderer){const i=this._select_mode(e);if(0==this._select_event(e,i,[t]).length)return}const i=this._select_mode(e);this._select_event(e,i,[t]),this._select_event(e,i,this.model.renderers)}_update_line_cds(){if(null==this._selected_renderer)return;const e=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[i,s]=[e.x.field,e.y.field];if(i&&s){const e=t.data[i],n=t.data[s];this._selected_renderer.data_source.data[i]=e,this._selected_renderer.data_source.data[s]=n}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(e){this._select_event(e,\"append\",[this.model.intersection_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}i.LineEditToolView=o,o.__name__=\"LineEditToolView\";class l extends _.LineTool{constructor(e){super(e),this.tool_name=\"Line Edit Tool\",this.icon=d.tool_icon_line_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}static init_LineEditTool(){this.prototype.default_view=o,this.define((()=>({dimensions:[r.Dimensions,\"both\"]})))}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}i.LineEditTool=l,l.__name__=\"LineEditTool\",l.init_LineEditTool()},\n function _(e,i,t,n,o){n();const s=e(8),_=e(370);class r extends _.EditToolView{_set_intersection(e,i){const t=this.model.intersection_renderer.glyph,n=this.model.intersection_renderer.data_source,[o,_]=[t.x.field,t.y.field];o&&(s.isArray(e)?n.data[o]=e:t.x={value:e}),_&&(s.isArray(i)?n.data[_]=i:t.y={value:i}),this._emit_cds_changes(n,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}t.LineToolView=r,r.__name__=\"LineToolView\";class c extends _.EditTool{constructor(e){super(e)}static init_LineTool(){this.define((({AnyRef:e})=>({intersection_renderer:[e()]})))}}t.LineTool=c,c.__name__=\"LineTool\",c.init_LineTool()},\n function _(t,s,i,n,e){n();const o=t(1),a=t(237),_=t(20),h=o.__importStar(t(242));function l(t,s,i){const n=new Map;for(const[e,o]of t){const[t,a]=o.r_invert(s,i);n.set(e,{start:t,end:a})}return n}i.update_ranges=l;class r extends a.GestureToolView{_pan_start(t){var s;this.last_dx=0,this.last_dy=0;const{sx:i,sy:n}=t,e=this.plot_view.frame.bbox;if(!e.contains(i,n)){const t=e.h_range,s=e.v_range;(it.end)&&(this.v_axis_only=!0),(ns.end)&&(this.h_axis_only=!0)}null===(s=this.model.document)||void 0===s||s.interactive_start(this.plot_model)}_pan(t){var s;this._update(t.deltaX,t.deltaY),null===(s=this.model.document)||void 0===s||s.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.state.push(\"pan\",{range:this.pan_info})}_update(t,s){const i=this.plot_view.frame,n=t-this.last_dx,e=s-this.last_dy,o=i.bbox.h_range,a=o.start-n,_=o.end-n,h=i.bbox.v_range,r=h.start-e,d=h.end-e,p=this.model.dimensions;let c,m,u,x,v,y;\"width\"!=p&&\"both\"!=p||this.v_axis_only?(c=o.start,m=o.end,u=0):(c=a,m=_,u=-n),\"height\"!=p&&\"both\"!=p||this.h_axis_only?(x=h.start,v=h.end,y=0):(x=r,v=d,y=-e),this.last_dx=t,this.last_dy=s;const{x_scales:g,y_scales:w}=i,f=l(g,c,m),b=l(w,x,v);this.pan_info={xrs:f,yrs:b,sdx:u,sdy:y},this.plot_view.update_range(this.pan_info,{panning:!0})}}i.PanToolView=r,r.__name__=\"PanToolView\";class d extends a.GestureTool{constructor(t){super(t),this.tool_name=\"Pan\",this.event_type=\"pan\",this.default_order=10}static init_PanTool(){this.prototype.default_view=r,this.define((()=>({dimensions:[_.Dimensions,\"both\",{on_update(t,s){switch(t){case\"both\":s.icon=h.tool_icon_pan;break;case\"width\":s.icon=h.tool_icon_xpan;break;case\"height\":s.icon=h.tool_icon_ypan}}}]}))),this.register_alias(\"pan\",(()=>new d({dimensions:\"both\"}))),this.register_alias(\"xpan\",(()=>new d({dimensions:\"width\"}))),this.register_alias(\"ypan\",(()=>new d({dimensions:\"height\"})))}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}i.PanTool=d,d.__name__=\"PanTool\",d.init_PanTool()},\n function _(t,e,i,s,n){s();const l=t(136),a=t(156),r=t(19),o=t(237),_=t(242);function h(t){switch(t){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return t}}function d(t,e,i,s){if(null==e)return!1;const n=i.compute(e);return Math.abs(t-n)n.right)&&(l=!1)}if(null!=n.bottom&&null!=n.top){const t=s.invert(e);(tn.top)&&(l=!1)}return l}function c(t,e,i){let s=0;return t>=i.start&&t<=i.end&&(s+=1),e>=i.start&&e<=i.end&&(s+=1),s}function g(t,e,i,s){const n=e.compute(t),l=e.invert(n+i);return l>=s.start&&l<=s.end?l:t}function y(t,e,i){return t>e.start?(e.end=t,i):(e.end=e.start,e.start=t,h(i))}function f(t,e,i){return t=o&&(t.start=a,t.end=r)}i.flip_side=h,i.is_near=d,i.is_inside=u,i.sides_inside=c,i.compute_value=g,i.update_range_end_side=y,i.update_range_start_side=f,i.update_range=m;class v extends o.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),null!=this.model.x_range&&this.connect(this.model.x_range.change,(()=>this.model.update_overlay_from_ranges())),null!=this.model.y_range&&this.connect(this.model.y_range.change,(()=>this.model.update_overlay_from_ranges()))}_pan_start(t){this.last_dx=0,this.last_dy=0;const e=this.model.x_range,i=this.model.y_range,{frame:s}=this.plot_view,n=s.x_scale,a=s.y_scale,r=this.model.overlay,{left:o,right:_,top:h,bottom:c}=r,g=this.model.overlay.line_width+l.EDGE_TOLERANCE;null!=e&&this.model.x_interaction&&(d(t.sx,o,n,g)?this.side=1:d(t.sx,_,n,g)?this.side=2:u(t.sx,t.sy,n,a,r)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&d(t.sy,c,a,g)&&(this.side=4),0==this.side&&d(t.sy,h,a,g)?this.side=5:u(t.sx,t.sy,n,a,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))}_pan(t){const e=this.plot_view.frame,i=t.deltaX-this.last_dx,s=t.deltaY-this.last_dy,n=this.model.x_range,l=this.model.y_range,a=e.x_scale,r=e.y_scale;if(null!=n)if(3==this.side||7==this.side)m(n,a,i,e.x_range);else if(1==this.side){const t=g(n.start,a,i,e.x_range);this.side=f(t,n,this.side)}else if(2==this.side){const t=g(n.end,a,i,e.x_range);this.side=y(t,n,this.side)}if(null!=l)if(6==this.side||7==this.side)m(l,r,s,e.y_range);else if(4==this.side){const t=g(l.start,r,s,e.y_range);this.side=f(t,l,this.side)}else if(5==this.side){const t=g(l.end,r,s,e.y_range);this.side=y(t,l,this.side)}this.last_dx=t.deltaX,this.last_dy=t.deltaY}_pan_end(t){this.side=0}}i.RangeToolView=v,v.__name__=\"RangeToolView\";const p=()=>new l.BoxAnnotation({level:\"overlay\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:.5,line_dash:[2,2]});class x extends o.GestureTool{constructor(t){super(t),this.tool_name=\"Range Tool\",this.icon=_.tool_icon_range,this.event_type=\"pan\",this.default_order=1}static init_RangeTool(){this.prototype.default_view=v,this.define((({Boolean:t,Ref:e,Nullable:i})=>({x_range:[i(e(a.Range1d)),null],x_interaction:[t,!0],y_range:[i(e(a.Range1d)),null],y_interaction:[t,!0],overlay:[e(l.BoxAnnotation),p]})))}initialize(){super.initialize(),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null}update_overlay_from_ranges(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,r.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}i.RangeTool=x,x.__name__=\"RangeTool\",x.init_RangeTool()},\n function _(e,t,s,o,i){o();const l=e(378),a=e(20),n=e(242);class c extends l.SelectToolView{_tap(e){\"tap\"==this.model.gesture&&this._handle_tap(e)}_doubletap(e){\"doubletap\"==this.model.gesture&&this._handle_tap(e)}_handle_tap(e){const{sx:t,sy:s}=e,o={type:\"point\",sx:t,sy:s};this._select(o,!0,this._select_mode(e))}_select(e,t,s){const{callback:o}=this.model;if(\"select\"==this.model.behavior){const i=this._computed_renderers_by_data_source();for(const[,l]of i){const i=l[0].get_selection_manager(),a=l.map((e=>this.plot_view.renderer_view(e))).filter((e=>null!=e));if(i.select(a,e,t,s)&&null!=o){const t=a[0].coordinates.x_scale.invert(e.sx),s=a[0].coordinates.y_scale.invert(e.sy),l={geometries:Object.assign(Object.assign({},e),{x:t,y:s}),source:i.source};o.execute(this.model,l)}}this._emit_selection_event(e),this.plot_view.state.push(\"tap\",{selection:this.plot_view.get_selection()})}else for(const t of this.computed_renderers){const s=this.plot_view.renderer_view(t);if(null==s)continue;const i=t.get_selection_manager();if(i.inspect(s,e)&&null!=o){const t=s.coordinates.x_scale.invert(e.sx),l=s.coordinates.y_scale.invert(e.sy),a={geometries:Object.assign(Object.assign({},e),{x:t,y:l}),source:i.source};o.execute(this.model,a)}}}}s.TapToolView=c,c.__name__=\"TapToolView\";class _ extends l.SelectTool{constructor(e){super(e),this.tool_name=\"Tap\",this.icon=n.tool_icon_tap_select,this.event_type=\"tap\",this.default_order=10}static init_TapTool(){this.prototype.default_view=c,this.define((({Any:e,Enum:t,Nullable:s})=>({behavior:[a.TapBehavior,\"select\"],gesture:[t(\"tap\",\"doubletap\"),\"tap\"],callback:[s(e)]}))),this.register_alias(\"click\",(()=>new _({behavior:\"inspect\"}))),this.register_alias(\"tap\",(()=>new _)),this.register_alias(\"doubletap\",(()=>new _({gesture:\"doubletap\"})))}}s.TapTool=_,_.__name__=\"TapTool\",_.init_TapTool()},\n function _(e,t,s,i,n){i();const o=e(237),a=e(20),l=e(242),_=e(384);class h extends o.GestureToolView{_scroll(e){let t=this.model.speed*e.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(e){var t;const{frame:s}=this.plot_view,i=s.bbox.h_range,n=s.bbox.v_range,[o,a]=[i.start,i.end],[l,h]=[n.start,n.end];let r,d,c,p;switch(this.model.dimension){case\"height\":{const t=Math.abs(h-l);r=o,d=a,c=l-t*e,p=h-t*e;break}case\"width\":{const t=Math.abs(a-o);r=o-t*e,d=a-t*e,c=l,p=h;break}}const{x_scales:m,y_scales:u}=s,w={xrs:_.update_ranges(m,r,d),yrs:_.update_ranges(u,c,p),factor:e};this.plot_view.state.push(\"wheel_pan\",{range:w}),this.plot_view.update_range(w,{scrolling:!0}),null===(t=this.model.document)||void 0===t||t.interactive_start(this.plot_model)}}s.WheelPanToolView=h,h.__name__=\"WheelPanToolView\";class r extends o.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Pan\",this.icon=l.tool_icon_wheel_pan,this.event_type=\"scroll\",this.default_order=12}static init_WheelPanTool(){this.prototype.default_view=h,this.define((()=>({dimension:[a.Dimension,\"width\"]}))),this.internal((({Number:e})=>({speed:[e,.001]}))),this.register_alias(\"xwheel_pan\",(()=>new r({dimension:\"width\"}))),this.register_alias(\"ywheel_pan\",(()=>new r({dimension:\"height\"})))}get tooltip(){return this._get_dim_tooltip(this.dimension)}}s.WheelPanTool=r,r.__name__=\"WheelPanTool\",r.init_WheelPanTool()},\n function _(e,o,t,s,i){s();const l=e(237),n=e(368),h=e(20),_=e(27),a=e(242);class m extends l.GestureToolView{_pinch(e){const{sx:o,sy:t,scale:s,ctrlKey:i,shiftKey:l}=e;let n;n=s>=1?20*(s-1):-20/s,this._scroll({type:\"wheel\",sx:o,sy:t,delta:n,ctrlKey:i,shiftKey:l})}_scroll(e){var o;const{frame:t}=this.plot_view,s=t.bbox.h_range,i=t.bbox.v_range,{sx:l,sy:h}=e,_=this.model.dimensions,a=(\"width\"==_||\"both\"==_)&&s.start({dimensions:[h.Dimensions,\"both\"],maintain_focus:[e,!0],zoom_on_axis:[e,!0],speed:[o,1/600]}))),this.register_alias(\"wheel_zoom\",(()=>new r({dimensions:\"both\"}))),this.register_alias(\"xwheel_zoom\",(()=>new r({dimensions:\"width\"}))),this.register_alias(\"ywheel_zoom\",(()=>new r({dimensions:\"height\"})))}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}t.WheelZoomTool=r,r.__name__=\"WheelZoomTool\",r.init_WheelZoomTool()},\n function _(i,s,t,o,e){o();const n=i(247),l=i(233),h=i(20),a=i(13),r=i(242);class _ extends n.InspectToolView{_move(i){if(!this.model.active)return;const{sx:s,sy:t}=i;this.plot_view.frame.bbox.contains(s,t)?this._update_spans(s,t):this._update_spans(null,null)}_move_exit(i){this._update_spans(null,null)}_update_spans(i,s){const t=this.model.dimensions;\"width\"!=t&&\"both\"!=t||(this.model.spans.width.location=s),\"height\"!=t&&\"both\"!=t||(this.model.spans.height.location=i)}}t.CrosshairToolView=_,_.__name__=\"CrosshairToolView\";class c extends n.InspectTool{constructor(i){super(i),this.tool_name=\"Crosshair\",this.icon=r.tool_icon_crosshair}static init_CrosshairTool(){function i(i,s){return new l.Span({for_hover:!0,dimension:s,location_units:\"screen\",level:\"overlay\",line_color:i.line_color,line_width:i.line_width,line_alpha:i.line_alpha})}this.prototype.default_view=_,this.define((({Alpha:i,Number:s,Color:t})=>({dimensions:[h.Dimensions,\"both\"],line_color:[t,\"black\"],line_width:[s,1],line_alpha:[i,1]}))),this.internal((({Struct:s,Ref:t})=>({spans:[s({width:t(l.Span),height:t(l.Span)}),s=>({width:i(s,\"width\"),height:i(s,\"height\")})]}))),this.register_alias(\"crosshair\",(()=>new c))}get tooltip(){return this._get_dim_tooltip(this.dimensions)}get synthetic_renderers(){return a.values(this.spans)}}t.CrosshairTool=c,c.__name__=\"CrosshairTool\",c.init_CrosshairTool()},\n function _(t,e,s,o,r){o();const n=t(53),i=t(13),a=t(34);class u extends n.Model{constructor(t){super(t)}static init_CustomJSHover(){this.define((({Unknown:t,String:e,Dict:s})=>({args:[s(t),{}],code:[e,\"\"]})))}get values(){return i.values(this.args)}_make_code(t,e,s,o){return new Function(...i.keys(this.args),t,e,s,a.use_strict(o))}format(t,e,s){return this._make_code(\"value\",\"format\",\"special_vars\",this.code)(...this.values,t,e,s)}}s.CustomJSHover=u,u.__name__=\"CustomJSHover\",u.init_CustomJSHover()},\n function _(e,t,n,s,o){s();const i=e(1),r=e(247),l=e(390),a=e(254),c=e(61),_=e(123),d=e(62),p=e(63),h=e(127),u=i.__importStar(e(107)),m=e(182),y=e(43),f=e(22),x=e(13),v=e(245),w=e(8),g=e(122),b=e(20),k=e(242),C=e(15),S=e(161),T=i.__importStar(e(255));function $(e,t,n,s,o,i){const r={x:o[e],y:i[e]},l={x:o[e+1],y:i[e+1]};let a,c;if(\"span\"==t.type)\"h\"==t.direction?(a=Math.abs(r.x-n),c=Math.abs(l.x-n)):(a=Math.abs(r.y-s),c=Math.abs(l.y-s));else{const e={x:n,y:s};a=u.dist_2_pts(r,e),c=u.dist_2_pts(l,e)}return adelete this._template_el)),this.on_change([e,t,n],(async()=>await this._update_ttmodels()))}async _update_ttmodels(){const{_ttmodels:e,computed_renderers:t}=this;e.clear();const{tooltips:n}=this.model;if(null!=n)for(const t of this.computed_renderers){const s=new a.Tooltip({custom:w.isString(n)||w.isFunction(n),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t instanceof c.GlyphRenderer?e.set(t,s):t instanceof _.GraphRenderer&&(e.set(t.node_renderer,s),e.set(t.edge_renderer,s))}const s=await g.build_views(this._ttviews,[...e.values()],{parent:this.plot_view});for(const e of s)e.render();const o=[...function*(){for(const e of t)e instanceof c.GlyphRenderer?yield e:e instanceof _.GraphRenderer&&(yield e.node_renderer,yield e.edge_renderer)}()],i=this._slots.get(this._update);if(null!=i){const e=new Set(o.map((e=>e.data_source)));C.Signal.disconnect_receiver(this,i,e)}for(const e of o)this.connect(e.data_source.inspect,this._update)}get computed_renderers(){const{renderers:e,names:t}=this.model,n=this.plot_model.data_renderers;return S.compute_renderers(e,n,t)}get ttmodels(){return this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,e]of this.ttmodels)e.clear()}_move(e){if(!this.model.active)return;const{sx:t,sy:n}=e;this.plot_view.frame.bbox.contains(t,n)?this._inspect(t,n):this._clear()}_move_exit(){this._clear()}_inspect(e,t){let n;if(\"mouse\"==this.model.mode)n={type:\"point\",sx:e,sy:t};else{n={type:\"span\",direction:\"vline\"==this.model.mode?\"h\":\"v\",sx:e,sy:t}}for(const e of this.computed_renderers){const t=e.get_selection_manager(),s=this.plot_view.renderer_view(e);null!=s&&t.inspect(s,n)}this._emit_callback(n)}_update([e,{geometry:t}]){var n,s;if(!this.model.active)return;if(\"point\"!=t.type&&\"span\"!=t.type)return;if(!(e instanceof c.GlyphRenderer))return;if(\"ignore\"==this.model.muted_policy&&e.muted)return;const o=this.ttmodels.get(e);if(null==o)return;const i=e.get_selection_manager();let r=i.inspectors.get(e);if(r=e.view.convert_selection_to_subset(r),r.is_empty())return void o.clear();const l=i.source,a=this.plot_view.renderer_view(e);if(null==a)return;const{sx:_,sy:d}=t,u=a.coordinates.x_scale,m=a.coordinates.y_scale,f=u.invert(_),v=m.invert(d),{glyph:w}=a,g=[];if(w instanceof p.LineView)for(const n of r.line_indices){let s,o,i=w._x[n+1],a=w._y[n+1],c=n;switch(this.model.line_policy){case\"interp\":[i,a]=w.get_interpolation_hit(n,t),s=u.compute(i),o=m.compute(a);break;case\"prev\":[[s,o],c]=R(w.sx,w.sy,n);break;case\"next\":[[s,o],c]=R(w.sx,w.sy,n+1);break;case\"nearest\":[[s,o],c]=$(n,t,_,d,w.sx,w.sy),i=w._x[c],a=w._y[c];break;default:[s,o]=[_,d]}const p={index:c,x:f,y:v,sx:_,sy:d,data_x:i,data_y:a,rx:s,ry:o,indices:r.line_indices,name:e.name};g.push([s,o,this._render_tooltips(l,c,p)])}for(const t of r.image_indices){const n={index:t.index,x:f,y:v,sx:_,sy:d,name:e.name},s=this._render_tooltips(l,t,n);g.push([_,d,s])}for(const o of r.indices)if(w instanceof h.MultiLineView&&!x.isEmpty(r.multiline_indices))for(const n of r.multiline_indices[o.toString()]){let s,i,a,p=w._xs.get(o)[n],h=w._ys.get(o)[n],y=n;switch(this.model.line_policy){case\"interp\":[p,h]=w.get_interpolation_hit(o,n,t),s=u.compute(p),i=m.compute(h);break;case\"prev\":[[s,i],y]=R(w.sxs.get(o),w.sys.get(o),n);break;case\"next\":[[s,i],y]=R(w.sxs.get(o),w.sys.get(o),n+1);break;case\"nearest\":[[s,i],y]=$(n,t,_,d,w.sxs.get(o),w.sys.get(o)),p=w._xs.get(o)[y],h=w._ys.get(o)[y];break;default:throw new Error(\"shouldn't have happened\")}a=e instanceof c.GlyphRenderer?e.view.convert_indices_from_subset([o])[0]:o;const x={index:a,x:f,y:v,sx:_,sy:d,data_x:p,data_y:h,segment_index:y,indices:r.multiline_indices,name:e.name};g.push([s,i,this._render_tooltips(l,a,x)])}else{const t=null===(n=w._x)||void 0===n?void 0:n[o],i=null===(s=w._y)||void 0===s?void 0:s[o];let a,p,h;if(\"snap_to_data\"==this.model.point_policy){let e=w.get_anchor_point(this.model.anchor,o,[_,d]);if(null==e&&(e=w.get_anchor_point(\"center\",o,[_,d]),null==e))continue;a=e.x,p=e.y}else[a,p]=[_,d];h=e instanceof c.GlyphRenderer?e.view.convert_indices_from_subset([o])[0]:o;const u={index:h,x:f,y:v,sx:_,sy:d,data_x:t,data_y:i,indices:r.indices,name:e.name};g.push([a,p,this._render_tooltips(l,h,u)])}if(0==g.length)o.clear();else{const{content:e}=o;y.empty(o.content);for(const[,,t]of g)null!=t&&e.appendChild(t);const[t,n]=g[g.length-1];o.setv({position:[t,n]},{check_eq:!1})}}_emit_callback(e){const{callback:t}=this.model;if(null!=t)for(const n of this.computed_renderers){if(!(n instanceof c.GlyphRenderer))continue;const s=this.plot_view.renderer_view(n);if(null==s)continue;const{x_scale:o,y_scale:i}=s.coordinates,r=o.invert(e.sx),l=i.invert(e.sy),a=n.data_source.inspected;t.execute(this.model,{geometry:Object.assign({x:r,y:l},e),renderer:n,index:a})}}_create_template(e){const t=y.div({style:{display:\"table\",borderSpacing:\"2px\"}});for(const[n]of e){const e=y.div({style:{display:\"table-row\"}});t.appendChild(e);const s=y.div({style:{display:\"table-cell\"},class:T.tooltip_row_label},0!=n.length?`${n}: `:\"\");e.appendChild(s);const o=y.span();o.dataset.value=\"\";const i=y.span({class:T.tooltip_color_block},\" \");i.dataset.swatch=\"\",y.undisplay(i);const r=y.div({style:{display:\"table-cell\"},class:T.tooltip_row_value},o,i);e.appendChild(r)}return t}_render_template(e,t,n,s,o){const i=e.cloneNode(!0),r=i.querySelectorAll(\"[data-value]\"),l=i.querySelectorAll(\"[data-swatch]\"),a=/\\$color(\\[.*\\])?:(\\w*)/,c=/\\$swatch:(\\w*)/;for(const[[,e],i]of v.enumerate(t)){const t=e.match(c),_=e.match(a);if(null!=t||null!=_){if(null!=t){const[,e]=t,o=n.get_column(e);if(null==o)r[i].textContent=`${e} unknown`;else{const e=w.isNumber(s)?o[s]:null;null!=e&&(l[i].style.backgroundColor=f.color2css(e),y.display(l[i]))}}if(null!=_){const[,e=\"\",t]=_,o=n.get_column(t);if(null==o){r[i].textContent=`${t} unknown`;continue}const a=e.indexOf(\"hex\")>=0,c=e.indexOf(\"swatch\")>=0,d=w.isNumber(s)?o[s]:null;if(null==d){r[i].textContent=\"(null)\";continue}r[i].textContent=a?f.color2hex(d):f.color2css(d),c&&(l[i].style.backgroundColor=f.color2css(d),y.display(l[i]))}}else{const t=m.replace_placeholders(e.replace(\"$~\",\"$data_\"),n,s,this.model.formatters,o);if(w.isString(t))r[i].textContent=t;else for(const e of t)r[i].appendChild(e)}}return i}_render_tooltips(e,t,n){var s;const{tooltips:o}=this.model;if(w.isString(o)){const s=m.replace_placeholders({html:o},e,t,this.model.formatters,n);return y.div({},s)}if(w.isFunction(o))return o(e,n);if(null!=o){const i=null!==(s=this._template_el)&&void 0!==s?s:this._template_el=this._create_template(o);return this._render_template(i,o,e,t,n)}return null}}n.HoverToolView=H,H.__name__=\"HoverToolView\";class M extends r.InspectTool{constructor(e){super(e),this.tool_name=\"Hover\",this.icon=k.tool_icon_hover}static init_HoverTool(){this.prototype.default_view=H,this.define((({Any:e,Boolean:t,String:n,Array:s,Tuple:o,Dict:i,Or:r,Ref:a,Function:c,Auto:_,Nullable:p})=>({tooltips:[p(r(n,s(o(n,n)),c())),[[\"index\",\"$index\"],[\"data (x, y)\",\"($x, $y)\"],[\"screen (x, y)\",\"($sx, $sy)\"]]],formatters:[i(r(a(l.CustomJSHover),m.FormatterType)),{}],renderers:[r(s(a(d.DataRenderer)),_),\"auto\"],names:[s(n),[]],mode:[b.HoverMode,\"mouse\"],muted_policy:[b.MutedPolicy,\"show\"],point_policy:[b.PointPolicy,\"snap_to_data\"],line_policy:[b.LinePolicy,\"nearest\"],show_arrow:[t,!0],anchor:[b.Anchor,\"center\"],attachment:[b.TooltipAttachment,\"horizontal\"],callback:[p(e)]}))),this.register_alias(\"hover\",(()=>new M))}}n.HoverTool=M,M.__name__=\"HoverTool\",M.init_HoverTool()},\n function _(t,o,e,n,i){n();const s=t(15),l=t(53),c=t(238),r=t(247),a=t(245);class u extends l.Model{constructor(t){super(t)}static init_ToolProxy(){this.define((({Boolean:t,Array:o,Ref:e})=>({tools:[o(e(c.ButtonTool)),[]],active:[t,!1],disabled:[t,!1]})))}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const t=this.tools[0];return t instanceof r.InspectTool&&t.toggleable}initialize(){super.initialize(),this.do=new s.Signal0(this,\"do\")}connect_signals(){super.connect_signals(),this.connect(this.do,(()=>this.doit())),this.connect(this.properties.active.change,(()=>this.set_active()));for(const t of this.tools)this.connect(t.properties.active.change,(()=>{this.active=t.active}))}doit(){for(const t of this.tools)t.do.emit()}set_active(){for(const t of this.tools)t.active=this.active}get menu(){const{menu:t}=this.tools[0];if(null==t)return null;const o=[];for(const[e,n]of a.enumerate(t))if(null==e)o.push(null);else{const t=()=>{var t,o;for(const e of this.tools)null===(o=null===(t=e.menu)||void 0===t?void 0:t[n])||void 0===o||o.handler()};o.push(Object.assign(Object.assign({},e),{handler:t}))}return o}}e.ToolProxy=u,u.__name__=\"ToolProxy\",u.init_ToolProxy()},\n function _(o,t,s,i,e){i();const n=o(20),r=o(9),l=o(13),c=o(248),h=o(235),a=o(392),_=o(319),p=o(221);class f extends c.ToolbarBase{constructor(o){super(o)}static init_ProxyToolbar(){this.define((({Array:o,Ref:t})=>({toolbars:[o(t(h.Toolbar)),[]]})))}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const o={},t={},s={},i=[],e=[];for(const o of this.help)r.includes(e,o.redirect)||(i.push(o),e.push(o.redirect));this._proxied_tools.push(...i),this.help=i;for(const[o,t]of l.entries(this.gestures)){o in s||(s[o]={});for(const i of t.tools)i.type in s[o]||(s[o][i.type]=[]),s[o][i.type].push(i)}for(const t of this.inspectors)t.type in o||(o[t.type]=[]),o[t.type].push(t);for(const o of this.actions)o.type in t||(t[o.type]=[]),t[o.type].push(o);const n=(o,t=!1)=>{const s=new a.ToolProxy({tools:o,active:t});return this._proxied_tools.push(s),s};for(const o of l.keys(s)){const t=this.gestures[o];t.tools=[];for(const i of l.keys(s[o])){const e=s[o][i];if(e.length>0)if(\"multi\"==o)for(const o of e){const s=n([o]);t.tools.push(s),this.connect(s.properties.active.change,(()=>this._active_change(s)))}else{const o=n(e);t.tools.push(o),this.connect(o.properties.active.change,(()=>this._active_change(o)))}}}this.actions=[];for(const[o,s]of l.entries(t))if(\"CustomAction\"==o)for(const o of s)this.actions.push(n([o]));else s.length>0&&this.actions.push(n(s));this.inspectors=[];for(const t of l.values(o))t.length>0&&this.inspectors.push(n(t,!0));for(const[o,t]of l.entries(this.gestures))0!=t.tools.length&&(t.tools=r.sort_by(t.tools,(o=>o.default_order)),\"pinch\"!=o&&\"scroll\"!=o&&\"multi\"!=o&&(t.tools[0].active=!0))}}s.ProxyToolbar=f,f.__name__=\"ProxyToolbar\",f.init_ProxyToolbar();class u extends _.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new p.ContentBox(this.child_views[0].el);const{toolbar:o}=this.model;o.horizontal?this.layout.set_sizing({width_policy:\"fit\",min_width:100,height_policy:\"fixed\"}):this.layout.set_sizing({width_policy:\"fixed\",height_policy:\"fit\",min_height:100})}}s.ToolbarBoxView=u,u.__name__=\"ToolbarBoxView\";class y extends _.LayoutDOM{constructor(o){super(o)}static init_ToolbarBox(){this.prototype.default_view=u,this.define((({Ref:o})=>({toolbar:[o(c.ToolbarBase)],toolbar_location:[n.Location,\"right\"]})))}}s.ToolbarBox=y,y.__name__=\"ToolbarBox\",y.init_ToolbarBox()},\n function _(e,n,r,t,o){t();const s=e(1),u=e(53),c=s.__importStar(e(21)),a=e(8),l=e(13);r.resolve_defs=function(e,n){var r,t,o,s;function i(e){return null!=e.module?`${e.module}.${e.name}`:e.name}function f(e){if(a.isString(e))switch(e){case\"Any\":return c.Any;case\"Unknown\":return c.Unknown;case\"Boolean\":return c.Boolean;case\"Number\":return c.Number;case\"Int\":return c.Int;case\"String\":return c.String;case\"Null\":return c.Null}else switch(e[0]){case\"Nullable\":{const[,n]=e;return c.Nullable(f(n))}case\"Or\":{const[,...n]=e;return c.Or(...n.map(f))}case\"Tuple\":{const[,n,...r]=e;return c.Tuple(f(n),...r.map(f))}case\"Array\":{const[,n]=e;return c.Array(f(n))}case\"Struct\":{const[,...n]=e,r=n.map((([e,n])=>[e,f(n)]));return c.Struct(l.to_object(r))}case\"Dict\":{const[,n]=e;return c.Dict(f(n))}case\"Map\":{const[,n,r]=e;return c.Map(f(n),f(r))}case\"Enum\":{const[,...n]=e;return c.Enum(...n)}case\"Ref\":{const[,r]=e,t=n.get(i(r));if(null!=t)return c.Ref(t);throw new Error(`${i(r)} wasn't defined before referencing it`)}case\"AnyRef\":return c.AnyRef()}}for(const c of e){const e=(()=>{if(null==c.extends)return u.Model;{const e=n.get(i(c.extends));if(null!=e)return e;throw new Error(`base model ${i(c.extends)} of ${i(c)} is not defined`)}})(),a=((s=class extends e{}).__name__=c.name,s.__module__=c.module,s);for(const e of null!==(r=c.properties)&&void 0!==r?r:[]){const n=f(null!==(t=e.kind)&&void 0!==t?t:\"Unknown\");a.define({[e.name]:[n,e.default]})}for(const e of null!==(o=c.overrides)&&void 0!==o?o:[])a.override({[e.name]:e.default});n.register(a)}}},\n function _(n,e,t,o,i){o();const d=n(5),c=n(240),s=n(122),a=n(43),l=n(396);t.index={},t.add_document_standalone=async function(n,e,o=[],i=!1){const u=new Map;async function f(i){let d;const f=n.roots().indexOf(i),r=o[f];null!=r?d=r:e.classList.contains(l.BOKEH_ROOT)?d=e:(d=a.div({class:l.BOKEH_ROOT}),e.appendChild(d));const w=await s.build_view(i,{parent:null});return w instanceof c.DOMView&&w.renderTo(d),u.set(i,w),t.index[i.id]=w,w}for(const e of n.roots())await f(e);return i&&(window.document.title=n.title()),n.on_change((n=>{n instanceof d.RootAddedEvent?f(n.model):n instanceof d.RootRemovedEvent?function(n){const e=u.get(n);null!=e&&(e.remove(),u.delete(n),delete t.index[n.id])}(n.model):i&&n instanceof d.TitleChangedEvent&&(window.document.title=n.title)})),[...u.values()]}},\n function _(o,e,n,t,r){t();const l=o(43),d=o(44);function u(o){let e=document.getElementById(o);if(null==e)throw new Error(`Error rendering Bokeh model: could not find #${o} HTML tag`);if(!document.body.contains(e))throw new Error(`Error rendering Bokeh model: element #${o} must be under `);if(\"SCRIPT\"==e.tagName){const o=l.div({class:n.BOKEH_ROOT});l.replaceWith(e,o),e=o}return e}n.BOKEH_ROOT=d.root,n._resolve_element=function(o){const{elementid:e}=o;return null!=e?u(e):document.body},n._resolve_root_elements=function(o){const e=[];if(null!=o.root_ids&&null!=o.roots)for(const n of o.root_ids)e.push(u(o.roots[n]));return e}},\n function _(n,o,t,s,e){s();const c=n(398),r=n(19),a=n(395);t._get_ws_url=function(n,o){let t,s=\"ws:\";return\"https:\"==window.location.protocol&&(s=\"wss:\"),null!=o?(t=document.createElement(\"a\"),t.href=o):t=window.location,null!=n?\"/\"==n&&(n=\"\"):n=t.pathname.replace(/\\/+$/,\"\"),s+\"//\"+t.host+n+\"/ws\"};const i={};t.add_document_from_session=async function(n,o,t,s=[],e=!1){const l=window.location.search.substr(1);let d;try{d=await function(n,o,t){const s=c.parse_token(o).session_id;n in i||(i[n]={});const e=i[n];return s in e||(e[s]=c.pull_session(n,o,t)),e[s]}(n,o,l)}catch(n){const t=c.parse_token(o).session_id;throw r.logger.error(`Failed to load Bokeh session ${t}: ${n}`),n}return a.add_document_standalone(d.document,t,s,e)}},\n function _(e,s,n,t,o){t();const r=e(19),i=e(5),c=e(399),l=e(400),_=e(401);n.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",n.DEFAULT_TOKEN=\"eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ\";let h=0;function a(e){let s=e.split(\".\")[0];const n=s.length%4;return 0!=n&&(s+=\"=\".repeat(4-n)),JSON.parse(atob(s.replace(/_/g,\"/\").replace(/-/g,\"+\")))}n.parse_token=a;class d{constructor(e=n.DEFAULT_SERVER_WEBSOCKET_URL,s=n.DEFAULT_TOKEN,t=null){this.url=e,this.token=s,this.args_string=t,this._number=h++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new l.Receiver,this.id=a(s).session_id.split(\".\")[0],r.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error(\"Cannot connect() a closed ClientConnection\");if(null!=this.socket)throw new Error(\"Already connected\");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let e=`${this.url}`;return null!=this.args_string&&this.args_string.length>0&&(e+=`?${this.args_string}`),this.socket=new WebSocket(e,[\"bokeh\",this.token]),new Promise(((e,s)=>{this.socket.binaryType=\"arraybuffer\",this.socket.onopen=()=>this._on_open(e,s),this.socket.onmessage=e=>this._on_message(e),this.socket.onclose=e=>this._on_close(e,s),this.socket.onerror=()=>this._on_error(s)}))}catch(e){throw r.logger.error(`websocket creation failed to url: ${this.url}`),r.logger.error(` - ${e}`),e}}close(){this.closed_permanently||(r.logger.debug(`Permanently closing websocket connection ${this._number}`),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,`close method called on ClientConnection ${this._number}`),this.session._connection_closed())}_schedule_reconnect(e){setTimeout((()=>{this.closed_permanently||r.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)}),e)}send(e){if(null==this.socket)throw new Error(`not connected so cannot send ${e}`);e.send(this.socket)}async send_with_reply(e){const s=await new Promise(((s,n)=>{this._pending_replies.set(e.msgid(),{resolve:s,reject:n}),this.send(e)}));if(\"ERROR\"===s.msgtype())throw new Error(`Error reply ${s.content.text}`);return s}async _pull_doc_json(){const e=c.Message.create(\"PULL-DOC-REQ\",{}),s=await this.send_with_reply(e);if(!(\"doc\"in s.content))throw new Error(\"No 'doc' field in PULL-DOC-REPLY\");return s.content.doc}async _repull_session_doc(e,s){var n;r.logger.debug(this.session?\"Repulling session\":\"Pulling session for first time\");try{const n=await this._pull_doc_json();if(null==this.session)if(this.closed_permanently)r.logger.debug(\"Got new document after connection was already closed\"),s(new Error(\"The connection has been closed\"));else{const s=i.Document.from_json(n),t=i.Document._compute_patch_since_json(n,s);if(t.events.length>0){r.logger.debug(`Sending ${t.events.length} changes from model construction back to server`);const e=c.Message.create(\"PATCH-DOC\",{},t);this.send(e)}this.session=new _.ClientSession(this,s,this.id);for(const e of this._pending_messages)this.session.handle(e);this._pending_messages=[],r.logger.debug(\"Created a new session from new pulled doc\"),e(this.session)}else this.session.document.replace_with_json(n),r.logger.debug(\"Updated existing session with new pulled doc\")}catch(e){null===(n=console.trace)||void 0===n||n.call(console,e),r.logger.error(`Failed to repull session ${e}`),s(e instanceof Error?e:`${e}`)}}_on_open(e,s){r.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=n=>{this._awaiting_ack_handler(n,e,s)}}_on_message(e){null==this._current_handler&&r.logger.error(\"Got a message with no current handler set\");try{this._receiver.consume(e.data)}catch(e){this._close_bad_protocol(`${e}`)}const s=this._receiver.message;if(null!=s){const e=s.problem();null!=e&&this._close_bad_protocol(e),this._current_handler(s)}}_on_close(e,s){r.logger.info(`Lost websocket ${this._number} connection, ${e.code} (${e.reason})`),this.socket=null,this._pending_replies.forEach((e=>e.reject(\"Disconnected\"))),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${e.code} (${e.reason})`))}_on_error(e){r.logger.debug(`Websocket error on socket ${this._number}`);const s=\"Could not open websocket\";r.logger.error(`Failed to connect to Bokeh server: ${s}`),e(new Error(s))}_close_bad_protocol(e){r.logger.error(`Closing connection: ${e}`),null!=this.socket&&this.socket.close(1002,e)}_awaiting_ack_handler(e,s,n){\"ACK\"===e.msgtype()?(this._current_handler=e=>this._steady_state_handler(e),this._repull_session_doc(s,n)):this._close_bad_protocol(\"First message was not an ACK\")}_steady_state_handler(e){const s=e.reqid(),n=this._pending_replies.get(s);n?(this._pending_replies.delete(s),n.resolve(e)):this.session?this.session.handle(e):\"PATCH-DOC\"!=e.msgtype()&&this._pending_messages.push(e)}}n.ClientConnection=d,d.__name__=\"ClientConnection\",n.pull_session=function(e,s,n){return new d(e,s,n).connect()}},\n function _(e,s,t,r,n){r();const i=e(34);class a{constructor(e,s,t){this.header=e,this.metadata=s,this.content=t,this.buffers=new Map}static assemble(e,s,t){const r=JSON.parse(e),n=JSON.parse(s),i=JSON.parse(t);return new a(r,n,i)}assemble_buffer(e,s){const t=null!=this.header.num_buffers?this.header.num_buffers:0;if(t<=this.buffers.size)throw new Error(`too many buffers received, expecting ${t}`);const{id:r}=JSON.parse(e);this.buffers.set(r,s)}static create(e,s,t={}){const r=a.create_header(e);return new a(r,s,t)}static create_header(e){return{msgid:i.uniqueId(),msgtype:e}}complete(){return null!=this.header&&null!=this.metadata&&null!=this.content&&(null==this.header.num_buffers||this.buffers.size==this.header.num_buffers)}send(e){if((null!=this.header.num_buffers?this.header.num_buffers:0)>0)throw new Error(\"BokehJS only supports receiving buffers, not sending\");const s=JSON.stringify(this.header),t=JSON.stringify(this.metadata),r=JSON.stringify(this.content);e.send(s),e.send(t),e.send(r)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return\"msgid\"in this.header?\"msgtype\"in this.header?null:\"No msgtype in header\":\"No msgid in header\"}}t.Message=a,a.__name__=\"Message\"},\n function _(e,t,s,_,r){_();const i=e(399),h=e(8);class a{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(e){this._current_consumer(e)}_HEADER(e){this._assume_text(e),this.message=null,this._partial=null,this._fragments=[e],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(e){this._assume_text(e),this._fragments.push(e),this._current_consumer=this._CONTENT}_CONTENT(e){this._assume_text(e),this._fragments.push(e);const[t,s,_]=this._fragments.slice(0,3);this._partial=i.Message.assemble(t,s,_),this._check_complete()}_BUFFER_HEADER(e){this._assume_text(e),this._buf_header=e,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(e){this._assume_binary(e),this._partial.assemble_buffer(this._buf_header,e),this._check_complete()}_assume_text(e){if(!h.isString(e))throw new Error(\"Expected text fragment but received binary fragment\")}_assume_binary(e){if(!(e instanceof ArrayBuffer))throw new Error(\"Expected binary fragment but received text fragment\")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}s.Receiver=a,a.__name__=\"Receiver\"},\n function _(e,t,n,s,o){s();const c=e(5),i=e(399),_=e(19);class r{constructor(e,t,n){this._connection=e,this.document=t,this.id=n,this._document_listener=e=>{this._document_changed(e)},this.document.on_change(this._document_listener,!0)}handle(e){const t=e.msgtype();\"PATCH-DOC\"===t?this._handle_patch(e):\"OK\"===t?this._handle_ok(e):\"ERROR\"===t?this._handle_error(e):_.logger.debug(`Doing nothing with message ${e.msgtype()}`)}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const e=i.Message.create(\"SERVER-INFO-REQ\",{});return(await this._connection.send_with_reply(e)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(e){if(e.setter_id===this.id)return;const t=e instanceof c.DocumentEventBatch?e.events:[e],n=this.document.create_json_patch(t),s=i.Message.create(\"PATCH-DOC\",{},n);this._connection.send(s)}_handle_patch(e){this.document.apply_json_patch(e.content,e.buffers,this.id)}_handle_ok(e){_.logger.trace(`Unhandled OK reply to ${e.reqid()}`)}_handle_error(e){_.logger.error(`Unhandled ERROR reply to ${e.reqid()}: ${e.content.text}`)}}n.ClientSession=r,r.__name__=\"ClientSession\"},\n function _(e,o,t,n,r){n();const s=e(1),l=e(5),i=e(400),a=e(19),c=e(43),g=e(13),f=e(395),u=e(396),m=s.__importDefault(e(44)),p=s.__importDefault(e(253)),d=s.__importDefault(e(403));function _(e,o){o.buffers.length>0?e.consume(o.buffers[0].buffer):e.consume(o.content.data);const t=e.message;null!=t&&this.apply_json_patch(t.content,t.buffers)}function b(e,o){if(\"undefined\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){a.logger.info(`Registering Jupyter comms for target ${e}`);const t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(e,(t=>{a.logger.info(`Registering Jupyter comms for target ${e}`);const n=new i.Receiver;t.on_msg(_.bind(o,n))}))}catch(e){a.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(o.roots()[0].id in t.kernels){a.logger.info(`Registering JupyterLab comms for target ${e}`);const n=t.kernels[o.roots()[0].id];try{n.registerCommTarget(e,(t=>{a.logger.info(`Registering JupyterLab comms for target ${e}`);const n=new i.Receiver;t.onMsg=_.bind(o,n)}))}catch(e){a.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(\"undefined\"!=typeof google&&null!=google.colab.kernel){a.logger.info(`Registering Google Colab comms for target ${e}`);const t=google.colab.kernel.comms;try{t.registerTarget(e,(async t=>{var n,r,l;a.logger.info(`Registering Google Colab comms for target ${e}`);const c=new i.Receiver;try{for(var g,f=s.__asyncValues(t.messages);!(g=await f.next()).done;){const e=g.value,t={data:e.data},n=[];for(const o of null!==(l=e.buffers)&&void 0!==l?l:[])n.push(new DataView(o));const r={content:t,buffers:n};_.bind(o)(c,r)}}catch(e){n={error:e}}finally{try{g&&!g.done&&(r=f.return)&&await r.call(f)}finally{if(n)throw n.error}}}))}catch(e){a.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else console.warn(\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.\")}c.stylesheet.append(m.default),c.stylesheet.append(p.default),c.stylesheet.append(d.default),t.kernels={},t.embed_items_notebook=function(e,o){if(1!=g.size(e))throw new Error(\"embed_items_notebook expects exactly one document in docs_json\");const t=l.Document.from_json(g.values(e)[0]);for(const e of o){null!=e.notebook_comms_target&&b(e.notebook_comms_target,t);const o=u._resolve_element(e),n=u._resolve_root_elements(e);f.add_document_standalone(t,o,n)}}},\n function _(t,o,r,e,d){e(),r.root=\"bk-root\",r.tooltip=\"bk-tooltip\",r.default=\".rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:none;padding:1px;}\"},\n function _(t,_,o,r,n){r();const a=t(1);a.__exportStar(t(399),o),a.__exportStar(t(400),o)},\n function _(e,t,n,s,o){function l(){const e=document.getElementsByTagName(\"body\")[0],t=document.getElementsByClassName(\"bokeh-test-div\");1==t.length&&(e.removeChild(t[0]),delete t[0]);const n=document.createElement(\"div\");n.classList.add(\"bokeh-test-div\"),n.style.display=\"none\",e.insertBefore(n,e.firstChild)}s(),n.results={},n.init=function(){l()},n.record0=function(e,t){n.results[e]=t},n.record=function(e,t){n.results[e]=t,l()},n.count=function(e){null==n.results[e]&&(n.results[e]=0),n.results[e]+=1,l()}},\n function _(e,t,o,n,l){n(),o.safely=function(e,t=!1){try{return e()}catch(e){if(function(e){const t=document.createElement(\"div\");t.style.backgroundColor=\"#f2dede\",t.style.border=\"1px solid #a94442\",t.style.borderRadius=\"4px\",t.style.display=\"inline-block\",t.style.fontFamily=\"sans-serif\",t.style.marginTop=\"5px\",t.style.minWidth=\"200px\",t.style.padding=\"5px 5px 5px 10px\",t.classList.add(\"bokeh-error-box-into-flames\");const o=document.createElement(\"span\");o.style.backgroundColor=\"#a94442\",o.style.borderRadius=\"0px 4px 0px 0px\",o.style.color=\"white\",o.style.cursor=\"pointer\",o.style.cssFloat=\"right\",o.style.fontSize=\"0.8em\",o.style.margin=\"-6px -6px 0px 0px\",o.style.padding=\"2px 5px 4px 5px\",o.title=\"close\",o.setAttribute(\"aria-label\",\"close\"),o.appendChild(document.createTextNode(\"x\")),o.addEventListener(\"click\",(()=>s.removeChild(t)));const n=document.createElement(\"h3\");n.style.color=\"#a94442\",n.style.margin=\"8px 0px 0px 0px\",n.style.padding=\"0px\",n.appendChild(document.createTextNode(\"Bokeh Error\"));const l=document.createElement(\"pre\");l.style.whiteSpace=\"unset\",l.style.overflowX=\"auto\",l.appendChild(document.createTextNode(e)),t.appendChild(o),t.appendChild(n),t.appendChild(l);const s=document.getElementsByTagName(\"body\")[0];s.insertBefore(t,s.firstChild)}(e instanceof Error&&e.stack?e.stack:`${e}`),t)return;throw e}}},\n ], 0, {\"main\":0,\"tslib\":1,\"index\":2,\"version\":3,\"embed/index\":4,\"document/index\":5,\"document/document\":6,\"base\":7,\"core/util/types\":8,\"core/util/array\":9,\"core/util/math\":10,\"core/util/assert\":11,\"core/util/arrayable\":12,\"core/util/object\":13,\"core/has_props\":14,\"core/signaling\":15,\"core/util/defer\":16,\"core/util/refs\":17,\"core/properties\":18,\"core/logging\":19,\"core/enums\":20,\"core/kinds\":21,\"core/util/color\":22,\"core/util/svg_colors\":23,\"core/types\":24,\"core/util/bitset\":25,\"core/util/eq\":26,\"core/util/platform\":27,\"core/settings\":28,\"core/util/ndarray\":29,\"core/serializer\":30,\"core/util/serialization\":31,\"core/util/buffer\":32,\"core/uniforms\":33,\"core/util/string\":34,\"document/events\":35,\"core/util/pretty\":36,\"core/util/cloneable\":37,\"models/index\":38,\"models/annotations/index\":39,\"models/annotations/annotation\":40,\"models/renderers/renderer\":41,\"core/view\":42,\"core/dom\":43,\"styles/root.css\":44,\"core/visuals/index\":45,\"core/visuals/line\":46,\"core/visuals/visual\":47,\"core/property_mixins\":48,\"core/visuals/fill\":49,\"core/visuals/text\":50,\"core/visuals/hatch\":51,\"core/visuals/patterns\":52,\"model\":53,\"models/canvas/coordinates\":54,\"models/annotations/arrow\":55,\"models/annotations/data_annotation\":56,\"models/sources/columnar_data_source\":57,\"models/sources/data_source\":58,\"models/selections/selection\":59,\"core/selection_manager\":60,\"models/renderers/glyph_renderer\":61,\"models/renderers/data_renderer\":62,\"models/glyphs/line\":63,\"models/glyphs/xy_glyph\":64,\"core/util/projections\":65,\"models/glyphs/glyph\":98,\"core/util/bbox\":99,\"core/util/ragged_array\":100,\"core/util/spatial\":101,\"models/ranges/factor_range\":104,\"models/ranges/range\":105,\"models/glyphs/utils\":106,\"core/hittest\":107,\"models/glyphs/webgl/line\":108,\"models/glyphs/webgl/utils/index\":109,\"models/glyphs/webgl/utils/program\":110,\"models/glyphs/webgl/utils/buffer\":111,\"models/glyphs/webgl/utils/texture\":112,\"models/glyphs/webgl/base\":113,\"models/glyphs/webgl/line.vert\":114,\"models/glyphs/webgl/line.frag\":115,\"models/glyphs/patch\":116,\"models/glyphs/harea\":117,\"models/glyphs/area\":118,\"models/glyphs/varea\":119,\"models/sources/cds_view\":120,\"models/filters/filter\":121,\"core/build_views\":122,\"models/renderers/graph_renderer\":123,\"models/expressions/expression\":124,\"models/graphs/layout_provider\":125,\"models/graphs/graph_hit_test_policy\":126,\"models/glyphs/multi_line\":127,\"models/glyphs/patches\":128,\"models/selections/interaction_policy\":129,\"models/sources/column_data_source\":130,\"core/util/typed_array\":131,\"core/util/set\":132,\"models/annotations/arrow_head\":133,\"models/annotations/band\":134,\"models/annotations/upper_lower\":135,\"models/annotations/box_annotation\":136,\"models/annotations/color_bar\":137,\"models/annotations/title\":138,\"models/annotations/text_annotation\":139,\"core/layout/side_panel\":140,\"core/layout/types\":141,\"core/layout/layoutable\":142,\"core/util/text\":143,\"models/canvas/cartesian_frame\":144,\"models/scales/categorical_scale\":145,\"models/scales/scale\":146,\"models/transforms/index\":147,\"models/transforms/customjs_transform\":148,\"models/transforms/transform\":149,\"models/transforms/dodge\":150,\"models/transforms/range_transform\":151,\"models/transforms/interpolator\":152,\"models/transforms/jitter\":153,\"models/transforms/linear_interpolator\":154,\"models/transforms/step_interpolator\":155,\"models/ranges/range1d\":156,\"models/scales/log_scale\":157,\"models/scales/continuous_scale\":158,\"models/ranges/data_range1d\":159,\"models/ranges/data_range\":160,\"models/util\":161,\"models/axes/index\":162,\"models/axes/axis\":163,\"models/renderers/guide_renderer\":164,\"models/tickers/ticker\":165,\"models/formatters/tick_formatter\":166,\"core/graphics\":167,\"core/util/affine\":168,\"models/policies/labeling\":169,\"models/axes/categorical_axis\":170,\"models/tickers/categorical_ticker\":171,\"models/formatters/categorical_tick_formatter\":172,\"models/axes/continuous_axis\":173,\"models/axes/datetime_axis\":174,\"models/axes/linear_axis\":175,\"models/formatters/basic_tick_formatter\":176,\"models/tickers/basic_ticker\":177,\"models/tickers/adaptive_ticker\":178,\"models/tickers/continuous_ticker\":179,\"models/formatters/datetime_tick_formatter\":180,\"core/util/templating\":182,\"models/tickers/datetime_ticker\":185,\"models/tickers/composite_ticker\":186,\"models/tickers/days_ticker\":187,\"models/tickers/single_interval_ticker\":188,\"models/tickers/util\":189,\"models/tickers/months_ticker\":190,\"models/tickers/years_ticker\":191,\"models/axes/log_axis\":192,\"models/formatters/log_tick_formatter\":193,\"models/tickers/log_ticker\":194,\"models/axes/mercator_axis\":195,\"models/formatters/mercator_tick_formatter\":196,\"models/tickers/mercator_ticker\":197,\"models/tickers/index\":198,\"models/tickers/fixed_ticker\":199,\"models/tickers/binned_ticker\":200,\"models/mappers/scanning_color_mapper\":201,\"models/mappers/continuous_color_mapper\":202,\"models/mappers/color_mapper\":203,\"models/mappers/mapper\":204,\"models/formatters/index\":205,\"models/formatters/func_tick_formatter\":206,\"models/formatters/numeral_tick_formatter\":207,\"models/formatters/printf_tick_formatter\":208,\"models/mappers/index\":209,\"models/mappers/categorical_color_mapper\":210,\"models/mappers/categorical_mapper\":211,\"models/mappers/categorical_marker_mapper\":212,\"models/mappers/categorical_pattern_mapper\":213,\"models/mappers/linear_color_mapper\":214,\"models/mappers/log_color_mapper\":215,\"models/mappers/eqhist_color_mapper\":216,\"models/scales/index\":217,\"models/scales/linear_scale\":218,\"models/scales/linear_interpolation_scale\":219,\"models/ranges/index\":220,\"core/layout/index\":221,\"core/layout/alignments\":222,\"core/layout/grid\":223,\"core/layout/html\":224,\"core/layout/border\":225,\"models/annotations/label\":226,\"models/annotations/label_set\":227,\"models/annotations/legend\":228,\"models/annotations/legend_item\":229,\"core/vectorization\":230,\"models/annotations/poly_annotation\":231,\"models/annotations/slope\":232,\"models/annotations/span\":233,\"models/annotations/toolbar_panel\":234,\"models/tools/toolbar\":235,\"models/tools/tool\":236,\"models/tools/gestures/gesture_tool\":237,\"models/tools/button_tool\":238,\"core/dom_view\":240,\"styles/toolbar.css\":241,\"styles/icons.css\":242,\"styles/menus.css\":243,\"core/util/menus\":244,\"core/util/iterator\":245,\"models/tools/on_off_button\":246,\"models/tools/inspectors/inspect_tool\":247,\"models/tools/toolbar_base\":248,\"core/util/canvas\":249,\"core/util/svg\":250,\"models/tools/actions/action_tool\":251,\"models/tools/actions/help_tool\":252,\"styles/logo.css\":253,\"models/annotations/tooltip\":254,\"styles/tooltips.css\":255,\"models/annotations/whisker\":256,\"models/callbacks/index\":257,\"models/callbacks/customjs\":258,\"models/callbacks/callback\":259,\"models/callbacks/open_url\":260,\"models/canvas/index\":261,\"models/canvas/canvas\":262,\"core/ui_events\":263,\"core/bokeh_events\":264,\"core/util/wheel\":265,\"models/expressions/index\":266,\"models/expressions/customjs_expr\":267,\"models/expressions/stack\":268,\"models/expressions/cumsum\":269,\"models/expressions/minimum\":270,\"models/expressions/maximum\":271,\"models/filters/index\":272,\"models/filters/boolean_filter\":273,\"models/filters/customjs_filter\":274,\"models/filters/group_filter\":275,\"models/filters/index_filter\":276,\"models/glyphs/index\":277,\"models/glyphs/annular_wedge\":278,\"models/glyphs/annulus\":279,\"models/glyphs/arc\":280,\"models/glyphs/bezier\":281,\"models/glyphs/circle\":282,\"models/glyphs/webgl/markers\":283,\"models/glyphs/webgl/markers.vert\":284,\"models/glyphs/webgl/markers.frag\":285,\"models/glyphs/ellipse\":286,\"models/glyphs/ellipse_oval\":287,\"models/glyphs/center_rotatable\":288,\"models/glyphs/hbar\":289,\"models/glyphs/box\":290,\"models/glyphs/hex_tile\":291,\"models/glyphs/image\":292,\"models/glyphs/image_base\":293,\"models/glyphs/image_rgba\":294,\"models/glyphs/image_url\":295,\"core/util/image\":296,\"models/glyphs/multi_polygons\":297,\"models/glyphs/oval\":298,\"models/glyphs/quad\":299,\"models/glyphs/quadratic\":300,\"models/glyphs/ray\":301,\"models/glyphs/rect\":302,\"models/glyphs/scatter\":303,\"models/glyphs/marker\":304,\"models/glyphs/defs\":305,\"models/glyphs/segment\":306,\"models/glyphs/spline\":307,\"core/util/interpolation\":308,\"models/glyphs/step\":309,\"models/glyphs/text\":310,\"models/glyphs/vbar\":311,\"models/glyphs/wedge\":312,\"models/graphs/index\":313,\"models/graphs/static_layout_provider\":314,\"models/grids/index\":315,\"models/grids/grid\":316,\"models/layouts/index\":317,\"models/layouts/box\":318,\"models/layouts/layout_dom\":319,\"models/layouts/column\":320,\"models/layouts/grid_box\":321,\"models/layouts/html_box\":322,\"models/layouts/panel\":323,\"models/layouts/row\":324,\"models/layouts/spacer\":325,\"models/layouts/tabs\":326,\"styles/tabs.css\":327,\"styles/buttons.css\":328,\"models/layouts/widget_box\":329,\"models/plots/index\":330,\"models/plots/gmap_plot\":331,\"models/plots/plot\":332,\"models/plots/plot_canvas\":333,\"core/util/throttle\":334,\"models/plots/range_manager\":335,\"models/plots/state_manager\":336,\"models/plots/gmap_plot_canvas\":337,\"models/policies/index\":338,\"models/renderers/index\":339,\"models/selections/index\":340,\"models/sources/index\":341,\"models/sources/server_sent_data_source\":342,\"models/sources/web_data_source\":343,\"models/sources/ajax_data_source\":344,\"models/sources/geojson_data_source\":345,\"models/tiles/index\":346,\"models/tiles/bbox_tile_source\":347,\"models/tiles/mercator_tile_source\":348,\"models/tiles/tile_source\":349,\"models/tiles/tile_utils\":350,\"models/tiles/quadkey_tile_source\":351,\"models/tiles/tile_renderer\":352,\"models/tiles/wmts_tile_source\":353,\"styles/tiles.css\":354,\"models/tiles/tms_tile_source\":355,\"models/textures/index\":356,\"models/textures/canvas_texture\":357,\"models/textures/texture\":358,\"models/textures/image_url_texture\":359,\"models/tools/index\":360,\"models/tools/actions/custom_action\":361,\"models/tools/actions/redo_tool\":362,\"models/tools/actions/reset_tool\":363,\"models/tools/actions/save_tool\":364,\"models/tools/actions/undo_tool\":365,\"models/tools/actions/zoom_in_tool\":366,\"models/tools/actions/zoom_base_tool\":367,\"core/util/zoom\":368,\"models/tools/actions/zoom_out_tool\":369,\"models/tools/edit/edit_tool\":370,\"models/tools/edit/box_edit_tool\":371,\"models/tools/edit/freehand_draw_tool\":372,\"models/tools/edit/point_draw_tool\":373,\"models/tools/edit/poly_draw_tool\":374,\"models/tools/edit/poly_tool\":375,\"models/tools/edit/poly_edit_tool\":376,\"models/tools/gestures/box_select_tool\":377,\"models/tools/gestures/select_tool\":378,\"models/tools/gestures/box_zoom_tool\":379,\"models/tools/gestures/lasso_select_tool\":380,\"models/tools/gestures/poly_select_tool\":381,\"models/tools/edit/line_edit_tool\":382,\"models/tools/edit/line_tool\":383,\"models/tools/gestures/pan_tool\":384,\"models/tools/gestures/range_tool\":385,\"models/tools/gestures/tap_tool\":386,\"models/tools/gestures/wheel_pan_tool\":387,\"models/tools/gestures/wheel_zoom_tool\":388,\"models/tools/inspectors/crosshair_tool\":389,\"models/tools/inspectors/customjs_hover\":390,\"models/tools/inspectors/hover_tool\":391,\"models/tools/tool_proxy\":392,\"models/tools/toolbar_box\":393,\"document/defs\":394,\"embed/standalone\":395,\"embed/dom\":396,\"embed/server\":397,\"client/connection\":398,\"protocol/message\":399,\"protocol/receiver\":400,\"client/session\":401,\"embed/notebook\":402,\"styles/notebook.css\":403,\"protocol/index\":404,\"testing\":405,\"safely\":406}, {});});\n\n /* END bokeh.min.js */\n },\n \n function(Bokeh) {\n /* BEGIN bokeh-widgets.min.js */\n /*!\n * Copyright (c) 2012 - 2021, Anaconda, Inc., and Bokeh Contributors\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n * \n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * Neither the name of Anaconda nor the names of any contributors\n * may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\n (function(root, factory) {\n factory(root[\"Bokeh\"], \"2.3.2\");\n })(this, function(Bokeh, version) {\n var define;\n return (function(modules, entry, aliases, externals) {\n const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n if (bokeh != null) {\n return bokeh.register_plugin(modules, entry, aliases);\n } else {\n throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n }\n })\n ({\n 417: function _(t,e,i,o,r){o();const s=t(1).__importStar(t(418));i.Widgets=s;t(7).register_models(s)},\n 418: function _(t,e,o,r,u){r(),u(\"AbstractButton\",t(419).AbstractButton),u(\"AbstractIcon\",t(422).AbstractIcon),u(\"AutocompleteInput\",t(423).AutocompleteInput),u(\"Button\",t(428).Button),u(\"CheckboxButtonGroup\",t(429).CheckboxButtonGroup),u(\"CheckboxGroup\",t(431).CheckboxGroup),u(\"ColorPicker\",t(433).ColorPicker),u(\"DatePicker\",t(434).DatePicker),u(\"DateRangeSlider\",t(437).DateRangeSlider),u(\"DateSlider\",t(442).DateSlider),u(\"Div\",t(443).Div),u(\"Dropdown\",t(446).Dropdown),u(\"FileInput\",t(447).FileInput),u(\"InputWidget\",t(426).InputWidget),u(\"Markup\",t(444).Markup),u(\"MultiSelect\",t(448).MultiSelect),u(\"Paragraph\",t(449).Paragraph),u(\"PasswordInput\",t(450).PasswordInput),u(\"MultiChoice\",t(451).MultiChoice),u(\"NumericInput\",t(454).NumericInput),u(\"PreText\",t(455).PreText),u(\"RadioButtonGroup\",t(456).RadioButtonGroup),u(\"RadioGroup\",t(457).RadioGroup),u(\"RangeSlider\",t(458).RangeSlider),u(\"Select\",t(459).Select),u(\"Slider\",t(460).Slider),u(\"Spinner\",t(461).Spinner),u(\"TextInput\",t(424).TextInput),u(\"TextAreaInput\",t(462).TextAreaInput),u(\"Toggle\",t(463).Toggle),u(\"Widget\",t(488).Widget)},\n 419: function _(t,e,n,i,s){i();const l=t(1),o=t(20),r=t(43),c=t(122),u=t(420),_=t(422),a=l.__importStar(t(328)),b=a;class d extends u.ControlView{*controls(){yield this.button_el}async lazy_initialize(){await super.lazy_initialize();const{icon:t}=this.model;null!=t&&(this.icon_view=await c.build_view(t,{parent:this}))}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}remove(){null!=this.icon_view&&this.icon_view.remove(),super.remove()}styles(){return[...super.styles(),a.default]}_render_button(...t){return r.button({type:\"button\",disabled:this.model.disabled,class:[b.btn,b[`btn_${this.model.button_type}`]]},...t)}render(){super.render(),this.button_el=this._render_button(this.model.label),this.button_el.addEventListener(\"click\",(()=>this.click())),null!=this.icon_view&&(\"\"!=this.model.label?r.prepend(this.button_el,this.icon_view.el,r.nbsp()):r.prepend(this.button_el,this.icon_view.el),this.icon_view.render()),this.group_el=r.div({class:b.btn_group},this.button_el),this.el.appendChild(this.group_el)}click(){}}n.AbstractButtonView=d,d.__name__=\"AbstractButtonView\";class h extends u.Control{constructor(t){super(t)}static init_AbstractButton(){this.define((({String:t,Ref:e,Nullable:n})=>({label:[t,\"Button\"],icon:[n(e(_.AbstractIcon)),null],button_type:[o.ButtonType,\"default\"]})))}}n.AbstractButton=h,h.__name__=\"AbstractButton\",h.init_AbstractButton()},\n 420: function _(t,e,o,s,n){s();const i=t(488),l=t(43);class c extends i.WidgetView{connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.disabled,(()=>{for(const t of this.controls())l.toggle_attribute(t,\"disabled\",this.model.disabled)}))}}o.ControlView=c,c.__name__=\"ControlView\";class r extends i.Widget{constructor(t){super(t)}}o.Control=r,r.__name__=\"Control\"},\n 488: function _(i,t,e,o,n){o();const s=i(322),r=i(20);class d extends s.HTMLBoxView{_width_policy(){return\"horizontal\"==this.model.orientation?super._width_policy():\"fixed\"}_height_policy(){return\"horizontal\"==this.model.orientation?\"fixed\":super._height_policy()}box_sizing(){const i=super.box_sizing();return\"horizontal\"==this.model.orientation?null==i.width&&(i.width=this.model.default_size):null==i.height&&(i.height=this.model.default_size),i}}e.WidgetView=d,d.__name__=\"WidgetView\";class _ extends s.HTMLBox{constructor(i){super(i)}static init_Widget(){this.define((({Number:i})=>({orientation:[r.Orientation,\"horizontal\"],default_size:[i,300]}))),this.override({margin:[5,5,5,5]})}}e.Widget=_,_.__name__=\"Widget\",_.init_Widget()},\n 422: function _(c,t,s,n,e){n();const o=c(53),_=c(240);class a extends _.DOMView{}s.AbstractIconView=a,a.__name__=\"AbstractIconView\";class r extends o.Model{constructor(c){super(c)}}s.AbstractIcon=r,r.__name__=\"AbstractIcon\"},\n 423: function _(e,t,n,i,s){i();const h=e(1),o=e(424),_=e(43),u=e(10),r=h.__importStar(e(243)),c=r;class l extends o.TextInputView{constructor(){super(...arguments),this._open=!1,this._last_value=\"\",this._hover_index=0}styles(){return[...super.styles(),r.default]}render(){super.render(),this.input_el.addEventListener(\"keydown\",(e=>this._keydown(e))),this.input_el.addEventListener(\"keyup\",(e=>this._keyup(e))),this.menu=_.div({class:[c.menu,c.below]}),this.menu.addEventListener(\"click\",(e=>this._menu_click(e))),this.menu.addEventListener(\"mouseover\",(e=>this._menu_hover(e))),this.el.appendChild(this.menu),_.undisplay(this.menu)}change_input(){this._open&&this.menu.children.length>0&&(this.model.value=this.menu.children[this._hover_index].textContent,this.input_el.focus(),this._hide_menu()),this.model.restrict||super.change_input()}_update_completions(e){_.empty(this.menu);for(const t of e){const e=_.div({},t);this.menu.appendChild(e)}e.length>0&&this.menu.children[0].classList.add(c.active)}_show_menu(){if(!this._open){this._open=!0,this._hover_index=0,this._last_value=this.model.value,_.display(this.menu);const e=t=>{const{target:n}=t;n instanceof HTMLElement&&!this.el.contains(n)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,_.undisplay(this.menu))}_menu_click(e){e.target!=e.currentTarget&&e.target instanceof Element&&(this.model.value=e.target.textContent,this.input_el.focus(),this._hide_menu())}_menu_hover(e){if(e.target!=e.currentTarget&&e.target instanceof Element){let t=0;for(t=0;t0&&(this.menu.children[this._hover_index].classList.remove(c.active),this._hover_index=u.clamp(e,0,t-1),this.menu.children[this._hover_index].classList.add(c.active))}_keydown(e){}_keyup(e){switch(e.keyCode){case _.Keys.Enter:this.change_input();break;case _.Keys.Esc:this._hide_menu();break;case _.Keys.Up:this._bump_hover(this._hover_index-1);break;case _.Keys.Down:this._bump_hover(this._hover_index+1);break;default:{const e=this.input_el.value;if(e.lengthe:e=>e.toLowerCase();for(const n of this.model.completions)i(n).startsWith(i(e))&&t.push(n);this._update_completions(t),0==t.length?this._hide_menu():this._show_menu()}}}}n.AutocompleteInputView=l,l.__name__=\"AutocompleteInputView\";class a extends o.TextInput{constructor(e){super(e)}static init_AutocompleteInput(){this.prototype.default_view=l,this.define((({Boolean:e,Int:t,String:n,Array:i})=>({completions:[i(n),[]],min_characters:[t,2],case_sensitive:[e,!0],restrict:[e,!0]})))}}n.AutocompleteInput=a,a.__name__=\"AutocompleteInput\",a.init_AutocompleteInput()},\n 424: function _(t,e,n,i,p){i();const _=t(1),u=t(425),s=t(43),x=_.__importStar(t(427));class a extends u.TextLikeInputView{_render_input(){this.input_el=s.input({type:\"text\",class:x.input})}}n.TextInputView=a,a.__name__=\"TextInputView\";class c extends u.TextLikeInput{constructor(t){super(t)}static init_TextInput(){this.prototype.default_view=a}}n.TextInput=c,c.__name__=\"TextInput\",c.init_TextInput()},\n 425: function _(e,t,n,i,l){i();const s=e(426);class h extends s.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,(()=>{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.value.change,(()=>this.input_el.value=this.model.value)),this.connect(this.model.properties.value_input.change,(()=>this.input_el.value=this.model.value_input)),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled)),this.connect(this.model.properties.placeholder.change,(()=>this.input_el.placeholder=this.model.placeholder)),this.connect(this.model.properties.max_length.change,(()=>{const{max_length:e}=this.model;null!=e?this.input_el.maxLength=e:this.input_el.removeAttribute(\"maxLength\")}))}render(){var e;super.render(),this._render_input();const{input_el:t}=this;t.name=null!==(e=this.model.name)&&void 0!==e?e:\"\",t.value=this.model.value,t.disabled=this.model.disabled,t.placeholder=this.model.placeholder,null!=this.model.max_length&&(t.maxLength=this.model.max_length),t.addEventListener(\"change\",(()=>this.change_input())),t.addEventListener(\"input\",(()=>this.change_input_value())),this.group_el.appendChild(t)}change_input(){this.model.value=this.input_el.value,super.change_input()}change_input_value(){this.model.value_input=this.input_el.value,super.change_input()}}n.TextLikeInputView=h,h.__name__=\"TextLikeInputView\";class a extends s.InputWidget{constructor(e){super(e)}static init_TextLikeInput(){this.define((({Int:e,String:t,Nullable:n})=>({value:[t,\"\"],value_input:[t,\"\"],placeholder:[t,\"\"],max_length:[n(e),null]})))}}n.TextLikeInput=a,a.__name__=\"TextLikeInput\",a.init_TextLikeInput()},\n 426: function _(t,e,i,n,s){n();const l=t(1),o=t(420),r=t(43),_=l.__importStar(t(427)),p=_;class d extends o.ControlView{*controls(){yield this.input_el}connect_signals(){super.connect_signals(),this.connect(this.model.properties.title.change,(()=>{this.label_el.textContent=this.model.title}))}styles(){return[...super.styles(),_.default]}render(){super.render();const{title:t}=this.model;this.label_el=r.label({style:{display:0==t.length?\"none\":\"\"}},t),this.group_el=r.div({class:p.input_group},this.label_el),this.el.appendChild(this.group_el)}change_input(){}}i.InputWidgetView=d,d.__name__=\"InputWidgetView\";class u extends o.Control{constructor(t){super(t)}static init_InputWidget(){this.define((({String:t})=>({title:[t,\"\"]})))}}i.InputWidget=u,u.__name__=\"InputWidget\",u.init_InputWidget()},\n 427: function _(o,i,t,n,p){n(),t.root=\"bk-root\",t.input=\"bk-input\",t.input_group=\"bk-input-group\",t.inline=\"bk-inline\",t.spin_wrapper=\"bk-spin-wrapper\",t.spin_btn=\"bk-spin-btn\",t.spin_btn_up=\"bk-spin-btn-up\",t.spin_btn_down=\"bk-spin-btn-down\",t.default='.bk-root .bk-input{display:inline-block;width:100%;flex-grow:1;-webkit-flex-grow:1;min-height:31px;padding:0 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;}.bk-root .bk-input:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);}.bk-root .bk-input::placeholder,.bk-root .bk-input:-ms-input-placeholder,.bk-root .bk-input::-moz-placeholder,.bk-root .bk-input::-webkit-input-placeholder{color:#999;opacity:1;}.bk-root .bk-input[disabled]{cursor:not-allowed;background-color:#eee;opacity:1;}.bk-root select:not([multiple]).bk-input,.bk-root select:not([size]).bk-input{height:auto;appearance:none;-webkit-appearance:none;background-image:url(\\'data:image/svg+xml;utf8,\\');background-position:right 0.5em center;background-size:8px 6px;background-repeat:no-repeat;}.bk-root select[multiple].bk-input,.bk-root select[size].bk-input,.bk-root textarea.bk-input{height:auto;}.bk-root .bk-input-group{width:100%;height:100%;display:inline-flex;display:-webkit-inline-flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;align-items:start;-webkit-align-items:start;flex-direction:column;-webkit-flex-direction:column;white-space:nowrap;}.bk-root .bk-input-group.bk-inline{flex-direction:row;-webkit-flex-direction:row;}.bk-root .bk-input-group.bk-inline > *:not(:first-child){margin-left:5px;}.bk-root .bk-input-group input[type=\"checkbox\"] + span,.bk-root .bk-input-group input[type=\"radio\"] + span{position:relative;top:-2px;margin-left:3px;}.bk-root .bk-input-group > .bk-spin-wrapper{display:inherit;width:inherit;height:inherit;position:relative;overflow:hidden;padding:0;vertical-align:middle;}.bk-root .bk-input-group > .bk-spin-wrapper input{padding-right:20px;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn{position:absolute;display:block;height:50%;min-height:0;min-width:0;width:30px;padding:0;margin:0;right:0;border:none;background:none;cursor:pointer;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn:before{content:\"\";display:inline-block;transform:translateY(-50%);border-left:5px solid transparent;border-right:5px solid transparent;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up{top:0;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:before{border-bottom:5px solid black;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:disabled:before{border-bottom-color:grey;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down{bottom:0;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:before{border-top:5px solid black;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:disabled:before{border-top-color:grey;}'},\n 428: function _(t,e,n,i,o){i();const s=t(419),u=t(264);class c extends s.AbstractButtonView{click(){this.model.trigger_event(new u.ButtonClick),super.click()}}n.ButtonView=c,c.__name__=\"ButtonView\";class _ extends s.AbstractButton{constructor(t){super(t)}static init_Button(){this.prototype.default_view=c,this.override({label:\"Button\"})}}n.Button=_,_.__name__=\"Button\",_.init_Button()},\n 429: function _(t,e,o,i,c){i();const n=t(1),s=t(430),a=t(43),u=n.__importStar(t(328));class r extends s.ButtonGroupView{get active(){return new Set(this.model.active)}change_active(t){const{active:e}=this;e.has(t)?e.delete(t):e.add(t),this.model.active=[...e].sort()}_update_active(){const{active:t}=this;this._buttons.forEach(((e,o)=>{a.classes(e).toggle(u.active,t.has(o))}))}}o.CheckboxButtonGroupView=r,r.__name__=\"CheckboxButtonGroupView\";class _ extends s.ButtonGroup{constructor(t){super(t)}static init_CheckboxButtonGroup(){this.prototype.default_view=r,this.define((({Int:t,Array:e})=>({active:[e(t),[]]})))}}o.CheckboxButtonGroup=_,_.__name__=\"CheckboxButtonGroup\",_.init_CheckboxButtonGroup()},\n 430: function _(t,e,n,s,i){s();const o=t(1),r=t(420),u=t(20),a=t(43),_=o.__importStar(t(328)),l=_;class c extends r.ControlView{*controls(){yield*this._buttons}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.button_type,(()=>this.render())),this.on_change(t.labels,(()=>this.render())),this.on_change(t.active,(()=>this._update_active()))}styles(){return[...super.styles(),_.default]}render(){super.render(),this._buttons=this.model.labels.map(((t,e)=>{const n=a.div({class:[l.btn,l[`btn_${this.model.button_type}`]],disabled:this.model.disabled},t);return n.addEventListener(\"click\",(()=>this.change_active(e))),n})),this._update_active();const t=a.div({class:l.btn_group},this._buttons);this.el.appendChild(t)}}n.ButtonGroupView=c,c.__name__=\"ButtonGroupView\";class d extends r.Control{constructor(t){super(t)}static init_ButtonGroup(){this.define((({String:t,Array:e})=>({labels:[e(t),[]],button_type:[u.ButtonType,\"default\"]})))}}n.ButtonGroup=d,d.__name__=\"ButtonGroup\",d.init_ButtonGroup()},\n 431: function _(e,t,i,n,s){n();const o=e(1),c=e(432),a=e(43),l=e(9),d=o.__importStar(e(427));class h extends c.InputGroupView{render(){super.render();const e=a.div({class:[d.input_group,this.model.inline?d.inline:null]});this.el.appendChild(e);const{active:t,labels:i}=this.model;this._inputs=[];for(let n=0;nthis.change_active(n))),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),l.includes(t,n)&&(s.checked=!0);const o=a.label({},s,a.span({},i[n]));e.appendChild(o)}}change_active(e){const t=new Set(this.model.active);t.has(e)?t.delete(e):t.add(e),this.model.active=[...t].sort()}}i.CheckboxGroupView=h,h.__name__=\"CheckboxGroupView\";class p extends c.InputGroup{constructor(e){super(e)}static init_CheckboxGroup(){this.prototype.default_view=h,this.define((({Boolean:e,Int:t,String:i,Array:n})=>({active:[n(t),[]],labels:[n(i),[]],inline:[e,!1]})))}}i.CheckboxGroup=p,p.__name__=\"CheckboxGroup\",p.init_CheckboxGroup()},\n 432: function _(n,t,e,s,o){s();const r=n(1),u=n(420),c=r.__importDefault(n(427));class _ extends u.ControlView{*controls(){yield*this._inputs}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}styles(){return[...super.styles(),c.default]}}e.InputGroupView=_,_.__name__=\"InputGroupView\";class i extends u.Control{constructor(n){super(n)}}e.InputGroup=i,i.__name__=\"InputGroup\"},\n 433: function _(e,i,t,n,o){n();const s=e(1),l=e(426),r=e(43),c=e(22),a=s.__importStar(e(427));class d extends l.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,(()=>{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.color.change,(()=>this.input_el.value=c.color2hexrgb(this.model.color))),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled))}render(){super.render(),this.input_el=r.input({type:\"color\",class:a.input,name:this.model.name,value:this.model.color,disabled:this.model.disabled}),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el)}change_input(){this.model.color=this.input_el.value,super.change_input()}}t.ColorPickerView=d,d.__name__=\"ColorPickerView\";class h extends l.InputWidget{constructor(e){super(e)}static init_ColorPicker(){this.prototype.default_view=d,this.define((({Color:e})=>({color:[e,\"#000000\"]})))}}t.ColorPicker=h,h.__name__=\"ColorPicker\",h.init_ColorPicker()},\n 434: function _(e,t,i,n,s){n();const a=e(1),l=a.__importDefault(e(435)),o=e(426),d=e(43),r=e(20),c=e(8),h=a.__importStar(e(427)),u=a.__importDefault(e(436));function _(e){const t=[];for(const i of e)if(c.isString(i))t.push(i);else{const[e,n]=i;t.push({from:e,to:n})}return t}class p extends o.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,min_date:t,max_date:i,disabled_dates:n,enabled_dates:s,position:a,inline:l}=this.model.properties;this.connect(e.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.setDate(this.model.value)})),this.connect(t.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"minDate\",this.model.min_date)})),this.connect(i.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"maxDate\",this.model.max_date)})),this.connect(n.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"disable\",this.model.disabled_dates)})),this.connect(s.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enable\",this.model.enabled_dates)})),this.connect(a.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"position\",this.model.position)})),this.connect(l.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"inline\",this.model.inline)}))}remove(){var e;null===(e=this._picker)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),u.default]}render(){var e,t;null==this._picker&&(super.render(),this.input_el=d.input({type:\"text\",class:h.input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el),this._picker=l.default(this.input_el,{defaultDate:this.model.value,minDate:null!==(e=this.model.min_date)&&void 0!==e?e:void 0,maxDate:null!==(t=this.model.max_date)&&void 0!==t?t:void 0,inline:this.model.inline,position:this.model.position,disable:_(this.model.disabled_dates),enable:_(this.model.enabled_dates),onChange:(e,t,i)=>this._on_change(e,t,i)}))}_on_change(e,t,i){this.model.value=t,this.change_input()}}i.DatePickerView=p,p.__name__=\"DatePickerView\";class m extends o.InputWidget{constructor(e){super(e)}static init_DatePicker(){this.prototype.default_view=p,this.define((({Boolean:e,String:t,Array:i,Tuple:n,Or:s,Nullable:a})=>{const l=i(s(t,n(t,t)));return{value:[t],min_date:[a(t),null],max_date:[a(t),null],disabled_dates:[l,[]],enabled_dates:[l,[]],position:[r.CalendarPosition,\"auto\"],inline:[e,!1]}}))}}i.DatePicker=m,m.__name__=\"DatePicker\",m.init_DatePicker()},\n 435: function _(e,n,t,a,i){\n /* flatpickr v4.6.6, @license MIT */var o,r;o=this,r=function(){\"use strict\";\n /*! *****************************************************************************\n Copyright (c) Microsoft Corporation.\n \n Permission to use, copy, modify, and/or distribute this software for any\n purpose with or without fee is hereby granted.\n \n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n PERFORMANCE OF THIS SOFTWARE.\n ***************************************************************************** */var e=function(){return(e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return\"th\";switch(n%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",monthAriaLabel:\"Month\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1},o=function(e,n){return void 0===n&&(n=2),(\"000\"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n,t){var a;return void 0===t&&(t=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout((function(){a=null,t||e.apply(i,o)}),n),t&&!a&&e.apply(i,o)}}var c=function(e){return e instanceof Array?e:[e]};function d(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function s(e,n,t){var a=window.document.createElement(e);return n=n||\"\",t=t||\"\",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=s(\"div\",\"numInputWrapper\"),a=s(\"input\",\"numInput \"+e),i=s(\"span\",\"arrowUp\"),o=s(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?a.type=\"number\":(a.type=\"text\",a.pattern=\"\\\\d*\"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return\"function\"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?\"shorthand\":\"longhand\"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours(parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],\"i\").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours(parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:\"(\\\\w+)\",F:\"(\\\\w+)\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"(\\\\w+)\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"(\\\\w+)\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split(\"\").map((function(n,a,o){return w[n]&&\"\\\\\"!==o[a-1]?w[n](e,i,t):\"\\\\\"!==n?n:\"\"})).join(\"\"):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if(\"string\"==typeof e){var s=n||(t||a).dateFormat,u=String(e).trim();if(\"today\"===u)l=new Date,i=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(t&&t.parseDate)l=t.parseDate(e,s);else{l=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],g=0,p=0,h=\"\";gl&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&H(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+d===23:Math.abs(u-d)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var c=w._input.value;I(),be(),w._input.value!==c&&w._debouncedChange()}function I(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0);if(void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0)){var l=void 0!==w.config.maxTime?w.config.maxTime:w.config.maxDate;(t=Math.min(t,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(o){var c=void 0!==w.config.minTime?w.config.minTime:w.config.minDate;(t=Math.max(t,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}O(t,a,i)}}function S(e){var n=e||w.latestSelectedDateObj;n&&O(n.getHours(),n.getMinutes(),n.getSeconds())}function _(){var e=w.config.defaultHour,n=w.config.defaultMinute,t=w.config.defaultSeconds;if(void 0!==w.config.minDate){var a=w.config.minDate.getHours(),i=w.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(n=Math.max(i,n)),e===a&&n===i&&(t=w.config.minDate.getSeconds())}if(void 0!==w.config.maxDate){var o=w.config.maxDate.getHours(),r=w.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(n=Math.min(r,n)),e===o&&n===r&&(t=w.config.maxDate.getSeconds())}return{hours:e,minutes:n,seconds:t}}function O(e,n,t){void 0!==w.latestSelectedDateObj&&w.latestSelectedDateObj.setHours(e%24,n,t||0,0),w.hourElement&&w.minuteElement&&!w.isMobile&&(w.hourElement.value=o(w.config.time_24hr?e:(12+e)%12+12*r(e%12==0)),w.minuteElement.value=o(n),void 0!==w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(e>=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function F(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(t.toString()))&&Q(t)}function N(e,n,t,a){return n instanceof Array?n.forEach((function(n){return N(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return N(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({element:e,event:n,handler:t,options:a}))}function A(){pe(\"onChange\")}function P(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate=0&&M(e,w.selectedDates[1])<=0}(n)&&!ve(n)&&o.classList.add(\"inRange\"),w.weekNumbers&&1===w.config.showMonths&&\"prevMonthDay\"!==e&&t%7==1&&w.weekNumbers.insertAdjacentHTML(\"beforeend\",\"\"+w.config.getWeek(n)+\"\"),pe(\"onDayCreate\",o),o}function L(e){e.focus(),\"range\"===w.config.mode&&ae(e)}function W(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf(\"hidden\")&&X(c.dateObj))return c}}function R(e,n){var t=ee(document.activeElement||document.body),a=void 0!==e?e:t?document.activeElement:void 0!==w.selectedDateElem&&ee(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&ee(w.todayDateElem)?w.todayDateElem:W(n>0?1:-1);void 0===a?w._input.focus():t?function(e,n){for(var t=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf(\"hidden\")&&X(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(n))return L(s)}w.changeMonth(i),R(W(i),0)}(a,n):L(a)}function B(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?\"prevMonthDay hidden\":\"prevMonthDay\",c=r?\"nextMonthDay hidden\":\"nextMonthDay\",d=a+1-t,u=0;d<=a;d++,u++)o.appendChild(j(l,new Date(e,n-1,d),d,u));for(d=1;d<=i;d++,u++)o.appendChild(j(\"\",new Date(e,n,d),d,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(j(c,new Date(e,n+1,f%i),f,u));var m=s(\"div\",\"dayContainer\");return m.appendChild(o),m}function J(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||\"dropdown\"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&ew.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML=\"\";for(var n=0;n<12;n++)if(e(n)){var t=s(\"option\",\"flatpickr-monthDropdown-month\");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function U(){var e,n=s(\"div\",\"flatpickr-month\"),t=window.document.createDocumentFragment();w.config.showMonths>1||\"static\"===w.config.monthSelectorType?e=s(\"span\",\"cur-month\"):(w.monthsDropdownContainer=s(\"select\",\"flatpickr-monthDropdown-months\"),w.monthsDropdownContainer.setAttribute(\"aria-label\",w.l10n.monthAriaLabel),N(w.monthsDropdownContainer,\"change\",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),pe(\"onMonthChange\")})),K(),e=w.monthsDropdownContainer);var a=m(\"cur-year\",{tabindex:\"-1\"}),i=a.getElementsByTagName(\"input\")[0];i.setAttribute(\"aria-label\",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute(\"min\",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute(\"max\",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=s(\"div\",\"flatpickr-current-month\");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function q(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=U();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function $(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=s(\"div\",\"flatpickr-weekdays\");for(var e=w.config.showMonths;e--;){var n=s(\"div\",\"flatpickr-weekdaycontainer\");w.weekdayContainer.appendChild(n)}return z(),w.weekdayContainer}function z(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e\\n \"+t.join(\"\")+\"\\n \\n \"}}function G(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,pe(\"onYearChange\"),K()),J(),pe(\"onMonthChange\"),De())}function V(e){return!(!w.config.appendTo||!w.config.appendTo.contains(e))||w.calendarContainer.contains(e)}function Z(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=V(n),a=n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)),i=\"blur\"===e.type?a&&e.relatedTarget&&!V(e.relatedTarget):!a&&!t&&!V(e.relatedTarget),o=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));i&&o&&(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&\"\"!==w.input.value&&void 0!==w.input.value&&T(),w.close(),w.config&&\"range\"===w.config.mode&&1===w.selectedDates.length&&(w.clear(!1),w.redraw()))}}function Q(e){if(!(!e||w.config.minDate&&ew.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),pe(\"onYearChange\"),K())}}function X(e,n){void 0===n&&(n=!0);var t=w.parseDate(e,void 0,n);if(w.config.minDate&&t&&M(t,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&t&&M(t,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(0===w.config.enable.length&&0===w.config.disable.length)return!0;if(void 0===t)return!1;for(var a=w.config.enable.length>0,i=a?w.config.enable:w.config.disable,o=0,r=void 0;o=r.from.getTime()&&t.getTime()<=r.to.getTime())return a}return!a}function ee(e){return void 0!==w.daysContainer&&-1===e.className.indexOf(\"hidden\")&&-1===e.className.indexOf(\"flatpickr-disabled\")&&w.daysContainer.contains(e)}function ne(e){e.target!==w._input||e.relatedTarget&&V(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function te(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),n.blur();w.open()}else if(V(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),T(),se()):ue(e);break;case 27:e.preventDefault(),se();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else if(e.preventDefault(),void 0!==w.daysContainer&&(!1===a||document.activeElement&&ee(document.activeElement))){var l=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(l),R(W(1),0)):R(void 0,l)}break;case 38:case 40:e.preventDefault();var c=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),Q(w.currentYear-c),R(W(1),0)):r||R(void 0,7*c):n===w.currentYearElement?Q(w.currentYear-c):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),T(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),s=d.indexOf(n);if(-1!==s){var u=d[s+(e.shiftKey?-1:1)];e.preventDefault(),(u||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],I(),be();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],I(),be()}(t||V(n))&&pe(\"onKeyDown\",e)}function ae(e){if(1===w.selectedDates.length&&(!e||e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\"))){for(var n=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),t=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),a=Math.min(n,w.selectedDates[0].getTime()),i=Math.max(n,w.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;ca&&cr)?r=c:c>t&&(!l||c0&&m0&&m>l;return g?(f.classList.add(\"notAllowed\"),[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){f.classList.remove(e)})),\"continue\"):o&&!g?\"continue\":([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(n<=w.selectedDates[0].getTime()?\"startRange\":\"endRange\"),tn&&m===t&&f.classList.add(\"endRange\"),m>=r&&(0===l||m<=l)&&(d=t,u=n,(c=m)>Math.min(d,u)&&c0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return X(e)})),w.selectedDates.length||\"min\"!==e||S(t),be()),w.daysContainer&&(de(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function re(){return w.config.wrap?p.querySelector(\"[data-input]\"):p}function le(){\"object\"!=typeof w.config.locale&&void 0===k.l10ns[w.config.locale]&&w.config.errorHandler(new Error(\"flatpickr: invalid locale \"+w.config.locale)),w.l10n=e(e({},k.l10ns.default),\"object\"==typeof w.config.locale?w.config.locale:\"default\"!==w.config.locale?k.l10ns[w.config.locale]:void 0),D.K=\"(\"+w.l10n.amPM[0]+\"|\"+w.l10n.amPM[1]+\"|\"+w.l10n.amPM[0].toLowerCase()+\"|\"+w.l10n.amPM[1].toLowerCase()+\")\",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===k.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function ce(e){if(void 0!==w.calendarContainer){pe(\"onPreCalendarPosition\");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(\" \"),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,s=\"above\"===o||\"below\"!==o&&ct,u=window.pageYOffset+l.top+(s?-t-2:n.offsetHeight+2);if(d(w.calendarContainer,\"arrowTop\",!s),d(w.calendarContainer,\"arrowBottom\",s),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;\"center\"===r?(f-=(a-l.width)/2,m=!0):\"right\"===r&&(f-=a-l.width,g=!0),d(w.calendarContainer,\"arrowLeft\",!m&&!g),d(w.calendarContainer,\"arrowCenter\",m),d(w.calendarContainer,\"arrowRight\",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(d(w.calendarContainer,\"rightMost\",h),!w.config.static)if(w.calendarContainer.style.top=u+\"px\",h)if(v){var D=function(){for(var e=null,n=0;nw.currentMonth+w.config.showMonths-1)&&\"range\"!==w.config.mode;if(w.selectedDateElem=t,\"single\"===w.config.mode)w.selectedDates=[a];else if(\"multiple\"===w.config.mode){var o=ve(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else\"range\"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(I(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(pe(\"onYearChange\"),K()),pe(\"onMonthChange\")}if(De(),J(),be(),i||\"range\"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():L(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l=\"single\"===w.config.mode&&!w.config.enableTime,c=\"range\"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&se()}A()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=N,w._setHoursFromDate=S,w._positionCalendar=ce,w.changeMonth=G,w.changeYear=Q,w.clear=function(e,n){if(void 0===e&&(e=!0),void 0===n&&(n=!0),w.input.value=\"\",void 0!==w.altInput&&(w.altInput.value=\"\"),void 0!==w.mobileInput&&(w.mobileInput.value=\"\"),w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth()),!0===w.config.enableTime){var t=_(),a=t.hours,i=t.minutes,o=t.seconds;O(a,i,o)}w.redraw(),e&&pe(\"onChange\")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove(\"open\"),void 0!==w._input&&w._input.classList.remove(\"active\")),pe(\"onClose\")},w._createElement=s,w.destroy=function(){void 0!==w.config&&pe(\"onDestroy\");for(var e=w._handlers.length;e--;){var n=w._handlers[e];n.element.removeEventListener(n.event,n.handler,n.options)}if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var t=w.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type=\"text\",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput),w.input&&(w.input.type=w.input._type,w.input.classList.remove(\"flatpickr-input\"),w.input.removeAttribute(\"readonly\")),[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=X,w.jumpToDate=P,w.open=function(e,n){if(void 0===n&&(n=w._positionElement),!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void pe(\"onOpen\")}if(!w._input.disabled&&!w.config.inline){var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add(\"open\"),w._input.classList.add(\"active\"),pe(\"onOpen\"),ce(n)),!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))}},w.redraw=de,w.set=function(e,n){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==fe[a]&&fe[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==fe[e]?fe[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),be(!0)},w.setDate=function(e,n,t){if(void 0===n&&(n=!1),void 0===t&&(t=w.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);me(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),P(void 0,n),S(),0===w.selectedDates.length&&w.clear(!1),be(n),n&&pe(\"onChange\")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var fe={locale:[le,z],showMonths:[q,E,$],minDate:[P],maxDate:[P]};function me(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||\"number\"==typeof e)t=[w.parseDate(e,n)];else if(\"string\"==typeof e)switch(w.config.mode){case\"single\":case\"time\":t=[w.parseDate(e,n)];break;case\"multiple\":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case\"range\":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&X(e,!1)})),\"range\"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function ge(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function pe(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a1||\"static\"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+\" \":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYearw.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function we(e){return w.selectedDates.map((function(n){return w.formatDate(n,e)})).filter((function(e,n,t){return\"range\"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join(\"range\"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function be(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):\"\"),w.input.value=we(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=we(w.config.altFormat)),!1!==e&&pe(\"onValueUpdate\")}function Ce(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?G(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains(\"arrowUp\")?w.changeYear(w.currentYear+1):n.classList.contains(\"arrowDown\")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=[\"wrap\",\"weekNumbers\",\"allowInput\",\"allowInvalidPreload\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,\"enable\",{get:function(){return w.config._enable},set:function(e){w.config._enable=ge(e)}}),Object.defineProperty(w.config,\"disable\",{get:function(){return w.config._disable},set:function(e){w.config._disable=ge(e)}});var r=\"time\"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=k.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?\"H:i\"+(i.enableSeconds?\":S\":\"\"):l+\" H:i\"+(i.enableSeconds?\":S\":\"\")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=k.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?\"h:i\"+(i.enableSeconds?\":S K\":\" K\"):d+\" h:i\"+(i.enableSeconds?\":S\":\"\")+\" K\"}Object.defineProperty(w.config,\"minDate\",{get:function(){return w.config._minDate},set:oe(\"min\")}),Object.defineProperty(w.config,\"maxDate\",{get:function(){return w.config._maxDate},set:oe(\"max\")});var s=function(e){return function(n){w.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=w.parseDate(n,\"H:i:S\")}};Object.defineProperty(w.config,\"minTime\",{get:function(){return w.config._minTime},set:s(\"min\")}),Object.defineProperty(w.config,\"maxTime\",{get:function(){return w.config._maxTime},set:s(\"max\")}),\"time\"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0),Object.assign(w.config,o,i);for(var u=0;u-1?w.config[m]=c(f[m]).map(x).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=re().className+\" \"+w.config.altInputClass),pe(\"onParseConfig\")}(),le(),w.input=re(),w.input?(w.input._type=w.input.type,w.input.type=\"text\",w.input.classList.add(\"flatpickr-input\"),w._input=w.input,w.config.altInput&&(w.altInput=s(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type=\"text\",w.input.setAttribute(\"type\",\"hidden\"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling)),w.config.allowInput||w._input.setAttribute(\"readonly\",\"readonly\"),w._positionElement=w.config.positionElement||w._input):w.config.errorHandler(new Error(\"Invalid input element specified\")),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||(\"INPUT\"!==w.input.nodeName&&\"TEXTAREA\"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&me(e,w.config.dateFormat),w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()0&&(w.latestSelectedDateObj=w.selectedDates[0]),void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,\"H:i\")),void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,\"H:i\")),w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=s(\"div\",\"flatpickr-calendar\"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=s(\"div\",\"flatpickr-months\"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=s(\"span\",\"flatpickr-prev-month\"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=s(\"span\",\"flatpickr-next-month\"),w.nextMonthNav.innerHTML=w.config.nextArrow,q(),Object.defineProperty(w,\"_hidePrevMonthArrow\",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(d(w.prevMonthNav,\"flatpickr-disabled\",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,\"_hideNextMonthArrow\",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(d(w.nextMonthNav,\"flatpickr-disabled\",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],De(),w.monthNav)),w.innerContainer=s(\"div\",\"flatpickr-innerContainer\"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add(\"hasWeeks\");var e=s(\"div\",\"flatpickr-weekwrapper\");e.appendChild(s(\"span\",\"flatpickr-weekday\",w.l10n.weekAbbreviation));var n=s(\"div\",\"flatpickr-weeks\");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=s(\"div\",\"flatpickr-rContainer\"),w.rContainer.appendChild($()),w.daysContainer||(w.daysContainer=s(\"div\",\"flatpickr-days\"),w.daysContainer.tabIndex=-1),J(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add(\"hasTime\"),w.config.noCalendar&&w.calendarContainer.classList.add(\"noCalendar\"),w.timeContainer=s(\"div\",\"flatpickr-time\"),w.timeContainer.tabIndex=-1;var e=s(\"span\",\"flatpickr-time-separator\",\":\"),n=m(\"flatpickr-hour\",{\"aria-label\":w.l10n.hourAriaLabel});w.hourElement=n.getElementsByTagName(\"input\")[0];var t=m(\"flatpickr-minute\",{\"aria-label\":w.l10n.minuteAriaLabel});if(w.minuteElement=t.getElementsByTagName(\"input\")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?w.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(w.config.defaultHour)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():w.config.defaultMinute),w.hourElement.setAttribute(\"step\",w.config.hourIncrement.toString()),w.minuteElement.setAttribute(\"step\",w.config.minuteIncrement.toString()),w.hourElement.setAttribute(\"min\",w.config.time_24hr?\"0\":\"1\"),w.hourElement.setAttribute(\"max\",w.config.time_24hr?\"23\":\"12\"),w.minuteElement.setAttribute(\"min\",\"0\"),w.minuteElement.setAttribute(\"max\",\"59\"),w.timeContainer.appendChild(n),w.timeContainer.appendChild(e),w.timeContainer.appendChild(t),w.config.time_24hr&&w.timeContainer.classList.add(\"time24hr\"),w.config.enableSeconds){w.timeContainer.classList.add(\"hasSeconds\");var a=m(\"flatpickr-second\");w.secondElement=a.getElementsByTagName(\"input\")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():w.config.defaultSeconds),w.secondElement.setAttribute(\"step\",w.minuteElement.getAttribute(\"step\")),w.secondElement.setAttribute(\"min\",\"0\"),w.secondElement.setAttribute(\"max\",\"59\"),w.timeContainer.appendChild(s(\"span\",\"flatpickr-time-separator\",\":\")),w.timeContainer.appendChild(a)}return w.config.time_24hr||(w.amPM=s(\"span\",\"flatpickr-am-pm\",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM)),w.timeContainer}()),d(w.calendarContainer,\"rangeMode\",\"range\"===w.config.mode),d(w.calendarContainer,\"animate\",!0===w.config.animate),d(w.calendarContainer,\"multiMonth\",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?\"inline\":\"static\"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=s(\"div\",\"flatpickr-wrapper\");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){if(w.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(n){return N(n,\"click\",w[e])}))})),w.isMobile)!function(){var e=w.config.enableTime?w.config.noCalendar?\"time\":\"datetime-local\":\"date\";w.mobileInput=s(\"input\",w.input.className+\" flatpickr-mobile\"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr)),w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,\"Y-m-d\")),w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,\"Y-m-d\")),w.input.getAttribute(\"step\")&&(w.mobileInput.step=String(w.input.getAttribute(\"step\"))),w.input.type=\"hidden\",void 0!==w.altInput&&(w.altInput.type=\"hidden\");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}N(w.mobileInput,\"change\",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),pe(\"onChange\"),pe(\"onClose\")}))}();else{var e=l(ie,50);if(w._debouncedChange=l(A,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&N(w.daysContainer,\"mouseover\",(function(e){\"range\"===w.config.mode&&ae(g(e))})),N(window.document.body,\"keydown\",te),w.config.inline||w.config.static||N(window,\"resize\",e),void 0!==window.ontouchstart?N(window.document,\"touchstart\",Z):N(window.document,\"click\",Z),N(window.document,\"focus\",Z,{capture:!0}),!0===w.config.clickOpens&&(N(w._input,\"focus\",w.open),N(w._input,\"click\",w.open)),void 0!==w.daysContainer&&(N(w.monthNav,\"click\",Ce),N(w.monthNav,[\"keyup\",\"increment\"],F),N(w.daysContainer,\"click\",ue)),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var n=function(e){return g(e).select()};N(w.timeContainer,[\"increment\"],T),N(w.timeContainer,\"blur\",T,{capture:!0}),N(w.timeContainer,\"click\",Y),N([w.hourElement,w.minuteElement],[\"focus\",\"click\"],n),void 0!==w.secondElement&&N(w.secondElement,\"focus\",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&N(w.amPM,\"click\",(function(e){T(e),A()}))}w.config.allowInput&&N(w._input,\"blur\",ne)}}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&S(w.config.noCalendar?w.latestSelectedDateObj||w.config.minDate:void 0),be(!1)),E();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&ce(),pe(\"onReady\")}(),w}function E(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;ithis.render()));const{start:s,end:l,value:r,step:o,title:n}=this.model.properties;this.on_change([s,l,r,o],(()=>{const{start:t,end:e,value:i,step:s}=this._calc_to();this.noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s})}));const{bar_color:a}=this.model.properties;this.on_change(a,(()=>{this._set_bar_color()}));const{show_value:d}=this.model.properties;this.on_change([r,n,d],(()=>this._update_title()))}styles(){return[...super.styles(),u.default,c.default]}_update_title(){var t;n.empty(this.title_el);const e=null==this.model.title||0==this.model.title.length&&!this.model.show_value;if(this.title_el.style.display=e?\"none\":\"\",!e&&(0!=(null===(t=this.model.title)||void 0===t?void 0:t.length)&&(this.title_el.textContent=`${this.model.title}: `),this.model.show_value)){const{value:t}=this._calc_to(),e=t.map((t=>this.model.pretty(t))).join(\" .. \");this.title_el.appendChild(n.span({class:m.slider_value},e))}}_set_bar_color(){if(!this.model.disabled){this.slider_el.querySelector(\".noUi-connect\").style.backgroundColor=d.color2css(this.model.bar_color)}}render(){super.render();const{start:t,end:e,value:i,step:s}=this._calc_to();let l;if(this.model.tooltips){const t={to:t=>this.model.pretty(t)};l=a.repeat(t,i.length)}else l=!1;if(null==this.slider_el){this.slider_el=n.div(),o.create(this.slider_el,{range:{min:t,max:e},start:i,step:s,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:l,orientation:this.model.orientation,direction:this.model.direction}),this.noUiSlider.on(\"slide\",((t,e,i)=>this._slide(i))),this.noUiSlider.on(\"change\",((t,e,i)=>this._change(i)));const r=(t,e)=>{if(!l)return;this.slider_el.querySelectorAll(\".noUi-handle\")[t].querySelector(\".noUi-tooltip\").style.display=e?\"block\":\"\"};this.noUiSlider.on(\"start\",((t,e)=>r(e,!0))),this.noUiSlider.on(\"end\",((t,e)=>r(e,!1)))}else this.noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s});this._set_bar_color(),this.model.disabled?this.slider_el.setAttribute(\"disabled\",\"true\"):this.slider_el.removeAttribute(\"disabled\"),this.title_el=n.div({class:m.slider_title}),this._update_title(),this.group_el=n.div({class:p.input_group},this.title_el,this.slider_el),this.el.appendChild(this.group_el)}_slide(t){this.model.value=this._calc_from(t)}_change(t){const e=this._calc_from(t);this.model.setv({value:e,value_throttled:e})}}b.__name__=\"AbstractBaseSliderView\";class v extends b{_calc_to(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}}_calc_from([t]){return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(t):t}}i.AbstractSliderView=v,v.__name__=\"AbstractSliderView\";class g extends b{_calc_to(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}}_calc_from(t){return t}}i.AbstractRangeSliderView=g,g.__name__=\"AbstractRangeSliderView\";class S extends _.Control{constructor(t){super(t),this.connected=!1}static init_AbstractSlider(){this.define((({Any:t,Boolean:e,Number:i,String:s,Color:l,Or:r,Enum:o,Ref:n,Nullable:a})=>({title:[a(s),\"\"],show_value:[e,!0],start:[t],end:[t],value:[t],value_throttled:[t],step:[i,1],format:[r(s,n(h.TickFormatter))],direction:[o(\"ltr\",\"rtl\"),\"ltr\"],tooltips:[e,!0],bar_color:[l,\"#e6e6e6\"]})))}pretty(t){return this._formatter(t,this.format)}}i.AbstractSlider=S,S.__name__=\"AbstractSlider\",S.init_AbstractSlider()},\n 439: function _(t,e,r,n,i){\n /*! nouislider - 14.6.3 - 11/19/2020 */\n var o;o=function(){\"use strict\";var t=\"14.6.3\";function e(t){t.parentElement.removeChild(t)}function r(t){return null!=t}function n(t){t.preventDefault()}function i(t){return\"number\"==typeof t&&!isNaN(t)&&isFinite(t)}function o(t,e,r){r>0&&(u(t,e),setTimeout((function(){c(t,e)}),r))}function s(t){return Math.max(Math.min(t,100),0)}function a(t){return Array.isArray(t)?t:[t]}function l(t){var e=(t=String(t)).split(\".\");return e.length>1?e[1].length:0}function u(t,e){t.classList&&!/\\s/.test(e)?t.classList.add(e):t.className+=\" \"+e}function c(t,e){t.classList&&!/\\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\b)\"+e.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function p(t){var e=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(t.compatMode||\"\");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function f(t,e){return 100/(e-t)}function d(t,e,r){return 100*e/(t[r+1]-t[r])}function h(t,e){for(var r=1;t>=e[r];)r+=1;return r}function m(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=h(r,t),i=t[n-1],o=t[n],s=e[n-1],a=e[n];return s+function(t,e){return d(t,t[0]<0?e+Math.abs(t[0]):e-t[0],0)}([i,o],r)/f(s,a)}function g(t,e,r,n){if(100===n)return n;var i=h(n,t),o=t[i-1],s=t[i];return r?n-o>(s-o)/2?s:o:e[i-1]?t[i-1]+function(t,e){return Math.round(t/e)*e}(n-t[i-1],e[i-1]):n}function v(t,e,r){var n;if(\"number\"==typeof e&&(e=[e]),!Array.isArray(e))throw new Error(\"noUiSlider (14.6.3): 'range' contains invalid value.\");if(!i(n=\"min\"===t?0:\"max\"===t?100:parseFloat(t))||!i(e[0]))throw new Error(\"noUiSlider (14.6.3): 'range' value isn't numeric.\");r.xPct.push(n),r.xVal.push(e[0]),n?r.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(r.xSteps[0]=e[1]),r.xHighestCompleteStep.push(0)}function b(t,e,r){if(e)if(r.xVal[t]!==r.xVal[t+1]){r.xSteps[t]=d([r.xVal[t],r.xVal[t+1]],e,0)/f(r.xPct[t],r.xPct[t+1]);var n=(r.xVal[t+1]-r.xVal[t])/r.xNumSteps[t],i=Math.ceil(Number(n.toFixed(3))-1),o=r.xVal[t]+r.xNumSteps[t]*i;r.xHighestCompleteStep[t]=o}else r.xSteps[t]=r.xHighestCompleteStep[t]=r.xVal[t]}function x(t,e,r){var n;this.xPct=[],this.xVal=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i=[];for(n in t)t.hasOwnProperty(n)&&i.push([t[n],n]);for(i.length&&\"object\"==typeof i[0][0]?i.sort((function(t,e){return t[0][0]-e[0][0]})):i.sort((function(t,e){return t[0]-e[0]})),n=0;nthis.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);r||t!==this.xPct[i+1]||i++;var o=1,s=e[i],a=0,l=0,u=0,c=0;for(n=r?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);s>0;)a=this.xPct[i+1+c]-this.xPct[i+c],e[i+c]*o+100-100*n>100?(l=a*n,o=(s-100*n)/e[i+c],n=1):(l=e[i+c]*a/100*o,o=0),r?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),s=e[i+c]*o;return t+u},x.prototype.toStepping=function(t){return t=m(this.xVal,this.xPct,t)},x.prototype.fromStepping=function(t){return function(t,e,r){if(r>=100)return t.slice(-1)[0];var n=h(r,e),i=t[n-1],o=t[n],s=e[n-1];return function(t,e){return e*(t[1]-t[0])/100+t[0]}([i,o],(r-s)*f(s,e[n]))}(this.xVal,this.xPct,t)},x.prototype.getStep=function(t){return t=g(this.xPct,this.xSteps,this.snap,t)},x.prototype.getDefaultStep=function(t,e,r){var n=h(t,this.xPct);return(100===t||e&&t===this.xPct[n-1])&&(n=Math.max(n-1,1)),(this.xVal[n]-this.xVal[n-1])/r},x.prototype.getNearbySteps=function(t){var e=h(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},x.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(l);return Math.max.apply(null,t)},x.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var S={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number},w={target:\"target\",base:\"base\",origin:\"origin\",handle:\"handle\",handleLower:\"handle-lower\",handleUpper:\"handle-upper\",touchArea:\"touch-area\",horizontal:\"horizontal\",vertical:\"vertical\",background:\"background\",connect:\"connect\",connects:\"connects\",ltr:\"ltr\",rtl:\"rtl\",textDirectionLtr:\"txt-dir-ltr\",textDirectionRtl:\"txt-dir-rtl\",draggable:\"draggable\",drag:\"state-drag\",tap:\"state-tap\",active:\"active\",tooltip:\"tooltip\",pips:\"pips\",pipsHorizontal:\"pips-horizontal\",pipsVertical:\"pips-vertical\",marker:\"marker\",markerHorizontal:\"marker-horizontal\",markerVertical:\"marker-vertical\",markerNormal:\"marker-normal\",markerLarge:\"marker-large\",markerSub:\"marker-sub\",value:\"value\",valueHorizontal:\"value-horizontal\",valueVertical:\"value-vertical\",valueNormal:\"value-normal\",valueLarge:\"value-large\",valueSub:\"value-sub\"},y=\".__tooltips\",E=\".__aria\";function C(t){if(function(t){return\"object\"==typeof t&&\"function\"==typeof t.to&&\"function\"==typeof t.from}(t))return!0;throw new Error(\"noUiSlider (14.6.3): 'format' requires 'to' and 'from' methods.\")}function P(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.3): 'step' is not numeric.\");t.singleStep=e}function N(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.3): 'keyboardPageMultiplier' is not numeric.\");t.keyboardPageMultiplier=e}function k(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.3): 'keyboardDefaultStep' is not numeric.\");t.keyboardDefaultStep=e}function U(t,e){if(\"object\"!=typeof e||Array.isArray(e))throw new Error(\"noUiSlider (14.6.3): 'range' is not an object.\");if(void 0===e.min||void 0===e.max)throw new Error(\"noUiSlider (14.6.3): Missing 'min' or 'max' in 'range'.\");if(e.min===e.max)throw new Error(\"noUiSlider (14.6.3): 'range' 'min' and 'max' cannot be equal.\");t.spectrum=new x(e,t.snap,t.singleStep)}function A(t,e){if(e=a(e),!Array.isArray(e)||!e.length)throw new Error(\"noUiSlider (14.6.3): 'start' option is incorrect.\");t.handles=e.length,t.start=e}function V(t,e){if(t.snap=e,\"boolean\"!=typeof e)throw new Error(\"noUiSlider (14.6.3): 'snap' option must be a boolean.\")}function D(t,e){if(t.animate=e,\"boolean\"!=typeof e)throw new Error(\"noUiSlider (14.6.3): 'animate' option must be a boolean.\")}function M(t,e){if(t.animationDuration=e,\"number\"!=typeof e)throw new Error(\"noUiSlider (14.6.3): 'animationDuration' option must be a number.\")}function O(t,e){var r,n=[!1];if(\"lower\"===e?e=[!0,!1]:\"upper\"===e&&(e=[!1,!0]),!0===e||!1===e){for(r=1;r1)throw new Error(\"noUiSlider (14.6.3): 'padding' option must not exceed 100% of the range.\")}}function F(t,e){switch(e){case\"ltr\":t.dir=0;break;case\"rtl\":t.dir=1;break;default:throw new Error(\"noUiSlider (14.6.3): 'direction' option was not recognized.\")}}function R(t,e){if(\"string\"!=typeof e)throw new Error(\"noUiSlider (14.6.3): 'behaviour' must be a string containing options.\");var r=e.indexOf(\"tap\")>=0,n=e.indexOf(\"drag\")>=0,i=e.indexOf(\"fixed\")>=0,o=e.indexOf(\"snap\")>=0,s=e.indexOf(\"hover\")>=0,a=e.indexOf(\"unconstrained\")>=0;if(i){if(2!==t.handles)throw new Error(\"noUiSlider (14.6.3): 'fixed' behaviour must be used with 2 handles\");z(t,t.start[1]-t.start[0])}if(a&&(t.margin||t.limit))throw new Error(\"noUiSlider (14.6.3): 'unconstrained' behaviour cannot be used with margin or limit\");t.events={tap:r||o,drag:n,fixed:i,snap:o,hover:s,unconstrained:a}}function T(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var r=0;r0&&((a=L(i,!1)).className=c(s,r.cssClasses.value),a.setAttribute(\"data-value\",o),a.style[r.style]=t+\"%\",a.innerHTML=n.to(o))}}(o,t[o][0],t[o][1])})),i}function q(){h&&(e(h),h=null)}function X(t){q();var e=t.mode,r=t.density||1,n=t.filter||!1,i=function(t,e,r){if(\"range\"===t||\"steps\"===t)return C.xVal;if(\"count\"===t){if(e<2)throw new Error(\"noUiSlider (14.6.3): 'values' (>= 2) required for mode 'count'.\");var n=e-1,i=100/n;for(e=[];n--;)e[n]=n*i;e.push(100),t=\"positions\"}return\"positions\"===t?e.map((function(t){return C.fromStepping(r?C.getStep(t):t)})):\"values\"===t?r?e.map((function(t){return C.fromStepping(C.getStep(C.toStepping(t)))})):e:void 0}(e,t.values||!1,t.stepped||!1),o=function(t,e,r){var n,i={},o=C.xVal[0],s=C.xVal[C.xVal.length-1],a=!1,l=!1,u=0;return n=r.slice().sort((function(t,e){return t-e})),(r=n.filter((function(t){return!this[t]&&(this[t]=!0)}),{}))[0]!==o&&(r.unshift(o),a=!0),r[r.length-1]!==s&&(r.push(s),l=!0),r.forEach((function(n,o){var s,c,p,f,d,h,m,g,v,b,x=n,S=r[o+1],w=\"steps\"===e;if(w&&(s=C.xNumSteps[o]),s||(s=S-x),!1!==x)for(void 0===S&&(S=x),s=Math.max(s,1e-7),c=x;c<=S;c=(c+s).toFixed(7)/1){for(g=(d=(f=C.toStepping(c))-u)/t,b=d/(v=Math.round(g)),p=1;p<=v;p+=1)i[(h=u+p*b).toFixed(5)]=[C.fromStepping(h),0];m=r.indexOf(c)>-1?1:w?2:0,!o&&a&&c!==S&&(m=0),c===S&&l||(i[f.toFixed(5)]=[c,m]),u=f}})),i}(r,e,i),s=t.format||{to:Math.round};return h=w.appendChild(B(o,n,s))}function Y(){var t=l.getBoundingClientRect(),e=\"offset\"+[\"Width\",\"Height\"][r.ort];return 0===r.ort?t.width||l[e]:t.height||l[e]}function I(t,e,n,i){var o=function(o){return!!(o=function(t,e,r){var n,i,o=0===t.type.indexOf(\"touch\"),s=0===t.type.indexOf(\"mouse\"),a=0===t.type.indexOf(\"pointer\");if(0===t.type.indexOf(\"MSPointer\")&&(a=!0),\"mousedown\"===t.type&&!t.buttons&&!t.touches)return!1;if(o){var l=function(t){return t.target===r||r.contains(t.target)||t.target.shadowRoot&&t.target.shadowRoot.contains(r)};if(\"touchstart\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(u.length>1)return!1;n=u[0].pageX,i=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;n=c.pageX,i=c.pageY}}return e=e||p(V),(s||a)&&(n=t.clientX+e.x,i=t.clientY+e.y),t.pageOffset=e,t.points=[n,i],t.cursor=s||a,t}(o,i.pageOffset,i.target||e))&&!(F()&&!i.doNotReject)&&(s=w,a=r.cssClasses.tap,!((s.classList?s.classList.contains(a):new RegExp(\"\\\\b\"+a+\"\\\\b\").test(s.className))&&!i.doNotReject)&&!(t===x.start&&void 0!==o.buttons&&o.buttons>1)&&(!i.hover||!o.buttons)&&(S||o.preventDefault(),o.calcPoint=o.points[r.ort],void n(o,i)));var s,a},s=[];return t.split(\" \").forEach((function(t){e.addEventListener(t,o,!!S&&{passive:!0}),s.push([t,o])})),s}function $(t){var e,n,i,o,a,u,c=100*(t-(e=l,n=r.ort,i=e.getBoundingClientRect(),o=e.ownerDocument,a=o.documentElement,u=p(o),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(u.x=0),n?i.top+u.y-a.clientTop:i.left+u.x-a.clientLeft))/Y();return c=s(c),r.dir?100-c:c}function G(t,e){\"mouseout\"===t.type&&\"HTML\"===t.target.nodeName&&null===t.relatedTarget&&K(t,e)}function J(t,e){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===t.buttons&&0!==e.buttonsProperty)return K(t,e);var n=(r.dir?-1:1)*(t.calcPoint-e.startCalcPoint);st(n>0,100*n/e.baseSize,e.locations,e.handleNumbers)}function K(t,e){e.handle&&(c(e.handle,r.cssClasses.active),U-=1),e.listeners.forEach((function(t){D.removeEventListener(t[0],t[1])})),0===U&&(c(w,r.cssClasses.drag),lt(),t.cursor&&(M.style.cursor=\"\",M.removeEventListener(\"selectstart\",n))),e.handleNumbers.forEach((function(t){nt(\"change\",t),nt(\"set\",t),nt(\"end\",t)}))}function Q(t,e){if(e.handleNumbers.some(R))return!1;var i;1===e.handleNumbers.length&&(i=f[e.handleNumbers[0]].children[0],U+=1,u(i,r.cssClasses.active)),t.stopPropagation();var o=[],s=I(x.move,D,J,{target:t.target,handle:i,listeners:o,startCalcPoint:t.calcPoint,baseSize:Y(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:N.slice()}),a=I(x.end,D,K,{target:t.target,handle:i,listeners:o,doNotReject:!0,handleNumbers:e.handleNumbers}),l=I(\"mouseout\",D,G,{target:t.target,handle:i,listeners:o,doNotReject:!0,handleNumbers:e.handleNumbers});o.push.apply(o,s.concat(a,l)),t.cursor&&(M.style.cursor=getComputedStyle(t.target).cursor,f.length>1&&u(w,r.cssClasses.drag),M.addEventListener(\"selectstart\",n,!1)),e.handleNumbers.forEach((function(t){nt(\"start\",t)}))}function Z(t){t.stopPropagation();var e=$(t.calcPoint),n=function(t){var e=100,r=!1;return f.forEach((function(n,i){if(!R(i)){var o=N[i],s=Math.abs(o-t);(so||100===s&&100===e)&&(r=i,e=s)}})),r}(e);if(!1===n)return!1;r.events.snap||o(w,r.cssClasses.tap,r.animationDuration),ut(n,e,!0,!0),lt(),nt(\"slide\",n,!0),nt(\"update\",n,!0),nt(\"change\",n,!0),nt(\"set\",n,!0),r.events.snap&&Q(t,{handleNumbers:[n]})}function tt(t){var e=$(t.calcPoint),r=C.getStep(e),n=C.fromStepping(r);Object.keys(A).forEach((function(t){\"hover\"===t.split(\".\")[0]&&A[t].forEach((function(t){t.call(g,n)}))}))}function et(t,e){A[t]=A[t]||[],A[t].push(e),\"update\"===t.split(\".\")[0]&&f.forEach((function(t,e){nt(\"update\",e)}))}function rt(t){var e=t&&t.split(\".\")[0],r=e?t.substring(e.length):t;Object.keys(A).forEach((function(t){var n=t.split(\".\")[0],i=t.substring(n.length);e&&e!==n||r&&r!==i||function(t){return t===E||t===y}(i)&&r!==i||delete A[t]}))}function nt(t,e,n){Object.keys(A).forEach((function(i){var o=i.split(\".\")[0];t===o&&A[i].forEach((function(t){t.call(g,P.map(r.format.to),e,P.slice(),n||!1,N.slice(),g)}))}))}function it(t,e,n,i,o,a){var l;return f.length>1&&!r.events.unconstrained&&(i&&e>0&&(l=C.getAbsoluteDistance(t[e-1],r.margin,0),n=Math.max(n,l)),o&&e1&&r.limit&&(i&&e>0&&(l=C.getAbsoluteDistance(t[e-1],r.limit,0),n=Math.min(n,l)),o&&e1?n.forEach((function(t,r){var n=it(i,t,i[t]+e,o[r],s[r],!1);!1===n?e=0:(e=n-i[t],i[t]=n)})):o=s=[!0];var a=!1;n.forEach((function(t,n){a=ut(t,r[t]+e,o[n],s[n])||a})),a&&n.forEach((function(t){nt(\"update\",t),nt(\"slide\",t)}))}function at(t,e){return r.dir?100-t-e:t}function lt(){k.forEach((function(t){var e=N[t]>50?-1:1,r=3+(f.length+e*t);f[t].style.zIndex=r}))}function ut(t,e,n,i,o){return o||(e=it(N,t,e,n,i,!1)),!1!==e&&(function(t,e){N[t]=e,P[t]=C.fromStepping(e);var n=\"translate(\"+ot(10*(at(e,0)-O)+\"%\",\"0\")+\")\";f[t].style[r.transformRule]=n,ct(t),ct(t+1)}(t,e),!0)}function ct(t){if(d[t]){var e=0,n=100;0!==t&&(e=N[t-1]),t!==d.length-1&&(n=N[t]);var i=n-e,o=\"translate(\"+ot(at(e,i)+\"%\",\"0\")+\")\",s=\"scale(\"+ot(i/100,\"1\")+\")\";d[t].style[r.transformRule]=o+\" \"+s}}function pt(t,e){return null===t||!1===t||void 0===t?N[e]:(\"number\"==typeof t&&(t=String(t)),t=r.format.from(t),!1===(t=C.toStepping(t))||isNaN(t)?N[e]:t)}function ft(t,e,n){var i=a(t),s=void 0===N[0];e=void 0===e||!!e,r.animate&&!s&&o(w,r.cssClasses.tap,r.animationDuration),k.forEach((function(t){ut(t,pt(i[t],t),!0,!1,n)}));for(var l=1===k.length?0:1;ln.stepAfter.startValue&&(o=n.stepAfter.startValue-i),s=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===e?o=null:0===e&&(s=null);var a=C.countStepDecimals();return null!==o&&!1!==o&&(o=Number(o.toFixed(a))),null!==s&&!1!==s&&(s=Number(s.toFixed(a))),[s,o]}return u(v=w,r.cssClasses.target),0===r.dir?u(v,r.cssClasses.ltr):u(v,r.cssClasses.rtl),0===r.ort?u(v,r.cssClasses.horizontal):u(v,r.cssClasses.vertical),u(v,\"rtl\"===getComputedStyle(v).direction?r.cssClasses.textDirectionRtl:r.cssClasses.textDirectionLtr),l=L(v,r.cssClasses.base),function(t,e){var n=L(e,r.cssClasses.connects);f=[],(d=[]).push(H(n,t[0]));for(var i=0;i=0&&t .noUi-tooltip{-webkit-transform:translate(50%, 0);transform:translate(50%, 0);left:auto;bottom:10px;}.bk-root .noUi-vertical .noUi-origin > .noUi-tooltip{-webkit-transform:translate(0, -18px);transform:translate(0, -18px);top:auto;right:28px;}.bk-root .noUi-handle{cursor:grab;cursor:-webkit-grab;}.bk-root .noUi-handle.noUi-active{cursor:grabbing;cursor:-webkit-grabbing;}.bk-root .noUi-handle:after,.bk-root .noUi-handle:before{display:none;}.bk-root .noUi-tooltip{display:none;white-space:nowrap;}.bk-root .noUi-handle:hover .noUi-tooltip{display:block;}.bk-root .noUi-horizontal{width:100%;height:10px;}.bk-root .noUi-vertical{width:10px;height:100%;}.bk-root .noUi-horizontal .noUi-handle{width:14px;height:18px;right:-7px;top:-5px;}.bk-root .noUi-vertical .noUi-handle{width:18px;height:14px;right:-5px;top:-7px;}.bk-root .noUi-target.noUi-horizontal{margin:5px 0px;}.bk-root .noUi-target.noUi-vertical{margin:0px 5px;}'},\n 442: function _(t,e,i,r,a){r();const s=t(1).__importDefault(t(181)),d=t(438),_=t(8);class n extends d.AbstractSliderView{}i.DateSliderView=n,n.__name__=\"DateSliderView\";class l extends d.AbstractSlider{constructor(t){super(t),this.behaviour=\"tap\",this.connected=[!0,!1]}static init_DateSlider(){this.prototype.default_view=n,this.override({format:\"%d %b %Y\"})}_formatter(t,e){return _.isString(e)?s.default(t,e):e.compute(t)}}i.DateSlider=l,l.__name__=\"DateSlider\",l.init_DateSlider()},\n 443: function _(e,t,i,n,s){n();const r=e(444);class _ extends r.MarkupView{render(){super.render(),this.model.render_as_text?this.markup_el.textContent=this.model.text:this.markup_el.innerHTML=this.model.text}}i.DivView=_,_.__name__=\"DivView\";class a extends r.Markup{constructor(e){super(e)}static init_Div(){this.prototype.default_view=_,this.define((({Boolean:e})=>({render_as_text:[e,!1]})))}}i.Div=a,a.__name__=\"Div\",a.init_Div()},\n 444: function _(t,e,s,i,a){i();const n=t(1),l=t(224),r=t(43),c=t(488),u=n.__importStar(t(445));class _ extends c.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>{this.layout.invalidate_cache(),this.render(),this.root.compute_layout()}))}styles(){return[...super.styles(),u.default]}_update_layout(){this.layout=new l.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render();const t=Object.assign(Object.assign({},this.model.style),{display:\"inline-block\"});this.markup_el=r.div({class:u.clearfix,style:t}),this.el.appendChild(this.markup_el)}}s.MarkupView=_,_.__name__=\"MarkupView\";class o extends c.Widget{constructor(t){super(t)}static init_Markup(){this.define((({String:t,Dict:e})=>({text:[t,\"\"],style:[e(t),{}]})))}}s.Markup=o,o.__name__=\"Markup\",o.init_Markup()},\n 445: function _(o,r,e,t,a){t(),e.root=\"bk-root\",e.clearfix=\"bk-clearfix\",e.default='.bk-root .bk-clearfix:before,.bk-root .bk-clearfix:after{content:\"\";display:table;}.bk-root .bk-clearfix:after{clear:both;}'},\n 446: function _(e,t,i,n,s){n();const o=e(1),r=e(419),l=e(264),d=e(43),_=e(8),u=o.__importStar(e(328)),c=o.__importStar(e(243)),h=c;class p extends r.AbstractButtonView{constructor(){super(...arguments),this._open=!1}styles(){return[...super.styles(),c.default]}render(){super.render();const e=d.div({class:[h.caret,h.down]});if(this.model.is_split){const t=this._render_button(e);t.classList.add(u.dropdown_toggle),t.addEventListener(\"click\",(()=>this._toggle_menu())),this.group_el.appendChild(t)}else this.button_el.appendChild(e);const t=this.model.menu.map(((e,t)=>{if(null==e)return d.div({class:h.divider});{const i=_.isString(e)?e:e[0],n=d.div({},i);return n.addEventListener(\"click\",(()=>this._item_click(t))),n}}));this.menu=d.div({class:[h.menu,h.below]},t),this.el.appendChild(this.menu),d.undisplay(this.menu)}_show_menu(){if(!this._open){this._open=!0,d.display(this.menu);const e=t=>{const{target:i}=t;i instanceof HTMLElement&&!this.el.contains(i)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,d.undisplay(this.menu))}_toggle_menu(){this._open?this._hide_menu():this._show_menu()}click(){this.model.is_split?(this._hide_menu(),this.model.trigger_event(new l.ButtonClick),super.click()):this._toggle_menu()}_item_click(e){this._hide_menu();const t=this.model.menu[e];if(null!=t){const i=_.isString(t)?t:t[1];_.isString(i)?this.model.trigger_event(new l.MenuItemClick(i)):i.execute(this.model,{index:e})}}}i.DropdownView=p,p.__name__=\"DropdownView\";class m extends r.AbstractButton{constructor(e){super(e)}static init_Dropdown(){this.prototype.default_view=p,this.define((({Null:e,Boolean:t,String:i,Array:n,Tuple:s,Or:o})=>({split:[t,!1],menu:[n(o(i,s(i,o(i)),e)),[]]}))),this.override({label:\"Dropdown\"})}get is_split(){return this.split}}i.Dropdown=m,m.__name__=\"Dropdown\",m.init_Dropdown()},\n 447: function _(e,i,l,t,s){t();const n=e(43),a=e(488);class o extends a.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}render(){const{multiple:e,accept:i,disabled:l,width:t}=this.model;null==this.dialog_el&&(this.dialog_el=n.input({type:\"file\",multiple:e}),this.dialog_el.onchange=()=>{const{files:e}=this.dialog_el;null!=e&&this.load_files(e)},this.el.appendChild(this.dialog_el)),null!=i&&\"\"!=i&&(this.dialog_el.accept=i),this.dialog_el.style.width=`${t}px`,this.dialog_el.disabled=l}async load_files(e){const i=[],l=[],t=[];for(const s of e){const e=await this._read_file(s),[,n=\"\",,a=\"\"]=e.split(/[:;,]/,4);i.push(a),l.push(s.name),t.push(n)}this.model.multiple?(this.model.value=i,this.model.filename=l,this.model.mime_type=t):(this.model.value=i[0],this.model.filename=l[0],this.model.mime_type=t[0])}_read_file(e){return new Promise(((i,l)=>{const t=new FileReader;t.onload=()=>{var s;const{result:n}=t;null!=n?i(n):l(null!==(s=t.error)&&void 0!==s?s:new Error(`unable to read '${e.name}'`))},t.readAsDataURL(e)}))}}l.FileInputView=o,o.__name__=\"FileInputView\";class d extends a.Widget{constructor(e){super(e)}static init_FileInput(){this.prototype.default_view=o,this.define((({Boolean:e,String:i,Array:l,Or:t})=>({value:[t(i,l(i)),\"\"],mime_type:[t(i,l(i)),\"\"],filename:[t(i,l(i)),\"\"],accept:[i,\"\"],multiple:[e,!1]})))}}l.FileInput=d,d.__name__=\"FileInput\",d.init_FileInput()},\n 448: function _(e,t,i,s,n){s();const l=e(1),o=e(43),r=e(8),c=e(426),h=l.__importStar(e(427));class p extends c.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.value.change,(()=>this.render_selection())),this.connect(this.model.properties.options.change,(()=>this.render())),this.connect(this.model.properties.name.change,(()=>this.render())),this.connect(this.model.properties.title.change,(()=>this.render())),this.connect(this.model.properties.size.change,(()=>this.render())),this.connect(this.model.properties.disabled.change,(()=>this.render()))}render(){super.render();const e=this.model.options.map((e=>{let t,i;return r.isString(e)?t=i=e:[t,i]=e,o.option({value:t},i)}));this.input_el=o.select({multiple:!0,class:h.input,name:this.model.name,disabled:this.model.disabled},e),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el),this.render_selection()}render_selection(){const e=new Set(this.model.value);for(const t of this.el.querySelectorAll(\"option\"))t.selected=e.has(t.value);this.input_el.size=this.model.size}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.input_el.focus()}}i.MultiSelectView=p,p.__name__=\"MultiSelectView\";class u extends c.InputWidget{constructor(e){super(e)}static init_MultiSelect(){this.prototype.default_view=p,this.define((({Int:e,String:t,Array:i,Tuple:s,Or:n})=>({value:[i(t),[]],options:[i(n(t,s(t,t))),[]],size:[e,4]})))}}i.MultiSelect=u,u.__name__=\"MultiSelect\",u.init_MultiSelect()},\n 449: function _(a,r,e,t,p){t();const s=a(444),i=a(43);class n extends s.MarkupView{render(){super.render();const a=i.p({style:{margin:0}},this.model.text);this.markup_el.appendChild(a)}}e.ParagraphView=n,n.__name__=\"ParagraphView\";class _ extends s.Markup{constructor(a){super(a)}static init_Paragraph(){this.prototype.default_view=n}}e.Paragraph=_,_.__name__=\"Paragraph\",_.init_Paragraph()},\n 450: function _(s,t,e,n,r){n();const p=s(424);class u extends p.TextInputView{render(){super.render(),this.input_el.type=\"password\"}}e.PasswordInputView=u,u.__name__=\"PasswordInputView\";class a extends p.TextInput{constructor(s){super(s)}static init_PasswordInput(){this.prototype.default_view=u}}e.PasswordInput=a,a.__name__=\"PasswordInput\",a.init_PasswordInput()},\n 451: function _(e,t,i,l,s){l();const o=e(1),n=o.__importDefault(e(452)),h=e(43),a=e(8),u=e(224),c=o.__importStar(e(427)),d=o.__importDefault(e(453)),_=e(426);class r extends _.InputWidgetView{constructor(){super(...arguments),this._last_height=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled.change,(()=>this.set_disabled()));const{value:e,max_items:t,option_limit:i,delete_button:l,placeholder:s,options:o,name:n,title:h}=this.model.properties;this.on_change([e,t,i,l,s,o,n,h],(()=>this.render()))}styles(){return[...super.styles(),d.default]}_update_layout(){this.layout=new u.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render(),this.input_el=h.select({multiple:!0,class:c.input,name:this.model.name,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el);const e=new Set(this.model.value),t=this.model.options.map((t=>{let i,l;return a.isString(t)?i=l=t:[i,l]=t,{value:i,label:l,selected:e.has(i)}})),i=this.model.solid?\"solid\":\"light\",l=`choices__item ${i}`,s=`choices__button ${i}`,o={choices:t,duplicateItemsAllowed:!1,removeItemButton:this.model.delete_button,classNames:{item:l,button:s}};null!=this.model.placeholder&&(o.placeholderValue=this.model.placeholder),null!=this.model.max_items&&(o.maxItemCount=this.model.max_items),null!=this.model.option_limit&&(o.renderChoiceLimit=this.model.option_limit),this.choice_el=new n.default(this.input_el,o);const u=()=>this.choice_el.containerOuter.element.getBoundingClientRect().height;null!=this._last_height&&this._last_height!=u()&&this.root.invalidate_layout(),this._last_height=u(),this.input_el.addEventListener(\"change\",(()=>this.change_input()))}set_disabled(){this.model.disabled?this.choice_el.disable():this.choice_el.enable()}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.input_el.focus()}}i.MultiChoiceView=r,r.__name__=\"MultiChoiceView\";class m extends _.InputWidget{constructor(e){super(e)}static init_MultiChoice(){this.prototype.default_view=r,this.define((({Boolean:e,Int:t,String:i,Array:l,Tuple:s,Or:o,Nullable:n})=>({value:[l(i),[]],options:[l(o(i,s(i,i))),[]],max_items:[n(t),null],delete_button:[e,!0],placeholder:[n(i),null],option_limit:[n(t),null],solid:[e,!0]})))}}i.MultiChoice=m,m.__name__=\"MultiChoice\",m.init_MultiChoice()},\n 452: function _(e,t,i,n,s){\n /*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n var r,o;r=window,o=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"/public/assets/scripts/\",i(i.s=4)}([function(e,t,i){\"use strict\";var n=function(e){return function(e){return!!e&&\"object\"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(e){return e.$$typeof===s}(e)}(e)},s=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function o(e,t,i){return e.concat(t).map((function(e){return r(e,i)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function c(e,t,i){var n={};return i.isMergeableObject(e)&&a(e).forEach((function(t){n[t]=r(e[t],i)})),a(t).forEach((function(s){(function(e,t){try{return t in e&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}catch(e){return!1}})(e,s)||(i.isMergeableObject(t[s])&&e[s]?n[s]=function(e,t){if(!t.customMerge)return l;var i=t.customMerge(e);return\"function\"==typeof i?i:l}(s,i)(e[s],t[s],i):n[s]=r(t[s],i))})),n}function l(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||o,i.isMergeableObject=i.isMergeableObject||n,i.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(t);return s===Array.isArray(e)?s?i.arrayMerge(e,t,i):c(e,t,i):r(t,i)}l.all=function(e,t){if(!Array.isArray(e))throw new Error(\"first argument should be an array\");return e.reduce((function(e,i){return l(e,i,t)}),{})};var h=l;e.exports=h},function(e,t,i){\"use strict\";(function(e,n){var s,r=i(3);s=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==e?e:n;var o=Object(r.a)(s);t.a=o}).call(this,i(5),i(6)(e))},function(e,t,i){\n /*!\n * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}},function(e,t,i){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function s(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\\nSearch pattern: \"'.concat(e,'\"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,s=i.fullSearcher,r=this._search(n,s),o=r.weights,a=r.results;return this._computeScore(o,a),this.options.shouldSort&&this._sort(a),t.limit&&\"number\"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:\"_prepareSearchers\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,s=i.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},s=[];if(\"string\"==typeof i[0]){for(var r=0,o=i.length;r1)throw new Error(\"Key weight has to be > 0 and <= 1\");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(h,p),record:h,index:c},{resultMap:n,results:s,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:s}}},{key:\"_analyze\",value:function(e,t){var i=e.key,n=e.arrayIndex,s=void 0===n?-1:n,r=e.value,o=e.record,c=e.index,l=t.tokenSearchers,h=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,p=t.resultMap,m=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=r){var g=!1,_=-1,b=0;if(\"string\"==typeof r){this._log(\"\\nKey: \".concat(\"\"===i?\"-\":i));var y=d.search(r);if(this._log('Full text: \"'.concat(r,'\", score: ').concat(y.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),I=[],S=0;S-1&&(P=(P+_)/2),this._log(\"Score average:\",P);var D=!this.options.tokenize||!this.options.matchAllTokens||b>=h.length;if(this._log(\"\\nCheck Matches: \".concat(D)),(g||y.isMatch)&&D){var M=m[c];M?M.output.push({key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}):(m[c]={item:o,output:[{key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}]},v.push(m[c]))}}else if(a(r))for(var N=0,F=r.length;N-1&&(o.arrayIndex=r.arrayIndex),t.matches.push(o)}}})),this.options.includeScore&&s.push((function(e,t){t.score=e.score}));for(var r=0,o=e.length;ri)return s(e,this.pattern,n);var o=this.options,a=o.location,c=o.distance,l=o.threshold,h=o.findAllMatches,u=o.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:h,minMatchCharLength:u})}}])&&n(t.prototype,i),a&&n(t,a),e}();e.exports=a},function(e,t){var i=/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,s=new RegExp(t.replace(i,\"\\\\$&\").replace(n,\"|\")),r=e.match(s),o=!!r,a=[];if(o)for(var c=0,l=r.length;c=P;N-=1){var F=N-1,j=i[e.charAt(F)];if(j&&(E[F]=1),M[N]=(M[N+1]<<1|1)&j,0!==T&&(M[N]|=(O[N+1]|O[N])<<1|1|O[N+1]),M[N]&L&&(C=n(t,{errors:T,currentLocation:F,expectedLocation:v,distance:l}))<=_){if(_=C,(b=F)<=v)break;P=Math.max(1,2*v-b)}}if(n(t,{errors:T+1,currentLocation:v,expectedLocation:v,distance:l})>_)break;O=M}return{isMatch:b>=0,score:0===C?.001:C,matchedIndices:s(E,f)}}},function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,s=t.currentLocation,r=void 0===s?0:s,o=t.expectedLocation,a=void 0===o?0:o,c=t.distance,l=void 0===c?100:c,h=n/e.length,u=Math.abs(a-r);return l?h+u/l:u?1:h}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,s=-1,r=0,o=e.length;r=t&&i.push([n,s]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n/g,\"&rt;\").replace(/-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i})):e;case\"REMOVE_ITEM\":return t.choiceId>-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i})):e;case\"FILTER_CHOICES\":return e.map((function(e){var i=e;return i.active=t.results.some((function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)})),i}));case\"ACTIVATE_CHOICES\":return e.map((function(e){var i=e;return i.active=t.active,i}));case\"CLEAR_CHOICES\":return v;default:return e}},general:_}),A=function(e,t){var i=e;if(\"CLEAR_ALL\"===t.type)i=void 0;else if(\"RESET_TO\"===t.type)return O(t.state);return C(i,t)};function L(e,t){for(var i=0;i\"'+I(e)+'\"'},maxItemText:function(e){return\"Only \"+e+\" values can be added\"},valueComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:{containerOuter:\"choices\",containerInner:\"choices__inner\",input:\"choices__input\",inputCloned:\"choices__input--cloned\",list:\"choices__list\",listItems:\"choices__list--multiple\",listSingle:\"choices__list--single\",listDropdown:\"choices__list--dropdown\",item:\"choices__item\",itemSelectable:\"choices__item--selectable\",itemDisabled:\"choices__item--disabled\",itemChoice:\"choices__item--choice\",placeholder:\"choices__placeholder\",group:\"choices__group\",groupHeading:\"choices__heading\",button:\"choices__button\",activeState:\"is-active\",focusState:\"is-focused\",openState:\"is-open\",disabledState:\"is-disabled\",highlightedState:\"is-highlighted\",selectedState:\"is-selected\",flippedState:\"is-flipped\",loadingState:\"is-loading\",noResults:\"has-no-results\",noChoices:\"has-no-choices\"}},D=\"showDropdown\",M=\"hideDropdown\",N=\"change\",F=\"choice\",j=\"search\",K=\"addItem\",R=\"removeItem\",H=\"highlightItem\",B=\"highlightChoice\",V=\"ADD_CHOICE\",G=\"FILTER_CHOICES\",q=\"ACTIVATE_CHOICES\",U=\"CLEAR_CHOICES\",z=\"ADD_GROUP\",W=\"ADD_ITEM\",X=\"REMOVE_ITEM\",$=\"HIGHLIGHT_ITEM\",J=46,Y=8,Z=13,Q=65,ee=27,te=38,ie=40,ne=33,se=34,re=\"text\",oe=\"select-one\",ae=\"select-multiple\",ce=function(){function e(e){var t=e.element,i=e.type,n=e.classNames,s=e.position;this.element=t,this.classNames=n,this.type=i,this.position=s,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t=e.prototype;return t.addEventListeners=function(){this.element.addEventListener(\"focus\",this._onFocus),this.element.addEventListener(\"blur\",this._onBlur)},t.removeEventListeners=function(){this.element.removeEventListener(\"focus\",this._onFocus),this.element.removeEventListener(\"blur\",this._onBlur)},t.shouldFlip=function(e){if(\"number\"!=typeof e)return!1;var t=!1;return\"auto\"===this.position?t=!window.matchMedia(\"(min-height: \"+(e+1)+\"px)\").matches:\"top\"===this.position&&(t=!0),t},t.setActiveDescendant=function(e){this.element.setAttribute(\"aria-activedescendant\",e)},t.removeActiveDescendant=function(){this.element.removeAttribute(\"aria-activedescendant\")},t.open=function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"true\"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},t.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"false\"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},t.focus=function(){this.isFocussed||this.element.focus()},t.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},t.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},t.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute(\"aria-disabled\"),this.type===oe&&this.element.setAttribute(\"tabindex\",\"0\"),this.isDisabled=!1},t.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute(\"aria-disabled\",\"true\"),this.type===oe&&this.element.setAttribute(\"tabindex\",\"-1\"),this.isDisabled=!0},t.wrap=function(e){!function(e,t){void 0===t&&(t=document.createElement(\"div\")),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)}(e,this.element)},t.unwrap=function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)},t.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute(\"aria-busy\",\"true\"),this.isLoading=!0},t.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute(\"aria-busy\"),this.isLoading=!1},t._onFocus=function(){this.isFocussed=!0},t._onBlur=function(){this.isFocussed=!1},e}();function le(e,t){for(var i=0;i0?this.element.scrollTop+o-s:e.offsetTop;requestAnimationFrame((function(){i._animateScroll(a,t)}))}},t._scrollDown=function(e,t,i){var n=(i-e)/t,s=n>1?n:1;this.element.scrollTop=e+s},t._scrollUp=function(e,t,i){var n=(e-i)/t,s=n>1?n:1;this.element.scrollTop=e-s},t._animateScroll=function(e,t){var i=this,n=this.element.scrollTop,s=!1;t>0?(this._scrollDown(n,4,e),ne&&(s=!0)),s&&requestAnimationFrame((function(){i._animateScroll(e,t)}))},e}();function de(e,t){for(var i=0;i0?\"treeitem\":\"option\"),Object.assign(g.dataset,{choice:\"\",id:l,value:h,selectText:i}),m?(g.classList.add(a),g.dataset.choiceDisabled=\"\",g.setAttribute(\"aria-disabled\",\"true\")):(g.classList.add(r),g.dataset.choiceSelectable=\"\"),g},input:function(e,t){var i=e.input,n=e.inputCloned,s=Object.assign(document.createElement(\"input\"),{type:\"text\",className:i+\" \"+n,autocomplete:\"off\",autocapitalize:\"off\",spellcheck:!1});return s.setAttribute(\"role\",\"textbox\"),s.setAttribute(\"aria-autocomplete\",\"list\"),s.setAttribute(\"aria-label\",t),s},dropdown:function(e){var t=e.list,i=e.listDropdown,n=document.createElement(\"div\");return n.classList.add(t,i),n.setAttribute(\"aria-expanded\",\"false\"),n},notice:function(e,t,i){var n=e.item,s=e.itemChoice,r=e.noResults,o=e.noChoices;void 0===i&&(i=\"\");var a=[n,s];return\"no-choices\"===i?a.push(o):\"no-results\"===i&&a.push(r),Object.assign(document.createElement(\"div\"),{innerHTML:t,className:a.join(\" \")})},option:function(e){var t=e.label,i=e.value,n=e.customProperties,s=e.active,r=e.disabled,o=new Option(t,i,!1,s);return n&&(o.dataset.customProperties=n),o.disabled=r,o}},be=function(e){return void 0===e&&(e=!0),{type:q,active:e}},ye=function(e,t){return{type:$,id:e,highlighted:t}},Ee=function(e){var t=e.value,i=e.id,n=e.active,s=e.disabled;return{type:z,value:t,id:i,active:n,disabled:s}},Ie=function(e){return{type:\"SET_IS_LOADING\",isLoading:e}};function Se(e,t){for(var i=0;i=0?this._store.getGroupById(s):null;return this._store.dispatch(ye(i,!0)),t&&this.passedElement.triggerEvent(H,{id:i,value:o,label:c,groupValue:l&&l.value?l.value:null}),this},r.unhighlightItem=function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,s=e.value,r=void 0===s?\"\":s,o=e.label,a=void 0===o?\"\":o,c=n>=0?this._store.getGroupById(n):null;return this._store.dispatch(ye(t,!1)),this.passedElement.triggerEvent(H,{id:t,value:r,label:a,groupValue:c&&c.value?c.value:null}),this},r.highlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.highlightItem(t)})),this},r.unhighlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.unhighlightItem(t)})),this},r.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.value===e})).forEach((function(e){return t._removeItem(e)})),this},r.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.id!==e})).forEach((function(e){return t._removeItem(e)})),this},r.removeHighlightedItems=function(e){var t=this;return void 0===e&&(e=!1),this._store.highlightedActiveItems.forEach((function(i){t._removeItem(i),e&&t._triggerChange(i.value)})),this},r.showDropdown=function(e){var t=this;return this.dropdown.isActive||requestAnimationFrame((function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(D,{})})),this},r.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame((function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(M,{})})),this):this},r.getValue=function(e){void 0===e&&(e=!1);var t=this._store.activeItems.reduce((function(t,i){var n=e?i.value:i;return t.push(n),t}),[]);return this._isSelectOneElement?t[0]:t},r.setValue=function(e){var t=this;return this.initialised?(e.forEach((function(e){return t._setChoiceOrItem(e)})),this):this},r.setChoiceByValue=function(e){var t=this;return!this.initialised||this._isTextElement||(Array.isArray(e)?e:[e]).forEach((function(e){return t._findAndSelectChoiceByValue(e)})),this},r.setChoices=function(e,t,i,n){var s=this;if(void 0===e&&(e=[]),void 0===t&&(t=\"value\"),void 0===i&&(i=\"label\"),void 0===n&&(n=!1),!this.initialised)throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");if(!this._isSelectElement)throw new TypeError(\"setChoices can't be used with INPUT based Choices\");if(\"string\"!=typeof t||!t)throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");if(n&&this.clearChoices(),\"function\"==typeof e){var r=e(this);if(\"function\"==typeof Promise&&r instanceof Promise)return new Promise((function(e){return requestAnimationFrame(e)})).then((function(){return s._handleLoadingState(!0)})).then((function(){return r})).then((function(e){return s.setChoices(e,t,i,n)})).catch((function(e){s.config.silent||console.error(e)})).then((function(){return s._handleLoadingState(!1)})).then((function(){return s}));if(!Array.isArray(r))throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \"+typeof r);return this.setChoices(r,t,i,!1)}if(!Array.isArray(e))throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach((function(e){e.choices?s._addGroup({id:parseInt(e.id,10)||null,group:e,valueKey:t,labelKey:i}):s._addChoice({value:e[t],label:e[i],isSelected:e.selected,isDisabled:e.disabled,customProperties:e.customProperties,placeholder:e.placeholder})})),this._stopLoading(),this},r.clearChoices=function(){return this._store.dispatch({type:U}),this},r.clearStore=function(){return this._store.dispatch({type:\"CLEAR_ALL\"}),this},r.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(be(!0))),this},r._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}},r._renderChoices=function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,s=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame((function(){return e.choiceList.scrollToTop()})),i.length>=1&&!this._isSearching){var r=n.filter((function(e){return!0===e.placeholder&&-1===e.groupId}));r.length>=1&&(s=this._createChoicesFragment(r,s)),s=this._createGroupsFragment(i,n,s)}else n.length>=1&&(s=this._createChoicesFragment(n,s));if(s.childNodes&&s.childNodes.length>0){var o=this._store.activeItems,a=this._canAddItem(o,this.input.value);a.response?(this.choiceList.append(s),this._highlightChoice()):this.choiceList.append(this._getTemplate(\"notice\",a.notice))}else{var c,l;this._isSearching?(l=\"function\"==typeof this.config.noResultsText?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate(\"notice\",l,\"no-results\")):(l=\"function\"==typeof this.config.noChoicesText?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate(\"notice\",l,\"no-choices\")),this.choiceList.append(c)}},r._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},r._createGroupsFragment=function(e,t,i){var n=this;return void 0===i&&(i=document.createDocumentFragment()),this.config.shouldSort&&e.sort(this.config.sorter),e.forEach((function(e){var s=function(e){return t.filter((function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&(\"always\"===n.config.renderSelectedChoices||!t.selected)}))}(e);if(s.length>=1){var r=n._getTemplate(\"choiceGroup\",e);i.appendChild(r),n._createChoicesFragment(s,i,!0)}})),i},r._createChoicesFragment=function(e,t,i){var n=this;void 0===t&&(t=document.createDocumentFragment()),void 0===i&&(i=!1);var s=this.config,r=s.renderSelectedChoices,o=s.searchResultLimit,a=s.renderChoiceLimit,c=this._isSearching?w:this.config.sorter,l=function(e){if(\"auto\"!==r||n._isSelectOneElement||!e.selected){var i=n._getTemplate(\"choice\",e,n.config.itemSelectText);t.appendChild(i)}},h=e;\"auto\"!==r||this._isSelectOneElement||(h=e.filter((function(e){return!e.selected})));var u=h.reduce((function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e}),{placeholderChoices:[],normalChoices:[]}),d=u.placeholderChoices,p=u.normalChoices;(this.config.shouldSort||this._isSearching)&&p.sort(c);var m=h.length,f=this._isSelectOneElement?[].concat(d,p):p;this._isSearching?m=o:a&&a>0&&!i&&(m=a);for(var v=0;v=n){var o=s?this._searchChoices(e):0;this.passedElement.triggerEvent(j,{value:e,resultCount:o})}else r&&(this._isSearching=!1,this._store.dispatch(be(!0)))}},r._canAddItem=function(e,t){var i=!0,n=\"function\"==typeof this.config.addItemText?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var s=function(e,t,i){return void 0===i&&(i=\"value\"),e.some((function(e){return\"string\"==typeof t?e[i]===t.trim():e[i]===t}))}(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=\"function\"==typeof this.config.maxItemText?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&s&&i&&(i=!1,n=\"function\"==typeof this.config.uniqueItemText?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&\"function\"==typeof this.config.addItemFilter&&!this.config.addItemFilter(t)&&(i=!1,n=\"function\"==typeof this.config.customAddItemText?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}},r._searchChoices=function(e){var t=\"string\"==typeof e?e.trim():e,i=\"string\"==typeof this._currentValue?this._currentValue.trim():this._currentValue;if(t.length<1&&t===i+\" \")return 0;var n=this._store.searchableChoices,r=t,o=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:o}),c=new s.a(n,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(function(e){return{type:G,results:e}}(c)),c.length},r._addEventListeners=function(){var e=document.documentElement;e.addEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.addEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.addEventListener(\"mousedown\",this._onMouseDown,!0),e.addEventListener(\"click\",this._onClick,{passive:!0}),e.addEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener(\"mouseover\",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener(\"blur\",this._onBlur,{passive:!0})),this.input.element.addEventListener(\"keyup\",this._onKeyUp,{passive:!0}),this.input.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.input.element.addEventListener(\"blur\",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener(\"reset\",this._onFormReset,{passive:!0}),this.input.addEventListeners()},r._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.removeEventListener(\"mousedown\",this._onMouseDown,!0),e.removeEventListener(\"click\",this._onClick),e.removeEventListener(\"touchmove\",this._onTouchMove),this.dropdown.element.removeEventListener(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener(\"focus\",this._onFocus),this.containerOuter.element.removeEventListener(\"blur\",this._onBlur)),this.input.element.removeEventListener(\"keyup\",this._onKeyUp),this.input.element.removeEventListener(\"focus\",this._onFocus),this.input.element.removeEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener(\"reset\",this._onFormReset),this.input.removeEventListeners()},r._onKeyDown=function(e){var t,i=e.target,n=e.keyCode,s=e.ctrlKey,r=e.metaKey,o=this._store.activeItems,a=this.input.isFocussed,c=this.dropdown.isActive,l=this.itemList.hasChildren(),h=String.fromCharCode(n),u=J,d=Y,p=Z,m=Q,f=ee,v=te,g=ie,_=ne,b=se,y=s||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var E=((t={})[m]=this._onAKey,t[p]=this._onEnterKey,t[f]=this._onEscapeKey,t[v]=this._onDirectionKey,t[_]=this._onDirectionKey,t[g]=this._onDirectionKey,t[b]=this._onDirectionKey,t[d]=this._onDeleteKey,t[u]=this._onDeleteKey,t);E[n]&&E[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:o,hasFocusedInput:a,hasActiveDropdown:c,hasItems:l,hasCtrlDownKeyPressed:y})},r._onKeyUp=function(e){var t=e.target,i=e.keyCode,n=this.input.value,s=this._store.activeItems,r=this._canAddItem(s,n),o=J,a=Y;if(this._isTextElement)if(r.notice&&n){var c=this._getTemplate(\"notice\",r.notice);this.dropdown.element.innerHTML=c.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0);else{var l=(i===o||i===a)&&!t.value,h=!this._isTextElement&&this._isSearching,u=this._canSearch&&r.response;l&&h?(this._isSearching=!1,this._store.dispatch(be(!0))):u&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},r._onAKey=function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())},r._onEnterKey=function(e){var t=e.event,i=e.target,n=e.activeItems,s=e.hasActiveDropdown,r=Z,o=i.hasAttribute(\"data-button\");if(this._isTextElement&&i.value){var a=this.input.value;this._canAddItem(n,a).response&&(this.hideDropdown(!0),this._addItem({value:a}),this._triggerChange(a),this.clearInput())}if(o&&(this._handleButtonAction(n,i),t.preventDefault()),s){var c=this.dropdown.getChild(\".\"+this.config.classNames.highlightedState);c&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,c)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())},r._onEscapeKey=function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())},r._onDirectionKey=function(e){var t,i,n,s=e.event,r=e.hasActiveDropdown,o=e.keyCode,a=e.metaKey,c=ie,l=ne,h=se;if(r||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var u,d=o===c||o===h?1:-1,p=\"[data-choice-selectable]\";if(a||o===h||o===l)u=d>0?this.dropdown.element.querySelector(\"[data-choice-selectable]:last-of-type\"):this.dropdown.element.querySelector(p);else{var m=this.dropdown.element.querySelector(\".\"+this.config.classNames.highlightedState);u=m?function(e,t,i){if(void 0===i&&(i=1),e instanceof Element&&\"string\"==typeof t){for(var n=(i>0?\"next\":\"previous\")+\"ElementSibling\",s=e[n];s;){if(s.matches(t))return s;s=s[n]}return s}}(m,p,d):this.dropdown.element.querySelector(p)}u&&(t=u,i=this.choiceList.element,void 0===(n=d)&&(n=1),t&&(n>0?i.scrollTop+i.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=i.scrollTop)||this.choiceList.scrollToChildElement(u,d),this._highlightChoice(u)),s.preventDefault()}},r._onDeleteKey=function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,s=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(s),t.preventDefault())},r._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},r._onTouchEnd=function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()),this._wasTap=!0},r._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(we&&this.choiceList.element.contains(t)){var i=this.choiceList.element.firstElementChild,n=\"ltr\"===this._direction?e.offsetX>=i.offsetWidth:e.offsetX0&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))},r._onFocus=function(e){var t,i=this,n=e.target;this.containerOuter.element.contains(n)&&((t={}).text=function(){n===i.input.element&&i.containerOuter.addFocusState()},t[\"select-one\"]=function(){i.containerOuter.addFocusState(),n===i.input.element&&i.showDropdown(!0)},t[\"select-multiple\"]=function(){n===i.input.element&&(i.showDropdown(!0),i.containerOuter.addFocusState())},t)[this.passedElement.element.type]()},r._onBlur=function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n,s=this._store.activeItems.some((function(e){return e.highlighted}));((n={}).text=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),s&&t.unhighlightAll(),t.hideDropdown(!0))},n[\"select-one\"]=function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},n[\"select-multiple\"]=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),s&&t.unhighlightAll())},n)[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},r._onFormReset=function(){this._store.dispatch({type:\"RESET_TO\",state:this._initialState})},r._highlightChoice=function(e){var t=this;void 0===e&&(e=null);var i=Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\"));if(i.length){var n=e;Array.from(this.dropdown.element.querySelectorAll(\".\"+this.config.classNames.highlightedState)).forEach((function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute(\"aria-selected\",\"false\")})),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute(\"aria-selected\",\"true\"),this.passedElement.triggerEvent(B,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}},r._addItem=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.choiceId,r=void 0===s?-1:s,o=e.groupId,a=void 0===o?-1:o,c=e.customProperties,l=void 0===c?null:c,h=e.placeholder,u=void 0!==h&&h,d=e.keyCode,p=void 0===d?null:d,m=\"string\"==typeof t?t.trim():t,f=p,v=l,g=this._store.items,_=n||m,b=r||-1,y=a>=0?this._store.getGroupById(a):null,E=g?g.length+1:1;return this.config.prependValue&&(m=this.config.prependValue+m.toString()),this.config.appendValue&&(m+=this.config.appendValue.toString()),this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.choiceId,r=e.groupId,o=e.customProperties,a=e.placeholder,c=e.keyCode;return{type:W,value:t,label:i,id:n,choiceId:s,groupId:r,customProperties:o,placeholder:a,keyCode:c}}({value:m,label:_,id:E,choiceId:b,groupId:a,customProperties:l,placeholder:u,keyCode:f})),this._isSelectOneElement&&this.removeActiveItems(E),this.passedElement.triggerEvent(K,{id:E,value:m,label:_,customProperties:v,groupValue:y&&y.value?y.value:void 0,keyCode:f}),this},r._removeItem=function(e){if(!e||!E(\"Object\",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,r=e.groupId,o=r>=0?this._store.getGroupById(r):null;return this._store.dispatch(function(e,t){return{type:X,id:e,choiceId:t}}(t,s)),o&&o.value?this.passedElement.triggerEvent(R,{id:t,value:i,label:n,groupValue:o.value}):this.passedElement.triggerEvent(R,{id:t,value:i,label:n}),this},r._addChoice=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.isSelected,r=void 0!==s&&s,o=e.isDisabled,a=void 0!==o&&o,c=e.groupId,l=void 0===c?-1:c,h=e.customProperties,u=void 0===h?null:h,d=e.placeholder,p=void 0!==d&&d,m=e.keyCode,f=void 0===m?null:m;if(null!=t){var v=this._store.choices,g=n||t,_=v?v.length+1:1,b=this._baseId+\"-\"+this._idNames.itemChoice+\"-\"+_;this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.groupId,r=e.disabled,o=e.elementId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:V,value:t,label:i,id:n,groupId:s,disabled:r,elementId:o,customProperties:a,placeholder:c,keyCode:l}}({id:_,groupId:l,elementId:b,value:t,label:g,disabled:a,customProperties:u,placeholder:p,keyCode:f})),r&&this._addItem({value:t,label:g,choiceId:_,customProperties:u,placeholder:p,keyCode:f})}},r._addGroup=function(e){var t=this,i=e.group,n=e.id,s=e.valueKey,r=void 0===s?\"value\":s,o=e.labelKey,a=void 0===o?\"label\":o,c=E(\"Object\",i)?i.choices:Array.from(i.getElementsByTagName(\"OPTION\")),l=n||Math.floor((new Date).valueOf()*Math.random()),h=!!i.disabled&&i.disabled;c?(this._store.dispatch(Ee({value:i.label,id:l,active:!0,disabled:h})),c.forEach((function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:E(\"Object\",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})}))):this._store.dispatch(Ee({value:i.label,id:i.id,active:!1,disabled:i.disabled}))},r._getTemplate=function(e){var t;if(!e)return null;for(var i=this.config.classNames,n=arguments.length,s=new Array(n>1?n-1:0),r=1;r{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.value.change,(()=>{this.input_el.value=this.format_value,this.old_value=this.input_el.value})),this.connect(this.model.properties.low.change,(()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&d.assert(t<=l,\"Invalid bounds, low must be inferior to high\"),null!=e&&null!=t&&(this.model.value=Math.max(e,t))})),this.connect(this.model.properties.high.change,(()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&d.assert(l>=t,\"Invalid bounds, high must be superior to low\"),null!=e&&null!=l&&(this.model.value=Math.min(e,l))})),this.connect(this.model.properties.high.change,(()=>this.input_el.placeholder=this.model.placeholder)),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled)),this.connect(this.model.properties.placeholder.change,(()=>this.input_el.placeholder=this.model.placeholder))}get format_value(){return null!=this.model.value?this.model.pretty(this.model.value):\"\"}_set_input_filter(e){this.input_el.addEventListener(\"input\",(()=>{const{selectionStart:t,selectionEnd:l}=this.input_el;if(e(this.input_el.value))this.old_value=this.input_el.value;else{const e=this.old_value.length-this.input_el.value.length;this.input_el.value=this.old_value,t&&l&&this.input_el.setSelectionRange(t-1,l+e)}}))}render(){super.render(),this.input_el=a.input({type:\"text\",class:p.input,name:this.model.name,value:this.format_value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.old_value=this.format_value,this.set_input_filter(),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.input_el.addEventListener(\"focusout\",(()=>this.input_el.value=this.format_value)),this.group_el.appendChild(this.input_el)}set_input_filter(){\"int\"==this.model.mode?this._set_input_filter((e=>_.test(e))):\"float\"==this.model.mode&&this._set_input_filter((e=>m.test(e)))}bound_value(e){let t=e;const{low:l,high:i}=this.model;return t=null!=l?Math.max(l,t):t,t=null!=i?Math.min(i,t):t,t}get value(){let e=\"\"!=this.input_el.value?Number(this.input_el.value):null;return null!=e&&(e=this.bound_value(e)),e}change_input(){null==this.value?this.model.value=null:Number.isNaN(this.value)||(this.model.value=this.value)}}l.NumericInputView=c,c.__name__=\"NumericInputView\";class v extends h.InputWidget{constructor(e){super(e)}static init_NumericInput(){this.prototype.default_view=c,this.define((({Number:e,String:t,Enum:l,Ref:i,Or:n,Nullable:s})=>({value:[s(e),null],placeholder:[t,\"\"],mode:[l(\"int\",\"float\"),\"int\"],format:[s(n(t,i(o.TickFormatter))),null],low:[s(e),null],high:[s(e),null]})))}_formatter(e,t){return r.isString(t)?u.format(e,t):t.doFormat([e],{loc:0})[0]}pretty(e){return null!=this.format?this._formatter(e,this.format):`${e}`}}l.NumericInput=v,v.__name__=\"NumericInput\",v.init_NumericInput()},\n 455: function _(e,t,r,s,i){s();const n=e(444),_=e(43);class a extends n.MarkupView{render(){super.render();const e=_.pre({style:{overflow:\"auto\"}},this.model.text);this.markup_el.appendChild(e)}}r.PreTextView=a,a.__name__=\"PreTextView\";class o extends n.Markup{constructor(e){super(e)}static init_PreText(){this.prototype.default_view=a}}r.PreText=o,o.__name__=\"PreText\",o.init_PreText()},\n 456: function _(t,o,i,e,a){e();const n=t(1),u=t(430),s=t(43),c=n.__importStar(t(328));class _ extends u.ButtonGroupView{change_active(t){this.model.active!==t&&(this.model.active=t)}_update_active(){const{active:t}=this.model;this._buttons.forEach(((o,i)=>{s.classes(o).toggle(c.active,t===i)}))}}i.RadioButtonGroupView=_,_.__name__=\"RadioButtonGroupView\";class r extends u.ButtonGroup{constructor(t){super(t)}static init_RadioButtonGroup(){this.prototype.default_view=_,this.define((({Int:t,Nullable:o})=>({active:[o(t),null]})))}}i.RadioButtonGroup=r,r.__name__=\"RadioButtonGroup\",r.init_RadioButtonGroup()},\n 457: function _(e,i,t,n,a){n();const s=e(1),o=e(43),l=e(34),d=e(432),p=s.__importStar(e(427));class u extends d.InputGroupView{render(){super.render();const e=o.div({class:[p.input_group,this.model.inline?p.inline:null]});this.el.appendChild(e);const i=l.uniqueId(),{active:t,labels:n}=this.model;this._inputs=[];for(let a=0;athis.change_active(a))),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),a==t&&(s.checked=!0);const l=o.label({},s,o.span({},n[a]));e.appendChild(l)}}change_active(e){this.model.active=e}}t.RadioGroupView=u,u.__name__=\"RadioGroupView\";class r extends d.InputGroup{constructor(e){super(e)}static init_RadioGroup(){this.prototype.default_view=u,this.define((({Boolean:e,Int:i,String:t,Array:n,Nullable:a})=>({active:[a(i),null],labels:[n(t),[]],inline:[e,!1]})))}}t.RadioGroup=r,r.__name__=\"RadioGroup\",r.init_RadioGroup()},\n 458: function _(e,t,i,r,a){r();const n=e(1).__importStar(e(183)),s=e(438),_=e(8);class d extends s.AbstractRangeSliderView{}i.RangeSliderView=d,d.__name__=\"RangeSliderView\";class o extends s.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}static init_RangeSlider(){this.prototype.default_view=d,this.override({format:\"0[.]00\"})}_formatter(e,t){return _.isString(t)?n.format(e,t):t.compute(e)}}i.RangeSlider=o,o.__name__=\"RangeSlider\",o.init_RangeSlider()},\n 459: function _(e,t,n,i,s){i();const l=e(1),u=e(43),a=e(8),o=e(13),_=e(426),p=l.__importStar(e(427));class r extends _.InputWidgetView{constructor(){super(...arguments),this._known_values=new Set}connect_signals(){super.connect_signals();const{value:e,options:t}=this.model.properties;this.on_change(e,(()=>{this._update_value()})),this.on_change(t,(()=>{u.empty(this.input_el),u.append(this.input_el,...this.options_el()),this._update_value()}))}options_el(){const{_known_values:e}=this;function t(t){return t.map((t=>{let n,i;return a.isString(t)?n=i=t:[n,i]=t,e.add(n),u.option({value:n},i)}))}e.clear();const{options:n}=this.model;return a.isArray(n)?t(n):o.entries(n).map((([e,n])=>u.optgroup({label:e},t(n))))}render(){super.render(),this.input_el=u.select({class:p.input,name:this.model.name,disabled:this.model.disabled},this.options_el()),this._update_value(),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el)}change_input(){const e=this.input_el.value;this.model.value=e,super.change_input()}_update_value(){const{value:e}=this.model;this._known_values.has(e)?this.input_el.value=e:this.input_el.removeAttribute(\"value\")}}n.SelectView=r,r.__name__=\"SelectView\";class c extends _.InputWidget{constructor(e){super(e)}static init_Select(){this.prototype.default_view=r,this.define((({String:e,Array:t,Tuple:n,Dict:i,Or:s})=>{const l=t(s(e,n(e,e)));return{value:[e,\"\"],options:[s(l,i(l)),[]]}}))}}n.Select=c,c.__name__=\"Select\",c.init_Select()},\n 460: function _(t,e,i,r,s){r();const _=t(1).__importStar(t(183)),a=t(438),n=t(8);class o extends a.AbstractSliderView{}i.SliderView=o,o.__name__=\"SliderView\";class d extends a.AbstractSlider{constructor(t){super(t),this.behaviour=\"tap\",this.connected=[!0,!1]}static init_Slider(){this.prototype.default_view=o,this.override({format:\"0[.]00\"})}_formatter(t,e){return n.isString(e)?_.format(t,e):e.compute(t)}}i.Slider=d,d.__name__=\"Slider\",d.init_Slider()},\n 461: function _(e,t,i,n,s){n();const l=e(454),o=e(43),{min:r,max:a,floor:h,abs:_}=Math;function u(e){return h(e)!==e?e.toFixed(16).replace(/0+$/,\"\").split(\".\")[1].length:0}class d extends l.NumericInputView{*buttons(){yield this.btn_up_el,yield this.btn_down_el}initialize(){super.initialize(),this._handles={interval:void 0,timeout:void 0},this._interval=200}connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,(()=>{for(const e of this.buttons())o.toggle_attribute(e,\"disabled\",this.model.disabled)}))}render(){super.render(),this.wrapper_el=o.div({class:\"bk-spin-wrapper\"}),this.group_el.replaceChild(this.wrapper_el,this.input_el),this.btn_up_el=o.button({class:\"bk-spin-btn bk-spin-btn-up\"}),this.btn_down_el=o.button({class:\"bk-spin-btn bk-spin-btn-down\"}),this.wrapper_el.appendChild(this.input_el),this.wrapper_el.appendChild(this.btn_up_el),this.wrapper_el.appendChild(this.btn_down_el);for(const e of this.buttons())o.toggle_attribute(e,\"disabled\",this.model.disabled),e.addEventListener(\"mousedown\",(e=>this._btn_mouse_down(e))),e.addEventListener(\"mouseup\",(()=>this._btn_mouse_up())),e.addEventListener(\"mouseleave\",(()=>this._btn_mouse_leave()));this.input_el.addEventListener(\"keydown\",(e=>this._input_key_down(e))),this.input_el.addEventListener(\"keyup\",(()=>this.model.value_throttled=this.model.value)),this.input_el.addEventListener(\"wheel\",(e=>this._input_mouse_wheel(e))),this.input_el.addEventListener(\"wheel\",function(e,t,i=!1){let n;return function(...s){const l=this,o=i&&void 0===n;void 0!==n&&clearTimeout(n),n=setTimeout((function(){n=void 0,i||e.apply(l,s)}),t),o&&e.apply(l,s)}}((()=>{this.model.value_throttled=this.model.value}),this.model.wheel_wait,!1))}get precision(){const{low:e,high:t,step:i}=this.model,n=u;return a(n(_(null!=e?e:0)),n(_(null!=t?t:0)),n(_(i)))}remove(){this._stop_incrementation(),super.remove()}_start_incrementation(e){clearInterval(this._handles.interval),this._counter=0;const{step:t}=this.model,i=e=>{if(this._counter+=1,this._counter%5==0){const t=Math.floor(this._counter/5);t<10?(clearInterval(this._handles.interval),this._handles.interval=setInterval((()=>i(e)),this._interval/(t+1))):t>=10&&t<=13&&(clearInterval(this._handles.interval),this._handles.interval=setInterval((()=>i(2*e)),this._interval/10))}this.increment(e)};this._handles.interval=setInterval((()=>i(e*t)),this._interval)}_stop_incrementation(){clearTimeout(this._handles.timeout),this._handles.timeout=void 0,clearInterval(this._handles.interval),this._handles.interval=void 0,this.model.value_throttled=this.model.value}_btn_mouse_down(e){e.preventDefault();const t=e.currentTarget===this.btn_up_el?1:-1;this.increment(t*this.model.step),this.input_el.focus(),this._handles.timeout=setTimeout((()=>this._start_incrementation(t)),this._interval)}_btn_mouse_up(){this._stop_incrementation()}_btn_mouse_leave(){this._stop_incrementation()}_input_mouse_wheel(e){if(document.activeElement===this.input_el){e.preventDefault();const t=e.deltaY>0?-1:1;this.increment(t*this.model.step)}}_input_key_down(e){switch(e.keyCode){case o.Keys.Up:return e.preventDefault(),this.increment(this.model.step);case o.Keys.Down:return e.preventDefault(),this.increment(-this.model.step);case o.Keys.PageUp:return e.preventDefault(),this.increment(this.model.page_step_multiplier*this.model.step);case o.Keys.PageDown:return e.preventDefault(),this.increment(-this.model.page_step_multiplier*this.model.step)}}adjust_to_precision(e){return this.bound_value(Number(e.toFixed(this.precision)))}increment(e){const{low:t,high:i}=this.model;null==this.model.value?e>0?this.model.value=null!=t?t:null!=i?r(0,i):0:e<0&&(this.model.value=null!=i?i:null!=t?a(t,0):0):this.model.value=this.adjust_to_precision(this.model.value+e)}change_input(){super.change_input(),this.model.value_throttled=this.model.value}}i.SpinnerView=d,d.__name__=\"SpinnerView\";class p extends l.NumericInput{constructor(e){super(e)}static init_Spinner(){this.prototype.default_view=d,this.define((({Number:e,Nullable:t})=>({value_throttled:[t(e),null],step:[e,1],page_step_multiplier:[e,10],wheel_wait:[e,100]}))),this.override({mode:\"float\"})}}i.Spinner=p,p.__name__=\"Spinner\",p.init_Spinner()},\n 462: function _(e,t,s,n,i){n();const r=e(1),o=e(425),p=e(43),c=r.__importStar(e(427));class l extends o.TextLikeInputView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.rows.change,(()=>this.input_el.rows=this.model.rows)),this.connect(this.model.properties.cols.change,(()=>this.input_el.cols=this.model.cols))}_render_input(){this.input_el=p.textarea({class:c.input})}render(){super.render(),this.input_el.cols=this.model.cols,this.input_el.rows=this.model.rows}}s.TextAreaInputView=l,l.__name__=\"TextAreaInputView\";class _ extends o.TextLikeInput{constructor(e){super(e)}static init_TextAreaInput(){this.prototype.default_view=l,this.define((({Int:e})=>({cols:[e,20],rows:[e,2]}))),this.override({max_length:500})}}s.TextAreaInput=_,_.__name__=\"TextAreaInput\",_.init_TextAreaInput()},\n 463: function _(e,t,i,s,c){s();const o=e(1),a=e(419),n=e(43),l=o.__importStar(e(328));class _ extends a.AbstractButtonView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._update_active()))}render(){super.render(),this._update_active()}click(){this.model.active=!this.model.active,super.click()}_update_active(){n.classes(this.button_el).toggle(l.active,this.model.active)}}i.ToggleView=_,_.__name__=\"ToggleView\";class g extends a.AbstractButton{constructor(e){super(e)}static init_Toggle(){this.prototype.default_view=_,this.define((({Boolean:e})=>({active:[e,!1]}))),this.override({label:\"Toggle\"})}}i.Toggle=g,g.__name__=\"Toggle\",g.init_Toggle()},\n }, 417, {\"models/widgets/main\":417,\"models/widgets/index\":418,\"models/widgets/abstract_button\":419,\"models/widgets/control\":420,\"models/widgets/widget\":488,\"models/widgets/abstract_icon\":422,\"models/widgets/autocomplete_input\":423,\"models/widgets/text_input\":424,\"models/widgets/text_like_input\":425,\"models/widgets/input_widget\":426,\"styles/widgets/inputs.css\":427,\"models/widgets/button\":428,\"models/widgets/checkbox_button_group\":429,\"models/widgets/button_group\":430,\"models/widgets/checkbox_group\":431,\"models/widgets/input_group\":432,\"models/widgets/color_picker\":433,\"models/widgets/date_picker\":434,\"styles/widgets/flatpickr.css\":436,\"models/widgets/date_range_slider\":437,\"models/widgets/abstract_slider\":438,\"styles/widgets/sliders.css\":440,\"styles/widgets/nouislider.css\":441,\"models/widgets/date_slider\":442,\"models/widgets/div\":443,\"models/widgets/markup\":444,\"styles/clearfix.css\":445,\"models/widgets/dropdown\":446,\"models/widgets/file_input\":447,\"models/widgets/multiselect\":448,\"models/widgets/paragraph\":449,\"models/widgets/password_input\":450,\"models/widgets/multichoice\":451,\"styles/widgets/choices.css\":453,\"models/widgets/numeric_input\":454,\"models/widgets/pretext\":455,\"models/widgets/radio_button_group\":456,\"models/widgets/radio_group\":457,\"models/widgets/range_slider\":458,\"models/widgets/selectbox\":459,\"models/widgets/slider\":460,\"models/widgets/spinner\":461,\"models/widgets/textarea_input\":462,\"models/widgets/toggle\":463}, {});});\n\n /* END bokeh-widgets.min.js */\n },\n \n function(Bokeh) {\n /* BEGIN bokeh-tables.min.js */\n /*!\n * Copyright (c) 2012 - 2021, Anaconda, Inc., and Bokeh Contributors\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n * \n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * Neither the name of Anaconda nor the names of any contributors\n * may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\n (function(root, factory) {\n factory(root[\"Bokeh\"], \"2.3.2\");\n })(this, function(Bokeh, version) {\n var define;\n return (function(modules, entry, aliases, externals) {\n const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n if (bokeh != null) {\n return bokeh.register_plugin(modules, entry, aliases);\n } else {\n throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n }\n })\n ({\n 464: function _(t,e,o,r,s){r();const _=t(1).__importStar(t(465));o.Tables=_;t(7).register_models(_)},\n 465: function _(g,a,r,e,t){e();const o=g(1);o.__exportStar(g(466),r),o.__exportStar(g(469),r),t(\"DataTable\",g(472).DataTable),t(\"TableColumn\",g(490).TableColumn),t(\"TableWidget\",g(489).TableWidget);var n=g(492);t(\"AvgAggregator\",n.AvgAggregator),t(\"MinAggregator\",n.MinAggregator),t(\"MaxAggregator\",n.MaxAggregator),t(\"SumAggregator\",n.SumAggregator);var A=g(493);t(\"GroupingInfo\",A.GroupingInfo),t(\"DataCube\",A.DataCube)},\n 466: function _(e,t,i,s,r){s();const a=e(1),n=e(43),l=e(240),u=e(53),d=e(467),o=a.__importStar(e(468));class _ extends l.DOMView{constructor(e){const{model:t,parent:i}=e.column;super(Object.assign({model:t,parent:i},e)),this.args=e,this.initialize(),this.render()}get emptyValue(){return null}initialize(){super.initialize(),this.inputEl=this._createInput(),this.defaultValue=null}async lazy_initialize(){throw new Error(\"unsupported\")}css_classes(){return super.css_classes().concat(o.cell_editor)}render(){super.render(),this.args.container.append(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()}renderEditor(){}disableNavigation(){this.inputEl.addEventListener(\"keydown\",(e=>{switch(e.keyCode){case n.Keys.Left:case n.Keys.Right:case n.Keys.Up:case n.Keys.Down:case n.Keys.PageUp:case n.Keys.PageDown:e.stopImmediatePropagation()}}))}destroy(){this.remove()}focus(){this.inputEl.focus()}show(){}hide(){}position(){}getValue(){return this.inputEl.value}setValue(e){this.inputEl.value=e}serializeValue(){return this.getValue()}isValueChanged(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue}applyValue(e,t){const i=this.args.grid.getData(),s=i.index.indexOf(e[d.DTINDEX_NAME]);i.setField(s,this.args.column.field,t)}loadValue(e){const t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)}validateValue(e){if(this.args.column.validator){const t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}}validate(){return this.validateValue(this.getValue())}}i.CellEditorView=_,_.__name__=\"CellEditorView\";class c extends u.Model{}i.CellEditor=c,c.__name__=\"CellEditor\";class p extends _{get emptyValue(){return\"\"}_createInput(){return n.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}}i.StringEditorView=p,p.__name__=\"StringEditorView\";class h extends c{static init_StringEditor(){this.prototype.default_view=p,this.define((({String:e,Array:t})=>({completions:[t(e),[]]})))}}i.StringEditor=h,h.__name__=\"StringEditor\",h.init_StringEditor();class E extends _{_createInput(){return n.textarea()}renderEditor(){this.inputEl.focus(),this.inputEl.select()}}i.TextEditorView=E,E.__name__=\"TextEditorView\";class V extends c{static init_TextEditor(){this.prototype.default_view=E}}i.TextEditor=V,V.__name__=\"TextEditor\",V.init_TextEditor();class m extends _{_createInput(){return n.select()}renderEditor(){for(const e of this.model.options)this.inputEl.appendChild(n.option({value:e},e));this.focus()}}i.SelectEditorView=m,m.__name__=\"SelectEditorView\";class f extends c{static init_SelectEditor(){this.prototype.default_view=m,this.define((({String:e,Array:t})=>({options:[t(e),[]]})))}}i.SelectEditor=f,f.__name__=\"SelectEditor\",f.init_SelectEditor();class x extends _{_createInput(){return n.input({type:\"text\"})}}i.PercentEditorView=x,x.__name__=\"PercentEditorView\";class g extends c{static init_PercentEditor(){this.prototype.default_view=x}}i.PercentEditor=g,g.__name__=\"PercentEditor\",g.init_PercentEditor();class w extends _{_createInput(){return n.input({type:\"checkbox\"})}renderEditor(){this.focus()}loadValue(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue}serializeValue(){return this.inputEl.checked}}i.CheckboxEditorView=w,w.__name__=\"CheckboxEditorView\";class v extends c{static init_CheckboxEditor(){this.prototype.default_view=w}}i.CheckboxEditor=v,v.__name__=\"CheckboxEditor\",v.init_CheckboxEditor();class y extends _{_createInput(){return n.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){var e;return null!==(e=parseInt(this.getValue(),10))&&void 0!==e?e:0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid integer\"}:super.validateValue(e)}}i.IntEditorView=y,y.__name__=\"IntEditorView\";class I extends c{static init_IntEditor(){this.prototype.default_view=y,this.define((({Int:e})=>({step:[e,1]})))}}i.IntEditor=I,I.__name__=\"IntEditor\",I.init_IntEditor();class b extends _{_createInput(){return n.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){var e;return null!==(e=parseFloat(this.getValue()))&&void 0!==e?e:0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid number\"}:super.validateValue(e)}}i.NumberEditorView=b,b.__name__=\"NumberEditorView\";class N extends c{static init_NumberEditor(){this.prototype.default_view=b,this.define((({Number:e})=>({step:[e,.01]})))}}i.NumberEditor=N,N.__name__=\"NumberEditor\",N.init_NumberEditor();class S extends _{_createInput(){return n.input({type:\"text\"})}}i.TimeEditorView=S,S.__name__=\"TimeEditorView\";class C extends c{static init_TimeEditor(){this.prototype.default_view=S}}i.TimeEditor=C,C.__name__=\"TimeEditor\",C.init_TimeEditor();class D extends _{_createInput(){return n.input({type:\"text\"})}get emptyValue(){return new Date}renderEditor(){this.inputEl.focus(),this.inputEl.select()}destroy(){super.destroy()}show(){super.show()}hide(){super.hide()}position(){return super.position()}getValue(){}setValue(e){}}i.DateEditorView=D,D.__name__=\"DateEditorView\";class T extends c{static init_DateEditor(){this.prototype.default_view=D}}i.DateEditor=T,T.__name__=\"DateEditor\",T.init_DateEditor()},\n 467: function _(_,n,i,t,d){t(),i.DTINDEX_NAME=\"__bkdt_internal_index__\"},\n 468: function _(e,l,o,t,r){t(),o.root=\"bk-root\",o.data_table=\"bk-data-table\",o.cell_special_defaults=\"bk-cell-special-defaults\",o.cell_select=\"bk-cell-select\",o.cell_index=\"bk-cell-index\",o.header_index=\"bk-header-index\",o.cell_editor=\"bk-cell-editor\",o.cell_editor_completion=\"bk-cell-editor-completion\",o.default='.bk-root .bk-data-table{box-sizing:content-box;font-size:11px;}.bk-root .bk-data-table input[type=\"checkbox\"]{margin-left:4px;margin-right:4px;}.bk-root .bk-cell-special-defaults{border-right-color:silver;border-right-style:solid;background:#f5f5f5;}.bk-root .bk-cell-select{border-right-color:silver;border-right-style:solid;background:#f5f5f5;}.bk-root .slick-cell.bk-cell-index{border-right-color:silver;border-right-style:solid;background:#f5f5f5;text-align:right;background:#f0f0f0;color:#909090;}.bk-root .bk-header-index .slick-column-name{float:right;}.bk-root .slick-row.selected .bk-cell-index{background-color:transparent;}.bk-root .slick-row.odd{background:#f0f0f0;}.bk-root .slick-cell{padding-left:4px;padding-right:4px;border-right-color:transparent;border:0.25px solid transparent;}.bk-root .slick-cell .bk{line-height:inherit;}.bk-root .slick-cell.active{border-style:dashed;}.bk-root .slick-cell.selected{background-color:#F0F8FF;}.bk-root .slick-cell.editable{padding-left:0;padding-right:0;}.bk-root .bk-cell-editor{display:contents;}.bk-root .bk-cell-editor input,.bk-root .bk-cell-editor select{width:100%;height:100%;border:0;margin:0;padding:0;outline:0;background:transparent;vertical-align:baseline;}.bk-root .bk-cell-editor input{padding-left:4px;padding-right:4px;}.bk-root .bk-cell-editor-completion{font-size:11px;}'},\n 469: function _(t,e,r,a,n){a();const i=t(1),o=i.__importDefault(t(181)),s=i.__importStar(t(183)),l=t(470),c=t(43),m=t(20),u=t(8),_=t(34),F=t(22),d=t(53);class f extends d.Model{constructor(t){super(t)}doFormat(t,e,r,a,n){return null==r?\"\":(r+\"\").replace(/&/g,\"&\").replace(//g,\">\")}}r.CellFormatter=f,f.__name__=\"CellFormatter\";class h extends f{constructor(t){super(t)}static init_StringFormatter(){this.define((({Color:t,Nullable:e})=>({font_style:[m.FontStyle,\"normal\"],text_align:[m.TextAlign,\"left\"],text_color:[e(t),null]})))}doFormat(t,e,r,a,n){const{font_style:i,text_align:o,text_color:s}=this,l=c.div({},null==r?\"\":`${r}`);switch(i){case\"bold\":l.style.fontWeight=\"bold\";break;case\"italic\":l.style.fontStyle=\"italic\"}return null!=o&&(l.style.textAlign=o),null!=s&&(l.style.color=F.color2css(s)),l.outerHTML}}r.StringFormatter=h,h.__name__=\"StringFormatter\",h.init_StringFormatter();class g extends h{constructor(t){super(t)}static init_ScientificFormatter(){this.define((({Number:t,String:e,Nullable:r})=>({nan_format:[r(e),null],precision:[t,10],power_limit_high:[t,5],power_limit_low:[t,-3]})))}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}doFormat(t,e,r,a,n){const i=Math.abs(r)<=this.scientific_limit_low||Math.abs(r)>=this.scientific_limit_high;let o=this.precision;return o<1&&(o=1),r=null!=r&&!isNaN(r)||null==this.nan_format?0==r?_.to_fixed(r,1):i?r.toExponential(o):_.to_fixed(r,o):this.nan_format,super.doFormat(t,e,r,a,n)}}r.ScientificFormatter=g,g.__name__=\"ScientificFormatter\",g.init_ScientificFormatter();class p extends h{constructor(t){super(t)}static init_NumberFormatter(){this.define((({String:t,Nullable:e})=>({format:[t,\"0,0\"],language:[t,\"en\"],rounding:[m.RoundingFunction,\"round\"],nan_format:[e(t),null]})))}doFormat(t,e,r,a,n){const{format:i,language:o,nan_format:l}=this,c=(()=>{switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}})();return r=null!=r&&!isNaN(r)||null==l?s.format(r,i,o,c):l,super.doFormat(t,e,r,a,n)}}r.NumberFormatter=p,p.__name__=\"NumberFormatter\",p.init_NumberFormatter();class S extends f{constructor(t){super(t)}static init_BooleanFormatter(){this.define((({String:t})=>({icon:[t,\"check\"]})))}doFormat(t,e,r,a,n){return r?c.i({class:this.icon}).outerHTML:\"\"}}r.BooleanFormatter=S,S.__name__=\"BooleanFormatter\",S.init_BooleanFormatter();class b extends h{constructor(t){super(t)}static init_DateFormatter(){this.define((({String:t,Nullable:e})=>({format:[t,\"ISO-8601\"],nan_format:[e(t),null]})))}getFormat(){switch(this.format){case\"ATOM\":case\"W3C\":case\"RFC-3339\":case\"ISO-8601\":return\"%Y-%m-%d\";case\"COOKIE\":return\"%a, %d %b %Y\";case\"RFC-850\":return\"%A, %d-%b-%y\";case\"RFC-1123\":case\"RFC-2822\":return\"%a, %e %b %Y\";case\"RSS\":case\"RFC-822\":case\"RFC-1036\":return\"%a, %e %b %y\";case\"TIMESTAMP\":return;default:return this.format}}doFormat(t,e,r,a,n){const{nan_format:i}=this;let s;return s=null!=(r=u.isString(r)?parseInt(r,10):r)&&!isNaN(r)&&-9223372036854776!==r||null==i?null==r?\"\":o.default(r,this.getFormat()):i,super.doFormat(t,e,s,a,n)}}r.DateFormatter=b,b.__name__=\"DateFormatter\",b.init_DateFormatter();class x extends f{constructor(t){super(t)}static init_HTMLTemplateFormatter(){this.define((({String:t})=>({template:[t,\"<%= value %>\"]})))}doFormat(t,e,r,a,n){const{template:i}=this;if(null==r)return\"\";return l._.template(i)(Object.assign(Object.assign({},n),{value:r}))}}r.HTMLTemplateFormatter=x,x.__name__=\"HTMLTemplateFormatter\",x.init_HTMLTemplateFormatter()},\n 470: function _(e,n,t,f,i){var o=e(471),d=o.template;function r(e,n,t){return d(e,n,t)}r._=o,n.exports=r,\"function\"==typeof define&&define.amd?define((function(){return r})):\"undefined\"==typeof window&&\"undefined\"==typeof navigator||(window.UnderscoreTemplate=r)},\n 471: function _(r,e,n,t,a){\n // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n // Underscore may be freely distributed under the MIT license.\n var u={},c=Array.prototype,o=Object.prototype,l=c.slice,i=o.toString,f=o.hasOwnProperty,s=c.forEach,p=Object.keys,_=Array.isArray,h=function(){},v=h.each=h.forEach=function(r,e,n){if(null!=r)if(s&&r.forEach===s)r.forEach(e,n);else if(r.length===+r.length){for(var t=0,a=r.length;t\":\">\",'\"':\""\",\"'\":\"'\"}},y={escape:new RegExp(\"[\"+h.keys(g.escape).join(\"\")+\"]\",\"g\")};h.each([\"escape\"],(function(r){h[r]=function(e){return null==e?\"\":(\"\"+e).replace(y[r],(function(e){return g[r][e]}))}})),h.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var j=/(.)^/,b={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\t\":\"t\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},w=/\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g;h.template=function(r,e,n){var t;n=h.defaults({},n,h.templateSettings);var a=new RegExp([(n.escape||j).source,(n.interpolate||j).source,(n.evaluate||j).source].join(\"|\")+\"|$\",\"g\"),u=0,c=\"__p+='\";r.replace(a,(function(e,n,t,a,o){return c+=r.slice(u,o).replace(w,(function(r){return\"\\\\\"+b[r]})),n&&(c+=\"'+\\n((__t=(\"+n+\"))==null?'':_.escape(__t))+\\n'\"),t&&(c+=\"'+\\n((__t=(\"+t+\"))==null?'':__t)+\\n'\"),a&&(c+=\"';\\n\"+a+\"\\n__p+='\"),u=o+e.length,e})),c+=\"';\\n\",n.variable||(c=\"with(obj||{}){\\n\"+c+\"}\\n\"),c=\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\n\"+c+\"return __p;\\n\";try{t=new Function(n.variable||\"obj\",\"_\",c)}catch(r){throw r.source=c,r}if(e)return t(e,h);var o=function(r){return t.call(this,r,h)};return o.source=\"function(\"+(n.variable||\"obj\")+\"){\\n\"+c+\"}\",o},e.exports=h},\n 472: function _(e,t,i,s,o){s();const n=e(1),l=e(473),r=e(477),d=e(478),a=e(479),h=e(34),u=e(8),c=e(9),_=e(13),m=e(19),g=e(488),p=e(467),f=e(489),b=e(490),w=n.__importStar(e(468)),x=w,C=n.__importDefault(e(491));i.AutosizeModes={fit_columns:\"FCV\",fit_viewport:\"FVC\",force_fit:\"LFF\",none:\"NOA\"};let z=!1;class v{constructor(e,t){this.init(e,t)}init(e,t){if(p.DTINDEX_NAME in e.data)throw new Error(`special name ${p.DTINDEX_NAME} cannot be used as a data table column`);this.source=e,this.view=t,this.index=[...this.view.indices]}getLength(){return this.index.length}getItem(e){const t={};for(const i of _.keys(this.source.data))t[i]=this.source.data[i][this.index[e]];return t[p.DTINDEX_NAME]=this.index[e],t}getField(e,t){return t==p.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]}setField(e,t,i){const s=this.index[e];this.source.patch({[t]:[[s,i]]})}getRecords(){return c.range(0,this.getLength()).map((e=>this.getItem(e)))}getItems(){return this.getRecords()}slice(e,t,i){return e=null!=e?e:0,t=null!=t?t:this.getLength(),i=null!=i?i:1,c.range(e,t,i).map((e=>this.getItem(e)))}sort(e){let t=e.map((e=>[e.sortCol.field,e.sortAsc?1:-1]));0==t.length&&(t=[[p.DTINDEX_NAME,1]]);const i=this.getRecords(),s=this.index.slice();this.index.sort(((e,o)=>{for(const[n,l]of t){const t=i[s.indexOf(e)][n],r=i[s.indexOf(o)][n];if(t!==r)return u.isNumber(t)&&u.isNumber(r)?l*(t-r||+isNaN(t)-+isNaN(r)):`${t}`>`${r}`?l:-l}return 0}))}}i.TableDataProvider=v,v.__name__=\"TableDataProvider\";class A extends g.WidgetView{constructor(){super(...arguments),this._in_selection_update=!1,this._width=null}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render())),this.connect(this.model.source.streaming,(()=>this.updateGrid())),this.connect(this.model.source.patching,(()=>this.updateGrid())),this.connect(this.model.source.change,(()=>this.updateGrid())),this.connect(this.model.source.properties.data.change,(()=>this.updateGrid())),this.connect(this.model.source.selected.change,(()=>this.updateSelection())),this.connect(this.model.source.selected.properties.indices.change,(()=>this.updateSelection()))}remove(){var e;null===(e=this.grid)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),C.default,w.default]}update_position(){super.update_position(),this.grid.resizeCanvas()}after_layout(){super.after_layout(),this.updateLayout(!0,!1)}box_sizing(){const e=super.box_sizing();return\"fit_viewport\"===this.model.autosize_mode&&null!=this._width&&(e.width=this._width),e}updateLayout(e,t){const s=this.autosize;s===i.AutosizeModes.fit_columns||s===i.AutosizeModes.force_fit?(e||this.grid.resizeCanvas(),this.grid.autosizeColumns()):e&&t&&s===i.AutosizeModes.fit_viewport&&this.invalidate_layout()}updateGrid(){if(this.model.view.compute_indices(),this.data.init(this.model.source,this.model.view),this.model.sortable){const e=this.grid.getColumns(),t=this.grid.getSortColumns().map((t=>({sortCol:{field:e[this.grid.getColumnIndex(t.columnId)].field},sortAsc:t.sortAsc})));this.data.sort(t)}this.grid.invalidate(),this.updateLayout(!0,!0)}updateSelection(){if(this._in_selection_update)return;const{selected:e}=this.model.source,t=e.indices.map((e=>this.data.index.indexOf(e))).sort();this._in_selection_update=!0,this.grid.setSelectedRows(t),this._in_selection_update=!1;const i=this.grid.getViewport(),s=this.model.get_scroll_index(i,t);null!=s&&this.grid.scrollRowToTop(s)}newIndexColumn(){return{id:h.uniqueId(),name:this.model.index_header,field:p.DTINDEX_NAME,width:this.model.index_width,behavior:\"select\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:x.cell_index,headerCssClass:x.header_index}}css_classes(){return super.css_classes().concat(x.data_table)}get autosize(){let e;return e=!0===this.model.fit_columns?i.AutosizeModes.force_fit:!1===this.model.fit_columns?i.AutosizeModes.none:i.AutosizeModes[this.model.autosize_mode],e}render(){var e;const t=this.model.columns.map((e=>Object.assign(Object.assign({},e.toColumn()),{parent:this})));let s=null;if(\"checkbox\"==this.model.selectable&&(s=new r.CheckboxSelectColumn({cssClass:x.cell_select}),t.unshift(s.getColumnDefinition())),null!=this.model.index_position){const e=this.model.index_position,i=this.newIndexColumn();-1==e?t.push(i):e<-1?t.splice(e+1,0,i):t.splice(e,0,i)}let{reorderable:o}=this.model;!o||\"undefined\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(z||(m.logger.warn(\"jquery-ui is required to enable DataTable.reorderable\"),z=!0),o=!1);let n=-1,h=!1;const{frozen_rows:c,frozen_columns:_}=this.model,g=null==_?-1:_-1;null!=c&&(h=c<0,n=Math.abs(c));const p={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:o,autosizeColsMode:this.autosize,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:this.model.auto_edit,autoHeight:!1,rowHeight:this.model.row_height,frozenColumn:g,frozenRow:n,frozenBottom:h},f=null!=this.grid;if(this.data=new v(this.model.source,this.model.view),this.grid=new a.Grid(this.el,this.data,t,p),this.autosize==i.AutosizeModes.fit_viewport){this.grid.autosizeColumns();let i=0;for(const s of t)i+=null!==(e=s.width)&&void 0!==e?e:0;this._width=Math.ceil(i)}if(this.grid.onSort.subscribe(((e,t)=>{if(!this.model.sortable)return;const i=t.sortCols;null!=i&&(this.data.sort(i),this.grid.invalidate(),this.updateSelection(),this.grid.render(),this.model.header_row||this._hide_header(),this.model.update_sort_columns(i))})),!1!==this.model.selectable){this.grid.setSelectionModel(new l.RowSelectionModel({selectActiveRow:null==s})),null!=s&&this.grid.registerPlugin(s);const e={dataItemColumnValueExtractor(e,t){let i=e[t.field];return u.isString(i)&&(i=i.replace(/\\n/g,\"\\\\n\")),i},includeHeaderWhenCopying:!1};this.grid.registerPlugin(new d.CellExternalCopyManager(e)),this.grid.onSelectedRowsChanged.subscribe(((e,t)=>{this._in_selection_update||(this.model.source.selected.indices=t.rows.map((e=>this.data.index[e])))})),this.updateSelection(),this.model.header_row||this._hide_header()}f&&this.updateLayout(f,!1)}_hide_header(){for(const e of this.el.querySelectorAll(\".slick-header-columns\"))e.style.height=\"0px\";this.grid.resizeCanvas()}}i.DataTableView=A,A.__name__=\"DataTableView\";class D extends f.TableWidget{constructor(e){super(e),this._sort_columns=[]}get sort_columns(){return this._sort_columns}static init_DataTable(){this.prototype.default_view=A,this.define((({Array:e,Boolean:t,Int:i,Ref:s,String:o,Enum:n,Or:l,Nullable:r})=>({autosize_mode:[n(\"fit_columns\",\"fit_viewport\",\"none\",\"force_fit\"),\"force_fit\"],auto_edit:[t,!1],columns:[e(s(b.TableColumn)),[]],fit_columns:[r(t),null],frozen_columns:[r(i),null],frozen_rows:[r(i),null],sortable:[t,!0],reorderable:[t,!0],editable:[t,!1],selectable:[l(t,n(\"checkbox\")),!0],index_position:[r(i),0],index_header:[o,\"#\"],index_width:[i,40],scroll_to_selection:[t,!0],header_row:[t,!0],row_height:[i,25]}))),this.override({width:600,height:400})}update_sort_columns(e){this._sort_columns=e.map((({sortCol:e,sortAsc:t})=>({field:e.field,sortAsc:t})))}get_scroll_index(e,t){return this.scroll_to_selection&&0!=t.length?c.some(t,(t=>e.top<=t&&t<=e.bottom))?null:Math.max(0,Math.min(...t)-1):null}}i.DataTable=D,D.__name__=\"DataTable\",D.init_DataTable()},\n 473: function _(e,t,n,o,r){var l=e(474),i=e(476);t.exports={RowSelectionModel:function(e){var t,n,o,r=[],c=this,u=new i.EventHandler,s={selectActiveRow:!0};function a(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function f(e){for(var t=[],n=0;n=0&&r0&&t-1 in e)}w.fn=w.prototype={jquery:b,constructor:w,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(w.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(w.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|[\\\\x20\\\\t\\\\r\\\\n\\\\f])[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*(even|odd|(([+-]|)(\\\\d*)n|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:([+-]|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(\\\\d+)|))[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*((?:-\\\\d)?\\\\d*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}[\\\\x20\\\\t\\\\r\\\\n\\\\f]?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){p()},ae=be((function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()}),{dir:\"parentNode\",next:\"legend\"});try{H.apply(j=O.call(w.childNodes),w.childNodes),j[w.childNodes.length].nodeType}catch(e){H={apply:j.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+\" \"]&&(!v||!v.test(e))&&(1!==w||\"object\"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&ye(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute(\"id\"))?c=c.replace(re,ie):t.setAttribute(\"id\",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?\"#\"+c:\":scope\")+\" \"+xe(h[s]);y=h.join(\",\")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace($,\"$1\"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},p=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(d.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length})),n.attributes=ce((function(e){return e.className=\"i\",!e.getAttribute(\"className\")})),n.getElementsByTagName=ce((function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||v.push(\"~=\"),(t=d.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")})),ce((function(e){e.innerHTML=\"\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")}))),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),y.push(\"!=\",F)})),v=v.length&&new RegExp(v.join(\"|\")),y=y.length&&new RegExp(y.join(\"|\")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},d):d},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+\" \"]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return se(t,d,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=d&&p(e),x(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&D.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(N),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|[\\\\x20\\\\t\\\\r\\\\n\\\\f])\"+e+\"(\"+M+\"|$)\"))&&E(e,(function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(B,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=s(e.replace($,\"$1\"));return r[b]?le((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return se(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=Te(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)}))}function Ee(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=be((function(e){return e===t}),s,!0),f=be((function(e){return P(t,e)>-1}),s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace($,\"$1\"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,S=C.length;for(c&&(l=a==d||a||c);m!==S&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument==d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=q.call(u));b=Te(b)}H.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&se.uniqueSort(u)}return c&&(T=E,l=w),x};return n?le(o):o}(o,i))).selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return H.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(N).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))})),ce((function(e){return e.innerHTML=\"\",\"#\"===e.firstChild.getAttribute(\"href\")}))||fe(\"type|href|height|width\",(function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")}))||fe(\"value\",(function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute(\"disabled\")}))||fe(R,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(e);w.find=C,w.expr=C.selectors,w.expr[\":\"]=w.expr.pseudos,w.uniqueSort=w.unique=C.uniqueSort,w.text=C.getText,w.isXMLDoc=C.isXML,w.contains=C.contains,w.escapeSelector=C.escape;var E=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=w.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function D(e,t,n){return h(t)?w.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?w.grep(e,(function(e){return e===t!==n})):\"string\"!=typeof t?w.grep(e,(function(e){return s.call(t,e)>-1!==n})):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,(function(e){return 1===e.nodeType})))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(w(e).filter((function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,\"string\"==typeof e&&k.test(e)?w(e):e||[],!1).length}});var j,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(w.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),N.test(r[1])&&w.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,j=w(v);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?s.call(w(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return E(e,\"parentNode\")},parentsUntil:function(e,t,n){return E(e,\"parentNode\",n)},next:function(e){return O(e,\"nextSibling\")},prev:function(e){return O(e,\"previousSibling\")},nextAll:function(e){return E(e,\"nextSibling\")},prevAll:function(e){return E(e,\"previousSibling\")},nextUntil:function(e,t,n){return E(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return E(e,\"previousSibling\",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,\"template\")&&(e=e.content||e),w.merge([],e.childNodes))}},(function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=w.filter(r,i)),this.length>1&&(H[e]||w.uniqueSort(i),L.test(e)&&i.reverse()),this.pushStack(i)}}));var P=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&h(i=e.promise)?i.call(e).done(t).fail(n):e&&h(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return w.each(e.match(P)||[],(function(e,n){t[n]=!0})),t}(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},w.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",w.Callbacks(\"memory\"),w.Callbacks(\"memory\"),2],[\"resolve\",\"done\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred((function(t){w.each(n,(function(n,r){var i=h(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&h(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==M&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred((function(e){n[0][3].add(a(0,e,h(i)?i:R,e.notifyWith)),n[1][3].add(a(0,e,h(t)?t:R)),n[2][3].add(a(0,e,h(r)?r:M))})).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,(function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add((function(){r=s}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||a.resolveWith(r,o)}};if(t<=1&&(I(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||h(o[n]&&o[n].then)))return a.then();for(;n--;)I(o[n],s(n),a.reject);return a.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&W.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout((function(){throw t}))};var F=w.Deferred();function B(){v.removeEventListener(\"DOMContentLoaded\",B),e.removeEventListener(\"load\",B),w.ready()}w.fn.ready=function(e){return F.then(e).catch((function(e){w.readyException(e)})),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(v,[w]))}}),w.ready.then=F.then,\"complete\"===v.readyState||\"loading\"!==v.readyState&&!v.documentElement.doScroll?e.setTimeout(w.ready):(v.addEventListener(\"DOMContentLoaded\",B),e.addEventListener(\"load\",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,h(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){Q.remove(this,e)}))}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,(function(){w.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Y.get(e,n)||Y.access(e,n,{empty:w.Callbacks(\"once memory\").add((function(){Y.remove(e,[t+\"queue\",n])}))})}}),w.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length\\x20\\t\\r\\n\\f]*)/i,ge=/^$|^module$|\\/(?:java|ecma)script/i;fe=v.createDocumentFragment().appendChild(v.createElement(\"div\")),(pe=v.createElement(\"input\")).setAttribute(\"type\",\"radio\"),pe.setAttribute(\"checked\",\"checked\"),pe.setAttribute(\"name\",\"t\"),fe.appendChild(pe),d.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\"\",d.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue,fe.innerHTML=\"\",d.option=!!fe.lastChild;var ve={thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ye(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?w.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n\",\"\"]);var xe=/<|&#?\\w+;/;function be(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d-1)i&&i.push(o);else if(l=ie(o),a=ye(f.appendChild(o),\"script\"),l&&me(a),n)for(c=0;o=a[c++];)ge.test(o.type||\"\")&&n.push(o);return f}var we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\.(.+)|)/;function Ee(){return!0}function Se(){return!1}function ke(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==(\"focus\"===t)}function Ae(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each((function(){w.event.add(this,t,i,r,n)}))}function Ne(e,t,n){n?(Y.set(e,t,!1),w.event.add(e,t,{namespace:!1,handler:function(e){var r,o,a=Y.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(w.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=i.call(arguments),Y.set(this,t,a),r=n(this,t),this[t](),a!==(o=Y.get(this,t))||r?Y.set(this,t,!1):o={},a!==o)return e.stopImmediatePropagation(),e.preventDefault(),o.value}else a.length&&(Y.set(this,t,{value:w.event.trigger(w.extend(a[0],w.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,t)&&w.event.add(e,t,Ee)}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(e);if(V(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(re,i),n.guid||(n.guid=w.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return void 0!==w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){for(l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)if(d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||w.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&Y.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=w.event.fix(e),l=(Y.get(this,\"events\")||Object.create(null))[u.type]||[],c=w.event.special[u.type]||{};for(s[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\\s*$/g;function Le(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&w(e).children(\"tbody\")[0]||e}function He(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Oe(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Pe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n1&&\"string\"==typeof v&&!d.checkClone&&je.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Me(o,t,n,r)}));if(p&&(a=(i=be(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=w.map(ye(i,\"script\"),He)).length;f0&&me(a,!u&&ye(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return $(this,(function(e){return void 0===e?w.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Me(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)}))},prepend:function(){return Me(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Me(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Me(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return w.clone(this,e,t)}))},html:function(e){return $(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!De.test(e)&&!ve[(he.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n3,re.removeChild(t)),s}}))}();var Ue=[\"Webkit\",\"Moz\",\"ms\"],Xe=v.createElement(\"div\").style,Ve={};function Ge(e){var t=w.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;n--;)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ke={letterSpacing:\"0\",fontWeight:\"400\"};function Ze(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function et(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=w.css(e,n+ne[a],!0,i)),r?(\"content\"===n&&(u-=w.css(e,\"padding\"+ne[a],!0,i)),\"margin\"!==n&&(u-=w.css(e,\"border\"+ne[a]+\"Width\",!0,i))):(u+=w.css(e,\"padding\"+ne[a],!0,i),\"padding\"!==n?u+=w.css(e,\"border\"+ne[a]+\"Width\",!0,i):s+=w.css(e,\"border\"+ne[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===w.css(e,\"boxSizing\",!1,r),o=i,a=_e(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(We.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===w.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===w.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(w.cssNumber[s]?\"\":\"px\")),d.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Qe.test(t)||(t=Ge(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),\"normal\"===i&&t in Ke&&(i=Ke[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each([\"height\",\"width\"],(function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!Ye.test(w.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,t,r):Be(e,Je,(function(){return tt(e,t,r)}))},set:function(e,n,r){var i,o=Fe(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===w.css(e,\"boxSizing\",!1,o),u=r?et(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-et(e,t,\"border\",!1,o)-.5)),u&&(i=te.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=w.css(e,t)),Ze(0,n,u)}}})),w.cssHooks.marginLeft=ze(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(_e(e,\"marginLeft\"))||e.getBoundingClientRect().left-Be(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),w.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+ne[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(w.cssHooks[e+t].set=Ze)})),w.fn.extend({css:function(e,t){return $(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a1)}}),w.Tween=nt,nt.prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?\"\":\"px\")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}},nt.prototype.init.prototype=nt.prototype,nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||!w.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},nt.propHooks.scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},w.fx=nt.prototype.init,w.fx.step={};var rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){it&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(st):e.setTimeout(st,w.fx.interval),w.fx.tick())}function ut(){return e.setTimeout((function(){rt=void 0})),rt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){w.removeAttr(this,e)}))}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=dt[t]||w.find.attr;dt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=dt[a],dt[a]=i,i=null!=n(e,t,r)?a:null,dt[a]=o),i}}));var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(\" \")}function yt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function mt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}w.fn.extend({prop:function(e,t){return $(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[w.propFix[e]||e]}))}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,\"tabindex\");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){w.propFix[this.toLowerCase()]=this})),w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).addClass(e.call(this,t,yt(this)))}));if((t=mt(e)).length)for(;n=this[u++];)if(i=yt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).removeClass(e.call(this,t,yt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=mt(e)).length)for(;n=this[u++];)if(i=yt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){w(this).toggleClass(e.call(this,n,yt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=w(this),a=mt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=yt(this))&&Y.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":Y.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+vt(yt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var xt=/\\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=w.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(xt,\"\"):null==n?\"\":n:void 0}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,\"value\");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each([\"radio\",\"checkbox\"],(function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},d.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,y=[r||v],m=c.call(t,\"type\")?t.type:t,x=c.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=d=s=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!bt.test(m+w.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[w.expando]?t:new w.Event(m,\"object\"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,bt.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?u:p.bindType||m,(f=(Y.get(a,\"events\")||Object.create(null))[t.type]&&Y.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&V(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!V(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),w.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,wt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,wt),w.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each((function(){w.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),d.focusin||w.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t);i||r.addEventListener(e,n,!0),Y.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t)-1;i?Y.access(r,t,i):(r.removeEventListener(e,n,!0),Y.remove(r,t))}}}));var Tt=e.location,Ct={guid:Date.now()},Et=/\\?/;w.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||w.error(\"Invalid XML: \"+t),n};var St=/\\[\\]$/,kt=/\\r?\\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,(function(t,i){n||St.test(e)?r(e,i):Dt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)Dt(e+\"[\"+i+\"]\",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,(function(){i(this.name,this.value)}));else for(n in e)Dt(n,e[n],t,i);return r.join(\"&\")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=w.prop(this,\"elements\");return e?w.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!w(this).is(\":disabled\")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!de.test(e))})).map((function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,(function(e){return{name:t.name,value:e.replace(kt,\"\\r\\n\")}})):{name:t.name,value:n.replace(kt,\"\\r\\n\")}})).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\\/\\//,Rt={},Mt={},It=\"*/\".concat(\"*\"),Wt=v.createElement(\"a\");function Ft(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(P)||[];if(h(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Bt(e,t,n,r){var i={},o=e===Mt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],(function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function $t(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}Wt.href=Tt.href,w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":It,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,w.ajaxSettings),t):$t(w.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=w.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?w(h):w.event,y=w.Deferred(),m=w.Callbacks(\"once memory\"),x=d.statusCode||{},b={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Ht.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),S(0,t),this}};if(y.promise(E),d.url=((t||d.url||Tt.href)+\"\").replace(Pt,Tt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=Wt.protocol+\"//\"+Wt.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=w.param(d.data,d.traditional)),Bt(Rt,d,n,E),l)return E;for(f in(c=w.event&&d.global)&&0==w.active++&&w.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Ot.test(d.type),i=d.url.replace(qt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(jt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Et.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(Lt,\"$1\"),p=(Et.test(i)?\"&\":\"?\")+\"_=\"+Ct.guid+++p),d.url=i+p),d.ifModified&&(w.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",w.lastModified[i]),w.etag[i]&&E.setRequestHeader(\"If-None-Match\",w.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",d.contentType),E.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+It+\"; q=0.01\":\"\"):d.accepts[\"*\"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(C=\"abort\",m.add(d.complete),E.done(d.success),E.fail(d.error),r=Bt(Mt,d,n,E)){if(E.readyState=1,c&&g.trigger(\"ajaxSend\",[E,d]),l)return E;d.async&&d.timeout>0&&(s=e.setTimeout((function(){E.abort(\"timeout\")}),d.timeout));try{l=!1,r.send(b,S)}catch(e){if(l)throw e;S(-1,e)}}else S(-1,\"No Transport\");function S(t,n,a,u){var f,p,v,b,T,C=n;l||(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||\"\",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,a&&(b=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,a)),!f&&w.inArray(\"script\",d.dataTypes)>-1&&(d.converters[\"text script\"]=function(){}),b=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(d,b,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(w.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(w.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=b.state,p=b.data,f=!(v=b.error))):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",f?y.resolveWith(h,[p,C,E]):y.rejectWith(h,[E,C,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?\"ajaxSuccess\":\"ajaxError\",[E,d,f?p:v]),m.fireWith(h,[E,C]),c&&(g.trigger(\"ajaxComplete\",[E,d]),--w.active||w.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,\"json\")},getScript:function(e,t){return w.get(e,void 0,t,\"script\")}}),w.each([\"get\",\"post\"],(function(e,t){w[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}})),w.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),w._evalUrl=function(e,t,n){return w.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){w.globalEval(e,t,n)}})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){w(this).wrapInner(e.call(this,t))})):this.each((function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){w(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){w(this).replaceWith(this.childNodes)})),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=w.ajaxSettings.xhr();d.cors=!!zt&&\"withCredentials\"in zt,d.ajax=zt=!!zt,w.ajaxTransport((function(t){var n,r;if(d.cors||zt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(_t[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout((function(){n&&r()}))},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),w.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),w.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),w.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=w(\"\n "},"metadata":{}},{"output_type":"display_data","data":{"text/html":"
"},"metadata":{}}]},{"cell_type":"code","source":"# mean rainfall per week\n\ndf_som['Mean_weekly_rainfall'] = df_som.groupby(['WeekNum'])['precipitation'].transform(np.mean)\n\ndf_som.head(4)","metadata":{"id":"AsN95lbB0eWH","outputId":"d4d2a657-c59f-4cf3-e995-25d137b03ccd","execution":{"iopub.status.busy":"2021-08-07T17:17:10.310210Z","iopub.execute_input":"2021-08-07T17:17:10.310550Z","iopub.status.idle":"2021-08-07T17:17:10.329492Z","shell.execute_reply.started":"2021-08-07T17:17:10.310514Z","shell.execute_reply":"2021-08-07T17:17:10.328539Z"},"trusted":true},"execution_count":10,"outputs":[{"execution_count":10,"output_type":"execute_result","data":{"text/plain":" YearWeek Date precipitation Month Month_Name WeekNum Quarter Day \\\n0 198101 1980-12-29 90.273059 12 Dec 1 4 29 \n1 198102 1981-01-05 90.785433 1 Jan 2 1 5 \n2 198103 1981-01-12 80.341648 1 Jan 3 1 12 \n3 198104 1981-01-19 15.066109 1 Jan 4 1 19 \n\n WeekinMonth Mean_weekly_rainfall \n0 5 31.787728 \n1 1 31.647279 \n2 2 22.705327 \n3 3 27.348557 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
YearWeekDateprecipitationMonthMonth_NameWeekNumQuarterDayWeekinMonthMean_weekly_rainfall
01981011980-12-2990.27305912Dec1429531.787728
11981021981-01-0590.7854331Jan215131.647279
21981031981-01-1280.3416481Jan3112222.705327
31981041981-01-1915.0661091Jan4119327.348557
\n
"},"metadata":{}}]},{"cell_type":"code","source":"df_som[13:].head()","metadata":{"id":"ygcUyG2rO7se","outputId":"847c37d3-f27f-4f50-9bf8-459e1b0e862f","execution":{"iopub.status.busy":"2021-08-07T17:17:10.330771Z","iopub.execute_input":"2021-08-07T17:17:10.331115Z","iopub.status.idle":"2021-08-07T17:17:10.346729Z","shell.execute_reply.started":"2021-08-07T17:17:10.331081Z","shell.execute_reply":"2021-08-07T17:17:10.345734Z"},"trusted":true},"execution_count":11,"outputs":[{"execution_count":11,"output_type":"execute_result","data":{"text/plain":" YearWeek Date precipitation Month Month_Name WeekNum Quarter \\\n13 198114 1981-03-30 0.000000 3 Mar 14 1 \n14 198115 1981-04-06 27.625159 4 Apr 15 2 \n15 198116 1981-04-13 43.599689 4 Apr 16 2 \n16 198117 1981-04-20 11.764884 4 Apr 17 2 \n17 198118 1981-04-27 21.110897 4 Apr 18 2 \n\n Day WeekinMonth Mean_weekly_rainfall \n13 30 5 22.032486 \n14 6 1 26.005031 \n15 13 2 31.457508 \n16 20 3 34.429602 \n17 27 4 43.281824 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
YearWeekDateprecipitationMonthMonth_NameWeekNumQuarterDayWeekinMonthMean_weekly_rainfall
131981141981-03-300.0000003Mar14130522.032486
141981151981-04-0627.6251594Apr1526126.005031
151981161981-04-1343.5996894Apr16213231.457508
161981171981-04-2011.7648844Apr17220334.429602
171981181981-04-2721.1108974Apr18227443.281824
\n
"},"metadata":{}}]},{"cell_type":"code","source":"# rain season flag\ndf_som['Rain_Season'] = (df_som['Quarter'] == 2) | (df_som['Quarter'] == 4) \ndf_som[\"Rain_Season\"] = df_som[\"Rain_Season\"].astype(int)\ndf_som[10:].head()\n","metadata":{"id":"9GqGADh7mStV","outputId":"f6d24f41-85de-47b5-c29c-03408b6aa8c5","execution":{"iopub.status.busy":"2021-08-07T17:17:10.348024Z","iopub.execute_input":"2021-08-07T17:17:10.348528Z","iopub.status.idle":"2021-08-07T17:17:10.380869Z","shell.execute_reply.started":"2021-08-07T17:17:10.348476Z","shell.execute_reply":"2021-08-07T17:17:10.379825Z"},"trusted":true},"execution_count":12,"outputs":[{"execution_count":12,"output_type":"execute_result","data":{"text/plain":" YearWeek Date precipitation Month Month_Name WeekNum Quarter \\\n10 198111 1981-03-09 8.453195 3 Mar 11 1 \n11 198112 1981-03-16 21.932249 3 Mar 12 1 \n12 198113 1981-03-23 29.246836 3 Mar 13 1 \n13 198114 1981-03-30 0.000000 3 Mar 14 1 \n14 198115 1981-04-06 27.625159 4 Apr 15 2 \n\n Day WeekinMonth Mean_weekly_rainfall Rain_Season \n10 9 2 16.987980 0 \n11 16 3 21.840048 0 \n12 23 4 27.136159 0 \n13 30 5 22.032486 0 \n14 6 1 26.005031 1 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
YearWeekDateprecipitationMonthMonth_NameWeekNumQuarterDayWeekinMonthMean_weekly_rainfallRain_Season
101981111981-03-098.4531953Mar1119216.9879800
111981121981-03-1621.9322493Mar12116321.8400480
121981131981-03-2329.2468363Mar13123427.1361590
131981141981-03-300.0000003Mar14130522.0324860
141981151981-04-0627.6251594Apr1526126.0050311
\n
"},"metadata":{}}]},{"cell_type":"code","source":"print(len(df_som[(df_som['Rain_Season'] == 1)]))","metadata":{"id":"jfM4jypM6r5m","outputId":"12e25a57-8c96-4604-a5fe-d3becfe6bcbb","execution":{"iopub.status.busy":"2021-08-07T17:17:10.382075Z","iopub.execute_input":"2021-08-07T17:17:10.382587Z","iopub.status.idle":"2021-08-07T17:17:10.389995Z","shell.execute_reply.started":"2021-08-07T17:17:10.382491Z","shell.execute_reply":"2021-08-07T17:17:10.388922Z"},"trusted":true},"execution_count":13,"outputs":[{"name":"stdout","text":"1060\n","output_type":"stream"}]},{"cell_type":"markdown","source":"# **If the rainfall is less than mean weekly rainfall then we say Drought possibility**","metadata":{}},{"cell_type":"code","source":"# boolean condition if rain season flag and rainfall < mean weekly rainfall == drought\ndf_som['Drought'] = (df_som['Rain_Season'] == 1) & (df_som['precipitation'] < df_som['Mean_weekly_rainfall']) \ndf_som[\"Drought\"] = df_som[\"Drought\"].astype(int)\ndf_som[10:].head()\n","metadata":{"id":"WMkn5H-UmUrh","outputId":"ebb8fb06-c0d9-4b6c-eda5-366cfab32003","execution":{"iopub.status.busy":"2021-08-07T17:17:10.391596Z","iopub.execute_input":"2021-08-07T17:17:10.392292Z","iopub.status.idle":"2021-08-07T17:17:10.411718Z","shell.execute_reply.started":"2021-08-07T17:17:10.392251Z","shell.execute_reply":"2021-08-07T17:17:10.410938Z"},"trusted":true},"execution_count":14,"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":" YearWeek Date precipitation Month Month_Name WeekNum Quarter \\\n10 198111 1981-03-09 8.453195 3 Mar 11 1 \n11 198112 1981-03-16 21.932249 3 Mar 12 1 \n12 198113 1981-03-23 29.246836 3 Mar 13 1 \n13 198114 1981-03-30 0.000000 3 Mar 14 1 \n14 198115 1981-04-06 27.625159 4 Apr 15 2 \n\n Day WeekinMonth Mean_weekly_rainfall Rain_Season Drought \n10 9 2 16.987980 0 0 \n11 16 3 21.840048 0 0 \n12 23 4 27.136159 0 0 \n13 30 5 22.032486 0 0 \n14 6 1 26.005031 1 0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
YearWeekDateprecipitationMonthMonth_NameWeekNumQuarterDayWeekinMonthMean_weekly_rainfallRain_SeasonDrought
101981111981-03-098.4531953Mar1119216.98798000
111981121981-03-1621.9322493Mar12116321.84004800
121981131981-03-2329.2468363Mar13123427.13615900
131981141981-03-300.0000003Mar14130522.03248600
141981151981-04-0627.6251594Apr1526126.00503110
\n
"},"metadata":{}}]},{"cell_type":"code","source":"df_som.head()","metadata":{"id":"TaCdQhn2RfPX","outputId":"31190cb3-732c-4a62-db55-d548a336a6a2","execution":{"iopub.status.busy":"2021-08-07T17:17:10.412757Z","iopub.execute_input":"2021-08-07T17:17:10.413097Z","iopub.status.idle":"2021-08-07T17:17:10.426882Z","shell.execute_reply.started":"2021-08-07T17:17:10.413064Z","shell.execute_reply":"2021-08-07T17:17:10.425899Z"},"trusted":true},"execution_count":15,"outputs":[{"execution_count":15,"output_type":"execute_result","data":{"text/plain":" YearWeek Date precipitation Month Month_Name WeekNum Quarter Day \\\n0 198101 1980-12-29 90.273059 12 Dec 1 4 29 \n1 198102 1981-01-05 90.785433 1 Jan 2 1 5 \n2 198103 1981-01-12 80.341648 1 Jan 3 1 12 \n3 198104 1981-01-19 15.066109 1 Jan 4 1 19 \n4 198105 1981-01-26 49.890175 1 Jan 5 1 26 \n\n WeekinMonth Mean_weekly_rainfall Rain_Season Drought \n0 5 31.787728 1 0 \n1 1 31.647279 0 0 \n2 2 22.705327 0 0 \n3 3 27.348557 0 0 \n4 4 19.190386 0 0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
YearWeekDateprecipitationMonthMonth_NameWeekNumQuarterDayWeekinMonthMean_weekly_rainfallRain_SeasonDrought
01981011980-12-2990.27305912Dec1429531.78772810
11981021981-01-0590.7854331Jan215131.64727900
21981031981-01-1280.3416481Jan3112222.70532700
31981041981-01-1915.0661091Jan4119327.34855700
41981051981-01-2649.8901751Jan5126419.19038600
\n
"},"metadata":{}}]},{"cell_type":"code","source":"df_som[(df_som['Rain_Season'] == 1) & (df_som['precipitation'] < df_som['Mean_weekly_rainfall'])]","metadata":{"id":"LfYRyv3lRLI9","outputId":"c20bf86f-94f6-42d6-b2ba-dfb955ec23fa","execution":{"iopub.status.busy":"2021-08-07T17:17:10.428475Z","iopub.execute_input":"2021-08-07T17:17:10.428991Z","iopub.status.idle":"2021-08-07T17:17:10.456330Z","shell.execute_reply.started":"2021-08-07T17:17:10.428929Z","shell.execute_reply":"2021-08-07T17:17:10.455281Z"},"trusted":true},"execution_count":16,"outputs":[{"execution_count":16,"output_type":"execute_result","data":{"text/plain":" YearWeek Date precipitation Month Month_Name WeekNum Quarter \\\n16 198117 1981-04-20 11.764884 4 Apr 17 2 \n17 198118 1981-04-27 21.110897 4 Apr 18 2 \n18 198119 1981-05-04 31.489661 5 May 19 2 \n19 198120 1981-05-11 25.265108 5 May 20 2 \n21 198122 1981-05-25 52.621233 5 May 22 2 \n... ... ... ... ... ... ... ... \n2115 202121 2021-05-24 33.857197 5 May 21 2 \n2116 202122 2021-05-31 44.641217 5 May 22 2 \n2117 202123 2021-06-07 15.350595 6 Jun 23 2 \n2119 202125 2021-06-21 23.071275 6 Jun 25 2 \n2120 202126 2021-06-28 12.125267 6 Jun 26 2 \n\n Day WeekinMonth Mean_weekly_rainfall Rain_Season Drought \n16 20 3 34.429602 1 1 \n17 27 4 43.281824 1 1 \n18 4 1 48.817535 1 1 \n19 11 2 60.300840 1 1 \n21 25 4 54.529465 1 1 \n... ... ... ... ... ... \n2115 24 4 55.813048 1 1 \n2116 31 5 54.529465 1 1 \n2117 7 1 70.599735 1 1 \n2119 21 3 63.328420 1 1 \n2120 28 4 58.610165 1 1 \n\n[597 rows x 12 columns]","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
YearWeekDateprecipitationMonthMonth_NameWeekNumQuarterDayWeekinMonthMean_weekly_rainfallRain_SeasonDrought
161981171981-04-2011.7648844Apr17220334.42960211
171981181981-04-2721.1108974Apr18227443.28182411
181981191981-05-0431.4896615May1924148.81753511
191981201981-05-1125.2651085May20211260.30084011
211981221981-05-2552.6212335May22225454.52946511
.......................................
21152021212021-05-2433.8571975May21224455.81304811
21162021222021-05-3144.6412175May22231554.52946511
21172021232021-06-0715.3505956Jun2327170.59973511
21192021252021-06-2123.0712756Jun25221363.32842011
21202021262021-06-2812.1252676Jun26228458.61016511
\n

597 rows × 12 columns

\n
"},"metadata":{}}]},{"cell_type":"markdown","source":"# Exploratory Analysis","metadata":{"id":"D1P262duzEkK"}},{"cell_type":"code","source":"# load monthly rainfall data\n\nfile = '../input/malaysia-14-stations/KOTA_KINABALU_INTERNATIONAL_.csv'\n\ndf_monthly = pd.read_csv(file, \n usecols=['Date','precipitation'],\n parse_dates=['Date'], dayfirst=True)\ndf_monthly['Month_Name'] = df_monthly['Date'].dt.strftime('%b')\ndf_monthly['Year'] = df_monthly['Date'].dt.year\ndf_monthly['Mean_monthly_rainfall'] = df_monthly.groupby(['Month_Name'])['precipitation'].transform(np.mean)\ndf_monthly['Quarter'] = df_monthly.apply(lambda x: x['Date'].quarter, axis=1)\ndf_monthly['Year_Quarter'] = df_monthly[['Year','Quarter']].astype(str).apply(''.join,1)\ndf_monthly['Rain_Season'] = (df_monthly['Quarter'] == 2) | (df_monthly['Quarter'] == 4) \ndf_monthly[\"Rain_Season\"] = df_monthly[\"Rain_Season\"].astype(int)\ndf_monthly['Drought'] = (df_monthly['Rain_Season'] == 1) & (df_monthly['precipitation'] < df_monthly['Mean_monthly_rainfall']) \ndf_monthly[\"Drought\"] = df_monthly[\"Drought\"].astype(int)\n\ndf_monthly.head()","metadata":{"id":"G6wLzCFnUjWI","outputId":"9672d3a3-11d3-443a-ded0-565b21145a57","execution":{"iopub.status.busy":"2021-08-07T17:17:10.457785Z","iopub.execute_input":"2021-08-07T17:17:10.458124Z","iopub.status.idle":"2021-08-07T17:17:10.966632Z","shell.execute_reply.started":"2021-08-07T17:17:10.458089Z","shell.execute_reply":"2021-08-07T17:17:10.965685Z"},"trusted":true},"execution_count":17,"outputs":[{"execution_count":17,"output_type":"execute_result","data":{"text/plain":" Date precipitation Month_Name Year Mean_monthly_rainfall Quarter \\\n0 1981-01-01 6.677426 Jan 1981 3.996733 1 \n1 1981-01-02 13.530575 Jan 1981 3.996733 1 \n2 1981-01-03 61.055325 Jan 1981 3.996733 1 \n3 1981-01-04 9.009733 Jan 1981 3.996733 1 \n4 1981-01-05 20.208002 Jan 1981 3.996733 1 \n\n Year_Quarter Rain_Season Drought \n0 19811 0 0 \n1 19811 0 0 \n2 19811 0 0 \n3 19811 0 0 \n4 19811 0 0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
DateprecipitationMonth_NameYearMean_monthly_rainfallQuarterYear_QuarterRain_SeasonDrought
01981-01-016.677426Jan19813.99673311981100
11981-01-0213.530575Jan19813.99673311981100
21981-01-0361.055325Jan19813.99673311981100
31981-01-049.009733Jan19813.99673311981100
41981-01-0520.208002Jan19813.99673311981100
\n
"},"metadata":{}}]},{"cell_type":"code","source":"df_monthly.head()","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:18:29.490119Z","iopub.execute_input":"2021-08-07T17:18:29.490666Z","iopub.status.idle":"2021-08-07T17:18:29.521419Z","shell.execute_reply.started":"2021-08-07T17:18:29.490611Z","shell.execute_reply":"2021-08-07T17:18:29.520114Z"},"trusted":true},"execution_count":45,"outputs":[{"execution_count":45,"output_type":"execute_result","data":{"text/plain":" Date precipitation Month_Name Year Mean_monthly_rainfall Quarter \\\n0 1981-01-01 6.677426 Jan 1981 3.996733 1 \n1 1981-01-02 13.530575 Jan 1981 3.996733 1 \n2 1981-01-03 61.055325 Jan 1981 3.996733 1 \n3 1981-01-04 9.009733 Jan 1981 3.996733 1 \n4 1981-01-05 20.208002 Jan 1981 3.996733 1 \n\n Year_Quarter Rain_Season Drought \n0 19811 0 0 \n1 19811 0 0 \n2 19811 0 0 \n3 19811 0 0 \n4 19811 0 0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
DateprecipitationMonth_NameYearMean_monthly_rainfallQuarterYear_QuarterRain_SeasonDrought
01981-01-016.677426Jan19813.99673311981100
11981-01-0213.530575Jan19813.99673311981100
21981-01-0361.055325Jan19813.99673311981100
31981-01-049.009733Jan19813.99673311981100
41981-01-0520.208002Jan19813.99673311981100
\n
"},"metadata":{}}]},{"cell_type":"code","source":"from datetime import datetime, date ","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:17:10.968186Z","iopub.execute_input":"2021-08-07T17:17:10.968523Z","iopub.status.idle":"2021-08-07T17:17:10.972725Z","shell.execute_reply.started":"2021-08-07T17:17:10.968488Z","shell.execute_reply":"2021-08-07T17:17:10.971821Z"},"trusted":true},"execution_count":18,"outputs":[]},{"cell_type":"code","source":"# date1 = date(1983, 1, 1)\n# date2 = ","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:17:10.974275Z","iopub.execute_input":"2021-08-07T17:17:10.974670Z","iopub.status.idle":"2021-08-07T17:17:10.982192Z","shell.execute_reply.started":"2021-08-07T17:17:10.974631Z","shell.execute_reply":"2021-08-07T17:17:10.981461Z"},"trusted":true},"execution_count":19,"outputs":[]},{"cell_type":"code","source":"# rainfall amount by different aggregation level\ncustom_dict = {'Jan': 0, 'Feb': 1, 'Mar': 3, 'Apr':4, 'May':5, 'Jun':6,\n 'Jul':7, 'Aug':8, 'Sep':9, 'Oct':10, 'Nov':11, 'Dec':12} \n\nyear = df_monthly.groupby('Year').agg({'precipitation': 'sum'}).sort_index()\nmonth = df_monthly.groupby('Month_Name').agg({'precipitation': 'mean'}).sort_values(by=['Month_Name'], \n key=lambda x: x.map(custom_dict))\n\nquarter = df_monthly.groupby('Quarter').agg({'precipitation': 'mean'}).sort_index()\n\nfig, ax = plt.subplots(1, 3, figsize=(14, 4))\nfig.suptitle('Rainfall Amount By Different Date Aggregations', fontsize=20)\n\nax[0].bar(month.index.values, month['precipitation'], label='Monthly')\nax[0].xaxis.set_tick_params(rotation=80)\nax[0].set_ylabel('precipitation');\n\nax[1].bar(quarter.index.values, quarter['precipitation'], label='Quarter')\nax[1].xaxis.set_tick_params(rotation=70);\n\nax[2].bar(year.index.values, year['precipitation'], label='Yearly')\n\nfor i in range(3):\n ax[i].set_xlim([1981,2020])","metadata":{"id":"SmBQdXftZ_GK","outputId":"2b18fef5-eb02-46ae-b49a-efe45fef3863","execution":{"iopub.status.busy":"2021-08-07T17:17:10.983502Z","iopub.execute_input":"2021-08-07T17:17:10.983883Z","iopub.status.idle":"2021-08-07T17:17:11.217468Z","shell.execute_reply.started":"2021-08-07T17:17:10.983848Z","shell.execute_reply":"2021-08-07T17:17:11.216644Z"},"trusted":true},"execution_count":20,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_fin = df_monthly.groupby(['Year_Quarter'], as_index=False)['precipitation', 'Mean_monthly_rainfall'].sum()\n\ndf_fin.head()","metadata":{"id":"YzUmygijpeab","outputId":"a492167d-db32-4d06-e42a-00054633714c","execution":{"iopub.status.busy":"2021-08-07T17:17:11.218737Z","iopub.execute_input":"2021-08-07T17:17:11.219086Z","iopub.status.idle":"2021-08-07T17:17:11.237298Z","shell.execute_reply.started":"2021-08-07T17:17:11.219053Z","shell.execute_reply":"2021-08-07T17:17:11.236314Z"},"trusted":true},"execution_count":21,"outputs":[{"execution_count":21,"output_type":"execute_result","data":{"text/plain":" Year_Quarter precipitation Mean_monthly_rainfall\n0 19811 471.757478 276.055130\n1 19812 567.290775 633.394757\n2 19813 744.589328 813.892012\n3 19814 836.941239 868.891105\n4 19821 241.051856 276.055130","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Year_QuarterprecipitationMean_monthly_rainfall
019811471.757478276.055130
119812567.290775633.394757
219813744.589328813.892012
319814836.941239868.891105
419821241.051856276.055130
\n
"},"metadata":{}}]},{"cell_type":"code","source":"# plotly visualization\n\nimport plotly.express as px\n\nfig = px.line(df_monthly, \n x = 'Date',\n y='precipitation',\n title=\"Monthly Rainfall (mm) Kota_Kinabalu 1983-2021\",\n labels='Monthly Rainfall (mm)')\n\n\n\nfig.update_layout(title=\"Monthly Rainfall (mm) Kota_Kinabalu 1983-2021\",\n # remove the legent\n showlegend=False,\n \n # make y-axis invisible\n yaxis={\"visible\":True},\n \n \n # adjust the margin, so that annotations fit into the canvas\n margin={\"l\":50, \"r\": 100})\nfig.show()","metadata":{"id":"kcvr7xGY1-Xh","outputId":"59aca315-a1cb-415d-8fee-6d3ab97f2916","execution":{"iopub.status.busy":"2021-08-07T17:17:11.238625Z","iopub.execute_input":"2021-08-07T17:17:11.238962Z","iopub.status.idle":"2021-08-07T17:17:12.690694Z","shell.execute_reply.started":"2021-08-07T17:17:11.238929Z","shell.execute_reply":"2021-08-07T17:17:12.689958Z"},"trusted":true},"execution_count":22,"outputs":[{"output_type":"display_data","data":{"text/html":"
"},"metadata":{}}]},{"cell_type":"code","source":"%matplotlib inline","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:17:12.694557Z","iopub.execute_input":"2021-08-07T17:17:12.695034Z","iopub.status.idle":"2021-08-07T17:17:12.700391Z","shell.execute_reply.started":"2021-08-07T17:17:12.694995Z","shell.execute_reply":"2021-08-07T17:17:12.699403Z"},"trusted":true},"execution_count":23,"outputs":[]},{"cell_type":"code","source":"# plot\nfig, ax1 = plt.subplots(figsize=(20, 8))\n\nsns.set(font_scale=1.3)\n\ndf_vis = df_monthly.set_index('Date')\n\ndf_vis['precipitation'].plot(kind='line', color='blue', ax=ax1)\ndf_vis['Mean_monthly_rainfall'].plot(kind='line',linestyle='-.',linewidth=1, color='crimson', ax=ax1)\n\n\nax1.set_xlabel('Date', fontsize=18, labelpad=10)\nax1.set_ylabel('precipitation', fontsize=18, labelpad=10)\ndate_max = '2016-10-24'\n\nval_max = 75\nplt.annotate(\"Worst Drought 2016/17\", xy=(date_max, val_max), xytext=('2014-01-01', 175), arrowprops=dict(facecolor='black'))\n\nplt.title('Monthly Rainfall (mm) Kota Kinbalu 1983-2021', fontdict={'fontsize':20}, pad=15)\nplt.legend(loc='upper left')\nplt.margins(0.01)\nplt.show()","metadata":{"id":"0BoY3kQ5EWMx","outputId":"f3acc9ac-d295-4def-f38a-1b84caf3225c","execution":{"iopub.status.busy":"2021-08-07T17:17:12.702241Z","iopub.execute_input":"2021-08-07T17:17:12.702767Z","iopub.status.idle":"2021-08-07T17:17:13.340953Z","shell.execute_reply.started":"2021-08-07T17:17:12.702728Z","shell.execute_reply":"2021-08-07T17:17:13.339990Z"},"trusted":true},"execution_count":24,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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aIOmL774Qh9+OFMLLbSYurq62TEaZMYM93appYYf58svv9T888/fmIJQNWutUql+ffjhTEkibAIAAABCore3N/8/QROKhbaPpo8++lgLLbSYurvZKYBqGGPU3e1ooYUW00cffRx0OQAAAAAapLhFUyQS2mgBJYR2axgYGFBXV3fQZQAtr6urm9NPAQAAgBD56quv8v87jqNoNBpgNWg2oQ2aJNGSCfAB+xEAAAAQLnMLesAnaEKxUAdNAAAAAACgMgRNGAlBE8p2zz13a8KE9ev+nGaaPgAAAABgnmw2O6gz8FgsRh9NGIStAWWbNGlz3XHHvTU954EHrtZvfrNNxfP+7LNPtf76a+uZZ56uuSYAAAAAQHXS6bT6+vryw/PNNx/daWCQjqALQP0NDAyos7Oz5uk4jiPHcer+nGaaPgAAAABgnkwmMyhoGjNmTIDVoBkRNLWggw/eX+PHj9d8882nv//9bmUyGW2++RY64oij1dXVlX98wQUX0j333K3u7m7dccc9+vTTT3ThhefriSf+o0wmo3h8FR122BFaZZVV89N+5ZWpuuyyi/Xyyy9KklZYYUUdc8wJWnHFlXTPPXfr7LPP0KOP/leSdOWVl+mhhx7Q3nvvqyuuuEyfffap1lprbR133EkaN25JSRr0nHvuuVt3332hJGn99deWJO233wHaf/+DdP/99+nWW2/Wu+9OUzQa1WqrfUuHH36Uxo9fRpK0zTabS5IOPfQASdK4cUvqzjvvHVKTJN1995264YZrNWPGB1psscW1004/0p577pVP2XfYYRv94Afba/bs2br//n+oo6NTW2+9rQ499DCafAIAAADACLLZLEETRkTQ1KIefPABbbHFlrr88qv03nvv6YwzTlVPzxj94heHe4/fr6233lYXX3x5/kBw6KEHauWV47rggkvU09Oju+66Qz//+YG69dbbteiii+nNN9/QwQfvr003naRLLrlCPT1jNHXqS8pkMsPW8dFHM3XXXXfozDPPViaT1TnnnKnjjz9Gf/7zdUPGnTRpcz311Ht68sl7dOON10uSYrEeSdLAQEr77LOflltueX3yyce6+eYbdeSRh+nmm/+qzs5O3XDDrdpjj1105pnnaPXV11AkUrqzuUcffURnnfU7HXLIYdpwwwl64YXndO65Z6unp0c77/zj/Hi33HKj9tprX1111fVKJF7VKaecqJVWWllbbrl1tS8JAAAAALS94qCpp6cnwGrQjAiaCtxyS4duvLGxq2T33dPaddd0xc9beOGFdfTRxykSiWi55ZbXxx8fpAsvPF8HHXSoJGnxxZfQUUcdk2/Fc889d6m/v1+nnPLb/BUBfvGLw/Wf//xb9913r/bYYy9df/01WnbZZXXSSafmn5drUTSc/v5+/eY3p2mppZaWJJ188unabbed9fzzz2nNNdcaNK7jOOru7lEkEtGiiy426LFtt90+//+CCy6kk08+TZMmbaRXXpmqNdZYUwsvvLAkaYEFFhzy3EI33HCtJk3aXLvvvme+/vfee0/XXXf1oKBp7bXX1R577OWNM153332nnnrqSYImAAAAABhBvYKmm26SurqknXf2ZXIIEEFTi/rmN1cbdJrXGmusqf7+Pn344QxJ0qqrfmNQh2yvvvqKPvnkY02aNGHQdFKplN5//z1JUiLxmr7//QkVdeS26KKL5kMmSVpuueU1//zza9q0t4cETSN5/fWErrrqCr3+ekKffz5bkmSt1cyZH2qNNdYsezrTpr2trbYaHBattdbauu66qzV37tx8s86VV44PGmfxxRfXrFmzyp4PAAAAAISRtXZQ0BSLxXyZ7u6756bvy+QQIIKmArvuWl3romZUvLNns1bLL7+Czjjj7CHjjhkzX6PKKqmvL6lf/vIQrbXWOjrxxFPU3d2t+eefX7vttrMGBgbqMs+hnaMbWZuty7wAAAAAoJ3UI2hC+6Dn4xb1yisvK5udF4y8+OIL6u52tOSSS5Ucf5VVVtUHH3ygBRZYQF//+vhBf4sssogkKR5fRU8//T/ZCiLkzz77TDNmzMgPv/PO2/ryyy+17LLLlRw/Gu0cVLckTZv2jmbPnq2DDvq51llnXS2zzLL68ssvB43X0eEGQ9ns8P1FSdKyyy6v559/btB9zz33rMaOHUcndQAAAABQo+IWTVwFHMUImlrUrFmz9X//d5amTXtHjz32iP70p8v0wx/+qERLHdcWW2ylJZZYQr/61eF66qknNWPGDL300gu68spL9fzzz0qS9thjL73zzts6/fST9dprr+q996br/vvv0+uvJ4ato7u72xv/Fb3yylSdfvrJWnXVb2jNNdcuOf5iiy2lOXM+00svvaDPP5+tvr6kxo1bUl1dXfrLX27WBx+8r2effUbnnvv7QacGLrjggppvvvn05JP/1Weffao5c+aUnP6ee+6lhx56QDfffIOmT5+ue+65S7feerP23HPvMtcsAAAAAGA4xphBQVN3d3eA1aAZcepci9pss83V2dmlAw7YR+l0RptttrkOPPCQYcd3HEeXXfYnXXrpRTrllJM0Z84XWmSRRbX66mtoq622lSSttNLKuuiiy3TppRfrwAP3UzQa0QorrKRjjz1h2OmOHTtO2267nY499leaNWuW1lhjLR1//EnDjr/aahO0zjqb6aijDtecOV9ov/0O0P77H6RTTvmtLrnkQt199x362tfG66ijjtYRR/xi0HN/9atjdcUVl+rmm2/U4osvrjvvvHfI9DfccCMdc8wJuuGGa3XxxRdoscUW0377HaAf/vBHo61SAAAAAMAoCJowGlPJaVKtJh6P20SidGucqVNf0VJLjXxFtWZ18MH7a9lll9UxxwwfADXClVdepoceekC33np72c95+mn3dt11hx/nyy+/1Pzzz19jdWikGTPe1Te/+Y2GznPKlCmaOHGiL9PK9X/fxofD0PJzO0F7YhtBOdhOMJLc54jJk9lOMLp2OJ7MmTNHa621lt5++21J0syZMzV27Niap8tn8nlaYTsxxjxjrS35zZ5T5wAAAAAAQFkikcigFk3Ddd+C8CJoAgAAAAAAZYlGo4OCpq6urgCrQTOij6YWdOmlVwZdgiRp//0P0v77HxR0GQAAAACABikOmmjRhGK0aAIAAAAAAGXp6OhQf3//oGGgEEETAAAAAAAoi7VWmUxGktu6yeR68QY8BE0AAAAAAKAsAwMD+f8dx1E6nQ6wGjQjgiYAAAAAAFCWwqApFovlWzcBOQRNAAAAAACgLMUtmrLZbIDVoBkRNAEAAAAAgLKkUqn8/wRNKIWgCaF18MH766yzfjfiOKeddrIOP/zQBlU0vCuvvEy77LJTxc/7058u1zbbbK71119bt9xyY1nPKV4v5awnAAAAAOFQeMU5giaUQtDUgk477WStv/7a+s1vjh/y2J13/k3rr7+2dthhmwAqa04PPni/1l9/7aDLqMnuu/9Ul19+VUXPeeON1/WnP12uo446Rvfe+4B22KHyoAoAAAAAChUHTdbaAKtBM+oIugBUZ9y4cXrkkcmaM2eOFlhggfz9d911h8aNGxdgZahEOj2gjo7OUcfr6elRT09PRdN+773pkqSNN96ES44CAAAA8EVfX1/+f8dxAqwEzYoWTS1q2WWX00orraz77rs3f98bb7yut99+W5tttuWgcZ944nHtu+9PtdFGG2j77bfWuef+XnPnzs0//uST/9XBB++vzTefqE03naCDD/6Zpk59edA01l9/bd1++1/1m9+coI03/p62224r3Xjj9WXXu8MO2+jKKy/TzTf/Vr/61QRttdUk3XbbLUqlUjr33LO02WYbadttN9dtt90y6Hkff/yxjj/+19p00wmaOPG7OvzwQzVt2jv5x++5525NmLC+nn/+We25567aaKPvat9991Qi8Zok6ZlnntZJJx2XX4b1119bp512cv751lr96U+Xa6utJmnzzTfW7353qvr6kiWX4Z577tKkSRMGHVgl6cILz9dee/1k1HXwzDNPa/3119Z//vNv/exne2nDDb+jf/7zPs2ZM0cnn3yCtt9+a2200Qb68Y931I03Xj/ol4HiU+dyp/TdfvtftcMOW2vTTSfomGOO0uefz86Pf/zxv5YkbbDBOlp//bU1Y8YMvfbaqzr88J9rq6021cYbf0/77LOHnnji8VFrBwAAAACJoAmjI2hqYdtvv6PuvvuO/PBdd92uTTedpPnnnz9/3//+96SOO+5obbvtdrrhhlt1+ulnaurUl3XGGaflx0kme/XDH/5IV155ja688mqNH7+Mjjji5/rii88Hze+qq67Quut+W9ddd7N2331PXXjhH/TCC8+XXe9f/nKzxo1bTsccc4N22WU3/d//na1jjjlKSy65lK666nrtsstPdN555+idd96W5IZAv/71Efrwwxn64x8v0hVXXC1rrQ4//NBBzTXT6bQuv/wS/epXx+qaa27QfPPNr5NOOk7ZbFarr76GjjnGPcXw3nsf0L33PqAjj/xV/rkPPfSAent7ddllf9Kpp/5Wkyc/rJtvLt2X0aRJm0uSJk9+qGDeA7rvvnu1/fbln5Z2wQV/0D77/Ey33nq71l9/Aw0MpLTCCivqrLP+Tzff/Fftt98Buuqqy3XvvXePOJ2XX35JL7zwnM4770Kdd94FSiRe1SWXXCTJPdWueLnHjh2ruXPnatKkzXXxxVfo2mtv0ne/+z0dffQRmj793bLrlyRr3T8AAAAA4ZJMzvthnqAJpRA0tbBJk7bQhx9+qJdffkl9fX26//77tN12Ow4a5+qrr9Ruu+2hnXbaWV//+nitvvoaOvro4/Twww9q9my39cvEiZto0qTNtcwyy2r55VfQsceeqEgkoiee+M+gaW222Rbabrsd9PWvj9cuu/xEX/va1/XUU0+WXe+6666njTfeXYsvPl4//ek+mn/++RWJRLT77ntq/Pjx2mOPvbTgggvqueeelSQ99dT/lEi8plNPPUOrrba6Vl45rtNOO1NffPGF7r//vvx0s9msjjzy11pjjTW13HLLa7/9DtD06e/qo49mqrOzU/PN5wZviy66mBZddLH8sCQttdTXdNhhR2iZZZbVBht8T5tsspmeeup/Jet3nJi23HIb3X33nfn7HnvsUfX2ztUWW2xZ8jml7Lvv/vre9zbUUkstrcUWW1yLLrqYfvrTfbTKKqtqqaWW1hZbbKXtt99J99//zxGn09XVrRNPPEXLL7+C1lhjTW2//U7516Onp2fIckejUa2zzrradtvttPzyK2j8+GW0//4Ha4UVVtTDDz9Ydv2S9Mwz0htvVPQUAAAAAG2gOGiimw4Uo4+mIr0XXK++i4a2aDFLLKKF/32Tei9wTxfrOWxPzf7+T2Q/njVkXOfnu+cfX/BvFyo99Q19ddApJee30GM3KjJ20apqjcVi2mKLLXXXXXdo7bXX1iKLLKo111xLL774fH6cV199RVOnvjzoimO5U7Lef3+6Fl54Yc2Y8YGuuOJSvfzyi5o1a7aszaqvr08zZ344aH4rrxwfNLz44otr1qyhyz+clVZaOf9/JBLRwgsvohVXXCl/nzFGCy+8iGbPdqf5zjtva5FFFtX48ePz4yy44IJafvkV8q2eJCka7dAKK6w4qC5JmjVrlpZccqkRa1p55ZUHDS+++GKD1l+xHXf8ofbYYxdNnz5d48eP191336lNN91MY8bMN+J8Cn3jG98cNJzNZnXDDdfqwQfv18cff6xUql/pdFrjxi054nSWW245dXbO69+pnNdj9uzZuvLKy/TMM0/ps88+VSaTUSqV0iqrrFp2/Tlz5lT8FAAAAAAtrre3N/+/4ziKRGi/gsEImor0HLaneg7bc8THcxb+900jTiv3eNfYRbXI6yO3TqnW9tvvqEMOOUBvvfVGydO3rLXae+/9tNlmWwx5bPHFl5AkHXXUL7Xwwovo6KOP0xJLjFVHR4cOOWR/DQwMDBq/MNRwGVlb/qUsOzoGb27GmJL3VXrVgmg0UnRwcxP1cmorvUzDz3+FFVbUaqutrrvvvkM//vGuevLJJ3TZZZVdDS4Wiw0avumm63XddVfr8MOP0korxdXT06O//OUWPfbYI1XUPvIyn376yfr444906KG/1FJLLaXu7m6dfPKJGhhIV7QMAAAAAMKJoAmjIWhqcaus8g197Wvj9cYbr+u88y4Y8ng8vqqmTXtHX//6+BLPlr744nO9887bOvzwX+k731lfkvTJJ5/os88+q2vd5VhuueU1a9Zn+dZDkvTFF1/o7bff0g47lN8nUi7MymQyikajNde1ww476eKLL1BXV5eWWWZZrb76GjVN77nnntV3v7uhtt12+/x9uSvG+e3555/VYYcdqQkTNpLkNnv94IP3teyyy9VlfgAAAADaS+GFpQiaUApbRBu4/PKr9I9/PKSFFlp4yGP773+gHn74IV100R/1xhuva/r06XrssUd05pmnS5Lmn38BLbzwwrrrrts1ffq7eumlF3Tiiceou7u70YsxxLe/vZ7i8VV08snH6+WXX9Lrryd08snHa8EFF9Tmm29V9nSWWmppSdJjjz2i2bNnD0rgq7HppptpYCCl66+/Rtttt0NN05KkZZZZVs8885SeffYZTZ/+ri677GK99NKLNU+3lPHjl9H99/9Db731pl5/PaGTTjpO6TStmQAAAACUpzho8uPHfLQXgqY2EIvFBl1prtC3v/0dXXDBJZo69WXtv//e2muv3XTZZRdrscUWk+T2lfS7352t6dPf1R577KLTTz9FP/rRrlpiibGNXISSjDE6++w/aNy4JXXYYYfogAP2kbVW559/cUVBWDy+inbbbQ+dddYZ2nrrSTr33LNqqstxHG2xxdYyxmjrrbetaVqStO++P9Oaa66lX/3qcP3sZ3vpiy++0K67/qTm6ZZy4omnKJ1Oa99999Svf32E1ltvfX3rW9+qy7wAAAAAtBdr7ZCgqbg7lDDLZKSJE6WHHw66kmCZSvvDaSXxeNwmEomSj02d+oqWWmqZBleEp592b9ddd/hxvvzyy2GDs2ZxzDFHqaurS6effmbQpQSi+HWcMeNdffOb32hoDVOmTNHEiRN9mVbuQhltfDgMLT+3E7QnthGUg+0EI8l9jpg8me0Eo2v140kmk9FJJ52kM890vwedccYZOu6443yZdjt8Jv/wQ2mppaRx49z/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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","source":"df_monthly.tail(50)","metadata":{"id":"aBUOoYxbDtEW","outputId":"943c602f-d11a-4827-b32d-b8de96bf3b2e","execution":{"iopub.status.busy":"2021-08-07T17:17:13.342398Z","iopub.execute_input":"2021-08-07T17:17:13.342740Z","iopub.status.idle":"2021-08-07T17:17:13.372110Z","shell.execute_reply.started":"2021-08-07T17:17:13.342703Z","shell.execute_reply":"2021-08-07T17:17:13.371096Z"},"trusted":true},"execution_count":25,"outputs":[{"execution_count":25,"output_type":"execute_result","data":{"text/plain":" Date precipitation Month_Name Year Mean_monthly_rainfall \\\n14741 2021-05-12 10.651196 May 2021 7.526247 \n14742 2021-05-13 5.325598 May 2021 7.526247 \n14743 2021-05-14 10.651196 May 2021 7.526247 \n14744 2021-05-15 10.651196 May 2021 7.526247 \n14745 2021-05-16 21.553934 May 2021 7.526247 \n14746 2021-05-17 21.553934 May 2021 7.526247 \n14747 2021-05-18 21.553934 May 2021 7.526247 \n14748 2021-05-19 53.884842 May 2021 7.526247 \n14749 2021-05-20 0.000000 May 2021 7.526247 \n14750 2021-05-21 20.036249 May 2021 7.526247 \n14751 2021-05-22 10.018125 May 2021 7.526247 \n14752 2021-05-23 0.000000 May 2021 7.526247 \n14753 2021-05-24 0.000000 May 2021 7.526247 \n14754 2021-05-25 0.000000 May 2021 7.526247 \n14755 2021-05-26 0.000000 May 2021 7.526247 \n14756 2021-05-27 8.464299 May 2021 7.526247 \n14757 2021-05-28 8.464299 May 2021 7.526247 \n14758 2021-05-29 16.928598 May 2021 7.526247 \n14759 2021-05-30 0.000000 May 2021 7.526247 \n14760 2021-05-31 8.464299 May 2021 7.526247 \n14761 2021-06-01 4.183891 Jun 2021 9.239898 \n14762 2021-06-02 4.183891 Jun 2021 9.239898 \n14763 2021-06-03 2.091946 Jun 2021 9.239898 \n14764 2021-06-04 4.183891 Jun 2021 9.239898 \n14765 2021-06-05 4.183891 Jun 2021 9.239898 \n14766 2021-06-06 17.349407 Jun 2021 9.239898 \n14767 2021-06-07 0.000000 Jun 2021 9.239898 \n14768 2021-06-08 0.000000 Jun 2021 9.239898 \n14769 2021-06-09 0.000000 Jun 2021 9.239898 \n14770 2021-06-10 0.000000 Jun 2021 9.239898 \n14771 2021-06-11 0.000000 Jun 2021 9.239898 \n14772 2021-06-12 7.675297 Jun 2021 9.239898 \n14773 2021-06-13 7.675297 Jun 2021 9.239898 \n14774 2021-06-14 7.675297 Jun 2021 9.239898 \n14775 2021-06-15 3.837649 Jun 2021 9.239898 \n14776 2021-06-16 13.436712 Jun 2021 9.239898 \n14777 2021-06-17 0.000000 Jun 2021 9.239898 \n14778 2021-06-18 40.310135 Jun 2021 9.239898 \n14779 2021-06-19 26.873425 Jun 2021 9.239898 \n14780 2021-06-20 26.873425 Jun 2021 9.239898 \n14781 2021-06-21 6.904253 Jun 2021 9.239898 \n14782 2021-06-22 0.000000 Jun 2021 9.239898 \n14783 2021-06-23 0.000000 Jun 2021 9.239898 \n14784 2021-06-24 0.000000 Jun 2021 9.239898 \n14785 2021-06-25 0.000000 Jun 2021 9.239898 \n14786 2021-06-26 4.041756 Jun 2021 9.239898 \n14787 2021-06-27 12.125267 Jun 2021 9.239898 \n14788 2021-06-28 4.041756 Jun 2021 9.239898 \n14789 2021-06-29 0.000000 Jun 2021 9.239898 \n14790 2021-06-30 8.083511 Jun 2021 9.239898 \n\n Quarter Year_Quarter Rain_Season Drought \n14741 2 20212 1 0 \n14742 2 20212 1 1 \n14743 2 20212 1 0 \n14744 2 20212 1 0 \n14745 2 20212 1 0 \n14746 2 20212 1 0 \n14747 2 20212 1 0 \n14748 2 20212 1 0 \n14749 2 20212 1 1 \n14750 2 20212 1 0 \n14751 2 20212 1 0 \n14752 2 20212 1 1 \n14753 2 20212 1 1 \n14754 2 20212 1 1 \n14755 2 20212 1 1 \n14756 2 20212 1 0 \n14757 2 20212 1 0 \n14758 2 20212 1 0 \n14759 2 20212 1 1 \n14760 2 20212 1 0 \n14761 2 20212 1 1 \n14762 2 20212 1 1 \n14763 2 20212 1 1 \n14764 2 20212 1 1 \n14765 2 20212 1 1 \n14766 2 20212 1 0 \n14767 2 20212 1 1 \n14768 2 20212 1 1 \n14769 2 20212 1 1 \n14770 2 20212 1 1 \n14771 2 20212 1 1 \n14772 2 20212 1 1 \n14773 2 20212 1 1 \n14774 2 20212 1 1 \n14775 2 20212 1 1 \n14776 2 20212 1 0 \n14777 2 20212 1 1 \n14778 2 20212 1 0 \n14779 2 20212 1 0 \n14780 2 20212 1 0 \n14781 2 20212 1 1 \n14782 2 20212 1 1 \n14783 2 20212 1 1 \n14784 2 20212 1 1 \n14785 2 20212 1 1 \n14786 2 20212 1 1 \n14787 2 20212 1 0 \n14788 2 20212 1 1 \n14789 2 20212 1 1 \n14790 2 20212 1 1 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
DateprecipitationMonth_NameYearMean_monthly_rainfallQuarterYear_QuarterRain_SeasonDrought
147412021-05-1210.651196May20217.52624722021210
147422021-05-135.325598May20217.52624722021211
147432021-05-1410.651196May20217.52624722021210
147442021-05-1510.651196May20217.52624722021210
147452021-05-1621.553934May20217.52624722021210
147462021-05-1721.553934May20217.52624722021210
147472021-05-1821.553934May20217.52624722021210
147482021-05-1953.884842May20217.52624722021210
147492021-05-200.000000May20217.52624722021211
147502021-05-2120.036249May20217.52624722021210
147512021-05-2210.018125May20217.52624722021210
147522021-05-230.000000May20217.52624722021211
147532021-05-240.000000May20217.52624722021211
147542021-05-250.000000May20217.52624722021211
147552021-05-260.000000May20217.52624722021211
147562021-05-278.464299May20217.52624722021210
147572021-05-288.464299May20217.52624722021210
147582021-05-2916.928598May20217.52624722021210
147592021-05-300.000000May20217.52624722021211
147602021-05-318.464299May20217.52624722021210
147612021-06-014.183891Jun20219.23989822021211
147622021-06-024.183891Jun20219.23989822021211
147632021-06-032.091946Jun20219.23989822021211
147642021-06-044.183891Jun20219.23989822021211
147652021-06-054.183891Jun20219.23989822021211
147662021-06-0617.349407Jun20219.23989822021210
147672021-06-070.000000Jun20219.23989822021211
147682021-06-080.000000Jun20219.23989822021211
147692021-06-090.000000Jun20219.23989822021211
147702021-06-100.000000Jun20219.23989822021211
147712021-06-110.000000Jun20219.23989822021211
147722021-06-127.675297Jun20219.23989822021211
147732021-06-137.675297Jun20219.23989822021211
147742021-06-147.675297Jun20219.23989822021211
147752021-06-153.837649Jun20219.23989822021211
147762021-06-1613.436712Jun20219.23989822021210
147772021-06-170.000000Jun20219.23989822021211
147782021-06-1840.310135Jun20219.23989822021210
147792021-06-1926.873425Jun20219.23989822021210
147802021-06-2026.873425Jun20219.23989822021210
147812021-06-216.904253Jun20219.23989822021211
147822021-06-220.000000Jun20219.23989822021211
147832021-06-230.000000Jun20219.23989822021211
147842021-06-240.000000Jun20219.23989822021211
147852021-06-250.000000Jun20219.23989822021211
147862021-06-264.041756Jun20219.23989822021211
147872021-06-2712.125267Jun20219.23989822021210
147882021-06-284.041756Jun20219.23989822021211
147892021-06-290.000000Jun20219.23989822021211
147902021-06-308.083511Jun20219.23989822021211
\n
"},"metadata":{}}]},{"cell_type":"code","source":"# define first plotter with incremental\n\ndef sd_plotter_one(df):\n import seaborn as sns\n sns.set(font_scale=1.2)\n xlabels = [i for i in list(df.index)]\n sns.set()\n fig, ax1 = plt.subplots(figsize=(22, 7))\n ax2 = ax1.twinx()\n df['Drought'].plot(kind='bar', color='darkgrey', ax=ax1)\n df['Mean_monthly_rainfall'].plot(kind='line', marker='d', color='red', ax=ax2)\n df['precipitation'].plot(kind='line', marker='d', color='blue', ax=ax2)\n ax1.set_xticklabels(xlabels, rotation=40)\n ax1.yaxis.tick_right()\n ax2.yaxis.tick_left()\n ax1.set_xlabel('Week', fontsize=16, labelpad=10)\n ax1.set_ylabel('Rainfall (mm)', fontsize=16, labelpad=70)\n ax2.set_ylabel('Drought Indicator', fontsize=16, labelpad=80)\n plt.title('Rainfall (mm) Kota Kinabalu 1983-2021', fontdict={'fontsize':20}, pad=20)\n plt.legend(loc='upper left')\n plt.margins(0.09)\n plt.show()\n fig.set_size_inches(22.,7.)\n plt.close(fig)","metadata":{"id":"8FMVYVwWDpeV","execution":{"iopub.status.busy":"2021-08-07T17:17:13.373570Z","iopub.execute_input":"2021-08-07T17:17:13.373998Z","iopub.status.idle":"2021-08-07T17:17:13.385746Z","shell.execute_reply.started":"2021-08-07T17:17:13.373938Z","shell.execute_reply":"2021-08-07T17:17:13.384919Z"},"trusted":true},"execution_count":26,"outputs":[]},{"cell_type":"markdown","source":"Visually inspecting the autocorrelation function of weekly rainfall in Kota Kinabalu is useful in that it allows us to understand how the past and present are intertwined. In this case, its shape is characterised by an inverse exponential curve, which means that future values of rainfall are moderately correlated with its past values. Therefore, inspecting the partial autocorrelation function, however, we see only a strong correlation of rainfall with the first and second lag. For those not familiar with the concepts of time series econometrics, this just means that the past trends explain the presently observed reality. It also implies that future values of rainfall are dependent on present values.","metadata":{"id":"HeTrciQ1JbSA"}},{"cell_type":"code","source":"# inspect lagged values of the past\nfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacf\nimport matplotlib.pyplot as plt\n\nfig, ax = plt.subplots(figsize=(10, 5))\nplot_acf(df_som['precipitation'], lags=10, ax=ax)\nax.set_ylabel('Correlation Coefficient');\n\nfig2, ax2 = plt.subplots(figsize=(10, 5))\n\nplot_pacf(df_som['precipitation'], lags=10, ax=ax2)\nax2.set_ylabel('Correlation Coefficient');","metadata":{"id":"OkeK98yqGD2x","outputId":"4349dc39-ae22-412b-a03f-83d10ade9e49","execution":{"iopub.status.busy":"2021-08-07T17:17:13.386997Z","iopub.execute_input":"2021-08-07T17:17:13.387513Z","iopub.status.idle":"2021-08-07T17:17:13.981276Z","shell.execute_reply.started":"2021-08-07T17:17:13.387478Z","shell.execute_reply":"2021-08-07T17:17:13.980504Z"},"trusted":true},"execution_count":27,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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+emnn7Bv3z4kJCSYe7s++eSTOHXqFNavX49FixY9VE1ERERESiIpvPXo0QPz5s1DXl4eOnfuDGdn51LbtGvXrtzjBAYG4tixYxgzZox5WXx8PFq3bm31eTcAuHv3LgCUmoJLpVKVOW0XERERUXUkKbyZnnXbtGkTNm3aBEEQzOtEUYQgCDh37ly5xwkPD8fQoUMRGxtrHipk165diI6ONm8TFxeHZcuWYf369fD29kZgYCDc3d0xdepUTJw4EU5OTti/fz+OHz+O2NjYin5eIiIiIkWTFN42bNhQKSdr06YNoqOjERUVhRUrVqBBgwaIjIy0GCYkOzsbKSkpMBgMAAA3NzesWbMG//rXv/Daa68hPz8fjRo1wsKFC8scG46IiIioOhLEGnTv0d4dFhZvOgW1RoW3B3HsObko/SHV6oDXQH68BvLi9y8/pV+DSumwYHLx4kWcOnUKmZmZGDBgADw8PHD9+nW4urqiTp06D10sEREREZVN8gwL06dPx549e8zPuIWEhMDDwwPz5s2Dn58fpkyZYu9aiYiIiGo8h/I3Af71r3/hyJEjWLJkCY4fP27Ry7Nr166Ij4+3W4FEREREdJ+klrfvv/8ekydPRr9+/VBYWGix7rHHHsO1a9fsUhwRERERWZLU8nb79m088cQTVtcVFhaae4YSERERkX1JCm+NGzfGiRMnrK77+eef0bRp00otioiIiIiskxTeXn75ZaxevRrr1q0zT2919+5d7NmzB+vXr8ewYcPsWiQRERERFZH0zNs//vEPXLt2DUuWLMHixYsBAK+++iocHBwwcuRIDBgwwK5FEhEREVERyeO8TZs2Da+88goSEhKQkZEBFxcXhISEoFGjRvasj4iIiIiKqdAgvY899hgGDRpkr1qIiIiIqBw2w1taWhq0Wi0cHR2RlpZW7oG8vb0rtTAiIiIiKs1meOvatSu2bt2KgIAAhIWFQRCEMg907ty5Si+OiIiIiCzZDG8LFizA448/bn5dXngjIiIiIvuzGd769+9vfs3epERERESPBknjvOXk5ODGjRtW1924cQO5ubmVWhQRERERWScpvM2ePRtRUVFW10VHR2P27NmVWRMRERER2SApvJ04cQJdu3a1ui4sLAwnT56szJqIiIiIyAbJE9PXr1/f6rp69eohMzOzUosiIiIiIuskhTcfHx8kJiZaXffz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\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{}}]},{"cell_type":"markdown","source":"# Feature Engineering","metadata":{"id":"HOqYdcrl17gL"}},{"cell_type":"markdown","source":"Building on this knowledge that the past explains the future, let us extract some additional time series features. Namely, the lagged values of rainfall. This should certainly improve our drought prediction accuracy in the later modelling stage of this project.","metadata":{"id":"i2VpOVLZLwRI"}},{"cell_type":"code","source":"# create lagged variables\n\ndef lagged_features(df):\n '''\n Extract lagged features using Pandas shift function: 1, 2.. 5 weeks.\n '''\n df['Lag_Rainfall_mm_1w'] = df['precipitation'].shift(1)\n df['Lag_Rainfall_mm_2w'] = df['precipitation'].shift(2)\n df['Lag_Rainfall_mm_3w'] = df['precipitation'].shift(3)\n df['Lag_Rainfall_mm_4w'] = df['precipitation'].shift(4)\n df['Lag_Rainfall_mm_5w'] = df['precipitation'].shift(5)\n # return\n return df.fillna(0)","metadata":{"id":"pFBManB01-t_","execution":{"iopub.status.busy":"2021-08-07T17:17:13.982527Z","iopub.execute_input":"2021-08-07T17:17:13.982862Z","iopub.status.idle":"2021-08-07T17:17:13.988105Z","shell.execute_reply.started":"2021-08-07T17:17:13.982826Z","shell.execute_reply":"2021-08-07T17:17:13.987309Z"},"trusted":true},"execution_count":28,"outputs":[]},{"cell_type":"code","source":"df_mod = lagged_features(df_som)\n\ndf_mod.head()","metadata":{"id":"tMAf5h9LVAFa","outputId":"29a3f5b9-fa71-47b0-a0f5-d36764b4e358","execution":{"iopub.status.busy":"2021-08-07T17:17:13.989332Z","iopub.execute_input":"2021-08-07T17:17:13.989880Z","iopub.status.idle":"2021-08-07T17:17:14.018742Z","shell.execute_reply.started":"2021-08-07T17:17:13.989844Z","shell.execute_reply":"2021-08-07T17:17:14.018027Z"},"trusted":true},"execution_count":29,"outputs":[{"execution_count":29,"output_type":"execute_result","data":{"text/plain":" YearWeek Date precipitation Month Month_Name WeekNum Quarter Day \\\n0 198101 1980-12-29 90.273059 12 Dec 1 4 29 \n1 198102 1981-01-05 90.785433 1 Jan 2 1 5 \n2 198103 1981-01-12 80.341648 1 Jan 3 1 12 \n3 198104 1981-01-19 15.066109 1 Jan 4 1 19 \n4 198105 1981-01-26 49.890175 1 Jan 5 1 26 \n\n WeekinMonth Mean_weekly_rainfall Rain_Season Drought \\\n0 5 31.787728 1 0 \n1 1 31.647279 0 0 \n2 2 22.705327 0 0 \n3 3 27.348557 0 0 \n4 4 19.190386 0 0 \n\n Lag_Rainfall_mm_1w Lag_Rainfall_mm_2w Lag_Rainfall_mm_3w \\\n0 0.000000 0.000000 0.000000 \n1 90.273059 0.000000 0.000000 \n2 90.785433 90.273059 0.000000 \n3 80.341648 90.785433 90.273059 \n4 15.066109 80.341648 90.785433 \n\n Lag_Rainfall_mm_4w Lag_Rainfall_mm_5w \n0 0.000000 0.0 \n1 0.000000 0.0 \n2 0.000000 0.0 \n3 0.000000 0.0 \n4 90.273059 0.0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
YearWeekDateprecipitationMonthMonth_NameWeekNumQuarterDayWeekinMonthMean_weekly_rainfallRain_SeasonDroughtLag_Rainfall_mm_1wLag_Rainfall_mm_2wLag_Rainfall_mm_3wLag_Rainfall_mm_4wLag_Rainfall_mm_5w
01981011980-12-2990.27305912Dec1429531.787728100.0000000.0000000.0000000.0000000.0
11981021981-01-0590.7854331Jan215131.6472790090.2730590.0000000.0000000.0000000.0
21981031981-01-1280.3416481Jan3112222.7053270090.78543390.2730590.0000000.0000000.0
31981041981-01-1915.0661091Jan4119327.3485570080.34164890.78543390.2730590.0000000.0
41981051981-01-2649.8901751Jan5126419.1903860015.06610980.34164890.78543390.2730590.0
\n
"},"metadata":{}}]},{"cell_type":"code","source":"# create time period variable\ndf_mod['Time_t'] = df_mod.index + 1\n\ndf_mod.drop(columns=['YearWeek', 'Month_Name'], axis=1,inplace=True)\n\ndf_mod.set_index('Date', inplace=True)\n\ndf_mod.head()","metadata":{"id":"U7D20IvPMNbs","outputId":"01fde273-0543-4561-fe24-73ed9a5f48f2","execution":{"iopub.status.busy":"2021-08-07T17:17:14.019896Z","iopub.execute_input":"2021-08-07T17:17:14.020245Z","iopub.status.idle":"2021-08-07T17:17:14.044383Z","shell.execute_reply.started":"2021-08-07T17:17:14.020212Z","shell.execute_reply":"2021-08-07T17:17:14.043484Z"},"trusted":true},"execution_count":30,"outputs":[{"execution_count":30,"output_type":"execute_result","data":{"text/plain":" precipitation Month WeekNum Quarter Day WeekinMonth \\\nDate \n1980-12-29 90.273059 12 1 4 29 5 \n1981-01-05 90.785433 1 2 1 5 1 \n1981-01-12 80.341648 1 3 1 12 2 \n1981-01-19 15.066109 1 4 1 19 3 \n1981-01-26 49.890175 1 5 1 26 4 \n\n Mean_weekly_rainfall Rain_Season Drought Lag_Rainfall_mm_1w \\\nDate \n1980-12-29 31.787728 1 0 0.000000 \n1981-01-05 31.647279 0 0 90.273059 \n1981-01-12 22.705327 0 0 90.785433 \n1981-01-19 27.348557 0 0 80.341648 \n1981-01-26 19.190386 0 0 15.066109 \n\n Lag_Rainfall_mm_2w Lag_Rainfall_mm_3w Lag_Rainfall_mm_4w \\\nDate \n1980-12-29 0.000000 0.000000 0.000000 \n1981-01-05 0.000000 0.000000 0.000000 \n1981-01-12 90.273059 0.000000 0.000000 \n1981-01-19 90.785433 90.273059 0.000000 \n1981-01-26 80.341648 90.785433 90.273059 \n\n Lag_Rainfall_mm_5w Time_t \nDate \n1980-12-29 0.0 1 \n1981-01-05 0.0 2 \n1981-01-12 0.0 3 \n1981-01-19 0.0 4 \n1981-01-26 0.0 5 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
precipitationMonthWeekNumQuarterDayWeekinMonthMean_weekly_rainfallRain_SeasonDroughtLag_Rainfall_mm_1wLag_Rainfall_mm_2wLag_Rainfall_mm_3wLag_Rainfall_mm_4wLag_Rainfall_mm_5wTime_t
Date
1980-12-2990.273059121429531.787728100.0000000.0000000.0000000.0000000.01
1981-01-0590.7854331215131.6472790090.2730590.0000000.0000000.0000000.02
1981-01-1280.34164813112222.7053270090.78543390.2730590.0000000.0000000.03
1981-01-1915.06610914119327.3485570080.34164890.78543390.2730590.0000000.04
1981-01-2649.89017515126419.1903860015.06610980.34164890.78543390.2730590.05
\n
"},"metadata":{}}]},{"cell_type":"code","source":"# rainfall difference between average weekly rainfall\n\ndf_mod['Avg_Rainfall_Diff'] = df_mod.apply(lambda x: np.round(x['precipitation']-x['Mean_weekly_rainfall'],decimals=2),axis=1)\n\ndf_mod.head()","metadata":{"id":"fO1kLJLGonvS","outputId":"911d9441-79ed-4ee9-c270-ceceabce9b6a","execution":{"iopub.status.busy":"2021-08-07T17:17:14.045594Z","iopub.execute_input":"2021-08-07T17:17:14.045940Z","iopub.status.idle":"2021-08-07T17:17:14.127613Z","shell.execute_reply.started":"2021-08-07T17:17:14.045901Z","shell.execute_reply":"2021-08-07T17:17:14.126636Z"},"trusted":true},"execution_count":31,"outputs":[{"execution_count":31,"output_type":"execute_result","data":{"text/plain":" precipitation Month WeekNum Quarter Day WeekinMonth \\\nDate \n1980-12-29 90.273059 12 1 4 29 5 \n1981-01-05 90.785433 1 2 1 5 1 \n1981-01-12 80.341648 1 3 1 12 2 \n1981-01-19 15.066109 1 4 1 19 3 \n1981-01-26 49.890175 1 5 1 26 4 \n\n Mean_weekly_rainfall Rain_Season Drought Lag_Rainfall_mm_1w \\\nDate \n1980-12-29 31.787728 1 0 0.000000 \n1981-01-05 31.647279 0 0 90.273059 \n1981-01-12 22.705327 0 0 90.785433 \n1981-01-19 27.348557 0 0 80.341648 \n1981-01-26 19.190386 0 0 15.066109 \n\n Lag_Rainfall_mm_2w Lag_Rainfall_mm_3w Lag_Rainfall_mm_4w \\\nDate \n1980-12-29 0.000000 0.000000 0.000000 \n1981-01-05 0.000000 0.000000 0.000000 \n1981-01-12 90.273059 0.000000 0.000000 \n1981-01-19 90.785433 90.273059 0.000000 \n1981-01-26 80.341648 90.785433 90.273059 \n\n Lag_Rainfall_mm_5w Time_t Avg_Rainfall_Diff \nDate \n1980-12-29 0.0 1 58.49 \n1981-01-05 0.0 2 59.14 \n1981-01-12 0.0 3 57.64 \n1981-01-19 0.0 4 -12.28 \n1981-01-26 0.0 5 30.70 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
precipitationMonthWeekNumQuarterDayWeekinMonthMean_weekly_rainfallRain_SeasonDroughtLag_Rainfall_mm_1wLag_Rainfall_mm_2wLag_Rainfall_mm_3wLag_Rainfall_mm_4wLag_Rainfall_mm_5wTime_tAvg_Rainfall_Diff
Date
1980-12-2990.273059121429531.787728100.0000000.0000000.0000000.0000000.0158.49
1981-01-0590.7854331215131.6472790090.2730590.0000000.0000000.0000000.0259.14
1981-01-1280.34164813112222.7053270090.78543390.2730590.0000000.0000000.0357.64
1981-01-1915.06610914119327.3485570080.34164890.78543390.2730590.0000000.04-12.28
1981-01-2649.89017515126419.1903860015.06610980.34164890.78543390.2730590.0530.70
\n
"},"metadata":{}}]},{"cell_type":"code","source":"# rearrange columns\n\ncols = ['Time_t', 'Month', 'WeekNum', 'Quarter', 'Day', 'WeekinMonth', 'precipitation', \n 'Mean_weekly_rainfall', 'Avg_Rainfall_Diff', 'Rain_Season', 'Drought', 'Lag_Rainfall_mm_1w',\n 'Lag_Rainfall_mm_2w', 'Lag_Rainfall_mm_3w', 'Lag_Rainfall_mm_4w','Lag_Rainfall_mm_5w']\n\ndf_mod = df_mod[cols]\n\ndf_mod.head()","metadata":{"id":"Jt6DYNI1n_rT","outputId":"0c511b84-10a2-47b3-f5f9-d08c067a5600","execution":{"iopub.status.busy":"2021-08-07T17:17:14.128900Z","iopub.execute_input":"2021-08-07T17:17:14.129245Z","iopub.status.idle":"2021-08-07T17:17:14.151634Z","shell.execute_reply.started":"2021-08-07T17:17:14.129212Z","shell.execute_reply":"2021-08-07T17:17:14.150761Z"},"trusted":true},"execution_count":32,"outputs":[{"execution_count":32,"output_type":"execute_result","data":{"text/plain":" Time_t Month WeekNum Quarter Day WeekinMonth precipitation \\\nDate \n1980-12-29 1 12 1 4 29 5 90.273059 \n1981-01-05 2 1 2 1 5 1 90.785433 \n1981-01-12 3 1 3 1 12 2 80.341648 \n1981-01-19 4 1 4 1 19 3 15.066109 \n1981-01-26 5 1 5 1 26 4 49.890175 \n\n Mean_weekly_rainfall Avg_Rainfall_Diff Rain_Season Drought \\\nDate \n1980-12-29 31.787728 58.49 1 0 \n1981-01-05 31.647279 59.14 0 0 \n1981-01-12 22.705327 57.64 0 0 \n1981-01-19 27.348557 -12.28 0 0 \n1981-01-26 19.190386 30.70 0 0 \n\n Lag_Rainfall_mm_1w Lag_Rainfall_mm_2w Lag_Rainfall_mm_3w \\\nDate \n1980-12-29 0.000000 0.000000 0.000000 \n1981-01-05 90.273059 0.000000 0.000000 \n1981-01-12 90.785433 90.273059 0.000000 \n1981-01-19 80.341648 90.785433 90.273059 \n1981-01-26 15.066109 80.341648 90.785433 \n\n Lag_Rainfall_mm_4w Lag_Rainfall_mm_5w \nDate \n1980-12-29 0.000000 0.0 \n1981-01-05 0.000000 0.0 \n1981-01-12 0.000000 0.0 \n1981-01-19 0.000000 0.0 \n1981-01-26 90.273059 0.0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Time_tMonthWeekNumQuarterDayWeekinMonthprecipitationMean_weekly_rainfallAvg_Rainfall_DiffRain_SeasonDroughtLag_Rainfall_mm_1wLag_Rainfall_mm_2wLag_Rainfall_mm_3wLag_Rainfall_mm_4wLag_Rainfall_mm_5w
Date
1980-12-291121429590.27305931.78772858.49100.0000000.0000000.0000000.0000000.0
1981-01-0521215190.78543331.64727959.140090.2730590.0000000.0000000.0000000.0
1981-01-12313112280.34164822.70532757.640090.78543390.2730590.0000000.0000000.0
1981-01-19414119315.06610927.348557-12.280080.34164890.78543390.2730590.0000000.0
1981-01-26515126449.89017519.19038630.700015.06610980.34164890.78543390.2730590.0
\n
"},"metadata":{}}]},{"cell_type":"markdown","source":"# Feature Importances","metadata":{"id":"ONhCA-UDsVYW"}},{"cell_type":"code","source":"# correlation matrix plot\n\ndef corr_heatmap(df):\n '''\n Seaborn Heatmap with mirror removed\n '''\n import seaborn as sns\n sns.set(font_scale=1.0)\n if isinstance(df, pd.DataFrame):\n fig, ax = plt.subplots(figsize=(12,8))\n mask = np.zeros_like(df.corr(), dtype=np.bool)\n mask[np.triu_indices_from(mask)] = True \n ax = sns.heatmap(df.corr().round(2), mask=mask, ax=ax, cmap='YlGnBu', annot=True, fmt='.2g')\n plt.title('Pearson Correlation Heatmap', fontsize=16)\n plt.xticks(rotation = 80)\n \n else:\n print('pd.DataFrame object needed!')","metadata":{"id":"Y8Xo38_7sXu3","execution":{"iopub.status.busy":"2021-08-07T17:17:14.153057Z","iopub.execute_input":"2021-08-07T17:17:14.153419Z","iopub.status.idle":"2021-08-07T17:17:14.160318Z","shell.execute_reply.started":"2021-08-07T17:17:14.153383Z","shell.execute_reply":"2021-08-07T17:17:14.159278Z"},"trusted":true},"execution_count":33,"outputs":[]},{"cell_type":"code","source":"corr_heatmap(df_mod)","metadata":{"id":"MxGJQyq4vQfF","outputId":"facd2b7f-dbe6-420f-c6e8-181cfee0b3b9","execution":{"iopub.status.busy":"2021-08-07T17:17:14.161600Z","iopub.execute_input":"2021-08-07T17:17:14.162279Z","iopub.status.idle":"2021-08-07T17:17:15.206669Z","shell.execute_reply.started":"2021-08-07T17:17:14.162227Z","shell.execute_reply":"2021-08-07T17:17:15.205877Z"},"trusted":true},"execution_count":34,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{}}]},{"cell_type":"markdown","source":"# Train-Test Split","metadata":{"id":"SC-SWD0vzq3p"}},{"cell_type":"code","source":"from sklearn import datasets\nfrom yellowbrick.target import FeatureCorrelation\nplt.figure(figsize=(11,7))\nsns.set(font_scale=1.2)\n\n# define x, y\nX, y = df_mod.drop('Drought', axis=1), df_mod['Drought']\n\n# Create a list of the feature names\nfeatures = np.array(X.columns)\n\n# Instantiate the visualizer\nvisualizer = FeatureCorrelation(labels=features)\n\nvisualizer.fit(X, y)\n\nplt.title('Pearson Feature Importances vs. Drought', fontsize=16)\nplt.xlabel('Pearson Correlation Coefficient %', fontsize=16)\nplt.ylabel('Feature Name', fontsize=16);","metadata":{"id":"-MY_L9bzFgBC","outputId":"875ae3f6-6cd3-43a4-9058-f790100efc70","execution":{"iopub.status.busy":"2021-08-07T17:17:15.207959Z","iopub.execute_input":"2021-08-07T17:17:15.208430Z","iopub.status.idle":"2021-08-07T17:17:15.674466Z","shell.execute_reply.started":"2021-08-07T17:17:15.208389Z","shell.execute_reply":"2021-08-07T17:17:15.673688Z"},"trusted":true},"execution_count":35,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAyIAAAHJCAYAAAB5UY02AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACiLklEQVR4nOzdeVhVVfv/8TejoqiI4jzkEJjzAQQBTcUJM4dwwAlznlHLBs3StLLUHNFyejTNHHNOy8zKMowkyCEtn0ofwVkRRVTG8/vDn+fbUVBQhgN+XtfFdbH3Xmuve+91Dpz77LX2tjIajUZERERERERykXVeByAiIiIiIk8eJSIiIiIiIpLrlIiIiIiIiEiuUyIiIiIiIiK5TomIiIiIiIjkOiUiIiIiIiKS65SIiIgAmzdvxs3NzfRjMBjo2LEjq1evJiUlJa/DyxOhoaFm5+TfP//73/+yvb1vvvmGFStWZPt+H9fd85AfXweWek4Lgn+/H+rUqUPjxo3p1asXCxcu5MqVK3kd3kPFxMTg5ubGxo0bH1o2NDSUAwcO5EJU8qSxzesAREQsybx58yhXrhw3btzgq6++4p133uHKlSuMGTMmr0PLM2vWrMHGxsZsXfny5bO9nW+++YawsDD69++f7ft+Uumc5qzAwECCgoJIS0sjLi6OQ4cOsXr1aj799FM++ugj3N3d8zrEbLFgwQKGDRuGj49PXociBYwSERGRf3nmmWeoWrUqAE2aNOF///sfq1atyrVEJCkpCXt7+1xpK7MaNGiArW3+/HeRmpqK0WjMt/E/Kkt8HRVEZcqUoWHDhqZlf39/goOD6d27NyEhIXzzzTc4ODhkWF/9JE86Dc0SEXmAevXqcePGDdNQiz/++INhw4bRqFEj6tevT48ePYiIiDCrc/jwYUaPHs2zzz5L/fr1adu2LbNnz+b27dtm5YKDg+nZsyfffvstnTt3pm7duqxZswaAlStX0q5dO+rXr0+jRo0IDAxkz549prpGo5FPPvmEtm3bUrduXZo0acLUqVO5ceOGWRtubm7MmTOHVatW4e/vj8FgoE+fPvz3v//NlvMTGxvLpEmTaNq0KXXr1iUgIID169enW6Zt27Y0aNCAZs2aMW7cOC5cuGAqM378eLZs2cKFCxdMw138/f2B/xs2FxMTY7bfu0Om0jveJUuW4O/vT926dTlx4gQAv/zyCy+++CIGg4GGDRsycOBA07as8vf355VXXmHr1q20bduW+vXr06tXL06dOsXNmzeZNGkS3t7e+Pr68sEHH5gN6woPD8fNzY3du3czfvx4GjVqhLu7O+PGjePq1atm7dy4cYOpU6fSpEkT6tatS9u2bfnkk08wGo337e/rr7/mzTffpHHjxvj6+j7wnCYmJjJt2jSef/55DAYDfn5+DBs2jL///tus/bvn/rfffmPcuHG4u7vTpEkT3n33XRITE83K3rx5kw8//JBWrVpRt25d/Pz8CAkJ4fLly6Yy0dHRjBs3jsaNG1O3bl06depk9roGOHnyJCNHjsTHx4d69erRvHlzRo8eneHQuKSkJLy8vHj//ffv27Zr1y7c3Nw4duwYcOe92b9/f7y9valfvz4tW7bk7bffzqibH0np0qV59dVXuXz5Ml988YVp/YPe74cPH6Zfv36m1+aLL77I4cOHzfYbHBxMcHDwfe35+/szfvx4s3VhYWF07tyZevXq0bp1azZu3Mj48eNN/f9vqampzJs3jyZNmuDp6cmwYcM4f/68afvd99iiRYtMr6PQ0NBHP0Ei//JkfUUkIpJFMTEx2NjYUKRIEX7//Xd69+7NM888wzvvvIODgwNr166lX79+rFu3jrp16wJw7tw5atWqxQsvvEDRokX573//y0cffUR0dDRz5swx2/+pU6d49913GTFiBJUrV6ZEiRJs376d6dOnM2LECDw9PUlMTOTPP/8kLi7OVG/OnDksXryY3r1706JFC/7++2/mzZvHH3/8werVq7G2/r/vmXbs2EG1atWYOHEiycnJzJgxgxEjRvDll19m6kpBWlqa2YdAa2trrK2tuXHjBj179iQxMZGQkBAqVarEjz/+yNtvv01SUpLpQ1NcXBz29va8/PLLODs7c/HiRZYvX07Pnj358ssvKVSoECNGjCA2NpYjR47w8ccfAzzyN8WbN2+mcuXKvP766zg4OFCmTBm+//57RowYQbNmzZg5cyYAy5Yto3fv3mzfvv2RhppFREQQHR3Nq6++SlJSEtOmTSMkJITKlStTtWpVZs+ezcGDB/n444+pXLkyvXv3Nqs/bdo0fH19mTVrFv/73/+YPXs2Fy9e5NNPPzWd9yFDhnDs2DFGjx6Nq6sr33//Pe+//z6xsbG8/PLLZvt75513ePbZZ5kxYwZJSUm4urpmeE6TkpJISEhg+PDhuLi4cO3aNdasWUOPHj3YtWsXLi4uZvt+7bXXaN++PQsWLCAqKooFCxZQvHhxRo8ebdrfgAED+OOPPxg8eDANGzYkPj6e/fv3c+3aNUqXLs25c+fo3r07pUqVYsKECTg7O7Nr1y5CQkJYuHAhLVu2BGDo0KEUL16ct99+m5IlS3LhwgX27dtHWlpauv1gb29PQEAAO3fu5LXXXjMbRrh9+3ZcXV2pXbs2CQkJDBo0iHr16vH+++9TtGhRzpw5Q1RUVJb7/mGaNGmCra0tkZGRdOvWzbQ+vff7H3/8QZ8+fahZsybvv/8+VlZWLFmyhD59+rBhwwZq1aqVpbb/+usvhgwZQv369ZkzZw5JSUl8/PHHxMfHm/1duGvJkiUYDAbee+89YmNj+eCDD3j11VdNr8P169cTFBRkGoYGUK5cucc4OyL/YhQREeOmTZuMrq6uxr///tuYnJxsjIuLM65du9ZYq1Yt4/Dhw41Go9HYt29fY0BAgDExMdFULyUlxRgQEGAqc6+0tDRjcnKycevWrUY3NzdjbGysaVufPn2Mbm5uxmPHjpnVmTJlirFz584Zxnr16lVjnTp1jK+//rrZ+q1btxpdXV2N33zzjWmdq6ursXXr1sakpCTTui+//NLo6upq/PXXXx94TubPn290dXW972fcuHFGo9FoXLBggbFu3brGkydPmtWbOHGi0cvLy5icnJzuflNSUoxnz541urq6Gr/++mvT+tdff93YtGnT+8rf7Zvo6Oh04/s3V1dXo5+fn/HWrVtm61u1amXs27ev2br4+Hijl5eX8d13383Uefj38bRo0cLYqFEj4/Xr103rVq5caXR1dTW+8cYbZvU7d+5s7NOnj2n5559/Nrq6uhoHDBhgVm7btm1GV1dXY1hYmNFoNBq//fZbo6urq3HTpk1m5d544w1jnTp1jFeuXDHb34gRI+6LPaNzeq+UlBTjzZs3jQ0bNjSuWLHCtP7uuZ83b55Z+SFDhhjbtGljWt64ceN9r717TZgwwejt7W32HjAajcZ+/foZO3bsaDQajcYrV648dD/piYiIMLq6uhp/+OEH07orV64Ya9eubVyyZInRaDQaDx8+bHR1dTUeP348S/vOiKurq3H27NkZbvfz8zMOHDjQtJzR+z0kJMTo4eFhvHbtmmldfHy8sVGjRsaRI0ea1f/36+iuFi1amP0tePnll43e3t7GmzdvmtZduHDBWLduXWOLFi1M66Kjo42urq737XPZsmVGV1dX4/nz5zN9rCKPSkOzRET+pV27dtSpUwcvLy+mTJlChw4dmDZtGrdv3+bgwYMEBARgbW1NSkoKKSkpGI1GfH19zYZn3bhxg5kzZ9KqVSvq1atHnTp1eO211zAajffdbapixYo888wzZuvq1avH8ePHeeeddwgLC+PWrVtm2w8dOkRycjIdO3Y0W9++fXtsbW05ePCg2XpfX1/s7OxMy66ursCdKzeZsWHDBj7//HPTz935Mj/++CMNGjSgUqVKpvORkpJCkyZNiIuL46+//jLtY82aNXTs2BGDwUDt2rVp3rw5cGcYTnZr2rQphQsXNi2fOnWK06dP06FDB7M4CxcujMFguG9oXWY1bNiQYsWKmZarV68O3Pk2/N+qV69uNtTlrnbt2pkt331t3f2G/uDBg1hbW/P888+blevYsSPJycn89ttvZutbt26dpfh37dpFt27d8PT0pHbt2jRs2JCbN2/yzz//3Ff2bn/d5erqytmzZ03LP/30Ey4uLqarGun58ccfadasGcWKFbvv9fLHH39w48YNSpYsSeXKlZk1axYbNmzg1KlTmToWDw8PqlSpwrZt20zrdu7cSVpamul98tRTT1G8eHEmT57Mtm3bMv36f1RGoxErKyuzdem93w8ePEjz5s0pXry4aZ2joyP+/v73vZcz47fffqNZs2Zmc1PKlCmDwWBIt/yzzz5rtpzVvw8ij0NDs0RE/mXhwoWULVuWokWLUrFiRQoVKgTAhQsXSE1N5aOPPuKjjz5Kt25aWhrW1tZMmDCBsLAwRo8ezTPPPIODgwOHDx9m6tSp942rv3cIDEDnzp1JTEzk888/Z82aNdja2tKsWTPGjx9PpUqVTEO07q1ra2uLk5MT165dM1tfokQJs+W7w3PujSUjderUSXcIV2xsLP/73/+oU6dOuvXuxvnpp5/y7rvv0r9/f5o0aULx4sUxGo1079490zFkRZkyZcyW787vmThxIhMnTryvfIUKFR6pnX9/cARMyd6959vOzi7d4yxdurTZsr29PcWLFzfNnbl27RolSpS4b4ja3Xr39nN6r6WMfPvtt7z00ku88MILjBo1ipIlS2JlZcWQIUNISkq6r3x6r6F/l4uLi7vvvN8rNjaWrVu3snXr1nS3X716FUdHR1asWEFoaCizZs0iLi6OSpUqMXDgQHr16vXA/Xfs2JHly5dz8+ZNihQpwrZt22jcuDFly5YFoFixYqxatYqPPvqIKVOmkJCQwNNPP01ISAht27Z94L6z6vbt21y9evW+Pkmvj65du5bu+tKlS9/Xx5lx6dIlnJ2d093fvfOsAJycnMyWs/r3QeRxKBEREfmXp59+2nTXrH8rVqwY1tbW9O7dm06dOqVb19ramsTERPbu3cuoUaN48cUXTdsymhR97zemd9f16NGDHj16cO3aNX766Sc++OADXnrpJTZu3Gj64HD58mWefvppU72UlBTi4uLu+9CYU5ycnHB2dk73wz1AtWrVgDvfTPv4+JhNqI2Ojs50O3eTweTkZLP1/54z87A4AcaNG5fu7Uf/fbUoN/17EjfcmWdx/fp10wfnEiVKcO3atfvurHS33r39nN5rKSM7d+6katWqfPDBB6Z1ycnJj/TBF6BkyZIPvQGCk5MTHh4eDB48ON3td4+7cuXKzJgxA6PRaJrzNGXKFCpWrEizZs0y3H+nTp1YsGABX3/9NQ0aNODIkSNMnz7drMwzzzxDaGgoKSkpHD16lMWLFzN27Fi2bdtmuhKQHfbv309qaioeHh5m69ProxIlStz3WoA7/fzvPra3tychIeG+cve+D1xcXIiNjU13fyKWRkOzREQyoUiRInh6evLHH39Qp04d6tWrd98P3PkwmZqaet8VhC1btjxSuyVKlOC5556jXbt2pg96DRo0wM7Ojp07d5qV3bVrFykpKXh5eT1SW1nVtGlTTp48SYUKFdI9H46OjsCdb4fvPR+bN2++b3/29vbpfgt794rFvz/opqSksH///kzFWb16dSpWrMh///vfdOPM6mTg7PLll1+aLX/11VekpaWZhtB4eXmRlpbGV199ZVZux44d2NnZmd02NiMZndPbt2/f92yYbdu2kZqamsWjuMPPz49Lly7x7bffZlimadOm/Pnnnzz99NPp9sO9V36srKx45plnmDBhAsBDE50qVapgMBjYvn0727Zto0iRIhkOV7O1taVhw4aMGTOGtLS0++4W9jiuXLnCzJkzcXFxoX379g8t36hRI3744QezO97duHGD7777zuy9XLFiRU6ePGl2JergwYP3JScNGzZk3759ZkM6L168SGRk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AIwbN47169dz+vRpatSokeljyYpy5cpx7dq1HNn3w+Tmk9Xz8x8BkSeFpT99+EmVH54M/SRT/1i2/NA/j/1k9bFjx5o+TPbq1YvU1FR27drF7du3GTRoUL65de/mzZuxt7c3fXhv0aIFpUqVYv369bz00kuULFmSL7/8ki5duvD555/TpUsXU93z589TsWJF07K1tTXly5fPdNsVKlTg22+/JS0tje+++44333yTK1eu4OLiAsDx48eZPXs2x48f5+bNmwAYjUZiY2PN2v23u3N27ipatCgJCQkZxhATE8OMGTM4dOgQ8fHxWFvfGZl35cqVHEtEzp8/j5OTU47sW0RERETyr0wlIs7Ozjg7O5uWg4ODs/22rjnNaDSyfv16EhMTadWqlWn99evX2bRpEyEhIQQGBrJp0ybq1avH8ePH+fjjj03lypUrx5kzZ0zLaWlpnDt3LstxWFtb07JlSw4fPswbb7zBpk2bsLKyYuzYsfj7+zNr1iyKFy/OsWPHeOGFFzAas+8b/UmTJlGyZEm2bNmCs7Mz165dw8vLK1vb+LekpCT27NlD48aNc2T/IiIiIpJ/PTFPVt+/fz+nT59m5cqVbN261fSzceNG4uLi2LNnD126dOG3335j1qxZNGvWzHS1AqBz584sX76ckydPkpSUxOLFi4mNjX3keAYOHEh0dDRffPEFAPHx8RQtWhRHR0cuX75seqZGdoqPj8fBwYFixYoRHx/PzJkzs70NuJOkHTt2zHQlbcyYMTnSjoiIiIjkXxleEcnqQwpHjRr12MHkpLVr1/Lss8+azcUAcHFx4bnnnmPt2rU899xz+Pn58f3335tdDQEYPHgw169fp3fv3qSlpREYGEi9evUeeaJ+8eLF6devH/PmzSMgIID33nuPDz74gGXLllG5cmX69evHd99998jHm56JEycyefJkGjVqRJkyZRg7diwbN27Mtv0///zzWFlZYW1tTcWKFfHz82PKlClmCZ2IiIiICICVMYNxObVq1Xp4ZSsr0+85cRtYS5aamsqzzz7LhAkTeP755/M6HElHbk9W7zAuZx8cKSKPbsesThY/ofNJlR8m2z7J1D+WLT/0zyNNVv/9998fuNPjx48zd+5c9u/fT9WqVR8vwnwgPj6eX3/9FT8/P5KSkliwYAEpKSk8++yzeR2aiIiIiEi+k2EiYmNjk+76U6dOMX/+fL766ivKli3LO++8Y3pORUGWlpZGaGgoL7/8MtbW1qbnXxQvXpzt27czefLkdOsNHTqUYcOG5XK02evs2bO0b98+3W0eHh4sW7YslyMSERERkfwuU3fNAjh37hwLFixg27ZtFC9enNdee41evXphb2+fk/FZjBIlSqT7YD6Ajh070rFjx1yOKPdUqFAhWx4wKCIiIiJy10MTkdjYWD766CM2bNhAoUKFGDFiBP369aNIkSK5EZ9IvnA7MYUdszrldRgikoGk5NS8DkFERO6RYSISHx/P0qVL+fTTTwHo27cvgwcPpkSJErkWnEh+EX/9Fjk9VSw/TEh7kql/LJuLS7G8DkFERO6RYSLSsmVL4uPj8fPzY/jw4ZQpU4br169z/fr1dMtXrlw5x4IUEREREZGCJcNE5G7CsX//fn766aeH7uhJu32viIiIiIg8ugwTkffffz834xAREckxScmpGp5lwR61b24nphB//VY2RyMiuSXDROSFF17IzThERERyjL2djR46WgDtmNUpx+fniUjOsc7rAERERERE5MmjRERERERERHKdEhEREREREcl1SkTyWGhoKMHBwRluDw4OJjQ0NBcjMte+fXu2b9+epTrvvvsujRs3xmAwcPLkyYeWv/cY3dzcCA8Pz3KsIiIiIpJ/5GoiEhwcjJubGxs3bjRbHx8fj8FgwM3NjZiYmNwMSR5i586ddOzYMdPlIyMj2bBhA9u3bycqKopq1arlYHQiIiIikl/l+hWRp59+mrVr15qt27p1KxUrVsztUJ5oSUlJObLf6OhoSpcuTZkyZXJk/yIiIiJSMGQ6ETl27BijRo3C29ub2rVr8/vvvwMwe/Zsfvjhh0w32LJlSy5evMiRI0dM69avX09QUJBZuX379tGtWzcaNWpEmzZtWLVqlWlbYmIio0ePpkmTJhgMBp5//nl27dplVt/NzY3PPvuMHj16YDAY6NChA5GRkQ+N79NPP6V3796m5enTp+Pm5kZ0dDQA//3vf6lbty43b94E4MKFC4wbN46mTZvi4+PDyy+/TGxsrFmss2fPplWrVjRq1IjevXtz7NixDNvfs2cPfn5+7Nu3775tL730Em+99ZbZugMHDmAwGLhx48YDjys0NJQ+ffowa9YsmjRpQq9evQB48803ad68OQaDgTZt2rB69Wqzev7+/mzevBmA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RERE1ITxrlnNjL29vfLnsrIylJeXo1WrVsplBw4cwJkzZxojNADAqlWrcOrUKWzZsqXRYiAiIiKihsdCpJmpWmTwQz8RERERNRYWIlSNXC7H5s2b4eTkhJ9++gnjxo1DbGwsYmNjcfPmTbzxxhuIiYnBkiVLcPDgQejr6yM6OhpeXl7KbRw7dgwJCQm4fPky2rRpg7Fjx2LcuHFP3e/evXuRlJSE8vJy5Zmbbdu2wcLC4rmOo1271s/VT5M9+UA20izMz8uHOdMMzINmY34028ucHxYiVCcnTpxAWloa7t69i5EjR8Lf3x9RUVGYN28eduzYgdmzZ8PNzQ1SqRQnT55EZGQkVq5cCScnJ/z5558IDg6GsbExfHx8at2Hj48Prly5Um9naQoKilBRIbzwdjSFiYkBbt7k49c0FfOj2Wr7Q82cNT6+dzQb86PZXob8SCRatX45zIvVqU6mTp0KfX19mJmZwdHREWZmZvDw8IBEIoGvry8ePHiAnJwcAMCmTZswZswYODs7QyKRQCaTYcyYMUhNTW3koyAiIiIiTcEzIlQnpqamyp/19PSgp6enfF15sfuDBw8AAFeuXMGPP/6IrVu3KtuUl5fDzMxMpGiJiIiISNOxEKF61759e/j6+iI0NFTtvlpaWg0QERERERFpGk7Nono3fvx4bN68GT/++CMUCgUUCgX++OMPZGZmPrOviYkJ8vLyUFpaKkKkRERERNRYeEaE6t3gwYOhq6uL+Ph4/PXXXwCAbt26ISgo6Jl9vb29cejQIbi6uqKiogJbtmxB7969GzpkIiIiIhKZliAITee2QkRV8K5ZJCbmR7OZmBhg+Iw0lWX7lvsyZxqA7x3NxvxotpchP7xrFhERERERaRROzSJRrV27FklJSTWui4mJeepzRoiIiIio6eDULGqyODWLxMT8aDYjY33o6mirLHtUokDh/YeNFBFV4ntHszE/mu1lyM/TpmbxjAgRETV5ujraGv/HmoioueE1IkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJDoWIkREREREJLoWjR0AUUORSLQaO4R61xSPqSlhfjQb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\n"},"metadata":{}}]},{"cell_type":"code","source":"df_mod.dropna(how='any', inplace=True)\nX_train = df_mod.loc[:'2015-10-31'].drop(['Drought', 'WeekNum', 'Quarter'], axis=1)\nX_test = df_mod.loc['2015-10-31':].drop(['Drought', 'WeekNum', 'Quarter'], axis=1)\ny_train = df_mod.loc[:'2015-10-31'][['Drought']]\ny_test = df_mod.loc['2015-10-31':][['Drought']]\n\nprint(X_train.shape)\nprint(X_test.shape)","metadata":{"id":"XfCnelrcMcDw","outputId":"e15912d5-58c9-4af0-bae3-39532475fd89","execution":{"iopub.status.busy":"2021-08-07T17:17:15.675776Z","iopub.execute_input":"2021-08-07T17:17:15.676129Z","iopub.status.idle":"2021-08-07T17:17:15.694986Z","shell.execute_reply.started":"2021-08-07T17:17:15.676093Z","shell.execute_reply":"2021-08-07T17:17:15.694174Z"},"trusted":true},"execution_count":36,"outputs":[{"name":"stdout","text":"(1824, 13)\n(298, 13)\n","output_type":"stream"}]},{"cell_type":"code","source":"fig, axs = plt.subplots(ncols=2, figsize=(17, 5), sharey=True)\ny_train.replace({0:'No Drought', 1: 'Drought'}).value_counts(normalize = True).plot(kind=\"bar\", ax=axs[0])\naxs[0].set_title(\"Training Set Distribution\")\naxs[0].xaxis.set_tick_params(rotation=70)\naxs[0].set_ylabel('Share of Obs.')\ny_test.replace({0:'No Drought', 1: 'Drought'}).value_counts(normalize=True).plot(kind=\"bar\", ax=axs[1])\naxs[1].set_title(\"Test Set Distribution\")\naxs[1].xaxis.set_tick_params(rotation=70)\nplt.show()","metadata":{"id":"k49Y2-n8rCaK","outputId":"59d65ae1-c386-4a53-a43b-613a6dbbae1a","execution":{"iopub.status.busy":"2021-08-07T17:17:15.696089Z","iopub.execute_input":"2021-08-07T17:17:15.696430Z","iopub.status.idle":"2021-08-07T17:17:15.982472Z","shell.execute_reply.started":"2021-08-07T17:17:15.696395Z","shell.execute_reply":"2021-08-07T17:17:15.981675Z"},"trusted":true},"execution_count":37,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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LFGXLl00aNAg2/YXLFgg6eZOeP369Zo3b94d/wb/VaVKFTVq1Ei//vpruvOTk5P1yiuvqGbNmlqwYIEWLFig/v37247uZ1bDv//+q9mzZ2vUqFFaunSpvL29091GXFycZs+erXHjxmnWrFmKj49X//79Ze+ZScHBwXr//fcl3Txys379+gyvETB79myNHz9effr00ZIlS9SrVy99/vnn+umnn9IsN3PmTJUoUUJz587Vu+++q1mzZtl+VwCAMRw6dEjdu3dXrVq1NG/ePE2bNk0mk0k9e/ZUYmKiJOnDDz+UxWLR1KlTtXz5cn366afy8fGRdHPf5ufnp549e9r2LyVLlkx3W15eXtq8ebPOnDmTYT1//fWXXnnlFT3++ONatGiRvv76a504ccK2z+vZs6eeeOIJBQcH27aXetT9boSFhclisWjDhg3pzp85c6aWL1+uMWPGaMWKFfrmm29Us2ZNSbpjDen1Zen5+uuvVa9ePS1YsEBhYWEaNWrUHfujW9n7t7927Zp69eqlxMREzZgxQzNmzNCVK1cUFhampKQk23JWq1VffPGF3nnnHc2fP19FixbV66+/zpf2yDYMxQf+45FHHtFzzz2XZtorr7xi+7lUqVIKDw/XwIEDNWLEiEzPHevXr58aN24sSQoPD9f8+fO1Y8cONWrUKMN12rRpo06dOkmSunXrppkzZ2rjxo1q2LChjh49qrVr12rq1Klq0KCBJGnYsGHauHFjpr9TzZo19corr+ijjz7SiBEjVK1aNdWrV09t2rRRhQoVJEmbN2/W9u3btXHjRttw8meffVbbt2/XjBkz1LBhQ9t56oUKFbqvYWkVK1ZM82XFra5cuaJLly6pefPmKlu2rCTZ/i8p0xoSExM1evRo+fr6Zrr9hIQEjRw5Uv7+/pKk0aNHq1WrVvr777/TjGDIiLu7u+16AHf6O3z33Xd67rnn9Oyzz9p+l+joaH377bfq2LGjbbk6deqoT58+tmXmz5+vv/76K80yAICcbeLEiWratKlee+0127TPPvtMISEh+vPPP9WiRQudPHlSLVu2VGBgoKSbfUWqwoULy9XVVQUKFLjj/mXo0KEaMGCAmjRpIn9/f9WqVUsPPfSQ2rRpIze3my3+N998o+7du6t79+629UaNGqVmzZpp3759CgwMVL58+ZQnT5772q9XqlRJknT8+PF058fGxqps2bKqV6+eXFxc5Ovrqxo1akiSChYsmGkN6fVl6WnSpInt9yxXrpx27NihyZMnq0WLFnb9Dvb+7RcvXqzz58/r559/tvUkY8eOVfPmzbVs2TI99dRTkm4eMHn77bdVrVo1SVL//v3VqVMnxcTEqHz58nbVBNwNgj3wH6k7mlutWLFC06ZN07Fjx3TlyhVZrVZdv35dcXFxGR4VlmTbaUtS8eLF5erqqnPnzmW6/SpVqqR5XKJECZ09e1bSzSMBkmzfcks3L0wXFBSkK1euZPq8AwYM0AsvvKBNmzZp586dWrFihb799luNHDlSbdu21c6dO3X9+nXbFxGprl+/bgvAWSUlJUUuLi7pzitUqJA6duyoXr16qUGDBqpXr55atGhh106wePHidwz10s0vB279ncqVK6ciRYro4MGDdgV7e8XHx+v06dMKCQlJM71evXqaPn26EhISbCMRbn2tSDf/3TMafgkAyJl27typY8eOKTg4OM30xMREHT16VJL0/PPP64MPPtAff/yhevXqqWnTprftJ+xRoUIFLV68WHv37tXWrVsVFRWld999V1OnTtXs2bOVL18+7dy5U9u3b9esWbNuW//o0aO37XvuVeqIt4z27R06dNCLL76oli1bKjQ0VA899JCaNWtm13WM0uvL0lOrVq00j2vXrq3x48fbte7dOHTokCpUqGAL9dLN/qNcuXI6ePCgbZqLi0uanq5EiRKSpHPnzhHskS0I9sB/pAatVP/8848GDBigPn366M0335Snp6f++ecfvfXWW7p+/Xqmz5Xe1VMzGgqf0TouLi63DRHPaMd5J4UKFdKjjz6qRx99VIMGDVKvXr00duxYtW3bVlarVWazOd3h9Vl9FdhDhw6pdOnSGc7/5JNP1KNHD23YsEEbNmzQ+PHj9d5776lz586ZPu9//+3uVXp/8+weOmfPvzsAIGezWq168sknbSOwbpV6odgOHTqoUaNG+vPPP7Vp0yb17t1bLVq00GeffXbX23NxcVHVqlVVtWpVde/eXZGRkerWrZuWL1+u9u3by2q1qnfv3uleLb548eJ3vb2MpAbajPbtgYGBWr16tTZu3KhNmzbp008/1fjx4zV37tw73hHHqPt2k8mU5kKKqb3bnfpA4F5xjj1wB1u3blWRIkU0cOBA1axZU+XKlcu2+7LeScWKFSUpzRVv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\n"},"metadata":{}}]},{"cell_type":"markdown","source":"# Logistic Regression Model","metadata":{"id":"RKaH3NB_zuLF"}},{"cell_type":"code","source":"y_train","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:18:58.107849Z","iopub.execute_input":"2021-08-07T17:18:58.108186Z","iopub.status.idle":"2021-08-07T17:18:58.119816Z","shell.execute_reply.started":"2021-08-07T17:18:58.108157Z","shell.execute_reply":"2021-08-07T17:18:58.118869Z"},"trusted":true},"execution_count":46,"outputs":[{"execution_count":46,"output_type":"execute_result","data":{"text/plain":" Drought\nDate \n1980-12-29 0\n1981-01-05 0\n1981-01-12 0\n1981-01-19 0\n1981-01-26 0\n... ...\n2015-09-28 0\n2015-10-05 1\n2015-10-12 1\n2015-10-19 1\n2015-10-26 1\n\n[1824 rows x 1 columns]","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Drought
Date
1980-12-290
1981-01-050
1981-01-120
1981-01-190
1981-01-260
......
2015-09-280
2015-10-051
2015-10-121
2015-10-191
2015-10-261
\n

1824 rows × 1 columns

\n
"},"metadata":{}}]},{"cell_type":"code","source":"# requirements for logistic regression model\n\ndef model_runner_log(m, X_train, X_test, y_train, y_test):\n from sklearn.metrics import classification_report\n model_name = 'Logistic Regression'\n m.fit(X_train, y_train)\n y_pred_train, y_pred_test = m.predict(X_train), m.predict(X_test)\n y_prob = m.predict_proba(X_test)\n train_accuracy = accuracy_score(y_train, y_pred_train)\n print(\"Train_set Accuracy of {a} is {b}%\".format(a=model_name, \n b=np.round(train_accuracy,2)*100.0))\n test_accuracy = accuracy_score(y_test, y_pred_test)\n print(\"Test_set Accuracy of {a} is {b}%\".format(a=model_name, \n b=np.round(test_accuracy,2)*100.0))\n cv_accuracy = cross_val_score(m, X_train, y_train, cv=5).mean()*100\n test_logloss = log_loss(y_test, y_prob)\n cr = classification_report(y_test, y_pred_test)\n print(cr)\n return train_accuracy, cv_accuracy, test_accuracy, test_logloss","metadata":{"id":"LNg25i118KXg","execution":{"iopub.status.busy":"2021-08-07T17:17:15.995804Z","iopub.execute_input":"2021-08-07T17:17:15.996369Z","iopub.status.idle":"2021-08-07T17:17:16.006281Z","shell.execute_reply.started":"2021-08-07T17:17:15.996333Z","shell.execute_reply":"2021-08-07T17:17:16.005477Z"},"trusted":true},"execution_count":39,"outputs":[]},{"cell_type":"code","source":"from sklearn.linear_model import LogisticRegression\nfrom sklearn.metrics import accuracy_score\nfrom sklearn.metrics import log_loss\nfrom sklearn.metrics import average_precision_score\nfrom sklearn.model_selection import cross_val_score\n\ndf_scores = pd.DataFrame(columns=['Trainset Accuracy', 'CV Accuracy', \n 'Testset Accuracy', 'Testset Logloss'])\ndf_scores.index.name = \"Model\"\n\n\n\n\n# model_log\nmodel_log = LogisticRegression(penalty= 'l2', solver='liblinear')\n\n","metadata":{"id":"Qpw3NWmt0eKI","outputId":"700f383a-6486-47e4-d0ef-5b624f02a9c5","execution":{"iopub.status.busy":"2021-08-07T17:17:16.007728Z","iopub.execute_input":"2021-08-07T17:17:16.008156Z","iopub.status.idle":"2021-08-07T17:17:16.017550Z","shell.execute_reply.started":"2021-08-07T17:17:16.008120Z","shell.execute_reply":"2021-08-07T17:17:16.016547Z"},"trusted":true},"execution_count":40,"outputs":[]},{"cell_type":"code","source":"# model_log.fit(X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:17:16.018462Z","iopub.execute_input":"2021-08-07T17:17:16.018704Z","iopub.status.idle":"2021-08-07T17:17:16.026192Z","shell.execute_reply.started":"2021-08-07T17:17:16.018681Z","shell.execute_reply":"2021-08-07T17:17:16.025371Z"},"trusted":true},"execution_count":41,"outputs":[]},{"cell_type":"code","source":"train_accuracy, cv_accuracy, test_accuracy, test_logloss = model_runner_log(model_log, X_train, X_test, y_train, y_test)\n\n\n","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:17:16.027175Z","iopub.execute_input":"2021-08-07T17:17:16.027423Z","iopub.status.idle":"2021-08-07T17:17:16.241313Z","shell.execute_reply.started":"2021-08-07T17:17:16.027400Z","shell.execute_reply":"2021-08-07T17:17:16.240477Z"},"trusted":true},"execution_count":42,"outputs":[{"name":"stdout","text":"Train_set Accuracy of Logistic Regression is 98.0%\nTest_set Accuracy of Logistic Regression is 98.0%\n precision recall f1-score support\n\n 0 1.00 0.98 0.99 212\n 1 0.95 1.00 0.97 86\n\n accuracy 0.98 298\n macro avg 0.97 0.99 0.98 298\nweighted avg 0.98 0.98 0.98 298\n\n","output_type":"stream"}]},{"cell_type":"code","source":"df_scores.at[\"Logistic Regression Model\"] = [train_accuracy, cv_accuracy, test_accuracy, test_logloss]\n\n\ndf_scores","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:19:14.510622Z","iopub.execute_input":"2021-08-07T17:19:14.510953Z","iopub.status.idle":"2021-08-07T17:19:14.522360Z","shell.execute_reply.started":"2021-08-07T17:19:14.510923Z","shell.execute_reply":"2021-08-07T17:19:14.521423Z"},"trusted":true},"execution_count":47,"outputs":[{"execution_count":47,"output_type":"execute_result","data":{"text/plain":" Trainset Accuracy CV Accuracy Testset Accuracy \\\nModel \nLogistic Regression Model 0.980263 97.697275 0.983221 \n\n Testset Logloss \nModel \nLogistic Regression Model 0.088676 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Trainset AccuracyCV AccuracyTestset AccuracyTestset Logloss
Model
Logistic Regression Model0.98026397.6972750.9832210.088676
\n
"},"metadata":{}}]},{"cell_type":"code","source":"# visualize results\nfrom sklearn.datasets import load_iris\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.model_selection import train_test_split as tts\nfrom yellowbrick.classifier import ConfusionMatrix\n\nmodel = LogisticRegression(multi_class=\"auto\", solver=\"liblinear\")\n\ny_train_vis = y_train.replace({0:'No Drought', 1: 'Drought'})\ny_test_vis = y_test.replace({0:'No Drought', 1: 'Drought'})\n\n\nrain_cm = ConfusionMatrix(\n model, classes=['No Drought','Drought'])\n\n\n\nrain_cm.fit(X_train, y_train_vis)\nrain_cm.score(X_test, y_test_vis)\nplt.title('Drought Prediction Confusion Matrix', fontsize=20, pad=20)\nplt.xlabel('True Label', fontsize=16)\nplt.ylabel('Predicted Label', fontsize=16);\n","metadata":{"id":"PV999EaCazxC","outputId":"cfad9385-5ab5-40a7-fb28-eed29f706c41","execution":{"iopub.status.busy":"2021-08-07T17:17:16.256123Z","iopub.execute_input":"2021-08-07T17:17:16.256497Z","iopub.status.idle":"2021-08-07T17:17:16.407091Z","shell.execute_reply.started":"2021-08-07T17:17:16.256461Z","shell.execute_reply":"2021-08-07T17:17:16.406182Z"},"trusted":true},"execution_count":44,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAj8AAAHOCAYAAAB3imgWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABKdklEQVR4nO3deVhUZf/H8c+A4K7IIihauTwMKoqgaJlmbmkqLmlmbpWalVvhUtlT2b64lLtpJZm55pa7Fm6ZhqJpbpmi5Y6KIu6yzO+PfszTyKCjMgxy3q/r8rqc+9znzJczM/CZ+9znHJPFYrEIAADAINxcXQAAAEBOIvwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwALnb06FGZzWa9/vrrri7F5cxms7p27WrTNnbsWJnNZsXGxjrlOdn/ty8lJUVjxozRY489ppCQEJnNZv30009Of1577w/cPt7zUj5XFwDcyGw22zz28PBQkSJFVKpUKVWuXFmPPfaY6tatK3d3dxdV6Hrz58/XkCFD9PHHH+uJJ564rXVv3L9ubm4qVqyYzGaznnzySUVGRmZnqbmC2WxWrVq1NG3aNFeXctt+//13zZo1S1u3btWpU6eUkpIiPz8/Va1aVc2aNVPTpk1z/LMQHR2t8ePHKyIiQo8//rjy5cuncuXK5WgNuUXG58lkMmnVqlW677777Pbr2rWrNm/eLEl39Ln9t7v5/OMfhB/kWn379pUkpaWl6cKFC9q/f79++OEHzZ07VyEhIRoxYoRhf+Fmh4z9m5qaqoMHDyomJkaxsbHatWuXhgwZ4uLq/qdz585q3ry5Spcu7ZTt+/v7a9myZSpatKhTtn+nUlJS9MEHH2jWrFlyd3dXRESEHn30UXl6eurkyZP69ddftXLlSjVt2lRjxozJ0drWrFmjQoUKacqUKfL09Myx5122bJkKFiyYY8/nqHz58ik1NVVz587VgAEDMi3/66+/tHnzZms/V8ut7/mcRPhBrtWvX79MbWfOnNH777+vFStW6LnnntO8efPk4+PjgurufTfu302bNum5557T1KlT1bVrV5UpU8ZFldny9vaWt7e307bv4eGhChUqOG37d+q9997TnDlzFBQUpNGjR6t8+fI2y9PS0rR48WKtXr06x2s7deqUSpQokaPBR1KufJ0kycfHR35+fpo/f7769++vfPls/7R+//33kqQGDRroxx9/dEWJNnLrez4nMecH9xRfX199/vnnqlWrlk6cOKEvvvjCZnnXrl1lNpt1/fp1jRs3Tk2bNlVISIjNse1du3apX79+euihhxQSEqIGDRronXfe0alTpzI9X8b27Jk/f77MZrPmz5+fadnPP/+sjh07qnr16qpVq5Z69+6t+Ph4vf766zKbzTp69KjdbR49elRRUVGqXbu2qlatqieeeEJr1qzJVFPGyMyQIUNkNput/7LariMeeughlS9fXhaLRTt37pRkO99m8eLFevLJJxUWFqaGDRta17ty5YomTZqk1q1bq3r16goLC9NTTz2lJUuW2H2e69eva/z48WrcuLFCQkLUsGFDff7557p+/brd/jeb8xMfH68hQ4aoYcOGCgkJ0UMPPaROnTppxowZkv73GknS5s2bbfbV2LFjJd18/sOpU6f07rvvWrf/4IMPqm/fvtq1a1emvv9+P/z666/q2rWrwsLCFB4erl69eik+Pv5mu9/G1q1bNWfOHHl5eenrr7/OFHwkyd3dXW3atNGIESNs2tPT0zVz5ky1a9dOYWFhql69utq1a6cZM2YoPT0903Yy5tGcPXtWb731lurWrauQkBC1aNFC8+bNs+n77/fvsWPHrPsy4/0QGxtrs29v1LBhQ5v3jvTP++Hbb79V27ZtFRERodDQUDVs2FAvvfSSNm7caLfWG124cEEjR45U06ZNVbVqVUVERKhHjx6Z1r+xxr1796pXr16qWbOmQkND1aVLF23bts1u7bfSoUMHnT59WmvXrrVpT0lJ0YIFCxQWFpZl4Ni1a5c++OADtWrVSrVq1VLVqlX12GOP6ZNPPtH58+dt+jry+b/V59bee37Hjh0KCQlRo0aNdOHCBZvnPHXqlOrUqaOwsLDbeh/nZoz84J7j5uam3r17a/PmzVq6dKneeOMNmUwmmz79+/fXzp079cgjj6hx48bW0aE1a9ZYRzyaNm2q0qVLa/fu3Zo5c6ZiYmI0Y8YMlS1b9q7qW7p0qQYOHKj8+fPr8ccfl5+fn3777Td17NhRwcHBWa537NgxPfnkkypbtqxat26t8+fPa9myZerdu7eio6P14IMPSpLatm2rokWLKiYmRo0aNVKlSpWs2yhWrNhd1Z5xq78b92d0dLR++eUXNWjQQLVr17b+ckxOTtYzzzyjPXv2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rFlq3ry5atWqpeDgYHl6eiohIUG//vqrTp48qaZNm1rXiYyMVExMjJYvX64WLVqocePG1uv8HD16VM2bN3fq4QsPDw9169ZNEyZMUJs2bdSkSROlpqZq48aNKlmyZKZrFiUkJKhNmzYKCgqS2WxWqVKldPHiRa1du1anT59W165db7mPBw4cqLi4OH333XfauXOnateubb3Oz6VLl/TWW2/d9bW7blfp0qUdPmmiatWqCg8P16pVq9SxY0eFh4crMTFR69evV7ly5exe58kZn/+UlBRFRUXp4sWLmjhxonU+Xf369fXcc89pypQp+vTTT/XWW2/d0fZzG8IPcq2Ms5E8PDxUuHBhBQYGqk2bNtYbm95JgGjcuLFmzJihSZMmacOGDbp48aJ8fX3VsWNH9e7dO9MEWh8fH3333XcaNmyYtmzZoi1btigkJERTpkzR0aNHM4UfSWrVqpWKFy+uiRMnatmyZfL09FTNmjU1a9YsDRs2TNLdzxUpXry4xowZo/Hjx2vBggW6fPmy9blzMvwUKVJE06ZN05w5c7RkyRKtWrVK165dk6+vr+6//34NGTLE5iJ1JpNJo0eP1uTJk7VgwQJ99913KlmypNq1a6c+ffpYR9oc8eijj2revHn68ssvtWnTJv3yyy8qVqyYypcvn2lE8L///a9MJpM2bdqkdevWKT09XX379r1p+ClbtqzmzZunCRMmaP369dq8ebMKFy6sevXq6cUXX7yjM2luh4eHh95991098cQTmj17trZu3aodO3YoJSVFPj4+CgkJ0WuvvaZmzZrZrPfZZ58pIiJC8+bN0+zZsyX9c1uI7t276+mnn3ZqzdI/FxgtWLCg5syZozlz5sjX11fNmzdXv379Mh0CCgwMVL9+/bR582bFxsbq3Llz8vLyUrly5TRw4MBbHjKS/hnVmz17tiZNmqQff/xR0dHRKlCggKpVq6YePXqobt26zvpRs4W7u7smTpyoUaNGaf369Zo2bZr8/f315JNP6qWXXrK7D5zx+R85cqR27typrl27ZroK94ABA6wB88EHH1STJk3u6DlyE5PlZucLA8g2aWlpaty4sVJSUu74uh0AgLvHnB8gmyUnJ9vMt5D+uSbRxIkTdfz4cafNEwEAOIbDXkA22759u6KiovTwww8rMDBQly9f1o4dO7R3716VKlXK7t3qAQA5h8Ne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+98uOHDggKpXr26T+oODg1W0aNHbet74+HiFhobatIWFhdntW6lSJev/fX195e7ubnOYDXnfoCl71D+ynLo2KKOqDxRT+4dL68OuwRo+P15Xr6dJkkqVyK9S3vnlXfR/780q9xWVJP196t6bzA/kVp6enplGeDIeMy8073BZ+ClXrpyeeuopjRgxQqmpqU5/vgMHDqho0aLy8vKythUsWPC2t2MymTIdZrBX/79D1s14eHhkavv3oTnkfZeupcnthveLu5tJFouU8VarW9lHJ85e0/lLKdY++45dlCQ9UJKJz0B2KV68uM6ePWvTdvbsWeXPn18FChRwUVXIbi69yGHfvn116tQpzZkzx6a9YsWKio+Pt3kDnjlzRocOHdJ//vOf236ehIQELV68WE2aNLEZ6blRxYoVtX37dpvU/8cff+jChQsKCvrnWio+Pj5KTExUWlqatc+ePXtstlOhQgVt377dpu3Gx47ICEaEobytde0AjVwQrwWbTuivhMtaue2U3vpunx6v4aeC+d0lSb2b369C+d31zOfbtevvZG3+85x6jftd9UO8Vb18MRf/BEDeUaZMGV24cEEHDx7UpUuXdPLkSR07dkz33Xefq0tDNnJp+PH29lavXr00depUm/bIyEh5e3srKipKu3fv1q5duxQVFSV/f381b978pttMSUnR6dOnlZCQoH379mnGjBl66qmn5O3trYEDB9503S5duujixYsaMmSI/vzzT8XFxWnw4MGqWbOmatasKUmqXbu2rl69qjFjxujw4cNavny5pk+fbrOd5557Ttu2bdPo0aN16NAhxcTEKDo6WpLjI0KSVKJECRUqVEgbNmzQ6dOnrROhkbeM6VVFXRuW0aApe1Wp91r1Gve7mob76ZtXqlv7lPIuoJgPHlTylVTVGrhBT3wUp9DyxTRvSM3bek8BuLlixYopJCREiYmJiouL06FDh1SuXDlOc89jXH6F52effVYzZ87UiRMnrG0FChTQ119/rY8//lhdunSRJNWqVUtfffXVLY+5xsXFqW7dunJ3d7deq6Fz587q3LmzChW6+eEBX19fTZkyRcOHD1f79u3l6emp+vXr64033rD2KV++vN5//31NnDhR0dHRqlWrlgYMGKABAwZY+4SEhGjEiBEaNWqUvvzyS1WpUkUvv/yyoqKilD9/fof3jZubm4YOHaox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2jp5trWtaCk/XTx52qbfxZNnrMvsqfHCU9o7f5UunznnvGKR7fJk+LHH399fkZGRWrVqldL/f+La8uXLdfbsWX3zzTeaMmWKTp8+re7duysgIEDff/+9Jk6cqD///DPLG7xmZdeuXRo0aJBatGihH374QT179tRHH31kt++nn36qF154QT/88INCQ0MVFRWl8+fPS5L18N3YsWO1YcMGzZ079y72AO4lzZvX1dNPN1NoaJDq1QvTd9+9r3r1qmv48GmuLg2459V8qZPqvfGC5rTvrwvHEu54O2XrhKtkSJC2Tpp9687IVQwTfiSpYsWKunjxos6d+yehlyxZUu+8844qVqwos9ms6dOnq0iRIvr4449lNptVs2ZNDR8+XHFxcdqyZYvDzxMdHa3w8HBFRUWpfPnyaty4sbp37263b9++ffXII4/ogQce0MCBA3Xp0iX9/vvvkiRvb29JUvHixeXn52d9DGN66KFq+uuvE64uA7inPTSwu5oMH6yZrV7SoZhNNssunDitIgG2IzyF/X2sy25U48WOOr03Xn+v2+y8guEUhgo/lv8/jmsymSRJVapUkZvb/3bBgQMHVL16dXl6elrbgoODVbRoUe3fv9/h54mPj1doaKhNW1hYmN2+lSpVsv7f19dX7u7uNofZgAzbtv2hsmX9XV0GcM969N3+qj+0r2Y075Up+EjSkV+2qXyTOtL//42QpIrNHtH1S5d18rc9Nn0LlCiuyu2battkRn3uRYYKPwcOHFDRokXl5eUlSSpYsOBtb8NkMllDVIbU1FS7/Rzh4eGRqS3jsByMa8CAz7R69RYdPHhU27fvU58+n+rHH2P1yitPu7o04J7U9PM3VGdwDy3oOlhn9h1SYX9fFfb3Vf5iRax94ibOVIHiRdXqyw/kV7migiIbqsH7/bV57HdKuXzFZnvVn2kjSdo+dWEO/hTILnnuVPesJCQkaPHixWrSpInNaM+/VaxYUfPnz9f169etoz9//PGHLly4oKCgIEmSj4+PEhMTlZaWJnd3d0nSnj223wgqVKig7du327Td+NgRGcGIMGQ8J06cUbduQ3X69DkVL15E1ar9Rz/9NEENG0a4ujTgnvTgK89IkjounGDTvv2b+frhuSGSpOSjJzXtse5q+tnr6rV1vq4mJWvb5Dla/eaoTNsL7/WU9sxdqavnzju9dmS/PBl+UlJSdPr0aaWnpyspKUlbt27V5MmT5e3trYEDB2a5XpcuXfTtt99qyJAheuGFF5ScnKx3331XNWvWVM2aNSVJtWvX1tWrVzVmzBi1a9dOu3fv1vTp022289xzz6l9+/YaPXq0WrVqpYMHDyo6OlqS4yNCklSiRAkVKlRIGzZsUMWKFeXp6anixYvfwR7BvWbmTPsT5AHcmXdNZof6HYvdoSkP33qEdULl5ndbElwoTx72iouLs56+3q1bNy1evFidO3fWggUL5Oub9UXjfH19NWXKFJ08eVLt27fXiy++qKCgII0ZM8bap3z58nr//fe1ZMkStWzZUvPmzdOAAQNsthMSEqIRI0Zo8eLFioyM1OTJk/Xyyy9LkvLnz+/wz+Hm5qahQ4dq+fLlql+/vtq2bXubewIAANzIZLlxAgucYuHChRoyZIhiY2NVrFgxF1SwUxIXcgRyUmBgK0lSr+NFbtETQHZaVstLsbGxWS7Pk4e9coOvv/5atWvXVvHixbVz506NGDFCzZo1c1HwAQAAGQg/TrJv3z5FR0crKSlJpUqVUmRk5G1fLBEAAGQ/wo+TDBs2zNUlAAAAO/LkhGcAAICsEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAIChEH4AAICh5HN1AcgpVV1dAGA4ZcqUkSQtK+PiQgCDKVWq1E2XmywWiyWHagEAAHA5DnsBAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAAABDIfwAuUijRo107ty5TO3Jyclq1KiRCyoCgLyH8APkIseOHVN6enqm9uvXryshIcEFFQFA3pPP1QUAkLZs2WL9/2+//abixYtbH6elpemXX35RQECAK0oDDKVRo0aaO3euSpQoYdOenJystm3bKiYmxkWVITsRfoBcoGvXrjKZTDKZTOrbt2+m5YUKFdLQoUNdUBlgLIy+GgPhB8gF1q1bJ4vFokcffVQLFiyQt7e3dZmHh4dKlCghk8nkwgqBvI3RV2MxWSwWi6uLAADAlYKDg61fMOz9WcwYfW3dunVOlwYnIPwAucyFCxf0+++/68yZM5l+Cbdp08Y1RQF5XEJCAqOvBkL4AXKR9evXa8CAAbp48aLc3d1tlplMJu3atctFlQFA3kH4AXKRFi1aqFq1aho0aJB8fHxcXQ5gSIy+5n2EHyAXqV69uhYtWqT77rvP1aUAhsToqzFwtheQi4SEhOjIkSOEH8BFPv30UzVp0oTR1zyO8AO42L+vHdK7d28NGzZMV65cUXBwsDw8PGz6+vv753R5gKEcO3ZMEydOJPjkcYQfwMXq169vcxaJxWJR3759M7WZTCbt3bvXFSUChsHoqzEQfgAX+/bbb11dAmBojL4aDxOeAQCG9u8LHEr/u8gho695FyM/QC6ybds2u+0mk0n58+fXfffdpyJFiuRwVUDexuir8TDyA+Qi9i6x/+/H7u7uatasmT766CPlz5/fZXUCwL2M8APkImvXrtVHH32k7t27q3r16pKk7du3Kzo6WlFRUbp69apGjBihNm3aaNCgQa4tFsiDGH01BsIPkIs8/fTT6tmzpxo1amTTHhMToy+//FKzZs3SsmXLNHr0aK1cudJFVQJ5F6OvxuDm6gIA/M/u3btVoUKFTO0VKlTQnj17JEnVqlXTiRMncro0wBC++OILlS1bVkOHDtXChQu1cOFCDR06VPfdd59GjRqlDz/8ULGxsRo7dqyrS8VdYMIzkIv4+/tr0aJF6t+/v037okWLFBAQIEk6f/68ihcv7orygDxv0qRJeu2112xGX4ODg+Xn52cdffX09NTo0aM59HwPI/wAucjLL7+swYMHa/PmzQoNDZXJZNL27du1bds2jRgxQpIUGxurOnXquLhSIG9i9NUYCD9ALtKyZUs98MAD+uabb7Rx40ZJ//zS/f7771WlShVJUvfu3V1ZIpCnMfpqDIQfIJcJCQmxjvIAyFmMvhoDZ3sBucjx48dvurx06dI5VAlgXLt27dI333yj+Ph4Sf+Mvj733HPW0Vfc+wg/QC5y42X2b8Sl9QHg7nHYC8hFpk+fbvM4NTVVu3fv1owZMzRgwAAXVQUYB6OvxsDID3APWL58uRYsWKDJkye7uhQgT2P01RgY+QHuASEhIRoyZIirywDyPEZfjYHwA+RyFotFc+fOlZ+fn6tLAfK8GjVqZGqrXbu2SpUqpQULFqh58+YuqArZjfAD5CKPPfaYzZC7xWJRYmKirl69qvfff9+FlQHGxuhr3kL4AXKRVq1a2Tw2mUzy8fFR7dq1Va5cORdVBRgbo695DxOeAQD4f7cafX3iiSdcWB2yCyM/QC4UFxenAwcOSJKCgoIUHh7u4ooAY2D01RgY+QFykbNnz+rll1/Wli1bVLRoUUnShQsXFBERodGjR8vb29vFFQLAvY/wA+QiAwcO1P79+zVs2DAFBwdLkv744w+9+uqrMpvNGj58uIsrBIyB0de8jfAD5CK1atXSF198kekXbVxcnHr37q3Nmze7qDLAGBh9NQY3VxcA4H+uXbumYsWKZWovXry4rl+/7oKKAGP58MMPdf78eS1cuFBbtmzRli1btHDhQp0/f14ff/yxq8tDNiH8ALlI1apVNWnSJKWmplrbUlNTNWnSJFWtWtWFlQHG8PPPP+udd96xHnaW/rnlxdtvv61169a5sDJkJ872AnKRQYMGqUePHmrcuLFCQ0MlSTt27NDFixc1ZcoUF1cH5H2MvhoDIz9ALlK9enWtXLlSbdq0UXp6utLT09W2bVutXLlS1apVc3V5QJ7H6KsxMOEZyCVSUlLUoEEDRUdH6z//+Y+rywEMafv27erRo4eKFi1qd/SVLyF5AyM/QC7h4eEhSXJz42MJuAqjr8bAyA+Qi4wePVrnzp3TO++84+pSAMNh9NU4mPAM5CKnTp3SihUr9Ouvv6pKlSoqVKiQzXLu7A44D6OvxkH4AXKRw4cPq3LlypL+CUL/9u+bLQJwjieffFLTpk1j9DWP47AXAAD/77///a9WrFghPz8/Rl/zMEZ+gFzo7NmzMplMKlGihKtLAQyF0VdjYOQHyCXOnj2rESNG6Mcff9TFixclSUWLFtVjjz2mAQMGcE8hIAfxBSRvI/wAucCVK1fUtm1bnTt3TpGRkapYsaIsFov279+vJUuWyNfXV/Pnz1eBAgVcXSqQZ/EFxDgIP0Au8NVXX2n69OmaNWuW/P39bZYlJCSoY8eO6tq1q7p37+6iCoG8jS8gxsKcHyAXWL16tV544YVMwUeS/P399fzzz2vp0qWEH8BJpk+frmvXrmnRokWZPocvvPCCOnbsqBkzZvAZzCO4mAGQCxw8eFA1atTIcnnNmjUVHx+fgxUBxuLIF5CYmBgXVAZnIPwAucDFixfl5eWV5XIvLy/rHAQA2Y8vIMZC+AFygbS0NLm7u2e53M3NTWlpaTlYEWAsfAExFub8ALmAxWLRyy+/bL28/o1SUlJyuCLAWPgCYiyEHyAXaNu27S37lClTJgcqAYyJLyDGQvgBcoGPP/7Y1SUAhsYXEGPhOj8AAMBQmPAMAAAMhfADAAAMhfADAAAMhfADAAAMhbO9gFwmNTVVS5cu1YEDByRJQUFBevzxx5UvHx9XAMgOnO0F5CKHDx/W888/r5MnT6pcuXKSpEOHDikgIEBfffWVypYt6+IKAeDeR/gBcpEXX3xRly9f1ueffy4fHx9J0pkzZxQVFaUiRYpo4sSJLq4QAO59hB8gFwkLC9P06dNVuXJlm/Zdu3apW7du2rZtm4sqA4C8gwnPQC5jMpkytbm58VEFgOzCb1QgF4mIiNCwYcN0/vx5a1tSUpKGDx+uiIgIF1YGAHkHh72AXOTQoUPq3r27kpKSVKFCBUlSfHy8SpQooSlTpuiBBx5wbYEAkAcQfoBc5tq1a1q0aJHi4+MlSRUrVlRkZKTy58/v4soAIG8g/AAAAEPhqmlALrBlyxaH+jHvBwDuHiM/QC4QHBwsk8kkex/HjLO/TCaT9uzZk9OlAUCew8gPkAusW7fObntqaqrmzJmjqVOnqkSJEjlcFQDkTYz8ALnUmjVrNGLECJ06dUrPP/+8nn32WXl6erq6LAC45zHyA+Qyu3fv1qeffqpt27bpqaeeUp8+feTt7e3qsgAgzyD8ALnEiRMnNHLkSC1dulSNGjXSkiVLuK4PADgB4QfIBUaMGKFp06YpODhY3333nWrUqOHqkgAgz2LOD5ALBAcHq0CBAgoLC7N7b68MU6ZMycGqACBvYuQHyAXatGlz09ADAMg+jPwAAABD4a7uAADAUAg/AADAUAg/AADAUAg/AO5JZrP5lv8aNmzo0hobNmyoQYMG3fV2YmNjZTabtXHjxmyoSjp69KjMZrPmz5+fLdsD7jWc7QXgnjR79mybx3379pXZbFa/fv2sbdwOBIA9hB8A96Tq1avbPPb09FSJEiUytf9bWlqaLBaL8uXjVx9gZBz2ApBnmc1mff7555o8ebIaNmyokJAQ/fnnn5o/f77MZrOOHj1q03/s2LEym802bampqZo0aZKaNWumkJAQ1a1bV5988omuXbuWLTWOGTNGbdu2VXh4uGrXrq1u3bpp+/btdvteuHBBr7/+uiIiIhQeHq6BAwfq3LlzOVovkBfw9QdAnjZ//nyVLVtWr732mgoWLKiSJUvqjz/+cHj9wYMHa82aNerZs6fCw8MVHx+v0aNH69ixYxo7duxd15eQkKBnnnlGAQEBunLlihYtWqQuXbpo3rx5mYLYRx99pDp16mjkyJH6+++/9dlnn+nUqVOaNm1ajtUL5AWEHwB5msVi0ZQpU1SgQIHbXjcuLk7Lli3Tp59+qjZt2kiS6tSpo+LFi2vw4MHau3evKlWqdFf1ffjhh9b/p6WlqV69emrRooW+//57vfnmmzZ9K1asqI8//tj6OKOOTZs26aGHHsqReoG8gMNeAPK0evXq3VHwkaSff/5ZHh4eatq0qVJTU63/6tatK0nasmXLXde3ceNGde3aVbVr11blypVVpUoV/fXXXzp06FCmvo8//rjN42bNmsnNzU2//fZbjtUL5AWM/ADI00qWLHnH6yYmJiolJSXLSdRJSUl3vG1J2r17t3r16qW6devqww8/lJ+fn9zc3PTmm2/q+vXrmfr7+vraPPb09FSxYsWUkJCQI/UCeQXhB4Dh5M+fX5KUkpJi035jOPDy8lL+/Pk1ffp0u9u5m2AlSatWrZK7u7vGjh0rDw8Pa3tycrKKFSuWqf+ZM2dsHl+/fl3Jycny9/fPkXqBvILwA8BwSpcuLUnav3+/ypUrJ+mfs6Q2bNhg069evXr68ssvdfHiRT300EPZXseVK1fk5uYmk8lkbdu0aZOOHz+uMmXKZOq/fPlytW/f3vp4xYoVSk9PV1hYWI7UC+QVhB8AhlO1alXdd999GjZsmNLT0+Xp6akZM2ZkGgmqXbu2WrZsqf79++vZZ59VtWrV5ObmpmPHjmndunUaNGiQNTxl5cSJE1qxYkWm9rCwMNWrV09Tp07V66+/rnbt2unQoUOaMGGCdSTnRgcOHNCQIUPUvHlz/fXXX/r8889Vq1Yta9DJjnoBIyD8ADCcfPnyacKECXrvvfc0ZMgQFS9eXM8884xCQ0M1btw4m77Dhw/XtGnTNG/ePH3xxRfy9PRUYGCg6tatm2kOjj1xcXGKi4vL1D569Gg1a9ZMb775pqKjo7Vq1Sr95z//0bBhwzRx4kS72/rvf/+r1atXKyoqSmlpaWrYsKH++9//Zmu9gBGYLBaLxdVFAAAA5BROdQcAAIZC+AEAAIZC+AEAAIZC+AEAAIZC+AEAAIZC+AEAAIZC+AEAAIZC+AEAAIZC+AEAAIbyfzClqCcJZO39AAAAAElFTkSuQmCC\n"},"metadata":{}}]},{"cell_type":"code","source":"df_som","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:30:56.584093Z","iopub.execute_input":"2021-08-07T17:30:56.584424Z","iopub.status.idle":"2021-08-07T17:30:56.618584Z","shell.execute_reply.started":"2021-08-07T17:30:56.584396Z","shell.execute_reply":"2021-08-07T17:30:56.617811Z"},"trusted":true},"execution_count":48,"outputs":[{"execution_count":48,"output_type":"execute_result","data":{"text/plain":" YearWeek Date precipitation Month Month_Name WeekNum Quarter \\\n0 198101 1980-12-29 90.273059 12 Dec 1 4 \n1 198102 1981-01-05 90.785433 1 Jan 2 1 \n2 198103 1981-01-12 80.341648 1 Jan 3 1 \n3 198104 1981-01-19 15.066109 1 Jan 4 1 \n4 198105 1981-01-26 49.890175 1 Jan 5 1 \n... ... ... ... ... ... ... ... \n2117 202123 2021-06-07 15.350595 6 Jun 23 2 \n2118 202124 2021-06-14 119.006642 6 Jun 24 2 \n2119 202125 2021-06-21 23.071275 6 Jun 25 2 \n2120 202126 2021-06-28 12.125267 6 Jun 26 2 \n2121 202153 2022-01-03 30.936969 1 Jan 1 1 \n\n Day WeekinMonth Mean_weekly_rainfall Rain_Season Drought \\\n0 29 5 31.787728 1 0 \n1 5 1 31.647279 0 0 \n2 12 2 22.705327 0 0 \n3 19 3 27.348557 0 0 \n4 26 4 19.190386 0 0 \n... ... ... ... ... ... \n2117 7 1 70.599735 1 1 \n2118 14 2 66.848236 1 0 \n2119 21 3 63.328420 1 1 \n2120 28 4 58.610165 1 1 \n2121 3 1 31.787728 0 0 \n\n Lag_Rainfall_mm_1w Lag_Rainfall_mm_2w Lag_Rainfall_mm_3w \\\n0 NaN NaN NaN \n1 90.273059 NaN NaN \n2 90.785433 90.273059 NaN \n3 80.341648 90.785433 90.273059 \n4 15.066109 80.341648 90.785433 \n... ... ... ... \n2117 44.641217 33.857197 127.047084 \n2118 15.350595 44.641217 33.857197 \n2119 119.006642 15.350595 44.641217 \n2120 23.071275 119.006642 15.350595 \n2121 12.125267 23.071275 119.006642 \n\n Lag_Rainfall_mm_4w Lag_Rainfall_mm_5w \n0 NaN NaN \n1 NaN NaN \n2 NaN NaN \n3 NaN NaN \n4 90.273059 NaN \n... ... ... \n2117 64.158720 70.368040 \n2118 127.047084 64.158720 \n2119 33.857197 127.047084 \n2120 44.641217 33.857197 \n2121 15.350595 44.641217 \n\n[2122 rows x 17 columns]","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
YearWeekDateprecipitationMonthMonth_NameWeekNumQuarterDayWeekinMonthMean_weekly_rainfallRain_SeasonDroughtLag_Rainfall_mm_1wLag_Rainfall_mm_2wLag_Rainfall_mm_3wLag_Rainfall_mm_4wLag_Rainfall_mm_5w
01981011980-12-2990.27305912Dec1429531.78772810NaNNaNNaNNaNNaN
11981021981-01-0590.7854331Jan215131.6472790090.273059NaNNaNNaNNaN
21981031981-01-1280.3416481Jan3112222.7053270090.78543390.273059NaNNaNNaN
31981041981-01-1915.0661091Jan4119327.3485570080.34164890.78543390.273059NaNNaN
41981051981-01-2649.8901751Jan5126419.1903860015.06610980.34164890.78543390.273059NaN
......................................................
21172021232021-06-0715.3505956Jun2327170.5997351144.64121733.857197127.04708464.15872070.368040
21182021242021-06-14119.0066426Jun24214266.8482361015.35059544.64121733.857197127.04708464.158720
21192021252021-06-2123.0712756Jun25221363.32842011119.00664215.35059544.64121733.857197127.047084
21202021262021-06-2812.1252676Jun26228458.6101651123.071275119.00664215.35059544.64121733.857197
21212021532022-01-0330.9369691Jan113131.7877280012.12526723.071275119.00664215.35059544.641217
\n

2122 rows × 17 columns

\n
"},"metadata":{}}]},{"cell_type":"code","source":"df_spi_6Monthly = df_mod\ndf_spi_6Monthly.head()","metadata":{"execution":{"iopub.status.busy":"2021-08-07T17:54:43.572326Z","iopub.execute_input":"2021-08-07T17:54:43.572631Z","iopub.status.idle":"2021-08-07T17:54:43.594328Z","shell.execute_reply.started":"2021-08-07T17:54:43.572603Z","shell.execute_reply":"2021-08-07T17:54:43.593457Z"},"trusted":true},"execution_count":51,"outputs":[{"execution_count":51,"output_type":"execute_result","data":{"text/plain":" Time_t Month WeekNum Quarter Day WeekinMonth precipitation \\\nDate \n1980-12-29 1 12 1 4 29 5 90.273059 \n1981-01-05 2 1 2 1 5 1 90.785433 \n1981-01-12 3 1 3 1 12 2 80.341648 \n1981-01-19 4 1 4 1 19 3 15.066109 \n1981-01-26 5 1 5 1 26 4 49.890175 \n\n Mean_weekly_rainfall Avg_Rainfall_Diff Rain_Season Drought \\\nDate \n1980-12-29 31.787728 58.49 1 0 \n1981-01-05 31.647279 59.14 0 0 \n1981-01-12 22.705327 57.64 0 0 \n1981-01-19 27.348557 -12.28 0 0 \n1981-01-26 19.190386 30.70 0 0 \n\n Lag_Rainfall_mm_1w Lag_Rainfall_mm_2w Lag_Rainfall_mm_3w \\\nDate \n1980-12-29 0.000000 0.000000 0.000000 \n1981-01-05 90.273059 0.000000 0.000000 \n1981-01-12 90.785433 90.273059 0.000000 \n1981-01-19 80.341648 90.785433 90.273059 \n1981-01-26 15.066109 80.341648 90.785433 \n\n Lag_Rainfall_mm_4w Lag_Rainfall_mm_5w \nDate \n1980-12-29 0.000000 0.0 \n1981-01-05 0.000000 0.0 \n1981-01-12 0.000000 0.0 \n1981-01-19 0.000000 0.0 \n1981-01-26 90.273059 0.0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Time_tMonthWeekNumQuarterDayWeekinMonthprecipitationMean_weekly_rainfallAvg_Rainfall_DiffRain_SeasonDroughtLag_Rainfall_mm_1wLag_Rainfall_mm_2wLag_Rainfall_mm_3wLag_Rainfall_mm_4wLag_Rainfall_mm_5w
Date
1980-12-291121429590.27305931.78772858.49100.0000000.0000000.0000000.0000000.0
1981-01-0521215190.78543331.64727959.140090.2730590.0000000.0000000.0000000.0
1981-01-12313112280.34164822.70532757.640090.78543390.2730590.0000000.0000000.0
1981-01-19414119315.06610927.348557-12.280080.34164890.78543390.2730590.0000000.0
1981-01-26515126449.89017519.19038630.700015.06610980.34164890.78543390.2730590.0
\n
"},"metadata":{}}]},{"cell_type":"code","source":"df_spi_6Monthly = df_spi_6Monthly.reset_index()","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:27:18.763305Z","iopub.execute_input":"2021-08-07T18:27:18.763684Z","iopub.status.idle":"2021-08-07T18:27:18.770833Z","shell.execute_reply.started":"2021-08-07T18:27:18.763643Z","shell.execute_reply":"2021-08-07T18:27:18.769900Z"},"trusted":true},"execution_count":70,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import TimeSeriesSplit\n\nN_SPLITS = 3\n\nX = df_spi_6Monthly.Date\ny = df_spi_6Monthly.precipitation\n\nfolds = TimeSeriesSplit(n_splits=N_SPLITS)","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:27:35.981445Z","iopub.execute_input":"2021-08-07T18:27:35.981813Z","iopub.status.idle":"2021-08-07T18:27:35.987003Z","shell.execute_reply.started":"2021-08-07T18:27:35.981780Z","shell.execute_reply":"2021-08-07T18:27:35.985993Z"},"trusted":true},"execution_count":71,"outputs":[]},{"cell_type":"code","source":"df_spi_6Monthly['quarter_idx'] = (df_spi_6Monthly.Quarter != df_spi_6Monthly.Quarter.shift(1)).cumsum()\n\ntarget = 'precipitation'\nfeatures = [feature for feature in df_spi_6Monthly.columns if feature != target]\n\nN_SPLITS = 160\n\nX = df_spi_6Monthly[df_spi_6Monthly.quarter_idx < N_SPLITS][features]\ny = df_spi_6Monthly[df_spi_6Monthly.quarter_idx < N_SPLITS][target]\n\nX_test = df_spi_6Monthly[df_spi_6Monthly.quarter_idx >= N_SPLITS][features].reset_index(drop=True)\ny_test = df_spi_6Monthly[df_spi_6Monthly.quarter_idx >= N_SPLITS][target].reset_index(drop=True)","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:27:37.652520Z","iopub.execute_input":"2021-08-07T18:27:37.652860Z","iopub.status.idle":"2021-08-07T18:27:37.668959Z","shell.execute_reply.started":"2021-08-07T18:27:37.652830Z","shell.execute_reply":"2021-08-07T18:27:37.668090Z"},"trusted":true},"execution_count":72,"outputs":[]},{"cell_type":"code","source":"df_spi_6Monthly['quarter_idx']","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:06:45.314852Z","iopub.execute_input":"2021-08-07T18:06:45.315206Z","iopub.status.idle":"2021-08-07T18:06:45.326310Z","shell.execute_reply.started":"2021-08-07T18:06:45.315176Z","shell.execute_reply":"2021-08-07T18:06:45.325489Z"},"trusted":true},"execution_count":55,"outputs":[{"execution_count":55,"output_type":"execute_result","data":{"text/plain":"Date\n1980-12-29 1\n1981-01-05 2\n1981-01-12 2\n1981-01-19 2\n1981-01-26 2\n ... \n2021-06-07 163\n2021-06-14 163\n2021-06-21 163\n2021-06-28 163\n2022-01-03 164\nName: quarter_idx, Length: 2122, dtype: int64"},"metadata":{}}]},{"cell_type":"code","source":"from datetime import datetime, date \nimport matplotlib.pyplot as plt\nimport seaborn as sns","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:23:05.711214Z","iopub.execute_input":"2021-08-07T18:23:05.711545Z","iopub.status.idle":"2021-08-07T18:23:05.716703Z","shell.execute_reply.started":"2021-08-07T18:23:05.711516Z","shell.execute_reply":"2021-08-07T18:23:05.715880Z"},"trusted":true},"execution_count":62,"outputs":[]},{"cell_type":"code","source":"folds = np.linspace(0, N_SPLITS-3, num=N_SPLITS-2)\n\nf, ax = plt.subplots(nrows=2, ncols=1, figsize=(16, 8))\n\nsns.lineplot(x=X.Date, y=y, ax=ax[0], color='dodgerblue', label='train')\nsns.lineplot(x=X_test.Date, y=y_test, ax=ax[0], color='darkorange', label='test')\n\nsns.lineplot(x=df_spi_6Monthly.Date, y=df_spi_6Monthly.quarter_idx, ax=ax[1], color='dodgerblue')\nax[0].set_xlim([date(1981, 1, 1), date(2021, 1, 1)])\nax[1].set_xlim([date(1981, 1, 1), date(2021, 1, 1)])\nax[1].set_ylim([0, N_SPLITS+1])\n#ax[0].set_ylim([-28, -23])\n\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:27:55.025525Z","iopub.execute_input":"2021-08-07T18:27:55.025863Z","iopub.status.idle":"2021-08-07T18:27:56.383010Z","shell.execute_reply.started":"2021-08-07T18:27:55.025833Z","shell.execute_reply":"2021-08-07T18:27:56.382209Z"},"trusted":true},"execution_count":73,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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t99+27b+t99+E927dxcrVqyoicMLCkrHeNeuXaJjx45i/fr1tv316NFDfPXVVzVxuDVi8eLFIisrS/zxxx8u11tH1XzrrbeEXq8Xu3btEllZWbIYPfPMM+KOO+4Q58+fF5cuXRITJ04UEyZMsK3fvn276NKli/jhhx9EeXm5WLVqlUhPT7ddP+o6pWPMe59FIM7l+n7v80eMDQaD0Ol0Yvny5aJv376267p1topDhw6JnJwcMXfu3IAcU7AJRIzPnDkjunbtKj788ENhMBjEkSNHxIABA8T7778fkGOsaf6I8auvvir69esnTpw44XIfJ06cEF26dBGrVq0S5eXl4ocffhDp6elejyYtCeEwSgrVWp999hmmTZvmtHzJkiXIzMzEyJEjcfToUQghkJGRgccff1z2BuuPP/7AG2+8gby8PJhMJiQnJ+OBBx5wO2DImDFjkJWVhYcfflixYwpGSse5pKQEr7/+OjZu3IiioiLExcXhxhtvxGOPPYbQ0NCAHWdN8jXG77zzDpYuXYrS0lI0a9YMY8aMwejRo23rx4wZg99++w0RERGy/c+cORNDhw5V7sCCiNIxBoBvvvkGb775Js6cOYOmTZvinnvuwciRIxU/tmCRmpqKkJAQp+/t2rVrbU2+9u3bh5kzZyIvLw/x8fG47777MHbsWNu2Op0OL730EtavXw+TyYScnBzMnDkTcXFxtm3WrFmDefPm4dy5c0hOTsb06dPRq1evgBxjTQtUjO3Vx3tfIOJc3+99/ojx/Pnz8dZbbznte+PGjWjRogWmTZuGzz77DJGRkbL1EydOxKRJkxQ4quASiBgDwLZt2/Dyyy/jyJEjaNiwIe644w5MmjQJarVawaMLDr7G+PTp0+jfvz80Gg00Go1sHzt37rT9+5dffsErr7yC48ePo2nTppg8eTIGDx7sVZmZDBMREREREVG9wz7DREREREREVO8wGSYiIiIiIqJ6h8kwERERERER1TtMhomIiIiIiKjeYTJMRERERERE9Q6TYSIiIiIiIqp3mAwTERERERFRvcNkmIiIqBZ56qmnkJqaitTUVHTs2BHZ2dkYNWoU3n//fZSWllZrXx06dMBnn32mUEmJiIiCW0hNF4CIiIiqp3v37pg7dy7MZjMuXbqE7du349///jdWrVqFjz/+GI0bN67pIhIREQU91gwTERHVMhqN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s2bNQvPmzb3e57pjGmj1llrcM8USPtofiiYRZmjsElyNCngwXY8bko2+HgIRERERERHVsFqXDC9cuBBr1qzBRx99hMTERLz66quYNGkSVq9eDZXKu+rZd3eF4ZS24ufGEWZ8PrQEoWr3v0NERERERES1V61LhpctW4bx48ejTZs2AIAnnngC11xzDbZv344ePXp4tc/Fg0pgMFX0743WCCbCREREREREdVitSoa1Wi1Onz6NTp062ZbFxsYiOTkZeXl5XifDjSIBs2y2I8ndpnWeSlV/jz1QGGPlMcaBwTgrjzFWHmOsPMY4MBhn5THGylMixpXts1Ylw8XFxQAsCbC9mJgY2zpvxMdH+VSuuqRRo+iaLkKdxxgrjzEODMZZeYyx8hhj5THGgcE4K48xVl6gY1yrxkCOjrYER6vVypZrtVrbOiIiIiIiIqKq1KpkOCYmBs2bN8eePXtsy7RaLU6cOIGrr766BktGREREREREtUmtSoYBYOTIkVi0aBGOHj2K0tJSzJ49G61atUK3bt1qumhERERERERUS9SqPsMAMH78eGi1WuTm5qKsrAzdunXDu+++6/W0SkRERERERFT/SEIIUfVmRERERERERHUHq1OJiIiIiIio3mEyTERERERERPUOk2EiIiIiIiKqd5gMExERERERUb3DZJiIiIiIiIjqHSbDREREREREVO8wGSYiIiIiIqJ6h8kwERERERER1TtMhuuQtWvXIjc3F5mZmUhNTXVa/+233+K2225DRkYGBgwYgGXLlsnWHzt2DBMnTkR2djaysrJw77334sCBAy4/a/HixUhNTcX8+fMVOZZgpnScTSYT3njjDfTr1w8ZGRkYNGiQ0z7qOl9jfObMGTzyyCPo1asXevTogSeffBJarda2/vPPP8fIkSPRo0cPZGdn47777sP+/fsVP65gonSMAeDUqVN49NFH0aNHD2RmZuK2227D+fPnFT2uYDJ79mzcfPPNyMzMRO/evTF9+nQUFhbKttm3bx9GjhyJ9PR09O3bF0uWLJGt1+l0ePbZZ5GVlYXMzExMnjwZly5dkm2zZs0aDBw4EF26dMHQoUOxefNmpQ8taAQqxlb19d4XiDjX93ufP2K8ZMkSDB8+HOnp6ejfv7/TZ/zvf//D2LFjkZ2djR49emDUqFH49ddfFT2uYBKIGANAYWEhZsyYgV69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\n"},"metadata":{}}]},{"cell_type":"code","source":"def plot_approach_evaluation(y_pred, score_mae, score_rsme, approach_name):\n f, ax = plt.subplots(nrows=1, ncols=2, figsize=(16, 8))\n f.suptitle(approach_name, fontsize=16)\n sns.lineplot(x=X.Date, y=y, ax=ax[0], color='dodgerblue', label='Training', linewidth=2)\n sns.lineplot(x=X_test.Date, y=y_test, ax=ax[0], color='gold', label='Ground Truth', linewidth=2) #navajowhite\n sns.lineplot(x=X_test.Date, y=y_pred, ax=ax[0], color='darkorange', label='Predicted', linewidth=2)\n ax[0].set_xlim([date(2017, 1, 1), date(2024, 1, 1)])\n ax[0].set_ylim([0, 200])\n ax[0].set_title(f'Prediction \\n MAE: {mean_absolute_error(y_test, y_pred):.2f}, RSME: {math.sqrt(mean_squared_error(y_valid, y_valid_pred)):.2f}', fontsize=14)\n ax[0].set_xlabel(xlabel='Date', fontsize=14)\n ax[0].set_ylabel(ylabel='Standard Precipitation Index', fontsize=14)\n\n sns.lineplot(x=folds, y=score_mae, color='gold', label='MAE', ax=ax[1])#marker='o',\n sns.lineplot(x=folds, y=score_rsme, color='indianred', label='RSME', ax=ax[1])\n ax[1].set_title('Loss', fontsize=14)\n ax[1].set_xlabel(xlabel='Fold', fontsize=14)\n ax[1].set_ylabel(ylabel='Loss', fontsize=14)\n ax[1].set_ylim([0, 4]) \n plt.show()","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:30:16.644889Z","iopub.execute_input":"2021-08-07T18:30:16.645269Z","iopub.status.idle":"2021-08-07T18:30:16.657089Z","shell.execute_reply.started":"2021-08-07T18:30:16.645241Z","shell.execute_reply":"2021-08-07T18:30:16.656065Z"},"trusted":true},"execution_count":79,"outputs":[]},{"cell_type":"code","source":"# train_index = df_spi_6Monthly[df_spi_6Monthly.quarter_idx < valid_quarter_id].index\n# train_index.head()","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:25:26.182641Z","iopub.execute_input":"2021-08-07T18:25:26.182999Z","iopub.status.idle":"2021-08-07T18:25:26.206326Z","shell.execute_reply.started":"2021-08-07T18:25:26.182950Z","shell.execute_reply":"2021-08-07T18:25:26.204934Z"},"trusted":true},"execution_count":67,"outputs":[{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)","\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtrain_index\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf_spi_6Monthly\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mdf_spi_6Monthly\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquarter_idx\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mvalid_quarter_id\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mtrain_index\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mNameError\u001b[0m: name 'valid_quarter_id' is not defined"],"ename":"NameError","evalue":"name 'valid_quarter_id' is not defined","output_type":"error"}]},{"cell_type":"code","source":"from sklearn.metrics import mean_absolute_error, mean_squared_error\nimport math","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:29:43.013294Z","iopub.execute_input":"2021-08-07T18:29:43.013644Z","iopub.status.idle":"2021-08-07T18:29:43.017992Z","shell.execute_reply.started":"2021-08-07T18:29:43.013610Z","shell.execute_reply":"2021-08-07T18:29:43.016778Z"},"trusted":true},"execution_count":77,"outputs":[]},{"cell_type":"code","source":"score_mae = []\nscore_rsme = []\nfor fold, valid_quarter_id in enumerate(range(2, N_SPLITS)):\n # Get indices for this fold\n train_index = df_spi_6Monthly[df_spi_6Monthly.quarter_idx < valid_quarter_id].index\n valid_index = df_spi_6Monthly[df_spi_6Monthly.quarter_idx == valid_quarter_id].index\n\n # Prepare training and validation data for this fold\n #X_train, X_valid = X.iloc[train_index], X.iloc[valid_index]\n y_train, y_valid = y.iloc[train_index], y.iloc[valid_index]\n \n # Initialize y_valid_pred\n y_valid_pred = pd.Series(np.ones(len(y_valid)))\n \n # Prediction: Naive approach\n y_valid_pred = y_valid_pred * y_train.iloc[-1]\n \n # Calcuate metrics\n score_mae.append(mean_absolute_error(y_valid, y_valid_pred))\n score_rsme.append(math.sqrt(mean_squared_error(y_valid, y_valid_pred)))\n\ny_pred = pd.Series(np.ones(len(X_test))) * y.iloc[-1]\n\nplot_approach_evaluation(y_pred, score_mae, score_rsme, 'Naive Approach')","metadata":{"execution":{"iopub.status.busy":"2021-08-07T18:30:24.147794Z","iopub.execute_input":"2021-08-07T18:30:24.148146Z","iopub.status.idle":"2021-08-07T18:30:25.328925Z","shell.execute_reply.started":"2021-08-07T18:30:24.148115Z","shell.execute_reply":"2021-08-07T18:30:25.327965Z"},"trusted":true},"execution_count":80,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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8ffff6Njx45IT09Heno6srKycM899+DgwYOqAXvZsmVVf7ef31uuXDnF71FRUUhMTHSYO12+fHnF72lpaQCsJen2ypUrJ92flZWFJ554AkePHsXo0aOxevVqfPrpp7jvvvuQn5+vOF7JkiUVQbeWUqVKOYwZcP06ERERuYNziImIKGyUKFECzzzzDGbOnIlBgwY53L9t2za0aNECL774orTNFuC6cs899+CVV17B5s2bMWDAAHzzzTd4+umnpfsTEhJgMBjwyCOPSFljewaD9vfQtizw8uXLVZeQ2rhxI55//nnFttTUVMTFxSl+BxwDW/usan5+PtLT01GhQgXN8QCFQWlKSorDfZcvX0a9evUAAAcPHsTZs2exevVqJCcnS/usWrVK8ZjSpUvj2rVryM3N1RUUExER+RszxEREFFb69euHChUq4M0333S4Lzc3FxERyu+C169fr+u48fHxuOuuu7B582bs2LED+fn5isA3Li4OycnJOHr0KOrVq4fbbrvN4X9a8vPzsXXrVjRs2BArVqxw+N+tt96KzZs3QxRFxeNs6xXbbNu2DXFxcYoO2Wr77dixAxaLRcpua7nppptQrlw5bN++XbF9//79OHv2LJo1awbA2hEaACIjI6V9rl27hq+++krxuFatWkEURaxdu9bpeYmIiAKFGWIiIgorUVFRGDZsGCZPnuxwX5s2bbB8+XIsXboUDRo0wJ49e/D555/rPnbPnj2xdetWLFy4EE2aNEHVqlUV97/44ot49NFHMWjQINx///1ISkrC1atX8eeff8JsNmPMmDGqx/3uu++QlpaGF198Ec2bN3e4/6GHHsKUKVPw888/44477pC2f/LJJ7BYLLjtttuwa9curF27Fs8++ywSEhIUj//7778xfvx4dO3aFSdPnsQbb7yBZs2aoUWLFk6v12g0YsSIEXjppZcwZswY3Hvvvbh48SLefPNNVK9eHffddx8AoEmTJoiPj8fUqVMxYsQIZGdnY8mSJShdujQyMjKk491xxx3o1KkTZs6cifPnz+OOO+6AyWTC3r17ceedd6peOxERkT8xQ0xERGGnT58+qF69usP2YcOG4aGHHsL777+PYcOG4dixY3j77bd1H7dVq1ZISkrCxYsXVcui69Wrh08//RSlSpXCtGnT8MQTT2D69Ok4duwYmjZtqnncDRs2oESJEujcubPq/d27d0dMTIxDc63Fixfjxx9/xJAhQ7B582YMGTIEQ4cOdXj8xIkTIYoinn/+ecybNw/t27fH/PnzdV3zQw89hNmzZ+Ovv/7C0KFDMXfuXLRs2RIrV66UyrXLlCmDRYsWwWKxYMSIEZg3bx4eeOABh2ZcADBv3jwMHz4cX331FYYOHYoJEybg77//Vp2nTERE5G+CaF9/RURERCFt4cKFWLRoEf744w+HEnC5n3/+GQMGDMB7772Hli1bBnCERERERQMzxERERERERFQsMSAmIiIiIiKiYokl00RERERERFQsMUNMRERERERExRIDYiIiIiIiIiqWGBATERERERFRscSAmIiIiIiIiIolBsRERERERERULDEgJiIiIiIiomKJATEREREREREVSwyIiYiIiIiIqFhiQExERERERETFEgNiomJux44dqF27tvT7+vXr0bhxY6+O+fPPP6N27dq4cuWKt8MjIiIiIvIbBsREIejFF19E7dq1Ubt2bdSrVw933XUXZs2ahezsbL+fu2vXrvjyyy9179+hQwe88847im2NGzfGrl27ULp0aV8Pj4iIiIjIZyKCPQAiUteyZUvMnj0bJpMJ+/btw6RJk5CdnY2pU6c67GsymWA0GiEIgtfnjYmJQUxMjFfHiIqKQlJSktdjISIiIiLyJ2aIiUKULaisVKkSevTogR49euCrr74CACxcuBDdu3fH+vXrcffdd+O2225DdnY2MjIyMHnyZLRo0QKNGzfGo48+it9//11x3I0bN6J9+/Zo2LAhnnnmGaSmpiruVyuZ/u677/DAAw+gQYMGaN68OQYPHoy8vDz0798fZ8+exezZs6WMNqBeMr1z50706NED9evXR7t27bBkyRKIoijd36FDByxevBgvvfQSmjRpgrZt2+Ltt9/26XNKRERERCTHgJioiIiJiUFBQYH0+5kzZ7B161bMnz8fmzZtQlRUFJ5++mlcvHgRy5Ytw8aNG5GcnIzHHnsMly5dAgD89ttvePHFF/Hggw9KgfGCBQucnvf777/HkCFD0LJlS6xfvx4ffPABmjZtCovFgoULF6JixYoYNmwYdu3ahV27dqke4/Dhw3juuefQsWNHbNmyBaNHj8b//vc/rFq1SrHfBx98gFq1amHDhg146qmnMGfOHBw4cMDLZ46IiIiISB1LpomKgEOHDmHLli1o0aKFtK2goACzZ89GuXLlAAC7d+/G0aNHsXv3bqnkeeTIkfjmm2+wadMmPPXUU1ixYgVatGiBIUOGAABuuukm/P777/j00081z7148WJ06tQJzz//vLStTp06AIDY2FgYjUaUKFHCaYn0e++9h6ZNm2LEiBHSef/77z8sX74c/fv3l/Zr1aoVHn30UQBA//79sXLlSuzevdvrJl9ERERERGoYEBOFqB9++AGNGzeGyWSCyWTCXXfdhcmTJ0v3V6hQQQqGAeCPP/5ATk6OImgGgLy8PJw+fRoA8M8//6B9+/aK+xs1auQ0ID5y5Aj69Onj1bX8+++/aNeunWLb7bffjkWLFiEzMxPx8fEAoOh2DQDly5dnp2oiIiIi8hsGxEQhKjk5Ga+++ioiIiJQvnx5REZGKu6Pi4tT/G6xWFCuXDmsXr3a4Vi2gDPURUQo/0kSBAEWiyVIoyEiIiKicMeAmChExcbG4sYbb9S9f7169XD58mUYDAZUrVpVdZ+aNWvit99+U2yz/93erbfeit27d+PBBx9UvT8yMhJms9npMWrUqIH9+/crtv3666+oWLFikQnWiYiIiCj8sKkWUZho2bIlmjRpgqFDh+K7777D6dOnceDAASxYsAD79u0DYJ2X+9NPP2HZsmU4efIkPvnkE3zxxRdOjztkyBDs2LEDb7zxBv7++28cP34c77//PnJycgAAVapUwa+//oqLFy9qljc/8cQT2Lt3LxYuXIgTJ05g8+bNePfdd/Hkk0/69kkgIiIiInIDA2KiMCEIAv73v/+hefPmmDx5Mrp06YKRI0fixIkTKF++PADrfOHp06fjww8/xL333oudO3fi2WefdXrcdu3aYdGiRfjhhx/Qq1cvPProo9izZw8MBus/HyNGjMD58+dx9913O8xftqlXrx7mz58vLb30+uuv4+mnn5YaaBERERERBYMgyhcCJSIiIiIiIiommCEmIiIiIiKiYokBMRERERERERVLDIiJiIiIiIioWGJATERERERERMUSA2IiIiIiIiIqlhgQU9g5c+YMateujVtvvRXnzp1T3Hft2jU0aNAAtWvXxu+//+7w2GnTpuHWW2/FJ5984nDf+vXrUbt2bdX/5eXl6R7fL7/8gocffhjNmzdHgwYN0LlzZ7zzzjsO+2VmZmLatGlo3bo16tevj44dO2L79u1Oj33u3DkMHjwYjRo1QvPmzTFt2jTk5+cr9tmyZQt69uyJhg0bolWrVhgzZgxSUlJ0jx8AFi5cKF17nTp10Lp1a4wePRrnz59X7Hf69GmMGTMGbdu2Rf369dG6dWs8/fTT+PPPP6V9OnTogNq1a2Pjxo0O53nggQdQu3ZtxfPTv39/1dfg+eefd+saXnzxRYdjPPjgg4p9Tp06hWHDhuGOO+5AkyZN8Nxzz+Hy5csuj/3BBx+gc+fOaNCgAdq2bYupU6ciKytLul/+/Nn+16pVK7fGT0RE4ePFF1/EM888E+xhEBVLEcEeAJG/VKhQAevXr8fw4cOlbVu2bEHZsmUdAmUAyM/Px5YtW/D0009j7dq1DsERAMTGxuKLL75w2B4dHa17XHFxcejfvz9q1aqFmJgY7N+/Hy+//DJiYmLwyCOPAAAKCgowcOBAlCxZEm+++SYqVqyICxcuICoqSvO4ZrMZzzzzDEqVKoXVq1cjLS0N48aNgyiKmDx5MgDg119/xQsvvIBx48bhrrvuQmpqKqZOnYoxY8bggw8+0H0NAHDTTTdh5cqVsFgsOH36NKZOnYqRI0fi448/lq7hiSeeQLVq1fDmm2+iQoUKuHTpEn788Udcu3ZNcaxKlSph3bp16NWrl7Ttr7/+wvHjx1GqVCmHc/fp0wejRo1SbIuJiXFr/ADQsmVLzJ49W/o9MjJSup2dnY0nnngCtWrVkp6b+fPnY/Dgwfjkk0+kdZjtbdmyBXPmzMG0adOQnJyM06dPY+LEicjLy8OMGTOk/WzPn43RaHR7/ERERETkHQbEFLZ69+6N9evXY9iwYRAEAQDw6aefonfv3njrrbcc9t+5cyeqVKmCwYMHY8WKFfjrr79Qq1YtxT6CICApKcmrcdWvXx/169eXfq9atSq++OIL/Prrr1JAvH79ely5cgWrV6+WguAbbrjB6XF37dqF48eP45tvvkGlSpUAAGPHjsWkSZPw/PPPIz4+HgcPHkTFihXx+OOPS+d+9NFHMW3aNLevIyIiQnouKlSogAcffBDTpk1DZmYm4uPj8ffff+PUqVN4++23ceONNwIAqlSpgsaNGzscq3v37vjggw9w+vRpVK1aFYD1terUqRP27t3rsH9sbKzXrwMAREVFaR5n//79OHPmDNatW4eSJUsCAGbNmoWmTZtiz549aNmyperjDhw4gEaNGknB/Q033IBevXph586div3kzx8REZGWvXv3Yvbs2Th69CgSEhLQvXt3jBkzRvp8sHfvXsyZMwfHjx+HwWDATTfdhBkzZqBWrVrIyMjAK6+8gl27diEzMxPly5dH//79pc8BRMSSaQpj7dq1Q35+Pvbs2QMA+PPPP3Hq1Cl06dJFdf+1a9fi3nvvRWxsLDp16oS1a9e6fU5bWfWZM2d0P+bPP//EgQMH0LRpU2nbl19+iSZNmmDatGlo1aoVunbtioULF6KgoEDzOAcPHkTNmjWlYBgA2rRpg/z8fBw+fBgA0KRJE6SkpODrr7+GKIq4cuUKtm/fjrZt27p9rXIpKSnYuXMnjEajlDktU6YMDAYDPv/8c5hMJqePL126NNq3b49169YBsGbrN2/ejPvvv9+j8fTv3x/9+/d3ud+vv/6KFi1aoFOnTpg0aRJSU1Ol+/Lz8yEIgiL7Hx0dDYPBgF9//VXzmLfffjuOHDmCgwcPArCWsX/99dcOz/Hp06fRunVrdOjQAc8//zxOnz7t5lUSEVG4u3jxIp566inceuut2LhxI6ZPn45t27Zh3rx5AACTyYShQ4fi9ttvx6ZNm/DJJ5/gsccek6qO3nzzTfz1119YtmwZduzYgRkzZqBChQrBvCSikMMMMYUto9GInj174tNPP0WLFi3w6aefokuXLoiNjXXY9/Tp0/j1118xd+5cAEDPnj0xcuRIjB07VlGmnJ2d7ZDhrF27Nj766CMAQEJCAm666SZF6a2Wtm3b4sqVKzCbzRg2bBj69u2rGM+ePXvQvXt3LFu2DGfPnsUrr7yC7OxsjBs3TvV4ly9fRtmyZRXbSpcuDaPRKM17bdy4MebNm4cxY8YgLy8PJpMJrVq1wqxZs1yO194///yDxo0bw2KxIDc3F4A1EI2LiwNgzRpPmjQJc+bMwZIlS1CvXj0kJyejW7duuOWWWxyOd9999+Hll1/GiBEj8PXXXyMxMVHxJYHcJ598gg0bNii2jRkzRsqwy78U0NKmTRt07NgRN9xwA86ePYs333wTjz32GNavX4+oqCg0atQIcXFxmD17NsaMGQMAeP3112E2m53Oue7WrRvS0tLw6KOPQhRFmEwm9OzZE2PHjpX2adCgAV577TXUqFEDV65cwZIlS/Dwww9j69atKF26tMuxExFR8bBmzRqUL18eU6ZMgcFgQM2aNTF69Gi89NJLeO6555CXl4f09HS0b98e1apVAwDUrFlTevzZs2dRt25dNGjQAIC1UouIlBgQU1i777770Lt3b6SkpGDr1q1YtmyZ6n6ffvop7rjjDqmEtXnz5oiNjcWXX36Jrl27SvvFxsY6NH+SB8wdO3ZEx44ddY1t9erVyM7Oxm+//Ya5c+dKpbUAIIoiypYti2nTpsFoNKJ+/fpIS0vDa6+9hhdeeEEqAXfX33//jVdffRVDhw5F69atkZKSgtmzZ+Oll15SzKXVo1q1avjf//6H/Px8fPXVV9i5c6fDvN5HHnkEPXv2xM8//4xDhw7hq6++wvLlyzF9+nTFfGHAGqCKoogff/wRn376Ke677z7Nc3fp0kUxNxywZqRt9FxLt27dpNu1a9dGvXr10KFDB3z77be45557UKZMGcyfPx9TpkzBmjVrYDAY0K1bN9SrV8/p8//LL79g8eLFePnll9GgQQOcOnUK06dPx4IFC/Dcc88BsFYvyDVs2BB33303Nm7ciIEDB7ocOxERFQ///PMPGjZsqOhbcfvtt6OgoAD//fcf6tSpgz59+mDQoEFo0aKFVPVUuXJlAEDfvn3x3HPP4Y8//kCrVq3Qvn17NGvWLFiXQxSSGBBTWKtRowbq1q2LUaNGoVy5cmjcuLFDObPZbMaGDRtw6dIl1K1bV9pusViwdu1aRUAsCII0H9ZbtrmytWvXxuXLl7Fo0SIpSExKSkJERISi0VLNmjWRk5ODq1evKoI/m3LlymH//v2KbVevXoXZbEa5cuUAAMuWLUODBg3w5JNPAgDq1KmD2NhYPPLIIxg1ahQqVqyoe/yRkZHSc3HLLbfgv//+wyuvvIKZM2cq9ouPj8ddd92Fu+66CyNHjsSgQYOwYMECh4DYYDCgV69eWLZsGQ4ePIjp06drnjshIcFnr4NNhQoVUKFCBZw8eVLa1rp1a3z55Ze4cuUKIiIikJiYKJWwa3nzzTfRrVs3PPDAAwCsr292djYmTZqEYcOGISLC8Z/dEiVK4Oabb1acm4iIyBnbl7OvvfYaHnvsMXz//ff4+uuv8cYbb+Ctt95CmzZt0K5dO3z99df4/vvvsWfPHjzzzDPo3LkzXnvttSCPnih0cA4xhb37778fv/zyi2bG8YcffkBaWhrWrVuHjRs3Sv9btmwZdu/e7dZ8YE9ZLBbF8khNmjTBqVOnYLFYpG0nTpxAbGysZklto0aN8M8//+DChQvSth9//BFRUVFSE6/c3FyHbsa23+Xn8sSQIUOwefNmab6yGkEQUKNGDcUSRHL3338/9u3bh1atWgV8jtOVK1dw6dIllC9f3uG+MmXKIDExEbt370Zqaio6dOigeRyt51gURc3H5OXl4cSJE2yyRURECjVr1sRvv/2m+Bv966+/IjIyUiqRBqxfcD/99NNYuXIlmjVrpqhmK1OmDHr16oWZM2di+vTp2LBhg8OSjETFGTPEFPZ69eqF9u3bIzExUfX+tWvXom3btqhXr55ie61atXDTTTdh3bp1UqmrKIqq80fLlCkDo9GIL774Aq+//jo++OADzYBu5cqVuOGGG3DTTTcBsHaHfPfdd9GvXz9pn759+2LVqlWYPn06HnnkEZw9exYLFy5E3759pW+EV61ahVWrVmHHjh0ArNnMW265BS+88AJefPFFpKWlYfbs2XjwwQcRHx8PAGjfvj0mT56MNWvWoE2bNrh06RJmzJiBevXqSeVVnqpWrRruuusuzJ8/H8uXL8eRI0ewYMEC9OzZEzfffDMiIyPxyy+/YN26dYpyZbmqVatiz549LpdQysnJcXgdIiMjpSWaXnjhBQDapdNZWVlYtGgR7rnnHiQlJeHs2bOYN28eypQpg7vvvlvab926dahRowbKli2LAwcOYMaMGXj88cdRo0YNaZ/HHnsMDRo0wOjRowFYn+P33nsP9evXl0qm58+fj/bt20vZ4VmzZqF9+/aoVKkSrly5gsWLFyM7Oxu9e/d2et1ERBS+MjMzceTIEcW2tm3b4oMPPsCUKVPw2GOP4fTp03j99dfx6KOPIjY2FqdPn8bHH3+MDh06oEKFCjh9+jSOHTsm9SWZP38+6tWrh5tvvhlmsxk7d+5E1apVnS7jSFTcMCCmsGc0GlVLjAFrI6pvv/3WoczXpnPnzli/fj2effZZANZArHXr1g777dy5EzfeeCMyMjJw4sQJp92gzWYz5s6di7Nnz8JoNKJatWoYPXq0oqlWpUqV8O6772LmzJno1asXypUrh/vuuw9DhgyR9rl69SpOnDihuM5ly5Zh6tSp6Nu3L2JiYtCjRw8pOASs6/dmZWVh9erVmDVrFhISEtC8eXNFw6eff/4ZAwYMwIoVK9C8eXPN61AzcOBA9O3bF/v370f16tVRtWpVvPXWWzh79ixEUUSlSpXwxBNP4Omnn9Y8htq6w/bWr1+P9evXK7Y1adIEH374IQDg/PnzTh9vNBrx119/YePGjcjIyEBSUhKaN2+ON998U/ryALBm5efNm4dr165JS3LZL1Vx+vRpRROvIUOGQBAEzJ8/HxcuXJA6aD///PPSPhcuXMCoUaOQlpaG0qVLo1GjRvjkk0/Y7ISIqBjbt2+fw3SiTp06Yfny5Zg9ezZ69uyJxMREdO/eXerZERsbi5MnT+K5557D1atXUa5cOfTo0QNPPfUUAGufkzfeeANnzpxBdHQ0GjZsiKVLlwb60ohCmiA6q+MjomJn3bp1eP3117Fjxw7NrDoRERERUTjgHGIiUvjuu+8wZswYBsNEREREFPYCFhDPmTMH3bp1Q5MmTdC6dWtMmDABV69eVezz559/4uGHH0bDhg1x5513YsWKFYr7c3Nz8dJLL6FZs2Zo0qQJRo4cibS0tEBdAlGxsGDBAvTp0yfYwyCiEDBs2DDUrl0bP//8s+Y+rv52ExERhbKABcRGoxFz5szBzz//jE2bNuHChQsYP368dH9mZiaefPJJtG7dGr/88gvefPNNLFq0SGoYBAAzZszA4cOHsWXLFnzzzTfIzs7GuHHjAnUJRERExcbGjRuRm5vrdB89f7uJiIhCWcAC4lGjRqFu3bqIjIxE2bJl0b9/f/zyyy/S/Tt37oTBYMDQoUMRHR2NRo0a4YEHHsCaNWsAWLPDGzduxHPPPYcKFSqgZMmSGDduHL799lucO3cuUJdBREQU9i5cuIA333wTr776qtP9XP3tJiIiCnVBm0O8e/du1KlTR/r96NGjqFu3LgyGwiHVr18fR48eBQCcPHkSeXl5uO2226T7a9asidjYWIcW9UREROQZURQxYcIEDBkyxOVybK7+dhMREYW6oCy7tH37dqxduxarVq2StmVmZiIhIUGxX2JiIjIzM6X7ATjsk5CQIN3nqatXs2CxhH6z7QvZAp7+ogQAoGkFEybf4byUTa5s2Xikpnr3PBUFvM7wwusML8XhOg0GAaVLlwj2MLyyZs0aiKKIhx56yOW+rv52e8MXf5uL8nuOYw8OX429bFp9AEBqqcNeH0v3Ofm8BwXHHhzujN3V3+aAB8Tbtm3DlClTsGTJEtSrV0/aHh8fj9TUVMW+6enp0pqgtp8ZGRmKNWUzMjIU64Z6wmIRi0RAnF8AnMmw3q6eALfHXBSu0Rd4neGF1xleist1FlWnTp3CkiVL8PHHH+va39Xfbm/46m9zUX7PcezB4ZOxF/znu2O5odg/70HCsQeHr8Ye0JLptWvXYurUqVi6dCnuuOMOxX116tTBn3/+CYvFIm37448/pLLq6tWrIzo6GocPF37T9s8//yAnJ0dReh3OivD7lYiIioB9+/YhLS0Nffr0QfPmzdG8eXMAwNChQ/Hyyy877O/qbzcREVGoC1hAvGLFCsydOxfvvPMObr/9dof777nnHpjNZixZsgT5+fk4dOgQ1q5di759+wIAYmJi0KtXLyxYsACXLl3CtWvXMGfOHLRr1w5VqlQJ1GUElahxm4iIyBe6dOmCL7/8Eps2bZL+BwDTpk3DqFGjHPZ39bebiIgo1AUsIJ4+fToyMzMxYMAANG7cWPqfrUN0fHw83n77bXz//fdITk7Gs88+i2HDhqFLly7SMSZMmIBbb70V3bp1Q/v27REdHY3Zs2cH6hKCThQF2e0gDoSIiMJSbGwsKlasqPgfAJQpUwYlS5bEvn373P7bTUREFMoCNof42LFjLvepW7eu03lLMTExePXVV10uAxGuGAMTEVGgyf9+Jycn48CBA4r7Xf3tJiIiCmVBW3aJ3Mc5xERERERERL7DgLgI4RxiIiIiIiIi32FAXITI5w1zDjEREREREZF3GBAXIcwQExERERER+Q4D4iKEc4iJiIiIiIh8hwFxEcXYmIiIiIiIyDsMiIsQC2umiShAOnZsg99+O+B6x+tGjx6BFSve9eOIiIiIiHwvYOsQk/cYDxORmo4d20i3CwoKYLFYEB0dLW1buXItKlas6NYxv/jiB7f2f/31BW7tT0REREXH8OFP4+DB/Rg3bhJ69Oglbc/MzETv3l2Qk5ODtWs3o1KlygCA9PR09O7dBUlJFfDhh+sgCIL0mP3792HEiMGIjY1VnKNmzVuwdGngv1xnQFyEsLM0EamRB6/vvLMMBw78ikWL/qe6b0FBASIjIwM1NCIiIgoTN91UAxs3rlMExDt2bEXFipVw4sS/in0/+2wLoqKicfbsaezb9wuaNm3ucDx3v3z3FwbERQgzxETB9dy3sfjxnL/+2Uxw2NKqsgnz78zx6qjTp09Bfn4+4uLi8P3336Bx42RMnvwKXn11Mn7//RCys7NRsWJFPP74U7jrro7S41q3TsaCBUvRpEmy9E3u9OlzsGTJQly5kor69W/DhAlTUK5cOQDWb44bN74dgwY9Iz1+1Khx2LnzM/zzz3FUrlwF06a9iqpVbwEAmEwmLFv2Fj7/fDssFjO6du2BP//8Q3EMIiKi4iQ6bw1iclcF5Fy5MY8CcO/vbevW7bB9+2YcPfon6tSpCwDYtGk9evbsgzffnCvtJ4qiFDgfP34MmzatUw2IQwXnEBchFq5DTEQe+Pbbr9CgQSNs2vQ5Jk2aCkBEq1ZtsXr1p/jss6/Rr98AvPLKJJw8ecLpcb7//hu8/fYKrFu3FVlZWVi+fLHT/bdu3YjJk1/BZ599g0aNmuCFF16Q7lu9+gN8993XWLRoGTZs+AxxcSXw+++/+eJyiYiIyA8iIiLQvXsvbNjwKQDg4MH9yM7ORosWrRX7/frrXpw+fQo9evRCjx698cMP3+Hy5cvBGLIuzBAXISIE1zsRkd94m63VkpSUgJSUDL8cGwDq1bsNXbp0B2D9YwZA+t12+6OPVuPAgV9RvfpNmscZMuRZxMfHAwDuuaczNm1a7/S8Dz/cH1Wq3AAA6NmzD9at+wTXrqWhZMlS+OyzrejXbwCqVasOABgw4Als3LjO42skIiIq6vKi+yEvul+wh+HUvff2Rv/+D+HZZ0dJWWCDQZlj3bjxUzRq1ARVq1ZDxYqVkJCQiK1bN+Lxx59U7Ne58512v3fDyJFj/X0JDhgQFyHyrDATxESkl63BhU1+fj6WLl2IH3/8AVevXoXBICAnJwdXr15xepxy5ZKk27GxccjOznaxfznF/gCQnZ2NkiVL4dKlS4pxGQwGlC9fQfc1ERERUeBVqFARTZrcjg8/XIkff/wew4c/j4KCfOn+y5dT8MMP32HixCkAgMjISHTu3A2bN29A//4DYTQapX137Pg2wKNXx4C4CGEQTESesP/m9qOPVuGXX/bg9dcXokqVGyAIAh57rC/EAM7FKF++PM6fPyf9brFYcOnSxYCdn4iIiDzTq9f9GDv2ObRr1wHlypVT/D3fsmUjzGYzFix4HYsWvQnA+kV8ZmYGdu/ehdat2wVp1NoYEBchnENMRL6QmZmJyMhIlCxZCmazGVu2bMTJk/+ibds7AzaGzp274aOPVqFJk2RUqlQZa9ascJmhJiIiouBr3rwF3njjLVSrdqNiu8ViwZYtG3H//Q+jf//HFfdNm/YyNmxYx4CYiIiCr2/fR/H338fRp09XxMXFoWvXe3HbbQ0DOoZHH30cGRkZGDbsKYiiBV279sCtt9ZDVFS06wcTERFR0AiCgOTkZg7bf/zxe1y5kop+/fqjbNlyivseeeQxjBo1HOfOnZW2dezYRrFPyZKl8OmnW/wzaCcEMZA1ciEqNTUTFkvoPw2/XDBi6NfWeXiNkkx4u6P+Bj/+btoTKnid4YXXGV6cXafZbEbv3l3x7LPPo2PHzgEeme8YDALKlo0P9jDCgi/+Nhfl/7Y49uDw1diTUhMBACll070+lu5z8nkPCo49ONwZu6u/zVx2qQjhOsREFC4yMzPx00+7YDKZkJ2djaVLF8FkMuGOO1oFe2hERERUjDAgDhG7zhrx4LY4/J2m/ZIoukyLXIKJiIoui8WCd9/9H7p2vQt9+nTFn38exty585GQkBDsoREREVExwjnEIWLkd9ZS6Jd+isGarupLmbC4nYjCRWJiIt5+e0Wwh0FERETFHDPEIabAon2fk7uIiIiIiIjITQyIixCRyy4RERERERH5DAPiECM4mRrMplpERERERES+w4C4CGFWmIiIiIiIyHcYEBchFhSmjxkbExEREREReYcBcVHCOcREFEa2b9+C++/vEexhoHXrZOzfvy/YwyAiIqIg4LJLRQi7TBORM8eP/4WVK9/DwYP7kZ2dhcTEkqhRoyZ69OiNdu3aB3t4bpkzZwZ27vwMACCKInJzcxETEwPheqOF/v0HYsCAJ9w65v79+zBixGDs2sXgl4iIyB3Dhz+Nw4cPITIyEoJgQPnyFfDgg31x7729AQBXr17F0qUL8fPPu5GVlYm4uDjcfHNtjB//EsqVKyf9Da5QoSLWrt0Mg6EwL/u//y3GihXvokuX7pg4cQoA4P77e+DKlVQYjUbFOJYufQ81a97s02tjQBxinPTUYlaYiDTt2/cLXnjhefTufR+WLXsPFSpUREFBPvbv/xVffrlDMyAuKChAZGRkgEfr2tixEzB27AQAwPnz5/DAA/di5cpPUKlSZYd9TSYTjEajFCwTERGR7/XvPxCDBj0Di8WCb775ClOmTEC1ajeiUaMmePXVyYiNjcU776xE2bLlcPXqFezZ85NDw+C4uDjs3v0jWrVqA8D6N3zbtk246aYaDucbM2Y8unb1fyUZS6aLEHaZJiItc+e+hrvvvgfPPjsKlSpVhsFgQHR0DFq0aIXJk1+V9nvnnWUYPvxpLF26CD17dsLQoYMAAD/88C0GDuyHTp3a4dFHH8DWrRulx+zfvw+tWycrzmdf7jx9+hRMnToJ8+bNQteud+HeezvhnXeWKR7zww8/YMCAh9CxYxuMGDEYFy6c9+habeP58svP8dBDvXD33a2Rk5OD++/vge3btyj2tZVDX7hwAWPGPAcA6NixDTp2bIO1az+S9jt58gQGD34CHTu2wWOPPYzff//No7ERERGFO4PBgLvu6ojExET8+ecfAIDffz+ELl26o2zZcgCA0qXLKH636dXrPmzatE76/fvvv0XZskmoU6du4C7ADjPEIcbpskucQ0wUVInp9yO6YKfvD5wKJKlszou8B+mJn7p8+KlT/+HMmdMYPfpFXaf7/fff0KzZHVi7dgssFgsOH/4dL700HlOnvoZWrdrg999/w7hxzyMhIRHt2nXQfRnfffc1Jk16Bc89NwZ//PE7nn32GSQnN0PDho1x7txZDBkyBKNHj0Pnzt1x9OgRvPjiKMTExOg+vr1vv/0Ky5d/gOjoGERFRTndt2LFipg7dz5GjBiML774weH+rVs34tVXZ6FChYpYuHAeXn31JXzyySaPx0ZEROSurL17kPXL7oCcq0SzFkjq2tGjx5pMJnz99Ze4du0aqlW7EQDQqFFjLF68AJcvp6Bu3fqoUeNmREQ4hpqdO3fDsmWLceHCeVSsWAkbN36K3r3vx6FDB725HK8wQ1yEWBgEE5GKtLSrAICkpPLStt9+O4jOne9Ep07t0KFDS0U2tmzZcujffyCioqIQExOD7ds3o3Xrdmjb9k4YjUY0atQEPXr0xqZNG9waR8OGjdGhw90wGo1o0KARbr65lvTN8Rdf7MCtt96K7t17ISIiAvXr3+Z1GdSQISOQmFgS0dHRXpdLP/xwf1SpcgMiIiLQs2cfnDt3FteupXl1TCIionCyevUH6Nz5Ttx1VytMm/YSnnlmGFq3bgsAmDr1NXTp0h2ffbYNgwcPQvfud2P+/NeRl5enOEaJEvG46657sGnTepw6dRJ//XUUd9/dSfV8r78+E5073yn9r1u3u/xyXcwQFyEsmSYKLj3ZWk8kJSUgJSXD48eXKlUaAJCScgnVq98EAGjYsBF27PhWmn8ryspKKlWqrAggL126iJo1b1Ec84YbbsCePT+6NY5y5ZR57tjYWGRnZ0lju+GGGxT3V67sOB/YHWrziT1VrlxhSVdsbBwAIDs7GyVLlvLZOYiIiJwp0fQOlGh6R7CHoemRRx7DoEHPIDs7CwsWzMO+fb+gb9/+iIiIQFxcHPr3H4j+/QeioKAAP//8E1599SWUKFECTz45WHGc3r3vw5gxzyErKxP33NMFsbGxqucbPfpFziEujvQ21WJATEQ21ardiCpVbsAXX+zQtb99NrV8+Qo4f/6cYtvZs2dRvnxFAEBcXAkAQE5OjnT/5cspbo0xKak8zp49q9h2/rxnc4ht5B0qAWujDmdjtN+fiIiI3BcXVwKjRo3DuXPnsH79Wof7IyMj0bp1OyQnN8Px48cc7q9Vq871cul16NXrvkAM2Sl+OihCRM1fiKi4Gz36RXz55edYuPANXLhwHhaLBfn5+brm5HTt2gM//PAtdu36HmazGb/9dhBbtmxAjx49AQDVqlVDXFwJbNq0DhaLBcePH8Pmze6VU999dyf8+eef2LZtM0wmE/788zA++2yr+xfqRJ06dfHllzuQmZmJzMxMLFmyUHF/mTJlAQCnTp306XmJiIiKm6ioKAwc+CRWrHgHWVmZWLhwHo4c+QN5eXmwWCzYv38f9u//FQ0bNlZ9/MsvT8OCBUtRo4Zvl1DyBAPiEOMsQ8w5xESkpVmzO7Bkybu4ePECnnrqMdxzT1s8/HBv7Ny5A6+9NhcVK1bSfGz9+g0wZcp0vP32UnTp0gGzZr2KIUNGoH37uwFYvwmeOHEK1q9fi06d2mHp0rekdQf1qlLlBrz11lv46KNV6NKlPZYuXeTzb4WfemoIYmJi0bt3Vzz5ZH+0batcaqpatRtx//0PYejQJ9G5851Yt+5jn56fiIioOOnUqSsSEhKxZs1KWCwiZsyYih497kGXLu0xb94s9O37KB5++FHVx1apcgMaNWri9Phz574mrQxh+9+ePT/5/DoEUWS/4tTUTFiCHG0mr0kAANQqZcaartmq+2z9NwJT9lhr7G8pZcaHGvup8XaOYlHB6wwvvM7wUhyu02AQULZsfLCHERZ88be5KL/nOPbg8NXYk1ITAQApZdO9Ppbuc/J5DwqOPTjcGburv83MEIcaJyliC+cQExERERER+QwD4iJE0WWaETEREREREZFXGBAXIaLo3TqbREREREREVIgBcYhxuuySxm0iIiIiIiJyHwPiIoRdpomIiIiIiHyHAXGI0Z0hZnBMRERERETkFQbERQiDYCIiIiIiIt9hQBxiBCcpYs4hJiIiIiIi8p2IQJ5s27ZtWL16NY4ePYqsrCwcO3ZMum/z5s14+eWXFfvn5eXh5ptvxubNmwEACxcuxOLFixETEyPt0759e8ybNy8wFxAAzkqmuQ4xERH52+LFi7F+/XpcvXoVERERqF+/PsaMGYNbb71Vdf8OHTogJSUFERGFHynmzZuH9u3bB2rIREREHgtoQJyYmIh+/fohNzcXEydOVNx377334t5775V+LygowJ133omePXsq9ktOTsbKlSsDMl4iIlIaPvxpNG58OwYNegYA0LFjG8yduwANGzYO2BimT58CAJg4cUrAzlmcdOnSBY888ghKliyJ/Px8rFq1Ck899RS+//57GAzqhWVTp05Fnz59AjxSIiIi7wU0IG7Tpg0A4Oeff3a5786dO5GZmYn77rvP38MqMhQZYq5JTER2hg9/GocPH0JkZCQEwYAKFSrgoYf6oXv3Xn475xdf/KB73w4dOuCxx55E1649/DYe8t5NN92k+N1gMCAlJQUZGRkoWbJkkEZFRETkHwENiN2xZs0adO3aFaVKlVJsP3z4MO644w7ExsaiSZMmGDlyJKpWrerVucqWjffq8b4UGWlEUlKC6n0lThfeNhoNmvtpcXf/oorXGV54nfpFRUVg8ODBePbZZ2E2m7F161a88MILqFu3Fpo3b67Yt6CgAJGRkR6do0SJaI/Hm5AQ4/W1xsRYx11c3hvB8O2332LMmDHIyMiAIAgYOHCg02B4zpw5mDlzJsqXL4+ePXvi8ccf9+j9Jeerv81F+X3CsQeHT8ae6sNjuaHYP+9BwrEHh6/GHpIB8V9//YV9+/Zh3Lhxiu2dOnVCnz59ULlyZVy6dAmvv/46Bg4ciE2bNqFEiRIeny81NROWoC/ya31BTSYzUlKyVffIyIwEEHN9PwtSUrJ0Hz0pKQEpKRlejzLU8TrDS6hdZ+JX9yP67M6AnS+vyj1Iv+tT3fvn55uQlZUnPWctW3ZAyZIl8fPP+zFgwACMGDEaX3yxA//++zdeeWUmkpOb4f3338ZXX+1Eeno6ata8Gc89Nxq1atUBAJhMJvzvf29hx47tsFjM6Natp8M5WrdOxoIFS9GkSTIA4NChg1i+fAn++edviKKIOnVuxRtvvIXRo0fg3LlzePnll/HKK6+gevWbsHz5CpjNZnzyyYfYunUjLl9OQZUqVTF06AgkJzeTrmvNmhX49NOPkZ2dhXbtOiA3NxdRUVEh9d6wMRiEkPqS1VN33nkn9u3bh7S0NGzcuBGVKlXS3HfmzJmoW7cuYmJicOjQIYwdOxZpaWkYO3asV2Pwxd/mUPs3xB0ce3D4auxJ138G8nng8x4cHHtwuDN2V3+bQ7LL9Jo1a1C/fn00aNBAsb1WrVqoUqUKBEFAhQoVMH36dKSkpODAgQNBGmlgBTtkJ6Kiw2QyYceObUhPT8ett9YFAGzevB6TJk3Fl1/uQnJyU8yd+xqOHTuCt95ajq1bv0CHDh0xatSzyMiw/oFZs2YFvvnmayxYsBTr129HVFQUfv/9N81z/vvv3xg5cijuuusebNiwDZs3f45+/foDAF5/fQEqV66MMWPG44svfsDy5SsAAO+//za++OIzvPba6/jss2/w2GODMH78aJw9ewYAsHPnDqxc+T5eeWUmtm79Erfd1gDffvuVP586kilVqhQGDBiACRMm4Pjx46r7NGvWDPHx8YiIiECTJk0wYsQIbNq0KcAjJSIi8kzIZYgzMzOxefNmh6ZbagRBgCAIEMNogV7nXaYL7w2fKyYqOtzJ1rrDl9/Qrl79Adau/RBGoxEVKlTChAkvo1GjJgCAhx9+BDfeWB0AkJubi88+24qPP96IpKTyAID77nsQ69d/gp9++gGdOnXF9u1b0K9ff1Svbp1TOnDgU9i8eb3muTdsWIfmzVugV6/C3g9Nm97hdLyffLIG06fPQbVqNwIA2rVrj82bG+OLL3bg8cefxPbtm9GjRy/Ur38bAKB7917YtGmDZ08OecRiscBkMuG///7DLbfc4nJ/rcZbREREoSigAbHZbIbJZEJBQQEA67JKABAZGSn9Ad20aRMiIyPRrVs3h8dv374dd9xxB8qUKYPU1FTMnTsXZcqUQePGgetuGkxch5iIXHnkkcekDtD2KlWqIt0+c8aagR006FHFPgUFBbh06RIA4NKlS6hUqbJ0n8FgQIUK2qWzFy6cw0031dQ91itXUpGVlYUJE8bCYCj8ws9kMkkluikpl3DnnR0Uj6tcuTLIf1asWIEuXbogKSkJV65cwRtvvIGoqCg0atTIYd+TJ08iJSUFDRo0QGRkJA4fPowFCxao/g0nIiIKRQENiDdt2oTx48dLv9tKolesWCE1fPnoo4/Qu3dvxVrDNps3b8Yrr7yCnJwcJCYmomnTpnjvvfcQH1/052vpITIiJiIvCEJh0Fm2bFkAwKpVa1GuXJLq/uXLl8eFC+ek3y0WCy5evKB5/IoVK+P06VO6zg8A8fEJiIqKxuuvL8BttzVUfUxSUnmcP39ese38+fNSppt8b8+ePVi2bBmysrIQHx+P2267De+//z7KlSuHc+fOoVu3bli+fDmSk5ORnp6OV199FadPn5amM913330YNGhQsC+DiIhIl4AGxH369HG5TuGWLVs071u6dKmvhxRynJVMMwYmIl+pWLES2rS5E6+/PhPPPTcGFStWQnZ2Fn777SBuuaU2ypUrh86du2HNmpVo0iQZlSpVwapV7yMt7armMXv3vg9PPjkAmzdvQKdOXWEwGHDw4H40bWr9wjMpKQmnTv0n7R8VFYVevfpg8eL5GDduMm68sTry8/Nw5MifKFOmLKpVuxFdunTH/Pmvo1279qhVqw4+/3w7jh07woDYjxYvXqx5X+XKlRV9Oxo0aIDNmzcHYlhERER+EXJziEmbYh3i4A2DiMLElCnTsGrVBxg5chhSUy8jLi4O9erdhlGjXgAAPPro48jIyMCwYU9DFC3o2vVezUwuANSocTPeeOMt/O9/i7F48QIYDAbUqXOrFBAPHToUU6e+go0b16F69ZuwdOm7GDZsJNat+wSTJ4/DpUsXERUVjVq16mDYsOcAAPfc0wWXLl3CpEnjpC7Td955l/+fHCIiIioWBDGcOlJ5KBSWXUpeY112qUE5M969R33Zpbd/j8LS36MBAJVKWLClJ5ddssfrDC+8zvBSHK4zXJZdCgVcdoljDwafLbuUmggASCmb7vWxdJ+Tz3tQcOzBEfbLLpE6i+w2v8YgIiIiIiLyDgPiIoRBMBERERERke8wIC5C2GSaiIiIiIjIdxgQFyHMEBMREREREfkOA+IQIwjaUS/nEBMREREREfkOA+KihEEwERERERGRzzAgDjGCk/sUGWJ/D4SIiIiIiCjMMSAuQuRl0gyIiYiIiIiIvMOAuAgRneaPiYiIiIiIyB0MiEOMs5BXkSFmipiIiIiIiMgrDIiLEAuDYCIiIiIiIp9hQBxiBCcpYlHjNhEREREREbmPAXEREopl0l+disA3pyOCPQwiIiIiIiK3MZIpQhQZ4hAIji0iMPmnGBgEYNdDmcEeDhERERERkVsYEBchlhBbdskiAvkWdr4mIiIiIqKiiSXTIUZveBkKATGR36W+jtJpyRAsV4I9EiIiIiIKQwyIQ4yzplqh1mWay0CR32VuRoT5L0SY/wj2SIiIiIgoDDEgLkIUMacY/FJldr0md8TmzEd03lo3H2W5/pPvMCIiIiLyPc4hDjHOwlwxxOYQy8dgEQFD8GN0ClGC5QrisyfDLFRCXvQDbjxStPtJREREROQ7zBAXIaHWZToUxkBFg4B8xU/9GBATERERkf8wIC5CQm4Osfx2iI3NH3afM+Kvq/xPxjO2N4jF6V6ajysObzAiIiIiCjh+ug8xTkumZfeGQngQaiXc/pSeD4z8LhYTf4wJ9lCKJtHDucAiM8RERERE5D8MiIsQdwNQk7vJODcVp6Za2QUCzKKAjAJOlPaMp4Etm2oRERERkf8wIA41TuItUfMXR+uOR+KOjxKw57zRF6NyOZ5wr2iVwrkwv07/8TSw9bTUmoiIiIjINQbERYg7c4hf22st7Z29z48lvsUoOLQFwsXokn3sekArejaHWOAzT0RERER+wIA4xOgtyNUbHgiC/wKJ4lQyLeUpw/1C/cbTwJZziImIiIjIfxgQFyEWN+cQA/59gYtVyTQzxF6y2P3UiU21iIiIiMiPGBAXIZ6EBIIfe0AVpy7T0vWJbKrlCcHjOcRsqkVERERE/sOAOMQ4XXZJVL/t6fG8VZwyxLbsPEumveVpyTQRERERke8xIC5CPJmza/BrRBxa6yL7Ewt3vSR6WDLNZ56IiIiI/IgBcYhxVuLsSXYyYBliP54nJFwP/sM9E+4/nga2DIiJiIiIyH8YEBchITeHWH47zOMVzmT1FjPERERERBR6GBCHGF/PIfZnybQnXa+LKpFziL3k4VcKtlLrcP/GhYiIiIiCggFxEeJJiXLAeiKHefdl5im9xXWIiYiIiCj0MCAuQiweNLHisku+Ia1DHO4X6ieCvFTarSeRATERERER+Q8D4iLEk2DMny9wcWqqxbDMWxaN267wmSciIiIi/2FAXIRYPJhDzKZavmF77sP8Mv3I069PGBATERERkf8wIA4xzgJYz7pM+y+QKE4l0zbhHvj7jSjPCrvxJF5/nPtzj4mIiIiIXGNAHAL0BlmedHUO1Asc7oEiM8Tekj9zLJkmIiIiotDAgDgE6C099iToDFjJtP9OExJs12cJ827a/uNhhpgBMRERERH5EQPiEKA7Q+zBY/wZvhWnkmlP1oAmOWaIiYiIiCj0MCAOktQcAWm51nBV70d9Zcm0vlDXwKZaPlGcsuH+waZaRERERBR6IoI9gOLIZAE6bYgHAOzrl6E70xrKJdPhziFDzMppt8jXIRZg0f/eERkQExEREZH/BDRDvG3bNvTr1w9NmjRB7dq1He6vXbs2GjRogMaNG0v/O3bsmHS/xWLBvHnz0LJlSzRu3BiDBg3C2bNnA3kJPpFrUv6uN9PqTqGpjV9f4GJUMm2RRcDhfq3+IXv3uvXNju1xfNaJAmXx4sW4++67cfvtt6N58+YYNGgQjhw5orn/6dOnMWjQIDRu3BgtW7bEG2+8ATHcy4aIiChsBDQgTkxMRL9+/TBhwgTNfZYvX44DBw5I/5MHzm+//Ta2bt2KVatWYdeuXahcuTIGDx4Mi8WTUDF4zHafE/R2jxbtGjrp+bzBdYh9pJjOIc41ATkm1/u5xjnEREVFly5dsG7dOvz666/44Ycf0KpVKzz11FOqf2vNZjMGDx6MypUrY9euXVi1ahW2bNmCd999NwgjJyIicl9AA+I2bdqge/fuqFq1qkeP/+ijj/Dkk0+iRo0aKFGiBMaOHYsTJ07g119/9fFI/ctZp2JnH/stdnfqCRH8WdnryTJQRZWn4VxR99jncXh4ewkffAnALtNERcVNN92EkiVLSr8bDAakpKQgIyPDYd99+/bhv//+w9ixY1GiRAnUqFEDTz75JNasWRPIIRMREXks5OYQjx49GgUFBahcuTL69u2LBx98EACQkZGBs2fPon79+tK+iYmJuPHGG3HkyBE0bdrU43OWLRvv9bjdIWYV3k5KSkB2QeHvkZERSEpKUH2c0e7VSkpKcNk0Kya68Hhax/VUumw8ZcrEI6mk9r6B5OvrBIDEvMLb5colICYE/svxx3XaO5Fu/eKjVNkERBm9OFBWLJBuvVmuXDxg1Dn2a9ZAODEhBijp/+sNpkC8nqGguFxnUfftt99izJgxyMjIgCAIGDhwoCJItjl69ChuvPFGJCYmStvq16+PM2fOIDMzE/Hxnv999dXf5qL8nuPYg8MnY0/14bHcUOyf9yDh2IPDV2MPgY/1hd5//300btwYBoMBe/bswZgxY2AymdCvXz9kZmYCgOKPLgAkJCRI93kqNTUTFvv0qx9dzhYAWP/Qp6RkIKsAAKwvaH6+CSkpOaqPyy+IA1AYlVy6lAGjZo7feryC68dLSkpASorjt/veuHLNAKAEAOByaiZi84OfxfPHdQLA1TQjgDgA1tcs2AGxv67TnijGAxCQkpLhdkBssJxHiewpyI4ZBoMlE6Wub798OR2iIVLXMZKuZ4bT03OQl+//6w2WQL2ewVYcrtNgEAL+Jas/3Hnnndi3bx/S0tKwceNGVKpUSXW/zMxMJCQoP5DY/k57GxD74m9zUX7PcezB4auxJ13/Gcjngc97cHDsweHO2F39bQ6pZZdatGiBmJgYREVFoW3btnj88cexefNmAJD+qNqXbGVkZHj1BzcY7OcQ612QxqOSacF/QWpxmkMsv74AfncSdLblvTy55PjMEYjJ+xBlrrWGxyXTIptqEQVTqVKlMGDAAEyYMAHHjx93uD8+Pt7hS+n09HTpPiIiolAXUgGxPYPBIHWqTEhIQJUqVXD48GHp/oyMDJw6dQq33nprsIboEcXcW1FlSR8NngSdAVuH2H+nCQnF6Vpt9L4vtRgtp6TbgpdNtYRi86wThR6LxQKTyYT//vvP4b46dergv//+U3xZ/ccff+CGG25gQExEREVCQANis9mMvLw8FBRYJ83m5eUhLy8PFosFf/zxB37//Xfk5+fDZDLhxx9/xHvvvYdu3bpJj3/44Yfxzjvv4MSJE8jOzsacOXNQvXp13H777YG8DK/JM8Qi3MgQe3Auv3aZLqZNtcI9G27jfdM0+T8vbKpFVFSsWLECKSkpAIArV65g6tSpiIqKQqNGjRz2TU5ORrVq1TBnzhxkZ2fjxIkTePvtt9G3b98Aj5qIiMgzAZ0JuWnTJowfP176vUGDBgCsf3yzsrIwZ84cXLhwAUajEZUrV8bIkSMVf1SffPJJZGRkoF+/fsjJycHtt9+OJUuWwGAI6US3A7NFtqatqL8E16FkWs+yS26My12K04uC/ZawUpyCfxtvvwQQYVT8ZiPA4sZzyICYKND27NmDZcuWISsrC/Hx8bjtttvw/vvvo1y5cjh37hy6deuG5cuXIzk5GUajEUuXLsWUKVPQsmVLxMbG4sEHH8SgQYOCfRlERES6BDQg7tOnD/r06aN5f4cOHZw+3mAwYPTo0Rg9erSvhxZQJvvgSlQGyFrs79MTIvizZFou3MOV4jiHWHHNHh1BPSB2L7pmQEwUaIsXL9a8r3Llyjhw4IBiW9WqVfHOO+/4e1hERER+UbRSq2HCWXMsd0qmg70OcXHKmnpa8FuUiZq/6CRolUy7EV6zqRYRERER+RED4iAw2yXL9M7VFEX3w1u/ziGW3w7zeEXZYCpAafcgyDUB836NxuHLBh80EpP98yJ6ejRmiImIiIjIfxgQB5AoAlv+jcA/aYVPu0NTLSfBlidziP35AhfHzstAeF/rB39GYc2xKDy+s4QPysTlJdNsqkVEREREoSegc4iLu2/PRGDqnljFNhH6s6ueZGED1WU63Fm8Dg6LhvNZyi9r1G7rJWoGxO4vu8SAmIiIiIj8QVcC8bffftO8b/v27T4bTLj755rj0y2K+kuPPZlDHKimWuEcJALFJxyTf4GieE09KhMvDIgFj8NrBsRERERE5D+6AuJHHnkEixcvhiiL1rKysvDCCy9gwoQJfhtcuNEKTvXOIfYk6PRnPOz9OrVFh6izE3g4kV+mR12m2VSLiIiIiEKcroB48eLFWLNmDR599FGcO3cO+/fvx7333otjx45h7dq1/h5j2DCqRKf2H/OdN9Vy/rsaNtXyDa+DwyJCnslVNhLz5GjqAbHgSYY43N9gRERERBQUugLitm3bYvPmzYiPj0ePHj0wYMAA3H333Vi7di1uueUWf48xbBgFxw/1Fj+UTMuP4V7w4Z7iFKNYvA4Oix7fziFmyTQRERERhR7dTYizs7ORlpaGyMhIAEBMTAyMRqOLR5GcWsm0CP2l0HoDMcWyTn4tmpafJ7wVl47aWnOIPfsSQKOplmgGxFydx7Ce2J9f7BARERFR8aUrIN64cSN69uyJ8uXLY8eOHXj33XexefNmPPjggzh58qSfhxg+VOcQ22eInTzeYdklHfv5M5tZnEqm5cL5WhVvUfm8aY+OJv/npfAIpdLvQdKV8hAs6TqOwQwxEREREfmProB46tSpGDduHBYuXIhSpUqhWbNm2Lx5M6pVq4bevXv7e4xhQ2sOsd65mg5zVzX2DVSzKzFA5wkFimWXgjcMv5O/RT1dObjwYLJV3WRvFoOYBgCIMO1zfQw21SIiIiIiP9K1DvH69etx0003KbYlJCTgjTfewKZNm/wysHCkVTKtN7AU7Za+0drXzAyxzymuL5yvVfYW87aplqhYdsnTrxGYISYiIiIi/9GVIbYFw7///ju2b9+O7OxsANZ5xd26dfPf6MKMaoZY1J+J0zvXOGAZ4gDNTw4Fii7TYRybyV9R778DUC+Zdk8YP9lEREREFHS6MsSXL1/G0KFDcejQIQiCgJ07dyIuLg4zZ85EdHQ0Jk6c6O9xhgWDSpdpEVDM1XT2+d+WpRMgQnTSZihQGWL5AMI5SASKT3m4IiD207JL6mfTwgwxEREVPblRfWA2ciUWoqJAV4b4tddeQ9myZfHzzz8jJiZG2t65c2fs2rXLb4MLN+pNtfT3z7WFFLbjaAUpFq+bIelTXKqIgeJzrYou07Ltnl2zRpdptZNpYkBMRERFT0bC+8iOY8KIqCjQlSHevXs33n//fZQsWVKxvWrVqjh//rxfBhaO9Cy7pKdk2ihYs8C6uky7OUZ3KIPE8C6fVnbuFhCuAZpPM8SC1jrE7mBATERERET+oytDnJubK60/LHf16lVER0f7fFDhSrPLtN3vWmxBiWqmWSZgTbWKS9rUTjG6VIkn1yy6yhC7+hKluL7BiIiIiChgdAXETZs2xYYNGxTbzGYzli9fjjvuuMMvAwtHahWiouj+sktSQCyqBxTByRCHN8WyS2F8sYqSaZ/OIfYspPbu8UREREREzukqmR47diweffRR/P777ygoKMCsWbNw/PhxZGZm4sMPP/T3GMOGWiDlTYY42E21ikujKSD8r89Gq8u0Z4smyTLEoidHYEBMRERERP6lKyC++eabsWXLFnz44YeIiopCXl4eOnfujEceeQTly5f39xjDhlZwqruplmwOsbPHWWSxR8AyxGEer8jnSIdzhlhOWbHsybzpwgyxZ+sQMyAmIiIiIv/SFRADQFJSEkaMGOHPsYQ9tY/0ekumRbEwKBMEEc7mXyq6TPszQ6xxOxwVl2y4L9chFl021RIAUYTBcg4WYxW1IxTuGe7fuBARERFRUGgGxHv37tV9kKZNm/pkMOHOm5Jp23ZBlqvUihHMAQreilOMUlyy4VpziD3LirueQxyT9z4Ssp5Devx7yIu+z+5e7xd+IiIiIiJyRjMg7t+/PwRBgHj9079w/ZOy/e8AcOTIEX+OMWyoZoihrwmWbR+DUBi0BHvZJblwDhKB4DynweZ9BYA832xSvd9oPgEA0k9fj4CIiIiIyBnNgHj37t3S7UOHDmHWrFkYPHgwGjduDAA4cOAAli1bhrFjx/p/lGFCLWh0LJlWL4W27SMILherUWSILRrH8wX5uD1rulQ0hfMcYuU6xN6+d+QlzwUu9tH6ukjtNhERERGRb2gGxKVLl5Zuz58/HxMnTkSrVq2kbVWrVkXZsmUxZ84c3HnnnX4dZLiwaISyej7qS0su6dk3QHFEcSkjBvQvjVXUyUumFV2mPbpm+YPy1c4m20ftKxUGxERERETkX7rWIf77779RsWJFh+0VKlTAv//+6/NBhSvVDDH0BVvyDLGrfYOxDnG4C+essJz8Kxvv30eFQa6gWjIt34cZYiIiIiIKPF0B8c0334xFixYhNzdX2pabm4u33noLN998s98GF240u0y72Adwbw5xMJpqhXPWFPBFtlT5+EUHo7DnvNH1zgEmaFRJe/L6CvJnTVTLEAPOMsQCm2oRERERkZ/pWnZpypQpGDx4MNq2bYvatWsDAP766y8YDAYsW7bMrwMMJ5pdpuXLJGk99vpPA1zPIQ7Uskty4R6u+HLZpa9PR+D9P6Px/p/Avn4ZXh7Nf7zOECvefK5KpjUm2Hs3AiIiIiIip3QFxA0aNMCXX36JLVu2SCXSPXr0QPfu3REXF+fXAYYTzZJp+w1OHqs1x1MuYBlijdvhSDlf2rtmU1dz/dfozFvyrK73c8TlTbVYMk1EREREoUdXQAwAcXFxeOihh/w5lrCn+pFe9GDZJdu+euYQ+7OpVjEtmfb2UrXKkkOB1hx1z67ZVYZY/nUQm2oRERERUeDpDogvXLiAvXv3IjU1VVqL2GbgwIE+H1g4UiuZtuicQ2zLSgqC6DKgkp/Hn8shFacQRbHElJcXbgjlgFh227cZYrWA2KKcZ+zk8cXr3UZEREREgaIrIN68eTMmTJiAiIgIlClTRnGfIAgMiHXypsu0O8sumQMUR+iZ+xwufPmU6upkFyTKdYhltz06mvxRausQi4BofWcLotpXN8VpdWsiIiIiCgZdAfGCBQvwxBNP4LnnnoPRGHqdcYsKrVmS7naZ1ruvs318wfsMYtHhy0ZlglA0nizvS+9lGWK1gFi0yPZxfgLnmWQiIiIiIs/oSlalpqbigQceYDDsJdVSW1HfR315Uy1Xc4jNsuDNn+vnKpYictn7umjzZYbYGMpPlcbYPHt95RG1RoZYdgbnj2dATERERES+pysgbtu2LX777Td/jyXsaWaI3SyZdrUOccAyxMVpiqcP5xCHdFMt2W2L169vYZAraDbVYpdpIiIiIgoeXSXTrVq1wty5c3H8+HHUrl0bERHKh91zzz1+GVy40TWH2MVj5RliLf7MCssVp3DFl7NZi8wcYo3b+rnKEMtLptllmoiIiIgCT1dA/NJLLwEAli1b5nCfIAg4cuSIb0cVptTKTkVRGQr4Yg6xWXbAQFWahnu44sslpkI6Q6xYdsm7pmnyyQBqc4gFFxliQdd/GUREREREntMVEB89etTf4ygWfN5lWsc6xH5ddqkYTfEUfficFsVllzyrOpC/QdSXXXLeVIsZYiIiIiLyr1Cu3gw7muXQeh4rK5mGiznEZkWg6r/oqziFK77sqB3KAbGc16X3onwOsVZTLScl08VqkjoRERERBYPTDPHOnTt1HYRziPVRCzBEUd8cYnnJtKtAJWBziItRjOLTdYhDOCAWNEryvV12SWsdYoFNtYiIiIgoiJwGxCNGjHB5AM4h1k+zZNrFPtbt1khFEETg+m3N8uogLLsU7sGxL8vDQ7ksQ1Ey7XWZuKuS6cJ3vyCyqRYRERERBZ7TgJhzh31Le9kl1ylD+RxiZzk1wK5kWvfovBPu4Yov11wWhNB9tjS7THuZIRZgUrnbIjtwYDLEBvMpRJgOID/q3tDubkZEREREARHKyaqwo5ohFvV97LdlegXB9ed4iw+zmc4oMoihG+N57PBlAzpvKIFvT0f4YE3eQqFcMi2PiL1/TeXtzj1Zh9j3XabLptVHycz+iCrY5pPjEREREVHRxoA4gLQCDIuOjK4t+NS17FIQl1r69aIRAz+Pw4lrRf+tdTDFiMs5Bvx6yWiXIfZOEYmHFbztMi0gtLpMR5gO+PR4RERERFQ06Vp2yVe2bduG1atX4+jRo8jKysKxY8ek+w4ePIjFixfj8OHDyM3NxY033oghQ4YoGnYtXLgQixcvRkxMjLStffv2mDdvXiAvw2NasyQVH/U1yqfVl10S7B9t3TdAmVu1TPQzX8UBACb8GIMPu2b77+QBIIVqdi+SL9chFsXQrdzV80WNfiol0666TPt1DnGIPulEIWDOnDn49ttvcf78ecTFxaFt27YYO3YsSpcurfmYDh06ICUlBRERhR8r5s2bh/bt2wdiyERERB4LaECcmJiIfv36ITc3FxMnTlTcd+3aNXTt2hUzZ85EqVKl8MUXX2D06NFYvXo1GjRoIO2XnJyMlStXBnLYvqNRMu1iF8V+1pJp0em+vg1k9LE/T1ZB0Q84bM3J5IW9tt+9IX/NzSIQEUJPlSIT7vWXALIMsUrJtOCyZFq029eXQuhJJwoxRqMRc+bMwS233IL09HSMHTsW48ePx9KlS50+burUqejTp0+ARklEROQbAQ2I27RpAwD4+eefHe5r166d4vdOnTph2bJl+PXXXxUBcVGmlQPTE3jIl11y9VHeLMsy+zMgdpa/C4dwQ8pd2i+N5cMnNeTmXtsF6yqbdRMU73itkmlnZ/DnZPhweIcS+ceoUaOk22XLlkX//v0xevToII6IiIjIfwIaELvj4sWL+Pfff1GnTh3F9sOHD+OOO+5AbGwsmjRpgpEjR6Jq1apenats2XivHq9XTKzjtlKlSiBd9tlcEAQkJSU47FfSbP0ZFWlE/vXYoFTpEkgq63jM2LjC20ajUTqe2nG9EX+p8HZCQiySkmTnjTD4/Hx6+eq8cdefx5jYKMTI/ktJSFReq7sSMwpvly6bgLhIz47jj+c3rkTh7RIJhW+kxMQ49685zyjFwYLK10GJiTFAhnWf2BgjYu2vJz8OSLPejI2NdLzfE6nWHyXiolEiSO9PLcH67yXQist1hpPdu3c7/C1WM2fOHMycORPly5dHz5498fjjjyMy0sN/4OC7v81F+T3HsQcHxx4cHHtwcOw6A+K0tDS88cYb2LNnD1JTU2GxKD/c7t+/3yeDscnKysKzzz6L9u3bo0WLFtL2Tp06oU+fPqhcuTIuXbqE119/HQMHDsSmTZtQokQJJ0d0LjU1E5YApOqys6MBRCm2Xb2ahWuZBgDWaNksikhJyXR47JWrBgAlYDaZYTEDgBFXrmQhxeIYaKRnRgGIBgAUmMxISclGUlICUlIyHPb1RnpGhDTu9PQcpKSYAFjfmBazBSkpWT49nx6+vM7MLOvzmJOTD9EI2F67tGu2a/VM2jUjAGuweTElA/EefF70x+sJFF4zYL1O2+ubdi0bKSlmt46VmF9w/Ujq0tOzEJ2fj2gAubn5yLC7HqM5E2Wu387JyUOmD67XFtNnZecj2w/Pn6f89XqGmuJwnQaDELAvWQNh+/btWLt2LVatWuV0v5kzZ6Ju3bqIiYnBoUOHMHbsWKSlpWHs2LEen9sXf5uL8nuOYw8Ojj04OPbgKC5jd/W3WVdAPHHiRBw5cgQPPvggypcvD8GPXYAyMjLw9NNPIykpCbNmzVLcV6tWLel2hQoVMH36dCQnJ+PAgQNo3bq138bkK2p/163rENttcPJYg2zZJV1ziP257BK0S7PDoSDV9jxaRN+WnmvN0w0F8veLSb5qko61sp0eTH0H6G+qRUSBtm3bNkyZMgVLlixBvXr1nO7brFkz6XaTJk0wYsQIzJkzx6uAmIiIKBB0BcS7d+/Ge++9h4YNG/p1MFevXsWgQYNQvXp1zJ49W9GtUo0gCBAEAaI/oz4fUg2IRX0Nm2wBibWhlvPgJGBNtQIUeAeNWPjDl5275V8kWCzqncJDgffvI1cLVMmWXdJapNvLEWgLh69siPxn7dq1mDNnDpYuXYrbb7/d7ccbDEV/6T0iIioedP3FKlu2LOLi4lzv6ILZbEZeXh4KCgoAAHl5ecjLy4PFYkFKSgr69++P2rVrY+7cuarB8Pbt23HlyhUAQGpqKiZPnowyZcqgcePGXo8tWOwzxJpZ3+s/9bxg5gAFqk6baoVBvCGFczo7geum0bgqFMiH421TLZePEkVAtD3LXHaJKFSsWLECc+fOxTvvvKMrGD558iT27t0r/T0/dOgQFixYgG7dugVgtERERN7RlSF+/vnnsWDBAsycOdOrubqbNm3C+PHjpd9t3aNXrFiBvXv34vjx4zhz5gx27Ngh7dOjRw+88sorAIDNmzfjlVdeQU5ODhITE9G0aVO89957iI8vGvO11EumlR/MXXWZFmRdpl3taz2+/yjCFU9KakOc7fm1wLdl6FpBZyiwKIJ1QXW7fu6UTKvt68vFrohIr+nTpyMiIgIDBgxQbN+2bRsqV66Mc+fOoVu3bli+fDmSk5ORnp6OV199FadPn4YgCKhQoQLuu+8+DBo0KEhXQEREpJ+ugHjJkiU4c+YMWrZsicqVKztkb7ds2aLrZH369NFco7B58+YYPny408e7WgMx1GmWTOsIYG1BmL45xAFadikI6x0HkhSqib7NVYb0HGLZbbOrime3juZIcGsOMTPERIFy7Ngxp/dXrlwZBw4ckH5v0KABNm/e7O9hERER+YWugLhTp07+HkexJQ8JnJGXTLtch9jbZkg6OS+ZDrFIzwO2YFWEcp6613OIQ7hkWv5Cep8V1zOH2LaPi3WIw/IrFyIiIiIKNl0BsavMLemjlSGWB61agYdtu3xubrC7TMuFY1Mt7Qyxd18yFJkMsZeNxASvS6b9GRCz4Q8RERER6QyIbXbv3o1//vkHgiDg5ptvRvPmzf01rrCkVRSq52O/Ytkl274aO3vfDEkfZyXT4RBu2K7PvvGZL5/UUMsQB7Spluzdrx48+y8gFsOh6xsREREReU1XQHzx4kUMGzYMf/zxB8qXLw8AuHTpEurXr49FixahQoUKfh1k2PCiCZbUVEv6P22BaqrlLGsYDvGGPEMs/zLD26m1ipLpEFt2ST4277PXrg5ggeCkZFqQPdOus81ERERERO7TlcibNm0ajEYjdu7cie+++w7fffcddu7cCaPRiOnTp/t7jGFDNUNsX46rVTJ9/adBR6AZqJJpPeMuymzNyUTp/6x82WU69EqmC99gge0yzaZaRERERBR4ugLiH3/8ES+99BKqVq0qbatatSomTpyIH3/80W+DCzcWlQZXej/mqy67pLFvoEqm5UIsrvMp+wyx112mQ7mploz3lQauM8TSPqrfMvi/qZbBch6lrzZGTO47fjk+EREREYU23VM9BZUaWLVt5B4Repddsj7XBkHUsQ6x6yZdviD6MGsaigq7TPv2WkM6Q6wo51bf7tHBNO/XmSH2+RvM+t9IhOkgIiz/ICr/Mx8fn4iIiIiKAl0BcYsWLfDqq6/i/Pnz0rZz585hxowZaNGihd8GF260u0wrf1d97PWfBrienxuwploat4HwKEi1vRYWUVlK7MsgVs+xLmQJSM/33Tmd8W2w7vwAAiyyN7zGfxw6j+U+2+vpbNknIiIiIgp3uppqTZo0CUOGDMHdd9+taKpVq1YtTJo0ya8DDCdaAYarJX0uZAn466r1u4tQWnbJ2RzicCge0Lo+X5ZMm1ysE52eD3TfFA8A2Ncvw8szu6YcW+Ftz4JjV+3HgjmHWHlcNu0iIiIiKp50BcSVKlXChg0b8NNPP+Hff/8FANSsWRMtW7b06+CKA/sMsRpbQAToW3YpUF2mfRkkhiLFsksq2z0+ruy2q0DzdEZgF7DSGpv/5hA7y9D6cua2vev/FYnOAnIiIiIiCne61yEWBAGtWrVCq1at/DmesKZaMg3Hj+KiqJ1h1ZN4DYWmWmGQIJZeF4vo2y8Z3AmIgzk327ok1PVxePSK6hm8LUOrJ5vsDyyZJiIiIirONAPi9957D/369UN0dDTee+89pwcZOHCgzwcWjmzBz4RmufjyVAR+uRDh0LAJsH401wo/DILrcuRQKJkOB/IMsWK7j44LhF6Xaa2xefL6ui5DlufeA91l2lWvdiIiIiIqDjQD4pUrV6JXr16Ijo7GypUrNQ8gCAIDYjfFR4qIsK/YlBGdRMQGd+cQezJAnZwFSeGQIRZlN/zVUdviIjEa6C7U8tN5X2ngKutrkWWGgxwQiyyZJiIiIiqONAPir7/+WvU2ec4W3BgE9e16CHA9h1gM1LJLkJfU2gmDiNj2ushnugK+LZl2lSG2BPiJ1JxD7O5Fi9lw/Uw5zxD7t9GVYHcOZoqJiIiIiiNdHXs2btyI/HzHdV/y8/OxceNGX48pbMmDKlvZszUkUAY9zj6aK5pqaeyjCGrcGqF7nHaZ9uN5A0UKlewyxBYXnaFdHtedkulAZ4i1SqbdOEaJrJeRdKUiIk2/uNjTAmcBsX+batmfgwExERERUXGkKyAeP348MjIcl3zJysrC+PHjfT6osCXLEMuzvO5k3wQ35xDDy+DNKUXApDxPWATE0hxiwafFu8osrPNnKphhmlaG2GA5j4SMp2A0HVJ9XFzuGzrPIGspp1qyXHhS/2WL2WWaiIiIqDjTFRCLoghBJQo7f/48EhISfD6ocGX7yG2AMsvr0LTJyWd/g1B4p57Ov/4MqAKRvwsmrQyx98suFb5urjLEgX5eFeXcFvWS+ITMwYjJ/xilr7X36lyC6CpDHMimWuH4DiYiIiIiV5wuu9SjRw8A1sZZjz76KIxGo3SfxWLBuXPn0LZtW/+OMIzYsoGCIBYug6qS+3JaMq1jR3lmz59NmZwFia6y2EWB7fWy/9LC66fUjdcn4E21NEqm5eMwmq1rkQso8PZsLtYBDlxA7N/5ykREREQUqpwGxJ06dQIAHD9+HO3atUOJEiWk+yIjI1GlShXcc889/h1hGLF99rc2xpLqcR2CHmcfza0l06LT/QKVuXUWroRBPCxxnEPs5fFkt80uKnUDvZyVvoZfJh+dLZgZYvkY5D+JiIiIqDhxGhAPHz4cAFClShV07doV0dHRARlUuLJ9pJevJSzK77Dt57RkWkewGYg4wu7Y4bgOsaXwOwvl0+jLgNiNkmlR9H/mXVeXadFXAXHhMyuoBaTyecU+f4OxZJqIiIiIXATENr179/b3OIoFKUNs1ynandyUPB4K5QxxOJCaatll8b3NJbqTbbZfU9rvmXetkmnZLkJRzRCLKsdzWrJNREREROFOV0Ccn5+PpUuXYtu2bTh37hxMJuUH4iNHjvhlcOHGFtzYryVsn/xyOofYrkO1s/PY3/Y1Z1nTcJhDLA/VFGsu+zBD7KrLtEkWp1lExzWsfU2rnFt5zWafnU1wuuyRr79ycfZVUTh+pUNERERErujqMj1//nxs3LgRAwcOhMFgwAsvvIBHHnkEpUqVwssvv+zvMYYNrZJph4/mTkqRHcqtdZ7THxTj9ON5gkUqmVZ7kXzEVcm0VmMrf9EVrPuhZDowTbUcA2IpIA/Hmn8iIiIicklXQPzZZ59hypQpePjhh2EwGHDXXXdh0qRJePbZZ/HTTz/5e4xhQ7Vk2kWG2JNmVYHuTAyEZ1MteYZYHkp53VRLoyxZjVkWlAYkINYqmZbd9l3JtDwgdrw4367+DKhniDmHmIiIiKg40xUQp6am4uabbwYAlChRAunp6QCANm3aYNeuXf4bXZixfRwX4CJDLH+MSobY5XkCFETZN3yS8zYg/u6METN+iVaUDAeaNIcY8Gk23Nnra89sVzLtb1prJCvXvPZ2uSUrQf5Vg6j2Qvt6NjwDYiIiIiJS0hUQV6pUCZcuXQIAVKtWTQqCDx48iJiYGP+NLszYgir7ecAO1ZpOSqbts8suz+nBOPVydn5v5xCP/j4O6/+Owuf/6Zrm7hdSMa/oPPh3+7huZYgLbwf6uwHFHGLZdsFXc4hFeVMt1R00bntKPm77ucsMiImIiIiKI10BcceOHbF7924AwIABA7Bw4UJ06NAB48ePxwMPPODXAYYT20du+07RTjPEdvcZBNFlsKm5XI6P+TpcUZOeF7zia63nMaAZ4gC9lmrnsL/+qLyNKJXWunCbvn8+nJ0NzucQ2+/rHUFUyxBbt6ku+0REREREYU9X+m306NHS7c6dO6NSpUrYv38/qlevjvbt2/ttcOFG6jItKDOo9kGRs2ykQWM/tfP4mzuBnaeC2a1ayh2K/rtWs4su0/Isratssi/ITyEfmwggOn8jIs2HZHtEenk2i6xUWu3iCrcJPvnKhSXTRERERKSkKyDeu3cvGjdujIgI6+4NGzZEw4YNYTKZsHfvXjRt2tSvgwwXto/cBtiVTNvNuHWWjbRfw9gVvwbHTsdZ9AMM2+tggf1r4l2UriiZdpGYVASlogB/B27OMsSCw9xhb8vZCzPE6hla/zXVEhwC8aL/fiUiIiIi9+mqeRwwYACuXbvmsD0jIwMDBgzw+aDClXg9uBEEURHUOusyrdZUy511iL0N3pxRhDBhGE8UZogFp1l7T48LuFcyHehllxzKtcV85b6CtwGxfA6xysWpljh7Qy3Attj9JCIiIqLiRFdALIoiBJXa1bS0NMTGxvp8UOFKKpmG8y7TUGQFlXcJ0v85OY/94fwUSDnNZPvnlAGl1a07nLtMK85td80C8u32MHp5BlGWGXZeMu37LtP26w+H4Tc6REREROSS0xTP4MGDAQCCIGDs2LGIjCycM2ixWHD8+HE0btzYvyMMI1LJtCxadLUOsWNTLTdOpP6rz8izz/4KiIMaWNtKpn08hziUu0xrlXOLACAqS6ZFr+cQu2qq5et3rrM5xMwQExERERVHTgPi0qVLA7BmiBMTExVLLEVGRuL2229nl2k32IIN+TxgwEWXafsMsZ6SaY3z+lMgzhFoznKXPjtHqHWZlt12nENslyH2Scm02pnVtvmgy7TK+aRi+HB8AxMRERGRS04/0b722msAgCpVquCJJ55AXFxcQAYVrjRLpu0zuopARJkjVcwhdnEe6RgejFUPZ42mfNUdOqhdpmWxki+XstLq5KzGbCm8P9hdpu0zxN421bIGo7bSZRcZYl8ErKJKyXRAvvYgIiIiolCl6xPt8OHD/T2OYkFeMi3P8jpkdAGYLMDwb2JxQ7zyXgOCGyTKhXsIIS+qdVbG7vZx3egybQp0hlijnFstQyyqzSF2Z5Ci86Zago8zxCyZJiIiIiJ7mgFxjx49sGrVKpQsWRI9evRwepAtW7b4fGDhSFEy7SRDDAAHLhmx72IE9l1UbpcHw3ozxP5qxiQ6CdbCYQ6x7XmzzvPWbnTmLnk23dVrI78/0E21HBqJiXpKpk1unMHVHGJfd5lWyxBb+WadYyIiIiIqajQD4k6dOiEqKkq6Td6zfQRXzh92DPlEUbs81iBfsklrDrFdGa7/mmppnyNUstjeUGSI/dRl2mVTLUWX6QCsQ6xxbv3rELsbEFtPoh6Q+jpDbHZyDgbEFN4KCgoUjTGJiIjISjMglpdJs2TaN2xBlbVk2pZ+VJ/zqxXsehJnBqLU1l/Zy1CZQyyqbPf2uICb6xB7d1pdNEumAcChZNrxnw/BYZ6x07O5WPbIf021BIfMNANiCh8rVqxAhQoVpC+zJ0yYgI0bN6Jq1apYsmQJatSoEeQREhERhQ5d6xDbnDp1Ct988w2++eYbnDp1yl9jClu2j9yu1iFW22ZjEFwHicFoqmUvDBLEityhxYeBqVsZYo21kP1Fa2wiAMG+ZNrrDLHzOcS+zxDLL8g+EGZATOFj5cqVKFOmDABg7969+OyzzzB37lzceuutmDVrVpBHR0REFFp0NdW6evUqJk6ciK+//hoGgzWGFkURd955J2bMmCEtz0TOSV2m7TpFq3WZdhYQS/tp7OOsa7Uv+TJrGoqkOcT2d/gwQ+yqy7RJUTLt3Xn1UDQPUwTjAmBfMu2DOcSC0wxt4TafzPEVnTXVCsM3MBVbFy9exA033AAA+Prrr9G5c2d07doVtWvXRr9+/YI8OiIiotCiK0M8adIknDp1CqtXr8ahQ4dw6NAhrFq1CmfOnMHkyZP9PcawYfvIbYCyy7RqKOCkZNrVHGK1jLM/OJ1D7KdzBoNF9F+GOOSaammUTAOOGWK9JdNq+1nJM8TBaqrl7PxERVN8fDxSU1MBAD/99BNatGgBAIiIiEB+vn2lBxERUfGmK0O8a9cuvP/++2jcuLG07fbbb8crr7yCgQMH+m1w4cbWqVgQRClitC/HdUW+ZJOW4KxDbMdX6xD75jAeceiybLvtw65a7swhDnA8rLL2sqcl05Gq2wXF5ACVq1M80b4OiK3HExxKp4mKvlatWmHy5MmoW7cuTp06hbZt2wIAjh8/LmWOiYiIyEpXhrhMmTKIjY112B4bG4tSpUr5ekxhSyqZhvNO084+mutZdskhQ8ySaY/YSoZF0T749y5Md2sOsUX9tr8oxqboMm2GYN+lWXBch9ixEzUgClqdbUVIQaro6uL8ExBLP8PxDUzF1ssvv4wmTZrgypUrmD9/vvR3+s8//0S3bt2COzgiIqIQoytDPHToUMyYMQNz5sxBhQoVAFjnKM2cORPDhg3z6wDDibLLtHKb/X5O5xBL2WX1wMxhDrG7A9UpEHOVQ2H5JnlhL+CDLtOy266CXJN8/WPvTquLVpdpg6DWPVrlxRHVMsSOgbN138A21RJYMk3FRHx8vOp0phEjRgRhNERERKFNV0C8YsUKnDlzBh06dFAExFFRUUhNTcWKFSukfbds2aJ5nG3btmH16tU4evQosrKycOzYMcX9f/75J1555RUcOXIEpUuXxhNPPIEBAwZI9+fm5mLGjBnYsWMHTCYT2rZtiylTphSZLLXUZVpQdpl2Z9kl6/xjrW5PVvYf7QOSIYbddbhxTouobBYWKqSmWqIAUXZBXldMu1MyHfCmWoUvhLzhl9GhXNq6tyPHgFhElObZpNJllYBU8HFArJ4hdrYOMlHR9Pfff8NgMEjLK/3444/YsGEDbrnlFjz55JMwGjW+pLpuzpw5+Pbbb3H+/HnExcWhbdu2GDt2rNMGmqdPn8aUKVOwf/9+xMbG4oEHHsDIkSMhhMK3mkRERE7oCohtaxl6KzExEf369UNubi4mTpyouC8zMxNPPvkk+vXrhw8++ABHjhzB008/jfLly6Nz584AgBkzZuDw4cPYsmULYmJiMHbsWIwbNw7Lli3zyfj8zRbQ2GeI1TK6Wh/PBUF0mTV1zNz65wOJfdbUk/Dl5DUDnvgiDk/floeHaztmIYP5UUprPq0vA1NXJdPK8wbg2dBs5qavEY9ayTSESI3jusoQs6kWkScmTJiAxx57DDVq1MD58+cxdOhQNGvWDKtXr0ZmZiZGjx7t9PFGoxFz5szBLbfcgvT0dIwdOxbjx4/H0qVLVfc3m80YPHgwmjRpggULFuDixYt48sknkZiYiEGDBvnjEomIiHxGV0A8fPhwn5ysTZs2AICff/7Z4b6dO3fCYDBg6NChMBgMaNSoER544AGsWbMGnTt3Rm5uLjZu3IiFCxdKWepx48aha9euOHfuHCpXruyTMfqTlCGG83WIIWqXQ+tadsnF7z5j13lZqwmVM0evGpCeL+BgilE1IA4m2xcLvs7MKgNt50Gu2U+BuBatUxgFlYBYbd6vSpdp7X9m5O9+tYDUoauXd2TjFRwCcWaIKXz8+++/qFu3LgDg888/R4MGDbB8+XLs2bMHEyZMcBkQjxo1SrpdtmxZ9O/f3+lj9u3bh//++w8ffvghSpQogRo1auDJJ5/EO++8w4CYiIhCnq6AOBCOHj2KunXrSuscA0D9+vWxdu1aAMDJkyeRl5eH2267Tbq/Zs2aiI2NxZEjR7wKiMuWjfd84G4Qrl9aubLxiLveo6xEiRhEZSr3K10mHokan89LJsYiJtp6OyExFklJaidS/lrm+vUlJSV4NnAN0TGFt2NiolC2XGFpbEREhK7zxV22/oyMikRSkmPzpYSEGCQlxThsd8ZX12m8/l+HwWiQXjtAe6x6xcbJzhHp/Hkyyk6TWDJO8Xr7+vUEgEiN6uY4lZcgKsrgOIbsaCBduckYEe3YoBpATLQRMFlLCwwGletJiwayro8rUuVc7sqJlcYWGxOJ2KQEICUKyNE4f4AF+/yBUlyuM5jMZjMiI63/eOzevRvt2rUDAFSrVg2XL192+3i7d+9GnTp1NO8/evQobrzxRiQmJkrb6tevjzNnziAzMxPx8Z79jfXV3+ai/J7j2IODYw8Ojj04OHYnAXGTJk3w5ZdfokyZMmjcuLHTeUD79+/3eiCZmZlISFBeVGJiIjIzM6X7ATjsk5CQIN3nqdTUTFgCkH4zmUsAMODqlUzk5kQBiEJGZi5yco2wLk1TOJ70a0YAjp29MzNykJ8XASAS167lICXFcc6m2WI9j0EQYREFXL6ciXLV4pGSkuHT68nJjQauzw/NycnHpZQ8ANbXJ7/AhJSUHJfHSLsWASAWubkFSEnJld1jPU5mZi5SUvRnjpOSEnx2nfkFcQCMMJksEIwibM2hcvPsx+qerKwoANZvNXLynD9P2bkxsL03rqRlIyXG2unZl9cpl5cXC7V/FvJzsxy35Rfgmt0YIguuoZTdfiZzhOo/NLl5BYi2WCAAsFgsSLU7VkxuDmz/tRcUmJHm5fVGFGTANgMyJycXmSkZiMvOQQkAFovZ4fyB5K/XM9QUh+s0GISAfcmqpVatWvjwww/Rvn177N69W8r4Xrx40ek8YDXbt2/H2rVrsWrVKs19tP5+2+7zNCD2xd/movye49iDg2MPDo49OIrL2F39bdYMiCdPniz9EZs8ebLfG2PEx8cjNTVVsS09PV0ag+1nRkYGypQpI+2TkZHh8R/bQLNVfdo31XKnK7S8y7T2eQRpX4uTjtXesl+H2HHdWtdsjZtCcQanvJhWPg/bl12mXa9D7LvzesOgNjdYde1gtaZa6tl0weUcYn92mfbdcYlCzZgxYzBs2DC8++676NWrF2rXrg0A+Prrr9GgQQPdx9m2bRumTJmCJUuWoF69epr7xcfHO3wxnZ6eLt1HREQUyjQD4t69e0u3+/Tp4/eB1KlTB5999hksFotUNv3HH39IZVrVq1dHdHQ0Dh8+jLZt2wIA/vnnH+Tk5Dgt5Qol8jnE0ja1mALaH9MFu/3U2IIso2Dt+eu/LtPKYE3RPVnnMWxzZC0W9Sg/mN1/bdfjuA6xtwcuvOkqIPZXMy8tbs0hVtlbvamWVkdb+Ts9WE21fHl8otDQtGlT7N69G5mZmShZsqS0/aGHHkJsrGPlkZq1a9dizpw5WLp0KW6//Xan+9apUwf//fcfMjIypEzxH3/8gRtuuIEBMRERhTyD612AX375Bb/88ovq9r179+o+mdlsRl5eHgoKrB+a8/LykJeXB4vFgnvuuQdmsxlLlixBfn4+Dh06hLVr16Jv374AgJiYGPTq1QsLFizApUuXcO3aNcyZMwft2rVDlSpVdI8hmNS6TMu3S0RBM/ixf6wa20MNgvJ3fxLt8m96O1ubrj8o5DPEsu3eBqbyh7vqMh3wZZc0zqG27JJ6xlVtHWKt+dYiCl95V9lb/yy7VPiFSyi+A4k8ZzQaERMTg7/++gvHjx9HXl4ebrjhBpQtW9blY1esWIG5c+finXfecRkMA0BycjKqVauGOXPmIDs7GydOnMDbb78t/f0mIiIKZboC4tdee00qf5LLzMzEa6+9pvtkmzZtQoMGDaSukw0aNECDBg2wd+9exMfH4+2338b333+P5ORkPPvssxg2bBi6dOkiPX7ChAm49dZb0a1bN7Rv3x7R0dGYPXu27vMHmy1IdNVl2r78WE6wW7JJ/TzWn7aA2F+BlP35PSuZdr5/MJddssjG5ssMsSK41siM25hCJENs0JkhVi+Z1ujUJcpKplVLJQq3+aRSQFTJONu2BbMencjHTCYTZs2ahaZNm6Jnz57o0aMHmjZtitmzZ0tfSDszffp0ZGZmYsCAAWjcuLH0v3PnzgEAzp07h8aNG2Pfvn0ArMH30qVLcfbsWbRs2RL9+vVD9+7d2WGaiIiKBF1dpk+cOCHNQZK75ZZbcOLECd0n69Onj9Py67p16+Ljjz/WvD8mJgavvvoqXn31Vd3nDCVSybQgulyHWCtzaJDNP9YiL5n2J0X+TlQuIaQ3vLCNVSuYDmaYIpVM24/D2wyx7PEuM8SKMnT/fz3gn5Jp18suuZ7f66+SaftMMVHRN2fOHGzbtg1Tp06VMrz79u3DvHnzIIoixo0b5/Txx44dc3p/5cqVceDAAcW2qlWr4p133vFu4EREREGgKyCOjo5GSkoKqlatqth+8eJFaWkHck1RMi1liB0/iluDS/VjyFP6Wh/h5YG3Pz/qO22qpfMYZotjUy3lcYKXI5aKaUW7rK7Xxy28Jtcl04X7BiJDrPXCqZVMqz8TjgGxVlOt66tXa55Y8GtAbD93mSXTFD62bt2KGTNmSMstAdYll8qUKYNJkya5DIiJiIiKE10l061bt8bcuXNx7do1aVtaWhrmzZuH1q1b+21w4UbqMi3fBsdAx3nJtKi7ZDpCcL6ft+wzxIoAWec5bSXBWsF0MCtZ5RlvT8rB9Z1D//3BLZnW22XarLKf6wyxekDq26Za8iy04BCIM0NM4SMjI8PhC2zAmsVVm/5ERERUnOkKiMeNG4fLly+jQ4cO6NevH/r164e77roLly9f5jfNbijM3MqyX6JyaR0bZyXT9sezZ/uoL80hdnegOjlkiKH8XQ9b0yitwC8UwhTHDL53WWt3SqZNfgrEtWiWTKtliFUG5F7JdGCXXVJ/hzpr6kVUNNWpUwcrV6502L5ixYoisyoDERFRoOgqmS5fvjw2bdqELVu24MiRIwCsyzJ1795d9xIOpFUyDRTYfRa3n48rpycUs2+q5a+o0lmGWG82U62pVqCzolrk85t9GaQryq9dlkzLbgciINYqmdbbVEu1ZFp72SVBd4bWFxev9u0CM8QUfsaOHYunn34aP/30Exo1agQAOHjwIC5duoTly5cHd3BEREQhRldADACxsbF48MEH/TmWsCdliCHrFI3CpYfk+zkLflw11bI91Cgof/c1+/ydJ0GjFHRqHDeY5KGSO0Gsy+PKM8Quukyb1WI4P9IsmVbL/KrN+1XpMq1ViCI4XRfY/vi+zhCzZJrCV9OmTbFjxw6sWbMG//77LwCgc+fOaNeuHT744AMkJycHeYREREShQ3dA/N1332HNmjU4ffo03nnnHVSqVAlr167FDTfcgBYtWvhzjGFDmkNst3SSyS4ocjaH2NomS3k8e7bsciCXXbIvmdYbX9jKxUWN+brBzBAXJhEFiD6MRt3LEMueF5+NwH0RWhli0YSSGX1gNtyMzPh5UF+H2FnJtOxYasd3er+b1JZdYlMtClMVKlTA888/r9h29OhR7Ny5M0gjIiIiCk265hBv3rwZI0eOxI033ogzZ87AZLJ+6DWbzXj77bf9OsBwIs3tBaSoVjVDLGoHSmZRcFo2LY/bDH7OENufV1H2rPNxJpU5xJ405/IHKVQSfZshlnNVBh3wplpulEwLsCDCtA9RBd8iNs/274BKQCxolEzLGnC5XHbJJ28EecMv+7nDzBATERERFUe6AuK3334b06ZNw4QJE2A0Fn64bdSokTSnmFxTyxBDdAyIAe1AyVVZcmFZtnxH/yxdZH9+Tzox267TohFMBzNMsY1JhPJ6UnMFnEz3/Dl1Z661KYABsShqP98GjQyx0XJKsUUQ3ZlDrPJNkOb93l+8oHI8we4nERERERUvugLi//77T2rMIRcXF4fMzExfjylsac4hvn5HpEGUtmkFPxZR2ZBL7X7Auo9BsP4SqC7T8rJnveGFyy7TIRCn2JeDH08z4v6t8UjN8Swoll+Sy3WIFc+F/9Zk/uGsEZ02lMDBFPXyZvV1iEUYLOfsthXY7SEAGgGxAPslmuyfDH/OIbYdNsTebEREREQUULq7TJ88eRJVqlRRbN+7dy+qVavml4GFI/ncXkWXabP1lyiDteO0KKovxQQouw47+/yuCLr9NYdYflv0rAGUalMtMTTmzUoZYhGqWfZzWQLKxrr/5LoT5gWqy/Tz38U5vV99DrEFRsuZwl9FUSXIlb8T7QUvIBZUl1uSz9AnKnoGDx7s9P6srKwAjYSIiKjo0BUQP/jgg5g2bRqmTZsGADh//jz27duHOXPm4Nlnn/XrAMOFPEB0aKp1/b4IowiYBIcSXTmL6Pwju9bSTv5gH654Er6YpKZahdtCJUOsKJlWud/oYezkTsm02YOsuz9oZojN/8l+LwAcSqbdCYgtkGeTBdkT5ZuSZneaeBEVPaVLl3Z5/w033BCg0RARERUNugLip556CpmZmXjiiSeQl5eHAQMGICoqCk888QQeeeQRf48xLKjO7b3ONoc48noBu322Vc5VxlQqmUYAcl12JdPKsmd9Z1crmfZ1XtBbWk3OjLomHLg6tv5ll4LZcdsoqC27ZIHRckL2ez4c1yE2OGmqZf9u9nOGWHE+tWZayoCcqKh57bXXgj0EIiKiIsdlQGwymfDjjz/i8ccfx+DBg/H3339DFEXUrFkTJUqUCMQYw4I8cwvYlUzbBcTy/dWOoyfzK8gyxH5bdkl+WyNodEW1qVYRyRBHeJohlt12OYdYFsMFNyBWyRCLZkXJtCDmq6xDLEDUbFXgqmTa1wXzam+sUPv6hYiIiIgCyWWOKyIiAsOHD0dWVhZiY2Nx2223oUGDBgyG3WQf2KmtQ6wnIJYvu6QWLKpliINRMq03eJMCYo3HWoI4p1MKmUT159oXJdOuAv5QyRCrzSE2Ws5BQJ5sSwEcl10SoPXPjONSS84yxt5fvFqXabt3ntfnICIiIqKiRVfRZ506dXDq1CnXO5Im28dvtQyxrWQ6QtZlWjNzKMsQuzqPdA4/BVLysmj7DLHeU9quU7NDdRCDQNuYtDLEHh9XdttVCBYqAbEtQ5wdMxL5Ea0AAAJyFPvE5S5FbN57do/U7jIdzKZa6iXTzBATERERFTe6AuLhw4dj5syZ+PLLL3H+/HmkpaUp/keuOZRMX98uioUl01GyOcRqwU+Nkmbcc2PhHE3VtkC2DLHg/wyxcg6xoAy89WaIXSy7FMycnZRD1MgQezo2vZl06/tA0LWvv9kCYlPErciMX6i6T1zO6ypbDdD+Z0atqZacPwNilkwTERERkc6mWs888wwAa2AsCPKsoAhBEHDkyBH/jC6M2H/UlmeIbZ2EIwyF2+ybUnWsVoDXWufaHdMxVWz7yB/oZZcgehbImlW6TNvPTQ4WVxlvjwNUnVlf+yqBYJaPR0jNsqKczAlWo10ybd9US4Bo9zwHOkPMkmkiIiKi4kZXQLxixQp/jyPsaWWIC67PHzYKonSfCEHRTAlQlklLnapVYgRRdp5AL7skD9j0BrK269RawziYAbE8h+jLcejNENsHxMF8LmwZYhFRcKd/uQgBELTmENtliEWL3aFdLZPkLsfjyecVOwbkRERERBTuXAbEoiiifPnyMJlMqF69OiIidMXQZEea23v9Z2FAbP0ZYVDubB8oye+WB7rfnzGiVmkLKpa4Pv/4esZVEET/Z4jtMqhaWV5nzCqxvSdzkf3Bdj0WUYBFcByJpxlivXlP+y9FXHWk9iepqZYQCbcW9BIE1UoGq8AuuySIhQG4oPi6w3ZTDMBaZUREREQUSpxGt2fOnMHQoUNx/PhxAEClSpWwcOFC1KtXLyCDCyfyub3WG9YfBdc/o0cYrEEsoN5US62R1u7zRnx9OgYAsK9fBgC7kmk/Z4jl7NdO1p0hloJO+WNDY96sq9JtjwNiRcm0dgQWShniCEWG2J2SaQP0N9VyUrLsk4tXKZlWHJcl00RERETFjdNPtnPnzkVeXh5mz56N+fPnIykpCS+//HKgxhZW5MshyX8WSEsuiYomWA4ZYkXJtNUfqY6BhqJk2m6brznk87zIEIdKIy05V5lqz6cQK4NgzSW2LPr2CwTbmEWhBNxLozqbQ+y8y7Tg4wyxesaZTbWIiIiIijOnGeJ9+/Zh3rx5aNasGQCgQYMGaN++PXJzcxETExOQAYYLqWRamkNs3SIvmZYHsPbBj6ByW62EVpTtY/BzhliZ6dReS9gZW9CnVTId1CDQRSbXV2OziMovPGwcmmoF8blYf3E8bk66DaaIZBgs5918tM45xPY8aVvulKt1iBkQExERERU3TjPEly9fRo0aNaTfK1asiJiYGFy+fNnvAws38rm91p/W7fm2gNiuCZaekmlnZbzy/UUnZbnesA9XPMlE265Ts6nW9Z9ZBcCsvdE4fNmdcl3vuLocUQTOZgqYfyAaV3LdaDSlsxTasct08PyR1RZZJaYCghHulUy7sw6x/RUqG155T3Z86UlnhpiIiIioOHP6yVYQBBgMBodtYjAnMxZRWiXTJrOtZNp+f2WAZZA3dbp+l7MMsQHKOcn+YB9KeNIMyyxN5ZTNG5Yf9/qBlh2KxtrjUXh8ZwkPRuoZVxlZEcCQr+Kw8kgUpuzWXzFhf1itQDeU5hArBq327Yy0WwlklJgv22KAqNFl2jEg9m9TLa5DTERERET2nJZMi6KIu+66S7H2cHZ2Nu69917Ftv379/tvhGHCvmTaprBkWtkV2j4YUnSZvv5TrYxX3rxLPifZL+xiCU9KndWbajme4nRm4DLDellE4FyWdVzHruofn31gqz2H2O53P2X69bCf3avFbKiIgojb7fbVem7sj2rx6zrEgqjSVIsBMREREVGx5jQgfu211wI1jrBn32XaoWTaoCyZdphDrNJUSy2QkmeipTnEAWiqJar8roe07JJGMG27bR8cBoLLDLEsQHWSNHV8nM7zmEIoQ6x8bZ0E/0IMHGe8e9ZUK/AZ4lBp50ZEREREgeI0IO7du3egxhH25MshyX+aLIUl03q7TNuoBUhqmeiglEzrzGbammppNeSy5c2DsQav9vq5VvIxe5O71Qp07SsAgtlUS3luZyXT0XCsZ9DZVEt0ti6xbwNi4fpt+dxkASJzxERERETFTOjVoYYp+XJIgHzZJetPt7pMO5tDrFYy7adP+fZlzvIg2Kt1iGX3244T6IBYz/g9fV4dSqY19rPPigczIFZyliFWBsTWbLLW/s4CYPv7A5AhdgjIiYiIiCjcMSAOENvHbilDbCuZvp4kizCIiqhXT8m0WpCoWjLt2ZDdIsKz8EV1HWKV4DjQJdN6xq/oM+XFsS0W9UeHUpdpvcG/KMTAPkOsXWLtqst0IEqmuewSERERUXHGgDhA1JZDAoCC68GQfYbYWVMt+2PKyUumnc019gVnzaG8yhDLO05LGeLANpTS85zJ93E1h9hsAf5OM1gz6fbH0XiMye6OYM4hVg7FRcm0vKu0ICh/V3BnDrEvqDTV8vlax0RERERUlDAgDhApUL3+s3AOsfVnhGA/h1gZdKgFXKoBsXy9Yz/HkPalzV4tuyTbphYgBmMOsSvufNHw0V+ReHh7CXz+X4TuLtP224P5HCjnhPumqZbj2sL+baql7DLNplpERERExIA4YFx1mY40ik67TMubZBXu5xjxypt3+XsOsX0o4dmyS9ebaqlkheW3A10yrWf87jyvF68vz3QpWyUM1AqI7V7f0Fn+23mGWPm+dDaH2J59HtqPJdNScMwMMREREVFxptlletGiRboPMnz4cJ8MJpzJ5/bKfxbIMsQF17eplUzb59y0yJt3+XsOsbKJlqC6frAr8kBXFK3BvtpxAp0d1RUQy267SsbbjmeB4BDYal2b/RiCmb/U3WVaZQ5xXlRPxGeNR0FkK0QVfOnkLHYX7PNyZs4hJiIiIiIlzYD4888/V/x+9uxZ5Obmonz58gCAS5cuISYmBlWqVGFArIPUVMsuQ2wyF84hltPTVMvpeWT7Bao7sScBm3ytXbNo/WJAEaIEqcu0Huol68DMvdGonmhB3zoFhfvK7tc7U9YhIA7wPGo5RWiqOScYDl2mAQGioSwulzkHQbyMcldv0X6owzvI7tsSr6m9Q1kyTURERFScaQbEW7ZskW6vW7cOGzduxKxZs1C5cmUAwLlz5zB+/Hj06NHD/6MMA7ZsqkFQfrCXSqYNUJRMOzTVEvQFBFrNu/xBkckVlb/rDcLVGnGpZYhNGp2Y/cXtDPH14f2dZsC6v6MAQBEQ267JotZUS2+GOKhziOW/ubsOMQDBCHgR0DsWmntCpakWS6aJiIiIijVdk/veeustTJw4UQqGAaBy5cp48cUX8dZbb/ltcOFEu2TaliEWFXN+HeYQy247C3blzbv8XjJtd9ujplryINr2U20OcYBjFT2nU3SZvv4zx+R8X1F0PLjmHOJQCogVvzkrmdYIiF08zvrgYCy7VHhc3wTdRERERFSU6AqIU1NTkZub67A9Ly8PV69e9fmgwpFWybSNYtkl6OsyrXoeWYbY78su2d2WN4HSU+FqEZXXKc+i2p8j4OsQ62qqpdbUTP2FKpxD7Bja6Z5DHDIZYuU/G8omWjGKZZYcG2w5PYuT372/eHlJtu22wDnERERERMWaroC4ZcuWmDx5Mg4ePAiz2QyLxYKDBw/ipZdeQsuWLf09xrAgb3YFOD7xkQZIEawIwWlTLWcUmWgn3ah9wVnJtLsZVvnvijAohDPEak21NMufbY9Rm0OsUUocUgGx4jf78cYU7qe67JJefs4Qu1x2iQExERERUXGjOYdYbvr06Rg3bhwefvhhGI1GAIDFYkHr1q0xbdo0vw4wXMiXQ1LesLJmiAsjQqfLLjk5j1QyLSiPFwhq84GdMdnFP1IWVSWwDnQwqOd8avtozwe2vmoiHJ8breS3/bGCGa45m0MsCjEQxBzrbURD1CyZdjdD7OvsrVoDLfmbjU21iIiIiIoblwGxxWLBlStX8OabbyIlJQX//PMPAKBGjRq46aab/D7AcOGwDrHdB/wIQYQgq4t2yBCrrEPs7DxAsOcQu84Mai0rJCrWJLbeNgU4GnQ3Q2y7XK2AWNlUS/ncaGeVlfsFs9O28tT2JdOFGWLYL7skaAXHrs8SmDnEzs5PREREROHOZUAsCAJ69eqFbdu2oXr16qhevXoAhlX05JiAGKN2sCpvdgU4hgbyZZfsg0v549QeK2d7nCEAc4jtM8IOGU3RefBuH+DJ59k67BvgLtNqZcwCREUwq9ZUy1XHaLWmWnq7TPtk5SEPOS2ZFqKlHUQhCtol064yxEFoqqVaRk1ERERExYXLOcSCIOCmm27ClStXAjGeIulMhoA2nyTgxV0xmvvYL4fkuqmW8n7dTbWu/zTIFiIORIZYrVlUVgGcsg9ybUFoKHSZVgtSDXavgVqA6iq4VXueXD0mwiA63S8QlOe2yxAL0YW3YZchhs7SBjhWTQj+DIhFtWWXWDJNREREVNzoaqo1ZswYzJo1C0eOHIEYzDRViNpxMhIA8NXpSM19pJJpKH/aKAJi0ZuS6cI7db243rCLV+wDtjs/TcDsfdHQYl8GrciiQnk74F2mVbYZ7QNi2W29TbUsouPiPlr/RUkBsVSOHdgsuSa7N6CIWNl92gGxGOQMsQCzyvHYVIuIiIioONPVVGvkyJHIz89Hnz59YDQaERUVpbh///79fhlcURFhdL2PInOrItIgKjK69iW7eoPbwvOIUtwSsGWXVM7zyV9ReCE5T/XxmiXTKk21At5lWuV89l9EKEqmr9+nNU5RFuw7NNWy+z2zANj4d+GXKxEGAOZQWnbJjiJDHA3tMmk35xD7upxZcTyL3U8fnYOIiIiIihRdAfFLL73k73EUaRGC6w/S8rm9gPOSacBFhtjJB3e1OcT+SurbB8TunkazqZb8uFLJdIDnEKtss88QqwWorpZQ0tOZevbeGGw/KQ+IRTh/1f3PMXdrkNbwtW+qJWo20nLxGjp0efZfybSgkiEWWDJNREREVOzoCoh79+7t73EAALp164Zz585Jv1ssFuTm5mLRokXo2LEjateujejoaGnpJwD46KOPULt27YCMT0uEjvStfaDkqmTacdkl5wGBRbQGwYHsnWtf2uxuSa99GbSoEjTahyiungdf0TWHWO1xdr+fTBdwJNWoWGPZ1RziAynKkgOji+xzIDgG+rJSaHmGWIiGdlbY3WWX5MGqf5pq+X6eMlHRt23bNqxevRpHjx5FVlYWjh075nT/Dh06ICUlBRERhR8p5s2bh/bt2/t7qERERF7TFRDLpaSkoKBA2S2pcuXKPhnMtm3bFL+vWLECb731Ftq2bSttW758OZo3b+6T8/mKq4D4Wp6ylBlwDIgjDYUlzqpNteS3VeJOKSCWZYi1yrN9xSFD7GY8oTWH2Nl6xvZZ2kBymEOsKJm2/iIP8kURuH9rPAAgStYYy/6a7INN+/tt76/Qmr4vL1kozBBbS6YNst/dyBA7nUPsC2rl0QyIiewlJiaiX79+yM3NxcSJE3U9ZurUqejTp4+fR0ZEROR7ugLijIwMTJs2DZ999plDMAwAR44c8fnAAODDDz/E/fffj+ho7cZMoSDCyef8j45FYu6vMXiinnUerWbJtF2Js302UB7cqp3Ofskig2y/QM09dbfg1L7LtGrJtN1jAhUQq2eIraXL0j4qr4RJ9iTIj5FvKeyg7ZAhtvvd/n5bQBw6XaYBZdAr++/TIUOsdVsPh28O9Ldbd3k82221ztNExVubNm0AAD///HOQR0JEROR/ugLiWbNm4ejRo3jrrbfw7LPPYsaMGbh48SJWrFiBcePG+WVgu3fvxsmTJ/Hwww8rto8ePRoFBQWoXLky+vbtiwcffNDrc5UtG+/V40ulFN5OSkpQ3Hfhd+vPs7nWoCEqMgJJSQlItFvFqmzpWMSkWm8nJMbCXkJ8DJKSrJm4EnGOYyhbLgExEUBitvX3qKgIxFxP3CUkxKqOzVsGo/y2EbFx6t3FtM6bYvd76dLxSCoFlLhUuC0qKhJJSYXzaSONgsvr8MV15kQ5boswKgO6+PgY2X1GJCUlIFZ2UWXLOY4jOiYKkbnKbQmJcUhKAgrMQKQRMNjFjTGR1g3GiAjFtfn69XTGYDQoz3elsD4/JjYByLfeLlO2HBBRErj+/o6MNBY+TjRL29WULhULxMnOkW+UjgsASUnxgOBF7/R8g3Q8o0G0jivLAJiun790HBAbuOfUXiBfz2AqLtdZ3MyZMwczZ85E+fLl0bNnTzz++OOIjNReeUEPb/822xTl9xzHHhwce3Bw7MHBsesMiL///nvMmzcPycnJMBgMqFevHrp27YqkpCR8/PHH6Ny5s08GI/fhhx+iTZs2qFq1qrTt/fffR+PGjWEwGLBnzx6MGTMGJpMJ/fr18+pcqamZsHiRfsvJjACuLz2TkpKhuC8zOxpAFLJyTAAiYDKZkJKSg4z0wscAQHZGDvLyIgBEIj09BwUWZaYtKysXKSnW7Hx2dhQAZdb8UkoGYiOAtDQjgDiYCkzIzxMBROJaeg6AWIexectkigNgvH7bjIxMk8O4AMfnxCb1igFAicL9UjNRokBEenokcL1RU05eAS5dygVgfcMLEJGSkqk5pqSkBJ9cZ2qGAED5YUwQLZC/JtfSc6VxWsxmpKRkI+1a4dgvpmRI47bJzslHfr4B8v/0rqZlY/TvEdjwdyS29MyCxRKnOA8sZgBG5BVY3zu+vM5Czv9BMZssSEnJkn4vJwpSfjwn1yC9ky9fMUEUMpF0/feCAgvSbOMURWm7mrS0TBRkFV5TQl6BvF0XUlLSAUFHS3cNiXn50rvTbLHgSkoGSplMsH1kv3o1A6ZM3/43opfvX8/QVByu02AQfBbIFRUzZ85E3bp1ERMTg0OHDmHs2LFIS0vD2LFjvTqut3+bgaL9nuPYg4NjDw6OPTiKy9hd/W3WlW7JyMiQ5gknJCQgLS0NANCoUSMcOHBA10DccfHiRXz11VcOgW6LFi0QExODqKgotG3bFo8//jg2b97s8/O7Sz6H+O80A06mF5Z12rojF1yvxrTt6thlWlQ21bIrJza4mIppti+ZFqCYk+wP8uNaRMH9OcQOTbWulxXbncRkNy83ENROo6eplnxetNpYRbWSaRH49HgUzKKArScincwhDt4EasdLkZVMC/KwNQqaTbVcljtrN9XSGoVbVJdx4rxhIm81a9YM8fHxiIiIQJMmTTBixAhs2rQp2MMiIiLSRVdAXLVqVZw+fRoAULNmTWzbtg2iKOKLL75AyZIlfT6oTz75BBUrVlQ001JjMBgghkCnIXmg9PD2ElIjJaAwmLMFxLb4wGmXaah1mS68rRZWyNe5td/Pb8su2QVo7n6Rr2cdYgtkz50H5/CU2nmcN9Wy/tSaQyw9BoUhmPF6Iy75cdTmGAejy7R9V2fHa5E/GYVZW1GI9mKer/IbEsfO0t4+ASrzhX291jERwWA/74OIiCiE6fqr1adPH2nZhaeeegoff/wx6tevj9mzZ+Opp57y6YBMJhM++eQTPPTQQ4o/qn/88Qd+//135Ofnw2Qy4ccff8R7772Hbt26+fT8vmILcmwBkul6xlc7Q6zM6DqsQ6xx28a2f2E3a/9niOVE0YOmWvbdlWXHkh83Xx5kejQ696llY+1fM7WA1+RirPIu0waVQFctIA5Gl+kou8pkx9BUuZzStYSPcS1+paLjtPv8nCFW7TJdiOsQE1mZzWbk5eVJTTTz8vKQl5cHi8Xxv5GTJ09i79690v2HDh3CggULQvZvMxERkT1dc4gff/xx6XaLFi3w2Wef4fDhw7jxxht9vgbwV199hbS0NNx///2K7RcvXsScOXNw4cIFGI1GVK5cGSNHjkTfvn19en5PqH1MN4vWztFmu8BYaykkedm12jrErpJu1gBOlB4nCIUZNn+V2iqWR4L7AZv9OsTqyy4J0pcJ9vf5k+cl087HKsrynkYBKLA7jtmituxS4ZJNgRJjBPLMTnYQDIUDFwzIj+qisaM7g7b/sO3rZZgKjyfo6mlOVDxt2rQJ48ePl35v0KABAOtSiFWrVkW3bt2wfPlyJCcnIz09Ha+++ipOnz4NQRBQoUIF3HfffRg0aFCwhk9EROQWt9chBqzrDvtq7WF7nTp1QqdOnRy2d+jQAR06dPDLOb2llSmMMBQGxAV2n+0dSqYFZc7NYdkl+WOdzCG2Bb8CxIDOIVYr83ZFq2Ta/rjy5y5QZcPqJdPaZcS2l0SeIc43O75Q8sfYSqEVJeIq5w3GskvRRhGKJaaclEyLLtcX1slxgWb7Hbw6vAB5hK82h5gBMRFgrQpztqawvHdIgwYNQqKXBxERkac0A+JFixbpPsjw4cN9MpiiylnprG2tXfsMsauSaccMceEGp3OIUXge+Zxkv7CLJdwNjHTNIRaBfFkcE0pNtRQBsa38WRYQq2VY1Uqm5Rl8s1rJtC1wdjlq34l2UTLtuohfXVbsCxDEbMTlqv374ioj7O2L7xj8KsukWTJNREREVNxoBsSff/654vezZ88iNzcX5cuXBwBcunQJMTExqFKlSrEPiNWCNGuZryjLEF/P3Go01ZIHsBaV4FKr1NrG9lFeUTItBVyursAzXmeIdZRMA4XPHeA479hf1J4zV68BoMwQ55ocHyDvMm0wWLOwipBMpVt3MEqmoyOUJ3N8PpRziPXKjpsEAIjNfUtH0yzfBcSCmAHBclW2hSXTREREROQkIN6yZYt0e926ddi4cSNmzZollUqfO3cO48ePR48ePfw/yhCnllcqkDLE1p+2QEmQMlNK8iZYFrWGTq7GYJchFuD/DLG7AfG/1wy4kisguYI1darZVEu2zSI6lpuLous51X+kGlAl3oJSjssi66J2KYIAdK1egO0nI6WxSfdd/ymfQ5yrliGWHduW+TXblYTbn9sYlJJp5e/OM8TOAmKtQRsA2D9B/guIy16pAQF5KsdiQExERERUnOlK7bz11luYOHGiYt5w5cqV8eKLL+Ktt97y2+CKCtUMsaj+U8oy2gV08iV91ObJygNAtWBQCohl5/H/skvK267O8+C2Ehj8VRzScq0j0y6Zls9PBQrs4iZX84hPZwh47PMSeGWP5x2P1YJPAcArLXMx4FZrYGWRvYhqc4hztDLE16/P9l6Ql1arBdGRUkAcuHWIrXOICzm+tgaN2/a0Xiy1L338VzKtDIblx5K/iVkyTURERFTc6AqIU1NTkZub67A9Ly8PV69eVXlE8eJ0DrFUMm39WVgyrXyQQSjsP2xS+VyuaKrlZAxSyTRkc1Sdjt5z9rk1Z4Fqao5j5tSxZNq6j+OyS3aZZBcXlJpjfbau5Pp2LUzbKArn/jruoyyZdrxf/l6xHSdX1nwr1+RYSBzh5Hz+4rs5xM4yxK72dbUusTdsx+I6xERERETFma6IoWXLlpg8eTIOHjwIs9kMi8WCgwcP4qWXXkLLli39PcaQp/Yx2jbvVWqqZbZ1f7ayn49qVJRMOx7PVYmwQ8m04HifP8nnxqo5nlb4VrPtp5khlh8Xjl8QuMoQ28+n9oTaY6WGaGr7XN9okm3LVesyjcLA1lYVIA+cc0wA7DLBwSmZts8Q21+LZ3OI1R8vncX5755+I6D6ONUCfc+OT0RERERFlq5ll6ZPn45x48bh4YcfhtFoTR1ZLBa0bt0a06ZN8+sAiwK1dX7tM8T2JdPOmmqpBXzyAFo9Q2xt4iWVTMN1EO0tRSYXzgO2v64WBk22/eyvU7S733Y7366M2FVgqNWcyx3OHqq2nFVhyXThk67WZVr+xUFhQFz4mBy1DLGtqZarQfuQqwyxKAuCRcGTgNh1hth10y29HF8IQXRsquXbDDQRERERFQX/b++84+Wo6v7/ObPl9pvGJTGFIGB6CDeFkFADiDRBQFoEFEjoIIIoopQgIBBABHwCSJH64BMQgyYgPxWUkhhAipAEaZIQIISbcuvWOb8/ZmfmzJkzs7N9N/f7fr3g7s5OOWdmbu5+5vMtgQTx4MGD8Zvf/AYfffQRPvzwQwDATjvthK9+9aslHVytEKSolhUy7bEPhyDW3Ws5HGWfHGJzLKwcOcTSa7/jvLfFVljmevI85Txoc79Jeb0s41I5zbmimosphIOGTKtyiHVBEGsZoRvLkkNstV2qqEMsrxHMIfYWmcrHOtL70glia1+cQqYJgiAIgiD6M4EEsclXv/pVEsEK/HKITWfYzI+1coglPaAJZaFTWb6X+wWbmsKl7DnE3F+AvqtwiOV5qpxdzt1VpoM6xIU8CFAdw3R0VSHTKndflUPMhbZKng6xdOxwFVSZdl1bxoQbIPeiWhya+z52XbBSCmJV2yUKmSYIgiAIguhvBBbEy5Ytw/Lly9HR0QFdd35xvPPOO4s+sFrCuw+xOyzYlA6+IdOqolpZwp/N41juYxlyiOV5e1VB1jnwcacmrcdd45LzoM3X+QriYodMh5ixVPWgwXzA4SiqpcghFrexi2oJ2yhDpo2f5RTEEVnjuo6drcxbFhyC2qQ0DjHzc4jJFSYIgiAIgujXBBLEN9xwAx588EHMnDkT22+/PVipk1NrDJVQsUOm1QWS5DMYypZDLLxWnX4uiUAxZLoc+IVM69zZc9iUPe4q086fxmvmDpnOCGovVMI6V1R54b5FtTKIgjjuUWVaziHuczjE7nGbOcQlc/oVO47KIdOuNcpRZbpIDjFXXAirH7j8+IUgCIIgCILoTwQSxEuWLMHNN9+Mgw8+uNTjqUlUX6PlolomkYy4cYdM2yuqq0yLxX/cWA6xGZoNXvKQaTm02cvB9Kom7VVUSxZo1VJUy3qYEbColpdD7AqZFuanDJnOrJetuna+qM6T7BC71ylDlemiJb+rQqEpZJogCIIgCIII+E1W13WMHz++1GOpWdROodl2ybk87HHGxbZLaR93EvCQEoqQabuNU2m8Ytlb85Iv8vkxx5risvOb+SktyzlkOnOGCpm3Xw6xb1GtLDnEjqJamf3EU6KIVhxXM49Xmuuommv2PsRiG63cc4hVsEoU1RL3Wc5GzwRBEARBEERVEEgQH3/88XjqqadKPZaaRekQe7igptunKqplu4zu/WWTQuZxrJDpLOMrBrIg9hKqrlzhzE/5YYEp+EQhy+Gu1lwph1iTrp24/+4kw5XL6/HK57aSVDrECkEsiuCUzlwPAEqdQ6zyReWQaV9K1HaptDnEKoeYBDFBEARBEER/I1DIdGdnJ/70pz/hpZdewtixYxGJRByf/+xnPyvJ4GoFv/Y7KSn/NeyRQyw6wKrQWFFAq3OIjYVcWMfKjyyZImaO10EFsZzvbK0nfW6+zlcQF2L4qba1imrBzOm1x7W2S8PaLqfIUzrExoYA7NxgeX5yznQ4c9xyFUcDgKhcZdo3ZDqfHOIgbZeyOcYB4Yo+xMqiWhQyTRAEQRAE0d8IJIjff/99jBs3DgCsPsQmVGDLv6iW3FrIFEHKKtNmyLSqyrTwujXqPqAsJjVW3rZLeg45xOZ7r9xiR24y3MIysEPsv5ovyhxiH4dYhcohVoVMq8KkRUruECv2K4f2u71acYV8QqZ9HGLOMye5WCHTqqJameM47hJyiAmCIAiCIPobgQTxQw89VOpx1DS6wu3KlkPsFzKdzSEeUKcQxIqQab9qyMWAS8LVS4DKua/mdl5VpmWhXYmQadW2cpXpbA50n7IPsUIQp/wfKpn3TKnkmnzdGLhV/M3EPdegRbVydIh5CgO37o90aBfIDagYeJ7nwOuJgzPz3d3wiiAIgiAIgtjWySf5j5DwC5n2yiGWcbZd8i+qNdBHEIsh0yijQ8zhLRC9nGDPolqS0O51OcT+AtIqMFbkiZvFrYI67yqhq8O/yrQKUxCXqsq0fJ4Yc1eZduvhoA6xxzE9HOKQ/hEi6TdQn3hccdR8c4iNX0adDcamgf8Sjs2lyVPINEEQBEEQRH8jkEMMACtWrMDSpUvx6aefIplMOj578MEHiz6wWsK3D7ErZNr46czA5EbOb2ahqqhWYEFshkxDkCmlElLSG5WQF8dmvYfaPVflFnPuFpbZZItXSHYuBKkynW3/KqHLue1DhoI6xJkc4lIVQZbnygBEZUGct0PshbqZNhf/SeKJbIMIRiaHWNe2Qzq0i3BsHVRUiyAIgiAIon8T6Jvs73//e8yfPx89PT1YuXIlBg8ejM7OTqxatQq77LJLqcdY9Xg5xEZerVxUK5NDLCzWJG2QTWj5CWJTLIoCu2S+l+TkeumVnItqSYeQQ4+zhUKryiXlil/ItIkq11sk7pFDbO+Pe64nUuocYlU7p7AcMu0SsMznM+eWSpSVqTkY7IdtjG8Jtq+smE8mzEphVtC71OqJHGKCIAiCIIj+RiBBfN999+GKK67ALbfcgnA4jIsvvhh/+MMfcMQRR6CxsbHUY6x6VF/Tk7q66rLKIZZzU5VFtYQNlEW1JIdYzCEulbMoC9fAbZc8HFxVyHQ+OcRpq32T/3q5YlWZDuoQe/UhlkKmsx/X+MnBSnIt5Xkw5q4yDcj3kfhPh89EPAfs3oaBAzxmH6Hogth0n4WQaXKICYIgCIIg+jWBBPG6deswa9YsAEA0GkVPTw8A4Dvf+Q6efPLJ0o2uRlAJr5SuDn32FcQ+Qku8UHIFYHEMcsGmUuKQEtxHEMvvrRxi9XJZQ/Vl9ExdpjduVofY2k/+JyFYyLT//mUhb5LrNdKYLcZLkUcs75LBnUPsXk/sA1akkGnoYDxur1EkQcwyVaa5yyGmkGmCIAiCIIj+TqBvsgMHDrRE8NChQ/Hee+8BALZs2YJYLOa3ab9A9TU6xdXixRKzgh4ISQ5xQhFCy5j/l3UzL9cM0WblaLskhUx7CmK5mnTmpzuHmDk+R2affUljeVMkmCA2z3shDrFqU9nJVz3wEMnWdikUUEeKLbRKETatyiEWq0xryhzmQqtMe4VM23nDrOh9iDXpJ4fjbuMUMk0QBEEQBNHfCFRUa/r06XjppZcwduxYHHLIIbjmmmvw8ssvY/ny5dhzzz1LPcaqR+0QM7UgzogLscWL7BC/+aXhZA2s07ElrjnWyTYGc69MyOwsWe6pPAaP9eQ8aqvtUmZ5RONGiLlifSOHOCOIw8AmBHeIC+pDrHB/5SrT2QSxCl3YtxwyXR/iShGtMV5eQcyAwfX2Qjvj1iZ4H2IvvNouxRXL7aPmR+ZCsWwOMUEQBEEQBNHfCCSIL7/8csTjxhfVM888E6FQCP/6179wyCGH4Oyzzy7pAGsBr6JaaV1VrMj4KX4iC6OejCO678gUlnwQda1v7IdbvY4BRZXpcrRdknJ9cw2ZNn+GNaMqtypkmnNmhUw3RoKFDRejD7FqU9nJzyd8mfvkEDdHOWJ96pZbYQbE4Q4zLwaqXQ5v5vjZ7jG0Neq46O8NxnqeDnEeRbWU23AwFF8QM4+iWoxyiAmCIAiCIPo9gQTxwIEDrdeapuGMM84o1XhqEpVRmNT9Q6adVabdrnFE45g5LI0lH7jXB4DmCMeWuFsQmz8ZbCfzwVVRnDINaAk4n6AUWlTLdFgjGtAHtZBN6obbHmIcdRk9ky03uBiC2K/KtBm+ns/+xZBpTQqDb4pwfNmnPm65Q6YB4Fu7JK3jp7ksFwtru6SuTF0qhzid2dr4544zDYzD9STLHaJNEARBEARBbOsE+iY7fvx4dHR0uJZv3rwZ48ePL/qgag05JBgorKgWAEzdPm3lzIrrmDRH5DEYP62QaSY6mQzXveg7hbxwF9VSC1WvatLmcjNfVZ4DAPRm3PL6cPDCUlb7pqI7xMZSO2Q696Jdoicp5xA3eTye0gCEMudIFXVQKPJ5kh++qEKmnW2XiplDXAJBzM1y36qQafGXlBxigiAIgiCI/kYgQcw9lEUikUAkElF+1p9Qh0z75xCLyMWaAGBks+7b2KZFar2kCpnuEMJv39+kHnshyPNOW8fmvuuZBcBsQexcT3QsezJapiHMAxcJk3sy54PqmhYjZFoXFLErZDqi3qGm2euWosq0l0NsvTfPex5FtVguIdNcB+MJ93J7BZ/P/MiETDNVUS0KmSYIgiAIgujP+IZM33///QAAxhj+93//F01NTdZn6XQar776KnbaaafSjrAGUH2NTurqfsJhqTCT+FqUCK11XAqrdu5nUJ1aEIsh01Pa0njsP8b7nQb5zaBwxAjUEHOKLFnEWUW1dLOolvHeLqplr2u6sI3h4P1/Tae62A6xeXxrHPkU1eJMCJl2ftak6C8NZBzikoZMOwfiEsSZn049HLTtkseAFdswcHB4V633Ftf+uHOITXTpJqGQaYIgCIIgiP6GryB+6KGHABgO8eOPPw5Ns7/ERiIRjBw5EgsWLCjtCGsArz7Eqj61EUUOseUUCstao9whmOQ9/Wh6DOc/14hPexjS3C0VGAMO3CGFjlgMN71Wj2QaefPqhhCe+iCCH82IOUK15ZDptCCIk8JnXjnEdlEtbu1D3q9JvegQl6GolrIPsRTunk+BKy7k4rodYvU2Yg5xSRxieYEcMq08737xC0HwKKpVwirT7j7Essgmh5ggCIIgCKK/4SuI//a3vwEATj75ZNxxxx0YMGBAWQZVa5hCYdZXUtitLY1Fb9X5FNUyC2jZqBzilqjTQZTzOke2cDx5RA8WrKjHHz+MWOLbFHJaZpudBxhiIFGA+XXWXxsBGCL9h9NtweLsQ8xsh1iDFaUqjsle18AUlOZDAnkOImLIdNAq0+aY5HMXBJXolnO98wqZBryrTHuFTDNbjFckZNpcz3OtfNouqbbRAfiFTOeL7BB79CEmh5ggCIIgCKLfEajKtOkUm6RSKcTjcUcIdX/G/Bq95/AURjYb71I68y2qJaIMmZYcYq8+xGahJ1fv3cz6pthMFeAQm6ztcg5erhRsirWwNFY5JNcqqpUZbFjKIVaJ0YYQcnaIzdey8AyCuqiW8dMOmc6jqJbgEMu51o1hL0HM7RziEmg2V1EteLz3zCEulkOM0jjEZlEtZv5zJ0p8cogJgiAIgiD6M77WzvLly7Fs2TLHsrvvvhvt7e2YMWMGTj/9dHR2dpZ0gLWAWMjKFHcpnqXKtCNkmruWtUadtXu9LpTLrRTGYhzPWJAsgpAyC1x5YQpRsyKyiXwe5CrT0ZDxwsohVuy7IWyfj6AOMVBAkK2yqJax0K4yXdh+ZaHe6BMyHbJaPRW/yrQ8DVeVaWUxsyB3p3srYa/KkfgK4jyTwpnVdknlEIs3CwligiAIgiCI/oavIL777ruxYcMG6/1bb72FW265BUceeSQuueQSvPvuu1i0aFHJB1nt6CpB7BUyrXCDmWJZS5Rb/W6NddRf1kOSa2qKG/PCRjIaoJAcYpOepNBqRzEcM+RZFnqeglguqmXl/rrFUn0Y0LRgotBRJqmIGkd28vMJXxaLj8muv7dDXNoc4qAOsfNBA1O+DnxMj7ZLKEXbJStkWsvsxRgvkxxi6kNMEARBEATR//AVxP/5z38wY8YM6/3TTz+N9vZ2XHPNNTj11FPx05/+1Moz7s+YX6MZREHMlEW1VDnEqpDebEW15OVpWUyaDnHmZyE5xCYOQWwdn1uhv2Y4r0sQexTVskKsA4RMNwo5xNlEriga8xXEaofY+FlIDrGjqJb029fol0NcyqJaropszgWFOcReBHeIucPRzQc5h1h8ikR9iAmCIAiCIPozvt9kOzs7MWTIEOv966+/jr333tt6P3nyZHzxxRelG12NYAo4xuw+w9naLqlaKonLWqJO3807h9g5Bmv9zJf7iBkyXQSHuDvhdogZc4tyWeilpFxbLq0fdjnE7mM3hO2bNZvIdRb7yg9lDrHZMivzXp5XEERP0u0Qq7dxFNUqgYmZvQ+x+aTCK284n5BpL4dYVVSrQEHMMyeNZQQx8wiZJkFMEARBEATR7/AVxG1tbVi7di0AIJFIYNWqVWhvb7c+7+npQTQaLe0IawBL4MAOUfYMmVaccVPUiqHFTWGnsPSqlGwu70ky9Cad4dtAkUOmhRxi2yG2EdsuQbHcRHaII1YotHPfIg05OcT2APJ1iLnC3bcfXGQc8XwdYo/z1OARMh0SQqZL0Yc42y6zVpnOpw+x6jhcB+NGH+JkeA/hk8IEMUMqszUV1SIIgiAIgiCc+AriffbZBwsXLsTy5cuxcOFCNDQ0YNq0adbn7777LnbYYYeSD7LaMcOUGeNWiHJK9yiqpcgXNsVOl+DAis6ruI6MufzOf9fhkCebXZWgzfzcQopq1ZtFrwSRKLqwTBJr4axFtYwNTLczajrE1ueKMYSDi0JxbHkLYsUyd5Xp3Pcrjke8piHGEQ251weM+8B6aFKColpyaL8rgtpcLn7ACgyZVopoDpZxiOPRw8UReowsKH5tl0gQEwRBEARB9Gd8v8lecMEFqKurw6mnnoonnngC11xzjcMRfuKJJzB79uySD7LaEYskWSHKOlM6iJGMuFSFTHcnncIkSA6xuE5PiuGF9WHH8mJUmW5S5LZaDrEg3FPCeRDxrjKdKaqV0Sl+OcR1IcEhzjLe0uUQO/O/5dzoQPuFkEMs5OpGNCCqqXcYclSZzv2Y2chWXNlqd+VY6hU+7dq7x3LVNhzI5BCnQztDZ4MAALo2PMu+suGRQwwdjAQxQRAEQRBEv8a3D/HgwYPxyCOPoKurC42NjQiFnBbWr371KzQ2NpZ0gLWAKVKcRbXczhvg5RAbOxAdYmO5+rVzHfWXeHN1yyEuIGS6OcrREXMuE0OmLXmhe1SZ9nAg7b7FTrGnEry5hA07cog5Qz5CR7WFnOutcojrQxxfadLxUafa7uWcgWf2Lp6niKYOpzeOx8uaQwwPF9pbOBcrh1gHy1SZ5ohi08B/Y7vBDPy/3wCwzmdfWeDOKtOC5+06PkEQBEEQBNG/8BXEJi0tLcrlAwcOLOZYahaxSFJYCFH2LaolLLNCppPOdYN4cF5C2RRt4SKETIvFnnRuHJMLDwHkqsvB2y45x8jBcNOrdXh1g/u2DGnBBbHu8ToXVOLPCpk2960QjudMiWN9t+YpiM3zBzivXSTkHTItPgwoSdulLJ9nqzKtbqGUDX+HGKweXGsFIi3WuixPQWz1IWZOh5hBfkpEDjFBEARBEER/I59vsoSEWMjKdGRTPEtRLcHZNYWWn0PsVVTL6wJaIdOZn4l09tBYL8RD98iiXfhQrhptLfcMmTZ+ii72Y/9RF2kLMbu9U7Y+xKJgLmrItFQhXJUjLvYMVuHVdimi2eH2Mkb1cuN1OdouyYdQl7QqRci00yG29+Dl6AbFvFCqolqq9QiCIAiCIIj+AgniIiAKCjNnN6UzT8EEZC+qZSznrnW89idjLg5pdv5pvmJK3G7e/2vEfzZrDmnCpPVCUhi3nGvLZUEcyp7nnItLKl6PfB8C+IVMmz9VOcRiCLlybIAVkiw66WHhYYpMqatMuwSx9N5yiMXzGrjtkhq1q8wBnmm7xOrEEdif54VZHj3kPDZ3OsQs35uFIAiCIAiCqFlIEBcRh0Ps0XbJRJQTpjA6daIhBr43IW7tz9q3zzGV+xfFljCmfBB1wgdbQ1iwot4RMi1XXc7Wh9g8L+nMcrPKdMKnr29Y8+65LONwiP1X9cQ3ZNpHmGdziHXBIRYfeIRD3FMQM2avq8pLL5SgOtArZNr3EYDnzu34cC44trZDXK/Yf54h09y7qJYTEsQEQRAEQRD9jaoSxLfffjvGjx+P9vZ267+LLrrI+nzVqlU44YQTMGXKFOy333548MEHKzhaGzFkOltRLRNVleljv5bEU0d049wpCdc6zKt4VgDnuNDWS7LwE8N+xSrTprDJ1ofYVVQrgGAPa24n2otihEyrNpOdb1WOuMacQte1X67uQxzRgGjIp8p0KYtqyWOU3lvXl6uWIq8+xJyJgtfenmVyiDkTQ+cLdYjNHGK5qJacQ0wh0wQBAEuXLsXcuXMxdepUjB07Nuv669atw+mnn4729nbMnj0bv/zlL8Ep4oIgCIKoEQIV1Son06dPx0MPPeRa3t3djXnz5mHu3Ll44IEHsHr1apxxxhnYfvvtcfDBB1dgpDbm12gGW+SkOfOt7OzIwBSqFw9vFsKkFevIyOJTtX8jN5UhqedXcVkWlTsO0B1VpmWDMHtRLWMFWRBnC5kO7hAz4bX/ut77cC+TQ6a5whnN6hDDWYTNxMghVm8j3ldlCZmWPg9pwP3pwzDl98uU2w/Cfp77DuFztKHV9/hmcasm3GQtG4LdrNcR6zhzfPeTjSbc5DjGYOwlfX4tmnBtQcfIm68eCuz9WGWOTRASra2tmDt3LmKxGH7605/6rptOp3HWWWdh6tSpuO2227BhwwbMmzcPra2tOP3008s0YoIgCILIn6pyiP149tlnoWkazjnnHNTV1WG33XbDsccei0cffbTSQ3P0IWbMziOO+7U6EsSQ7DyaBAmZ9hLKqpDpfB1iebNEGpZqypYzC7gFsZVDnFluFpNK+JyvEOOuatYAsPzTEH75rzqHc1qMHGL1GIyffr80jHlfE3M8uQpi8WFAOYpqyZw8PoGhjeSeEkR/Ye+998bhhx+OUaNGZV331Vdfxccff4xLLrkETU1N2GmnnTBv3ryq+NtMEARBEEGoOof47bffxh577IGGhgZMnToVF154IUaNGoU1a9ZgwoQJ0DRbNUyaNAmLFy8u+JhDhjQXtH0kE905cEAD2toMYZPSgXB9vWvdtjajhVWfEBHaUB9BW1vEtW5K2LytrQXNigLMrR5DH9BSj7Y2Ywd1EQB9QOvAZrQNCDQlB7LA07UIBm9njFfTmOvzujrnbVVXX+d439BYh7a2OkvcDWo1xsnC7nNgMnhQI5q7jdeNTfbczs9855oxOoqjxhmvo3X2fgYOakbbIN/pKWlYqx5DWxswKOn+zDpeaz22+ghMDvt8DR7YYC1vrAth2FB1e7O2tmY0ZlZtajbuMWO5ev1cael0vmeMOfZ9dhuA2U87V/rkKKD7D8brHd8E6nd1fr4mM8nQMOBrn7kP+vlZwJa7MgdsAngPMPhHwJb/AfRu4GudQCgzhv/OBGIrgdHLgYY9gMT7QGQHgKkrkrv44ifApuuB7a4FtrsM+GgyEH/b2N/Hs+z1hlwBtC0Its8S0FaxI5eXYt23RHWwZs0ajB49Gq2tdiTIpEmT8Mknn6C7uxvNzfn/fS30b7NJLd9zNPbKQGOvDDT2ykBjrzJB/I1vfANHH300hg8fji+++AI333wzTj31VCxZsgTd3d2ufsitra3o7u4u+LgdHd3QC4hFjcUaAITR1dmLjRvTCLNmAAwdnXEATjG4cWMXAGBzNwNg/LFPJZLYuDHm2u+WPnudTR1d6FNcrd6eCAC38O7u7sPGjUZ1XY03AdCwYWMPGhK5O33JlLH9JdNiWPhaPbb2pfDll30AWgQL1lbFyUQK4q3V2ZMAhDY6Xd1xfPFFAmluXM94bwxAPXpizu0c8+nsRawvDCCKzu44Nm7MVCOGsY//fhHDxiFJtLW1oDeWhBlo++WmbjSrykFnobs7Cvnamde3c6sGoEm9XVcfYr2aa1sTnSNzrzF0d/UBMJQuT6ewcWOfNR+RzR1dSCXqAUSweatxXdvaWqx7qVC2bA1b4wCM8W3c6P971ZrQrRlu2tyLdNg5FlPc6bqODsU4m2JhNJrrIAQNQG9vDA16DAzAxo4EwLrQ1taCZEpHBMDmzd1gm57CwK4jkYjMwdbWJYHm19Tbh0YA3b0p9G3swqAURxjA5s1dEJ+V9PTG0Fukc5orxbye1Ux/mKemsaIJuVrA62+z+VkhgrjQv81Abd9zNPbKQGOvDDT2ytBfxp7tb3NVhUyPGTMGI0aMAGMMQ4cOxbXXXouNGzfi9ddfR3Nzs0v8dnZ2FvTHtliYEtMMgW0IG3/At8RzK6rlWsfjtUjwHGJ1m6AgmPPbvtHYQV+KWWG2YlEtL1w5xLDDdMX+wn4h3WGhfZQqDNorTJrnWZXZr8q03x6z5RADziJsJnLvZhGxynS2Hsz5kN/3zaBtl7yKajUI78zt02BWiyQxWsA+Vn3cCAmIJp8LOE5jvwbOKtOMqkwTRMF4/W02PyMIgiCIaqeqBLEMYwyMMXDOMW7cOKxatQq6bn+JfeeddzBu3LgKjtBAFk8jW4wxfrQ1pFjbwCEnAlSKDpIr7LVtoVWmTcHUGDFexFLM6qVrFNWyTwBTiApVleq0IArNsSbTPm2XhNxcVR6tLpxR8fN8c25Vp8oU5H45whpzfm4+jHDsW9GvWbWefVxbjOf7UMMP+f4NdoiggtiLRuG18XvCeCxz/DrpJIt1zPvyOJYpiLXMXjRpuQkJYoLIlXHjxuHjjz9GV5f9lP6dd97ByJEjSRATBEEQNUFVCeJly5Zh06ZNAICOjg5cfvnlGDx4MNrb23HQQQchnU5j0aJFSCQSeOutt7B48WKceOKJFR61u0jS6Iwg/nCr9+kVv+97uryCYMq5D7Hw2hLEfkW+fDAFXFPYFMSCdGDcJe5lx9FdZdoWqiFBQPpWmda4f6VlT4fYe59+qLaTq0yrkB1iVaEsce5+64n7LGuV6QDH4OIdmVfbJdEhzghiZAQxk1MABEHMe7MPzrV1sD7Eqoc5BNEfSafTiMfjSCaNggnxeBzxeNzxQNpk+vTp2GGHHbBw4UL09vbio48+wj333FMVf5sJgiAIIghVJYifeuopHHrooZgyZQq+9a1vIR6P4/7770dzczOam5txzz334B//+AemT5+O888/H+eeey4OOeSQSg/bFQI7utX40tCd9AmZFl8X4BB7CmJHOK4ZkpxfuK3tEBs/+1LM0XbJUQ1bcYiUdFwddoXpkGbfhH7pzSFBaCpDpoXXoiucb21kZch0ZqBZQ6aF9yqhm2vItCiIS9GHuHAZmPt9xZntEHNTqHLT/ZWLZZnRCBzIQxCDm32Izfx0zbHcXo8qaRMEACxZsgS77rqr1TZp1113xa677opXXnkFn376Kdrb2/Hqq68CAEKhEO68806sX78es2fPxty5c3H44YdTyyWCIAiiZqiqolp33nmn7+cTJkzA7373uzKNJjudCeCPH0bQEct8YZcEsR+ihPBsuyS+zlEQFzNk2hSYjaZDnLYFo9x2SWNugaUKmTZDf8OC0E35hEyLwlkZMu2RN5y3Q6wag5lD7KP/jAcE9tbhTA9o576ZY3+Af8i06DqXo+1SriHTqn7M2fbmcIiZBnAhZJrJBclEh7iQkGk5hYFCpglCxdFHH42jjz7a8/PXX3/d8X7UqFG49957Sz0sgiAIgigJVSWIK8U/Pw9h7VaGY77m008nQ0oH+lJASxT4+Yp6PPeJXfzHFGxmyLQfQYpqORxij/2I64QYR1rM7c1guo9y6HJQTIFZHzYKYCV1ZglaWRz6hUxrjEPnDGnOrOJQIY3bOcTZHGLT2FPoFu7hCucbYqzazgqZ9tlOdLKB7KHQQdZjsN3pdNUU1dI8XgeDq3KIzZBpySHmjhziPBxiKqpFEARBEARBeFBVIdOVYtGbdfjFK/XoSmRfd8GKesx5vAX/3arhpU+dzxNMcTi8mXu6viq8cogDhUwLX+Kbo0JxK1FshQoLmRZzXhsymqIvUwyYwTl+lUNsCuKwEPKc1u31g+QQhzXu6xCLi0SBV8yc20AOMeNSUS2f/QmfeYVMa5n9hawq0wEHmwOVrjLNMxWlGc8U5fHNIc7dITZziK3QbCvnWb7hKGSaIAiCIAiiv0GCGEAsE6ob9wnZNXn6v8aX9/veiboq/poCNqwBo7K4xHKYsXIdq4iTfzitSXNYvTxSoEMs5rzWh+3WSyaisNPgdnBTlhts708U2bZD7H3+jdDqTNslhV/OPURwvvpRJRJNUZq1qJbw3nwYocJZZVq9jnkoK2S6BJpNl0O6A520wgQxxBxibTtjL+m1xnvWKK9s7SufolpWrrAlhM39Ucg0QRAEQRBEf4cEMWzxk0t+5sufhVw9YcWT+dUBWQRxgJDpUEYEBg27bRIdYmGdYrVdMgSx8frdTZkwVyY5xBp3icm07BBDyiFG9vGFNH9R6OUQ5xtirLoVzJBtv18ad9sl/3Xt9dQ3n3luraJa1dJ2iQUNmc7uEOusDQAQ4hsc74WDWfvKL4fY7G3sLKoVTr0daKwEQRAEQRDEtgvlEEMQxAEE44A6HVvjGrbEFSJAEDi7DNDx3Drv/QRxiMMa8MNpcUQDiqrmiDpkOlxEQdyQcYivWWmEtRr5rc72UJ4h05kCUzqXqkxnnNKET1so0UlWubeeDnGBbZcYuLsIlp9jD7lYlvcxQoprJMMkQVyWtkuBtmIer4Mh5hDrGYfY670oiJFXDrF54ztziJv6rvNYjyAIgiAIgugvkCCGLdiCuG91fuJUkBI7Dyw8ZBoAjhvjX+jL4RBHhOXCWApuu2TtE6iXCvV2xBhaBGdaY6qQaeOnGDJtFdVidlEtv2rFDkHsM0Zz/6rXuWBupjF332A/P5S5HGK/kGlhPbkAsrSOXVTL5+B5kt8uxQT3PIpqiQ6xJIC5l0PMudUrWC685Ycrh9jzPiOHmCAIgiAIor9BIdOwxVkQseHnsoridJeBPnYn4HAZcynA5XdML4c41xziT7oZOoUCYyqH2P6MBSiqxRzjEHOI5RBjABhUp+Oa2X1oEuYjVqPO6hCLyxXzC4IuiWBzrOJPFWKLJKDwkGkmHbMcVaaDuOpc+KeD51NlWswhZkOc45EdYusGsQfmzjP2O5izyrT3eEkQEwRBEARB9DdIEAukAzioKZ91RGE3stn/y3VQhzgbnoJYWCeXHOKOPoZvPdWM/R9vAWCII/OBgZhDLCKLRjm3Wq4yrQvLxP7CJtOHpnHwjilX6yg/QexwhYVrlL9DbM/ZGkOAKtNyUS2vUGhACpn2ySM3fhoTKUlRrRJUme6rm2/8rD9bubWjyjSLQmcD7fH4hkybrxoQHLOolr9DzDiFTBMEQRAEQfQ3SBALFNMh9hNCgFNUebVdCoJ4GNFRVbmPfmLe5OMu58DNPTIY7X/qparJJ45NOKtMK0KmrZDjzDi44BCHFQ6xFZosCUZfh1gQOcXoQ8xVDrEWsMq04PhHfapMi+t5hUyzzDrlzCEOhn8OcXfTjdg04CX0NvzYY3tR0DLogkvsLqplrpUS3tQFH6qrDzE5xARBEARBEIQBCWKBIMLATxDLsuDMyXG0RNQ7LZ5DbO+/WcghztchlscihksDzpDpW/ftxcXT4sH7EIsh06ZDzNwPBMz1xMW5FNXyKrCVC2bIuCbNTR6XjAb5YYTPugEeoMgPB0qRQ5xfUS1xwIozwkJIhyd75xcz+wkA4wlwTRDEmjqHmPHuQCNzHSojpCmHmCAIgiAIgpAhQSyQLcfWcDa95ZAsJudPTuAvx3Q7nFsTh79WpJDpJo8c4pAgiJ9bF8Y/PvGwI+HOZ5YFsRgyvV0Dd22jwS2wRDcYMNxcq6iWxt0OccaJZWKetWYXCjO39RK+6QIF8ftbNCz9yHi6MG2o7UoGC5nmygrfMgxc6eLLucTmKuUsqlXcPsRBiEFndpg09xTEXcKyLDn6IlyqMu15AUkQEwRBEARB9DdIEAtkExvZBLPqa3ZIA47cyagUfciOSeXKhYRMi9/tsxXV6ksyXPJCAy76h3dBolwcYksQiyHTGvcsqmWKw7RuV56Wi1AB9vkQ9yOup+obnRJeO9xi5M4ja6JIc4Zvfy2BiUPsi24V1fLZVs4h9iuWpXKS7zuoF3sNT2H2VwwhXo4+xHLOdzCKJ4gZj0EXHWKpyFbBgjhgDjEJYoIgCIIgiP4HCWKBbMIgW8ixl/F0/m5x/Hr/XvxsZsxeV/i8kJBpUUw7coiFdUxR1pW0V/YqziQORawGbR5HLP40qM6Z32oe19V2ydGH2JAdomss34SWIJauhyyIRfdXfFhRqEO8NW783GNYWnmd/Bxid9slj/WgXm/8YB237teH0a2641imC5+fePVHvl5+7a9s7HV4Hm2XHHvicfCMQ6yzgQBztlTiliDuFBYGF8TMlUPsNT8qqkUQBEEQBNHfIEEskM19yyaIvYRtJATMHJZGnRCp7MyPzd+ZcjjEUfVyU2x1JuyFKY9DigIyqdtiydxfb8reh+kMZ8shlkW1I4dYs0OkTcIe4cFyHq2XIBY3k0V1EMx+zZEQVzr5fg8w5Jxo3xxi4bXsJMvOsHnMoK2zciG/XfoX1cqNPsshFkOn5f2LDjHLwyHmVFSLIAiCIAiCkCBBLJBNbGSr0pzLyWSSiMwXUXyJFaBFMWmKsi6ht7CXuE8JAjKZdovZ7qR7sK4q0/I+VUW1hP3KolFcT8Q8T+bilEMQC+636BC7RpudREZrRTU4JmNeM7/LJTvEYc3IF1at51dUyyyWZq7jdU4K5Z0ODQ+8E82+ooTTFS7cITbDpN35w/b+888hNvPAzT7EFDJNEARBEARBGCi6yvZfsomN7CHTwb9QFytkWtw0KjjQSUEvmKHKDofYYy5iKHVCZ9b+TYEWVsxRXGb0IXZ+LucQGyHTdlGtqFTjyw4Pdi73dYgdOcT2PPMRkLZDrBbUftdZrjId0oziWbLbzeAviGVnuFRVpr/756Y8tyxmDnEf0qGxAIBUaJznsTSHIM7lUUdm3UwOMeMJ5VqMQqYJgiAIgiD6HSSIBQotqpWvsC2kqFbIIarsCYiOadhyiJn0uXvCcsh0WBJk8yYn8MHWEE4ab4sKhwBk7vNku8G20DWFt8a8w4VlMWvnFmc+19UCX9wuH0FsO8Rcub3fdWZSTrRZDEwV/i0Ka/kc2ELYmaddiqJa+VFEQYwYUpHp2DRgBdKhr3oeq1g5xAw9HmtWzcklCIIgCIIgygQJYoF0lpDobCHTubRPEtctpO2SKKqigi5JCAJRlUPs5XaLgiuZBrSMe2sKtKGNHPcd1OvYRgyZZj4h0xFFyHRYETId8ggPZpYoZK6xFlUQZ/YVDalbEPnJP6Nfsr1RmHkLaL9+xbIzbAli3ZjTp11ABJWkeCHTZvhzOjzB43PzSUhCWJJ/DjHjvR7rkSAmCIIgCILob1AOsUDQolpi6yGRnHKIhdeFOMReoirpEMTGeONpZ36wipQUMm2+zSYCxdeuKtOm+BUFsW6vL4dMe+XLmg6zuX/xeqU9wqSD9dR1ksycp4iHQ+xfZdrZX1jVVgpwh0y7HgrIglizq0z/z5tRzLoPeGtjJX99Cy+q1dl8F9LajuhpXBDoWAxxYVkebZeyCWJOIdMEQRAEQRD9DRLEAkEFcWvUu7dsUJw5xPk7Uw5RJRTVSgputqrScdLD7RbPQSLt7kOsIuxwiN19iM1WQWI7JSuMWjNCk0XsPsTOg5rvsrVdcjjE3sP2xOEQKz73u8wanPdBSPMQxFJotcsh1uz9Ac6WUx93GUvXdtW2II7XnYhNg95COrRLlkOZN4TQxzufolrMCIghh5ggCIIgCIIwIUEs4NWb18QUXS1egjiHYzlEUwkc4tEt9mQikgMLeLddEp3WpO6uMq1CbBsVYt69cs0cZx3OvGJ5fHIbqpCUR6srHGKHIBa2zcshFkK8c80h1jTnL1WIqX/J3EW1vHKI7f0AxnVLZBxsr4caZaeQmP9gB8j8Py4syT2HmJtXggQxQRAEQRAEkYFyiAWyO8TGF/PmiEfIdN4OcfDt/I4Z1YDHD+/G+1tCaN/eFgxiOyYTr5BpR5XpNAPPKEo/zSOOgcFbhFpVprlQZVqRQyxXXLbaHcmCWBirKPALL6plHCga4sq5+J4LyA87ODSNQ35cwqT13FWmnW2XxIcBZtGvRC5Rw0WnnOLRnUNsvNcBFuSZnnmjmEW1vAQxhUwTBEEQBEH0N0gQC6gEsc6BK16ux6Tt0tix1fjCHA0ZIjOWdoqcnASxlGeaL+KmYQ3YsZVjx9aUYx1ViLdXgTBHUS3BIfYboyuH2GM9U/SlxRziTEhxiHGHSFbtX660LDrR4nycgjj3k2s6xFFNLZH8JJgxF/u9l0MMaT35oYD5kavtkm4/TMjWBqy0lF8QM8jtktIIFuQiV5n2OnHkEBMEQRAEQfQ3KGRaIK0QT+u7GZ75OILH3o1aYblhpi6slVPItPC6EEEsClgv57K1TuEQB6gynUjbPX398pydOcQ+DrGVQ+wOxRYLa8luqXl+rFRSxVjFkGlHH2LPUavhggNrhEy7T2o2t1x+2OFVVEtcHJFcfHdRLeNnmjNrfIWGTOcTTl4JuJdDHDRsmjsFsd+RCIIgCIIgiP4FCWIBVXitKTpSuu1CRkIcDQpvvRIOcba8ZwBoUfTn8RTEurgOK7JDbOcQmwLWEsTCnSjnELtaD2UpqpV2OMTe41aR5oYACzGOkKYWjb5FtSQB7FlUC0HbLpn509wan1n0q9CQ6Wx9tasHdw6xQbATwGBETHDmHxDDSBATBEEQBEH0O0gQC6gEgrkszZ3FlupVDnGe1aILEcSpACHBIQ1orXMu83aInUW1dMnJVe/fnjdj3iJU7C9s7TezTHRIQ7I4NH9mzq+eeTDhcIg9Wi3l6oKK7rB8DGs8PueCAe6iWh5Vpv0Kq5nnQJVDHLeKanmPIwjxmhHEBsxRZRpgPOgTAXKICYIgCIIgCDWUQyyQ0oHOBNAatZeZgkgWxIU6xI7t8tsMQDCHGAAG1gOdgsEWJIdYbLvkFyYsijnNzyF2hEyb+cLG2hGHQ+zcTssI7rAkUp0h0/ZGhTjEYsslc6wy2UKmNUfVba58mGAu+voOSaR0dy9mOXdYzCG2i2oVFjKdLGj7ChTVytMhRqBu2uJ6BEEQBEEQRH+BHGKBX71eh68/0YwPt9qnxXSIUzqzc4i1wnOIHdsV0Ie4rSHYl/hB9c73Xu6i6JIndBbMIXYI4uy5xjqEolqZbUVB7MohhnMdc+xeIdPiCHI9s6ZIjGREuNf2XvPUGHeFTCsFdGb7X+wVw8J9Yor9ZH5m3osPA0zRXqhDnCho+0oU1UpJy90T0NLr0NRzBTT9c3th0BziWkmqJgiCIAiCIIoGCWIBDoY0Z/hvp3FaOLedx7Ru5xOHNY4GxXfrfNuxFuLT7dDKsXDvPjx8cI/vegMlQeyVP+qoMi06xD77lh1iL1fWEsRCbrIZGhwVQqbDskPMnNubQjAtuMJeOcTZWmnJyA6x11y8zodcVCvE1A8Tsl1zue2S5RALfYgLE7SVbtuUC15ny30CWrtOQmPsVrR0nSZsnelDzIyL2lt/psf+SBATBEEQBEH0N0gQK0jpwH+3ajjkD0148n2jIlUqQA5xviezkBxiAJgzKoVxg/3V0QBXDrH6oKIADOwQCxPXELCollxlWgyZ1px7sF1k7hh7KXKIbYfYeO8piD3OB5OLajF1BEC2S+4Omc6cO6HKdKEh04VuXz7U42SKkOlI+nUAQDT1orDUXM/Ic+hpvBGbBqxQ7JFCpgmCIAiCIPobJIgVpHTgptfq8GWfhmX/NQRxmtsuZMQjZDpfYZuvs5wLskPsXWVaKKqVttsOaZq3shSrQmsB2y75FtXycIhNkZpShkyLOcRC26W8HeIsIdMey0PM3VJL6RBnueZy2yXz3MXT9vwKrRJdMyHTXtWhFUW1OBQl1a1Q64ztzxh0bahqh/mMjiAIgiAIgqhhSBArEKsrm6SFtkthjWPq9u4v4/kK23JchKAh0ymHQxysHJHDIWbAj2fEM6+5cj2d28I7nFnH6RA79y+HTIuVv61xZ5bJYlzPMSDddF+j+TrEkNpQ+bRd8kN2hs33sZS9ZX8Jmeao9/hEIYhZg7SAg1l3sZjnoBLOJIgJgiAIgiD6GySIFaR05gqe5GCICy15Dt8phee+3eVYJ9+TWRmH2KPKtNSH2BSEQfsQawzYf1QKLx3fheO+5myTIxbVMs+lucxRVMvTIfYJmVa4xkAeIdNCr2nV/uQxqZaL1zPMeF73hRwybT4k6BXqShVWJdr7HghG+cQjZ1GPT1SKXhbPxo3B4bww6p7EFDJNEARBEATR3yBBrEDlEANALG06xMb7iHT28naIyyCI3TnE6vXkolrpPAQxANSF3OcjzGyRuSlmfDi4PtN2ya8PsUdRLfEapTnLtHNybpt3yHTmWNwzf1WNJuUQy++t7bNc88nbpbHTgDT2G2koYPMciyK2UIc4XiMOsVvkGqhyiF0OsWcPYrcgZhVyiCOJvwF9r1bk2ARBEARBEP0d6kOsIKWrncVYxp0zhZksdPJuu5TndrnQKEWIBqkynRDOg68glkKmVa8BwSHmwJcZQbxdgztkOiyFWmtSr2KryjR3HiDNi+AQC1EA5lhVeAlajTmfMuUbMj20keP/Duu196PYoLJ9iMuHt0Psvok5k8VzcEFcCYc4mngaA7qOB+ITgBZVoS+CIAiCIAiilJBDrCClq72imNSjVhY61VxUq07SA4GKaontkXwdYq587SWIOQe+7DXebFdvDCSSUw5xxg2W5pBS5X7n7BAbB4tmC5n22J7BmTsd8nKIcxuWsu9xoX2ITYd46vYpXLdnH+pCwU9Wed1UjxxiZVEtp0Ns9y6WBDBTXcHyOsRa+lO0dJ9tvBnwvbIemyAIgiAIgjAgQazAEFZuyWI6xKZ4k0ViNYdMN8sh0x7uoMMhTtsOq9/cxPMgrieLJjM3OM2Z2yH2qTItVlw2BbfKDU6pHGLvYStJSA6xF17XTNV2KZ+QaRn5IQFQeFEsU1APa+Q4aHTKeuAQiFyt9wLgzHnz2pWkFSdAXJfrlmg2exBXDTyNlu550PgmJCIHAIMvrvSICIIgCIIg+iUkiBUkPUKm45JYKpazW46LMGM4cNDoJIY1Gioo5aFn5JDpIDnEopBS5RPb6xk760oA8TRDY5hbodyOolo+udli2LTs/qYUy3LNITZFYjSjn7wcZlVvYfsz+3WIcaW7mysqh76wolhuN7xacQniTFi0KodYFMmMdwvvA/yW8fKFTDf2LUQ09SJ0tj06m+/ycKwJgiAIgiCIUkPfwhSkuNpZtItq2Z8WI3TUT1wVC40B1+0Zw6kTEwD8Qqbt18k0s/sQ+4xRc7jCwmuPkOnN8Uy4dIO9T0fItNyuKbAgZq4HGbkamWZebjRzjZsj6h34SdFARbVyG5aHIM5xJxJWiymzPW9huyshUniDFUKtEMQ8Yb1kfCvsHsSqNkuujXMfWh5Eki+jse96cDB0Nv8GXNu+LMclCIIgCIIg3FBRLQWGEHQvN3vAiuKNscKjR8sRMm1i5j+nvNouyX2Ic6wy7XCIpfVk53e7BlvRRX2qTIuHNh5GMOU1UuUQ56oZTZEZyYjEs3dN4NNuDcePTTjW0yQXWCzw5RxvcUKmVfsoNGRa7rmc25Aq13aJs3rj8IocYoa4/ZpvBdCS2UauPq08UgGjDAbTO9DSfToYdPQ2XIxkdE7Jj0kQBEEQBEF4Q4JYgbdDbPwUhV0xtGw5nTnLYfUQU6KwEwWmb1Et6QGBiStkWno/pF7tEMvrqRziFHdXmU4pCm2pcsH9kEXioHqOO/bvc60nzrMxDHQJLZflsPHSOcQFhkybbnjmYUQ5irvlA5eKatnv3Y87GLcFsca3Qs+Iae5ymVWUOGSac7R0n4uQvh7J8O7oabistMcjCIIgCIIgskIh0wpUTiMgOsRCyHQRREQ5hYjpfMrhtlsyOkJsx5RI21Wm/YYYlqoqm7hDpp0nVQyZjgo1j2Txp2lu4azqFZ3S3ZIm9z7EmWucJa9W/MVplMKqnTnEajGb6yU3inU5j1OwQyz1XM6NMuYdSznE8M0hlkKmecyxjT+lnVN97C7UJZdBZwPQ2XwvwIKEcRMEQRAEQRClhASxgqQiFxWwi2qJDnExTmA5Q6ZN91UsqvXUB2Ec+EQLHlwVcQhIsQ+xf9sl+7XDIZbXc4VMi0LXfi2HVov7D2eEairNFG2XGHSXQ+w9bhVyH2IvxHk2SYLYEU6tcbX4zeOay/dJoTnESUv85z2ksiC7u3avYUXItOAQM30zWEYQy4W5VJSylVQo9Raae38GAOhquh16aHTJjkUQBEEQBEEEhwSxApXTCHjnEBdKOYWI6dKKbZdu/pchMG57o96RQ5xMB6syHfIoiOVyiKX3Yg6xsw+x5LgKr7NVmXa1Xcq3D3EOvxn1UkcfcdNiOcTmvkTS3P1QIBfMBzxW/+EyFHfLC1fbJZ+iWoJDrPGtYIhJ2/hRopBp3o3Wru+BIYG+utORqPtWaY5DEARBEARB5ExV5RAvXLgQzz//PD777DM0NjZin332wSWXXIJBgwZZ64wdOxZ1dXUIhWwV8thjj2Hs2LFFG4dnyLTCPSxKDnEFQqadodH2a1FgJXTbM/MTxJqHQywLONn5FSs4+4VMOxzizGuvkGlX2yXvYSuxHOIsIdMx4ZzJ50YM8Q4xdRXxYghiwDgPqh7FXnzZxzAgyhEJBXfDK43oEHOEAJb5Z0tVVIs7i2oxK2Q6SA5xaR4ItPT8EGH9faRCE9DddF1JjkEQxUbXddx66614/PHH0dfXh6lTp+Lqq6/GiBEjlOuX428zQRAEQZSCqvoqHAqFsHDhQvzzn//EkiVL8Pnnn+MnP/mJa73f/OY3eP31163/iv0HN+WhouKqtktFELN+4cjFRnRYTcTiTCmhCJXhEGdvuxT2EMHZcojrBBEckUSkiKoPsUr8pngR2i4FzKs1owUAt4wSN9UEh9jPPQ9Coa2X1nYyHPxkM059thGAfT+bDnHVhkw7xGwU5hl25RBzDubIId4CZARypRziuvj/oj7+KDga0Nn8WyBQtWuCqDz33HMP/vSnP+Hhhx/Giy++iOHDh+Oss86CLuelCJT6bzNBEARBlIKqEsQXXXQRJkyYgEgkgiFDhuDkk0/GypUryz6OpK5uu2RSLIf4uxPi2HdkEjsPKHF1WwFTeKoqFEc0LjnEAdsuOfoy28giWnaIRVdYfO2XQ2w6t0mduatMq9ou5ZpDLOXVehEXQs5l0S2K3bBmv5fnlSua5p5MIh38DnzhU8NZXbPZmJzVYqrK2y6JBbE4i4Bb/2zJvzfO1liMd9sh0xUoqhVKv4+W7osAAN1NNyIdHlfU/RNEKXnssccwb9487LTTTmhqasIll1yCjz76CK+99lqlh0YQBEEQRaWqQqZlli9fjnHj3F8iL774YiSTSQwfPhwnnngijjvuuKIeVwuHofmIl+2HNKFtO+O1GK7a1taS03Gu/rr5qjzVZtvaWtCW+c7PtZBrvPVhhlDEviVSXENTkyEkmhqiaGtz9oM12U7QJS3NdWhrMxy9lnXO9YZu1+x8P6QRbW3G6yFb7eXDtm9xiMr6urA11saMWdjU0oiGXuf+m1saXa5xXb33uFWY0bhDBtajrS27iGqMABFBPbe1taBJaMG0/XbNGJKZdkuUIZ7p4BQJaznfL1GFSG8Z2Iy21mDbhz+yX7e1tVhz3W5QA9ra4Ljns44tHYHZ8jfXeeTK4MGDgS3Ga02Loi5aBySBAa11QItw7DQHNtlvG6JxNDQxoBuob2hBvTzODufbfK6JJ3oc+HgegB6g5Xi0DD8XLVnCAkp9HquF/jLPWqarqwvr16/HpEmTrGWtra0YPXo0Vq9ejRkzZii3K/bf5iFDmrOvFIBavudo7JWBxl4ZaOyVgcZexYJ42bJlWLx4MR5++GHH8t/+9rdob2+HpmlYsWIFfvjDHyKVSmHu3LlFO3ZPLIV4UoOXgd61tRsbM7Yg580wvbWNG7uKNoZi09bWgo0bu9C9VQPQhFgijY0bTUVp3EwRTUdfXId5WyRSHFu74gDqkYgnsHFjXLVrdGb2CQB9vXFs3Gg4db09EUAIVd2yuRuA/QWnt7MHG0OGmu7uCgEwQnm//NI8j8a4UskkNm7MOH3pBgBhfLm5F13dIUDIL/1ycy+GNjc6xtbT5z1uFV199QAiiPf0YePGlM+axtgaQjqSSQ7AUKsbN3YhlrI/37ypC9/ZhWFkQxjvbQ7hTx8ZDz/SafH8B4Q3Qb4nP9/YjWjc39n8uJPh2pXmdQhb4+zqM85lrKcXGzemwYX9Z7uXm/uSMIN/S3nft7W1oGNzCkMy79N6BKmEkVW8dWs3EjH72Ez/EtsJ28Zjm5HQt6AFQF8shG5pnG3SsZLJFLYUaS5NPZeiMf4vpLUdsTl8E/iX3b7rm7+f2zr9YZ6axoom5CpFd7dxv7a2Op+2tbS0WJ/JlOJvc0dHN/Rcw3wkavmeo7FXBhp7ZaCxV4b+MvZsf5urKmTaZOnSpbjyyiuxaNEiTJw40fHZrFmzUF9fj2g0in322Qff+9738NRTTxX1+Clu55KqCBe5qFY5CfuETEc1SG2X7CrGfuZWyCOHWA6zlnOIoyHvvGERzRGCLIZMO9dLcXeou86DXaHn1oXx3LqwVX07oghPVtEQdgfaOs6HBoxs4fjOuKRdzRn53TeqkOuE4jrKXP9KPf71RRj/+sL5/Mssphat8pBpDsHhZxGAmVa5M4dYLKhlvO/Jqe1SseYUTTyNxtj/gCOMzub7wLUBRdkvQZSL5mbjS0NXl/OLRldXl/WZTDn+NhMEQRBEKag6Qbx48WIsWLAAd955J/bYY4+s62uaBp5r5aQsJNPMVxCLOcTl7CFcDMSiVDLRkNHLV6Q3Uzwqnz7E8iZy2yWxqJaf4BbPsW9RrTzbLnEOXPJCAy55ocFqRRS07VJDWFFBOsADgnyKau3Q4r5oQYpqiQXARMz842iWitpqyiiIxRxiRIxK01AU1YK3IEagolqFz0lLf4qW7rMBAD2NVyIVmV7wPgmi3LS0tGDEiBF4++23rWVdXV1Yu3Ytxo8fH2gfpfjbTBAEQRCloKoE8YMPPoibbroJ9957L6ZNm+b6/J133sG///1vJBIJpFIpvPTSS7j//vtx2GGHFXUcKe7s0yvjcIirtXerB2KV6X99EcLVK2znrC7EXSKzNxM17KffxOrJ4mv5YYHcHsjRezhHQaxquxRLKdouBbg8oqjsSgQrqmXSEHaLbs1DEBfKxCHuNkNJ9yIXzVH1SbAqageca+UQ3F0Wgf3PluwQG6H6lmDm3QCCO8RugZ0jPI2W7nnQ+CYkIgegr/78wvZHEBXkhBNOwL333ouPPvoIvb29WLhwIXbccceK/m0mCIIgiFJQVTnE1157LcLhME455RTH8qVLl2L48OHYsGEDFi5ciM8//xyhUAjDhw/HhRdeiBNPPLGo40jp/iHTUY+qyrWAKCgfXh3BP9bbBb2iIWcfYgDoSWYcYp9HJyHHAwL1a41xlzgUQ4hVTvvsr6Tw8mdhHPZVu0pVWBi/XGW6J6lou+Q9bIuEQhDXBXRNG8LcVenZWWlb/Tqf+2aSQhAHCZkW+z2b6NwOmbaqTFfrzcxExc5g5mu7BHHGIeZsMBjfaFSZNtsuBakyzfsKGmZj30JEUy8izYais/lugFXV80aCyIl58+ahq6sLc+fORV9fH6ZNm4ZFixZB0zS8+uqrmD9/ftn/NhMEQRBEKagqQfzuu+/6fr7//vtj//33L/k4kmnmCh0WER21WguZNnNwUzrD5pjm+kwWd6Yg9utDHCSHWGNuEZjtPN6ybx8+62EY1WIfW2wbZYr3sMaR0hl6UqocYs9hW4jRAJvjxuuGgL8ZjWGOLXFJEDPggFFJpLkzmqDQkOlJ2ylCpvN0iB9ZE8FHncYFiAbMl3ZSqcgI3RbIXDofGfGra0OgpTeC8R6YDnGQkGlj/fyIJF9CY9/14GDoar4bXJNLdhFEbaFpGi6++GJcfPHFrs+mT5+O119/3Xpfrr/NBEEQBFEKqkoQVwu9fsWF4Qz1rTVEh3hrQu7jaxeqqgtxxNPMOhd+U/YSfeI2GtyiVzyPKhczrMEhhsVjifnCrVGOTTGGnmR+IdOiQ2zmTNcHdIjrFUW1AOCGvWOuZczjdVAG1yv6EAfIIW5U/Jb/6nVDII4dlMbwZp73mMoO1x05xOHkCjDEkYzsC5bpQ8zZoMznPWAZ1zeIQ8yQnyBmegdauk8Hg46ehh8iGZ2T134IgiAIgiCI8kOCWEGfRxEiwHAovcKCawFRUMrOZkq3i2o1RQxBbDvE3vv0DAuW8onFcxWVzuPYQTpOGpfATgP8LU9VUS1DEBtudn4OsXtZfcDfDFVRLS8KDZkGgB9Nj+Eva8Norg/jH2vV1cJl/M7Bwwf3WtehWqtMO9EhhkwP6jwIALBx8OeWQ8xZPTgawdALjW/OLHPnEHNoYLCfKDDebSSE5/JLzTlaus9BSP8UyfDu6G34SV6zIgiCIAiCICpDDXudpaPXRxDL1Ydr7QSGGMDAkeYMnS6H2BZPzZnU4t4AgtirkJbXa8DdQogx4MKpcRyxs789H1G0XWrNdOVRCmLfvRmo8nDrAwrdxjACa0OHzspTER83Jom7D+zDwIzhmQgQMu1VibolUnsPd5goiDNFtABA07fYDjHqwFlTZvmXmTVUDrEds89RDwYOILc84vrYXahLPg2dDURn872Zol8EQRAEQRBErUAOcY5EpFDaWhARIowZLqsq1DbFbdfVDGHuMUOm/QSxGDItHkt47RcunQuqKtOtmRzZboUg9uv6wTmw5IOIqz8yANQHrjLNA3ulYh52obeN2bIqSNslVYstIDd3u3rgMO8yMcSZ8c2WQwyWEcR8IxjvMLZShkyHASQznzeB8RgY7wFnjYFGEk69iebenwEAuppuhx4andeMCIIgCIIgiMpRawZnxZEd4hrTwwC8xWgqbReqMgVxEIc47HCC1W6xXGFaJUKDoKoybQrinqS7Svbzn0Rw06vqljv/WB/CNSvrcdWKBsfyiMZdDrYXYwcF8aANvB4W5EPUEsTZ9+S1TtCwcDWVEtMcnIltlQw0vtmuMo0oOGsxlmccYg5VyLTgELNm1z79YLwLLV3fA0MCfXWnI1F3ZB5zIQiCIAiCICoNCeIckfvT1lqVacAdrmwiOsRNpkMcKGTafh0kn9hvDNmICFWyTfFrC2J32yUAeOw/UZdQBoB3OtQ2cJAK048d2oOf7R7DviOzVGATKGZ4cjQzxiAh014OsVw4rDZuZTtkmvEuaynTN9l9iJkQMs03ZVZQOMRMFMRNmX0GK6zV3PNDhPUPkApNRHfTdblOgiAIgiAIgqgSKGQ6R+QWNbUhIpw0hLmrwjSQKaplCWLjp5lPHThk2qNwlOwQ5xsyraoy3SIIYrnKtElSd/dS7lKcAyBYheldBurYZaChNIOHTNuvi+UQB+lD7CmIa9IhFgWxLV6N4llmTrEtiE3UIdOa8HlwQVwX/1/Ux/8XHA3obP4twBqybkMQBEEQBEFUJ+QQ54jsENdaDjEAjG5VKySjt68xIbkNkl8fYi+h519UKz9BFXGETBuvxZBpr4rKqlxbT0Gco1D0y1MWKeatYoVMF1BUSy4clsu9zColiLktiDUhvJnxTWBWlek6K2Ta2kxZVMu+0EFDpkPp99DSfREAoLtpIdLhsbnOgCAIgiAIgqgiSBDnyLaQQ7zzALVCEl3XJpcgDrZvcSvmI4iLWlSrzh0yHZIEvCqPtivpJYhLI/a0IoZMm+chSB/ilIeLLBfVqo17WbdCncWQaU3fBGRyiFUOMZRtl8Qq0wEcYh5HS9dpYOhBLHoMYnUn5zUDgiAIgiAIonogQZwj0RqvMg0AOw30FsRWlemoc55yyLMXokMrCsBWaX/5h0xn2i6l7fDohrCxPKEzxNLmes7tVLm23iHTuY0pqHx2PCDI7RAurCrT6eAh0wPrdAwQrkOu8xRJazvnv3EBMOjgZpVph0O8WXCIo+6QaZVDrMohhrdD3NR7BSLpN5HWdkR30621+ctPEARBEARBOCBBnCOykJOLRdUCOw9Qx9mmuC2emqV2qvl89RdP1ZD6YhXVMn6KVaY1ZjvaW2Pq/atDptXHKFU7omI6xNFc2i5lpnP9XjHsNcIuAuYKmc7h+L0N56Gn4YfYPOAfOWxVDDjsHGKhyrRQVAuoA0ezcytlDrGqyrTaIY4mnkZjbBE4wuhsuR9cG5D3DAiCIAiCIIjqgYpq5YgcMl2LTxS+KoRMX7lHH7ar5zj/+Ubo3JZEcsi0XJDKC9EhFh8WDK6XHeLC2i6luH2sMONoDgNb48Z/xjLndkbItPOYW+LlDZkuRQ5xLiHTEY07IhwaZIc4lwGyevQ2XpHDBsVCh9WHmEt9iGHnELtQLUOwKtNaej1aus8GAPQ0XoVUeFp+QycIgiAIgiCqjlrUcxUlsg2ETIvub0QDZg1POwQqA0djnu6huJXoiA5pKE7ItNV2SeiZLDrEWyyH2Hk8OWQ6pQOb4+pBuIRiFgIX1fJpQ5Ur0RxCpk0XOawBdcKUSyX8S4tYZVrsQywU1UKwkGmuFMRSyDRPo6V7HjS+CYnIgeirP68YkyAIgiAIgiCqBBLEOVInV5muzDAK5qxd4xg7KI29MyG0YohxSHNXWg6aQ8yFMyJuMqTeaWUWI2TadIhFQdzRZyyTxy+HFnfEvCeUq1AM3HYJ4kOHwsjNITZ+hjVnDrx8jmrjXubgzC2ImS60XWJ1Vgi0sUUIYFIOACDlEKtDphv7bkQ09RLSbCg6m+8CGP2TSRAEQRAEsS1B3+5yRA71rUWHGADmTUrgkUN6rX7DomMbYu48Wr+2Sw48imptJznEebddEnJnzaJaIWb3Te7oNX7KvYTlKtNf9nlfuIYSJRKUog9xLm2XIprzgY58jvYbaTwcaW9LodroaroVANDd9EtYDjFi1ueGQ2w8DeGsDjoTc4hV+cNAPPpNAEAiPFsZMh1JvojGvhvAwdDV8htwra1IsyEIgiAIgiCqBcohzpHoNuIQyxgC1ZhNmLkrEAdtuyQaluI27hzi3McI2M5yUmeWSA9p2R1iOWS6w0cQy0IxG/lUmS5WUa2ER0slETOHOMy4o4+2fI7OmRLHpO3SmDms+gRxrP40xOpOAFgjGvrucH3OkEBI/y8AQGdt4MwueqXMKQbQ23ApUqF2JCN7I5r8s7GfjOvM9A60dM8Dg46ehh8iGdmvuBMiCIIgCIIgqgISxDnirjJdmXEUG7EIVUhTOcTB9iPm04rnplhVpsMZEZzSgbDmrjJtOsTy+OWQ6R6PHsSAWyhmg/NgJyffhwAqcnGIzZDpSAiICs68fI6iIeDAHapPDFuwxswL9YkMpdcAAHRtGNKh8dZyjW/y2F8UiTrDJXaETHOOlu5zENI/RTI8E70NlxVn/ARBEARBEETVQSHTOeLqQ1yhcRQbRw4x466w4cCCWNxGeD2kwalI860ybTqcKUfINEdjZryWQyw53HLIdNynGFWpik01C5W7ixYyHSCH2CqqxeSQ6QIHUSHEYlgiGu8CYAhisBCSofbg+xRCphtid6Iu+TR0NhCdzfcCjJ4bEgRBEARBbKuQIPZhZLNbbchtl7ZFQawpc4iD7Ud0iEWx1hr1Pl4uqIpqhZgtYvsyBqcsauWQ6ZiPs1qqHGKHIC5nyLTZnkoqqlWqfsslh3kreY4wOBsMADmFOXMYgjicXoOm3ssBAF1Nd0AP7ZD/OAmCIAiCIIiqhwSxDzu0uAVxJM/c2mpHLHJlCCfn5/k4xJuFPr/y9oW2XUrqzrZLcvVvt0PsfO/rEOeaQxxw9Sah0HE5i2ql0nYf4jqfHOLawXlx09oI67WuDbUqQfc2/ADJ8DT0BAh5NkOmNf4FGBLoq5uHRN0RRRwzQRAEQRAEUY3U7FficrBDi46XP3Mui24jVaZlwlKVaY0ZwjCWtvN0gyCKQz/Nm68gNoVgb8oWwSEG1EkiVnaI3SHT3scomUMcrVDbJYdDbC/PVfhXD5IgDo1BSF8PANDZUGs51wZiy4DnAu1R7FucCk1Cd9N1RRgnQRAEQRAEUe2QIPZhaJPCId5GQ6bltkuAEVIbVBCHGEeaM0wcYivNA3dIYeWGJPYd4S7UlG8OcVsDR1OYY1NMQyoTM61yiGVRK4dM+wniUlWZFkOmC71x6iyHOPuOkmIfYkdRrcLGUCnkHOJUaCyiSUP46tpQ1SZZ0bXB4KgDEEJn8/0AU7dqIgiCIAiCILYtavQrcXEx2ve4hYXKxcw3lLjaEUOmQ5nXQxo4Nsczy7L0IV72rR6s69YwaTv7IUIkBFy5R0y5fr45xBoDxg1O47UvwuhMMGu8siPs7kPs3E88Vbw+xPkI4kJvm0hAh1jngJ6pgh2Si2rVbA6x8+ZJh8Zar3VtWJ77bMaW1qfAWSvS4bHZ1ycIgiAIgiC2CSiHGLYjKqMSbfk6m9WOo+1S5vWwxuACbkgDx25tARJazeMVcOeJLjTgFnoAUCeJWq+QaaaQs6USimIOcaEEDZm2Wi5pHIxJRbVqtMq0KmTaJF+HGABSkVlIhyfmvT1BEARBEARRe5BDDGBAndshDmvcIRJNZIeYZXFOawVHDnHm9TAhZNzroUExjpcrE4Y4VaCZ7yzicogzAnj1Jg33vB3F5pgxgNYosDXh3H/Ogjjg6uKc/apcB8G8D1NZQqbFcGlxO6CGHWJJEOvaMOhsIDS+JX+HmCAIgiAIguiXkEMMYGAdx0njEhguCMCdB+iOMGITue3StnICVTnEw5qK1yZIprEAMRbIIZbem07q0g8j+PsnEbz1pbFCa9Q5Do1xDJRaRJWCnmRhJ1R2iF9cH8L6bvc+U0IPYsB5neWHO7WCnEPM0QBdGwWggJBpgiAIgiAIol9CDjGAwfU6Lpwax/fb43h1Qwh3/juKK2bGsHqTWzFEJOdx26kyLeQQWyHTxXeIfzQ9hr+uDeObOyXz3sewRo59RybxyudhjBucRlsDx8Y+f4FtFp/qkXKHWwRBfMXMPmzXwDGwvjRFtUR6iySIkzrDGxtDuPDvjQCAV+d2OdYzQ8XN+9ZRBbxm711JELMGxOpORH08iWR4ZoXGRBAEQRAEQdQiJIgBDMoIIMaAGcPSmDGsDwDw3hb3urJDXLOaQkIM5zXFsegQF0s8HTcmiePG5C+GAeM63byPs1iX7AjLRcDM0OFe6dBGuLzBhCE6dhkYoI+RRD6CuFCHWGPGdUrpDG9udD+4eeqDMJ79OIKLpxlV0SyHuGZbLQkwtyDuazgPfQ3nVWhABEEQBEEQRK1CghjAoDq1SDBFotlSCHAWJQJq2WVzIobStmSKP4kOcbXPU+5DPHGIjv1GJrGqI4Qv+jQrtLjXxyGWe0yXku7CngkAMB7OpHQg5u5qhav/2QAAeHC1MSfz+u7YyvGdcQmMasld+FcPcqICtUgiCIIgCIIg8mNbSYEtiMEe36fDGZexXnhs4CqqVaIxlRvRITZd0+0abIGYrnJjUXaI68McN+0TwzlTDIfUCpmWnNkBoiDOM6eW53BuzCrl5gOWQjBFbp9PC6n3NhsrhYTr+4OpcXz7a0VQ5BVCzCHmaHC1YSIIgiAIgiCIoNA3SQCD6tVumSkSxYrFcm/ibSaHWAgxNgWxKJI39lb3ROWKyaZANq+XGTLdJ7mpokOs6jsdhAN3MHY66ysKq1aiKVK8Jwtm+HOvcFhd2v36bmNSqgJxtYt9oThrqOA4CIIgCIIgiFqHBDGAwR5FlEY0GypKDC+Vw2qP3Nlw2vYdWbuOG6B2iAFg6vaG2po2tMA+QSWmXnJ3zdB2uRqzXMyq1eEQ5ycaz5kSx8379OL6vfqyrlvUXsSZa7Y5bs+pV9LkXZn55iv2qxIhhzgd+moFB0IQBEEQBEHUOpRDDKPtkopRLRxPHdGNNAeO+mMzAHdY7UGjUxg7qBsjmmvbgXMIYkEkLtq/D70poKUMrYgKQb4uplg0Q5TNkGlZMLYWwSGOhoB9RwZ7YFAKh3hTTBDESebqwQwU1ve5+rAvdio0oYLjIAiCIAiCIGqdbeprcr54FdUCgOHNHA3CYwOVaBrdymtecHg5xCGt+sUwYBT9Et17UyBHrPZExk+5qFarMLdyuKhNBfRfljFFf0efPfDeJHOJfsB+MLBtIDrE4ys4DoIgCIIgCKLWqXEZVxyyiVmxB2++YbXVjphj6uWYVztm8bOIxq2q2KZoTOhGReZ4Wl1lOsS4o/BUqShmyLQp4DsEh7g7CXQn3Pnetf7ARoQ7HGISxARBEARBEET+bENfk0tHSCs8rLbaEeclhhHXEnVS3jDgDJmWC2ppjFshzOW6rnsONwYhtrTKF/PhjFhlujfFlD2Ot6371p5MOkwh0wRBEARBEET+UA5xADSHQ1y5cZQSr5DpWsKsLC32JBZDpmWhGNHsYlzluq5H75LEgDqOqdsXXqRMJXJ7kky5PFzdRcJzQuMd1mudDavgSAiCIAiCIIhahwRxAMSQaW0bEhYijrZLte4QC4JQDJmW+/Vybrus5cqxDWlGIbZioBbE6uXbUtulZHgGOOqRjOy57fQ9IwiCIAiCICoCCeIANISBs3aNo6GIBZGqjYRuC4v6Gr0rzHE7QqYzgjeVZuiROmOlOTCsiWP2V1IYM6i620qpUOWz96aY5faHGEeaG9d1m8oh1obgy8EfAWis9FAIgiAIgiCIGqdGpU/5mTcpUekhlBRV3mmtYTrEYtsh0SGWK0ynOYPGgNvmZO8fXI14hUybUQwjW3R83Gk8HdiWBDEAgDVVegQEQRAEQRDENsC29jWZyJPeZPZ1qh1VPnDERxDXOqq8596k/XBjVLNYDG7bjW4gCIIgCIIgiHwhh5gAsG05xFFHUS07ZHpbEP0iUYXI7U4yIJMPPqrFrmS9zTnEBEEQBEEQBFEESBATAIAdWgtvA1RpzBziOsE59QuZrnUiKoc4xaw6U8Obav+aEgRBEARBEEQpIUFMAABOGZ+ABuCAHYpTAbkSqBxi0xlN6ur+vLWMmEPcFOHoSRqFw3imkFaLUC18W5s7QRAEQRAEQRQDCqQkABju6rzJCXx1QO26iqYzLLZd0pjdcqhzG6uLJoZMz/6K8SCjN8nQk3mm0Ryx1+1KkCAmCIIgCIIgCJmaE8S6ruOWW27B7Nmz0d7ejtNPPx3r16+v9LCIKqA+0xarTgolNgXy1vi2JQrFvOA9hxsquCfF0J0Rv00RWzCTICYIIhdy/Vu7atUqnHDCCZgyZQr2228/PPjgg2UcLUEQBEHkT80J4nvuuQd/+tOf8PDDD+PFF1/E8OHDcdZZZ0HXa9fZJIqD5RBL/XnN0OL13TV3u/vyea89n/GDjft/S4xhU8wQv81CyHTXNlZQjCCI0pLL39ru7m7MmzcPe+21F1auXIlbb70Vd9xxB5555pkKjJwgCIIgcqPmcogfe+wxzJs3DzvttBMA4JJLLsHs2bPx2muvYcaMGXntU9P6h3u2rc9zaBMwsgUY1uyc644DODpiDJ/1hjGyxV4/rPGaPicD6mDNZ1CD+VpDkhuvBzcAowdwpHWGXQbV7vWv1XHnCs1z22BbmV8uf2ufffZZaJqGc845B5qmYbfddsOxxx6LRx99FAcffHDeYyjWuazla0Jjrww09spAY68M/WHs2darKUHc1dWF9evXY9KkSday1tZWjB49GqtXr85bEA8a1FSsIVY1Q4Y0V3oIJWXeEGDeTACIZv4zeGqu1xYMQO2ek2sPEpKE0YSXTpPXaMI/vme+DqFW57qt37cmNE+iWsj1b+2aNWswYcIEaJodtTJp0iQsXry4oHEU629zLd9zNPbKQGOvDDT2ykBjr7GQ6e7ubgDGH2aRlpYW6zOCIAiCIPIn17+13d3daGlpcSxrbW2lv8sEQRBETVBTgri52XgK0NXV5Vje1dVlfUYQBEEQRP7k+re2ubnZJX47Ozvp7zJBEARRE9SUIG5pacGIESPw9ttvW8u6urqwdu1ajB8/voIjIwiCIIhtg1z/1o4bNw6rVq1yFNx65513MG7cuLKMlyAIgiAKoaYEMQCccMIJuPfee/HRRx+ht7cXCxcuxI477ohp06ZVemgEQRAEsU2Qy9/agw46COl0GosWLUIikcBbb72FxYsX48QTT6zAyAmCIAgiNxjnnGdfrXrQdR2//OUv8fjjj6Ovrw/Tpk3DggULMHLkyEoPjSAIgiC2Cfz+1r766quYP38+li5diuHDhwMw+hAvWLAAq1evxqBBg3D66afjlFNOqfAsCIIgCCI7NSeICYIgCIIgCIIgCKIY1FzINEEQBEEQBEEQBEEUAxLEBEEQBEEQBEEQRL+EBDFBEARBEARBEATRLyFBTBAEQRAEQRAEQfRLSBATBEEQBEEQBEEQ/RISxARBEARBEARBEES/hAQxQRAEQRAEQRAE0S8hQUwQBEEQBEEQBEH0S2peEC9cuBCHHXYYpk6dir322guXXXYZNm/e7Fhn1apVOOGEEzBlyhTst99+ePDBBx2fP/jggzj22GMxZcoU7L///q5j3HnnnWhvb3f8N27cOJx99tklnZtIOeYJAL/97W9x0EEHob29Hfvvvz9+/etfg3NesnnJlGueixcvxiGHHIL29nYceuih+H//7/+VbE4qCp1nIpHAFVdcYV2r/fbbD9dffz1isZhjHy+//DKOOOIITJkyBd/4xjewbNmysszPpBzz3LBhA84++2zMmTMHY8eOxe9///uyzc+kHPP8+9//jlNOOQUzZ87EjBkzcOKJJ2LlypVlmyNQnnm+9dZbOOaYY7D77rtj6tSpOPTQQ/Hoo4+WbY5A+X4/Tf7yl79g7NixuPTSS0s6r/6Eruu45ZZbMHv2bLS3t+P000/H+vXrKz0sF8X4m1cNnHvuuRg7diz++c9/Wssq/fcnCCtXrsTcuXPR3t6O3Xff3fG9rprH/+WXX+Liiy/GrFmzMH36dJxwwgl45ZVXrM+rZexLly7F3LlzMXXqVIwdO9b1ebZ7OxaL4YorrrD+Hlx44YXYsmVLxcf+xhtv4IwzzsDs2bMxdepUHHXUUXj22Wcd61Ty36Bs593k7bffxsSJE3HyySc7llfreTfHdv3112OfffbBbrvthq9//ev4+9//XvjYeY1z880383feeYcnEgn+5Zdf8lNPPZWfeeaZ1uddXV18D/fOIAAAFAlJREFU1qxZ/Pbbb+exWIy//vrrfMaMGfzpp5+21nn66af5M888w//nf/6Hz5kzJ+sxOzo6+KRJkxz7KDXlmOdf//pXPnnyZP7KK69wXdf5mjVr+B577MH/7//+ryxz5Lw883zmmWf4jBkz+JtvvsnT6TR/5pln+IQJE/hbb71VljlyXvg8e3p6+C233MLff/99nkql+Nq1a/mRRx7Jr776amsf69at47vuuiv/v//7Px6Px/nf/vY3vuuuu/I33nhjm5rnhg0b+MMPP8xfffVVvs8++/AnnniibPMr5zyXLFnCn332Wd7Z2cmTySR/6KGH+JQpU/inn366Tc2zo6ODr127lqfTac4556tXr+Z77LEHf/7557epeZp0dHTwOXPm8BNOOIH/+Mc/Ltsct3XuuusuPmfOHP7BBx/w7u5u/rOf/Ywffvjh1n1VLRTjb16lefLJJ/lpp53Gx4wZw1esWME5r46/P9lYuXIlnzp1Kl+yZAnv6+vj8Xicv/nmm5zz6h//eeedx0866STe0dHBU6kUv/fee/luu+3Gt27dWlVj/8c//sH/+Mc/8sWLF/MxY8Y4Pgtyb19++eX8qKOO4p9//jnfsmULnz9/Pj/jjDMqPvbnn3+eP/nkk7yjo8P6Hjlp0iTr/uG8sv8G+Y3dJBaL8cMPP5x/97vf5SeddJLjs2o977qu89NOO42fdtppfO3atZxzzj/77DO+bt26gsde84JY5m9/+xtvb2+33j/xxBN8zz33dNyAN954Iz/55JNd2z7xxBOBBPFdd93F99prL55MJosz6DwoxTzvv/9+fvTRRzuWnX/++covceWiFPP8/ve/zxcsWOBYdsIJJ/Cf/OQnRRx5bhQyT5OHHnqIH3744db72267jX/72992rPP973+fX3rppUUceW6UYp4ic+bMqYgglin1PE123313/uc//7nwAedJqedpPpibNWsWv//++4s27lwp5TzPO+88fv/99/Mf//jHJIiLyJw5c/gjjzxivd+6dSufOHEiX7lyZQVHlZ1i3Gvl5LPPPuP77rsvX79+vUMQV+PfH5njjz+eX3/99crPqn383/zmN/nDDz9sve/u7uZjxozh//73v6ty7CtWrHCJm2z3dl9fH588ebLjYej777/Px4wZw9evX1+egXP12FUcddRR/L777rPeV8O/QX5j/8UvfsGvueYafttttzkEcTWf9xdeeIFPnjyZd3R0KLcpZOw1HzIts3z5cowbN856v2bNGkyYMAGaZk910qRJWLNmTV7713Udjz32GI4//niEw+GCx5svpZjnYYcdhng8jhUrVkDXdaxatQqvvfYaDjjggKKOPRdKMU9d111h4JxzrF69uvAB50kx5qnax6RJkxzrFHLvF4NSzLMaKcc8V69eja6uLowZM6Y4g86DUs5zzpw5mDx5Mo444ggMGjQI3/zmN4s7+Bwo1TyXLFmCjo4OnHLKKcUfdD+mq6sL69evd/z719raitGjR1f03/kglPo7TDHhnOOyyy7D2WefjeHDhzs+q8a/PyK9vb148803AQBHH300Zs6cieOPPx7Lly8HUP3jnz9/Pp599lls3LgRyWQSjzzyCHbccUeMGTOm6sduku3e/u9//4t4PI7Jkydbn++8885oaGiout/jDRs24MMPP7R+d6v936BXXnkFzz33HC666CLXZ9V83lesWIGRI0di0aJF2HPPPbH//vvj5z//OXp6egAUNvbKKboSsGzZMixevBgPP/ywtay7uxstLS2O9VpbW9Hd3Z3XMf7+979jw4YNOO644woaayGUap6DBw/GoYceivnz5yOdTkPXdZx55pmYPXt20caeC6Wa5wEHHIBrrrkGRxxxBCZPnoxnn30Wb775JkaNGlW0sedCMeZ5zz334F//+heeeOIJxz522WWXwPsoNaWaZ7VRjnlu3LgRF1xwAU477TTsuOOORRt7LpR6ns899xwSiQReeeUVvPbaa2hqairuBAJSqnlu2LABN910Ex566CHHF0KicMzr0Nra6lje0tJSsX//glCO7zDF5NFHHwXnHMcff7zrs2r7+yPT2dkJXdfxxz/+EXfffTe+9rWv4cknn8RZZ52FP/3pT1U//vb2dvzhD3/AXnvthVAohIEDB+LXv/41otFo1Y/dJNu9bf6U16m23+Oenh6cf/75mDNnDmbNmgWguv8N6unpwWWXXYbrrrsODQ0Nrs+r+bxv3rwZH3zwAfbcc0/85S9/webNm3HeeefhhhtuwNVXX13Q2LeZv8JLly7FlVdeiUWLFmHixInW8ubmZtdJ6OzsRHNzc17HefTRR3HAAQdg++23L2i8+VLKeS5atAhPPPEEFi9ejLfffhvPPvssXnrpJfzyl78s2viDUsp5HnnkkTj33HNx2WWXYfbs2Vi2bBkOP/xwDBo0qGjjD0ox5nnvvffi/vvvxwMPPOB4St/c3Iyurq5A+yg1pZxnNVGOeW7YsAEnn3wy9t57b1x88cXFn0QAynU9o9Eo9txzT2zatAm33357cScRgFLO87LLLqvoA41tGfM6yP/+dXV1VeTfvyCU6ztMsVi7di0WLVqEa665Rvl5Nf39UWE+YDvmmGMwYcIERCIRHHfccRg5ciReeOGFqh6/ruv43ve+h2HDhmHlypV46623cPXVV2P+/Pl49913q3rsItnu7Vr4Pe7q6sK8efPQ1taGG264wVpezWO/4YYbsO+++2LGjBnKz6t57E1NTQiFQvjhD3+IhoYGDB8+HPPnz8df/vIXAIWNfZsQxIsXL8aCBQtw5513Yo899nB8Nm7cOKxatQq6rlvL3nnnnbxCLtetW4cXX3wRc+fOLXjM+VDqeb799tv4+te/jnHjxkHTNOywww444ogj8Le//a1ocwhCOa7n9773PTz99NNYuXIl7rjjDnzwwQeYOXNmUcYflGLM8/bbb8cDDzyAhx56yBU6O27cOLz99tuOZfne+4VQ6nlWC+WY57p16zB37lzMmTMHV1xxBRhjpZmMD5W4nqlUCh999FFxJhCQUs/zxRdfxJ133omZM2di5syZWLp0KZYuXYqZM2cinU6XbmL9gJaWFowYMcLx719XVxfWrl2L8ePHV3Bkasr1HaaYvPrqq9iyZYsVbmz+/TznnHNw5ZVXVs3fHy9aWlqUUWHmv6nVPP6tW7di3bp1OOWUUzBgwACEw2EceOCBGDVqFF566aWqHrtItnt7xx13RF1dnWMuH3zwAfr6+qpiLps3b8Z3v/tdfOUrX8GvfvUrRKNR67Nq/jfoxRdfxB/+8Afr99aMYJo5cybWrVtX1ed9woQJAOD47iO+LmjshaU8V54HHniA77777p4Vgs0qdnfccYdVQXD33Xfny5Yts9ZJJpM8Fovx3/3ud3y//fbjsViMx2Ixruu6Y1833HADP+SQQ0o6Hy/KMc+7776bH3jggfy9997jnHP+ySef8GOOOaashV7KMc+uri7+n//8h6fTab5lyxa+cOFCvueee3om6ZeCYszz+uuv53PmzLEq7cmsXbuW77rrrvzxxx/niUSCP//883zKlCllrTRZjnlyzq1rvN9++/Hf/e53PBaL8UQiUfT5eFGOeb7//vt877335rfeemtJ5hCEcszz2WeftaruxuNx/uc//5lPnjyZP/bYYyWZk4pyzPOzzz5z/HfBBRfwCy64gH/22WclmVN/46677uIHHHAA//DDD3lPTw+//PLLq7LKdDHutUrQ29vruofHjBnDly1bxrds2VIVf3+ycd999/E999yTr1mzhqdSKf7444/z3Xbbja9bt67qx3/IIYfwyy+/nHd1dfF0Os3/8pe/8IkTJ/IVK1ZU1dhTqRSPxWL8hRde4GPGjLH+VqfT6UD39uWXX86POeYYvmHDBr5lyxZ+5pln8vnz51d87F988QU/7LDD+KWXXur5b0ol/w3KNnbx9/a6667jxx13HP/ss894KpXinFfvee/u7uZ77bUXv/7663k8Hueff/45P+aYY/hVV11lbZ/v2BnnZWwyWwLGjh2LcDjseDIDGOFHZnjaqlWrsGDBAqxevRqDBg3C6aef7ihicvvtt+OOO+5w7fuvf/0rRo4cCcDoK7nPPvvg3HPPdfXrKgflmGc6ncbtt9+OP/7xj9i0aROam5ux77774kc/+pErD6JUlGOeGzZswLx58/DJJ59A0zTMnj0bP/rRj8qaQ1zoPNevX4/9998fkUgEkUjEsY/XX3/dev3yyy/jF7/4BT7++GMMGzYMF154IQ499NASz86mXPNU9ao76qijcP311xd7SkrKMc+f/OQn+P3vf4/GxkbH52eeeSbOOuusUk3NQTnm+bvf/Q73338/NmzYgHA4jBEjRuD444/HiSeeWIYZGpTrvhUxexCX657d1tF1Hb/85S/x+OOPo6+vD9OmTcOCBQusv+nVQjH+5lULY8eOxYMPPmi5xZX++5MNzjl+/etf47HHHkNvby++9rWv4eKLL8buu+8OoLrH/9///hc33ngjXn/9dcTjcYwYMQKnnHIKjj32WADVM/bf//73+MlPfuJabt4n2e7tWCyGa6+9Fs888wzS6TT23ntvLFiwAAMHDqzo2F955RXcfvvtaGhocDiU3/zmN3H11VcDqOy/QdnOu8jtt9+OlStX4qGHHrKWVet5nzlzJt577z1cffXVePvtt9HS0oKDDz4YP/jBD6x86HzHXvOCmCAIgiAIgiAIgiDyYZvIISYIgiAIgiAIgiCIXCFBTBAEQRAEQRAEQfRLSBATBEEQBEEQBEEQ/RISxARBEARBEARBEES/hAQxQRAEQRAEQRAE0S8h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\n"},"metadata":{}}]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}