{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":52254,"databundleVersionId":9674523,"sourceType":"competition"},{"sourceId":6211844,"sourceType":"datasetVersion","datasetId":3567114},{"sourceId":6500328,"sourceType":"datasetVersion","datasetId":3753394}],"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"Hi I tried convert Keras team's code to Pytorch including all training pipeline as well.","metadata":{}},{"cell_type":"code","source":"import os\nimport torch\nfrom torch.utils.data import Dataset, DataLoader\nfrom torchvision import transforms\nfrom PIL import Image\nimport torch.optim as optim\nfrom torch import nn\n\n\nimport numpy as np\nimport pandas as pd\nimport shutil\nimport glob\nfrom shutil import copyfile\nfrom matplotlib import pyplot as plt\nfrom sklearn.model_selection import train_test_split\npd.set_option('display.max_rows', 500)\npd.set_option('display.max_columns', 500)\npd.set_option('display.width', 1000)\npd.set_option('display.max_colwidth',500)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:06:38.40292Z","iopub.execute_input":"2024-11-27T15:06:38.403633Z","iopub.status.idle":"2024-11-27T15:06:38.409626Z","shell.execute_reply.started":"2024-11-27T15:06:38.403601Z","shell.execute_reply":"2024-11-27T15:06:38.408854Z"}},"outputs":[],"execution_count":5},{"cell_type":"code","source":"class Config:\n    SEED = 42\n    IMAGE_SIZE = [256, 256]\n    BATCH_SIZE = 32\n    EPOCHS = 2\n    TARGET_COLS  = [\n        \"bowel_injury\", \"extravasation_injury\",\n        \"kidney_healthy\", \"kidney_low\", \"kidney_high\",\n        \"liver_healthy\", \"liver_low\", \"liver_high\",\n        \"spleen_healthy\", \"spleen_low\", \"spleen_high\",\n    ]\n\nconfig = Config()\nprint(f\"Số lượng nhãn mục tiêu: {len(Config.TARGET_COLS)}\")\ntorch.manual_seed(Config.SEED)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:12:12.217507Z","iopub.execute_input":"2024-11-27T15:12:12.218098Z","iopub.status.idle":"2024-11-27T15:12:12.23362Z","shell.execute_reply.started":"2024-11-27T15:12:12.218064Z","shell.execute_reply":"2024-11-27T15:12:12.232711Z"}},"outputs":[{"name":"stdout","text":"Số lượng nhãn mục tiêu: 11\n","output_type":"stream"},{"execution_count":7,"output_type":"execute_result","data":{"text/plain":"<torch._C.Generator at 0x7efc511105b0>"},"metadata":{}}],"execution_count":7},{"cell_type":"code","source":"BASE_PATH = f\"/kaggle/input/rsna-atd-512x512-png-v2-dataset\"","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:12:16.129798Z","iopub.execute_input":"2024-11-27T15:12:16.130142Z","iopub.status.idle":"2024-11-27T15:12:16.134695Z","shell.execute_reply.started":"2024-11-27T15:12:16.130108Z","shell.execute_reply":"2024-11-27T15:12:16.133687Z"}},"outputs":[],"execution_count":8},{"cell_type":"code","source":"df_extravbb = pd.read_csv('/kaggle/input/rsna-abdominal-trauma-extravasation-bounding-boxes/active_extravasation_bounding_boxes.csv')\n\next_series = df_extravbb.series_id.unique()\next_patients = df_extravbb.pid.unique()\nlen(ext_series), len(ext_patients)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:12:21.80275Z","iopub.execute_input":"2024-11-27T15:12:21.803455Z","iopub.status.idle":"2024-11-27T15:12:21.841728Z","shell.execute_reply.started":"2024-11-27T15:12:21.803425Z","shell.execute_reply":"2024-11-27T15:12:21.840903Z"}},"outputs":[{"execution_count":9,"output_type":"execute_result","data":{"text/plain":"(259, 200)"},"metadata":{}}],"execution_count":9},{"cell_type":"code","source":"# train\ndataframe = pd.read_csv(f\"{BASE_PATH}/train.csv\")\ndataframe[\"image_path\"] = f\"{BASE_PATH}/train_images\"\\\n                    + \"/\" + dataframe.patient_id.astype(str)\\\n                    + \"/\" + dataframe.series_id.astype(str)\\\n                    + \"/\" + dataframe.instance_number.astype(str) +\".png\"\ndataframe = dataframe.drop_duplicates()\n\ndataframe.head(10)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:12:25.375077Z","iopub.execute_input":"2024-11-27T15:12:25.375441Z","iopub.status.idle":"2024-11-27T15:12:25.497143Z","shell.execute_reply.started":"2024-11-27T15:12:25.375394Z","shell.execute_reply":"2024-11-27T15:12:25.496243Z"}},"outputs":[{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"   patient_id  bowel_healthy  bowel_injury  extravasation_healthy  extravasation_injury  kidney_healthy  kidney_low  kidney_high  liver_healthy  liver_low  liver_high  spleen_healthy  spleen_low  spleen_high  any_injury  series_id  instance_number           injury_name                                                                      image_path  width  height\n0       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              362  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/362.png    512     512\n1       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              363  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/363.png    512     512\n2       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              364  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/364.png    512     512\n3       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              365  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/365.png    512     512\n4       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              366  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/366.png    512     512\n5       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              367  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/367.png    512     512\n6       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              368  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/368.png    512     512\n7       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              369  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/369.png    512     512\n8       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              370  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/370.png    512     512\n9       10004              1             0                      0                     1               0           1            0              1          0           0               0           0            1           1      21057              371  Active_Extravasation  /kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/371.png    512     512","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patient_id</th>\n      <th>bowel_healthy</th>\n      <th>bowel_injury</th>\n      <th>extravasation_healthy</th>\n      <th>extravasation_injury</th>\n      <th>kidney_healthy</th>\n      <th>kidney_low</th>\n      <th>kidney_high</th>\n      <th>liver_healthy</th>\n      <th>liver_low</th>\n      <th>liver_high</th>\n      <th>spleen_healthy</th>\n      <th>spleen_low</th>\n      <th>spleen_high</th>\n      <th>any_injury</th>\n      <th>series_id</th>\n      <th>instance_number</th>\n      <th>injury_name</th>\n      <th>image_path</th>\n      <th>width</th>\n      <th>height</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>362</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/362.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>363</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/363.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>364</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/364.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>365</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/365.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>366</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/366.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>367</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/367.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>368</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/368.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>369</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/369.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>370</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/370.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>10004</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21057</td>\n      <td>371</td>\n      <td>Active_Extravasation</td>\n      <td>/kaggle/input/rsna-atd-512x512-png-v2-dataset/train_images/10004/21057/371.png</td>\n      <td>512</td>\n      <td>512</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":10},{"cell_type":"code","source":"#Using histogram to get the distribution of the labels and to check if there are outliers and wrong labels\ndataframe.hist(figsize=(20,12),bins=2)\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:12:31.167457Z","iopub.execute_input":"2024-11-27T15:12:31.168387Z","iopub.status.idle":"2024-11-27T15:12:33.703371Z","shell.execute_reply.started":"2024-11-27T15:12:31.168348Z","shell.execute_reply":"2024-11-27T15:12:33.702389Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 2000x1200 with 20 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAABlcAAAPeCAYAAACRKkyiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVxU1f8/8NcMwgDKgKhshoharpgKpribCCqZmGa44m6KJlJW7qjllmtm4lJqiWmWkbuOW27kguKeaW59NXBBxBUH5vz+8Df34wjqDDIzMPf1fDx81Jz7vvee92XmvufeM/dehRBCgIiIiIiIiIiIiIiIiIyitHYHiIiIiIiIiIiIiIiIihIOrhAREREREREREREREZmAgytEREREREREREREREQm4OAKERERERERERERERGRCTi4QkREREREREREREREZAIOrhAREREREREREREREZmAgytEREREREREREREREQm4OAKERERERERERERERGRCTi4QkREREREREREREREZAIOrhC9gl27dkGhUGDXrl3W7spzKRQKxMXFvTQuLi4OCoXC/B0iIrIy/f7u5s2b1u6KUcqXL4+ePXuaNI9CocDgwYPN0yEj1m1M3dHHWqufRETWIoc6lJ959Jo1a4ZmzZrla14iIrIdPXv2RPny5a3ah0uXLkGhUGD69OlWW/fSpUuNjrVGP+WOgytERvj222+N2pmZy6RJk5CYmGi19RMREeXX/v37ERcXh4yMDGt3hYiIiIioUNq4caPRP1CyJdeuXUNcXBxSUlKs3ZUiQa7vk8KMgytERnje4EqTJk3w8OFDNGnSxKzrf5XBlYcPH2L06NEF2yEiIiIj7d+/H+PHj+fgChGRjJw9exaLFi3K17xbt27F1q1bC7hHRESF28aNGzF+/Hhrd8Pirl27hvHjx+c5uLJo0SKcPXvW8p0qxOT6PinMilm7A0RFmVKphKOjo7W78UKFvX9ERERERGRbVCpVvud1cHAowJ4ADx48gLOzc4Euk4jImrKzs6HT6Qp8f1nY2NvbW7sLRC/FK1fIJunvY/zXX3+hU6dOUKvVKFWqFIYOHYpHjx5JcUuWLMHbb78NDw8PqFQqVKtWDfPnzzdYVvny5XHq1Cn88ccfUCgUUCgU0j2An/fMlQMHDqBVq1ZwdXWFs7MzmjZtin379uXZx/Pnz6Nn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K0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmYCDK0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmYCDK0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmYCDK0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmYCDK0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERWcHVq1fRrVs3lCpVCk5OTggICMDhw4el6UIIjB07Ft7e3nByckJISAjOnTtnsIz09HR07doVarUabm5u6NOnD+7du2cQc/z4cTRu3BiOjo7w9fXFtGnTLJIfEZEt4+AKERERERERERGRhd2+fRsNGzaEvb09Nm3ahNOnT2PGjBkoWbKkFDNt2jR8/fXXiI+Px4EDB1C8eHGEhYXh0aNHUkzXrl1x6tQpaDQarF+/Hrt370b//v2l6ZmZmQgNDYWfnx+Sk5Px1VdfIS4uDgsXLrRovkREtqaYtTtAREREREREREQkN1OnToWvry+WLFkitfn7+0v/L4TA7NmzMXr0aLRr1w4A8MMPP8DT0xOJiYmIjIzEmTNnsHnzZhw6dAhBQUEAgLlz56JNmzaYPn06fHx8kJCQgMePH+P777+Hg4MDqlevjpSUFMycOdNgEIaIiEzDK1eIiIiIiIiIiIgsbO3atQgKCsL7778PDw8P1K5dG4sWLZKmX7x4EampqQgJCZHaXF1dUa9ePSQlJQEAkpKS4ObmJg2sAEBISAiUSiUOHDggxTRp0gQODg5STFhYGM6ePYvbt2+bO00iIpvFK1eIiIiIiIiIiIgs7MKFC5g/fz5iY2MxcuRIHDp0CB999BEcHBwQFRWF1NRUAICnp6fBfJ6entK01NRUeHh4GEwvVqwY3N3dDWKeviLm6WWmpqYa3IZMLysrC1lZWdLrzMxMAIBWq4VWqzUpT328SilMmq8o0edmyzkC1snT1PdbQa3P0uu1NDnk+So5GjsP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NS01NRUODg5wc3MzaPf09ERqaqoU8/TAin66ftqLYjIzM/Hw4UM4OTnlWndWVhaysrKk15mZmQAArVYLrVZrUo76eJVSmDRfUaLPzZZzBKyTp6nvt4Jan6XXa2lyyPNVcjR2Hg6uEBERERERERERWdi///6LoUOHQqPRwNHR0drdMTB58mSMHz8+V/vWrVvh7Oycr2VODNK9arcKPTnkCFg2z40bN1psXU/TaDRWWa+lySHP/OT44MEDo+I4uEJERERERERERGRhycnJuH79OurUqSO15eTkYPfu3fjmm2+wZcsWPH78GBkZGQZXr6SlpcHLywsA4OXlhYMHDxosNy0tTZqm/6++7ekYtVqd51UrADBixAjExsZKrzMzM+Hr64vQ0FCo1WqT8tRqtdBoNBhzWIksncKkeYsKlVJgYpDOpnMErJPnybgwi6xHT/9+bdmyJezt7S26bkuSQ56vkqP+ar2X4eAKERERERERERGRhbVo0QInTpwwaOvVqxeqVKmCzz77DL6+vrC3t8f27dvRoUMHAMDZs2dx5coVBAcHAwCCg4Px5Zdf4vr16/Dw8ADw5FfaarUa1apVk2Ke/fW/RqORlpEXlUoFlUqVq93e3j7fJ2KzdApk5djuwAMgjxwBy+ZprRP/r/JeL0rkkGd+cjQ2noMrREREREREREREFubi4oIaNWoYtBUvXhylSpWS2vv06YPY2Fi4u7tDrVZjyJAhCA4ORv369QEAoaGhqFatGrp3745p06YhNTUVo0ePRnR0tDQ48uGHH+Kbb77Bp59+it69e2PHjh34+eefsWHDBssmTERkYzi4QkREREREREREVAjNmjULSqUSHTp0QFZWFsLCwvDtt99K0+3s7LB+/XoMHDgQwcHBKF68OKKiojBhwgQpxt/fHxs2bMCwYcMwZ84cvPbaa1i8eDHCwix7uyUiIlvDwRUiIiIiIiIiIqJCYNeuXQavHR0dMW/ePMybN++58/j5+b30od/NmjXD0aNHC6KLRET0/3FwhYiIiIiIiIiIiIgKnfKfW/b2dSo7gWlvATXittj083PkkKc+R3NSmnfxREREREREREREREREtoWDK0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmYCDK0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmYCDK0RERERERERERERERCbg4AoREREREREREREREZEJCnxwZfLkyahbty5cXFzg4eGBiIgInD171iDm0aNHiI6ORqlSpVCiRAl06NABaWlpBjFXrlxBeHg4nJ2d4eHhgeHDhyM7O9sgZteuXahTpw5UKhUqVaqEpUuXFnQ6RERUCLHWEBGRubHWEBERERHRixT44Moff/yB6Oho/Pnnn9BoNNBqtQgNDcX9+/elmGHDhmHdunVYvXo1/vjjD1y7dg3vvfeeND0nJwfh4eF4/Pgx9u/fj2XLlmHp0qUYO3asFHPx4kWEh4ejefPmSElJQUxMDPr27YstW7YUdEpERFTIsNYQEZG5sdYQEREREdGLFCvoBW7evNng9dKlS+Hh4YHk5GQ0adIEd+7cwXfffYcVK1bg7bffBgAsWbIEVatWxZ9//on69etj69atOH36NLZt2wZPT0/UqlULEydOxGeffYa4uDg4ODggPj4e/v7+mDFjBgCgatWq2Lt3L2bNmoWwsLCCTouIiAoR1hoiIjI31hoiIiIiInqRAh9cedadO3cAAO7u7gCA5ORkaLVahISESDFVqlRBuXLlkJSUhPr16yMpKQkBAQHw9PSUYsLCwjBw4ECcOnUKtWvXRlJSksEy9DExMTHP7UtWVhaysrKk15mZmQAArVYLrVZrdE76WJVSGD0PGU+/Xbl9zYPb17wssX1N2V+9yjxFCWtN0SWHfZIccgTkkacccgT+l5+ptYO1hrWmsJLDZ1cOOQLyyFMOOQKsNUREZBvMOrii0+kQExODhg0bokaNGgCA1NRUODg4wM3NzSDW09MTqampUszTByD66fppL4rJzMzEw4cP4eTklKs/kydPxvjx43O1b926Fc7OzibnNzFIZ/I8ZDxuX/Pi9jUvc27fjRs3mjzPgwcPzNCTwoG1xjbIIU855AjII0855AgAGo3GpHjWmidYawovOeQphxwBeeQphxwB1hoiIirazDq4Eh0djZMnT2Lv3r3mXI3RRowYgdjYWOl1ZmYmfH19ERoaCrVabfRytFotNBoNxhxWIkunMEdXZU2lFJgYpOP2NRNuX/OyxPY9GWf6LUL0v2i1Raw1RZsc9klyyBGQR55yyBH4X54tW7aEvb290fOx1lgOa41p5PDZlUOOgDzylEOOAGsNERHZBrMNrgwePBjr16/H7t278dprr0ntXl5eePz4MTIyMgx+5ZWWlgYvLy8p5uDBgwbLS0tLk6bp/6tvezpGrVbn+esuAFCpVFCpVLna7e3tTSrmelk6BbJybPfLjrVx+5oXt695mXP75md/lZ95igLWGtshhzzlkCMgjzzlkCNg+n6LteYJ1prCSw55yiFHQB55yiFHgLWGiIiKNmVBL1AIgcGDB+O3337Djh074O/vbzA9MDAQ9vb22L59u9R29uxZXLlyBcHBwQCA4OBgnDhxAtevX5diNBoN1Go1qlWrJsU8vQx9jH4ZRERku1hriIjI3FhriIiIiIjoRQr8ypXo6GisWLECv//+O1xcXKR7Cbu6usLJyQmurq7o06cPYmNj4e7uDrVajSFDhiA4OBj169cHAISGhqJatWro3r07pk2bhtTUVIwePRrR0dHSL7Q+/PBDfPPNN/j000/Ru3dv7NixAz///DM2bNhQ0CkREVEhw1pDRETmxlpDREREREQvUuBXrsyfPx937txBs2bN4O3tLf1btWqVFDNr1iy888476NChA5o0aQIvLy+sWbNGmm5nZ4f169fDzs4OwcHB6NatG3r06IEJEyZIMf7+/tiwYQM0Gg3efPNNzJgxA4sXL0ZYmOnPIiAioqKFtYaIiMyNtYaIiIiIiF6kwK9cEUK8NMbR0RHz5s3DvHnznhvj5+eHjRs3vnA5zZo1w9GjR03uIxERFW2sNUREZG6sNURERERE9CIFfuUKERERERERERERvdzkyZNRt25duLi4wMPDAxERETh79qxBzKNHjxAdHY1SpUqhRIkS6NChA9LS0gxirly5gvDwcDg7O8PDwwPDhw9Hdna2QcyuXbtQp04dqFQqVKpUCUuXLjV3ekRENo2DK0RERERERERERFbwxx9/IDo6Gn/++Sc0Gg20Wi1CQ0Nx//59KWbYsGFYt24dVq9ejT/++APXrl3De++9J03PyclBeHg4Hj9+jP3792PZsmVYunQpxo4dK8VcvHgR4eHhaN68OVJSUhATE4O+fftiy5YtFs2XiMiWFPhtwYiIiIiIiIiIiOjlNm/ebPB66dKl8PDwQHJyMpo0aYI7d+7gu+++w4oVK/D2228DAJYsWYKqVavizz//RP369bF161acPn0a27Ztg6enJ2rVqoWJEyfis88+Q1xcHBwcHBAfHw9/f3/MmDEDAFC1alXs3bsXs2bN4nO+iIjyiYMrREREREREREREhcCdO3cAAO7u7gCA5ORkaLVahISESDFVqlRBuXLlkJSUhPr16yMpKQkBAQHw9PSUYsLCwjBw4ECcOnUKtWvXRlJSksEy9DExMTF59iMrKwtZWVnS68zMTACAVquFVqs1KSd9vEr58ueZFVX63Gw5R0AeecohR0AeeepzM3WfZco8HFwhIiIiIiIiIiKyMp1Oh5iYGDRs2BA1atQAAKSmpsLBwQFubm4GsZ6enkhNTZVinh5Y0U/XT3tRTGZmJh4+fAgnJyeDaZMnT8b48eNz9XHr1q1wdnbOV34Tg3T5mq8okUOOgDzylEOOgDzy1Gg0Js/z4MEDo+I4uEJERERERERERGRl0dHROHnyJPbu3WvtrmDEiBGIjY2VXmdmZsLX1xehoaFQq9UmLUur1UKj0WDMYSWydIqC7mqhoFIKTAzS2XSOgDzylEOOgDzy1OfYsmVL2NvbmzSv/mq9l+HgChERERERERERkRUNHjwY69evx+7du/Haa69J7V5eXnj8+DEyMjIMrl5JS0uDl5eXFHPw4EGD5aWlpUnT9P/Vtz0do1arc121AgAqlQoqlSpXu729vcknKfWydApk5djmSVw9OeQIyCNPOeQIyCPP/Oy3jI1X5qdDRERERERERERE9GqEEBg8eDB+++037NixA/7+/gbTAwMDYW9vj+3bt0ttZ8+exZUrVxAcHAwACA4OxokTJ3D9+nUpRqPRQK1Wo1q1alLM08vQx+iXQUREpuOVK0RERERERERERFYQHR2NFStW4Pfff4eLi4v0jBRXV1c4OTnB1dUVffr0QWxsLNzd3aFWqzFkyBAEBwejfv36AIDQ0FBUq1YN3bt3x7Rp05CamorRo0cjOjpauvrkww8/xDfffINPP/0UvXv3xo4dO/Dzzz9jw4YNVsudiKio45UrREREREREREREVjB//nzcuXMHzZo1g7e3t/Rv1apVUsysWbPwzjvvoEOHDmjSpAm8vLywZs0aabqdnR3Wr18POzs7BAcHo1u3bujRowcmTJggxfj7+2PDhg3QaDR48803MWPGDCxevBhhYWEWzZeIyJbwyhUiIiIiIiIiIiIrEEK8NMbR0RHz5s3DvHnznhvj5+eHjRs3vnA5zZo1w9GjR03uIxER5Y1XrhAREREREREREREREZmAgytEREREREREREREREQm4OAKERERERERERERERGRCTi4QkREREREREREREREZAIOrhAREREREREREREREZmAgytEREREREREREREREQm4OAKERERERERERERERGRCTi4QkREREREREREREREZAIOrhAREREREREREREREZmAgytEREREREREREREREQm4OAKERERERERERERERGRCTi4QkREREREREREREREZAIOrhAREREREREREREREZmAgytEREREREREREREREQm4OAKERERERERERERERGRCTi4QkREREREREREREREZAIOrhAREREREREREREREZmAgytEREREREREREREREQm4OAKERERERERERERERGRCTi4QkREREREREREREREZAIOrhAREREREREREREREZmAgytEREREREREREREREQm4OAKERERERERERERERGRCYr84Mq8efNQvnx5ODo6ol69ejh48KC1u0RERDaGtYaIiMyNtYaIiCyB9YaIqOAU6cGVVatWITY2FuPGjcORI0fw5ptvIiwsDNevX7d214iIyEaw1hARkbmx1hARkSWw3hARFawiPbgyc+ZM9OvXD7169UK1atUQHx8PZ2dnfP/999buGhER2QjWGiIiMjfWGiIisgTWGyKiglXM2h3Ir8ePHyM5ORkjRoyQ2pRKJUJCQpCUlJTnPFlZWcjKypJe37lzBwCQnp4OrVZr9Lq1Wi0ePHiAYlolcnSKfGZAz1NMJ/DggY7b10y4fc3LEtv31q1bJs9z9+5dAIAQoqC7Y9NYa8xPDvskOeQIyCNPOeQI/C/PW7duwd7e3uj5WGvyh7XG/OTw2ZVDjoA88pRDjgBrjTWYWm8KqtYA8qg3cvvs2nKecsgRkEee+a01gPH1psgOrty8eRM5OTnw9PQ0aPf09MRff/2V5zyTJ0/G+PHjc7X7+/ubpY+Uf12s3QEbx+1rXubevqVn5H/eu3fvwtXVteA6Y+NYayxDDvskOeQIyCNPOeQIvFqerDWmYa2xDDl8duWQIyCPPOWQI8BaY2mm1hvWGtPxs2s75JAjII88XzXHl9WbIju4kh8jRoxAbGys9Fqn0yE9PR2lSpWCQmH8CF1mZiZ8fX3x77//Qq1Wm6Or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RERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmYCDK0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmYCDK0RERERERERERERERCbg4AoREREREREREREREZEJOLhCRERERERERERERERkAg6uEBERERERERERERERmcAsgytXr15Ft27dUKpUKTg5OSEgIACHDx+WpgshMHbsWHh7e8PJyQkhISE4d+6cwTLS09PRtWtXqNVquLm5oU+fPrh3755BzPHjx9G4cWM4OjrC19cX06ZNM0c6RERUyJQvXx4KhSLXv+joaABAs2bNck378MMPDZZx5coVhIeHw9nZGR4eHhg+fDiys7MNYnbt2oU6depApVKhUqVKWLp0qaVSJCIiIiIiIiKiQqzAB1du376Nhg0bwt7eHps2bcLp06cxY8YMlCxZUoqZNm0avv76a8THx+PAgQMoXrw4wsLC8OjRIymma9euOHXqFDQaDdavX4/du3ejf//+0vTMzEyEhobCz88PycnJ+OqrrxAXF4eFCxcWdEpERFTIHDp0CP/995/0T6PRAADef/99KaZfv34GMU8PwOfk5CA8PByPHz/G/v37sWzZMixduhRjx46VYi5evIjw8HA0b94cKSkpiImJQd++fbFlyxbLJUpERERERERERIVSsYJe4NSpU+Hr64slS5ZIbf7+/tL/CyEwe/ZsjB49Gu3atQMA/PDDD/D09ERiYiIiIyNx5swZbN68GYcOHUJQUBAAYO7cuWjTpg2mT58OHx8fJCQk4PHjx/j+++/h4OCA6tWrIyUlBTNnzjQYhCEiIttTpkwZg9dTpkxBxYoV0bRpU6nN2dkZXl5eec6/detWnD59Gtu2bYOnpydq1aqFiRMn4rPPPkNcXBwcHBwQHx8Pf39/zJgxAwBQtWpV7N27F7NmzUJYWJj5kiMiIiIiIiIiokKvwAdX1q5di7CwMLz//vv4448/ULZsWQwaNAj9+vUD8OSXwKmpqQgJCZHmcXV1Rb169ZCUlITIyEgkJSXBzc1NGlgBgJCQECiVShw4cADt27dHUlISmjRpAgcHBykmLCwMU6dOxe3btw2ulNHLyspCVlaW9DozMxMAoNVqodVqjc5RH2vKPEWNHHIErJenyk5Ydn1KYfBfWySHHIH/5Wfqe9aWP8uPHz/G8uXLERsbC4VCIbUnJCRg+fLl8PLyQtu2bTFmzBg4OzsDAJKSkhAQEABPT08pPiwsDAMHDsSpU6dQu3ZtJCUlGdQqfUxMTMwL+8NaYxo55MlaYzvkkCPAWkNERERERGSMAh9cuXDhAubPn4/Y2FiMHDkShw4dwkcffQQHBwdERUUhNTUVAAxOaOlf66elpqbCw8PDsKPFisHd3d0g5ukrYp5eZmpqap6DK5MnT8b48eNztW/dulU64WYK/W1obJkccgQsn+e0tyy6OsnEIJ11VmxBcsgRMP09++DBAzP1xPoSExORkZGBnj17Sm1dunSBn58ffHx8cPz4cXz22Wc4e/Ys1qxZA+BJncirDumnvSgmMzMTDx8+hJOTU579Ya3JHznkyVpjO+SQI8BaQ0RERERE9CIFPrii0+kQFBSESZMmAQBq166NkydPIj4+HlFRUQW9OpOMGDECsbGx0uvMzEz4+voiNDQUarXa6OVotVpoNBq0bNkS9vb25uiq1ckhR8B6edaIs+wzG1RKgYlBOow5rESWTvHyGYogOeQI/C9PU9+z+qsnbNF3332H1q1bw8fHR2p7+vaQAQEB8Pb2RosWLfDPP/+gYsWKZu0Pa41p5JAna43tkEOOAGsNERERERGRMQp8cMXb2xvVqlUzaKtatSp+/fVXAJDuf5+WlgZvb28pJi0tDbVq1ZJirl+/brCM7OxspKenS/N7eXkhLS3NIEb/+nn32FepVFCpVLna7e3t83WyI7/zFSVyyBGwfJ5ZOdY5IZOlU1ht3ZYihxwB09+ztvo5vnz5MrZt2yZdkfI89erVAwCcP38eFStWhJeXFw4ePGgQ82wNeV6dUavVz71qBWCtyS855MlaYzvkkCPAWlO+fHlcvnw5V/ugQYMwb948NGvWDH/88YfBtAEDBiA+Pl56feXKFQwcOBA7d+5EiRIlEBUVhcmTJ6NYsf8dhu3atQuxsbE4deoUfH19MXr0aIOrMYmIiIiIqHBSFvQCGzZsiLNnzxq0/f333/Dz8wPw5OH2Xl5e2L59uzQ9MzMTBw4cQHBwMAAgODgYGRkZSE5OlmJ27NgBnU4nnSALDg7G7t27De7trNFoULly5TxvCUZERP+PvbuPi6rO////BIRBVPCSq42UtPJaCwupVEqElNosujBNMU3TwF2hTbO8tjLdTK0su5T6hmvap/yU+lHR0lIxjWS9KjevctsEt0wxNUA4vz/8cXIElUGYYeY87rcbN51z3mfO+4nDvGTe5/0+nmfBggUKDg5WYmLiRdvl5uZKkjmoHxMTox07dtgN5GdlZSkwMNC8QCAmJsauVpW1KatVAADPtnXrVh0+fNj8Klsm7b777jPbDBs2zK7NzJkzzX0lJSVKTExUUVGRNm3apHfffVcZGRmaOHGi2ebAgQNKTEzUrbfeqtzcXI0ePVqPPPKIVq1y7swzAAAAAI6r9sGVtLQ0bd68Wc8995z27t2rhQsX6o033lBKSookycvLS6NHj9YzzzyjTz75RDt27NCgQYMUHh6uvn37Sjo70+X222/XsGHDtGXLFm3cuFGpqanq16+fuexL//795efnp6FDh2rXrl364IMPNHfuXLulWAAAnqu0tFQLFixQcnKy3RXA+/bt07Rp05STk6ODBw/qk08+0aBBg9S9e3d17NhRkhQfH6+2bdtq4MCB+uc//6lVq1Zp/PjxSklJMWedjBgxQvv379eYMWP03Xff6dVXX9XixYuVlpbmkrwAAOdq1qyZQkNDza9ly5apZcuW6tGjh9kmICDArs25yz+uXr1au3fv1vvvv6/OnTurd+/emjZtmubNm6eioiJJ0vz58xUZGalZs2apTZs2Sk1N1b333qvZs2c7PS8AwDVatGghLy+vcl9ln6PFxsaW2zdixAi75zh06JASExMVEBCg4OBgPfHEEzpz5oxdm3Xr1un666+XzWZTq1atlJGR4ayIAOCxqn1ZsBtuuEEff/yxxo0bp6lTpyoyMlJz5szRgAEDzDZjxozRyZMnNXz4cB07dky33HKLVq5cKX9/f7NNZmamUlNT1bNnT3l7eyspKUkvvfSSuT8oKEirV69WSkqKoqKi1LRpU02cONFunX0AgOdas2aNDh06pCFDhtht9/Pz05o1azRnzhydPHlSERERSkpK0vjx4802Pj4+WrZsmUaOHKmYmBjVq1dPycnJmjp1qtkmMjJSy5cvV1pamubOnasrrrhCb731lhISEpyWEQBQOxQVFen9999Xenq6vLz+WBIuMzNT77//vkJDQ3XnnXdqwoQJCggIkCRlZ2erQ4cOCgkJMdsnJCRo5MiR2rVrl667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/lm33HKLDMPQmTNnNGLECD311FPO6LJTXOi9p6CgQKdPn1bdunVd1DNcihVqjWSNemOFWiNZo95QaypGrXFf1BpqDbWGWuNOqDfuywr1xgq1RrJGvbFCrZGoNxdSE7WGmStw2PPPP69Fixbp448/lr+/v6u7U21OnDihgQMH6s0331TTpk1d3Z0aU1paquDgYL3xxhuKiorSAw88oKefflrz5893ddeq1bp16/Tcc8/p1Vdf1TfffKOPPvpIy5cv17Rp01zdNQCV5In1xiq1RrJGvaHWAO6PWuPeqDUA3IEn1hrJOvXGCrVGot5UFTNXztO0aVP5+PgoPz/fbnt+fr5CQ0MrPCY0NNSh9q5WlYxlXnjhBT3//PNas2aNOnbsWJPdvGyO5ty3b58OHjyoO++809xWWloqSapTp4727Nmjli1b1mynHVSVf8uwsDD5+vrKx8fH3NamTRvl5eWpqKhIfn5+NdrnqqhKzgkTJmjgwIF65JFHJEkdOnTQyZMnNXz4cD399NPy9nb/seULvfcEBgZyZVctZ4VaI1mj3lih1kjWqDfUmopRa9wXtYZaQ62h1rgT6o37skK9sUKtkaxRb6xQayTqzYXURK1x/+9KNfPz81NUVJTWrl1rbistLdXatWsVExNT4TExMTF27SUpKyvrgu1drSoZJWnmzJmaNm2aVq5cqS5dujijq5fF0ZytW7fWjh07lJuba379+c9/1q233qrc3FxFREQ4s/uVUpV/y5tvvll79+41C54k/etf/1JYWFitLAhS1XKeOnWq3Bt/WSE8e58r9+du7z34gxVqjWSNemOFWiNZo95Qayrmju89OItaQ62h1lBr3Ik7vv/gLCvUGyvUGska9cYKtUai3lxIjbz3VPLG95ayaNEiw2azGRkZGcbu3buN4cOHGw0bNjTy8vIMwzCMgQMHGk8++aTZfuPGjUadOnWMF154wfj222+NSZMmGb6+vsaOHTtcFeGSHM34/PPPG35+fsaHH35oHD582Pw6ceKEqyJUiqM5z5ecnGzcddddTupt1Tia8dChQ0aDBg2M1NRUY8+ePcayZcuM4OBg45lnnnFVhEpxNOekSZOMBg0aGP/4xz+M/fv3G6tXrzZatmxp3H///a6KcEknTpwwtm3bZmzbts2QZLz44ovGtm3bjB9++MEwDMN48sknjYEDB5rt9+/fbwQEBBhPPPGE8e233xrz5s0zfHx8jJUrV7oqAhxghVpjGNaoN1aoNYZhjXpDraHWeBpqDbWmDLWm9rBCrTEM6o3VWKHeWKHWGIY16o0Vao1hWKPe1IZaw+DKBbz88svGlVdeafj5+Rk33nijsXnzZnNfjx49jOTkZLv2ixcvNq655hrDz8/PaNeunbF8+XIn99hxjmRs3ry5Ianc16RJk5zfcQc5+m95LncoCobheMZNmzYZ0dHRhs1mM6666irj2WefNc6cOePkXjvOkZzFxcXG5MmTjZYtWxr+/v5GRESE8dhjjxm//vqr8zteSZ9//nmFP2dluZKTk40ePXqUO6Zz586Gn5+fcdVVVxkLFixwer9RdVaoNYZhjXpjhVpjGNaoN9Qaao2nodZQawyDWlPbeHqtMQzqjRVZod5YodYYhjXqjRVqjWF4fr2pDbXGyzA8ZF4PAAAAAAAAAACAE3DPFQAAAAAAAAAAAAcwuAK3kJGRIS8vLx08eFCSFBsbq9jYWJf26WJatGihO+64w2XnHjx4cKXbuqqfAOCJ3K1e1fb+AQDcr7ZU9neMdevWycvLS+vWrXP4HGXHfvjhh1XoIQBAkg4ePCgvLy9lZGS4uiuV4sr3fkdqFjXKWhhcATzc7t27NXnyZPOXMQAAAAAAAABVt3DhQs2ZM8fV3YCL1XF1B4CqWL16tau74DZ2796tKVOmKDY2Vi1atHB1dwDAUqhXAIDq5im1pXv37jp9+rT8/Pxc3RUAABy2cOFC7dy5U6NHj3Z1V+BCDK7ALbniP+BnzpxRaWkp//kHAFQa9QoAUN08pbZ4e3vL39+/2p4PAADA2VgWDG7p3HWG8/PzVadOHU2ZMqVcuz179sjLy0uvvPKKue3YsWMaPXq0IiIiZLPZ1KpVK82YMUOlpaVmm7J1J1944QXNmTNHLVu2lM1m0+7dux3q54YNG3TjjTfK399fV111ld57771ybSrTH0l64YUXdNNNN6lJkyaqW7euoqKiLrl+Y0ZGhu677z5J0q233iovL68K14i8WD/3798vLy8vzZ49u9zzb9q0SV5eXvrHP/5R2W8JAFiKu9Srcx05ckRDhw5VSEiI/P391alTJ7377rt2ba6//nrdc889dts6dOggLy8vbd++3dz2wQcfyMvLS99++22V+wMAsOcuteVSvwtdaP36efPm6aqrrlLdunV144036ssvv7zgfWZKS0v17LPP6oorrpC/v7969uypvXv3OtRPAHA3J06c0OjRo9WiRQvZbDYFBwerV69e+uabbySdrRPt27dXTk6ObrrpJtWtW1eRkZGaP39+pZ7/u+++07333qvGjRvL399fXbp00SeffFKunaM15Y033jBryg033KCtW7dWKX9l3/u/+uor3X777QoKClJAQIB69OihjRs32rX54Ycf9Nhjj+naa69V3bp11aRJE913332XXFo/NjZWy5cv1w8//GB+1nb+ajGX6uekSZPk6+ur//73v+Wef/jw4WrYsKF+//33yn9j4BLMXIHbCwkJUY8ePbR48WJNmjTJbt8HH3wgHx8fc4Dh1KlT6tGjh/7zn//o0Ucf1ZVXXqlNmzZp3LhxOnz4cLm1EhcsWKDff/9dw4cPl81mU+PGjSvdr7179+ree+/V0KFDlZycrHfeeUeDBw9WVFSU2rVr53B/5s6dqz//+c8aMGCAioqKtGjRIt13331atmyZEhMTK+xD9+7d9Ze//EUvvfSSnnrqKbVp00aSzD8r08+rrrpKN998szIzM5WWlmb3/JmZmWrQoIHuuuuuSn9fAMCqamu9Otfp06cVGxurvXv3KjU1VZGRkVqyZIkGDx6sY8eO6a9//askqVu3bnYD60ePHtWuXbvk7e2tL7/8Uh07dpQkffnll2rWrJld3QEAVJ/aWlsq87tQRV577TWlpqaqW7duSktL08GDB9W3b181atRIV1xxRbn2zz//vLy9vfW3v/1Nx48f18yZMzVgwAB99dVXle4rALibESNG6MMPP1Rqaqratm2rX375RRs2bNC3336r66+/XpL066+/qk+fPrr//vv14IMPavHixRo5cqT8/Pw0ZMiQCz73rl27dPPNN+tPf/qTnnzySdWrV0+LFy9W37599T//8z+6++67JTleUxYuXKgTJ07o0UcflZeXl2bOnKl77rlH+/fvl6+vr0P5K/Pe/9lnn6l3796KiorSpEmT5O3trQULFui2227Tl19+qRtvvFGStHXrVm3atEn9+vXTFVdcoYMHD+q1115TbGysdu/erYCAgAr78PTTT+v48eP68ccfzYuR69ev71A/Bw4cqKlTp+qDDz5QamqqeVxRUZE+/PBDJSUlMcPTHRiAG1iwYIEhyThw4IBhGIbRo0cPo0ePHub+119/3ZBk7Nixw+64tm3bGrfddpv5eNq0aUa9evWMf/3rX3btnnzyScPHx8c4dOiQYRiGceDAAUOSERgYaBw5csTh/jZv3tyQZHzxxRfmtiNHjhg2m814/PHHHe6PYRjGqVOn7NoUFRUZ7du3t8tXdu7k5GTz8ZIlSwxJxueff17lfpZ9f7/99lu78zdt2tTuXABgde5Wr87v35w5cwxJxvvvv29uKyoqMmJiYoz69esbBQUFhmH8UVt2795tGIZhfPLJJ4bNZjP+/Oc/Gw888IB5bMeOHY27777b4X4BAP7gbrWlsr9jfP7553a/pxQWFhpNmjQxbrjhBqO4uNhsl5GRYUiyy1x2bJs2bYzCwkJz+9y5cyv8XgCAJwkKCjJSUlIuuL9Hjx6GJGPWrFnmtsLCQqNz585GcHCwUVRUZBjGH+/3CxYsMNv17NnT6NChg/H777+b20pLS42bbrrJuPrqq81tjtaUJk2aGEePHjXb/e///q8hyfj0008rnbuy7/2lpaXG1VdfbSQkJBilpaVmu1OnThmRkZFGr1697LadLzs725BkvPfee+XOfe5na4mJiUbz5s2r3E/DMIyYmBgjOjra7viPPvrogp/jofZhWTB4hHvuuUd16tTRBx98YG7buXOndu/erQceeMDctmTJEnXr1k2NGjXSzz//bH7FxcWppKREX3zxhd3zJiUlqVmzZlXqU9u2bdWtWzfzcbNmzXTttddq//79VepP3bp1zb//+uuvOn78uLp162ZO+6yqyvTz/vvvl7+/vzIzM81tq1at0s8//6yHHnross4PAFZSG+vVuVasWKHQ0FA9+OCD5jZfX1/95S9/0W+//ab169dLklk3yvrx5Zdf6oYbblCvXr305ZdfSjq7TMDOnTvtagwAoPrVxtpSmd8xzvf111/rl19+0bBhw1Snzh+LbAwYMECNGjWq8JiHH37Y7j4wZee82HkAwN01bNhQX331lX766acLtqlTp44effRR87Gfn58effRRHTlyRDk5ORUec/ToUX322We6//77deLECbNO/PLLL0pISND333+v//znP5IcrykPPPCA3Xv55bxfX+q9Pzc3V99//7369++vX375xezbyZMn1bNnT33xxRfm0mXnftZWXFysX375Ra1atVLDhg0v+/O2ytSoQYMG6auvvtK+ffvMbZmZmYqIiFCPHj0u6/xwDgZX4BGaNm2qnj17avHixea2Dz74QHXq1LFbE/7777/XypUr1axZM7uvuLg4SWfXmT9XZGRklft05ZVXltvWqFEj/frrr1Xqz7Jly9S1a1f5+/urcePGatasmV577TUdP368yn2sbD8bNmyoO++8UwsXLjS3ZWZm6k9/+pNuu+22yzo/AFhJbaxX5/rhhx909dVXy9vb/r+IZct6/fDDD5LOLkNz9dVXmwMpX375pbp166bu3bvrp59+0v79+7Vx40aVlpYyuAIANaw21pbK/I5xvrIa06pVK7vtderUKbeO/YXOU/bB3cXOAwDububMmdq5c6ciIiJ04403avLkyeUGKcLDw1WvXj27bddcc40kXfB+Inv37pVhGJowYUK5WlG29GRZrXC0plTn+/Wlnuv777+XJCUnJ5fr31tvvaXCwkLzs7TTp09r4sSJ5n1jmjZtqmbNmunYsWPV/nlbRZkfeOAB2Ww282Lm48ePa9myZRowYIC8vLwu6/xwDu65Ao/Rr18/Pfzww8rNzVXnzp21ePFi9ezZU02bNjXblJaWqlevXhozZkyFz1FWaMqcO4LtKB8fnwq3G4bhcH++/PJL/fnPf1b37t316quvKiwsTL6+vlqwYIHdgEdN9VM6O5q+ZMkSbdq0SR06dNAnn3yixx57rNwHcACAi6tt9aqqbrnlFq1du1anT59WTk6OJk6cqPbt26thw4b68ssv9e2336p+/fq67rrrnN43ALCa2lZbKvs7xuVy1nkAoDa5//771a1bN3388cdavXq1/v73v2vGjBn66KOP1Lt37yo/b9lsjr/97W9KSEiosE3ZALijNaU6368v9VxlOf7+97+rc+fOFbYtuz/KqFGjtGDBAo0ePVoxMTEKCgqSl5eX+vXrZz5PVVUmc6NGjXTHHXcoMzNTEydO1IcffqjCwkJWiXEjDK7AY/Tt21ePPvqoOR3+X//6l8aNG2fXpmXLlvrtt9/MkXRXq2x//ud//kf+/v5atWqVbDabuX3BggWXPEd1jXTffvvtatasmTIzMxUdHa1Tp05p4MCB1fLcAGAltbleNW/eXNu3b1dpaand4Pl3331n7i/TrVs3LViwQIsWLVJJSYluuukmeXt765ZbbjEHV2666aYL/lIBAKg+tbm2VFZZjdm7d69uvfVWc/uZM2d08OBBdezY0VVdA4BaJywsTI899pgee+wxHTlyRNdff72effZZc3Dlp59+0smTJ+1mr/zrX/+SpAvOBrzqqqsknV0W+FK1ojbXlJYtW0qSAgMDL9m/Dz/8UMnJyZo1a5a57ffff9exY8cueZ7q+rxt0KBBuuuuu7R161ZlZmbquuuuU7t27arluVHzuOQcHqNhw4ZKSEjQ4sWLtWjRIvn5+alv3752be6//35lZ2dr1apV5Y4/duyYzpw546TeOtYfHx8feXl5qaSkxNx/8OBBLV269JLnKCuklSkMF1OnTh09+OCDWrx4sTIyMtShQwd+wQGAKqjN9apPnz7Ky8uzW7f/zJkzevnll1W/fn27dX/LlvuaMWOGOnbsqKCgIHP72rVr9fXXX7MkGAA4SW2uLZXVpUsXNWnSRG+++aZdXzIzM1nmCwD+fyUlJeWWqwoODlZ4eLgKCwvNbWfOnNHrr79uPi4qKtLrr7+uZs2aKSoqqsLnDg4OVmxsrF5//XUdPny43P7//ve/5t9rc02JiopSy5Yt9cILL+i3334rt//cHD4+PuVmz7z88st2n79dSL169S576TBJ6t27t5o2baoZM2Zo/fr1zFpxM8xcgUd54IEH9NBDD+nVV19VQkKCGjZsaLf/iSee0CeffKI77rhDgwcPVlRUlE6ePKkdO3boww8/1MGDB+2mzte0yvYnMTFRL774om6//Xb1799fR44c0bx589SqVStt3779oufo3LmzfHx8NGPGDB0/flw2m0233XabgoODHe7voEGD9NJLL+nzzz/XjBkzqhobACyvttar4cOH6/XXX9fgwYOVk5OjFi1a6MMPP9TGjRs1Z84cNWjQwGzbqlUrhYaGas+ePRo1apS5vXv37ho7dqwkMbgCAE5UW2tLZfn5+Wny5MkaNWqUbrvtNt1///06ePCgMjIy1LJlS9aeBwBJJ06c0BVXXKF7771XnTp1Uv369bVmzRpt3brVbvZFeHi4ZsyYoYMHD+qaa67RBx98oNzcXL3xxhvy9fW94PPPmzdPt9xyizp06KBhw4bpqquuUn5+vrKzs/Xjjz/qn//8p6TaXVO8vb311ltvqXfv3mrXrp0efvhh/elPf9J//vMfff755woMDNSnn34qSbrjjjv0//7f/1NQUJDatm2r7OxsrVmzRk2aNLnkeaKiovTBBx8oPT1dN9xwg+rXr68777zT4f76+vqqX79+euWVV+Tj46MHH3zQ4eeA6zC4Ao/y5z//WXXr1tWJEyf0wAMPlNsfEBCg9evX67nnntOSJUv03nvvKTAwUNdcc42mTJliXnXrLJXtz2233aa3335bzz//vEaPHq3IyEizSF5qcCU0NFTz58/X9OnTNXToUJWUlOjzzz+v0uBKVFSU2rVrp2+//VYDBgyoUmYAQO2tV3Xr1tW6dev05JNP6t1331VBQYGuvfZaLViwQIMHDy7Xvlu3blqyZIluueUWc1tUVJQCAgJ05swZRUdH10g/AQDl1dba4ojU1FQZhqFZs2bpb3/7mzp16qRPPvlEf/nLX+Tv7+/q7gGAywUEBOixxx7T6tWr9dFHH6m0tFStWrXSq6++qpEjR5rtGjVqpHfffVejRo3Sm2++qZCQEL3yyisaNmzYRZ+/bdu2+vrrrzVlyhRlZGTol19+UXBwsK677jpNnDjRrh+1uabExsYqOztb06ZN0yuvvKLffvtNoaGhio6O1qOPPmq2mzt3rnx8fJSZmanff/9dN998s9asWXPBe86c67HHHlNubq4WLFig2bNnq3nz5lUaXJHOXsz8yiuvqGfPngoLC6vSc8A1vAzu9AbAAdddd50aN26stWvXurorAAAAADxcaWmpmjVrpnvuuUdvvvmmq7sDALVebGysfv75Z+3cudPVXUEl/fOf/1Tnzp313nvvcX9jN8M9VwBU2tdff63c3FwNGjTI1V0BAAAA4GF+//33cmvfv/feezp69KhiY2Nd0ykAAGrYm2++qfr16+uee+5xdVfgIJYFAxzw3//+96I3tfLz81Pjxo2d2CPn2Llzp3JycjRr1iyFhYVVuMwAAKD2sGq9AgDUHGfUls2bNystLU333XefmjRpom+++UZvv/222rdvr/vuu++ynhsAUDsVFRXp6NGjF20TFBSkunXrOqlHzvPpp59q9+7deuONN5Samqp69eq5uktwEIMrgANuuOEG/fDDDxfc36NHD61bt855HXKSDz/8UFOnTtW1116rf/zjH6x3DAC1nFXrFQCg5jijtrRo0UIRERF66aWXdPToUTVu3FiDBg3S888/Lz8/v8t6bgBA7bRp0ybdeuutF21zoXtAurtRo0YpPz9fffr00ZQpU1zdHVQB91wBHLBx40adPn36gvsbNWqkqKgoJ/YIAIDy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XF5eXlq6dKndfsMwNHHiRIWFhalu3bqKi4vT999/b9fm6NGjGjBggAIDA9WwYUMNHTpUv/32m12b7du3q1u3bvL391dERIRmzpxZri9LlixR69at5e/vrw4dOmjFihXVnhcAAABA9WJwBQAAAIDlnDx5Up06ddK8efMq3D9z5ky99NJLmj9/vr766ivVq1dPCQkJ+v333802AwYM0K5du5SVlaVly5bpiy++0PDhw839BQUFio+PV/PmzZWTk6O///3vmjx5st544w2zzaZNm/Tggw9q6NCh2rZtm/r27au+fftq586dNRceAAAAwGWr4+oOAAAAAICz9e7dW717965wn2EYmjNnjsaPH6+77rpLkvTee+8pJCRES5cuVb9+/fTtt99q5cqV2rp1q7p06SJJevnll9WnTx+98MILCg8PV2ZmpoqKivTOO+/Iz89P7dq1U25url588UVzEGbu3Lm6/fbb9cQTT0iSpk2bpqysLL3yyiuaP3++E74TAAAAAKqCwRUAAAAAOMeBAweUl5enuLg4c1tQUJCio6OVnZ2tfv36KTs7Ww0bNjQHViQpLi5O3t7e+uqrr3T33XcrOztb3bt3l5+fn9kmISFBM2bM0K+//qpGjRopOztb6enpdudPSEgot0zZuQoLC1VYWGg+LigokCQVFxeruLi40jnL2tq8jUof447K8nlyTldldOT1Vp3nc/Z5nckKGaWq5/T07wsAwL0wuAIAAAAA58jLy5MkhYSE2G0PCQkx9+Xl5Sk4ONhuf506ddS4cWO7NpGRkeWeo2xfo0aNlJeXd9HzVGT69OmaMmVKue2rV69WQEBAZSLamdal1OFj3JEVcjo7o6vuD5SVleWS8zqTFTJKjuc8depUDfUEAADHMbgCAAAAAG5k3LhxdrNdCgoKFBERofj4eAUGBlb6eYqLi5WVlaUJX3ursNSrJrpaK9i8DU3rUurROV2VcefkBKedS/rjNdurVy/5+vo69dzOYoWMUtVzls3UAwCgNmBwBQAAAADOERoaKknKz89XWFiYuT0/P1+dO3c22xw5csTuuDNnzujo0aPm8aGhocrPz7drU/b4Um3K9lfEZrPJZrOV2+7r61ulD2MLS71UWOKZgw7nskJOZ2d01Yf/VX2tuxMrZJQcz2mF7wkAwH14u7oDAAAAAFCbREZGKjQ0VGvXrjW3FRQU6KuvvlJMTIwkKSYmRseOHVNOTo7Z5rPPPlNpaamio6PNNl988YXdPQKysrJ07bXXqlGjRmabc89T1qbsPAAAAABqJwZXAAAAAFjOb7/9ptzcXOXm5ko6exP73NxcHTp0SF5eXho9erSeeeYZffLJJ9qxY4cGDRqk8PBw9e3bV5LUpk0b3X777Ro2bJi2bNmijRs3KjU1Vf369VN4eLgkqX///vLz89PQoUO1a9cuffDBB5o7d67dkl5//etftXLlSs2aNUvfffedJk+erK+//lqpqanO/pYAAAAAcADLggEAAACwnK+//lq33nqr+bhswCM5OVkZGRkaM2aMTp48qeHDh+vYsWO65ZZbtHLlSvn7+5vHZGZmKjU1VT179pS3t7eSkpL00ksvmfuDgoK0evVqpaSkKCoqSk2bNtXEiRM1fPhws81NN92khQsXavz48Xrqqad09dVXa+nSpWrfvr0TvgsAAAAAqorBFQAAAACWExsbK8MwLrjfy8tLU6dO1dSpUy/YpnHjxlq4cOFFz9OxY0d9+eWXF21z33336b777rt4hwEAAADUKiwLBgAAAAAAAAAA4IBqH1xp0aKFvLy8yn2lpKRIOnuF2Pn7RowYYfcchw4dUmJiogICAhQcHKwnnnhCZ86csWuzbt06XX/99bLZbGrVqpUyMjKqOwoAAAAAAAAAAEA51b4s2NatW1VSUmI+3rlzp3r16mU3zX3YsGF20+sDAgLMv5eUlCgxMVGhoaHatGmTDh8+rEGDBsnX11fPPfecpLM3m0xMTNSIESOUmZmptWvX6pFHHlFYWJgSEhKqOxIAAAAAAAAAAICp2gdXmjVrZvf4+eefV8uWLdWjRw9zW0BAgEJDQys8fvXq1dq9e7fWrFmjkJAQde7cWdOmTdPYsWM1efJk+fn5af78+YqMjNSsWbMkSW3atNGGDRs0e/ZsBlcAAAAAAAAAAECNqtF7rhQVFen999/XkCFD5OXlZW7PzMxU06ZN1b59e40bN06nTp0y92VnZ6tDhw4KCQkxtyUkJKigoEC7du0y28TFxdmdKyEhQdnZ2TUZBwAAAAAAAAAAoPpnrpxr6dKlOnbsmAYPHmxu69+/v5o3b67w8HBt375dY8eO1Z49e/TRRx9JkvLy8uwGViSZj/Py8i7apqCgQKdPn1bdunUr7E9hYaEKCwvNxwUFBZKk4uJiFRcXVzpXWVtHjnE3VsgouS6nzcdw7vm8Dbs/PZEVMkp/5HP0NetpP8stWrTQDz/8UG77Y489pnnz5ik2Nlbr16+32/foo49q/vz55uNDhw5p5MiR+vzzz1W/fn0lJydr+vTpqlPnj9K4bt06paena9euXYqIiND48ePtahoAAAAAAACsqUYHV95++2317t1b4eHh5rbhw4ebf+/QoYPCwsLUs2dP7du3Ty1btqzJ7mj69OmaMmVKue2rV6+2u+9LZWVlZVVHt2o1K2SUnJ9z5o1OPZ1pWpdS15zYiayQUXL8NXvuDEFPwP29AAAAAHiC//znPxo7dqz+7//+T6dOnVKrVq20YMECdenSRZJkGIYmTZqkN998U8eOHdPNN9+s1157TVdffbX5HEePHtWoUaP06aefytvbW0lJSZo7d67q169vttm+fbtSUlK0detWNWvWTKNGjdKYMWOcnhcAPEmNDa788MMPWrNmjTkj5UKio6MlSXv37lXLli0VGhqqLVu22LXJz8+XJPM+LaGhoea2c9sEBgZecNaKJI0bN07p6enm44KCAkVERCg+Pl6BgYGVzlZcXKysrCz16tVLvr6+lT7OnVgho+S6nO0nr3LauaSzsx2mdSnVhK+9VVjqdekD3JAVMkp/5HT0NVs2U89TcH8vAAAAAO7u119/1c0336xbb71V//d//6dmzZrp+++/V6NGjcw2M2fO1EsvvaR3331XkZGRmjBhghISErR79275+/tLkgYMGKDDhw8rKytLxcXFevjhhzV8+HAtXLhQ0tnfB+Pj4xUXF6f58+drx44dGjJkiBo2bGh3ETQAwDE1NriyYMECBQcHKzEx8aLtcnNzJUlhYWGSpJiYGD377LM6cuSIgoODJZ29QjswMFBt27Y126xYscLuebKyshQTE3PRc9lsNtlstnLbfX19q/TBelWPcydWyCg5P2dhiWs+/C8s9XLZuZ3FChklx1+znvxzXHZ/r/T09HL393r//fcVGhqqO++8UxMmTDBnr1zo/l4jR47Url27dN11113w/l6jR4++aH+qewlKqyx158k5XZXR2csBWmFJUStklKqe09O/LwAAVLcZM2YoIiJCCxYsMLdFRkaafzcMQ3PmzNH48eN11113SZLee+89hYSEaOnSperXr5++/fZbrVy5Ulu3bjVnu7z88svq06eP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wo2oiBtbIpH7bmIauZYIKi0uJ49pauWSBpZaWnZMUTPTMjWzbNX6iseyU+aWgppbkgtJbuXJ1KwULBVJUUCY3x/+mOMtqNzIet+v5+PBQ+eaz8xcnwuYi3uumWtatWqlFStW5IpLSUnRqFGjFBAQIIvFojp16mjGjBnKzs42Y3Lm3n/99df13nvvqXbt2rJYLLrrrru0a9euQmmPjRs3qn379qpQoYK8vLz00EMP6ccffzTX7927V05OTlY5JCQkyMnJSS1btrTaV7du3dSmTZtCqRcAlCWO3rdkZ2dr2rRpqlmzptzd3dW5c2cdPnzYKiavd66cPn1aAwYMkKenp7y8vDRo0CD98MMP133vzB9//KEePXqoYsWKqlGjhp577jllZWUVqM4AYC9+/fVXPfXUU6pfv77Kly+vatWq6eGHH871rpKcd5h8++23GjNmjGrUqKEKFSqoZ8+e+vPPP824QYMGqXr16srMzMx1rLCwMNWvXz/fdctrfnonJydFRUVp+fLlatKkiSwWixo3bqy1a9fmWd+r87jeHPa33367HnvssVzbbt68WU899ZS8vb1Vs2ZNffPNN3JyctKXX36Zax9LliyRk5OT4uPj850fAOCKm30ekqQdO3aoa9euqly5sjw8PNSxY0d9++23VvvJ6TcOHjyofv36qUqVKmrXrp3VumstXrxYwcHBKl++vKpWraq+ffvqt99+s4r5+eef1bt3b/n6+srd3V01a9ZU3759de7cuXznmNfx09PTNXr0aNWoUUOVKlXSgw8+qN9//z3f+4RjYWgOdmH48OH6/PPPFRUVpUaNGun06dPatm2bfvzxR3Ow4OzZs+revbv69OmjRx55RJ999plGjBghNzc3PfHEE9fd94EDB9S2bVvddttteuGFF1ShQgV99tln6tGjh/7zn/+oZ8+ekqS0tDR17NhRf/zxh5588knVqlVL27dv1/jx43Xy5EnNmTPHar9LlizR33//rSeffFJOTk6aOXOmevXqpSNHjtzSncDr169Xt27ddMcddyg6OloXL17UvHnz1LZtW33//fe6/fbb1aRJE3l5eWnLli168MEHJUlbt26Vs7OzfvjhB6WmpsrT01PZ2dnavn27hg0bVuD6AEBZ5eh9y6uvvipnZ2c999xzOnfunGbOnKn+/ftrx44d190mOztbDzzwgHbu3KkRI0aoQYMG+uqrrzRo0KA847OyshQeHq42bdro9ddf1/r16zVr1izVrl1bI0aMsKm+AGBPdu3ape3bt6tv376qWbOmjh07pnfeeUedOnXSwYMH5eHhYRU/cuRIValSRZMmTdKxY8c0Z84cRUVF6dNPP5V0ZTquTz75ROvWrdP9999vbpeUlKSNGzdq0qRJt1znbdu26YsvvtBTTz2lSpUq6c0331Tv3r11/PhxVatW7Zb3n+Opp55SjRo1NHHiRF24cEGdOnVSQECAYmJizP4zR0xMjGrXrq2QkJBCOz4AOIqbfR7auHGjunXrpuDgYE2aNEnOzs5auHCh7rvvPm3dulWtW7e22t/DDz+sunXr6pVXXpFhGNc97rRp0/TSSy+pT58+GjJkiP7880/NmzdPHTp00J49e+Tl5aWMjAyFh4crPT1dI0eOlK+vr/744w+tWrVKKSkpqly5coHzHjJkiBYvXqx+/frpnnvu0caNGxUREVHg/cHOGYAdqFy5shEZGXnd9R07djQkGbNmzTLL0tPTjRYtWhje3t5GRkaGYRiGcfToUUOSsXDhQjOuc+fORtOmTY1Lly6ZZdnZ2cY999xj1K1b1yybOnWqUaFCBeO///2v1bFfeOEFw8XFxTh+/LjVMapVq2acOXPGjPvqq68MScbKlSvznXde9c3J6fTp02bZDz/8YDg7OxsDBw40yyIiIozWrVuby7169TJ69epluLi4GF9//bVhGIbx/fffG5KMr776Kt91AgB74ah9yzfffGNIMho2bGikp6eb5XPnzjUkGfv27TPLBg0aZAQGBprL//nPfwxJxpw5c8yyrKws47777svVBoMGDTIkGVOmTLE6/p133mkEBwfnu74AYI/S0tJylcXHxxuSjE8++cQsW7hwoSHJCA0NNbKzs83y0aNHGy4uLkZKSophGFfOxTVr1jT++c9/Wu3zjTfeMJycnIwjR47ku26TJk0yrr2UIMlwc3MzDh8+bJb98MMPhiRj3rx5uep79OhRq20nTZqU6ziBgYHGoEGDcm3brl074/Lly1ax48ePNywWi5mvYRjGqVOnjHLlyuW5bwDAzd3o81B2drZRt25dIzw83Kr/SUtLM4KCgowuXbqYZTn9xiOPPJJrP9f2KceOHTNcXFyMadOmWcXt27fPKFeunFm+Z88eQ5KxbNmyW8rx2uMnJiYakoynnnrKKq5fv37X7a/g2JgWDHbBy8tLO3bs0IkTJ64bU65cOT355JPmspubm5588kmdOnVKCQkJeW5z5swZbdy4UX369NHff/+tv/76S3/99ZdOnz6t8PBw/fzzz/rjjz8kScuWLVP79u1VpUoVM+6vv/5SaGiosrKytGXLFqt9//Of/1SVKlXM5fbt20uSjhw5UuB2OHnypBITE/XYY4+patWqZnmzZs3UpUsXrVmzxup433//vS5cuCDpyp1m3bt3V4sWLbR161ZJV55mcXJyMh/XBABH4uh9y+OPPy43Nzeb9rV27Vq5urpq6NChZpmzs7MiIyOvu83w4cOtltu3b39LfSEA2IPy5cub/8/MzNTp06dVp04deXl5WU3HkmPYsGFW05q0b99eWVlZ+vXXXyVdORf3799fK1as0N9//23GxcTE6J577lFQUNAt1zk0NFS1a9c2l5s1ayZPT89CP6cPHTo013tbBg4cqPT0dH3++edm2aeffqrLly/r0UcfLdTjA4CjuNHnocTERP3888/q16+fTp8+bX5OuXDhgjp37qwtW7ZYTWMs5f67Py9ffPGFsrOz1adPH6vPP76+vqpbt66++eYbSTKfTFm3bp3S0tIKIdsrcq6bPf3001blo0aNKrRjwL4wuAK7MHPmTO3fv18BAQFq3bq1oqOjc/0R7+/vn+tlh/Xq1ZOkXHMX5zh8+LAMw9BLL72kGjVqWH3lPDp/6tQpSVfmely7dm2uuNDQUKu4HLVq1bJazrkYdvbs2QK0wBU5H57ymjO5YcOGZkcnXfnAdfnyZcXHx+vQoUM6deqU2rdvrw4dOlgNrjRq1MhqoAYAHIWj9y0F2devv/4qPz+/XNPV1KlTJ894d3d31ahRI9dxbqUvBAB7cPHiRU2cONF831b16tVVo0YNpaSk5DmXfH7O2QMHDtTFixfNd5McOnRICQkJGjBgQKHU+do65NSjsM/peQ0ENWjQQHfddZdiYmLMspiYGN19993X7YMAADd2o89DP//8s6Qr7/S69rPKBx98oPT09Fz9VX4G8n/++WcZhqG6devm2u+PP/5ofv4JCgrSmDFj9MEHH6h69eoKDw/X/PnzbXrfSl5+/fVXOTs7W90sIOV9nQ2QeOcK7ESfPn3Uvn17ffnll4qNjdVrr72mGTNm6IsvvlC3bt0KvN+cUfbnnntO4eHhecbk/LGenZ2tLl26aNy4cXnG5Vxsy3Ht3VY5jBvMO1mYWrVqJXd3d23ZskW1atWSt7e36tWrp/bt2+vtt99Wenq6tm7dmmveYgBwFI7etxRHP3W9YwCAoxs5cqQWLlyoUaNGKSQkRJUrV5aTk5P69u2b605gKX/n7EaNGik4OFiLFy/WwIEDtXjxYrm5ualPnz6FUufC7jeysrLyLL/6qZ6rDRw4UM8884x+//13paen67vvvtNbb71VoGMDAG78eSinL3rttdfUokWLPLevWLGi1fL1zt9Xy87OlpOTk77++us8+5Wr9zlr1iw99thj+uqrrxQbG6unn35a06dP13fffaeaNWvakClQcAyuwG74+fnpqaee0lNPPaVTp06pZcuWmjZtmnkB7MSJE7pw4YLVHcb//e9/JUm33357nvu84447JEmurq7mXcLXU7t2bZ0/f/6mcUUpMDBQ0pW70K71008/qXr16mb+bm5uat26tbZu3apatWqZ0720b99e6enpiomJUXJysjp06FB8CQBAKUPfYpvAwEB98803SktLs3p65fDhwyVYKwAoez7//HMNGjRIs2bNMssuXbqklJSUW9rvwIEDNWbMGJ08eVJLlixRRESE1XSSJaFKlSq58srIyNDJkydt2k/fvn01ZswY/fvf/9bFixfl6uqqf/7zn4VYUwBwPNf7PDR79mxJkqenZ6F+Vqldu7YMw1BQUFCuG8ny0rRpUzVt2lQTJkzQ9u3b1bZtWy1YsEAvv/xygY4fGBio7Oxs/fLLL1ZPq+R1nQ2QmBYMdiArKyvXY3/e3t7y9/dXenq6WXb58mW9++675nJGRobeffdd1ahRQ8HBwXnu29vbW506ddK7776b5x/3f/75p/n/Pn36KD4+XuvWrcsVl5KSosuXL9ucm638/PzUokULffzxx1YfUPbv36/Y2Fh1797dKr59+/basWOHvvnmG3NwpXr16mrYsKFmzJhhxgCAo6FvKZjw8HBlZmbq/fffN8uys7M1f/78EqwVAJQ9Li4uuZ74mDdv3nWf5sivRx55RE5OTnrmmWd05MiRUvE+ktq1a+d6h9h7771nc67Vq1dXt27dtHjxYsXExKhr166qXr16YVYVABzGzT4PBQcHq3bt2nr99dd1/vz5XNtf/ZnGFr169ZKLi4smT56cqx80DEOnT5+WJKWmpub6LNS0aVM5OztbfV6zVc5NdG+++aZV+Zw5cwq8T9g3nlxBmff333+rZs2a+sc//qHmzZurYsWKWr9+vXbt2mV1p5e/v79mzJihY8eOqV69evr000+VmJio9957T66urtfd//z589WuXTs1bdpUQ4cO1R133KHk5GTFx8fr999/1w8//CBJGjt2rFasWKH7779fjz32mIKDg3XhwgXt27dPn3/+uY4dO1Ysf9y/9tpr6tatm0JCQjR48GBdvHhR8+bNU+XKlRUdHW0V2759e02bNk2//fab1SBKhw4d9O677+r222/nUUoADom+pWB69Oih1q1b69lnn9Xhw4fVoEEDrVixQmfOnJEkq5ctAwCu7/7779f//d//qXLlymrUqJHi4+O1fv16VatW7Zb2W6NGDXXt2lXLli2Tl5eXIiIiCqnGBTdkyBANHz5cvXv3VpcuXfTDDz9o3bp1BerfBg4cqH/84x+SpKlTpxZ2VQHAYdzs85Czs7M++OADdevWTY0bN9bjjz+u2267TX/88Ye++eYbeXp6auXKlTYft3bt2nr55Zc1fvx4HTt2TD169FClSpV09OhRffnllxo2bJiee+45bdy4UVFRUXr44YdVr149Xb58Wf/3f/8nFxcX9e7du8B5t2jRQo888ojefvttnTt3Tvfcc482bNjAk/i4LgZXUOZ5eHjoqaeeUmxsrDnvY506dfT2229rxIgRZlyVKlX08ccfa+TIkXr//ffl4+Ojt956S0OHDr3h/hs1aqTdu3dr8uTJWrRokU6fPi1vb2/deeedmjhxolU9Nm/erFdeeUXLli3TJ598Ik9PT9WrV0+TJ09W5cqVi6wNrhYaGqq1a9dq0qRJmjhxolxdXdWxY0fNmDEj18vD7rnnHrm4uMjDw0PNmzc3y9u3b693332Xp1YAOCz6loJxcXHR6tWr9cwzz+jjjz+Ws7OzevbsqUmTJqlt27Zyd3cv6SoCQJkwd+5cubi4KCYmRpcuXVLbtm21fv36676ryxYDBw7UqlWr1KdPH1kslkKo7a0ZOnSojh49qg8//FBr165V+/btFRcXp86dO9u8rwceeEBVqlRRdna2HnzwwSKoLQA4hvx8HurUqZPi4+M1depUvfXWWzp//rx8fX3Vpk0bPfnkkwU+9gsvvKB69epp9uzZmjx5siQpICBAYWFh5rm9efPm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MMsSEhLk5OSkli1bWsV269ZNbdq0kZT3O1d+//139ejRQxUqVJC3t7dGjx6t9PR0q5hOnTpp9erV+vXXX83+89o59LOzszVt2jTVrFlT7u7u6ty5sw4fPlx4SQMAik1KSooee+wxeXl5qXLlynr88ceVlpZmFZOfv93zeufK6dOnNWDAAHl6esrLy0uDBg3SDz/8ICcnJy1atChXXf744w/16NFDFStWVI0aNfTcc88pKytLknTs2DHVqFFDkjR58mSzj2IqaAAAUFrx5AqK3eHDh/WPf/xDgwcP1qBBg/TRRx/pscceU3BwsBo3bizpyssXp0+friFDhqh169ZKTU3V7t279f3336tLly568skndeLECcXFxen//u//ch1j7ty5evDBB9W/f39lZGRo6dKlevjhh7Vq1SpFRERYxW7btk1ffPGFnnrqKVWqVElvvvmmevfurePHj6tatWqSpBMnTqh169ZKSUnRsGHD1KBBA/3xxx/6/PPPlZaWJjc3N6Wlpaljx476448/9OSTT6pWrVravn27xo8fr5MnT9o8/crZs2fVtWtX9erVS3369NHnn3+u559/Xk2bNlW3bt0K1PZnz57V/fffr759++rhhx/WO++8o759+yomJkajRo3S8OHD1a9fP7322mv6xz/+od9++02VKlWy2kefPn10++23a/r06fruu+/05ptv6uzZs1YDZNOmTdNLL72kPn36aMiQIfrzzz81b948dejQQXv27JGXl5cZe/r0aXXr1k19+/bVo48+Kh8fnwLlBgBlVZMmTeTl5aUtW7bowQcflCRt3bpVzs7O+uGHH5SamipPT09lZ2dr+/btGjZsWJ77uXjxojp37qzjx4/r6aeflr+/v/7v//5PGzdutIr717/+pXPnzun333/X7NmzJSnXS4ZfffVVOTs767nnntO5c+c0c+ZM9e/fXzt27CiCFgAAFKU+ffooKChI06dP1/fff68PPvhA3t7emjFjhiTb/na/WnZ2th544AHt3LlTI0aMUIMGDfTVV19p0KBBecZnZWUpPDxcbdq00euvv67169dr1qxZql27tkaMGKEaNWronXfe0YgRI9SzZ0/16tVLktSsWbMiaRcAAIBbZgBFaOHChYYk4+jRo4ZhGEZgYKAhydiyZYsZc+rUKcNisRjPPvusWda8eXMjIiLihvuOjIw0rvcjnJaWZrWckZFhNGnSxLjvvvusyiUZbm5uxuHDh82yH374wZBkzJs3zywbOHCg4ezsbOzatSvXsbKzsw3DMIypU6caFSpUMP773/9arX/hhRcMFxcX4/jx4zfM52odO3Y0JBmffPKJWZaenm74+voavXv3Nsuubd8c33zzjSHJ+Oabb3Ltc8mSJWbZTz/9ZEgynJ2dje+++84sX7dunSHJWLhwoVk2adIkQ5Lx4IMPWh3rqaeeMiQZP/zwg2EYhnHs2DHDxcXFmDZtmlXcvn37jHLlylmV59RpwYIF+W4bALBHERERRuvWrc3lXr16Gb169TJcXFyMr7/+2jAMw/j+++8NScZXX31lGMaVc2jHjh3NbebMmWNIMj777DOz7MKFC0adOnVy9QkRERFGYGBgrnrk9B8NGzY00tPTzfK5c+cakox9+/YVUsYAgKKW8/f7E088YVXes2dPo1q1aoZh2Pa3+6BBg6z6jv/85z+GJGPOnDlmWVZWlnHffffl+iwxaNAgQ5IxZcoUq+PceeedRnBwsLn8559/GpKMSZMmFTRtAACAYsO0YCh2jRo1Uvv27c3lGjVqqH79+jpy5IhZ5uXlpQMHDujnn38u0DHKly9v/v/s2bM6d+6c2rdvr++//z5XbGhoqGrXrm0uN2vWTJ6enmZ9srOztXz5cj3wwANq1apVru1zpiNbtmyZ2rdvrypVquivv/4yv0JDQ5WVlaUtW7bYlEPFihX16KOPmstubm5q3bq1VTvZqmLFiurbt6+5XL9+fXl5ealhw4bmNDOSzP/ndazIyEir5ZEjR0qS1qxZI0n64osvlJ2drT59+li1g6+vr+rWratvvvnGanuLxaLHH3+8wDkBgD3I6aMuXLgg6cpTld27d1eLFi20detWSVeeZnFyclK7du3y3MeaNWvk5+enf/zjH2aZh4fHdZ90uZHHH3/c6p0uOf32rfRBAICSMXz4cKvl9u3b6/Tp00pNTbX5b/errV27Vq6urho6dKhZ5uzsnOvzws3qQt8CAADKKqYFQ7GrVatWrrIqVaro7Nmz5vKUKVP00EMPqV69emrSpIm6du2qAQMG5PuR8FWrVunll19WYmKi1VzzV7+XJb/1+fPPP5WamqomTZrc8Jg///yz9u7da84TfK1Tp07lq+45atasmau+VapU0d69e23az832WblyZQUEBOQqk2T1PclRt25dq+XatWvL2dnZfO/Lzz//LMMwcsXluPZFmLfddhsvZQbg8Nq3b6/Lly8rPj5eAQEBOnXqlNq3b68DBw5YDa40atRIVatWzXMfv/76q+rUqZPrPF+/fn2b63Nt31ilShVJefcLAIDS7UbndFv/dr/ar7/+Kj8/P3l4eFiV16lTJ894d3f3XJ+Vrv0cCAAAUJYwuIJi5+Likme5YRjm/zt06KBffvlFX331lWJjY/XBBx9o9uzZWrBggYYMGXLD/W/dulUPPvigOnTooLffflt+fn5ydXXVwoULtWTJkgLVJz+ys7PVpUsXjRs3Ls/19erVs2l/+alXXoNFksyXQuZ3n7fSBtfWITs7W05OTvr666/z3O+18/pf/ZQRADiqVq1ayd3dXVu2bFGtWrXk7e2tevXqqX379nr77beVnp6urVu3qmfPnsVSn8LqGwEAJe9G53Rb/3YvinoAAACUVQyuoNSqWrWqHn/8cT3++OM6f/68OnTooOjoaHNw5XoDC//5z3/k7u6udevWyWKxmOULFy4sUD1q1KghT09P7d+//4ZxtWvX1vnz5xUaGlqg4xREzl1nKSkpVuW//vprkR3z559/VlBQkLl8+PBhZWdn6/bbb5d0pR0Mw1BQUJDNA0oA4Khypn7cunWratWqZU7D1b59e6WnpysmJkbJycnq0KHDdfcRGBio/fv3yzAMqz7y0KFDuWKv14cCABzLrfztHhgYqG+++UZpaWlWT68cPny4wPWhfwIAAGUJ71xBqXT69Gmr5YoVK6pOnTpWU3xVqFBBUu6BBRcXFzk5OVk9vXHs2DEtX768QHVxdnZWjx49tHLlSu3evTvX+py7ePv06aP4+HitW7cuV0xKSoouX75coOPfSM67Yq5+n0tWVpbee++9Qj9Wjvnz51stz5s3T5LUrVs3SVKvXr3k4uKiyZMn57rD2TCMXN9bAMAV7du3144dO/TNN9+YgyvVq1dXw4YNNWPGDDPmerp3764TJ07o888/N8vS0tLy7BMqVKigc+fOFXIGAICy5lb+dg8PD1dmZqbef/99syw7OzvX5wVb5AzSXPsZDwAAoDTiyRWUSo0aNVKnTp0UHBysqlWravfu3fr8888VFRVlxgQHB0uSnn76aYWHh8vFxUV9+/ZVRESE3njjDXXt2lX9+vXTqVOnNH/+fNWpU6fA7yt55ZVXFBsbq44dO2rYsGFq2LChTp48qWXLlmnbtm3y8vLS2LFjtWLFCt1///167LHHFBwcrAsXLmjfvn36/PPPdezYMVWvXr1Q2idH48aNdffdd2v8+PE6c+aMqlatqqVLlxbJQE6Oo0eP6sEHH1TXrl0VHx+vxYsXq1+/fmrevLmkKwM+L7/8ssaPH69jx46pR48eqlSpko4ePaovv/xSw4YN03PPPVdk9QOAsqp9+/aaNm2afvvtN6tBlA4dOujdd9/V7bffrpo1a153+6FDh+qtt97SwIEDlZCQID8/P/3f//1frrnwpSt96KeffqoxY8borrvuUsWKFfXAAw8USV4AgNLrVv5279Gjh1q3bq1nn31Whw8fVoMGDbRixQqdOXNGUsGeQilfvrwaNWqkTz/9VPXq1VPVqlXVpEmTm77/EgAAoCQwuIJS6emnn9aKFSsUGxur9PR0BQYG6uWXX9bYsWPNmF69emnkyJFaunSpFi9eLMMw1LdvX91333368MMP9eqrr2rUqFEKCgrSjBkzdOzYsQIPrtx2223asWOHXnrpJcXExCg1NVW33XabunXrZl608vDw0ObNm/XKK69o2bJl+uSTT+Tp6al69epp8uTJ5kviC1tMTIyefPJJvfrqq/Ly8tLgwYN17733qkuXLkVyvE8//VQTJ07UCy+8oHLlyikqKkqvvfaaVcwLL7ygevXqafbs2Zo8ebIkKSAgQGFhYXrwwQeLpF4AUNbdc889cnFxkYeHhzlgLV0ZdHn33Xdv+NSKdKUf2rBhg0aOHKl58+bJw8ND/fv3V7du3dS1a1er2KeeekqJiYlauHChZs+ercDAQAZXAMBBFfRvdxcXF61evVrPPPOMPv74Yzk7O6tnz56aNGmS2rZtK3d39wLV54MPPtDIkSM1evRoZWRkaNKkSQyuAACAUsnJ4M2kAAAAAACgECxfvlw9e/bUtm3b1LZt25KuDgAAQJFhcAUAAAAAANjs4sWLKl++vLmclZWlsLAw7d69W0lJSVbrAAAA7A3TggHF6MyZM8rIyLjuehcXF9WoUaMYawQAAAAABTNy5EhdvHhRISEhSk9P1xdffKHt27frlVdeYWAFAADYPZ5cAYpRp06dtHnz5uuuDwwM1LFjx4qvQgAAAABQQEuWLNGsWbN0+PBhXbp0SXXq1NGIESMUFRVV0lUDAAAocgyuAMUoISFBZ8+eve768uXLMy8xAAAAAAAAAJRyDK4AAAAAAAAAAADYwLmkKwAAAAAAAAAAAFCWOPQL7bOzs3XixAlVqlRJTk5OJV0dACgyhmHo77//lr+/v5ydGVcvTvQ1ABwFfU3Joa8B4CjoawAApYlDD66cOHFCAQEBJV0NACg2v/32m2rWrFnS1XAo9DUAHA19TfGjrwHgaOhrAAClgUMPrlSqVEnSlU7Z09PzhrGZmZmKjY1VWFiYXF1di6N6xcZec7PXvCT7zc1e85JKPrfU1FQFBASY5z0Un2v7mpL+WSgs5FG62Esekv3k4oh50NeUHFs+11zNXn5Oiwrtc2O0z43RPjdW0PahrwEAlCYOPbiS88i8p6dnvgZXPDw85OnpaXd/GNlrbvaal2S/udlrXlLpyY2pQorftX1NaflZuFXkUbrYSx6S/eTiyHnQ1xQ/Wz7XXM1efk6LCu1zY7TPjdE+N3ar7UNfAwAoDWyeoHLLli164IEH5O/vLycnJy1fvtxqvWEYmjhxovz8/FS+fHmFhobq559/too5c+aM+vfvL09PT3l5eWnw4ME6f/68VczevXvVvn17ubu7KyAgQDNnzsxVl2XLlqlBgwZyd3dX06ZNtWbNGlvTAQAAAAAAAAAAsInNgysXLlxQ8+bNNX/+/DzXz5w5U2+++aYWLFigHTt2qEKFCgoPD9elS5fMmP79++vAgQOKi4vTqlWrtGXLFg0bNsxcn5qaqrCwMAUGBiohIUGvvfaaoqOj9d5775kx27dv1yOPPKLBgwdrz5496tGjh3r06KH9+/fbmhIAAAAAAAAAAEC+2TwtWLdu3dStW7c81xmGoTlz5mjChAl66KGHJEmffPKJfHx8tHz5cvXt21c//vij1q5dq127dqlVq1aSpHnz5ql79+56/fXX5e/vr5iYGGVkZOijjz6Sm5ubGjdurMTERL3xxhvmIMzcuXPVtWtXjR07VpI0depUxcXF6a233tKCBQsK1BgAAAAAAAAAAAA3U6jvXDl69KiSkpIUGhpqllWuXFlt2rRRfHy8+vbtq/j4eHl5eZkDK5IUGhoqZ2dn7dixQz179lR8fLw6dOggNzc3MyY8PFwzZszQ2bNnVaVKFcXHx2vMmDFWxw8PD881TdnV0tPTlZ6ebi6npqZKujLXZ2Zm5g1zy1l/s7iyyF5zs9e8JPvNzV7zkko+N3tsUwAAAAAAAKCkFOrgSlJSkiTJx8fHqtzHx8dcl5SUJG9vb+tKlCunqlWrWsUEBQXl2kfOuipVqigpKemGx8nL9OnTNXny5FzlsbGx8vDwyE+KiouLy1dcWWSvudlrXpL95maveUkll1taWlqJHBe35vYXVpd0Fa7L4mJoZmupSfQ6pWeV3ReK2nMex16NKOFaAQAcQVnvQ4uKvfyNUVRy2gcAgLKsUAdXSrvx48dbPe2SmpqqgIAAhYWFydPT84bbZmZmKi4uTl26dJGrq6uaRK8r6uoWG4uzoamtsvXSbmelZ9vPH32lOa/90eG3tP21P4/2wl7zkko+t5wn9QAAAAAAAADcukIdXPH19ZUkJScny8/PzyxPTk5WixYtzJhTp05ZbXf58mWdOXPG3N7X11fJyclWMTnLN4vJWZ8Xi8Uii8WSq9zV1TXfFztzYu3xzpP0bCfyKiaFdXHdlp/dssRe85JKLjd7bU8AAAAAAACgJDgX5s6CgoLk6+urDRs2mGWpqanasWOHQkJCJEkhISFKSUlRQkKCGbNx40ZlZ2erTZs2ZsyWLVus3hEQFxen+vXrq0qVKmbM1cfJick5DgAAAAAAAAAAQFGweXDl/PnzSkxMVGJioqQrL7FPTEzU8ePH5eTkpFGjRunll1/WihUrtG/fPg0cOFD+/v7q0aOHJKlhw4bq2rWrhg4dqp07d+rbb79VVFSU+vbtK39/f0lSv3795ObmpsGDB+vAgQP69NNPNXfuXKspvZ555hmtXbtWs2bN0k8//aTo6Gjt3r1bUVFRt94qAAAAAAAAAAAA12HztGC7d+/Wvffeay7nDHgMGjRIixYt0rhx43ThwgUNGzZMKSkpateundauXSt3d3dzm5iYGEVFRalz585ydnZW79699eabb5rrK1eurNjYWEVGRio4OFjVq1fXxIkTNWzYMDPmnnvu0ZIlSzRhwgS9+OKLqlu3rpYvX64mTZoUqCEAAAAAAAAAAADyw+bBlU6dOskwjOuud3Jy0pQpUzRlypTrxlStWlVLliy54XGaNWumrVu33jDm4Ycf1sMPP3zjCgMAAAAAAAAAABSiQn3nCgAAAAAAAAAAgL1jcAUAAAAAAAAAAMAGDK4AAAAAAAAAAADYgMEVAAAAAAAAAAAAGzC4AgAAAAAAAAAAYAMGVwAAAAAAAAAAAGzA4AoAAAAAAAAAAIANGFwBAAAAAAAAAACwAYMrAAAAAAAAAAAANmBwBQAAAAAAAAAAwAYMrgAAAAAAAAAAANiAwRUAAAAAAAAAAAAbMLgCAAAAwOFs2bJFDzzwgPz9/eXk5KTly5dbrTcMQxMnTpSfn5/Kly+v0NBQ/fzzz1YxZ86cUf/+/eXp6SkvLy8NHjxY58+ft4rZu3ev2rdvL3d3dwUEBGjmzJm56rJs2TI1aNBA7u7uatq0qdasWVPo+QIAAAAoXAyuAABKHS54AQCK2oULF9S8eXPNnz8/z/UzZ87Um2++qQULFmjHjh2qUKGCwsPDdenSJTOmf//+OnDggOLi4rRq1Spt2bJFw4YNM9enpqYqLCxMgYGBSkhI0Guvvabo6Gi99957Zsz27dv1yCOPaPDgwdqzZ4969OihHj16aP/+/UWXPAAAAIBbxuAKAKDU4YIXAKCodevWTS+//LJ69uyZa51hGJozZ44mTJighx56SM2aNdMnn3yiEydOmAP+P/74o9auXasPPvhAbdq0Ubt27TRv3jwtXbpUJ06ckCTFxMQoIyNDH330kRo3bqy+ffvq6aef1htvvGEea+7cueratavGjh2rhg0baurUqWrZsqXeeuutYmkHAAAAAAVTrqQrAADAtbp166Zu3brlue7aC16S9Mknn8jHx0fLly9X3759zQteu3btUqtWrSRJ8+bNU/fu3fX666/L39/f6oKXm5ubGjdurMTERL3xxhvmIMzVF7wkaerUqYqLi9Nbb72lBQsWFENLAABKwtGjR5WUlKTQ0FCzrHLlymrTpo3i4+PVt29fxcfHy8vLy+xnJCk0NFTOzs7asWOHevbsqfj4eHXo0EFubm5mTHh4uGbMmKGzZ8+qSpUqio+P15gxY6yOHx4enuupzaulp6crPT3dXE5NTZUkZWZmKjMzM9955sTaso0joX1uLKddLM5GCdekdMppF9onbzntYuvvF7+PAIDShMEVAECZUtYveNlyocbiUno/jNvLBQN7zqOsXnywl4uZjphHWc/1aklJSZIkHx8fq3IfHx9zXVJSkry9va3WlytXTlWrVrWKCQoKyrWPnHVVqlRRUlLSDY+Tl+nTp2vy5Mm5ymNjY+Xh4ZGfFK3ExcXZvI0joX1ubGqr7JKuQqlG+9yYrb9faWlpRVQTAABsx+AKAKBMsZcLXvn5IDmz9U1DSpy9XDCwxzzK+vuB7OVipiPlwQWv4jN+/Hirwf/U1FQFBAQoLCxMnp6e+d5PZmam4uLi1KVLF7m6uhZFVcs02ufGctrnpd3OSs92KunqlDoWZ0NTW2XTPteR0z62/n7l3LgEAEBpwOAKAACF6GYXvGy5UNMkel1RV7fA7OWCgT3nsT86vIRrVTD2cjHTEfOwpwtevr6+kqTk5GT5+fmZ5cnJyWrRooUZc+rUKavtLl++rDNnzpjb+/r6Kjk52SomZ/lmMTnr82KxWGSxWHKVu7q6FujnraDbOQra58bSs52UnlV2+9CiRvvcmK2/X/wuAgBKEwZXAABlir1c8MrPB8my8EHcXi4Y2GMeZf3ig71czHSkPOwhzxxBQUHy9fXVhg0bzL4lNTVVO3bs0IgRIyRJISEhSklJUUJCgoKDgyVJGzduVHZ2ttq0aWPG/Otf/1JmZqbZPnFxcapfv76qVKlixmzYsEGjRo0yjx8XF6eQkJBiyhYAAABAQTiXdAUAALDF1Re8cuRc8Mq5EHX1Ba8ceV3w2rJli9U7Aq53wetqXPACAPtw/vx5JSYmKjExUdKVd3olJibq+PHjcnJy0qhRo/Tyyy9rxYoV2rdvnwYOHCh/f3/16NFDktSwYUN17dpVQ4cO1c6dO/Xtt98qKipKffv2lb+/vySpX79+cnNz0+DBg3XgwAF9+umnmjt3rtUTjs8884zWrl2rWbNm6aefflJ0dLR2796tqKio4m4SAAAAADZgcAUAUOpwwQsAUNR2796tO++8U3feeackacyYMbrzzjs1ceJESdK4ceM0cuRIDRs2THfddZfOnz+vtWvXyt3d3dxHTEyMGjRooM6dO6t79+5q166d3nvvPXN95cqVFRsbq6NHjyo4OFjPPvusJk6cqGHDhpkx99xzj5YsWaL33ntPzZs31+eff67ly5erSZMmxdQSAAAAAAqCacEAAKXO7t27de+995rLOQMegwYN0qJFizRu3DhduHBBw4YNU0pKitq1a5fnBa+oqCh17txZzs7O6t27t958801zfc4Fr8jISAUHB6t69erXveA1YcIEvfjii6pbty4XvADATnTq1EmGYVx3vZOTk6ZMmaIpU6ZcN6Zq1apasmTJDY/TrFkzbd269YYxDz/8sB5++OEbVxgAAABAqcLgCgCg1OGCFwAAAAAAAEqzQp8W7Pbbb5eTk1Our8jISElXLphdu2748OFW+zh+/LgiIiLk4eEhb29vjR07VpcvX7aK2bRpk1q2bCmLxaI6depo0aJFhZ0KAAAAAAAAAABALoX+5MquXbuUlZVlLu/fv19dunSxuut36NChVncbe3h4mP/PyspSRESEfH19tX37dp08eVIDBw6Uq6urXnnlFUlX5t6PiIjQ8OHDFRMTow0bNmjIkCHy8/NTeHh4YacEAAAAAAAAAABgKvTBlRo1algtv/rqq6pdu7Y6duxolnl4eMjX1zfP7WNjY3Xw4EGtX79ePj4+atGihaZOnarnn39e0dHRcnNz04IFCxQUFKRZs2ZJuvLi4m3btmn27NkMrgAAAAAAAAAAgCJV6NOCXS0jI0OLFy/WE088IScnJ7M8JiZG1atXV5MmTTR+/HilpaWZ6+Lj49W0aVP5+PiYZeHh4UpNTdWBAwfMmNDQUKtjhYeHKz4+vijTAQAAAAAAAAAAKNoX2i9fvlwpKSl67LHHzLJ+/fopMDBQ/v7+2rt3r55//nkdOnRIX3zxhSQpKSnJamBFkrmclJR0w5jU1FRdvHhR5cuXz7M+6enpSk9PN5dTU1MlSZmZmcrMzLxhLjnrc/61uFz/RctljcXZsPrXXpTmvG7285bf7W91P6WNveYllXxu9timAAAAAAAAQEkp0sGVDz/8UN26dZO/v79ZNmzYMPP/TZs2lZ+fnzp37qxffvlFtWvXLsrqaPr06Zo8eXKu8tjYWKv3vtxIXFycJGlm60KtWqkwtVV2SVehSJTGvNasWVMo+8n5ebQ39pqXVHK5Xf2EIAAAAAAAAIBbU2SDK7/++qvWr19vPpFyPW3atJEkHT58WLVr15avr6927txpFZOcnCxJ5ntafH19zbKrYzw9Pa/71IokjR8/XmPGjDGXU1NTFRAQoLCwMHl6et6wnpmZmYqLi1OXLl3k6uqqJtHrbhhfllicDU1tla2XdjsrPdvp5huUEaU5r/3Rt/ZuoGt/Hu2FveYllXxuOU/qAQAAAAAAALh1RTa4snDhQnl7eysiIuKGcYmJiZIkPz8/SVJISIimTZumU6dOydvbW9KVO709PT3VqFEjM+baO//j4uIUEhJyw2NZLBZZLJZc5a6urvm+2JkTm55Vui7WF4b0bCfyKiaFdXHdlp/dssRe85JKLjd7bU8AAAAAAACgJBTJC+2zs7O1cOFCDRo0SOXK/W/85pdfftHUqVOVkJCgY8eOacWKFRo4cKA6dOigZs2aSZLCwsLUqFEjDRgwQD/88IPWrVunCRMmKDIy0hwYGT58uI4cOaJx48bpp59+0ttvv63PPvtMo0ePLop0AAAAAAAAAAAATEUyuLJ+/XodP35cTzzxhFW5m5ub1q9fr7CwMDVo0EDPPvusevfurZUrV5oxLi4uWrVqlVxcXBQSEqJHH31UAwcO1JQpU8yYoKAgrV69WnFxcWrevLlmzZqlDz74QOHhtzbVEgAAAAAAAAAAwM0UybRgYWFhMgwjV3lAQIA2b9580+0DAwNv+sLvTp06ac+ePQWuIwAAAAAAAAAAQEEUyZMrAAAAAAAAAAAA9orBFQAAAAAAAAAAABswuAIAAAAAAAAAAGADBlcAAAAAAAAAAABswOAKAAAAAAAAAACADRhcAQAAAAAAAAAAsAGDKwAAAAAAAAAAADZgcAUAAAAAAAAAAMAGDK4AAAAAAAAAAADYgMEVAAAAAAAAAAAAGzC4AgAAAAAAAAAAYAMGVwAAAAAAAAAAAGzA4AoAAAAAAAAAAIANGFwBAAAAAAAAAACwAYMrAAAAAAAAAAAANmBwBQAAAAAAAAAAwAYMrgAAAAAAAAAAANiAwRUAAAAAAAAAAAAbMLgCAAAAAAAAAABgAwZXAAAAAAAAAAAAbMDgCgAAAAAAAAAAgA0YXAEAAAAAAAAAALABgysAAAAAAAAAAAA2YHAFAAAAAAAAAADABgyuAAAAAAAAAAAA2KDQB1eio6Pl5ORk9dWgQQNz/aVLlxQZGalq1aqpYsWK6t27t5KTk632cfz4cUVERMjDw0Pe3t4aO3asLl++bBWzadMmtWzZUhaLRXXq1NGiRYsKOxUAAAAAAAAAAIBciuTJlcaNG+vkyZPm17Zt28x1o0eP1sqVK7Vs2TJt3rxZJ06cUK9evcz1WVlZioiIUEZGhrZv366PP/5YixYt0sSJE82Yo0ePKiIiQvfee68SExM1atQoDfl/7d19cJTVocfxX143RA0RQ96UxIDKi4QXoYb1haKEBCbTaYXrWKRIEXDghl5IFChWeZGhsfQit7UgWr3EGbGIM9pWoEJACEMJoDGgQEkBwRTNyy0KQYNJSM79o7NPsyRssskm+5LvZ2Yn2eecfXJ+Z5/nnOQ52d2ZM7V9+/bOiAMAAAAAAAAAAGAJ7ZSdhoYqPj6+2faLFy/qtdde05tvvqkHH3xQkrRhwwYNHDhQBw4c0KhRo7Rjxw4dP35cO3fuVFxcnIYNG6YVK1Zo0aJFWrZsmcLDw7V+/XqlpKRo9erVkqSBAwdq3759WrNmjTIzMzsjEgAAAAAAAAAAgKROWlw5efKkEhMTFRERIbvdrry8PCUlJam4uFj19fVKT0+36g4YMEBJSUkqKirSqFGjVFRUpNTUVMXFxVl1MjMzNWfOHB07dkzDhw9XUVGR0z4cdebPn++yXbW1taqtrbXuV1dXS5Lq6+tVX1/v8rGOcsdXW4hpvSP8hC3YOH0NFL6cq7Xjra2P7+h+fE2g5pK8ny0Q+xQAAAAAAADwFo8vrqSlpSk/P1/9+/dXeXm5li9frvvvv19Hjx5VRUWFwsPDFR0d7fSYuLg4VVRUSJIqKiqcFlYc5Y4yV3Wqq6t1+fJl9ejRo8W25eXlafny5c2279ixQ5GRkW3KV1BQIEladXebqvuVFSMbvd2ETuGLubZt2+aR/TiOx0ATqLkk72Wrqanxys8FAAAAAAAAApHHF1cmTJhgfT9kyBClpaUpOTlZmzdvvuaiR1dZvHixcnNzrfvV1dXq06ePMjIyFBUV5fKx9fX1Kigo0Lhx4xQWFqbBywLn811swUYrRjbq2Y+CVdsY5O3meIwv5zq6rGNvX3f18RgoAjWX5P1sjlfqAQAAAAAAAOi4TnlbsKaio6N1xx136NSpUxo3bpzq6up04cIFp1evVFZWWp/REh8fr0OHDjnto7Ky0ipzfHVsa1onKirK5QKOzWaTzWZrtj0sLKzNFzsddWsbfOtivSfUNgaRq4t46uK6O8euPwnUXJL3sgVqfwIAAAAAAADeENzZP+Cbb77R6dOnlZCQoBEjRigsLEy7du2yyktLS1VWVia73S5Jstvt+vTTT1VVVWXVKSgoUFRUlAYNGmTVaboPRx3HPgAAAAAAAAAAADqLxxdXnnrqKRUWFurs2bPav3+/HnroIYWEhGjy5Mnq2bOnZsyYodzcXO3evVvFxcWaPn267Ha7Ro0aJUnKyMjQoEGDNHXqVB05ckTbt2/XM888o+zsbOtVJ7Nnz9Znn32mhQsX6sSJE1q3bp02b96snJwcT8cBAAAAAAAAAABw4vG3BTt37pwmT56s8+fPq3fv3rrvvvt04MAB9e7dW5K0Zs0aBQcHa9KkSaqtrVVmZqbWrVtnPT4kJERbtmzRnDlzZLfbdd1112natGl67rnnrDopKSnaunWrcnJy9Jvf/Ea33HKLXn31VWVmduxzLAAAAAAAAAAAAFrj8cWVTZs2uSyPiIjQ2rVrtXbt2mvWSU5O1rZt21zuZ8yYMSopKWlXGwEAAAAAAAAAANqr0z9zBQAAAAD8zbJlyxQUFOR0GzBggFX+3XffKTs7WzfddJOuv/56TZo0SZWVlU77KCsrU1ZWliIjIxUbG6sFCxboypUrTnX27Nmju+66SzabTbfddpvy8/O7Ih4AAACADmJxBQDgd7jgBQDoCnfeeafKy8ut2759+6yynJwcvffee3r77bdVWFioL7/8UhMnTrTKGxoalJWVpbq6Ou3fv1+vv/668vPztWTJEqvOmTNnlJWVpQceeECHDx/W/PnzNXPmTG3fvr1LcwIAAABwn8ffFgwAgK5w5513aufOndb90NB/T2k5OTnaunWr3n77bfXs2VNz587VxIkT9de//lXSvy94xcfHa//+/SovL9djjz2msLAw/fKXv5T07wtes2fP1saNG7Vr1y7NnDlTCQkJfMYXAHQToaGhio+Pb7b94sWLeu211/Tmm2/qwQcflCRt2LBBAwcO1IEDBzRq1Cjt2LFDx48f186dOxUXF6dhw4ZpxYoVWrRokZYtW6bw8HCtX79eKSkpWr16tSRp4MCB2rdvn9asWcNcAwAAAPg4XrkCAPBLjgtejltMTIykf1/weuGFF/Tggw9qxIgR2rBhg/bv368DBw5IknXB64033tCwYcM0YcIErVixQmvXrlVdXZ0kOV3wGjhwoObOnav/+I//0Jo1a7yWGQDQtU6ePKnExET17dtXU6ZMUVlZmSSpuLhY9fX1Sk9Pt+oOGDBASUlJKioqkiQVFRUpNTVVcXFxVp3MzExVV1fr2LFjVp2m+3DUcewDAAAAgO/ilSsAAL/kuOAVEREhu92uvLw8JSUltXrBa9SoUde84DVnzhwdO3ZMw4cPv+YFr/nz57tsV21trWpra6371dXVkqT6+nrr5rjfGluIabWOt9iCjdNXfxXIOdpyjPkid84RX9Ydc/h71qulpaUpPz9f/fv3V3l5uZYvX677779fR48eVUVFhcLDwxUdHe30mLi4OFVUVEiSKioqnOYZR7mjzFWd6upqXb58WT169Gixba3NNW0VKMdpZ6F/XHP0i7/PoZ0lUH7H6CyOfnH3/OJ8BAD4EhZXAAB+x5cveOXl5Wn58uXNtu/YsUORkZHW/YKCglZzrrq71Spet2Jko7eb4BGBmGPbtm1ebEnHteUc8QfdKUdNTU0XtKTrTJgwwfp+yJAhSktLU3JysjZv3nzNOaCrtHWuaatAOU47C/3jWqDMoZ2F/nHN3fMr0OYaAIB/Y3EFAOB3fPmC1+LFi5Wbm2vdr66uVp8+fZSRkaGoqCjV19eroKBA48aNU1hYmMt9DV7mux9obAs2WjGyUc9+FKzaxiBvN6fdAjnH0WX++XkN7pwjvqw75nC8eiJQRUdH64477tCpU6c0btw41dXV6cKFC06L+ZWVldZntMTHx+vQoUNO+6isrLTKHF8d25rWiYqKcjmftTbXtFWgHKedhf5xzdE//j6HdpZA+R2jszj6x93zK9DnGgCAf2FxBQDg93zpgpfNZpPNZmu2PSwszOkPx6vvt6S2wff/EK9tDPKLdrYmEHP4+4XAtpwj/qA75QiEnK588803On36tKZOnaoRI0YoLCxMu3bt0qRJkyRJpaWlKisrk91ulyTZ7XatXLlSVVVVio2NlfSv/9COiorSoEGDrDpXv8qsoKDA2se1tHWuaatAOU47C/3jWqDMoZ2F/nHN3fOLcxEA4Ev4QHsAgN9zXPBKSEhwuuDl0NIFr08//VRVVVVWnZYueDXdh6NOaxe8AACB4amnnlJhYaHOnj2r/fv366GHHlJISIgmT56snj17asaMGcrNzdXu3btVXFys6dOny263a9SoUZKkjIwMDRo0SFOnTtWRI0e0fft2PfPMM8rOzrYWRmbPnq3PPvtMCxcu1IkTJ7Ru3Tpt3rxZOTk53owOAAAAoA145QoAwO889dRT+sEPfqDk5GR9+eWXWrp0aYsXvHr16qWoqCj97Gc/u+YFr1WrVqmioqLFC16/+93vtHDhQj3++OP64IMPtHnzZm3dutWb0QEAXeTcuXOaPHmyzp8/r969e+u+++7TgQMH1Lt3b0nSmjVrFBwcrEmTJqm2tlaZmZlat26d9fiQkBBt2bJFc+bMkd1u13XXXadp06bpueees+qkpKRo69atysnJ0W9+8xvdcsstevXVV5WZ6Z9v6wcAAAB0JyyuAAD8Dhe8AACdbdOmTS7LIyIitHbtWq1du/aadZKTk5u97dfVxowZo5KSkna1EQAAAID3sLgCAPA7XPACAAAAAACAN/GZKwAAAAAAAAAAAG5gcQUAAAAAAAAAAMANLK4AAAAAAAAAAAC4gcUVAAAAAAAAAAAAN7C4AgAAAAAAAAAA4AYWVwAAAAAAAAAAANzA4goAAAAAAAAAAIAbWFwBAAAAAAAAAABwA4srAAAAAAAAAAAAbmBxBQAAAAAAAAAAwA0srgAAAAAAAAAAALiBxRUAAAAAAAAAAAA3eHxxJS8vT9/73vd0ww03KDY2Vj/60Y9UWlrqVGfMmDEKCgpyus2ePdupTllZmbKyshQZGanY2FgtWLBAV65ccaqzZ88e3XXXXbLZbLrtttuUn5/v6TgAAAAAAAAAAABOPL64UlhYqOzsbB04cEAFBQWqr69XRkaGvv32W6d6s2bNUnl5uXVbtWqVVdbQ0KCsrCzV1dVp//79ev3115Wfn68lS5ZYdc6cOaOsrCw98MADOnz4sObPn6+ZM2dq+/btno4EAAAAAAAAAABgCfX0Dt9//32n+/n5+YqNjVVxcbFGjx5tbY+MjFR8fHyL+9ixY4eOHz+unTt3Ki4uTsOGDdOKFSu0aNEiLVu2TOHh4Vq/fr1SUlK0evVqSdLAgQO1b98+rVmzRpmZmZ6OBQAAAAAAAAAAIKkLPnPl4sWLkqRevXo5bd+4caNiYmI0ePBgLV68WDU1NVZZUVGRUlNTFRcXZ23LzMxUdXW1jh07ZtVJT0932mdmZqaKioo6KwoAAAAAAAAAAIDnX7nSVGNjo+bPn697771XgwcPtrY/+uijSk5OVmJioj755BMtWrRIpaWleueddyRJFRUVTgsrkqz7FRUVLutUV1fr8uXL6tGjR7P21NbWqra21rpfXV0tSaqvr1d9fb3LLI5yx1dbiGm9A/yELdg4fQ0UvpyrteOtrY/v6H58TaDmkryfLRD7FAAAAAAAAPCWTl1cyc7O1tGjR7Vv3z6n7U888YT1fWpqqhISEjR27FidPn1a/fr167T25OXlafny5c2279ixQ5GRkW3aR0FBgSRp1d0ebZpPWDGy0dtN6BS+mGvbtm0e2Y/jeAw0gZpL8l62pq8OBAAAAAAAANAxnba4MnfuXG3ZskV79+7VLbfc4rJuWlqaJOnUqVPq16+f4uPjdejQIac6lZWVkmR9Tkt8fLy1rWmdqKioFl+1IkmLFy9Wbm6udb+6ulp9+vRRRkaGoqKiXLaxvr5eBQUFGjdunMLCwjR42XaX9f2JLdhoxchGPftRsGobg7zdHI/x5VxHl3Xsc4GuPh4DRaDmkryfzfFKPQAAAAAAAAAd5/HFFWOMfvazn+ndd9/Vnj17lJKS0upjDh8+LElKSEiQJNntdq1cuVJVVVWKjY2V9K//9o6KitKgQYOsOlf/939BQYHsdvs1f47NZpPNZmu2PSwsrM0XOx11axt862K9J9Q2BpGri3jq4ro7x64/CdRckveyBWp/AgAAAAAAAN7g8Q+0z87O1htvvKE333xTN9xwgyoqKlRRUaHLly9Lkk6fPq0VK1aouLhYZ8+e1Z///Gc99thjGj16tIYMGSJJysjI0KBBgzR16lQdOXJE27dv1zPPPKPs7GxrcWT27Nn67LPPtHDhQp04cULr1q3T5s2blZOT4+lIAAAAAAAAAAAAFo8vrrz00ku6ePGixowZo4SEBOv21ltvSZLCw8O1c+dOZWRkaMCAAXryySc1adIkvffee9Y+QkJCtGXLFoWEhMhut+snP/mJHnvsMT333HNWnZSUFG3dulUFBQUaOnSoVq9erVdffVWZmR17uyUAAAAAAAAAAABXOuVtwVzp06ePCgsLW91PcnJyqx/6PWbMGJWUlLjVPgAAAAAAAAAAgI7otA+0B3Btt/58a4cebwsxWnW3NHjZdp/7PJmOCNRckmeznX0+y0OtAgAAAAAAANAeHn9bMAAAAAAAAAAAgEDG4goAAAAAAAAAAIAbWFwBAAAAAAAAAABwA4srAAAAAAAAAAAAbmBxBQAAAAAAAAAAwA0srgAAAAAAAAAAALiBxRUAAAAAAAAAAAA3sLgCAAAAAAAAAADgBhZXAAAAAAAAAAAA3MDiCgAAAAAAAAAAgBtYXAEAAAAAAAAAAHADiysAAAAAAAAAAABuYHEFAAAAAAAAAADADSyuAAAAAAAAAAAAuIHFFQAAAAAAAAAAADewuAIAAAAAAAAAAOAGFlcAAAAAAAAAAADcwOIKAAAAAAAAAACAG1hcAQAAAAAAAAAAcAOLKwAAAAAAAAAAAG5gcQUAAAAAAAAAAMANLK4AAAAAAAAAAAC4gcUVAAAAAAAAAAAAN7C4AgAAAAAAAAAA4Aa/X1xZu3atbr31VkVERCgtLU2HDh3ydpMAAAGGuQYA0NmYawAAAAD/4teLK2+99ZZyc3O1dOlSffzxxxo6dKgyMzNVVVXl7aYBAAIEcw0AoLMx1wAAAAD+x68XV1544QXNmjVL06dP16BBg7R+/XpFRkbqf//3f73dNABAgGCuAQB0NuYaAAAAwP+EersB7VVXV6fi4mItXrzY2hYcHKz09HQVFRW1+Jja2lrV1tZa9y9evChJ+uqrr1RfX+/y59XX16umpkbnz59XWFiYQq9864EUviG00aimplGh9cFqaAzydnM8JlBzSYGbLVBzSZ7Ndv78ebcfc+nSJUmSMaZDP7u76Yy55ur5xBVfnmsC5XwN5BztGSt8gTvniC/rjjmYa9qnq/+uacrx/A77xTuq9eMxsLPYgo2eGd5I/1yDo3/8fQ7tLIHyO0ZncfSPu/Mkcw0AwJf47eLKP//5TzU0NCguLs5pe1xcnE6cONHiY/Ly8rR8+fJm21NSUjqljf7kUW83oJMEai4pcLMFai7Jc9liVrf/sZcuXVLPnj091JLAx1zjWqCcr4GaoyNjBdARzDXuYa7xbYEyR3QW+sc1+se1jvQPcw0AwBf47eJKeyxevFi5ubnW/cbGRn311Ve66aabFBTk+j9Jqqur1adPH/3jH/9QVFRUZze1SwVqtkDNJQVutkDNJXk/mzFGly5dUmJiYpf/7O6mtbnG28eCp5DDtwRKDilwsnTHHMw1Xacjf9c0FSjHaWehf1yjf1yjf1xrb/8w1wAAfInfLq7ExMQoJCRElZWVTtsrKysVHx/f4mNsNptsNpvTtujoaLd+blRUVMD+YhSo2QI1lxS42QI1l+TdbPxnl/s6c64JlOOcHL4lUHJIgZOlu+VgrnGft/6uaSpQjtPOQv+4Rv+4Rv+41p7+Ya4BAPgKv/1A+/DwcI0YMUK7du2ytjU2NmrXrl2y2+1ebBkAIFAw1wAAOhtzDQAAAOCf/PaVK5KUm5uradOmaeTIkbr77rv1P//zP/r22281ffp0bzcNABAgmGsAAJ2NuQYAAADwP369uPLII4/o//7v/7RkyRJVVFRo2LBhev/995t9GKQn2Gw2LV26tNnL7wNBoGYL1FxS4GYL1FxSYGcLdJ6eawLlWCCHbwmUHFLgZCEH3NGVf9c0xfPrGv3jGv3jGv3jGv0DAAgEQcYY4+1GAAAAAAAAAAAA+Au//cwVAAAAAAAAAAAAb2BxBQAAAAAAAAAAwA0srgAAAAAAAAAAALiBxRUAAAAAAAAAAAA3sLjSBmvXrtWtt96qiIgIpaWl6dChQ95ukkt5eXn63ve+pxtuuEGxsbH60Y9+pNLSUqc63333nbKzs3XTTTfp+uuv16RJk1RZWelUp6ysTFlZWYqMjFRsbKwWLFigK1eudGWUVj3//PMKCgrS/PnzrW3+mu2LL77QT37yE910003q0aOHUlNT9dFHH1nlxhgtWbJECQkJ6tGjh9LT03Xy5EmnfXz11VeaMmWKoqKiFB0drRkzZuibb77p6ihOGhoa9OyzzyolJUU9evRQv379tGLFChljrDr+km3v3r36wQ9+oMTERAUFBemPf/yjU7mncnzyySe6//77FRERoT59+mjVqlWdHQ0dtGzZMgUFBTndBgwYYJX7y7jUWo4xY8Y0K589e7bP5ZACZ0xtLcdPf/rTZs/J+PHjfS7Hrbfe2qydQUFBys7OluQ/50hrOfzlHAmkubk7a23MfuWVVzRmzBhFRUUpKChIFy5caLaP9jyHbTlffYG3+qct44C3eaJvVq5cqXvuuUeRkZGKjo5u089ty7jiC7zVP22Z031BR/vn7NmzmjFjhtMctHTpUtXV1bn8uf4y9gAAuhcWV1rx1ltvKTc3V0uXLtXHH3+soUOHKjMzU1VVVd5u2jUVFhYqOztbBw4cUEFBgerr65WRkaFvv/3WqpOTk6P33ntPb7/9tgoLC/Xll19q4sSJVnlDQ4OysrJUV1en/fv36/XXX1d+fr6WLFnijUgt+vDDD/Xyyy9ryJAhTtv9MdvXX3+te++9V2FhYfrLX/6i48ePa/Xq1brxxhutOqtWrdJvf/tbrV+/XgcPHtR1112nzMxMfffdd1adKVOm6NixYyooKNCWLVu0d+9ePfHEE96IZPnVr36ll156Sb/73e/0t7/9Tb/61a+0atUqvfjii1Ydf8n27bffaujQoVq7dm2L5Z7IUV1drYyMDCUnJ6u4uFi//vWvtWzZMr3yyiudng8dc+edd6q8vNy67du3zyrzp3HJVQ5JmjVrllN508U/X8kRKGNqW3JI0vjx452ekz/84Q9O5d7OIf1rzm7axoKCAknSww8/LMl/zpHWckj+cY4E0tzc3bkas2tqajR+/Hg9/fTT13x8e57D1s5XX+KN/pFcjwO+oqN9U1dXp4cfflhz5sxp889sy7jiK7zRP1Lrc7qv6Ej/nDhxQo2NjXr55Zd17NgxrVmzRuvXr3fZn5J/jT0AgG7EwKW7777bZGdnW/cbGhpMYmKiycvL82Kr3FNVVWUkmcLCQmOMMRcuXDBhYWHm7bfftur87W9/M5JMUVGRMcaYbdu2meDgYFNRUWHVeemll0xUVJSpra3t2gAtuHTpkrn99ttNQUGB+f73v2/mzZtnjPHfbIsWLTL33XffNcsbGxtNfHy8+fWvf21tu3DhgrHZbOYPf/iDMcaY48ePG0nmww8/tOr85S9/MUFBQeaLL77ovMa3Iisryzz++ONO2yZOnGimTJlijPHfbJLMu+++a933VI5169aZG2+80elYXLRokenfv38nJ0JHLF261AwdOrTFMn8al1zlMMY4jbct8ZUcgTKmtpbDGGOmTZtmfvjDH16z3BdytGTevHmmX79+prGx0a/Okas1zWGM/5wjgTo3dzetjdkOu3fvNpLM119/7bS9Pc9hW85XX+GN/jGm9XHAF3S0b5rasGGD6dmzZ6v7asu44iu80T/GtD6n+wpP9o/DqlWrTEpKyjXL/WnsAQB0L7xyxYW6ujoVFxcrPT3d2hYcHKz09HQVFRV5sWXuuXjxoiSpV69ekqTi4mLV19c75RowYICSkpKsXEVFRUpNTVVcXJxVJzMzU9XV1Tp27FgXtr5l2dnZysrKcsog+W+2P//5zxo5cqQefvhhxcbGavjw4fr9739vlZ85c0YVFRVOuXr27Km0tDSnXNHR0Ro5cqRVJz09XcHBwTp48GDXhbnKPffco127dunvf/+7JOnIkSPat2+fJkyYIMm/szXlqRxFRUUaPXq0wsPDrTqZmZkqLS3V119/3UVp0B4nT55UYmKi+vbtqylTpqisrEyS/41L18rhsHHjRsXExGjw4MFavHixampqrDJfyREoY2prORz27Nmj2NhY9e/fX3PmzNH58+etMl/IcbW6ujq98cYbevzxxxUUFOR354jD1Tkc/OEc6S5zc3fQ2pjtSnuew7acr76kq/vHwdU44Cs60jft0ZZxxZd0df84uJrTfYmn++fixYvW9YqW+NvYAwDoPkK93QBf9s9//lMNDQ1OfwBLUlxcnE6cOOGlVrmnsbFR8+fP17333qvBgwdLkioqKhQeHt7svV/j4uJUUVFh1Wkpt6PMmzZt2qSPP/5YH374YbMyf8322Wef6aWXXlJubq6efvppffjhh/qv//ovhYeHa9q0aVa7Wmp301yxsbFO5aGhoerVq5dXn7Of//znqq6u1oABAxQSEqKGhgatXLlSU6ZMkSS/ztaUp3JUVFQoJSWl2T4cZVe/HRB8Q1pamvLz89W/f3+Vl5dr+fLluv/++3X06FG/Gpdc5bjhhhv06KOPKjk5WYmJifrkk0+0aNEilZaW6p133vGpHIEypraWQ/rX24dMnDhRKSkpOn36tJ5++mlNmDBBRUVFCgkJ8YkcV/vjH/+oCxcu6Kc//akk/527r84hyW/Oke4yNwe61sbs1rTnOWzL+eorvNE/UuvjgC/oaN+0R1vGFV/hjf6RWp/TfYWn++fUqVN68cUX9d///d/XrONPYw8AoHthcSXAZWdn6+jRo83eM99f/eMf/9C8efNUUFCgiIgIbzfHYxobGzVy5Ej98pe/lCQNHz5cR48e1fr1660LaP5q8+bN2rhxo958803deeedOnz4sObPn6/ExES/zwY4OP7bW5KGDBmitLQ0JScna/PmzerRo4cXW+YeVzlmzJjh9D7zqampSkhI0NixY3X69Gn169fPG01uUaCMqW3J8eMf/9iqn5qaqiFDhqhfv37as2ePxo4d65V2t+a1117ThAkTlJiY6O2mdEhLOfzlHGFuDgytjdndnbf6xx/GAY4d17zVP/4yp3uyf7744guNHz9eDz/8sGbNmuXppgIA0Ol4WzAXYmJiFBISosrKSqftlZWVio+P91Kr2m7u3LnasmWLdu/erVtuucXaHh8fr7q6Ol24cMGpftNc8fHxLeZ2lHlLcXGxqqqqdNdddyk0NFShoaEqLCzUb3/7W4WGhiouLs4vsyUkJGjQoEFO2wYOHGi9vNrRLlfHYnx8vKqqqpzKr1y5oq+++sqrz9mCBQv085//XD/+8Y+VmpqqqVOnKicnR3l5eZL8O1tTnsrhi8cn3BcdHa077rhDp06d8usxt2mOlqSlpUmSVe4rOQJlTG0tR0v69u2rmJgYp+fE2zma+vzzz7Vz507NnDnT2uaP50hLOVriq+dId5mbu5vWxuyrtec5bMv56qu6on9acvU44Ivc7Zv2aMu44qu6on9acvWc7qva2z9ffvmlHnjgAd1zzz165ZVXXNb157EHABDYWFxxITw8XCNGjNCuXbusbY2Njdq1a5fsdrsXW+aaMUZz587Vu+++qw8++KDZWwyNGDFCYWFhTrlKS0tVVlZm5bLb7fr000+d/qAoKChQVFRUsws9XWns2LH69NNPdfjwYes2cuRITZkyxfreH7Pde++9Ki0tddr297//XcnJyZKklJQUxcfHO+Wqrq7WwYMHnXJduHBBxcXFVp0PPvhAjY2N1h913lBTU6PgYOehJiQkRI2NjZL8O1tTnspht9u1d+9e1dfXW3UKCgrUv39/3hLMj3zzzTc6ffq0EhIS/HrMbZqjJYcPH5Ykq9xXcgTKmNpajpacO3dO58+fd3pOvJ2jqQ0bNig2NlZZWVnWNn88R1rK0RJfPUe6y9zc3bQ2Zl+tPc9hW85XX9UV/dOSq8cBX+Ru37RHW8YVX9UV/dOSq+d0X9We/vniiy80ZswYjRgxQhs2bGg2J13Nn8ceAECAa+MH33dbmzZtMjabzeTn55vjx4+bJ554wkRHR5uKigpvN+2a5syZY3r27Gn27NljysvLrVtNTY1VZ/bs2SYpKcl88MEH5qOPPjJ2u93Y7Xar/MqVK2bw4MEmIyPDHD582Lz//vumd+/eZvHixd6I5NL3v/99M2/ePOu+P2Y7dOiQCQ0NNStXrjQnT540GzduNJGRkeaNN96w6jz//PMmOjra/OlPfzKffPKJ+eEPf2hSUlLM5cuXrTrjx483w4cPNwcPHjT79u0zt99+u5k8ebI3IlmmTZtmbr75ZrNlyxZz5swZ884775iYmBizcOFCq46/ZLt06ZIpKSkxJSUlRpJ54YUXTElJifn88889luPChQsmLi7OTJ061Rw9etRs2rTJREZGmpdffrlLs8I9Tz75pNmzZ485c+aM+etf/2rS09NNTEyMqaqqMsb4z7jkKsepU6fMc889Zz766CNz5swZ86c//cn07dvXjB492udyBMqY2lqOS5cumaeeesoUFRWZM2fOmJ07d5q77rrL3H777ea7777zmRwODQ0NJikpySxatKhZmb+cI8ZcO4c/nSOBNDd3Z63NPeXl5aakpMT8/ve/N5LM3r17TUlJiTl//ry1j9aew3Pnzpn+/fubgwcPWttaO199hTf6py3jgC/wRN98/vnnpqSkxCxfvtxcf/311u/Ily5dsur079/fvPPOO9b9towrvsAb/dPWOd0XdLR/zp07Z2677TYzduxYc+7cOadrFg7+PPYAALoXFlfa4MUXXzRJSUkmPDzc3H333ebAgQPebpJLklq8bdiwwapz+fJl85//+Z/mxhtvNJGRkeahhx5y+mXGGGPOnj1rJkyYYHr06GFiYmLMk08+aerr67s4TeuuXlzx12zvvfeeGTx4sLHZbGbAgAHmlVdecSpvbGw0zz77rImLizM2m82MHTvWlJaWOtU5f/68mTx5srn++utNVFSUmT59utMv8N5QXV1t5s2bZ5KSkkxERITp27ev+cUvfmFqa2utOv6Sbffu3S2eW9OmTfNojiNHjpj77rvP2Gw2c/PNN5vnn3++qyKinR555BGTkJBgwsPDzc0332weeeQRc+rUKavcX8YlVznKysrM6NGjTa9evYzNZjO33XabWbBggbl48aLP5TAmcMZUVzlqampMRkaG6d27twkLCzPJyclm1qxZzf4BxBdyGGPM9u3bjaRm/WyM/5wjxlw7hz+dI4E0N3dnrc09S5cubfVvgtaewzNnzhhJZvfu3da2tpyvvsAb/dPWccDbPNE306ZNa7FO02Pl6se0ZVzxBd7on7bO6b6go/2zYcOGa16zcPDnsQcA0L0EGWNMh1/+AgAAAAAAAAAA0E3wmSsAAAAAAAAAAABuYHEFAAAAAAAAAADADSyuAAAAAAAAAAAAuIHFFQAAAAAAAAAAADewuAIAAAAAAAAAAOAGFlcAAAAAAAAAAADcwOIKAAAAAAAAAACAG1hcAQAAAAAAAAAAcAOLKwAAAAAAAAAAAG5gcQUAAAAAAAAAAMANLK4AAAAAAAAAAAC4gcUVAAAAAAAAAAAAN/w/MVXZXYa3Cq4AAAAASUVORK5CYII="},"metadata":{}}],"execution_count":11},{"cell_type":"code","source":"df_extravbb_series =   df_extravbb.groupby(['pid', 'series_id',  ]).agg({'instance_number':['min','max','count'],}).reset_index()\ndf_extravbb_series.columns = ['patient_id', 'series_id',  'instance_number_min', 'instance_number_max', 'instance_number_count' ]\ndf_extravbb_series['patient_count'] = df_extravbb_series.patient_id.apply(lambda x : len(df_extravbb_series[df_extravbb_series.patient_id==x])  )\ndf_extravbb_series.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:12:44.134216Z","iopub.execute_input":"2024-11-27T15:12:44.134573Z","iopub.status.idle":"2024-11-27T15:12:44.226833Z","shell.execute_reply.started":"2024-11-27T15:12:44.134539Z","shell.execute_reply":"2024-11-27T15:12:44.225944Z"}},"outputs":[{"execution_count":12,"output_type":"execute_result","data":{"text/plain":"   patient_id  series_id  instance_number_min  instance_number_max  instance_number_count  patient_count\n0          33      55570                  110                  110                      1              1\n1          43      24055                  106                  108                      3              1\n2         263      44610                  143                  183                     12              1\n3         820      11921                   86                   90                      5              2\n4         820      38809                  205                  208                      4              2","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patient_id</th>\n      <th>series_id</th>\n      <th>instance_number_min</th>\n      <th>instance_number_max</th>\n      <th>instance_number_count</th>\n      <th>patient_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>33</td>\n      <td>55570</td>\n      <td>110</td>\n      <td>110</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>43</td>\n      <td>24055</td>\n      <td>106</td>\n      <td>108</td>\n      <td>3</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>263</td>\n      <td>44610</td>\n      <td>143</td>\n      <td>183</td>\n      <td>12</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>820</td>\n      <td>11921</td>\n      <td>86</td>\n      <td>90</td>\n      <td>5</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>820</td>\n      <td>38809</td>\n      <td>205</td>\n      <td>208</td>\n      <td>4</td>\n      <td>2</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":12},{"cell_type":"code","source":"df_trn_meta = pd.read_csv('/kaggle/input/rsna-2023-abdominal-trauma-detection/train_series_meta.csv')\ndf_trn_meta['has_extbb'] = df_trn_meta.series_id.apply(lambda x : int(x in ext_series)) \ndf_trn_meta['series_cnt'] = df_trn_meta.patient_id.apply(lambda x: df_trn_meta.series_id[df_trn_meta.patient_id==x].count())\ndf_trn_meta['extbb_cnt'] = df_trn_meta.patient_id.apply(lambda x: df_trn_meta.series_id[(df_trn_meta.patient_id==x) & (df_trn_meta.has_extbb==1)].count())\ndf_trn_meta.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:12:57.81134Z","iopub.execute_input":"2024-11-27T15:12:57.811992Z","iopub.status.idle":"2024-11-27T15:12:59.989622Z","shell.execute_reply.started":"2024-11-27T15:12:57.81196Z","shell.execute_reply":"2024-11-27T15:12:59.988744Z"}},"outputs":[{"execution_count":13,"output_type":"execute_result","data":{"text/plain":"   patient_id  series_id  aortic_hu  incomplete_organ  has_extbb  series_cnt  extbb_cnt\n0       10004      21057     146.00                 0          1           2          2\n1       10004      51033     454.75                 0          1           2          2\n2       10005      18667     187.00                 0          0           1          0\n3       10007      47578     329.00                 0          0           1          0\n4       10026      29700     327.00                 0          0           2          0","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patient_id</th>\n      <th>series_id</th>\n      <th>aortic_hu</th>\n      <th>incomplete_organ</th>\n      <th>has_extbb</th>\n      <th>series_cnt</th>\n      <th>extbb_cnt</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>10004</td>\n      <td>21057</td>\n      <td>146.00</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>10004</td>\n      <td>51033</td>\n      <td>454.75</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>10005</td>\n      <td>18667</td>\n      <td>187.00</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>10007</td>\n      <td>47578</td>\n      <td>329.00</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>10026</td>\n      <td>29700</td>\n      <td>327.00</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":13},{"cell_type":"code","source":"print(len(df_trn_meta[(df_trn_meta.has_extbb==1) &  (df_trn_meta.series_cnt==2  ) & (df_trn_meta.extbb_cnt<2) ]))  # 41\n\ndf_trn_meta[ (df_trn_meta.has_extbb==1) &  (df_trn_meta.series_cnt==2  ) & (df_trn_meta.extbb_cnt<2)].head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:13:10.969597Z","iopub.execute_input":"2024-11-27T15:13:10.969984Z","iopub.status.idle":"2024-11-27T15:13:10.98459Z","shell.execute_reply.started":"2024-11-27T15:13:10.969956Z","shell.execute_reply":"2024-11-27T15:13:10.983766Z"}},"outputs":[{"name":"stdout","text":"41\n","output_type":"stream"},{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"     patient_id  series_id  aortic_hu  incomplete_organ  has_extbb  series_cnt  extbb_cnt\n144       11925      60003      235.0                 0          1           2          1\n158       12192      45638      404.0                 0          1           2          1\n226       12958      18631      116.0                 0          1           2          1\n259       13316      48255      211.0                 0          1           2          1\n384       14788      18931      163.0                 0          1           2          1","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patient_id</th>\n      <th>series_id</th>\n      <th>aortic_hu</th>\n      <th>incomplete_organ</th>\n      <th>has_extbb</th>\n      <th>series_cnt</th>\n      <th>extbb_cnt</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>144</th>\n      <td>11925</td>\n      <td>60003</td>\n      <td>235.0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>158</th>\n      <td>12192</td>\n      <td>45638</td>\n      <td>404.0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>226</th>\n      <td>12958</td>\n      <td>18631</td>\n      <td>116.0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>259</th>\n      <td>13316</td>\n      <td>48255</td>\n      <td>211.0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>384</th>\n      <td>14788</td>\n      <td>18931</td>\n      <td>163.0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":14},{"cell_type":"code","source":"df_extravbb_series[df_extravbb_series.series_id==45638]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:13:18.806293Z","iopub.execute_input":"2024-11-27T15:13:18.806633Z","iopub.status.idle":"2024-11-27T15:13:18.816059Z","shell.execute_reply.started":"2024-11-27T15:13:18.806603Z","shell.execute_reply":"2024-11-27T15:13:18.815211Z"}},"outputs":[{"execution_count":15,"output_type":"execute_result","data":{"text/plain":"    patient_id  series_id  instance_number_min  instance_number_max  instance_number_count  patient_count\n47       12192      45638                  506                  510                      5              1","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patient_id</th>\n      <th>series_id</th>\n      <th>instance_number_min</th>\n      <th>instance_number_max</th>\n      <th>instance_number_count</th>\n      <th>patient_count</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>47</th>\n      <td>12192</td>\n      <td>45638</td>\n      <td>506</td>\n      <td>510</td>\n      <td>5</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":15},{"cell_type":"code","source":"df_trn_meta[df_trn_meta.patient_id==12192]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:13:24.247631Z","iopub.execute_input":"2024-11-27T15:13:24.248049Z","iopub.status.idle":"2024-11-27T15:13:24.258526Z","shell.execute_reply.started":"2024-11-27T15:13:24.248017Z","shell.execute_reply":"2024-11-27T15:13:24.25759Z"}},"outputs":[{"execution_count":16,"output_type":"execute_result","data":{"text/plain":"     patient_id  series_id  aortic_hu  incomplete_organ  has_extbb  series_cnt  extbb_cnt\n158       12192      45638      404.0                 0          1           2          1\n159       12192      47364      161.0                 0          0           2          1","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patient_id</th>\n      <th>series_id</th>\n      <th>aortic_hu</th>\n      <th>incomplete_organ</th>\n      <th>has_extbb</th>\n      <th>series_cnt</th>\n      <th>extbb_cnt</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>158</th>\n      <td>12192</td>\n      <td>45638</td>\n      <td>404.0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>159</th>\n      <td>12192</td>\n      <td>47364</td>\n      <td>161.0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":16},{"cell_type":"code","source":"!pip install -qU python-gdcm pydicom pylibjpeg","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:13:50.394829Z","iopub.execute_input":"2024-11-27T15:13:50.395266Z","iopub.status.idle":"2024-11-27T15:17:43.694562Z","shell.execute_reply.started":"2024-11-27T15:13:50.395226Z","shell.execute_reply":"2024-11-27T15:17:43.693622Z"}},"outputs":[{"name":"stdout","text":"\u001b[33mWARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7d79aeaf0430>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/python-gdcm/\u001b[0m\u001b[33m\n\u001b[0m\u001b[33mWARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7d79aeaf0730>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/python-gdcm/\u001b[0m\u001b[33m\n\u001b[0m\u001b[33mWARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7d79aeaf09d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/python-gdcm/\u001b[0m\u001b[33m\n\u001b[0m\u001b[33mWARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7d79aeaf0b80>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/python-gdcm/\u001b[0m\u001b[33m\n\u001b[0m\u001b[33mWARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7d79aeaf0d30>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/python-gdcm/\u001b[0m\u001b[33m\n\u001b[0m\u001b[31mERROR: Could not find a version that satisfies the requirement python-gdcm (from versions: none)\u001b[0m\u001b[31m\n\u001b[0m\u001b[31mERROR: No matching distribution found for python-gdcm\u001b[0m\u001b[31m\n\u001b[0m","output_type":"stream"}],"execution_count":17},{"cell_type":"code","source":"# Install the mediapy package for visualizing images/videos.\n# See https://github.com/google/mediapy\n!command -v ffmpeg >/dev/null || (apt update && apt install -y ffmpeg)\n!pip install -q mediapy\n!pip install -U -q git+https://github.com/tensorflow/docs","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:09.909728Z","iopub.status.idle":"2024-11-27T15:32:09.910018Z","shell.execute_reply.started":"2024-11-27T15:32:09.90988Z","shell.execute_reply":"2024-11-27T15:32:09.909893Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import imageio\nfrom tensorflow_docs.vis import embed\n\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\nimport mediapy as media","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:09.911718Z","iopub.status.idle":"2024-11-27T15:32:09.912153Z","shell.execute_reply.started":"2024-11-27T15:32:09.911935Z","shell.execute_reply":"2024-11-27T15:32:09.911958Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def standardize_pixel_array(dcm: pydicom.dataset.FileDataset) -> np.ndarray:\n    \"\"\"\n    Source : https://www.kaggle.com/competitions/rsna-2023-abdominal-trauma-detection/discussion/427217\n    \"\"\"\n    # Correct DICOM pixel_array if PixelRepresentation == 1.\n    pixel_array = dcm.pixel_array\n    if dcm.PixelRepresentation == 1:\n        bit_shift = dcm.BitsAllocated - dcm.BitsStored\n        dtype = pixel_array.dtype \n        pixel_array = (pixel_array << bit_shift).astype(dtype) >>  bit_shift\n#         pixel_array = pydicom.pixel_data_handlers.util.apply_modality_lut(new_array, dcm)\n\n    intercept = float(dcm.RescaleIntercept)\n    slope = float(dcm.RescaleSlope)\n    center = int(dcm.WindowCenter)\n    width = int(dcm.WindowWidth)\n    low = center - width / 2\n    high = center + width / 2    \n    \n    pixel_array = (pixel_array * slope) + intercept\n    pixel_array = np.clip(pixel_array, low, high)\n\n    return pixel_array","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:09.914071Z","iopub.status.idle":"2024-11-27T15:32:09.914498Z","shell.execute_reply.started":"2024-11-27T15:32:09.914278Z","shell.execute_reply":"2024-11-27T15:32:09.914299Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def process_paths(img_paths, size=256, ):\n    frames = []\n    keys = []  # for checking dcm order s/b by z \n    zpos = []\n    dcms = {}\n    imgs = {}\n    shape = (size, size)\n    img0 = np.zeros(shape)\n    for f in img_paths:\n        dcm   = f.split('/')[-1]\n        dicom = pydicom.dcmread(f)\n        pos_z = dicom[(0x20, 0x32)].value[-1]\n        \n        img = standardize_pixel_array(dicom)\n        img = (img - img.min()) / (img.max() - img.min() + 1e-6)\n        \n        if dicom.PhotometricInterpretation == \"MONOCHROME1\":\n            img = 1 - img\n\n        imgs[pos_z] = img\n        dcms[pos_z] = dcm\n        \n    for i, k in enumerate(sorted(dcms.keys())):\n        dk = dcms[k]\n        keys.append(dk)\n        zpos.append(k)\n        \n    for i, k in enumerate(sorted(imgs.keys())):\n        \n        img = imgs[k]\n        \n        if size is not None:\n            img = cv2.resize(img, (size, size))\n        img = np.clip(img * 255, 0, 255).astype(np.uint8) #(img * 255).astype(np.uint8)    \n        #img3 = np.stack([img, img0, img0], axis=-1).astype(np.uint8)     # testing red channel only  OR\n        img3 = np.stack([img, img, img], axis=-1).astype(np.uint8) # use for all channels TBA which is best\n            \n        frames.append(img3)    \n    return frames, keys, zpos        ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:09.916136Z","iopub.status.idle":"2024-11-27T15:32:09.916595Z","shell.execute_reply.started":"2024-11-27T15:32:09.916346Z","shell.execute_reply":"2024-11-27T15:32:09.916368Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Function to handle the split for each group\ndef split_group(group, test_size=0.2):\n    if len(group) == 1:\n        return (group, pd.DataFrame()) if np.random.rand() < test_size else (pd.DataFrame(), group)\n    else:\n        return train_test_split(group, test_size=test_size, random_state=42)\n\n# Initialize the train and validation datasets\ntrain_data = pd.DataFrame()\nval_data = pd.DataFrame()\n\n# Iterate through the groups and split them, handling single-sample groups\nfor _, group in dataframe.groupby(config.TARGET_COLS):\n    train_group, val_group = split_group(group)\n    train_data = pd.concat([train_data, train_group], ignore_index=True)\n    val_data = pd.concat([val_data, val_group], ignore_index=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:09.91826Z","iopub.status.idle":"2024-11-27T15:32:09.918717Z","shell.execute_reply.started":"2024-11-27T15:32:09.918472Z","shell.execute_reply":"2024-11-27T15:32:09.918494Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.shape, val_data.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:09.920065Z","iopub.status.idle":"2024-11-27T15:32:09.920442Z","shell.execute_reply.started":"2024-11-27T15:32:09.920253Z","shell.execute_reply":"2024-11-27T15:32:09.920272Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_img_path = '/kaggle/input/rsna-2023-abdominal-trauma-detection/train_images/'","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.033613Z","iopub.execute_input":"2024-11-27T15:32:10.034314Z","iopub.status.idle":"2024-11-27T15:32:10.038336Z","shell.execute_reply.started":"2024-11-27T15:32:10.034284Z","shell.execute_reply":"2024-11-27T15:32:10.03737Z"}},"outputs":[],"execution_count":19},{"cell_type":"code","source":"# need img paths for each patient id series id  \n\ndef fetch_img_paths(train_img_path,patient,series):\n    img_paths = []    \n\n    scans = []\n    for img in os.listdir(os.path.join(train_img_path, patient, series)):\n        scans.append(os.path.join(train_img_path, patient, series, img))\n            \n    img_paths.append(scans)\n            \n    return img_paths","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.040274Z","iopub.execute_input":"2024-11-27T15:32:10.040628Z","iopub.status.idle":"2024-11-27T15:32:10.04798Z","shell.execute_reply.started":"2024-11-27T15:32:10.04059Z","shell.execute_reply":"2024-11-27T15:32:10.047172Z"}},"outputs":[],"execution_count":20},{"cell_type":"code","source":"(df_extravbb[df_extravbb.pid==12192])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.048803Z","iopub.execute_input":"2024-11-27T15:32:10.049118Z","iopub.status.idle":"2024-11-27T15:32:10.063886Z","shell.execute_reply.started":"2024-11-27T15:32:10.049083Z","shell.execute_reply":"2024-11-27T15:32:10.062981Z"}},"outputs":[{"execution_count":21,"output_type":"execute_result","data":{"text/plain":"                 filename   x1   y1   x2   y2    pid  series_id  instance_number  width  height\n2782  12192/45638/509.png  265  190  327  247  12192      45638              509     62      57\n2783  12192/45638/510.png  265  191  328  249  12192      45638              510     63      58\n2784  12192/45638/507.png  268  185  328  248  12192      45638              507     60      63\n2785  12192/45638/508.png  269  189  328  249  12192      45638              508     59      60\n2786  12192/45638/506.png  263  183  324  248  12192      45638              506     61      65","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>filename</th>\n      <th>x1</th>\n      <th>y1</th>\n      <th>x2</th>\n      <th>y2</th>\n      <th>pid</th>\n      <th>series_id</th>\n      <th>instance_number</th>\n      <th>width</th>\n      <th>height</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2782</th>\n      <td>12192/45638/509.png</td>\n      <td>265</td>\n      <td>190</td>\n      <td>327</td>\n      <td>247</td>\n      <td>12192</td>\n      <td>45638</td>\n      <td>509</td>\n      <td>62</td>\n      <td>57</td>\n    </tr>\n    <tr>\n      <th>2783</th>\n      <td>12192/45638/510.png</td>\n      <td>265</td>\n      <td>191</td>\n      <td>328</td>\n      <td>249</td>\n      <td>12192</td>\n      <td>45638</td>\n      <td>510</td>\n      <td>63</td>\n      <td>58</td>\n    </tr>\n    <tr>\n      <th>2784</th>\n      <td>12192/45638/507.png</td>\n      <td>268</td>\n      <td>185</td>\n      <td>328</td>\n      <td>248</td>\n      <td>12192</td>\n      <td>45638</td>\n      <td>507</td>\n      <td>60</td>\n      <td>63</td>\n    </tr>\n    <tr>\n      <th>2785</th>\n      <td>12192/45638/508.png</td>\n      <td>269</td>\n      <td>189</td>\n      <td>328</td>\n      <td>249</td>\n      <td>12192</td>\n      <td>45638</td>\n      <td>508</td>\n      <td>59</td>\n      <td>60</td>\n    </tr>\n    <tr>\n      <th>2786</th>\n      <td>12192/45638/506.png</td>\n      <td>263</td>\n      <td>183</td>\n      <td>324</td>\n      <td>248</td>\n      <td>12192</td>\n      <td>45638</td>\n      <td>506</td>\n      <td>61</td>\n      <td>65</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":21},{"cell_type":"code","source":"df_trn_meta[df_trn_meta.patient_id==12192]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.064949Z","iopub.execute_input":"2024-11-27T15:32:10.065244Z","iopub.status.idle":"2024-11-27T15:32:10.08254Z","shell.execute_reply.started":"2024-11-27T15:32:10.065211Z","shell.execute_reply":"2024-11-27T15:32:10.081625Z"}},"outputs":[{"execution_count":22,"output_type":"execute_result","data":{"text/plain":"     patient_id  series_id  aortic_hu  incomplete_organ  has_extbb  series_cnt  extbb_cnt\n158       12192      45638      404.0                 0          1           2          1\n159       12192      47364      161.0                 0          0           2          1","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patient_id</th>\n      <th>series_id</th>\n      <th>aortic_hu</th>\n      <th>incomplete_organ</th>\n      <th>has_extbb</th>\n      <th>series_cnt</th>\n      <th>extbb_cnt</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>158</th>\n      <td>12192</td>\n      <td>45638</td>\n      <td>404.0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>159</th>\n      <td>12192</td>\n      <td>47364</td>\n      <td>161.0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":22},{"cell_type":"code","source":"patient = 12192  \nseries = 45638   # has extbb = 1\ntrain_img_paths = fetch_img_paths(train_img_path,str(patient),str(series))\nimg_paths = train_img_paths[0] \nseries_frames, series_keys, series_z = process_paths(img_paths, size=512, )","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.084431Z","iopub.execute_input":"2024-11-27T15:32:10.084706Z","iopub.status.idle":"2024-11-27T15:32:10.141181Z","shell.execute_reply.started":"2024-11-27T15:32:10.084682Z","shell.execute_reply":"2024-11-27T15:32:10.13905Z"}},"outputs":[{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)","Cell \u001b[0;32mIn[23], line 5\u001b[0m\n\u001b[1;32m      3\u001b[0m train_img_paths \u001b[38;5;241m=\u001b[39m fetch_img_paths(train_img_path,\u001b[38;5;28mstr\u001b[39m(patient),\u001b[38;5;28mstr\u001b[39m(series))\n\u001b[1;32m      4\u001b[0m img_paths \u001b[38;5;241m=\u001b[39m train_img_paths[\u001b[38;5;241m0\u001b[39m] \n\u001b[0;32m----> 5\u001b[0m series_frames, series_keys, series_z \u001b[38;5;241m=\u001b[39m \u001b[43mprocess_paths\u001b[49m(img_paths, size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m512\u001b[39m, )\n","\u001b[0;31mNameError\u001b[0m: name 'process_paths' is not defined"],"ename":"NameError","evalue":"name 'process_paths' is not defined","output_type":"error"}],"execution_count":23},{"cell_type":"code","source":"len(series_keys), series_keys[:5]   # series keys has the .dcm entries   check if order is descending/ascending","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.141723Z","iopub.status.idle":"2024-11-27T15:32:10.142003Z","shell.execute_reply.started":"2024-11-27T15:32:10.141865Z","shell.execute_reply":"2024-11-27T15:32:10.141879Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_extravbb_series[df_extravbb_series.series_id==45638]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.143185Z","iopub.status.idle":"2024-11-27T15:32:10.14358Z","shell.execute_reply.started":"2024-11-27T15:32:10.143379Z","shell.execute_reply":"2024-11-27T15:32:10.143398Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"b_startdcm = '510.dcm' \nb_enddcm = '506.dcm'\nkeystart = np.where(np.array(series_keys)==b_startdcm)[0][0]\nkeyend = np.where(np.array(series_keys)==b_enddcm)[0][0]\nkeystart, keyend","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.145154Z","iopub.status.idle":"2024-11-27T15:32:10.145557Z","shell.execute_reply.started":"2024-11-27T15:32:10.145348Z","shell.execute_reply":"2024-11-27T15:32:10.145375Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df_trn_meta[df_trn_meta.patient_id==12192]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.146387Z","iopub.status.idle":"2024-11-27T15:32:10.146823Z","shell.execute_reply.started":"2024-11-27T15:32:10.14658Z","shell.execute_reply":"2024-11-27T15:32:10.1466Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"patient2 = 12192   \nseries2 = 47364  # has extbb = 0\ntrain_img_paths2 = fetch_img_paths(train_img_path,str(patient2),str(series2))\nimg_paths2 = train_img_paths2[0] \nseries_frames2, series_keys2, series_z2 = process_paths(img_paths2, size=512, )  # ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.14805Z","iopub.status.idle":"2024-11-27T15:32:10.14845Z","shell.execute_reply.started":"2024-11-27T15:32:10.148243Z","shell.execute_reply":"2024-11-27T15:32:10.148264Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"len(series_keys2), series_keys2[:5]   # series keys has the .dcm entries   check if order is descending/ascending","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.152816Z","iopub.status.idle":"2024-11-27T15:32:10.153384Z","shell.execute_reply.started":"2024-11-27T15:32:10.153168Z","shell.execute_reply":"2024-11-27T15:32:10.15319Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"b_startdcm2 = '510.dcm'\nb_enddcm2 = '506.dcm'\nkeystart2 = np.where(np.array(series_keys2)==b_startdcm2)[0][0]\nkeyend2 = np.where(np.array(series_keys2)==b_enddcm2)[0][0]\nkeystart2, keyend2","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.154486Z","iopub.status.idle":"2024-11-27T15:32:10.154886Z","shell.execute_reply.started":"2024-11-27T15:32:10.154661Z","shell.execute_reply":"2024-11-27T15:32:10.154688Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"series_keys2[keystart2: keyend2+1]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.155961Z","iopub.status.idle":"2024-11-27T15:32:10.156266Z","shell.execute_reply.started":"2024-11-27T15:32:10.15612Z","shell.execute_reply":"2024-11-27T15:32:10.156135Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"(df_extravbb[df_extravbb.pid==12192])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.157859Z","iopub.status.idle":"2024-11-27T15:32:10.158149Z","shell.execute_reply.started":"2024-11-27T15:32:10.158012Z","shell.execute_reply":"2024-11-27T15:32:10.158027Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"bbox_color = (0,255,255)  # for Active Extravasation \nbbox_thick = 4\n# set these manually but could get from df_extravbb and keystart and keyend\nc1,c2 = (265,191), (328,249)    \ncv2.rectangle(series_frames[154], c1, c2, bbox_color, bbox_thick)  # 510.dcm\nc1,c2 = (265,190), (327,247)    \ncv2.rectangle(series_frames[155], c1, c2, bbox_color, bbox_thick)  # 509.dcm\nc1,c2 = (269,189), (328,249)    \ncv2.rectangle(series_frames[156], c1, c2, bbox_color, bbox_thick)  # 508.dcm\nc1,c2 = (268,185), (328,248)    \ncv2.rectangle(series_frames[157], c1, c2, bbox_color, bbox_thick)  # 507.dcm\nc1,c2 = (263,183), (324,248)    \ncv2.rectangle(series_frames[158], c1, c2, bbox_color, bbox_thick)  # 506.dcm\nprint('Done!')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.159413Z","iopub.status.idle":"2024-11-27T15:32:10.159741Z","shell.execute_reply.started":"2024-11-27T15:32:10.159568Z","shell.execute_reply":"2024-11-27T15:32:10.159588Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"bbox_color = (255,255,0)  # for NO Active  Extravasation\nbbox_thick = 4\n# set these manually but could get from df_extravbb and keystart2 and keyend2\nc1,c2 = (265,191), (328,249)    \ncv2.rectangle(series_frames2[154], c1, c2, bbox_color, bbox_thick)  # 510.dcm\nc1,c2 = (265,190), (327,247)   \ncv2.rectangle(series_frames2[155], c1, c2, bbox_color, bbox_thick)  # 509.dcm\nc1,c2 = (269,189), (328,249)    \ncv2.rectangle(series_frames2[156], c1, c2, bbox_color, bbox_thick)  # 508.dcm\nc1,c2 = (268,185), (328,248)    \ncv2.rectangle(series_frames2[157], c1, c2, bbox_color, bbox_thick)  # 507.dcm\nc1,c2 = (263,183), (324,248)    \ncv2.rectangle(series_frames2[158], c1, c2, bbox_color, bbox_thick)  # 506.dcm\nprint('Done!')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.161101Z","iopub.status.idle":"2024-11-27T15:32:10.161399Z","shell.execute_reply.started":"2024-11-27T15:32:10.161255Z","shell.execute_reply":"2024-11-27T15:32:10.161275Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"clip4e = np.stack(series_frames[keystart:keyend+1], axis=0)\n\npatient = 12192  \nseries = 45638\ntitle = f'{patient}_{series}_Active_Extravasation'\nmedia.show_video(clip4e,title=title, fps=1) # to show  fps 2 ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.162213Z","iopub.status.idle":"2024-11-27T15:32:10.162513Z","shell.execute_reply.started":"2024-11-27T15:32:10.162375Z","shell.execute_reply":"2024-11-27T15:32:10.16239Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"clip4noe = np.stack(series_frames2[keystart2:keyend2+1], axis=0)\n\npatient2 = 12192  \nseries2 = 47364 \ntitle2 = f'{patient2}_{series2}_NO_Active_Etravasxation'\nmedia.show_video(clip4noe,title=title2, fps=1) ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.163373Z","iopub.status.idle":"2024-11-27T15:32:10.163695Z","shell.execute_reply.started":"2024-11-27T15:32:10.163522Z","shell.execute_reply":"2024-11-27T15:32:10.163537Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"media.compare_images([series_frames[keystart], series_frames2[keystart2]])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.164594Z","iopub.status.idle":"2024-11-27T15:32:10.164917Z","shell.execute_reply.started":"2024-11-27T15:32:10.164776Z","shell.execute_reply":"2024-11-27T15:32:10.164791Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"media.compare_images([series_frames[keystart+3], series_frames2[keystart2+3]])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.166272Z","iopub.status.idle":"2024-11-27T15:32:10.166559Z","shell.execute_reply.started":"2024-11-27T15:32:10.16642Z","shell.execute_reply":"2024-11-27T15:32:10.166435Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"paths  = train_data.image_path.tolist()\nlabels = train_data[config.TARGET_COLS].values\n\nclass CustomDataset(Dataset):\n    def __init__(self, paths, labels, transform=None):\n        self.paths = paths\n        self.labels = labels\n        self.transform = transform\n\n    def __len__(self):\n        return len(self.paths)\n\n    def __getitem__(self, idx):\n        image = Image.open(self.paths[idx]).convert('RGB')\n        label = torch.tensor(self.labels[idx], dtype=torch.float32)\n\n        if self.transform:\n            image = self.transform(image)\n\n        return image, label\n\n# Define any image transformations you want to apply, here we also add augmentation. \ntransform = transforms.Compose([\n    transforms.Resize((256, 256)),\n    transforms.RandomResizedCrop(256),   # Random crop and resize\n    transforms.RandomHorizontalFlip(),    # Random horizontal flip\n    transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1),  # Color jitter\n    transforms.ToTensor(),\n    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),\n])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.167576Z","iopub.status.idle":"2024-11-27T15:32:10.167903Z","shell.execute_reply.started":"2024-11-27T15:32:10.167756Z","shell.execute_reply":"2024-11-27T15:32:10.167771Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# get image_paths and labels\nprint(\"[INFO] Building the dataset...\")\n\ntrain_paths  = train_data.image_path.tolist()\ntrain_labels = train_data[config.TARGET_COLS].values\n\nval_paths  = val_data.image_path.tolist()\nval_labels = val_data[config.TARGET_COLS].values\n\n\n#torch dataset\nbatch_size = 32\n\n# Create the datasets\n\ndataset_train = CustomDataset(train_paths, train_labels, transform=transform)\ntrain_dataloader = DataLoader(dataset_train, batch_size=batch_size, shuffle=True)\n\n\ndataset_val = CustomDataset(val_paths, val_labels, transform=transform)\nval_dataloader = DataLoader(dataset_val, batch_size=batch_size, shuffle=True)\n\n\n# Define your dataset size and other configuration parameters\ndataset_size = len(dataset_train)  # Assuming you have defined 'dataset' earlier\nbatch_size = 32  # Your batch size\ntotal_epochs = 50  # Total number of epochs\n\n# Calculate total train steps\ntotal_train_steps = dataset_size * batch_size * total_epochs\n\n# Define warmup steps as 10% of total train steps\nwarmup_steps = int(total_train_steps * 0.10)\n\n# Define decay steps as the remaining steps after warmup\ndecay_steps = total_train_steps - warmup_steps\n\nprint(f\"Total Train Steps: {total_train_steps}\")\nprint(f\"Warmup Steps: {warmup_steps}\")\nprint(f\"Decay Steps: {decay_steps}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.169267Z","iopub.status.idle":"2024-11-27T15:32:10.169562Z","shell.execute_reply.started":"2024-11-27T15:32:10.169418Z","shell.execute_reply":"2024-11-27T15:32:10.169433Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Loading Data","metadata":{}},{"cell_type":"code","source":"for img, label in train_dataloader:\n  print(img.shape)\n  break","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.171133Z","iopub.status.idle":"2024-11-27T15:32:10.171471Z","shell.execute_reply.started":"2024-11-27T15:32:10.171299Z","shell.execute_reply":"2024-11-27T15:32:10.171323Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import torch\nimport torch.nn as nn\n\nclass ChannelAttention(nn.Module):\n    def __init__(self, channel):\n        super(ChannelAttention, self).__init__()\n        self.fc1 = nn.Linear(channel, channel // 16)\n        self.fc2 = nn.Linear(channel // 16, channel)\n\n    def forward(self, x):\n        # Kích thước đầu vào: (batch_size, channels, height, width)\n        avg_pool = x.mean(dim=(2, 3))  # Kích thước: (batch_size, channels)\n        max_pool = x.max(dim=2)[0].max(dim=2)[0]  # Kích thước: (batch_size, channels)\n        \n        # Kích thước: (batch_size, channels) \n        channel_attention = torch.sigmoid(self.fc2(torch.relu(self.fc1(avg_pool))) + self.fc2(torch.relu(self.fc1(max_pool))))\n        \n        return x * channel_attention.view(x.size(0), -1, 1, 1)\n\nclass SpatialAttention(nn.Module):\n    def __init__(self):\n        super(SpatialAttention, self).__init__()\n        self.conv = nn.Conv2d(2, 1, kernel_size=7, padding=3)\n\n    def forward(self, x):\n        avg_pool = x.mean(dim=1, keepdim=True)\n        max_pool = x.max(dim=1, keepdim=True)[0]\n        spatial_attention = torch.cat([avg_pool, max_pool], dim=1)\n        spatial_attention = torch.sigmoid(self.conv(spatial_attention))\n        return x * spatial_attention\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.172597Z","iopub.status.idle":"2024-11-27T15:32:10.172924Z","shell.execute_reply.started":"2024-11-27T15:32:10.172777Z","shell.execute_reply":"2024-11-27T15:32:10.172792Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"class SimpleCNN(nn.Module):\n    def __init__(self, num_classes=11):\n        super(SimpleCNN, self).__init__()\n\n        # Khối tích chập 1\n        self.conv1 = nn.Sequential(\n            nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, stride=1, padding=1),  # 3 kênh cho ảnh RGB\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=2, stride=2),\n        )\n\n        # Channel Attention và Spatial Attention cho khối 1\n        self.channel_attention1 = ChannelAttention(32)\n        self.spatial_attention1 = SpatialAttention()\n\n        # Khối tích chập 2\n        self.conv2 = nn.Sequential(\n            nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, stride=1, padding=1),  \n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=2, stride=2),\n        )\n        self.channel_attention2 = ChannelAttention(64)\n        self.spatial_attention2 = SpatialAttention()\n\n        # Khối tích chập 3\n        self.conv3 = nn.Sequential(\n            nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, stride=1, padding=1),  \n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=2, stride=2),\n        )\n        self.channel_attention3 = ChannelAttention(128)\n        self.spatial_attention3 = SpatialAttention()\n\n        # Tính toán kích thước sau các lớp tích chập\n        dummy_input = torch.randn(1, 3, 256, 256)  # Đảm bảo đầu vào giả có 3 kênh\n        conv_output = self.conv3(self.conv2(self.conv1(dummy_input)))  # Qua ba khối tích chập\n        flattened_size = conv_output.view(1, -1).size(1)  # Kích thước sau khi flatten\n\n        # Fully connected layers\n        self.fc_layers = nn.Sequential(\n            nn.Linear(flattened_size, 128),  # Kích thước đầu vào là flattened_size\n            nn.ReLU(),\n            nn.Linear(128, num_classes)\n        )\n\n    def forward(self, x):\n        # Conv1 + Attention\n        x = self.conv1(x)\n        x = self.channel_attention1(x)\n        x = self.spatial_attention1(x)\n\n        # Conv2 + Attention\n        x = self.conv2(x)\n        x = self.channel_attention2(x)\n        x = self.spatial_attention2(x)\n\n        # Conv3 + Attention\n        x = self.conv3(x)\n        x = self.channel_attention3(x)\n        x = self.spatial_attention3(x)\n\n        # Flatten and fully connected\n        x = x.view(x.size(0), -1)  # Flatten\n        x = self.fc_layers(x)  # Fully connected\n        return x","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.206203Z","iopub.execute_input":"2024-11-27T15:32:10.206542Z","iopub.status.idle":"2024-11-27T15:32:10.220453Z","shell.execute_reply.started":"2024-11-27T15:32:10.206504Z","shell.execute_reply":"2024-11-27T15:32:10.21972Z"}},"outputs":[],"execution_count":24},{"cell_type":"code","source":"from sklearn.model_selection import KFold\n# Số lượng folds\nK = 4 \n\n# Khởi tạo K-Fold splitter\nkf = KFold(n_splits=K, shuffle=True, random_state=config.SEED)\n\n# Chuẩn bị dữ liệu\nX = dataframe.image_path.values\ny = dataframe[config.TARGET_COLS].values\n\n# Khởi tạo danh sách để lưu trữ các chỉ số và metric của từng fold\nfold_train_losses = []\nfold_val_losses = []\nfold_val_accuracies = []\nfold_val_f1_scores = []","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.222449Z","iopub.execute_input":"2024-11-27T15:32:10.222804Z","iopub.status.idle":"2024-11-27T15:32:10.235043Z","shell.execute_reply.started":"2024-11-27T15:32:10.222768Z","shell.execute_reply":"2024-11-27T15:32:10.233892Z"}},"outputs":[],"execution_count":25},{"cell_type":"code","source":"# Chia dữ liệu cho từng fold\nfor fold, (train_idx, val_idx) in enumerate(kf.split(X)):\n    X_train, X_val = X[train_idx], X[val_idx]\n    y_train, y_val = y[train_idx], y[val_idx]\n\n    # Tạo dataset và dataloader cho fold hiện tại\n    train_dataset = CustomDataset(paths=X_train, labels=y_train, transform=transform)\n    val_dataset = CustomDataset(paths=X_val, labels=y_val, transform=transform)\n\n    train_dataloader = DataLoader(train_dataset, batch_size=16, shuffle=True, num_workers=4, pin_memory=True)\n    val_dataloader = DataLoader(val_dataset, batch_size=16, shuffle=False, num_workers=4, pin_memory=True)\n\n    # Huấn luyện và đánh giá cho fold hiện tại\n    for epoch in range(config.EPOCHS):\n        # Vòng lặp huấn luyện và validation tương tự như trước\n        ...\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.236268Z","iopub.execute_input":"2024-11-27T15:32:10.236584Z","iopub.status.idle":"2024-11-27T15:32:10.270922Z","shell.execute_reply.started":"2024-11-27T15:32:10.236558Z","shell.execute_reply":"2024-11-27T15:32:10.269439Z"}},"outputs":[{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)","Cell \u001b[0;32mIn[26], line 7\u001b[0m\n\u001b[1;32m      4\u001b[0m y_train, y_val \u001b[38;5;241m=\u001b[39m y[train_idx], y[val_idx]\n\u001b[1;32m      6\u001b[0m \u001b[38;5;66;03m# Tạo dataset và dataloader cho fold hiện tại\u001b[39;00m\n\u001b[0;32m----> 7\u001b[0m train_dataset \u001b[38;5;241m=\u001b[39m \u001b[43mCustomDataset\u001b[49m(paths\u001b[38;5;241m=\u001b[39mX_train, labels\u001b[38;5;241m=\u001b[39my_train, transform\u001b[38;5;241m=\u001b[39mtransform)\n\u001b[1;32m      8\u001b[0m val_dataset \u001b[38;5;241m=\u001b[39m CustomDataset(paths\u001b[38;5;241m=\u001b[39mX_val, labels\u001b[38;5;241m=\u001b[39my_val, transform\u001b[38;5;241m=\u001b[39mtransform)\n\u001b[1;32m     10\u001b[0m train_dataloader \u001b[38;5;241m=\u001b[39m DataLoader(train_dataset, batch_size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m16\u001b[39m, shuffle\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, num_workers\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m, pin_memory\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n","\u001b[0;31mNameError\u001b[0m: name 'CustomDataset' is not defined"],"ename":"NameError","evalue":"name 'CustomDataset' is not defined","output_type":"error"}],"execution_count":26},{"cell_type":"code","source":"# Kiểm tra nếu có GPU thì sử dụng, nếu không sẽ sử dụng CPU\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nprint(f\"Using device: {device}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.271626Z","iopub.status.idle":"2024-11-27T15:32:10.271932Z","shell.execute_reply.started":"2024-11-27T15:32:10.271791Z","shell.execute_reply":"2024-11-27T15:32:10.271806Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model = SimpleCNN(num_classes=len(config.TARGET_COLS)).to(device)\ncriterion = nn.BCEWithLogitsLoss()\noptimizer = torch.optim.Adam(model.parameters(), lr=1e-3)\nscheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=config.EPOCHS)\nscaler = torch.amp.GradScaler(\"cuda\")  # Sử dụng cho mixed precision","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.273212Z","iopub.status.idle":"2024-11-27T15:32:10.273496Z","shell.execute_reply.started":"2024-11-27T15:32:10.273358Z","shell.execute_reply":"2024-11-27T15:32:10.273374Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"accumulation_steps = 4  # ví dụ: cập nhật sau mỗi 4 batch\nfor i, (images, labels) in enumerate(train_dataloader):\n    images, labels = images.to(device), labels.to(device)\n    with torch.amp.autocast(device_type=device.type):\n        outputs = model(images)\n        loss = criterion(outputs, labels) / accumulation_steps\n    scaler.scale(loss).backward()\n\n    if (i + 1) % accumulation_steps == 0:\n        scaler.step(optimizer)\n        scaler.update()\n        optimizer.zero_grad()  # reset lại gradient","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.275043Z","iopub.status.idle":"2024-11-27T15:32:10.275557Z","shell.execute_reply.started":"2024-11-27T15:32:10.275326Z","shell.execute_reply":"2024-11-27T15:32:10.275349Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import torch.utils.checkpoint as checkpoint\n\ndef forward(self, x):\n    x = checkpoint.checkpoint(self.conv_layers, x)\n    x = x.view(x.size(0), -1)\n    x = checkpoint.checkpoint(self.fc_layers, x)\n    return x\nif (epoch + 1) % 10 == 0:  # Lưu sau mỗi 10 epoch\n    torch.save(model.state_dict(), f\"model_checkpoint_epoch_{epoch+1}.pth\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.276908Z","iopub.status.idle":"2024-11-27T15:32:10.277325Z","shell.execute_reply.started":"2024-11-27T15:32:10.277109Z","shell.execute_reply":"2024-11-27T15:32:10.277131Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.metrics import f1_score, confusion_matrix, accuracy_score\n\n# Tạo danh sách để lưu độ chính xác cho từng bộ phận qua các epoch\naccuracies_bowel = []\naccuracies_extravasation = []\naccuracies_liver = []\naccuracies_kidney = []\naccuracies_spleen = []\n\n# Vòng lặp huấn luyện cho mỗi epoch\nfor epoch in range(config.EPOCHS):\n    model.train()\n    running_loss = 0.0\n    optimizer.zero_grad()\n\n    # Training loop\n    for i, (images, labels) in enumerate(train_dataloader):\n        images, labels = images.to(device), labels.to(device)\n        \n        with torch.amp.autocast(device_type=device.type):\n            outputs = model(images)\n            loss = criterion(outputs, labels) / accumulation_steps\n        \n        scaler.scale(loss).backward()\n        \n        if (i + 1) % accumulation_steps == 0:\n            scaler.step(optimizer)\n            scaler.update()\n            optimizer.zero_grad()\n\n        running_loss += loss.item() * images.size(0)\n\n    # Lưu lại train loss\n    epoch_train_loss = running_loss / len(train_dataloader.dataset)\n    fold_train_losses.append(epoch_train_loss)\n\n    # Cập nhật learning rate\n    scheduler.step()\n\n    # Validation loop\n    model.eval()\n    val_loss, correct, total = 0.0, 0, 0\n    all_preds, all_targets = [], []\n\n    accuracies_per_organ = {\"Bowel\": 0, \"Extravasation\": 0, \"Liver\": 0, \"Kidney\": 0, \"Spleen\": 0}\n\n    with torch.no_grad():\n        for images, labels in val_dataloader:\n            images, labels = images.to(device), labels.to(device)\n\n            with torch.amp.autocast(device_type=device.type):\n                outputs = model(images)\n                loss = criterion(outputs, labels)\n\n            val_loss += loss.item() * images.size(0)\n\n            preds = torch.sigmoid(outputs) > 0.5\n            correct += (preds.int() == labels.int()).sum().item()\n            total += labels.numel()\n\n            all_preds.append(preds.cpu().numpy())\n            all_targets.append(labels.cpu().numpy())\n\n            # Tính accuracy cho từng bộ phận (organ) trong mỗi batch\n            for class_idx, organ in enumerate([\"Bowel\", \"Extravasation\", \"Liver\", \"Kidney\", \"Spleen\"]):\n                organ_preds = preds[:, class_idx].cpu().numpy()\n                organ_labels = labels[:, class_idx].cpu().numpy()\n                organ_accuracy = accuracy_score(organ_labels, organ_preds)\n                accuracies_per_organ[organ] += organ_accuracy * 100 / len(val_dataloader)\n\n    # Lưu lại validation loss và accuracy\n    epoch_val_loss = val_loss / len(val_dataloader.dataset)\n    fold_val_losses.append(epoch_val_loss)\n\n    epoch_val_accuracy = 100.0 * correct / total\n    fold_val_accuracies.append(epoch_val_accuracy)\n\n    # Lưu lại độ chính xác của từng bộ phận vào danh sách\n    accuracies_bowel.append(accuracies_per_organ[\"Bowel\"])\n    accuracies_extravasation.append(accuracies_per_organ[\"Extravasation\"])\n    accuracies_liver.append(accuracies_per_organ[\"Liver\"])\n    accuracies_kidney.append(accuracies_per_organ[\"Kidney\"])\n    accuracies_spleen.append(accuracies_per_organ[\"Spleen\"])\n\n    # Tính F1 score\n    all_preds_np = np.vstack(all_preds)\n    all_targets_np = np.vstack(all_targets)\n    epoch_f1 = f1_score(all_targets_np, all_preds_np, average='macro')\n    fold_val_f1_scores.append(epoch_f1)\n\n    # Tính các chỉ số khác: độ nhạy (sensitivity), độ đặc hiệu (specificity) và Precision cho từng nhãn\n    sensitivity_per_class = []\n    specificity_per_class = []\n    precision_per_class = []\n\n    for class_idx in range(all_targets_np.shape[1]):\n        tn, fp, fn, tp = confusion_matrix(all_targets_np[:, class_idx], all_preds_np[:, class_idx]).ravel()\n\n        sensitivity = tp / (tp + fn) if (tp + fn) > 0 else 0\n        specificity = tn / (tn + fp) if (tn + fp) > 0 else 0\n        precision = tp / (tp + fp) if (tp + fp) > 0 else 0\n\n        sensitivity_per_class.append(sensitivity * 100)\n        specificity_per_class.append(specificity * 100)\n        precision_per_class.append(precision * 100)\n\n    # In các chỉ số sau mỗi epoch\n    print(f\"Epoch [{epoch + 1}/{config.EPOCHS}] - Train Loss: {epoch_train_loss:.4f} - Val Loss: {epoch_val_loss:.4f} - Val Acc: {epoch_val_accuracy:.2f}% - Val F1: {epoch_f1:.4f}\")\n    \n    for class_idx, organ in enumerate([\"Bowel\", \"Extravasation\", \"Liver\", \"Kidney\", \"Spleen\"]):\n        print(f\"{organ} - Sensitivity: {sensitivity_per_class[class_idx]:.2f}%, Specificity: {specificity_per_class[class_idx]:.2f}%, Precision: {precision_per_class[class_idx]:.2f}%\")\n\n    \n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.280407Z","iopub.status.idle":"2024-11-27T15:32:10.281062Z","shell.execute_reply.started":"2024-11-27T15:32:10.280837Z","shell.execute_reply":"2024-11-27T15:32:10.28086Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Calculate and print average metrics\navg_sensitivity = np.mean(sensitivity_per_class)\navg_specificity = np.mean(specificity_per_class)\navg_precision = np.mean(precision_per_class)  # Tính trung bình Precision\navg_accuracy = epoch_val_accuracy  # Average accuracy for this epoch\navg_f1 = epoch_f1  # Macro F1 score for this epoch\n\n# Print average values\nprint(f\"Average Sensitivity: {avg_sensitivity:.2f}%\")\nprint(f\"Average Specificity: {avg_specificity:.2f}%\")\nprint(f\"Average Precision: {avg_precision:.2f}%\")  # In Precision\nprint(f\"Average Accuracy: {avg_accuracy:.2f}%\")\nprint(f\"Average F1 Score (Macro): {avg_f1:.2f}%\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.281771Z","iopub.status.idle":"2024-11-27T15:32:10.282127Z","shell.execute_reply.started":"2024-11-27T15:32:10.281941Z","shell.execute_reply":"2024-11-27T15:32:10.281959Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# In ra độ chính xác (accuracy) cho từng bộ phận sau mỗi epoch\nfor organ, accuracy in accuracies_per_organ.items():\n    print(f\"{organ} Accuracy: {accuracy:.2f}%\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.282818Z","iopub.status.idle":"2024-11-27T15:32:10.283169Z","shell.execute_reply.started":"2024-11-27T15:32:10.282983Z","shell.execute_reply":"2024-11-27T15:32:10.283002Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np\n\n# Set the model to evaluation mode\nmodel.eval()\n\n# Select a random image from the validation dataset\nrandom_index = np.random.randint(len(dataset_val))\nimage, label = dataset_val[random_index]\n\n# Move the image to the GPU if available\nimage = image.to('cuda')\n\n# Pass the image through the model\nwith torch.no_grad():\n    output = model(image.unsqueeze(0))  # Unsqueeze to add batch dimension\n\n# Convert the output logits to probabilities using sigmoid function\npredicted_probs = torch.sigmoid(output)[0]\n\n# Convert predicted probabilities to binary predictions\npredicted_labels = (predicted_probs > 0.5).int()\n\n\n# Display the image, actual labels, and predicted labels\nplt.imshow(image.permute(1, 2, 0).cpu())  # Move image to CPU and change channel order\n#plt.title(f\"Actual Labels: {label}\\nPredicted Labels: {predicted_labels}\")\nplt.title(f\"Actual Labels: {label}\\nPredicted Labels: {predicted_labels}\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.284118Z","iopub.status.idle":"2024-11-27T15:32:10.284477Z","shell.execute_reply.started":"2024-11-27T15:32:10.284272Z","shell.execute_reply":"2024-11-27T15:32:10.284287Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nfrom sklearn.metrics import confusion_matrix\nimport seaborn as sns\nimport numpy as np\n\n# Convert targets and predictions to numpy arrays\nall_preds_np = np.vstack(all_preds)\nall_targets_np = np.vstack(all_targets)\n\n# Các bộ phận cần tính ma trận nhầm lẫn\norgans = [\"Bowel\", \"Extravasation\", \"Liver\", \"Kidney\", \"Spleen\"]\n\n# Lặp qua từng bộ phận và tính toán ma trận nhầm lẫn\nfor i, organ in enumerate(organs):\n    # Tạo ma trận nhầm lẫn cho từng bộ phận (sử dụng lớp tương ứng)\n    conf_matrix = confusion_matrix(all_targets_np[:, i], all_preds_np[:, i])\n    \n    # Hiển thị ma trận nhầm lẫn dưới dạng heatmap\n    plt.figure(figsize=(8, 6))\n    sns.heatmap(conf_matrix, annot=True, fmt=\"d\", cmap=\"Blues\", xticklabels=[\"Healthy\", \"Injury\"], yticklabels=[\"Healthy\", \"Injury\"])\n    plt.title(f'{organ} Confusion Matrix', fontsize=16)\n    plt.xlabel('Predicted', fontsize=12)\n    plt.ylabel('True', fontsize=12)\n    plt.show()\n\n    # In ra ma trận nhầm lẫn cho từng bộ phận\n    print(f\"{organ} Confusion Matrix:\")\n    print(conf_matrix)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.285377Z","iopub.status.idle":"2024-11-27T15:32:10.285873Z","shell.execute_reply.started":"2024-11-27T15:32:10.285586Z","shell.execute_reply":"2024-11-27T15:32:10.285613Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\n# Vẽ đồ thị cho độ chính xác của validation qua các epoch\nplt.figure(figsize=(14, 6))\n\n# Độ chính xác validation\nplt.subplot(2, 2, 1)\nplt.plot(range(1, config.EPOCHS + 1), fold_val_accuracies, label=\"Val Accuracy\", color=\"blue\", linewidth=2)\nplt.title(\"Validation Accuracy Over Epochs\")\nplt.xlabel(\"Epochs\")\nplt.ylabel(\"Accuracy (%)\")\nplt.grid(True)\n\n# F1 Score\nplt.subplot(2, 2, 2)\nplt.plot(range(1, config.EPOCHS + 1), fold_val_f1_scores, label=\"Val F1 Score\", color=\"green\", linewidth=2)\nplt.title(\"Validation F1 Score Over Epochs\")\nplt.xlabel(\"Epochs\")\nplt.ylabel(\"F1 Score\")\nplt.grid(True)\n\n# Sensitivity (Average over all classes)\navg_sensitivity = [np.mean(sensitivity_per_class[:epoch+1]) for epoch in range(config.EPOCHS)]\nplt.subplot(2, 2, 3)\nplt.plot(range(1, config.EPOCHS + 1), avg_sensitivity, label=\"Avg Sensitivity\", color=\"red\", linewidth=2)\nplt.title(\"Average Sensitivity Over Epochs\")\nplt.xlabel(\"Epochs\")\nplt.ylabel(\"Sensitivity (%)\")\nplt.grid(True)\n\n# Specificity (Average over all classes)\navg_specificity = [np.mean(specificity_per_class[:epoch+1]) for epoch in range(config.EPOCHS)]\nplt.subplot(2, 2, 4)\nplt.plot(range(1, config.EPOCHS + 1), avg_specificity, label=\"Avg Specificity\", color=\"purple\", linewidth=2)\nplt.title(\"Average Specificity Over Epochs\")\nplt.xlabel(\"Epochs\")\nplt.ylabel(\"Specificity (%)\")\nplt.grid(True)\n\n# Hiển thị tất cả các đồ thị\nplt.tight_layout()\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.288938Z","iopub.status.idle":"2024-11-27T15:32:10.289443Z","shell.execute_reply.started":"2024-11-27T15:32:10.289225Z","shell.execute_reply":"2024-11-27T15:32:10.289246Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\n# Vẽ đồ thị độ chính xác cho từng bộ phận\nplt.figure(figsize=(14, 10))\n\nplt.plot(range(1, config.EPOCHS + 1), accuracies_bowel, label='Bowel Accuracy', color='blue', linewidth=2)\nplt.plot(range(1, config.EPOCHS + 1), accuracies_extravasation, label='Extravasation Accuracy', color='red', linewidth=2)\nplt.plot(range(1, config.EPOCHS + 1), accuracies_liver, label='Liver Accuracy', color='green', linewidth=2)\nplt.plot(range(1, config.EPOCHS + 1), accuracies_kidney, label='Kidney Accuracy', color='purple', linewidth=2)\nplt.plot(range(1, config.EPOCHS + 1), accuracies_spleen, label='Spleen Accuracy', color='orange', linewidth=2)\n\nplt.title('Accuracy for Each Organ Over Epochs', fontsize=16)\nplt.xlabel('Epochs', fontsize=12)\nplt.ylabel('Accuracy (%)', fontsize=12)\nplt.grid(True)\nplt.legend()\n\nplt.tight_layout()\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.290584Z","iopub.status.idle":"2024-11-27T15:32:10.290935Z","shell.execute_reply.started":"2024-11-27T15:32:10.290772Z","shell.execute_reply":"2024-11-27T15:32:10.290792Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\n# Đảm bảo rằng bạn đã tính toán và lưu trữ giá trị loss qua các epoch\nepochs = range(1, config.EPOCHS + 1)\n\n# Vẽ đồ thị cho Train Loss và Validation Loss\nplt.figure(figsize=(10, 6))\n\n# Vẽ Train Loss\nplt.plot(epochs, fold_train_losses, label='Train Loss', color='blue', linestyle='-', marker='o')\n\n# Vẽ Validation Loss\nplt.plot(epochs, fold_val_losses, label='Validation Loss', color='red', linestyle='-', marker='x')\n\n# Thêm tiêu đề và nhãn cho các trục\nplt.title('Train Loss and Validation Loss over Epochs', fontsize=16)\nplt.xlabel('Epochs', fontsize=12)\nplt.ylabel('Loss', fontsize=12)\n\n# Thêm lưới cho dễ nhìn\nplt.grid(True)\n\n# Hiển thị chú thích để phân biệt giữa Train Loss và Validation Loss\nplt.legend()\n\n# Hiển thị đồ thị\nplt.tight_layout()\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.292396Z","iopub.status.idle":"2024-11-27T15:32:10.292843Z","shell.execute_reply.started":"2024-11-27T15:32:10.292557Z","shell.execute_reply":"2024-11-27T15:32:10.292584Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport seaborn as sns\n\n# Tạo dữ liệu từ các danh sách lưu trữ độ chính xác của từng bộ phận\naccuracies_data = [\n    accuracies_bowel,\n    accuracies_extravasation,\n    accuracies_liver,\n    accuracies_kidney,\n    accuracies_spleen\n]\n\n# Tạo nhãn cho mỗi bộ phận\norgan_names = ['Bowel', 'Extravasation', 'Liver', 'Kidney', 'Spleen']\n\n# Tạo đồ thị boxplot\nplt.figure(figsize=(10, 6))\nsns.boxplot(data=accuracies_data)\n\n# Thêm tiêu đề và nhãn cho trục\nplt.title('Boxplot of Accuracy for Different Organs')\nplt.ylabel('Accuracy (%)')\nplt.xticks(ticks=range(len(organ_names)), labels=organ_names)\n\n# Hiển thị đồ thị\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-27T15:32:10.294507Z","iopub.status.idle":"2024-11-27T15:32:10.294835Z","shell.execute_reply.started":"2024-11-27T15:32:10.294682Z","shell.execute_reply":"2024-11-27T15:32:10.294702Z"}},"outputs":[],"execution_count":null}]}