{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "893c406e",
   "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>id</th>\n",
       "      <th>diagnosis</th>\n",
       "      <th>radius_mean</th>\n",
       "      <th>texture_mean</th>\n",
       "      <th>perimeter_mean</th>\n",
       "      <th>area_mean</th>\n",
       "      <th>smoothness_mean</th>\n",
       "      <th>compactness_mean</th>\n",
       "      <th>concavity_mean</th>\n",
       "      <th>concave points_mean</th>\n",
       "      <th>...</th>\n",
       "      <th>texture_worst</th>\n",
       "      <th>perimeter_worst</th>\n",
       "      <th>area_worst</th>\n",
       "      <th>smoothness_worst</th>\n",
       "      <th>compactness_worst</th>\n",
       "      <th>concavity_worst</th>\n",
       "      <th>concave points_worst</th>\n",
       "      <th>symmetry_worst</th>\n",
       "      <th>fractal_dimension_worst</th>\n",
       "      <th>Unnamed: 32</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>842302</td>\n",
       "      <td>M</td>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>...</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>842517</td>\n",
       "      <td>M</td>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>...</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>84300903</td>\n",
       "      <td>M</td>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>...</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>84348301</td>\n",
       "      <td>M</td>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>...</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>84358402</td>\n",
       "      <td>M</td>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>...</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 33 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         id diagnosis  radius_mean  texture_mean  perimeter_mean  area_mean  \\\n",
       "0    842302         M        17.99         10.38          122.80     1001.0   \n",
       "1    842517         M        20.57         17.77          132.90     1326.0   \n",
       "2  84300903         M        19.69         21.25          130.00     1203.0   \n",
       "3  84348301         M        11.42         20.38           77.58      386.1   \n",
       "4  84358402         M        20.29         14.34          135.10     1297.0   \n",
       "\n",
       "   smoothness_mean  compactness_mean  concavity_mean  concave points_mean  \\\n",
       "0          0.11840           0.27760          0.3001              0.14710   \n",
       "1          0.08474           0.07864          0.0869              0.07017   \n",
       "2          0.10960           0.15990          0.1974              0.12790   \n",
       "3          0.14250           0.28390          0.2414              0.10520   \n",
       "4          0.10030           0.13280          0.1980              0.10430   \n",
       "\n",
       "   ...  texture_worst  perimeter_worst  area_worst  smoothness_worst  \\\n",
       "0  ...          17.33           184.60      2019.0            0.1622   \n",
       "1  ...          23.41           158.80      1956.0            0.1238   \n",
       "2  ...          25.53           152.50      1709.0            0.1444   \n",
       "3  ...          26.50            98.87       567.7            0.2098   \n",
       "4  ...          16.67           152.20      1575.0            0.1374   \n",
       "\n",
       "   compactness_worst  concavity_worst  concave points_worst  symmetry_worst  \\\n",
       "0             0.6656           0.7119                0.2654          0.4601   \n",
       "1             0.1866           0.2416                0.1860          0.2750   \n",
       "2             0.4245           0.4504                0.2430          0.3613   \n",
       "3             0.8663           0.6869                0.2575          0.6638   \n",
       "4             0.2050           0.4000                0.1625          0.2364   \n",
       "\n",
       "   fractal_dimension_worst  Unnamed: 32  \n",
       "0                  0.11890          NaN  \n",
       "1                  0.08902          NaN  \n",
       "2                  0.08758          NaN  \n",
       "3                  0.17300          NaN  \n",
       "4                  0.07678          NaN  \n",
       "\n",
       "[5 rows x 33 columns]"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_csv('cancer.csv')\n",
    "\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7b7c88f2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['id', 'diagnosis', 'radius_mean', 'texture_mean', 'perimeter_mean',\n",
      "       'area_mean', 'smoothness_mean', 'compactness_mean', 'concavity_mean',\n",
      "       'concave points_mean', 'symmetry_mean', 'fractal_dimension_mean',\n",
      "       'radius_se', 'texture_se', 'perimeter_se', 'area_se', 'smoothness_se',\n",
      "       'compactness_se', 'concavity_se', 'concave points_se', 'symmetry_se',\n",
      "       'fractal_dimension_se', 'radius_worst', 'texture_worst',\n",
      "       'perimeter_worst', 'area_worst', 'smoothness_worst',\n",
      "       'compactness_worst', 'concavity_worst', 'concave points_worst',\n",
      "       'symmetry_worst', 'fractal_dimension_worst', 'Unnamed: 32'],\n",
      "      dtype='str')\n"
     ]
    }
   ],
   "source": [
    "print(df.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "cdb2132a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([nan])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Unnamed: 32'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e5bffb37",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df.drop(columns=['id', 'Unnamed: 32'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d4f6ac7f",
   "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>diagnosis</th>\n",
       "      <th>radius_mean</th>\n",
       "      <th>texture_mean</th>\n",
       "      <th>perimeter_mean</th>\n",
       "      <th>area_mean</th>\n",
       "      <th>smoothness_mean</th>\n",
       "      <th>compactness_mean</th>\n",
       "      <th>concavity_mean</th>\n",
       "      <th>concave points_mean</th>\n",
       "      <th>symmetry_mean</th>\n",
       "      <th>...</th>\n",
       "      <th>radius_worst</th>\n",
       "      <th>texture_worst</th>\n",
       "      <th>perimeter_worst</th>\n",
       "      <th>area_worst</th>\n",
       "      <th>smoothness_worst</th>\n",
       "      <th>compactness_worst</th>\n",
       "      <th>concavity_worst</th>\n",
       "      <th>concave points_worst</th>\n",
       "      <th>symmetry_worst</th>\n",
       "      <th>fractal_dimension_worst</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>M</td>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>0.2419</td>\n",
       "      <td>...</td>\n",
       "      <td>25.38</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>M</td>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>0.1812</td>\n",
       "      <td>...</td>\n",
       "      <td>24.99</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>M</td>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>0.2069</td>\n",
       "      <td>...</td>\n",
       "      <td>23.57</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>M</td>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>0.2597</td>\n",
       "      <td>...</td>\n",
       "      <td>14.91</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>M</td>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>0.1809</td>\n",
       "      <td>...</td>\n",
       "      <td>22.54</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  diagnosis  radius_mean  texture_mean  perimeter_mean  area_mean  \\\n",
       "0         M        17.99         10.38          122.80     1001.0   \n",
       "1         M        20.57         17.77          132.90     1326.0   \n",
       "2         M        19.69         21.25          130.00     1203.0   \n",
       "3         M        11.42         20.38           77.58      386.1   \n",
       "4         M        20.29         14.34          135.10     1297.0   \n",
       "\n",
       "   smoothness_mean  compactness_mean  concavity_mean  concave points_mean  \\\n",
       "0          0.11840           0.27760          0.3001              0.14710   \n",
       "1          0.08474           0.07864          0.0869              0.07017   \n",
       "2          0.10960           0.15990          0.1974              0.12790   \n",
       "3          0.14250           0.28390          0.2414              0.10520   \n",
       "4          0.10030           0.13280          0.1980              0.10430   \n",
       "\n",
       "   symmetry_mean  ...  radius_worst  texture_worst  perimeter_worst  \\\n",
       "0         0.2419  ...         25.38          17.33           184.60   \n",
       "1         0.1812  ...         24.99          23.41           158.80   \n",
       "2         0.2069  ...         23.57          25.53           152.50   \n",
       "3         0.2597  ...         14.91          26.50            98.87   \n",
       "4         0.1809  ...         22.54          16.67           152.20   \n",
       "\n",
       "   area_worst  smoothness_worst  compactness_worst  concavity_worst  \\\n",
       "0      2019.0            0.1622             0.6656           0.7119   \n",
       "1      1956.0            0.1238             0.1866           0.2416   \n",
       "2      1709.0            0.1444             0.4245           0.4504   \n",
       "3       567.7            0.2098             0.8663           0.6869   \n",
       "4      1575.0            0.1374             0.2050           0.4000   \n",
       "\n",
       "   concave points_worst  symmetry_worst  fractal_dimension_worst  \n",
       "0                0.2654          0.4601                  0.11890  \n",
       "1                0.1860          0.2750                  0.08902  \n",
       "2                0.2430          0.3613                  0.08758  \n",
       "3                0.2575          0.6638                  0.17300  \n",
       "4                0.1625          0.2364                  0.07678  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e9205524",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.DataFrame'>\n",
      "RangeIndex: 569 entries, 0 to 568\n",
      "Data columns (total 31 columns):\n",
      " #   Column                   Non-Null Count  Dtype  \n",
      "---  ------                   --------------  -----  \n",
      " 0   diagnosis                569 non-null    str    \n",
      " 1   radius_mean              569 non-null    float64\n",
      " 2   texture_mean             569 non-null    float64\n",
      " 3   perimeter_mean           569 non-null    float64\n",
      " 4   area_mean                569 non-null    float64\n",
      " 5   smoothness_mean          569 non-null    float64\n",
      " 6   compactness_mean         569 non-null    float64\n",
      " 7   concavity_mean           569 non-null    float64\n",
      " 8   concave points_mean      569 non-null    float64\n",
      " 9   symmetry_mean            569 non-null    float64\n",
      " 10  fractal_dimension_mean   569 non-null    float64\n",
      " 11  radius_se                569 non-null    float64\n",
      " 12  texture_se               569 non-null    float64\n",
      " 13  perimeter_se             569 non-null    float64\n",
      " 14  area_se                  569 non-null    float64\n",
      " 15  smoothness_se            569 non-null    float64\n",
      " 16  compactness_se           569 non-null    float64\n",
      " 17  concavity_se             569 non-null    float64\n",
      " 18  concave points_se        569 non-null    float64\n",
      " 19  symmetry_se              569 non-null    float64\n",
      " 20  fractal_dimension_se     569 non-null    float64\n",
      " 21  radius_worst             569 non-null    float64\n",
      " 22  texture_worst            569 non-null    float64\n",
      " 23  perimeter_worst          569 non-null    float64\n",
      " 24  area_worst               569 non-null    float64\n",
      " 25  smoothness_worst         569 non-null    float64\n",
      " 26  compactness_worst        569 non-null    float64\n",
      " 27  concavity_worst          569 non-null    float64\n",
      " 28  concave points_worst     569 non-null    float64\n",
      " 29  symmetry_worst           569 non-null    float64\n",
      " 30  fractal_dimension_worst  569 non-null    float64\n",
      "dtypes: float64(30), str(1)\n",
      "memory usage: 137.9 KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "31775fda",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<StringArray>\n",
       "['M', 'B']\n",
       "Length: 2, dtype: str"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['diagnosis'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "9f5bd598",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "# for n, i in enumerate(df['diagnosis']):\n",
    "#     if i == 'M':\n",
    "#         df.diagnosis[n] = '1'\n",
    "#     else :\n",
    "#         df.diagnosis[n] = '0'\n",
    "\n",
    "    \n",
    "\n",
    "df['diagnosis'] = (df['diagnosis'] == 'M').astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "f289c44b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.DataFrame'>\n",
      "RangeIndex: 569 entries, 0 to 568\n",
      "Data columns (total 31 columns):\n",
      " #   Column                   Non-Null Count  Dtype  \n",
      "---  ------                   --------------  -----  \n",
      " 0   diagnosis                569 non-null    int64  \n",
      " 1   radius_mean              569 non-null    float64\n",
      " 2   texture_mean             569 non-null    float64\n",
      " 3   perimeter_mean           569 non-null    float64\n",
      " 4   area_mean                569 non-null    float64\n",
      " 5   smoothness_mean          569 non-null    float64\n",
      " 6   compactness_mean         569 non-null    float64\n",
      " 7   concavity_mean           569 non-null    float64\n",
      " 8   concave points_mean      569 non-null    float64\n",
      " 9   symmetry_mean            569 non-null    float64\n",
      " 10  fractal_dimension_mean   569 non-null    float64\n",
      " 11  radius_se                569 non-null    float64\n",
      " 12  texture_se               569 non-null    float64\n",
      " 13  perimeter_se             569 non-null    float64\n",
      " 14  area_se                  569 non-null    float64\n",
      " 15  smoothness_se            569 non-null    float64\n",
      " 16  compactness_se           569 non-null    float64\n",
      " 17  concavity_se             569 non-null    float64\n",
      " 18  concave points_se        569 non-null    float64\n",
      " 19  symmetry_se              569 non-null    float64\n",
      " 20  fractal_dimension_se     569 non-null    float64\n",
      " 21  radius_worst             569 non-null    float64\n",
      " 22  texture_worst            569 non-null    float64\n",
      " 23  perimeter_worst          569 non-null    float64\n",
      " 24  area_worst               569 non-null    float64\n",
      " 25  smoothness_worst         569 non-null    float64\n",
      " 26  compactness_worst        569 non-null    float64\n",
      " 27  concavity_worst          569 non-null    float64\n",
      " 28  concave points_worst     569 non-null    float64\n",
      " 29  symmetry_worst           569 non-null    float64\n",
      " 30  fractal_dimension_worst  569 non-null    float64\n",
      "dtypes: float64(30), int64(1)\n",
      "memory usage: 137.9 KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "16835185",
   "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>diagnosis</th>\n",
       "      <th>radius_mean</th>\n",
       "      <th>texture_mean</th>\n",
       "      <th>perimeter_mean</th>\n",
       "      <th>area_mean</th>\n",
       "      <th>smoothness_mean</th>\n",
       "      <th>compactness_mean</th>\n",
       "      <th>concavity_mean</th>\n",
       "      <th>concave points_mean</th>\n",
       "      <th>symmetry_mean</th>\n",
       "      <th>...</th>\n",
       "      <th>radius_worst</th>\n",
       "      <th>texture_worst</th>\n",
       "      <th>perimeter_worst</th>\n",
       "      <th>area_worst</th>\n",
       "      <th>smoothness_worst</th>\n",
       "      <th>compactness_worst</th>\n",
       "      <th>concavity_worst</th>\n",
       "      <th>concave points_worst</th>\n",
       "      <th>symmetry_worst</th>\n",
       "      <th>fractal_dimension_worst</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>0.2419</td>\n",
       "      <td>...</td>\n",
       "      <td>25.38</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>0.1812</td>\n",
       "      <td>...</td>\n",
       "      <td>24.99</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>0.2069</td>\n",
       "      <td>...</td>\n",
       "      <td>23.57</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>0.2597</td>\n",
       "      <td>...</td>\n",
       "      <td>14.91</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>0.1809</td>\n",
       "      <td>...</td>\n",
       "      <td>22.54</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   diagnosis  radius_mean  texture_mean  perimeter_mean  area_mean  \\\n",
       "0          1        17.99         10.38          122.80     1001.0   \n",
       "1          1        20.57         17.77          132.90     1326.0   \n",
       "2          1        19.69         21.25          130.00     1203.0   \n",
       "3          1        11.42         20.38           77.58      386.1   \n",
       "4          1        20.29         14.34          135.10     1297.0   \n",
       "\n",
       "   smoothness_mean  compactness_mean  concavity_mean  concave points_mean  \\\n",
       "0          0.11840           0.27760          0.3001              0.14710   \n",
       "1          0.08474           0.07864          0.0869              0.07017   \n",
       "2          0.10960           0.15990          0.1974              0.12790   \n",
       "3          0.14250           0.28390          0.2414              0.10520   \n",
       "4          0.10030           0.13280          0.1980              0.10430   \n",
       "\n",
       "   symmetry_mean  ...  radius_worst  texture_worst  perimeter_worst  \\\n",
       "0         0.2419  ...         25.38          17.33           184.60   \n",
       "1         0.1812  ...         24.99          23.41           158.80   \n",
       "2         0.2069  ...         23.57          25.53           152.50   \n",
       "3         0.2597  ...         14.91          26.50            98.87   \n",
       "4         0.1809  ...         22.54          16.67           152.20   \n",
       "\n",
       "   area_worst  smoothness_worst  compactness_worst  concavity_worst  \\\n",
       "0      2019.0            0.1622             0.6656           0.7119   \n",
       "1      1956.0            0.1238             0.1866           0.2416   \n",
       "2      1709.0            0.1444             0.4245           0.4504   \n",
       "3       567.7            0.2098             0.8663           0.6869   \n",
       "4      1575.0            0.1374             0.2050           0.4000   \n",
       "\n",
       "   concave points_worst  symmetry_worst  fractal_dimension_worst  \n",
       "0                0.2654          0.4601                  0.11890  \n",
       "1                0.1860          0.2750                  0.08902  \n",
       "2                0.2430          0.3613                  0.08758  \n",
       "3                0.2575          0.6638                  0.17300  \n",
       "4                0.1625          0.2364                  0.07678  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4c52eae3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['diagnosis'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "dbb2ef5b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAv0AAAKSCAYAAABBZGSbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAqWpJREFUeJzs3QV4W9fZB/C/WLLMjHEShzlpmLFt0qRNmbkddVvXbt/gW8db921dt3ZlZqa0SSHQNtAwM8fMllkWS99zrps0jkl2bN0r6f97qse28M2RK7/33Pe8R+Xz+XwgIiIiIqKQpZY7ACIiIiIi6l1M+omIiIiIQhyTfiIiIiKiEMekn4iIiIgoxDHpJyIiIiIKcUz6iYiIiIhCHJN+IiIiIqIQx6SfiIiIiCjEMeknIiIiIgpxTPqJiHrQH//4R6hUqjM/9+3bF7fddlvIjfHatWulf6f4SkREysekn4iIiIgoxGnlDoCIKJQdPXoUanXoza/MnDkTNpsNer1e7lCIiMgPTPqJiHqRwWAIyfEVBzJGo1HuMIiIyE+hN/1ERBQg33zzDSZMmCAlvzk5OXjmmWda3efcmv7q6mr84he/wMiRIxEZGYno6GgsXLgQe/fubfXY/Px8XHrppTCbzUhOTsZ9992HlStXtqqlnz17NkaMGIFDhw5hzpw5iIiIQEZGBv75z3+2es6KigrceeedSElJkeIePXo0XnnllVb3e/vtt3HBBRcgKipKilHE++ijj3ZY03/8+HFceeWVSE1NlZ47MzMT1113Herq6roxukRE1JM4009E1A379+/HhRdeiKSkJGnxrtvtxh/+8Acpme7IqVOnsGzZMlx99dXo168fysvLpYOFWbNmSUl7enq6dD+r1Yq5c+eitLQU9957r5RIv/nmm/j666/bfN6amhpcfPHFuOKKK3DNNdfg/fffx69+9SspWRcHFYIoxxEHCCdOnMCPf/xj6fXfe+896aCktrZWeh1h9erVuP766zFv3jz84x//kK47fPgwNm7ceOY+53I6nbjooovgcDjwk5/8RIq3uLgYK1askJ47JiaGv2dERHLyERFRly1dutRnNBp9+fn5Z647dOiQT6PR+M7+aM3OzvbdeuutZ3622+0+j8fT4rlyc3N9BoPB9+c///nMdQ8//LD0PMuWLTtznc1m8w0ZMkS6/uuvvz5z/axZs6TrXn311TPXORwOX2pqqu/KK688c90jjzwi3e/1118/c53T6fRNmTLFFxkZ6auvr5euu/fee33R0dE+t9vd7r9fvP7ZcezevVv6+b333vN7DImIKHBY3kNE1EUej0cqs1m6dCn69Olz5vqhQ4dKs92d1fifXtgrnsdisUhlPoMHD8auXbvO3O+LL76QSnREec9pomTm7rvvbvN5xXPcdNNNZ34WC2wnTpwonVk47bPPPpNm4MUs/mk6nQ4//elP0djYiHXr1knXxcbGSmcaxIy/v07P5ItxaWpq8vtxREQUGEz6iYi6qLKyUiqVGThwYKvbRPLeEa/Xi//85z/SY8UBQGJiolQitG/fvha176KeX6wTOLvnvzBgwIA2n1fUz59737i4OKns5+znFK97bjchcbBy+nbhRz/6EQYNGiSVBYnnveOOO6SDkI6IUqH7778fzz//vPRvEgc/TzzxBOv5iYgUgkk/EVEAPfjgg1JyLFpevv7669LMuJhRHz58uHRA0F0ajabN630+UXXTNWLR8J49e/DJJ59IZxrEOgJxAHDrrbd2+LiHH35YOnj53//9X+mgSJxBEP+uoqKiLsdAREQ9i0k/EVEXiZl5k8kkdatpqy9/R8QCW9Fh54UXXpA624jFwPPnz5cWu54tOzsbJ0+ebJW0i0W43SWeU8R87sHFkSNHztx+dnnQkiVL8OSTT0pxfP/738err77a6euLhcMPPPAA1q9fjw0bNkiLeZ9++ulux0xERD2DST8RUTdm1UX5iujCU1BQcOZ60eFGzNx39thzE3nRQUckx2cTzy+uE7Ptp9ntdjz33HPdfr8WLVqEsrIyvPPOO2euE12HHnvsMWlNgOggJIh1BmcT5UCjRo2SvhfdedpSX18vPde5BwDise09hoiIAoctO4mIuuFPf/qTVOc+Y8YMqQb+dPIsyllEiUt7Fi9ejD//+c+4/fbbMXXqVKn15xtvvIH+/fu3uJ+YWX/88celRbeiTWZaWpp0v9MbYp1bv++P733ve1J7UNGic+fOndIeAuLMg2jF+cgjj0g9+YW77rpL2k9AtAwVNf2i1l/828aMGXOm/v9cX331ldQGVLQiFesBxHi89tpr0kGO6N1PRETyYtJPRNQNYuZbzOqL+vzf//73UnIsDgREX/2Okn5R7y4644ie+2LGfdy4cfj000/x61//usX9xMy7SKRFz3uxKZb4+ZZbbpEOFEQS3Z3dcEVJkthMS7yW2JBLzM6LhccvvfRSiw3ERBegZ599VirtEWVHouPPtddeK+1HcO4i4NPEJl/i7MTy5culMxRigzBx3eeff47Jkyd3OVYiIupZKtG3s4efk4iIeomYkRc784rFsaKlJxERkT+Y9BMRKZTogCNm58+u6R87dqzU3//YsWOyxkZERMGF5T1ERAp1xRVXSJt/iVp60cNftPgUnXZEbT8REVFXMOknIlIoUSMvNrsSSb6Y3R82bBjefvttqb6eiIioK1jeQ0REREQU4tinn4iIiIgoxDHpJyIiIiIKcUz6iYiIiIhCHJN+IiIiIqIQx6SfiIiIiCjEMeknIiIiIgpxTPqJiIiIiEIck34iIiIiohDHpJ+IiIiIKMQx6SciIiIiCnFM+omIiIiIQhyTfiIiIiKiEMekn4iIiIgoxDHpJyIiIiIKcUz6iYiIiIhCHJN+IiIiIqIQx6SfiIiIiCjEMeknIiIiIgpxTPqJiIiIiEIck34iIiIiohDHpJ+IiIiIKMQx6SciIiIiCnFM+omIiIiIQhyTfiIiIiKiEMekn4iIiIgoxDHpJyIiIiIKcUz6iYiIiIhCHJN+IiIiIqIQx6SfiIiIiCjEMeknIiIiIgpxTPqJiIiIiEIck34iIiIiohDHpJ+IiIiIKMQx6SciIiIiCnFM+omIiIiIQhyTfiIiIiKiEMekn4iIiIgoxDHpJyIiIiIKcUz6iYiIiIhCHJN+IiIiIqIQx6SfiIiIiCjEMeknIiIiIgpxTPqJiIiIiEIck34iIiIiohDHpJ+IiIiIKMQx6SciIiIiCnFM+omIiIiIQhyTfiIiIiKiEMekn4iIiIgoxDHpJyIiIiIKcUz6iYiIiIhCHJN+IiIiIqIQx6SfiIiIiCjEMeknIiIiIgpxTPqJiIiIiEIck34iIiIiohDHpJ+IiIiIKMQx6SciIiIiCnFM+omIiIiIQhyTfiIiIiKiEMekn4iIiIgoxDHpJyIiIiIKcUz6iYiIiIhCHJN+IiIKbl6v3BEQESmeVu4AiIiIzsuTTwJVVUBWFpCR8d3X2FgOLBHRt5j0ExFRcCsuBhoamhP/3bu/uz4q6ruDgD59gIEDgchIOSMlIpINk34iIgpeItkXl/ZuO3Kk+SKoVEBqKjBoUPNlwADAbA5ouEREcmHST0REwaukxP/7+nxAaWnzZd265oMAcSZAnAE4fTGZejNaIiLZMOknIqLwSPrbOggoKmq+fP1180FAZuZ3ZwJycgCjsSejJSKSjcrnE596RETUmQZbHWqsNaiz1qDWWo3aptNfa8+5rgZ2ZxM8Xi+8Pg88Xg+8Pi+83ubvxceu+OrxeeDzeqWvXvH12/tp1BpEGMwwGyIRaYyC2RgpfS++Rhq++/nc28QlxhSL1LgMxESEySLWN94ANm/unedWq5vXA4gDAHEWQBwEGAy981pERL2MST8RhT23x43i6kIUVOWisCoPhZY8FFblo6KuFHVNtaixVqOhqQ5urztoxipCb5aS/7TTl9jmr+K61Nh06Xtx0BAMHDYbvv7wQ6g0GiSmpSEuKUm6RMfHQ/PvfwP5+YEJRKNpPgAYNw4YNYrrAYgoqDDpJ6KwUN9UJyX1ZxL7qvzm7y15KK0plmbZw02UKbrFwUBmfB/0Tx2EgalD0Cepn3TGQQmKTp7EW48+CrfLBZW4QqWCyWxGRGQkbrdYoJWjT//pA4CxY4HRo3kAQESKx6SfiEJKo70Bh4r24WDBXhws3IuTZcek5L7eVid3aEFFrzWgX3IOBqQNwYDUIRiaOQLzRi6UJZYDW7di+csvo8+gQVCpVPC43bA3NcHQ2IhbmpogO1EGNHgwDwCISNG4kJeIgnr2XiT24nKgcA8OFe5DXuVJqWaezo/T7cDRkkPSRRiSIV/SXyv67/t8UsIvaLRamKOjkSmSbSUk/eJMw+HDzZe33/6uBIhnAIhIQZj0E1FQEItjDxTswcGivdIsvkjyiyz5TPADZHD6MMiloqgIujYW0MY6nVAccQBwem+Asw8AxBoAbgxGRDJi0k9EilRSXYhNR9dj87F12HVqK4osBXKHFNYGyZT0i1KeqtJSGCMiWt0W63BA0do7ABDrALgfABEFGJN+IlKEmsZqbDm2HpuOrsPmY+uRX3lK7pBIATP9ddXVaGpshDkmptVtMUqc6ffnAOCDD4AJE4CZM4H0dLkjI6IwwaSfiGTR5LBix8nNzUn+0fU4XLyfpToKJtdMf11VlbRoNyE1tcX1Gq8XUS4XgpI4Q/HNN80X0ft/xozm2X/REYiIqJcw6SeigHB5XNibt0NK8EWiL74X15HyRZtipLaeci3iFQuzxeLdFjE5nVAjBJw82Xz58ENg6lRg2jQgLk7uqIgoBDHpJ6Je02Crx7qDq7Fq7wqsP/wlrPYGjnYQkmuWX6iurDzTtUfxi3jPR3098MUXwKpVwMiRzaU/og0oEVEPYdJPRD3K0lCFL/d/hlV7lmPTsfVwuUMsOQtDQzKGy/ba5YWF0BuNoZ/0n137v3dv8yUlpbn0Z9IkLvwlovPGpJ+IzltlfTk+3/UxvtjzMXae3AKvT4YdUinkZvodNhtqKyuDs3NPTygvB95/H/jkk+8W/mbIU2ZFRMGPST8RdUt1owUr93yCz3Z9hG3HNzLRD2Fyde6ptVikRbyxSUnhM9PfFvFv3bix+dK/PzB7NjBmTPNOwEREfmLST0RdqtFfuWe5lOhvProObq+boxcGBqYNleV1xSy/w25vVd5j8Hhg8ngQlk6dar6IbkaLFjV3/WljzQMR0bmY9BNRp3bnbsfb37yMz3cvg83ZxBELIxnxWYgyRcvy2nUWC0Q6qz5nRjssSns6U1YGvPgikJbWnPyLmX8m/0TUASb9RNSmBlsdPt72Lt7Z9AqOFB/kKIUpOTv3iJ14VW30rg+r0p7OlJYCL7zQXOu/cCEwejSTfyJqE5N+Imph96lteHvjK5zVJ1nr+UVv/rLCwjYX8QbVTryBUlwMPP98c/IvZv5F8k9EdBYm/UQkzeov2/YO3t30Kmf1SREz/db6euliNJla3cbynk6S/+eeAzIzm5P/UaN6820ioiDCpJ8ozGf139r4Mr7Y/TFr9UlRPfrFTryic0/0ubvT+nyc6fdHURHw7LNAnz7Nyf+IEb3zRhFR0GDSTxRmHC4HPtz6Jt5Y/zyOlhySOxxSMJ1Wj37JA2VL+t0uF7R6fYvrI91u6Hw+WWIKSgUFwNNPA9nZzcn/cPk2WiMieTHpJwoTjfYGvLnhRbz89VPSZlpEnclJGQitRitb0i+ozulIw9KebsrPB556CujbF1i8GBgy5PzfJCIKKkz6iUKcpaEKr6x9WprZr7fVyR0OBRE5O/dUFBdDd84sv8DOPecpLw94/PHmhb5XXgnEx5/vMxJRkGDSTxSiSqoL8fyXj+P9za+zXp+CKun3uN2oKilps3MPZ/p7yN69wOHDwIUXAvPmATpdTz0zESkUk36iEHOi7CieXf0oVux4Hy6PS+5wKIjJ1a6zvqYGTY2NMMfEtLqN7Tp7kGh9umIFsHUrcPXVwDD5zuwQUe9j0k8UIvbl78LTq/6DNfs+lXqcEwVr0l9bWQmHzYaE1NQW16u9XkS5eCDb4yorgSefbG7vedVVLPkhClFM+omC3Oaj66Vkf9PRtXKHQiEk2hSDtLhMWV671mKB1+uFRqttNcuvliWiMLFvX3PJz0UXseSHKAQx6ScKUgcK9uD/Pvodth7/Ru5QKATJuYi3uqKiVdcegYt4A0CcSWHJD1FIYtJPFGSKLAV4+JM/49NdH7KMh0KutEcoLyyE3mhsdT2T/gBiyQ9RyGHSTxQk6ppq8dQXD+O19c/B6XbIHQ6FOLlm+h12u1TTz849CsGSH6KQwaSfSOGcbideX/ccnlr5MGqbauQOh8KEbIt4q6pgb2pCbFJSq9s406+Akh+x0Je7+hIFJSb9RAolOvCs2PkB/r38ryiy5MsdDoWZQelDZXnduqoqabb/3PIeg8cDk8cjS0x0VsmP2NV34kTgmmuANkqwiEi5mPQTKdDW4xvxz2W/l9pwEgVaelwmokyte+QHaqZfUKtb9umJcbCkTTG2bQNOngRuuQXIyZE7GiLyE5N+IoVtrPXQsj/iqwNfyB0KhTE5O/dUlZVBrdG0up6lPQpjsQCPPgrMnw9ccgnQxntGRMrCpJ9IARrtDVIZz5sbXoDHyxIGkteQjOGylbRVFBa2vYhX7B5LyuL1AqtWAUeOALfeCqSkyB0REXWA+5wQyezLfZ9h4V8n47V1zzLhp7Ce6bc2NKChrg5Gk6nVbbEs71GuggLgH/8ANmyQOxIi6gBn+olkUlFXhj+9+0us2ruc7wEpimydeyor4WhqQnRcXMsbfD5pN15SMPH+vPMOcPAgcOONQFSU3BER0Tk4008kQwnDmxtexMV/ncSEnxRHp9GhX8pA2RbxulwuaPX6FtdHut3Q+XyyxERddOAA8OCDwP79HDoiheFMP1EAHS89gt+99TPsPLWV406K1D9loJT4y9m5R6VStbiepT1BpqEBeOYZYNo04MorgXMO4ohIHkz6iQLA4XJIm2s9u+ZRuNwsUyDlkrNzT0VxMXRtJIhcxBukNm4Ejh9vXuSbnS13NERhj0k/US/bdmIjfvfW/ThVfoxjTYonVz2/x+1GVUlJm517WM8fxCoqgIcfBhYtAi68UGzAIHdERGGLST9RL6lvqsM/lv0e721+TarjJwoGg2Vq11lfUwOb1YqI6OhWt7G8JwRae65YARw+DNx5J9DGe0xEvY+H3ES94Kv9X+Civ0zEu5teZcJPQUW2zj1VVbA3NbVq16n2ehHlcskSE/UwsYvvP//Z3OKTiAKOST9RD3K47Pjzu7/E95+5HlUNFRxbCirRphikxWXKlvT7vF5otC1PQMe4XPxDFUpqa4H//AfYsUPuSIjCDst7iHqwM899L92JoyWHOKYUlAalD5XttatF7fc5XXsElvaEIHHm5uWXgZISYPFi1vkTBQhn+ol6wFvfvIQr/jmXCT8FNVk79xQWQm80trqenXtC2KpVwLPPAna73JEQhQUm/UTnodZagx89dzN+//b9sLtsHEsKanIl/Q67HTWVlW127uFMfxhs5vWvfwGVlXJHQhTymPQTnUcrziV/n47Ve1dwDCkkyLWIt+70Il626wxPZWXAQw8BR4/KHQlRSGPST9RFHq8Hj6x4EDc/einKaks4fhQy5Ozc43Q4WpX36D0eRHg8ssREAdbUBDzxBLB2LYeeqJdwIS9RFxRXF+C+l+7G7txtHDcKKelxmYgyxcjy2nUWi9TaVn3Oxk0s7QnDfv7vvw8UFwPXXguc08mJiM4P/48i8tOnOz/EA2/dh0Z7PceMQo6ci3irysqg1mhaXc9FvGFq82agvBy4+24gKkruaIhCBst7iDrh8rikhbo/e+lOJvwUsuQq7REz/OUFBa025RKY9IexU6eaN/IqLJQ7EqKQwaSfqAPVjRbc8t/LpJacRKFMrpl+a0MDGuvq2LmHWqupad7Ia9cujg5RD2DST9SOI8UHsPT/ZmHHyc0cIwp5si3irayUOvcYzu3c4/MhxumUJSZSEPE78NJLXOBL1AOY9BO14Yvdn+CqhxagtLaY40MhT6fRoX/qINkW8bpcLuj0+hbXm91u6Hw+WWIihRG/B2KB72efyR0JUVDjQl6ic+qL//PJ3/D06n/DByYcFB76JQ+QEn+52nUKKpWqxfXs3EOtiKRftPa88krxC8MBIuoiJv1E37I5m3DPM7diw9E1HBMKK4Mzhsv22hXFxa1m+QUu4qU2iT7+IvG/8UagjY5PRNQ+Jv1EAIqqCnDLo0tRWJPL8aCwI1c9v8ftRmVxcduLeFnPT+3Ztq058b/zTkAnzxkqomDEmn4Ke5uPbMDiv01nwk9hS67OPfU1NbBZrTC01a7T4ZAlJgoSBw407+Brs8kdCVHQYNJPYe3lNU/jticuh9XVIHcoROHXuaeqSurcc+5Mv9rnQ5TLJUtMFEROnAAef7x51p+IOsWkn8KSx+vB/7z0Q/xt2W/g9XnkDodINlGmaKTHZ8mW9Hu9Xmi0LStNRatO/nEiv+TnA//9L9DYyAEj6gQ/VynsOJx23PzwZVi28225QyGS3aC0obK9dk1lZauuPQJLe6hLioqARx8FGnjGlqgjTPoprNQ31eGKv8/D9vyNcodCpAhy1fML5QUF0BuNra7nplzUZaWlzYl/XR0Hj6gdTPopbJRUFWHxn2fgWOUhuUMhQri363TY7dJMPzv3UI8pKwMeeQSoqeGgErWBST+FhYOn9mHp3+egtLFQ7lCIFEWuRbx1YhGvzdZ20s/OPdRdlZXNib/FwjEkOgeTfgp5X21fhRsevQQ1juadP4noO4PS5Ovc47TbW5X36D0eRHi4uJ7Og0j4OeNP1AqTfgpZPp8Pb3z+Cn7y6q1o8rCzA9G50uIyEB0RI8vA1H07E6tWt/wzxE25qEeIEh/Rx99q5YASfYtJP4Ukj8eDR998CH/99H/g9NnlDodIkeRcxFtVVsbOPdT7Nf5PPw1wd2ciCZN+Cjkulwt/e+H3eGrTP+EGN/ghUlo9vzgLJzr3cBEv9brcXOCFF8RMEAebwh6Tfgopdocd//vU/Xh971PwqvghT6TEmX5rQwMa6+q4iJcC4+BB4M03xdEmR5zCGpN+ChnWJivue/QHWHb0dfhU/HAnUnTnnqYmGM7t3OPzsUc/9Y6tW4GPP+boUlhj0k8hoba+Fj/+zx1YU/Ax0HqDTyI6h06jQ07qYNk694gyPJ1e3+J6s9sNHWdjqbesWQN8+SXHl8IWk34KelXVVbj30bvxTekquUMhChr9kgdIib9cSb+gUrU8QmfnHup1y5YB27ZxoCksMemnoFZaXoL7//tDbCpbI3coREFFzs49FcXFrWb5BW7KRb1OnEl64w3gEHdmp/DDpJ+CVn5RHn75xE+xuXINS3qIgqSeX7TTrSwuhsFkanUbZ/opQL+EwPPPA3l5HHAKK0z6KSgdO3kUv33yfmyxfMWEnyiIZvrrq6ths1rZuYfkJXr3P/VUcy9/ojDBpJ+CzoHD+/DH536NbXVrAXbpIeqWwRnDZKvnF517zu3Rr/b5EOXivhoUQGK3XrFrb20th53CApN+Cio79+7Agy/+ETsb17MtJ1E3RRqjkBHfR5bxq7NY4PV6odFqW1wf7XTyDxIFXk1Nc+Lf1MTRp5DHpJ+Cxu79u/Cf1/6BXbYN8MIrdzhEQUuuen6huqKiVdcegYt4STalpcDTT4vt3PkmUEhj0k9BYd+hPfjva//CLvt6eOCWOxyioCZn557ywkLojcZW13MRL8nq1Cngvff4JlBIY9JPinfgyH48/voj2Nb0NVxwyh0OUdCTa6bfYbejprKy7UW8YmElkZw2bWq+EIUoJv2kaIePH8KTr/0Xm+tXwwm73OEQhQS5ZvrrTi/ibatdp8MhS0xELbz7LpCfz0GhkMSknxTdlvPp1x7HprpVsIOLrIh6yuD04bIt4nXa7dCfk/TrPR5EiN7pRHJzu4EXXgAaG+WOhKjHMeknRcorzMWzrz2NzZYvYUW93OEQhYzU2HRER8TI1q5TUKtb/ulhaQ8pSnU18PLLgJcNIyi0MOknxSkpK8Zzrz2DbZXrUKOqkDscopAiZ+eeqvJydu6h4HDkCLBihdxREPUoJv2kKBVVFXju9WewvfAblKpy5Q6HKOTIVc/v8/lQUVDQ5iLeGC7iJSVavRrYt0/uKIh6DJN+Uoyauhq88Maz2H5iM/I1h+UOhygkDc6Qp56/qaEBDbW1MLBzDwULnw947TWggmecKTQw6SdFaLQ24qU3n8f2Q1uQpz/AzbeIQqy8R9Tz22221jP9Ph8795By2WzAc88B7C5FIYBJP8nO7rDjlXdexOY9m1BgOgSHl605iXqDVq1F/5RBsiX9LqcTOr2+xfVmtxs6MaNKpOQde998U+4oiM4bk36SldfrxXufvIMN2zagLPIk6tw1fEeIekm/lAHQa1sm3YFs1ymoVKoW17NzDwWFnTuBr7+WOwqi88Kkn2S1au0XWL1uJWqiilHmKOS7QRSCi3iF8qKiVrP8AjfloqDx0UfAyZNyR0HUbUz6STY79+7Ah5++jzpDJU7ZuHCXKFTr+T0eDyqLi2Foaydedu6hYCH69ouNu+rq5I6EqFuY9JMsTuWfxOvvv4IqVxkOO3bxXSAK4Zn++upq2KzWNtt1bklOxqqMDGxPSsKJ6GhYDAa4zykBIlKM+vrmxJ87SFMQ0sodAIWfquoqvPL2iyioysVR3S74wF0PiQJhiEztOkU9v72pCfEpKa1u86jVqDKZpMtpKp8PCXY7Umw26ZJot0PLxb6kFKdOAatWAQsXyh0JUZcw6aeAarI14dV3XsKRU4dREHEETpeD7wBRAEQao5AR30e2zj1enw8arX9/cnwq1ZkDgYPilHQbBwEaHgSQnL74Ahg5EsjM5PtAQYNJPwW0rvfdj9/G9r3bUBtbhlprczcPIup9g9KHyjbM1RUVOJ+CHa9KhUqTSbocEAcBXq+U+IsDgPSmJiSwhzoFmijvERt3/fKXgEbD8aegwKSfAsLn8+Hzrz7FlxtWQxXvxql6LtwlCqRBafJ17qkoKoLeaOyx5/Oq1aiIiJAu+xMSYHa50KexUbrwAIACprgY+PxzYPFiDjoFBSb9FBDbdm/Fss8+hCFah02NX3HUicKkc4/T4ZBm+ttaxNtTrDodDsfFSRdxAJDV2IhsHgBQIIja/tGjgawsjjcpHpN+6nXHTx3Dmx++Bi+8OOzcBpfXyVGnkKdXG2DQGGFQm6SvWpVO2phKLZqmqcR/4jvVt5tVqaBWqeH1eeH2uqT/R1w+Z/PX0z97nXD7XN2OZ1CGPEl/Q22ttBOvta5OOgAwRUTAaDZDq2sej944ADgSFyddeABAAWnj+eqrwK9+Bfi5ZoVILiqfqLsg6iXlleX473P/QUFxPupjK3Coju05KfiT+ShdjHSJ1MYgWheLCG0k9FKCb/w20Tf2SkIrPq6dXges7oYzlyZ345nv6x11sHut0gH2uXb8MxcxEbE9HpM/Me/bvBllBQUoy8tDfW0t7FYr3G43VGo1zFFR0sUQEdErY3ZapNOJgfX16F9fD4NI1Ih60oUXApdeyjElRWPST73GZrfh8Rcexa59OxGVacLX5cs52hQUVFAhRh+HBEMKYvTxUmIvEnyR6IukXqmKSgoRFxOHe++5DyfLj+F46RGcKD0CS0Mlnvze63KHJx0AWOvrUVNZKZX8iIOAghMn0FBTA4fNBrVGgwhxEBAdLW3k1RsHARqvVyr9GVhXx/p/6jlqNfDznwPZ2RxVUiwm/dRrf9zf/eRtLPv8I6RnpWJl+XtweO0cbVIcUWYTq49HgiFZSvLF13hDErRqHYLN0RNHMH3iDHzvlh8iWLhdLlSVlaG8sBAleXkoPHZMKgkSpUDiIEA6ExATA0MPLgQ+TbQBFcm/WADMfQDovKWmNpf56ILvs4PCAwvQqFfs2LMdq77+AqlJydha8xUTflIMUVufaspEmikLyaYMxOkToVVrQ6YtbkZacPUNF7X9qVlZ0mX01KlS/X9VaanU8af41CkUnTwJS0mJdL0pKgox8fHSWYCeYDEapcuuxETk1NdLBwCRbnePPDeFobIy4NNPgaVL5Y6EqE2h8ZeOFKWsohTvfvIWfPChECdQbi+WOyQKY2K5bJIxDWkRWUgz9UGSMRVqlSYkz66JapjkxNa73gYTnV6PtOxs6TJ62jS4HA6UFRYi/+hRHNu7F5ayMum6njwAcGo0zd1/YmORYbViZE0N4tn7n7rjq6+au/n068fxI8VheQ/1KIfDgSdeegw79mxFbFY01pR+JCX/RIEUrYtDlrm/lOSnmDKg68VSHZFsixl2l9sFr8cj/b43t0cQX8/5/tvHaNQaaDUaqXxFq9FCo9Gcd/16U5NVWjj/wP1/QN+s0Ew4RClQaX4+Co4dw9E9e1BdXt58ABAZiZiEhB47AyDetEyR/FdXI87JbmPURSkpwK9/zTIfUhwm/dRjRFKz7PMP8d4n7yAtMw2rKz+AzWPlCFNAxBuSkW0egD7mHMQZEs/7+UQib3fYYbfbYHPY4XQ6pI4zUtcZlZQXNvP5oNFqodWK5F0r7Tx7ug2n+NLie6ikxF88t8fjhscrvjZfxIGB1MvzLHq9AQa9HgaD8cxXvU4PtVg0eI5KSyV8Xi/+/sBDiDD1Xk98pR8ARMbGIjYxUXpPzpvPhyyrFSOY/FNXzZ0LXHEFx40UhUk/9Zi9B3fj8RcfkxKO/a4tKLSe5OhSr4rTJ6Ff1CD0ixyEKF3X21F6vV5Ym6xosjXB7rDBbrd/m4A3J+smowlGgxGRkVFIiE9ETFQ0oiNjYDKZEGGMgNFoar6P0Sh9NegNUkIuHqtSNX/97ufm76W2m06ndBDhdDnhcDrgkr46pTNl4ntxsFFXX4sKSwUslirUNdZL9xe3O1yO5uB9oi24Vvr/LcJkRnWtBTnZOXjg/j8i3Jw+AMg9fBiHd+xAdWWlNDYJKSnSngA9lfyLmf9YzvyTP8RR/s9+BuTkcLxIMZj0U48Qs4z/fvohlJaXQJvkw7ryzziy1CtET/yBUcPRP2qI1E7TXyKZb7JZ0dDYCGtTI1wul5SIS0lzhBmJcYlIS01HUkISYmPiEBcd2/w1Nh7mCHOv9pDvjEj26xvrUd9Qh4bGBul7cVBQXFqMwuJ81NXXSQcuC2ZdhOuvuBHhrKmxEScPHMCBrVulhcBiAbAo/YmOj2/zDEmX+HxSpx+R/Me4ur9RGoWJpCTgN78Rp+zkjoRIwqSfzptInp559Uls3PYN+uf0wyfFb8DuaeLIUo8RZTEZEX0xOGaU9FXsXtsZMVteW1eD+ob6b0tyVFJyHx0Zjb59+qFfVj+kJqchNTkVSQnJ0AfpH2Zx5kD8G6uqK5GZlgWDwSB3SIogDvJE0n94504c37sX9dXVUu1/XHIy9Oc7Rj4fBtTXY7TFwo2+qGOXXAIsXMhRIkVg0k/n7dM1y/HmB68jO6svdjasx6mGIxxV6hFmbRQGRg/HwOgR0vcdEaUydXW1qK2vlcpnRKlNbGwcBvYbhL5ZfaUEPy0lTUrwRekHhY86iwXH9+3DgS1bUF5UJF2XmJYmHQScD73HgzEWi7TL73meQ6BQJSYTfv97IDbwu2ETnYtJP52Xg0cP4LHnH5WSKE+kHWtKl3FE6bxn9TMj+mFQzMgOZ/XFTK4oa6mtr4HNZpN+B2OjY5HTdwCGDBwqzeZnZ/aVavKJBLHQN+/oUezfsgWnDh6Ex+1GYno6TOdZ9x9vt2NCZSV3+KW2TZwI3HILR4dkx6Sfuq26thr/efpfyC/KQ79+/fBx4Wuwuhs4otQtamiQEz0UI2LHI0Yf1+Z9RJmO+L2rrrHA6/MiJioWWelZGDF0JPpm9kV2Vj9ER0XzHaBOF3CLvv+716/HqUOHpN+rpPNN/lnyQ+0R64F+8QsgO5tjRLJi0k/dImZZn3/jGXy98SsMHTgMO2rW40jdXo4mdWuH3EHRIzE8blybJTwiIbPUWKREX3S0jI+Jx7DBIzBy6CgMyhmMxPhEWRfZUpAn/0eOYNe6dVLnH/G5JpL/8+n4w5IfalP//sD993NwSFZM+qlbNm3fiKdfeQLpqelo0jTg8+J3OZLUJQa1EUNixmBo7BgYNaZWyZhI9C3VVdJC1YS4BIwePgYjho7C4JwhiImO4WhTjxG/b3lHjmDnunXIO3RI+vl8k39R8jOxogLxbPFJp912GzB+PMeDZMOkn7qsqroKDz3+d1TVVCG7TzY+Lngd9a4ajiT5xaiJkEp4BseMhE7dsmOOaDtZVlEq1ejHxyVg1NBRGD1iLIYMGMpEn3qdmOkXyf+utWuRe6S5IUFKZiZ03ez2o/b5MMpiwZDaWi70JSAurnlRr673dggn6giTfuoSMev60lvPY/W6VRg6aBj21G7G/prtHEXyq4xneOwFGBF3QYtkX8yqigPJKksldFqdtAB3+sQZUrIveuYTyZH85x46hK1r1kg7/kZERSEhNbXbff6TbTZMKS+H2e3u8VgpyCxeDFx8sdxRUJhi0k9dsnPvDjz+4qNSHbXH6MKKwrfgg5ejSO1/yEAltd0cEz9F2lirvVn9cSMvwMRxk6RZfbbUJCVwOhzYv3mzlPzXVlZKnX4iY7pXWqbzeKQOP30bG3s8TgqyFp5/+APQzd8jovPBpJ/8JtojPvTE31FcVoz+fXOwougtVDsqOILULtF6c3ziDMTqE87aSKpO2kn27Fn9MSPHSQeSREpUU1mJratX4+C2bVKbz5SsrG6X/GQ3NEjJv97LyZKwNWkScPPNckdBYYhJP/lFJGtvffgGPlm5TCrrOdywGzst33D0qE0JhmSMT5iJtIisM78/otVmWXkpzBFmjBo+BrOnzMbQQcM5q09BQfwO5x0+jM0rVyL/PEt+IlwuTKmoQIrN1iuxksKJbmP/8z9Anz5yR0Jhhkk/+eXA4X149Ln/ICoqGqYoAz7MfwluH+tTqSW92oDxiTMxMGq41EZTJEqVlkpUVJZLC3HHj5mIWVNmY0C/gWyzScFb8rNlC7atWYPqigqpy0+3Sn58PgytrZUW+mp6I1BStpwc4L775I6CwgyTfuqUtcmKh5/6J07kHsfgAUOwoXwlTjYc4shRC/0iB2Ni4iyYtGZpcW55ZRks1RapXn/K+KmYOXkWsjL6MNmnkCr5ObB1q/Q7LUp+1Jqup+9JNhtmlJXB6PH0SpykYHfcAYwbJ3cUFEaY9FOnPvz0fby//F0MzBmEBk8Nlhe9yVGjM8zaaExJmotMcz9pZr+iqkK6pCalYMbkWZg2cTpSk9M4YhRyxO/78b17sX75clQUFSGlT59u7eoryn1mlZYijj39w0tCAvDAA2zhSQHDpJ86dOzkUfz76X/BoNcjOSkFnxe9h3J7EUeNpK48Q2PGYmzCVOjUOtTU1aCktAhxMfGYPW0u5kyfx8W5FBbqLBZsWL4cB3fsgNFkkrr8dHWXaI3XK7X17GO19lqcpEBLlgAXXSR3FBQmmPRTu+wOOx559mEcOLwfQwYORYH1JL4uW84RI8QbkjE1aT4SjSlS+VdBUT5MRhMmXTAFF89ZiMz05gW8ROHU21+099z4+eeot1iQ1q8f9F3t8OPzYURNDUZWV6NrhwwUtMTvyJ/+BER+186YqLdoe+2ZKeh9tWEN9h3ai5y+A6Re/DssG+QOiRQwuz8yboLUc9/lcuH4qWNSiYPosb9w/iVSj/2uznAShQKNRoMx06cjvW9frF22DCcOHEBsQgJiEhP9/39CpcKB+HjU6vXSrL/O5+vtsEluDgewdm3zpl1EvYwz/dSmopJC/N9jD0oJXXpqOg7W7sL2qnUcrTAWoYnEjJSLkWLMQFFpIRobG6WF3QvnXoJxoy6Qkh4iau7ws/2rr7D9yy/htNuR2rdvl1vTxjocmFlaikju4hv6TCbgL38BjEa5I6EQx6SfWhGJ/nOvPY21m77CsMEj4PDapRadTq+DoxWmssw5mJa8AA6rE4XFBUhLTcfi+UswdeJ0GA38Q0XUlvyjR7Hu449RePIkUruxyNfg8WB6aSlS7HYOcKi77DJgwQK5o6AQx6Sf2uzJ/59nHkZCfAJiomOxtfJrHK7bw5EKQxqVFhMSZ2KAeTjyCnOlA8JpE2fg0ouWIiUpRe7wiBTPWl+Pr5ctk+r9YxMTESM6tnSB2uvFtPJyZHGBb2iLimqu7dfr5Y6EQhhr+qkFUae9Ys1yOF1OKeGvc1bjSN0+jlIYitUnYGbKIngbfThy/DBy+uZg6cIrpVKe7uxCShSOzNHRuPj666X6ftHX397UhOTMTL/r/L1qNb5JTcWkigr0b2jo9XhJJuK93bwZmDWLbwH1Gib91MLWXVtw8MgBZGf1lX7eXrVeWsRL4WVA1HCMjZmKgvwCRESYsXTh5bh47iXSrrpE1DVanQ7TFi1CXFIS1opynxMnkNG/v9/rYHwqFbYkJ8OpVmNIXR2HP1StWQNMny5WhcsdCYUoJv10RkNjAz7/cgX0er3UfrGkqQBFTbkcoTDrzjM+YQYSXBnIy8vDyKGjcPklV2JwzhB25SE6n/+3VCoMnzhRKu9Z8957KDx2DOmirae/izdVKuxKSoJTo8Go6mq+F6GopgbYvh2YPFnuSChE8Rw9nbFu89fILchFn4xsqXZbzPJT+NCrDZiTcim0FjNcLieuu/wG3PeDX7ANJ1EPyszJweV3343BY8agNC8PjfX1XXq8aOm5u4vrAiiIrF4NeHl2nXoHk36SlFeWYfW6lYiLjZNay+U2HkWNs5KjEyaidXGYHbcYdUVW9Mvqh5/c9TNpsS478xD1PDHbv/j22zF+7lzUVFTAUlbWpccfjovDzsREvjWhqLwc2MPGGdQ7mPSTNKv/xVefo6KyAqnJadLP+2q2cWTCRIYpG2PU09FYbcOCmQtw3w//B8MHj5A7LKKQZjAaMe+qqzD/qqvgcbtRmp8vffb662hsLLYnJYHbd4WgVavkjoBCFGv6SdpVdeO2DVLvddGVJa/xOGqdFo5MGBgcNRrRtcmITIjCFVddjRmTZrIzD1GAiM/bC2bPRmRMDFa/+y5KcnOlOn9/O/scj4kRszaYUFXV67FSABUVAQcPAsOHc9ipR3GmP8x5PB58umYFrE1WxMfGS9dxlj88FuyONE9CVE0yRg0bjZ//4JeYNWU2E34iGQweOxaX3HwzomJjUXTiBLxdqOk+HhuLA3FxvRofyWDlSg479Tgm/WFu176d2HNgF7Izs6XZpULrKVQ7KuQOi3qRGmoM041HjC1JasV57933o09mNsecSEb9hg3D4ltvRUJqKoqOH5cmZPy1LyEBx6OjezU+CrBTp4ATJzjs1KOY9Icxm92GT9csl2Z3zeZI6bp91azlD/UddgdhHDIN/XHHDXfjmkuvk9qzEpEyOvssuf12pGZnSzP+otbfXzuSklBoNvdqfBRgnO2nHsakP4xt2vYNjp06KrXoFEqa8lHpKJU7LOolOpUeA11jMCJtLH58172YMXkme+8TKUxKZqY045/Rr5+0iZfbz8RfbOC1MTUV5f72/SflO3wYKCiQOwoKIUz6w5So4V+9fhUiIyKlzbiEvZzlD1kGtREDnGMxc+Q8/Ox790u994lImRLT0rD4ttuQNWCANOPvdrn8epxXpcL6tDTUfPuZTiHSt5+ohzDpD1Pbdm1BQXE+0tMypJ/LbUUotxfJHRb1AqPKjCGe8Vg66yr86PafICUpleNMpHDxycnSjH/2oEFdSvxdGg2+Tk9Ho5bN+ULC3r1AFzdwI2oPk/4wreVfs341IkwR0Gl10nWc5Q9NRkRgjHY6br/8e7j12tthjmDNL1GwiEtKak78Bw9G8cmTfi/utWu1UuJv12h6PUbqZaKT09atHGbqEUz6w9D2PduQV5iLjLRM6ecqexlKbPlyh0U9TA8jJpnn4Se33IdF8xZDwwSAKCh37734xhuR2qePlPj7286zQa/HurQ0ePzs+U8KtmmT3BFQiGDSH2YcDge+XLcKBoMRet3pWn7OIoQavc+A6TEX42e3/QITx07igl2iIJaQkiIl/qLkpzQvz++dey1GI3YmJvZ6fNTLKiuB48c5zHTemPSHmR17t+Nk/klkfjvLX+2oRGHTKbnDoh6k9ekxK3ExfnHnbzBi6CiOLVEISMvOxkXXX4+IyEiUdaGjy4mYGJyMiurV2CgAONtPPYBJfxhxOp34csNq6HQ6GAwG6TruvhtaND4t5qVchl/f/TsM7D9I7nCIqAeJ2v75V18tlepVlZT4/bjtSUmo/vYzn4LUnj1AU5PcUVCQY9IfRnYf2IXjp44hMz1L+rnJ3Yj8Ru74FyrUPjUWZFyBB37wJ+6wSxSiBo8dizmXXw6nw4EaUfbhB69ajQ2pqXCo+Sc/aInuTdu3yx0FBTl+AoQJscGLmOUXM0RGQ/PmLUfr9sMH/xaFkbKpfCpcmHUF/vCDvyE1OU3ucIioF42aOhXTFy9GY10d6mtq/HqMVafDppQUfuIHs82b5Y6AghyT/jCx9+AeHDl++EzHHq/Pi+P1++UOi3rI7MxL8Ncf/QuJ8Vy0RxTqVCoVJs6bh0kLFqC2ogJNDQ1+Pa7UbMaB+Phej496SVERd+il88KkPwyI3s5ill/8oRC9+YVC60k0eaxyh0Y9YFTCRPzrx08gJjqG40kUJtRqNaYvWoTR06ejoqgILqfTr8cdiItDcUTz3wEKQlzQS+eBSX8Y2H94Hw4ePXBmll84UrdX1pioZ/SJzMFz972F6KhoDilRmNHqdJh12WXoO2QISnJz/WvlqVJJZT4NuuaNGSnI7NwpunLIHQUFKSb9IU5s5PLlhjXS19O7sdY5a1BqK5Q7NDpPcfpEvHLfR4iP5el6onAlWnjOu/pqaffecj9bebo0GmxJTmZ9fzCy2YBdu+SOgoIUk/4Qd+TEYRw8sh+Z6d/N8h+t2ydrTHT+jGoTnr/nPWSmNHdiIqLwlZKZidlLl0oz/XUWi1+PqTSZcCyGJYFBiQt6qZuY9Ie4bbu2wuF0INLcvDmL2+vGiYaDcodF50ENDR6+5TmMyhnDcSSiM608J86fj9qqKtj97Oe+NyEBdSzzCT4nTwLl5XJHQUGISX8Iq7RUSjvwJiYknbkut/EonF6HrHHR+fnl4j/hwvGXcBiJ6AzRqGHyhRdi6AUXoDQ/Hx63u9PR8ajV2MI2nsGJC3qpG5j0h7Dd+3fCUlPVoo3jUS7gDWqXjLoSd158j9xhEJEC6fR6zL3iCmT06+f3wl6L0YgjsbEBiY960LZtojUfh5S6hEl/iHI6ndiwZR0iIyKl1m5Clb0cVQ6eEgxWfeL74x+3PyF3GESkYNHx8Zh31VXSAl9Laalfj9nHMp/gI/ZmOMhSXeoaJv0hSrTozC/KR2rKd7uzcpY/eBk0Bjx/zzsw6Axyh0JECpc1YABmLFkCm9Xq18ZdXpUKm1nmE3z2sSkHdQ2T/hAkTulu2blJatNpNBil6xweu1TPT8HpL9c/gn4pA+QOg4iCxKipUzFi0iSUFxXB60cZSLXRiMMs8wkuBw6IvtxyR0FBhEl/CCopK8beg3uRkpR65rqTDYfh9nW+sIuU57Lx1+DyydfJHQYRBduOvZdcguT0dCnx98f+hATU6vW9Hhv1kMZGIDeXw0l+Y9Ifgnbs3YG6hlrExcadue5Uw2FZY6Lu6ZuYg7/c8B8OHxF1WUxCAqZdcgm8bjesfpb57Ez8rvEDBQGW+FAXMOkPMU22JmzatgExUTFSCzehwVXLBbxByKA14PG7X4FJHyF3KEQUpIaMG4fhkyah0s8yn/KICBRF8DMnaDDppy5g0h9i9h3ai+KyYqQkf1fak9twTNaYqHt+ufTPGJwxnMNHROdX5rNoEZIzM/0u89mdmAg2gwwSlZVAWZncUVCQYNIfYgt4N277BmqNGnrdd3WZuY1M+oPNuP6TcNPMu+QOg4hCpI2nqO8XM/3W+vpO79+g1+MYF/UGD872k5+Y9IeQ3IJTOHL8EFKTvmvTWeesRo2zUta4qGv0WgMevOG/Z/ZXICI6X4PGjMHIyZNRWVwMjx9lPgfi4mDnZ1BwYNJPfmJWEUK279mGRmsjoqOiz1zHNp3B556Lf4Gc1EFyh0FEIURMIkxduBApffqgvLCw0/u7NBpp0y4KAvn5gB9ncIiY9IcIkexv2bkZ8XEJZxbwCqznDy5DMkbgewt+JncYRBSCouPipPp+n9fr16ZdJ6Oj2cIzGPh8wP79ckdBQYBJf4g4cvwwKqsqkJSYdOa6GkcV6lzVssZF/tOoNfi/mx6HVqPlsBFRrxg4ejSGjB0rlfmIdWAd8bGFZ/BgiQ/5gUl/iNh7aI/0VafVnbmOpT3B5Y6592B41mi5wyCiEC/zmbhgAczR0aizWPxq4VnMFp7Kd+wY4HDIHQUpHJP+EFBXX4e9B3dLpT1nY9IfPPom5eDeS34jdxhEFAZSMjMxevp01FZW+tW7f09CAjo+J0Cyc7mAw9yEkzrGpD8EHDlxGNU11Ug4K+mvspehwVUna1zkv/+98m8w6IwcMiIKiHEzZyIxPR1VpaWd3rfOYECx2RyQuCi8S3zy8vKkdYl79jRXL6xdu1b6uba2Vu7QQgKT/hCw98Bu6X8Krfa7WnD25g8e04bMwZwRF8kdBhGFkajYWEyYOxd2qxUuP8pCDsbFBSQuOg8HDwJeb0CH8LbbbpPyjx/84Aetbrvnnnuk28R9umvq1KkoLS1FTEwMlObll19GrB/7WXz44YdYsGABkpKSEB0djSlTpmDlypUt7rN+/XosWbIE6enp0pgtW7asxe0ulwu/+tWvMHLkSJjNZul+t9xyC0pKSroUM5P+IFdTV4P9h/e1mOUXi7PyuCFX0Cze/c3lf5E7DCIKQyMmTkTWwIGoKC7u9L4WoxFlJlNA4qJuslqBkycDPnxZWVl4++23YbPZzlxnt9vx5ptvok+fPuf13Hq9HqmpqS26Egab9evXS0n/Z599hp07d2LOnDlSgr979+4z97FarRg9ejSeeOKJNp+jqakJu3btwu9+9zvpqziQOHr0KC699NIuxcKkP8gdPnYI1bXVLer5K+2lsLo7b8dG8rtq8k0YnDFc7jCIKAzpDAZMWrBA+r6psbHT+3O2PwjI0Lpz3LhxUuIvEtHTxPci4R87dmyL+37xxReYPn26NEOekJCAxYsX42QHByptlfc899xz0utFRETg8ssvx7///e8WM+5//OMfMWbMGLz22mvo27evdJbguuuuQ8NZbWo7i+N0mZH4d4gkXbyWSMo3b958Jq7bb78ddXV10v3ERbxuWx555BH88pe/xIQJEzBw4EA8+OCD0tfly5efuc/ChQvx17/+Vfr3tEX8G1avXo1rrrkGgwcPxuTJk/H4449LBxEFBQXwF5P+ILfnwC5oNBrpclq+9YSsMZF/zMYo/Gzx/3K4iEg2/YcPx+AxY1BRVNRpC0/RyafKYAhYbNTNLj4yuOOOO/DSSy+d+fnFF1+UkuJziRnt+++/Hzt27MCXX34pdZMSia7Xz7KkjRs3SqVE9957r1T3L2bQ//a3v7W6n0jgRYnMihUrpMu6devwf//3f12O47e//S1+8YtfSK81aNAgXH/99XC73VLZkUjmRbmOKD8SF3E/f4jXEAcg8fHxOB+nDzj8KTE6jQ3Bg1hVdRUOHj2IhPjEFtcXN+XJFhP57/sL7kVidDKHjIhkb+GZd+QI6qurEdPJLrwH4+Mxy4/FvyQTUaolymwCXIp100034Te/+Q3yxe7A3ybnouRHzIif7corr2zxszg4ELXuhw4dwogRIzp9nccee0yaFT+dYItEfNOmTVJif25iLWruo6KipJ9vvvlmKbk/fYDgbxzidS655BLp+z/96U8YPnw4Tpw4gSFDhkiz7yLpFuVHXfGvf/0LjY2N0qx9d4nyKVHjLw5CxIGHvzjTH+SlPbV1NYiP/e5o0epqQK2z897LJK+M+CypLz8RkdxSs7IwfNIk1FRUdDrbL3r21+j1AYuNuki8fzLU9YuEWSTHItEWM/7i+8TElhOSwvHjx6VEtX///lKyKspvBH9LVEQd+8SJE1tcd+7Pgnje0wm/kJaWhoqKii7HMWrUqBbPIZz9PF0l1jmIg4d3330Xycndm/QTi3rFAYP4f/Wpp57q0mM50x+kxJu9a/9OqWOPmKk5ragpV9a4yD8/v/T3bNFJRIoxavJkHNiyBQ21tYjuqFOPSoVDcXGYVl4eyPCoK06cAPyYNe+NEp8f//jH0vftLUgVC1izs7OlunzRgUbMyIuZdafT2aOx6HTfbVQqiBl571mlO/7GcfbznF5M7G8p0rnEmY+77roL7733HubPn39eCb84o/LVV191aZZf4Ex/kKqoqsDRE0dY2hOEBqQOweILWp5aJCKSU1JGBoaMHYvq8vJOZ/sLIiPRcE5SRQpL+mVw8cUXS0mzSEwvuqh1G2qLxSLN1D/wwAOYN28ehg4dipqami69hljEun379hbXnftzZyw9EMfpzkIePza3E9566y1pjYP4erpcqLsJvzhLsWbNGmkBcldxpj9IHT5+CHX1tUhLGXrmOq/Pg9KmQlnjos794KL7grr9GBGFppFTp+LQzp2w1tcjsoO+6D6VCieiozHWwlJSRSosBMSMdYDLsERDkcPf7gp8dnOR0+Li4qRE9dlnn5VKZUQpza9//esuvcZPfvITzJw5U+rYI2brxWz3559/3qW/qXE9EIcgSoJEbb5YKyA6+4gOP+LSVknPrbfeikcffRSTJk1CWVmZdL3JZDqz/4B4HrFW4LTc3Fxp8bBY7Cu6IImE/6qrrpLadYr1C+Jg4/TziPuIAxB/cKY/CIlZmJ17d0innc4u7Sm3lcDl69lTZNSzspP6c5afiBQpLTsbA0eOhOXbZKIjuVFR8G+OkwJOzD7nylPqK8pN2is5EfmKKHERbSZFKc19992Hhx56qEvPP23aNDz99NNS0i8SbdF6UzyP0ej/jvbqHohDEB18RCeha6+9VlrT8M9//rPN+4mDC9HxR2xWJg4yTl9EB6LTRBch0d70dItT0VlIfP/73/9e+rm4uBiffPIJioqKpHakZz+PWMjsL5Wvs/N4pMiuPX/4x29hMBpbbMq1o2oDDtTukDU26tiDNz6Gq6fcxGEiIkUqOH4c7z3xhNTFJ+KshZBtmVFaiiyxIRQpz8KFQDfLSILN3XffjSNHjmDDhg1yh6J4nOkPQifzTqCuoRax0S17s5ba/N+ggeTp2LN04rUceiJSrKwBA9Bv2DBU+dGWU5T4kELJ0MEnUETLy71790rlMKKF5yuvvCKVz1DnmPQHoWMnj0pduc6umXN47Kh2VMoaF3Xs7vk/hU7DxW9EpFyiNnrs9OnQaLWwdzKLXxoRAauWSwMVSfTL72aXGaXbtm2btCnXyJEjpVKf//73v1JXHOoc/28NMmJl/P7DexET3XKRVZmtED6wUkupUmLScNWUm+UOg4ioU30GD0bfwYORe+QIMnNy2r+jSoVTUVEY2Y3OJ9TLHA5AnK3JyAi5oRY97ql7ONMfZPKL8qSa/rizNuQSSm3s2qNkd877MQw6bl9PRMonziKPmT5d2ujJKZLHDpyMjkZozieHgLw8uSMghWHSH2RO5Z+Utl82GVtusV3SxHp+pTIbo3DNtFvkDoOIyG99hw5FckaGtEtvR5p0OpSbWv49IoVg0k/nYNIfRESjpX2H98FgMLToSWt1N6DexdOrSnXZhKthNkTKHQYRkd90ej2GTZgAW2Njp5t1neigpz/JiEk/nYM1/UGkpq4GeQW5rUt7uCGXot044065QyAi6rKcESOwedUqNNbWIiourt37FZvNsGs0MPq5O2lveOrAAemSV18v/Tw8Ph6/nzABC7Ozpev6vfZam49796KLcPWAAW3e9sdt2/D28eMobGyEXqPBBUlJ+NukSZiUmird7vB4cNdXX+Hj3FykRkTgyVmzMD8r68zjH9q1CwWNjXhs5kzIQuy3YLOJXaDkeX1SHCb9QUQk/PUNdRiQOLDF9RX2Etlioo6Nz5mMQenDOExEFHTiU1KkBb1Hdu3qMOn3qlQoMpsx4NuEWw6ZZjP+b/JkDIyNlVpavHLkCC777DPsvuYaDImLQ+ltt7W4/7OHDuGh3buxsE+fdp9zUGwsHp85E/2jo2Fzu/GfvXtx4fLlOHHTTUgymfDswYPYWVmJzVdeic8LCnDD6tUov/126Ux8bn09njt0CDuuuQayEWdoRBefIUPki4EUheU9QSSvMBcerwfac1qkWRzlssVEHbuBs/xEFKRE8jpk3Djpe5ez493eRdIvpyX9+mFR375S0i+S9b9NnoxInQ5bysuhUauRaja3uHx06hSuGTAAkXp9u895w6BB0sx9/5gYDE9IwL+nT0e904l9VVXS7YdranBpv37SbfeMHIlKmw1Vdrt02w/XrcM/pk5FdAfPHxAs8aGzMOkPEqKmUrTqNEe0/GD1+NyocTR/AJGyJEQl4aIxl8odBhHReS3oTUhJQe23iW57ykwmuM5aayYnj9crleVYXS5M+bYU52w7Kyqwp6oKdw4d6vdzOj0eaWY/Rq/H6MRE6brRCQn4prRUOguwsqAAaRERSDQa8cbRozBqNLi8f3/IrpCd/eg7LO8JEhVV5SgtL0NsTMtTrBZHJbxsmKZIV0+5CXqtzLM8RETnwWA0Yuj48Vj38cdITEtr0UTibF61GmUREcjqZEOv3rTfYsGU99+H3eORZvk/WrgQw+JbroETXjh8GEPj4jA1La3T51yRl4frVq5Ek9uNNLMZqy+9FInf1sjfMXQo9lksGPbmm9J1Yn1AjcOB32/bhrVLl+KBLVukg4+cmBi8OHcuMiJlaOhQzkoA+g5n+oNEbkEuGhrrER3Zcttzi71MtpiofWqVGtdNb1lDSkQUjHJGjoQpMhJNDQ2KLvEZHBuLPddei61XXYUfjhiBW7/8Eoeqq1vcR8zKv3nsmN+z/HMyMqTn3HTllbi4Tx9cs3IlKpqapNt0Gg2emDULubfcgu1XX43p6en4+caN+OmoUdhdVYVlubnYe911mJySgp9u2ABZiDM0Mi6wJmVh0h8kTuadkGZY1OqWb1kV6/kVafrQOciIb3+BGBFRsEjJzETWgAGoqazs8H6ii4+cG3WJDjsDYmNxQXIy/j5lilSG8+jevS3u8/7Jk9Ks/S1+Lm4163TSc05OTcULc+dCq1ZLZwra8nVREQ5WV+PHI0dibXExFmVnS48XawfEz7JwuwGLRZ7XJsVh0h8EvF4vDh09gEhz61ODlZzpV6RLxl0pdwhERD1CTDgNveACeN1ueEQS2Q6nRoNKo1Exo+71+eDwtjwMeeHQIWnxrei+0+3nbGPm3O5245716/HM7NnSwmGPzwfXt68tvoqfZcMSH/oWk/4gUGmphKWmGtFRLUt7nB4HN+VSIL3WgAWjL5E7DCKiHpM9eDAiY2PRWFfX6Wy/HH6zeTPWl5RIPflFbb/4Wcyu3zho0Jn7nKitle5zVzulPUPeeEPq6iOIRcD/u3kztpSVIb++Xlr8e8eXX6LYasXVOTmtHvuXHTukmf2xSUnSz9NSU/HhyZNSp5/H9+/HND/WD/SaTnZVpvDBhbxBoLS8BI3WBqSnpre4nq06lWnmsHmIMrU8QCMiCmaRMTHIHDAAx/bsQUxCQrv3K4qMxDgZykkqbDbcsmYNSq1WxBgMGJWQgJWXXooFZ22W9eLhw8iMjMSF7fTmP1pbizqHQ/peo1LhSG0tXvniC1TZbEgwGjEhORkbLr9catF5tgMWC949cUKq/T/tKlHSU1KCGR99JK01eHPBAsiGM/30LZWvs/21SXafrVmB199/FcOHjGhx/f6a7dhp+Ua2uKht/77tOSwZfxWHh4hCyt5Nm/DZa68ha+DAVuvLzraooACxnfT1pwASZybuu49DTizvCQZ5hXnQ6XStrq9iPb/imPQRmDdyodxhEBH1uMycHET40cWnJCKCo68kLO+hb7GmX+FcLhdO5Z9AVGRUq9vYuUd5Zg+/EBEGedvWERH1hvjkZKmTT0NNTYf3q+jmIlnqJeIg7ds2oxTemPQrXHllGeoa6hFpbpn029xWWN0dz7ZQ4C0adzmHnYhCkujiI3r2O+12aZf49ogOPnK27qQ2sK6fmPQrX2l5KZqarDBHtJw9rnJwUy6lMRujMGfEhXKHQUTUazL694fBZIKjg5ljl0aDOj13I1cUJv3EpF/5SsqbN/RotSmXnVtrK82MoXNh0CmnRzURUU8T5T2izKe+trbD+7HER2FY109M+oNjJ1693tDq+jpXxzWVFHgzh83nsBNRSNNotVKJj62TxbxM+hWGM/3EpF/Z7A47Cory21zEW+/qeJaFAm/m0HkcdiIKeVkDBkCj08H1bU/7tlQpaGdeYtJPzbiQV+GbcjU0NrSd9Ds5068kQzKGIyVWxh0XiYgCJK1vX0SJ3Xnr69u9j02rRZNGw/dEKaqqAC+XV4c7Jv0KX8QrZvtNxpbtz5rcVrh9LtniotZmcJafiMKEwWhEWnZ2p/36OduvIG43IMNOyaQsTPoVrLi06EybtLM1sJ5fcaYOni13CEREAd2oy9XJrrsWlvgoCxfzhj0m/Qp2/NSxVrP8Auv5lUWvNWB8zmS5wyAiCpjkjAxoRV1/B4k/Z/oVWOJDYY1Jv0JZm6woqyxFZJv1/FzEqyRj+02AUc8dKIkofCRlZMAcFQVrB3X9tezVryyNjXJHQDJj0q9Q1TUW2Gw2RJgiWt1Wz/IeRZk6eJbcIRARBZTJbEZKVlaHdf1iky47F/Mqh9UqdwQkMyb9ClVda4HNboPR0LrtGct7lGVc/0lyh0BEJMvuvB217RTqdbqAxUOd4Ex/2GPSr1DVtTXwwQfNObMkPp+PSb+CiEXWw7NGyx0GEVHAJaamQqVWw9tBK8h6lvgoB2f6wx6TfgWX98DX+vomTyM8PrccIVEb+iUPRJQpmmNDRGEnPjUVxogI2DpIJjnTryCc6Q97TPoVvDGXTqdvdT0X8SrLqOyxcodARCSL2MRERMbEwNZBMtnAmX7lYNIf9pj0K5Ao4RFJv6mNHsdcxKssI/uMkzsEIiJZiPJT0a+fM/1BguU9YY9JvwI1WhtR31APU5ude9iuU0lG9WXST0ThKyElBT6Pp93bG3U6tH8rBXxXXpuNgx7GmPQruHOPqY3OPQ1M+hVDp9FhaMZIucMgIpJNVHz8mTPUbfGpVFLiTwrB2f6wxqRfgWpqa2Bz2GBsYzfeJjf77CrFoPRhMOgMcodBRCSb6NhYaPX6DnfmZQcfBWFdf1hj0q/gzj1qdeu3x+HhqTmlGNFnjNwhEBHJKjo+HgajEY4OykYaONOvHJzpD2tM+hWoura63dvsTPoVY0DqELlDICKSVURUFEyRkXDa7e3eh7vyKkgHOyhT6GPSr0DFZcXQt9HmTPTnd/naP4VKgdUvOYdDTkRhTZyRTkhN7XCm33HOJpMkI870hzUm/Ypt19m6np+z/MrSl0k/ERES09Lg7qCmn0m/grCmP6wx6VcY0aqzsbGhzUW8TPqVQ6vWIiO+j9xhEBHJLjourq0N5M9g0q8gnOkPa0z6Faa2vgZ2h50z/QqXmZANrUYrdxhERIpI+lUqFTzt9Otn0q8gnOkPa0z6FcbaZIXT5YRe17qm3+5pkiUmai07uT+HhYjodAcfk6ndxbyONjrRkUyY9Ic1/p+oME1NTdJsidje/Fws71GOvklcxEtEJETGxkJvNLab9Ls0Gu7KqxQOh9wRkIyY9CtMk70JUEE6VXou9uhXjr5JnOknIhL0BoPUcc7tcrU7ICzxUYh2dk6m8MCkX2Gamqwi528Ty3uUI5tJPxGRRExSiV79Hre73RFh0q8QTPrDGpN+hWmyNcHbzv+ULO9RjuSYVLlDICJSDHNUFNxM+pWPSX9YY9KvwJadGnXbG5kw6VeO+KhEuUMgIlKMiOhoeDoo73FyMa8yMOkPa0z6Faa2vhY6na7N25j0K+dUdpw5Qe4wiIgUNdPv9XrlDoM6w6Q/rDHpV5j6DpN+tuxUgmhTDHv0ExGdRbTsbG89muBrozkFyYBJf1hj0q8gPp8P9Y0N0GnbTvrdvvYXSVHgxEeytIeI6NykH0zslY9Jf1hj0q8gNrsNTpcDujY25hJ8Pp46VYL4SJb2EBGdzWA0ShNX4tIWNookkh+TfoV17nG5XNBpta1ukz5M+bGpCJzpJyJqPdOvVqtZ1690nOkPa0z6FdajX0r625jp9/g8ssRErTHpJyJqnfRrdbp2e/Vzpl8hmPSHNSb9CmK1WeFyu9qs6feBpT1KwfIeIqKWdHo91BoNvO316me9vzIw6Q9rTPoVxGazSZubaNso7/Gynl8xjHqT3CEQESmulXFHM/qc6VcIJv1hjUm/wmr6xQfn6Q/Ps3lZ3qMYOm3bC62JiMJWJzP5TPoVgkl/WGPSryBuj7vdxbpelvcohlbTdktVIqJw1d6EFSkMk/6wxqRfQXxeL1TtbG/CmX7l0Klbl18REVH7SSWTDYVg0h/W+P+hgng8nnZ7HLOmXzlY3kNE1LWafr2HHegUgUl/WGPSryAer6fdskgm/crB8h4ioq7Re9mBjkhuTPoVxCt9KLZT3sOafsXQaljeQ0TUZk1/OzPJnOlXCI1G7ghIRkz6g6a8h6dGlULHhbxERG1qt7yHM/3KEBEhdwQkIyb9CtJRCQ/Le5RDp2HLTiKis53p3MOZfmVj0h/WmPQrbKa/PUz6lcPtbWfHSSKicE7621mUpvF6waIShTBxc8lwxqRfYQt52+vTr2b/Y8WwOZrkDoGISFHEbvKi7bRa3TqtYGmPgpjNckdAMmLSr7iFvG3TqLghlFLYXEz6iYjO5nQ44HG7odG2bnTARbwKwvKesMakX0HcLjfUqrbfEq2aSb9ScKafiKglp90ulaiq20r6uYhXOZj0hzUm/Qricrva3cZcq2KbSKWwuWxyh0BEpLykX8z0t9ESkjP9CsKa/rDGpF9BxCxJu0k/Z/oVw+5keQ8R0bnlPUJbf8PMbjY/UAzO9Ic1Jv0Km+lvaxGUoGVNv2KwvIeIqPVMf3uTVlEuF4dLKZj0hzUm/Ypr2dneTL8WqnZuo8BieQ8RUUsuh6PdzSUjmfQrB5P+sMakX0F0Oi18HWzQpWFdvyLYWN5DRNSCQ8z0tzMmnOlXECb9YY1Jv4IY9cYO23ayrl8Zaq01codARKQo9qamNjfnUvl8MHOmXzmY9Ic1Jv0KYjCIpL/9XXnZwUcZKupK5Q6BiEhRmhob2+zRHyE6+sgSEbWJSX9YY9KvIDqd6MXfft2+qOsn+VXUlckdAhGRotjaSfpZ2qMgej3QxntE4YNJv4Lodfp2ux8I7OCjDHVNtbA72aufiEgQZal1Fgt0Iqk8BxfxKghn+cMek37FzfS3T8O2nYpRztl+IiKJtb4edpsNeqOx1Yhwpl9BuDFX2GPSryA6ra7dlmfS7dygSzFY109E1Kyhtlbq029g0q9snOkPe0z6FUSr7Wymn7V4SlFey8W8RERCY20tXE4ndAZDqwGJcjo5SEoREyN3BCQzJv0KK+/pqKbfoGl96pTkwcW8RETNGurqpK/n/v3Ser0s71GSpCS5IyCZMelX2EJeUd7TXolPhNYc8JiobUz6iYia1de0vXdJgt3OJENJmPSHPSb9CqLTaqWZknaTfk1kwGOithVY8jg0REQAqsvK2iztEUk/KQiT/rDHpF9BtDod1Go1PO1s0BWhZdKvFCfLjsodAhGRItp1VldUtLmIN9HhkCUmageT/rDHpF9h3Xs0Gg28Hm+bt5tY3qMY+ZWn4HRzgRoRhTexE6+jqQl6zvQrm3h/oqPljoJkxqRfYQt5NWpN+zP9LO9RDPEe5ZYflzsMIiLZO/c47PZWPfrNLhdMnrb/lpEMEhM57MSkX2kLeUV5j7edpN+oMUHNt0wxjpcekTsEIiJZ1VdXt9muk/X8CsPSHuJMv7IYjSapxMflcrV5u1jkyxIf5TjBun4iCnNVZWXweb3ShNXZErmIV1mY9BOTfmWJMkdBr9fD6Wq/VpwlPsrBmX4iCnfFp05B18Yi3gQu4lUWJv3EpF9ZtFotYqJj4OxgB0P26lcOzvQTUThz2GyoLC5GhLnlHjIqnw9xTPqVhTX9xKRfeeLjEuHoIOk3sW2nYhSwgw8RhTFLWRlsVitMUVGtSnu07ew3QzLhTD8x6VeexLhEOF3t9zbmTL9yuL1uHC89LHcYRESysJSXw+lwtGrXmW618h1REp0OiI2VOwpSALbsVJjoqGiggwkS1vQry57c7XKHQEQki4ri4jNNJs6W0dTEd0RppT3nvEcUnpj0K0xkZBTQwf+bnOlXlj15O+QOgYgo4Hw+H4pPnoTpnHr+CJcLsR2UqJIMWNpD32LSrzDRkc0z/eIDtS0RrOlXlD25TPqJKPw01Nai1mKBKTKyxfWc5VcgLuKlbzHpV5hIc2SHvfojtdxGW0nyKk+iutEidxhERAFlKS2FrbGxVdLPen4FSk6WOwJSCCb9ChMVebpXf9uLebVqHRN/hdl5covcIRARBXxTLq/XK7WaPk3j9SLFZuM7oTQs76FvMelXmEhpgy5Dh207Y/UJAY2JOrbj5GYOERGFlfyjR6EVXWHOIhJ+tupUoMxMuSMghWDSrzDmCDOMBgOczvbbdsbq4wMaE3Vs+4lNHCIiChv1NTUozctDVFxci+sz2KpTmbP85yy2pvDFpF9h1Go1YmPiOtyVN4Yz/YpyqGgfrI5GucMgIgqIktxcWBsaYI5uucYsna06ladvX7kjIAVh0q9ACXEJcLraT/rjmPQrisfrwZaj6+UOg4goIAqOH5e+ajSaM9fFOhwwu918B5SGST+d5bsVOKQYifFJ7XbvEWJkLu9xN3pRtdmGpnw3fG4fdDFqJM+LgDFZC5/HB8tWO5ryXXDVe6HWqxCRpUXCFBO05vaPMfNerYO7oXWb0pgReiTNipC+r/zGhoYjTqh1QMJkE6IG68/cr/GEE/VHnUi/pGUniUD5+uAqzBu1SJbXJiIKFJfDgbzDh1vN8vdtaOCboERM+uksTPoVKDam4+2ydWo9zNpoWN31CDSP3YuiDxtgytAhfYkZGpMKrlovNIbmHcW8bsBR6UHceCMMiRp4HT5UbrCh9FMrsq6Javd5s66Ogs/73c/Oag9KPrHCPKB5oZg114XGY06kX2qWXq/iqyZE9NFCY1LD4/DBssWO9MvkSfiFtQdXy/baRESBUlpQgLrqaiRlZHx3pc/HpF+JxEJrLuKls7C8R6Ez/WJXXtEOTWmLeWt2O6CNVCNFzOynaKGL1iCijw66mObTvCL5z7gsElED9dDHaWBM1SJppkk6EHA1tP/vEcm7OBNw+mLNc0EXrYYpvfm41FnjgSlDK51NiBqkl84giDMJgmWTTTojoIuS79e5vLYEBwv3yfb6RESBqud3O53QGwwtuvZEeDx8A5RGJPxnlWARMelXoKSEJEQYI9Bka1Jc204x425I1qL0CytyX6xDwTsNqDvYfqchwetsLts5fTagM6JEqOGYC1FD9VCpmh+jT9TAUeGRzjTYK9zwfltWZCtxw1HlQcyo7/4AyeXrAyvlDoGIqNeIneJPHjgAg8nU4vp+LO1RJpb20DmY9CtQQnwiIkzKTPrd9V7UH3BAH6OWynvEDHvVBhvqj7S98Fgk55bNdkQO1Emz8/5oPOWSyoKih35Xs2/uo0PkYB2K3mtExZdNSJkfAbVOhcp1TUiaZULdASfy36hH0QcNcFjkmXFae3CVLK9LRBQI1eXlqCwpadGqU2zIldXI7mWKxKSfzsGkX4FMRhOSEpPRZLMqrrzH5wMMSRppYa4hSYuY4QZED9Oj7oCjzRn7spVWwAckz25ejOuP+sNORGRrWy38TZhoQvbN0ehzfTQi++tRs9MBU5YOKrUKNTvsyLwiUopFHBTIYX/+LlgaKmV5bSKi3lacmwtbYyMior5bn9WnsRE68YeBlIdJP52DSb9CZWdkw9bBduZyzfRrI1RSrf7Z9PEaqaNP64S/Ce4GL9IvM/s9yy/q9G1FbkQP7bhcR9T4NxxzImGiEbZit1T7L9YFRA7QS+sHTpcUBZLX5+WCXiIK2dKeU4cOQaPVnim7FHLqA99QgvwgDswS5MkTSLmY9CtUSnKq9CHbcQef9rvh9BZjmhbO2pblM85ab4tFtKcTfledR1rUqzH6/2tWf8QhdQQy922/sZQYl4q1TUicZmo+mPD5znT+8Xmbx6yjsetNrOsnolBUW1WFgmPHEH1WIhntdCLZbpc1LmoHZ/mpDUz6FSopIVmaTemog48c/fpjRxtgL/egeoddSv7FbHv9QQdiRhi+S/i/sMJR6UbKArOUjLutXukibjuteFkjave1LAkSiXrDYSeihuilkp321B9ySrP65n66MwcitmIX7GVu1O5xQB+nhsaglq2uv8HGmS8iCi2iN39jXR0iY2LOXMdZfgVj0k9tYJ9+hUqMT5Rq+222JpjNbfefT9Ano6QpP6BxiTadaQvNsGy2SXX02mg1Eqd/t1GWSO6tec27Mha+03KzlvSlZkRkNCfqrnrRiadlmZCt0A13Y8sFvOdyN3lRs9OOzCujWsQUO8aIkhVWaCJUUjtRuThcdnyx5xNcPeUm2WIgIupJYvLpyK5d0BuNUKubJ1TU7M2vbEz6qQ1M+hUqUbTt/LaDT3tJf6IxFXIw99VJl7aIvv0D7ul4czGh7y3fzRadJvr9d/ZYbYS6zcfGTzBKFyX4eNs7TPqJKGSUFxZKm3LFJia22IHXxN78yiTWXGRnyx0FKRDLexRKzPKLxL+jtp1JxrSAxkT+2XZiI0qqCzlcRBQScg8dgt1qhclsbr7C58PQmhq5w6L2pKYCRmVMgpGyMOlXeAefJnv7SX+E1gyzNjqgMVHnxNqEj7e/y6EioqDnsNtxaPt2mGNiznTtybRaEeNyyR0atYelPdQOJv1K7+DzbTea9iTJVOJDHVu2jUk/EQW//CNHYCkvb1HaM7S2VtaYqBP9+3OIqE1M+pXewefbRVTt3oclPop0qvwY9ufvljsMIqLzOmt5ZPdusb8idPrmBgtJNhuS2KZTucTZmGHD5I6CFEqxSX/fvn3xyCOPINw7+BhFBx97+5t0MelXrmXb35E7BCKibquuqJBadZ49yz+MtfzKlpkJnNVWlajbSf9tt90m1fSdviQkJODiiy/Gvn370NO2b9+O733ve+ht3//+95GTkwOTyYSkpCRcdtllOHLkSIv7nP1vPn15++232x2X05fhw4efV2zJSSmINEei0drY7n0SDMlQq1q2viRlWL7jfamFJxFRMDq+b5/Umz8qtrmrWozDgfSm9teZkQKcZ95Boa3LM/0iyS8tLZUuX375JbRaLRYvXtzjgYkEPCKi9/utX3DBBXjppZdw+PBhrFy5UjqdeeGFF8JzTisycZ/T/25xWbp06ZnbHn300Ra3FRYWIj4+HldfffV5xWY0GNG3Tz80NLa/2ZNGpUGiIeW8Xod6R02jBZ9sf4/DS0RBp6mxEfs2bWqxgFfU8re/bSIpwogRckdAoZT0GwwGpKamSpcxY8bg17/+tZTkVlZWnrmP+Pmaa65BbGyslPyK2fO8vLwWM+Miaf7Xv/6FtLQ06YzBPffcA9dZ3QDOLe8Rs+/Tp0+H0WjEsGHDsGbNGumDaNmyZdLt4vnFzx9++CHmzJkjHTCMHj0amzdv7vDfI84mzJw5U3q9cePG4a9//asU/9nxCuLfcvrfLS4ijtNiYmJa3LZjxw7U1NTg9ttvx/ka0HcgnE5nh/dJNWWe9+tQ73hl7dMcWiIKOsf27EFVaSnik5Oln01uN7IbWm64SAoTFcX+/NR7Nf2NjY14/fXXMWDAAClxF0TiftFFFyEqKgobNmzAxo0bERkZKZ0hODt5/frrr3Hy5Enp6yuvvIKXX35ZurRFzLqLgwSRyG/duhXPPvssfvvb37Z5X3H9L37xC+zZsweDBg3C9ddfD7e7eYfYzlitVmlGv1+/fsjKympxmzgoSUxMxMSJE/Hiiy9KZwTa88ILL2D+/PnI7oHNMTLSMqWDmXPPPJwt2Zhx3q9DveNoySFsPrqew0tEQcPpcGDPN9/AaDJBo23ew1P05WchqcKJBbzfnpUh6pEdeVesWCEl8aeTZDFTL647vTX3O++8I3Wbef7558+cEhSJtJgpX7t2rVQ6I8TFxeHxxx+HRqPBkCFDcMkll0jlQnfffXer11y9erV0gCAeL2bShb/97W9YsGBBq/uKhF88l/CnP/1Jqqs/ceKE9BrtefLJJ/HLX/5S+vcMHjxYej39t50KhD//+c+YO3eudNCxatUq/OhHP5IOeH7605+2eq6SkhJ8/vnnePPNN9ET0lMzEGmOQqO1ATHRbe9Wm2JKhwoq+KQeC6TE2f4pg2fKHQYRkV9O7N+PssJCpH07cWV2uTCwvv0yU1IIlvZQT8/0i9IZMYsuLtu2bZNm9RcuXIj8/Hzp9r1790pJtpjpFwcH4iJKfOx2u5S4nyaScZHwnyYOHioqKtp8zaNHj0oz76cTfkHMuLdl1KhRLZ5TaO95T7vxxhuxe/durFu3Tjo7IEqTRLyn/e53v8O0adMwduxY/OpXv5IOEB566KE2n0uctRAHOGfX/J+PpIQkJMTFo6Gx/dOqOrUe8YakHnk96nlfH1iJ/MpcDi0RKZ7H7cbejRulv8+n23SOsVig6eDsNimAyKc6mNwk6lbSbzabpXIecZkwYYI0oy9myJ977jnpdjEDLhbHnj4wOH05duwYbrjhhjPPo9PpWjyvOCvQUT96f539vKfPNHT2vKImf+DAgVJt//vvvy+tH/joo4/avf+kSZNQVFQEh8PR4npR8iNKf26++eYWZwrOhziDMihnSIcdfIQUlvgoltfnxWvrnpU7DCKiTuUdPYrCEyeQ8O0kW4LdjuzGjv/+kALk5AAmk9xRUKj36ReJtUhMbbbmXvJiMezx48eRnJx85uDg9EUk190hSm7E4try8vIWLT17g0jcxeXchP5s4iBGlCeJRc1nE2cKxFmOO++8s0dj6pOZLR24dLSOIIWLeRXt/S1voMHG0+NEpFzib4yY5Rd/b4zfds8bW1Uld1jkD7bqpN5I+kUyXFZWJl1Em8uf/OQn0uz+kiVLzpTKiAWvomOPWMibm5sr1eKL+ncxO94donZf9NK/9dZbpT0BxOLgBx54oMVsfnecOnUKf//737Fz504UFBRg06ZNUptN0bN/0aJF0n2WL18unc04cOCAlNA/9dRTePDBB6V/d1sLeMVZgBE9XFeXlZ4lHWB0tEmX6OCjUu5ea2HPam/A+5tfD/txICLlKj51StqM6/Qsf2ZjI5K5+25wYD0/+aHLWeIXX3wh1cqLi0hwxYz7e++9h9mzZ0u3i8Wu69evR58+fXDFFVdg6NCh0sy3qJGPjo5Gd4jaQtGaUxxciJKiu+6660z3nrNbZ3aVeKw4MBEJvjgTce2110prEUTyL85UnC4XeuKJJzBlyhSpRekzzzyDf//73/jDH/7Q4rnq6urwwQcf9Pgsv5CZnoXY6FjUN9S1ex+DxohkY/MaBlKm59b8F3Zn+wduRERy2r9lCxx2O8xRUVD5fFItPwUBsWNyCvfroc6pfB3VjCiYmO0XffvF7Ls4CxDqnnr5cWzZuRmDcga3e5/9Ndux0/JNQOOirvn15X/BnfN+zGEjIkUpzc/HO489BqPZjOi4OAyqrcV4lvYEBzHpetVVckdBQSBo6kHEwlrRSlNsmiU25hKbaomOOuGQ8AsD+g1ssXlZW7LM/QMWD3XPs6sfhdXBRXFEpByihn/7l1/CZrUiKjYWOo8HI6qr5Q6L/MV6fgq1pL+hoUHaIEv02xc7+ooyn48//hjhQpT46HX6DhcYx+oTEKXt3mJpCozqxiq8tpadfIhIOXIPH8axvXuRlJ4urZMbXlMDYw9006MAEA1FBg7kUFNoJf233HKL1PZTrA0QC4LF7r2ndwEOB30yshETHYO6Dur6hUxzv4DFRN3zwpePs5MPESmCy+nE9jVr4PV4EBEVhRiHA4Nra+UOi/w1eDDw7a7JRCGT9Ic7c4QZffv0R119J0l/BJN+pattqsHLa5+WOwwiIhzdtQt5x44hOTNTWrw7qaIC322bSYrHrj3UBUz6g8iwQcPgdDo67NefGpEJrarlxmekPC999QTqmjibRkTyaWpsxLavvpJ23tUbjdIMf2IHJaSkMGKGf/RouaOgIMKkP8gW85qMJjTZmtq9j0alRXpEn4DGRV0nNup6Yc1jHDoikrVFZ1lBAZIyMhDldGIUF+8G3wJes1nuKCiIMOkPItmZfZGclILqmo57J2eyi09QePHrJ1FkKZA7DCIKQ7VVVdi5di0iY2Kg1WgwsaIC2uDs4B2+JkyQOwIKMkz6g4hWq8WYEWPR0NjQ4f0yI/oGLCbqPofLjgc/+F8OIREF3K5166TEPz4lBQPr65HCnXeDS0QE6/mpy5j0B5nBOUOgVqs77NkfoY1EgqF5R2FSttX7PsWGw1/JHQYRhZGSvDyptCcuKQmRHg/GcBOu4DN2LLv2UJcx6Q8yOX0HIC42DjW1HW+ckhnBjbqCxV/f/zVcno43XiMi6gkuhwMbP/1UWsQbHR+PiZWV0LGsJ/hMnCh3BBSEmPQHmajIKAwdOAzVdR0n/Vns1x80TpUfxytfs4UnEfW+vZs24cSBA0jLzkb/hgakN7XfGIIUSuxR1J8Te9R1TPqD0LDBI+Bxezps3ZlgSEGEhqv6g8XjXzyEiroyucMgohBWUVSELatWSYt3E9RqXMCynuBdwKtSyR0FBSEm/UFoYL+BiIqMRn0Hu/OKrdT7RQ0JaFzUfVZ7Ax76+I8cQiLqFW6XC998+inqa2qQlJSE6WVl0Hu9HO1gxNIe6iYm/UEoLSUdWRlZqK7puMQnJ2powGKi8/fx9nex7cRGDiUR9TixcPf4vn1SWc+EqirEOZ0c5WA0YACQzEYd1D1M+oOQmMUfM3xsh5t0CfGGJMTpEwMWF50fUa71m9d/giaHlUNJRD3GUlaGzStXwhgRgaEuF3IaOm77TAo2darcEVAQY9IfpAb0HwiD3gCb3dbh/TjbH1wKqnJZ5kNEPcbjdmPDp59KPfkHJCRgfGUlRzdYmUzAmDFyR0FBjEl/kOqX1R+JCUmo7qR1Z/+oIVCBC36CyRsbXsDmo+vlDoOIQsDB7dtxdNcuZGZkYEZ5OXfdDWbjxwN6vdxRUBBj0h+kDAYDRg0dhfr69hfznt6oK82UFbC4qIfKfN74MRps9RxOIuo2S3k5Nn/xBfRGI2aLvvwdbOpIQYClPXSemPQHsSEDh0FM4rvcHX+Qs8Qn+BRXF+LvHz4gdxhEFKQcdju++vBDVJeXY3pkJPpYuVYoqGVmAlmcwKPzw6Q/iA0dNAxJCcmosnRco9knciC0Kl3A4qKe8d7m17D24CoOJxF1+WyhmOE/vncvRqelYZzFwhEMdpzlpx7ApD+IRZojMX70hE7r+nVqHbIjBwQsLuo5D7z5M9Q11XJIichvh3fuxI6vv0a/xETMtVig4dgFN52uuZ6f6Dwx6Q9yo4ePgV6rZxefEFVeV4rfvPETucMgoiDadXf9J58gUq3GksZGGLkBV/CbMgWIiJA7CgoBTPqD3OCcIchIy0RFVXmH90sz9UGExhywuKjnrN67As+veYxDSkQdslmt+OqDD9BYUYGrVSpEut0csWCnVgNz58odBYUIJv1BTqfTYdIFk9HY2CDVcXa0oZdo30nB6eFP/szdeomoXV6vF9+sWIHcQ4dwXWQkErjjbmgQffkTuckm9Qwm/SFg1LDRMJuj0NDYcYvHnKhhAYuJepbb68bPXrwTlfUdn9EhovC0f8sW7P7mG1wRFYVMu13ucKinLFjAsaQew6Q/BGRn9kVOdg7KKys6vF+cIRHx+qSAxUU9SyT89754B9wenrInou+U5OVhw/LlmKnRYDAT/tAxeDDbdFKPYtIfAkTpzqRxk+F0OqRTvB0ZHDMqYHFRz9t+YhMeXv5nDi0RSWqrqrDm3XeRU1eHyazhDy2c5acexqQ/RIwYOgpxsfGdtu8UJT4GtTFgcVHPE4t6V+1dwaElCnNNDQ1Y+dZbMJ46hYvEgk8KHWIjriFch0c9i58SISIpIQkjhozsdKMurVqLQdEjAxYX9Y5fvfYjHC89wuElClNOhwNr3nsP6oMHcaVWyz/moWbePLkjoBDEpD+EXDB6PHzwweVydXi/IbGjoeJbH9Qa7Q343tPXwtLQ8UEeEYUej8eDdcuWwb19O67Qarn5VqgR3XrGjZM7CgpBTPpDyLBBw5GckIzKTmb7zdoo7tAbAoosBfjBMzfC4WKnDqJwIVozb165ErZ167BUo2HCH4rmzGnuz0/Uw/hbFUIizZEYP3oiauo6rusXhsWMDUhM1Lv25G3H/7z6ww73aCCi0LHnm2/Q8PnnWKxW8w94KIqMbN6Bl6gXMOkPMaNHjIFep0eTranD+yWb0pFoSA1YXNR7Pt+9DH//8AEOMVGIO7ZnDywffICLfT7+8Q5Vs2YBer3cUVCIYtIfYgbnDEFO34EoKSvu9L7DYjnbHype+vpJvPDl43KHQUS9pPDECZS+8Qbmud1QcZRDk0j2Z86UOwoKYUz6Q4xWq8XMKbPgdDrh7qRnc9/IgYjQmAMWG/Wufyz7PVbs+IDDTBRiik+dQtFzz2GWzcaEP5SJsh4z/yZT72HSH4IuGDUeaanpKKso7fB+apUGg2NGBywu6l2irv+Xr/8IXx9YyaEmChGFx4+j/OmnMcVqlTsU6k1i4S7bdFIvY9Ifogt6Z0yahZq62k4XeIodejUqTcBio97lcjvx4+dvxbqDqznUREGu8NAhOJ98EuOaOl6jRSFAtOiMj5c7CgpxTPpD1MSxExEfGw9LjaXD+xk1JvSPGhqwuKj3Od0O/Oi5m7Hh0JccbqIgVbBjBwzPPIOcTvZdoRCZ5b/4YrmjoDDApD9EpaWkY/zo8aioLO/0vmzfGZqJ/w+fuwnfHP5a7lCIqIuK1q1D/CuvINnj4diFSy1/KrvpUe9j0h/CpkyYBoPBgEZrQ4f3izMkIs2UFbC4KDDEpl0/fPZGbDyylkNOFCRKP/kEye+9h0juvREejEbgkkvkjoLCBJP+EG/fOWTAUJSUlXR639HxkwMSEwWW3WXDD565AZuPrufQEylc5SuvIHXVKrBLexiZPx+IjpY7CgoTTPpDmFqtxswps+HxeqQWnh1JNWUizdQnYLFRYBP/7z9zPRN/IoXyuVyo/c9/kLR9O1tyhpPYWGDuXLmjoDDCpD/EjR4+BlnpfVBa0fls/9h4bv0dqmzOJtz51NX4dOeHcodCRGfxVFai8c9/RuzJkxyXcLN4MXffpYBi0h/iTEYTZk2ZjYbGBni93g7vm2xKR0ZE34DFRoFv53nfy3fhpa+e5NATKYBr+3Z4//Y3RNXUyB0KBVpmJjBxIsedAopJfxgYP2YiEuOTUGmp7PS+nO0PbWLfhgc//C3+78PfdbqHAxH1Ercbjtdeg+6VV6DrZOd0ClGXX97cqpMogPgbFwYS4xMx5YKpqLJUdJroJRpTkWXuH7DYSB4vfPU47n/5bjjdHa/1IKKeZ339dRi2buXQhqthw4DBg+WOgsIQk/4wMXn8FJjNUaitr+30vmPjpwYkJpLXip0f4K4nr0aDrZ5vBVGAHN+3D++dOIFGnmkLT2J2X8zyE8mASX+Y6NenPyaMnoCS0uJOZ/vjDUnINg8MWGwkn83H1uOGRy5BWW3nC72JqPvEmqqd69bh01dfhaWxEVvT08ECuzA0eTKQliZ3FBSmmPSHCZVKhXkzFyAyMgo1dZ0vGhsTPxkqNo8LC0eKD+Dyf8zB1uMb5Q6FKCQ5bDas/egjfPn++9BotUjr2xflZjMOi5aNFD4MhuaOPUQyYdIfRvpn52Di2EkoLSvpdLZf7NLbN3JQwGIjeVU1VOC2x5aysw9RD6ssLsay55/H1tWrEZOQgITU1DO37U1IgEUkghQeuBEXyYxJf5jN9s+fuQBRkdGorq3u9P5j4qdwtj+MuL1uqbPPfS/dJfX1J6LuExMrB7dtw/tPP41Thw4hvV8/RJ0zs+9TqbAxJQUulYpDHepiYoB58+SOgsIck/4wk53ZF1PGT/Vrtj9GH4f+UUMCFhspZ4Hv1f9agPzKXLlDIQpKHrdbKuX57PXXYW9qQp9Bg6BrZ0a/Ua/HjqSkgMdIAcaNuEgBmPSH4Wz/3OnzEBsTC0t1Vaf3Hy3V9vPXJNwcLTmEK/45B18fWCl3KERBx9bUhKO7d0OlViMlK0v63O1IbnQ08iIjAxYfBVhGBjBpEoedZMdsLgz1yczG1AnTUVZR1ulsf7QuFoNjRgYsNlKOelsdvv/M9Xj4kz/D5XHJHQ5R0IiMjsbE+fPhdjpht1r9esy25GQ0arW9HhsFmDjgu+46bsRFisCkP0yJ2f642HhU+bVL71QY1KaAxEXKIg4Kn171H1z10HwcLz0sdzhEfrE7bfjnsj/A0tD551tvGTtjBoZecAHKCgrg9Xg6vb9brcbG1FR4AxIdBczs2UC/fhxwUgQm/WEqIy0T0yfOQHlleaez/QaNEeMSuGFXODtUtA+X/3MuXvzyiU5/X4jkdLBwH5b+cw6eW/Nf/Oq1H8n2+6rV6TDrssuQnJmJssJCvx5jMRqxPz6+12OjAElMBJYs4XCTYjDpD2Nzps9FQlwCKqoqOr3voOiRSDAkByQuUiaHy46/f/QAbnnsMpRU+5fEEAVy86tnVz+Kqx9egJNlR6Xr1h1ag5fXPi3bmxCbmIhZl14KtUqF+urOO6YJB+PiUGbimdWQKOu54QZAr5c7EqIzmPSHsbSUdMyYMguVVRXSH8yOiIVokxLnBCw2Uq4txzZg8d+n46Otb8sdCtGZDeaufvhCPPTxH+FyO1uMirjuUNF+2UZqwKhRGDd7NqorKuByODp/gEqFzSkpsKv55zmoTZ0KDOJeN6Qs/FQJc7OnzkViQhIqqso7vW+yKR05UcMCEhcpW4OtHr987Ye457lbUF5bKnc4FMa1+yKpFztK78vf2eZ9xEGAnHtPiAmTKRdeiP7Dh6MkL8+vciObVoutyTyzGrTEfgxLl8odBVErTPrDXEpSCmZPnYNKS1Wns/3C+ITp0Kl5upKardq7HBf9dZK0k6/b4+awUMBsPLIWlzw4TSrpERvLdeRU+TH89f3fQC4GkwlzLr8c0fHxqCwp8esxxZGROBYd3euxUS+4/nqAJVqkQEz6CbOmzkF6ShqKS4s6HQ2T1owxcZM5anSG1d4g7eS79B+zsOPkZo4M9arqRgv+59Uf4LbHL0dBlf8byL276VV8vvtjyCUlMxPTL7kETpsN1oYGvx6zOzERtawJDy4TJwLDh8sdBVGbmPQTEuMTsWjeYjQ01sPhR83p0NixiNWzwwS13tDrhkcuwS9f+5GsrRIpNImyGLGO5OK/TsKybe906zkeePNeWRehj5g0CSMmT0ZFUZG0a29nPKKNZ0oK3J1s7kUKERUFXHml3FEQtYtJP0lmTJ6FYYNGIK+w85kztUqNiVzUS+0mZm/hwj9PwOvrnvOrZIyoM1uPfYMrH5onrSOpabSc14Zz9798Nzzezvvm9waNRoOZS5Ygo18/lObn+1XfX2cwYHdCQkDio/N0zTWA2cxhJMVi0k8Sg8GAJRddCp1Wh9r62k5HJT2iD7LNAzh61G5y9af3foml/5yNdQdXc5SoW46XHsHdT12Lm/67BPsLdvfIKO48tRVPfP6QbO9IZEwMZi9dCr3BgNqqKr8eczw2FkVMJpVtzBhg7Fi5oyDqEJN+OmPk0NGYPH4qiooL/ZqBmpA4CxoVt42n9h0u2o+7nroG1/9nEev9yW8VdWX47Zv3Ysnfp2PtwVU9PnJPrvyXrL+PfYcMwaQFC6Te/Q6bza/HbElORpNG0+uxUTdERDTP8hMpHJN+atFabvGCJUhOTEZJeecdJiJ10RgVN4EjSJ0SCZZI/O968mppx1SitlgdjXj0079jwZ/GSwtve6sMRzzvz1/+Huqb6mR7I8bPno1Bo0ejLD/frzI4p0aDTSkpYMGcAl11FcBOSxQEmPRTqw27LpxzMWpra+B0tdzkpi3DY8cjRsdFveQfsUPq5f+cjZ++cDtOlR/nsJGkwVaHp1f+G/P+OA6Pf/5PNDmtvT4yJTVF+O1b98r2DugMBsy+/HIkpKaiotC/xcUVERE4HBfX67FRFwwb1tyxhygIMOmnVuZMm4dBOYORX5jX6eho1VpMT7kIKrC7BPlHlI59vnsZFv1tCn712j1S3TaFp6r6Cvzr4z9h5u9G4uHlfwl416cvdn8snVGQS0JKCmYsWQKvx4OG2s7XUgn74uNRZTD0emzkB6OxuSc/UZBQ+fwp3qaws2PPdjz+4n+RmpyCqMjON4jZafkG+2u2ByQ2Cr2yshlD5+KOuT/GtCGz5Q6HAqCwKh/Pf/lffLDlTThcdlnH3KSPwEe//Bo5qYNkeX3xJ/jL99/HtjVrkDlgALQ6XaePMbtcWFhYCD27Y8nr9tuBCy6QOQgi/zHppzaJGtOnX3kCG7aux/DBI6TErCMenwcrCt9EjdO/bhREbRmSMQJ3zL0Hi8dfCZ2m8+SHgsuxkkN4ZvUj+GznR53uohtIQzNH4r2fr4ZBJ88Mus1qxYfPPIPCEyeQNXBgp5+3Qt+GBkwtLw9IfNSGmTO5eJeCDpN+aldBUT7+8diDUGs0SE1O7XSkLI4KfFr4FrxcakbnKSUmDTfNvAvXz7gDMRGxHM8g5nQ7sXLPJ3hn4yvYevwbKNWts3+AB676u2yvX5Kbiw+efhri1HtiWppfj5lSXo5+fu7uSz0oOxu47z5Ay+51FFyY9FOHPvrsA7z7ydsYMmAotH58wO2p3oI91fK1wqPQEqE3Y9EFl+PqKTdhXP9JcodDXZBbfkJK9D/c9tZ5bagVSM/98B3MHn6hbK+/c906rH7nHSRlZMDkR19+rdcrlflEuVwBiY8AX0QEVL/+NRDPBhYUfJj0U4fqG+rxj8f+htKKUuT07XwzLq/Pi0+L3obFwdPO1LNyUgfjqsk34vJJ1yEhKonDq0AOl+PMrP62ExsRbOIjE7Hif79BUnSKLK/vcbvx2WuvYd+WLegzaJC0g29n4u12LCgqAjv49z5xFkb1wx8Cw4cH4NWIeh6TfurUlp2b8fTLTyA5KQUx0TGd3r/WacEnhW/A65Nnq3sKbaJj1LShc7B0wrWYP2oRjHqT3CEh3Nf/7Dy1BV/s+QTLt7+HGms1gtm0IXPw0j0f+FVX3xvqLBa8//TTqKmoQHq/fn49ZmhNDcZaguNsSlC78ELg0kvljoKo25j0k19/1F9663msWb8aQwcN82v2SXTyER19iHpTpDEKF45eIiX/04fOkTqxUGA+E7af2IQv9nyMVXtWoKK+LKSG/VdL/4y75v9Ettc/sX8/PnnxRZgiIxGTkND5A3w+zCkpQZqfu/tS13kHDID6pz8F1Ox0TsGLST/5xVJjwb+e/AfKK8v8KvMRbeg+K34HlfZSjjAFhFFnwpTBM6UDgLkjLkZidDJHvod3sRULcUVv+9V7P0VVQ0XIjq/oHPXuz1dhRJ8xsry++PzcsHw5vvnsM2m2X+9HX36j241FBQUwso1nj/OYzdD89rfcdZeCHpN+8tv23dvw5MuPISE+EXExne8KWe+swSeFr8PtU05rPgoPapUao7IvwPxRCzF35EIMTBsid0hBqbSmCJuOrsemo2vxzeGvUd0YPi15+yblYNmv18JsiJTl9R12Oz5+/nmcPHhQqu/3p9wo3WrF7FJOtPQkn0oF1b33AgM6n+wiUjom/dSl2adX330Zn3/1KYYOHOZXN59DtbuxrWotR5lklR6XiQkDpmJ8zhTpq1wbMSldrbUGm4+tx+aj67D56HrkVZ5EOLti0g34x81PyPb6lcXFeO+pp+C025GcmenXYy6orMTgurpejy1c+C69FCpRy08UApj0U5fU1tfiocf/D8VlRRjYf5BfBworSz5Ama2QI02KIbr/XNB/snQAMGHAFAzNGAl1GNbqip1xDxTuwb78nVKSf7hov9SBi77zn9uelzaLk8v+LVvw+euvIy45GebozndHV/t8uKiwEHFOZ0DiC2WeYcOgEd16ZFrUTdTTmPRTl+3evwuPv/AoYmPiEB/Xea/iJnej1M3H7mniaJNiFwSL+u1B6cMwOH2Y9HVQ2lBEGDrvlR4MxMF3fuUpHCzcKyX5hwr3Sd/XNdXKHZriRZmi8fGv1iMrMVu2RdOr3n5b6uEvduv15wxrtNOJiwsLofWJJpPUHZ6YmOY6/gg2B6DQwaSfupVAvPnh61i+6hMMGTgEOq2u08eUNhViVckH8EmdjomUT9RQZyZkY0j68DMHA32S+iMtLgPxkX50VJGpT36hJQ/5FSeRV3kKeRUncar8OA4X70eDrV7u8ILWmL4T8NZ9n0GrkWcH1sb6enzw1FMoLyxERk6OX/X9A+rqMLGyMiDxhRqvRgP1z38O9OkjdyhEPYpJP3V7066Hn/on8gpzMShnsF+P2VezDbsswbdhD1FbnYJE8i8uqbHNX09fxAZPYvGn2dh8EbsKn0/Pd7fHjbqmGqnevtZajdqmGtRZa6XrLA2VKK4uRHF1AYothahsKJcOyqnn/fCin+P+JQ/INrQFx47ho+eeg0anQ3yyf52pppeWoo/V2uuxhRrfNddANXOm3GEQ9Tgm/dRt+w/txX+ffwSRkVFIjE/s9P4iGfmq7BMUWk9x1CmsOgmJMiGzMUo6GIg0RkKv1UstML0+H7zSV6/0s0/66pU2tnO6Haix1sBqb5D7n0Dfvo+v/uRjTBo0Xbbx2LJ6Nb7+8EOk9ukDg6nzTel0Hg8WFRbC7GYHNX95J02C+uabz/OdIlImJv3UbSKJf/eTt7Hs8w+l2X69Tt/pYxweO1YUvokGN7tLEFFwSY1Nx/LffINYc+cti3uDy+nE8pdfxpGdO9Fn8GC/Fp8n2WyYV1yM8Fum3nWugQOh+/GPAT82oCQKRvwcoG4TJQuXzF8ite/MzTvlV1mBQWPE7LTF0Kj4oUpEwaWstgT/+4Z8O/Xq9HrMXroUienpUn2/PypNJhyMk+cgJZjYk5Kg+8EPmPBTSGPST+cl0hyJq5ZcA5MpAhVV5X49JsGQjElJcznyRBR0Vu/7FG9ueFG21xf1/DMvvRQ+rxcNtf51XzoQH49Ko7HXYwtW9ogIGO+/H/Bj52OiYMakn87bsEHDsfjCJbBUW9BobfTrMYOiR2Bg1HCOPhEFnb9/+ACOlx6W7fUHjxmDcTNnwlJWJpX8+LOr7MaUFDjDcC+Kzji0Wmh/9jMgKkruUIh6HT8BqEdcPGcRpk2cgbyCXLj9XDQmZvvj9Ul8B4goqNhdNtz30l1wuOyylVZOXbgQfQcPRmlenl+llU06HbYl8fP2bG6VCu477oA2Pb0X3y0i5WDSTz1Cp9PhustvwKD+g3Ai97hff4S0aq1U369X85QqEQWXoyWH8I+Pfi/b6xsjIjDniisQGR0NS2mpX48piIrCSc5oS8S+0zWLF8M8alTvvlFECsKkn3pMfGw8brzqFkRHxaC4tMivx0TrYjE95SK+C0QUdF5b/xy+3P+5bK+flp2NaYsWwWa1wtboX2nljqQk1Os631Ax1BWNG4eki/i3h8ILk37qUaJ151WLr0aTrQl19f4tMutjzsHI2Al8J4go6Pzm9R+jvNa/mfbeMGraNAyfMEHq5uPxeDq9v0etxsbUVHR+z9BV0K8fsm6/Xe4wiAKOST/1uFlT52DOtHkoKC6Ew+nw6zHjEqYhy9yf7wYRBZUaazX+59UfwOsVBSOBp9FoMPOyy5CanY2y/Hy/HlNjMGBvQgLCUXFSEjLuvfe8dskmClZM+qnnf6nUaqmN5+hho3HilH/1/eIDeGbKIqmdJxFRMNl8bD2eW/OobK8fHReHWZddBq1Wi9qqKr8ecyQ2FiUREQgn5ZGRSPzFL6DRauUOhUgWTPqp1/r333jlzUhNTpU6+vhDp9ZhXtpliNBG8l0hoqDyyIoHsTdvp2yv33/YMEyYN09K+p0OP86wqlTYkpwMW5jsPivObkT+/OcwmM1yh0IkGyb91Gv6ZGbj2qU3wOvzwlLt3+yTSPjnpy2FTqXnO0NEQcPtdeO+l+9Co71BltcXZ0snzp+PgSNHoiQ3168zrHatVkr8O79ncGvUaKC65x6Y2bKUwhyTfupVE8dOwsK5l6Csogw2u82vx8QbkjArdRFUYM0lEQWPwqo8/PGdX8j2+nqDAbMvvxxxSUmoKPKvg1qp2YyjMTEIVTaVCrZbb0Vsf64ZI2LST70++3TpRUsxYewknMw94Vd3CSHT3A+Tkubw3SGioPLx9nfx8bZ3ZHv9pPR0zFi8GG6nE4319X49Zk9iIqoNobdfShMAyzXXIGncOLlDIVIEJv3U6wwGA2644ib07dMPJ/NO+HXaWRgSMxojYsf3enxERD3pD+/+D/Ir/VvL1BuGTZggtfKsKi72a4d0r0qFjSkpcIVQRxuxa0HxpZcic8YMuUMhUgwm/RQQKUkpuPnqWxFljkJBsX9t5YQLEqYjJ2por8ZGRNSTrPYG3P/y3XB5XLJ1UJu+aBEyBwxAqZ/1/Q16PXaGSM27OL9xasECDFiwQO5QiBSFST8FzLBBw3H9FTfB4/agorLc7/KgackLkB6R3evxERH1lH35O/HIir/JNqDm6GjMufxyGM1m1FRU+PWYU9HRyI8M7u5ptT4fDk2bhhFLlrAXP9E5mPRTQE2dMA1LF12B6tpqv3fsVas0mJO6mD38iSioPLfmv9h0dJ1sr581YACmXHghGuvqYG8SFe6d25aUhMYg7WNf4/Nh17hxGH/VVdLZDiJqif9XUECJmftF8xZj/swLUVhShCabf3+IdGq91MozShu6XSaIKLSIspr/eeUHqG60yBbDuFmzMGTcOGm3Xn92DXZpNNiUkgJ59hfuPovPh81Dh2LaDTdAq9PJHQ6RIjHpJ1m2jb/msuswedxknMo7CZfLv7pXk9aMBelXIELDzVWIKDhU1Jfh16/fI9vriwRY7NabnJGB8oICvx5TZTLhQHw8gkWVz4e1ffti5s03w2AyyR0OkWIx6SdZmIwm3HLt7Rg2eASOnTzqdyvPaH0sLsq4CiZNeG0fT0TB6+sDK/Haumdle33Rt3/GkiXS9/U1NX495mBcHCqMRihdxbcJ/7zbb0dkCO83QNQTmPSTbOJi4nDnDXchO6svjp865ncrzxh9PC7KuBpGJv5EFCT+sewPOFp8ULbXHzRmDMbNnInq8nK4nM5O7+9TqaQyH4eCa+PLfD5syMnBgjvuQGxiotzhECmecv9vprCQnpqBO66/C4kJSTiVf9LvxD9WH4+LM65i4k9EQcHhsuNnL90Fu9O/ncl7Yz3V1IUL0X/oUL/beDbpdNiWnAwlKvF6sXHgQCy4/XbEJCTIHQ5RUGDST7Ib2H8Qbrv2dhj0RhSW+FdzKsTqE3BR+pUwaljDSUTKd6LsCB788Leyvb6od599+eWIiotDVUmJX48pjIzEiehoKEmh14utQ4bgottvR3RcnNzhEAUNJv2kCKOHj5V27XW73CirKPP7cXGGRFyUfhUMaib+RKR8b33zElbtXSHb66f26YNpixZJLTybGsW+tZ3bmZiIOoV0xCnwerFj2DAsuO021vATdRGTflKM6ZNm4MrFV0v9+y01lq4l/hlXwqBW/qIzIqLfvvFTlNYUyzYQI6dMwYhJk1BRWAiP293p/T1qNTampsKjUkFOR71e7B45EhfdeisiFXb2gSgYMOknxRA1pxfPXYRLFiyRduwVG3j5K96QhAuZ+BNREKhtqsEvXvm+X33ze6tt8sxLL0VadjbK/GzjWWswYLeMtfObPR4cHjsWF95yCyKiomSLgyiYMeknRRG7KF61+BpcMn8JyitKUdOFxD/BkCwl/nq1oVdjJCI6X9tObMRTq/4t20BGxcZi9tKlUh//2spKvx5zLDYWxRGBbZcsmjmv8HhQOWECLr7xRpjM3KeFqLuY9JPiiFmoqy+9FovmLUFpeSlq6vzrK30m8U9n4k9Eyvf4Z//A7lPbZHv9fsOGYeL8+airrobTbvfrMVtSUmDTaBAIdpUKb4nyo8mTcdH118MY4AMOolDDpJ8USavVSrv2Lpq/GKVlJajtQuKfaEzBhelXQMcZfyJSMLfXjftfuRsNtjrZYpg4dy4GjhqFkrw8v8qNHBoNNqekwL/myt1Xq9HgRZcLcdOm4cLrruNOu0Q9gEk/KTrxv/ay66U6/5KyYtTW1/r92ERjKi6W2nlyZoiIlKvIUoDfvX2/bK+vMxikMp+E5GRUFBX59ZiyiAgcjo3ttZiK9Hq84HCg34wZuPCaa6A3sGSTqCcw6SfFJ/7XLb0BF89ZhJLSIqmzj78SjCm4JPM6ROt6748TEdH5+nTnh/hgy5uyDWRiWhpmLFkidfJprPPvrMPehARYeiEZP2g04nWbDSNmz8b8q6+WDkqIqGcw6SfF0+l0uO7yG3HR7IUoLi1GXb3/p8KjdDFYlHkdEg2pvRojEdH5+Mt7v0JexUnZBnHo+PEYPW2atGmX2+Xq9P4+lQobU1Lg6qE2nqKwaL3BgBV2OybMm4d5V14JnV7fI89NRM2Y9FPQJP7XX3ETFsy6CEWlhahv8D/xFzv2XpxxFTIj+vVqjERE3WV1NOK+l+6C0+2UrWXy9EsuQZ9Bg1CSmwufr/Oq/Ua9HjuSks77tZ1qNT7SaLATwNwrrsCcK66QugoRUc9i0k9BlfiLXXsXzLwIhSVFqG+o9/uxWrUOc9MuxcDoEb0aIxFRdx0o3IN/f/IX2QYwIjJSqu8XffCry8v9ekxudDTyIiO7/ZqNWi1edbtRHhWFS26+GRPmzpVaNxNRz+P/WRRU9Ho9brzyZsyfsQCFxQVdSvzVKjWmJS/A6LhJvRojEVF3vfj1E9hw6EvZBjAzJwdTLroI1vp62K1Wvx6zLTlZSt67qlyvx/M2G7R9+mDpXXdh0Jgx3YiYiPzFpJ+CN/GfuQAFUuLftXZ3YxOmYmrSfKgg75byRETnEmU1v3ztR7A0+LdhVm8YO2MGhl5wgbRbr9cjtsfqmFutxsbUVKku31/HjUa8bLUiY8wYXH733Ujv2/e8YiaizjHpp6BkMBhw45W34EJR419SBEt1VZcePyhmJOamLYFW1fXZKSKi3lTVUIFfvfYjv+rqe4Oop5912WVIzsxEWWGhX4+xGI3YFx/f6f3cKhXWmUz4oKkJo2fNwpJbb0VMQkIPRE1EnWHST0Gd+N989a1YuvAKWGosKC0v6dLjs8w5uDDjKhjUxl6LkYioO9YdWoOX1z4t2+DFJiZi1qWXQq1Sob662q/HHIqLQ5nJ1O7tdTod3tJqscPlwswlS7Dgmmu4yy5RAKl8ck0lEPUQsYvkmvWr8N4n70BU7GRn9pU6UfirzlmD1SUfotHt//oAIqLeptPq8f4v1mBY5khZBlukB+s++QSbPv8cGf36+dUz3+R2Y2FBAYzn7O57KjISHzc2QhcVJXXoES1Cu/I5TUTnjzP9FPREpwfRyvOOG+6GXmfAidzjfm0nf1qMPk7axCvZmN6rcRIRdYXL7ZTaeNqcTbIMnEjKp1x4IfoPH46SvDy/yo1sWi22pqSc+Vn08f8mPh5v19YiOi0Nl915J4ZNmMCEn0gGTPopJEh/nMZPxQ9u+SHi4xJw9MQRePxYgHaaSWuWevkPjWH3CCJSjlPlx/DX938j2+sbTCbMufxyRMfHo7LEvxLKYrMZx2JiUKPX4+PERKwrK0P/oUOlDj1ZAwb0esxE1DaW91DIOZV/Ei+88RxyC05hYM4g6HVd29XxZMNhbKpYA4/P3WsxEhF1xX/vfBkLx14m26Dt3bQJK998E3EpKTBHRXV6f7XXi4baWlRVVmLklCmYe/nlUv9/IpIPk34KSWUVpXjhzedx4PA+5PQbAJOx/cVlbal2VOLr0uVocHetHSgRUW+INsVg+W82ID0+S5YBFmdOV771FnZv2IA+AwdC00FfflEGVFFcDLfTiUnz52PqwoXcYZdIAZj0U8iqqavBy2+/iK27tqBvVl9ERXZtlsnhsWN9+ecobsrrtRiJiPx1Qf9JeONnn0Kj1sgyaI11dXj/qaekhD6jf/826/JdTidKcnOlNpwzFy/G8EmTWL9PpBBM+imkNdma8MYHr2Htxq+QmpKG+NjO+0ifO2O1p3oz9tZs7bUYiYj89ZOFv8JPL/m1bAOWd+QIlj3/vNTJJy4pqcVtopzH8m39/twrr5T6/BORcjDpp5DndDrxwYr38PlXnyImOgapyWldfo5C60msL18Jl9fRKzESEflDzPK/fu9yjM+ZItuAbV65EmuXLUNqnz7SQl/RLa2iqAhetxvjZs2SynmMERGyxUdEbWPST2FB/FH64qvPsOyLj+ByOdE/O0dq9dkV9c4afFW2HLVOS6/FSUTUmfS4TCz/zTeIjoiRZbBcDgc+efFFHNu7F6l9+6IsPx/xSUmYedllGDJuHMt5iBSKST+Fld37d+HND19HcWkRBvQbKO3q2xUurwsbK1Yhr/FYr8VIRNSZi8dehsfufFm2gbKUl+MDUd9fVITBY8dizhVXIDGt62dRiShwmPRT2CkpK8Zr772CPQd3IzM9C7HRsV1+joO1u7Cz6ht44f9eAEREPelvNzyKa6beItugFhw7JvXuHzF5MgxGo2xxEJF/mPRTWLI2WfH+8nfx5YbVMJsjkZGa0eVT0qKt54byL1DjrOq1OImI2mPSR+CjX36NnNRBHCQi6hR35KWwZI4w4+arb8Vt194BkeofO3m0Szv4CvGGJCzOuh4jYi+ASnoWIqLAGZA6GFpN+/3yiYjOxpl+CnuHjh3EG++/Ku3km9NvYJc38hLKbEX4pnwlGt31YT+eRNS71Co1vr/gZ/jJJb+GTqPjcBORX5j0EwGoqKqQ+vlv371V6uefEJfQ5XFxeZ3YWrkWJxoOckyJqFdkxGfhoVuexoQBUznCRNQlTPqJvmV32PHxFx/hiy8/g06vQ5+M7G61nstvPIHNlWtg99g4tkTUY5aMvwp/uvZfiDLJ06qTiIIbk36ic3bg3bjtG7z3yduw1FgwoP9A6LRdP31uc1uxqWINCptOcXyJ6LzEmRPwu6v/T0r6iYi6i0k/URtO5p2Q2noeOXEEmemZiIuJ69Y4Havbj21V6+D2uTjORNRlScjAr6/4Ky6du5SjR0TnhUk/UTvq6uvwyRcf4auNX0plPn2z+kGj0XR5vBpctdhQvhIV9hKONRH5JUoXgylJ8+GocsNsMuN3P/8TEuMTOXpE1G1s2UnUjpjoGNx09a344W0/RlJCMg4fO4SGxoYuj1eULhYLM67BxMRZ0Kn1HG8iapcKaoyMnYBLM2+GxqpHk60JWZnZiDBFcNSI6Lxwpp/ID5WWSmkzr807NkotPbMy+nRrkW+TuxE7qjbgVOMRjjsRtZBoSMXU5PmI0sTiVO5JREREYNH8xbho9kIYDAaOFhGdFyb9RH4Sm3dt2Loeyz77QGrx2S+7f7dn30qbCrGl8ivUuao5/kRhTqfSY1zCVAyJGYO6+loUlhRhyIAhuHbp9Rg6cJjc4RFRiGDST9RFRSWFePfjt7Fz33bExsQjLSWtW7P+Xp8HB2t3YW/1Vi70JQpTWeb+mJw0Fya1GXmFufB6vJgzbS6WLroS0VHRcodHRCGEST9RNzidTqxZvworVi+XZuZy+g2AQd+90+9WVwO2Va1FvvUE3wuiMGHSmDEpaQ76Rg5EbX0tiooLpU5hVy6+BpPGTe7WRAIRUUeY9BOdhxO5x/HOx2/jwJF9SElKRVJCUrefq9iahy1VX0vdfogoNImFuoNjRmJc/DSofGrkFeRCrVJj+qQZWHLR0vP6DCEi6giTfqLzJLprfLp6OVatWwmn04G+ffpBr+telx6Pz439NTuwv2YbPD4P3xuiECvluSBhBmJ0cVJzgIqqcgzqN0gq5RkzYixn94moVzHpp/9v7z7cm7zSNA4/llWtYrl3bDoONZQUQhgmmWw2M9nd2fk/d6/Z2Ws3QzKTEDZDINQANsbEBlfcrWbJKpb3OsclhAkTMHL7/LsT5VMhsizZyXPO9573oEQ7+d5/cFf/+b//oYc/9KgquvZafyOZj+va5FcaTj/m8wG2uVpfg07XnldjoFWZ+YweD/QrHArrN+f/SR//+hN7HQDWG6EfKPGs/5ff/EUXv/xM07NT2tXarnBo7YvxRtMDujn9N01nx/mcgG0m5I7oZM057Q4dsLdHng4rkUzo+OET+v0nf9CBvQc3+yUC2EEI/cA6MP9z/9PF/9K1W1dlJvvbWzvk8XjW/HwDqUe6NX2FFp/ANuBz+XWs+m0dqjyu8rJyu6nf4PAT1dXW69OP/lXn37lA330AG47QD6yTYrGoW3dv6k8X/6hHj3tVW11rF/uuteTHlBD1Jbt1Z+aqUoVEyV8vgNfjKitXZ+UJHat6S75yv93bY2D4ifL5vN45dVa//+Tf1dzYwtsMYFMQ+oF1lppL6a+Xv9Dnl/6s2fis2ts6FAqG1vx8ZoFvb/ye7s5eU2YhXdLXCmBt9oQO6WTNewp5lsr5ZmZnNDI2oo7Wdv3bJ3/QW2++rfLyct5eAJuG0A9sEDPjZ0p+rt++JrfbbUt+zHGtCsW8uuO3dX/2hnLFbElfK4CX0xho0+ma91Xrb7C35+ZSGhwZVMAf0Pl3L+h3H/2LqqPVvJ0ANh2hH9hA5nT/9Tvf6b8v/lH9A/2qr623db6vsxFPdmFeXbGb6o7dZmdfYIO0VHToWNUZNQRal34Ps1kNjgxocVG2/eY/f/CJDu3rpA0ngC2D0A9sAtPB44uvL+ovl7+wO/q2tbQpEq58refMFNK25Odh4p6K9PgHSq5MZeoIHdDRqjOq9i1tolUoFDQ8OqTMfFoH9h7Sbz/8VG8ePUkpD4Ath9APbKL+gT599tf/sQt+s7ms2lp2vVa9vzFXSOlB7LZ6E/co+wFKtEB3X/gNHak6rYgnurpQf2ziqWZiM2pvadfHH/xWZ0+/R1ceAFsWoR/YZKYrT3dvl+3tf7f7exUXizb8VwQqXut588WcHiXu27Ifuv0Ar85T5tWByqM6HD2pCndo9fd1enZaY+NPVV9Xrw/f/0gXzn6gSHjt+3EAwEYg9ANbqN7fhP6Llz5T98MuWx7Q2twmv8//Ws9rBhGDcz+oa/aWJrNPS/Z6AafyuQJ6I/qm7bNvWm+uSCTjGhodUiQU0bm3z+ujX32shrqlBbwAsNUR+oEtxtQI37x7Qxe/+ky9fQ9tuYAJ/16P97WfeyIzahf9Ds71aVGLJXm9gFME3WEdjp7SgcgRuV0/bqaXmc9ocGhAbo9bp4+/ZRfp7mnfu6mvFQBeFaEf2KJMN5Dvbl/T55c+U99An0IVIbU0tb5Wm88VyXzMlv08SnTR8Qc7Xp2vSQcrj2lP+KCt31+RzqTt7trmLNzhQ0f0uw8/1ZHOY3TkAbAtEfqBLc4Ej6s3rujipT/bloDRSFRNDc0l6Q5i2n2aBb8PYneUXkiV5PUC24HX5dOecKcORo6qylf7k8dSc0kNjw7L5XLZjjwfvv8bnTp2Wh7Pj7P/ALDdEPqBbSKZSuqba5f1xeXP9XRsVNHKqBrrm0oy829afD5JPVJv4r7GMkMleb3AVlTvb9KByFF1hA7K7frxd8cs0I0n4/Z3y+v16sjBo/r1uQ91tPNYSX7HAGCzEfqBbWY2Pqv/u/q1Ll/92gYUv9+v5saW117w+2zpjyn7+SHRzew/HDOrvzfcacP+87P6JuybtpumG08wGNKJwyd04b0P1Ln/DTvTDwBOQegHtvHM/43vr+vrK1/Zfv9Gc2OzwqHStA40XX9G0k/sAGBorl+LKpbkeYGNndU/ZjfUenZWf6XP/uT0pCanJuxZszMn3tL5dy9ob8c+avYBOBKhH9jmcrmcbfX59beX1P3wvjLZjBrrGlVdVVOy8GJ2+32c6lFf8oGmsxMleU5go2f1DbMod3xyTNOzM6qtrtV7Z87p3Nvv270xAMDJCP2AQ5iZy97+h7ry3Te6fue6YvFZVVdVq6GusSSLflfEctM2/PcnezRXSJbseYHXCfptwT3qCO1Xc0W7ysv+vgY/l89pfGLM1u2b34lfvXtBZ8+co88+gB2D0A840OjYiL69ccUu/B2bHFeoIqimxmb5vL6SfQ1TCz2WGVZ/qkeDqT5li5mSPTfwS3wuv9qCe23Qb6rYpfJnWm0++zMaS8Q0MTlur5u1Lybsv3P6rKqj1bzJAHYUQj/gYCbw3Lj9nb7625caGHmicle5Gusbbd1/qUp/Vur/J+dHNTjXr6G5PiXysZI9N/Bs0N8V2qeOoAn6bT/pqf98yZsp4TE76IZDlTp88LAN+qYTT8Af4A0FsCMR+oEdYD47rzv3b+vyt5f0qL9XqbmUotEq1dfWl2Sn3+fFcjM2/JvL5PwYu/9izfzlFdq1PKPfGDBB/+c76thZ/fisxifH7W0zq2/Kd04ePWl3tC7lIBcAtiNCP7DD6v6fDD3W7Xu3dPXmFY1NjNn762sbVBWtWpdgZBYBD6f7NTjXp9H0oBYWCyX/GnCWoDuituButQf3qyHQ8sKg/+ysvqnVrwxX6vCho3rn5Ls60nmUWX0AeAahH9jBO/3e77mna7euqqvnvi0FCgdDdva/oiK4Ll+zUCxoNDOgoVSfhtKPNb+QXpevg+3F5wqoqaJVTYFdtj4/4on+wz///Kx+i5nVf8vM6p9SS1Mrs/oA8DMI/cAOZwLU0/FRfd91R1dvXNHg6KCy2awt/6mrqVuX8p+VrzudHdd4ZkTj8yP2mC3Or8vXwtbiLvPYGfylkN+mam/dLwZ18/OSmktqanpKc+k5VUaWZvXfPXVWhw8dYVYfAH4BoR/AqkKhoEePe23f/+t3vrMtDk3Yqq2ps91OStn682dnb3PTqwMAc0wXUnw6DuCSS7X+RhvymyvaVOdveuEi3Od/JswmdFMzk8pkMgpWBG0//dPHz+j44RO2bp9afQB4OYR+AC8s/+l+2KVb927qXvf3mo3PmP9k2Nr/6miNvN71OQPwrGQ+rvHMsMbnR+2RrkDbg6fMq2pf3XLQb7Oz+h7Xy/28mKCfSCY0NTOl+fmMgsGQ2lvbbdA/tL9Tu1ra5XK9uMYfAPDzCP0AftH07LR6+x7qQW+X7j24a28XFgqKhCKqqapRIFCxITOu6cKcJpbPBExlxxXLTiu/mOMT3EQel081vjrV+BpU46u3l4jn1RaFLwX9+HLQn1coFFZHa4dOHT9tg35b8y6CPgC8JkI/gFdi6qn7njxSz6Me3b5/y3ZOMUEtEAjYAUAkXLlhJRe2zruQ0GxuSrPZKXuM5aYUz8W0qOKGvIad1ie/ejnYL10aFPas7fM2n108EbNB36whCZug37Zbp0+c0aF9nbTZBIASI/QDWLN8Pm9bgJqzAGYAMDQyaGuwPR6PqqtqVFVZta7rAF7EtAWN52Z/Mhgwx/QCawRehrvMrbCnynbRqfRWrQZ9E/DXyoR8UzJmuu6Y8h1z2wT93bv26NSxpRl9Ou8AwPoh9AMoCRPiRsdG1Nu/tBDYbAIWi89ocVE23JluK6FgeFPLNLIL83YAYNYKpAtJpQpJzRWS9vpcPrWjSoXMrH3IE1HIHbFh3pTkhD1RRbxVCrpDJdsULhaP2Rl9Uw5W4a9QdVW13jhwRPt279ee9j1qamhmMS4AbABCP4B1MRObscG/94ce9fzwwJZxmJ2AjWAwaMuAzJqAzTgT8CK5hawdBPz9JbU6OFhYXNBW7pLjLffbQO8zx+Xr/vKA3fBqJeSb48surH3VMz9mvwcT9HO5rF3sXRWt1sG9h3Rw70G1t3XY+nxzJggAsLEI/QDW3cLCgq39HxwZ1MDQE3X3dmliakLJlCnzKCrgr1AkUqlIOCKPe2sHwnwxr3wx95NLYTGn3Mr15cfN7YK5b9Hcv3Rf0Q4YyuQqKzP/XL1ujqYufvWv5cftI2XmWKbysnIb4r0rgX412AdWr69HkP+H70U+b8u5YolZu67DDOCikah2t+9V5/5OdezarfbWDnroA8AWQOgHsCmlQJPTk3YNwODwgLofdenp2KjiybgdIPh8flsOZMqCfF4f5R9bQC6fUyqVUiqdVDqdVrFYtCE/HAyrpblNRw4d0e623Wpv220HbwCArYXQD2DT2Y25EjENjQxocHhQD/t67BkBM4tswuaiFm34N5szVQSC9uh2uzf7ZTtWNpe1pVhmB1wT8M3nY95vsybDdGja17HPdtdpqG+0NflmwTabZAHA1kboB7AlmcA/NvHUlgFNTI1rcGRAQyNDNoiatqFmptnUvwT8AQUrQnYgYK6zcdPLM++h2QArPZ/R3FzKvq9mgOV1exUKhlRTXav9ew6opbFFjQ1NaqxvsuU7BHwA2H4I/QC2jUKhYDcGm5wat4MBs07g8eBjezTtIDPzZlZaNvhXBCrk9frk8/nsWQJz2UqLhjeKKZfKZueVMZf5jA35ZibfrBOwgyZfwG6uVldTp70d+2zbzMb6RhvwKzdwzwUAwPoi9APY9kyYnbRnBCY0OT2hkbERjT4d1mwiZjd+Mp1kTPtIU6ZiIuximeT1eFcHA2ZgYAcIXt+2OVNgvhczCMoX8ioU8soXCjbcm+/TfM/mccOEdr/PL78/YNdImHKc5oZmW6ZjOutUR6vt0czsE/ABwLkI/QAcy4TiRCphuwQlEnElUkklknG7YNgMEKZnpmwP+Wwup2xuXrlcbmlgsDy5bXJzmatM7nK3XK5yucvL7dmCpYt79bq5f+lx8+dctkTGhm7794/HlSC+9Jh9ZPVo7jOdjEx4N6/bBPmlUL903ZYzPcP8W6bTkbmYentzXJmxb6xrtJujmbao0UilKiNRRSurbOgn2APAzkToB7CjmaBvBgZmMGAGB/FkQplM2pbAmEXEmXRac8ulQ7aEKJPRfDZjA7kpnSksLGihuKAFc7u4YMP5SrBeab+5VEnz43H1cfuYfcQeTftO93KIN+sTzOy7CeqRUKVCoZDd3Mrcb2btl45+ezQtT1f+PKEeAPBzCP0A8IrMrLzpUW8GBXZwsDxAMGU1ZudZM9u/2nffhPmV28sXV9lzt1cfdy2H+AAbWAEASorQDwAAADjc9lixBgAAAGDNCP0AAACAwxH6AQAAAIcj9AMAAAAOR+gHAAAAHI7QDwAAADgcoR8AAABwOEI/AAAA4HCEfgAAAMDhCP0AAACAwxH6AQAAAIcj9AMAAAAOR+gHAAAAHI7QDwAAADgcoR8AAABwOEI/AAAA4HCEfgAAAMDhCP0AAACAwxH6AQAAAIcj9AMAAAAOR+gHAAAAHI7QDwAAADgcoR8AAABwOEI/AAAA4HCEfgAAAMDhCP0AAACAwxH6AQAAAIcj9AMAAAAOR+gHAAAAHI7QDwAAADgcoR8AAABwOEI/AAAA4HCEfgAAAMDhCP0AAACAwxH6AQAAAIcj9AMAAAAOR+gHAAAAHI7QDwAAADgcoR8AAABwOEI/AAAA4HCEfgAAAMDhCP0AAACAwxH6AQAAAIcj9AMAAAAOR+gHAAAAHI7QDwAAADgcoR8AAABwOEI/AAAA4HCEfgAAAMDhCP0AAACAwxH6AQAAAIcj9AMAAAAOR+gHAAAAHI7QDwAAADgcoR8AAABwOEI/AAAA4HCEfgAAAMDhCP0AAACAnO3/AYOuyGE5hxLcAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "labels_counts = df['diagnosis'].value_counts()\n",
    "\n",
    "labels = [\n",
    "    f'Benign {labels_counts[0]}',\n",
    "    f'Malignant {labels_counts[1]}'\n",
    "]\n",
    "\n",
    "colors = ['#246B10', \"#FF6B6B\"]\n",
    "\n",
    "plt.figure(1, (8,8))\n",
    "plt.pie(labels_counts,\n",
    "         labels=labels,\n",
    "         colors=colors,\n",
    "         startangle=80,\n",
    "         explode=[0.08, 0.08],\n",
    "         wedgeprops={'width': 0.4},\n",
    "         shadow=True,\n",
    "         autopct='%1.1f%%',\n",
    "         pctdistance=0.8\n",
    "         )\n",
    "\n",
    "plt.title('diagnosis')  \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "8e652738",
   "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>radius_mean</th>\n",
       "      <th>texture_mean</th>\n",
       "      <th>perimeter_mean</th>\n",
       "      <th>area_mean</th>\n",
       "      <th>smoothness_mean</th>\n",
       "      <th>compactness_mean</th>\n",
       "      <th>concavity_mean</th>\n",
       "      <th>concave points_mean</th>\n",
       "      <th>symmetry_mean</th>\n",
       "      <th>fractal_dimension_mean</th>\n",
       "      <th>...</th>\n",
       "      <th>radius_worst</th>\n",
       "      <th>texture_worst</th>\n",
       "      <th>perimeter_worst</th>\n",
       "      <th>area_worst</th>\n",
       "      <th>smoothness_worst</th>\n",
       "      <th>compactness_worst</th>\n",
       "      <th>concavity_worst</th>\n",
       "      <th>concave points_worst</th>\n",
       "      <th>symmetry_worst</th>\n",
       "      <th>fractal_dimension_worst</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>0.2419</td>\n",
       "      <td>0.07871</td>\n",
       "      <td>...</td>\n",
       "      <td>25.38</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>0.1812</td>\n",
       "      <td>0.05667</td>\n",
       "      <td>...</td>\n",
       "      <td>24.99</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>0.2069</td>\n",
       "      <td>0.05999</td>\n",
       "      <td>...</td>\n",
       "      <td>23.57</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>0.2597</td>\n",
       "      <td>0.09744</td>\n",
       "      <td>...</td>\n",
       "      <td>14.91</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>0.1809</td>\n",
       "      <td>0.05883</td>\n",
       "      <td>...</td>\n",
       "      <td>22.54</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   radius_mean  texture_mean  perimeter_mean  area_mean  smoothness_mean  \\\n",
       "0        17.99         10.38          122.80     1001.0          0.11840   \n",
       "1        20.57         17.77          132.90     1326.0          0.08474   \n",
       "2        19.69         21.25          130.00     1203.0          0.10960   \n",
       "3        11.42         20.38           77.58      386.1          0.14250   \n",
       "4        20.29         14.34          135.10     1297.0          0.10030   \n",
       "\n",
       "   compactness_mean  concavity_mean  concave points_mean  symmetry_mean  \\\n",
       "0           0.27760          0.3001              0.14710         0.2419   \n",
       "1           0.07864          0.0869              0.07017         0.1812   \n",
       "2           0.15990          0.1974              0.12790         0.2069   \n",
       "3           0.28390          0.2414              0.10520         0.2597   \n",
       "4           0.13280          0.1980              0.10430         0.1809   \n",
       "\n",
       "   fractal_dimension_mean  ...  radius_worst  texture_worst  perimeter_worst  \\\n",
       "0                 0.07871  ...         25.38          17.33           184.60   \n",
       "1                 0.05667  ...         24.99          23.41           158.80   \n",
       "2                 0.05999  ...         23.57          25.53           152.50   \n",
       "3                 0.09744  ...         14.91          26.50            98.87   \n",
       "4                 0.05883  ...         22.54          16.67           152.20   \n",
       "\n",
       "   area_worst  smoothness_worst  compactness_worst  concavity_worst  \\\n",
       "0      2019.0            0.1622             0.6656           0.7119   \n",
       "1      1956.0            0.1238             0.1866           0.2416   \n",
       "2      1709.0            0.1444             0.4245           0.4504   \n",
       "3       567.7            0.2098             0.8663           0.6869   \n",
       "4      1575.0            0.1374             0.2050           0.4000   \n",
       "\n",
       "   concave points_worst  symmetry_worst  fractal_dimension_worst  \n",
       "0                0.2654          0.4601                  0.11890  \n",
       "1                0.1860          0.2750                  0.08902  \n",
       "2                0.2430          0.3613                  0.08758  \n",
       "3                0.2575          0.6638                  0.17300  \n",
       "4                0.1625          0.2364                  0.07678  \n",
       "\n",
       "[5 rows x 30 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_df = df.drop('diagnosis', axis=1)\n",
    "\n",
    "X_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "62a92faf",
   "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>diagnosis</th>\n",
       "      <th>radius_mean</th>\n",
       "      <th>texture_mean</th>\n",
       "      <th>perimeter_mean</th>\n",
       "      <th>area_mean</th>\n",
       "      <th>smoothness_mean</th>\n",
       "      <th>compactness_mean</th>\n",
       "      <th>concavity_mean</th>\n",
       "      <th>concave points_mean</th>\n",
       "      <th>symmetry_mean</th>\n",
       "      <th>...</th>\n",
       "      <th>radius_worst</th>\n",
       "      <th>texture_worst</th>\n",
       "      <th>perimeter_worst</th>\n",
       "      <th>area_worst</th>\n",
       "      <th>smoothness_worst</th>\n",
       "      <th>compactness_worst</th>\n",
       "      <th>concavity_worst</th>\n",
       "      <th>concave points_worst</th>\n",
       "      <th>symmetry_worst</th>\n",
       "      <th>fractal_dimension_worst</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>17.99</td>\n",
       "      <td>10.38</td>\n",
       "      <td>122.80</td>\n",
       "      <td>1001.0</td>\n",
       "      <td>0.11840</td>\n",
       "      <td>0.27760</td>\n",
       "      <td>0.3001</td>\n",
       "      <td>0.14710</td>\n",
       "      <td>0.2419</td>\n",
       "      <td>...</td>\n",
       "      <td>25.38</td>\n",
       "      <td>17.33</td>\n",
       "      <td>184.60</td>\n",
       "      <td>2019.0</td>\n",
       "      <td>0.1622</td>\n",
       "      <td>0.6656</td>\n",
       "      <td>0.7119</td>\n",
       "      <td>0.2654</td>\n",
       "      <td>0.4601</td>\n",
       "      <td>0.11890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>20.57</td>\n",
       "      <td>17.77</td>\n",
       "      <td>132.90</td>\n",
       "      <td>1326.0</td>\n",
       "      <td>0.08474</td>\n",
       "      <td>0.07864</td>\n",
       "      <td>0.0869</td>\n",
       "      <td>0.07017</td>\n",
       "      <td>0.1812</td>\n",
       "      <td>...</td>\n",
       "      <td>24.99</td>\n",
       "      <td>23.41</td>\n",
       "      <td>158.80</td>\n",
       "      <td>1956.0</td>\n",
       "      <td>0.1238</td>\n",
       "      <td>0.1866</td>\n",
       "      <td>0.2416</td>\n",
       "      <td>0.1860</td>\n",
       "      <td>0.2750</td>\n",
       "      <td>0.08902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>19.69</td>\n",
       "      <td>21.25</td>\n",
       "      <td>130.00</td>\n",
       "      <td>1203.0</td>\n",
       "      <td>0.10960</td>\n",
       "      <td>0.15990</td>\n",
       "      <td>0.1974</td>\n",
       "      <td>0.12790</td>\n",
       "      <td>0.2069</td>\n",
       "      <td>...</td>\n",
       "      <td>23.57</td>\n",
       "      <td>25.53</td>\n",
       "      <td>152.50</td>\n",
       "      <td>1709.0</td>\n",
       "      <td>0.1444</td>\n",
       "      <td>0.4245</td>\n",
       "      <td>0.4504</td>\n",
       "      <td>0.2430</td>\n",
       "      <td>0.3613</td>\n",
       "      <td>0.08758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>11.42</td>\n",
       "      <td>20.38</td>\n",
       "      <td>77.58</td>\n",
       "      <td>386.1</td>\n",
       "      <td>0.14250</td>\n",
       "      <td>0.28390</td>\n",
       "      <td>0.2414</td>\n",
       "      <td>0.10520</td>\n",
       "      <td>0.2597</td>\n",
       "      <td>...</td>\n",
       "      <td>14.91</td>\n",
       "      <td>26.50</td>\n",
       "      <td>98.87</td>\n",
       "      <td>567.7</td>\n",
       "      <td>0.2098</td>\n",
       "      <td>0.8663</td>\n",
       "      <td>0.6869</td>\n",
       "      <td>0.2575</td>\n",
       "      <td>0.6638</td>\n",
       "      <td>0.17300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>20.29</td>\n",
       "      <td>14.34</td>\n",
       "      <td>135.10</td>\n",
       "      <td>1297.0</td>\n",
       "      <td>0.10030</td>\n",
       "      <td>0.13280</td>\n",
       "      <td>0.1980</td>\n",
       "      <td>0.10430</td>\n",
       "      <td>0.1809</td>\n",
       "      <td>...</td>\n",
       "      <td>22.54</td>\n",
       "      <td>16.67</td>\n",
       "      <td>152.20</td>\n",
       "      <td>1575.0</td>\n",
       "      <td>0.1374</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.4000</td>\n",
       "      <td>0.1625</td>\n",
       "      <td>0.2364</td>\n",
       "      <td>0.07678</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   diagnosis  radius_mean  texture_mean  perimeter_mean  area_mean  \\\n",
       "0          1        17.99         10.38          122.80     1001.0   \n",
       "1          1        20.57         17.77          132.90     1326.0   \n",
       "2          1        19.69         21.25          130.00     1203.0   \n",
       "3          1        11.42         20.38           77.58      386.1   \n",
       "4          1        20.29         14.34          135.10     1297.0   \n",
       "\n",
       "   smoothness_mean  compactness_mean  concavity_mean  concave points_mean  \\\n",
       "0          0.11840           0.27760          0.3001              0.14710   \n",
       "1          0.08474           0.07864          0.0869              0.07017   \n",
       "2          0.10960           0.15990          0.1974              0.12790   \n",
       "3          0.14250           0.28390          0.2414              0.10520   \n",
       "4          0.10030           0.13280          0.1980              0.10430   \n",
       "\n",
       "   symmetry_mean  ...  radius_worst  texture_worst  perimeter_worst  \\\n",
       "0         0.2419  ...         25.38          17.33           184.60   \n",
       "1         0.1812  ...         24.99          23.41           158.80   \n",
       "2         0.2069  ...         23.57          25.53           152.50   \n",
       "3         0.2597  ...         14.91          26.50            98.87   \n",
       "4         0.1809  ...         22.54          16.67           152.20   \n",
       "\n",
       "   area_worst  smoothness_worst  compactness_worst  concavity_worst  \\\n",
       "0      2019.0            0.1622             0.6656           0.7119   \n",
       "1      1956.0            0.1238             0.1866           0.2416   \n",
       "2      1709.0            0.1444             0.4245           0.4504   \n",
       "3       567.7            0.2098             0.8663           0.6869   \n",
       "4      1575.0            0.1374             0.2050           0.4000   \n",
       "\n",
       "   concave points_worst  symmetry_worst  fractal_dimension_worst  \n",
       "0                0.2654          0.4601                  0.11890  \n",
       "1                0.1860          0.2750                  0.08902  \n",
       "2                0.2430          0.3613                  0.08758  \n",
       "3                0.2575          0.6638                  0.17300  \n",
       "4                0.1625          0.2364                  0.07678  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = df['diagnosis']\n",
    "\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "96f51ea3",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "a = np.array([0, 10, 20, 30, 40 ,50 , 100, 80])\n",
    "a2 = (a - np.min(a)) / (np.max(a) - np.min(a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "a54f81aa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "diagnosis                  0\n",
       "radius_mean                0\n",
       "texture_mean               0\n",
       "perimeter_mean             0\n",
       "area_mean                  0\n",
       "smoothness_mean            0\n",
       "compactness_mean           0\n",
       "concavity_mean             0\n",
       "concave points_mean        0\n",
       "symmetry_mean              0\n",
       "fractal_dimension_mean     0\n",
       "radius_se                  0\n",
       "texture_se                 0\n",
       "perimeter_se               0\n",
       "area_se                    0\n",
       "smoothness_se              0\n",
       "compactness_se             0\n",
       "concavity_se               0\n",
       "concave points_se          0\n",
       "symmetry_se                0\n",
       "fractal_dimension_se       0\n",
       "radius_worst               0\n",
       "texture_worst              0\n",
       "perimeter_worst            0\n",
       "area_worst                 0\n",
       "smoothness_worst           0\n",
       "compactness_worst          0\n",
       "concavity_worst            0\n",
       "concave points_worst       0\n",
       "symmetry_worst             0\n",
       "fractal_dimension_worst    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isna().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "284921c9",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = (X_df - np.min(X_df)) / (np.max(X_df) - np.min(X_df))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "f55d4f64",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split \n",
    "\n",
    "x_train, x_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "a434e4c0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "}\n",
       "\n",
       "#sk-container-id-1.light {\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: black;\n",
       "  --sklearn-color-background: white;\n",
       "  --sklearn-color-border-box: black;\n",
       "  --sklearn-color-icon: #696969;\n",
       "}\n",
       "\n",
       "#sk-container-id-1.dark {\n",
       "  --sklearn-color-text-on-default-background: white;\n",
       "  --sklearn-color-background: #111;\n",
       "  --sklearn-color-border-box: white;\n",
       "  --sklearn-color-icon: #878787;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: center;\n",
       "  justify-content: center;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  display: none;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  overflow: visible;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-3) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  border: var(--sklearn-color-fitted-level-0) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-0);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  border: var(--sklearn-color-fitted-level-0) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-0);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".estimator-table {\n",
       "    font-family: monospace;\n",
       "}\n",
       "\n",
       ".estimator-table summary {\n",
       "    padding: .5rem;\n",
       "    cursor: pointer;\n",
       "}\n",
       "\n",
       ".estimator-table summary::marker {\n",
       "    font-size: 0.7rem;\n",
       "}\n",
       "\n",
       ".estimator-table details[open] {\n",
       "    padding-left: 0.1rem;\n",
       "    padding-right: 0.1rem;\n",
       "    padding-bottom: 0.3rem;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table {\n",
       "    margin-left: auto !important;\n",
       "    margin-right: auto !important;\n",
       "    margin-top: 0;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(odd) {\n",
       "    background-color: #fff;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(even) {\n",
       "    background-color: #f6f6f6;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:hover {\n",
       "    background-color: #e0e0e0;\n",
       "}\n",
       "\n",
       ".estimator-table table td {\n",
       "    border: 1px solid rgba(106, 105, 104, 0.232);\n",
       "}\n",
       "\n",
       "/*\n",
       "    `table td`is set in notebook with right text-align.\n",
       "    We need to overwrite it.\n",
       "*/\n",
       ".estimator-table table td.param {\n",
       "    text-align: left;\n",
       "    position: relative;\n",
       "    padding: 0;\n",
       "}\n",
       "\n",
       ".user-set td {\n",
       "    color:rgb(255, 94, 0);\n",
       "    text-align: left !important;\n",
       "}\n",
       "\n",
       ".user-set td.value {\n",
       "    color:rgb(255, 94, 0);\n",
       "    background-color: transparent;\n",
       "}\n",
       "\n",
       ".default td {\n",
       "    color: black;\n",
       "    text-align: left !important;\n",
       "}\n",
       "\n",
       ".user-set td i,\n",
       ".default td i {\n",
       "    color: black;\n",
       "}\n",
       "\n",
       "/*\n",
       "    Styles for parameter documentation links\n",
       "    We need styling for visited so jupyter doesn't overwrite it\n",
       "*/\n",
       "a.param-doc-link,\n",
       "a.param-doc-link:link,\n",
       "a.param-doc-link:visited {\n",
       "    text-decoration: underline dashed;\n",
       "    text-underline-offset: .3em;\n",
       "    color: inherit;\n",
       "    display: block;\n",
       "    padding: .5em;\n",
       "}\n",
       "\n",
       "/* \"hack\" to make the entire area of the cell containing the link clickable */\n",
       "a.param-doc-link::before {\n",
       "    position: absolute;\n",
       "    content: \"\";\n",
       "    inset: 0;\n",
       "}\n",
       "\n",
       ".param-doc-description {\n",
       "    display: none;\n",
       "    position: absolute;\n",
       "    z-index: 9999;\n",
       "    left: 0;\n",
       "    padding: .5ex;\n",
       "    margin-left: 1.5em;\n",
       "    color: var(--sklearn-color-text);\n",
       "    box-shadow: .3em .3em .4em #999;\n",
       "    width: max-content;\n",
       "    text-align: left;\n",
       "    max-height: 10em;\n",
       "    overflow-y: auto;\n",
       "\n",
       "    /* unfitted */\n",
       "    background: var(--sklearn-color-unfitted-level-0);\n",
       "    border: thin solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       "/* Fitted state for parameter tooltips */\n",
       ".fitted .param-doc-description {\n",
       "    /* fitted */\n",
       "    background: var(--sklearn-color-fitted-level-0);\n",
       "    border: thin solid var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".param-doc-link:hover .param-doc-description {\n",
       "    display: block;\n",
       "}\n",
       "\n",
       ".copy-paste-icon {\n",
       "    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
       "    background-repeat: no-repeat;\n",
       "    background-size: 14px 14px;\n",
       "    background-position: 0;\n",
       "    display: inline-block;\n",
       "    width: 14px;\n",
       "    height: 14px;\n",
       "    cursor: pointer;\n",
       "}\n",
       "</style><body><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(max_iter=10000)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LogisticRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('penalty',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=penalty,-%7B%27l1%27%2C%20%27l2%27%2C%20%27elasticnet%27%2C%20None%7D%2C%20default%3D%27l2%27\">\n",
       "            penalty\n",
       "            <span class=\"param-doc-description\">penalty: {'l1', 'l2', 'elasticnet', None}, default='l2'<br><br>Specify the norm of the penalty:<br><br>- `None`: no penalty is added;<br>- `'l2'`: add a L2 penalty term and it is the default choice;<br>- `'l1'`: add a L1 penalty term;<br>- `'elasticnet'`: both L1 and L2 penalty terms are added.<br><br>.. warning::<br>   Some penalties may not work with some solvers. See the parameter<br>   `solver` below, to know the compatibility between the penalty and<br>   solver.<br><br>.. versionadded:: 0.19<br>   l1 penalty with SAGA solver (allowing 'multinomial' + L1)<br><br>.. deprecated:: 1.8<br>   `penalty` was deprecated in version 1.8 and will be removed in 1.10.<br>   Use `l1_ratio` instead. `l1_ratio=0` for `penalty='l2'`, `l1_ratio=1` for<br>   `penalty='l1'` and `l1_ratio` set to any float between 0 and 1 for<br>   `'penalty='elasticnet'`.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">&#x27;deprecated&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('C',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=C,-float%2C%20default%3D1.0\">\n",
       "            C\n",
       "            <span class=\"param-doc-description\">C: float, default=1.0<br><br>Inverse of regularization strength; must be a positive float.<br>Like in support vector machines, smaller values specify stronger<br>regularization. `C=np.inf` results in unpenalized logistic regression.<br>For a visual example on the effect of tuning the `C` parameter<br>with an L1 penalty, see:<br>:ref:`sphx_glr_auto_examples_linear_model_plot_logistic_path.py`.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">1.0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('l1_ratio',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=l1_ratio,-float%2C%20default%3D0.0\">\n",
       "            l1_ratio\n",
       "            <span class=\"param-doc-description\">l1_ratio: float, default=0.0<br><br>The Elastic-Net mixing parameter, with `0 <= l1_ratio <= 1`. Setting<br>`l1_ratio=1` gives a pure L1-penalty, setting `l1_ratio=0` a pure L2-penalty.<br>Any value between 0 and 1 gives an Elastic-Net penalty of the form<br>`l1_ratio * L1 + (1 - l1_ratio) * L2`.<br><br>.. warning::<br>   Certain values of `l1_ratio`, i.e. some penalties, may not work with some<br>   solvers. See the parameter `solver` below, to know the compatibility between<br>   the penalty and solver.<br><br>.. versionchanged:: 1.8<br>    Default value changed from None to 0.0.<br><br>.. deprecated:: 1.8<br>    `None` is deprecated and will be removed in version 1.10. Always use<br>    `l1_ratio` to specify the penalty type.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">0.0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('dual',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=dual,-bool%2C%20default%3DFalse\">\n",
       "            dual\n",
       "            <span class=\"param-doc-description\">dual: bool, default=False<br><br>Dual (constrained) or primal (regularized, see also<br>:ref:`this equation <regularized-logistic-loss>`) formulation. Dual formulation<br>is only implemented for l2 penalty with liblinear solver. Prefer `dual=False`<br>when n_samples > n_features.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('tol',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=tol,-float%2C%20default%3D1e-4\">\n",
       "            tol\n",
       "            <span class=\"param-doc-description\">tol: float, default=1e-4<br><br>Tolerance for stopping criteria.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">0.0001</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('fit_intercept',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=fit_intercept,-bool%2C%20default%3DTrue\">\n",
       "            fit_intercept\n",
       "            <span class=\"param-doc-description\">fit_intercept: bool, default=True<br><br>Specifies if a constant (a.k.a. bias or intercept) should be<br>added to the decision function.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('intercept_scaling',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=intercept_scaling,-float%2C%20default%3D1\">\n",
       "            intercept_scaling\n",
       "            <span class=\"param-doc-description\">intercept_scaling: float, default=1<br><br>Useful only when the solver `liblinear` is used<br>and `self.fit_intercept` is set to `True`. In this case, `x` becomes<br>`[x, self.intercept_scaling]`,<br>i.e. a \"synthetic\" feature with constant value equal to<br>`intercept_scaling` is appended to the instance vector.<br>The intercept becomes<br>``intercept_scaling * synthetic_feature_weight``.<br><br>.. note::<br>    The synthetic feature weight is subject to L1 or L2<br>    regularization as all other features.<br>    To lessen the effect of regularization on synthetic feature weight<br>    (and therefore on the intercept) `intercept_scaling` has to be increased.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">1</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('class_weight',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=class_weight,-dict%20or%20%27balanced%27%2C%20default%3DNone\">\n",
       "            class_weight\n",
       "            <span class=\"param-doc-description\">class_weight: dict or 'balanced', default=None<br><br>Weights associated with classes in the form ``{class_label: weight}``.<br>If not given, all classes are supposed to have weight one.<br><br>The \"balanced\" mode uses the values of y to automatically adjust<br>weights inversely proportional to class frequencies in the input data<br>as ``n_samples / (n_classes * np.bincount(y))``.<br><br>Note that these weights will be multiplied with sample_weight (passed<br>through the fit method) if sample_weight is specified.<br><br>.. versionadded:: 0.17<br>   *class_weight='balanced'*</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('random_state',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=random_state,-int%2C%20RandomState%20instance%2C%20default%3DNone\">\n",
       "            random_state\n",
       "            <span class=\"param-doc-description\">random_state: int, RandomState instance, default=None<br><br>Used when ``solver`` == 'sag', 'saga' or 'liblinear' to shuffle the<br>data. See :term:`Glossary <random_state>` for details.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('solver',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=solver,-%7B%27lbfgs%27%2C%20%27liblinear%27%2C%20%27newton-cg%27%2C%20%27newton-cholesky%27%2C%20%27sag%27%2C%20%27saga%27%7D%2C%20%20%20%20%20%20%20%20%20%20%20%20%20default%3D%27lbfgs%27\">\n",
       "            solver\n",
       "            <span class=\"param-doc-description\">solver: {'lbfgs', 'liblinear', 'newton-cg', 'newton-cholesky', 'sag', 'saga'},             default='lbfgs'<br><br>Algorithm to use in the optimization problem. Default is 'lbfgs'.<br>To choose a solver, you might want to consider the following aspects:<br><br>- 'lbfgs' is a good default solver because it works reasonably well for a wide<br>  class of problems.<br>- For :term:`multiclass` problems (`n_classes >= 3`), all solvers except<br>  'liblinear' minimize the full multinomial loss, 'liblinear' will raise an<br>  error.<br>- 'newton-cholesky' is a good choice for<br>  `n_samples` >> `n_features * n_classes`, especially with one-hot encoded<br>  categorical features with rare categories. Be aware that the memory usage<br>  of this solver has a quadratic dependency on `n_features * n_classes`<br>  because it explicitly computes the full Hessian matrix.<br>- For small datasets, 'liblinear' is a good choice, whereas 'sag'<br>  and 'saga' are faster for large ones;<br>- 'liblinear' can only handle binary classification by default. To apply a<br>  one-versus-rest scheme for the multiclass setting one can wrap it with the<br>  :class:`~sklearn.multiclass.OneVsRestClassifier`.<br><br>.. warning::<br>   The choice of the algorithm depends on the penalty chosen (`l1_ratio=0`<br>   for L2-penalty, `l1_ratio=1` for L1-penalty and `0 < l1_ratio < 1` for<br>   Elastic-Net) and on (multinomial) multiclass support:<br><br>   ================= ======================== ======================<br>   solver            l1_ratio                 multinomial multiclass<br>   ================= ======================== ======================<br>   'lbfgs'           l1_ratio=0               yes<br>   'liblinear'       l1_ratio=1 or l1_ratio=0 no<br>   'newton-cg'       l1_ratio=0               yes<br>   'newton-cholesky' l1_ratio=0               yes<br>   'sag'             l1_ratio=0               yes<br>   'saga'            0<=l1_ratio<=1           yes<br>   ================= ======================== ======================<br><br>.. note::<br>   'sag' and 'saga' fast convergence is only guaranteed on features<br>   with approximately the same scale. You can preprocess the data with<br>   a scaler from :mod:`sklearn.preprocessing`.<br><br>.. seealso::<br>   Refer to the :ref:`User Guide <Logistic_regression>` for more<br>   information regarding :class:`LogisticRegression` and more specifically the<br>   :ref:`Table <logistic_regression_solvers>`<br>   summarizing solver/penalty supports.<br><br>.. versionadded:: 0.17<br>   Stochastic Average Gradient (SAG) descent solver. Multinomial support in<br>   version 0.18.<br>.. versionadded:: 0.19<br>   SAGA solver.<br>.. versionchanged:: 0.22<br>   The default solver changed from 'liblinear' to 'lbfgs' in 0.22.<br>.. versionadded:: 1.2<br>   newton-cholesky solver. Multinomial support in version 1.6.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">&#x27;lbfgs&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_iter',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=max_iter,-int%2C%20default%3D100\">\n",
       "            max_iter\n",
       "            <span class=\"param-doc-description\">max_iter: int, default=100<br><br>Maximum number of iterations taken for the solvers to converge.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">10000</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('verbose',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=verbose,-int%2C%20default%3D0\">\n",
       "            verbose\n",
       "            <span class=\"param-doc-description\">verbose: int, default=0<br><br>For the liblinear and lbfgs solvers set verbose to any positive<br>number for verbosity.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('warm_start',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=warm_start,-bool%2C%20default%3DFalse\">\n",
       "            warm_start\n",
       "            <span class=\"param-doc-description\">warm_start: bool, default=False<br><br>When set to True, reuse the solution of the previous call to fit as<br>initialization, otherwise, just erase the previous solution.<br>Useless for liblinear solver. See :term:`the Glossary <warm_start>`.<br><br>.. versionadded:: 0.17<br>   *warm_start* to support *lbfgs*, *newton-cg*, *sag*, *saga* solvers.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('n_jobs',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.8/modules/generated/sklearn.linear_model.LogisticRegression.html#:~:text=n_jobs,-int%2C%20default%3DNone\">\n",
       "            n_jobs\n",
       "            <span class=\"param-doc-description\">n_jobs: int, default=None<br><br>Does not have any effect.<br><br>.. deprecated:: 1.8<br>   `n_jobs` is deprecated in version 1.8 and will be removed in 1.10.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
       "    // Get the parameter prefix from the closest toggleable content\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
       "\n",
       "    const originalStyle = element.style;\n",
       "    const computedStyle = window.getComputedStyle(element);\n",
       "    const originalWidth = computedStyle.width;\n",
       "    const originalHTML = element.innerHTML.replace('Copied!', '');\n",
       "\n",
       "    navigator.clipboard.writeText(fullParamName)\n",
       "        .then(() => {\n",
       "            element.style.width = originalWidth;\n",
       "            element.style.color = 'green';\n",
       "            element.innerHTML = \"Copied!\";\n",
       "\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        })\n",
       "        .catch(err => {\n",
       "            console.error('Failed to copy:', err);\n",
       "            element.style.color = 'red';\n",
       "            element.innerHTML = \"Failed!\";\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        });\n",
       "    return false;\n",
       "}\n",
       "\n",
       "document.querySelectorAll('.copy-paste-icon').forEach(function(element) {\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const paramName = element.parentElement.nextElementSibling\n",
       "        .textContent.trim().split(' ')[0];\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
       "\n",
       "    element.setAttribute('title', fullParamName);\n",
       "});\n",
       "\n",
       "\n",
       "/**\n",
       " * Adapted from Skrub\n",
       " * https://github.com/skrub-data/skrub/blob/403466d1d5d4dc76a7ef569b3f8228db59a31dc3/skrub/_reporting/_data/templates/report.js#L789\n",
       " * @returns \"light\" or \"dark\"\n",
       " */\n",
       "function detectTheme(element) {\n",
       "    const body = document.querySelector('body');\n",
       "\n",
       "    // Check VSCode theme\n",
       "    const themeKindAttr = body.getAttribute('data-vscode-theme-kind');\n",
       "    const themeNameAttr = body.getAttribute('data-vscode-theme-name');\n",
       "\n",
       "    if (themeKindAttr && themeNameAttr) {\n",
       "        const themeKind = themeKindAttr.toLowerCase();\n",
       "        const themeName = themeNameAttr.toLowerCase();\n",
       "\n",
       "        if (themeKind.includes(\"dark\") || themeName.includes(\"dark\")) {\n",
       "            return \"dark\";\n",
       "        }\n",
       "        if (themeKind.includes(\"light\") || themeName.includes(\"light\")) {\n",
       "            return \"light\";\n",
       "        }\n",
       "    }\n",
       "\n",
       "    // Check Jupyter theme\n",
       "    if (body.getAttribute('data-jp-theme-light') === 'false') {\n",
       "        return 'dark';\n",
       "    } else if (body.getAttribute('data-jp-theme-light') === 'true') {\n",
       "        return 'light';\n",
       "    }\n",
       "\n",
       "    // Guess based on a parent element's color\n",
       "    const color = window.getComputedStyle(element.parentNode, null).getPropertyValue('color');\n",
       "    const match = color.match(/^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)\\s*$/i);\n",
       "    if (match) {\n",
       "        const [r, g, b] = [\n",
       "            parseFloat(match[1]),\n",
       "            parseFloat(match[2]),\n",
       "            parseFloat(match[3])\n",
       "        ];\n",
       "\n",
       "        // https://en.wikipedia.org/wiki/HSL_and_HSV#Lightness\n",
       "        const luma = 0.299 * r + 0.587 * g + 0.114 * b;\n",
       "\n",
       "        if (luma > 180) {\n",
       "            // If the text is very bright we have a dark theme\n",
       "            return 'dark';\n",
       "        }\n",
       "        if (luma < 75) {\n",
       "            // If the text is very dark we have a light theme\n",
       "            return 'light';\n",
       "        }\n",
       "        // Otherwise fall back to the next heuristic.\n",
       "    }\n",
       "\n",
       "    // Fallback to system preference\n",
       "    return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n",
       "}\n",
       "\n",
       "\n",
       "function forceTheme(elementId) {\n",
       "    const estimatorElement = document.querySelector(`#${elementId}`);\n",
       "    if (estimatorElement === null) {\n",
       "        console.error(`Element with id ${elementId} not found.`);\n",
       "    } else {\n",
       "        const theme = detectTheme(estimatorElement);\n",
       "        estimatorElement.classList.add(theme);\n",
       "    }\n",
       "}\n",
       "\n",
       "forceTheme('sk-container-id-1');</script></body>"
      ],
      "text/plain": [
       "LogisticRegression(max_iter=10000)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "model = LogisticRegression(max_iter=10000)\n",
    "\n",
    "model.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "44f2cd98",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9035087719298246\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "y_pred = model.predict(x_test)\n",
    "\n",
    "print(accuracy_score(y_test, y_pred))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
