{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.11","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":59093,"databundleVersionId":7469972,"sourceType":"competition"}],"dockerImageVersionId":31011,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport warnings\nimport os\nimport time\nimport torch\nimport torch.nn as nn\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras import layers\nfrom tensorflow.keras.utils import to_categorical\nfrom tensorflow.keras.callbacks import ReduceLROnPlateau, EarlyStopping, TensorBoard\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import (accuracy_score, classification_report, confusion_matrix, roc_curve, auc, cohen_kappa_score)\nfrom sklearn.preprocessing import StandardScaler  \nwarnings.filterwarnings('ignore')\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-05-10T11:59:01.958581Z","iopub.execute_input":"2025-05-10T11:59:01.958831Z","iopub.status.idle":"2025-05-10T11:59:19.927246Z","shell.execute_reply.started":"2025-05-10T11:59:01.958806Z","shell.execute_reply":"2025-05-10T11:59:19.926479Z"}},"outputs":[{"name":"stderr","text":"2025-05-10 11:59:09.305582: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:477] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\nWARNING: All log messages before absl::InitializeLog() is called are written to STDERR\nE0000 00:00:1746878349.487648      31 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\nE0000 00:00:1746878349.543120      31 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n","output_type":"stream"}],"execution_count":1},{"cell_type":"code","source":"BASE_DIR = \"/kaggle/input/hms-harmful-brain-activity-classification/\"","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T11:59:19.928592Z","iopub.execute_input":"2025-05-10T11:59:19.929393Z","iopub.status.idle":"2025-05-10T11:59:19.932608Z","shell.execute_reply.started":"2025-05-10T11:59:19.929372Z","shell.execute_reply":"2025-05-10T11:59:19.931882Z"}},"outputs":[],"execution_count":2},{"cell_type":"code","source":"df= pd.read_csv(f\"{BASE_DIR}train.csv\")\ndf.head()\n\ndf_org = pd.read_csv(f\"{BASE_DIR}train.csv\")\n# Print the total number of rows in the dataset\n# print(f\"Total rows in the dataset: {len(df)}\")\n\n#Randomly select 10,000 rows for a quick training check\n# df_subset = df_org.sample(n=14286, random_state=42)\ndf_subset = df_org.sample(n=5000, random_state=42)\nprint(f\"Total rows in the dataset: {len(df_subset)}\")\n# # Display the first few rows of the sampled dataframe\ndf_subset.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T11:59:19.933296Z","iopub.execute_input":"2025-05-10T11:59:19.933505Z","iopub.status.idle":"2025-05-10T11:59:20.353886Z","shell.execute_reply.started":"2025-05-10T11:59:19.933489Z","shell.execute_reply":"2025-05-10T11:59:20.353143Z"}},"outputs":[{"name":"stdout","text":"Total rows in the dataset: 5000\n","output_type":"stream"},{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"           eeg_id  eeg_sub_id  eeg_label_offset_seconds  spectrogram_id  \\\n34848   352705021          30                     108.0       686402130   \n49129  1758542393           5                      18.0       959372535   \n12772   369158057           8                      44.0       250501602   \n92397  1840011277           1                       4.0      1872858502   \n76728  2793291056           7                      34.0      1540613004   \n\n       spectrogram_sub_id  spectrogram_label_offset_seconds    label_id  \\\n34848                  30                             108.0   393891559   \n49129                   5                              18.0  4283252794   \n12772                   8                              44.0  3818240317   \n92397                   1                               4.0  1305534833   \n76728                   7                              34.0   106820417   \n\n       patient_id expert_consensus  seizure_vote  lpd_vote  gpd_vote  \\\n34848       38549              GPD             0         2        11   \n49129       34893             GRDA             0         0         0   \n12772       65203          Seizure             3         0         0   \n92397       45528              LPD             0         3         0   \n76728       55692          Seizure             3         0         0   \n\n       lrda_vote  grda_vote  other_vote  \n34848          0          0           0  \n49129          0          3           0  \n12772          0          0           0  \n92397          0          0           2  \n76728          0          0           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>eeg_id</th>\n      <th>eeg_sub_id</th>\n      <th>eeg_label_offset_seconds</th>\n      <th>spectrogram_id</th>\n      <th>spectrogram_sub_id</th>\n      <th>spectrogram_label_offset_seconds</th>\n      <th>label_id</th>\n      <th>patient_id</th>\n      <th>expert_consensus</th>\n      <th>seizure_vote</th>\n      <th>lpd_vote</th>\n      <th>gpd_vote</th>\n      <th>lrda_vote</th>\n      <th>grda_vote</th>\n      <th>other_vote</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>34848</th>\n      <td>352705021</td>\n      <td>30</td>\n      <td>108.0</td>\n      <td>686402130</td>\n      <td>30</td>\n      <td>108.0</td>\n      <td>393891559</td>\n      <td>38549</td>\n      <td>GPD</td>\n      <td>0</td>\n      <td>2</td>\n      <td>11</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>49129</th>\n      <td>1758542393</td>\n      <td>5</td>\n      <td>18.0</td>\n      <td>959372535</td>\n      <td>5</td>\n      <td>18.0</td>\n      <td>4283252794</td>\n      <td>34893</td>\n      <td>GRDA</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>3</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>12772</th>\n      <td>369158057</td>\n      <td>8</td>\n      <td>44.0</td>\n      <td>250501602</td>\n      <td>8</td>\n      <td>44.0</td>\n      <td>3818240317</td>\n      <td>65203</td>\n      <td>Seizure</td>\n      <td>3</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>92397</th>\n      <td>1840011277</td>\n      <td>1</td>\n      <td>4.0</td>\n      <td>1872858502</td>\n      <td>1</td>\n      <td>4.0</td>\n      <td>1305534833</td>\n      <td>45528</td>\n      <td>LPD</td>\n      <td>0</td>\n      <td>3</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>76728</th>\n      <td>2793291056</td>\n      <td>7</td>\n      <td>34.0</td>\n      <td>1540613004</td>\n      <td>7</td>\n      <td>34.0</td>\n      <td>106820417</td>\n      <td>55692</td>\n      <td>Seizure</td>\n      <td>3</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"# Extract EEGid, labels, and offsets\nEEGid_label_list = df_subset[[\"eeg_id\", \"expert_consensus\", \"eeg_label_offset_seconds\"]].values.tolist()\n\nX = []\ny = []\nprev_eegId = \"\"\n\nbrain_activities = ['Seizure', 'GPD', 'LRDA', 'Other', 'GRDA', 'LPD']\nactivity_mapping = {activity: idx for idx, activity in enumerate(brain_activities)}\n\nforecast_X = []\nforecast_Y = []\n\nWINDOW = 400  # past 2s @ 200Hz\nFORECAST = 200  # next 1s @ 200Hz","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T11:59:20.354711Z","iopub.execute_input":"2025-05-10T11:59:20.354897Z","iopub.status.idle":"2025-05-10T11:59:20.365508Z","shell.execute_reply.started":"2025-05-10T11:59:20.354883Z","shell.execute_reply":"2025-05-10T11:59:20.364786Z"}},"outputs":[],"execution_count":4},{"cell_type":"code","source":"print(\"Processing EEG records...\")\nscaler = StandardScaler()\n\nfor record in EEGid_label_list:\n    eeg_id, expert_consensus, offset = record\n    \n    if eeg_id != prev_eegId:\n        #print(f\"Loading EEG data for {eeg_id}\")\n        temp_df = pd.read_parquet(f'{BASE_DIR}train_eegs/{eeg_id}.parquet', engine='pyarrow')\n        C = ['Fp1', 'T3', 'O1', 'Cz', 'Fp2', 'T4', 'O2']\n        temp_arr = temp_df[C].to_numpy().T\n        temp_arr = scaler.fit_transform(temp_arr)\n        temp_arr = np.nan_to_num(temp_arr, nan=1e-4)\n        # temp_arr = temp_arr.T\n\n    start = 200 * int(offset)\n    end_input = start + WINDOW\n    end_output = end_input + FORECAST\n\n    \n    combined = np.concatenate(\n        [temp_arr[:, start:end_input], temp_arr[:, end_input:end_output]],\n        axis=1  # concatenate along time axis\n    )  # shape = (7, 600)\n    \n    X.append(combined)  # X will contain (7, 600) segments: 2s real + 1s future\n    y.append(activity_mapping[expert_consensus])\n    # X.append(temp_arr[:, start:start + 10000])\n    # y.append(activity_mapping[expert_consensus])\n\n    forecast_X.append(temp_arr[:, start:end_input])      # shape: (7, 400)\n    forecast_Y.append(temp_arr[:, end_input:end_output]) # shape: (7, 200)\n\n    prev_eegId = eeg_id\n\n\n\nX = np.array(X)\ny = np.array(y)\nforecast_X = np.array(forecast_X)\nforecast_Y = np.array(forecast_Y)\nprint(\"Data preparation completed.\")\nprint(f\"X shape: {X.shape}\")\nprint(f\"y shape: {y.shape}\")\nprint(f\"forecast_X shape: {forecast_X.shape}\")\nprint(f\"forecast_Y shape: {forecast_Y.shape}\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T11:59:20.36717Z","iopub.execute_input":"2025-05-10T11:59:20.367351Z","iopub.status.idle":"2025-05-10T12:04:14.390599Z","shell.execute_reply.started":"2025-05-10T11:59:20.367337Z","shell.execute_reply":"2025-05-10T12:04:14.389851Z"}},"outputs":[{"name":"stdout","text":"Processing EEG records...\nData preparation completed.\nX shape: (5000, 7, 600)\ny shape: (5000,)\nforecast_X shape: (5000, 7, 400)\nforecast_Y shape: (5000, 7, 200)\n","output_type":"stream"}],"execution_count":5},{"cell_type":"code","source":"# Keras expects (batch, time, features)\nX_forecast = np.transpose(forecast_X, (0, 2, 1))  # shape: (samples, 400, 7)\nY_forecast = np.transpose(forecast_Y, (0, 2, 1))  # shape: (samples, 200, 7)\n\n# Split into train and validation sets\nX_train_f, X_val_f, Y_train_f, Y_val_f = train_test_split(X_forecast, Y_forecast, test_size=0.2, random_state=42)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T12:04:14.391508Z","iopub.execute_input":"2025-05-10T12:04:14.391821Z","iopub.status.idle":"2025-05-10T12:04:14.41568Z","shell.execute_reply.started":"2025-05-10T12:04:14.391793Z","shell.execute_reply":"2025-05-10T12:04:14.415123Z"}},"outputs":[],"execution_count":6},{"cell_type":"code","source":"print(\"Data split completed.\")\nprint(f\"X_train_f shape: {X_train_f.shape}\")\nprint(f\"X_val_f shape: {X_val_f.shape}\")\n# print(f\"X_test shape: {X_test.shape}\")\nprint(f\"Y_train_f shape: {Y_train_f.shape}\")\nprint(f\"Y_val_f shape: {Y_val_f.shape}\")\n# print(f\"y_test shape: {y_test.shape}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T12:04:14.416392Z","iopub.execute_input":"2025-05-10T12:04:14.416642Z","iopub.status.idle":"2025-05-10T12:04:14.421083Z","shell.execute_reply.started":"2025-05-10T12:04:14.416626Z","shell.execute_reply":"2025-05-10T12:04:14.420371Z"}},"outputs":[{"name":"stdout","text":"Data split completed.\nX_train_f shape: (4000, 400, 7)\nX_val_f shape: (1000, 400, 7)\nY_train_f shape: (4000, 200, 7)\nY_val_f shape: (1000, 200, 7)\n","output_type":"stream"}],"execution_count":7},{"cell_type":"code","source":"from tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import GRU, Dense, TimeDistributed, RepeatVector, Dropout\nfrom tensorflow.keras.callbacks import ReduceLROnPlateau\n\ninput_timesteps = X_train_f.shape[1]  # 400\noutput_timesteps = Y_train_f.shape[1]  # 200\nn_channels = X_train_f.shape[2]  # 7\n\nmodel_forecast = Sequential([\n    GRU(256, return_sequences=True, input_shape=(X_train_f.shape[1], X_train_f.shape[2])),\n    Dropout(0.3),\n    GRU(256, return_sequences=False),\n    Dense(256, activation='relu'),\n    Dropout(0.3),\n    RepeatVector(Y_train_f.shape[1]),\n    GRU(256, return_sequences=True),\n    Dropout(0.3),\n    TimeDistributed(Dense(Y_train_f.shape[2]))  # output: 7 channels\n])\n\nmodel_forecast.compile(optimizer='adam', loss='mae')\nmodel_forecast.summary()\n\nreduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=5, verbose=1, min_lr=1e-6)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T12:04:14.421882Z","iopub.execute_input":"2025-05-10T12:04:14.422601Z","iopub.status.idle":"2025-05-10T12:04:15.970164Z","shell.execute_reply.started":"2025-05-10T12:04:14.422576Z","shell.execute_reply":"2025-05-10T12:04:15.969667Z"}},"outputs":[{"name":"stderr","text":"I0000 00:00:1746878654.636913      31 gpu_device.cc:2022] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 15513 MB memory:  -> device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:00:04.0, compute capability: 6.0\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"\u001b[1mModel: \"sequential\"\u001b[0m\n","text/html":"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n</pre>\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                        \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape               \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m        Param #\u001b[0m\u001b[1m \u001b[0m┃\n┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n│ gru (\u001b[38;5;33mGRU\u001b[0m)                            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m400\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │         \u001b[38;5;34m203,520\u001b[0m │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ dropout (\u001b[38;5;33mDropout\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m400\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │               \u001b[38;5;34m0\u001b[0m │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ gru_1 (\u001b[38;5;33mGRU\u001b[0m)                          │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m)                 │         \u001b[38;5;34m394,752\u001b[0m │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ dense (\u001b[38;5;33mDense\u001b[0m)                        │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m)                 │          \u001b[38;5;34m65,792\u001b[0m │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ dropout_1 (\u001b[38;5;33mDropout\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m)                 │               \u001b[38;5;34m0\u001b[0m │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ repeat_vector (\u001b[38;5;33mRepeatVector\u001b[0m)         │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │               \u001b[38;5;34m0\u001b[0m │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ gru_2 (\u001b[38;5;33mGRU\u001b[0m)                          │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │         \u001b[38;5;34m394,752\u001b[0m │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ dropout_2 (\u001b[38;5;33mDropout\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │               \u001b[38;5;34m0\u001b[0m │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ time_distributed (\u001b[38;5;33mTimeDistributed\u001b[0m)   │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m7\u001b[0m)              │           \u001b[38;5;34m1,799\u001b[0m │\n└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n","text/html":"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n┃<span style=\"font-weight: bold\"> Layer (type)                         </span>┃<span style=\"font-weight: bold\"> Output Shape                </span>┃<span style=\"font-weight: bold\">         Param # </span>┃\n┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n│ gru (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">GRU</span>)                            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">400</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │         <span style=\"color: #00af00; text-decoration-color: #00af00\">203,520</span> │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ dropout (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">400</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ gru_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">GRU</span>)                          │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)                 │         <span style=\"color: #00af00; text-decoration-color: #00af00\">394,752</span> │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                        │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)                 │          <span style=\"color: #00af00; text-decoration-color: #00af00\">65,792</span> │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ dropout_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)                  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)                 │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ repeat_vector (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">RepeatVector</span>)         │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ gru_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">GRU</span>)                          │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │         <span style=\"color: #00af00; text-decoration-color: #00af00\">394,752</span> │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ dropout_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)                  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n│ time_distributed (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">TimeDistributed</span>)   │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">7</span>)              │           <span style=\"color: #00af00; text-decoration-color: #00af00\">1,799</span> │\n└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n</pre>\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m1,060,615\u001b[0m (4.05 MB)\n","text/html":"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">1,060,615</span> (4.05 MB)\n</pre>\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m1,060,615\u001b[0m (4.05 MB)\n","text/html":"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">1,060,615</span> (4.05 MB)\n</pre>\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n","text/html":"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n</pre>\n"},"metadata":{}}],"execution_count":8},{"cell_type":"code","source":"from tensorflow.keras.callbacks import EarlyStopping\n\nearly_stop_f = EarlyStopping(\n    monitor='val_loss',\n    patience=10,\n    restore_best_weights=True,\n    verbose=1\n)\n\nhistory_f = model_forecast.fit(\n    X_train_f, Y_train_f,\n    validation_data=(X_val_f, Y_val_f),\n    epochs=100,\n    batch_size=32,\n    callbacks=[early_stop_f, reduce_lr],\n    verbose=1\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T12:04:15.970838Z","iopub.execute_input":"2025-05-10T12:04:15.971085Z","iopub.status.idle":"2025-05-10T12:10:32.4911Z","shell.execute_reply.started":"2025-05-10T12:04:15.971063Z","shell.execute_reply":"2025-05-10T12:10:32.490357Z"}},"outputs":[{"name":"stdout","text":"Epoch 1/100\n","output_type":"stream"},{"name":"stderr","text":"I0000 00:00:1746878672.070729      98 cuda_dnn.cc:529] Loaded cuDNN version 90300\n","output_type":"stream"},{"name":"stdout","text":"\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m30s\u001b[0m 103ms/step - loss: 0.7288 - val_loss: 0.6962 - learning_rate: 0.0010\nEpoch 2/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.7030 - val_loss: 0.6933 - learning_rate: 0.0010\nEpoch 3/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 84ms/step - loss: 0.6976 - val_loss: 0.6895 - learning_rate: 0.0010\nEpoch 4/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.7012 - val_loss: 0.6930 - learning_rate: 0.0010\nEpoch 5/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.7013 - val_loss: 0.6860 - learning_rate: 0.0010\nEpoch 6/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 84ms/step - loss: 0.6929 - val_loss: 0.6859 - learning_rate: 0.0010\nEpoch 7/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 84ms/step - loss: 0.6884 - val_loss: 0.6671 - learning_rate: 0.0010\nEpoch 8/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6717 - val_loss: 0.6617 - learning_rate: 0.0010\nEpoch 9/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 84ms/step - loss: 0.6703 - val_loss: 0.6661 - learning_rate: 0.0010\nEpoch 10/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 84ms/step - loss: 0.6639 - val_loss: 0.6577 - learning_rate: 0.0010\nEpoch 11/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6653 - val_loss: 0.6605 - learning_rate: 0.0010\nEpoch 12/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6623 - val_loss: 0.6601 - learning_rate: 0.0010\nEpoch 13/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6599 - val_loss: 0.6585 - learning_rate: 0.0010\nEpoch 14/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6596 - val_loss: 0.6612 - learning_rate: 0.0010\nEpoch 15/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 84ms/step - loss: 0.6583 - val_loss: 0.6563 - learning_rate: 0.0010\nEpoch 16/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6603 - val_loss: 0.6582 - learning_rate: 0.0010\nEpoch 17/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6515 - val_loss: 0.6576 - learning_rate: 0.0010\nEpoch 18/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6512 - val_loss: 0.6540 - learning_rate: 0.0010\nEpoch 19/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6466 - val_loss: 0.6586 - learning_rate: 0.0010\nEpoch 20/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6450 - val_loss: 0.6564 - learning_rate: 0.0010\nEpoch 21/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6409 - val_loss: 0.6546 - learning_rate: 0.0010\nEpoch 22/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6426 - val_loss: 0.6590 - learning_rate: 0.0010\nEpoch 23/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 76ms/step - loss: 0.6419\nEpoch 23: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6419 - val_loss: 0.6549 - learning_rate: 0.0010\nEpoch 24/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 84ms/step - loss: 0.6374 - val_loss: 0.6534 - learning_rate: 5.0000e-04\nEpoch 25/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6254 - val_loss: 0.6545 - learning_rate: 5.0000e-04\nEpoch 26/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6276 - val_loss: 0.6563 - learning_rate: 5.0000e-04\nEpoch 27/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 84ms/step - loss: 0.6207 - val_loss: 0.6544 - learning_rate: 5.0000e-04\nEpoch 28/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6206 - val_loss: 0.6568 - learning_rate: 5.0000e-04\nEpoch 29/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 76ms/step - loss: 0.6201\nEpoch 29: ReduceLROnPlateau reducing learning rate to 0.0002500000118743628.\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6201 - val_loss: 0.6568 - learning_rate: 5.0000e-04\nEpoch 30/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6154 - val_loss: 0.6566 - learning_rate: 2.5000e-04\nEpoch 31/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6101 - val_loss: 0.6567 - learning_rate: 2.5000e-04\nEpoch 32/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6086 - val_loss: 0.6586 - learning_rate: 2.5000e-04\nEpoch 33/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6055 - val_loss: 0.6576 - learning_rate: 2.5000e-04\nEpoch 34/100\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 76ms/step - loss: 0.6042\nEpoch 34: ReduceLROnPlateau reducing learning rate to 0.0001250000059371814.\n\u001b[1m125/125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 84ms/step - loss: 0.6042 - val_loss: 0.6609 - learning_rate: 2.5000e-04\nEpoch 34: early stopping\nRestoring model weights from the end of the best epoch: 24.\n","output_type":"stream"}],"execution_count":9},{"cell_type":"code","source":"from sklearn.metrics import mean_squared_error, mean_absolute_error\n\n# Predict on validation set\nY_val_pred = model_forecast.predict(X_val_f)\n\n# Reshape to flatten for metric comparison: (samples * time * channels,)\nY_true_flat = Y_val_f.reshape(-1, Y_val_f.shape[-1])\nY_pred_flat = Y_val_pred.reshape(-1, Y_val_pred.shape[-1])\n\nmse = mean_squared_error(Y_true_flat, Y_pred_flat)\nmae = mean_absolute_error(Y_true_flat, Y_pred_flat)\n\nprint(f\"Forecasting MSE: {mse:.6f}\")\nprint(f\"Forecasting MAE: {mae:.6f}\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T12:10:32.492046Z","iopub.execute_input":"2025-05-10T12:10:32.49231Z","iopub.status.idle":"2025-05-10T12:10:37.938139Z","shell.execute_reply.started":"2025-05-10T12:10:32.492282Z","shell.execute_reply":"2025-05-10T12:10:37.937367Z"}},"outputs":[{"name":"stdout","text":"\u001b[1m32/32\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 91ms/step\nForecasting MSE: 0.714629\nForecasting MAE: 0.653429\n","output_type":"stream"}],"execution_count":10},{"cell_type":"code","source":"from scipy.fft import fft, fftfreq\nimport matplotlib.pyplot as plt\n\n# Sample index to visualize\nsample_idx = 0  # any index in your val set\n\n# Choose a channel (e.g., channel 0 = Fp1)\nchannel = 0\n\n# Extract predicted and true signal for that channel and sample\ntrue_signal = Y_val_f[sample_idx, :, channel]\npred_signal = Y_val_pred[sample_idx, :, channel]\n\n# Sampling rate of EEG\nfs = 200  # Hz (200 samples/second)\n\n# Compute FFT\nn = len(true_signal)\nfreqs = fftfreq(n, 1/fs)[:n//2]\n\ntrue_fft = fft(true_signal)\npred_fft = fft(pred_signal)\n\ntrue_power = 2.0/n * np.abs(true_fft[:n//2])\npred_power = 2.0/n * np.abs(pred_fft[:n//2])\n\n# Plot\nplt.figure(figsize=(10, 5))\nplt.plot(freqs, true_power, label='True EEG (Freq Domain)')\nplt.plot(freqs, pred_power, label='Predicted EEG (Freq Domain)', linestyle='dashed')\nplt.title(\"Power Spectrum: True vs Forecasted EEG (Channel 0)\")\nplt.xlabel(\"Frequency (Hz)\")\nplt.ylabel(\"Amplitude\")\nplt.grid(True)\nplt.legend()\nplt.tight_layout()\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-10T12:13:05.090556Z","iopub.execute_input":"2025-05-10T12:13:05.090875Z","iopub.status.idle":"2025-05-10T12:13:05.304702Z","shell.execute_reply.started":"2025-05-10T12:13:05.090852Z","shell.execute_reply":"2025-05-10T12:13:05.303912Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 1000x500 with 1 Axes>","image/png":"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j48PNm3ahGbNmsHT0xN//fUXhg8fjr59+zocZ8yYMejYsaN922KxYMaMGahatSo8PT3RqFEjrFmz5q7xaLVah5jCw8Ph6+vrUMff39+pjoeHBwDrDwcrV67EqlWrMHHiRLRq1QqVK1dGq1at8NFHHzklzndauXJlkUOdNRqN0zkVCgU6duyI0aNHY8yYMQgODkZcXBwA4Pjx4+jZsye8vb0RFhaGZ599Funp6fbj5ebmYsiQIfD29kZERARmz56Njh07YsyYMSXGZ3t/IiIiUKdOHTz33HPYu3cvcnJy8Pbbb9vr6fV6vPbaawgNDYWHhwfatWuHf/75x/74jh07IJPJsGXLFjRp0gSenp7o3LkzUlNTsWnTJtSpUwe+vr4YNGgQdDqdfb/NmzejXbt28Pf3R1BQEB599FEkJCTYH79zeLntPNu2bUPz5s2h1WrRpk0bhx92AKB3795Yv3498vLySnz+9xMm3URERERE/5EgCNAZTKLcBEEot+cxfvx4zJw5EydOnEC9evVc2mfGjBn49ttvsXjxYpw4cQJjx47FM888gz///LPc4irKDz/8gNjYWPTp06fIx0uadTojIwMnT55E8+bNS3XOb775Bmq1Gnv27MHixYuRmZmJzp07o0mTJjhw4AA2b96MlJQU9O/f377PW2+9hT///BO//PILtm7dih07duDQoUOlOq9NaGgoBg8ejPXr19uXrXv77bfx008/4ZtvvsGhQ4dQo0YNxMXFISMjw2HfKVOm4PPPP8fevXtx5coV9O/fH3PnzsWKFSuwYcMGbN26FfPnz7fXz83Nxbhx43DgwAFs27YNcrkcjz/+OCwWS4kxvvvuu5g9ezYOHDgApVKJESNGODzevHlzmEwm7N+/v0yvgTvi8HKJkiXuRditf4H8toAqWOxwiIiIiKgEeUYz6k7aIsq5T74fB626fP5b//7776Nbt26wWCzIysq6a329Xo/p06fj999/R+vWrQEA1apVw+7du/HFF1+gQ4cOxe67cOFCfPXVVw5lX3zxBQYPHmzfHjhwIBQKhUOdkydPonLlyjh79ixiY2MdHhszZoz9mP7+/rh69WqR505MTIQgCEUO0f7tt98chtr37NkTP/74IwCgZs2a+Pjjj+2PffDBB2jSpAmmT59uL1u6dCmio6Nx9uxZREZG4uuvv8b//vc/dOnSBYA1ca9UqVKxr8vd1K5dG9nZ2bhx4wa8vLywaNEiLF++HD179gQALFmyBPHx8fj666/x1ltvOcTatm1bAMBzzz2HCRMmICEhAdWqVQMA9OvXD9u3b8c777wDAHjyyScdzrt06VKEhITg5MmTJV7H/eGHH9rf9/Hjx+ORRx5Bfn6+fYSCVquFn58fLl++XObXwN0w6ZYoxa+volXmZZhu9AB8mHQTERERUcUrbc/v+fPnodPp0K1bN4dyg8GAJk2alLjv4MGDHSYxA4CwsDCH7Tlz5qBr164OZSVdy/zuu+9i9OjR+Pnnnx0S4TvZhjbbEsHCOnXqhEWLFtm3vby87PebNWvmUPfIkSPYvn27Q5Juk5CQgLy8PBgMBrRs2dJeHhgY6PRjQWnYRjbIZDIkJCTAaDTak2kAUKlUaNGiBU6dOuWwX8OGDe33w8LCoNVq7Qm3rezvv/+2b587dw6TJk3C/v37kZ6ebu/hTkxMLDHpLnyeiIgIAEBqaioqV65sL/f09HQYyn6/Y9ItVQqV9a/ZIG4cRERERHRXnioFTr4fJ9q5y0vhBBMA5HK50/B1o9Fov5+TkwMA2LBhA6KiohzqaTSaEs/l5+eHGjVqlFgnPDy82Do1a9Z0ul44JCQEISEhCA0NLfG4wcHWTq2bN286TZLm5eVV7DnvfH1ycnLQu3dvfPTRR051IyIiKmTW81OnTsHX1xdBQUEOk+PdjUqlst+XyWQO27aywkPHe/fujSpVqmDJkiWIjIyExWJB/fr1YTCUnJ/ceR4ATkPSMzIyipyc7n7FpFuqFAUzIZqNJdcjIiIiItHJZLJyG+ItJSEhIThx4oRD2eHDh+2JVd26daHRaJCYmFjiUPKKMHDgQAwaNAi//PILHnvssVLtW716dfj6+uLkyZOoVatWmWNo2rQpfvrpJ8TExECpdH7/q1evDpVKhf3799t7em/evImzZ8+W6fVKTU3FihUr0LdvX8jlclSvXt1+jbltFnaj0Yh//vnnrhO1leTGjRs4c+YMlixZYp9lfPfu3WU+XmEJCQnIz8+/60iI+8n9981wnxDkKsgA9nQTERERkWg6deqETz75BN9++y1at26N//3vfzh+/Lg9YfLx8cGbb76JsWPHwmKxoF27drh16xb27NkDX19fDB06tNhj63Q6JCcnO5RpNBoEBATYtzMzM53q+Pj4wMvLC08//TR+/vlnPP3005gwYQLi4uIQFhaGy5cvY9WqVU7Xghcml8vRtWtX7N6922l29tJ45ZVXsGTJEgwcOBBvv/02AgMDcf78eaxcuRJfffUVvL298dxzz+Gtt95CUFAQQkND8e6770Iuv/t81oIgIDk52b5k2L59+zB9+nT4+flh5syZAKw97y+99BLeeustBAYGonLlyvj444+h0+nw3HPPlfl5BQQEICgoCF9++SUiIiKQmJiI8ePHl/l4he3atQvVqlVD9erVy+V47oCzl0uVvaebSTcRERERiSMuLg4TJ07E22+/jYceegjZ2dkYMmSIQ51p06Zh4sSJmDFjBurUqYMePXpgw4YNqFq1aonHXrJkCSIiIhxuAwcOdKgzfPhwpzq2GbZlMhlWrVqFuXPnYuPGjejSpQtiY2MxYsQIREdH37VnduTIkVi5cuVdZ+MuSWRkJPbs2QOz2Yzu3bujQYMGGDNmDPz9/e2J9axZs9C+fXv07t0bXbt2Rbt27ZyuDS9KVlYWIiIiEBUVhdatW+OLL77A0KFD8e+//9qvlQaAmTNn4sknn8Szzz6Lpk2b4vz589iyZYvDjxelJZfLsXLlShw8eBD169fH2LFjMWvWrDIfr7AffvgBo0aNKpdjuQuZUJ5rDLiBrKws+Pn54datW07rAEqJZWlPyBP3wvTE11A27Cd2OEROjEYjNm7ciF69ejldE0QkBWyjJGVsn+4vPz8fFy9eRNWqVYucjMvd2WYv9/X1dalX1h0JgoCWLVti7NixTsl+RevYsSMaN26MuXPn3tPziu3EiRPo3Lkzzp49Cz8/v/90rHvVRkv6rLuaW96fn6D7AXu6iYiIiIgqjEwmw5dffgmTySR2KA+MpKQkfPvtt/854XY3vKZboizNRuCYsTLqRjQWOxQiIiIiovtS48aN0bhxY7HDeGDcufzbg4JJt0QJsb1wKQGoG1RT7FCIiIiIiKgc7dixQ+wQ6B7i8HIiIiIiIiKiCsKkW6oyEhCUfQrITBQ7EiIiIiIiIiojJt0Spdg7D+3Oz4D8xM9ih0JERERERERlxKRbogTOXk5EREREROT2mHRLlT3pNoobBxEREREREZUZk26pUqisf816ceMgIiIiIiKiMmPSLVXs6SYiIiIiNzZs2DD07dvXvt2xY0eMGTPmnsexY8cOyGQyZGZm3vNzl9azzz6L6dOnix2GWyrL+zx+/Hi8+uqrFRdUASbdUmXv6eY13URERERUPoYNGwaZTAaZTAa1Wo0aNWrg/fffh8lkqvBz//zzz5g2bZpLde91ohwTE2N/XQrfZs6cCQC4dOlSkY/LZDL89ddf9uMYDAbMmjULTZs2hZeXF/z8/NCoUSO89957uH79eokxHDlyBBs3bsRrr71mL+vYsWOR57wX71dhU6ZMsZ9bqVQiODgYDz/8MObOnQu9Xhojc9u0aYOkpCT4+fm5vM+bb76Jb775BhcuXKjAyJh0S1dBT7eMPd1EREREVI569OiBpKQknDt3Dm+88QamTJmCWbNmFVnXYCi/DqDAwED4+PiU2/HK2/vvv4+kpCSH2529oL///rtTnWbNmgEA9Ho9unXrhunTp2PYsGHYuXMnjh07hnnz5iE9PR3z588v8fzz58/HU089BW9vb4fyUaNGOZ1TqVQ67V+e71VR6tWrh6SkJCQmJmL79u146qmnMGPGDLRp0wbZ2dkVem5XqNVqhIeHQyaTubxPcHAw4uLisGjRogqMjEm3ZAlV2uJE5ABY6j4mdihEREREdB/RaDQIDw9HlSpV8NJLL6Fr165Yv349gNtDwqdPn446deqgTp06AIArV66gf//+8Pf3R2BgIB577DFcunTJfkyz2Yxx48bB398fQUFBePvttyEIgsN57xxertfr8c477yA6OhoajQY1atTA119/jUuXLqFTp04AgICAAMhkMgwbNgwAYLFYMGPGDFStWhWenp5o1KgR1qxZ43CejRs3olatWvD09ESnTp0c4iyJj48PwsPDHW5eXl4OdYKCgpzqqFTWEapz5szB7t278ccff+C1115Ds2bNULlyZXTo0AGLFy8ucdi42WzGmjVr0Lt3b6fHtFqt0zkBa+/8tGnTMGTIEPj6+uL5558HAOzevRvt27eHp6cnoqOj8dprryE3N9d+vNTUVPTu3Ruenp6oWrUqvv/+e8TExGDu3Lklvj5KpRLh4eGIjIxEgwYN8Oqrr+LPP//E8ePH8dFHH9nr3bx5E0OGDEFAQAC0Wi169uyJc+fO2R9fvnw5/P398dtvvyE2NhZarRb9+vWDTqfDN998g5iYGAQEBOC1116D2Wy27/fdd9+hefPm9vdp8ODBSEtLsz9+5+gI23m2bNmCOnXqwNvb2/6DU2G9e/fGypUrS3zu/xWTbokSoprjfNgjEKp3ETsUIiIiInKVIbf4mzG/FHXzXKtbDjw9PR16Sbdt24YzZ87g559/xvr162E0GhEXFwcfHx/s2rULe/bssScwtv1mz56N5cuXY+nSpdi9ezcyMjKwdu3aEs87ZMgQ/PDDD5g3bx5OnTqFL774At7e3oiOjsZPP/0EADhz5gySkpLw2WefAQBmzJiBb7/9FosXL8aJEycwduxYPPPMM/jzzz8BWH8ceOKJJ9C7d28cPnwYI0eOxPjx48vldbqbH374Ad26dUOTJk2KfLykHtijR4/i1q1baN68eanO+cknn6BRo0b4999/MXHiRCQkJKBHjx548skncfToUaxatQq7d+/G6NGj7fsMGzYMV65cwfbt27FmzRosXLgQqamppTqvTe3atdGzZ0/8/PPPDsc/cOAA1q9fj3379kEQBPTq1QtG4+0RvDqdDvPmzcPKlSuxefNm7NixA48//jg2btyIjRs34rvvvsMXX3zh8IOK0WjEtGnTcOTIEaxbtw6XL1/Gyy+/XGJ8Op0On3zyCb777jvs3LkTiYmJePPNNx3qtGjRAlevXnX5x5mycB6XQEREREREZTM9svjHanYHBv94e3tWDcCoK7pulXbA8A23t+c2AHQ3nOtNuVW2OAEIgoBt27Zhy5YtDsOovby8sGTJEuTn58PX1xcrVqyAxWLBV199ZU8cly1bBn9/f+zYsQPdu3fH3LlzMWHCBDzxxBMAgMWLF2PLli3Fnvvs2bNYvXo14uPj0bVrVwBAtWrV7I8HBgYCAEJDQ+Hv7w/A2jM+ffp0/P7772jdurV9n927d+OLL75Ahw4dsGjRIlSvXh2zZ88GAMTGxuLYsWMOPbHFeeedd/Dee+85lG3atAnt27e3b7dp0wZyuWO/ZU5Ojv05dezY0eGxxx9/HPHx8QCAhg0bYu/evUWe+/Lly1AoFAgNDXV6bOHChfjqq6/s2y+88IL9+XXu3BlvvPGG/bGRI0di8ODB9hEFNWvWxLx58+yvTWJiIjZt2oS///4bDz30EADg66+/to9oKIvatWtj69atAIBz585h/fr12LNnD9q0aQMA+P777xEdHY1169bhqaeeAmBNoG3vFQD069cP3333HVJSUuDt7Y26deuiU6dO2L59OwYMGAAAGDFihP2c1apVw9y5c9GyZUvk5OTA19e3yNiMRiMWL15sP8/o0aPx/vvvO9SJjLR+Zi9fvoyYmJgyvw4lYdItVXk34Z97AUg7A0TWFzsaIiIiIrpP/Pbbb/D29obRaITFYsGgQYMwZcoU++MNGjSAWq1Gfr61Z/7IkSM4f/680/XY+fn5SEhIwK1bt5CUlISWLVvaH1MqlWjevLnTEHObw4cPQ6FQoEOHDi7Hff78eeh0OnTr1s2h3GAw2HuXT5065RAHAHuCfjdvvfWWfRi7TVRUlMP2qlWrSpWgLly4ELm5uZg3bx527txZbL28vDxoNJoie8MHDx6Md999175t+xECgFPP+JEjR3D06FF8//339jJBEGCxWHDx4kWcPXsWSqXSfh06YE2aCx+ztARBsMd96tQpKJVKh/cgKCgIsbGxOHXqlL1Mq9XaE2EACAsLQ0xMjMP17GFhYQ498AcPHsSUKVNw5MgR3Lx5ExaLBQCQmJiI+vWLzpfuPE9ERIRTr76npycAa694RWHSLVGyhG3ocHYKLIY/gGG/ih0OEREREbni/0qYoVqmcNx+63wJde+4CnTMsbLHdIdOnTph0aJFUKvViIyMdJqU687rmHNyctCsWTOHRM4mJCSkTDHYEp3SsPUob9iwwSkZ1mg0ZYqjsODgYNSoUaPEOtHR0cXWqVmzJs6cOeNQFhERAeB2z31J59bpdDAYDFCr1Q6P+fn5FXvOot6rF154wWEGdJvKlSvj7NmzJcZRFqdOnULVqlVLtY/tOngbmUxWZJktsc7NzUVcXBzi4uLw/fffIyQkBJcuXULPnj1LnECuqGPe+UNQRkYGgLK3ZVcw6ZYq+zrdXDKMiIiIyG2ove5ep6Lr3oWXl9ddk8vCmjZtilWrViE0NLTYYbwRERHYv38/Hn74YQCAyWTCwYMH0bRp0yLrN2jQABaLBX/++ad9eHlhtsSz8ERadevWhUajQWJiYrE95HXq1LFPCmdTeEmvijRw4EC89957+Pfff4u9rrs4jRs3BgCcPHnSfr8smjZtipMnTxb7/tauXdv+3tiGl585c6bMS7OdPn0amzdvxoQJEwBYX3+TyYT9+/fbh5ffuHEDZ86cQd26dct0Dtt5bty4gZkzZyI6OhoA8Pfff5f5eIUdP34cKpUK9erVK5fjFYUTqUmVfZ1uLhlGREREROIZPHgwgoOD8dhjj2HXrl24ePEiduzYgddeew1Xr14FALz++uuYOXMm1q1bh9OnT+Pll18uMZGLiYnB0KFDMWLECKxbt85+zNWrVwMAqlSpAplMht9++w1paWnIycmBj48P3nzzTYwdOxbffPMNEhIScOjQIcyfPx/ffPMNAODFF1/EuXPn8NZbb+HMmTNYsWIFli9f7tLzzM7ORnJyssMtKyvLoc6NGzec6tiG4Y8dOxatW7dGly5d8Nlnn+HQoUO4ePEitmzZgk2bNkGhUBR1WgDWXtamTZti9+7dLsVanHfeeQd79+7F6NGjcfjwYZw7dw6//PKLfSK12NhY9OjRAy+88AL279+PgwcPYuTIkS6NPDCZTEhOTsb169dx7NgxzJ8/Hx06dEDjxo3x1ltvAbD29j/22GMYNWoUdu/ejSNHjuCZZ55BVFQUHnus7KsyVa5cGWq1GvPnz8eFCxewfv16fPjhh2U+XmG7du2yz/ZeUZh0S5V9nW72dBMRERGReLRaLXbu3InKlSvjiSeeQJ06dfDcc8/ZJ1oDgDfeeAPPPvsshg4ditatW8PHxwePP/54icddtGgR+vXrh5dffhm1a9fGqFGj7EtbRUVFYerUqRg/fjzCwsLsSeO0adMwceJEzJgxA3Xq1EGPHj2wYcMG+/DmypUr46effsK6devQqFGjuy7VVdikSZMQERHhcHv77bcd6nTt2tWpzrp16wAAHh4e2LZtG9555x0sW7YM7dq1Q506dTBmzBi0bdvWXq84I0eOLHIIf2k0bNgQf/75J86ePYv27dujSZMmmDRpkn2yMMA6CV5kZCQ6dOiAJ554As8//3yRE7jd6cSJE4iIiEDlypXRsWNHrF69GhMmTMCuXbscrsVetmwZmjVrhkcffRStW7eGIAjYuHGj01Dv0ggJCcHy5cvx448/om7dupg5cyY+/vjjMh+vsJUrV2LUqFHlcqziyITiZje4T2VlZcHPzw+3bt0qdniMFJjObYPy+ycghNSG7JX9YodD5MRoNGLjxo3o1avXf/oSJaoobKMkZWyf7i8/Px8XL15E1apV4eHhIXY45c5isSArKwu+vr5Os3VTxcjLy0NsbCxWrVrl8uRv5SUmJgZjxoxxWEdd6sqjjW7atAlvvPEGjh496jS3gU1Jn3VXc0tRP0E7d+5E7969ERkZCZlMdtdffwrbs2cPlErlf7rmQdJ4TTcRERER0QPD09MT3377LdLT08UO5YGRm5uLZcuWFZtwlxdRJ1LLzc1Fo0aNMGLECPuafq7IzMzEkCFD0KVLF6SkpFRghCKS25JuXtNNRERERPQguHOdb6pY/fr1uyfnETXp7tmzJ3r27Fnq/V588UUMGjQICoWiVL3j7kTwjcDp8L6o2eAhFD/lAhERERER0X9z6dIlsUO4r7ndBRrLli3DhQsXMHnyZLFDqVg+ETgT8QQsLV4QOxIiIiIiIiIqI7dap/vcuXMYP348du3a5fK4e71eD71eb9+2TftvNBphNEp36LYtNinHSA82tlGSOrZRkjK2T/dnNBohCAIsFgssFovY4ZQ721zLtudIJDX3qo1aLBYIggCj0ei07Jur3+Fuk3SbzWYMGjQIU6dORa1atVzeb8aMGZg6dapT+datW6HVasszxHIlE8zw1idj//qvkeVZWexwiIoVHx8vdghEJWIbJSlj+3RfSqUS4eHhyM7OhsFw/058m52dLXYIRCWq6Daq1+uRl5eHP//8E2az2eExnU7n0jEks2SYTCbD2rVr0bdv3yIfz8zMREBAgMOvC7ZfHRQKBbZu3YrOnTs77VdUT3d0dDTS09MlvWSY8eY1aBc2ggAZTP+XCshkYodE5MBoNCI+Ph7dunXjcjckSWyjJGVsn+7PbDbj4sWL8PLyQlBQEGT32f/VBEFAbm4uvLy87rvnRveHim6jtt7ttLQ0mM1mVK1a1WlpsqysLAQHB991yTC36en29fXFsWPHHMoWLlyIP/74A2vWrEHVqlWL3E+j0UCj0TiVq1Qqaf8j52HthZdBgEohBxRu81bRA0bynyV64LGNkpSxfbovlUqF6OhoXL16Fbm5uWKHU+4EQUBeXh48PT2ZdJMk3as2qtVqERERAbVa7fSYq9/fomZyOTk5OH/+vH374sWLOHz4MAIDA1G5cmVMmDAB165dw7fffgu5XI769es77B8aGgoPDw+n8vuCotAbaDYw6SYiIiKSGG9vb9SsWfO+vDbfaDRi586dePjhh/nDEEnSvWijCoUCSqXyPyf1omZyBw4cQKdOnezb48aNAwAMHToUy5cvR1JSEhITE8UKT1yKQr+kmA0ApHv9OREREdGDSqFQOE2udD9QKBQwmUzw8PBg0k2S5E5tVNSku2PHjijpkvLly5eXuP+UKVMwZcqU8g1KKuSFe7rvv19PiYiIiIiIHgRut073A0Mmg0VW8Kup+f6dEZOIiIiIiOh+xqRbwiyygoEIFvZ0ExERERERuSPOziVhCSFxqFG9KhRqH7FDISIiIiIiojJg0i1hpyP7oVqnXlBIfGIAIiIiIiIiKhqHlxMRERERERFVECbdEuZhvAlkXAAMOrFDISIiIiIiojJg0i1hbc5/BNWiFsC1g2KHQkRERERERGXApFvC7LOXc8kwIiIiIiIit8SkW8JuJ91cMoyIiIiIiMgdMemWMItMYb3Dnm4iIiIiIiK3xKRbwiyygqXCmHQTERERERG5JSbdEsbh5URERERERO6NSbeEWeQcXk5EREREROTOlGIHQMVL8W2M0JrNoQiJFTsUIiIiIiIiKgMm3RJ2ObgT6sX1gkKlEjsUIiIiIiIiKgMOLyciIiIiIiKqIEy6JUxhzgdyUoD8W2KHQkRERERERGXApFvC6l5fDdVn9YC9n4sdChEREREREZUBk24Ju71kGGcvJyIiIiIickdMuiXMIuc63URERERERO6MSbeEsaebiIiIiIjIvTHpljCBSTcREREREZFbY9ItYRaZwnqHw8uJiIiIiIjcEpNuCePwciIiIiIiIvemFDsAKl6WZyVYGg2GPPohsUMhIiIiIiKiMmDSLWHpPvVg7vUW5CqV2KEQERERERFRGXB4OREREREREVEFYdItZYIF0GcD+VliR0JERERERERlwKRbwiJuHYLqk6rA90+JHQoRERERERGVAZNuCePs5URERERERO6NSbeE3U66uU43ERERERGRO2LSLWHs6SYiIiIiInJvTLolzCJXWO8w6SYiIiIiInJLTLoljD3dRERERERE7o1Jt4Qx6SYiIiIiInJvSrEDoOIZFV6w1HkMcm2A2KEQERERERFRGTDplrB8dSDMvb6GXKUSOxQiIiIiIiIqA1GHl+/cuRO9e/dGZGQkZDIZ1q1bV2L9n3/+Gd26dUNISAh8fX3RunVrbNmy5d4ES0RERERERFRKoibdubm5aNSoERYsWOBS/Z07d6Jbt27YuHEjDh48iE6dOqF37974999/KzhSEQkWwJgPCILYkRAREREREVEpiTq8vGfPnujZs6fL9efOneuwPX36dPzyyy/49ddf0aRJk3KOTnxKsw6q6aHWjfdSAaVG3ICIiIiIiIioVNx69nKLxYLs7GwEBgaKHUqFsM9eDnAG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LXUAn376KUaNGoXhw4cDABYvXowNGzZg6dKlGD9+vFP9vXv3om3bthg0aBAAICYmBgMHDsT+/ftLfW53YBte3tMwEyff7wkPdZknnCciIiIiIqJ7rNQZ3L///uuwLZfLERISgtmzZ991ZvM7GQwGHDx4EBMmTHA4XteuXbFv374i92nTpg3+97//4e+//0aLFi1w4cIFbNy4Ec8++2xpn4pb8FRZk24L5NAZLfBQixwQERERERERuazUSff27dvL7eTp6ekwm80ICwtzKA8LC8Pp06eL3GfQoEFIT09Hu3btIAgCTCYTXnzxxWKHl+v1euj1evt2VlYWAOus60ajdIdq22KzmE3wVMmRZ7TgVm4+fNQykSMjsrK1USl/jujBxjZKUsb2SVLHNkpSJ4U26uq5S510d+7cGT///DP8/f0dyrOystC3b1/88ccfpT1kqezYsQPTp0/HwoUL0bJlS5w/fx6vv/46pk2bhokTJzrVnzFjBqZOnepUvnXrVmi12gqNtTzEx8dDISjwiuIXCN9+iv3h3XDDp47YYRHZxcfHix0CUYnYRknK2D5J6thGSerEbKM6nc6lejJBEITSHFgulyM5ORmhoaEO5ampqYiKiirVLw0GgwFarRZr1qxB37597eVDhw5FZmYmfvnlF6d92rdvj1atWmHWrFn2sv/97394/vnnkZOTA7nccW64onq6o6OjkZ6eDl9fX5djvdeMRiPi4+PRrVs3dJ//F6blTEEnxRGYHp0HodEgscMjcmijKpVK7HCInLCNkpSxfZLUsY2S1EmhjWZlZSE4OBi3bt0qMbd0uaf76NGj9vsnT55EcnKyfdtsNmPz5s2IiooqVZBqtRrNmjXDtm3b7Em3xWLBtm3bMHr06CL30el0Tom1QmG97rmo3w80Gg00Go1TuUqlcosvEJVKBW+NEoYca6xKmAE3iJseHO7yWaIHF9soSRnbJ0kd2yhJnZht1NXzupx0N27cGDKZDDKZDJ07d3Z63NPTE/Pnz3c9wgLjxo3D0KFD0bx5c7Ro0QJz585Fbm6ufTbzIUOGICoqCjNmzAAA9O7dG59++imaNGliH14+ceJE9O7d255832881QoYbW+VmdfVEBERERERuQuXk+6LFy9CEARUq1YNf//9N0JCQuyPqdVqhIaGlinpHTBgANLS0jBp0iQkJyejcePG2Lx5s31ytcTERIee7ffeew8ymQzvvfcerl27hpCQEPTu3Rsffvhhqc/tLrzUShjsSbdB3GCIiIiIiIjIZS4n3VWqVAFgHf5d3kaPHl3scPIdO3Y4bCuVSkyePBmTJ08u9zikSqtWwCgw6SYiIiIiInI3LiXd69evR8+ePaFSqbB+/foS6/bp06dcAqPbvDRKGFEwisBsEjcYIiIiIiIicplLSXffvn3tM5YXnmX8TjKZDGazubxiowKO13Szp5uIiIiIiMhduJR0Fx5SXhHDy6lkXmoFZpoGIr3lBLzVqaHY4RAREREREZGL5HevQmLTqpXQQ40sswqQ358ztBMREREREd2PXOrpnjdvnssHfO2118ocDBXNS2NNtHMNvJ6biIiIiIjInbiUdM+ZM8elg8lkMibdFcBTrURH+b94KnE5cKAX0Hy42CERERERERGRC1xKui9evFjRcVAJvNQK1JBdR+ucrUBiIJNuIiIiIiIiN/GfrukWBAGCIJRXLFQMrVrJ2cuJiIiIiIjcUJmS7q+//hr169eHh4cHPDw8UL9+fXz11VflHRsV0HLJMCIiIiIiIrfk0vDywiZNmoRPP/0Ur776Klq3bg0A2LdvH8aOHYvExES8//775R7kg85Lo4ARBbOWm43iBkNEREREREQuK3XSvWjRIixZsgQDBw60l/Xp0wcNGzbEq6++yqS7AmjVShgE9nQTERERERG5m1IPLzcajWjevLlTebNmzWAycUmriuDlcE03e7qJiIiIiIjcRamT7meffRaLFi1yKv/yyy8xePDgcgmKHHkWuqZbYE83ERERERGR2yj18HLAOpHa1q1b0apVKwDA/v37kZiYiCFDhmDcuHH2ep9++mn5RPmA89IosNPSEE3zF2P3gB7Qih0QERERERERuaTUSffx48fRtGlTAEBCQgIAIDg4GMHBwTh+/Li9nkwmK6cQyUOpgEGmhl5QIxdaJt1ERERERERuotRJ9/bt2ysiDiqBXC6DVqVArsGMPINZ7HCIiIiIiIjIRWVap5vuvaqqDExTLoV21zSxQyEiIiIiIiIXlbqnOz8/H/Pnz8f27duRmpoKi8Xi8PihQ4fKLTi6LVyVh2fNv8Nw9jiAGWKHQ0RERERERC4oddL93HPPYevWrejXrx9atGjBa7fvEYVaA+SD63QTERERERG5kVIn3b/99hs2btyI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cFTSY/GJxAkhBw0RIHYoRERERERE5ALRh5eT67Qa628kOsP9vyY5ERERERHR/UASPd3kmqi803hZ8Qu8M2oDaCJ2OERERERERHQX7Ol2I5HZx/G2ahWaZf0hdihERERERETkAibdbkSpKlj6zGIUNxAiIiIiIiJyCZNuN6IqWG9cbjGIHAkRERERERG5gkm3G1GpPQEAMvZ0ExERERERuQUm3W5Ebe/pZtJNRERERETkDph0uxGNxgMAoBCYdBMREREREbkDJt1uRK22Jt1KwQST2SJyNERERERERHQ3XKfbjairNMdT+knIhharjWb4KvibCRERERERkZQx6XYjau9A/CurA5NFgE5vhq+HSuyQiIiIiIiIqATsKnUjMpkMWrUCAJBrMIkcDREREREREd0Ne7rdiS4DwxRbkKGwIM/QTuxoiIiIiIiI6C6YdLuT3HSMM3+Nm0pvnNVPFDsaIiIiIiIiugsOL3cnCus13CqYoDOYRQ6GiIiIiIiI7oZJtztRqAEw6SYiIiIiInIXTLrdSUHSrZGZkKs3ihwMERERERER3Q2TbneiuL1EWF5+voiBEBERERERkSuYdLuTgp5uAMjX60UMhIiIiIiIiFzBpNudFEq6DXr2dBMREREREUkdlwxzJ3IFfoydg5+PpaOuSXX3+kRERERERCQq9nS7E5kMqeEPY5+lHnKMfOuIiIiIiIikjpmbm9GqFQCAXINJ5EiIiIiIiIjobph0u5naaZsxWPE75HkZYodCREREREREd8Frut1Mk9Oz0VqVhrfzm4sdChEREREREd0Fe7rdjCC3zmBuMnDJMCIiIiIiIqlj0u1uFNZZy5l0ExERERERSR+TbjcjU1p7ui0mJt1ERERERERSx6Tb3SisSbfZyKSbiIiIiIhI6ph0uxk5e7qJiIiIiIjcBpNuN2NLuuUWEwwmi8jREBERERERUUmYdLubzu9hpOENHLTUQp7BLHY0REREREREVAKu0+1mlNXaY6csBwZYkGswwU+rEjskIiIiIiIiKgZ7ut2QVqMAAOgMJpEjISIiIiIiopIw6XY3ifvxhHwXasiuQsfh5URERERERJLGpNvd/PMVJpnmoYP8CHL1TLqJiIiIiIikjEm3uylYp1sNM4eXExERERERSZwkku4FCxYgJiYGHh4eaNmyJf7++2+X9lu5ciVkMhn69u1b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fEBSV0TSDQA1QrztSXf7miEiBEZERERERESFibpON5WRfXj5HUl3qHV4PdfqJiIiIiIikgZJ9HRTKXmHA61HA9pAh2Im3URERERERNLCpNsd+UUBcR86FduS7oQ0Jt1ERERERERSwOHl95HqIdakOz3HgEyd4S61iYiIiIiIqKIx6XZHFjOQeQW4keBQ7KVRItLPAwCHmBMREREREUkBk253pLsBzK0PzG8KCILDQ9V5XTcREREREZFkMOl2R7bZywHAYnJ4iJOpERERERERSQeTbndkW6cbAMyO127bku5zTLqJiIiIiIhEx6TbHZWUdIewp5uIiIiIiEgqmHS7I7kSgMx632x0eMjW030tMw86gwlEREREREQkHibd7kgmu93bfUdPd5C3BgFa6zXfF9Jy73VkREREREREVAiTbndVTNINcDI1IiIiIiIiqVCKHQCVUbOh1qHlam+nh2qEeuOfSzeZdBMREREREYmMSbe7ivuw2IeqczI1IiIiIiIiSeDw8vtQzTAfAMD5NCbdREREREREYmLS7a7yMoHsZMCkd3rIdk33pfRcGM2WexwYERERERER2TDpdldLewCzY4Er+50eivTzgFatgMki4PINnQjBEREREREREcCk230prMuCFTV7uUwm43XdREREREREEsCk213ZlwwzFvmwbYh5Aq/rJiIiIiIiEg2TbndVwjrdANfqJiIiIiIikgIm3e7KPry86J5uDi8nIiIiIiISH5Nud+ViT3dCWg5MnMGciIiIiIhIFEy63dVdku4qQVr4eiihM5jxwYZT9zAwIiIiIiIismHS7a6qdQCaPAMEVi/yYZVCjo+ebAgAWL73Er776/K9jI6IiIhKYDBZcKvo382JiOg+w6TbXbV8AXhsAVC1fbFVejaIwFtxsQCAKetPYNe5tHsVHRERERVDEAS8vOIwphxUYNf5dLHDISKiCsak+z73csfqeKJJFMwWAS9/f4gTqxEREYlsw7Ek/HkuHRbIMHn9KeQbzWKHREREFYhJt7syGwF9NmDMK7GaTCbDjCcboHmVAGTnm/DcN/8gI5fj2YiIiMSgM5jwYcFcKzIIuHIzD4t2JIgcFRERVSQm3e5qy7vAjErArtl3rapRKvDFs80QHeiJyzd0ePG7g9Cb+Ks6ERHRvbZg+3kk3cpHJX8PDKphXV1k0Z8JuJSeK3Jk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/PPhmE8++cQAZt26dfHqppyGKisrTdeuXc3y5cvNZZddZqZNm2aMUY5KfM2cOdNcfPHFMefbtm3y8vLMr371q/C08vJy4/V6zZIlS05FF+U0N3z4cDNp0qSIaaNGjTJjx441xihHJb4A8+KLL4bvtyQfP/74YwOYDRs2hGNeffVVY1mW+eqrr05Z34+nI91tjM/nY9OmTQwePDg8zeFwMHjwYNatWxfHnonA0aNHAcjKygJg06ZN+P3+iHzt3r07RUVFylc5paZMmcLw4cMjchGUoxJff/nLXygpKWH06NG0b9+ePn368N///d/h+Tt37qS0tDQiP9PT07nwwguVn3JKDBgwgBUrVrBt2zYAPvjgA958802uuuoqQDkqbUtL8nHdunVkZGRQUlISjhk8eDAOh4P169ef8j43cMXtmaVZhw4dIhgMkpubGzE9NzeXTz/9NE69EgHbtpk+fToXXXQR55xzDgClpaV4PB4yMjIiYnNzcyktLY1DL+V09Oc//5n33nuPDRs2RM1Tjko8ff755yxYsIAZM2bw05/+lA0bNnD77bfj8XgYP358OAeb+85XfsqpcNddd1FRUUH37t1xOp0Eg0EefPBBxo4dC6AclTalJflYWlpK+/btI+a7XC6ysrLimrMqukWkRaZMmcKWLVt48803490VkbA9e/Ywbdo0li9fTkJCQry7IxLBtm1KSkp46KGHAOjTpw9btmxh4cKFjB8/Ps69E4HnnnuOP/3pTyxevJiePXuyefNmpk+fTkFBgXJU5CTS8PI2JicnB6fTGXVl3f3795OXlxenXsnpburUqbzyyiusXLmSjh07hqfn5eXh8/koLy+PiFe+yqmyadMmDhw4wPnnn4/L5cLlcrF69WrmzZuHy+UiNzdXOSpxk5+fz9lnnx0xrUePHuzevRsgnIP6zpd4ufPOO7nrrru46aab6NWrF7fccgt33HEHs2fPBpSj0ra0JB/z8vKiLj4dCAQoKyuLa86q6G5jPB4Pffv2ZcWKFeFptm2zYsUK+vfvH8eeyenIGMPUqVN58cUXeeONNyguLo6Y37dvX9xud0S+bt26ld27dytf5ZQYNGgQH374IZs3bw7fSkpKGDt2bPhv5ajEy0UXXRT1M4vbtm3jjDPOAKC4uJi8vLyI/KyoqGD9+vXKTzklqqurcTgiywGn04lt24ByVNqWluRj//79KS8vZ9OmTeGYN954A9u2ufDCC095nxtoeHkbNGPGDMaPH09JSQn9+vXjscceo6qqiokTJ8a7a3KamTJlCosXL+all14iNTU1fC5Meno6iYmJpKenM3nyZGbMmEFWVhZpaWn86Ec/on///nzrW9+Kc+/ldJCamhq+xkCD5ORksrOzw9OVoxIvd9xxBwMGDOChhx7ihhtu4N1332XRokUsWrQIIPyb8rNmzaJr164UFxdzzz33UFBQwMiRI+PbeTktjBgxggcffJCioiJ69uzJ+++/zyOPPMKkSZMA5aiceseOHWP79u3h+zt37mTz5s1kZWVRVFT0jfnYo0cPhg0bxq233srChQvx+/1MnTqVm266iYKCgji9KvSTYW3V448/boqKiozH4zH9+vUz77zzTry7JKchoNnbU089FY6pqakxP/zhD01mZqZJSkoy1157rdm3b1/8Oi2nvaY/GWaMclTi6+WXXzbnnHOO8Xq9pnv37mbRokUR823bNvfcc4/Jzc01Xq/XDBo0yGzdujVOvZXTTUVFhZk2bZopKioyCQkJ5swzzzR33323qaurC8coR+VUWrlyZbPbnuPHjzfGtCwfDx8+bMaMGWNSUlJMWlqamThxoqmsrIzDq2lkGWNMnOp9ERERERERkX9rOqdbREREREREpJWo6BYRERERERFpJSq6RURERERERFqJim4RERERERGRVqKiW0RERERERKSVqOgWERERERERaSUqukVERERERERaiYpuERERERERkVaioltERETixufz0aVLF95+++2T2u6yZcvo3bs3tm2f1HZFREROlIpuERGRk2TChAlYlhV12759e7y71mYtXLiQ4uJiBgwYEJ5mWRZLly6Nip0wYQIjR45sUbvDhg3D7Xbzpz/96ST1VERE5B+joltEROQkGjZsGPv27Yu4FRcXR8X5fL449K5tMcYwf/58Jk+e3CrtT5gwgXnz5rVK2yIiIi2loltEROQk8nq95OXlRdycTicDBw5k6tSpTJ8+nZycHIYOHQrAli1buOqqq0hJSSE3N5dbbrmFQ4cOhdurqqpi3LhxpKSkkJ+fz9y5cxk4cCDTp08PxzR3ZDgjI4Onn346fH/Pnj3ccMMNZGRkkJWVxTXXXMOuXbvC8xuOIv/6178mPz+f7OxspkyZgt/vD8fU1dUxc+ZMCgsL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\n"},"metadata":{}}],"execution_count":12},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}