{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":65471,"databundleVersionId":7211464,"sourceType":"competition"}],"dockerImageVersionId":30627,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom tensorflow.keras.utils import image_dataset_from_directory\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout, BatchNormalization, Rescaling\nfrom tensorflow.keras.callbacks import LearningRateScheduler\nfrom tensorflow.keras.optimizers import Adam\nfrom sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\nimport tensorflow as tf ","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"jupyter":{"source_hidden":true},"execution":{"iopub.status.busy":"2025-08-31T15:58:50.004366Z","iopub.execute_input":"2025-08-31T15:58:50.004741Z","iopub.status.idle":"2025-08-31T15:58:50.009845Z","shell.execute_reply.started":"2025-08-31T15:58:50.004711Z","shell.execute_reply":"2025-08-31T15:58:50.009005Z"}},"outputs":[],"execution_count":25},{"cell_type":"code","source":"train_dir = '/kaggle/input/arabic-letters-classification/Final_Arabic_Alpha_dataset/Final_Arabic_Alpha_dataset/train'\ntest_dir = '/kaggle/input/arabic-letters-classification/Final_Arabic_Alpha_dataset/Final_Arabic_Alpha_dataset/test'","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"img_size = (224, 224)\nbatch_size = 32","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_dataset = image_dataset_from_directory(\n    train_dir,\n    image_size=img_size,\n    batch_size=batch_size,\n    label_mode='categorical',\n    validation_split=0.2,\n    seed=42,\n    subset='training'\n)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"validation_dataset = image_dataset_from_directory(\n    train_dir,\n    image_size=img_size,\n    batch_size=batch_size,\n    label_mode='categorical',\n    validation_split=0.2,\n    seed=42,\n    subset='validation'\n)\n","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model = Sequential([\n    Rescaling(1./255, input_shape=(img_size[0], img_size[1], 3)),\n    Conv2D(64, (3, 3), activation='relu', padding='same'),\n    BatchNormalization(),\n    MaxPooling2D((2, 2)),\n    \n    Conv2D(128, (3, 3), activation='relu', padding='same'),\n    BatchNormalization(),\n    MaxPooling2D((2, 2)),\n    \n    Conv2D(256, (3, 3), activation='relu', padding='same'),\n    BatchNormalization(),\n    MaxPooling2D((2, 2)),\n    \n    Conv2D(512, (3, 3), activation='relu', padding='same'),\n    BatchNormalization(),\n    MaxPooling2D((2, 2)),\n    \n    Flatten(),\n    \n    Dense(1024, activation='relu'),\n    BatchNormalization(),\n    Dropout(0.5),\n    \n    Dense(512, activation='relu'),\n    BatchNormalization(),\n    Dropout(0.5),\n    \n    Dense(256, activation='relu'),\n    BatchNormalization(),\n    Dropout(0.5),\n    \n    Dense(65, activation='softmax')\n])\n\n# Learning Rate Scheduler\ndef lr_schedule(epoch):\n    lr = 1e-4\n    if epoch > 15:\n        lr *= 0.1\n    elif epoch > 10:\n        lr *= 0.5\n    return lr\n\nlr_scheduler = LearningRateScheduler(lr_schedule)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.compile(optimizer=Adam(learning_rate=1e-4), loss='categorical_crossentropy', metrics=['accuracy'])\n\n# Training with history for visualization\nhistory = model.fit(train_dataset, validation_data=validation_dataset, epochs=50, callbacks=[lr_scheduler])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T15:59:04.249205Z","iopub.execute_input":"2025-08-31T15:59:04.249504Z","iopub.status.idle":"2025-08-31T17:24:40.510304Z","shell.execute_reply.started":"2025-08-31T15:59:04.249479Z","shell.execute_reply":"2025-08-31T17:24:40.509072Z"}},"outputs":[{"name":"stdout","text":"Epoch 1/50\n1064/1064 [==============================] - 107s 96ms/step - loss: 0.0842 - accuracy: 0.9764 - val_loss: 10.5778 - val_accuracy: 0.0951 - lr: 1.0000e-04\nEpoch 2/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.1022 - accuracy: 0.9688 - val_loss: 20.1337 - val_accuracy: 0.0290 - lr: 1.0000e-04\nEpoch 3/50\n1064/1064 [==============================] - 103s 96ms/step - loss: 0.1083 - accuracy: 0.9666 - val_loss: 20.3577 - val_accuracy: 0.0633 - lr: 1.0000e-04\nEpoch 4/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.1056 - accuracy: 0.9672 - val_loss: 27.0635 - val_accuracy: 0.0450 - lr: 1.0000e-04\nEpoch 5/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.1055 - accuracy: 0.9677 - val_loss: 54.0844 - val_accuracy: 0.0192 - lr: 1.0000e-04\nEpoch 6/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0949 - accuracy: 0.9716 - val_loss: 11.9595 - val_accuracy: 0.1493 - lr: 1.0000e-04\nEpoch 7/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0838 - accuracy: 0.9736 - val_loss: 24.9343 - val_accuracy: 0.0344 - lr: 1.0000e-04\nEpoch 8/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0799 - accuracy: 0.9757 - val_loss: 18.2630 - val_accuracy: 0.0674 - lr: 1.0000e-04\nEpoch 9/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0807 - accuracy: 0.9749 - val_loss: 43.1303 - val_accuracy: 0.0369 - lr: 1.0000e-04\nEpoch 10/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0776 - accuracy: 0.9762 - val_loss: 2.1414 - val_accuracy: 0.5816 - lr: 1.0000e-04\nEpoch 11/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0683 - accuracy: 0.9793 - val_loss: 7.5838 - val_accuracy: 0.2453 - lr: 1.0000e-04\nEpoch 12/50\n1064/1064 [==============================] - 103s 96ms/step - loss: 0.0544 - accuracy: 0.9846 - val_loss: 2.7207 - val_accuracy: 0.4910 - lr: 5.0000e-05\nEpoch 13/50\n1064/1064 [==============================] - 104s 97ms/step - loss: 0.0430 - accuracy: 0.9867 - val_loss: 29.2401 - val_accuracy: 0.0445 - lr: 5.0000e-05\nEpoch 14/50\n1064/1064 [==============================] - 103s 96ms/step - loss: 0.0386 - accuracy: 0.9893 - val_loss: 37.0529 - val_accuracy: 0.0344 - lr: 5.0000e-05\nEpoch 15/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0391 - accuracy: 0.9888 - val_loss: 30.0400 - val_accuracy: 0.0371 - lr: 5.0000e-05\nEpoch 16/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0338 - accuracy: 0.9907 - val_loss: 6.7491 - val_accuracy: 0.2359 - lr: 5.0000e-05\nEpoch 17/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0313 - accuracy: 0.9909 - val_loss: 0.5542 - val_accuracy: 0.8756 - lr: 1.0000e-05\nEpoch 18/50\n1064/1064 [==============================] - 104s 97ms/step - loss: 0.0282 - accuracy: 0.9924 - val_loss: 0.9513 - val_accuracy: 0.7940 - lr: 1.0000e-05\nEpoch 19/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0227 - accuracy: 0.9944 - val_loss: 0.5482 - val_accuracy: 0.8771 - lr: 1.0000e-05\nEpoch 20/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0217 - accuracy: 0.9947 - val_loss: 0.5150 - val_accuracy: 0.8829 - lr: 1.0000e-05\nEpoch 21/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0214 - accuracy: 0.9945 - val_loss: 0.5617 - val_accuracy: 0.8742 - lr: 1.0000e-05\nEpoch 22/50\n1064/1064 [==============================] - 103s 96ms/step - loss: 0.0197 - accuracy: 0.9954 - val_loss: 0.5042 - val_accuracy: 0.8878 - lr: 1.0000e-05\nEpoch 23/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0187 - accuracy: 0.9954 - val_loss: 0.5063 - val_accuracy: 0.8876 - lr: 1.0000e-05\nEpoch 24/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0201 - accuracy: 0.9946 - val_loss: 0.5293 - val_accuracy: 0.8823 - lr: 1.0000e-05\nEpoch 25/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0184 - accuracy: 0.9957 - val_loss: 0.5019 - val_accuracy: 0.8876 - lr: 1.0000e-05\nEpoch 26/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0179 - accuracy: 0.9958 - val_loss: 0.7259 - val_accuracy: 0.8380 - lr: 1.0000e-05\nEpoch 27/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0156 - accuracy: 0.9965 - val_loss: 0.4967 - val_accuracy: 0.8885 - lr: 1.0000e-05\nEpoch 28/50\n1064/1064 [==============================] - 103s 96ms/step - loss: 0.0161 - accuracy: 0.9960 - val_loss: 0.5285 - val_accuracy: 0.8846 - lr: 1.0000e-05\nEpoch 29/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0169 - accuracy: 0.9958 - val_loss: 0.5619 - val_accuracy: 0.8772 - lr: 1.0000e-05\nEpoch 30/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0150 - accuracy: 0.9966 - val_loss: 1.9045 - val_accuracy: 0.6431 - lr: 1.0000e-05\nEpoch 31/50\n1064/1064 [==============================] - 103s 96ms/step - loss: 0.0151 - accuracy: 0.9966 - val_loss: 0.5105 - val_accuracy: 0.8879 - lr: 1.0000e-05\nEpoch 32/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0145 - accuracy: 0.9964 - val_loss: 0.5185 - val_accuracy: 0.8866 - lr: 1.0000e-05\nEpoch 33/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0132 - accuracy: 0.9973 - val_loss: 0.5034 - val_accuracy: 0.8894 - lr: 1.0000e-05\nEpoch 34/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0135 - accuracy: 0.9970 - val_loss: 1.4491 - val_accuracy: 0.6870 - lr: 1.0000e-05\nEpoch 35/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0136 - accuracy: 0.9968 - val_loss: 0.6003 - val_accuracy: 0.8693 - lr: 1.0000e-05\nEpoch 36/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0131 - accuracy: 0.9974 - val_loss: 0.7027 - val_accuracy: 0.8442 - lr: 1.0000e-05\nEpoch 37/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0133 - accuracy: 0.9970 - val_loss: 0.5010 - val_accuracy: 0.8897 - lr: 1.0000e-05\nEpoch 38/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0129 - accuracy: 0.9970 - val_loss: 0.5174 - val_accuracy: 0.8879 - lr: 1.0000e-05\nEpoch 39/50\n1064/1064 [==============================] - 103s 96ms/step - loss: 0.0122 - accuracy: 0.9973 - val_loss: 0.7944 - val_accuracy: 0.8309 - lr: 1.0000e-05\nEpoch 40/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0108 - accuracy: 0.9978 - val_loss: 0.5796 - val_accuracy: 0.8762 - lr: 1.0000e-05\nEpoch 41/50\n1064/1064 [==============================] - 103s 96ms/step - loss: 0.0115 - accuracy: 0.9975 - val_loss: 1.5348 - val_accuracy: 0.6977 - lr: 1.0000e-05\nEpoch 42/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0117 - accuracy: 0.9975 - val_loss: 0.5166 - val_accuracy: 0.8887 - lr: 1.0000e-05\nEpoch 43/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0112 - accuracy: 0.9972 - val_loss: 0.5633 - val_accuracy: 0.8790 - lr: 1.0000e-05\nEpoch 44/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0107 - accuracy: 0.9979 - val_loss: 0.6877 - val_accuracy: 0.8494 - lr: 1.0000e-05\nEpoch 45/50\n1064/1064 [==============================] - 103s 97ms/step - loss: 0.0111 - accuracy: 0.9973 - val_loss: 0.5236 - val_accuracy: 0.8886 - lr: 1.0000e-05\nEpoch 46/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0107 - accuracy: 0.9977 - val_loss: 0.5400 - val_accuracy: 0.8844 - lr: 1.0000e-05\nEpoch 47/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0111 - accuracy: 0.9975 - val_loss: 0.5666 - val_accuracy: 0.8786 - lr: 1.0000e-05\nEpoch 48/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0108 - accuracy: 0.9975 - val_loss: 0.6074 - val_accuracy: 0.8709 - lr: 1.0000e-05\nEpoch 49/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0096 - accuracy: 0.9981 - val_loss: 0.5331 - val_accuracy: 0.8841 - lr: 1.0000e-05\nEpoch 50/50\n1064/1064 [==============================] - 102s 96ms/step - loss: 0.0104 - accuracy: 0.9978 - val_loss: 2.2231 - val_accuracy: 0.5972 - lr: 1.0000e-05\n","output_type":"stream"}],"execution_count":26},{"cell_type":"code","source":"plt.figure(figsize=(12, 4))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:25:01.82149Z","iopub.execute_input":"2025-08-31T17:25:01.822413Z","iopub.status.idle":"2025-08-31T17:25:01.832691Z","shell.execute_reply.started":"2025-08-31T17:25:01.822379Z","shell.execute_reply":"2025-08-31T17:25:01.831898Z"}},"outputs":[{"execution_count":28,"output_type":"execute_result","data":{"text/plain":"<Figure size 1200x400 with 0 Axes>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 1200x400 with 0 Axes>"},"metadata":{}}],"execution_count":28},{"cell_type":"code","source":"plt.subplot(1, 2, 1)\nplt.plot(history.history['accuracy'], label='Training Accuracy')\nplt.plot(history.history['val_accuracy'], label='Validation Accuracy')\nplt.title('Training and Validation Accuracy')\nplt.xlabel('Epoch')\nplt.ylabel('Accuracy')\nplt.legend()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:25:10.764471Z","iopub.execute_input":"2025-08-31T17:25:10.764826Z","iopub.status.idle":"2025-08-31T17:25:11.02926Z","shell.execute_reply.started":"2025-08-31T17:25:10.764798Z","shell.execute_reply":"2025-08-31T17:25:11.028385Z"}},"outputs":[{"execution_count":29,"output_type":"execute_result","data":{"text/plain":"<matplotlib.legend.Legend at 0x7bc35bbc2470>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 1 Axes>","image/png":"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"},"metadata":{}}],"execution_count":29},{"cell_type":"code","source":"plt.subplot(1, 2, 2)\nplt.plot(history.history['loss'], label='Training Loss')\nplt.plot(history.history['val_loss'], label='Validation Loss')\nplt.title('Training and Validation Loss')\nplt.xlabel('Epoch')\nplt.ylabel('Loss')\nplt.legend()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:25:20.127503Z","iopub.execute_input":"2025-08-31T17:25:20.128368Z","iopub.status.idle":"2025-08-31T17:25:20.378457Z","shell.execute_reply.started":"2025-08-31T17:25:20.128336Z","shell.execute_reply":"2025-08-31T17:25:20.377673Z"}},"outputs":[{"execution_count":30,"output_type":"execute_result","data":{"text/plain":"<matplotlib.legend.Legend at 0x7bc3591628f0>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAScAAAHHCAYAAAD9Hp7DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWLElEQVR4nO2deXgT5fbHv0napEvatJTSUmlZC5RVLYsF2YulILK5cXulRRSXggJyr/JT2VzqgoICAiqCG6LlAoJsFgRULAJFEGURtLRgaZGlK3RL5vfHdCYzSdommUkzac/nefJkMvPOO2/S5Ntzzpz3vCqGYRgQBEEoDLW7B0AQBGELEieCIBQJiRNBEIqExIkgCEVC4kQQhCIhcSIIQpGQOBEEoUhInAiCUCQkTgRBKBISJ4mkpKSgTZs2Tp07f/58qFQqeQekMM6fPw+VSoW1a9c2+LVVKhXmz5/Pv167di1UKhXOnz9f77lt2rRBSkqKrOOR8l1pijRacVKpVHY99u3b5+6hNnmeeuopqFQqnDt3rtY2zz//PFQqFX799dcGHJnj5OXlYf78+Th27Ji7h8LD/YNYtGiRu4fiEF7uHoCr+PTTT0WvP/nkE2RkZFjtj4mJkXSdDz74ACaTyalzX3jhBTz33HOSrt8YSEpKwtKlS7Fu3TrMnTvXZpsvvvgC3bt3R48ePZy+zkMPPYQHH3wQOp3O6T7qIy8vDwsWLECbNm1w6623io5J+a40RRqtOP373/8WvT548CAyMjKs9lty48YN+Pn52X0db29vp8YHAF5eXvDyarR/Arvp27cvOnTogC+++MKmOGVmZiI7OxuvvfaapOtoNBpoNBpJfUhBynelKdJo3Tp7GDx4MLp164asrCwMHDgQfn5++L//+z8AwNdff41Ro0YhIiICOp0O7du3x0svvQSj0SjqwzKOIDSh33//fbRv3x46nQ69e/fG4cOHRefaijmpVCpMmzYNmzdvRrdu3aDT6dC1a1fs3LnTavz79u1Dr1694OPjg/bt22PVqlV2x7F++OEH3HfffYiKioJOp0NkZCRmzpyJmzdvWr0/vV6Pv//+G2PHjoVer0doaChmz55t9VkUFhYiJSUFBoMBQUFBSE5ORmFhYb1jAVjr6fTp0zh69KjVsXXr1kGlUmHixImorKzE3LlzERsbC4PBAH9/fwwYMAB79+6t9xq2Yk4Mw+Dll19Gq1at4OfnhyFDhuD333+3OvfatWuYPXs2unfvDr1ej8DAQCQmJuL48eN8m3379qF3794AgMmTJ/OhAy7eZivmVFZWhmeeeQaRkZHQ6XTo1KkTFi1aBMtiIY58L5zl8uXLmDJlCsLCwuDj44OePXvi448/tmq3fv16xMbGIiAgAIGBgejevTveeecd/nhVVRUWLFiA6Oho+Pj4ICQkBHfeeScyMjIcGk+T/7d99epVJCYm4sEHH8S///1vhIWFAWC/yHq9HrNmzYJer8d3332HuXPnori4GG+++Wa9/a5btw4lJSV47LHHoFKp8MYbb2D8+PH466+/6v0P+uOPP2Ljxo148sknERAQgHfffRcTJkxAbm4uQkJCAAC//PILRowYgZYtW2LBggUwGo1YuHAhQkND7Xrf6enpuHHjBp544gmEhITg0KFDWLp0KS5evIj09HRRW6PRiISEBPTt2xeLFi3C7t278dZbb6F9+/Z44oknALA/8jFjxuDHH3/E448/jpiYGGzatAnJycl2jScpKQkLFizAunXrcPvtt4uu/dVXX2HAgAGIiorClStX8OGHH2LixIl49NFHUVJSgtWrVyMhIQGHDh2ycqXqY+7cuXj55ZcxcuRIjBw5EkePHsVdd92FyspKUbu//voLmzdvxn333Ye2bduioKAAq1atwqBBg3Dy5ElEREQgJiYGCxcuxNy5czF16lQMGDAAANCvXz+b12YYBvfccw/27t2LKVOm4NZbb8WuXbvwn//8B3///TcWL14sam/P98JZbt68icGDB+PcuXOYNm0a2rZti/T0dKSkpKCwsBBPP/00ACAjIwMTJ07EsGHD8PrrrwMATp06hQMHDvBt5s+fj7S0NDzyyCPo06cPiouLceTIERw9ehTDhw+3f1BMEyE1NZWxfLuDBg1iADArV660an/jxg2rfY899hjj5+fHlJeX8/uSk5OZ1q1b86+zs7MZAExISAhz7do1fv/XX3/NAGC2bt3K75s3b57VmAAwWq2WOXfuHL/v+PHjDABm6dKl/L7Ro0czfn5+zN9//83vO3v2LOPl5WXVpy1svb+0tDRGpVIxOTk5ovcHgFm4cKGo7W233cbExsbyrzdv3swAYN544w1+X3V1NTNgwAAGALNmzZp6x9S7d2+mVatWjNFo5Pft3LmTAcCsWrWK77OiokJ03vXr15mwsDDm4YcfFu0HwMybN49/vWbNGgYAk52dzTAMw1y+fJnRarXMqFGjGJPJxLf7v//7PwYAk5yczO8rLy8XjYth2L+1TqcTfTaHDx+u9f1afle4z+zll18Wtbv33nsZlUol+g7Y+72wBfedfPPNN2tts2TJEgYA89lnn/H7Kisrmbi4OEav1zPFxcUMwzDM008/zQQGBjLV1dW19tWzZ09m1KhRdY7JHpq0WwcAOp0OkydPttrv6+vLb5eUlODKlSsYMGAAbty4gdOnT9fb7wMPPIDg4GD+Nfdf9K+//qr33Pj4eLRv355/3aNHDwQGBvLnGo1G7N69G2PHjkVERATfrkOHDkhMTKy3f0D8/srKynDlyhX069cPDMPgl19+sWr/+OOPi14PGDBA9F62b98OLy8v3pIC2BjP9OnT7RoPwMYJL168iO+//57ft27dOmi1Wtx33318n1qtFgBgMplw7do1VFdXo1evXjZdwrrYvXs3KisrMX36dJErPGPGDKu2Op0OajX7czEajbh69Sr0ej06derk8HU5tm/fDo1Gg6eeekq0/5lnngHDMNixY4dof33fCyls374d4eHhmDhxIr/P29sbTz31FEpLS7F//34AQFBQEMrKyup00YKCgvD777/j7NmzksbU5MXplltu4b/sQn7//XeMGzcOBoMBgYGBCA0N5YPpRUVF9fYbFRUles0J1fXr1x0+lzufO/fy5cu4efMmOnToYNXO1j5b5ObmIiUlBc2aNePjSIMGDQJg/f58fHys3EXheAAgJycHLVu2hF6vF7Xr1KmTXeMBgAcffBAajQbr1q0DAJSXl2PTpk1ITEwUCf3HH3+MHj168PGM0NBQbNu2za6/i5CcnBwAQHR0tGh/aGio6HoAK4SLFy9GdHQ0dDodmjdvjtDQUPz6668OX1d4/YiICAQEBIj2c3eQufFx1Pe9kEJOTg6io6N5Aa5tLE8++SQ6duyIxMREtGrVCg8//LBV3GvhwoUoLCxEx44d0b17d/znP/9xKgWkyYuT0ILgKCwsxKBBg3D8+HEsXLgQW7duRUZGBu9j23M7uLa7QowdVZGlnGsPRqMRw4cPx7Zt2/Dss89i8+bNyMjI4AO3lu+voe5wtWjRAsOHD8f//vc/VFVVYevWrSgpKUFSUhLf5rPPPkNKSgrat2+P1atXY+fOncjIyMDQoUNdepv+1VdfxaxZszBw4EB89tln2LVrFzIyMtC1a9cGSw9w9ffCHlq0aIFjx45hy5YtfLwsMTFRFFscOHAg/vzzT3z00Ufo1q0bPvzwQ9x+++348MMPHbpWkw+I22Lfvn24evUqNm7ciIEDB/L7s7Oz3TgqMy1atICPj4/NpMW6Ehk5Tpw4gT/++AMff/wxJk2axO939G6KkNatW2PPnj0oLS0VWU9nzpxxqJ+kpCTs3LkTO3bswLp16xAYGIjRo0fzxzds2IB27dph48aNIlds3rx5To0ZAM6ePYt27drx+//55x8ra2TDhg0YMmQIVq9eLdpfWFiI5s2b868dyfhv3bo1du/ejZKSEpH1xIUNuPE1BK1bt8avv/4Kk8kksp5sjUWr1WL06NEYPXo0TCYTnnzySaxatQovvvgib7k3a9YMkydPxuTJk1FaWoqBAwdi/vz5eOSRR+weU5O3nGzB/YcS/keqrKzEe++9564hidBoNIiPj8fmzZuRl5fH7z937pxVnKK28wHx+2MYRnQ72FFGjhyJ6upqrFixgt9nNBqxdOlSh/oZO3Ys/Pz88N5772HHjh0YP348fHx86hz7zz//jMzMTIfHHB8fD29vbyxdulTU35IlS6zaajQaKwslPT0df//9t2ifv78/ANiVQjFy5EgYjUYsW7ZMtH/x4sVQqVR2xw/lYOTIkcjPz8eXX37J76uursbSpUuh1+t5l//q1aui89RqNZ8YW1FRYbONXq9Hhw4d+OP2QpaTDfr164fg4GAkJyfzUys+/fTTBjWf62P+/Pn49ttv0b9/fzzxxBP8l7xbt271Tp3o3Lkz2rdvj9mzZ+Pvv/9GYGAg/ve//0mKXYwePRr9+/fHc889h/Pnz6NLly7YuHGjw/EYvV6PsWPH8nEnoUsHAHfffTc2btyIcePGYdSoUcjOzsbKlSvRpUsXlJaWOnQtLl8rLS0Nd999N0aOHIlffvkFO3bsEFlD3HUXLlyIyZMno1+/fjhx4gQ+//xzkcUFAO3bt0dQUBBWrlyJgIAA+Pv7o2/fvmjbtq3V9UePHo0hQ4bg+eefx/nz59GzZ098++23+PrrrzFjxgxR8FsO9uzZg/Lycqv9Y8eOxdSpU7Fq1SqkpKQgKysLbdq0wYYNG3DgwAEsWbKEt+weeeQRXLt2DUOHDkWrVq2Qk5ODpUuX4tZbb+XjU126dMHgwYMRGxuLZs2a4ciRI9iwYQOmTZvm2IAl3+/zEGpLJejatavN9gcOHGDuuOMOxtfXl4mIiGD++9//Mrt27WIAMHv37uXb1ZZKYOu2LSxubdeWSpCammp1buvWrUW3thmGYfbs2cPcdtttjFarZdq3b898+OGHzDPPPMP4+PjU8imYOXnyJBMfH8/o9XqmefPmzKOPPsrfmhbeBk9OTmb8/f2tzrc19qtXrzIPPfQQExgYyBgMBuahhx5ifvnlF7tTCTi2bdvGAGBatmxpdfveZDIxr776KtO6dWtGp9Mxt912G/PNN99Y/R0Ypv5UAoZhGKPRyCxYsIBp2bIl4+vrywwePJj57bffrD7v8vJy5plnnuHb9e/fn8nMzGQGDRrEDBo0SHTdr7/+munSpQuf1sG9d1tjLCkpYWbOnMlEREQw3t7eTHR0NPPmm2+KUhu492Lv98IS7jtZ2+PTTz9lGIZhCgoKmMmTJzPNmzdntFot0717d6u/24YNG5i77rqLadGiBaPVapmoqCjmscceYy5dusS3efnll5k+ffowQUFBjK+vL9O5c2fmlVdeYSorK+scpyWqmjdONBLGjh0ry21cgnA3FHPyYCynmpw9exbbt2/H4MGD3TMggpARspw8mJYtWyIlJQXt2rVDTk4OVqxYgYqKCvzyyy9WuTsE4WlQQNyDGTFiBL744gvk5+dDp9MhLi4Or776KgkT0Sggy4kgCEVCMSeCIBQJiRNBEIqk0cecTCYT8vLyEBAQ0OgXEyAIJcIwDEpKShAREWE1sbguGr045eXlITIy0t3DIIgmz4ULF9CqVSu72zd6ceLS7i9cuIDAwEA3j4Ygmh7FxcWIjIy0Kg1TH41enDhXLjAwkMSJINyIo2EVCogTBKFISJwIglAkJE4EQSiSRh9zIsQYjUZUVVW5exhEI0Or1TqUJmAPJE5NBIZhkJ+fb/cilwThCGq1Gm3btrW5WIizkDg1EThhatGiBfz8/CghlZANLtH50qVLiIqKku27ReLUBDAajbwwSV0ZliBsERoairy8PFRXV9e7orW9UEC8CcDFmPz8/Nw8EqKxwrlzRqNRtj5JnJoQ5MoRrsIV3y0SJ4IgFAmJE9GkaNOmjc116Wpj3759UKlUdJfTDZA4EYpEpVLV+Zg/f75T/R4+fBhTp061u32/fv1w6dIlGAwGp65nLySC1tDdOjmpKgc0WkDmZLSmyKVLl/jtL7/8EnPnzhUtbS5c8pxhGBiNRnh51f91Dg0NdWgcWq0W4eHhDp1DyAP9iuSiohRY0g34/F53j6RREB4ezj8MBgNUKhX/+vTp0wgICMCOHTsQGxsLnU6HH3/8EX/++SfGjBmDsLAw6PV69O7dG7t37xb1a+nWqVQqfPjhhxg3bhz8/PwQHR2NLVu28MctLZq1a9ciKCgIu3btQkxMDPR6PUaMGCES0+rqajz11FMICgpCSEgInn32WSQnJ2Ps2LFOfx7Xr1/HpEmTEBwcDD8/PyQmJorWJszJycHo0aMRHBwMf39/dO3aFdu3b+fPTUpKQmhoKHx9fREdHY01a9Y4PZaGgsRJLq6fB8r+Af7OcvdI6oVhGNyorHbLQ871NJ577jm89tprOHXqFHr06IHS0lKMHDkSe/bswS+//IIRI0Zg9OjRyM3NrbOfBQsW4P7778evv/6KkSNHIikpCdeuXau1/Y0bN7Bo0SJ8+umn+P7775Gbm4vZs2fzx19//XV8/vnnWLNmDQ4cOIDi4mJs3rxZ0ntNSUnBkSNHsGXLFmRmZoJhGIwcOZJPE0lNTUVFRQW+//57nDhxAq+//jpvXb744os4efIkduzYgVOnTmHFihVWy60rEXLr5MJYyT6b5MvzcBU3q4zoMneXW659cmEC/LTyfO0WLlyI4cOH86+bNWuGnj178q9feuklbNq0CVu2bMG0adNq7SclJQUTJ04EALz66qt49913cejQIYwYMcJm+6qqKqxcuRLt27cHAEybNg0LFy7kjy9duhRz5szBuHHjAADLli3jrRhnOHv2LLZs2YIDBw6gX79+AIDPP/8ckZGR2Lx5M+677z7k5uZiwoQJ6N69OwCgXbt2/Pm5ubm47bbb0KtXLwCs9egJkOUkF8aaybSmaveOownB/dg4SktLMXv2bMTExCAoKAh6vR6nTp2q13Lq0aMHv+3v74/AwEBcvny51vZ+fn68MAHs4qZc+6KiIhQUFKBPnz78cY1Gg9jYWIfem5BTp07By8sLffv25feFhISgU6dOOHXqFADgqaeewssvv4z+/ftj3rx5+PXXX/m2TzzxBNavX49bb70V//3vf/HTTz85PZaGhCwnuTBWsM8eIE6+3hqcXJjgtmvLhb+/v+j17NmzkZGRgUWLFqFDhw7w9fXFvffei8rKyjr7sZxuoVKpYDKZHGrv7uUfH3nkESQkJGDbtm349ttvkZaWhrfeegvTp09HYmIicnJysH37dmRkZGDYsGFITU3FokWL3Drm+iDLSS54t0754qRSqeCn9XLLw5VZ6gcOHEBKSgrGjRuH7t27Izw8HOfPn3fZ9WxhMBgQFhaGw4cP8/uMRiOOHj3qdJ8xMTGorq7Gzz//zO+7evUqzpw5gy5duvD7IiMj8fjjj2Pjxo145pln8MEHH/DHQkNDkZycjM8++wxLlizB+++/7/R4GgqynOSCc+vAACYTpRO4gejoaGzcuBGjR4+GSqXCiy++WKcF5CqmT5+OtLQ0dOjQAZ07d8bSpUtx/fp1u4T5xIkTooUAVCoVevbsiTFjxuDRRx/FqlWrEBAQgOeeew633HILxowZAwCYMWMGEhMT0bFjR1y/fh179+5FTEwMAGDu3LmIjY1F165dUVFRgW+++YY/pmRInOSiusK8baoC1Dr3jaWJ8vbbb+Phhx9Gv3790Lx5czz77LMoLi5u8HE8++yzyM/Px6RJk6DRaDB16lQkJCRAo6nfpR04cKDotUajQXV1NdasWYOnn34ad999NyorKzFw4EBs376ddzGNRiNSU1Nx8eJFBAYGYsSIEVi8eDEANldrzpw5OH/+PHx9fTFgwACsX79e/jcuMyrG3c6yiykuLobBYEBRUZFrV1/5NR3Y+Ai7/X95gNa/7vYNSHl5ObKzs9G2bVv4+Pi4ezhNDpPJhJiYGNx///146aWX3D0cl1DXd8zZ3yBZTnJhFFpOyo87Ea4jJycH3377LQYNGoSKigosW7YM2dnZ+Ne//uXuoXkUFBiRC6PgjpAH5DoRrkOtVmPt2rXo3bs3+vfvjxMnTmD37t0eEedREmQ5yYVRsGgAWU5NmsjISBw4cMDdw/B4yHKSi2py6whCTkic5ELk1pE4EYRUSJzkgtw6gpAVEie5EN2to4A4QUiFxEkuyHIiCFkhcZILCogThKyQOMmFMCAutKIItzJ48GDMmDGDf23PAgcqlUpycTg5+2mqkDjJhcito5iTVEaPHl1rsbcffvgBKpVKVLPIXhxd4MAe5s+fj1tvvdVq/6VLl5CYmCjrtSzhygY3Rkic5IKmr8jKlClTkJGRgYsXL1odW7NmDXr16iUqEmcvoaGhDbbycXh4OHQ6mgDuLCROckF5TrJy9913IzQ0FGvXrhXtLy0tRXp6OqZMmYKrV69i4sSJuOWWW+Dn54fu3bvjiy++qLNfS7fu7NmzGDhwIHx8fNClSxdkZGRYnfPss8+iY8eO8PPzQ7t27fDiiy/ytbvXrl2LBQsW4Pjx4/yyVdyYLd26EydOYOjQofD19UVISAimTp2K0tJS/nhKSgrGjh2LRYsWoWXLlggJCUFqaip/LWfIzc3FmDFjoNfrERgYiPvvvx8FBQX88ePHj2PIkCEICAhAYGAgYmNjceTIEQB1L5rQELhVnObPn2+1Hlnnzp354+Xl5UhNTUVISAj0ej0mTJgg+mAVhSfdrWMYoLLMPQ87i2B4eXlh0qRJWLt2rajKZHp6OoxGIyZOnIjy8nLExsZi27Zt+O233zB16lQ89NBDOHTokF3XMJlMGD9+PLRaLX7++WesXLkSzz77rFW7gIAArF27FidPnsQ777yDDz74gC9H8sADD+CZZ55B165dcenSJVy6dAkPPPCAVR9lZWVISEhAcHAwDh8+jPT0dOzevduqtvnevXvx559/Yu/evfj444+xdu1aK4G2F5PJhDFjxuDatWvYv38/MjIy8Ndff4nGl5SUhFatWuHw4cPIysrCc889x5dhqWvRhIbA7XPrunbtKlq+R7j22MyZM7Ft2zakp6fDYDBg2rRpGD9+vDLnLVV7UJ5T1Q3g1Qj3XNuBcjIPP/ww3nzzTezfvx+DBw8GwLp0EyZMgMFggMFgEK16Mn36dOzatQtfffWVqIZ3bezevRunT5/Grl27EBHBfh6vvvqqVZzohRde4LfbtGmD2bNnY/369fjvf/8LX19f6PV6eHl51bm+3bp161BeXo5PPvmELy+8bNkyjB49Gq+//jrCwsIAAMHBwVi2bBk0Gg06d+6MUaNGYc+ePXj00Uft+syE7NmzBydOnEB2djYiIyMBAJ988gm6du2Kw4cPo3fv3sjNzcV//vMf3iiIjo7mz69r0YSGwO1uHfdH5R7ckjVFRUVYvXo13n77bQwdOhSxsbFYs2YNfvrpJxw8eNDNo7aBJ1lOHkLnzp3Rr18/fPTRRwCAc+fO4YcffsCUKVMAsAXWXnrpJXTv3h3NmjWDXq/Hrl276l3QgOPUqVOIjIzkhQkA4uLirNp9+eWX6N+/P8LDw6HX6/HCCy/YfQ3htXr27Cmqe96/f3+YTCbRYqFdu3YVFaUTLp7gKNz744QJALp06YKgoCB+YYRZs2bhkUceQXx8PF577TX8+eeffNu6Fk1oCNxuOZ09exYRERHw8fFBXFwc0tLSEBUVhaysLFRVVSE+Pp5v27lzZ0RFRSEzMxN33HGHzf4qKipQUWG2YhqsEqInBcS9/VgLxl3XdoApU6Zg+vTpWL58OdasWYP27dtj0KBBAIA333wT77zzDpYsWYLu3bvD398fM2bMqHdBA0fIzMxEUlISFixYgISEBBgMBqxfvx5vvfWWbNcQ4uhiC1KZP38+/vWvf2Hbtm3YsWMH5s2bh/Xr12PcuHF1LprQELjVcurbty/Wrl2LnTt3YsWKFcjOzsaAAQNQUlKC/Px8aLVaq9ukYWFhyM/Pr7XPtLQ03uQ3GAyi/xouxZMC4ioV61q54+HgAgf3338/1Go11q1bh08++QQPP/wwX4v7wIEDGDNmDP7973+jZ8+eaNeuHf744w+7+46JicGFCxdEq/VaWuU//fQTWrdujeeffx69evVCdHQ0cnJyRG20Wi2Mxrpd+ZiYGBw/fhxlZWX8vgMHDkCtVqNTp052j9kRuPd34cIFft/JkydRWFgoWhihY8eOmDlzJr799luMHz9etBpwXYsmuBq3ilNiYiLuu+8+9OjRAwkJCdi+fTsKCwvx1VdfOd3nnDlzUFRUxD+EfxiXQm6dS9Dr9XjggQcwZ84cXLp0CSkpKfyx6OhoZGRk4KeffsKpU6fw2GOPOXTDJD4+Hh07dkRycjKOHz+OH374Ac8//7yoTXR0NHJzc7F+/Xr8+eefePfdd7Fp0yZRmzZt2iA7OxvHjh3DlStXRJY7R1JSEnx8fJCcnIzffvsNe/fuxfTp0/HQQw/x8SZnMRqNOHbsmOhx6tQpxMfHo3v37khKSsLRo0dx6NAhTJo0CYMGDUKvXr1w8+ZNTJs2Dfv27UNOTg4OHDiAw4cP80XxZsyYgV27diE7OxtHjx4VLZrQELg95iQkKCgIHTt2xLlz5xAeHo7Kykp+jXqOgoKCOgOPOp0OgYGBokeDQNNXXMaUKVNw/fp1JCQkiOJDL7zwAm6//XYkJCRg8ODBCA8Px9ixY+3uV61WY9OmTbh58yb69OmDRx55BK+88oqozT333IOZM2di2rRpuPXWW/HTTz/hxRdfFLWZMGECRowYgSFDhiA0NNRmOoOfnx927dqFa9euoXfv3rj33nsxbNgwLFu2zLEPwwalpaW47bbbRA9uBZqvv/4awcHBGDhwIOLj49GuXTt8+eWXANjFE65evYpJkyahY8eOuP/++5GYmIgFCxYAMC+aEBMTgxEjRqBjx4547733JI/XbhgFUVJSwgQHBzPvvPMOU1hYyHh7ezMbNmzgj58+fZoBwGRmZtrdZ1FREQOAKSoqcsWQzbzdjWHmBbKPo5+69loOcvPmTebkyZPMzZs33T0UopFS13fM2d+gWwPis2fPxujRo9G6dWvk5eVh3rx50Gg0mDhxIgwGA6ZMmYJZs2ahWbNmCAwMxPTp0xEXF1drMNyteFLMiSA8ALeK08WLFzFx4kRcvXoVoaGhuPPOO3Hw4EGEhoYCABYvXgy1Wo0JEyagoqICCQkJDWtWOoIn3a0jCA/AreJU38J+Pj4+WL58OZYvX95AI5IATfwlCFlRVEDco6GAOEHIComTHDAMuwQ5h0LFiWncizsTbsQV3y0SJzmwLC6nMHHiso5v3Ljh5pEQjRUuK1849UYqbp++0igwWiTdKSzmpNFoEBQUxM/R8vPz47OsCUIqJpMJ//zzD/z8/EQT96VC4iQHCrecAPCJq85OIiWIulCr1YiKipL1nx6JkxwYLSaaKlCcVCoVWrZsiRYtWkgqXkYQttBqtVCr5Y0SkTjJQbWFW6fgBQ40Go2scQGCcBUUEJcDK7dOWTEngvBESJzkwCogrjy3jiA8DRInOfCAmBNBeBokTnLgAXfrCMLTIHGSA8uAOMWcCEIyJE5yQG4dQcgOiZMckFtHELJD4iQHdLeOIGSHxEkOyHIiCNkhcZIDq4A4iRNBSIXESQ4oIE4QskPiJAfk1hGE7JA4yQEXEFfXLCVNeU4EIRkSJzng3DqtH/tMlhNBSIbESQ44t86bxIkg5ILESQ64u3XevuwziRNBSIbESQ44t87bn30mcSIIyZA4yYFVzIkC4gQhFRInOeAtJ4o5EYRckDjJAQXECUJ2SJzkwDIgbiRxIgipkDjJAeU5EYTskDjJAbl1BCE7JE5ywE1fIXEiCNkgcZIDK8uJUgkIQiokTnJAGeIEITskTnJAAXGCkB0SJzmQMyBuMkkfD0E0Akic5MAyIM4YAYZxvJ+LR4DXWwOHP5RvbAThoZA4yYGlWwc4FxTPzQQqioHsH+QZF0F4MCROcmDp1gHOuXZcYJ1iVgRB4iQL1RZuHQCYqmy3rQvOAqNUBIIgcZIFuSwnXpzIciIIEic5MFrkOQHOWT/VnDg5YXURRCODxEkqDGO2eLx0gErDbjtlOXExJ3LrCILESSpCEdJ4A2ov6/32QgFxguAhcZKKcClyjVaaOFHMiSB4SJykIlyKXKMTiJMzMSeynAiCg8RJKvxS5CpArWEfgDTLiSppEgSJk2S4ILaXDlCpKOZEEDJB4iQVznLSaNlnijkRhCyQOEmFExSNd81zjTg545qR5UQQPCROUuEERaNjnyVZTpTnRBAcJE5S4d26GstJUsyJMsQJgkMx4vTaa69BpVJhxowZ/L7y8nKkpqYiJCQEer0eEyZMQEFBgfsGaQthQByQyXIit44gFCFOhw8fxqpVq9CjRw/R/pkzZ2Lr1q1IT0/H/v37kZeXh/Hjx7tplLXAx5y4gLiUVIIq588liEaG28WptLQUSUlJ+OCDDxAcHMzvLyoqwurVq/H2229j6NChiI2NxZo1a/DTTz/h4MGDbhyxBbW6dVKSMCnmRBBuF6fU1FSMGjUK8fHxov1ZWVmoqqoS7e/cuTOioqKQmZlZa38VFRUoLi4WPVyKKwLiRoo5EYSXOy++fv16HD16FIcPH7Y6lp+fD61Wi6CgINH+sLAw5Ofn19pnWloaFixYIPdQa8cylUCWgDi5dQThNsvpwoULePrpp/H555/Dx8dHtn7nzJmDoqIi/nHhwgXZ+raJrEmYFBAnCA63iVNWVhYuX76M22+/HV5eXvDy8sL+/fvx7rvvwsvLC2FhYaisrERhYaHovIKCAoSHh9far06nQ2BgoOjhUqzu1nEBcQfjRsZqgOGWhWJoiSiiyeM2t27YsGE4ceKEaN/kyZPRuXNnPPvss4iMjIS3tzf27NmDCRMmAADOnDmD3NxcxMXFuWPItpErz8lYIX5tqgbUWmljIwgPxm3iFBAQgG7duon2+fv7IyQkhN8/ZcoUzJo1C82aNUNgYCCmT5+OuLg43HHHHe4Ysm2sAuI1IuVoImW1pThVASBxIpoubg2I18fixYuhVqsxYcIEVFRUICEhAe+99567hyVGrjwnYV0oZ84niEaGosRp3759otc+Pj5Yvnw5li9f7p4B2YNceU5WlhPlOhFNG7fnOXk8ck1fIcuJIESQOElFrjwnK8uJxIlo2pA4SYV366RaThbiRFniRBOHxEkq/N06qQFxCzEiy4lo4pA4SYUC4gThEkicpEIBcYJwCSROUrHKc6KAOEHIAYmTVKzcOo14v9392MoQJ4imC4mTVCynr3Ai5XDMydKto5gT0bQhcZKKXHlOtib+EkQThsRJKpz7JjUgbmU5ySROJiOQ9wstcU54HCROUjHKlefkIsspaw3w/mAgc6k8/RFEA0HiJBVX5TnJZekUnKx5/l2e/giigSBxkopcCxy4Ks+p7B/2uVRh6/0RRD2QOElF6XlOZVfY5xISJ8KzIHGSCh8QV2ixObKcCA+FxEkqVgFxJ2NOVuIkU54TJ07lhUBVuTx9EkQDQOIkFbmWhrJZQ1wi1ZWsKHGQ9UR4ECROUqk15uTo9BUXuHU3ropfl16W3idBNBAkTlJgGBv1nBQUEOdcOo7S2ldKJgilQeIkBZMRAMNuS81zckXMyUqcyK0jPAcSJykIs7olT19xheV0Rfya0gkID4LESQpCa0eqW8f1xS3KKUcN8TKLGBO5dYQHQeIkBV5AVGZRkmo5af2cO98WnFun1bPPFBAnPAgSJykIg+EqFbvNJ2E6GnPixEnv3Pm24Ny6Fl3Y5xKynAjPgcRJCpZpBID0kineLrCcwruxz2Q5ER4EiZMULKeuANKLzbnCrQurEaeyy4DJJL1fgmgASJykYDl1BZDBcvKvOV+OgHiNWxfWFYCKHdPNa9L7JYgGgMRJCpZTVwDBAgdSLSeJMSeGMVtOAS0BvxB2m+JOhIdA4iQFy+xwQLrlpOUsJ4luXWUpUF0z0de/OaAPY7cpnYDwEEicpCBnQNxo6dZJFCfOavL2ZwUvgBMnCooTngGJkxRsBcT5paHcHBDn4k3+zdlnfTj7TG4d4SGQOEnBZkDciTwnYzXA1NxF41IJpNYQ5ywn/1D2Wd+CfSbLifAQSJykIJdbJ5yjJ1eek6U4BdRYThRzIjwEEicp2Lxb54Q4CSf9yhUQ58WJc+vIciI8CxInKch1t46fQKwCvHwcP98WfMyJc+so5kR4FiROUuBExVaGOBj7s7E5kfPSARon7/ZZUqtbR2VTCM+AxEkKNmNOGvO2vQLD96NzPhXBktoC4pWlQEWptL4JogEgcZJCXQFxwH6B4S0nrYziZJFKoAsw51CR9UR4ACROUqgrIA7YPz/OKFg12FWWE0BBccKjIHGSQl0BccD+XKdqQezK2RrkQkxG88orQnGidALCgyBxkoKtgLhK8JHaHXOS2XK6ed2c1MlN+AXM8+uoljjhAZA4ScGWW6dSmeuA2x1zsmE5Sakhzrl0vs3Md/8AweRfEidC+ZA4ScHW9BXAcetH7rt1tuJNgGDyL4kToXxInKRg624d4IQ4CfKcnK1BLoQLeFuKE1lOhAdB4iSF6trEyUGBEfbjbFUDIZZpBBx8ljiJE6F8SJyk4BLLiTtXhpgTuXWEB0PiJAVb9ZwAx8WJt5y8XRtz4ty6sn+kl2QhCBdD4iQF2QLiwlQCGWJOtbl1fiGASgNAUF+cIBQKiZMUanXrHI05yTx9pTbLSa0x7yPXjlA4JE5SsJXnBDieqyRKJZAjIF6LOAEUdyI8BreK04oVK9CjRw8EBgYiMDAQcXFx2LFjB3+8vLwcqampCAkJgV6vx4QJE1BQoKAfla3pK4ATMScbAXFJSZgWtZyEUDoB4SG4VZxatWqF1157DVlZWThy5AiGDh2KMWPG4PfffwcAzJw5E1u3bkV6ejr279+PvLw8jB8/3p1DFiNXQFzoHkqNOVXdBCpL2G3LmBNAU1gIj8Gr/iauY/To0aLXr7zyClasWIGDBw+iVatWWL16NdatW4ehQ4cCANasWYOYmBgcPHgQd9xxhzuGLKa2gLjGwcm7tiwnZ906zmrSaAEfg/VxKjpHeAiKiTkZjUasX78eZWVliIuLQ1ZWFqqqqhAfH8+36dy5M6KiopCZmenGkQoQxoqEOH23ToaAuDDepFJZH6fFNQkPwa2WEwCcOHECcXFxKC8vh16vx6ZNm9ClSxccO3YMWq0WQUFBovZhYWHIz6/9h1VRUYGKCvOCAcXFxa4auiAg7i3e72yek5dOeoZ4bWkEHNz+G9ec658gGgi3W06dOnXCsWPH8PPPP+OJJ55AcnIyTp486XR/aWlpMBgM/CMyMlLG0VogV0Dc1sRfMM7Fneq6UweYF1DglionCIXidnHSarXo0KEDYmNjkZaWhp49e+Kdd95BeHg4KisrUVhYKGpfUFCA8PDwWvubM2cOioqK+MeFCxdcN3g+IG7p1nFBbQfFyUsQEHfkfCH1ilPNWDlrjSAUitvFyRKTyYSKigrExsbC29sbe/bs4Y+dOXMGubm5iIuLq/V8nU7HpyZwD5dhFEw7EeJoNctqG8XmAIniVItbx8XHyHIiFI5bY05z5sxBYmIioqKiUFJSgnXr1mHfvn3YtWsXDAYDpkyZglmzZqFZs2YIDAzE9OnTERcXp4w7dYD89ZyEGeKOnC+krhwnwOzWCVcZJggF4lZxunz5MiZNmoRLly7BYDCgR48e2LVrF4YPHw4AWLx4MdRqNSZMmICKigokJCTgvffec+eQzZiM5lK4tYqTnYmUIstJYIU5E3O6eZ199g22fZzLyaomcSKUjVvFafXq1XUe9/HxwfLly7F8+fIGGpEDCH/ctc6tcyaVQA1ABYBxLkucL7/iY/s479aROBHKxqmY04ULF3Dx4kX+9aFDhzBjxgy8//77sg1M8RgFAWWrgLijMSeLhRKk5DrVlt7AwY3VSAFxQtk4JU7/+te/sHfvXgBAfn4+hg8fjkOHDuH555/HwoULZR2gYhFaNWoLA1RKyRRnzhdSbdGXJV4UECc8A6fE6bfffkOfPn0AAF999RW6deuGn376CZ9//jnWrl0r5/iUi9AVs8zElrL6CiDRcqqljAsHJ06MiQrOEYrGKXGqqqqCTsd+yXfv3o177rkHADu95NKlS/KNTsnUNnUFkBBzqunL0bl5tsZlORmZQzhesp4IBeOUOHXt2hUrV67EDz/8gIyMDIwYMQIAkJeXh5CQkHrObiTUFdtxOuZk6dY5ExC303IStiUIBeKUOL3++utYtWoVBg8ejIkTJ6Jnz54AgC1btvDuXqNHWEnAEikTf505XzSuesRJrTH3T3fsCAXjVCrB4MGDceXKFRQXFyM42JxPM3XqVPj5+ck2OEVjl+Vkh7gwjLXQuTLmBLCunama3DpC0ThlOd28eRMVFRW8MOXk5GDJkiU4c+YMWrRoIesAFUtt2eGAYzEnkxEAI+5LSsE5Yx0WHQelExAegFPiNGbMGHzyyScAgMLCQvTt2xdvvfUWxo4dixUrVsg6QMVSZ0DcgZiTcBoJbzlJKJtSX56T8DpkOREKxilxOnr0KAYMGAAA2LBhA8LCwpCTk4NPPvkE7777rqwDVCz2uHX2ZHiLMs0t3DpnMsTry3MCzBYaVSYgFIxT4nTjxg0EBAQAAL799luMHz8earUad9xxB3JycmQdoGKprZYT4FjMiLPAVGpzCoGzMSeTEWCMtY+Lgyb/Eh6AU+LUoUMHbN68GRcuXMCuXbtw1113AWAn8rq0RImSqCu244i42LJ0nI05iabU1CVOnOVEbh2hXJwSp7lz52L27Nlo06YN+vTpw9dX+vbbb3HbbbfJOkDFwpW59Q2yPuaIuNhKmnTWchKKU3136wBy6whF41Qqwb333os777wTly5d4nOcAGDYsGEYN26cbINTNCU1mfABLa2PSbWcnK0jXm2nOFGpXsIDcLpkSnh4OMLDw/nqBK1atWo6CZiAed23ABslgx0RF1spCc5miHOWk9rb9sorHJyVRqkEhIJxyq0zmUxYuHAhDAYDWrdujdatWyMoKAgvvfQSTCaT3GNUJpzlpLchTg5ZTrbcOmdjTnbkOAECy4kC4oRyccpyev7557F69Wq89tpr6N+/PwDgxx9/xPz581FeXo5XXnlF1kEqkpKa5alsWU6OJGFaTvoFJMSc7MhxAgSpBCROhHJxSpw+/vhjfPjhh3w1AgDo0aMHbrnlFjz55JNNQ5y4RSnrjDnZYfnYtJycFCd7cpwAQYY4iROhXJxy665du4bOnTtb7e/cuTOuXWsCizVWVwA3rrLbNi0nR/KcXGE51REMByhDnPAInBKnnj17YtmyZVb7ly1bhh49ekgelOIprQmGa7S2FxJwJKBtq7oBnyHuqDhxfdUjTpRKQHgATrl1b7zxBkaNGoXdu3fzOU6ZmZm4cOECtm/fLusAFYkw3mTrrphDeU42rB2peU72Wk7k1hEKxinLadCgQfjjjz8wbtw4FBYWorCwEOPHj8fvv/+OTz/9VO4xKg9OnGzdqQOcc+tsWU7O5jnZ7daROBHKxek8p4iICKvA9/Hjx7F69erGvwpLXXfqAOdSCRrScqLloQgPQHHLkXsEdWWHA9ItJ2driNud50TiRCgfEidn4ALiAWG2j9eW57TvdWBJd7PlBdiubuB0hrideU4UcyI8ABInZ6jXcuKmr1hYPic3A4W5QM4B8z6jxeIGQMPlOZHlRCgYh2JO48ePr/N4YWGhlLF4Ds7GnCpKxecDtZRMkRpzqi9DnMSJUD4OiZPBYKj3+KRJkyQNyCNw9m5dZUnN+YK1/WyWTJFYz8nemBO5dYSCcUic1qxZ46pxeA7VFcDNmix4RywnhhFYTgXi/gCLmJOTJVMczXMiy4lQMBRzchTOatLobGeHA7Ytn+oKc4BbZDnVERB3tIa4vXlO5NYRHgCJk6Pw8aaw2msm2RKXylLrPgDr1X6F57s8Q5ymrxDKhcTJUeqqRsBhS1wqSszbQnGyOfFXaj0nmvhLeD4kTo5S3506wHbJFKHlVFliFis5S6bYW5WAloYiPAASJ0epqwImh60kTKHlBJiD4rYW53S6hri9eU5UQ5xQPiROjlJX7XAOm25dqbgN5x7WufqKqzPEyXIilAuJk6PUlx0O2BanSkvLqUacZF23jubWEY0HEidHEd6tqw3OcmGMbH4TYMOtqxE5OUumOFqVwFhhHh9BKAwSJ0exy3LSmLc568fSreMtJ1slUySuW1dvKoHgOLl2hEIhcXKEqnKgvJDdtifmBJgFptJSnOywnBxNwrQ7z8nHvE1BcUKhkDg5AhfE9vIBfIJqb2dLnDi3LvAW9rlOy0nq3Do7UwmE1ycIhUHi5Aj8hN86ssOBusWpebS4L3fEnFQqcxua/EsoFBInRyixIzscAFTCmJOFWxciECeGEVhODVjPCaBVfwnFQ+LkCPZkhwOAWg2oaj5a3nKqESfOcqoqY60pfvqKIDfJ2SRMe/OcAFr1l1A8JE6OwN+pq0ecAGvrh7Oc9C0AncHcn8116xxYzlyIvXlOAGWJE4qHxMkR7LWcAGtxqihmn7UB5hypogsAavKMGnL1FcAcNKdUAkKhkDg5gj0VCTgsJ/9ybp1Obxa36znm9g25bh1ANZ0IxUPi5AjCu3X1YemacW6dVm8Wt8Jcc3tZa4jbYzmROBHKhsTJEezJDuewzPLmUgl0AWbLiRMnldq8Vh1gu+SKPdib5wRQHXFC8ZA42UvVTaC8iN12NOZkrDYHnnUBAsupxq2zvPXv6gxxgCwnQvGQONlLiTA7vO5VaACIxUlYkUBrI+Zkaek449YxjO3aULVBMSdC4ZA42YvwTl1d2eEcwikoXDBco2OFiCtUd+OKeb/oXCfESWhl2ZPnRG4doXDcKk5paWno3bs3AgIC0KJFC4wdOxZnzpwRtSkvL0dqaipCQkKg1+sxYcIEFBQU1NKjC3Ek3gSIXTM+3qSv6cPCLbTMS3Jmbp1QZOzKcyLLiVA2bhWn/fv3IzU1FQcPHkRGRgaqqqpw1113oaysjG8zc+ZMbN26Fenp6di/fz/y8vLqXXlYdoxVQN4v7LY9d+oAC7dOcKcOsBYnyxiRMxniIsuJUgkIz8ehRTXlZufOnaLXa9euRYsWLZCVlYWBAweiqKgIq1evxrp16zB06FAA7MKeMTExOHjwIO644w7XDc5kBP7aC/y+GTj9DXDzOrs/KMq+84XiJLxTBwDevmxVA678ipXl5ESZXk5kVBpxPanaIMuJUDhuFSdLiorYu2HNmjUDAGRlZaGqqgrx8fF8m86dOyMqKgqZmZmuFadvXwQOLje/9g8FYu4B+j1l3/lC16z6JrvNiRPAuoecOFlaOkJhYxj7YlyO3KkDKOZEKB7FiJPJZMKMGTPQv39/dOvWDQCQn58PrVaLoKAgUduwsDDk5+fb6AWoqKhARYX5B1dcXOzcgDg3rvPdQJ+pQOv+4lyk+rBlOXFuHcC6dv+cYrdrs5wAgDGJqxzUhiM5TgBN/CUUj2Lu1qWmpuK3337D+vXrJfWTlpYGg8HAPyIjI53riHPj+jwKtBvkmDABFuIkmLrCIYw7WVlONkqu1IfDlhOVTCGUjSLEadq0afjmm2+wd+9etGrVit8fHh6OyspKFBYWitoXFBQgPNx2IuScOXNQVFTEPy5cuODcoDhx8g127nxbeU6WlhOHlTgJUgHsFSdHajkBgom/JE6EMnGrODEMg2nTpmHTpk347rvv0LZtW9Hx2NhYeHt7Y8+ePfy+M2fOIDc3F3FxcTb71Ol0CAwMFD2cGJh0cdIIpqDwAXHBWIQpCXW5dfZmiTtSywkgy4lQPG6NOaWmpmLdunX4+uuvERAQwMeRDAYDfH19YTAYMGXKFMyaNQvNmjVDYGAgpk+fjri4ONcGw6tumi0KOSwnh906YZlfO3OdHKnlBFAqAaF43CpOK1asAAAMHjxYtH/NmjVISUkBACxevBhqtRoTJkxARUUFEhIS8N5777l2YJzVpPYSu2KOUFeeE1CP5aQGoALAOBFzstdyonpOhLJxqzgxdizo6OPjg+XLl2P58uX1tpUNoUtnz218W9i0nISpBHVYTtz5pioHYk4OzKsDqBImoXgUERBXHFLjTYC4nhNXBVMoTsJMc1uumKNZ4o7ereNTCchyIpQJiZMtZBGnetw6Lx3gyyab2rR2HJ3862ieE1lOhMIhcbKF3OJkKyAOmONOtgTF0UUOHM5zolQCQtmQONnCVZaT0K0DzHEnOSwnPs/JXreOu1tHbh2hTEicbCF7zMlGEiYABLep/ToOu3VcnhO5dUTjQDFz6xSFnJaTsap2y2nAM0BIe+DWiTbOdzQg7mCeE6USEAqHxMkWcopTuWDisaU4GW4B4lJrOb/G8jK6KM+Jd+vIciKUCbl1tpBTnLi+VBqzK+XI+S7Lc6KYE6FsSJxscbOQffYNcr4P3nKq6Uundyyh09lUAqrnRDQSSJxsIavlVMg+awNqbVrn+a7OczJVO74+HkE0ACROtnCFW2cZb6oPYVUDe3A2Qxygyb+EIiFxsqS6AqiqWWBBVnFycAKxo3XEHc1zEt7Vo6A4oUBInCzhxAQqQGfH4pm1wd1t42JOjlY3cHWek9qLXQYdoHQCQpGQOFnCu3RBNaVLnITPc6r54Tvq1jksTg7mOalUVNOJUDQkTpbw4tRMWj9qixQyh8XJwYU1Ha2ECdDyUISiIXGyRI5gOGAtTg67dQ5miDtaQxygdAJC0ZA4WSKbOFks5+RsQNzuGuIO3q0DyK0jFA2JkyWuspycdutclOcEkFtHKBoSJ0sU49a5OM8JILeOUDQkTpbIJU6WgWlX362rliBOZDkRCoTEyRKluHWuriEOUMyJUDQkTpa4KiDusFvHxZzsDYg7mOcEmONTJE6EAiFxssRllpOrY07O5DnVTP6lmBOhQEicLHFZQNzVMScn8pw0ZDkRyoXEyRK+lpO7UwlcPLcOENQRJ3EilAeJkxBjlXkBTI9LwuRiTo6IEy0PRSgXEich5UXmbR8JFQkAa8vJ29+5812Z50R36wgFQ+IkhK+9ZDAXe3MWoThpAxyvcOCIW2esBhgTu01uHdFIIHESIiyXIhWhODnq0gnPt0ucBPWYHBInWh6KUC4kTkLkulMHiGNOjuY4AQ6Kk8DycSjPiRbWJJQLiZMQWcVJkG/kjOWkcUScBEFzy1hXndfgUgnIciKUB4mTEFnFSejWOZhGIDzfHnES5jg5svyUFy2sSSgXEichrhInRxMwhec7EnNyJN4EUFUCQtGQOAlxVcypoQLijuQ4AYJUAnLrCOVB4iREUW6dAzXEnbacKCBOKBcSJyEuc+ucsZxqAur2ZIg7U8sJoFQCQtGQOAlxmeXUQG6do+KkoYA4oVxInIR4bEDciVpOwvYUcyIUCImTEJcFxF0dc3KilhNAd+sIRUPixGEyyVcuBWhYt86ZWk7C9jS3jlAgJE4cFUUAGHZb7rl1zgTE+RridgTE+ZiTk5YTiROhQEicODiXztvf8diNLYRCoQt0/Hyn8pycjTmROBHKg8SJQ854EwCoBB+tU25dQ+Q5UcyJUC4kThycOPnJJU4qwMuX3fYJcvx8h2JOUlMJKgCGcexcgnAxEiuqNSLkDIZzJLwClF0BAls6fm6DzK3j2jPsHT9Hp78QhAshceKQ260DgN5TnD/XkQxxZ+qHA+bpK1wfJE6EgiC3jsMV4iQFp/KcnHTrAAqKE4qDxIlDceLUAHlOarXZQiNxIhQGiROHJ4uTs3lOAN2xIxQLiRNHYxAnZ/KzaNVfQqGQOHEoTZwcqiHu5N06gJaHIhQLiROH0sSpIfKcAPMdOhInQmG4VZy+//57jB49GhEREVCpVNi8ebPoOMMwmDt3Llq2bAlfX1/Ex8fj7NmzrhmMJ4uTHJYTxZwIheFWcSorK0PPnj2xfPlym8ffeOMNvPvuu1i5ciV+/vln+Pv7IyEhAeXlLiiOdt9a4P5PgKDW8vftDEJxqi9729k8J4CWhyIUi1uTMBMTE5GYmGjzGMMwWLJkCV544QWMGTMGAPDJJ58gLCwMmzdvxoMPPijvYNrcKW9/UhFWNWBMgEpTe1tn85wAWh6KUCyKjTllZ2cjPz8f8fHx/D6DwYC+ffsiMzOz1vMqKipQXFwsengkQnGqL0vc2TwngNw6QrEoVpzy8/MBAGFhYaL9YWFh/DFbpKWlwWAw8I/IyEiXjtNlCMWpvriTs5UwAUolIBSLYsXJWebMmYOioiL+ceHCBXcPyTkcEicna4gDlEpAKBbFilN4eDgAoKCgQLS/oKCAP2YLnU6HwMBA0cMjEYlTPfPrJN2to+WhCGWiWHFq27YtwsPDsWfPHn5fcXExfv75Z8TFxblxZA2EWg1AxW7XZzlJyXOi5aEIheLWu3WlpaU4d+4c/zo7OxvHjh1Ds2bNEBUVhRkzZuDll19GdHQ02rZtixdffBEREREYO3as+wbdkGi8WYumvjrikiwnWh6KUCZuFacjR45gyJAh/OtZs2YBAJKTk7F27Vr897//RVlZGaZOnYrCwkLceeed2LlzJ3x8fGrrsnGh9qoRp/piTtzcOkolIBoPbhWnwYMHg6kjwVClUmHhwoVYuHBhA45KQfCJmK6MOVFVAkKZKDbmREBQcK6+mJOEPCcNuXWEMiFxUjJcIThX5jmRW0coFBInJcO5dfVliEvKc+LcOrKcCGVB4qRk7Ik5mUxmy4pSCYhGBImTkrEn5iS0eCTVcyLLiVAWJE5Kxp6aTpLFiSb+EsqExEnJaGwExCtKgMoy82up4kQTfwmFQuKkZHi3riYgXl0JLOsDvBdnjkNx4qT2qpny4iA08ZdQKLTir5KxDIgX5gAleex28d9AUJS0HCeAUgkIxUKWk5KxjDkV5piPXctmn6XkOAFmt45SCQiFQeKkZKzESVCb6jonThJynABy6wjFQuKkZKzEKdd87Npf7LOUeXUALQ1FKBYSJyXDZ4jbEqcay0lKLSdAYDlRzIlQFiROSsbScioSuHV8zEmiOOlqKoVWFNdf/YAgGhASJyVTl1t3PZtdz05KLScA0IcBKjV7jbJ/nB8rQcgMiZOSEU5fqa4ASi6Zj1WWsmIi1XLSeAH6mprsxX87P1aCkBkSJyUjzBAvushue/sBga3Y7WvZ0vOcACAwgn0uznO+D4KQGRInJSN06ziXLigKaNaW3b72l/Q8JwAIbMk+kzgRCoLEScnYEidDpFmcrmdLz3MCgMBb2GcSJ0JBkDgpGWHMibtTFxQFNGvHbl/LFsScpFhO5NYRyoPESckI59YJ3bpggVvH5zmR5UQ0LkiclAxXQ9xYJRCnSLPldD1b+t06QGA50d06QjmQOCkZUcyJc+tam2NON66ac5OczXMCgABBQLyOpboIoiEhcVIyXMyputxcKiUoCtAFAP6h7Osrf7DPUiwnTpyMFcDN6873QxAyQuKkZDjLqTAXYEzsPDhOlLi40z+n2Wcp4uTtA/g1Z7fJtSMUAomTkuHEiatAYIgEVCp2m3PtuFiUFHEC6I4doThInJQMlx7ATfINijIf44LiHFLynADBHTuynAhlQOKkZPiY0032OSjSfIxz6zik5DkBZDkRioPEScmoLUq812U5SclzAmgKC6E4SJyUjJU4tTZvN7O0nKTGnCgRk1AWJE5KxlKcDAK3zi/EXCgOkJbnBJBbRygOEiclU5dbp1IBwW3Mr8lyIhoZJE5KRihOGi1btVKIMO4kVZy4RMzKEqC8WFpfBCEDJE5KRihOhlbWK/oK405SxUmnB3QGdpusJ0IBkDgpGaE4CV06DmE6gdQ8J8AcdyohcSLcD4mTkqlPnERuncQ8J4CC4oSiIHFSMhqhW2dLnIRunYyWE4kToQBInJRMfZZTQIRZlKTGnACawkIoChInJVOfOKnVQId4wCcICGkv/XpkOREKwqv+JoTbEIlTpO02D37O1nvy9pV+PRInwhEqStjaYi6CLCclw038VXuZ85AsUankESaAxIlwjC8mAqsGAXm/uKR7spyUjFeN6BgizULlSjhxunkNqLopn+gRjY8r54DzP7BL2fu3cMklyHJSMq16Ab0fBYYvbJjr+QSxKwoDjdN6OpsBrLwTuHjE3SPxfI6uZZ+jEwDDLS65BImTktF4A6MWAV3uaZjrqVSN17WrrgS2zQLyTwA7nqWFHKRQXQEcW8duxya77DIkToSYgEZa1+n4OnNJ47+PANn7ne/LZJJnTPZyPQfYvQAoKWjY69bG6W/YlX8CIoAOw112GRInQgyX69SYprBUVwLfv8VuB7Zin79f5Hg/JiPw1SRgSXcg/zf5xlcXVeXAFw8CP74N/G9KwwujLbLWss+3PyROFJYZEidCTGN0646vA4py2aoOk75mFys9/wOQe9Cxfg68A5z8Gii+CHyZ1DDLaO1ZCFw+yW6f/wHI+sj116yLq38C2d8DUAG3PeTSS5E4EWIamzhVV5qtpDtnAs07ALdOZF87Yj39fRTY+wq7rTMA188D/3uUtaZcxZ/fAQeXs9tdxrLPGfPM7qk7OPox+xw9vPbcO5kgcSLEWE5hufYXsD4JeLsrcOQj1/4YXcGxz4GiC4A+HIhNYffdOZO9BX4uA8g7Vn8flWXA/x5hV17uMgZI+YZN8ziXAexLc824b1wDNj/JbveaAty7BoiKAypLgS1PuSegX10J/PI5u819li6ExIkQw1lOhReAPS8By/uyAdDii8A3M4EPhjb8rXiTCbhwCNj3OnDsC6C8yL7zqiuBH2piTXfONOdtNWsHdL+P3f7BDutp53PAtT9Z4b57CdCyB3DPu+yx798ETn3Divb188DZ3UDWx8Cl4/ULSHkR8PMq4L1+wFsxrOic3c2Oe+vTQMklICQauOtldqrSmOXswqp/7QWOflJ7v2VXgb/2A+cPsPlqcnFmG3DjCiv00Qny9VsLKoZp3PdUi4uLYTAYUFRUhMDAwPpPaOqUXgYWRYv3tRsCtB0I/LgYqKipktnzX8AttwNaf0CrB7R+rIVx83rNo5AVA//m7CrF/qE1OVRMzY+WYX/Q1eVs0Le6HDBVsRaJ1o9tW10BnNkBnNwsnoys0bJ3ibqNB0I7s9etLBU/V5SwsZoT6eyP6elj4qTSy6eB9/qy2/d9DPgGA4yRFUK1mr2GRgsU/MaKMlRA8hb2c+DY8Rzw84qaSdcqdjl3IYG3AB0TgI4j2HiXsQowVgJVN4BTW9mxVd2w/ht4+wNVZezMgEd2AxG3mY/9tAz49nm2fvzIRWy7m9dZS+vKH2ygXngzQ6MFbokFWvcHwrqyK0cbK9lHdc1Yqm7WPN9gq6CWF7F/5/JiwCeQfR+BEawo5p8ABv4HGPqCHV8mFmd/gx4hTsuXL8ebb76J/Px89OzZE0uXLkWfPn3sOpfEyUFMJiCtFfulD4oCEl4FOt/N5kCVXmZjHsfXNfy4tAFA+yHs8utX/nDs3BGvA3c8br3/y4eAU1vs66P/DGD4AvE+YxXw6Tg2UA2wQtCsPaAPZa1LW8JjSWgM0HsKa82d2c5aYaX57LFhc4EBz4jbm4zARyOAi4fq7je4DSs6pXKnH6iAp48Dwa3rb1pDoxWnL7/8EpMmTcLKlSvRt29fLFmyBOnp6Thz5gxatKg/bZ7EyQlObwOKLgK3T7I9hSX3IBvLuVlYY62UsWKm1bNZ5r7BgI+BtYbK/gHKrgBll1lLCACgYsVOpWb79/JhHxrvmv/iNf/JTdVsnKXrWKD9MMDbh7W6Cn4Hft8InNwClBcKrLcaC06rZyekavVs0LbvE7ZveV85B2x8lLW2VBp2ipBKXWNdVJktjIjb2JiPrRVuKm8Af2exZZSDoszTjKrKWdE6s4O1OKrK2ffHWWRhXYDYyUDrfuYl5gH2n8PfR9h/BJ1GWpdmBtg7ZlufZoXKN7jmEcQKUnh3oEUX1uJhGDZmmHOAdfEKc2rGoKsZhzf72Xn71jz8WIvMJ5B91gWwVlTx3+wNkuI8oM2dQJ9HHfgyNWJx6tu3L3r37o1ly5YBAEwmEyIjIzF9+nQ899xz9Z5v7wfz5q7TuFZWhcpqE6qMJv7ZyDAwMQDDMDDVfFQqqNjflkoFlUU/ahWgUavhpVZBo1Gxz2rumd2vUgFqVU0fNT0wEP8ZVFBBXfMbVqtV0KgEfdT066VRQ6thn7lreGnU0Ki4c83PluMUjkE4Fu53InytAjsGc5812xa9qiwvYrFf2F7Y1tY3UDgOy8+FG5Ot69X2bTa3VdU6TnML7px6GtrRh0Pn2PicnDm/oQk3+MBbU3v42llxUvTE38rKSmRlZWHOnDn8PrVajfj4eGRmZto8p6KiAhUVZt+/uNi+lUQ2ZF1EQXFF/Q0JghDx3TOD0C5UL3u/ihanK1euwGg0IixMvCRSWFgYTp8+bfOctLQ0LFiwwOaxuphyZ1vcrDRB66U2PzSclaCCWi22chjG9n9pE8PAaGJQbWKfq4wm0etqowkM2HMZsFaZ5T884XGGAUw155uYmn6MDKpMJlQbGVSbTKisZmA0mVBtYvh97PnseGq/BlMzXnabP8aw53Ft+PHU9GU0MXx7RnCOLfjPytYxRmgtmMdl7o+xai8cOwPbFoqlxSMca31+guX7sjlw4YBtdlL3NWw1tfV5WluNjl3SVh+OHmf7Zmy2534PUizMulC0ODnDnDlzMGvWLP51cXExIiPrTxabOlCGSpIEQciGosWpefPm0Gg0KCgQ33EoKChAeHi4zXN0Oh10OhmK/RME4VYUnYSp1WoRGxuLPXv28PtMJhP27NmDuLg4N46MIAhXo2jLCQBmzZqF5ORk9OrVC3369MGSJUtQVlaGyZMnu3toBEG4EMWL0wMPPIB//vkHc+fORX5+Pm699Vbs3LnTKkhOEETjQvF5TlKhJEyCcC/O/gYVHXMiCKLpQuJEEIQiIXEiCEKRkDgRBKFISJwIglAkJE4EQSgSEieCIBQJiRNBEIqExIkgCEWi+OkrUuES4O0tOkcQhLxwvz1HJ6M0enEqKSkBALtqOhEE4TpKSkpgMBjsbt/o59aZTCbk5eUhICCgzop9XFG6Cxcu0Bw8GaDPUz48/bNkGAYlJSWIiIiA2taCDbXQ6C0ntVqNVq1a2d0+MDDQI78ASoU+T/nw5M/SEYuJgwLiBEEoEhIngiAUCYlTDTqdDvPmzaP64zJBn6d8NNXPstEHxAmC8EzIciIIQpGQOBEEoUhInAiCUCQkTgRBKBISpxqWL1+ONm3awMfHB3379sWhQ4fcPSTFk5aWht69eyMgIAAtWrTA2LFjcebMGVGb8vJypKamIiQkBHq9HhMmTLBawZmw5rXXXoNKpcKMGTP4fU3tsyRxAvDll19i1qxZmDdvHo4ePYqePXsiISEBly9fdvfQFM3+/fuRmpqKgwcPIiMjA1VVVbjrrrtQVlbGt5k5cya2bt2K9PR07N+/H3l5eRg/frwbR618Dh8+jFWrVqFHjx6i/U3us2QIpk+fPkxqair/2mg0MhEREUxaWpobR+V5XL58mQHA7N+/n2EYhiksLGS8vb2Z9PR0vs2pU6cYAExmZqa7hqloSkpKmOjoaCYjI4MZNGgQ8/TTTzMM0zQ/yyZvOVVWViIrKwvx8fH8PrVajfj4eGRmZrpxZJ5HUVERAKBZs2YAgKysLFRVVYk+286dOyMqKoo+21pITU3FqFGjRJ8Z0DQ/y0Y/8bc+rly5AqPRaLW8eVhYGE6fPu2mUXkeJpMJM2bMQP/+/dGtWzcAQH5+PrRaLYKCgkRtw8LCkJ+f74ZRKpv169fj6NGjOHz4sNWxpvhZNnlxIuQhNTUVv/32G3788Ud3D8UjuXDhAp5++mlkZGTAx8fH3cNRBE3erWvevDk0Go3VXY+CggKEh4e7aVSexbRp0/DNN99g7969ovI04eHhqKysRGFhoag9fbbWZGVl4fLly7j99tvh5eUFLy8v7N+/H++++y68vLwQFhbW5D7LJi9OWq0WsbGx2LNnD7/PZDJhz549iIuLc+PIlA/DMJg2bRo2bdqE7777Dm3bthUdj42Nhbe3t+izPXPmDHJzc+mztWDYsGE4ceIEjh07xj969eqFpKQkfrvJfZbujsgrgfXr1zM6nY5Zu3Ytc/LkSWbq1KlMUFAQk5+f7+6hKZonnniCMRgMzL59+5hLly7xjxs3bvBtHn/8cSYqKor57rvvmCNHjjBxcXFMXFycG0ftOQjv1jFM0/ssSZxqWLp0KRMVFcVotVqmT58+zMGDB909JMUDwOZjzZo1fJubN28yTz75JBMcHMz4+fkx48aNYy5duuS+QXsQluLU1D5LKplCEIQiafIxJ4IglAmJE0EQioTEiSAIRULiRBCEIiFxIghCkZA4EQShSEicCIJQJCRORKNFpVJh8+bN7h4G4SQkToRLSElJgUqlsnqMGDHC3UMjPAQqmUK4jBEjRmDNmjWifU1t1VrCechyIlyGTqdDeHi46BEcHAyAdblWrFiBxMRE+Pr6ol27dtiwYYPo/BMnTmDo0KHw9fVFSEgIpk6ditLSUlGbjz76CF27doVOp0PLli0xbdo00fErV65g3Lhx8PPzQ3R0NLZs2eLaN03IBokT4TZefPFFTJgwAcePH0dSUhIefPBBnDp1CgBQVlaGhIQEBAcH4/Dhw0hPT8fu3btF4rNixQqkpqZi6tSpOHHiBLZs2YIOHTqIrrFgwQLcf//9+PXXXzFy5EgkJSXh2rVrDfo+CSdx98xjonGSnJzMaDQaxt/fX/R45ZVXGIZhKxo8/vjjonP69u3LPPHEEwzDMMz777/PBAcHM6Wlpfzxbdu2MWq1mi9lExERwTz//PO1jgEA88ILL/CvS0tLGQDMjh07ZHufhOugmBPhMoYMGYIVK1aI9nGLHwCwKpIWFxeHY8eOAQBOnTqFnj17wt/fnz/ev39/mEwmnDlzBiqVCnl5eRg2bFidYxAur+Tv74/AwEBa8stDIHEiXIa/v7+VmyUXvr6+drXz9vYWvVapVDCZTK4YEiEzFHMi3MbBgwetXsfExAAAYmJicPz4cdECnQcOHIBarUanTp0QEBCANm3aiMrWEo0LspwIl1FRUWG1bJGXlxeaN28OAEhPT0evXr1w55134vPPP8ehQ4ewevVqAEBSUhLmzZuH5ORkzJ8/H//88w+mT5+Ohx56iF/Ga/78+Xj88cfRokULJCYmoqSkBAcOHMD06dMb9o0SrsHdQS+icZKcnGyzhG+nTp0YhmGD1cuXL2eGDx/O6HQ6pk2bNsyXX34p6uPXX39lhgwZwvj4+DDNmjVjHn30UaakpETUZuXKlUynTp0Yb29vpmXLlsz06dP5YwCYTZs2idobDAZRGWFCuVCZXsItqFQqbNq0CWPHjnX3UAiFQjEngiAUCYkTQRCKhALihFugaAJRH2Q5EQShSEicCIJQJCROBEEoEhIngiAUCYkTQRCKhMSJIAhFQuJEEIQiIXEiCEKRkDgRBKFI/h88woXAWnHM/wAAAABJRU5ErkJggg=="},"metadata":{}}],"execution_count":30},{"cell_type":"code","source":"plt.tight_layout()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:25:28.345951Z","iopub.execute_input":"2025-08-31T17:25:28.346284Z","iopub.status.idle":"2025-08-31T17:25:28.353028Z","shell.execute_reply.started":"2025-08-31T17:25:28.346255Z","shell.execute_reply":"2025-08-31T17:25:28.35221Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 0 Axes>"},"metadata":{}}],"execution_count":31},{"cell_type":"code","source":"test_dataset = image_dataset_from_directory(\n    test_dir,\n    labels=None,\n    color_mode=\"rgb\",\n    shuffle=False,\n    image_size=img_size,\n    batch_size=batch_size,\n    label_mode='categorical'\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:25:37.044937Z","iopub.execute_input":"2025-08-31T17:25:37.045283Z","iopub.status.idle":"2025-08-31T17:25:50.68002Z","shell.execute_reply.started":"2025-08-31T17:25:37.045254Z","shell.execute_reply":"2025-08-31T17:25:50.679054Z"}},"outputs":[{"name":"stdout","text":"Found 10640 files belonging to 1 classes.\n","output_type":"stream"}],"execution_count":32},{"cell_type":"code","source":"for images in test_dataset:\n    print(images.shape)\n    break","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:25:59.560671Z","iopub.execute_input":"2025-08-31T17:25:59.56098Z","iopub.status.idle":"2025-08-31T17:25:59.601076Z","shell.execute_reply.started":"2025-08-31T17:25:59.560957Z","shell.execute_reply":"2025-08-31T17:25:59.600306Z"}},"outputs":[{"name":"stdout","text":"(32, 224, 224, 3)\n","output_type":"stream"}],"execution_count":33},{"cell_type":"code","source":"predictions = model.predict(test_dataset)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:26:06.696025Z","iopub.execute_input":"2025-08-31T17:26:06.696367Z","iopub.status.idle":"2025-08-31T17:26:16.31987Z","shell.execute_reply.started":"2025-08-31T17:26:06.696337Z","shell.execute_reply":"2025-08-31T17:26:16.319149Z"}},"outputs":[{"name":"stdout","text":"333/333 [==============================] - 9s 28ms/step\n","output_type":"stream"}],"execution_count":34},{"cell_type":"code","source":"img_list = os.listdir(test_dir)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:26:29.11353Z","iopub.execute_input":"2025-08-31T17:26:29.114379Z","iopub.status.idle":"2025-08-31T17:26:29.121266Z","shell.execute_reply.started":"2025-08-31T17:26:29.114348Z","shell.execute_reply":"2025-08-31T17:26:29.120532Z"}},"outputs":[],"execution_count":37},{"cell_type":"code","source":"labels_list = sorted(os.listdir(train_dir))\nprint(labels_list)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:26:37.375243Z","iopub.execute_input":"2025-08-31T17:26:37.375905Z","iopub.status.idle":"2025-08-31T17:26:37.382693Z","shell.execute_reply.started":"2025-08-31T17:26:37.375872Z","shell.execute_reply":"2025-08-31T17:26:37.381833Z"}},"outputs":[{"name":"stdout","text":"['0', '1', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '2', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '3', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '4', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '5', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '6', '60', '61', '62', '63', '64', '7', '8', '9']\n","output_type":"stream"}],"execution_count":38},{"cell_type":"code","source":"predictions[1][22]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:26:43.100865Z","iopub.execute_input":"2025-08-31T17:26:43.101199Z","iopub.status.idle":"2025-08-31T17:26:43.107134Z","shell.execute_reply.started":"2025-08-31T17:26:43.101165Z","shell.execute_reply":"2025-08-31T17:26:43.106231Z"}},"outputs":[{"execution_count":39,"output_type":"execute_result","data":{"text/plain":"0.9999701"},"metadata":{}}],"execution_count":39},{"cell_type":"code","source":"predictions.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:26:45.814383Z","iopub.execute_input":"2025-08-31T17:26:45.814744Z","iopub.status.idle":"2025-08-31T17:26:45.820457Z","shell.execute_reply.started":"2025-08-31T17:26:45.814713Z","shell.execute_reply":"2025-08-31T17:26:45.819529Z"}},"outputs":[{"execution_count":40,"output_type":"execute_result","data":{"text/plain":"(10640, 65)"},"metadata":{}}],"execution_count":40},{"cell_type":"code","source":"df_predictions = pd.DataFrame(columns=['ID','Label'], dtype=(np.int32,np.int32))\n\npredictions_mod = np.argmax(predictions, 1)\n\nfor idx,image in enumerate(sorted(img_list)):\n\n    df2 = pd.DataFrame([[int(image.split(\".\")[0]), int(labels_list[predictions_mod[idx]])]], columns=['ID','Label'])\n    df_predictions = pd.concat([df_predictions, df2])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:27:03.618112Z","iopub.execute_input":"2025-08-31T17:27:03.61896Z","iopub.status.idle":"2025-08-31T17:27:07.342634Z","shell.execute_reply.started":"2025-08-31T17:27:03.618928Z","shell.execute_reply":"2025-08-31T17:27:07.34193Z"}},"outputs":[],"execution_count":43},{"cell_type":"code","source":"print(predictions_mod)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:27:08.621003Z","iopub.execute_input":"2025-08-31T17:27:08.621742Z","iopub.status.idle":"2025-08-31T17:27:08.626446Z","shell.execute_reply.started":"2025-08-31T17:27:08.621713Z","shell.execute_reply":"2025-08-31T17:27:08.625589Z"}},"outputs":[{"name":"stdout","text":"[28 22 22 ... 61 61 61]\n","output_type":"stream"}],"execution_count":44},{"cell_type":"code","source":"df_predictions.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:27:15.002147Z","iopub.execute_input":"2025-08-31T17:27:15.003086Z","iopub.status.idle":"2025-08-31T17:27:15.013152Z","shell.execute_reply.started":"2025-08-31T17:27:15.003041Z","shell.execute_reply":"2025-08-31T17:27:15.012142Z"}},"outputs":[{"execution_count":45,"output_type":"execute_result","data":{"text/plain":"     ID  Label\n0     0     34\n0     1     29\n0    10     29\n0   100     29\n0  1000     32","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>ID</th>\n      <th>Label</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>34</td>\n    </tr>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>29</td>\n    </tr>\n    <tr>\n      <th>0</th>\n      <td>10</td>\n      <td>29</td>\n    </tr>\n    <tr>\n      <th>0</th>\n      <td>100</td>\n      <td>29</td>\n    </tr>\n    <tr>\n      <th>0</th>\n      <td>1000</td>\n      <td>32</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":45},{"cell_type":"code","source":"df_predictions.sort_values(by='ID', inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:27:21.200367Z","iopub.execute_input":"2025-08-31T17:27:21.201084Z","iopub.status.idle":"2025-08-31T17:27:21.206496Z","shell.execute_reply.started":"2025-08-31T17:27:21.201052Z","shell.execute_reply":"2025-08-31T17:27:21.20557Z"}},"outputs":[],"execution_count":46},{"cell_type":"code","source":"df_predictions.reset_index(drop=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:27:26.609288Z","iopub.execute_input":"2025-08-31T17:27:26.609975Z","iopub.status.idle":"2025-08-31T17:27:26.620224Z","shell.execute_reply.started":"2025-08-31T17:27:26.609942Z","shell.execute_reply":"2025-08-31T17:27:26.619452Z"}},"outputs":[{"execution_count":47,"output_type":"execute_result","data":{"text/plain":"          ID  Label\n0          0     34\n1          1     29\n2          2     29\n3          3     29\n4          4     34\n...      ...    ...\n10635  10635      9\n10636  10636      9\n10637  10637      9\n10638  10638      9\n10639  10639      9\n\n[10640 rows x 2 columns]","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>ID</th>\n      <th>Label</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>34</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n      <td>29</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2</td>\n      <td>29</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>3</td>\n      <td>29</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>4</td>\n      <td>34</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>10635</th>\n      <td>10635</td>\n      <td>9</td>\n    </tr>\n    <tr>\n      <th>10636</th>\n      <td>10636</td>\n      <td>9</td>\n    </tr>\n    <tr>\n      <th>10637</th>\n      <td>10637</td>\n      <td>9</td>\n    </tr>\n    <tr>\n      <th>10638</th>\n      <td>10638</td>\n      <td>9</td>\n    </tr>\n    <tr>\n      <th>10639</th>\n      <td>10639</td>\n      <td>9</td>\n    </tr>\n  </tbody>\n</table>\n<p>10640 rows × 2 columns</p>\n</div>"},"metadata":{}}],"execution_count":47},{"cell_type":"code","source":"df_predictions.to_csv('predictions_11.csv', index=False, header=True) ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T17:27:37.552083Z","iopub.execute_input":"2025-08-31T17:27:37.552773Z","iopub.status.idle":"2025-08-31T17:27:37.568778Z","shell.execute_reply.started":"2025-08-31T17:27:37.552742Z","shell.execute_reply":"2025-08-31T17:27:37.568035Z"}},"outputs":[],"execution_count":49},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}