From 49ced1983d1b66d31db9a2ac722becd2f8d11b47 Mon Sep 17 00:00:00 2001 From: Victor Mylle Date: Fri, 14 Apr 2023 09:09:46 +0000 Subject: [PATCH] Updated some files for alphabet visualization --- .gitignore | 1 + notebooks/embeddings_evaluation.ipynb | 138 ++++- notebooks/visualize_embeddings.ipynb | 583 ++++++++++++++++-- .../create_fingerspelling_dataset.py | 2 - visualize_data.ipynb | 18 +- 5 files changed, 657 insertions(+), 85 deletions(-) diff --git a/.gitignore b/.gitignore index f417c17..abb3de6 100644 --- a/.gitignore +++ b/.gitignore @@ -155,3 +155,4 @@ out-img/ converted_models/ *.pth *.onnx +.devcontainer diff --git a/notebooks/embeddings_evaluation.ipynb b/notebooks/embeddings_evaluation.ipynb index f04a1c0..717a026 100644 --- a/notebooks/embeddings_evaluation.ipynb +++ b/notebooks/embeddings_evaluation.ipynb @@ -94,7 +94,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -133,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 9, "id": "013d3774", "metadata": {}, "outputs": [ @@ -143,7 +143,7 @@ "" ] }, - "execution_count": 13, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -155,7 +155,7 @@ "# checkpoint = torch.load(model.get_weights())\n", "\n", "## Set your path to checkoint here\n", - "CHECKPOINT_PATH = \"../out-checkpoints/augment_rotate_75_x8/checkpoint_embed_6.pth\"\n", + "CHECKPOINT_PATH = \"../out-checkpoints/augment_rotate_75_x8/checkpoint_embed_1105.pth\"\n", "checkpoint = torch.load(CHECKPOINT_PATH, map_location=device)\n", "\n", "model = SPOTER_EMBEDDINGS(\n", @@ -169,16 +169,16 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 75, "id": "ba6b58f0", "metadata": {}, "outputs": [], "source": [ "SL_DATASET = 'wlasl' # or 'lsa'\n", "if SL_DATASET == 'wlasl':\n", - " dataset_name = \"wlasl\"\n", + " dataset_name = \"fingerspelling\"\n", " num_classes = 100\n", - " split_dataset_path = \"WLASL100_train.csv\"\n", + " split_dataset_path = \"fingerspelling_{}.csv\"\n", "else:\n", " dataset_name = \"lsa64_mapped_mediapipe_only_landmarks_25fps\"\n", " num_classes = 64\n", @@ -189,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 76, "id": "5643a72c", "metadata": {}, "outputs": [], @@ -209,7 +209,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 77, "id": "04a62088", "metadata": {}, "outputs": [], @@ -222,13 +222,13 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 86, "id": "79c837c1", "metadata": {}, "outputs": [], "source": [ "dataloaders = {}\n", - "splits = ['train', 'val']\n", + "splits = ['train', 'val']\n", "dfs = {}\n", "for split in splits:\n", " split_set_path = op.join(dataset_folder, split_dataset_path.format(split))\n", @@ -253,7 +253,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 87, "id": "8b5bda73", "metadata": {}, "outputs": [], @@ -269,6 +269,8 @@ " for i, (inputs, labels, masks) in enumerate(dataloader):\n", " k += 1\n", " inputs = inputs.to(device)\n", + " \n", + "\n", " masks = masks.to(device)\n", " outputs = model(inputs, masks)\n", " for n in range(outputs.shape[0]):\n", @@ -278,17 +280,17 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 88, "id": "0efa0871", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(810, 810)" + "(560, 560)" ] }, - "execution_count": 19, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -299,7 +301,83 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 91, + "id": "0b9fb9c2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 [0.4734516, -0.58630264, 0.18397862, -0.165259...\n", + "1 [1.6672437, -2.3754091, -0.77506787, -0.666019...\n", + "2 [1.7801772, -0.0077665895, 0.22098881, 0.09736...\n", + "3 [-0.6503094, 0.14683367, 0.1253598, 0.5183654,...\n", + "4 [1.2275296, -0.4874984, 0.56826925, -0.9628880...\n", + " ... \n", + "555 [-0.4408903, -0.9623146, 0.21583065, -0.381131...\n", + "556 [1.7910445, -3.5434258, -1.332628, -0.95276725...\n", + "557 [2.3283613, 0.11504881, -0.4955331, -0.4563401...\n", + "558 [-1.0491562, -1.1793315, 0.3248821, 0.16679825...\n", + "559 [1.447621, -1.2482919, 0.17936605, -1.4752473,...\n", + "Name: embeddings, Length: 560, dtype: object\n", + "0 B\n", + "1 D\n", + "2 X\n", + "3 O\n", + "4 W\n", + " ..\n", + "555 F\n", + "556 X\n", + "557 Z\n", + "558 Y\n", + "559 W\n", + "Name: label_name, Length: 560, dtype: object\n", + "0 0\n", + "1 1\n", + "2 2\n", + "3 3\n", + "4 5\n", + " ..\n", + "555 24\n", + "556 2\n", + "557 14\n", + "558 8\n", + "559 5\n", + "Name: labels, Length: 560, dtype: int64\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_969762/1944871806.py:9: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " dfs['train']['embeddings2'] = dfs['train']['embeddings'].apply(lambda x: x.tolist())\n" + ] + } + ], + "source": [ + "print(dfs['train'][\"embeddings\"])\n", + "print(dfs['train'][\"label_name\"])\n", + "print(dfs['train'][\"labels\"])\n", + "\n", + "# only keep these columns\n", + "dfs['train'] = dfs['train'][['embeddings', 'label_name', 'labels']]\n", + "\n", + "# convert embeddings to string\n", + "dfs['train']['embeddings2'] = dfs['train']['embeddings'].apply(lambda x: x.tolist())\n", + "\n", + "# save the dfs['train']\n", + "dfs['train'].to_csv('../data/fingerspelling/embeddings.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 90, "id": "ab83c6e2", "metadata": { "lines_to_next_cell": 2 @@ -322,7 +400,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 94, "id": "7399b8ae", "metadata": {}, "outputs": [ @@ -331,16 +409,16 @@ "output_type": "stream", "text": [ "Using centroids only\n", - "Top-1 accuracy: 5.19 %\n", - "Top-5 embeddings class match: 17.65 % (Picks any class in the 5 closest embeddings)\n", + "Top-1 accuracy: 77.06 %\n", + "Top-5 embeddings class match: 100.00 % (Picks any class in the 5 closest embeddings)\n", "\n", "################################\n", "\n", "Using all embeddings\n", - "Top-1 accuracy: 5.31 %\n", - "5-nn accuracy: 5.56 % (Picks the class that appears most often in the 5 closest embeddings)\n", - "Top-5 embeddings class match: 15.43 % (Picks any class in the 5 closest embeddings)\n", - "Top-5 unique class match: 15.56 % (Picks the 5 closest distinct classes)\n", + "Top-1 accuracy: 81.65 %\n", + "5-nn accuracy: 83.49 % (Picks the class that appears most often in the 5 closest embeddings)\n", + "Top-5 embeddings class match: 96.33 % (Picks any class in the 5 closest embeddings)\n", + "Top-5 unique class match: 99.08 % (Picks the 5 closest distinct classes)\n", "\n", "################################\n", "\n" @@ -375,13 +453,13 @@ " sorted_labels = labels[argsort]\n", " if sorted_labels[0] == true_label:\n", " top1 += 1\n", - " if use_centroids:\n", - " good_samples.append(df_val.loc[i, 'video_id'])\n", - " else:\n", - " good_samples.append((df_val.loc[i, 'video_id'],\n", - " df_train.loc[argsort[0], 'video_id'],\n", - " i,\n", - " argsort[0]))\n", + " # if use_centroids:\n", + " # good_samples.append(df_val.loc[i, 'video_id'])\n", + " # else:\n", + " # good_samples.append((df_val.loc[i, 'video_id'],\n", + " # df_train.loc[argsort[0], 'video_id'],\n", + " # i,\n", + " # argsort[0]))\n", "\n", "\n", " if true_label == Counter(sorted_labels[:5]).most_common()[0][0]:\n", diff --git a/notebooks/visualize_embeddings.ipynb b/notebooks/visualize_embeddings.ipynb index 3ad8c09..5940d63 100644 --- a/notebooks/visualize_embeddings.ipynb +++ b/notebooks/visualize_embeddings.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 22, + "execution_count": 117, "id": "8ef5cd92", "metadata": {}, "outputs": [ @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 118, "id": "78c4643a", "metadata": {}, "outputs": [], @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 119, "id": "ffba4333", "metadata": {}, "outputs": [], @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 120, "id": "5bc81f71", "metadata": {}, "outputs": [], @@ -57,7 +57,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 121, "id": "3de8bcf2", "metadata": { "lines_to_next_cell": 0 @@ -73,7 +73,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 122, "id": "91a045ba", "metadata": {}, "outputs": [], @@ -93,17 +93,17 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 123, "id": "bc50c296", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 51, + "execution_count": 123, "metadata": {}, "output_type": "execute_result" } @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 124, "id": "82766a17", "metadata": {}, "outputs": [], @@ -138,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 125, "id": "ead15a36", "metadata": {}, "outputs": [ @@ -148,7 +148,7 @@ "" ] }, - "execution_count": 62, + "execution_count": 125, "metadata": {}, "output_type": "execute_result" } @@ -160,7 +160,7 @@ "# checkpoint = torch.load(model.get_weights())\n", "\n", "\n", - "CHECKPOINT_PATH = \"../out-checkpoints/augment_rotate_75_x8/checkpoint_embed_187.pth\"\n", + "CHECKPOINT_PATH = \"../out-checkpoints/augment_rotate_75_x8/checkpoint_embed_1105.pth\"\n", "checkpoint = torch.load(CHECKPOINT_PATH, map_location=device)\n", "\n", "\n", @@ -175,16 +175,16 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 126, "id": "20f8036d", "metadata": {}, "outputs": [], "source": [ "SL_DATASET = 'wlasl' # or 'lsa'\n", "if SL_DATASET == 'wlasl':\n", - " dataset_name = \"processed\"\n", + " dataset_name = \"fingerspelling\"\n", " num_classes = 15\n", - " split_dataset_path = \"spoter_test.csv\"\n", + " split_dataset_path = \"fingerspelling_train.csv\"\n", "else:\n", " dataset_name = \"lsa64_mapped_mediapipe_only_landmarks_25fps\"\n", " num_classes = 64\n", @@ -194,7 +194,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 127, "id": "758716b6", "metadata": {}, "outputs": [], @@ -214,7 +214,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 128, "id": "f1527959", "metadata": {}, "outputs": [ @@ -231,7 +231,7 @@ ], "source": [ "dataloaders = {}\n", - "splits = ['test']\n", + "splits = ['train']\n", "dfs = {}\n", "for split in splits:\n", " split_set_path = op.join(dataset_folder, split_dataset_path.format(split))\n", @@ -264,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 129, "id": "3c3af5bf", "metadata": { "lines_to_next_cell": 0 @@ -273,10 +273,10 @@ { "data": { "text/plain": [ - "2000" + "560" ] }, - "execution_count": 74, + "execution_count": 129, "metadata": {}, "output_type": "execute_result" } @@ -295,13 +295,13 @@ " # df['video_fn'] = df['video_id'].apply(lambda video_id: os.path.join(BASE_DATA_FOLDER, f'lsa/videos/{video_id}.mp4'))\n", " dfs[split] = df\n", "\n", - "df = pd.concat([dfs['test']]).reset_index(drop=True)\n", + "df = pd.concat([dfs['train']]).reset_index(drop=True)\n", "len(df)" ] }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 130, "id": "dccbe1b9", "metadata": {}, "outputs": [], @@ -324,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 131, "id": "904298f0", "metadata": {}, "outputs": [], @@ -338,7 +338,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 132, "id": "42832f7c", "metadata": { "scrolled": false @@ -349,7 +349,7 @@ "text/html": [ "
\n", " \n", - " Loading BokehJS ...\n", + " Loading BokehJS ...\n", "
\n" ] }, @@ -358,7 +358,7 @@ }, { "data": { - "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const 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\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n // Clean up Bokeh references\n if (id != null && id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim();\n if (id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\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 const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1849\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\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, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\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 == null || js_urls.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;\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(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\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 for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\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 };\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 const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1849\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));", + "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const 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\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n // Clean up Bokeh references\n if (id != null && id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim();\n if (id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\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 const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"3649\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\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, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\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 == null || js_urls.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;\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(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\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 for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\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 };\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 const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"3649\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));", "application/vnd.bokehjs_load.v0+json": "" }, "metadata": {}, @@ -384,8 +384,10 @@ "\"\"\"\n", "\n", "# get labels\n", - "labels = df['sign'].values\n", - "cmap = LinearColorMapper(palette=\"Turbo256\", low=0, high=len(labels))\n", + "labels = df['label_name'].values\n", + "# get unique labels\n", + "unique_labels = np.unique(labels)\n", + "cmap = LinearColorMapper(palette=\"Turbo256\", low=0, high=len(unique_labels))\n", "\n", "output_notebook()\n", "# or \n", @@ -399,23 +401,33 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 133, "id": "ead4daf7", "metadata": { "scrolled": false }, "outputs": [ { - "ename": "KeyError", - "evalue": "21", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[82], line 12\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[39m# map labels to 0 to num_classes\u001b[39;00m\n\u001b[1;32m 11\u001b[0m label_to_id \u001b[39m=\u001b[39m {label: i \u001b[39mfor\u001b[39;00m i, label \u001b[39min\u001b[39;00m \u001b[39menumerate\u001b[39m(set_labels)}\n\u001b[0;32m---> 12\u001b[0m column_data[\u001b[39m'\u001b[39m\u001b[39mlabels\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m [label_to_id[label] \u001b[39mfor\u001b[39;00m label \u001b[39min\u001b[39;00m column_data[\u001b[39m'\u001b[39m\u001b[39mlabel\u001b[39m\u001b[39m'\u001b[39m]]\n\u001b[1;32m 15\u001b[0m \u001b[39mif\u001b[39;00m use_img_div:\n\u001b[1;32m 16\u001b[0m emb_videos \u001b[39m=\u001b[39m load_videos(df[\u001b[39m'\u001b[39m\u001b[39mvideo_fn\u001b[39m\u001b[39m'\u001b[39m])\n", - "Cell \u001b[0;32mIn[82], line 12\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[39m# map labels to 0 to num_classes\u001b[39;00m\n\u001b[1;32m 11\u001b[0m label_to_id \u001b[39m=\u001b[39m {label: i \u001b[39mfor\u001b[39;00m i, label \u001b[39min\u001b[39;00m \u001b[39menumerate\u001b[39m(set_labels)}\n\u001b[0;32m---> 12\u001b[0m column_data[\u001b[39m'\u001b[39m\u001b[39mlabels\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m [label_to_id[label] \u001b[39mfor\u001b[39;00m label \u001b[39min\u001b[39;00m column_data[\u001b[39m'\u001b[39m\u001b[39mlabel\u001b[39m\u001b[39m'\u001b[39m]]\n\u001b[1;32m 15\u001b[0m \u001b[39mif\u001b[39;00m use_img_div:\n\u001b[1;32m 16\u001b[0m emb_videos \u001b[39m=\u001b[39m load_videos(df[\u001b[39m'\u001b[39m\u001b[39mvideo_fn\u001b[39m\u001b[39m'\u001b[39m])\n", - "\u001b[0;31mKeyError\u001b[0m: 21" - ] + "data": { + "text/html": [ + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"3319067e-80c8-43c4-bb1a-c415f4fcd840\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"3661\"}],\"center\":[{\"id\":\"3664\"},{\"id\":\"3668\"},{\"id\":\"3702\"}],\"height\":800,\"left\":[{\"id\":\"3665\"}],\"renderers\":[{\"id\":\"3690\"}],\"title\":{\"id\":\"3651\"},\"toolbar\":{\"id\":\"3677\"},\"width\":1000,\"x_range\":{\"id\":\"3653\"},\"x_scale\":{\"id\":\"3657\"},\"y_range\":{\"id\":\"3655\"},\"y_scale\":{\"id\":\"3659\"}},\"id\":\"3650\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"3674\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3697\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3670\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data\":{\"label\":[0,1,2,3,5,2,6,7,6,6,8,2,9,10,6,12,9,4,13,5,4,8,14,15,13,14,16,17,13,18,5,16,19,17,20,15,21,10,3,5,22,14,21,16,19,3,13,23,18,3,20,10,2,3,11,13,9,5,2,15,21,13,18,6,2,9,22,4,22,21,23,0,3,14,17,6,12,23,0,3,23,7,16,3,18,4,11,6,25,7,4,9,9,11,13,4,25,10,9,10,17,12,5,24,0,13,21,17,15,25,17,11,5,2,12,10,21,22,8,12,24,0,22,23,21,22,10,21,23,22,17,22,21,7,24,7,19,7,3,15,24,19,25,10,2,21,5,19,15,21,7,3,19,20,9,3,15,6,3,12,23,8,18,13,6,3,20,23,20,1,7,24,8,3,19,3,5,15,8,21,24,3,13,2,13,5,22,9,22,21,6,1,14,4,7,5,24,13,15,2,8,5,6,24,10,0,4,4,22,8,8,8,25,8,15,17,19,1,17,11,5,22,14,5,24,16,10,25,12,3,6,0,19,0,11,25,7,19,16,9,14,19,9,12,19,13,20,1,6,19,11,12,23,14,12,14,24,16,6,5,24,25,14,6,8,1,9,13,4,12,10,13,12,10,9,18,15,22,10,3,9,25,20,21,23,10,11,17,1,25,21,7,3,18,14,4,17,8,11,22,25,25,15,4,22,9,23,4,21,18,1,23,17,25,9,17,21,7,14,24,9,11,25,5,5,9,23,13,15,3,0,15,16,6,14,3,20,5,23,4,11,0,23,0,9,16,21,4,21,22,7,15,1,22,12,24,24,16,20,20,3,15,11,13,12,2,4,23,14,22,18,12,13,11,16,19,6,21,8,9,5,21,10,23,10,19,7,14,7,23,3,8,18,19,11,0,25,8,15,11,12,4,7,9,23,14,22,1,1,22,12,18,24,23,22,20,18,17,10,1,2,0,20,10,18,2,6,16,11,24,24,2,24,6,11,20,0,23,17,25,15,12,9,4,18,4,15,24,15,16,16,12,21,16,9,17,6,12,15,5,13,20,20,5,13,20,12,16,19,10,25,14,2,8,10,19,12,20,20,10,16,18,3,23,5,14,17,25,11,0,18,0,20,19,19,24,4,14,4,3,14,10,7,24,19,1,1,25,6,25,13,10,25,14,2,2,14,7,0,5,12,8,9,1,10,0,5,19,19,22,9,10,19,5,15,4,7,0,6,8,15,22,20,5,17,20,7,17,11,25,7,17,24,13,17,24,2,14,8,5],\"label_desc\":[\"B\",\"D\",\"X\",\"O\",\"W\",\"X\",\"G\",\"I\",\"G\",\"G\",\"Y\",\"X\",\"H\",\"T\",\"G\",\"R\",\"H\",\"S\",\"M\",\"W\",\"S\",\"Y\",\"Z\",\"N\",\"M\",\"Z\",\"C\",\"J\",\"M\",\"E\",\"W\",\"C\",\"U\",\"J\",\"L\",\"N\",\"V\",\"T\",\"O\",\"W\",\"Q\",\"Z\",\"V\",\"C\",\"U\",\"O\",\"M\",\"A\",\"E\",\"O\",\"L\",\"T\",\"X\",\"O\",\"K\",\"M\",\"H\",\"W\",\"X\",\"N\",\"V\",\"M\",\"E\",\"G\",\"X\",\"H\",\"Q\",\"S\",\"Q\",\"V\",\"A\",\"B\",\"O\",\"Z\",\"J\",\"G\",\"R\",\"A\",\"B\",\"O\",\"A\",\"I\",\"C\",\"O\",\"E\",\"S\",\"K\",\"G\",\"P\",\"I\",\"S\",\"H\",\"H\",\"K\",\"M\",\"S\",\"P\",\"T\",\"H\",\"T\",\"J\",\"R\",\"W\",\"F\",\"B\",\"M\",\"V\",\"J\",\"N\",\"P\",\"J\",\"K\",\"W\",\"X\",\"R\",\"T\",\"V\",\"Q\",\"Y\",\"R\",\"F\",\"B\",\"Q\",\"A\",\"V\",\"Q\",\"T\",\"V\",\"A\",\"Q\",\"J\",\"Q\",\"V\",\"I\",\"F\",\"I\",\"U\",\"I\",\"O\",\"N\",\"F\",\"U\",\"P\",\"T\",\"X\",\"V\",\"W\",\"U\",\"N\",\"V\",\"I\",\"O\",\"U\",\"L\",\"H\",\"O\",\"N\",\"G\",\"O\",\"R\",\"A\",\"Y\",\"E\",\"M\",\"G\",\"O\",\"L\",\"A\",\"L\",\"D\",\"I\",\"F\",\"Y\",\"O\",\"U\",\"O\",\"W\",\"N\",\"Y\",\"V\",\"F\",\"O\",\"M\",\"X\",\"M\",\"W\",\"Q\",\"H\",\"Q\",\"V\",\"G\",\"D\",\"Z\",\"S\",\"I\",\"W\",\"F\",\"M\",\"N\",\"X\",\"Y\",\"W\",\"G\",\"F\",\"T\",\"B\",\"S\",\"S\",\"Q\",\"Y\",\"Y\",\"Y\",\"P\",\"Y\",\"N\",\"J\",\"U\",\"D\",\"J\",\"K\",\"W\",\"Q\",\"Z\",\"W\",\"F\",\"C\",\"T\",\"P\",\"R\",\"O\",\"G\",\"B\",\"U\",\"B\",\"K\",\"P\",\"I\",\"U\",\"C\",\"H\",\"Z\",\"U\",\"H\",\"R\",\"U\",\"M\",\"L\",\"D\",\"G\",\"U\",\"K\",\"R\",\"A\",\"Z\",\"R\",\"Z\",\"F\",\"C\",\"G\",\"W\",\"F\",\"P\",\"Z\",\"G\",\"Y\",\"D\",\"H\",\"M\",\"S\",\"R\",\"T\",\"M\",\"R\",\"T\",\"H\",\"E\",\"N\",\"Q\",\"T\",\"O\",\"H\",\"P\",\"L\",\"V\",\"A\",\"T\",\"K\",\"J\",\"D\",\"P\",\"V\",\"I\",\"O\",\"E\",\"Z\",\"S\",\"J\",\"Y\",\"K\",\"Q\",\"P\",\"P\",\"N\",\"S\",\"Q\",\"H\",\"A\",\"S\",\"V\",\"E\",\"D\",\"A\",\"J\",\"P\",\"H\",\"J\",\"V\",\"I\",\"Z\",\"F\",\"H\",\"K\",\"P\",\"W\",\"W\",\"H\",\"A\",\"M\",\"N\",\"O\",\"B\",\"N\",\"C\",\"G\",\"Z\",\"O\",\"L\",\"W\",\"A\",\"S\",\"K\",\"B\",\"A\",\"B\",\"H\",\"C\",\"V\",\"S\",\"V\",\"Q\",\"I\",\"N\",\"D\",\"Q\",\"R\",\"F\",\"F\",\"C\",\"L\",\"L\",\"O\",\"N\",\"K\",\"M\",\"R\",\"X\",\"S\",\"A\",\"Z\",\"Q\",\"E\",\"R\",\"M\",\"K\",\"C\",\"U\",\"G\",\"V\",\"Y\",\"H\",\"W\",\"V\",\"T\",\"A\",\"T\",\"U\",\"I\",\"Z\",\"I\",\"A\",\"O\",\"Y\",\"E\",\"U\",\"K\",\"B\",\"P\",\"Y\",\"N\",\"K\",\"R\",\"S\",\"I\",\"H\",\"A\",\"Z\",\"Q\",\"D\",\"D\",\"Q\",\"R\",\"E\",\"F\",\"A\",\"Q\",\"L\",\"E\",\"J\",\"T\",\"D\",\"X\",\"B\",\"L\",\"T\",\"E\",\"X\",\"G\",\"C\",\"K\",\"F\",\"F\",\"X\",\"F\",\"G\",\"K\",\"L\",\"B\",\"A\",\"J\",\"P\",\"N\",\"R\",\"H\",\"S\",\"E\",\"S\",\"N\",\"F\",\"N\",\"C\",\"C\",\"R\",\"V\",\"C\",\"H\",\"J\",\"G\",\"R\",\"N\",\"W\",\"M\",\"L\",\"L\",\"W\",\"M\",\"L\",\"R\",\"C\",\"U\",\"T\",\"P\",\"Z\",\"X\",\"Y\",\"T\",\"U\",\"R\",\"L\",\"L\",\"T\",\"C\",\"E\",\"O\",\"A\",\"W\",\"Z\",\"J\",\"P\",\"K\",\"B\",\"E\",\"B\",\"L\",\"U\",\"U\",\"F\",\"S\",\"Z\",\"S\",\"O\",\"Z\",\"T\",\"I\",\"F\",\"U\",\"D\",\"D\",\"P\",\"G\",\"P\",\"M\",\"T\",\"P\",\"Z\",\"X\",\"X\",\"Z\",\"I\",\"B\",\"W\",\"R\",\"Y\",\"H\",\"D\",\"T\",\"B\",\"W\",\"U\",\"U\",\"Q\",\"H\",\"T\",\"U\",\"W\",\"N\",\"S\",\"I\",\"B\",\"G\",\"Y\",\"N\",\"Q\",\"L\",\"W\",\"J\",\"L\",\"I\",\"J\",\"K\",\"P\",\"I\",\"J\",\"F\",\"M\",\"J\",\"F\",\"X\",\"Z\",\"Y\",\"W\"],\"labels\":[0,1,2,3,5,2,6,7,6,6,8,2,9,10,6,12,9,4,13,5,4,8,14,15,13,14,16,17,13,18,5,16,19,17,20,15,21,10,3,5,22,14,21,16,19,3,13,23,18,3,20,10,2,3,11,13,9,5,2,15,21,13,18,6,2,9,22,4,22,21,23,0,3,14,17,6,12,23,0,3,23,7,16,3,18,4,11,6,25,7,4,9,9,11,13,4,25,10,9,10,17,12,5,24,0,13,21,17,15,25,17,11,5,2,12,10,21,22,8,12,24,0,22,23,21,22,10,21,23,22,17,22,21,7,24,7,19,7,3,15,24,19,25,10,2,21,5,19,15,21,7,3,19,20,9,3,15,6,3,12,23,8,18,13,6,3,20,23,20,1,7,24,8,3,19,3,5,15,8,21,24,3,13,2,13,5,22,9,22,21,6,1,14,4,7,5,24,13,15,2,8,5,6,24,10,0,4,4,22,8,8,8,25,8,15,17,19,1,17,11,5,22,14,5,24,16,10,25,12,3,6,0,19,0,11,25,7,19,16,9,14,19,9,12,19,13,20,1,6,19,11,12,23,14,12,14,24,16,6,5,24,25,14,6,8,1,9,13,4,12,10,13,12,10,9,18,15,22,10,3,9,25,20,21,23,10,11,17,1,25,21,7,3,18,14,4,17,8,11,22,25,25,15,4,22,9,23,4,21,18,1,23,17,25,9,17,21,7,14,24,9,11,25,5,5,9,23,13,15,3,0,15,16,6,14,3,20,5,23,4,11,0,23,0,9,16,21,4,21,22,7,15,1,22,12,24,24,16,20,20,3,15,11,13,12,2,4,23,14,22,18,12,13,11,16,19,6,21,8,9,5,21,10,23,10,19,7,14,7,23,3,8,18,19,11,0,25,8,15,11,12,4,7,9,23,14,22,1,1,22,12,18,24,23,22,20,18,17,10,1,2,0,20,10,18,2,6,16,11,24,24,2,24,6,11,20,0,23,17,25,15,12,9,4,18,4,15,24,15,16,16,12,21,16,9,17,6,12,15,5,13,20,20,5,13,20,12,16,19,10,25,14,2,8,10,19,12,20,20,10,16,18,3,23,5,14,17,25,11,0,18,0,20,19,19,24,4,14,4,3,14,10,7,24,19,1,1,25,6,25,13,10,25,14,2,2,14,7,0,5,12,8,9,1,10,0,5,19,19,22,9,10,19,5,15,4,7,0,6,8,15,22,20,5,17,20,7,17,11,25,7,17,24,13,17,24,2,14,8,5],\"split\":[\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\",\"train\"],\"x\":{\"__ndarray__\":\"8amkwDREzr/wEwbB4/NdwFYdXcF7KDPBUZv+Pz32xEBTZE1ACJoEQMgWZkExyipA8EdJwVpJrUANK7TA238xwVPgKcErMtHAxOqCQaZcMMFCXmRBlQRiQVd99UBWfYpBytUxQciD0ECKsL7Ah8kWwR+Iw8AZLL3AJWlYwYgCgsClaZfBlEbyQD7OIUAlnZRBO6GZwbL1v0DFe0/A2cxJwWG/OkEaKPhAkB+ZweiXp8D7dYrBkWZAwEEMa0GySyhB80sSP4HJBsAi7QbBpFEGwdFSTEA47ZvAxLoOQWnGZ0Ey+0bB/BdMwdKosT+NYXFBObOSwfpwnUFq/efAAgnqwM1q6D/14DnBlBdQQXQ5YUEZGjpB+dtSwfAfD0Fg/n/AKDKCwHtKb0CwWrJAIHxPQN6wJ8GpviVBkN2ewHtjn8CH6RNBVGEdQW6mnsAaP5XAgqvRvimfpMDMDgdB7eVJQO5ohUGayxhBXIj6wKy0jMFkPCbBax1dQNFCdEHFGXFB+veHQfYXBUFHhnbBRkGxQK/JpUDkd1vBtJxPwT57K7/qtSHBA56EQacgkMHkIte/RoNsQZ+Ui0GrxxJAn8HhQGkD1sC5G/o/0OkewXHPP0DOqYfBBEaKQbBSl0F3toPBRTvJPxOZrsAO509B5VbhQCTaeMHYqUu/fET5wLA8n8EgzflA3SgewJne5UCRGNe/JsWlwZUD+kAx1IBALF0PQfDsmcEvwvBAB45/wP+Ac0GkwoS9F69NwURUfUEvspFArDmJP9r2nMF+TFTBiAdnwaAwE0ELRJHBojuIwKAbWsCbkYPBLqW2P03PGMGz6GPAfjGGQZMSUEBMKRbA4c0gwWGA4kClr5RBhEtpvvVyokHpopBA91fXwPCmKEC+sCxBhu34wCzj3sB68QZBWXsiQFRBW0FoQm/AJTU9wT/+lMAtAjnBRy6RQZRbbEHCdJbBHBa4P5IfX8B6HohBlFmrQGcZor72qjjBqw6EQcqeHcG7pYZBm3w4wfNEij8MFcbAyPKnQE78eUFn3glBO9ZmwUFMnsAuPO2/WOuMQUlhhEA0Bo9Bg+1HwSFAI0BHf8w/R168QE84usCL8QHBbg8mwSBCQkHpYWtBGF9YQdZxl0Fg4ERBqmyQQasXZr1jhHE/yxQ7wYs84cB7VglBbLTbQOjvL8GdgztBNvkBQIJNK8FCh5E/gai0wKK+vkC2Ohy/XXRAwQq+KcDEdjBAScy/wGtGkcFzpMvAs54PwRNenEHz9QRB6RRmwVPWx8DDql7BUBPIQBPVj8F1VxfBOXROwRLaj8HSgIRBiIgbQJJp5T3UPsY/6O2dwSfkE0Hv9IbBNfUNQU6NkUH2Ce3AVGsywXIrAL7k+MfAQqfLP9lFC8FrMl5A3HqDQZF45kA4ps4/xXpeQbhMdcDxSWzBbl1SQTyFXEGY623ByhTuQBf+k0FrxDzByFK7P+qZXMHMrIc8qQSMQcDkMEHhwvbAkMFTwLFbZ8E/CGlBC88GQE7ClsG/UgNBvkhoQOKUE0EcS+VA/3LVwJfYhkHvXY/BLTuYwJNNH8ARv4fATsvWQAUhfkF6lgpBp2uFwNuoG0EOvWpBaandPl7knL64zzW/v0l4QVVnK0FI5RnBA+pXQBP8eUFgk3/BSX2/wBrIwcBrsCDATAgCQY4ASUHgmkPBYyKUQEtNm8Fy5AFByqXRQPtSI0Bx5TLBcq8rwfE6H8BsQ2XBc8ZSwYCBcsFZvKu+MENxQQu5f0Ff0gnAY8+8wIUcfEFEkMLA5vkfQPx+n0BhODHAMmcCQGqrUMG9q/ZAqU9mQf3C4UAZydvAZx0NQcs6MsE21YPB5xOnwC96GMEVrGtBBe6KwZqyhkEagQRBTIhqQcxVv8DCfjRBvFM4waxmej8AVABAwyy0wOUTgkB1/v3APRrmv7pvqb/nx/1AYYRxQf6JVMHGUfY/hcVuQb4TBUGJgTTBwhmDQaLMQD3KwzfBDaGHQcxROcGcKNLAXK+UwTuHhj+Dcz7B/eAQQYEBMMFJLG7Bt4GPwY29pEDXNi9A1velQOeAkMG4QyFB+iGOQN5/BUGS2idBLLUhwPNCb0HSUJ3AhOafweUhB0GpKyDBKP2UQSlfFUHQdnxBSwERQcMZK8E2NIFBNbIIQdzXNMFeAoJA5IWvQIrofUEJbxPBOsDmwIqHSUEcanXBveOfv6ijtL5Lf/lAONKCQaYx2j8OK/rAHNnbP50lMsFoY9zARRGyQFE1osCDZLhA3HCFQBqWncA+GVhAiGgqQMNBqcBAhirBUF5BQAtpDEAkReE/yTPAP4pUz8CWUhBBQwLZP+NH2sC30ARB36JWQEvmg0GwGYdBcLBewTW4hsFhpoNBareTv53hYEEBEJ1BdT7aPkqXhEHgeLPAiAbJwGPGJ8FUQaDBt3i5wMqoQMFN+tBAc0Q0QAb35sC1EXRB/01awR8mmEGlas5AxlKnQOKaXsFBDqFBWhCzQAb/XsE43PC/WwZVwaf2zEDHuB1BmncAQUrDyEBDhzhAqVaGQC35jsGJ5kHBw+MJQKIYsj+ooMJANQvOwGuZ7MDoYnzAvBbFvkeWXcGMcxE/j3a7QOcHNEHvQc1AZTL5wPT8q7+zqBDBU7v1P53om8FsIofBJ40Bwca7YUEPVYBAlsdvQaB6PMBb2YNA47WNQJPx10CmpRs+4R6AwXuU08D8ax/BU94zQQ39qEC+QiZBViJ8QW+0iUBc9eO+NZVxQLQoqUBWMIdAAA8AQDohBUGtiQbAz+xWwb/KbsHeKFVB9cd8wZGO48CPi7RAepq3wHp+ZcHu+oLBKzyowQufdEF4q2fB0DGiQLnIbsE6oULB145QQUrbkMA7SdJA6w3JvxfCuMCXo4BBQ1GVQQOKakG8qw5BzbR9wTEvob8UZaBAK2oSQSJxCUBYvhhB34KdQcMYYMAV0zDAj7GtP+QlE8BrgWdAOLNZP5y1xkCDyulARt4UQQTFacE=\",\"dtype\":\"float32\",\"order\":\"little\",\"shape\":[560]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"order\":\"little\",\"shape\":[560]}},\"selected\":{\"id\":\"3700\"},\"selection_policy\":{\"id\":\"3699\"}},\"id\":\"3685\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"3662\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3685\"},\"glyph\":{\"id\":\"3687\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3689\"},\"nonselection_glyph\":{\"id\":\"3688\"},\"view\":{\"id\":\"3691\"}},\"id\":\"3690\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3700\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3672\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"3675\"}},\"id\":\"3671\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3687\",\"type\":\"Scatter\"},{\"attributes\":{\"axis\":{\"id\":\"3661\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"3664\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3699\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"3698\",\"type\":\"AllLabels\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3675\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"3685\"}},\"id\":\"3691\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3695\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"3669\"},{\"id\":\"3670\"},{\"id\":\"3671\"},{\"id\":\"3672\"},{\"id\":\"3673\"},{\"id\":\"3674\"},{\"id\":\"3676\"}]},\"id\":\"3677\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3694\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3659\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3673\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3689\",\"type\":\"Scatter\"},{\"attributes\":{\"high\":26,\"low\":0,\"palette\":[\"#30123b\",\"#311542\",\"#32184a\",\"#341b51\",\"#351e58\",\"#36215f\",\"#372365\",\"#38266c\",\"#392972\",\"#3a2c79\",\"#3b2f7f\",\"#3c3285\",\"#3c358b\",\"#3d3791\",\"#3e3a96\",\"#3f3d9c\",\"#4040a1\",\"#4043a6\",\"#4145ab\",\"#4148b0\",\"#424bb5\",\"#434eba\",\"#4350be\",\"#4353c2\",\"#4456c7\",\"#4458cb\",\"#455bce\",\"#455ed2\",\"#4560d6\",\"#4563d9\",\"#4666dd\",\"#4668e0\",\"#466be3\",\"#466de6\",\"#4670e8\",\"#4673eb\",\"#4675ed\",\"#4678f0\",\"#467af2\",\"#467df4\",\"#467ff6\",\"#4682f8\",\"#4584f9\",\"#4587fb\",\"#4589fc\",\"#448cfd\",\"#438efd\",\"#4291fe\",\"#4193fe\",\"#4096fe\",\"#3f98fe\",\"#3e9bfe\",\"#3c9dfd\",\"#3ba0fc\",\"#39a2fc\",\"#38a5fb\",\"#36a8f9\",\"#34aaf8\",\"#33acf6\",\"#31aff5\",\"#2fb1f3\",\"#2db4f1\",\"#2bb6ef\",\"#2ab9ed\",\"#28bbeb\",\"#26bde9\",\"#25c0e6\",\"#23c2e4\",\"#21c4e1\",\"#20c6df\",\"#1ec9dc\",\"#1dcbda\",\"#1ccdd7\",\"#1bcfd4\",\"#1ad1d2\",\"#19d3cf\",\"#18d5cc\",\"#18d7ca\",\"#17d9c7\",\"#17dac4\",\"#17dcc2\",\"#17debf\",\"#18e0bd\",\"#18e1ba\",\"#19e3b8\",\"#1ae4b6\",\"#1be5b4\",\"#1de7b1\",\"#1ee8af\",\"#20e9ac\",\"#22eba9\",\"#24eca6\",\"#27eda3\",\"#29eea0\",\"#2cef9d\",\"#2ff09a\",\"#32f197\",\"#35f394\",\"#38f491\",\"#3bf48d\",\"#3ff58a\",\"#42f687\",\"#46f783\",\"#4af880\",\"#4df97c\",\"#51f979\",\"#55fa76\",\"#59fb72\",\"#5dfb6f\",\"#61fc6c\",\"#65fc68\",\"#69fd65\",\"#6dfd62\",\"#71fd5f\",\"#74fe5c\",\"#78fe59\",\"#7cfe56\",\"#80fe53\",\"#84fe50\",\"#87fe4d\",\"#8bfe4b\",\"#8efe48\",\"#92fe46\",\"#95fe44\",\"#98fe42\",\"#9bfd40\",\"#9efd3e\",\"#a1fc3d\",\"#a4fc3b\",\"#a6fb3a\",\"#a9fb39\",\"#acfa37\",\"#aef937\",\"#b1f836\",\"#b3f835\",\"#b6f735\",\"#b9f534\",\"#bbf434\",\"#bef334\",\"#c0f233\",\"#c3f133\",\"#c5ef33\",\"#c8ee33\",\"#caed33\",\"#cdeb34\",\"#cfea34\",\"#d1e834\",\"#d4e735\",\"#d6e535\",\"#d8e335\",\"#dae236\",\"#dde036\",\"#dfde36\",\"#e1dc37\",\"#e3da37\",\"#e5d838\",\"#e7d738\",\"#e8d538\",\"#ead339\",\"#ecd139\",\"#edcf39\",\"#efcd39\",\"#f0cb3a\",\"#f2c83a\",\"#f3c63a\",\"#f4c43a\",\"#f6c23a\",\"#f7c039\",\"#f8be39\",\"#f9bc39\",\"#f9ba38\",\"#fab737\",\"#fbb537\",\"#fbb336\",\"#fcb035\",\"#fcae34\",\"#fdab33\",\"#fda932\",\"#fda631\",\"#fda330\",\"#fea12f\",\"#fe9e2e\",\"#fe9b2d\",\"#fe982c\",\"#fd952b\",\"#fd9229\",\"#fd8f28\",\"#fd8c27\",\"#fc8926\",\"#fc8624\",\"#fb8323\",\"#fb8022\",\"#fa7d20\",\"#fa7a1f\",\"#f9771e\",\"#f8741c\",\"#f7711b\",\"#f76e1a\",\"#f66b18\",\"#f56817\",\"#f46516\",\"#f36315\",\"#f26014\",\"#f15d13\",\"#ef5a11\",\"#ee5810\",\"#ed550f\",\"#ec520e\",\"#ea500d\",\"#e94d0d\",\"#e84b0c\",\"#e6490b\",\"#e5460a\",\"#e3440a\",\"#e24209\",\"#e04008\",\"#de3e08\",\"#dd3c07\",\"#db3a07\",\"#d93806\",\"#d73606\",\"#d63405\",\"#d43205\",\"#d23005\",\"#d02f04\",\"#ce2d04\",\"#cb2b03\",\"#c92903\",\"#c72803\",\"#c52602\",\"#c32402\",\"#c02302\",\"#be2102\",\"#bb1f01\",\"#b91e01\",\"#b61c01\",\"#b41b01\",\"#b11901\",\"#ae1801\",\"#ac1601\",\"#a91501\",\"#a61401\",\"#a31201\",\"#a01101\",\"#9d1001\",\"#9a0e01\",\"#970d01\",\"#940c01\",\"#910b01\",\"#8e0a01\",\"#8b0901\",\"#870801\",\"#840701\",\"#810602\",\"#7d0502\",\"#7a0402\"]},\"id\":\"3648\",\"type\":\"LinearColorMapper\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Check label by hovering mouse over the dots\"},\"id\":\"3651\",\"type\":\"Title\"},{\"attributes\":{\"axis\":{\"id\":\"3665\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"3668\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"field\":\"label_desc\"},\"renderers\":[{\"id\":\"3690\"}]},\"id\":\"3703\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null,\"tooltips\":\"\\n
\\n \\n
\\n @label_desc - @split\\n [#@video_id]\\n
\\n
\\n \\n\"},\"id\":\"3676\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"3657\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"3697\"},\"group\":null,\"major_label_policy\":{\"id\":\"3698\"},\"ticker\":{\"id\":\"3662\"}},\"id\":\"3661\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3653\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3703\"}]},\"id\":\"3702\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3669\",\"type\":\"PanTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"3694\"},\"group\":null,\"major_label_policy\":{\"id\":\"3695\"},\"ticker\":{\"id\":\"3666\"}},\"id\":\"3665\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"labels\",\"transform\":{\"id\":\"3648\"}},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3688\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"3655\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3666\",\"type\":\"BasicTicker\"}],\"root_ids\":[\"3650\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"3319067e-80c8-43c4-bb1a-c415f4fcd840\",\"root_ids\":[\"3650\"],\"roots\":{\"3650\":\"0936cd18-7278-46e3-94eb-fd0b9db94288\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "3650" + } + }, + "output_type": "display_data" } ], "source": [ @@ -423,13 +435,13 @@ " x=df['tsne_x'],\n", " y=df['tsne_y'],\n", " label=df['labels'],\n", - " label_desc=df['sign'],\n", + " label_desc=df['label_name'],\n", " split=df['split'],\n", " # video_id=df['video_id']\n", ")\n", "\n", "# get unique labels\n", - "set_labels = list(set(labels))\n", + "set_labels = list(set(column_data['label']))\n", "\n", "# map labels to 0 to num_classes\n", "label_to_id = {label: i for i, label in enumerate(set_labels)}\n", @@ -445,7 +457,7 @@ "p.scatter(x='x',\n", " y='y',\n", " source=source,\n", - " color={'field': 'label', 'transform': cmap},\n", + " color={'field': 'labels', 'transform': cmap},\n", " legend_field='label_desc',\n", " size=10,\n", " alpha=0.5)\n", @@ -456,10 +468,489 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 134, "id": "1d761766", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "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", + "
nose_Xnose_YleftEye_XleftEye_YrightEye_XrightEye_YleftEar_XleftEar_YrightEar_XrightEar_Y...splitvideo_idlabelslabel_namevideo_widthvideo_heightfpslengthtsne_xtsne_y
0[0.498452,0.498553,0.498740,0.499141,0.499253,...[0.320706,0.326079,0.329347,0.330840,0.331348,...[0.534112,0.534081,0.534074,0.534061,0.533951,...[0.283401,0.285650,0.287332,0.288115,0.288350,...[0.461303,0.461805,0.462395,0.462959,0.463122,...[0.276863,0.278502,0.279791,0.280531,0.280942,...[0.558462,0.557758,0.557173,0.556385,0.555548,...[0.304631,0.305481,0.306485,0.306842,0.306911,...[0.432248,0.432255,0.432270,0.432289,0.432280,...[0.300599,0.302358,0.303453,0.304156,0.304925,......trainB!train!2_20230301114043553439_H4EER0B640.0480.030.0000003.933333-5.14574510.443328
1[0.499603,0.499782,0.499713,0.499718,0.499716,...[0.377759,0.372090,0.369328,0.368845,0.368575,...[0.545239,0.545351,0.545337,0.545315,0.545176,...[0.303044,0.300618,0.299811,0.299697,0.299686,...[0.450075,0.450722,0.451349,0.452002,0.452172,...[0.302042,0.301742,0.301553,0.301575,0.301589,...[0.571113,0.571111,0.571020,0.570947,0.570956,...[0.315368,0.314974,0.315351,0.315415,0.315432,...[0.411997,0.412929,0.413561,0.414035,0.414218,...[0.322391,0.322607,0.322609,0.322896,0.323251,......trainD!train!4_20230228231932508739_203WJ1D640.0480.015.0000004.000000-1.611456-13.267664
2[0.506591,0.507312,0.507955,0.508396,0.508882,...[0.397696,0.397776,0.397885,0.397972,0.398277,...[0.554327,0.554781,0.555182,0.555651,0.556110,...[0.343845,0.343422,0.343181,0.342978,0.342935,...[0.464670,0.464618,0.464613,0.464606,0.464599,...[0.342834,0.343746,0.344376,0.344640,0.345239,...[0.589977,0.589761,0.589638,0.589578,0.589559,...[0.373605,0.372651,0.372061,0.371614,0.371254,...[0.439167,0.439298,0.439412,0.439468,0.439555,...[0.369968,0.371493,0.372602,0.372962,0.373442,......trainX!train!24_20230313193727472324_QZ48Y2X640.0480.016.6666673.840000-8.379868-9.681334
3[0.563219,0.564298,0.564446,0.564395,0.564335,...[0.453190,0.454664,0.455088,0.455298,0.455444,...[0.615217,0.615701,0.615785,0.615487,0.615222,...[0.390181,0.393572,0.394811,0.395661,0.396261,...[0.525598,0.528705,0.529607,0.529693,0.529688,...[0.376735,0.379062,0.379977,0.381287,0.382156,...[0.654602,0.652928,0.651517,0.649746,0.648452,...[0.414657,0.417255,0.418721,0.419629,0.420523,...[0.487122,0.489352,0.490052,0.490523,0.490764,...[0.389374,0.393725,0.396954,0.398778,0.399780,......trainO!train!15_20230316130349891667_94GK73O640.0480.030.0000003.933333-3.46801119.879887
4[0.534347,0.534350,0.534348,0.534351,0.534257,...[0.366040,0.369482,0.371950,0.373151,0.375056,...[0.573697,0.573855,0.573859,0.573850,0.573835,...[0.312855,0.314814,0.315821,0.316412,0.317599,...[0.499859,0.499486,0.499479,0.499499,0.499556,...[0.319383,0.320213,0.321349,0.322067,0.322843,...[0.614189,0.611145,0.609677,0.608775,0.608422,...[0.339505,0.339731,0.339752,0.339752,0.339768,...[0.469407,0.469407,0.469571,0.469696,0.469925,...[0.340159,0.340279,0.340594,0.340797,0.340932,......trainW!train!23_20230307162255985290_ZET4J5W640.0480.030.0000003.933333-13.8196629.518650
..................................................................
555[0.606690,0.606405,0.606321,0.606093,0.606335,...[0.533929,0.534472,0.534947,0.534889,0.537878,...[0.653085,0.652606,0.652609,0.652661,0.653283,...[0.484087,0.483741,0.483700,0.483398,0.483384,...[0.565955,0.565624,0.565546,0.565457,0.566247,...[0.485883,0.485947,0.486004,0.485994,0.486090,...[0.695397,0.695193,0.695191,0.695250,0.695459,...[0.516024,0.516022,0.516945,0.516905,0.516701,...[0.538066,0.539230,0.539818,0.540210,0.541056,...[0.520784,0.520945,0.521081,0.520950,0.520934,......trainF!train!6_20230306192746737772_PBKJJ24F640.0480.014.9850153.9372670.8503919.577452
556[0.573205,0.574528,0.574271,0.573180,0.572867,...[0.425358,0.427494,0.430532,0.431733,0.435090,...[0.639872,0.640339,0.640325,0.639660,0.639780,...[0.375095,0.375091,0.375052,0.374993,0.375106,...[0.520413,0.520586,0.519840,0.519523,0.519537,...[0.352025,0.352860,0.353801,0.354090,0.355025,...[0.679821,0.679411,0.678846,0.678844,0.678880,...[0.415243,0.415450,0.415431,0.415466,0.415461,...[0.473096,0.472687,0.471395,0.470902,0.470860,...[0.389405,0.390338,0.391198,0.391376,0.391626,......trainX!train!24_20230318150756432389_T1XTN2X640.0480.01000.0000002.5420006.209669-17.046406
557[0.438977,0.438982,0.438984,0.439069,0.439295,...[0.379214,0.380074,0.381261,0.382829,0.384443,...[0.486520,0.487420,0.488052,0.488677,0.489241,...[0.325285,0.328029,0.330372,0.332641,0.334531,...[0.406919,0.407048,0.407155,0.407375,0.407649,...[0.323748,0.324836,0.326162,0.327786,0.329353,...[0.526903,0.526998,0.527116,0.527220,0.527326,...[0.355733,0.356432,0.357204,0.357981,0.358690,...[0.381000,0.381048,0.381127,0.381257,0.381449,...[0.345693,0.345312,0.345154,0.345138,0.345149,......trainZ!train!26_20230313164104308046_EDP6L14Z640.0480.030.0000003.6000007.305971-23.761284
558[0.562234,0.562230,0.562221,0.562282,0.562289,...[0.604714,0.604817,0.605458,0.605774,0.605789,...[0.621810,0.620646,0.619884,0.619644,0.619426,...[0.547658,0.549717,0.552919,0.554406,0.554940,...[0.526415,0.526580,0.526635,0.526828,0.526959,...[0.542624,0.542402,0.542402,0.542387,0.542231,...[0.662978,0.662662,0.662170,0.661898,0.661687,...[0.577477,0.579208,0.581354,0.582389,0.582804,...[0.492118,0.492225,0.492262,0.492301,0.492397,...[0.553820,0.556338,0.558264,0.559222,0.559432,......trainY!train!25_20230313125334541132_UB0038Y640.0480.01000.0000003.9020009.30426610.654608
559[0.537090,0.537468,0.538434,0.537603,0.536945,...[0.298635,0.298634,0.298710,0.298587,0.298353,...[0.567478,0.567737,0.568967,0.568920,0.568670,...[0.272478,0.272135,0.271965,0.271218,0.270843,...[0.507183,0.507388,0.507843,0.507606,0.507431,...[0.266559,0.266555,0.266612,0.266608,0.266449,...[0.597032,0.597237,0.597694,0.598045,0.598189,...[0.297459,0.297435,0.297352,0.296939,0.296923,...[0.477034,0.477224,0.477629,0.477716,0.477724,...[0.294895,0.294492,0.294483,0.294487,0.294418,......trainW!train!23_20230307164435248346_FGQVL5W640.0480.01000.0000003.198000-14.6106008.728515
\n", + "

560 rows × 118 columns

\n", + "
" + ], + "text/plain": [ + " nose_X \\\n", + "0 [0.498452,0.498553,0.498740,0.499141,0.499253,... \n", + "1 [0.499603,0.499782,0.499713,0.499718,0.499716,... \n", + "2 [0.506591,0.507312,0.507955,0.508396,0.508882,... \n", + "3 [0.563219,0.564298,0.564446,0.564395,0.564335,... \n", + "4 [0.534347,0.534350,0.534348,0.534351,0.534257,... \n", + ".. ... \n", + "555 [0.606690,0.606405,0.606321,0.606093,0.606335,... \n", + "556 [0.573205,0.574528,0.574271,0.573180,0.572867,... \n", + "557 [0.438977,0.438982,0.438984,0.439069,0.439295,... \n", + "558 [0.562234,0.562230,0.562221,0.562282,0.562289,... \n", + "559 [0.537090,0.537468,0.538434,0.537603,0.536945,... \n", + "\n", + " nose_Y \\\n", + "0 [0.320706,0.326079,0.329347,0.330840,0.331348,... \n", + "1 [0.377759,0.372090,0.369328,0.368845,0.368575,... \n", + "2 [0.397696,0.397776,0.397885,0.397972,0.398277,... \n", + "3 [0.453190,0.454664,0.455088,0.455298,0.455444,... \n", + "4 [0.366040,0.369482,0.371950,0.373151,0.375056,... \n", + ".. ... \n", + "555 [0.533929,0.534472,0.534947,0.534889,0.537878,... \n", + "556 [0.425358,0.427494,0.430532,0.431733,0.435090,... \n", + "557 [0.379214,0.380074,0.381261,0.382829,0.384443,... \n", + "558 [0.604714,0.604817,0.605458,0.605774,0.605789,... \n", + "559 [0.298635,0.298634,0.298710,0.298587,0.298353,... \n", + "\n", + " leftEye_X \\\n", + "0 [0.534112,0.534081,0.534074,0.534061,0.533951,... \n", + "1 [0.545239,0.545351,0.545337,0.545315,0.545176,... \n", + "2 [0.554327,0.554781,0.555182,0.555651,0.556110,... \n", + "3 [0.615217,0.615701,0.615785,0.615487,0.615222,... \n", + "4 [0.573697,0.573855,0.573859,0.573850,0.573835,... \n", + ".. ... \n", + "555 [0.653085,0.652606,0.652609,0.652661,0.653283,... \n", + "556 [0.639872,0.640339,0.640325,0.639660,0.639780,... \n", + "557 [0.486520,0.487420,0.488052,0.488677,0.489241,... \n", + "558 [0.621810,0.620646,0.619884,0.619644,0.619426,... \n", + "559 [0.567478,0.567737,0.568967,0.568920,0.568670,... \n", + "\n", + " leftEye_Y \\\n", + "0 [0.283401,0.285650,0.287332,0.288115,0.288350,... \n", + "1 [0.303044,0.300618,0.299811,0.299697,0.299686,... \n", + "2 [0.343845,0.343422,0.343181,0.342978,0.342935,... \n", + "3 [0.390181,0.393572,0.394811,0.395661,0.396261,... \n", + "4 [0.312855,0.314814,0.315821,0.316412,0.317599,... \n", + ".. ... \n", + "555 [0.484087,0.483741,0.483700,0.483398,0.483384,... \n", + "556 [0.375095,0.375091,0.375052,0.374993,0.375106,... \n", + "557 [0.325285,0.328029,0.330372,0.332641,0.334531,... \n", + "558 [0.547658,0.549717,0.552919,0.554406,0.554940,... \n", + "559 [0.272478,0.272135,0.271965,0.271218,0.270843,... \n", + "\n", + " rightEye_X \\\n", + "0 [0.461303,0.461805,0.462395,0.462959,0.463122,... \n", + "1 [0.450075,0.450722,0.451349,0.452002,0.452172,... \n", + "2 [0.464670,0.464618,0.464613,0.464606,0.464599,... \n", + "3 [0.525598,0.528705,0.529607,0.529693,0.529688,... \n", + "4 [0.499859,0.499486,0.499479,0.499499,0.499556,... \n", + ".. ... \n", + "555 [0.565955,0.565624,0.565546,0.565457,0.566247,... \n", + "556 [0.520413,0.520586,0.519840,0.519523,0.519537,... \n", + "557 [0.406919,0.407048,0.407155,0.407375,0.407649,... \n", + "558 [0.526415,0.526580,0.526635,0.526828,0.526959,... \n", + "559 [0.507183,0.507388,0.507843,0.507606,0.507431,... \n", + "\n", + " rightEye_Y \\\n", + "0 [0.276863,0.278502,0.279791,0.280531,0.280942,... \n", + "1 [0.302042,0.301742,0.301553,0.301575,0.301589,... \n", + "2 [0.342834,0.343746,0.344376,0.344640,0.345239,... \n", + "3 [0.376735,0.379062,0.379977,0.381287,0.382156,... \n", + "4 [0.319383,0.320213,0.321349,0.322067,0.322843,... \n", + ".. ... \n", + "555 [0.485883,0.485947,0.486004,0.485994,0.486090,... \n", + "556 [0.352025,0.352860,0.353801,0.354090,0.355025,... \n", + "557 [0.323748,0.324836,0.326162,0.327786,0.329353,... \n", + "558 [0.542624,0.542402,0.542402,0.542387,0.542231,... \n", + "559 [0.266559,0.266555,0.266612,0.266608,0.266449,... \n", + "\n", + " leftEar_X \\\n", + "0 [0.558462,0.557758,0.557173,0.556385,0.555548,... \n", + "1 [0.571113,0.571111,0.571020,0.570947,0.570956,... \n", + "2 [0.589977,0.589761,0.589638,0.589578,0.589559,... \n", + "3 [0.654602,0.652928,0.651517,0.649746,0.648452,... \n", + "4 [0.614189,0.611145,0.609677,0.608775,0.608422,... \n", + ".. ... \n", + "555 [0.695397,0.695193,0.695191,0.695250,0.695459,... \n", + "556 [0.679821,0.679411,0.678846,0.678844,0.678880,... \n", + "557 [0.526903,0.526998,0.527116,0.527220,0.527326,... \n", + "558 [0.662978,0.662662,0.662170,0.661898,0.661687,... \n", + "559 [0.597032,0.597237,0.597694,0.598045,0.598189,... \n", + "\n", + " leftEar_Y \\\n", + "0 [0.304631,0.305481,0.306485,0.306842,0.306911,... \n", + "1 [0.315368,0.314974,0.315351,0.315415,0.315432,... \n", + "2 [0.373605,0.372651,0.372061,0.371614,0.371254,... \n", + "3 [0.414657,0.417255,0.418721,0.419629,0.420523,... \n", + "4 [0.339505,0.339731,0.339752,0.339752,0.339768,... \n", + ".. ... \n", + "555 [0.516024,0.516022,0.516945,0.516905,0.516701,... \n", + "556 [0.415243,0.415450,0.415431,0.415466,0.415461,... \n", + "557 [0.355733,0.356432,0.357204,0.357981,0.358690,... \n", + "558 [0.577477,0.579208,0.581354,0.582389,0.582804,... \n", + "559 [0.297459,0.297435,0.297352,0.296939,0.296923,... \n", + "\n", + " rightEar_X \\\n", + "0 [0.432248,0.432255,0.432270,0.432289,0.432280,... \n", + "1 [0.411997,0.412929,0.413561,0.414035,0.414218,... \n", + "2 [0.439167,0.439298,0.439412,0.439468,0.439555,... \n", + "3 [0.487122,0.489352,0.490052,0.490523,0.490764,... \n", + "4 [0.469407,0.469407,0.469571,0.469696,0.469925,... \n", + ".. ... \n", + "555 [0.538066,0.539230,0.539818,0.540210,0.541056,... \n", + "556 [0.473096,0.472687,0.471395,0.470902,0.470860,... \n", + "557 [0.381000,0.381048,0.381127,0.381257,0.381449,... \n", + "558 [0.492118,0.492225,0.492262,0.492301,0.492397,... \n", + "559 [0.477034,0.477224,0.477629,0.477716,0.477724,... \n", + "\n", + " rightEar_Y ... split \\\n", + "0 [0.300599,0.302358,0.303453,0.304156,0.304925,... ... train \n", + "1 [0.322391,0.322607,0.322609,0.322896,0.323251,... ... train \n", + "2 [0.369968,0.371493,0.372602,0.372962,0.373442,... ... train \n", + "3 [0.389374,0.393725,0.396954,0.398778,0.399780,... ... train \n", + "4 [0.340159,0.340279,0.340594,0.340797,0.340932,... ... train \n", + ".. ... ... ... \n", + "555 [0.520784,0.520945,0.521081,0.520950,0.520934,... ... train \n", + "556 [0.389405,0.390338,0.391198,0.391376,0.391626,... ... train \n", + "557 [0.345693,0.345312,0.345154,0.345138,0.345149,... ... train \n", + "558 [0.553820,0.556338,0.558264,0.559222,0.559432,... ... train \n", + "559 [0.294895,0.294492,0.294483,0.294487,0.294418,... ... train \n", + "\n", + " video_id labels label_name video_width \\\n", + "0 B!train!2_20230301114043553439_H4EER 0 B 640.0 \n", + "1 D!train!4_20230228231932508739_203WJ 1 D 640.0 \n", + "2 X!train!24_20230313193727472324_QZ48Y 2 X 640.0 \n", + "3 O!train!15_20230316130349891667_94GK7 3 O 640.0 \n", + "4 W!train!23_20230307162255985290_ZET4J 5 W 640.0 \n", + ".. ... ... ... ... \n", + "555 F!train!6_20230306192746737772_PBKJJ 24 F 640.0 \n", + "556 X!train!24_20230318150756432389_T1XTN 2 X 640.0 \n", + "557 Z!train!26_20230313164104308046_EDP6L 14 Z 640.0 \n", + "558 Y!train!25_20230313125334541132_UB003 8 Y 640.0 \n", + "559 W!train!23_20230307164435248346_FGQVL 5 W 640.0 \n", + "\n", + " video_height fps length tsne_x tsne_y \n", + "0 480.0 30.000000 3.933333 -5.145745 10.443328 \n", + "1 480.0 15.000000 4.000000 -1.611456 -13.267664 \n", + "2 480.0 16.666667 3.840000 -8.379868 -9.681334 \n", + "3 480.0 30.000000 3.933333 -3.468011 19.879887 \n", + "4 480.0 30.000000 3.933333 -13.819662 9.518650 \n", + ".. ... ... ... ... ... \n", + "555 480.0 14.985015 3.937267 0.850391 9.577452 \n", + "556 480.0 1000.000000 2.542000 6.209669 -17.046406 \n", + "557 480.0 30.000000 3.600000 7.305971 -23.761284 \n", + "558 480.0 1000.000000 3.902000 9.304266 10.654608 \n", + "559 480.0 1000.000000 3.198000 -14.610600 8.728515 \n", + "\n", + "[560 rows x 118 columns]" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df" ] diff --git a/preprocessing/create_fingerspelling_dataset.py b/preprocessing/create_fingerspelling_dataset.py index 36ac643..db4e4cb 100644 --- a/preprocessing/create_fingerspelling_dataset.py +++ b/preprocessing/create_fingerspelling_dataset.py @@ -143,9 +143,7 @@ def create(args): lmks_data.append(lmks_dict) df_lmks = pd.DataFrame(lmks_data) - print(df_lmks) df = pd.merge(df_video, df_lmks) - print(df) aux_columns = ['split', 'video_id', 'labels', 'label_name'] if videos_folder is not None: aux_columns += ['video_width', 'video_height', 'fps', 'length'] diff --git a/visualize_data.ipynb b/visualize_data.ipynb index 7586303..2146c06 100644 --- a/visualize_data.ipynb +++ b/visualize_data.ipynb @@ -151,7 +151,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -174,7 +174,7 @@ "\n", "\n", " # get first row\n", - " row = df.iloc[0]\n", + " row = df.iloc[20]\n", "\n", " # use matplotlib to create a scatter plot (the columns are X, Y, X, Y, X, Y, X, Y)\n", " import matplotlib.pyplot as plt\n", @@ -188,7 +188,7 @@ " for x in coords:\n", " new_coords.append(ast.literal_eval(x))\n", "\n", - " coords = [x[2] for x in new_coords]\n", + " coords = [x[0] for x in new_coords]\n", "\n", " return [float(x) for x in coords]\n", "\n", @@ -203,6 +203,10 @@ " # create a scatter plot\n", " plt.scatter(x_coords, y_coords)\n", "\n", + "\n", + " plt.xlim(0, 1)\n", + " plt.ylim(0, 1)\n", + " \n", " # add axis labels and a title\n", " plt.xlabel('X')\n", " plt.ylabel('Y')\n", @@ -214,12 +218,12 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 45, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/40lEQVR4nO3de1yUZf7/8feAwniAQUIOGilaVuQBjyym2QHDdCkrN9NKs4NpZiW137JcSa1ws8zyrJm2tqZb2dnwQLltxS6mUh7SzDDNBE8JqCskc/3+8MesI6CAMAM3r+fjMY/i4rpnPvc1g/Oe677va2zGGCMAAACL8PF2AQAAAFWJcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcANYwNVXX62rr77a22W4ycnJ0YABA3TBBRfIZrNp2rRp3i6pSrRs2VJ33323t8uoEc583e3atUs2m02LFi3yWk2ARLhBDbZp0yYNGDBALVq0kN1uV/PmzdW7d29Nnz692h5zyZIlpb4J//rrr3rmmWeUmZlZbY/tDcePH9czzzyjtWvXVvl9jxkzRitXrtTYsWO1ePFi9enTp9R+q1evls1m04QJE0r8LisrSw0bNtSAAQOqvL7qsnTpUtlsNs2dO7fU348cOVL169fXt99+6+HKrOP555/X+++/7+0yUJMZoAb66quvjJ+fn7n44ovNpEmTzPz588348ePN9ddfb1q3bl1tj9uvXz/TokWLEu3r1q0zkszChQur7bHPR69evUyvXr0qvN2BAweMJJOcnFzlNYWFhZk77rijXH0HDx5s/P39zfbt293a+/TpYwIDA83evXurvL7KatGihRk6dOhZ+/Tp08cEBQWZ7Oxst/b//Oc/xsfHx/z5z3+uxgo958zXndPpNP/973/NyZMnq/VxGzVqdM7nAHVbPW+HK6A0zz33nBwOh9atW6egoCC33+3fv987RVWDY8eOqVGjRt4uo1rs37+/xHNXlpdfflmffvqpRowYoc8++0zSqRmQ1NRUvfrqq2rWrFk1Vlr1Zs+erSuuuEJjxozRkiVLJElFRUV64IEHdNFFF+mZZ57xboHlVNHXp81mk91ur8aKgHLydroCSnPppZeaq6++utz9Fy9ebLp27WoaNGhggoKCTM+ePc3KlStdv3///fdN3759TUREhPHz8zOtWrUyEydOdPuE2atXLyPJ7daiRQvz+eefl2jXGbM4//73v01CQoIJDAw0DRo0MFdddZX58ssv3WpMTk42ksyWLVvMoEGDTFBQkImJiSlznxYuXGgkmX/+859m+PDhJjg42AQEBJi77rrLHD582K1vaTM3OTk55p577jGhoaHG39/ftG/f3ixatMj1+6ysrFL361yzODt37jQDBgwwTZo0MQ0aNDCxsbHm448/LlH3mbdzmTdvnpFkFi1aZH777TcTHh5uunbtaoqKis657a5du8zIkSNNmzZtjN1uN8HBwWbAgAEmKyvLrV9xbV9++aUZM2aMCQkJMQ0bNjT9+/c3+/fvd+vrdDrNpEmTTPPmzU2DBg3M1VdfbTZv3lyumRtjjHnhhReMJLNq1SpjjDFTp041ksynn356zm2NOfWauuGGG0xQUJBp2LChadeunZk2bZpbn7S0NNOjRw/TsGFD43A4zI033mi2bt1a4r42bNhg+vTpYwICAkyjRo3Mtddea9LT00sdm7Vr15qRI0eapk2bmqCgINfv586da1q1amXsdrvp2rWr+eKLL0q87opfU6f/bQwdOtQ0atTI/PLLL+amm24yjRo1MiEhIeaxxx4rMcMzZcoUExcXZ4KDg43dbjedOnUyb7/9tluf0l5bpz8fv/zyixk2bJgJDQ01fn5+Jjo62ixYsKDEmLz66qsmOjra9W9G586dzd///vcynw/ULoQb1EjXX3+9CQgIMJs2bTpn32eeecZIMt27dzdTpkwxr7zyihk8eLB54oknXH369+9vbrvtNjNlyhQze/Zs86c//clIMo8//rirz6pVq0xMTIwJCQkxixcvNosXLzbvvfeeyc7ONhMnTjSSzPDhw12/27lzpzHm1BuMn5+fiYuLMy+99JJ5+eWXTfv27Y2fn5/5z3/+47r/4nATHR1tbrrpJjNr1iwzc+bMMver+M2mXbt2pmfPnubVV181o0aNMj4+Puaqq64yTqfT1ffMN5njx4+byy+/3NSvX9+MGTPGvPrqq6Znz55GkusN8ujRo2b27NlGkrn55ptd+/Xtt9+WWVN2drYJCwszAQEB5umnnzZTp041HTp0MD4+Pmb58uXGmFPhZ/HixUaS6d27t+t+z8XpdJorr7zShISEmEGDBhlfX1+zYcOGc25njDFvv/226dChgxk/fryZN2+eeeqpp0yTJk1MixYtzLFjx0qMaceOHc21115rpk+fbh577DHj6+trbrvtNrf7HDdunJFk+vbta2bMmGHuuece06xZMxMSElKucPP777+bDh06mNatW5sdO3aYxo0bm9tvv71c+7Nq1Srj5+dnWrRoYZKTk83s2bPNww8/bOLj4119Vq9eberVq2fatGljXnjhBTNhwgQTEhJimjRp4hbqNm/ebBo1amQiIiLMpEmTzOTJk01UVJTx9/c3//73v0uMTXR0tOnVq5eZPn26mTx5sjHGmNdee831N/bqq6+aRx991AQFBZlWrVqVK9zY7XZzxRVXmHvuucfMnj3b3HrrrUaSmTVrltt+X3jhhebBBx80M2bMMFOnTjXdunUzktzC8+LFi42/v7/p2bOn67X19ddfG2NOvT4vvPBCExkZaSZOnGhmz55tbrzxRiPJvPzyy677KA7SAwYMMHPnzjWvvPKKuffee83DDz9crucHNR/hBjXSqlWrjK+vr/H19TVxcXHm//7v/8zKlStNYWGhW78dO3YYHx8fc/PNN5f4hH/6m//x48dLPMYDDzxgGjZsaE6cOOFqq+g5N06n01xyySUmISGhxONFRUWZ3r17u9qKw82gQYPKNQbFbzadO3d22+/iGYEPPvjA1XZmuJk2bZqRZN58801XW2FhoYmLizONGzc2eXl5xpiKn3Pz6KOPGknmX//6l6stPz/fREVFmZYtW7o9B5LMqFGjynW/xTZv3mzq169vJJlHH3203NuV9vymp6cbSeZvf/ubq614TOPj492erzFjxhhfX19z5MgRY4wx+/fvN35+fqZfv35u/Z566qkSMwVnU3yOTXBwcKnn4JTm5MmTJioqyrRo0cL89ttvbr87vZaYmBgTGhpqDh065Gr79ttvjY+PjxkyZIirrX///sbPz88Vxo0x5tdffzUBAQHmqquucrUVj02PHj3cZlQKCwtNaGioiYmJMQUFBa724oBQnnAjyUycONFtXzp27Gg6d+7s1nbm81hYWGjatm1rrr32Wrf2ss65uffee01ERIQ5ePCgW/vtt99uHA6H6/5vuukmc8UVV5TYHtbB1VKokXr37q309HTdeOON+vbbb/XCCy8oISFBzZs314cffujq9/7778vpdGr8+PHy8XF/OdtsNtf/N2jQwPX/+fn5OnjwoHr27Knj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fLGefvppTZo0ST179tQtt9wif39/rVu3Ts2aNVNKSoq6d++uJk2aaOjQoXr44Ydls9m0ePHiUsNT586dtWzZMiUlJalr165q3LixEhMT1bp1awUFBWnOnDkKCAhQo0aNFBsbq6ioKL322mu64YYbdMUVV2jYsGFq3ry59u7dq88//1yBgYH66KOPzmssCgsLdd111+m2227T9u3bNWvWLPXo0UM33nhjmdsMHz5cc+fO1d13363169erZcuWeuedd/TVV19p2rRpCggIkHTqEER0dLSWLVumNm3aKDg4WG3bti3zfI8nn3xSb731lm644QY9/PDDCg4O1htvvKGsrCy9++67Jc7xKY/169dr5syZGjVqlNt5Kc2bN9fEiROVlJSkd999V7feemuZ9/HHP/5RixcvlsPhUHR0tNLT07VmzRpdcMEFFa5HOjUL8PjjjyslJUV//OMf1bdvX23cuFGffvqpQkJCKnWf5eXj46PZs2crMTFRMTExGjZsmCIiIrRt2zZt2bJFK1eulHTqUOgNN9yguLg43Xvvvfrvf/+r6dOny+FwuC0S+Oyzz2r16tXq0aOHHnzwQdWrV09z585VQUGBXnjhhXPWU79+fT377LN64IEHdO2112rgwIHKysrSwoULy33OTXn069dPU6dOVZ8+fTR48GDt379fM2fO1MUXX6zvvvvOrW/nzp21Zs0aTZ06Vc2aNVNUVJRiY2M1efJkff7554qNjdX999+v6OhoHT58WBs2bNCaNWt0+PBhSadOVg8PD9eVV16psLAwff/995oxY4b69evn+ttALeelq7SAs/r000/NPffcYy677DLTuHFj11cxjB492uTk5JTo//rrr5uOHTsaf39/06RJE9OrVy+zevVq1++/+uor84c//ME0aNDANGvWzHVpuSTz+eefu/odPXrUDB482AQFBbkW8Sv2wQcfmOjoaFOvXr0Sl7tu3LjR3HLLLeaCCy4w/v7+pkWLFua2224zaWlprj7Fl4IfOHCgXGNw5iJ+TZo0MY0bNzZ33HGH2+W/xpS9iN+wYcNMSEiI8fPzM+3atSv16yO+/vpr07lzZ+Pn51ehRfyCgoKM3W433bp1c1uHpJjKcSn4yZMnTadOnUyzZs1Mbm5uqb+PiYkxF154ocnPzy/zfn777TfXvjZu3NgkJCSYbdu2lVhwr3hM161b57Z98UKNp78WioqKzIQJE0xERESlFvE712Oey5dffml69+7tWnivffv2Zvr06W591qxZY6688krToEEDExgYaBITE8tcxC8hIcE0btzYNGzY0FxzzTWutWHKW+esWbNc6+N06dKlwov4nan47+F0CxYsMJdcconx9/c3l112mVm4cGGp/bZt22auuuoq06BBgxKX5ufk5JhRo0aZyMhIU79+fRMeHm6uu+46M2/ePFefuXPnmquuusr199q6dWvz5z//udTXIGonmzGcQQfURIsWLdKwYcO0bt26cl9pAwDgnBsAAGAxhBsAAGAphBsAAGApnHMDAAAshZkbAABgKYQbAABgKXVuET+n06lff/1VAQEBFV56HgAAeIcxRvn5+WrWrNk5Fwytc+Hm119/Ped3qQAAgJppz549uvDCC8/ap86Fm+Kltffs2XPO71QBAAA1Q15eniIjI8v1FRl1LtwUH4oKDAwk3AAAUMuU55QSTigGAACWQrgBAACWQrgBAACWQrgBAACW4tVw88UXXygxMVHNmjWTzWbT+++/X+5tv/rqK9WrV08xMTHVVh8AAKh9vBpujh07pg4dOmjmzJkV2u7IkSMaMmSIrrvuumqqDAAA1FZevRT8hhtu0A033FDh7UaMGKHBgwfL19e3QrM9AADA+mrdOTcLFy7UTz/9pOTk5HL1LygoUF5entsNAABYV60KNzt27NCTTz6pN998U/XqlW/SKSUlRQ6Hw3XjqxcAALC2WhNuioqKNHjwYE2YMEFt2rQp93Zjx45Vbm6u67Znz55qrBIAgNqnyGmUvvOQPsjcq/Sdh1TkNN4u6bzUmq9fyM/P1zfffKONGzfqoYceknTqG76NMapXr55WrVqla6+9tsR2/v7+8vf393S5AADUCqmb92nCR1u1L/eEqy3CYVdyYrT6tI3wYmWVV2vCTWBgoDZt2uTWNmvWLH322Wd65513FBUV5aXKAAConVI379PINzfozHma7NwTGvnmBs2+s1OtDDheDTdHjx7Vjz/+6Po5KytLmZmZCg4O1kUXXaSxY8dq7969+tvf/iYfHx+1bdvWbfvQ0FDZ7fYS7QAA4OyKnEYTPtpaIthIkpFkkzTho63qHR0uX59zf1llTeLVc26++eYbdezYUR07dpQkJSUlqWPHjho/frwkad++fdq9e7c3SwQAwJIysg67HYo6k5G0L/eEMrIOe66oKmIzxtTus4YqKC8vTw6HQ7m5uQoMDPR2OQAAeMUHmXv1yNLMc/Z75fYY3RTTvPoLOoeKvH/XmqulAABA1QkNsFdpv5qEcAMAQB3ULSpYEQ67yjqbxqZTV011iwr2ZFlVgnADAEAd5OtjU3JitCSVCDjFPycnRte6k4klwg0AAHVWn7YRmn1nJ4U73A89hTvstfYycKkWrXMDAACqXp+2EeodHa6MrMPan39CoQGnDkXVxhmbYoQbAADqOF8fm+JaX+DtMqoMh6UAAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAICl1PN2AQBqjyKnUUbWYe3PP6HQALu6RQXL18fm7bIAwA3hBkC5pG7epwkfbdW+3BOutgiHXcmJ0erTNsKLlQGAOw5LATin1M37NPLNDW7BRpKyc09o5JsblLp5n5cqA4CSCDcAzqrIaTTho60ypfyuuG3CR1tV5CytBwB4HuEGwFllZB0uMWNzOiNpX+4JZWQd9lxRAHAWhBsAZ7U/v+xgU5l+AFDdCDcAzio0wF6l/QCguhFuAJxVt6hgRTjsKuuCb5tOXTXVLSrYk2UBQJkINwDOytfHpuTEaEkqEXCKf05OjGa9GwA1BuEGwDn1aRuh2Xd2UrjD/dBTuMOu2Xd2Yp0bADUKi/gBKJc+bSPUOzqcFYoB1HiEGwDl5utjU1zrC7xdBgCcFYelAACApRBuAACApRBuAACApXg13HzxxRdKTExUs2bNZLPZ9P7775+1//Lly9W7d281bdpUgYGBiouL08qVKz1TLAAAqBW8Gm6OHTumDh06aObMmeXq/8UXX6h3795asWKF1q9fr2uuuUaJiYnauHFjNVcKAABqC5sxpkZ8la/NZtN7772n/v37V2i7K664QgMHDtT48ePL1T8vL08Oh0O5ubkKDAysRKUAAMDTKvL+XasvBXc6ncrPz1dwcNnLvhcUFKigoMD1c15enidKAwAAXlKrTyh+8cUXdfToUd12221l9klJSZHD4XDdIiMjPVghAADwtFobbpYsWaIJEyboH//4h0JDQ8vsN3bsWOXm5rpue/bs8WCVAADA02rlYamlS5fqvvvu09tvv634+Piz9vX395e/v7+HKgMAAN5W62Zu3nrrLQ0bNkxvvfWW+vXr5+1yAABADePVmZujR4/qxx9/dP2clZWlzMxMBQcH66KLLtLYsWO1d+9e/e1vf5N06lDU0KFD9corryg2NlbZ2dmSpAYNGsjhcHhlHwAAQM3i1Zmbb775Rh07dlTHjh0lSUlJSerYsaPrsu59+/Zp9+7drv7z5s3TyZMnNWrUKEVERLhujzzyiFfqBwAANU+NWefGU1jnBgCA2qci79+17pwbAACAsyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAAS/FquPniiy+UmJioZs2ayWaz6f333z/nNmvXrlWnTp3k7++viy++WIsWLar2OgEAwLkVOY3Sdx7SB5l7lb7zkIqcxit11PPKo/5/x44dU4cOHXTPPffolltuOWf/rKws9evXTyNGjNDf//53paWl6b777lNERIQSEhI8UDEAAChN6uZ9mvDRVu3LPeFqi3DYlZwYrT5tIzxai80Y451YdQabzab33ntP/fv3L7PPE088oU8++USbN292td1+++06cuSIUlNTy/U4eXl5cjgcys3NVWBg4PmWDQBAnZe6eZ9GvrlBZwYK2///7+w7O513wKnI+3etOucmPT1d8fHxbm0JCQlKT08vc5uCggLl5eW53QAAQNUochpN+GhriWAjydU24aOtHj1EVavCTXZ2tsLCwtzawsLClJeXp//+97+lbpOSkiKHw+G6RUZGeqJUAADqhIysw26Hos5kJO3LPaGMrMMeq6lWhZvKGDt2rHJzc123PXv2eLskAAAsY39+2cGmMv2qgldPKK6o8PBw5eTkuLXl5OQoMDBQDRo0KHUbf39/+fv7e6I8AADqnNAAe5X2qwq1auYmLi5OaWlpbm2rV69WXFyclyoCAKBu6xYV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VhX/NtSvX18dO3bUjz/+WB0lekRlxiEiIkL169eXr6+vq+3yyy9Xdna2CgsL5efnV601V4fzeT0cO3ZMS5cu1cSJE8+rBg5LlZOfn586d+6stLQ0V5vT6VRaWprbp4/TxcXFufWXpNWrV5fZv6arzBhYUWXH4YUXXtCkSZOUmpqqLl26eKLUalVVrwen06mCgoLqKNEjKjoOl112mTZt2qTMzEzX7cYbb9Q111yjzMxMRUZGerL8KlEVr4WioiJt2rRJERER1VVmtavMOFx55ZX68ccfXQFXkn744QdFRETUymAjnd/r4e2331ZBQYHuvPPO8yuiUqch11FLly41/v7+ZtGiRWbr1q1m+PDhJigoyHX54l133WWefPJJV/+vvvrK1KtXz7z44ovm+++/N8nJyZa4FLwiY1BQUGA2btxoNm7caCIiIszjjz9uNm7caHbs2OGtXagSFR2HyZMnGz8/P/POO++4Xe6Yn5/vrV2oEhUdh+eff96sWrXK7Ny502zdutW8+OKLpl69emb+/Pne2oUqUdFxOJMVrpaq6BhMmDDBrFy50uzcudOsX7/e3H777cZut5stW7Z4axeqREXHYffu3SYgIMA89NBDZvv27ebjjz82oaGh5tlnn/XWLlSJyv5N9OjRwwwcOPC8H59wU0HTp083F110kfHz8zPdunUz//73v12/69Wrlxk6dKhb/3/84x+mTZs2xs/Pz1xxxRXmk08+8XDFVa8iY5CVlWUklbj16tXL84VXsYqMQ4sWLUodh+TkZM8XXsUqMg5PP/20ufjii43dbjdNmjQxcXFxZunSpV6ouupV9N+G01kh3BhTsTF49NFHXX3DwsJM3759zYYNG7xQddWr6Gvh66+/NrGxscbf39+0atXKPPfcc+bkyZMerrrqVXQctm3bZiSZVatWnfdj24wx5vzmfgAAAGoOzrkBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBUKsVFRWpe/fuuuWWW9zac3NzFRkZqaefftpLlQHwFlYoBlDr/fDDD4qJidH8+fN1xx13SJKGDBmib7/9VuvWrau1X0AIoHIINwAs4dVXX9UzzzyjLVu2KCMjQ3/605+0bt06dejQwdulAfAwwg0ASzDG6Nprr5Wvr682bdqk0aNHa9y4cd4uC4AXEG4AWMa2bdt0+eWXq127dtqwYYPq1avn7ZIAeAEnFAOwjNdff10NGzZUVlaWfvnlF2+XA8BLmLkBYAlff/21evXqpVWrVunZZ5+VJK1Zs0Y2m83LlQHwNGZuANR6x48f1913362RI0fqmmuu0YIFC5SRkaE5c+Z4uzQAXsDMDYBa75FHHtGKFSv07bffqmHDhpKkuXPn6vHHH9emTZvUsmVL7xYIwKMINwBqtX/+85+67rrrtHbtWvXo0cPtdwkJCTp58iSHp4A6hnADAAAshXNuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApfw/DIN97LSlbXgAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6QklEQVR4nO3de1yUZf7/8TegzHjgoCEHjURNMzyRKCweMg3DdDFrLdPylJtpZim1q6aJh0rXyqU8a6V9bV3dytoOhgc2tzXZxRVtPaQdxLRWUDPBNEWZ6/eHP2YdAQUDBuZ+PR+PeTyaa677vj/3XEPz9r6v+x4vY4wRAACABXm7uwAAAAB3IQgBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBHuC2227Tbbfd5u4yXOTk5Kh///667rrr5OXlpZSUFHeXVC4iIiI0bNgwd5dRJVz+uTt48KC8vLy0YsUKt9UElBVBCFXWrl271L9/fzVu3Fh2u12NGjVSz549NW/evArb5qpVq4r9wv7vf/+radOmaefOnRW2bXc4c+aMpk2bps2bN5f7usePH6/169dr0qRJWrlypXr16lVsv40bN8rLy0vTp08v8lpWVpZq166t/v37l3t9FWX16tXy8vLSkiVLin199OjRqlmzpj7//PNKrsxzPP/883rvvffcXQY8hQGqoM8++8z4+vqaG2+80cycOdMsW7bMTJ061dxxxx2mWbNmFbbdPn36mMaNGxdp37Ztm5Fkli9fXmHb/iW6detmunXrVubljh07ZiSZ5OTkcq8pJCTEPPDAA6XqO2jQIGOz2cz+/ftd2nv16mX8/f3N999/X+71XavGjRuboUOHXrFPr169TGBgoMnOznZp/9e//mW8vb3N7373uwqssPJc/rlzOBzm559/NhcuXKjQ7dapU+eqYwCUVg13BzGgOM8995wCAgK0bds2BQYGurx29OhR9xRVAU6fPq06deq4u4wKcfTo0SJjV5I//vGP+vjjjzVq1Cj97W9/k3TxyEpqaqpeeeUVNWzYsAIrLX+LFi1Sq1atNH78eK1atUqSVFBQoEceeUQ33HCDpk2b5t4CS6msn08vLy/Z7fYKrAioAO5OYkBxbrrpJnPbbbeVuv/KlStNx44dTa1atUxgYKDp2rWrWb9+vfP19957z/Tu3duEhYUZX19f07RpUzNjxgyXf7l269bNSHJ5NG7c2HzyySdF2nXZ0aF//vOfJiEhwfj7+5tatWqZW2+91WzZssWlxuTkZCPJ7NmzxwwcONAEBgaaqKioEvdp+fLlRpL5+9//bkaOHGnq169v/Pz8zODBg82JEydc+hZ3RCgnJ8c89NBDJjg42NhsNtO2bVuzYsUK5+tZWVnF7tfVjg598803pn///qZevXqmVq1aJjY21nz44YdF6r78cTVLly41ksyKFSvMjz/+aEJDQ03Hjh1NQUHBVZc9ePCgGT16tGnRooWx2+2mfv36pn///iYrK8ulX2FtW7ZsMePHjzdBQUGmdu3apl+/fubo0aMufR0Oh5k5c6Zp1KiRqVWrlrntttvM7t27S3VEyBhj5syZYySZDRs2GGOMmTt3rpFkPv7446sua8zFz9Sdd95pAgMDTe3atU2bNm1MSkqKS5+0tDTTpUsXU7t2bRMQEGD69u1r9u7dW2RdmZmZplevXsbPz8/UqVPH9OjRw6Snpxf73mzevNmMHj3aNGjQwAQGBjpfX7JkiWnatKmx2+2mY8eO5tNPPy3yuSv8TF36tzF06FBTp04d891335m77rrL1KlTxwQFBZknn3yyyJGjF154wcTFxZn69esbu91u2rdvb9566y2XPsV9ti4dj++++84MHz7cBAcHG19fXxMZGWlee+21Iu/JK6+8YiIjI53/z4iOjjZ/+tOfShwPeC6CEKqkO+64w/j5+Zldu3Zdte+0adOMJNOpUyfzwgsvmJdfftkMGjTITJgwwdmnX79+5r777jMvvPCCWbRokbn33nuNJPPUU085+2zYsMFERUWZoKAgs3LlSrNy5Urz7rvvmuzsbDNjxgwjyYwcOdL52jfffGOMufhl5Ovra+Li4sxLL71k/vjHP5q2bdsaX19f869//cu5/sIgFBkZae666y6zcOFCs2DBghL3q/CLqU2bNqZr167mlVdeMWPGjDHe3t7m1ltvNQ6Hw9n38i+kM2fOmJtvvtnUrFnTjB8/3rzyyiuma9euRpLzy/Snn34yixYtMpLM3Xff7dyvzz//vMSasrOzTUhIiPHz8zOTJ082c+fONe3atTPe3t5m7dq1xpiLQWnlypVGkunZs6dzvVfjcDhM586dTVBQkBk4cKDx8fExmZmZV13OGGPeeust065dOzN16lSzdOlS8/TTT5t69eqZxo0bm9OnTxd5T2+55RbTo0cPM2/ePPPkk08aHx8fc99997msc8qUKUaS6d27t5k/f7556KGHTMOGDU1QUFCpgtD58+dNu3btTLNmzcxXX31l6tata+6///5S7c+GDRuMr6+vady4sUlOTjaLFi0yjz/+uImPj3f22bhxo6lRo4Zp0aKFmTNnjpk+fboJCgoy9erVcwmAu3fvNnXq1DFhYWFm5syZZvbs2aZJkybGZrOZf/7zn0Xem8jISNOtWzczb948M3v2bGOMMa+++qrzb+yVV14x48aNM4GBgaZp06alCkJ2u920atXKPPTQQ2bRokXmN7/5jZFkFi5c6LLf119/vXn00UfN/Pnzzdy5c01MTIyR5BK0V65caWw2m+natavzs7V161ZjzMXP5/XXX2/Cw8PNjBkzzKJFi0zfvn2NJPPHP/7RuY7C0N2/f3+zZMkS8/LLL5sRI0aYxx9/vFTjA89CEEKVtGHDBuPj42N8fHxMXFyc+f3vf2/Wr19v8vPzXfp99dVXxtvb29x9991FjhxcGhTOnDlTZBuPPPKIqV27tjl79qyzraxzhBwOh2nevLlJSEgosr0mTZqYnj17OtsKg9DAgQNL9R4UfjFFR0e77HfhkYa//vWvzrbLg1BKSoqRZN58801nW35+vomLizN169Y1eXl5xpiyzxEaN26ckWT+8Y9/ONtOnTplmjRpYiIiIlzGQJIZM2ZMqdZbaPfu3aZmzZpGkhk3blyplytufNPT040k83//93/OtsL3ND4+3mW8xo8fb3x8fMzJkyeNMcYcPXrU+Pr6mj59+rj0e/rpp4scgbiSwjlB9evXL3bOUHEuXLhgmjRpYho3bmx+/PFHl9curSUqKsoEBwebH374wdn2+eefG29vbzNkyBBnW79+/Yyvr68zuBtjzH//+1/j5+dnbr31Vmdb4XvTpUsXlyM1+fn5Jjg42ERFRZlz58452wvDRGmCkCQzY8YMl3255ZZbTHR0tEvb5eOYn59vWrdubXr06OHSXtIcoREjRpiwsDBz/Phxl/b777/fBAQEONd/1113mVatWhVZHtbEVWOoknr27Kn09HT17dtXn3/+uebMmaOEhAQ1atRI77//vrPfe++9J4fDoalTp8rb2/Xj7OXl5fzvWrVqOf/71KlTOn78uLp27aozZ85o375911znzp079dVXX2nQoEH64YcfdPz4cR0/flynT5/W7bffrk8//VQOh8NlmVGjRpVpGyNHjlTNmjWdz0ePHq0aNWpo3bp1JS6zbt06hYaGauDAgc62mjVr6vHHH9dPP/2kv//972Wq4dL1xsTEqEuXLs62unXrauTIkTp48KD27t17Test5O/vL19fX0nSHXfcUerlLh3f8+fP64cfftCNN96owMBAZWZmFuk/cuRIl89H165dVVBQoG+//VaStGnTJuXn52vs2LEu/caNG1em/YmJidGoUaN04sQJzZo1SyEhIVddZseOHcrKytK4ceOKzLEqrOXIkSPauXOnhg0bpvr16ztfb9u2rXr27On8bBQUFGjDhg3q16+fmjZt6uwXFhamQYMGacuWLcrLy3PZxsMPPywfHx/n83//+986evSoRo0a5RwbSRo2bJgCAgJK/V5c/rnv2rWrDhw44NJ26Tj++OOPys3NVdeuXYsdw8sZY/TOO+8oMTFRxhjn3+Lx48eVkJCg3Nxc53oCAwP13Xffadu2baWuH56LIIQqq2PHjlq7dq1+/PFHZWRkaNKkSTp16pT69+/v/ML95ptv5O3trcjIyCuua8+ePbr77rsVEBAgf39/NWjQQA8++KAkKTc395pr/OqrryRJQ4cOVYMGDVwer776qs6dO1dk/U2aNCnTNpo3b+7yvG7dugoLC9PBgwdLXObbb79V8+bNi4TDm2++2fn6tfj222910003FWn/pest9Nhjj8nb21uNGzfWk08+qfPnz5dquZ9//llTp05VeHi4bDabgoKC1KBBA508ebLY8b3hhhtcnterV0/SxS/fS/fj8ve+QYMGzr6l1bFjR0lShw4dStX/m2++kSS1bt26xD6F9ZU0FoVh/NixYzpz5kyJ/RwOhw4fPuzSfvnns6T3ombNmi7h6krsdrsaNGjg0lavXj3n+13oww8/1K9+9SvZ7XbVr19fDRo00KJFi0r1N3rs2DGdPHlSS5cuLfK3OHz4cEn/u9BiwoQJqlu3rmJiYtS8eXONGTNGn332Wan2BZ6Hq8ZQ5fn6+qpjx47q2LGjWrRooeHDh+utt95ScnJyqZY/efKkunXrJn9/f82YMUPNmjWT3W5XZmamJkyYUOSITVkULvvCCy8oKiqq2D5169Z1eX7pv3rxP2vXrtX777+vlJQUNW/eXH369NELL7ygp59++qrLjh07VsuXL9e4ceMUFxengIAAeXl56f777y92fC894nEpY8wv3o/qriI+nyW935f6xz/+ob59++rWW2/VwoULFRYWppo1a2r58uXOK++upHCcH3zwQQ0dOrTYPm3btpV0MQTu379fH374oVJTU/XOO+9o4cKFmjp1arH3s4JnIwihWin8V/WRI0ckSc2aNZPD4dDevXtLDCKbN2/WDz/8oLVr1+rWW291tmdlZRXpe+lpkNK0N2vWTNLFUzrx8fGl3o+y+Oqrr9S9e3fn859++klHjhxR7969S1ymcePG+s9//iOHw+FyVKjwNGDjxo0llbxfV1rv/v37i7Rfvt6yOnXqlB5//HG1b99ejz32mHx8fPSb3/xGzz77rAYOHHjVo2hvv/22hg4dqpdeesnZdvbsWZ08efKa6incj6+++srlqMexY8eKHMUob4Wfqd27d5f4mSqsr6SxCAoKUp06dWS321W7du0S+3l7eys8PPyK9Vz6XvTo0cPZfv78eWVlZaldu3al27GreOedd2S327V+/XrZbDZn+/Lly4v0Le5z26BBA/n5+amgoKBUf4t16tTRgAEDNGDAAOXn5+uee+7Rc889p0mTJnELAIvh1BiqpE8++aTYf50Xzn0oPNTfr18/eXt7a8aMGUX+5V+4fOG/Ri9dX35+vhYuXFhk/XXq1Cn2MHzhvVQu/2KNjo5Ws2bN9OKLL+qnn34qstyxY8dK3MfSWrp0qcspokWLFunChQu68847S1ymd+/eys7O1po1a5xtFy5c0Lx581S3bl1169ZNklS7dm1JRffrSuvNyMhQenq6s+306dNaunSpIiIirnqKsiRTpkzRkSNHtGTJEud4vfzyy/Lx8dFjjz121eV9fHyKfF7mzZungoKCa6onPj5eNWvW1Lx581zWWxk/E9K+fXs1adJEKSkpRcalsJawsDBFRUXpjTfecOmze/dubdiwwRmSfXx8dMcdd+ivf/2ry6nUnJwcrVq1Sl26dJG/v/8V6+nQoYMaNGigxYsXKz8/39m+YsWKaw6axfHx8ZGXl5fLmB08eLDYO0jXqVOnyLYLw/M777yj3bt3F1nm0r/FH374weU1X19fRUZGyhhT6tOx8BwcEUKVNHbsWJ05c0Z33323WrZsqfz8fG3dulVr1qxRRESE85z/jTfeqMmTJ2vmzJnq2rWr7rnnHtlsNm3btk0NGzbUrFmz1KlTJ9WrV09Dhw7V448/Li8vL61cubLYoBUdHa01a9YoKSlJHTt2VN26dZWYmKhmzZopMDBQixcvlp+fn+rUqaPY2Fg1adJEr776qu688061atVKw4cPV6NGjfT999/rk08+kb+/vz744INf9F7k5+fr9ttv13333af9+/dr4cKF6tKli/r27VviMiNHjtSSJUs0bNgwbd++XREREXr77bf12WefKSUlRX5+fpIungaJjIzUmjVr1KJFC9WvX1+tW7cucX7KxIkT9ec//1l33nmnHn/8cdWvX19vvPGGsrKy9M477xSZk1Qa27dv14IFCzRmzBiXeTSNGjXSjBkzlJSUpHfeeUe/+c1vSlzHr3/9a61cuVIBAQGKjIxUenq6Nm3apOuuu67M9UgXjy489dRTmjVrln7961+rd+/e2rFjhz7++GMFBQVd0zpLy9vbW4sWLVJiYqKioqI0fPhwhYWFad++fdqzZ4/Wr18v6eLp2DvvvFNxcXEaMWKEfv75Z82bN08BAQEuN2x89tlntXHjRnXp0kWPPvqoatSooSVLlujcuXOaM2fOVeupWbOmnn32WT3yyCPq0aOHBgwYoKysLC1fvrzUc4RKo0+fPpo7d6569eqlQYMG6ejRo1qwYIFuvPFG/ec//3HpGx0drU2bNmnu3Llq2LChmjRpotjYWM2ePVuffPKJYmNj9fDDDysyMlInTpxQZmamNm3apBMnTki6OBE/NDRUnTt3VkhIiL744gvNnz9fffr0cf5twELcdLUacEUff/yxeeihh0zLli1N3bp1nT+3MXbsWJOTk1Ok/+uvv25uueUWY7PZTL169Uy3bt3Mxo0bna9/9tln5le/+pWpVauWadiwofNyfEnmk08+cfb76aefzKBBg0xgYKDzhoqF/vrXv5rIyEhTo0aNIpcI79ixw9xzzz3muuuuMzabzTRu3Njcd999Ji0tzdmn8PL5Y8eOleo9uPyGivXq1TN169Y1DzzwgMsl08aUfEPF4cOHm6CgIOPr62vatGlT7E+EbN261URHRxtfX98y3VAxMDDQ2O12ExMT43Kfl0IqxeXzFy5cMO3btzcNGzY0ubm5xb4eFRVlrr/+enPq1KkS1/Pjjz8697Vu3bomISHB7Nu3r8jNDwvf023btrks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g7Vs2TIFBQWVaplJkyYpNzfX+Th8+HAFVwkAAKqLGu7ceFBQkHx8fJSTk+PSnpOTo9DQ0CL9v/nmGx08eFCJiYnONofDIUmqUaOG9u/fr2bNmrksY7PZZLPZKqB6AABQ3bn1iJCvr6+io6OVlpbmbHM4HEpLS1NcXFyR/i1bttSuXbu0c+dO56Nv377q3r27du7cyWkvAABQJm49IiRJSUlJGjp0qDp06KCYmBilpKTo9OnTGj58uCRpyJAhatSokWbNmiW73a7WrVu7LB8YGChJRdoBAACuxu1BaMCAATp27JimTp2q7OxsRUVFKTU11TmB+tChQ/L2rlZTmQAAQDXhZYwx7i6iMuXl5SkgIEC5ubny9/d3dzkAAKAUKur7m0MtAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsmq4uwAAqAwFDqOMrBM6euqsgv3simlSXz7eXu4uC4CbEYQAeLzU3Uc0/YO9OpJ71tkWFmBXcmKkerUOc2NlANyNU2MAPFrq7iMa/WamSwiSpOzcsxr9ZqZSdx9xU2UAqgKCEACPVeAwmv7BXpliXitsm/7BXhU4iusBwAoIQgA8VkbWiSJHgi5lJB3JPauMrBOVVxSAKoUgBMBjHT1Vcgi6ln4APA+TpQF4lEuvDjt+6lyplgn2s1dwVVfGFW2A+xCEAHiM4q4O8/aSSpoC5CUpNOBi8HAXrmgD3ItTYwA8QklXh10pBElScmKk246+cEUb4H4EIQDV3pWuDit0edYJDbBr0YPt3XbUhSvagKqBU2MAqr2rXR0mXTwy9EyfmxXkZ6sS83DKckVbXLPrKq8wwGIIQgCqvdJe9RXkZ9NdUY0quJrS4Yo2oGrg1BiAaq+0V325++qwS1XHmgFPRBACUO3FNKmvsAC7SjrR5aWLV2K58+qwy1XHmgFPRBAC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", "text/plain": [ "
" ] @@ -234,12 +238,12 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 46, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABA5klEQVR4nO3deVyVZf7/8TeggBsgoYBGbmWFG4pKlEsZhumXssbJtNJsscyspGbSNHGpdFrMctdKGxvTqWw313IaiwYTrcx0TDGtBLcC1BTlXL8//HHGIyDnIGe7eT0fj/N4xM11n/M59zl0v72u+7ruAGOMEQAAgEUEersAAACAqkS4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4ASzg6quv1tVXX+3tMhzk5eWpX79+uuCCCxQQEKBp06Z5u6Qq0bRpU915553eLsMnnP292717twICArRw4UKv1QRIhBv4sO+++079+vVTkyZNFBoaqsaNG6tnz56aPn26215z8eLFZZ6Ef/31V40fP16bN29222t7w7FjxzR+/HitW7euyp975MiRWrlypUaPHq1FixapV69eZbZbvXq1AgICNGHChFK/y8nJUe3atdWvX78qr89dlixZooCAAM2dO7fM3w8bNkw1a9bUN9984+HKrOOZZ57Re++95+0y4MsM4IO++OILExwcbC6++GIzadIkM3/+fDNu3Dhz3XXXmRYtWrjtdfv06WOaNGlSavuGDRuMJLNgwQK3vfb56N69u+nevbvL+x04cMBIMhkZGVVeU3R0tLntttucajtw4EATEhJitm/f7rC9V69eJiwszPzyyy9VXl9lNWnSxAwePPicbXr16mUiIiJMbm6uw/b//Oc/JjAw0PzlL39xY4Wec/b3zmazmT/++MOcOnXKra9bp06dCj8DVG81vB2ugLI8/fTTCg8P14YNGxQREeHwu/3793unKDc4evSo6tSp4+0y3GL//v2lPrvyvPjii/rkk090//3369NPP5V0ugdkxYoVevnll9WoUSM3Vlr1Zs+erVatWmnkyJFavHixJKm4uFj33XefLrroIo0fP967BTrJ1e9nQECAQkND3VgR4CRvpyugLJdeeqm5+uqrnW6/aNEi06lTJ1OrVi0TERFhunbtalauXGn//XvvvWd69+5tYmNjTXBwsGnevLmZOHGiw78wu3fvbiQ5PJo0aWI+++yzUtt1Vi/OV199ZVJTU01YWJipVauW6datm1m/fr1DjRkZGUaS+f77782AAQNMRESESUhIKPc9LViwwEgy//rXv8zQoUNNZGSkqVevnrnjjjvM4cOHHdqW1XOTl5dn7rrrLtOwYUMTEhJi2rZtaxYuXGj/fU5OTpnvq6JenJ07d5p+/fqZ+vXrm1q1apmkpCTz0Ucflar77EdF5s2bZySZhQsXmt9++83ExMSYTp06meLi4gr33b17txk2bJhp2bKlCQ0NNZGRkaZfv34mJyfHoV1JbevXrzcjR440UVFRpnbt2qZv375m//79Dm1tNpuZNGmSady4salVq5a5+uqrzZYtW5zquTHGmGeffdZIMqtWrTLGGDN16lQjyXzyyScV7mvM6e/U9ddfbyIiIkzt2rVNmzZtzLRp0xzarF271nTp0sXUrl3bhIeHmxtuuMFs3bq11HNlZ2ebXr16mXr16pk6deqYHj16mMzMzDKPzbp168ywYcNMgwYNTEREhP33c+fONc2bNzehoaGmU6dO5vPPPy/1vSv5Tp35tzF48GBTp04d8/PPP5sbb7zR1KlTx0RFRZlHH320VA/Pc889Z5KTk01kZKQJDQ01HTp0MG+99ZZDm7K+W2d+Hj///LMZMmSIadiwoQkODjbx8fHm1VdfLXVMXn75ZRMfH2//f0ZiYqL5xz/+Ue7nAf9CuIFPuu6660y9evXMd999V2Hb8ePHG0nmyiuvNM8995x56aWXzMCBA83jjz9ub9O3b19zyy23mOeee87Mnj3b/PnPfzaSzGOPPWZvs2rVKpOQkGCioqLMokWLzKJFi8y7775rcnNzzcSJE40kM3ToUPvvdu7caYw5fYIJDg42ycnJ5oUXXjAvvviiadu2rQkODjb/+c9/7M9fEm7i4+PNjTfeaGbNmmVmzpxZ7vsqOdm0adPGdO3a1bz88stm+PDhJjAw0HTr1s3YbDZ727NPMseOHTOXX365qVmzphk5cqR5+eWXTdeuXY0k+wnyyJEjZvbs2UaSuemmm+zv65tvvim3ptzcXBMdHW3q1atnxowZY6ZOnWratWtnAgMDzbJly4wxp8PPokWLjCTTs2dP+/NWxGazmauuuspERUWZAQMGmKCgIJOdnV3hfsYY89Zbb5l27dqZcePGmXnz5pknnnjC1K9f3zRp0sQcPXq01DFt37696dGjh5k+fbp59NFHTVBQkLnlllscnnPs2LFGkundu7eZMWOGueuuu0yjRo1MVFSUU+Hm5MmTpl27dqZFixZmx44dpm7duubWW2916v2sWrXKBAcHmyZNmpiMjAwze/Zs89BDD5mUlBR7m9WrV5saNWqYli1bmmeffdZMmDDBREVFmfr16zuEui1btpg6deqY2NhYM2nSJDNlyhTTrFkzExISYr766qtSxyY+Pt50797dTJ8+3UyZMsUYY8wrr7xi/xt7+eWXzSOPPGIiIiJM8+bNnQo3oaGhplWrVuauu+4ys2fPNn/605+MJDNr1iyH933hhReaBx54wMyYMcNMnTrVdO7c2UhyCM+LFi0yISEhpmvXrvbv1pdffmmMOf39vPDCC01cXJyZOHGimT17trnhhhuMJPPiiy/an6MkSPfr18/MnTvXvPTSS+buu+82Dz30kFOfD3wf4QY+adWqVSYoKMgEBQWZ5ORk89e//tWsXLnSFBUVObTbsWOHCQwMNDfddFOpf+GfefI/duxYqde47777TO3atc3x48ft21y95sZms5lLLrnEpKamlnq9Zs2amZ49e9q3lYSbAQMGOHUMSk42iYmJDu+7pEfg/ffft287O9xMmzbNSDJvvPGGfVtRUZFJTk42devWNQUFBcYY16+5eeSRR4wk8+9//9u+rbCw0DRr1sw0bdrU4TOQZIYPH+7U85bYsmWLqVmzppFkHnnkEaf3K+vzzczMNJLM3//+d/u2kmOakpLi8HmNHDnSBAUFmd9//90YY8z+/ftNcHCw6dOnj0O7J554olRPwbmUXGMTGRlZ5jU4ZTl16pRp1qyZadKkifntt98cfndmLQkJCaZhw4bm0KFD9m3ffPONCQwMNIMGDbJv69u3rwkODraHcWOM+fXXX029evVMt27d7NtKjk2XLl0celSKiopMw4YNTUJCgjlx4oR9e0lAcCbcSDITJ050eC/t27c3iYmJDtvO/hyLiopM69atTY8ePRy2l3fNzd13321iY2PNwYMHHbbfeuutJjw83P78N954o2nVqlWp/WEdzJaCT+rZs6cyMzN1ww036JtvvtGzzz6r1NRUNW7cWB988IG93XvvvSebzaZx48YpMNDx6xwQEGD/71q1atn/u7CwUAcPHlTX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AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAluIT4WbmzJlq2rSpQkNDlZSUpKysrHLbzp8/X127dlX9+vVVv359paSknLM9AACoXrwebpYuXar09HRlZGQoOztb7dq1U2pqqvbv319m+3Xr1mnAgAH67LPPlJmZqbi4OF133XX65ZdfPFw5AADwRQHGGOPNApKSktSpUyfNmDFDkmSz2RQXF6cRI0Zo1KhRFe5fXFys+vXra8aMGRo0aFCF7QsKChQeHq78/HyFhYWdd/0AAMD9XDl/e7XnpqioSBs3blRKSop9W2BgoFJSUpSZmenUcxw7dkwnT55UZGSku8oEAAB+pIY3X/zgwYMqLi5WdHS0w/bo6Ght27bNqed4/PHH1ahRI4eAdKYTJ07oxIkT9p8LCgoqXzAAAPB5Xr/m5nxMmTJFS5Ys0bvvvqvQ0NAy20yePFnh4eH2R1xcnIerBAAAnuTVcBMVFaWgoCDl5eU5bM/Ly1NMTMw5933++ec1ZcoUrVq1Sm3bti233ejRo5Wfn29/7N27t0pqBwAAvsmr4SY4OFiJiYlau3atfZvNZtPatWuVnJxc7n7PPvusJk2apBUrVqhjx47nfI2QkBCFhYU5PAAAgHV59ZobSUpPT9fgwYPVsWNHde7cWdOmTdPRo0c1ZMgQSdKgQYPUuHFjTZ48WZL0t7/9TePGjdPixYvVtGlT5ebmSpLq1q2runXreu19AAAA3+D1cNO/f38dOHBA48aNU25urhISErRixQr7RcZ79uxRYOD/Ophmz56toqIi9evXz+F5MjIyNH78eE+WDgAAfJDX17nxNNa5AQDA//jNOjcAAABVjXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAs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ixYtTGhoqImLizMPPPCA+e233zxfuB/47LPPyvx/ackxHTx4sOnevXupfRISEkxwcLBp3ry5WbBggcfrPpcAY+ijAwAA1sE1NwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwD8WnFxsa688krdfPPNDtvz8/MVFxenMWPGeKkyAN7CCsUA/N5///tfJSQkaP78+brtttskSYMGDdI333yjDRs2cDNKoJoh3ACwhJdfflnjx4/X999/r6ysLP35z3/Whg0b1K5dO2+XBsDDCDcALMEYox49eigoKEjfffedRowYobFjx3q7LABeQLgBYBnbtm3T5ZdfrjZt2ig7O1s1atTwdkkAvIALigFYxmuvvabatWsrJydHP//8s7fLAeAl9NwAsIQvv/xS3bt316pVq/TUU09JktasWaOAgAAvVwbA0+i5AeD3jh07pjvvvFPDhg3TNddco1dffVVZWVmaM2eOt0sD4AX03ADwew8//LCWL1+ub775RrVr15YkzZ07V4899pi+++47NW3a1LsFAvAowg0Av/avf/1L1157rdatW6cuXbo4/C41NVWnTp1ieAqoZgg3AADAUrjmBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWMr/A2BwwcDn0UjZAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+8UlEQVR4nO3de1zUVeL/8TcgzHgDNBTQyFuWkRcShaU00zAs17LWMi1vtVmmllK7apakVrpdzPKulfa1bXW738wb5bYWu7iilZlWimmt4C3BNEXh/P7wx6zDRWdwhhnm83o+HjwezeF8Zs5nPkPz9pzzOSfIGGMEAABgQcG+bgAAAICvEIQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYSAAHDNNdfommuu8XUznOTn56tfv3664IILFBQUpJkzZ/q6SR7RvHlzDR061NfN8AtlP3e7du1SUFCQlixZ4rM2Ae4iCMFvff311+rXr5+aNWsmu92upk2bqmfPnpo1a5bXXvP111+v8Av7v//9rx5//HFt3rzZa6/tC8eOHdPjjz+udevWefy5x44dq1WrVmnChAlaunSpevXqVWG9NWvWKCgoSJMnTy73u9zcXNWpU0f9+vXzePu8ZdmyZQoKCtKCBQsq/P2IESMUGhqqL7/8sppbFjieeuopvfvuu75uBgKFAfzQ559/bsLCwszFF19spk6dahYtWmQmTZpkrrvuOtOqVSuvvW7v3r1Ns2bNypVv2LDBSDKLFy/22mufj27duplu3bq5fdz+/fuNJJORkeHxNkVHR5s77rjDpboDBw40NpvNbN++3am8V69eJjw83Pz8888eb19VNWvWzAwZMuSsdXr16mUiIyNNXl6eU/m///1vExwcbP70pz95sYXVp+znrqSkxPz222/m1KlTXn3dunXrnvMaAK6q5esgBlTkySefVEREhDZs2KDIyEin3+3bt883jfKCo0ePqm7dur5uhlfs27ev3LWrzPPPP6+PP/5Y9913nz755BNJp3tWVq5cqRdffFFNmjTxYks9b968ebr88ss1duxYvf7665Kk4uJi3Xvvvbrooov0+OOP+7aBLnL38xkUFCS73e7FFgFe4OskBlTk0ksvNddcc43L9ZcuXWo6d+5sateubSIjI03Xrl3NqlWrHL9/9913zQ033GBiY2NNWFiYadmypZkyZYrTv1y7detmJDn9NGvWzHz66aflylWmd+hf//qXSUtLM+Hh4aZ27drm6quvNuvXr3dqY0ZGhpFkvvnmGzNgwAATGRlpEhISKj2nxYsXG0nmH//4hxk+fLhp2LChqV+/vhk0aJA5dOiQU92KeoTy8/PNXXfdZRo3bmxsNptp3769WbJkieP3ubm5FZ7XuXqHduzYYfr162caNGhgateubZKTk82HH35Yrt1lf85l4cKFRpJZsmSJ+eWXX0xMTIzp3LmzKS4uPuexu3btMiNGjDCXXHKJsdvtpmHDhqZfv34mNzfXqV5p29avX2/Gjh1roqKiTJ06dUzfvn3Nvn37nOqWlJSYqVOnmqZNm5ratWuba665xmzZssWlHiFjjHn66aeNJLN69WpjjDEzZswwkszHH398zmONOf2Zuv76601kZKSpU6eOadeunZk5c6ZTnczMTNOlSxdTp04dExERYW688UazdevWcs+Vk5NjevXqZerXr2/q1q1revToYbKysip8b9atW2dGjBhhGjVqZCIjIx2/X7BggWnZsqWx2+2mc+fO5rPPPiv3uSv9TJ35tzFkyBBTt25d89NPP5mbbrrJ1K1b10RFRZmHHnqoXM/RM888Y1JSUkzDhg2N3W43HTt2NG+88YZTnYo+W2dej59++skMGzbMNG7c2ISFhZn4+Hjz8ssvl3tPXnzxRRMfH+/4f0ZiYqL561//Wun1QOAiCMEvXXfddaZ+/frm66+/Pmfdxx9/3EgyV155pXnmmWfMCy+8YAYOHGjGjRvnqNO3b19z2223mWeeecbMmzfP3HrrrUaSefjhhx11Vq9ebRISEkxUVJRZunSpWbp0qXnnnXdMXl6emTJlipFkhg8f7vjdjh07jDGnv4zCwsJMSkqKee6558zzzz9v2rdvb8LCwsy///1vx/OXBqH4+Hhz0003mblz55o5c+ZUel6lX0zt2rUzXbt2NS+++KIZOXKkCQ4ONldffbUpKSlx1C37hXTs2DFz2WWXmdDQUDN27Fjz4osvmq5duxpJji/TX3/91cybN89IMjfffLPjvL788stK25SXl2eio6NN/fr1zcSJE82MGTNMhw4dTHBwsHn77beNMaeD0tKlS40k07NnT8fznktJSYm56qqrTFRUlBkwYIAJCQkxOTk55zzOGGPeeOMN06FDBzNp0iSzcOFC88gjj5gGDRqYZs2amaNHj5Z7T6+44grTo0cPM2vWLPPQQw+ZkJAQc9tttzk956OPPmokmRtuuMHMnj3b3HXXXaZJkyYmKirKpSB08uRJ06FDB9OqVSvz/fffm3r16pnbb7/dpfNZvXq1CQsLM82aNTMZGRlm3rx55oEHHjCpqamOOmvWrDG1atUyl1xyiXn66afN5MmTTVRUlGnQoIFTANyyZYupW7euiY2NNVOnTjXTp083LVq0MDabzfzrX/8q997Ex8ebbt26mVmzZpnp06cbY4x56aWXHH9jL774ohkzZoyJjIw0LVu2dCkI2e12c/nll5u77rrLzJs3z/zhD38wkszcuXOdzvvCCy80999/v5k9e7aZMWOGSUpKMpKcgvbSpUuNzWYzXbt2dXy2vvjiC2PM6c/nhRdeaOLi4syUKVPMvHnzzI033mgkmeeff97xHKWhu1+/fmbBggXmhRdeMHfffbd54IEHXLo+CCwEIfil1atXm5CQEBMSEmJSUlLMn//8Z7Nq1SpTVFTkVO/77783wcHB5uabby7Xc3BmUDh27Fi517j33ntNnTp1zPHjxx1l7s4RKikpMa1btzZpaWnlXq9FixamZ8+ejrLSIDRgwACX3oPSL6bExESn8y7taXjvvfccZWWD0MyZM40k89prrznKioqKTEpKiqlXr54pLCw0xrg/R2jMmDFGkvnnP//pKDty5Ihp0aKFad68udM1kGRGjhzp0vOW2rJliwkNDTWSzJgxY1w+rqLrm5WVZSSZ//u//3OUlb6nqampTtdr7NixJiQkxBw+fNgYY8y+fftMWFiY6d27t1O9Rx55pFwPxNmUzglq2LBhhXOGKnLq1CnTokUL06xZM/PLL784/e7MtiQkJJjGjRubgwcPOsq+/PJLExwcbAYPHuwo69u3rwkLC3MEd2OM+e9//2vq169vrr76akdZ6XvTpUsXp56aoqIi07hxY5OQkGBOnDjhKC8NE64EIUlmypQpTudyxRVXmMTERKeystexqKjItG3b1vTo0cOpvLI5QnfffbeJjY01Bw4ccCq//fbbTUREhOP5b7rpJnP55ZeXOx7WxF1j8Es9e/ZUVlaWbrzxRn355Zd6+umnlZaWpqZNm+r999931Hv33XdVUlKiSZMmKTjY+eMcFBTk+O/atWs7/vvIkSM6cOCAunbtqmPHjmnbtm1VbufmzZv1/fffa+DAgTp48KAOHDigAwcO6OjRo7r22mv12WefqaSkxOmY++67z63XGD58uEJDQx2PR4wYoVq1amnFihWVHrNixQrFxMRowIABjrLQ0FA98MAD+vXXX/WPf/zDrTac+bxJSUnq0qWLo6xevXoaPny4du3apa1bt1bpeUuFh4crLCxMknTddde5fNyZ1/fkyZM6ePCgLr74YkVGRionJ6dc/eHDhzt9Prp27ari4mL9+OOPkqS1a9eqqKhIo0ePdqo3ZswYt84nKSlJ9913nw4dOqRp06YpOjr6nMds2rRJubm5GjNmTLk5VqVt2bt3rzZv3qyhQ4eqYcOGjt+3b99ePXv2dHw2iouLtXr1avXt21ctW7Z01IuNjdXAgQO1fv16FRYWOr3GPffco5CQEMfj//znP9q3b5/uu+8+x7WRpKFDhyoiIsLl96Ls575r167auXOnU9mZ1/GXX35RQUGBunbtWuE1LMsYo7feekt9+vSRMcbxt3jgwAGlpaWpoKDA8TyRkZH66aeftGHDBpfbj8BFEILf6ty5s95++2398ssvys7O1oQJE3TkyBH169fP8YW7Y8cOBQcHKz4+/qzP9c033+jmm29WRESEwsPD1ahRI915552SpIKCgiq38fvvv5ckDRkyRI0aNXL6eemll3TixIlyz9+iRQu3XqN169ZOj+vVq6fY2Fjt2rWr0mN+/PFHtW7dulw4vOyyyxy/r4off/xRl156abny833eUqNGjVJwcLCaNWumhx56SCdPnnTpuN9++02TJk1SXFycbDaboqKi1KhRIx0+fLjC63vRRRc5PW7QoIGk01++Z55H2fe+UaNGjrqu6ty5sySpU6dOLtXfsWOHJKlt27aV1iltX2XXojSM79+/X8eOHau0XklJifbs2eNUXvbzWdl7ERoa6hSuzsZut6tRo0ZOZQ0aNHC836U+/PBD/e53v5PdblfDhg3VqFEjzZs3z6W/0f379+vw4cNauHBhub/FYcOGSfrfjRbjxo1TvXr1lJSUpNatW2vkyJH6/PPPXToXBB7uGoPfCwsLU+fOndW5c2ddcsklGjZsmN544w1lZGS4dPzhw4fVrVs3hYeHa8qUKWrVqpXsdrtycnI0bty4cj027ig99plnnlFCQkKFderVq+f0+Mx/9eJ/3n77bb3//vuaOXOmWrdurd69e+uZZ57RI488cs5jR48ercWLF2vMmDFKSUlRRESEgoKCdPvtt1d4fc/s8TiTMea8z6Om88bns7L3+0z//Oc/deONN+rqq6/W3LlzFRsbq9DQUC1evNhx593ZlF7nO++8U0OGDKmwTvv27SWdDoHbt2/Xhx9+qJUrV+qtt97S3LlzNWnSpArXs0JgIwihRin9V/XevXslSa1atVJJSYm2bt1aaRBZt26dDh48qLfffltXX321ozw3N7dc3TOHQVwpb9WqlaTTQzqpqakun4c7vv/+e3Xv3t3x+Ndff9XevXt1ww03VHpMs2bN9NVXX6mkpMSpV6h0GLBZs2aSKj+vsz3v9u3by5WXfV53HTlyRA888IA6duyoUaNGKSQkRH/4wx/0xBNPaMCAAefsRXvzzTc1ZMgQPffcc46y48eP6/Dhw1VqT+l5fP/99069Hvv37y/Xi+FppZ+pLVu2VPqZKm1fZdciKipKdevWld1uV506dSqtFxwcrLi4uLO258z3okePHo7ykydPKjc3Vx06dHDtxM7hrbfekt1u16pVq2Sz2RzlixcvLle3os9to0aNVL9+fRUXF7v0t1i3bl31799f/fv3V1FRkW655RY9+eSTmjBhAksAWAxDY/BLn376aYX/Oi+d+1Da1d+3b18FBwdrypQp5f7lX3p86b9Gz3y+oqIizZ07t9zz161bt8Ju+NK1VMp+sSYmJqpVq1Z69tln9euvv5Y7bv/+/ZWeo6sWLlzoNEQ0b948nTp1Stdff32lx9xwww3Ky8vT8uXLHWWnTp3SrFmzVK9ePXXr1k2SVKdOHUnlz+tsz5udna2srCxH2dGjR7Vw4UI1b978nEOUlXn00Ue1d+9eLViwwHG9XnjhBYWEhGjUqFHnPD4kJKTc52XWrFkqLi6uUntSU1MVGhqqWbNmOT1vdWwT0rFjR7Vo0UIzZ84sd11K2xIbG6uEhAS9+uqrTnW2bNmi1atXO0JySEiIrrvuOr333ntOQ6n5+fl6/fXX1aVLF4WHh5+1PZ06dVKjRo00f/58FRUVOcqXLFlS5aBZkZCQEAUFBTlds127dlW4gnTdunXLvXZpeH7rrbe0ZcuWcsec+bd48OBBp9+FhYUpPj5exhiXh2MROOgRgl8aPXq0jh07pptvvllt2rRRUVGRvvjiCy1fvlzNmzd3jPlffPHFmjhxoqZOnaquXbvqlltukc1m04YNG9SkSRNNmzZNV155pRo0aKAhQ4bogQceUFBQkJYuXVph0EpMTNTy5cuVnp6uzp07q169eurTp49atWqlyMhIzZ8/X/Xr11fdunWVnJysFi1a6KWXXtL111+vyy+/XMOGDVPTpk31888/69NPP1V4eLg++OCD83ovioqKdO211+q2227T9u3bNXfuXHXp0kU33nhjpccMHz5cCxYs0NChQ7Vx40Y1b95cb775pj7//HPNnDlT9evXl3R6GCQ+Pl7Lly/XJZdcooYNG6pt27aVzk8ZP368/va3v+n666/XAw88oIYNG+rVV19Vbm6u3nrrrXJzklyxceNGzZkzRyNHjnSaR9O0aVNNmTJF6enpeuutt/SHP/yh0uf4/e9/r6VLlyoiIkLx8fHKysrS2rVrdcEFF7jdHul078LDDz+sadOm6fe//71uuOEGbdq0SR9//LGioqKq9JyuCg4O1rx589SnTx8lJCRo2LBhio2N1bZt2/TNN99o1apVkk4Px15//fVKSUnR3Xffrd9++02zZs1SRESE04KNTzzxhNasWaMuXbro/vvvV61atbRgwQKdOHFCTz/99DnbExoaqieeeEL33nuvevToof79+ys3N1eLFy92eY6QK3r37q0ZM2aoV69eGjhwoPbt26c5c+bo4osv1ldffeVUNzExUWvXrtWMGTPUpEkTtWjRQsnJyZo+fbo+/fRTJScn65577lF8fLwOHTqknJwcrV27VocOHZJ0eiJ+TEyMrrrqKkVHR+vbb7/V7Nmz1bt3b8ffBizER3erAWf18ccfm7vuusu0adPG1KtXz7HdxujRo01+fn65+q+88oq54oorjM1mMw0aNDDdunUza9ascfz+888/N7/73e9M7dq1TZMmTRy340syn376qaPer7/+agYOHGgiIyMdCyqWeu+990x8fLypVatWuVuEN23aZG655RZzwQUXGJvNZpo1a2Zuu+02k5mZ6ahTevv8/v37XXoPyi6o2KBBA1OvXj1zxx13ON0ybUzlCyoOGzbMREVFmbCwMNOuXbsKtwj54osvTGJiogkLC3NrQcXIyEhjt9tNUlKS0zovpeTC7fOnTp0yHTt2NE2aNDEFBQUV/j4hIcFceOGF5siRI5U+zy+//OI413r16pm0tDSz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6m3lgbwadVmubtxaih41AO4iCAFV4M4t8Gfba8zdvcistnaOu/N8YgL4vQDgHQQhoAp8cQt8ZXNlSofiAnFIzdV5PqO6t9JVFzeq9t4xK/XOAYGKIARUQXXfAu+t1aj9/Yvc1Tvsxva8tNqHFK3WOwcEKoIQUAXVfQu8p4bizlQTvsg9dYedp8/Vir1zQKDirjGgCkq/oKX/fSGX8saEXU8PxdWkLSrO9w47T58rK1sDgYUeIaCKSr+gy/Y0eGPCrieH4mripq/nc4edp8/VG71zqHn8fVgZriMIAefBWzurl+XJobia+kXu7h12knfOlb3iUBOGleE6hsaA8+TpndUrew1PDcVZ6YvcG+fKXnHWVpOGleEaghBQQ3hqNWorfZF741xLe+cqi5ysbB24mB8WmBgaA2oQTwzFWWnTV2+cK3vFWVdNHVbG2dEjBNQw5zsUV913vPmSt86VveKsyUrDylZCjxBgQdV5x5uveetcq2uiPPyHlYaVrSTIGGOpwczCwkJFRESooKBA4eHhvm4O4FNWugXYSucK7yguMeryl0/OOdS6flwPPlte4K3vb3qEAAuryi3pNZWVzhXewfywwMQcIQAAXMT8sMBDjxAAAG5gflhgIQgBAOAmhloDB0NjAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsnwehObMmaPmzZvLbrcrOTlZ2dnZZ61/+PBhjRw5UrGxsbLZbLrkkku0YsWKamotAAAIJLV8+eLLly9Xenq65s+fr+TkZM2cOVNpaWnavn27GjduXK5+UVGRevbsqcaNG+vNN99U06ZN9eOPPyoyMrL6Gw8AAGq8IGOM8dWLJycnq3Pnzpo9e7YkqaSkRHFxcRo9erTGjx9frv78+fP1zDPPaNu2bQoNDa3SaxYWFioiIkIFBQUKDw8/r/YDAIDq4a3vb58NjRUVFWnjxo1KTU39X2OCg5WamqqsrKwKj3n//feVkpKikSNHKjo6Wm3bttVTTz2l4uLiSl/nxIkTKiwsdPoBAACQfBiEDhw4oOLiYkVHRzuVR0dHKy8vr8Jj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tcrExsaasWPHVnPLA8+KFSvMxIkTzdtvv20kmXfeeees9Xfu3Gnq1Klj0tPTzdatW82sWbNMSEiIWblypVuvG3BBKCkpyYwcOdLxuLi42DRp0sRMmzatwvq33Xab6d27t1NZcnKyuffee73aTitw91qUderUKVO/fn3z6quvequJllKV63Hq1Clz5ZVXmpdeeskMGTKEIOQh7l6LefPmmZYtW5qioqLqaqJluHstRo4caXr06OFUlp6ebq666iqvttNqXAlCf/7zn83ll1/uVNa/f3+Tlpbm1msF1NBYUVGRNm7cqNTUVEdZcHCwUlNTlZWVVeExWVlZTvUlKS0trdL6cE1VrkVZx44d08mTJz2+wZ4VVfV6TJkyRY0bN9bdd99dHc20hKpci/fff18pKSkaOXKkoqOj1bZtWz311FMqLi6urmYHpKpciyuvvFIbN250DJ/t3LlTK1as0A033FAtbcb/eOr72y9WlvaUAwcOqLi42LE9R6no6Ght27atwmPy8vIqrJ+Xl+e1dlpBVa5FWePGjVOTJk3KfdDhvqpcj/Xr1+vll1/W5s2bq6GF1lGVa7Fz50598sknuuOOO7RixQr98MMPuv/++3Xy5EllZGRUR7MDUlWuxcCBA3XgwAF16dJFxhidOnVK9913nx555JHqaDLOUNn3d2FhoX777TfVrl3bpecJqB4hBI7p06dr2bJleuedd2S3233dHMs5cuSIBg0apEWLFikqKsrXzbG8kpISNW7cWAsXLlRiYqL69++viRMnav78+b5umuWsW7dOTz31lObOnaucnBy9/fbb+uijjzR16lRfNw1VFFA9QlFRUQoJCVF+fr5TeX5+vmJiYio8JiYmxq36cE1VrkWpZ599VtOnT9fatWvVvn17bzbTMty9Hjt27NCuXbvUp08fR1lJSYkkqVatWtq+fbtatWrl3UYHqKr8bcTGxio0NFQhISGOsssuu0x5eXkqKipSWFiYV9scqKpyLR577DENGjRIf/zjHyVJ7dq109GjRzV8+HBNnDjRaZNweFdl39/h4eEu9wZJAdYjFBYWpsTERGVmZjrKSkpKlJmZqZSUlAqPSUlJcaovSWvWrKm0PlxTlWshSU8//bSmTp2qlStXqlOnTtXRVEtw93q0adNGX3/9tTZv3uz4ufHGG9W9e3dt3rxZcXFx1dn8gFKVv42rrrpKP/zwgyOMStJ3332n2NhYQtB5qMq1OHbsWLmwUxpQDVt3ViuPfX+7N4/b/y1btszYbDazZMkSs3XrVjN8+HATGRlp8vLyjDHGDBo0yIwfP95R//PPPze1atUyzz77rPn2229NRkYGt897iLvXYvr06SYsLMy8+eabZu/evY6fI0eO+OoUAoq716Ms7hrzHHevxe7du039+vXNqFGjzPbt282HH35oGjdubJ544glfnULAcPdaZGRkmPr165u//e1vZufOnWb16tWmVatW5rbbbvPVKQSMI0eOmE2bNplNmzYZSWbGjBlm06ZN5scffzTGGDN+/HgzaNAgR/3S2+f/9Kc/mW+//dbMmTOH2+dLzZo1y1x00UUmLCzMJCUlmX/961+O33Xr1s0MGTLEqf7f//53c8kll5iwsDBz+eWXm48++qiaWxy43LkWzZo1M5LK/WRkZFR/wwOUu38bZyIIeZa71+KLL74wycnJxmazmZYtW5onn3zSnDp1qppbHZjcuRYnT540jz/+uGnVqpWx2+0mLi7O3H///eaXX36p/oYHmE8//bTC74DS93/IkCGmW7du5Y5JSEgwYWFhpmXLlmbx4sVuv26QMfTlAQAAawqoOUIAAADuIAgBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBqNGKi4t15ZVX6pZbbnEqLygoUFxcnCZOnOijlgGoCVhZGkCN99133ykhIUGLFi3SHXfcIUkaPHiwvvzyS23YsIGNSQFUiiAEICC8+OKLevzxx/XNN98oOztbt956qzZs2KAOHTr4umkA/BhBCEBAMMaoR48eCgkJ0ddff63Ro0fr0Ucf9XWzAPg5ghCAgLFt2zZddtllateunXJyclSrVi1fNwmAn2OyNICA8corr6hOnTrKzc3VTz/95OvmAKgB6BECEBC++OILdevWTatXr9YTTzwhSVq7dq2CgoJ83DIA/oweIQA13rFjxzR06FCNGDFC3bt318svv6zs7GzNnz/f100D4OfoEQJQ4z344INasWKFvvzyS9WpU0eStGDBAj388MP6+uuv1bx5c982EIDfIggBqNH+8Y9/6Nprr9W6devUpUsXp9+lpaXp1KlTDJEBqBRBCAAAWBZzhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGX9P8sDe9jobEdbAAAAAElFTkSuQmCC", "text/plain": [ "
" ]