{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a8e6b033-eddf-40ca-9944-5a024e073c90",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.model_selection import train_test_split, GridSearchCV\n",
    "from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score, classification_report\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "from sklearn.model_selection import train_test_split\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "e924b3ae-9e1c-4a11-998d-95163ca21ae6",
   "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>textID</th>\n",
       "      <th>text</th>\n",
       "      <th>selected_text</th>\n",
       "      <th>sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>cb774db0d1</td>\n",
       "      <td>I`d have responded, if I were going</td>\n",
       "      <td>I`d have responded, if I were going</td>\n",
       "      <td>neutral</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>549e992a42</td>\n",
       "      <td>Sooo SAD I will miss you here in San Diego!!!</td>\n",
       "      <td>Sooo SAD</td>\n",
       "      <td>negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>088c60f138</td>\n",
       "      <td>my boss is bullying me...</td>\n",
       "      <td>bullying me</td>\n",
       "      <td>negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>9642c003ef</td>\n",
       "      <td>what interview! leave me alone</td>\n",
       "      <td>leave me alone</td>\n",
       "      <td>negative</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>358bd9e861</td>\n",
       "      <td>Sons of ****, why couldn`t they put them on t...</td>\n",
       "      <td>Sons of ****,</td>\n",
       "      <td>negative</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       textID                                               text  \\\n",
       "0  cb774db0d1                I`d have responded, if I were going   \n",
       "1  549e992a42      Sooo SAD I will miss you here in San Diego!!!   \n",
       "2  088c60f138                          my boss is bullying me...   \n",
       "3  9642c003ef                     what interview! leave me alone   \n",
       "4  358bd9e861   Sons of ****, why couldn`t they put them on t...   \n",
       "\n",
       "                         selected_text sentiment  \n",
       "0  I`d have responded, if I were going   neutral  \n",
       "1                             Sooo SAD  negative  \n",
       "2                          bullying me  negative  \n",
       "3                       leave me alone  negative  \n",
       "4                        Sons of ****,  negative  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv(\"Tweets.csv\",encoding=\"ISO-8859-1\")\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "4efa7342-218d-4411-91c0-6563d0a804be",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Asus\\AppData\\Local\\Temp\\ipykernel_11036\\3322705910.py:1: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n",
      "  df = df.groupby('sentiment', group_keys=False).apply(lambda x:\n"
     ]
    }
   ],
   "source": [
    "df = df.groupby('sentiment', group_keys=False).apply(lambda x:\n",
    "x.sample(n=1000, random_state=42))\n",
    "df = df.reset_index(drop=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "7f8f57a3-a349-4597-aa4b-ad9e17ab58ef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sentiment\n",
       "negative    1000\n",
       "neutral     1000\n",
       "positive    1000\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df=df.dropna()\n",
    "df['sentiment'].value_counts()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "e873b193-abfa-484c-823b-4a3cc659b2be",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df['text'].values\n",
    "y = df['sentiment'].values\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "73ec4a5a-d98d-4bc4-af21-d4cc4e18bad9",
   "metadata": {},
   "outputs": [],
   "source": [
    "vectorizer = TfidfVectorizer(ngram_range=(1, 2)) # (1,2) = unigrams +bigrams\n",
    "X = vectorizer.fit_transform(X)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "04eebbe7-8b78-4dd8-97aa-f930820656ba",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "# Split data into training and testing sets\n",
    "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.30, random_state=42, stratify=y)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "6dc79fb2-c269-46e2-af7a-70e194b3f82c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_model(model_name, y_true, y_pred):\n",
    "    \n",
    "     # Calculate metrics\n",
    "    accuracy = accuracy_score(y_true, y_pred)\n",
    "    precision = precision_score(y_true, y_pred, average='weighted')\n",
    "    recall = recall_score(y_true, y_pred, average='weighted')\n",
    "    f1 = f1_score(y_true, y_pred, average='weighted')\n",
    "    cm = confusion_matrix(y_true, y_pred)\n",
    "    \n",
    "     # Create a report\n",
    "    report = classification_report(y_true, y_pred)\n",
    "    \n",
    "    \n",
    "     # Output results\n",
    "    metrics = {\n",
    "    'Model Name': model_name,\n",
    "    'Accuracy': accuracy,\n",
    "    'Precision': precision,\n",
    "    'Recall': recall,\n",
    "    'F1 Score': f1,\n",
    "    'Classification Report': report\n",
    "    }\n",
    "     # Plot Confusion Matrix\n",
    "    plt.figure(figsize=(4, 4))\n",
    "    sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', cbar=False, xticklabels=np.unique(y_true), yticklabels=np.unique(y_true))\n",
    "    plt.title(f'Confusion Matrix for {model_name}')\n",
    "    plt.xlabel('Predicted Label')\n",
    "    plt.ylabel('True Label')\n",
    "    plt.show()\n",
    "    \n",
    "    return metrics\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "bb0a1fa9-26ca-4a6a-9ece-e5ddece3bef1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "RandomForestClassifier\n",
      "Accuracy: 0.6256\n",
      "Precision: 0.6446\n",
      "Recall: 0.6256\n",
      "F1 Score: 0.6294\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.68      0.58      0.62       300\n",
      "     neutral       0.51      0.66      0.57       300\n",
      "    positive       0.74      0.64      0.69       300\n",
      "\n",
      "    accuracy                           0.63       900\n",
      "   macro avg       0.64      0.63      0.63       900\n",
      "weighted avg       0.64      0.63      0.63       900\n",
      "\n",
      "\n",
      "Best hyperparameters found by GridSearchCV:\n",
      "{'max_depth': 20, 'n_estimators': 200}\n"
     ]
    }
   ],
   "source": [
    "# Define the Random Forest Classifier\n",
    "rf_classifier = RandomForestClassifier(random_state=42)\n",
    "# Define the hyperparameters for grid search\n",
    "param_grid = {'n_estimators': [100, 200, 300],\n",
    " 'max_depth': [None, 10, 20, 30],\n",
    "}\n",
    "# Initialize GridSearchCV\n",
    "grid_search = GridSearchCV(estimator=rf_classifier,param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)\n",
    "# Fit the grid search to the data\n",
    "grid_search.fit(X_train, y_train)\n",
    "# Get the best estimator from grid search\n",
    "best_rf_classifier = grid_search.best_estimator_\n",
    "# Make predictions using the best model\n",
    "y_pred = best_rf_classifier.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('RandomForestClassifier', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    "    if key == 'Classification Report':\n",
    "        print(value) # Print report separately for better readability\n",
    "    else:\n",
    "        print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n",
    "# Print the best parameters found by grid search\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV:\")\n",
    "print(grid_search.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "b8920851-8720-4bab-a0a5-3c63e7054dab",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "LogisticRegression\n",
      "Accuracy: 0.6011\n",
      "Precision: 0.6144\n",
      "Recall: 0.6011\n",
      "F1 Score: 0.6047\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.62      0.62      0.62       300\n",
      "     neutral       0.49      0.58      0.53       300\n",
      "    positive       0.73      0.60      0.66       300\n",
      "\n",
      "    accuracy                           0.60       900\n",
      "   macro avg       0.61      0.60      0.60       900\n",
      "weighted avg       0.61      0.60      0.60       900\n",
      "\n",
      "\n",
      "Best hyperparameters found by GridSearchCV:\n",
      "{'solver': 'lbfgs'}\n"
     ]
    }
   ],
   "source": [
    "# Define the Logistic Regression model\n",
    "LR = LogisticRegression(random_state=42)\n",
    "# Define the hyperparameters for grid search\n",
    "param_grid = {\n",
    " 'solver': ['liblinear', 'lbfgs'], # Solver type\n",
    "}\n",
    "# Initialize GridSearchCV\n",
    "grid_search = GridSearchCV(estimator=LR, param_grid=param_grid, cv=5,\n",
    "scoring='accuracy', n_jobs=-1)\n",
    "# Fit the grid search to the data\n",
    "grid_search.fit(X_train, y_train)\n",
    "# Get the best estimator from grid search\n",
    "best_LR = grid_search.best_estimator_\n",
    "# Make predictions using the best model\n",
    "y_pred = best_LR.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('LogisticRegression', y_test, y_pred)\n",
    "\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    "    if key == 'Classification Report':\n",
    "        print(value) # Print report separately for better readability\n",
    "    else:\n",
    "        print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n",
    "        \n",
    "# Print the best hyperparameters found by grid search\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV:\")\n",
    "print(grid_search.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "c1a9231a-f969-4cd6-8568-a034ae489ab0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "DecisionTreeClassifier\n",
      "Accuracy: 0.5389\n",
      "Precision: 0.5836\n",
      "Recall: 0.5389\n",
      "F1 Score: 0.5395\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.59      0.42      0.49       300\n",
      "     neutral       0.44      0.70      0.54       300\n",
      "    positive       0.72      0.50      0.59       300\n",
      "\n",
      "    accuracy                           0.54       900\n",
      "   macro avg       0.58      0.54      0.54       900\n",
      "weighted avg       0.58      0.54      0.54       900\n",
      "\n",
      "\n",
      "Best hyperparameters found by GridSearchCV:\n",
      "{'criterion': 'gini', 'max_depth': 30}\n"
     ]
    }
   ],
   "source": [
    "# Define the Decision Tree model\n",
    "DT = DecisionTreeClassifier(random_state=42)\n",
    "# Define the hyperparameters for grid search\n",
    "param_grid = {\n",
    " 'criterion': ['gini', 'entropy'], # The function to measure the quality of a split\n",
    " 'max_depth': [None, 10, 20, 30], # The maximum depth of the tree\n",
    "}\n",
    "# Initialize GridSearchCV\n",
    "grid_search = GridSearchCV(estimator=DT, param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)\n",
    "# Fit the grid search to the data\n",
    "grid_search.fit(X_train, y_train)\n",
    "# Get the best estimator from grid search\n",
    "best_DT = grid_search.best_estimator_\n",
    "# Make predictions using the best model\n",
    "y_pred = best_DT.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('DecisionTreeClassifier', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    "    if key == 'Classification Report':\n",
    "        print(value) # Print report separately for better readability\n",
    "    else:\n",
    "        print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n",
    "# Print the best hyperparameters found by grid search\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV:\")\n",
    "print(grid_search.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "30c72f17-cdd1-46bd-beed-05e8ef34d2a4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "Support Vector Machine\n",
      "Accuracy: 0.5978\n",
      "Precision: 0.6246\n",
      "Recall: 0.5978\n",
      "F1 Score: 0.6033\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.64      0.59      0.61       300\n",
      "     neutral       0.48      0.62      0.54       300\n",
      "    positive       0.76      0.58      0.66       300\n",
      "\n",
      "    accuracy                           0.60       900\n",
      "   macro avg       0.62      0.60      0.60       900\n",
      "weighted avg       0.62      0.60      0.60       900\n",
      "\n",
      "\n",
      "Best hyperparameters found by GridSearchCV:\n",
      "{'kernel': 'linear'}\n"
     ]
    }
   ],
   "source": [
    "SVM = SVC(random_state=42)\n",
    "# Define the hyperparameters for grid search\n",
    "param_grid = {\n",
    " 'kernel': ['linear', 'rbf', 'poly'], # Kernel type\n",
    "}\n",
    "# Initialize GridSearchCV\n",
    "grid_search = GridSearchCV(estimator=SVM, param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)\n",
    "# Fit the grid search to the data\n",
    "grid_search.fit(X_train, y_train) \n",
    "\n",
    "# Get the best estimator from grid search\n",
    "best_SVM = grid_search.best_estimator_\n",
    "# Make predictions using the best model\n",
    "y_pred = best_SVM.predict(X_test) \n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('Support Vector Machine', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    "    if key == 'Classification Report':\n",
    "        print(value) # Print report separately for better readability\n",
    "    else:\n",
    "        print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n",
    "# Print the best hyperparameters found by grid search\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV:\")\n",
    "print(grid_search.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "09b8fbcf-c2e5-40e7-81dd-cac0fe4cf949",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Asus\\anaconda3\\envs\\Assignment2\\Lib\\site-packages\\sklearn\\model_selection\\_search.py:1108: UserWarning: One or more of the test scores are non-finite: [0.37285714 0.37285714 0.44761905 0.45       0.48142857 0.48761905\n",
      " 0.50238095 0.50571429 0.51190476 0.5152381         nan 0.35285714\n",
      "        nan 0.35571429        nan 0.37285714        nan 0.35714286\n",
      "        nan 0.34666667 0.37285714 0.37285714 0.44761905 0.45\n",
      " 0.48142857 0.48761905 0.50238095 0.50571429 0.51190476 0.5152381\n",
      "        nan 0.35285714        nan 0.35571429        nan 0.37285714\n",
      "        nan 0.35714286        nan 0.34666667 0.37285714 0.37285714\n",
      " 0.44761905 0.45       0.48142857 0.48761905 0.50238095 0.50571429\n",
      " 0.51190476 0.5152381         nan 0.35285714        nan 0.35571429\n",
      "        nan 0.37285714        nan 0.35714286        nan 0.34666667\n",
      " 0.37285714 0.37285714 0.44761905 0.45       0.48142857 0.48761905\n",
      " 0.50238095 0.50571429 0.51190476 0.5152381         nan 0.35285714\n",
      "        nan 0.35571429        nan 0.37285714        nan 0.35714286\n",
      "        nan 0.34666667]\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGJCAYAAABl4S8zAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVHpJREFUeJzt3XdUFNfbB/Dv0napSy8i0iVgrxFQwYrBXmJBpdiisWDBgoYoWGOiYIvYC5Zo7FFjwxYVjQ3QqAgIYhSCSHPpsPf9g5f5uQLKIrCrPJ9zOMe5c+fOMzvrPHvnTuExxhgIIYQQAAqyDoAQQoj8oKRACCGEQ0mBEEIIh5ICIYQQDiUFQgghHEoKhBBCOJQUCCGEcCgpEEII4VBSIIQQwqGk8AGxsbHo2bMnhEIheDwejh07VqPtJyYmgsfjYefOnTXa7ufM1dUVrq6uNdaeSCTCuHHjYGxsDB6Ph+nTp9dY2+Tzx+PxsGjRomovO2XKlI/WW7RoEXg8HtLS0qq1nrom90khPj4e3333HaysrCAQCKClpQVnZ2esWbMGeXl5tbpuLy8vPHjwAEuXLkVYWBjatm1bq+urS97e3uDxeNDS0qrwc4yNjQWPxwOPx8Mvv/widfuvXr3CokWLEBkZWQPRVt+yZcuwc+dOTJo0CWFhYRg9enStrs/CwgJ9+vQpVx4WFgZFRUX06tUL+fn5lS7L4/EwderUcvMuX74MHo+HQ4cO1XjMde306dNSHYhdXV3B4/HQt2/fcvPKflhV5ztKKqYk6wA+5NSpU/j222/B5/Ph6emJpk2borCwENeuXcPs2bPxzz//YPPmzbWy7ry8PERERGDBggVV+jVQHebm5sjLy4OysnKttP8xSkpKyM3NxR9//IGhQ4dKzNu7dy8EAkGlB7CPefXqFQIDA2FhYYGWLVtWeblz585Va32VuXjxIjp06ICFCxfWaLvS2Lt3L7y9vdG9e3ccO3YMAoHgg/W3bNkCf39/NGjQoI4irFunT5/Ghg0bpP6FfvLkSdy9exdt2rSpsVjy8vKgpCTXh8E6J7c9hYSEBAwfPhzm5uZ49OgR1qxZg/Hjx2Py5MnYv38/Hj16hCZNmtTa+l+/fg0A0NbWrrV18Hg8CAQCKCoq1to6PoTP56Nbt27Yv39/uXn79u1D79696yyW3NxcAICKigpUVFRqrN3U1NQa3YfFxcUoLCyscv3ffvsNXl5e6Nq1K44fP/7RhNCkSROUlJRgxYoVnxpqjZB2e2tLo0aNoKOjg8DAwBptVyAQfBFJgTFWY2dO5DYprFy5EiKRCNu2bYOJiUm5+TY2NvD19eWmi4uLsXjxYlhbW4PP58PCwgLz589HQUGBxHJl3ftr166hffv2EAgEsLKywu7du7k6ixYtgrm5OQBg9uzZ4PF4sLCwAFB62qXs3+8qO2/4rvPnz6Njx47Q1taGhoYG7OzsMH/+fG5+ZWMKFy9eRKdOnaCurg5tbW30798fjx8/rnB9cXFx8Pb2hra2NoRCIXx8fLgDbFV4eHjgzz//RGZmJld2+/ZtxMbGwsPDo1z99PR0+Pn5oVmzZtDQ0ICWlha++eYbREVFcXUuX76Mdu3aAQB8fHy401Bl2+nq6oqmTZvi7t276Ny5M9TU1LjP5f0xBS8vLwgEgnLb7+bmBh0dHbx69arC7So73ZKQkIBTp05xMSQmJgIoTRZjx46FkZERBAIBWrRogV27dkm08e6piZCQEO679ejRoyp9tgcPHsSoUaPg6uqKEydOfDQhAKXfT09PT2zZsqXSbXvXy5cvMWbMGBgZGYHP56NJkybYvn27RJ3CwkL8+OOPaNOmDYRCIdTV1dGpUydcunRJqu198uQJhgwZAl1dXQgEArRt2xYnTpyQaKOoqAiBgYGwtbWFQCCAnp4eOnbsiPPnzwMo/f+zYcMGAOD2yfv/byqiqamJGTNm4I8//sC9e/c+Wj8zMxPTp0+HmZkZ+Hw+bGxs8NNPP0EsFkvUq2hM4fLly2jbti0EAgGsra2xadOmCv9/lzl27BiaNm3Kff5nzpypsF5aWhqGDh0KLS0t6OnpwdfXt1xPXNrj2NmzZ9G2bVuoqqpi06ZNAD5+3PkoJqdMTU2ZlZVVlet7eXkxAGzIkCFsw4YNzNPTkwFgAwYMkKhnbm7O7OzsmJGREZs/fz5bv349a926NePxeOzhw4eMMcaioqJYcHAwA8BGjBjBwsLC2NGjR7n1mJubl1v/woUL2bsf58OHD5mKigpr27YtW7NmDQsNDWV+fn6sc+fOXJ2EhAQGgO3YsYMrO3/+PFNSUmKNGzdmK1euZIGBgUxfX5/p6OiwhISEcutr1aoVGzRoEPv111/ZuHHjGAA2Z86cKn1e6urqLDs7mwkEArZt2zZu3vTp09lXX33Fxffzzz9z827fvs2sra3ZvHnz2KZNm1hQUBAzNTVlQqGQvXz5kjHGWEpKCgsKCmIA2IQJE1hYWBgLCwtj8fHxjDHGXFxcmLGxMTMwMGBTp05lmzZtYseOHePmubi4cOvLyMhgDRs2ZO3atWPFxcWMMcZCQ0MZABYWFlbp9qWkpLCwsDCmr6/PWrZsycUgEolYbm4us7e3Z8rKymzGjBls7dq1rFOnTgwACwkJKbd/HBwcmJWVFVuxYgULDg5mz58/r3S95ubmrHfv3uzQoUNMSUmJdenSheXm5n50f7y7bHx8PFNSUmJTp07l5l26dIkBYL///rvENjZs2JCZmZmxoKAgtnHjRtavXz8GgAUHB3P1Xr9+zUxMTNjMmTPZxo0b2cqVK5mdnR1TVlZm9+/fr9L2Pnz4kAmFQubg4MB++ukntn79eta5c2fG4/HYkSNHuDbmz5/PeDweGz9+PNuyZQtbtWoVGzFiBFuxYgVjjLEbN26wHj16cPuv7O9DXFxcWJMmTVhWVhbT0dFhffv2LRfzu9/RnJwc1rx5c6anp8fmz5/PQkNDmaenJ+PxeMzX11eibQBs4cKF3PS9e/cYn89nFhYWbMWKFWzp0qWsQYMGrEWLFuz9wyUA1qJFC2ZiYsIWL17MQkJCmJWVFVNTU2NpaWlcvbL/q82aNWN9+/Zl69evZ6NGjWIA2OjRoyXalOY4ZmNjw3R0dNi8efNYaGgou3TpUpWOOx8jl0khKyuLAWD9+/evUv3IyEgGgI0bN06i3M/PjwFgFy9e5MrMzc0ZAHb16lWuLDU1lfH5fDZr1iyurKIvG2NVTwplSeX169eVxl1RUmjZsiUzNDRkb9684cqioqKYgoIC8/T0LLe+MWPGSLQ5cOBApqenV+k6390OdXV1xhhjQ4YMYd26dWOMMVZSUsKMjY1ZYGBghZ9Bfn4+KykpKbcdfD6fBQUFcWW3b98ut21lXFxcGAAWGhpa4bx3kwJjjJ09e5YBYEuWLGHPnj1jGhoa5f6TVKbsQPuukJAQBoDt2bOHKyssLGSOjo5MQ0ODZWdnc9sFgGlpabHU1NQqr69BgwZMSUmJubq6spycnCot936sPj4+TCAQsFevXjHGKk4KY8eOZSYmJhIHIMYYGz58OBMKhVwyKi4uZgUFBRJ1MjIymJGRkcT350Pb261bN9asWTOWn5/PlYnFYubk5MRsbW25shYtWpT7vN83efLkcgfYDylLCowxFhgYyACwu3fvSsT87nd08eLFTF1dnT19+lSinXnz5jFFRUWWlJTElb2fFPr27cvU1NS4HziMMRYbG8uUlJQqTAoqKiosLi6OK4uKimIA2Lp167iysv+r/fr1k1j++++/ZwBYVFQUY6x6x7EzZ85I1K3Kcedj5PL0UXZ2NoDSLmNVnD59GgAwc+ZMifJZs2YBKB2wfpeDgwM6derETRsYGMDOzg7Pnj2rdszvKzuPffz48XJd1sokJycjMjIS3t7e0NXV5cqbN2+OHj16cNv5rokTJ0pMd+rUCW/evOE+w6rw8PDA5cuXkZKSgosXLyIlJaXCU0dA6TiEgkLp16akpARv3rzhuqhV6da/246Pj0+V6vbs2RPfffcdgoKCMGjQIAgEAq6rXB2nT5+GsbExRowYwZUpKytj2rRpEIlEuHLlikT9wYMHw8DAoMrtp6eno7i4GA0bNoSqqmq1Yvzhhx9QXFxc6dgCYwyHDx9G3759wRhDWloa9+fm5oasrCxufygqKnLjNGKxmIuvbdu2Fe6z97c3PT0dFy9exNChQ/H27VtuPW/evIGbmxtiY2Px8uVLAKXf+3/++QexsbHV2u6P8fX1/ejYwu+//45OnTpBR0dH4nPp3r07SkpKcPXq1QqXKykpwYULFzBgwACJQX4bGxt88803FS7TvXt3WFtbc9PNmzeHlpZWhceSyZMnS0yXXWVW9v9a2uOYpaUl3NzcJMqqc9x5n1wmBS0tLQDA27dvq1T/+fPnUFBQgI2NjUS5sbExtLW18fz5c4nyRo0alWtDR0cHGRkZ1Yy4vGHDhsHZ2Rnjxo2DkZERhg8fjoMHD35wR5XFaWdnV26evb090tLSkJOTI1H+/rbo6OgAgFTb4u7uDk1NTRw4cAB79+5Fu3btyn2WZcRiMYKDg2Fraws+nw99fX0YGBggOjoaWVlZVV6nqampVAPKv/zyC3R1dREZGYm1a9fC0NCwysu+7/nz57C1teWSWxl7e3tu/rssLS2lar9bt26YNGkS9uzZU+6+iKysLKSkpHB/6enpFbZhZWWF0aNHY/PmzUhOTi43//Xr18jMzMTmzZthYGAg8VeWbFNTU7n6u3btQvPmzbnz/AYGBjh16lSF++z97Y2LiwNjDAEBAeXWVXZVV9m6goKCkJmZicaNG6NZs2aYPXs2oqOjq/7hfYRQKMT06dNx4sQJ3L9/v8I6sbGxOHPmTLlYu3fvLhHr+1JTU5GXl1fhd7+y/w/SHEtsbW0lpq2traGgoMCNc0l7HKvoe1md48775HLYXUtLCw0aNMDDhw+lWq4qA1YAKr3ah1XhzaSVraOkpERiWlVVFVevXsWlS5dw6tQpnDlzBgcOHEDXrl1x7ty5Grvi6FO2pQyfz8egQYOwa9cuPHv27IOXCi5btgwBAQEYM2YMFi9eDF1dXSgoKGD69OlSffGk/QV9//597j/zgwcPJH7l17bq/Npfv349MjIysHbtWujo6HCfqa+vr8SAtouLCy5fvlxhGwsWLEBYWBh++uknDBgwQGJe2Wc9atQoeHl5Vbh88+bNAQB79uyBt7c3BgwYgNmzZ8PQ0BCKiopYvnw54uPjyy33/vaWrcvPz6/cL9MyZQeyzp07Iz4+HsePH8e5c+ewdetWBAcHIzQ0FOPGjatwWWn5+voiODgYgYGBCAkJKTdfLBajR48emDNnToXLN27cuEbiAGrnWFLV41hF38uaOO7IZVIAgD59+mDz5s2IiIiAo6PjB+uam5tDLBYjNjaW+7UHAP/99x8yMzO5K4lqgo6OjsSVOmXez+IAoKCggG7duqFbt25YvXo1li1bhgULFuDSpUvcr5b3twMAYmJiys178uQJ9PX1oa6u/ukbUQEPDw9s374dCgoKGD58eKX1Dh06hC5dumDbtm0S5ZmZmdDX1+emq/rFroqcnBz4+PjAwcEBTk5OWLlyJQYOHMhd4SQtc3NzREdHQywWS/QWnjx5ws3/VAoKCti9ezeysrIQGBgIXV1dTJs2DXPmzMGoUaO4emU9u4pYW1tj1KhR2LRpE77++muJeQYGBtDU1ERJSUmF36V3HTp0CFZWVjhy5IjEfqnqvRtWVlYASk+xfWxdAKCrqwsfHx/4+PhAJBKhc+fOWLRoEZcUPvW7UdZbWLRoUYUJ0draGiKRqEqxvsvQ0BACgQBxcXHl5lVUJq3Y2FiJX/dxcXEQi8Xc1Yw1dRyT9rhTbnnpNqvuzJkzB+rq6hg3bhz++++/cvPj4+OxZs0aAKWnPwCU+9WwevVqAKjR6+2tra2RlZUl0SVOTk7G0aNHJepVdFqg7Cau9y8vK2NiYoKWLVti165dEonn4cOHOHfuHLedtaFLly5YvHgx1q9fD2Nj40rrKSoqlvsV9Pvvv3PnlMuUJa+KEqi05s6di6SkJOzatQurV6+GhYUFvLy8Kv0cP8bd3R0pKSk4cOAAV1ZcXIx169ZBQ0MDLi4unxwzUHoQPXToEJydnTF9+nSEhYXBwcEB3bt35/4+diPWDz/8gKKiIqxcuVKiXFFREYMHD8bhw4cr7FGX3WdTVheQ/PV669YtREREVGk7DA0N4erqik2bNlV6KqvMmzdvJOZpaGjAxsZGYl/VxHdj+vTp0NbWRlBQULl5Q4cORUREBM6ePVtuXmZmJoqLiytsU1FRkbvB8N3LgePi4vDnn39WO9YyZZfillm3bh0AcOMVNXEcq85x531y21OwtrbGvn37MGzYMNjb20vc0Xzjxg38/vvv8Pb2BgC0aNECXl5e2Lx5MzIzM+Hi4oK///4bu3btwoABA9ClS5cai2v48OGYO3cuBg4ciGnTpiE3NxcbN25E48aNJQbtgoKCcPXqVfTu3Rvm5uZITU3Fr7/+ioYNG6Jjx46Vtv/zzz/jm2++gaOjI8aOHYu8vDysW7cOQqGw2s9oqQoFBQX88MMPH63Xp08fBAUFwcfHB05OTnjw4AH27t3L/ZosY21tDW1tbYSGhkJTUxPq6ur4+uuvpT4/f/HiRfz6669YuHAhWrduDQDYsWMHXF1dERAQUO5gWRUTJkzApk2b4O3tjbt378LCwgKHDh3C9evXERISUuULHKpCTU0Np06dgouLC8aMGQOhUIh+/fpVefmy3sL791AAwIoVK3Dp0iV8/fXXGD9+PBwcHJCeno579+7hwoUL3AGiT58+OHLkCAYOHIjevXsjISEBoaGhcHBwgEgkqlIcGzZsQMeOHdGsWTOMHz8eVlZW+O+//xAREYF///2Xu0/FwcEBrq6uaNOmDXR1dXHnzh0cOnRI4qkAZYlw2rRpcHNzg6Ki4gd7pxURCoXw9fWtcMB59uzZOHHiBPr06QNvb2+0adMGOTk5ePDgAQ4dOoTExESJXu27Fi1ahHPnzsHZ2RmTJk1CSUkJ1q9fj6ZNm37yI1sSEhLQr18/9OrVCxEREdizZw88PDzQokULADVzHKvucUdCta9bqiNPnz5l48ePZxYWFkxFRYVpamoyZ2dntm7dOonL44qKilhgYCCztLRkysrKzMzMjPn7+0vUYaziSxQZK38pZGWXpDLG2Llz51jTpk2ZiooKs7OzY3v27Cl3SWp4eDjr378/a9CgAVNRUWENGjRgI0aMkLhMrqJLUhlj7MKFC8zZ2ZmpqqoyLS0t1rdvX/bo0SOJOmXre//Ssx07djAAEvc0VOTdS1IrU9klqbNmzWImJiZMVVWVOTs7s4iIiAovJT1+/DhzcHDgLucr2853LzF837vtZGdnM3Nzc9a6dWtWVFQkUW/GjBlMQUGBRUREfHAbKtvf//33H/Px8WH6+vpMRUWFNWvWrNx++NB3QNr1paSkMBsbGyYQCNilS5ekWjY2NpYpKiqWuyS1bDsmT57MzMzMmLKyMjM2NmbdunVjmzdv5uqIxWK2bNkyZm5uzvh8PmvVqhU7efJkucurP7a98fHxzNPTkxkbGzNlZWVmamrK+vTpww4dOsTVWbJkCWvfvj3T1tZmqqqq7KuvvmJLly5lhYWFXJ3i4mI2depUZmBgwHg83kcvT63s+5KRkcGEQmGFMb99+5b5+/szGxsbpqKiwvT19ZmTkxP75ZdfJGLBe5ekMlb6f7dVq1ZMRUWFWVtbs61bt7JZs2YxgUAgUQ8Amzx5crm4zM3NmZeXFzdd9n/10aNHbMiQIUxTU5Pp6OiwKVOmsLy8PIllP/U4VpXjzsfw/n/jCCGEVGLAgAG1eqmtPJHbMQVCCJGF958hFBsbi9OnT9foI93lGfUUCCHkHSYmJvD29oaVlRWeP3+OjRs3oqCgAPfv3y93r8GXSG4HmgkhRBZ69eqF/fv3IyUlBXw+H46Ojli2bFm9SAgA9RQIIYS8g8YUCCGEcCgpEEII4VBSIIQQwvkiB5pVW9XOO5VJzYg4vlzWIZBKfNWg5u7mJjVLUEdHa+opEEII4VBSIIQQwqGkQAghhENJgRBCCIeSAiGEEA4lBUIIIRxKCoQQQjiUFAghhHAoKRBCCOFQUiCEEMKhpEAIIYRDSYEQQgiHkgIhhBAOJQVCCCEcSgqEEEI4lBQIIYRwKCkQQgjhUFIghBDCoaRACCGEQ0mBEEIIh5ICIYQQDiUFQgghHEoKhBBCOHKVFAoLCxETE4Pi4mJZh0IIIfWSXCSF3NxcjB07FmpqamjSpAmSkpIAAFOnTsWKFStkHB0hhNQfcpEU/P39ERUVhcuXL0MgEHDl3bt3x4EDB2QYGSGE1C9Ksg4AAI4dO4YDBw6gQ4cO4PF4XHmTJk0QHx8vw8gIIaR+kYuewuvXr2FoaFiuPCcnRyJJEEIIqV1ykRTatm2LU6dOcdNliWDr1q1wdHSUVViEEFLvyMXpo2XLluGbb77Bo0ePUFxcjDVr1uDRo0e4ceMGrly5IuvwCCGk3pCLnkLHjh0RGRmJ4uJiNGvWDOfOnYOhoSEiIiLQpk0bWYdHCCH1hlz0FADA2toaW7ZskXUYhBBSr8lFT6F79+7YuXMnsrOzZR0KIYTUa3KRFJo0aQJ/f38YGxvj22+/xfHjx1FUVCTrsAghpN6Ri6SwZs0avHz5EseOHYO6ujo8PT1hZGSECRMm0EAzIYTUIblICgCgoKCAnj17YufOnfjvv/+wadMm/P333+jatausQyOEkHpDbgaay6SkpOC3337Dnj17EB0djfbt28s6JEIIqTfkoqeQnZ2NHTt2oEePHjAzM8PGjRvRr18/xMbG4ubNm7IOjxBC6g256CkYGRlBR0cHw4YNw/Lly9G2bVtZh0QIIfWSXCSFEydOoFu3blBQkIuOCyGE1FtykRR69Ogh6xAIIYRAhkmhdevWCA8Ph46ODlq1avXBp6Heu3evDiMjhJD6S2ZJoX///uDz+dy/6RHZhBAiezzGGJN1EDVNtdUUWYdAPiDi+HJZh0Aq8VUDTVmHQCohqKOf8HIxsmtlZYU3b96UK8/MzISVlZUMIiKEkPpJLgaaExMTUVJSUq68oKAA//77rwwiql1+Y3piQNcWaGxhhLyCItyKeoYFa44j9nkqV2fMIGcM+6YtWn7VEFoaqjDuNBtZojyJdnS01LB67rdw79wUYsZwLDwSfisPISevsK436YuWnpaKvVvXIfLvGygoyIdxg4aY5LcQ1nYO5epuCVmGC6eOwHPSTPQe5CGDaOuXbVs2Ifz8OSQkPANfIEDLlq0wfaYfLCwlf0xGRd7HujXBePAgGooKCrD7yh4bN2+TeCc8KSXTpHDixAnu32fPnoVQKOSmS0pKEB4eDktLS1mEVqs6tbZB6IGruPvPcygpKSJwSl+c3DgFrQYtQW5+6QFdTaCM8zce4fyNR1g8rX+F7exY5gVjfSH6TFoPZSVFbAochQ0BHvCev7MOt+bLJnqbjR+nj4VDi7bwX7YGWkIdJL98AXVNrXJ1/752CbGPH0JHz0AGkdZPd27/jWEjRqJJs2YoKS7BujWrMXH8WBw5cQpqamoAShPC99+Nw5hx32HeggAoKSoiJuYJXQJfCZmOKZTtFB6Ph/fDUFZWhoWFBVatWoU+ffpI1e7nNqagr6OBFxdXoPvYYFy/Fy8xr1MbW5zb6luup2BnaYTIIwFwHrkS9x4lAQB6ONnj2LpJsOkVgOTXWXW6DdL4nMYU9m1dh5h/ohAYvPWD9dLTUrFgqjfmL1+Hn36Yjm8Gjfgsewqf+5hCeno6unRyxPZde9CmbTsAwKgRQ9HB0QlTpk2XbXCfqF6MKYjFYojFYjRq1AipqanctFgsRkFBAWJiYqROCJ8jLY3SLmxGVm6Vl/m6uSUysnO5hAAAF2/FQCxmaNfUvMZjrK/uRFyFVWN7rA6ai/Hf9sDciR4IP31Uoo5YLMb6n35E329Hw8zCWkaREgAQvX0LAND6/7MOb968wYPoKOjq6cFz5HB06eyEMV6jcO/uHVmGKdfkov+UkJAAfX39ai1bUFCA7OxsiT8mLj8+Ia94PB5+9huCG/fj8Sg+ucrLGelp4XX6W4mykhIx0rNzYaRf/tQGqZ7U5Jc4/8dhmJg2wvzl69Cj7xDs2PALrpw7ydU5fmAXFBUU8c3A4TKMlIjFYqz8aRlatmoNW9vGAICX/74AAIRuWI9BQ77Fr5u2wt7eARPGeuP580QZRiu/5GKgGQBycnJw5coVJCUlobBQcqB02rRplS63fPlyBAYGSpQpGrWDssnn8XTVEP+haGJjgm4+wbIOhVRAzMSwbuyAEWMnAwAsbb7Ci8R4nD95GC49++DZ08f48+hvWPHrHrrXRsaWLQlEfGwsdobt48rEYjEAYMjQYRgwcDAAwN7eAbduReDYkcPwnTFLJrHKM7lICvfv34e7uztyc3ORk5MDXV1dpKWlQU1NDYaGhh9MCv7+/pg5c6ZEmWGnubUdco0Invst3Ds1RfexIXiZminVsv+9yYaBruT5X0VFBehqqeG/NHqtaU3R0dWHaSPJix1MG1ni1l8XAQCPH95HdmY6Jo/832lOsbgEYZtC8OeR/Vi/5486jbe+WrYkCFevXMb2XXtgZGzMlesblA76W1lLntaztLJGSvKrOo3xcyEXSWHGjBno27cvQkNDIRQKcfPmTSgrK2PUqFHw9fX94LJ8Pp+7M7oMT0GxNsOtEcFzv0W/ri3Qc/waPH9V/h6Nj7kVnQAdLTW0sjfD/celXWTXdo2hoMDD7YfPazrcesuuSQsk/yv5eSb/+xwGRiYAgM7d3dGslWSvdJn/VHTu7g5Xt751Fmd9xRjD8qWLcTH8PLbtDEPDhmYS801NG8LA0BCJCQkS5c8TE9GxU+e6DPWzIRdjCpGRkZg1axYUFBSgqKiIgoICmJmZYeXKlZg/f76sw6txIf5DMbx3O3jN3wlRTj6M9DRhpKcJAV+Zq2Okp4nmjU1h3ah0rKWpbQM0b2wKHa3Sy+xiEv7D2ev/YEOAB9o2MYdjCysEzxuK38/ek+srjz437oM9EPv4AY7u246Uly9w7eIZhJ8+ip79vgUAaGppo5GljcSfkpIShLp6aGBmIdvg64FliwNx+uQJrFi5Cupq6kh7/Rppr18jPz8fQOmYnbfPWOzfG4bzZ88g6flzrF8bgsSEZxg4aIiMo5dPctFTUFZW5i5PNTQ0RFJSEuzt7SEUCvHixQsZR1fzvhta+gvl/NbpEuXjfwzDnj9uAQDGDemEHya6c/MubJ9Rro7P/F0InjcUpzdNhVhcevParJW/18EW1B82dk0wa9Ev2L9tPQ7v2QoD4wbwmjQLnbp9I+vQCICDB/YDAMZ6j5YoD1qyHP0HDgIAjPL0RkFBIX5euRxZWVmws/sKoVu2w6xRozqP93MgF88+6tmzJ7y9veHh4YHx48cjOjoa06ZNQ1hYGDIyMnDr1i2p2vvc7lOobz6n+xTqm8/9PoUvWb24T6HMsmXLYGJSeo526dKl0NHRwaRJk/D69Wts3rxZxtERQkj9IRenj959/aahoSHOnDkjw2gIIaT+koueAiGEEPkgFz2Fyt68xuPxIBAIYGNjA29vb3Tp0kUG0RFCSP0hFz2FXr164dmzZ1BXV0eXLl3QpUsXaGhoID4+Hu3atUNycjK6d++O48ePyzpUQgj5oslFTyEtLQ2zZs1CQECARPmSJUvw/PlznDt3DgsXLsTixYvRv3/Fj5EmhBDy6eSip3Dw4EGMGDGiXPnw4cNx8OBBAMCIESMQExNT16ERQki9IhdJQSAQ4MaNG+XKb9y4wb0ZSSwW01uSCCGklsnF6aOpU6di4sSJuHv3Ltq1K30xxu3bt7F161buMRdnz55Fy5YtZRglIYR8+eTijmYA2Lt3L9avX8+dIrKzs8PUqVPh4VH69qq8vDzuaqSPoTua5Rvd0Sy/6I5m+VVXdzTLTVKoSZQU5BslBflFSUF+1avHXABAZmYmd7ooPT0dAHDv3j28fPlSxpERQkj9IRdjCtHR0ejevTuEQiESExMxbtw46Orq4siRI0hKSsLu3btlHSIhhNQLctFTmDlzJry9vREbGysxZuDu7o6rV6/KMDJCCKlf5CIp3L59G9999125clNTU6SkpMggIkIIqZ/kIinw+XxkZ5d/r/DTp09h8P/vWCWEEFL75CIp9OvXD0FBQSgqKgJQ+iC8pKQkzJ07F4MHD5ZxdIQQUn/IRVJYtWoVRCIRDA0NkZeXBxcXF9jY2EBDQwNLly6VdXiEEFJvyMXVR0KhEOfPn8f169cRFRUFkUiE1q1bo3v37rIOjRBC6hW5SAoAEB4ejvDwcKSmpkIsFuPJkyfYt28fAGD79u0yjo4QQuoHuUgKgYGBCAoKQtu2bWFiYlLhC3cIIYTUPrlICqGhodi5cydGjx4t61AIIaRek4uB5sLCQjg5Ock6DEIIqffkIimMGzeOGz8ghBAiO3Jx+ig/Px+bN2/GhQsX0Lx5cygrK0vMX716tYwiI4SQ+kUukkJ0dDT3Ap2HDx9KzKNBZ0IIqTtykRQuXbok6xAIIYRATsYUCCGEyAdKCoQQQjiUFAghhHAoKRBCCOFQUiCEEMKhpEAIIYRDSYEQQgiHkgIhhBAOJQVCCCEcSgqEEEI4lBQIIYRwKCkQQgjhUFIghBDCoaRACCGEQ0mBEEIIh5ICIYQQDiUFQgghHEoKhBBCOHLxOs6a1uzbIbIOgXzAswyRrEMglaA3osuvFo0062Q91FMghBDCoaRACCGEQ0mBEEIIh5ICIYQQDiUFQgghHEoKhBBCOJQUCCGEcCgpEEII4VBSIIQQwqGkQAghhENJgRBCCIeSAiGEEA4lBUIIIRxKCoQQQjiUFAghhHAoKRBCCOFQUiCEEMKp0pvXoqOjq9xg8+bNqx0MIYQQ2apSUmjZsiV4PB4YYxXOL5vH4/FQUlJSowESQgipO1VKCgkJCbUdByGEEDlQpaRgbm5e23EQQgiRA9UaaA4LC4OzszMaNGiA58+fAwBCQkJw/PjxGg2OEEJI3ZI6KWzcuBEzZ86Eu7s7MjMzuTEEbW1thISE1HR8hBBC6pDUSWHdunXYsmULFixYAEVFRa68bdu2ePDgQY0GRwghpG5JnRQSEhLQqlWrcuV8Ph85OTk1EhQhhBDZkDopWFpaIjIyslz5mTNnYG9vXxMxEUIIkZEqXX30rpkzZ2Ly5MnIz88HYwx///039u/fj+XLl2Pr1q21ESMhhJA6InVSGDduHFRVVfHDDz8gNzcXHh4eaNCgAdasWYPhw4fXRoyEEELqiNRJAQBGjhyJkSNHIjc3FyKRCIaGhjUdFyGEEBmoVlIAgNTUVMTExAAofcyFgYFBjQVFCCFENqROCm/fvsX333+P/fv3QywWAwAUFRUxbNgwbNiwAUKhsErtrF27tsrrnDZtmrRhEkIIqYZqjSncv38fp06dgqOjIwAgIiICvr6++O677/Dbb79VqZ3g4OAq1ePxeJQUCCGkjkidFE6ePImzZ8+iY8eOXJmbmxu2bNmCXr16VbkdesgeIYTIH6nvU9DT06vwFJFQKISOjk6NBEUIIUQ2pO4p/PDDD5g5cybCwsJgbGwMAEhJScHs2bMREBBQ7UD+/fdfnDhxAklJSSgsLJSYt3r16mq3SwghpOqqlBRatWoFHo/HTcfGxqJRo0Zo1KgRACApKQl8Ph+vX7/Gd999J3UQ4eHh6NevH6ysrPDkyRM0bdoUiYmJYIyhdevWUrdHCCGkeqqUFAYMGFCrQfj7+8PPzw+BgYHQ1NTE4cOHYWhoiJEjR0o1TkEIIeTT8Fhl79isQ5qamoiMjIS1tTV0dHRw7do1NGnSBFFRUejfvz8SExOlaq/9ssu1EiepGfN628k6BFIJax0NWYdAKtGikWadrKdaL9mpaerq6tw4gomJCeLj47l5aWlpsgqLEELqHakHmktKShAcHIyDBw9WOCicnp4udRAdOnTAtWvXYG9vD3d3d8yaNQsPHjzAkSNH0KFDB6nbI4QQUj1S9xQCAwOxevVqDBs2DFlZWZg5cyYGDRoEBQUFLFq0qFpBrF69Gl9//TXXfrdu3XDgwAFYWFhg27Zt1WqTEEKI9KQeU7C2tsbatWvRu3dvibGAtWvX4ubNm9i3b59UAZSUlOD69eto3rw5tLW1pVq2MjSmIN9oTEF+0ZiC/JLbMYWUlBQ0a9YMAKChoYGsrCwAQJ8+fXDq1CmpA1BUVETPnj2RkZEh9bKEEEJqltRJoWHDhkhOTgZQ2ms4d+4cAOD27dvg8/nVCqJp06Z49uxZtZYlhBBSc6ROCgMHDkR4eDgAYOrUqQgICICtrS08PT0xZsyYagWxZMkS+Pn54eTJk0hOTkZ2drbEHyGEkLrxyfcp3Lx5Ezdu3ICtrS369u1brTYUFP6Xm969c5oxBh6Ph5KSEqnak/cxhVZmQozqYIavjDVhoMnH7EMPceXp/y69/bHPV+jT3FhimYj4dPgeiOamtQRK8Otpi462emAMuPTkNVadj0NekXSflSx8TmMKYnEJLhzcici/zuNtZjq0dPXR2qUXug4ezX1X/Ye6VrjsN6MmonO/z+tthJ/jmEJ6Wir2bF2HyL9voKAgH8YNGuJ7v4WwtnMAABzcvQk3Lp/Dm9f/QUlJGVa29hju8z1s7ZvKOHLp1NWYQrVfslOmQ4cO6NChA1JTU7Fs2TLMnz9f6jYuXbr0qWF8VgTKiohNzcEfUSlYOaTiL+aN+DdYfDKGmy4sEUvMD+pvD30NPqbuj4KSggIC+thhvntjBBx/XKux1zdXju3HrfPH8e1kfxg1tMC/z2Jw6NefIFBTh7P7YADA/M2HJZaJuf83joSuRNOvO8si5HpF9DYbAdPHokmLtpi/bA20hDpIfvkC6ppaXJ0GDc0xZsocGJmYorCgAKcO78OSeZOxbtcxaGnTQzzf98lJoUxycjICAgKqlRQsLS1hZmYm0UsASnsKL168qKkQ5UbEs3REPPvw/RxFxQxvcgornGehpwYnaz14bb+LxylvAQC/nItDyLBmWBMejzRRxcsR6T1/+hAObTviq9al7w7RMTRB1LWL+Dfuf8lXU1tPYpnHt6/Bqkkr6Bo1qNNY66PjB3ZBz8AI389eyJUZmphK1OnYVfJROZ4TZ+DimeN4/iwWzVq3r5M4PydycUezpaUlXr9+Xa48PT0dlpaWMohI9lqba+OMrxN+/6495vayhVD1f/m7makWsvOKuIQAALcTMiBmQNMGWhU1R6rJvHFTxD28i9evSn+cJCfG4XnMAzRu9XWF9d9mpuPJ/Zto29W9LsOst+5EXIVVY3usDpqLcd/2wJyJHrhw+mil9YuLinDh9FGoqWvA3LpxHUb6+aixnsKnKBs7eJ9IJIJAIJBBRLIV8Swdl2Je41VmPhrqqGKSqyVChjXH2F33IGaAnoYKMnKLJJYpYQzZeUXQ01CRUdRfJpcBHijIy0HwDE/wFBTAxGL0HD4OrTr1qLD+vStnwReooUn7TnUcaf2UmvwS5/84jN6DR2Kghw/iYx5hx4ZfoKSkDNeefbh6d2/+hZCl81FYkA9tXX388NMGaAm1ZRe4HJNpUpg5cyaA0sHlgIAAqKmpcfNKSkpw69YttGzZ8oNtFBQUoKCgQKJMXFwIBaXP9+B4/lEq9+/41zmITRXh2Pcd0MZcG7cTM2UXWD30IOISIq9dwLBpP8DIzBKvEuNwcud6aOrooY1r+Sf43r10Gi07dYeySvUuzybSETMxrBs7wGPsZACApc1XSEqMx/mThyWSQpMWbfFz6D5kZ2Ui/M+jCF7ij2Vrd0Kooyur0OVWlZNC2QG8MhWd/vmY+/fvAyjtKTx48AAqKv87kKuoqKBFixbw8/P7YBvLly9HYGCgRFmDrl4w7eYtdTzy6lVmPjJyC9FQRxW3EzPxRlQIHTVliTqKPB60VJXxhsYTatSfe0Lh0t8DLZy7AQCMG1kh83UKrhzbWy4pJDyOxutXLzBi+sKKmiK1QEdXHw0bSZ5ibtjIErf+uihRJlBVhbGpGYxNzdDYoRmmeQ3ExTPHMXCET12G+1moclIoO4B/SOfO0l1tUXbVkY+PD9asWQMtLenPh/v7+5dLWF1Dbkrdjjwz1ORDqKrMDSA/eJkNLVVlfGWsgScpIgBAWwttKPCAh6/ovo6aVFhQAJ6C5NCbgoIixBVcyX3n4imYWjWGiYVNXYVX79k1aYFX/z6XKHv173MYGJl8cDnGxCgqoh9QFalyUqjNy0Z37NhR7WX5fH65O6nl/dSRqrIiGuqoctMNhALYGmogO78I2XnFGNfJHJeepOFNTiEa6ggwpYs1/k3Pw83/v2Ip8U0ubsS/wXx3O6z48ymUFHmY3dMW5x+l0pVHNcy+jSMuHQmDtr4hjBpa4FViHK6dPIg2XSQHkvNzc/Dg5hX0Hj1JRpHWT70HeyDAdwyO7NsOJ5ceiIv5B+Gnj2LC9AUAgPy8PBzZtx1tHTtDR08fb7MycebEQaSnvYZj5+4yjl4+ycVLdrp27frB+RcvXvzg/PfJ+81rrRtpI3RUy3LlJ6NT8NOZp/h5SFM0NtKApkAJr98W4lZCOjZdTUB6zv8Gl7UESpjtZouONqU3r12MeY1V5+jmtZpWkJeLcwe24dHf1yDKyoCWrj5aOHdF1yFeUFL63ym8vy/8gZM712P+5sMQqH1+N4CV+RxvXrt78y/s27YeKS9fwNC4AXoPGYnu7gMBAIWFBVi77AfEPnmIt9mZ0NQUwtrOAYNGjoWNXRMZRy6durp5TS6SwowZMySmi4qKEBkZiYcPH8LLywtr1qyRqj15Twr13eeUFOqbzzEp1BefzR3NNSE4OLjC8kWLFkEkEtVxNIQQUn/Jxc1rlRk1ahS2b98u6zAIIaTekOukEBERUS9vXiOEEFmp1umjv/76C5s2bUJ8fDwOHToEU1NThIWFwdLSEh07dpS6vUGDBklMM8aQnJyMO3fuICAgoDohEkIIqQapewqHDx+Gm5sbVFVVcf/+fe5u4qysLCxbtqxaQQiFQok/XV1duLq64vTp01i4kG4EIoSQuiJ1T2HJkiUIDQ2Fp6cnfvvtN67c2dkZS5YsqVYQn3KfAiGEkJojdU8hJiamwjuXhUIhMjMzqx1IZmYmtm7dCn9/f6Snl96kde/ePbx8+bLabRJCCJGO1D0FY2NjxMXFwcLCQqL82rVrsLKyqlYQ0dHR6NatG7S1tZGYmIjx48dDV1cXR44cQVJSEnbv3l2tdgkhhEhH6p7C+PHj4evri1u3boHH4+HVq1fYu3cv/Pz8MGlS9W7xnzlzJnx8fBAbGytxtZG7uzuuXr1arTYJIYRIT+qewrx58yAWi9GtWzfk5uaic+fO4PP58PPzw9SpU6sVxO3bt7Fp06Zy5aampkhJSalWm4QQQqQndVLg8XhYsGABZs+ejbi4OIhEIjg4OEBDo/q3x/P5fGRnl3+659OnT2FgYFDtdgkhhEin2jevqaiowMHBAe3bt/+khAAA/fr1Q1BQEIqKSh/4xuPxkJSUhLlz52Lw4MGf1DYhhJCqk7qn0KVLlwpfnVlG2ieaAsCqVaswZMgQGBoaIi8vDy4uLkhJSUGHDh2wdOlSqdsjhBBSPVInhfdfj/n+E02rQygU4vz587h+/TqioqIgEonQunVrdO9OzzsnhJC6JHVSqK0nmoaHhyM8PBypqakQi8V48uQJ9u3bBwD0UDxCCKkjNfZAvE95omlgYCB69uyJ8PBwpKWlISMjQ+KPEEJI3aix9yl8yhNNQ0NDsXPnTowePbqmwiGEEFINUieF2niiaWFhIZycnKq1LCGEkJoj9emj2nii6bhx47jxA0IIIbIjVU+hpKQEPj4+aNasGXR0dGosiPz8fGzevBkXLlxA8+bNoaysLDF/9erVNbYuQgghlZMqKSgqKqJnz554/PhxjSaF6Oho7lLXhw8fSsz70D0RhBBCapbUYwpNmzbFs2fPYGlpWWNBXLp0qcbaIoQQUn1SjyksWbIEfn5+OHnyJJKTk5GdnS3xRwgh5PNV5Z5CUFAQZs2aBXd3dwClzyt699QOYww8Hg8lJSU1HyUhhJA6UeWkEBgYiIkTJ9KpHkII+YJVOSkwxgAALi4utRYMIYQQ2ZJqTIGuBCKEkC+bVFcfNW7c+KOJIT09/ZMCIoQQIjtSJYXAwEAIhcLaioUQQoiMSZUUhg8fDkNDw9qKhRBCiIxVeUyBxhMIIeTLV+WkUHb1ESGEkC9XlU8ficXi2oyDEEKIHKixN68RQgj5/FFSIIQQwqGkQAghhENJgRBCCIeSAiGEEA4lBUIIIRxKCoQQQjiUFAghhHAoKRBCCOFQUiCEEMKhpEAIIYRDSYEQQgiHkgIhhBCOVC/Z+Vx4u1rIOgTyAa1MdWQdAqnEkI0Rsg6BVOJuQJc6WQ/1FAghhHAoKRBCCOFQUiCEEMKhpEAIIYRDSYEQQgiHkgIhhBAOJQVCCCEcSgqEEEI4lBQIIYRwKCkQQgjhUFIghBDCoaRACCGEQ0mBEEIIh5ICIYQQDiUFQgghHEoKhBBCOJQUCCGEcCgpEEII4VBSIIQQwqGkQAghhENJgRBCCIeSAiGEEA4lBUIIIRxKCoQQQjiUFAghhHAoKRBCCOFQUiCEEMKRm6Tw119/YdSoUXB0dMTLly8BAGFhYbh27ZqMIyOEkPpDLpLC4cOH4ebmBlVVVdy/fx8FBQUAgKysLCxbtkzG0RFCSP0hF0lhyZIlCA0NxZYtW6CsrMyVOzs74969ezKMjBBC6he5SAoxMTHo3LlzuXKhUIjMzMy6D4gQQuopuUgKxsbGiIuLK1d+7do1WFlZySAiQgipn+QiKYwfPx6+vr64desWeDweXr16hb1798LPzw+TJk2SdXiEEFJvKMk6AACYN28exGIxunXrhtzcXHTu3Bl8Ph9+fn6YOnWqrMMjhJB6Qy6SAo/Hw4IFCzB79mzExcVBJBLBwcEBGhoasg6NEELqFbk4fbRnzx7k5uZCRUUFDg4OaN++PSUEQgiRAblICjNmzIChoSE8PDxw+vRplJSUyDokQgipl+QiKSQnJ+O3334Dj8fD0KFDYWJigsmTJ+PGjRuyDo0QQuoVuUgKSkpK6NOnD/bu3YvU1FQEBwcjMTERXbp0gbW1tazDI4SQekMuBprfpaamBjc3N2RkZOD58+d4/PixrEMihJB6Qy56CgCQm5uLvXv3wt3dHaampggJCcHAgQPxzz//yDo0QgipN+SipzB8+HCcPHkSampqGDp0KAICAuDo6CjrsAghpN6Ri6SgqKiIgwcPws3NDYqKirIOhxBC6i25SAp79+6VdQiEEEIgw6Swdu1aTJgwAQKBAGvXrv1g3WnTptVRVIQQUr/JLCkEBwdj5MiREAgECA4OrrQej8erF0mhMC8XEUd3If7eDeRmZ8KwkTU6e0yCsZUdACAnKwPXf9+GpH/uoiA3B6aNm8Jl5GToGJvKOPL65UDYNuwIXYsB347ExOlzAACv/n2BrRtW4Z/oSBQVFqJNB2d8P2MedHT1ZBztl6dVIyE8HRvB3kQTBpp8zDr4AJdj0rj5i/p9hb4tTCSWuRH3BlP3RwMATIQCjOtkjnYWOtDTUEHa20KcfpiCbX89R7GY1em2yCuZJYWEhIQK/11fXdgRjDcvE+E2fg7UtXXxJOIijv4yD6OXboG6th5OrguEgqIi+kxdBL6qGu6dPcLNV+YLZB1+vRDz+CFOHz8ES5vGXFl+Xi4WzJgIS5vGWLF2CwBg95YNWDhnKkI274GCgtxc4PdFUFVWxNP/RDgRmYxfhjarsM71uDcIPPGEmy4sEXP/ttBXgwKPh2WnY/AiPQ/Whur4ofdXUFVWRMiF+FqP/3MgF9/YoKAg5ObmlivPy8tDUFCQDCKqW8WFBYi7ew0dh46DqV0zaBuZosOA0dA2bIDoiyeR+d9LpMQ/RlfPqTC2soOOiRm6ek5FcWEBYm5eknX49UJebi5WBvrDd+5CaGhqceX/REfiv5RXmPXDYlha28LS2hZ+PyxG7JNHiLz7twwj/jLdiE/HxssJuPRO7+B9RSVivMkp5P7e5hdz8yLi0xH4xxPcfJaBl5n5uPr0DcJuJqHLVwZ1Ef5nQS6SQmBgIEQiUbny3NxcBAYGyiCiuiUuKQETi6GorCJRrqjCx6vYf1BSVFQ6/c58noICFJWU8SqW7uOoCxtWLUN7x85o3a6DRHlRUSHA40H5nX2jrMIHT0EB/0Tfr+swCYA25to4P9MZh7//Gv7fNIZQ9cMnRDT4SsjOK6qj6OSfXCQFxhh4PF658qioKOjq6n5w2YKCAmRnZ0v8FRUW1FaotUJFVQ0m1vb4+8Q+iDLeQCwuwZMb4UiJe4ycrHTomJhBU88QNw5tR37OW5QUF+HOqQMQZaQhJzNd1uF/8S5f+BNxTx/DZ2L5sa2vmjSHQKCK7b+GID8/D/l5udi6fhXEJSVIf/NaBtHWbzfi0/Hj8ceYtCcS68Lj0dpcG2tHtIBC+cMLAKChjiqGt2uII/de1W2gckymSUFHRwe6urrg8Xho3LgxdHV1uT+hUIgePXpg6NChH2xj+fLlEAqFEn/nwjbW0RbUnJ4T5gBg2DbTA+vH90HkhWNo/LUreDweFJWU0HvKj8hIeYlNU4Zgw3f98O+TKJg3awdeZd92UiNe/5eC0JCVmLNwOVT4/HLztXV0sWDxz7h1/QoGdnfEILeOEInewsbOHgo8ufjNVa+c+ycVV5++QVxqDi7HpGH6b9FoaqqFNuY65eoaaKpgvUdzXHiciqP3k2UQrXyS6X0KISEhYIxhzJgxCAwMhFAo5OapqKjAwsLio3c2+/v7Y+bMmRJlO+59fjtY27ABhsz7BUUF+SjMy4G6th5O/7oUQoPSKymMLGwxMmgjCnJzUFJcBDUtbfy2eBqMLBp/pGXyKWJjHiEzIx1TxgznysQlJXgYeRcnjvyGPy7dRpuvnbDj91PIysyAoqIiNDS1MKJvVxh3ayjDyAkAvMzMR0ZOIcx0VXE7MYMr19dQwabRrRD1bzaWnIyRYYTyR6ZJwcvLCwBgaWkJJycnKCsrS90Gn88H/71fcMoqn+8pFWW+AMp8AfJz3uL5w7voOHScxHy+mjoAICPlJVITYuE40EsWYdYbLdt8jdCwQxJlq5YuhJm5BYaO8pG4A1+oXfprNPLuLWRmpKNDR9e6DJVUwFCTD6GaMtJE/zulbKBZmhAeJ79F4InHoAtRJcksKWRnZ0NLq/QqjlatWiEvLw95eXkV1i2r9yV7/uAOGBh0jM2QmfoS1w5sha6JGRw69gQAxN6+ClVNITR1DZH2bwKu7AuFVWtHmDdtI+PIv2xq6uqwsLKVKBOoqkJLS5srP3fqGMzMrSDU1sHjf6IQGrISA4eNgpm5hQwi/rKpKivCTFeVm26gLUBjIw1k5xUhK68YEzpbIPzJa7wRFaKhjip8u1vjRXoeIuJLfygaaKpg8+hWSM7KR8iFOOio/e8CgTc5hXW+PfJIZklBR0cHycnJMDQ0hLa2doUDzWUD0PXhTWwFeTm4cWgHRBlp4KtrwqaNM5wG+0BRqXQX5WSm4+r+TcjNzoS6ti7snbqjfT8PGUdNAODfpETsCF2Lt9lZMDJpgOFe4zBo2GhZh/VFcmigic2erbjpWT1LE/MfUclYfvopbI000KeFMTQFSnj9tgA3n2Vg4+VnKCop7Q90sNRFIz01NNJTw5npzhJtt1lMl3cDAI8xJpPe05UrV+Ds7AwlJSVcuXLlg3VdXFykavvXG4mfEBmpbd80NpZ1CKQSQzZGyDoEUom7AV3qZD0y6ym8e6CX9qBPCCGkdsjFNXNnzpzBtWvXuOkNGzagZcuW8PDwQEZGxgeWJIQQUpPkIinMnj0b2dnZAIAHDx5g5syZcHd3R0JCQrnLTQkhhNQeuXifQkJCAhwcHAAAhw8fRt++fbFs2TLcu3cP7u7uMo6OEELqD7noKaioqHAPxLtw4QJ69iy9DFNXV5frQRBCCKl9ctFT6NixI2bOnAlnZ2f8/fffOHDgAADg6dOnaNiQ7golhJC6Ihc9hfXr10NJSQmHDh3Cxo0bYWpa+uKYP//8E7169ZJxdIQQUn/IRU+hUaNGOHnyZLnyD72RjRBCSM2Ti6QAACUlJTh27BgeP34MAGjSpAn69esn8WwZQgghtUsukkJcXBzc3d3x8uVL2NmVvpN4+fLlMDMzw6lTp2BtbS3jCAkhpH6QizGFadOmwdraGi9evMC9e/dw7949JCUlwdLSEtOmlX+xCSGEkNohFz2FK1eu4ObNmxJvWdPT08OKFSvg7Oz8gSUJIYTUJLnoKfD5fLx9+7ZcuUgkgoqKSgVLEEIIqQ1ykRT69OmDCRMm4NatW2CMgTGGmzdvYuLEiejXr5+swyOEkHpDLpLC2rVrYW1tDUdHRwgEAggEAjg5OcHGxgZr1qyRdXiEEFJvyMWYgra2No4fP464uDg8evQIAODg4AAbGxsZR0YIIfWLXCQFANi2bRuCg4MRGxsLALC1tcX06dMxbty4jyxJCCGkpshFUvjxxx+xevVqTJ06FY6OjgCAiIgIzJgxA0lJSQgKCpJxhIQQUj/IRVLYuHEjtmzZghEjRnBl/fr1Q/PmzTF16lRKCoQQUkfkYqC5qKgIbdu2LVfepk0bFBcXyyAiQgipn+QiKYwePRobN24sV75582aMHDlSBhERQkj9JBenj4DSgeZz586hQ4cOAIBbt24hKSkJnp6eEq/kXL16taxCJISQL55cJIWHDx+idevWAID4+HgAgL6+PvT19fHw4UOuHo/Hk0l8hBBSX8hFUrh06ZKsQyCEEAI5GVMghBAiHygpEEII4VBSIIQQwqGkQAghhENJgRBCCIeSAiGEEA4lBUIIIRxKCoQQQjiUFAghhHAoKRBCCOFQUiCEEMKhpEAIIYRDSYEQQgiHkgIhhBAOJQVCCCEcSgqEEEI4lBQIIYRwKCkQQgjhUFIghBDCoaRACCGEQ0mBEEIIh5ICIYQQDo8xxmQdBKlcQUEBli9fDn9/f/D5fFmHQ95B+0a+0f6pHkoKci47OxtCoRBZWVnQ0tKSdTjkHbRv5Bvtn+qh00eEEEI4lBQIIYRwKCkQQgjhUFKQc3w+HwsXLqSBMjlE+0a+0f6pHhpoJoQQwqGeAiGEEA4lBUIIIRxKCoQQQjiUFL4gixYtQsuWLWUdBqkBFhYWCAkJkXUYn6XLly+Dx+MhMzPzg/XoM64YJYXPFI/Hw7FjxyTK/Pz8EB4eLpuA6jlXV1dMnz5d1mEQAE5OTkhOToZQKAQA7Ny5E9ra2uXq3b59GxMmTKjj6OSfkqwDIDVHQ0MDGhoasg6DVIIxhpKSEigp0X+72qSiogJjY+OP1jMwMKiDaD4/1FOQkqurK6ZNm4Y5c+ZAV1cXxsbGWLRoETc/MzMT48aNg4GBAbS0tNC1a1dERUVJtLFkyRIYGhpCU1MT48aNw7x58yRO+9y+fRs9evSAvr4+hEIhXFxccO/ePW6+hYUFAGDgwIHg8Xjc9Lunj86dOweBQFCuC+3r64uuXbty09euXUOnTp2gqqoKMzMzTJs2DTk5OZ/8OcmTT91n3t7eGDBggESb06dPh6urKzf/ypUrWLNmDXg8Hng8HhITE7nTGH/++SfatGkDPp+Pa9euIT4+Hv3794eRkRE0NDTQrl07XLhwoQ4+Cfnh6uqKKVOmYMqUKRAKhdDX10dAQADKrpDPyMiAp6cndHR0oKamhm+++QaxsbHc8s+fP0ffvn2ho6MDdXV1NGnSBKdPnwYgefro8uXL8PHxQVZWFrdvyvb9u6ePPDw8MGzYMIkYi4qKoK+vj927dwMAxGIxli9fDktLS6iqqqJFixY4dOhQLX9SdY+SQjXs2rUL6urquHXrFlauXImgoCCcP38eAPDtt98iNTUVf/75J+7evYvWrVujW7duSE9PBwDs3bsXS5cuxU8//YS7d++iUaNG2Lhxo0T7b9++hZeXF65du4abN2/C1tYW7u7uePv2LYDSpAEAO3bsQHJyMjf9rm7dukFbWxuHDx/mykpKSnDgwAGMHDkSABAfH49evXph8ODBiI6OxoEDB3Dt2jVMmTKl5j80GfuUffYxa9asgaOjI8aPH4/k5GQkJyfDzMyMmz9v3jysWLECjx8/RvPmzSESieDu7o7w8HDcv38fvXr1Qt++fZGUlFQr2y6vdu3aBSUlJfz9999Ys2YNVq9eja1btwIoTbR37tzBiRMnEBERAcYY3N3dUVRUBACYPHkyCgoKcPXqVTx48AA//fRThb1kJycnhISEQEtLi9s3fn5+5eqNHDkSf/zxB0QiEVd29uxZ5ObmYuDAgQCA5cuXY/fu3QgNDcU///yDGTNmYNSoUbhy5UptfDyyw4hUXFxcWMeOHSXK2rVrx+bOncv++usvpqWlxfLz8yXmW1tbs02bNjHGGPv666/Z5MmTJeY7OzuzFi1aVLrOkpISpqmpyf744w+uDAA7evSoRL2FCxdKtOPr68u6du3KTZ89e5bx+XyWkZHBGGNs7NixbMKECRJt/PXXX0xBQYHl5eVVGs/n5lP3mZeXF+vfv7/EfF9fX+bi4iKxDl9fX4k6ly5dYgDYsWPHPhpjkyZN2Lp167hpc3NzFhwc/PGN+0y5uLgwe3t7JhaLubK5c+cye3t79vTpUwaAXb9+nZuXlpbGVFVV2cGDBxljjDVr1owtWrSowrbLPvey7/mOHTuYUCgsV+/dz7ioqIjp6+uz3bt3c/NHjBjBhg0bxhhjLD8/n6mpqbEbN25ItDF27Fg2YsQIqbdfnlFPoRqaN28uMW1iYoLU1FRERUVBJBJBT0+PO7+voaGBhIQExMfHAwBiYmLQvn17ieXfn/7vv/8wfvx42NraQigUQktLCyKRSOpfkiNHjsTly5fx6tUrAKW9lN69e3ODblFRUdi5c6dErG5ubhCLxUhISJBqXfLuU/bZp2rbtq3EtEgkgp+fH+zt7aGtrQ0NDQ08fvy43vUUOnToAB6Px007OjoiNjYWjx49gpKSEr7++mtunp6eHuzs7PD48WMAwLRp07BkyRI4Oztj4cKFiI6O/qRYlJSUMHToUOzduxcAkJOTg+PHj3O96ri4OOTm5qJHjx4S35Pdu3fX2PdEXtCIVzUoKytLTPN4PIjFYohEIpiYmODy5cvllqno6ofKeHl54c2bN1izZg3Mzc3B5/Ph6OiIwsJCqeJs164drK2t8dtvv2HSpEk4evQodu7cyc0XiUT47rvvMG3atHLLNmrUSKp1ybtP2WcKCgrcue4yZacxqkJdXV1i2s/PD+fPn8cvv/wCGxsbqKqqYsiQIVLv3/ps3LhxcHNzw6lTp3Du3DksX74cq1atwtSpU6vd5siRI+Hi4oLU1FScP38eqqqq6NWrFwBwp5VOnToFU1NTieW+tGcrUVKoQa1bt0ZKSgqUlJS4wd/32dnZ4fbt2/D09OTK3h8TuH79On799Ve4u7sDAF68eIG0tDSJOsrKyigpKfloTCNHjsTevXvRsGFDKCgooHfv3hLxPnr0CDY2NlXdxC9OVfaZgYEBHj58KFEWGRkpkWhUVFSqtD+A0v3r7e3NnasWiURITEysVvyfs1u3bklMl42fOTg4oLi4GLdu3YKTkxMA4M2bN4iJiYGDgwNX38zMDBMnTsTEiRPh7++PLVu2VJgUqrpvnJycYGZmhgMHDuDPP//Et99+y+1jBwcH8Pl8JCUlwcXF5VM2W+7R6aMa1L17dzg6OmLAgAE4d+4cEhMTcePGDSxYsAB37twBAEydOhXbtm3Drl27EBsbiyVLliA6OlqiG21ra4uwsDA8fvwYt27dwsiRI6GqqiqxLgsLC4SHhyMlJQUZGRmVxjRy5Ejcu3cPS5cuxZAhQyR+1cydOxc3btzAlClTEBkZidjYWBw/fvyLHGiuTFX2WdeuXXHnzh3s3r0bsbGxWLhwYbkkYWFhgVu3biExMRFpaWkQi8WVrtPW1hZHjhxBZGQkoqKi4OHh8cH6X6qkpCTMnDkTMTEx2L9/P9atWwdfX1/Y2tqif//+GD9+PK5du4aoqCiMGjUKpqam6N+/P4DSq7/Onj2LhIQE3Lt3D5cuXYK9vX2F67GwsIBIJEJ4eDjS0tKQm5tbaUweHh4IDQ3F+fPnuVNHAKCpqQk/Pz/MmDEDu3btQnx8PO7du4d169Zh165dNfvByBglhRrE4/Fw+vRpdO7cGT4+PmjcuDGGDx+O58+fw8jICEDpQdrf3x9+fn5o3bo1EhIS4O3tDYFAwLWzbds2ZGRkoHXr1hg9ejSmTZsGQ0NDiXWtWrUK58+fh5mZGVq1alVpTDY2Nmjfvj2io6MlvuRA6Xn2K1eu4OnTp+jUqRNatWqFH3/8EQ0aNKjBT0W+VWWfubm5ISAgAHPmzEG7du3w9u1biZ4eUHpKSFFREQ4ODjAwMPjg+MDq1auho6MDJycn9O3bF25ubmjdunWtbqc88vT0RF5eHtq3b4/JkyfD19eXu5lsx44daNOmDfr06QNHR0cwxnD69Gnul3tJSQkmT54Me3t79OrVC40bN8avv/5a4XqcnJwwceJEDBs2DAYGBli5cmWlMY0cORKPHj2CqakpnJ2dJeYtXrwYAQEBWL58ObfeU6dOwdLSsoY+EflAj86WAz169ICxsTHCwsJkHQohdcLV1RUtW7akx0zIIRpTqGO5ubkIDQ2Fm5sbFBUVsX//fly4cIG7Zp4QQmSJkkIdKztdsXTpUuTn58POzg6HDx9G9+7dZR0aIYTQ6SNCCCH/QwPNhBBCOJQUCCGEcCgpEEII4VBSIIQQwqGkQAghhENJgXyx3n85jqxemVnVdwZ/iopeBCStuoiTyD9KCqROeXt7c2/AUlFRgY2NDYKCglBcXFzr6z5y5AgWL15cpbp1fYCkl8gTeUE3r5E616tXL+zYsQMFBQU4ffo0Jk+eDGVlZfj7+5erW1hYCBUVlRpZr66ubo20Q8iXjHoKpM7x+XwYGxvD3NwckyZNQvfu3XHixAkA/zsNsnTpUjRo0AB2dnYASh8fPnToUGhra0NXVxf9+/eXeNx0SUkJZs6cCW1tbejp6WHOnDnl3oHw/umjgoICzJ07F2ZmZuDz+bCxscG2bduQmJiILl26AAB0dHTA4/Hg7e0NoGrv6T19+jQaN24MVVVVdOnS5ZMfi11SUoKxY8dy67Szs8OaNWsqrBsYGMi9a3rixIkS72ioL+8YJp+GegpE5lRVVfHmzRtuOjw8HFpaWtzzoIqKiuDm5gZHR0f89ddfUFJSwpIlS9CrVy9ER0dDRUUFq1atws6dO7F9+3bY29tj1apVOHr0KLp27Vrpej09PREREYG1a9eiRYsWSEhIQFpaGszMzHD48GEMHjwYMTEx0NLS4h5dvnz5cuzZswehoaGwtbXF1atXMWrUKBgYGMDFxQUvXrzAoEGDMHnyZEyYMAF37tzBrFmzPunzEYvFaNiwIX7//Xfo6enhxo0bmDBhAkxMTDB06FCJz00gEODy5ctITEyEj48P9PT0sHTp0irFTggAekczqVvvvu9YLBaz8+fPMz6fz/z8/Lj5RkZGrKCggFsmLCyM2dnZSbzPt6CggKmqqrKzZ88yxhgzMTFhK1eu5OYXFRWxhg0bSrxb+d33KMfExDAA7Pz58xXG+f57fhmr2nt6/f39mYODg8T8uXPnlmvrfdK+k3ny5Mls8ODB3LSXlxfT1dVlOTk5XNnGjRuZhoYGKykpqVLsFW0zqX+op0Dq3MmTJ6GhoYGioiKIxWJ4eHhg0aJF3PxmzZpJjCNERUUhLi4OmpqaEu3k5+cjPj4eWVlZSE5Olninr5KSEtq2bVvuFFKZyMhIKCoqSvUL+d339L6rsLCQe6fF48ePJeIASt89/Kk2bNiA7du3IykpCXl5eSgsLETLli0l6rRo0QJqamoS6xWJRHjx4gVEItFHYycEoNNHRAa6dOmCjRs3QkVFBQ0aNICSkuTX8P13GotEIrRp04Z7qfq7DAwMqhXD+2+yqwpZvaf3t99+g5+fH1atWgVHR0doamri559/Lvc6yw+pT+8YJp+GkgKpc+rq6lK9F7p169Y4cOAADA0NoaWlVWEdExMT3Lp1C507dwYAFBcX4+7du5W+0axZs2YQi8W4cuVKhY8tL+upvPtu36q8p9fe3p4bNC9z8+bNj2/kB1y/fh1OTk74/vvvubL4+Phy9aKiopCXl8clvJs3b0JDQwNmZmbQ1dWtN+8YJp+Grj4icm/kyJHQ19dH//798ddffyEhIQGXL1/GtGnT8O+//wIAfH19sWLFChw7dgxPnjzB999//8F7DCwsLODl5YUxY8bg2LFjXJsHDx4EAJibm4PH4+HkyZN4/fo1RCJRld7TO3HiRMTGxmL27NmIiYnBvn37sHPnzipt58uXLxEZGSnxl5GRAVtbW9y5cwdnz57F06dPERAQgNu3b5dbvrCwEGPHjsWjR49w+vRpLFy4EFOmTIGCgkK9escw+USyHtQg9cu7A83SzE9OTmaenp5MX1+f8fl8ZmVlxcaPH8+ysrIYY6UDy76+vkxLS4tpa2uzmTNnMk9Pz0oHmhljLC8vj82YMYOZmJgwFRUVZmNjw7Zv387NDwoKYsbGxozH4zEvLy/GWOngeEhICLOzs2PKysrMwMCAubm5sStXrnDL/fHHH8zGxobx+XzWqVMntn379ioNNAMo9xcWFsby8/OZt7c3EwqFTFtbm02aNInNmzePtWjRotzn9uOPPzI9PT2moaHBxo8fz/Lz87k6H4udBpoJY4zRS3YIIYRw6PQRIYQQDiUFQgghHEoKhBBCOJQUCCGEcCgpEEII4VBSIIQQwqGkQAghhENJgRBCCIeSAiGEEA4lBUIIIRxKCoQQQjj/B3esPuQkWOYhAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "K-Nearest Neighbors\n",
      "Accuracy: 0.4989\n",
      "Precision: 0.5077\n",
      "Recall: 0.4989\n",
      "F1 Score: 0.4878\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.46      0.70      0.55       300\n",
      "     neutral       0.43      0.29      0.35       300\n",
      "    positive       0.63      0.51      0.56       300\n",
      "\n",
      "    accuracy                           0.50       900\n",
      "   macro avg       0.51      0.50      0.49       900\n",
      "weighted avg       0.51      0.50      0.49       900\n",
      "\n",
      "\n",
      "Best hyperparameters found by GridSearchCV:\n",
      "{'algorithm': 'auto', 'metric': 'euclidean', 'n_neighbors': 9, 'weights': 'distance'}\n"
     ]
    }
   ],
   "source": [
    "# Define the K-Nearest Neighbors model\n",
    "knn = KNeighborsClassifier()\n",
    "# Define the hyperparameters for grid search\n",
    "param_grid = {\n",
    " 'n_neighbors': [1, 3, 5, 7, 9], # Number of neighbors to use\n",
    " 'weights': ['uniform', 'distance'], # Weight function used in prediction\n",
    " 'metric': ['euclidean', 'manhattan'], # Distance metric\n",
    " 'algorithm': ['auto', 'ball_tree', 'kd_tree', 'brute'] #Algorithm to compute the nearest neighbors\n",
    "}\n",
    "# Initialize GridSearchCV\n",
    "grid_search = GridSearchCV(estimator=knn, param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)\n",
    "# Fit the grid search to the data\n",
    "grid_search.fit(X_train, y_train)\n",
    "# Get the best estimator from grid search\n",
    "best_knn = grid_search.best_estimator_\n",
    "# Make predictions using the best model\n",
    "y_pred = best_knn.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('K-Nearest Neighbors', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    "    if key == 'Classification Report':\n",
    "        print(value) # Print report separately for better readability\n",
    "    else:\n",
    "        print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n",
    "# Print the best hyperparameters found by grid search\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV:\")\n",
    "print(grid_search.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7e73e07c-11dc-4c8d-a7b4-8ad036037f04",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
