{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "00b205de",
   "metadata": {},
   "outputs": [],
   "source": [
    "# step 1 import libraries\n",
    "import warnings\n",
    "from pathlib import Path\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from pandas.api.types import is_numeric_dtype\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.metrics import (\n",
    "    accuracy_score,\n",
    "    classification_report,\n",
    "    confusion_matrix,\n",
    "    f1_score,\n",
    "    precision_score,\n",
    "    recall_score,\n",
    ")\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import LabelEncoder, StandardScaler\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "pd.set_option(\"display.max_columns\", None)\n",
    "pd.set_option(\"display.width\", 120)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "ccb831e9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((491, 7),\n",
       " ['Product_Name',\n",
       "  'Seller_Name',\n",
       "  'Overall_Rating',\n",
       "  'Overall_Review',\n",
       "  'Seller_Rating',\n",
       "  'Average_Rating',\n",
       "  'Product_Quality'],\n",
       "      Product_Name         Seller_Name  Overall_Rating  Overall_Review  Seller_Rating  Average_Rating Product_Quality\n",
       " 0   RedmiNote6Pro   FlashstarCommerce          352708           32857            4.7             4.4       Excellent\n",
       " 1   RedmiNote6Pro         SuperComNet          352708           32857            4.3             4.1       Excellent\n",
       " 2      RedmiNote7         SuperComNet           10387            1057            4.3             4.6       Excellent\n",
       " 3         RedmiY1        samaymobiles           17421            1634            3.1             3.7            Good\n",
       " 4   RedmiNote6Pro   FlashstarCommerce           72964            7073            4.3             4.3       Excellent)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 2 load mobile dataset\n",
    "\n",
    "file_path = Path(\"data/mobile-info.xlsx\")\n",
    "if not file_path.exists():\n",
    "    raise FileNotFoundError(\"data/mobile-info.xlsx not found in experiment-11/data\")\n",
    "\n",
    "df = pd.read_excel(file_path)\n",
    "df.columns = df.columns.str.strip().str.replace(\" \", \"_\", regex=False)\n",
    "\n",
    "df.shape, list(df.columns), df.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "4706156b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.DataFrame'>\n",
      "RangeIndex: 491 entries, 0 to 490\n",
      "Data columns (total 7 columns):\n",
      " #   Column           Non-Null Count  Dtype  \n",
      "---  ------           --------------  -----  \n",
      " 0   Product_Name     491 non-null    str    \n",
      " 1   Seller_Name      491 non-null    str    \n",
      " 2   Overall_Rating   491 non-null    int64  \n",
      " 3   Overall_Review   491 non-null    int64  \n",
      " 4   Seller_Rating    491 non-null    float64\n",
      " 5   Average_Rating   491 non-null    float64\n",
      " 6   Product_Quality  491 non-null    str    \n",
      "dtypes: float64(2), int64(2), str(3)\n",
      "memory usage: 27.0 KB\n",
      "None\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAGGCAYAAADmRxfNAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAARkZJREFUeJzt3Qm8TWX///8PHVOGI8pUx1DJPIVQKlOOMaJBt0olmhC6JYVKilS46US6DXVH7rqLZjI3mSWRSJkiJMMJmffv8b7+37X/ex+HsI6z9z7n9Xw8Fmevvfbaa++99jnXZ13X53NlCQQCAQMAAAAAH7L6eTAAAAAAEFgAAAAASBP0WAAAAADwjcACAAAAgG8EFgAAAAB8I7AAAAAA4BuBBQAAAADfCCwAAAAA+EZgAQAAAMA3AgsAOAfuvvtuK1myZIZ9bzds2GBZsmSxCRMmWEah16LXpNeG0z+v9Z49/fTTvGUACCwARDc1Wk5nmTt3brocT3Jysj3zzDNWpUoVy5Mnj+XKlcsqVqxovXv3tq1bt6bLMWRU9erVC/tMCxQoYDVr1rRx48bZ8ePHLdbp/FADfPny5We9j02bNtkDDzzgGvc5cuSwQoUK2U033WTffPONRQsdi17nnj17In0oANJZXHo/IQCcif/85z9ht998802bMWPGCevLlSt3zt/YX375xRo1auQad7fccot17tzZsmfPbitWrLCxY8falClTbO3atZYZlChRwv766y/Lli1bmu73kksusUGDBrmff//9d/d5d+zY0b2vgwcPtlgPLBSUKiioWrXqGT/+66+/tmbNmrmf77vvPitfvrxt27bN9bTUrVvXkpKS7MEHH7T0pvMgLi4uLLDQ61TvRv78+dP9eABEDoEFgKh2xx13hN1esGCBCyxSrj/Xjh49am3atLHt27e73hE15EI999xz9sILL1hmoR6FnDlzpvl+4+Pjwz7b+++/38qUKWOvvPKKPfvss6kGMurNOHz48Dk5nmixe/duu/nmm10PmQKMyy67LHhfz549LTEx0bp27WrVqlWz2rVrp+uxZeT3HcCZIccCQMzbv3+/Pfroo5aQkOCGh6gh+tJLL1kgEDihMdylSxebOHGi20YNourVq9sXX3zxt8/x3nvv2XfffWdPPvnkCUGF5MuXzwUXp6Jjuvrqq61gwYKugajn/t///nfCdgqc9By62qvhVjrWJ554ImybkSNHWoUKFez888+3Cy64wGrUqGGTJk0K22bLli127733WuHChd37ou01rCil09nX6eRY6Aq1jlfP27p1a/fzRRddZP/85z/t2LFjdjZ0TGoo6zNWD0bKz1HHrdc2bdo0d9+3335rTZs2dZ+Hnr9hw4YuGE1p1apV1qBBA/c5qJdk4MCBqQ63Oln+gHod9HpDaehPjx49gsOUtN+77rrLdu7c6YJRDeuSe+65Jzjc63RzVF577TXXO/Hiiy+GBRWi1/DGG2+4nwcMGBBcr+PWc5xOLskHH3xgzZs3t2LFirlj13MokDudzy30PdL/vXr1cj+XKlUq+Dr1XNdff70bQpganeMKjgDENnosAMQ0BQ833nijzZkzxw2Z0RCT6dOnu8aNGrjDhg0L237evHn23//+17p16+YaUK+++qo1adLEFi1a5HIlTubDDz90/995551nfaz/+te/3LG2b9/eXWGfPHmyG1L18ccfu0ad1+Bt0aKFVa5c2TUSdYzr1q1zV6k9r7/+ujt+XcF+5JFH7ODBg2441sKFC+0f//iH20Y9K2qQe41wNfA/++wz9x4pT6R79+6nva8zoYaoGoi1atVygdTMmTPt5Zdfdg3Vsx2moyFo5513XtiwmtmzZ9s777zjXtuFF17oGvN676699loXVDz22GOud0MNcuVu6HPXMYka6PXr13e9UI8//rjlzp3bxowZ4xroZ2vfvn3uuVevXu2CuSuvvNIFFDpvfv31VzdUT59n//793RA6bSsKNE/HRx995ALhW2+9NdX71YhXMKr3W5/hmfYiKNhQIKbeD/2v91fHqnNFwczpUq+ehq29/fbb7runz0Z0/um706lTJ1u5cmXYd23x4sXuMX379j2jYwYQhQIAEEMefvhhdUMEb0+dOtXdHjhwYNh2N998cyBLliyBdevWBddpOy1LliwJrtu4cWMgZ86cgZtuuumUz1utWrVAfHz8aR9nhw4dAiVKlAhbd+DAgbDbhw8fDlSsWDHQoEGD4Lphw4a5Y/z9999Puu9WrVoFKlSocMrn79ixY6Bo0aKBnTt3hq1v166dex3esZzOvlKzfv16d5zjx48Pe81aN2DAgBPeu+rVq//tPq+//vpA2bJl3WvXsnr16kC3bt3cPlu2bBncTrezZs0aWLVqVdjjW7duHcie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p47t2bPHli5datWrV3frZs+ebcePH7datWqddL85cuRwCwAAAIAMEFhovol169YFb69fv96WL1/uciSKFi1qN998sys1qzKyx44dC+ZN6P7s2bNbuXLlrEmTJtapUycbPXq0C0S6dOli7dq1oyIUAAAAkFkCiyVLllj9+vWDt3v27On+79Chgz399NP24YcfuttVq1YNe5x6L+rVq+d+njhxogsmGjZs6KpBtW3b1kaMGJGurwMAAADI7CIaWCg4UEL2yZzqPo96LyZNmpTGRwYAAAAgQyVvAwAAAIh+BBYAAAAAfCOwAAAAAOAbgQUAAAAA3wgsAAAAAPhGYAEAAADANwILAAAAAL4RWAAAAADwjcACAAAAgG8EFgAAAAB8I7AAAAAA4BuBBQAAAADfCCwAAAAA+EZgAQAAAMA3AgsAAAAAvhFYAAAAAPCNwAIAAACAbwQWAAAAAHyL878LAABQ8vFPeBPOsQ2Dm/MeA1GMHgsAAAAAvhFYAAAAAPCNwAIAAABAbAcWX3zxhbVs2dKKFStmWbJksalTp4bdHwgErH///la0aFHLlSuXNWrUyH766aewbXbt2mXt27e3fPnyWf78+a1jx462b9++dH4lAAAAQOYW0cBi//79VqVKFUtKSkr1/iFDhtiIESNs9OjRtnDhQsudO7clJibawYMHg9soqFi1apXNmDHDPv74YxesdO7cOR1fBQAAAICIVoVq2rSpW1Kj3orhw4db3759rVWrVm7dm2++aYULF3Y9G+3atbPVq1fbtGnTbPHixVajRg23zciRI61Zs2b20ksvuZ4QAAAAAJk4x2L9+vW2bds2N/zJEx8fb7Vq1bL58+e72/pfw5+8oEK0fdasWV0Px8kcOnTIkpOTwxYAAAAAGTCwUFAh6qEIpdveffq/UKFCYffHxcVZgQIFgtukZtCgQS5I8ZaEhIRz8hoAAACAzCJqA4tzqU+fPrZ3797gsnnz5kgfEgAAABDTojawKFKkiPt/+/btYet127tP/+/YsSPs/qNHj7pKUd42qcmRI4erIhW6AAAAAMiAgUWpUqVccDBr1qzgOuVCKHeiTp067rb+37Nnjy1dujS4zezZs+348eMuFwMAAABAJqgKpfkm1q1bF5awvXz5cpcjUbx4cevevbsNHDjQSpcu7QKNfv36uUpPrVu3dtuXK1fOmjRpYp06dXIlaY8cOWJdunRxFaOoCAUAAABEeY/FpZdean/88ccJ69V7oPtO15IlS6xatWpukZ49e7qfNSmePPbYY9a1a1c3L0XNmjVdIKLysjlz5gzuY+LEiVa2bFlr2LChKzNbt25dGzNmzNm8LAAAAADp2WOxYcMGO3bsWKplXLds2XLa+6lXr56br+JkNBv3gAED3HIy6t2YNGnSaT8nAAAAgAgHFh9++GHw5+nTp7tSrR4FGsqHKFmyZNoeIQAAAICMFVh4uQ3qSejQoUPYfdmyZXNBxcsvv5y2RwgAAAAgYwUWqrYkSqRevHixXXjhhefquAAAAABk9BwLVW8CAAAAAN/lZpVPoUUT1Hk9GZ5x48ad7W4BAAAAZJbA4plnnnGVmmrUqGFFixZ1ORcAAACIbSUf/yTSh5DhbRjc3DKqswosNBndhAkT7M4770z7IwIAAACQOSbIO3z4sF199dVpfzQAAAAAMk9gcd999zEpHQAAAAB/Q6EOHjxoY8aMsZkzZ1rlypXdHBahhg4deja7BQAAAJCZAosVK1ZY1apV3c8rV64Mu49EbgAAACDzOavAYs6cOWl/JAAAAAAyV44FAAAAAPjusahfv/4phzzNnj37bHYLAAAAIDMFFl5+hefIkSO2fPlyl2/RoUOHtDo2AAAAABk5sBg2bFiq659++mnbt2+f32MCAAAAkJlzLO644w4bN25cWu4SAAAAQGYLLObPn285c+ZMy10CAAAAyKhDodq0aRN2OxAI2G+//WZLliyxfv36pdWxAQAAAMjIgUV8fHzY7axZs1qZMmVswIAB1rhx47Q6NgAAAAAZObAYP3582h8JAAAAgMyZY7F06VJ766233PLtt99aWjt27JgbWlWqVCnLlSuXXXbZZfbss8+6oVce/dy/f38rWrSo26ZRo0b2008/pfmxAAAAAEjjHosdO3ZYu3btbO7cuZY/f363bs+ePW7ivMmTJ9tFF11kaeGFF16wUaNG2RtvvGEVKlRwORz33HOPG4rVrVs3t82QIUNsxIgRbhsFIApEEhMT7YcffiCRHAAAAIjmHouuXbvan3/+aatWrbJdu3a5RZPjJScnBxv8aeGbb76xVq1aWfPmza1kyZJ28803uxyORYsWBXsrhg8fbn379nXbVa5c2d58803bunWrTZ06Nc2OAwAAAMA5CCymTZtmr776qpUrVy64rnz58paUlGSfffaZpZWrr77aZs2aZWvXrnW3v/vuO/vqq6+sadOm7vb69ett27ZtbviTR70ZtWrVcqVvAQAAAETxUKjjx49btmzZTlivdbovrTz++OOuF6Rs2bJ23nnnuZyL5557ztq3b+/uV1AhhQsXDnucbnv3pebQoUNu8eg5AAAAAKRzj0WDBg3skUcecUOOPFu2bLEePXpYw4YNLa288847NnHiRJs0aZItW7bM5VG89NJL7n8/Bg0a5Ho2vCUhISHNjhkAAADIjM4qsHjllVfcVX7lPahSkxYlTmvdyJEj0+zgevXq5XotlCheqVIlu/POO13wosBAihQp4v7fvn172ON027svNX369LG9e/cGl82bN6fZMQMAAACZ0VkNhdIVfvUgzJw503788Ue3TvkWobkOaeHAgQNu8r1QGhLlDbdSMKMAQnkYVatWdesU3CxcuNAefPDBk+43R44cbgEAAAAQgcBi9uzZ1qVLF1uwYIHly5fPbrjhBreIrvyrJOzo0aPt2muvTZODa9mypcupKF68uNu35soYOnSo3Xvvve7+LFmyWPfu3W3gwIFWunTpYLnZYsWKWevWrdPkGAAAAACkcWCh0q6dOnVyQUVKylW4//77XcM/rQILDatSoPDQQw+5uTMUMOg5NCGe57HHHrP9+/db586d3VwadevWdVWrcubMmSbHAAAAACCNcyxU7rVJkyYnvV9zTGg27rSSN29eF8xs3LjR/vrrL/v5559d70T27NmD26jXYsCAAa4K1MGDB93wrCuuuCLNjgEAAABAGgcWSopOrcysJy4uzn7//fcz2SUAAACAzBZYXHzxxW6G7ZNZsWKFFS1aNC2OCwAAAEBGDSyaNWvmch405CglDVV66qmnrEWLFml5fAAAAAAyWvJ237597f3333c5DKoOVaZMGbdeJWeTkpLczNhPPvnkuTpWAAAAABkhsChcuLB98803bo4ITTIXCASCCdSJiYkuuNA2AAAAADKXM54gr0SJEvbpp5/a7t27bd26dS640BwSF1xwwbk5QgAAAAAZc+ZtUSBRs2bNtD0aAAAAABk/eRsAAAAAUkNgAQAAAMA3AgsAAAAAvhFYAAAAAPCNwAIAAACAbwQWAAAAAHwjsAAAAADgG4EFAAAAAN8ILAAAAAD4RmABAAAAwDcCCwAAAAC+EVgAAAAA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AAAAICPnWAAAAACIPAILAAAAAL4RWAAAAADwjcACAEL8+uuvtnPnTt4TAADOEIEFAPyfQ4cOWfHixW38+PF27Ngx3hfEPM3rBADphcACaero0aO8o4hJR44ccWULNf/N5MmTXelqIFZ5BR+zZuXPPGL/XOZCT+zgNw58mzdvnr3//vvu57i4/39qFCoZI1boj1a2bNnczwMHDrRvv/3W5syZw9VexIQlS5bY2LFjw3oosmTJ4v5fu3atXXPNNW4bIJboXFY7Qufyeeed5y5cbt682d1H+yJ6EVjAt+eff95Gjx5ty5cvtwceeMBuvfXWsD9sQLTTHy1R40w5Fppk85133rHffvst0ocGnNJff/1lH330kQsgQnsoVq5caR988IENHz7cChQoYLlz5+adREzRuax2hC78qI1x8cUX26RJk9x9tC+iV4aYeRvpfxVBX/jDhw9b9uzZ7aGHHrK77rrLatasaVdddZX169ePjwQxZc2aNdamTRs7cOCA/eMf/7Dff//dVq9e7a7y6o8ZEK1y5cplTz31VNiQpw0bNljv3r3tq6++subNm9uUKVPCepOBaG5bhN5WD7LaGd9995299tpr1rRp04geI/4ePRY4425J74uvL7toPHrOnDnt+uuvd1fImjRpwhASRB1d9Uo5TtfrTp82bZpreC1YsMCee+45+/LLL61ChQr2+uuv265duyJ0xEDqUg4D0e9kBcH63SslS5a0Fi1auKu61157rTu3GaOOaKVzM7Rt4dFtjYR44okn3DncunVrAuQYQGCBv+WN2fW6Jb/++msbPHiwa3zJ22+/bW+88YatW7fOZs+eHdwWiBb6o6XhTlr++OMP27p1a1h3+scff2xVqlSxwoULuz9yapgNGjTIBRzLli2L8NEjs0oZDOh3scaZpzYMRCWS586da2+99Za7rYCiUqVK9tlnn7nb/E5GtNLvZZ3T6mFLSkpyF3gOHjzo7hswYIDlz5/fLd62iG60/vD3J8n/BQlbtmyxp59+2l0V+/DDD93VgxdffNHdp3VqlH366afBcemUOUS00B8tBb433nijlStXzlq2bGmPPPKIWydlypSxVatWBc93nbs33HCDCzA0pnfPnj0RfgXIjAGF14hSsKBzUOemrtwmJye7ghkawqccC7nyyivtjjvuCP5OrlixovsdrW1UjEDfAX4nIxr9/PPPrsCAetn+97//WePGje3RRx+1P//8053HdevWtZ9++sktQuJ2dCOwwN+WddMftC5durg/WqrIoKRA9Voor0J/3HS1Vzp37ux6MTQW0p1c9FogAlJrPClnQuewKj8p0fXuu+921cxUbEDne/369d15PmPGDNcA07Jjxw63/fTp013DDEgvCih0Xvbv399dqe3evbvt37/f9bbdf//9lpCQYM8884xriClAlkKFCtlNN93kfkd7v5PVWLvkkkvc2HQh4RXRWDJ2woQJlidPHte2+Pzzz23kyJE2a9asYL7mww8/7C78LFq0yN3mPI5uBBYI0pfeK+sWSn/YVN9fAUPBggWtRIkSbjv9gbvooouCVRo6duzotp04caKtX7/edcv/5z//cfdxhQHpNYdKaEDr/SFbsWKFCySeffZZq1WrlnXt2tXlUqgC1Lhx41yCa+XKle2xxx6zTZs2ufNbQ6DUa7Fv3z53pYxzGOlBRTEUNOh3roJanZ8a5qTAQRX4FPBqeJN+H48aNcolZnu/Z1XNrEGDBvbCCy8EezEaNmzoLvioapTOa85jpCedb7rYk1rbwrtfIyDUk6wgWBdzdBFTwcSYMWPc9yExMdEuvfRSNyJCv7O9xyE6EVhkMvoyqntRX1j9sQqlL70aUY8//rhrUOlqma4aSPv27d1VstBJw8qWLeuuiP3444/B3Ipu3brZL7/84sb3NmrUyFXWEa4wIC2caiiHV/VGge3QoUNdMOH9IdOQJwUOefPmDW5fu3Zt1whTo0zFB/QYVYWqV6+e21bDpVSBREMA1RvHOYz0oN/LuoKrKmULFy50/4saXBoW8sorr9jVV1/tAgv9rF4MBRyiCma33Xabff/99zZ//nxXYKNGjRrue6ALPcJ5jPQ6j73zTRd71O5Q75rOR12UVDlvbztdkMyXL1/wsTpf1X5QMK38Ta9toZw3XSDiPI5uBBaZiCJ/fcl19VVDQL755puw+1VVpHr16i5xSl9qjXu8/fbb3bAnXflSsLFx40b3R8ujdUWKFHGVoUTDo9RQU9e7riB7f/CAtCogIDoHdX7qnPaoC129aSq9qYICOod79erl7itevLgrwameNI9635QXpCvD+uNWqlQp1/gaMWKEO+91ZUyBhbrogfRSrFgxa9eunatGpt+3ovNcdfz1v4IH/f5WL5vmp/jvf//rzmud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",
      "text/plain": [
       "<Figure size 800x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "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>Count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Product_Quality</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Excellent</th>\n",
       "      <td>163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Good</th>\n",
       "      <td>130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fair</th>\n",
       "      <td>105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Poor</th>\n",
       "      <td>93</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 Count\n",
       "Product_Quality       \n",
       "Excellent          163\n",
       "Good               130\n",
       "Fair               105\n",
       "Poor                93"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 3 inspect schema and target column\n",
    "\n",
    "print(df.info())\n",
    "\n",
    "schema = pd.DataFrame({\n",
    "    \"Column\": df.columns,\n",
    "    \"Data Type\": df.dtypes.astype(str).values,\n",
    "    \"Null Count\": df.isna().sum().values,\n",
    "    \"Unique Values\": df.nunique().values,\n",
    "})\n",
    "\n",
    "schema\n",
    "\n",
    "# target variable for classification\n",
    "if \"Product_Quality\" in df.columns:\n",
    "    target_col = \"Product_Quality\"\n",
    "else:\n",
    "    target_col = df.columns[-1]\n",
    "\n",
    "class_distribution = df[target_col].value_counts(dropna=False).sort_values(ascending=False).to_frame(name=\"Count\")\n",
    "\n",
    "plt.figure(figsize=(8, 4))\n",
    "class_distribution.head(10).plot(kind=\"bar\", legend=False, ax=plt.gca())\n",
    "plt.title(f\"Top Classes in {target_col}\")\n",
    "plt.ylabel(\"Count\")\n",
    "plt.xlabel(target_col)\n",
    "plt.xticks(rotation=25, ha=\"right\")\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "class_distribution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "9d34132a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "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>Product_Name</th>\n",
       "      <th>Seller_Name</th>\n",
       "      <th>Overall_Rating</th>\n",
       "      <th>Overall_Review</th>\n",
       "      <th>Seller_Rating</th>\n",
       "      <th>Average_Rating</th>\n",
       "      <th>Product_Quality</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>352708</td>\n",
       "      <td>32857</td>\n",
       "      <td>4.7</td>\n",
       "      <td>4.4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>352708</td>\n",
       "      <td>32857</td>\n",
       "      <td>4.3</td>\n",
       "      <td>4.1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>13</td>\n",
       "      <td>13</td>\n",
       "      <td>10387</td>\n",
       "      <td>1057</td>\n",
       "      <td>4.3</td>\n",
       "      <td>4.6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>14</td>\n",
       "      <td>21</td>\n",
       "      <td>17421</td>\n",
       "      <td>1634</td>\n",
       "      <td>3.1</td>\n",
       "      <td>3.7</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>72964</td>\n",
       "      <td>7073</td>\n",
       "      <td>4.3</td>\n",
       "      <td>4.3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Product_Name  Seller_Name  Overall_Rating  Overall_Review  Seller_Rating  Average_Rating  Product_Quality\n",
       "0            12            1          352708           32857            4.7             4.4                0\n",
       "1            12           13          352708           32857            4.3             4.1                0\n",
       "2            13           13           10387            1057            4.3             4.6                0\n",
       "3            14           21           17421            1634            3.1             3.7                2\n",
       "4            12            1           72964            7073            4.3             4.3                0"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 4 clean data and encode categorical columns\n",
    "\n",
    "df = df.drop_duplicates().copy()\n",
    "\n",
    "# remove hidden non-breaking spaces that appear in some values\n",
    "for column in df.columns:\n",
    "    if not is_numeric_dtype(df[column]):\n",
    "        df[column] = df[column].astype(\"string\").str.replace(\"\\xa0\", \" \", regex=False).str.strip()\n",
    "\n",
    "encoders = {}\n",
    "\n",
    "for column in df.columns:\n",
    "    if is_numeric_dtype(df[column]):\n",
    "        df[column] = df[column].fillna(df[column].median())\n",
    "    else:\n",
    "        # try numeric conversion for mixed text/number columns\n",
    "        numeric_candidate = pd.to_numeric(df[column], errors=\"coerce\")\n",
    "        if numeric_candidate.notna().mean() >= 0.9:\n",
    "            df[column] = numeric_candidate.fillna(numeric_candidate.median())\n",
    "        else:\n",
    "            mode_value = df[column].mode(dropna=True)\n",
    "            fill_value = mode_value.iloc[0] if not mode_value.empty else \"Unknown\"\n",
    "            df[column] = df[column].fillna(fill_value)\n",
    "            encoder = LabelEncoder()\n",
    "            df[column] = encoder.fit_transform(df[column].astype(str))\n",
    "            encoders[column] = encoder\n",
    "\n",
    "clean_summary = pd.DataFrame({\n",
    "    \"Metric\": [\"Rows after cleaning\", \"Columns\", \"Missing values\", \"Encoded columns\"],\n",
    "    \"Value\": [len(df), df.shape[1], int(df.isna().sum().sum()), len(encoders)],\n",
    "})\n",
    "\n",
    "clean_summary\n",
    "\n",
    "df.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "28106a56",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training shape: (158, 6)\n",
      "Testing shape: (68, 6)\n",
      "Target classes: 4\n"
     ]
    }
   ],
   "source": [
    "# step 5 select features and split into training and testing sets\n",
    "\n",
    "X = df.drop(columns=[target_col])\n",
    "y = df[target_col]\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X,\n",
    "    y,\n",
    "    test_size=0.3,\n",
    "    random_state=42,\n",
    "    stratify=y if y.nunique() > 1 else None,\n",
    ")\n",
    "\n",
    "print(\"Training shape:\", X_train.shape)\n",
    "print(\"Testing shape:\", X_test.shape)\n",
    "print(\"Target classes:\", y.nunique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "62482a47",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Decision Tree Classifier\n",
      "Accuracy: 1.0\n",
      "Precision: 1.0\n",
      "Recall: 1.0\n",
      "F1 Score: 1.0\n",
      "confusion matrix\n",
      "[[28  0  0  0]\n",
      " [ 0  9  0  0]\n",
      " [ 0  0 22  0]\n",
      " [ 0  0  0  9]]\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      1.00      1.00        28\n",
      "           1       1.00      1.00      1.00         9\n",
      "           2       1.00      1.00      1.00        22\n",
      "           3       1.00      1.00      1.00         9\n",
      "\n",
      "    accuracy                           1.00        68\n",
      "   macro avg       1.00      1.00      1.00        68\n",
      "weighted avg       1.00      1.00      1.00        68\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdcAAAGGCAYAAAApVsuTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQJdJREFUeJzt3Qd4FOW6B/B3Qgk1oRNKKAJSpEoHpYmEchAEeyFIsYFSFASPdBUOyAFUBL0CsSGIUhQRROpBQCSAAgpXEE3QUIWEBBOQzH3+n2f27m52w85mkszu/n8+I9ndmd3Z2dl95/2qpuu6LkRERGSZMOueioiIiBhciYiIcgEzVyIiIosxuBIREVmMwZWIiMhiDK5EREQWY3AlIiKyGIMrERGRxRhciYiILMbgmk9++eUX0TRN4uLiTG3XqVMntVDO5PdxnDx5svr8nf31118yduxYiY6OlrCwMOnbt6+6H+thfcpq1qxZcsMNN0iBAgWkadOmlh+igQMHSo0aNXjo/2vr1q3qfMS/lL2QDa4IajhJjKVIkSJSuXJliYmJkVdffVUuXbqU37toG/hxcT5W3hazFwq54fTp0/Lss89KvXr1pFixYlK8eHFp3ry5vPjii3Lx4kWxs8WLF6tgcdddd8k777wjo0aNEru7du2aLFmyRF2olClTRsLDw9X58sgjj8jevXtz9bW//PJLdTHSvn17tQ8vv/yyBNvFNxacu548+OCD6vESJUr49RpLly6VuXPn5nBPyRstVMcWRiDAD8DUqVOlZs2acvXqVTl16pS6Itu4caNUq1ZNPv30U2ncuHGuvD4Oe0ZGhhQqVEhddfvqypUr6t/ChQtLXlm9erWkpqY6bq9bt04+/PBDmTNnjpQrV85xf7t27VQWkV++/fZb6dmzp9rXhx56SAVVwI/8smXL1P7hBxmMrDW/rsCRpWLBRZ3hvvvukx07dsjJkydd1k1PT5eCBQuqxU7+/PNP6devn6xfv146dOggvXv3VgEWgeGjjz6S//3f/5WEhASpWrVqrrz+uHHj1MUI9iO3vg/4XcjMzFQXDXkJxxC/Szg/8J06fPiwy+NpaWlSsWJFdXGD3w/n76ev/vGPf8ihQ4fUa/kKxwK/QTjeKF2hbOghasmSJbio0L/99tssj23atEkvWrSoXr16df3y5cv5sn92NmvWLHXsTpw4ke16qampebZPFy5c0KtUqaJXrFhR//HHH7M8furUKX3atGmO2x07dlSLnXTu3Fm/6aabcvU1/vzzT/3atWuWPNewYcPUeTBnzpwsj/3111/qPElMTNRzyyOPPKIXL15cD0b4buHY9uvXT/174MABl8c/+OADvVChQnrv3r39Pga9evVSv3F5fd6ECgZXD8EVXn75ZXVSv/XWWy7344e7f//+eunSpfXw8HC9efPm+po1azz+2I8cOVKdvIULF1Y//A8//LB+9uxZly8PgrwhKSlJHzhwoFoX20RFRel33HGHSxDzFBROnz6tDxo0SK9QoYLap8aNG+txcXEu6xivhx+8N998U7/hhhvUa7Ro0ULfs2dPjoNrbGys+pIfO3ZM79Gjh16iRAm9T58+6jF8KfED3KBBA7V/2M9HH31U/+OPP7I897p16/RbbrlFL1asmHqOnj176ocOHbruPs2YMUPtE350fOF+HDMyMvQJEyboN998sx4REaFeH/uxefPmLNt++OGHaj3sX8mSJfWGDRvqc+fOdTx+5coVffLkyXrt2rXV+y1Tpozevn17/csvv3SsM2nSJLW/zp+N+7Jlyxb1OP7G+s5OnjypgguOJT5HHNtFixa5rIPtsS3295///KdeuXJlXdM0dW7mFIJmwYIF9dtvv93nbfbt26d3795dHTOcK126dNF37drl8aJ3x44d+qhRo/Ry5cqpz6Jv3776mTNnHOt5Ol7Y1tP3ynkb5+OYkpKijxgxwvEdLV++vN61a1c9Pj7e5bx2D0C4aBw9erRetWpVtd2NN96ovhOZmZlZXg8XIKtWrVIXTcbn9MUXX1z3WDl/X2vWrKmPHTvW5XF8LxBYje+ds9WrV6vHK1WqpF4T3/WpU6eqCx4Dzn3342e8z+zOG+Mx49z84Ycf9CJFiqjfNmf/+c9/9LCwsCz7HUrsVc5kIw8//LA8//zzqhhx6NCh6j4UzaB+p0qVKqpICvV5KP5Cw5NPPvlE7rzzTrUeimhuvfVW+fHHH2XQoEFy8803y7lz51QxM4r8nItSnfXv31+9xlNPPaXqrc6cOaOKqFG05q1RBYrEUMR57NgxGT58uCpKWrFihWqIgTrGESNGZKlnQX3yY489puprZs6cqYr2fv75Z1VEnRMo5kSd9S233CKvvPKKqvMEvJZRDP/000/LiRMn5PXXX5f9+/fL119/7Xjd9957T2JjY9Vz/Otf/5LLly/LggUL1PNh3ewaluDYFi1aVNVX+iMlJUXefvttuf/++9XnjWO0aNEitS979uxxNJbB54F1brvtNrWPgM8Z78M41mh8NH36dBkyZIi0atVKPTeKpvft2ye33357ltcuX768eu8vvfSSOnewLdSvX99rvXKbNm3U54fPHNt/8cUXMnjwYPVaI0eOdFl/2rRpqhgPddGoirCiCBWvh88b3xNf4LzGdyIiIkLVk+Izf/PNN9W5u23bNmndurXL+vgOlC5dWiZNmqSKLVE3iPe6fPly9TiO11tvvaU+G3xugGJ/Mx5//HH5+OOP1fM2aNBAzp8/r4rl8XniO+sJYuYdd9whW7ZsUccb58WGDRtkzJgx8ttvv6mqEmd4vpUrV8qTTz4pJUuWVO058D3Hd7ps2bI+7SfOt/fff19mzJihPnP8luB3CccARfLu8F1DPezo0aPVv5s3b5aJEyeqcwPF6PDPf/5TkpOT1e+Rsc/udbe+nDc4R7Ee3j++ezg2KLIeOHCgaveAareQpYeo7IqFDZGRkXqzZs0ct2+77Ta9UaNGenp6uuM+XK22a9dOr1OnjuO+iRMnqudeuXJlluc0rm7dr7BxVWhcqZrJuJAxYbv333/fJXNq27atyqxwde78emXLlnXJGJF14/7PPvtMz2nmivvGjRuX5QrWU0a5fv16l/svXbqklypVSh86dGiW4lx8Du73u0NJQpMmTXx+D+7HEVf1yF6d4TNBMTNKBQzIdJDZOmcB7rAfKHLLjnPm6rxPnoqF3TOuwYMHq6zk3LlzLuvdd9996lgZVRlGloHMxerqDWSVeO79+/f7tD4yT2RRx48fd9z3+++/qyy2Q4cOWb6XyCCdM0G8XoECBfSLFy867vOUtZnJXHGskFlmxz1zRVaI53nxxRdd1rvrrrtUdoeSG+fXw3t2vu+7775T97/22ms+Z64oucHf+C7B/Pnz1Xc7LS3N4zHw9Fk/9thjqgTA+bfLW7FwdueNe+ZqlEyhlAffFZyTOKYFCxbM9rc1FLBGOhu4kjNaDf/xxx/qCvCee+5R9+HqEQuudpHd/PTTT+rKFZDFNmnSxJHJOnPvfmFA1oUrQzSwuXDhgs8XR2hcFBUVpa5uDcgKkCEiC0JW4Ozee+9VGYEB2QQgc7XCE0884XIbWXRkZKTK2IxjhgWNjXB8kQEYGSEybbwP5/XQWANZjbGeN7gqR2bgL7yOcWWORhv4vJGZtWjRQmWchlKlSqkrc+yvN1gHmRrOCavhNxvnFxoP4W/nY4XzENmI8/4CSgNwflkJxxt8OeZodINMCyU8zg3eKlWqJA888IDK7oznMzz66KMu3xWcp3ieX3/91bL3gM/pm2++kd9//93U9w3nCr5fzp555hn1eSCjd9a1a1epVauW4zYaSCJ7N/N9u+mmm9R2aERolD716dPHUTLkzvmzNn6rcPxQEnTkyBGfX9fX8wYNm5At4/emR48e8sYbb8j48ePVdyeUMbhmAyeL8eOBYld8eSZMmKCK4ZwXFF0BinHh+PHj0rBhQ1MfBFojopgRX060AkTrSxTZogVzdvBjU6dOnSwt94wiRfcfI7SCdmYEWjMB3Ru0ZnVvGYoAgx/8ChUqZDluOL7GMTMCUZcuXbKshx9mYz1v8IOV0+5T6P6CHzG00ESRHV77888/V/tvQPHejTfeqH5E8F5R7O9eNIeiMFwoYL1GjRqpIrPvv/9erHD27Fn13CgSdT9OKHYH92OFqgJfnxvnm7Fk1wIVxxt8OeZ4Xvyw161bN8tjOE9xMZOYmJhn56kB3y+0lkW/YhTfozj/ekEP3yd02XO/qPD1+2a8F7PvAxchuFDF79DOnTvVbW9wYYcLe1zU4nPCuYHW8+B8Ll+Pr+cN4AICxw8t9nExMGHCBAl1rHP1AnUROBFr166tbuMHAFD/gAzBE2Ndf6GuDBkJur6gHgcnKOrfkDE3a9ZMrOCt248VPbJwgeAe5HHcEFg/+OADj9vgi2+sB6hHQibu7nrdUFC/c+DAAUc3AbNQp4V6ImRXCIbYZxwrHH9cLBlwP14Hnw8uhLCgj+WAAQNUcAZcGGGbNWvWqAsD1AmiXmvhwoWqHjYnjOOEH0tkFp64dx/zNWtt2bKlS3DARaO3wStwvOHgwYO5MniDv+ept5IhZL3uUAqFjG7VqlXqc0J9JC5wUUeKiyc7fd9QooNsEO0BcOHXrVs3j+vhwqtjx44qqOIiD0EPF4sozXjuuecc548vzJZ2GN3cUBJw/vx5j9/jUMLg6gV+5MEIpEZxFopcUdSTHZzQuCL2B7ZFERMWZHP44Zo9e7b68fekevXqKivCl8Y5sBnFP3g8P+H9fPXVV6ohWHZfVqPoDMHresfXE1yU7Nq1SxWZOheR+woNW/AZ44fV+QfaKJVwhuCN18OC445sFo1zcDFkXGChvycySSzIABFwEahyGlxxMYKsCcHCn+OUHVwAoYGcIbs+ywg+CBw4L6/XqAn7jCLMo0ePZnkM5ynOW2SPVjAyXPcBQ7wVJ6NoGp8fFmT8aMiEhmXegiu+TzifkbE7Z6+5/X1DBozvEKqNUPXi7WITjyOw4TzGOWdAI0JfL0T8gQtHVJXg2OGC9LHHHlMXl6GMxcIeIFNECzgUi2AUFONHHy0b8SOalJTksejLgNaA3333nboi9vWKFcVmGCzAPeDgC4yWet5g0AQU4RmtKAF1ha+99pqq08RVbH5CdoBAgOPpDvtp/AjiIgZX2xhlBx33szu+3lp+4ocSFyUYvMAdfji9jXTjnGE4fz6oj0PAdoYfLmcIDEamaHxO7uvgc0DQze5z9BX2E+cXLiI8XcBd7zhlBz/eCNjGkl1wRTBEFoVsBeeaO1x04KIQJUDYZ2Ra+LF1HrAArZ5Rf4jW4EYxc07hedAaf/v27S73ox7QGc5J9yJSfMdR5Hu97xu2RWt3ZyiZQLCyKuP1BOcvLvbQktrMeYzSHPf3D+jtYKaY2BsEbpT24LxEDwv0FPj000/l3XfflVAW8pkrivVw1YkfenzZEVhxBYYrUJwgziPozJ8/X/0QoB4NPyz48cE2+AHGjwgCKuBEQyZ09913qzo5NN5BAxk8H67w0NjJHQICuncgGKFbAK5MEZzx/Bi5xxs0/EDAR5FmfHy86q6C10bXEHRfyEkjHysguOMqFlezKE7Fjyyyf2TlqEOaN2+easKPH0V0u0EWhOwB7xkZD7osoN4TP/zuP2juGQuOF378kO07j9CEIjE0Bmnbtm22o9Xgah91Vb169VI/GPis8Fk41z0i88Rnibph1LkiI0JwwWsa9W7YBhdieH1ksOiGY3T5sAK6ZKCBFxp64TzE62Gf8D6RVeHvvIDgieJvNO7BscMxxOeAzwyfLb5XxrmLwIDvFb4/yBJxfuO8RSBD3aeV8BnhGOFfNKpBoHW/4ELmic8P5x6+j7gAwrFDnSHelzcorejcubPqyoILBWyLCwxcOKBax7nxUm58l653sYzuSPgMUGWAzwUBH6Vwni7qcX7iohxddlAlgGOA92cGnhe/cSiVwvcX8H3/5JNPVNc0XKThgiUk6SHKaPJvLMagDegUP2/ePEcXFnfoSjBgwAC1LkZIwYAP//jHP/SPP/7YZb3z58/rw4cPdwwIgQ7naDZvdJ9w7zJgNGGvV6+ealqPbgKtW7fWP/roI5fn9TaIBAYUQId7vBa6C7l3RXBu2u/O0yAF/g4i4Q0G48CAGxj5Ct0vsI/oYI7uGM7QxD8mJka9f3ROr1WrlhpYY+/evT7tG54P3TbQsR/bo/sBXvell17Sk5OTvR5HdPvAwCHomoCBH9AFa+3atVm6YuBz7tatm2PwhmrVqqluDhgAxIBuGq1atVJdi/B+8Zni9dFFyoquOMZnjvMlOjpanYc4H9FVzHnQE6PbxIoVK/Tcgi5Jb7/9tn7rrbeqzwz7guOF89G9mw4GkcBni24k+FwwItXOnTt96iLnqQuIt3MO3UfQXQn7g3PtnnvuUQNQOB9HdLsaM2aM6jZlDGqBv9944w2X5/I0iAS6jeEcw+AKeL/ohpfdIBLu8Hx43uxk93113z/3Y/D111/rbdq0Uece9hHfsw0bNmQ5fhgM44EHHlDnqadBJDydN+6fA34rcfuTTz5xWS8hIUF1WcNgFqEqZMcWJiIiyi2scyUiIrIYgysREZHFGFyJiIhCNbiiBSS6xaBVKYYtw6DZ15vDEC023Sf0RpcNIiKi3BQwDZrQfwz9S9F8H/0g0TkfzcfRTy674Ioh6JxnZkBndqv61BEREQVsP1dMAYXxW9EHzRgMGn0L0acRHZaz60eFYBrqw3AREVHeCojgikEaUBTsPMsCOidjdByMouNp9hnnId0wRBsCLDpIY4g6b7NJADq1O4/QYsyQgvE8rRwujIgoUKHAEwNxILFxH0/cX+np6Wo0KX9gSFLnAX/sICCCK4b3w9BkzjDCC0a/yW7WGMwcgZGWcAJg/F0MXI3xTTGajDcYSWjKlCmW7j8RUTDCbEbuM2H5G1iLliwr8tdlv7ZH8oRR1ewUYPM1uI4bN07NQnG9ImF/YWhAA4YsxNizGGIQQ7Z5G6YMM09gODADxt7EoNmFG8SKVsD8bCv0t4Str/BQEAWJSykpUrtmtGXDq15BxvrXZQlvECti9nf22hU59cM76jkYXP8Lg6xjTNzsYPxeXJW4z1GJsYBRXGumPhVjsQLmRPQWXDFtGhZ3CKwMrv5jIzKi4GN5VVnBIqZ/Z3XNnp1e8jVzNSZ5vh4MuI7ZUzAwvTEYOwbYR32oETB9gYHjARksERHZjKYitvltbMieId8NZhvp3r27mgFkz549asYXzDCCGTeMlsK//fabmsAZjwOKfjHNGQIyZq/AjDSY0BpzHLpPJk1ERDaghfm32FBANGgyWv0ioKLOFK3TMHfgq6++6ngcfV/RWAnzohqtxzCFFKZdS0tLU/NPYpsXXnghH98FERF5hazVdOZqz9Q1YIIrWgZnN2AE5jF1Hg8DwXTbtm15tHdERJRjmh+ZKDNXIiKi0Mhc7VlYTUREFMACpliYiIiCXZgfxbz2zBEZXImIyB604CkWZnAlIiJ70NigiYiIyOLgqjFzJSIisja4hgVNVxx77hUREVEAY50rERHZg8ZiYSIiIouDa1jQFAszcyUiIhtlrmHmt7EhBlciIrKHMO3vxew2NsTgSkRE9qAFT7GwPfeKiIgogDFzJSIie9DYWpiIiMji4BoWNMXCzFyJiMgeNGauREREFgfXMGauRERE1gZXjQP3ExERWRtcw4Imc7XnXhEREQUwBlciIrJXsbBmcjFh+vTp0rJlSylZsqRUqFBB+vbtK0ePHnVZp1OnTqJpmsvy+OOPm3odBlciIrKJsP8vGvZ1MRnGtm3bJsOGDZPdu3fLxo0b5erVq9KtWzdJS0tzWW/o0KGSlJTkWGbOnGnqddgVh4iIQqZB0/r1611ux8XFqQw2Pj5eOnTo4Li/WLFiEhUVJf5i5kpERPaaFUczs+Rs4P7k5GT1b5kyZVzu/+CDD6RcuXLSsGFDGT9+vFy+fNnU8zJzJSKigG8tnJKS4nJ3eHi4WrKTmZkpI0eOlPbt26sganjggQekevXqUrlyZfn+++/lueeeU/WyK1eu9Hm3GFyJiCjgRUdHu9yeNGmSTJ48OdttUPd66NAh2bFjh8v9jz76qOPvRo0aSaVKleS2226T48ePS61atYKzWHj+/PlSo0YNKVKkiLRu3Vr27NmT7forVqyQevXqqfVxkNatW5dn+0pERHnTWjgxMVEV8RoLinKzM3z4cFm7dq1s2bJFqlatmu26iDVw7Ngxn99KQAXX5cuXy+jRo9UVyb59+6RJkyYSExMjZ86c8bj+zp075f7775fBgwfL/v37VZNrLLhSISIim9H8aC3832LhiIgIl8VbkbCu6yqwrlq1SjZv3iw1a9a87m4dOHBA/YsM1ue3ouOVAgSuHtA/6fXXX3eUl6Mo4KmnnpJx48ZlWf/ee+9VzatxdWJo06aNNG3aVBYuXOjTa6IcPzIyUsIbDRWtQGEL301oufDt358ZEQU+/C5WLBupMkQEMiueLxK/sz3nilaoqKlt9at/Ssa6kT7vy5NPPilLly6VNWvWSN26dR334/WLFi2qin7xeM+ePaVs2bKqznXUqFEqu0U3nqDLXK9cuaKaSnft2tVxX1hYmLq9a9cuj9vgfuf1AZmut/UhIyNDfdDOCxER2Ttz9dWCBQtUIMZAEchEjQUlo1C4cGH56quvVN9XVCk+88wz0r9/f/nss8/EjIBp0HTu3Dm5du2aVKxY0eV+3D5y5IjHbU6dOuVxfdyf3egdU6ZMsWiviYjITv1cr1dYi9JQMxlqwGeueQWV4M6V4qgkJyIiCsrMFZ15CxQoIKdPn3a5H7e9jaKB+82s72vfKCIisp7233F8TW5ky48iYDJXlIM3b95cNm3a5LgPDZpwu23bth63wf3O6wPGkvS2PhER5R/NbbB8Xxc7CpjMFdANJzY2Vlq0aCGtWrWSuXPnqtbAjzzyiHp8wIABUqVKFVVvCiNGjJCOHTvK7NmzpVevXrJs2TLZu3evvPXWW/n8ToiIKAvESbOx0p6xNbCCK7rWnD17ViZOnKgaJaFLDQZhNhotJSQkqBbEhnbt2qkm1S+88II8//zzUqdOHVm9erXLMFdERGQPWhAVCwdUP9f8wH6u1mA/V6LgkVv9XIvfucCvfq5pq56wbF9Crs6ViIgoUARUsTAREQUvLYiKhRlciYjIFjQGVyIiIqujq7C1MBERkaWxVWOxMBERkcXBVfyoc7Xnh8A6VyIisgUN/5luoGTP6MquOERERBZj5kpERLagsc6ViIjI6ugqbC1MRERkbXDVTNe56hxEgoiIyNpiYU45R0REFCLBla2FiYiILMbWwkREZA8aGzQRERFZG1u14CkWZuZKRES2oDG4EhERMbh6w8yViIhsQQuizJWthYmIiCzGzJWIiOxBY2thIiIia2OrFjzFwsxciYjIFjQGVyIiIgZXb5i5EhGRPWiscyUiIrI2tmrBU+fKrjhEREShHlznz58vNWrUkCJFikjr1q1lz549XteNi4tzXAkZC7YjIiL70dx+r31d7Cigguvy5ctl9OjRMmnSJNm3b580adJEYmJi5MyZM163iYiIkKSkJMfy66+/5uk+ExGRbzTxI7iqilr7Cajg+u9//1uGDh0qjzzyiDRo0EAWLlwoxYoVk8WLF3vdBgc/KirKsVSsWDFP95mIiHzDzDUfXLlyReLj46Vr166O+8LCwtTtXbt2ed0uNTVVqlevLtHR0dKnTx85fPhwtq+TkZEhKSkpLgsREeVha2HN5GJDAdMV59y5c3Lt2rUsmSduHzlyxOM2devWVVlt48aNJTk5WV555RVp166dCrBVq1b1uM306dNlypQpWe5P2PqKKmIm/6z/IYmHzgLdG1TicaSgpbG1cGBo27atDBgwQJo2bSodO3aUlStXSvny5eXNN9/0us348eNVIDaWxMTEPN1nIiIKfAGTuZYrV04KFCggp0+fdrkft1GX6otChQpJs2bN5NixY17XCQ8PVwsREeUtjZlr3itcuLA0b95cNm3a5LgvMzNT3UaG6gsUKx88eFAqVWLRGhGR3Wiaf4sdBUzmCuiGExsbKy1atJBWrVrJ3LlzJS0tTbUeBhQBV6lSRdWbwtSpU6VNmzZSu3ZtuXjxosyaNUt1xRkyZEg+vxMiInL3d7A0O0KT2FJABdd7771Xzp49KxMnTpRTp06putT169c7GjklJCSoFsSGCxcuqK47WLd06dIq8925c6fqxkNERDaj+REsbRpcNV3X9fzeCTtDV5zIyEg5fT6ZrYVzgK2FrcHWwmSX38WKZSNVo08relGk/Pd3ttaIT6RAeHFT217LSJPj8/pbti8hOYgEERFRTqDasGXLllKyZEmpUKGC9O3bV44ePeqyTnp6ugwbNkzKli0rJUqUkP79+2dpTHs9DK5ERBQyDZq2bdumAufu3btl48aNcvXqVenWrZtqv2MYNWqUfPbZZ7JixQq1/u+//y79+vUL3jpXIiIKXmFhmlrM0E2uj3Y67hO8IIPFCIAdOnRQxcuLFi2SpUuXSpcuXdQ6S5Yskfr166uAjEayvmDmSkREAZ+5prgNW4uhbH2BYAplypRR/yLIIpt1Hmq3Xr16Uq1atWyH2nXH4EpERAE/cH90dLRqFGUsRpfM7GCshJEjR0r79u2lYcOG6j70LsG4CqVKlXJZF71S8JivWCxMRES2oPlRh2qsj6FqnVsL+zLSHupeDx06JDt27BCrMbgSEVHAi4iIMNUVZ/jw4bJ27VrZvn27y0QuGE4Xs7Bh4CHn7NXMULvAYmEiIgqZ+Vx1XVeBddWqVbJ582apWbOmy+MYbAjj0DsPtYuuOhikyNehdoGZKxERhczA/cOGDVMtgdesWaP6uhr1qKinLVq0qPp38ODBarhdNHJCNvzUU0+pwOprS2FgcCUiooCvc/XVggUL1L+dOnVyuR/dbQYOHKj+njNnjhpKF4NHoNVxTEyMvPHGG2IGgysREdmCJn5kriYHF/ZlxN8iRYrI/Pnz1eIvBlciIgqZzDWvMLgSEZEtaJwsnYiIiLxh5kpERLagsViYiIgo8Lri5BVmrkREZAsaM1ciIiKrg6vGzJWIiMja6Crmu9bYs1SYYwsTERFZjXWuRERkCxqLhYmIiKwOrsIRmoiIiKwNrhobNBEREVkbXIWZKxERkbXBVQuazDUsv3eAiIgo2LC1MBER2YLGzDV/bN++XXr37i2VK1dWH8Lq1auvu83WrVvl5ptvlvDwcKldu7bExcXlyb4SEZF/da5mFzsKqGLhtLQ0adKkic+zw584cUJ69eolnTt3lgMHDsjIkSNlyJAhsmHDhlzfVyIi8i9zNbvYUUAVC/fo0UMtvlq4cKHUrFlTZs+erW7Xr19fduzYIXPmzJGYmJhc3FMiIgrl1sIBlbmatWvXLunatavLfQiquN+bjIwMSUlJcVmIiCj3aUGUuQZ1cD116pRUrFjR5T7cRsD8888/PW4zffp0iYyMdCzR0dF5tLdERKFN86feVewpqIOrP8aPHy/JycmOJTExMb93iYiIAkxA1bmaFRUVJadPn3a5D7cjIiKkaNGiHrdBq2IsRESUt8I0TS1mt7GjoA6ubdu2lXXr1rnct3HjRnU/ERHZi8YGTfkjNTVVdanBYnS1wd8JCQmOIt0BAwY41n/88cfl559/lrFjx8qRI0fkjTfekI8++khGjRqVT++AiIhCoUFTQGWue/fuVX1WDaNHj1b/xsbGqsEhkpKSHIEW0A3n888/V8F03rx5UrVqVXn77bfZDYeIyIbCtL8Xs9vYUUAF106dOomu614f9zT6ErbZv39/Lu8ZERHlmObHQPw2Da5sLUxERBTKmSsREQUvLYgaNDG4EhGRLWj//c/sNnbE4EpERLYQxgZNRERE1tKCaD5XZq5ERGQLWhDVubK1MBERkcWYuRIRkS2EcWxhIiIia2lBVCzMzJWIiGxBY4MmIiIiq4OrMHMlIiKyUlio1bl++umnPj/hHXfckZP9ISIiCng+Bde+ffv6XF5+7dq1nO4TERGFIM2PSW60QA6umZmZub8nREQU0jQ2aCIiIrJWWKiPLZyWlibbtm2ThIQEuXLlistjTz/9tFX7RkREIUTLg8x1+/btMmvWLImPj5ekpCRZtWqVS9XnwIED5Z133nHZJiYmRtavX5+7wXX//v3Ss2dPuXz5sgqyZcqUkXPnzkmxYsWkQoUKDK5EROS33G78i7jVpEkTGTRokPTr18/jOt27d5clS5Y4boeHh5t+HdPBddSoUdK7d29ZuHChREZGyu7du6VQoULy0EMPyYgRI0zvABERUV5lrj169FBLdhBMo6KiJE8H7j9w4IA888wzEhYWJgUKFJCMjAyJjo6WmTNnyvPPP5+jnSEiIspvW7duVSWxdevWlSeeeELOnz+f+5krslQEVsCLo961fv36KotNTEw0vQNEREQ5bdCUkpKSJfv0pzgXRcIoLq5Zs6YcP35cJY3IdHft2qUSylwLrs2aNZNvv/1W6tSpIx07dpSJEyeqOtf33ntPGjZsaPbpiIiIclwsjBJUZ5MmTZLJkyeLWffdd5/j70aNGknjxo2lVq1aKpu97bbbci+4vvzyy3Lp0iX190svvSQDBgxQaTOC7eLFi80+HRERUY4HkUDJaUREhON+f7JWT2644QYpV66cHDt2LHeDa4sWLRx/o1jYbPNkIiIiq8cWRmB1Dq5WOXnypKpzrVSpkqntOOUcERGFzKw4qampKgs1nDhxQjXURbdSLFOmTJH+/fur1sKocx07dqzUrl1b9XXN1eCKSt7sysR//vlns09JRESUJ/bu3SudO3d23B49erT6NzY2VhYsWCDff/+9GkTi4sWLUrlyZenWrZtMmzbNdDGz6eA6cuRIl9tXr15VA0ugeHjMmDFmn46IiCjP+rl26tRJdF33+viGDRvECqaDq7eBIubPn6+uCHLT9YatcofWXc5XKAZsm9MOwkREZC0tiCZLNz2IhDfoB/TJJ59IXgxbhUBuxtGjR1VANRY0xCIiIns2aAozudiRZQ2aPv74Y1UZnJt8GbbKEwTTUqVK5co+ERGRNbQgylz9GkTCuYwbZdenTp2Ss2fPyhtvvCF21LRpUzVMIwa5QKfi9u3b5/cuERGRm5Cez7VPnz4ubwZDIZYvX15VEterV0/sBP2SMMEA+uYiuL799ttqP7/55hu5+eabPW6D9bAY3IfUIv90b2Cujxh5dsPwlTw0OfTz655nQiHK1+Dqz3BS+QWDLmMxtGvXTvVbmjNnjhqu0ZPp06erfk5ERJT3jYDC/NjGjkzvFwYuPnPmTJb7MYKFmUGN80urVq1cOhC7Gz9+vCQnJzsWTkZARJS3xcKaySUoMldv/YNQlFq4cGGxO4zEkd0wVv7OpEBERDmj+TErjk1jq+/B9dVXX1X/4ioBdZclSpRwPHbt2jXVBzW361yzG7aqWrVqKuv87bff5N1331WPz507V40oddNNN0l6erra782bN8uXX36Zq/tJRER5O+VcwAZX1FMamSsaCTkXASNjrVGjhro/v4atiouLU31YMb+s4cqVK2pidwTcYsWKqamDvvrqK48DSxARUf7SQrG1MLJEQGBauXKllC5dWvLa9YatQoB1hgGXsRARkf2FhWLmatiyZUvu7AkREVGQMN1aGFPx/Otf/8py/8yZM+Xuu++2ar+IiChER2jSTC5BEVzRcKlnz55Z7sewhHiMiIjIHyE9tjBa7HrqclOoUCGOZkRERH4L6UEkGjVqJMuXL89y/7Jly6RBgwZW7RcREYUYLYiKhU1nrhMmTJB+/fqpYQS7dOmi7tu0aZMsXbpUzYxDRETkjzAxX8yLbYIiuPbu3VtWr14tL7/8sgqmRYsWVXOsYnCG3J5yjoiIKBD4NZ9rr1691GLMGvPhhx/Ks88+K/Hx8Wq0JiIiolCez9XvumC0DMbISJUrV5bZs2erIuLdu3dbu3dERBRyg0iEmVwCPnPFpOgYBWnRokUqY73nnnvUgP0oJmZjJiIiyvnA/ZrpbQI6c0VdK+ZG/f7779WA+L///ru89tprubt3REQUMrRQbC38xRdfyNNPPy1PPPGE1KlTJ3f3ioiIQk5YEI0t7HPmumPHDrl06ZI0b95cWrduLa+//rqcO3cud/eOiIgoAPkcXNu0aSP/8z//o6Z1e+yxx9SgEWjMlJmZKRs3blSBl4iIyF+an/8FRWvh4sWLy6BBg1Qme/DgQTVf6owZM6RChQpyxx135M5eEhFR0AsLotbCORqWEQ2cMBvOyZMnVV9XIiIifwVTcPVrEAl3BQoUkL59+6qFiIjIH5qmqcXsNkEbXImIiHIqLIhaCzO4EhGRLWgc/pCIiIi8YeZKRES2EKb5MeUc61yJiIi8Y50rERGR1TQ/xgpmgyYiIiLvwkRTixlm188rrHMlIiJb0NhamIiIiLxh5kpERLYQFkSDSORobOG8NH36dGnZsqWULFlSTRKAoRaPHj163e1WrFgh9erVkyJFikijRo1k3bp1ebK/RETkX1ccs4sdBUxw3bZtmwwbNkx2796tpri7evWqdOvWTdLS0rxus3PnTrn//vtl8ODBsn//fsf4x4cOHcrTfSciIt/rXM0udhQwxcLr1693uR0XF6cy2Pj4eOnQoYPHbebNmyfdu3eXMWPGqNvTpk1TgRkTvS9cuDBP9puIiEy0FtaCo7VwwGSu7pKTk9W/ZcqU8brOrl27pGvXri73xcTEqPuJiMheNGau+SszM1NGjhwp7du3l4YNG3pd79SpU1KxYkWX+3Ab93uTkZGhFkNKSopFe01ERKEiIDNX1L2i3nTZsmW50nAqMjLSsURHR1v+GkRE5Dkg+bPYkV33y6vhw4fL2rVrZcuWLVK1atVs142KipLTp0+73IfbuN+b8ePHqyJnY0lMTLRs34mI6PqTpZtdzNi+fbv07t1bKleurLZdvXq1y+O6rsvEiROlUqVKUrRoUVW1+NNPP0nQBle8YQTWVatWyebNm6VmzZrX3aZt27ayadMml/vQoAn3exMeHi4REREuCxER5T7Nz8UM9DBp0qSJzJ8/3+PjM2fOlFdffVU1ev3mm2+kePHiqq1Oenp6cLYWRlHw0qVLZc2aNaqvq1FviqJbXF3AgAEDpEqVKqpoF0aMGCEdO3aU2bNnS69evVQx8t69e+Wtt97K1/dCRET5M+Vcjx491OItiZs7d6688MIL0qdPH3Xfu+++q9rqIMO97777fN8vCRALFixQxbSdOnVS6bqxLF++3LFOQkKCJCUlOW63a9dOBWQEU1ypfPzxx+oAZdcIioiI8o/mZ9aKxqfOi3PDVF+dOHFCJW7OvUyQwLVu3dp0L5OAyVxxRXE9W7duzXLf3XffrRYiIgpe0W6NTydNmiSTJ0829RxGiajZXiYBHVyJiCi4aTmYFQeNT53byKD9TH4KmGJhIiIKbloOWgu7N0T1J7gaPUnM9jLxhMGViIhsISyf+7miFwqCqHMvE9TfotVwdr1MPGGxMBER2YLmR79Vs+unpqbKsWPHXBoxHThwQA2lW61aNTX634svvih16tRRwXbChAmqTywmfTGDwZWIiGxB86Pfqtn10R2zc+fOjtujR49W/8bGxqoJYcaOHav6wj766KNy8eJFueWWW9TEMZi21AwGVyIiCpnMtVOnTtn2PsHzTZ06VS05wTpXIiIiizFzJSIiWwjzI+Oza4bI4EpERCFTLJxXGFyJiChkGjTlFQZXIiIK+BGa7IbBlYiIbCFMNLWY3caO7FoXTEREFLCYuRIRkS1oLBYmIiKyOLjK3/+Z3caOmLkSEZEtaMxciYiILA6uYr5BEzNXIiKiEMlc2VqYiIjIYqxzJSIiW9CCKHNlcCUiIlvQ2FqYiIjIWmHa34vZbeyImSsREdmCxsyViIjI4uCqsc6ViIjI2uAq5vut2rRUmF1xiIiIrMY6VyIisoWwIGrQFDCDSEyfPl1atmwpJUuWlAoVKkjfvn3l6NGj2W4TFxcnmqa5LEWKFMmzfSYiIvMNmsz+Z0cBE1y3bdsmw4YNk927d8vGjRvl6tWr0q1bN0lLS8t2u4iICElKSnIsv/76a57tMxERmW/QZHaxo4ApFl6/fn2WrBQZbHx8vHTo0MHrdshWo6Ki8mAPiYgo5w2azLFpbA2czNVdcnKy+rdMmTLZrpeamirVq1eX6Oho6dOnjxw+fDiP9pCIiMzAjDhhmsnFpuE1IINrZmamjBw5Utq3by8NGzb0ul7dunVl8eLFsmbNGnn//ffVdu3atZOTJ0963SYjI0NSUlJcFiIioqAsFnaGutdDhw7Jjh07sl2vbdu2ajEgsNavX1/efPNNmTZtmteGU1OmTLF8n4ms8PPr/Xggc2j9D0k8hjl0OfVSrhxDjcXC+Wf48OGydu1a2bJli1StWtXUtoUKFZJmzZrJsWPHvK4zfvx4VeRsLImJiRbsNRER+RxdzS42FDCZq67r8tRTT8mqVatk69atUrNmTdPPce3aNTl48KD07NnT6zrh4eFqISKivKVxbOH8KQpeunSpqj9FX9dTp06p+yMjI6Vo0aLq7wEDBkiVKlVU0S5MnTpV2rRpI7Vr15aLFy/KrFmzVFecIUOG5MM7ICKibPnTtYaZa84sWLBA/dupUyeX+5csWSIDBw5UfyckJEhY2P+30bpw4YIMHTpUBeLSpUtL8+bNZefOndKgQYMc7g0REVlNC6I614AqFr4eFBc7mzNnjlqIiIjyUsAEVyIiCnJa8KSuDK5ERGQLGhs0ERERWRxcNU6WTkREZG1wlaApFWaxMBER2YQWPNE1IMcWJiIisjM2aCIiIlvQ2KCJiIjI4uCqsUETERGRtcFVgqbKlcXCRERkE1rwRFfWuRIRkS1oQVTnytbCRERkqzpXzeRixuTJk0XTNJelXr16lr8XZq5ERBRSbrrpJvnqq68ctwsWtD4UMrgSEVFIVbkWLFhQoqKiJDexWJiIiOwVXTWTi4ikpKS4LBkZGV5f5qeffpLKlSvLDTfcIA8++KCaC9xqDK5ERGSrBk2ayf8gOjpaIiMjHcv06dM9vkbr1q0lLi5O1q9fLwsWLJATJ07IrbfeKpcuXbL0vbBYmIiIAn4QicTERImIiHDcHx4e7nH9Hj16OP5u3LixCrbVq1eXjz76SAYPHixWYXAlIqKAr3ONiIhwCa6+KlWqlNx4441y7NgxsRKLhYmIKGSlpqbK8ePHpVKlSpY+L4MrEREFfIMmXz377LOybds2+eWXX2Tnzp1y5513SoECBeT+++8XK7FYmIiIQmaEppMnT6pAev78eSlfvrzccsstsnv3bvW3lRhciYgoZGbFWbZsmeQFBlciIrIFLXjG7WdwJSIim9CCJ7qyQRMREZHFWCxMRES2oAXRlHMMrkREZA+a+QZKNo2tgVMsjDEgMVSVMQpH27Zt5Ysvvsh2mxUrVqh5+ooUKSKNGjWSdevW5dn+EhGR7bq55pmACa5Vq1aVGTNmSHx8vOzdu1e6dOkiffr0kcOHD3tcH52D0ZcJY0Xu379f+vbtq5ZDhw7l+b4TEVFoRVdN13VdAlSZMmVk1qxZHgdbvvfeeyUtLU3Wrl3ruK9NmzbStGlTWbhwoc+vgamLMMPC6fPJfo1bSUT2sv6HpPzehYB3OfWSPNi+riQnW/O7mPLf39kDx09LyZLmnu/SpRRpWquiZfsScpmrs2vXrqmOwAieKB72ZNeuXdK1a1eX+2JiYtT9RERk30EkNJOLHQVUg6aDBw+qYJqeni4lSpSQVatWSYMGDTyue+rUKalYsaLLfbiN+7ODCXadJ9nFFRUREVHQZq5169aVAwcOyDfffCNPPPGExMbGyg8//GDpa2CCXecJdzEBLxER5T4teKpcAyu4Fi5cWGrXri3NmzdXQbBJkyYyb948j+tGRUXJ6dOnXe7DbdyfnfHjx6uye2PBBLxERJQHtOCJrgEVXN1lZma6FOE6Q/Hxpk2bXO7buHGj1zpa59nrje4+/k6+S0RE/g8iYfY/OwqYOldklD169JBq1arJpUuXZOnSpbJ161bZsGGDenzAgAFSpUoVldHCiBEjpGPHjjJ79mzp1auXagCFLjxvvfVWPr8TIiLyRCWiZmfFEXsKmOB65swZFUCTkpJUXSgGlEBgvf3229XjCQkJEhb2/4l4u3btVAB+4YUX5Pnnn5c6derI6tWrpWHDhvn4LoiIKATG7Q+c4Lpo0aJsH0cW6+7uu+9WCxERUV4KmOBKRETBTcuDydLzCoMrERHZhBY0BcMMrkREZAsaM1ciIiKLg6sES97KzJWIiGxCC6LMNaAHkSAiIrIj1rkSEZEtaH6MuMQRmoiIiEKk0pWZKxER2YIWPLGVwZWIiOxBC6IGTcxciYjIFrQgqnNla2EiIiKLMXMlIiJ70IKn0pXBlYiIbEELntjK4EpERPagsUETERGR5eFVtCDJXVksTEREtqAFUebK1sJEREQWY3AlIiKyGIuFiYjIFrQgKhZmcCUiIlvQgmiEJgZXIiKyBY2ZKxERkcXBVTiIBBEREaOrF2wtTEREZDHWuRIRkS1obNBERERkcXDVgqcrTsAUCy9YsEAaN24sERERamnbtq188cUXXtePi4sTTdNcliJFiuTpPhMRkfkGTWYXf8yfP19q1Kih4kLr1q1lz549EpLBtWrVqjJjxgyJj4+XvXv3SpcuXaRPnz5y+PBhr9sgCCclJTmWX3/9NU/3mYiI7Bddly9fLqNHj5ZJkybJvn37pEmTJhITEyNnzpyRkAuuvXv3lp49e0qdOnXkxhtvlJdeeklKlCghu3fv9roNstWoqCjHUrFixTzdZyIiMl/navY/s/7973/L0KFD5ZFHHpEGDRrIwoULpVixYrJ48WIJueDq7Nq1a7Js2TJJS0tTxcPepKamSvXq1SU6Ovq6WS4REQW/K1euqBLQrl27Ou4LCwtTt3ft2hWarYUPHjyogml6errKWletWqWuOjypW7euugpBPW1ycrK88sor0q5dOxVgUcTsTUZGhloM2BYupaTkwjsiorx2OfUSD3pOj2FaqvpX13VLj+WlSymmGyhhG0hx+40ODw9Xi7tz586pBM29JBO3jxw5IpbRA0hGRob+008/6Xv37tXHjRunlytXTj98+LBP2165ckWvVauW/sILL2S73qRJk3C2cOEx4DnAc4DnwHXOgcTEREt+2//88089KirK7+NdokSJLPfht9yT3377TT2+c+dOl/vHjBmjt2rVSreKhv9JgEIaX6tWLXnzzTd9Wv/uu++WggULyocffuhz5pqZmSl//PGHlC1bVtXh2hGu2FD0nZiYqBpxEY8hz8PAFQjfZ4SNS5cuSeXKlVWRqhXS09NVka2/++P+++wtc8VroH71448/lr59+zruj42NlYsXL8qaNWsk5IqF3SHwOQfC7KAYAMXKaBSVHU8fSKlSpSQQGN2UiMeQ52Hgs/v3OTIy0tLnK1KkSJ50lyxcuLA0b95cNm3a5AiuiCW4PXz4cMteJ2CC6/jx46VHjx5SrVo1dcW0dOlS2bp1q2zYsEE9PmDAAKlSpYpMnz5d3Z46daq0adNGateura5GZs2apbriDBkyJJ/fCRER5Sd0w0Gm2qJFC2nVqpXMnTtXNZBF6+GQC67of4QAiv6quGJCQyUE1ttvv109npCQ4FI8ceHCBdXU+tSpU1K6dGl1pbJz506vDaCIiCg03HvvvXL27FmZOHGiihFNmzaV9evXW9pdM6DrXOlvKBpHxo7s3lMdA10fj2HO8Rhag8cxODC4EhERWSwgB5EgIiKyMwZXIiIiizG4EhERWYzBNcDl9rRJwW779u1qUgh0hkcn9NWrV+f3LgUcNKZr2bKllCxZUipUqKD6Dh49ejS/dyvgmJ1Wk+yNwTWA5cW0ScEOfdtw3HCRQv7Ztm2bDBs2TM1QtXHjRrl69ap069ZNHVvK3Wk1yb7YWjiAIVNFxvD66687RhnBsGlPPfWUjBs3Lr93L+Agc8VkEM5DopF56D+IDBZBt0OHDjyEOVCmTBk1AM7gwYN5HAMMM9cAlVfTJhGZZcwkhcBAuTutJtlXwIzQRPk0bRKRCSg9GTlypLRv314aNmzIY5eL02qSvTG4EpFlUPd66NAh2bFjB4+qHzAP9YEDB1T2j1lbMP4titcZYAMPg2uAKleunBQoUEBOnz7tcj9uR0VF5dt+UejCjCJr165VLbDROIf8m7EFk40AxkP/9ttvZd68eT5Pq0n2wTrXAOU8bZLBmDaJdTSUlzA8OQIrijA3b94sNWvW5AeQD9Nqkr0wcw1geTFtUrBLTU2VY8eOOW6fOHFCFcuhMQ6mNyTfioIxBSQmmUZfV8wyApi9qmjRojyEFk2rSQEGs+JQ4Hrttdf0atWq6YULF9ZbtWql7969O793KaBs2bIFs0JlWWJjY/N71wKGp+OHZcmSJfm9awFl0KBBevXq1dV3uXz58vptt92mf/nll/m9W+Qn9nMlIiKyGOtciYiILMbgSkREZDEGVyIiIosxuBIREVmMwZWIiMhiDK5EREQWY3AlIiJicCUiIrI3Zq5ENjRw4ECXSds7deqkpnLLaxh+D5PIX7x4Mc9fmyiQMbgSmQx6CDZYjBlMpk6dKn/99VeuHseVK1fKtGnTfFqXAZEo/3HgfiKTunfvLkuWLFGzlaxbt04NXF+oUCE18LqzK1euqABsBUwkQESBg5krkUnh4eFqztzq1avLE088IV27dpVPP/3UUZT70ksvSeXKldXE15CYmCj33HOPlCpVSgXJPn36yC+//OJ4vmvXrqkZjvB42bJlZezYsWoaN2fuxcII7M8995xER0er/UEGvWjRIvW8nTt3VuuULl1aZdjYL2P6sunTp6sp4TBbTZMmTdSE3M5wsXDjjTeqx/E8zvtJRL5jcCXKIQQiZKmA+XSPHj0qGzduVBOHX716VWJiYtRUbP/5z3/k66+/lhIlSqjs19hm9uzZEhcXJ4sXL5YdO3bIH3/8oeZGzc6AAQPkww8/lFdffVV+/PFHNZk2nhfB9pNPPlHrYD+SkpLUZNuAwPruu+/KwoUL5fDhwzJq1Ch56KGHZNu2bY6LgH79+knv3r3VtHtDhgyRcePG8fwg8oe/0+kQhSJMRdenTx/1d2Zmpr5x40Y9PDxcf/bZZ9VjFStW1DMyMhzrv/fee3rdunXVugY8XrRoUX3Dhg3qdqVKlfSZM2c6Hr969apetWpVx+tAx44d9REjRqi/jx49qqZ0w2tnN43ehQsXHPelp6frxYoV03fu3Omy7uDBg/X7779f/T1+/Hi9QYMGLo8/99xzWZ6LiK6Pda5EJiEjRZaIrBRFrQ888IBMnjxZ1b02atTIpZ71u+++U5OxI3N1lp6eLsePH5fk5GSVXbZu3drxWMGCBaVFixZZioYNyCoLFCggHTt29HmfsQ+XL1+W22+/3eV+ZM/NmjVTfyMDdt4PaNu2rc+vQUT/j8GVyCTURS5YsEAFUdStIhgaihcv7rJuamqqNG/eXD744IMsz1O+fHm/i6HNwn7A559/LlWqVHF5DHW2RGQtBlcikxBA0YDIFzfffLMsX75cKlSoIBERER7XqVSpknzzzTfSoUMHdRvdeuLj49W2niA7RsaMulI0pnJnZM5oKGVo0KCBCqIJCQleM9769eurhlnOdu/e7dP7JCJXbNBElIsefPBBKVeunGohjAZNJ06cUP1Qn376aTl58qRaZ8SIETJjxgxZvXq1HDlyRJ588slsB22oUaOGxMbGyqBBg9Q2xnN+9NFH6nG0YkYrYRRfnz17VmWtKJZ+9tlnVSOmd955RxVJ79u3T1577TV1Gx5//HH56aefZMyYMaox1NKlS1VDKyIyj8GVKBcVK1ZMtm/fLtWqVVMtcZEdDh48WNW5GpnsM888Iw8//LAKmKjjRCC88847s31eFEvfddddKhDXq1dPhg4dKmlpaeoxFPtOmTJFtfStWLGiDB8+XN2PQSgmTJigWg1jP9BiGcXE6JoD2Ee0NEbARjcdtCp++eWXeX4Q+UFDqyZ/NiQiIiLPmLkSERFZjMGViIjIYgyuREREFmNwJSIishiDKxERkcUYXImIiCzG4EpERGQxBlciIiKLMbgSERFZjMGViIjIYgyuREREFmNwJSIiEmv9H3d9iDkkURvMAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 500x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# step 6 define evaluation helper and train decision tree classifier\n",
    "\n",
    "def evaluate_model(model, x_test, y_test, model_name):\n",
    "    y_pred = model.predict(x_test)\n",
    "    accuracy = accuracy_score(y_test, y_pred)\n",
    "    precision = precision_score(y_test, y_pred, average=\"weighted\", zero_division=0)\n",
    "    recall = recall_score(y_test, y_pred, average=\"weighted\", zero_division=0)\n",
    "    f1 = f1_score(y_test, y_pred, average=\"weighted\", zero_division=0)\n",
    "    cm = confusion_matrix(y_test, y_pred)\n",
    "    report = classification_report(y_test, y_pred, zero_division=0)\n",
    "\n",
    "    print(model_name)\n",
    "    print(\"Accuracy:\", accuracy)\n",
    "    print(\"Precision:\", precision)\n",
    "    print(\"Recall:\", recall)\n",
    "    print(\"F1 Score:\", f1)\n",
    "    print(\"confusion matrix\")\n",
    "    print(cm)\n",
    "    print(report)\n",
    "\n",
    "    plt.figure(figsize=(5, 4))\n",
    "    plt.imshow(cm, cmap=\"Blues\", aspect=\"auto\")\n",
    "    plt.title(f\"{model_name} - Confusion Matrix\")\n",
    "    plt.colorbar()\n",
    "    plt.xlabel(\"Predicted\")\n",
    "    plt.ylabel(\"Actual\")\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "    return {\n",
    "        \"model_name\": model_name,\n",
    "        \"y_pred\": y_pred,\n",
    "        \"accuracy\": accuracy,\n",
    "        \"precision\": precision,\n",
    "        \"recall\": recall,\n",
    "        \"f1_score\": f1,\n",
    "        \"confusion_matrix\": cm,\n",
    "        \"classification_report\": report,\n",
    "    }\n",
    "\n",
    "\n",
    "dt_model = DecisionTreeClassifier(random_state=42)\n",
    "dt_model.fit(X_train, y_train)\n",
    "decision_tree_results = evaluate_model(dt_model, X_test, y_test, \"Decision Tree Classifier\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "78614ed3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Random Forest Classifier\n",
      "Accuracy: 0.9264705882352942\n",
      "Precision: 0.9290441176470587\n",
      "Recall: 0.9264705882352942\n",
      "F1 Score: 0.9271079949007467\n",
      "confusion matrix\n",
      "[[28  0  0  0]\n",
      " [ 0  7  1  1]\n",
      " [ 0  1 21  0]\n",
      " [ 0  2  0  7]]\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      1.00      1.00        28\n",
      "           1       0.70      0.78      0.74         9\n",
      "           2       0.95      0.95      0.95        22\n",
      "           3       0.88      0.78      0.82         9\n",
      "\n",
      "    accuracy                           0.93        68\n",
      "   macro avg       0.88      0.88      0.88        68\n",
      "weighted avg       0.93      0.93      0.93        68\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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8znOx4hxgTE1VJkWcaKF/m8OSTImeccL3GVEAeJSero0bhhtypCdoHKsf16WsBZxIkavs7lX5PR3b6r3YHB1mEQY45/mBzPV4K7EdR5KjDmL4loj9an62LPHjx/3GFwx64m7uV4RWBlcfcdGZESBx/SqslJlDV9nbZo1O72UaM5Vn8i5IBgsHgNhJyUl2QeUxgDvqA/1NFi7OwcPHlT/IgdLREQWo6mIbfw1FmTNkO8CcyNiNoVRo0apWSa++OILNTsFZmnQWwpjlgfM+qBPY4Wi31mzZqmAjJlAMFMI5jDErCitW7cu4W9ERERXQS7Ul8WC/KJBk97qFwEVdaZonYYpo1566SX78+j7isZKly9ftrcewzRHmFsRU25FR0er12DybSIisiBN8yHnas2sq98EV7QMzm/ACEyq7DgeBoLpzp07iyl1RERUaJoPOVHmXImIiIIj52rNwmoiIiI/5jfFwkREFOhCfCjmtWYekcGViIisQQucYmEGVyIisgaNDZqIiIhMDq4ac65ERETmBteQgOmKY81UERER+THWuRIRkTVoLBYmIiIyObiGBEyxMHOuRERkoZxriPHXWBCDKxERWUOI9tdi9DUWxOBKRETWoAVOsbA1U0VEROTHmHMlIiJr0NhamIiIyOTgGhIwxcLMuRIRkTVozLkSERGZHFxDmHMlIiIyN7hqHLifiIjI3OAaEjA5V2umioiIyI8xuBIRkbWKhTWDiwEJCQnSsWNHqVixotSoUUOGDBkix44dc9qmV69eomma0/Lggw8a+hwGVyIisoiQ/xUNe7sYDGM7d+6U0aNHS2JiomzZskVycnKkX79+kpmZ6bTdqFGjJDU11b7Mnj3b0OewKw4REQVNg6ZNmzY5PV6+fLnKwSYlJUmPHj3s68uVKydRUVHiK+ZciYjIWrPiaEaWwg3cn5aWpv6tUqWK0/p33nlHqlWrJi1btpT4+Hi5fPmyofdlzpWIiPy+tXB6errT6rCwMLXkJy8vT8aPHy/du3dXQVR3zz33SP369aV27dry7bffyuOPP67qZdesWeN1shhciYjI70VHRzs9njZtmkyfPj3f16Du9fDhw7J7926n9Q888ID971atWkmtWrXkxhtvlBMnTkijRo0Cs1h44cKF0qBBAylbtqx07txZvvrqq3y3X716tTRr1kxtj520cePGYksrEREV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",
      "text/plain": [
       "<Figure size 500x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# step 7 train random forest classifier\n",
    "\n",
    "rf_model = RandomForestClassifier(n_estimators=200, random_state=42)\n",
    "rf_model.fit(X_train, y_train)\n",
    "random_forest_results = evaluate_model(rf_model, X_test, y_test, \"Random Forest Classifier\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "5a935666",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Support Vector Machine Classifier\n",
      "Accuracy: 0.8823529411764706\n",
      "Precision: 0.8941628959276017\n",
      "Recall: 0.8823529411764706\n",
      "F1 Score: 0.8847413549215469\n",
      "confusion matrix\n",
      "[[24  0  4  0]\n",
      " [ 0  8  1  0]\n",
      " [ 1  1 20  0]\n",
      " [ 0  0  1  8]]\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.96      0.86      0.91        28\n",
      "           1       0.89      0.89      0.89         9\n",
      "           2       0.77      0.91      0.83        22\n",
      "           3       1.00      0.89      0.94         9\n",
      "\n",
      "    accuracy                           0.88        68\n",
      "   macro avg       0.90      0.89      0.89        68\n",
      "weighted avg       0.89      0.88      0.88        68\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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TI9jWEI8R0REFIg8PbYwWux66nJToEABx2hGREREZuXpQSQaNGggK1euzPT4ihUrpF69elZtFxER5TFaGBULm85cn3rqKbnzzjvVMIKdO3dWj23atEmWLVumZsYhIiIKRISYL+bFa8IiuPbu3VtWr14tzz77rAqmhQsXVnOsYnCGnJ5yjoiIKBQENJ9rr1691AKoZ12+fLmMGzdOEhMT1WhNREREeXk+14DrgtEyGCMjVahQQWbNmqWKiHft2mXt1hERUZ4bRCLC5BLymSsmRccoSIsWLVIZ6z333KMG7EcxMRszERFR9gfu10y/JqQzV9S1Ym7U7777Tg2I/+uvv8rLL7+cs1tHRER5hpYXWwt/+umn8uijj8rw4cOlZs2aObtVRESU50SE0djCfmeu27dvlytXrkizZs2kVatWMm/ePDl//nzObh0REVEI8ju4tm7dWl5//XU1rds///lPNWgEGjNdv35dNm7cqAIvERFRoLQA/wuL1sI33HCDDB48WGWy+/fvV/OlzpgxQ8qVKye33357zmwlERGFvYggtBZGTxe0IUJyiLlg0SDXGaY1nTx5spQvX16N49ClSxc5fPiw+c8i2YAGTpgN5+TJk6qvKxERkZ2Da2pqqhr4aP78+R6fR0x76aWXZOHChfLVV1+phLJbt26SlpaW84NIuMuXL5/07dtXLURERIFAJonF7GvMwAxuWDxB1oreME8++aT06dNHPfbWW29JdHS0ynDvvffekJ9QgIiI8piIXB5E4tixY2o8BxQFG4oXL64a8e7cuTP4mSsREVFuDn+Y7DblaWRkpFrMQGAFZKrO8LvxnL+YuRIRUciLjY1VWaaxxMfH5+r2MHMlIiJbiNACmHLur/WTkpIkKirK8bjZrBViYmLUzzNnzqjWwgb83rhxY3PbZfqvExER2azONSoqymUJJLhWq1ZNBVjMUW5AcTNaDbdp08bUezFzJSIie9ACGCvY5PopKSly5MgRl0ZM+/btU/ORV65cWUaPHi3//ve/1TC/CLZPPfWU6hNrtjcMgysREdlChGhqMfsaM3bv3i2dOnVy/D527Fj1E1OoYta3CRMmqL6w//jHP+TSpUty8803y/r166VQoUKm/g6DKxER5ZnJ0jt27Kj6s3p/P02mTZumluxgnSsREZHFmLkSEZEtROTFKedyG/ostWjRQooVK6Ym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nUTkPwZXomxCIEKWCphP99ChQ7Jx40Y1cfi1a9ekW7duaiq2L774Qr788kspWrSoyn6N18yaNUuWLl0qixcvlu3bt8tvv/2m5kb1ZeDAgbJ8+XJ56aWX5IcfflCTaeN9EWw//PBDtQ6249SpU2qybUBgfeutt2ThwoVy8OBBGTNmjPz973+XhIQEx03AnXfeKb1791bT7g0dOlQmTpzI44MoEIFOp0OUF2Equj59+qh/X79+Xd+4caMeGRmpjxs3Tj0XHR2tp6enO9Z/++239dq1a6t1DXi+cOHC+oYNG9Tv5cuX159//nnH89euXdMrVark+DvQoUMHfdSoUerfhw4dUlO64W/7mkbv4sWLjsfS0tL0IkWK6Dt27HBZd8iQIfqAAQPUvydNmqTXq1fP5fnHH38803sRUdZY50pkEjJSZInISlHUet9998nTTz+t6l4bNGjgUs/67bffqsnYkbk6S0tLk6NHj8rly5dVdtmqVSvHc/nz55fmzZtnKho2IKvMly+fdOjQwe9txjb8/vvvctttt7k8juy5SZMm6t/IgJ23A9q0aeP33yCi/8fgSmQS6iIXLFiggijqVhEMDTfccIPLuikpKdKsWTN59913M71P2bJlAy6GNgvbAZ988olUrFjR5TnU2RKRtRhciUxCAEUDIn80bdpUVq5cKeXKlZOoqCiP65QvX16++uorad++vfod3XoSExPVaz1BdoyMGXWlaEzlzsic0VDKUK9ePRVET5w44TXjrVu3rmqY5WzXrl1+fU4icsUGTUQ56P7775cyZcqoFsJo0HTs2DHVD/XRRx+VkydPqnVGjRolM2bMkNWrV8uPP/4oDz/8sM9BG6pWrSpxcXEyePBg9RrjPd977z31PFoxo5Uwiq/PnTunslYUS48bN041YnrzzTdVkfSePXvk5ZdfVr/DQw89JIcPH5bx48erxlDLli1TDa2IyDwGV6IcVKRIEdm2bZtUrlxZtcRFdjhkyBBV52pkso899pg88MADKmCijhOB8I477vD5viiWvvvuu1UgrlOnjgwbNkxSU1PVcyj2nTp1qmrpGx0dLSNHjlSPYxCKp556SrUaxnagxTKKidE1B7CNaGmMgI1uOmhV/Oyzz/L4IAqAhlZNgbyQiIiIPGPmSkREZDEGVyIiIosxuBIREVmMwZWIiMhiDK5EREQWY3AlIiKyGIMrERGRxRhciYiILMbgSkREZDEGVyIiIosxuBIREVmMwZWIiEis9X9LSZ75oSuBOQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 500x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# step 8 train support vector machine classifier\n",
    "\n",
    "scaler = StandardScaler()\n",
    "X_train_scaled = scaler.fit_transform(X_train)\n",
    "X_test_scaled = scaler.transform(X_test)\n",
    "\n",
    "svm_model = SVC(kernel=\"rbf\", gamma=\"scale\", random_state=42)\n",
    "svm_model.fit(X_train_scaled, y_train)\n",
    "svm_results = evaluate_model(svm_model, X_test_scaled, y_test, \"Support Vector Machine Classifier\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "c1c50055",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAHqCAYAAAByRmPvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAh/dJREFUeJzt3QmcjeX///HPYAZjXzJFRLJn31KkElJI8k2lqMS3ok2rFq3SImmhoqRNtNKu0vatiBIpkeySLVt2Zu7/4331u87/PmOG4czCzOv5eBxm7nOf+5w5M9d97s91fa7PFRcEQWAAAAAAcJDyHewDAQAAAICgAgAAAEDMGKkAAAAAEBOCCgAAAAAxIagAAAAAEBOCCgAAAAAxIagAAAAAEBOCCgAAAAAxIagAAAAAEBOCCgCHtLi4OLv77rsP+HFLlixxjx07dmyWvK7cpnLlynbJJZfk9MvI1fS3qL/JH374Yb/7nnLKKe7m8fcM4FBHUAEgwxdDun3zzTd73R8EgVWsWNHd37Fjx8PyHV29erXdeOONVrNmTUtMTLQiRYpY48aN7f7777eNGzfm9MtDNtBFvP6Gq1Wrlub9n376aaQdvPnmm4f978T/LLoVKFDASpcu7f7mr732Wps7d+5BH3fbtm2uI+DLL7+0Q8F3333nXg/tGMhaBbL4+ABykUKFCtm4ceOsZcuWUdu/+uorW7FihRUsWNAORzNmzLAzzzzTtmzZYhdddJG7sBL1KD/44IP29ddf2yeffGK52fz58y1fPvqZ9Df+xx9/2PTp061Zs2ZR79Grr77q7t+xY0eW/z6y6++tbdu21rNnT9cxsGnTJps9e7a9+OKLNnLkSHvooYdswIABBxVU3HPPPe7r8GhLTgYVej0aiStZsmROvxwg1yKoAJBhuvB+44037IknnnA9m54CDV2Ir1u37rB7N9V7ec4551j+/Pntp59+ciMVYYMHD7bRo0dbbqQLSV0gFy5c+LANCDNb1apVbc+ePfbaa69FBRV6n9555x0766yz7K233sry15GQkGDZoXr16i6QDlMg3alTJ7vhhhtce1C7B4D9oVsKQIZdcMEF9vfff7s0EG/Xrl0uFeTCCy9M8zFbt251FydKj9KFa40aNWzo0KHugjZs586ddv3119sRRxxhxYoVs86dO7vRj7T8+eefdtlll1lSUpI7Zp06dWzMmDEH9Zt89tln3fGGDRu2V0Aheo477rgjapt6cfWceu7y5ctbv3799kqtUA/t8ccfbz///LO1bt3apVQdd9xxkbQZje40b97cXdDrPfnss8+iHq90DaWlzJs3z8477zwrXry4lSlTxqWmpO4pf+GFF+y0006zcuXKuddUu3Zte/rpp9OcN6H0tMmTJ1uTJk3cc+vnT2tOxe7du13vrlKB1Duv59YIVfh3L59//rm1atXKpYupF/jss8+23377Lc2fRSMAvre4RIkSdumll7pe7YxQMKvAVa+5bNmy7kJYv7cwHbto0aJue5cuXdzX+ntSWltycrIdyN/5hAkTLCUlJbLtvffec69Vv4u0KCDt0KGD+z3pedu0aWPTpk1Lc18d57///a97T7W/Rgo2bNiwzzkV6dHfR7du3Vzqkn5P+r2+++67Fgu9rvHjx7uOAwXV4bY+aNAg93vQ70+/c/3uv/jii6i5H3rPRX8/Pr3Kz4tSe9Dv6dhjj3Wv98gjj3RtWeeVsH/++ceuu+4693epv2n9bWtUZebMmVH7ff/993bGGWe416M2prb27bffRu7X8950003u6ypVqkRej14ngMxFUAEgw/QB36JFC9eL63300UcubeL888/fa38FDgoOHnvsMffBrwt3XUDrQz51WsXll19uw4cPt3bt2rme0vj4eNcrnNbchxNOOMFdhPfv398ef/xxd7Heu3dv9/gDpQswXajqwiwjdJGiIELBxKOPPmrnnnuuuzDX69aFeJguFHURr+Dh4YcfdhdHep90war/1QOsn1WBl55fF1Kp6SJWQcSQIUPc/hol6tu3b9Q+CiCOOeYYu+2229xrUgB31VVX2YgRI9JMc9JFsy7Q9N41aNAg3Z9TF4WnnnqqPfXUU3b77bdbpUqVoi7q9Dto3769rVmzxu2v36lSTU466aQ0L9r0s+hn1M+irzVXx6fJ7Iv20/4aTdJj+/TpY2+//bYLclIHcwoe9Jp0YazgVReZek9GjRplGaUA+a+//oqaE6DROAUKurhN7ddff3UX10oduvnmm+3OO++0xYsXu6BAF72p6e9WgZfeMwUUSqtSEJQ60N4fPa/ago516623up9TF/o6lkZVYqHftd47BUabN2922/T/c889534upUbp9a9du9a937NmzXL7KKDwAa1GAF9++WV369q1q9umoHTRokUuoHzyySddO1AAo7/t8M9/xRVXuOOofSmIV2CodhoOWBXQnnzyye513XXXXfbAAw+4vwcF2EpfEz2v/t5F5yH/enzgAyATBQCwHy+88II+7YMZM2YETz31VFCsWLFg27Zt7r7//Oc/wamnnuq+PuaYY4Kzzjor8riJEye6x91///1Rx+vWrVsQFxcX/PHHH+77WbNmuf2uuuqqqP0uvPBCt/2uu+6KbOvdu3dw1FFHBevWrYva9/zzzw9KlCgReV2LFy92j9Vr35dSpUoF9evXz9DfwJo1a4KEhISgXbt2QXJycmS73hM915gxYyLbWrdu7baNGzcusm3evHluW758+YJp06ZFtk+ePHmv16qfWds6d+4c9Rr0Hmn77NmzI9v8zxzWvn374Nhjj43apt+PHvvxxx/vtb/u69WrV+R7vSfh32VaGjRoEJQrVy74+++/I9v0uvTz9ezZc6+f5bLLLot6/DnnnBOUKVNmn8+xa9cu9xzHH398sH379sj2999/3x1z0KBBkW16/dp27733Rh2jYcOGQePGjYP90e+sTp067usmTZq4vzXZsGGD+72/+OKLwRdffOGe44033og8rkuXLu7+hQsXRratXLnStZOTTz55r3ak16Kfy3v44Yfd9kmTJkW9Ft28tP6e27RpE9StWzfYsWNHZFtKSkpw4oknBtWqVdvvz6vj9evXL937r7322qi/tT179gQ7d+6M2kfvTVJSUtTvdu3atXu12339rb722mtu/6+//jqyTW15X69NP6d+Rv2d6+vw8atUqRK0bds2su2RRx5xx9d7CCDrMFIB4ICox3j79u32/vvvu15n/Z9e6tOHH37oepevueaaqO1Kh9I1jUY5/H6Sej+lP6TqBHH57Mr31teaw+Fv6i3ViEnq9Ij9US+n0q0yQj3zSgHR6wpPalbPudJYPvjgg6j9lQYTHsHRKI1Sf2rVquVGLzz/tXpwU9OoSNjVV18d9Z6JenA9vQd6P9TLrOPp+zClgOi92h+9TvWEL1iwIM371ZOv3mmlsij1xqtXr54bBQm/vnDvc5h695X24nvC06LJ8hoJ0ciL0mU8jWIpXS31e57e86T13u6L/qY1GuLT+/R3rJ731DQyoknVGh1QSo931FFHuWOoWlrqn08jTRqJ86688kqXapTWe5ae9evXu556P/rj24HeT/1+9XtL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QP/+/a1x48ausFF2pj4JE7UBAACAXGDs2LEZmhSeFRipAAAAABATggoAAAAAMSGoAAAAABATggoAAAAAMSGoAAAAABATggoAAAAAMSGoAAAAALJBXFycTZw4MdP3PRSwTgUAAAAy190lsvcdvXvTAT/kkksusRdffNF9HR8fb5UqVbKePXvabbfdZgUKZM0l8l9//WWlSpXK9H0PBQQVAAAAyJPOOOMMe+GFF2znzp324YcfWr9+/VyAMXDgwKj9du3aZQkJCTE/35FHHpkl+x4KSH8CAABAnlSwYEF38X7MMcfYlVdeaaeffrq9++67bhSjS5cuNnjwYCtfvrzVqFHD7b98+XI777zzrGTJkla6dGk7++yzbcmSJVHHHDNmjNWpU8cd+6ijjrL+/funmdKkQEX3aZ9ChQq51zBkyJA095U5c+bYaaedZoULF7YyZcpY3759bcuWLZH7/WseOnSoO6b2UZC0e/duyw6MVAAAcjZtIYb0hczwW81aOfK8teb9liPPCyB9umD/+++/3ddTpkyx4sWL26effuq+18V5+/btrUWLFva///3PpUjdf//9brTj559/diMZTz/9tA0YMMAefPBB69Chg23atMm+/fbbNJ/riSeecAHM66+/7lKvFLDolpatW7dGnnvGjBm2Zs0au/zyy11QMnbs2Mh+X3zxhQso9P8ff/xh3bt3twYNGlifPn2y/NdOUAEAh6jKt36QI8+7pFCOPK3VfbFujjzv6znyrAAOJUEQuCBi8uTJdvXVV9vatWutSJEi9txzz0XSnl555RVLSUlx2zSKIEqd0qjFl19+ae3atXNBxg033GDXXntt5NhNmzZN8zmXLVtm1apVs5YtW7rjaaQiPePGjbMdO3bYSy+95F6XPPXUU9apUyd76KGHLCkpyW3THAxtz58/v9WsWdPOOuss93NlR1BB+hMAAADypPfff9+KFi3q0o80sqCe/bvvvtvdV7du3ah5FLNnz3a9/8WKFXOP0U0pULrYX7hwoRs9WLlypbVp0yZDz610pVmzZrnUqmuuucY++eSTdPf97bffrH79+pGAQk466SQX5MyfPz+yTWlXCig8jVrodWUHRioAAACQJ5166qkuZUnBg+ZOhKs+hS/gRfMXGjdubK+++upexzniiCMsX74D66tv1KiRLV682D766CP77LPP3FwNzel48803D/rn0STzMI2AKPDIDgQVAAAAyJMUOBx33HEZDgImTJhg5cqVc3Mt0lK5cmWXbqRgJSN0HI2O6NatWzc3P2P9+vVuBCSsVq1abu6E5lb4YEdzNRTI+EnkOY30JwAAAGA/evToYWXLlnUVnzRRW6MMmkuh1KUVK1a4fZQ69eijj7pJ2AsWLLCZM2fak08+mebxhg0bZq+99prNmzfPfv/9d3vjjTdcJSrN0UjruZWi1atXL/vll1/cRGzN/bj44osj8ylyGkEFAAAAsB+JiYn29ddfu0pNXbt2daMHvXv3dnMqiv/fyIUu+ocPH24jR4508xs6duzogou0aG7Gww8/bE2aNHGTuVWaVmtlpJVGpefWJHKNYmhfjWpo7oYmZR8q4gJNd89DNm/ebCVKlHAlvtIbusptcq6CzIU58rx1q1TKked9fcieHHleylLmXrTd7EHbBQ6eLqjVY1+lShXXk47c9Ts8kOtmRioAAAAAxISgAgAAAEBMCCoAAAAAxISSsgAAALnF3SWy9/mKVjQ76VEzq5K9z4tDDiMVAAAAAAgqAAAAAOQc0p8AAAByTUnoHHlaW7BhgeWLz94EmGNX5cyqCIWPPz5HnvdQR/oTAAAAgJgQVAAAAACICUEFAAAAkAPi4uJs4sSJ7uslS5a472fNmnVY/i6YUwEAAIBMdf4H52frOzq98WsH/Ji+t99ur7z7rvu6QIECViEpybq2a2d39utnhQoWzIJXmbsRVAAAACBPanvSSfbs/ffbnj17bOavv1rfO+6wODO7f8CAnH5phx3SnwAAAJAnFUxIsCPLlrWjjzzSOrdpY6eecIJNmTbN3ZeSkmKPPPec1TrjDCvdpIk1P/dce+eTT6Ie/+uvv1rHjh2tePHiVqxYMWvVqpUtXLjQ3Tdjxgxr27atlS1b1kqUKGGtW7e2mTNnWm5FUAEAAIA879cFC2zarFmWEB/v3gsFFOPefdeeuPNO+/Gdd6z/xRfbZQMH2ldffeXu//PPP+3kk0+2ggUL2ueff24//vijXXbZZW7UQ/755x/r1auXffPNNzZt2jSrVq2anXnmmW57bkT6EwAAAPKkj77+2o5o1sz2JCfbzl27LF++fPbYbbe5rxVUfDBqlDVv0MDtW6ViRfvup5/s2WefdaMOI0aMcCMQ48ePt/j/C0SqV68eOfZpp50W9VyjRo2ykiVLuqBEoxu5DUEFAAAA8qTWTZva43feaVu3b7enXnrJ8hcoYF3atrW5f/xh27Zvt459+0btv2v3bmvYqJH7WlWalO7kA4rUVq9ebXfccYd9+eWXtmbNGktOTrZt27bZsmXLLDciqAAAAECelFi4sFWtVMl9/cx997l5E2PffttqH3ec2/b2iBFWPikp6jEl6tZ1/xcuXHifx+7Vq5f9/fff9vjjj9sxxxzj0qRatGhhu3btstyIoAIAAAB5nlKfburTx2555BH7+f333STu5atWWaumTaPem8IVK7r/69WrZy+++KLt3r07zdGKb7/91kaOHOnmUcjy5ctt3bp1ufZ9ZqI2AAAAYObWqcifL589/8Ybdm2vXnbLww/bK5Mm2aLly+2nuXPt6VdfdYGE9O/f3zZv3mznn3++/fDDD7ZgwQJ7+eWXbf78+e5+TczW97/99pt9//331qNHj/2ObhzOGKkAAAAA/m8RvCsuuMAee+EFm/vRR3ZE6dI29LnnbPGKFVayeHGrX6uW3dmhg3uvypQp46o+3XTTTW7idv78+a1BgwZ20kknufuff/5569u3rzVq1MgqVqxoDzzwgN1444259n0mqAAAAECmGn/W+Cx/R49dFcT0+FGDB6e5/cbLL3c36XfRRe4WVvj44yNfKwVq8uTJaR6nYcOGbq2KsG7dukV9HwT//2eoXLly1PeHG9KfAAAAAMSEoAIAAABATAgqAAAAAMSEoAIAAABATAgqAAAAAMSEoAIAAADA4R1UjBgxwpXQKlSokDVv3tymT5++z/2HDx9uNWrUcIuHqObv9ddfbzt27Mi21wsAAADgEAoqJkyYYAMGDLC77rrLZs6cafXr17f27dvbmjVr0tx/3Lhxduutt7r9tTqhFhXRMW677bZsf+0AAAAADoGgYtiwYdanTx+79NJLrXbt2vbMM89YYmKijRkzJs39v/vuO7dK4YUXXuhGN9q1a2cXXHDBfkc3AAAAAOTCoGLXrl32448/2umnn/7/X0y+fO77qVOnpvmYE0880T3GBxGLFi2yDz/80M4888xse90AAAAAohWwHLJu3TpLTk62pKSkqO36ft68eWk+RiMUelzLli3dMuZ79uyxK664Yp/pTzt37nQ3b/PmzZn4UwAAACC1fC27ZfmbsiT0deU33zigx/a9/XZ75d1399o+54MPrGql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XNSuXdv9r/R+lZdVYBGeTxxWq1YtN+rgKzSJRjwUqNSoUSPd52jUqJGrQlauXDk77rjjom6aZJ1dCCoAAACAkC3bttnsefPcTZb++af7evlff6X7PnXr1s0ee+wx+/77710JY2Xc9OvXz6pXr241a9Z0lZVuueUWu/nmm928CaUmqWzr888/7x7fo0cPt4/mWyiN6osvvrCrr77ajXSkXtctTI8rW7asm7+hidqq5KTnvuaaa1zZ5TyT/gQAAAAcSmb++qudcdllke9v+b/lDC7q3NlebvvvGleptW/f3l577TVXYEglWDVh+7TTTrO7777bpfCLCgzpa80n1vopRx11lFvIWVRCdvLkya6krNKnwiVl90X7af6GApauXbu6CeEqdKS5G9lZ9TTH1qnIKQdSbze3yCu1sj3WqUBuQdvNHqxTgayQ19epyA7HrsqZS9j01qk4XB3261QAAAAAyB0IKgAAAADEhKACAAAAQEwIKgAAAADEhKACAAAAB8fX+8lTZX9ylyCTajYRVAAAAOCgxO9cb5a8y4JdRBWHq127drn/8+fPH9NxWKcCAAAAByX/nm1WculH9nvh7lbKSllcQpxZXPa8mTtTciaQiduxw3KLlJQUW7t2rVvrwq+lcbAIKgAAAHDQjlwwzp4sVdJO3nOyFchXwOKyKaoINluOiI+Pt9wkX758VqlSJYuLi+33RlABAACAgxZngb239j379O9PrUSBEpYvm7LrHxu1x3JClY8+tNwkISHBBRaxIqgAAABAzHak7LAdu7IvNSjfXzkTVKRedRr/YqI2AAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgJgQVAAAAACICUEFAAAAgMM7qBgxYoRVrlzZChUqZM2bN7fp06fvc/+NGzdav3797KijjrKCBQta9erV7cMPP8y21wsAAAAgWgHLQRMmTLABAwbYM8884wKK4cOHW/v27W3+/PlWrly5vfbftWuXtW3b1t335ptvWoUKFWzp0qVWsmTJHHn9AAAAAHI4qBg2bJj16dPHLr30Uve9gosPPvjAxowZY7feeute+2v7+vXr7bvvvrP4+Hi3TaMcAAAAAPJg+pNGHX788Uc7/fTT//+LyZfPfT916tQ0H/Puu+9aixYtXPpTUlKSHX/88fbAAw9YcnJyNr5yAAAAAIfESMW6detcMKDgIEzfz5s3L83HLFq0yD7//HPr0aOHm0fxxx9/2FVXXWW7d++2u+66K83H7Ny50928zZs3Z/JPAgAAAORtOT5R+0CkpKS4+RSjRo2yxo0bW/fu3e322293aVPpGTJkiJUoUSJyq1ixotu+Zs0aF9gsWLDAjZrMnDnTbZ82bZr7f86cObZlyxY3Z2PlypW2YcMGN9djz549NmPGjKh9586d64KVFStWuJu+1rbwPnqMHqtj6Fg6po6t59BzhffVa9Fr0mvTa1y9erULqLZv326zZ8+O2lffa7vu135p/Ux9avw7knPOMclWtlBgzY9IsXqlU6xS0cDaVUix+HyBXVItOWrfjhWT7ajEwBqXTXE3fa1t4X30GD1Wx9CxdEwdW8+h53Kv89jr//2ZKvW1XfmL2IJyZ9q6ojVsdbG6tqhsG9seX8pmV7wkal99r+26X/tpfz1Oj9dxwvvOqXChbUkoZ0tLn2wrSzS2DYnH2ikFT7F4i7fuid3dPhcVucj937ZQW0vKl2T14uu5m77WtvA+eoweq2NUyF/BasXXskYJjax0vtLWoVCHqH3PTTzXCscVtpYFW1rl/JVta/XqtrHFCba7eHFbfU4Xt8+fvXq5//W9tut+7betShVbf/LJlly4sK067z9R+67p2NF2lSljm5o0sX/q1LHtRx9tf7c5zVLi421ljwuj9l3Xvv0h/beXG9tTdv5MqduTb3s9qiZbYoHATiufYlWLB1azZIq1TEqxEgmBnVclel99r+26X/tpfz1Oj9dx0jpHhNvT/KSzbU9cgs2o3C+q7c09qpttLnS0rSjVwt30tbaF99Fj9FgdQ8fSMXVstVm13dTniHB7qlagmjVPaG7F4opZ58Kdo9qevtd23a/9tL8ep8erXYb3VbtV+1U7VntWu059jgi3p51HJtnmBvXdTV9rW3gftUG1RbVJtU21UbVVtVm13fC+attq42rravNpnSMO1b+93NiesvtnyonPXL9vdn7m+nNEdn/mqu3nxGeuzgt5rT1lVFwQBIHlAL0JiYmJbsJ1ly7//jFIr169XIWnSZMm7fWY1q1bu7kUn332WWTbRx99ZGeeeaYbjUhISMjQSIUCi02bNlnx4sUtL6h86wc58rxLCv3bGLNb3SqVcuR5Xx+yJ0eet9a833LkeZH1aLvZg7aLrED7zXq03ayn62Z1ymfkujnHRioUAGi0YcqUKVEjEfpe8ybSctJJJ7mUJ+3n/f777668bFoBhajsrN6E8A0AAABALkl/UjnZ0aNH24svvmi//fabXXnllbZ169ZINaiePXvawIEDI/vrflV/uvbaa10woUpRmqitidsAAAAA8mBJWc2JWLt2rQ0aNMhWrVplDRo0sI8//jgyeXvZsmWuIpSntKXJkyfb9ddfb/Xq1XPrVCjAuOWWW3LwpwAAAADytgKxzotYvHixVa1a1QoUOLhD9e/f393S8uWXX+61TalRBzpxBAAAAMAhlv60bds26927t5toXadOHTeiIFdffbU9+OCDmf0aAQAAAOS2oELzHFTaSiMJhQoVimzXwnUTJkzIzNcHAAAA4BB3UDlLEydOdMHDCSecYHFxcZHtGrVYuHBhZr4+AAAAALlxpEKTq7UIXWqq3BQOMgAAAADkfgcVVDRp0sSVc/V8IPHcc8+lu8YEAAAAgNzpoNKftDZEhw4d3DLeWvL78ccfd19/99139tVXX2X+qwQAAACQu0YqWrZs6SZqK6CoW7euffLJJy4daurUqW6VbAAAAAB5xwGPVOzevdv++9//2p133ulWwwYAAACQtx3wSEV8fLy99dZbWfNqAAAAAOSN9KcuXbq4srIAAAAAcFATtatVq2b33nuvffvtt24ORZEiRaLuv+aaa3hnAQAAgDzioIKK559/3kqWLGk//viju4WpvCxBBQAAAJB3HFRQsXjx4sx/JQAAAADyzpyKsCAI3A0AAABA3nTQQcVLL73k1qgoXLiwu9WrV89efvnlzH11AAAAAHJn+tOwYcPcOhX9+/e3k046yW375ptv7IorrrB169bZ9ddfn9mvEwAAAEBuCiqefPJJe/rpp61nz56RbZ07d7Y6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QbNmzWz48OG2detWVw1KevbsaRUqVHBpTPLQQw/ZoEGDbNy4cW5ti1WrVrntRYsWdTcAAAAAeSyo6N69u61du9YFCgoQVCpWIxB+8vayZctcRSjv6aefdmlT3br9m7vraZ2Lu+++O9tfPwAAAJDX5XhQIf3793e39Ba7C1uyZEk2vSoAAAAAub76EwAAAICcR1ABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAABiQlABAAAAICYEFQAAAAAO/6BixIgRVrlyZStUqJA1b97cpk+fvs/933jjDatZs6bbv27duvbhhx9m22sFAAAAcIgFFRMmTLABAwbYXXfdZTNnzrT69etb+/btbc2aNWnu/91339kFF1xgvXv3tp9++sm6dOnibr/88ku2v3YAAAAAh0BQMWzYMOvTp49deumlVrt2bXvmmWcsMTHRxowZk+b+jz/+uJ1xxhl20003Wa1atey+++6zRo0a2VNPPZXtrx0AAABADgcVu3btsh9//NFOP/30yLZ8+fK576dOnZrmY7Q9vL9oZCO9/QEAAABkrQKWg9atW2fJycmWlJQUtV3fz5s3L83HrFq1Ks39tT0tO3fudDdv06ZN7v/NmzdbXpGyc1uOPO/muCBHnjd5e3KOPO+W5Jx53rz0t5zX0HazB20XWYH2m/Vou9l3jREEwaEdVGSHIUOG2D333LPX9ooVK+bI68lLSuTYM/+WI8/aLMfe6Jx7p5E70Xaz642m7SIL/qzy0Gcvn7vZ559//rES+zln5WhQUbZsWcufP7+tXr06aru+P/LII9N8jLYfyP4DBw50E8G9lJQUW79+vZUpU8bi4uIy5efAoRVRK2Bcvny5FS9ePKdfDoAMou0Chy/ab+6lEQoFFOXLl9/vvjkaVCQkJFjjxo1typQproKTv+jX9/3790/zMS1atHD3X3fddZFtn376qdueloIFC7pbWMmSJTP158ChRwEFQQVw+KHtAocv2m/utL8RikMm/UmjCL169bImTZpYs2bNbPjw4bZ161ZXDUp69uxpFSpUcGlMcu2111rr1q3t0UcftbPOOsvGjx9vP/zwg40aNSqHfxIAAAAgb8rxoKJ79+62du1aGzRokJts3aBBA/v4448jk7GXLVvmKkJ5J554oo0bN87uuOMOu+2226xatWo2ceJEO/7443PwpwAAAADyrrggI9O5gcOEKn1pVEtzaVKnvQE4dNF2gcMX7RdCUAEAAADg8F5RGwAAAMDhjaACAAAAQEwIKgAAAADEhKACh6U9e/bk9EsAACBP0VpiHnV+kBpBBQ4r/iRWoECBSMlhTmzA4XlRAuDw4D9nfYn/OXPmWFxcHO0ZUQgqcFjRSWzz5s322WefWXx8vN1zzz1u+XgAhwd/UfL111/b/Pnzc/rlAEhD6s46ffauX7/e/vjjD2vUqJG7bdmyJWodMYC/BhySPZnJyclpbr/zzjutZs2aNnnyZHvhhRfsySeftKJFi+bI6wRwYGkSixcvtt9++81OPvlku/zyy933AA4Naqf+s1dBRNg777xjzZo1s+uvv9569Ohhf/75J5+92AtBBXKMLi6uu+46N4wapp6P/Pnzu4uSb775xlavXh3Z3qJFC/v7779t9uzZ1qVLF0tMTKSnBDhEAojwRUm4B1MXKJs2bbKqVavaNddcY6eddpr99NNPdsYZZ+TYawbyqq1bt1qfPn1s4sSJUdvVTvXZK1999ZXNmzfPLWonRxxxhB111FH2888/24UXXui+B1IjqEC2Us/kueee64IJnZwqVapk5cuXj9pn5cqVdskll1jx4sWtX79+rldzzJgx7uR20kknuQsT3TRCwXwKIPupjd5666126aWXRvVq+osSBRavv/66jR8/3jZs2OAKK5QoUcI6dOhgU6ZMce24SJEi5GMD2USdcTfddJMdeeSRrj2WKVPG6tevH7XPtm3b7O6777bSpUtbr1697OKLL7b//Oc/7nO2SZMmVrduXdu+fbsLLtTW+fxFagQVyDYacfjvf/9r69atcyeq7t2724ABA9zJLey5555zFy1ffPGFG5G4+uqr7ZVXXrFnn33WXZicddZZ9tFHH6U5RAsgayg4uPLKK+2YY46xt956y9q1a2e33HJLVDvUiMUjjzziLkruvfdeGzp0qHXs2NHefPNNd/8FF1zggg4FFEI+NpA9br/9dveZ+thjj7kOuwcffNCqVKkSVUnxu+++s3fffddeeukl1wH49ttv2++//24333yza7caYSxWrJhLPxaCCqRGUIEs88knn7j8S89PsNaJSj2VOpn98ssvdv7557uTnSxcuNDtc8cdd1jTpk3dpLBff/3VTeqcOXOm20cByfLly23GjBn89oBsMmHCBJeOqHlMCvR1gaH5TZqs6f34449udGLcuHGubX/77bcu+FAwIhdddJELJGbNmsUoBZBFfvjhB9dhpxRjWbVqlSuK0LZtWxfYa9R/x44dLuB/8cUXI4976KGH3FwnbV+0aJELMBRUKKtAk7Tr1atn1apVc50KQFoIKpBllixZYtWrV49cPOhkdPTRR9u1115rFStWdD0lKg2rk5YPKuT77793gUWdOnXckKsmhKmnc8SIEe7+GjVquAljzz//vPueEpVA5tJFyPHHHx813+mDDz5wQUTnzp1dB4HSKZTGeOaZZ0Z6LRXoKzVRo4kKKpRu8fTTT7tAYu7cuW4/P3KxceNGfm1AJvIjB2qb+qytUKGC+14pT/os1ueq0ol1K1SokMsImDp1qq1duzaS/qR23qZNG2vQoIFrp/qcfe211ywpKcmNbOizV0GLqi6qXTNagSgBkIlSUlKC5OTkvbZr24033hjExcUFiYmJwcMPPxysXr062L17d9C7d++gQ4cOwfr1692+tWrVCo4++uhgzJgxwcqVKyPH2LFjR/Dnn3+6rx955BF3LACZb9OmTcGoUaOCzZs3uzYqI0eODEqXLh1UrVo1KF++fDB37tzgySefDEqVKhVs3LjR7XPeeecFJ5xwgmvDJUuWDDp37hxMnDgx2LJlS+TYX3zxhTsHfP/99/zqgEyU1mevjB49OihYsGAQHx8fdO/ePfI5Onz48KBOnTquLe7Zsye4+uqrg8KFCwdDhw4NFi5cGPW5vmLFCvf1e++959q/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P7Tq1atb4cKF7dRTT7UlS5bs9XzffPONtWrVyu2j59Uxt27dym8RAHIQQQUAIGaXXXaZvfDCC5Hvx4wZY5deemnUPjfffLO99dZb9uKLL9rMmTPtuOOOs/bt29v69evd/cuXL7euXbtap06dbNasWXb55ZfbrbfeGnWMhQsX2hlnnGHnnnuu/fzzzzZhwgQXZPTv35/fIgDkIIIKAEDMLrroIndxv3TpUnf79ttv3TZPIwlPP/20PfLII9ahQwerXbu2jR492o02PP/8824f3V+1alV79NFHrUaNGtajR4+95mMMGTLEbb/uuuusWrVqduKJJ9oTTzxhL730kku5AgDkjAI59LwAgFzkiCOOsLPOOsvGjh1rQRC4r8uWLRs1wrB792476aSTItvi4+OtWbNm9ttvv7nv9X/z5s2jjtuiRYuo72fPnu1GKF599dXINj1fSkqKLV682GrVqpWFPyUAID0EFQCATEuB8mlII0aMyJJ3dcuWLfbf//7XzaNIjUnhAJBzCCoAAJlCcx127drlyshqrkSY0poSEhJcWtQxxxzjtmnkQhO1lcokGmV49913ox43bdq0vSaFz507183HAAAcOphTAQDIFPnz53cpTLro19dhRYoUsSuvvNJuuukm+/jjj90+ffr0sW3btlnv3r3dPlrrYsGCBW6f+fPnu5K0SqcKu+WWW+y7775zIyKazK39J02axERtAMhhBBUAgExTvHhxd0vLgw8+6Ko2XXzxxW7E4Y8//rDJkydbqVKlIulLqg41ceJEq1+/vj3zzDP2wAMPRB2jXr169tVXX9nvv//uysqqZO2gQYOsfPny/BYBIAfFBZrhBgAAAAAHiZEKAAAAADEhqAAAAAAQE4IKAAAAADEhqAAAAAAQE4IKAAAAADEhqAAAAAAQE4IKAAAAADEhqAAAAAAQE4IKAAAAADEhqAAAAAAQE4IKAAAAADEhqAAAAABgsfh/Nod4SNVzB6QAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best model: Decision Tree Classifier\n",
      "Best accuracy: 1.0\n",
      "Best F1 score: 1.0\n"
     ]
    }
   ],
   "source": [
    "# step 9 compare all models with common metrics\n",
    "\n",
    "comparison_df = pd.DataFrame([\n",
    "    {\n",
    "        \"Model\": decision_tree_results[\"model_name\"],\n",
    "        \"Accuracy\": decision_tree_results[\"accuracy\"],\n",
    "        \"Precision\": decision_tree_results[\"precision\"],\n",
    "        \"Recall\": decision_tree_results[\"recall\"],\n",
    "        \"F1 Score\": decision_tree_results[\"f1_score\"],\n",
    "    },\n",
    "    {\n",
    "        \"Model\": random_forest_results[\"model_name\"],\n",
    "        \"Accuracy\": random_forest_results[\"accuracy\"],\n",
    "        \"Precision\": random_forest_results[\"precision\"],\n",
    "        \"Recall\": random_forest_results[\"recall\"],\n",
    "        \"F1 Score\": random_forest_results[\"f1_score\"],\n",
    "    },\n",
    "    {\n",
    "        \"Model\": svm_results[\"model_name\"],\n",
    "        \"Accuracy\": svm_results[\"accuracy\"],\n",
    "        \"Precision\": svm_results[\"precision\"],\n",
    "        \"Recall\": svm_results[\"recall\"],\n",
    "        \"F1 Score\": svm_results[\"f1_score\"],\n",
    "    },\n",
    "])\n",
    "\n",
    "comparison_df = comparison_df.sort_values([\"Accuracy\", \"F1 Score\"], ascending=False).reset_index(drop=True)\n",
    "comparison_df\n",
    "\n",
    "plt.figure(figsize=(8, 5))\n",
    "comparison_df.set_index(\"Model\")[[\"Accuracy\", \"Precision\", \"Recall\", \"F1 Score\"]].plot(kind=\"bar\", ax=plt.gca())\n",
    "plt.title(\"Model Comparison on Mobile Dataset\")\n",
    "plt.ylabel(\"Score\")\n",
    "plt.ylim(0, 1.05)\n",
    "plt.xticks(rotation=20, ha=\"right\")\n",
    "plt.grid(axis=\"y\", linestyle=\":\", linewidth=0.6)\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "best_model = comparison_df.iloc[0]\n",
    "print(\"Best model:\", best_model[\"Model\"])\n",
    "print(\"Best accuracy:\", best_model[\"Accuracy\"])\n",
    "print(\"Best F1 score:\", best_model[\"F1 Score\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "55d15f93",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "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>Actual</th>\n",
       "      <th>Decision Tree</th>\n",
       "      <th>Random Forest</th>\n",
       "      <th>SVM</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Actual  Decision Tree  Random Forest  SVM\n",
       "0       1              1              1    1\n",
       "1       1              1              2    1\n",
       "2       2              2              2    2\n",
       "3       0              0              0    0\n",
       "4       3              3              3    3\n",
       "5       0              0              0    0\n",
       "6       2              2              2    2\n",
       "7       2              2              2    2\n",
       "8       0              0              0    2\n",
       "9       0              0              0    0"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 10 prediction demo and output validation\n",
    "\n",
    "validation_results = pd.DataFrame({\n",
    "    \"Actual\": y_test.reset_index(drop=True),\n",
    "    \"Decision Tree\": decision_tree_results[\"y_pred\"],\n",
    "    \"Random Forest\": random_forest_results[\"y_pred\"],\n",
    "    \"SVM\": svm_results[\"y_pred\"],\n",
    "})\n",
    "\n",
    "validation_results.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "3a3b68de",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model comparison table\n",
      "Prediction validation table (first 20 rows)\n"
     ]
    },
    {
     "data": {
      "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>Actual</th>\n",
       "      <th>Decision Tree</th>\n",
       "      <th>Random Forest</th>\n",
       "      <th>SVM</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Actual  Decision Tree  Random Forest  SVM\n",
       "0        1              1              1    1\n",
       "1        1              1              2    1\n",
       "2        2              2              2    2\n",
       "3        0              0              0    0\n",
       "4        3              3              3    3\n",
       "5        0              0              0    0\n",
       "6        2              2              2    2\n",
       "7        2              2              2    2\n",
       "8        0              0              0    2\n",
       "9        0              0              0    0\n",
       "10       0              0              0    0\n",
       "11       2              2              2    2\n",
       "12       2              2              2    2\n",
       "13       2              2              2    2\n",
       "14       3              3              3    3\n",
       "15       2              2              2    2\n",
       "16       2              2              2    2\n",
       "17       3              3              3    2\n",
       "18       3              3              3    3\n",
       "19       0              0              0    0"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 11 final output tables in notebook\n",
    "\n",
    "print(\"Model comparison table\")\n",
    "comparison_df\n",
    "\n",
    "print(\"Prediction validation table (first 20 rows)\")\n",
    "validation_results.head(20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5b7ef2d2-b3e7-4cf7-b450-3f7800ddd9ba",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.14.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
