{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"id": "92e48866",
"metadata": {},
"source": [
"## Model Training"
]
},
{
"cell_type": "markdown",
"id": "25791a74",
"metadata": {},
"source": [
"#### 1.1 Import Data and Required Packages\n",
"##### Importing Pandas, Numpy, Matplotlib, Seaborn and Warings Library."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "0f4cd21f-8f72-42f0-b92b-c848a74a9755",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting catboost\n",
" Downloading catboost-1.2.5-cp311-cp311-manylinux2014_x86_64.whl.metadata (1.2 kB)\n",
"Collecting graphviz (from catboost)\n",
" Downloading graphviz-0.20.3-py3-none-any.whl.metadata (12 kB)\n",
"Requirement already satisfied: matplotlib in /home/adarsh/anaconda3/lib/python3.11/site-packages (from catboost) (3.8.0)\n",
"Requirement already satisfied: numpy>=1.16.0 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from catboost) (1.26.4)\n",
"Requirement already satisfied: pandas>=0.24 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from catboost) (2.1.4)\n",
"Requirement already satisfied: scipy in /home/adarsh/anaconda3/lib/python3.11/site-packages (from catboost) (1.11.4)\n",
"Requirement already satisfied: plotly in /home/adarsh/anaconda3/lib/python3.11/site-packages (from catboost) (5.9.0)\n",
"Requirement already satisfied: six in /home/adarsh/anaconda3/lib/python3.11/site-packages (from catboost) (1.16.0)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from pandas>=0.24->catboost) (2.8.2)\n",
"Requirement already satisfied: pytz>=2020.1 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from pandas>=0.24->catboost) (2023.3.post1)\n",
"Requirement already satisfied: tzdata>=2022.1 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from pandas>=0.24->catboost) (2023.3)\n",
"Requirement already satisfied: contourpy>=1.0.1 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from matplotlib->catboost) (1.2.0)\n",
"Requirement already satisfied: cycler>=0.10 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from matplotlib->catboost) (0.11.0)\n",
"Requirement already satisfied: fonttools>=4.22.0 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from matplotlib->catboost) (4.25.0)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from matplotlib->catboost) (1.4.4)\n",
"Requirement already satisfied: packaging>=20.0 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from matplotlib->catboost) (23.1)\n",
"Requirement already satisfied: pillow>=6.2.0 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from matplotlib->catboost) (10.2.0)\n",
"Requirement already satisfied: pyparsing>=2.3.1 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from matplotlib->catboost) (3.0.9)\n",
"Requirement already satisfied: tenacity>=6.2.0 in /home/adarsh/anaconda3/lib/python3.11/site-packages (from plotly->catboost) (8.2.2)\n",
"Downloading catboost-1.2.5-cp311-cp311-manylinux2014_x86_64.whl (98.2 MB)\n",
"\u001b[2K \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.2/98.2 MB\u001b[0m \u001b[31m206.5 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0mm eta \u001b[36m0:00:01\u001b[0m[36m0:00:11\u001b[0m\n",
"\u001b[?25hDownloading graphviz-0.20.3-py3-none-any.whl (47 kB)\n",
"\u001b[2K \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m47.1/47.1 kB\u001b[0m \u001b[31m183.3 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m1m394.2 kB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hInstalling collected packages: graphviz, catboost\n",
"Successfully installed catboost-1.2.5 graphviz-0.20.3\n"
]
}
],
"source": [
"!pip3 install catboost"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "b080dfb2",
"metadata": {},
"outputs": [
{
"ename": "ModuleNotFoundError",
"evalue": "No module named 'xgboost'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[5], line 16\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01msklearn\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodel_selection\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m RandomizedSearchCV\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mcatboost\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m CatBoostRegressor\n\u001b[0;32m---> 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mxgboost\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m XGBRegressor\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mwarnings\u001b[39;00m\n",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'xgboost'"
]
}
],
"source": [
"# Basic Import\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt \n",
"import seaborn as sns\n",
"# Modelling\n",
"from sklearn.metrics import mean_squared_error, r2_score\n",
"from sklearn.neighbors import KNeighborsRegressor\n",
"from sklearn.tree import DecisionTreeRegressor\n",
"from sklearn.ensemble import RandomForestRegressor,AdaBoostRegressor\n",
"from sklearn.svm import SVR\n",
"from sklearn.linear_model import LinearRegression, Ridge,Lasso\n",
"from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error\n",
"from sklearn.model_selection import RandomizedSearchCV\n",
"from catboost import CatBoostRegressor\n",
"from xgboost import XGBRegressor\n",
"import warnings"
]
},
{
"cell_type": "markdown",
"id": "e45079ad",
"metadata": {},
"source": [
"#### Import the CSV Data as Pandas DataFrame"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e11c6255",
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('data/stud.csv')"
]
},
{
"cell_type": "markdown",
"id": "20634923",
"metadata": {},
"source": [
"#### Show Top 5 Records"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "e7e412a2",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" gender | \n",
" race_ethnicity | \n",
" parental_level_of_education | \n",
" lunch | \n",
" test_preparation_course | \n",
" math_score | \n",
" reading_score | \n",
" writing_score | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" female | \n",
" group B | \n",
" bachelor's degree | \n",
" standard | \n",
" none | \n",
" 72 | \n",
" 72 | \n",
" 74 | \n",
"
\n",
" \n",
" 1 | \n",
" female | \n",
" group C | \n",
" some college | \n",
" standard | \n",
" completed | \n",
" 69 | \n",
" 90 | \n",
" 88 | \n",
"
\n",
" \n",
" 2 | \n",
" female | \n",
" group B | \n",
" master's degree | \n",
" standard | \n",
" none | \n",
" 90 | \n",
" 95 | \n",
" 93 | \n",
"
\n",
" \n",
" 3 | \n",
" male | \n",
" group A | \n",
" associate's degree | \n",
" free/reduced | \n",
" none | \n",
" 47 | \n",
" 57 | \n",
" 44 | \n",
"
\n",
" \n",
" 4 | \n",
" male | \n",
" group C | \n",
" some college | \n",
" standard | \n",
" none | \n",
" 76 | \n",
" 78 | \n",
" 75 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" gender race_ethnicity parental_level_of_education lunch \\\n",
"0 female group B bachelor's degree standard \n",
"1 female group C some college standard \n",
"2 female group B master's degree standard \n",
"3 male group A associate's degree free/reduced \n",
"4 male group C some college standard \n",
"\n",
" test_preparation_course math_score reading_score writing_score \n",
"0 none 72 72 74 \n",
"1 completed 69 90 88 \n",
"2 none 90 95 93 \n",
"3 none 47 57 44 \n",
"4 none 76 78 75 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "markdown",
"id": "fbd32281",
"metadata": {},
"source": [
"#### Preparing X and Y variables"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "56d72fde",
"metadata": {},
"outputs": [],
"source": [
"X = df.drop(columns=['math_score'],axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "cd613177",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" gender | \n",
" race_ethnicity | \n",
" parental_level_of_education | \n",
" lunch | \n",
" test_preparation_course | \n",
" reading_score | \n",
" writing_score | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" female | \n",
" group B | \n",
" bachelor's degree | \n",
" standard | \n",
" none | \n",
" 72 | \n",
" 74 | \n",
"
\n",
" \n",
" 1 | \n",
" female | \n",
" group C | \n",
" some college | \n",
" standard | \n",
" completed | \n",
" 90 | \n",
" 88 | \n",
"
\n",
" \n",
" 2 | \n",
" female | \n",
" group B | \n",
" master's degree | \n",
" standard | \n",
" none | \n",
" 95 | \n",
" 93 | \n",
"
\n",
" \n",
" 3 | \n",
" male | \n",
" group A | \n",
" associate's degree | \n",
" free/reduced | \n",
" none | \n",
" 57 | \n",
" 44 | \n",
"
\n",
" \n",
" 4 | \n",
" male | \n",
" group C | \n",
" some college | \n",
" standard | \n",
" none | \n",
" 78 | \n",
" 75 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" gender race_ethnicity parental_level_of_education lunch \\\n",
"0 female group B bachelor's degree standard \n",
"1 female group C some college standard \n",
"2 female group B master's degree standard \n",
"3 male group A associate's degree free/reduced \n",
"4 male group C some college standard \n",
"\n",
" test_preparation_course reading_score writing_score \n",
"0 none 72 74 \n",
"1 completed 90 88 \n",
"2 none 95 93 \n",
"3 none 57 44 \n",
"4 none 78 75 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "f237ea14",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Categories in 'gender' variable: ['female' 'male']\n",
"Categories in 'race_ethnicity' variable: ['group B' 'group C' 'group A' 'group D' 'group E']\n",
"Categories in'parental level of education' variable: [\"bachelor's degree\" 'some college' \"master's degree\" \"associate's degree\"\n",
" 'high school' 'some high school']\n",
"Categories in 'lunch' variable: ['standard' 'free/reduced']\n",
"Categories in 'test preparation course' variable: ['none' 'completed']\n"
]
}
],
"source": [
"print(\"Categories in 'gender' variable: \",end=\" \" )\n",
"print(df['gender'].unique())\n",
"\n",
"print(\"Categories in 'race_ethnicity' variable: \",end=\" \")\n",
"print(df['race_ethnicity'].unique())\n",
"\n",
"print(\"Categories in'parental level of education' variable:\",end=\" \" )\n",
"print(df['parental_level_of_education'].unique())\n",
"\n",
"print(\"Categories in 'lunch' variable: \",end=\" \" )\n",
"print(df['lunch'].unique())\n",
"\n",
"print(\"Categories in 'test preparation course' variable: \",end=\" \" )\n",
"print(df['test_preparation_course'].unique())"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "924b7f9d",
"metadata": {},
"outputs": [],
"source": [
"y = df['math_score']"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "ffc69816",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 72\n",
"1 69\n",
"2 90\n",
"3 47\n",
"4 76\n",
" ..\n",
"995 88\n",
"996 62\n",
"997 59\n",
"998 68\n",
"999 77\n",
"Name: math_score, Length: 1000, dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "1e290fe3",
"metadata": {},
"outputs": [],
"source": [
"# Create Column Transformer with 3 types of transformers\n",
"num_features = X.select_dtypes(exclude=\"object\").columns\n",
"cat_features = X.select_dtypes(include=\"object\").columns\n",
"\n",
"from sklearn.preprocessing import OneHotEncoder, StandardScaler\n",
"from sklearn.compose import ColumnTransformer\n",
"\n",
"numeric_transformer = StandardScaler()\n",
"oh_transformer = OneHotEncoder()\n",
"\n",
"preprocessor = ColumnTransformer(\n",
" [\n",
" (\"OneHotEncoder\", oh_transformer, cat_features),\n",
" (\"StandardScaler\", numeric_transformer, num_features), \n",
" ]\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "9c68f99a",
"metadata": {},
"outputs": [],
"source": [
"X = preprocessor.fit_transform(X)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "72459f1d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1000, 19)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.shape"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "ed5c4e99",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((800, 19), (200, 19))"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# separate dataset into train and test\n",
"from sklearn.model_selection import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=42)\n",
"X_train.shape, X_test.shape"
]
},
{
"cell_type": "markdown",
"id": "4cd80317",
"metadata": {},
"source": [
"#### Create an Evaluate Function to give all metrics after model Training"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "8c247bd0",
"metadata": {},
"outputs": [],
"source": [
"def evaluate_model(true, predicted):\n",
" mae = mean_absolute_error(true, predicted)\n",
" mse = mean_squared_error(true, predicted)\n",
" rmse = np.sqrt(mean_squared_error(true, predicted))\n",
" r2_square = r2_score(true, predicted)\n",
" return mae, rmse, r2_square"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "79ccb8e7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Linear Regression\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 5.3243\n",
"- Mean Absolute Error: 4.2671\n",
"- R2 Score: 0.8743\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 5.3960\n",
"- Mean Absolute Error: 4.2158\n",
"- R2 Score: 0.8803\n",
"===================================\n",
"\n",
"\n",
"Lasso\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 6.5938\n",
"- Mean Absolute Error: 5.2063\n",
"- R2 Score: 0.8071\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 6.5197\n",
"- Mean Absolute Error: 5.1579\n",
"- R2 Score: 0.8253\n",
"===================================\n",
"\n",
"\n",
"Ridge\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 5.3233\n",
"- Mean Absolute Error: 4.2650\n",
"- R2 Score: 0.8743\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 5.3904\n",
"- Mean Absolute Error: 4.2111\n",
"- R2 Score: 0.8806\n",
"===================================\n",
"\n",
"\n",
"K-Neighbors Regressor\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 5.7077\n",
"- Mean Absolute Error: 4.5167\n",
"- R2 Score: 0.8555\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 7.2530\n",
"- Mean Absolute Error: 5.6210\n",
"- R2 Score: 0.7838\n",
"===================================\n",
"\n",
"\n",
"Decision Tree\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 0.2795\n",
"- Mean Absolute Error: 0.0187\n",
"- R2 Score: 0.9997\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 7.6371\n",
"- Mean Absolute Error: 6.0250\n",
"- R2 Score: 0.7603\n",
"===================================\n",
"\n",
"\n",
"Random Forest Regressor\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 2.2851\n",
"- Mean Absolute Error: 1.8253\n",
"- R2 Score: 0.9768\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 6.0959\n",
"- Mean Absolute Error: 4.7194\n",
"- R2 Score: 0.8473\n",
"===================================\n",
"\n",
"\n",
"XGBRegressor\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 0.9087\n",
"- Mean Absolute Error: 0.6148\n",
"- R2 Score: 0.9963\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 6.5889\n",
"- Mean Absolute Error: 5.0844\n",
"- R2 Score: 0.8216\n",
"===================================\n",
"\n",
"\n",
"CatBoosting Regressor\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 3.0427\n",
"- Mean Absolute Error: 2.4054\n",
"- R2 Score: 0.9589\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 6.0086\n",
"- Mean Absolute Error: 4.6125\n",
"- R2 Score: 0.8516\n",
"===================================\n",
"\n",
"\n",
"AdaBoost Regressor\n",
"Model performance for Training set\n",
"- Root Mean Squared Error: 5.7843\n",
"- Mean Absolute Error: 4.7564\n",
"- R2 Score: 0.8516\n",
"----------------------------------\n",
"Model performance for Test set\n",
"- Root Mean Squared Error: 6.0447\n",
"- Mean Absolute Error: 4.6813\n",
"- R2 Score: 0.8498\n",
"===================================\n",
"\n",
"\n"
]
}
],
"source": [
"models = {\n",
" \"Linear Regression\": LinearRegression(),\n",
" \"Lasso\": Lasso(),\n",
" \"Ridge\": Ridge(),\n",
" \"K-Neighbors Regressor\": KNeighborsRegressor(),\n",
" \"Decision Tree\": DecisionTreeRegressor(),\n",
" \"Random Forest Regressor\": RandomForestRegressor(),\n",
" \"XGBRegressor\": XGBRegressor(), \n",
" \"CatBoosting Regressor\": CatBoostRegressor(verbose=False),\n",
" \"AdaBoost Regressor\": AdaBoostRegressor()\n",
"}\n",
"model_list = []\n",
"r2_list =[]\n",
"\n",
"for i in range(len(list(models))):\n",
" model = list(models.values())[i]\n",
" model.fit(X_train, y_train) # Train model\n",
"\n",
" # Make predictions\n",
" y_train_pred = model.predict(X_train)\n",
" y_test_pred = model.predict(X_test)\n",
" \n",
" # Evaluate Train and Test dataset\n",
" model_train_mae , model_train_rmse, model_train_r2 = evaluate_model(y_train, y_train_pred)\n",
"\n",
" model_test_mae , model_test_rmse, model_test_r2 = evaluate_model(y_test, y_test_pred)\n",
"\n",
" \n",
" print(list(models.keys())[i])\n",
" model_list.append(list(models.keys())[i])\n",
" \n",
" print('Model performance for Training set')\n",
" print(\"- Root Mean Squared Error: {:.4f}\".format(model_train_rmse))\n",
" print(\"- Mean Absolute Error: {:.4f}\".format(model_train_mae))\n",
" print(\"- R2 Score: {:.4f}\".format(model_train_r2))\n",
"\n",
" print('----------------------------------')\n",
" \n",
" print('Model performance for Test set')\n",
" print(\"- Root Mean Squared Error: {:.4f}\".format(model_test_rmse))\n",
" print(\"- Mean Absolute Error: {:.4f}\".format(model_test_mae))\n",
" print(\"- R2 Score: {:.4f}\".format(model_test_r2))\n",
" r2_list.append(model_test_r2)\n",
" \n",
" print('='*35)\n",
" print('\\n')"
]
},
{
"cell_type": "markdown",
"id": "06480b5a",
"metadata": {},
"source": [
"### Results"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "e0159e5f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Model Name | \n",
" R2_Score | \n",
"
\n",
" \n",
" \n",
" \n",
" 2 | \n",
" Ridge | \n",
" 0.880593 | \n",
"
\n",
" \n",
" 0 | \n",
" Linear Regression | \n",
" 0.880345 | \n",
"
\n",
" \n",
" 7 | \n",
" CatBoosting Regressor | \n",
" 0.851632 | \n",
"
\n",
" \n",
" 8 | \n",
" AdaBoost Regressor | \n",
" 0.849847 | \n",
"
\n",
" \n",
" 5 | \n",
" Random Forest Regressor | \n",
" 0.847291 | \n",
"
\n",
" \n",
" 1 | \n",
" Lasso | \n",
" 0.825320 | \n",
"
\n",
" \n",
" 6 | \n",
" XGBRegressor | \n",
" 0.821589 | \n",
"
\n",
" \n",
" 3 | \n",
" K-Neighbors Regressor | \n",
" 0.783813 | \n",
"
\n",
" \n",
" 4 | \n",
" Decision Tree | \n",
" 0.760313 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Model Name R2_Score\n",
"2 Ridge 0.880593\n",
"0 Linear Regression 0.880345\n",
"7 CatBoosting Regressor 0.851632\n",
"8 AdaBoost Regressor 0.849847\n",
"5 Random Forest Regressor 0.847291\n",
"1 Lasso 0.825320\n",
"6 XGBRegressor 0.821589\n",
"3 K-Neighbors Regressor 0.783813\n",
"4 Decision Tree 0.760313"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(list(zip(model_list, r2_list)), columns=['Model Name', 'R2_Score']).sort_values(by=[\"R2_Score\"],ascending=False)"
]
},
{
"cell_type": "markdown",
"id": "357a7c1c",
"metadata": {},
"source": [
"## Linear Regression"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "9a6ad559",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Accuracy of the model is 88.03\n"
]
}
],
"source": [
"lin_model = LinearRegression(fit_intercept=True)\n",
"lin_model = lin_model.fit(X_train, y_train)\n",
"y_pred = lin_model.predict(X_test)\n",
"score = r2_score(y_test, y_pred)*100\n",
"print(\" Accuracy of the model is %.2f\" %score)"
]
},
{
"cell_type": "markdown",
"id": "1d31453e",
"metadata": {},
"source": [
"## Plot y_pred and y_test"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "eb557b0a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAGwCAYAAACzXI8XAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABMG0lEQVR4nO3deXhU9d3//9ckkIUlA4HCBGWJFAsxKiACEbrcECpCEZcuILS4lP6kUFnuqtiKSBHR9q7S3i4IRapFsPXrgrjgrcGC0ECQADVFAZGtQELZkrAkQOb8/ogzZpJZzsyc2ZLn47pyXeTMmTOfORd43n4+78/7bTMMwxAAAEACSor1AAAAAEJFIAMAABIWgQwAAEhYBDIAACBhEcgAAICERSADAAASFoEMAABIWM1iPYBIczqdOnz4sFq3bi2bzRbr4QAAABMMw1BlZaU6deqkpCTf8y6NPpA5fPiwOnfuHOthAACAEBw8eFCXXnqpz9cbfSDTunVrSbU3IiMjI8ajAQAAZlRUVKhz587u57gvjT6QcS0nZWRkEMgAAJBgAqWFkOwLAAASFoEMAABIWAQyAAAgYRHIAACAhEUgAwAAEhaBDAAASFgEMgAAIGERyAAAgIRFIAMAABJWo6/sCwAArFfjNFS094SOVlapQ+s09c/OVHJS9JszE8gAAICgrC45ojmrduhIeZX7WJY9TbNH5Wh4blZUx8LSEgAAMVbjNFS457hWbjukwj3HVeM0Yj0kn1aXHNGkZcUeQYwklZZXadKyYq0uORLV8TAjAwBADMXT7EYgNU5Dc1btkLcwy5BkkzRn1Q4Ny3FEbZmJGRkAAGIk3mY3Ainae6LBWOsyJB0pr1LR3hNRGxOBDAAAMRBodkOqnd3wt8wU7SWpo5W+g5hQzrMCS0sAAMRAMLMbed3bNXg9FktSHVqnWXqeFZiRAQDAQmZnScKZ3YjVklT/7Exl2dPkK/vFptpgqn92ZkQ+3xtmZAAAsEgwsyShzm7EMuE2Ocmm2aNyNGlZsWySxxhcnzR7VE5U68kwIwMAgAWCnSUJdXYj1gm3w3Oz9Oz4vnLYPQMshz1Nz47vG/WdVszIAAAQplBmSUKd3YiHhNvhuVkaluOIi8q+zMgAABCmUGdJQpndiJeE2+Qkm/K6t9Po3pcor3u7mAQxEjMyAACELZxZkmBnN1xLUqXlVV5ngGyqDYSimXAbSwQyAACEKdxZEtfshhnxmHAbSywtAQAQpmhvS463hNtYYkYGAIAwxWKWJJ4SbmPJZhhG/LbYtEBFRYXsdrvKy8uVkZER6+EAABqxRGoAGe/MPr+ZkQEAwCLMkkQfgQwAoMmpcRoEG40EgQwAoEmJ5PIPS0vRR44MAKDJcLURqP/gc83FhLPjx9+1DUl3DuqmYTkOZn9MMvv8Zvs1AKBJCNRGQKptI+CrW3W4135+wz6NXbxRgx9fE7Hu1E0RgQwAoEmIZLPFQNeuy1cTSYSGQAYA0CREstliMO8Jd/YHnghkAABNQrBtBGqchgr3HNfKbYdUuOe436Aj2AaN4cz+wBO7lgAATUIwzRaD3X0U6Nq+hDL7A0/MyAAAGj1X3Zgbch0ypAY9keq2EXh/R6kmLStukPPiL7fF1aKg7rXMCHYmBw0xIwMAaNS8za7YbFLd4iOOL2dbhuU4NPjxNX53H/3q9U907oJTjgzPQnquRo71P8uburM/CA+BDACg0fJV28WV7nLXoG7Kr1PbpXDP8YBByIkzFzT9r9skNVxuqtui4IMdpVqyYV+D90eqiWRTxdISAKBR8lfbRaoNKN4pKfWYVQk2Z8XbclNykk153dtp1qgrtHB8XzkyPJePHPa0sArvwROBDACgUQqlbkwou4+kQFupPY8bhiGnU6Z3RME/lpYAAI1SKHVjrunaVkm2r5aezKgbEOV1b+c+7mtZq7SiWj9fXuxxjH5MoWNGBgDQKAVbN0aStuw/GVQQU1fdgCjQslZ9VPsNHTMyAIC45do2fbSySh1ap+marm21Zf9J9+/+GjAGUzfGJZy6LnUDomBaFkhybwmfs2qHhuU4SAIOAoEMACAueds2XX/Zx9+SjKu2y6Rlxe4O1C6+dg6FUtfFqoDI1xIV/GNpCQAQd1z5JfVnNeov+wRaknHVdnHYze0ccs3iBDsfYkVA5EK13+AwIwMAiCvB5JeYWZKpW9sl0JKUaxbn7mXFDV7zJskmTfxmts+AKNiWBRLVfoPFjAwAIK6Ekl8SqAGjq7bL6N6XKK97O8tyUAxDWrRub4MZoVBaFthUu1RGtd/gEMgAAOKCq9v0uyHu3LFiScY1G2SWvzoyvpa1vKHab+hYWgIAxJy3xN5gWbEkE+xskOQ/SdfbstbJM9Wa+/anHp/joI5MyAhkAAAx5atwnFlWNmAMZ1bH13tdy1p1XZ+bZSpnB4ERyAAAYibYwnH1Wb0kE86sTjDv9RbcIDTkyAAAYibYpZz6sYrVDRhD3X5Nkm7sMCMDAIgZs0s5P8nrqhtys4Kq7OtP/YrBruv4K6Lnz41XZ7E0FCMEMgCAmDG7HHNDbpZ7KSbcJRlvicV1KwS7dhsFk3z85vYjum94LyUn2XwGSYgMAhkAQMyE0g8pEH+BhM+O1F9WCHYtU9XdbbTh8//oqQ/3+P1M166l8nPn/QZJsB6BDAAgZkLph+SPv9mWYTkOn4nF3ioEuxJyzS5/fbCjVM9v2BcwSIK1SPYFAMRUsP2QfPHVn8kVSDy1ZrffpSJfFYLbt0w19fmvbf23zyBJ8l40D+FjRgYAEHPB9EOqr8ZpaOMXxzXz1U/8zrYs3bDP1FgazMCYTG85efaiz9fobB05BDIAgLjgrbZKoMRZsxWBDUmnzl0wNY76CcjHTleb+wIm0NnaegQyAIC4FGh3UbgVgeurn1jsCqJ2lVVa9Al0to4EAhkAQNwJtLvo6dv6au7boVcErq9+YnEovZ/atmimU2cvWrb7CuaQ7AsAiCv+2ha4js1aWRJWg8n66iYW+0oaDuSWPpdKaphSQ2fryIppIFNTU6NZs2YpOztb6enp6t69u+bOnSvD+Oqvr2EYeuihh5SVlaX09HTl5+dr9+7dMRw1AMAKNU5DhXuOa+W2Qyrcc9y9oydQ2wJD0vEz5y0bx6yRvbT+/iEanpsVVu+n/BxHyLuvfN0LBBbTpaXHH39czz77rF544QVdccUV+vjjj3XHHXfIbrfrnnvukST99re/1R//+Ee98MILys7O1qxZs3T99ddrx44dSktjrREAEtHqkiN6+M1/qbTiq0RaR0aqHr7xClVfdEZ1LO1bp7pnSoLt/SR5LhslJ9mC3n0VKBcI/sU0kPnHP/6h0aNHa+TIkZKkbt26acWKFSoqKpJUOxuzYMECPfjggxo9erQk6cUXX1THjh31xhtvaMyYMTEbOwAgNKtLjujuZcUNjpdWVOvuZcUakdvR1HUyWzbXyTMXfM6etExN1pnqmoDXqZuAG+yuIm/LRsF0tjZbaRi+xXRp6brrrlNBQYF27dolSdq+fbvWr1+vG264QZK0d+9elZaWKj8/3/0eu92uAQMGqLCw0Os1q6urVVFR4fEDAIgPNU5DM1/7xO8575SU+X3dptoZi0dG57p/r/+6TdLvbr1KWXb/M/dZ9XYpHasMbqt1ON23zeQCUUQvsJjOyMycOVMVFRXq2bOnkpOTVVNTo3nz5mncuHGSpNLSUklSx46e0XnHjh3dr9U3f/58zZkzJ7IDBwCEZOOe4zp11lw9F29cbQxuyHWobctUPX1bH819+1OPZRlHnWWZ7f8+pefW7fV5PVfXarO7lGySMlum6MGRveSwp4fVENJMLhBF9AKLaSDzt7/9TS+99JKWL1+uK664Qtu2bdO0adPUqVMnTZgwIaRrPvDAA5oxY4b794qKCnXu3NmqIQMAwlD4xbGw3m+zSYYhPb9hn57fsE9Z9jTNGpmjti1TGuSk1DgNvbn9iN/r/XXzv5XevJn+ULA7YIKvK1yZd3OuJcs9ZpexKKLnX0wDmXvvvVczZ85057pceeWV2r9/v+bPn68JEybI4XBIksrKypSV9dVfmrKyMvXu3dvrNVNTU5Waaq4vBgAg2kKbvbgh16F3S0pVf5WltLxKk5fX5pKM7n2JpK92AG34/FjAGZZT5y5oQYG5nbAOixNwzRbHo4iefzHNkTl79qySkjyHkJycLKezNmM9OztbDodDBQUF7tcrKiq0adMm5eXlRXWsAIDwhbpEUrjnuNfj9XNJVpcc0eDH12js4o166sPPQxxlQ3W3aFulf3amsuxpPkM7Vy4QRfT8i+mMzKhRozRv3jx16dJFV1xxhbZu3aonnnhCd955pyTJZrNp2rRpeuSRR9SjRw/39utOnTrppptuiuXQAQAhGHhZO7Vp0TzoPBl/fZJcuSRTlhfr3RLv+ZPhqrtFO1i++kUlJ9k0e1SOJi0rduf+uFBEzzybUbf6XJRVVlZq1qxZev3113X06FF16tRJY8eO1UMPPaSUlBRJtVuwZ8+erUWLFunUqVMaPHiwnnnmGV1++eWmPqOiokJ2u13l5eXKyMiI5NcBAJjga/u1NzZJ9hACH6utmDgwpNkkMzViqCPjndnnd0wDmWggkAGA+FNbEG+HSit857C45iGm5V+uJz/YFZ2BeRmDw56m9fcPCXpmxFeNGNdV6m7bDtTluyky+/ymaSQAIOLqP6iH5Tg8KuDuO3ZWK4oOeAQ2ruTaYTkOvbz5gErLqyxrEmlGOMs7gWrE2FSb1zMsx+FeZmKLdWgIZAAghprC/4n7WjqZNbKX2ras3WXaPztTk77TXVv2n/R6L3zlkgSrVWqyTpuo9iuFt0vJihoxTeHvhhUIZAAgRppCboSv5ZUj5VX6+fKtHsccGWka27+LurVv4T7mephXX3RqWv7lDWZtgpFkk+bfcpXuWVH7ufWTaw1J0/N7qFv7lmEHDuHWiGkKfzesQiADADHQFHrsBNtJurSiyiMXpk2L5pLkkejryEjV9PweulDj1FMf7glqPE5Dat8qVc+O79sgSIinGjFN4e+GlQhkACDKgs2fSEQ1TkN/3rA36E7SdXnbqVRaUa0FH+zW07f1UZY9LejrH62s0ujelwTdoTpYrhoxvvJ66nbMrqsp/N2wGoEMAERZNHrsmMmvCDUHI9D7zPYtCpUhae7bn+p7V2Vp8Ue++yh545oBiXRybag1Yui/FDwCGQCIsmDzJ4INOCJZuyTQ+3wti1jtSHmVXi0+FNR7kmzSNV3bRmhEDQ3PzQp6GYv+S8EjkAGAKAsmfyLYgMNMfoWkkHIwAl3b1Yk6WlukT5w5H9T5TkPasv9kVGcyhudmBbWMRf+l4BHIAECUmc2fOHmmWpOXbzUdcJjNrzAMI+gcDDPXfnBliU6ciW0F3kBiMZMRzDJWqLk1TVlMm0YCQFPkyp+QGvaCdv0+a2SOz9mN+o0SJXPJta78itKK6oDnFO094XHcTO5GvAcxUvzPZJj5u0H/JU8EMgAQA678CYfd88HqsKfp2fF91bZliumkT1fH57lvf2rZ+OrPXMRjTkZmyxSfnaPri2Yn6RqnocI9x7Vy2yEV7jnuDjbNCvR3g63XnlhaAoAY8Zc/sXKbuUTW93eUaumGfZbnpdSfuTA7k5HZMkUnz5wPajw/yeuqdi1Tvix253u2qK7aysA5+vnywM0nozmTYVUhu2Bza5oyAhkAiCFf+RNmA4c3th02HTS48isMw1BZRXVQORiu3A1/s0Su4GKyieCirhtys5TXvZ2mDOlRp/fSGT35wW6/W5fNsrrYnS9WF7Kj/5I5BDIAEIfMJH22bdnc9M6d+gFAsPVNkpNsuvHqLD23znfdlhuvztKIq7L0s39na/FHexVoRaV+0FT/wf0NR2ufW5eH5Th0zSPv+71+y5RkLfpJPw28rF3EZzIoZBc7BDIAEIfMFFS7ufclWrJhn6nr1Z+VCLa+SY3T0F82HvD7Gcs2HtDVl7bVonV7A84SmVnu8be8suHzY14r/9Z15nxtc8hoBA4UsosdAhkAiFOBCqrZ01NMBTKzRvbS7YOyPR7oweZg/OPzYzp73n/X6DPna/TrNz4xtdRldrnH1/JK4Z7jJj6l9rxBX29v6txwUMgudghkACCO+Qs4apyGqZoj9YMYl2ByMF4t/rep804GmCWRvAdWwTObGRSd8nwUsosdtl8DQJxzBRyje1+ivO5f5XsEW3MknG3BZ89fDPdruJkJdgLJu8zcLIvZ88LlymnyFZpFc/t3U0MgAwAJzGzNEVetmbGLN2rqy9s0dvFGDX58jVaXHDH1Odd2sy6v46kPPw/qs70Z2L2d2rRo7vecNi2aa2CU8lEoZBc7NsMwotUWIyYqKipkt9tVXl6ujIyMWA8HACKifmPJa7q21Zb9J7/cynxWCz7Y1WCRxfVINbMt+PxFp77x4LuWLdQE89m+rC45oruX+d7qvTAGxeOsqiMD889vAhkAaGS8PUx9ceXRrL9/iN/ZghqnoSsffs9vwm9Ksk3na8w/Usx+tj+rS47o4Tf/5VFIz5GRqodvvCJmgUOw3crhndnnN8m+ANCI+CrK5ovZbcFFe08E3LUUTBATzGf7Y3b3VTSDCwrZRReBDAA0AjVOQxv3HNfMV81tf64v0LbgSG4bfvfLXJlQg4tAgUPtrM0OlVbU2cKekaaHb2S5pzEgkAGABBfMUpIvrm3BvmYuIrlt+MXC/XqxcH9Eckl85dGUVlTp7mXFMcmjgbUIZAAggQW7lFRf3TYB/mYuhuU4Atas6ZiRqsqqi+6KusEKtSeRLzVOQzNf+8TvOQ+89gltAxIc268BIEH56+9jliHphlyHnlrzue5eVuwRxEhfzVy8v6NUs0fl+PwsQ9JD38tR82ahP1Zc156zakdQNW582fjF8YBtDE6evaCNX5irEoz4RCADAAkqUH8fs57fsE9PfrDL7zkPvPaJnAGCi91HTwcMHAKpmwAcrmDaGCBxEcgAQIKKZt+ek2cv6NdvlPh83SZpqckGlmZY893iq40BIoNABgASVLT79vhrLWBIOnUu/NYDLu1bpYZ9jXhrY4DIIJABgAQVqL+PJLVMSY7aeCSpRYDPa5Vqco+JBZMk8dbGAJFBIAMACSpQfx+bpDHXdo7qmJJs/nf/OE0Wkz92pjrwSQEkJ9n02C1X+j3nsVuuZMdSgiOQAYAEFqhpZH6OIyrjsEnKbNlcp6v9d8kOVB3Yxapls+G5WVo4vq8cGZ5LVY6MVGrINBLUkQGABOevTH+N0/Bb/8UKrvmMm3tfoiUmEn7bpDdX+bkLPuvRuOraWMVsGwMkJgIZAGgEfJXpdy0/+esSHS7HlxV57ekppgKZ/F4d9P+KD8kmz1QYV1gxe1SO5UEG/Y8aLwIZAIiAROyAnGVP069G9NKaT8v0+rbDAc//SV5X3ZCb1WD2J1Btm/9XfMidhFu37owjAi0K0PgRyACAxbz1PopEHyEzzJTpT0m26d7reyorI1Xz3vnUdJG963McHrMcyUk23Xh1lp5btzfge8u/DGCm51+ubu1bJEywh/hDIAMAFvLV+6i0vLbU//T8HurWvmVYD25vsz01TkN/Kdyn/SfOqmtmC/04r5tSmiVp457AZfrP1xia986nQY+j/lapGqehN7cfMfVW48u3v7z5gNbfP4QABiEjkAEAi/jrfeQ69uQHu93HHBmpevjGK4KapfE229MiJVnnLtSo7s7mee98qonfzFbz5MhtTj122nOLdLAtE+q2I/CVv5KIS3SILgIZALBIsA/y0opq3b2s2PQ2YF+zPd62NDsN6bl1e9WncxvT4wlW/eq7obYV8PW+eFqiQ/yijgwAWCTUB/nM1z4J2O051E7X2/59KqQxmVJvMKHWfvH2PlfQVj8wLC2v0qRlxVpdYm4JC40fgQwAWCTUB/mpsxe08csOzDVOQ4V7jmvltkMq3HPcHeCE2unaMKTmyZFZiqlffddMy4S6bKqdYalfM8bMEt2cVTsCBn9oGlhaAgCLuB7koRSfK/zimCqrL+jhN/+l0oqvAgRXHk31RWfI47pQE5kHfv3ALZiaNf5qxgQK2ly5NX/esFe3D8omZ6aJY0YGACzir/dRIHv+c0Z3Lyv2CGKkr/Jo9h07Y9Eow+drJiUYrhYK3nJdzC7RzX37Uw1+fA3LTE0cgQwAWMhX76NA1u36j9/Xl27YK0eG+WWbSPE3k+JaEvKnTXpzvfTTAVp//xCfCbvBLNGRMwMCGQCw2PDcLK2/f4hWTByoJ394tVql+l/Fb5mSrDMBmimeOndRP/qyk3Usgxl/Mylm8nhOnbugJJvN63KQKz+otPycMlummPqe5MyAHBkAiIC6vX3SU5L95o186/L2erekLOA1a5xOPTu+b4MtyanNksLKoTHrxwO76OEbc33mpJhdEvJ2nret1maZqUeDxotABgAibHhulhaO76uH39yh0oqGNVFKDlVIChzISLYGnZz3HTurBR/sitjY6+rb1X8xOrNLQvXP81UfJ1ihbn9HYiOQAYAoqB+A1K1S2zqtuZ768POA13DNNrhme2qchgY/viasAMAmKbNlio6fOR/wXEeG/0Al0K4tm2qXpuomCZupj9M6LVmVVf6X3qTQt78jsZEjAwAxNvCydu5u0L60bdFcAy+rDWRcuSRPvr8zpKUYF9fcysM3XqFAO5iTbNI1Xdv6Pcffri1fScJm8moqq2r85sxYsYsKiYsZGQCIgkDl9h+75Uq/eTS3X5ett/55WPuOndWKogMeS1Rm2FTbk6luUrHjy8+3p6coUJ6s05C27D8ZMAfFtWur/nd1+GgtYHY56KbenbR0wz7Z5FlQ2N8uKjQNBDIAEGFmO2KPusqht/5Z6vmgtknpzZP1ZJh5MIakM+drvHbfXrntkKlrmA06/C2j1Wd2OWhYjkP9szNNB0hoOghkACCCgu2I3eAcw3tTyFDYJL28+aDW3z/EI6gINUnXn7q7tvwJJq8mOclmOkBC00GODABEwFd5LLvCymOxUt1tynUF6pEUyRyUYPNqXAHS6N6XKK97O4IYEMgAgNVWlxzR4MfXaOzijaZ2I0Vb/SWiusGEL5HMQfFVDdlf8T3AhaUlAAigxmmYXs6wqiZKJHlbIhqem6WffStbiz/a65H4m2STJn4zO+LBRDB5NUBdBDIA4Eeg3UYuNU5DG/cc18xXP4lJEOPKJTEMQ2UV1abruLisLjmiRev2NnifYUiL1u1Vny5tIx7MmM2rAepiaQlAk+bKZVm57ZAK9xz36Nfjml2pn+NSv1Ghaylp3JJNOnXuQlTHL3nmkjx84xUex7yd46vZo7+EZHoZIV4xIwOgyfI32zIsx+H34W5T7cPd6TQ0efnWmC4l1d+CHEwdFylwUTp6GSGeEcgAaJL81XaZtKxY0/IvN/Vwf3BlSdBBTL+ubfTx/lNBvusrjoxUje3fpUE9GBez+Sau3J93v5xZCoReRohHBDIAmpxASyk2SUv/sdfUtU6cMb+U5MpRGZDdLqxARpK+4WjtN2clUL5JKN2m6WWEeEQgA6DJMbOUcuqs9bkuhmpzVFqnNtfTf98T8nVKK6p197Ji3TWom/K/rHhrZnePawbm/R2len7DPtOf5y9JGIg1AhkATY7ZJZI26c1Vfu6C5fkvA7vXNokMN1hasmGflmzY53UXVX2hzMBI9DJC/GPXEoAmx+wSyR2Duln6ua4EYUl67JYrLbtu/V1UkudurD98sEt3e9l9ZQZF6RDvmJEBkJCCKVJXX//szIAzIm1bNNeUIT109vzFBkXiQlV398/w3CwtHN9XD7/5L5VWVId9XVeQNCzHofd3lIY0+1LXT/K66obcLIrSIe7FfEbm0KFDGj9+vNq1a6f09HRdeeWV+vjjj92vG4ahhx56SFlZWUpPT1d+fr527/bdYA1A41e3BcDUl7dp7OKNGvz4Go8ZiXBVX3Tqfwt2a9E6a4KYulxLW8Nzs7Rh5lC99NMBapPePKxruoKkp9Z87rX2TbBuyM2ilxESQkwDmZMnT2rQoEFq3ry53n33Xe3YsUO///3v1bZtW/c5v/3tb/XHP/5RCxcu1KZNm9SyZUtdf/31qqpiGyDQWFlRpM6for0nAuannD1fowUFuyNSH6bu0lZykk1JNptlhfSWbmhYnTdYkWoQCURCTJeWHn/8cXXu3FlLly51H8vOznb/2TAMLViwQA8++KBGjx4tSXrxxRfVsWNHvfHGGxozZkyDa1ZXV6u6+qtp2oqKigh+AwBWs6JI3bAch9eZhGDrpljN1+4fK+uzWBEQ3Xh1FjMxSBgxnZF588031a9fP/3gBz9Qhw4d1KdPHy1evNj9+t69e1VaWqr8/Hz3MbvdrgEDBqiwsNDrNefPny+73e7+6dy5c8S/BwBrBJpteWrNbtMVaL1d27Uc9WLhfquHHpC/3T9W1GexSWEvT7m8uf0I7QiQMGIayHzxxRd69tln1aNHD7333nuaNGmS7rnnHr3wwguSpNLSUklSx44dPd7XsWNH92v1PfDAAyovL3f/HDx4MLJfAoAlAhWpMyQ9t/YLU9eqP8PhK0CKJn+7f/pnZyrLntagP1JdmS2bu3dR+eqjZNUuK1/BIBCPYrq05HQ61a9fPz366KOSpD59+qikpEQLFy7UhAkTQrpmamqqUlNTrRwmgCgIVKROks5eqDF1rbozHP4CpGiZNbKXbh+U7XO5JjnJptmjcjRpWbFsksdYXe949OYrNTw3SwOyM/XwmztUWtGwj9KwHIde3nxQpeVVYX9f2hEgUcR0RiYrK0s5OTkex3r16qUDBw5IkhwOhySprKzM45yysjL3awAaBysenDY1TFQ1EyBFUpJN+nFet4A5J8Nzs/Ts+L5y2D2XmbzP5HiGKYZR+7srIJK8z9rYJH2/7yWmxk07AiSKmM7IDBo0SDt37vQ4tmvXLnXt2lVSbeKvw+FQQUGBevfuLak2eXfTpk2aNGlStIcLIILCfXD6ykGJxMxCkk2mt2Q7DWnL/pOmukYHavboq9FlWUW1Ji0rdgc8/rpfD8txaMOe4z5nbWhHgEQT00Bm+vTpuu666/Too4/qhz/8oYqKirRo0SItWrRIkmSz2TRt2jQ98sgj6tGjh7KzszVr1ix16tRJN910UyyHDsCEYIrWufJEQl0Wcfgo02/lzMKU//q6Bn29va7p2lZb9p/UO58c1l82Hgj4vtLycz5f83aPvAU9ZhpdunZsBQqIAi1j0Y4AiSSmgcy1116r119/XQ888IB+85vfKDs7WwsWLNC4cePc59x33306c+aMfvazn+nUqVMaPHiwVq9erbQ0pj2BeOZvG7W3hFd/eSL+BKpAG26AVHfs04dd7v6MvO7ttONwuan3njhz3uvxYO6RmUaXriRdVyE7X7NAgWZtaEeARGIzXIurjVRFRYXsdrvKy8uVkZER6+EATYKvJRBXmOGvd0+wzQ1XTBwYcNnGNR7JfIDk4m/Mr289pOl/3RbwGk/+qLdu7uOZmxLsPVq57ZCmvhz4s/4wprdG9zaXBxNOmwcg0sw+v+m1BMBSwSyBeHtoupZFNu45rol/+Vhnz/veqdS2RXNTuRy+ZiCy7GmaNbKX2rZM1dHKKu07dkYrig549D7yN0vRobW5HZL1zwvlHpldIgtmKc3frA2QKAhkAFgq2CUQb5KTbBrYvZ1SmiX5DWSCmV0JlDfiMmVID/OzFGYHUO+8UO5RoCUyknTRVBHIALCU2V1Cgc4z0w/p1NkLfgOi+szMQAQzS3HsjLmu1fXPC+Uemak1Q5IumqKYd78G0LhYtQRiVUAUSWa/67HKao+S/6Heo+BqzQBNAzMyACxl1RJIJHJCrNY/O1NtWjQPOHM09+1P9af1e925NuHcI7NLZEBTYXpGpqKiwvQPgKbLtQTiK33EkLklkED9h7xV8Y2UGqehwj3HtXLbIRXuOR5SQ0VX48vVJUcCVuCV/N8j1/LX6N6XuLdaA02V6RmZNm3ayGYz94+lpsZcPxQA8CVeckL81Xqxp6cEnI1x8Va0zlctlzHXdlH1RacK9xxntgUIwHQdmbVr17r/vG/fPs2cOVO333678vLyJEmFhYV64YUXNH/+/JAbPkYCdWSA6KpxGhr8+Bqfu3Jcyybr7x9i6gEdbGE9KwWq9XLHoG56fsO+oK9bt/ZN3Vou3rZ/R+u7AvHG7PM7pIJ4Q4cO1U9/+lONHTvW4/jy5cu1aNEi/f3vfw96wJFCIANEV+Ge4xq7eGPA88wUsnOJReE2MwFZZssUHfdRtdcfb0XrwikiCDRGZp/fIe1aKiwsVL9+/Roc79evn4qKikK5JIBGIhK7jWKRE2Km1svxM+eV2bK5zzweX+onKAcqkCfVLkmFkpsDNHYhBTKdO3fW4sWLGxz/05/+pM6dO4c9KACJKxF2G5lhNtC6+cuZFbPBTGbL5iqtqPJIGg6mQB4ATyFtv37yySd166236t1339WAAQMkSUVFRdq9e7deffVVSwcIILG4dhv5ezBHYreR1ctPZgOt/ByHrs3ONN0f6sSZC+7+TK78l+qLTlOfFcuaOUC8CimQGTFihHbt2qVnn31Wn332mSRp1KhRuvvuu5mRAZq45CSbbrw6S8+t2+vznBuvzrJ0echsQnAwwU4wtV6Sk2wetV32HTv7ZdKu/8DDtSV7Wv7lpr5nvM9iAbFA92sAlgqUJCvVBhlmdy0FYjZJ1lewM2tkjtq2TPEa3Pjqmm0mAdcVNJWWn9Pctz/VCR9Jwa6A6Oz5iyo/d9Hn92zTorm2PDiMrdhoMiLe/fqjjz7Sc889py+++EKvvPKKLrnkEv3lL39Rdna2Bg8eHOplASS4QPkeUuCmkWaZTZJ1Og1NXr61wXlHyqv08+XFHsfqzuS4ar08/OYOj9kVfx2xXVwJyoV7jvsMYlzjPFJepZapyX6/K+EL4F1Iyb6vvvqqrr/+eqWnp6u4uFjV1bU1D8rLy/Xoo49aOkAAiSUSu5bOX3RqyUdf6KGVJVry0Rc6/2VOidmg6cGVJaYbVdetwPsVz3cHM5Ft9nueqfZfSPTklw0yAXgKaUbmkUce0cKFC/WTn/xEL7/8svv4oEGD9Mgjj1g2OACJx+pdS/Pf2aHFH+1V3Z3H8975VBO/ma2eWXZT1zhxxlz1XcmzAq/TKU1e3nDZqqyiWpOWFZuq7WJlXgvJvkBDIc3I7Ny5U9/61rcaHLfb7Tp16lS4YwKQwK7p2laB0jiSbLXnBTL/nR16bp1nECNJTkN6bt1e/a3oQBgj9c213ONrJieY2i5meka1a5lialwk+wINhRTIOBwOff755w2Or1+/XpdddlnYgwKQuLbsP9kg8KjPadSe58/5i04t/sj3zidJ2hjhpRYzuS2BlnvMNIicOzo3bhpkAokmpEBm4sSJmjp1qjZt2iSbzabDhw/rpZde0i9/+UtNmjTJ6jECSCBW5cj8pXBfwIDIbKZKq9SQ9zUEZOb7upKGHXbPGRWHPU3Pju+rEVdlhdUNG2jKQvrXPXPmTDmdTg0dOlRnz57Vt771LaWmpuqXv/ylfvGLX1g9RgAJxKocmf0nzloxHCXZpGRbcFUmbJLatmxuKrfG7PcdnpvlUWum/lZvf92waRoJ+BZWHZnz58/r888/1+nTp5WTk6NWrVpZOTZLUEcGiC5XHZlAheQC1ZFZ8tEXmvv2pxEbpy+uET19Wx/NffvTsL9HsGLRIBOIRxFtGnnnnXeqsrJSKSkpysnJUf/+/dWqVSudOXNGd955Z8iDBpD4zOSEmFkm+XFet4BJw5F4vH+13NMpJss9sWiQCSSykAKZF154QefOnWtw/Ny5c3rxxRfDHhSAxBYoJ8TMMklKsyRN/Ga233NGXmXdcsuU/+quFRMHau29/yV7eopWbjske3qKnr6tT1jfA0BkBZUjU1FRIcMwZBiGKisrlZb21T/umpoavfPOO+rQoYPlgwSQeALlhJjxwIjaGZH6dWSSbNLEb2brvuG9tGX/yYDLP4ZhqKyi2u8504d9Q+/vKNW3f/dhUG0MAMRWUIFMmzZtZLPZZLPZdPnlDZuc2Ww2zZkzx7LBAUCfLm31tVaHVVZZ7T72tVap6tOlrXsZa9KyYtnkvR+Sa3ko0Dnv7yj12rOptLxKk5fXFr8b3fsSS78bgPAFley7du1aGYahIUOG6NVXX1Vm5lc1DVJSUtS1a1d16tQpIgMNFcm+QGyY7Ugd6Bq+GkIakqbn91C39i29dpuu/1n+xjMsx+G30WWkEnsB+Gb2+R3SrqX9+/erS5custni/x80gQwQmNU7Zcx2pA40pkBdtOtyZKRqbP8u6ta+pc/v4Ot7Fu45rrGLNwb8jBUTB4bd6BKAORHtfr1mzRq1atVKP/jBDzyOv/LKKzp79qwmTJgQymUBxIAVMyd1BepI7epjNCzH4TNYqnEa+vOGvaaDGKm2/9GTH+zWnYO6aViOw+s5rh1B9UWi0SWA6Ahp19L8+fPVvn37Bsc7dOhA92sggbhmTuoHDN47QJsTqCN1oNL+q0uOaPDja4KuIeMKnJ7fsE9jF2/U4MfXmB6/1Y0ug1HjNFS457hWbjukwj3HA/ZuAuAppBmZAwcOKDu74bbIrl276sCByDRxA2AtK2ZOvAlndsPXklQoXMGYmWUsV2PHQLufrO51ZPVsGNAUhTQj06FDB/3zn/9scHz79u1q1471YyARhDtz4k2N09CxOruL/Kk/u+EvsApFMB2qrSriF4xIzIYBTVFIgczYsWN1zz336MMPP1RNTY1qamq0Zs0aTZ06VWPGjLF6jAAiwOq8ELNLQr46OQcKrEIRTDBmRRE/swLNhknmAjAAIS4tzZ07V/v27dPQoUPVrFntJZxOp37yk5+QIwMkCCvzQswuCfmb3YhkIq3Za1tRxM+MYGbD2CUF+BdSIJOSkqK//vWvmjt3rrZv36709HRdeeWV6tq1q9XjAxAhVuWFBLMk5K+Ts9nA6vt9L9GrxYckyfQyVDBJur52NlmJXVKAdUIKZFwuv/xyrxV+AcQ/s1VxA81GmF0SmjWyl24flO3zemYDq8e/f7Xyczo2SJL1JlJJuuGK5S4poLExHcjMmDFDc+fOVcuWLTVjxgy/5z7xxBNhDwxA5LnyQuoHBf5mTuozO2vQvnWqkpNsOn/Rqb8U7tP+E2fVNbOFfpzXTSnNkoIKrOouAX2wo1RLNuxr8HmR7FAdrljtkgIaI9OBzNatW3XhwgX3n31JhGq/AL4Sbl5IMLML89/Z0aAB5Lx3PtXEb2brgRE5QQVWriWgvO7tdG12ZljBWF1WVzn2xqrZMAAhtihIJLQoQFMSjYewt88c/PiagLML37sqS4s/2uvzOv/ft7Ld3a5D+R5WfPdo13WhjgzgW0R7LSUSAhk0FeE8FMMNAly7lqSGswuGpAl5XfTixgPy91+bJJv02dwblNIspKoQYbOiP1QoYhF8AonA8kDmlltuMf3hr732mulzI41ABk1BOA9hq2YFvF0nySYFUwpl1sheuuubl5l/g0UCNaik+zUQfWaf36b/18dut7t/MjIyVFBQoI8//tj9+pYtW1RQUCC73R7eyAEEJZzialZWlx2em6X19w/RiokDddegbpKCC2Ikaf+Js5Ki338oElWOAUSH6WTfpUuXuv98//3364c//KEWLlyo5ORkSVJNTY1+/vOfM+sBRFmoxdUi0WspOcmm/tmZmvG3bcF8BbeumS1ikjdCXRcgcYW0GP3888/rl7/8pTuIkaTk5GTNmDFDzz//vGWDAxBYqA/hSM1ChNpqIMkmdWydGpP+Q5Go60JXayA6QiqId/HiRX322Wf6xje+4XH8s88+k9PptGRgAMwJ9SEcqVmIUGct7hqcrXnvfmZ5N24zrK7rwm4kIHpCmpG54447dNddd+mJJ57Q+vXrtX79ev3+97/XT3/6U91xxx1WjxGAH66HsK9Hu68mjZGqLhvs+Um22q3XQ3p2jFmeipXdr+lqDURXSDMy//M//yOHw6Hf//73OnKk9h9lVlaW7r33Xv33f/+3pQME4F+oxdUiVV020HUlqXVasm7qfam6tfuqsu/KbYdMXT9SeSpWVDmORN4RAP9CCmSSkpJ033336b777lNFRYUkkeQLxFAoD+FIVZc1c93fff/qBmMyO5NzrLJaNU4jIoFAuFWO6WoNRF/IBfEuXryov//979qzZ49uu+02tW7dWocPH1ZGRoZatWpl9ThDRh0ZNCWhFFeLVD5HsNcNVCG4rnjNN1m57ZCmvrwt4Hl/GNNbo3tfEvkBAQksopV99+/fr+HDh+vAgQOqrq7Wrl27dNlll2nq1Kmqrq7WwoULwxq8lQhkgMAiVV022Ov6qhBcn9lqu9Gumlu457jGLt4Y8LwVEwcyIwMEYPb5HdLS0tSpU9WvXz9t375d7dp99Y/x5ptv1sSJE0O5JIAYcjVgjPV1fS2R1Wcm3yQWO4foag1EX0i7lj766CM9+OCDSklJ8TjerVs3HTpkLmEPALxxVQieNbKX3/Pq72KqW7flDx/sjsnOISt3PwEwJ6QZGafTqZqamgbH//3vf6t169ZhDwpA05acZFP71qmmzj1aWeV19sWbaOwcsmL3EwDzQgpkvvvd72rBggVatGiRJMlms+n06dOaPXu2RowYYekAATRNZncx7Tt2Rgs+2B0wQdglGjuHwt39BMC8kOvIDB8+XDk5OaqqqtJtt92m3bt3q3379lqxYoXVYwTQBJnNN1lRdMB0EFNXpPsmRSrvCICnkHJkOnfurO3bt+vXv/61pk+frj59+uixxx7T1q1b1aFDB6vHCKAJMpNvMubaLiqtqA7p+sFWIAYQn4Kekblw4YJ69uypt956S+PGjdO4ceMiMS4ACJhvUn0x+N5u7BwCGpegA5nmzZurqopW9gCiw1++SeGe40Fdi51DQOMTUo7M5MmT9fjjj+tPf/qTmjUL6RIAmgCrCtL5yjcx09epLnYOAY1PSFHI5s2bVVBQoP/7v//TlVdeqZYtW3q8/tprr1kyOACJKxoF6QL1dTIkTc/voW7tW7JzCGikQgpk2rRpo1tvvdXqsQBoJFytBurPkrgK0gVqLRAM6rYATVtQgYzT6dTvfvc77dq1S+fPn9eQIUP08MMPKz09PVLjA5BgapyG5qza4XWpJ1IF6ajbAjRdQW2/njdvnn71q1+pVatWuuSSS/THP/5RkydPjtTYACSgor0nAvZJqttawCquPJrRvS9RXvd2BDFAExFUIPPiiy/qmWee0Xvvvac33nhDq1at0ksvvSSnM/gtkPU99thjstlsmjZtmvtYVVWVJk+erHbt2qlVq1a69dZbVVZWFvZnAYgcs4XmIl2QDkDTEFQgc+DAAY8WBPn5+bLZbDp8+HBYg9i8ebOee+45XXXVVR7Hp0+frlWrVumVV17R2rVrdfjwYd1yyy1hfRaAyDJbaI6CdACsEFQgc/HiRaWlef7Hp3nz5rpw4ULIAzh9+rTGjRunxYsXq23btu7j5eXlWrJkiZ544gkNGTJE11xzjZYuXap//OMf2rhxY8ifByCwup2kC/ccV43TfBMA15ZoXws7NtXuXqIgHQArBJXsaxiGbr/9dqWmftWVtqqqSnfffbfHFuxgtl9PnjxZI0eOVH5+vh555BH38S1btujChQvKz893H+vZs6e6dOmiwsJCDRw40Ov1qqurVV39VcnyiooK02MBYH7btK8aMYG2REsUpANgnaACmQkTJjQ4Nn78+JA//OWXX1ZxcbE2b97c4LXS0lKlpKSoTZs2Hsc7duyo0tJSn9ecP3++5syZE/KYgKbM7LbpQMEOW6IBREtQgczSpUst++CDBw9q6tSpev/99xssV4XjgQce0IwZM9y/V1RUqHPnzpZdH2iszG6bdjoNTV6+NWCww5ZoANEQs/4CW7Zs0dGjR9W3b1/3sZqaGq1bt05PPfWU3nvvPZ0/f16nTp3ymJUpKyuTw+Hwed3U1FSPpS8A5pjdNv3gyhLTNWJ8tRYAAKsElexrpaFDh+qTTz7Rtm3b3D/9+vXTuHHj3H9u3ry5CgoK3O/ZuXOnDhw4oLy8vFgNG2i0zG6HPnHGd3J/pGrEAIAvMZuRad26tXJzcz2OtWzZUu3atXMfv+uuuzRjxgxlZmYqIyNDv/jFL5SXl+cz0RdA6KzcDk2NGADREtetq5988kklJSXp1ltvVXV1ta6//no988wzsR4W0CgF6iRtk5TZMkXHz5wPeC1qxACIFpthGOYLRCSgiooK2e12lZeXKyMjI9bDAeKaa9eS5H3b9NO39dXct3f4DXYc9jStv38ISb0AwmL2+R2zHBkA8ce1bdph95xRcdjT9Oz4vhpxVZZmj8qRpAYF76gRAyAWmJEBLOarUFwifVag65otmgcAoTL7/CaQASwUzQd8rIOJaAZsAJoeApkvEcggWnxVxXU92l2F4hLtswAgFsiRAaIoUFVcqbZQXDDNF+PhswAg3hHIABYwWxXXikJx0fwsAIh3BDKABcwWgLOiUFw0PwsA4l1cF8QD4p0r4XV32WlT51tRKM7sNShKB6ApIJABQuRt15AvrkJx/bMzw/5cMxV4rfosAIh3LC0BIXDtGjIbxEjWFYpLTrJRlA4AvkQgAwTJ364hb1xVca3cDh2oAi9brwE0FSwtAUEKtGvIZcp/ddegr38tYoXihudmaViOg6J0AJo0AhkgSGZ3A/Xo2Fp53duZOjfUKrnJSTbTnwEAjRGBDBAkq3cNxbrVAAAkMnJkgCC5dg35mi+xqTYQMbNryFfScGl5lSYtK9bqkiPhDxgAGjECGSBIVu0aotUAAISPQAYIgRW7hmg1AADhI0cGCFG4u4ZoNQAA4SOQAcIQzq4hWg0AQPhYWgJixMqkYQBoqghkgBih1QAAhI9ABoghf0nDT9/WV/b0FK3cdkiFe46zewkAvCBHBogxb0nDJ89Ua+7bFMkDgECYkQHigCtpeHTvS1R+7rwmL99KkTwAMIFABogjFMkDgOAQyABxhCJ5ABAcAhkgjlAkDwCCQ7Iv4kaN0wi5Sm5jQZE8AAgOgQziwuqSI5qzil06riJ5peVVXvNkbKrdmk2RPACoxdISYm51yRFNWlbMLh1RJA8AgkUgg5hil05DVnTWBoCmgqUlxFQwu3RCbc6YiMLtrA0ATQWBDGKKXTq+hdNZGwCaCpaWEFPs0gEAhINABjHl2qXja8HEptrdS+zSAQB4QyCDmGKXDgAgHAQyiDl26QAAQkWyL+ICu3QAAKEgkEHcYJcOACBYLC0BAICERSADAAASFoEMAABIWOTIAEGocRokJANAHCGQAUxaXXJEc1bt8OgNlWVP0+xROWwRB4AYYWkJMGF1yRFNWlbcoMFlaXmVJi0r1uqSIzEaGQA0bQQyQAA1TkNzVu2Q4eU148ufma99og27j6nG6e0sAECkEMgAARTtPdFgJqa+U2cvaNySTRr8+BpmZwAgighkgACOVvoPYupiqQkAootABvChxmmocM9x7S47bfo9roWlOat2sMwEAFHAriXAC287lMwyJB0pr1LR3hO0XACACCOQAepx7VAKdz4lmCUpAEBoWFoC6vC3QylYHVqnWXAVAIA/BDJAHWZ2KElSy5Rkn6/ZVFsor392poUjAwB4QyAD1GF2OWjMtZ1lU23QUpfr99mjcmhdAABRQCAD1GF2OSg/x6Fnx/eVw+55vsOepmfH96VlAQBECcm+QB39szOVZU9TaXmV1zwZm2qDFVezyGE5DppIAkAMEcgAdSQn2TR7VI4mLSuWTfIIZrwtGyUn2dhiDQAxxNISUM/w3CyWjQAgQTAjA3gxPDeLZSMASAAEMoAPLBsBQPxjaQkAACQsAhkAAJCwCGQAAEDCIpABAAAJK6aBzPz583XttdeqdevW6tChg2666Sbt3LnT45yqqipNnjxZ7dq1U6tWrXTrrbeqrKwsRiMGAADxJKaBzNq1azV58mRt3LhR77//vi5cuKDvfve7OnPmjPuc6dOna9WqVXrllVe0du1aHT58WLfccksMRw0AAOKFzTAMb5XYY+I///mPOnTooLVr1+pb3/qWysvL9bWvfU3Lly/X97//fUnSZ599pl69eqmwsFADBw5scI3q6mpVV1e7f6+oqFDnzp1VXl6ujIyMqH0XAAAQuoqKCtnt9oDP77jKkSkvL5ckZWZmSpK2bNmiCxcuKD8/331Oz5491aVLFxUWFnq9xvz582W3290/nTt3jvzAAQBATMRNION0OjVt2jQNGjRIubm5kqTS0lKlpKSoTZs2Hud27NhRpaWlXq/zwAMPqLy83P1z8ODBSA8dAADESNxU9p08ebJKSkq0fv36sK6Tmpqq1NRUi0YFAADiWVzMyEyZMkVvvfWWPvzwQ1166aXu4w6HQ+fPn9epU6c8zi8rK5PD4YjyKAEAQLyJaSBjGIamTJmi119/XWvWrFF2drbH69dcc42aN2+ugoIC97GdO3fqwIEDysvLi/ZwAQBAnInp0tLkyZO1fPlyrVy5Uq1bt3bnvdjtdqWnp8tut+uuu+7SjBkzlJmZqYyMDP3iF79QXl6e1x1LAACgaYnp9mubzeb1+NKlS3X77bdLqi2I99///d9asWKFqqurdf311+uZZ54xvbRkdvsWAACIH2af33FVRyYSCGQAAEg8CVlHBgAAIBgEMgAAIGERyAAAgIRFIAMAABIWgQwAAEhYBDIAACBhEcgAAICERSADAAASFoEMAABIWAQyAAAgYRHIAACAhEUgAwAAEhaBDAAASFgEMgAAIGERyAAAgIRFIAMAABIWgQwAAEhYBDIAACBhEcgAAICERSADAAASFoEMAABIWAQyAAAgYRHIAACAhEUgAwAAEhaBDAAASFgEMgAAIGERyAAAgIRFIAMAABIWgQwAAEhYBDIAACBhEcgAAICERSADAAASFoEMAABIWAQyAAAgYRHIAACAhEUgAwAAEhaBDAAASFgEMgAAIGERyAAAgIRFIAMAABIWgQwAAEhYBDIAACBhEcgAAICERSADAAASFoEMAABIWAQyAAAgYRHIAACAhEUgAwAAElazWA8gEdU4DRXtPaGjlVXq0DpN/bMzlZxki/WwAABocghkgrS65IjmrNqhI+VV7mNZ9jTNHpWj4blZMRwZAABND0tLQVhdckSTlhV7BDGSVFpepUnLirW65EiMRgYAQNNEIGNSjdPQnFU7ZHh5zXVszqodqnF6OwMAAEQCgYxJRXtPNJiJqcuQdKS8SkV7T0RvUAAANHEEMiYdrfQdxIRyHgAACB+BjEkdWqdZeh4AAAgfgYxJ/bMzlWVPk69N1jbV7l7qn50ZzWEBANCkEciYlJxk0+xROZLUIJhx/T57VA71ZAAAiCICmSAMz83Ss+P7ymH3XD5y2NP07Pi+1JEBACDKKIgXpOG5WRqW46CyLwAAcYBAJgTJSTbldW8X62EAANDksbQEAAASFoEMAABIWAQyAAAgYSVEIPP000+rW7duSktL04ABA1RUVBTrIQEAgDgQ94HMX//6V82YMUOzZ89WcXGxrr76al1//fU6evRorIcGAABiLO4DmSeeeEITJ07UHXfcoZycHC1cuFAtWrTQ888/H+uhAQCAGIvrQOb8+fPasmWL8vPz3ceSkpKUn5+vwsJCr++prq5WRUWFxw8AAGic4jqQOXbsmGpqatSxY0eP4x07dlRpaanX98yfP192u93907lz52gMFQAAxEBcBzKheOCBB1ReXu7+OXjwYKyHBAAAIiSuK/u2b99eycnJKisr8zheVlYmh8Ph9T2pqalKTU11/24YhiSxxAQAQAJxPbddz3Ff4jqQSUlJ0TXXXKOCggLddNNNkiSn06mCggJNmTLF1DUqKysliSUmAAASUGVlpex2u8/X4zqQkaQZM2ZowoQJ6tevn/r3768FCxbozJkzuuOOO0y9v1OnTjp48KBat24tm826xo4VFRXq3LmzDh48qIyMDMuui4a419HBfY4O7nN0cJ+jI5L32TAMVVZWqlOnTn7Pi/tA5kc/+pH+85//6KGHHlJpaal69+6t1atXN0gA9iUpKUmXXnppxMaXkZHBP5Io4V5HB/c5OrjP0cF9jo5I3Wd/MzEucR/ISNKUKVNMLyUBAICmo9HtWgIAAE0HgUyIUlNTNXv2bI8dUogM7nV0cJ+jg/scHdzn6IiH+2wzAu1rAgAAiFPMyAAAgIRFIAMAABIWgQwAAEhYBDIAACBhEciE6Omnn1a3bt2UlpamAQMGqKioKNZDSmjz58/Xtddeq9atW6tDhw666aabtHPnTo9zqqqqNHnyZLVr106tWrXSrbfe2qAPF4Lz2GOPyWazadq0ae5j3GdrHDp0SOPHj1e7du2Unp6uK6+8Uh9//LH7dcMw9NBDDykrK0vp6enKz8/X7t27YzjixFNTU6NZs2YpOztb6enp6t69u+bOnevRm4f7HJp169Zp1KhR6tSpk2w2m9544w2P183c1xMnTmjcuHHKyMhQmzZtdNddd+n06dPWD9ZA0F5++WUjJSXFeP75541//etfxsSJE402bdoYZWVlsR5awrr++uuNpUuXGiUlJca2bduMESNGGF26dDFOnz7tPufuu+82OnfubBQUFBgff/yxMXDgQOO6666L4agTW1FRkdGtWzfjqquuMqZOneo+zn0O34kTJ4yuXbsat99+u7Fp0ybjiy++MN577z3j888/d5/z2GOPGXa73XjjjTeM7du3GzfeeKORnZ1tnDt3LoYjTyzz5s0z2rVrZ7z11lvG3r17jVdeecVo1aqV8Yc//MF9Dvc5NO+8847x61//2njttdcMScbrr7/u8bqZ+zp8+HDj6quvNjZu3Gh89NFHxte//nVj7Nixlo+VQCYE/fv3NyZPnuz+vaamxujUqZMxf/78GI6qcTl69KghyVi7dq1hGIZx6tQpo3nz5sYrr7ziPufTTz81JBmFhYWxGmbCqqysNHr06GG8//77xre//W13IMN9tsb9999vDB482OfrTqfTcDgcxu9+9zv3sVOnThmpqanGihUrojHERmHkyJHGnXfe6XHslltuMcaNG2cYBvfZKvUDGTP3dceOHYYkY/Pmze5z3n33XcNmsxmHDh2ydHwsLQXp/Pnz2rJli/Lz893HkpKSlJ+fr8LCwhiOrHEpLy+XJGVmZkqStmzZogsXLnjc9549e6pLly7c9xBMnjxZI0eO9LifEvfZKm+++ab69eunH/zgB+rQoYP69OmjxYsXu1/fu3evSktLPe6z3W7XgAEDuM9BuO6661RQUKBdu3ZJkrZv367169frhhtukMR9jhQz97WwsFBt2rRRv3793Ofk5+crKSlJmzZtsnQ8CdFrKZ4cO3ZMNTU1DZpWduzYUZ999lmMRtW4OJ1OTZs2TYMGDVJubq4kqbS0VCkpKWrTpo3HuR07dlRpaWkMRpm4Xn75ZRUXF2vz5s0NXuM+W+OLL77Qs88+qxkzZuhXv/qVNm/erHvuuUcpKSmaMGGC+156++8I99m8mTNnqqKiQj179lRycrJqamo0b948jRs3TpK4zxFi5r6WlpaqQ4cOHq83a9ZMmZmZlt97AhnEncmTJ6ukpETr16+P9VAanYMHD2rq1Kl6//33lZaWFuvhNFpOp1P9+vXTo48+Kknq06ePSkpKtHDhQk2YMCHGo2s8/va3v+mll17S8uXLdcUVV2jbtm2aNm2aOnXqxH1uQlhaClL79u2VnJzcYBdHWVmZHA5HjEbVeEyZMkVvvfWWPvzwQ1166aXu4w6HQ+fPn9epU6c8zue+B2fLli06evSo+vbtq2bNmqlZs2Zau3at/vjHP6pZs2bq2LEj99kCWVlZysnJ8TjWq1cvHThwQJLc95L/joTn3nvv1cyZMzVmzBhdeeWV+vGPf6zp06dr/vz5krjPkWLmvjocDh09etTj9YsXL+rEiROW33sCmSClpKTommuuUUFBgfuY0+lUQUGB8vLyYjiyxGYYhqZMmaLXX39da9asUXZ2tsfr11xzjZo3b+5x33fu3KkDBw5w34MwdOhQffLJJ9q2bZv7p1+/fho3bpz7z9zn8A0aNKhB+YBdu3apa9eukqTs7Gw5HA6P+1xRUaFNmzZxn4Nw9uxZJSV5PsaSk5PldDolcZ8jxcx9zcvL06lTp7Rlyxb3OWvWrJHT6dSAAQOsHZClqcNNxMsvv2ykpqYaf/7zn40dO3YYP/vZz4w2bdoYpaWlsR5awpo0aZJht9uNv//978aRI0fcP2fPnnWfc/fddxtdunQx1qxZY3z88cdGXl6ekZeXF8NRNw51dy0ZBvfZCkVFRUazZs2MefPmGbt37zZeeuklo0WLFsayZcvc5zz22GNGmzZtjJUrVxr//Oc/jdGjR7MtOEgTJkwwLrnkEvf269dee81o3769cd9997nP4T6HprKy0ti6dauxdetWQ5LxxBNPGFu3bjX2799vGIa5+zp8+HCjT58+xqZNm4z169cbPXr0YPt1PPnf//1fo0uXLkZKSorRv39/Y+PGjbEeUkKT5PVn6dKl7nPOnTtn/PznPzfatm1rtGjRwrj55puNI0eOxG7QjUT9QIb7bI1Vq1YZubm5RmpqqtGzZ09j0aJFHq87nU5j1qxZRseOHY3U1FRj6NChxs6dO2M02sRUUVFhTJ061ejSpYuRlpZmXHbZZcavf/1ro7q62n0O9zk0H374odf/Jk+YMMEwDHP39fjx48bYsWONVq1aGRkZGcYdd9xhVFZWWj5Wm2HUKYEIAACQQMiRAQAACYtABgAAJCwCGQAAkLAIZAAAQMIikAEAAAmLQAYAACQsAhkAAJCwCGQAAEDCIpABAEk2m01vvPFGrIcBIEgEMgCirrCwUMnJyRo5cmRQ7+vWrZsWLFgQmUEBSEgEMgCibsmSJfrFL36hdevW6fDhw7EeDoAERiADIKpOnz6tv/71r5o0aZJGjhypP//5zx6vr1q1Stdee63S0tLUvn173XzzzZKk73znO9q/f7+mT58um80mm80mSXr44YfVu3dvj2ssWLBA3bp1c/++efNmDRs2TO3bt5fdbte3v/1tFRcXR/JrAogSAhkAUfW3v/1NPXv21De+8Q2NHz9ezz//vFy9a99++23dfPPNGjFihLZu3aqCggL1799fkvTaa6/p0ksv1W9+8xsdOXJER44cMf2ZlZWVmjBhgtavX6+NGzeqR48eGjFihCorKyPyHQFET7NYDwBA07JkyRKNHz9ekjR8+HCVl5dr7dq1+s53vqN58+ZpzJgxmjNnjvv8q6++WpKUmZmp5ORktW7dWg6HI6jPHDJkiMfvixYtUps2bbR27Vp973vfC/MbAYglZmQARM3OnTtVVFSksWPHSpKaNWumH/3oR1qyZIkkadu2bRo6dKjln1tWVqaJEyeqR48estvtysjI0OnTp3XgwAHLPwtAdDEjAyBqlixZoosXL6pTp07uY4ZhKDU1VU899ZTS09ODvmZSUpJ7acrlwoULHr9PmDBBx48f1x/+8Ad17dpVqampysvL0/nz50P7IgDiBjMyAKLi4sWLevHFF/X73/9e27Ztc/9s375dnTp10ooVK3TVVVepoKDA5zVSUlJUU1PjcexrX/uaSktLPYKZbdu2eZyzYcMG3XPPPRoxYoSuuOIKpaam6tixY5Z+PwCxwYwMgKh46623dPLkSd11112y2+0er916661asmSJfve732no0KHq3r27xowZo4sXL+qdd97R/fffL6m2jsy6des0ZswYpaamqn379vrOd76j//znP/rtb3+r73//+1q9erXeffddZWRkuK/fo0cP/eUvf1G/fv1UUVGhe++9N6TZHwDxhxkZAFGxZMkS5efnNwhipNpA5uOPP1ZmZqZeeeUVvfnmm+rdu7eGDBmioqIi93m/+c1vtG/fPnXv3l1f+9rXJEm9evXSM888o6efflpXX321ioqK9Mtf/rLBZ588eVJ9+/bVj3/8Y91zzz3q0KFDZL8wgKiwGfUXlwEAABIEMzIAACBhEcgAAICERSADAAASFoEMAABIWAQyAAAgYRHIAACAhEUgAwAAEhaBDAAASFgEMgAAIGERyAAAgIRFIAMAABLW/w9Y9MBy40+TIwAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(y_test,y_pred);\n",
"plt.xlabel('Actual');\n",
"plt.ylabel('Predicted');"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "1e707ec3",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGzCAYAAAAFROyYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAByyklEQVR4nO3deXxTZfY/8E+WrnShLdCFtbIqUkBARFwQ64DLKILOoIioKKAgIiiK62/GBUfHZXRUFBVXRB3RGR0FlSougyyVzYVFwbK2he57m+T+/jjfp/cmTdqkTZq0/bxfr7zS3CQ3TyNyD+c5z3lMmqZpICIiIgoh5mAPgIiIiMgVAxQiIiIKOQxQiIiIKOQwQCEiIqKQwwCFiIiIQg4DFCIiIgo5DFCIiIgo5DBAISIiopDDAIWIiIhCDgMUIiIiCjlWX9/w9ddf47HHHkN2djaOHj2KDz74AJMmTap/XtM03H///Vi+fDmKi4sxduxYPP/88+jfv3/9awoLC3HzzTfjo48+gtlsxpQpU/CPf/wDMTExXo3B4XDgyJEjiI2Nhclk8vVXICIioiDQNA1lZWVIS0uD2dxEjkTz0SeffKLdfffd2urVqzUA2gcffOD0/COPPKLFx8drH374obZ9+3bt4osv1tLT07Wqqqr610ycOFEbOnSo9v3332vffPON1q9fP+2KK67wegwHDx7UAPDGG2+88cYbb23wdvDgwSav9SZNa/5mgSaTySmDomka0tLSsGjRItx2220AgJKSEiQnJ+PVV1/F1KlT8csvv+Ckk07C5s2bMXLkSADAmjVrcMEFF+DQoUNIS0tr8nNLSkrQuXNnHDx4EHFxcc0dPhEREbWi0tJS9OzZE8XFxYiPj2/0tT5P8TRm//79yM3NRWZmZv2x+Ph4jB49Ghs2bMDUqVOxYcMGdO7cuT44AYDMzEyYzWZs3LgRl156aYPz1tTUoKampv5xWVkZACAuLo4BChERURvjTXmGX4tkc3NzAQDJyclOx5OTk+ufy83NRbdu3Zyet1qtSExMrH+Nq6VLlyI+Pr7+1rNnT38Om4iIiEJMm1jFs2TJEpSUlNTfDh48GOwhERERUQD5NUBJSUkBAOTl5Tkdz8vLq38uJSUF+fn5Ts/bbDYUFhbWv8ZVRERE/XQOp3WIiIjaP78GKOnp6UhJScG6devqj5WWlmLjxo0YM2YMAGDMmDEoLi5GdnZ2/WuysrLgcDgwevRofw6HiIiI2iifi2TLy8vx66+/1j/ev38/tm3bhsTERPTq1QsLFizAgw8+iP79+yM9PR333nsv0tLS6lf6nHjiiZg4cSJuuOEGLFu2DHV1dZg3bx6mTp3q1QoeIiIiav98DlC2bNmCc845p/7xwoULAQAzZszAq6++isWLF6OiogKzZs1CcXExzjjjDKxZswaRkZH173nrrbcwb948nHvuufWN2p5++mk//DpERETUHrSoD0qwlJaWIj4+HiUlJaxHISIiaiN8uX63iVU8RERE1LEwQCEiIqKQwwCFiIiIQg4DFCIiIgo5DFCIiIjI2d69gGEPvGBggEJERERC04CXXgKGDQOWLAnqUBigEBEREVBYCFx2GXDDDUBlJfDkk8DatUEbjs+N2oiIiKid+eor4KqrgMOH9WNJSYDdHrQhMYNCRETUUdXVAXfdBYwf7xycnHsusGMHcMEFQRsaMyhEREQd0a+/AldeCWzerB8LCwMeeghYtAgwBzeHwQCFiIioI9E04PXXgXnzgPJy/fiAAcDKlcCIEcEbmwEDFCIioo6iuBiYMwd45x3n49dfDzz1FNCpE+BwAFu3AsePA126AMOHByWbwgCFiIioI/j2W2DaNODAAf1YQgKwfDkwZYo8zsoCHnkE2L0bqK0FwsOBgQOBO++UOpVWxCJZIiKiQHA4gOxsWaqbnS2Pg8FmA+6/Hzj7bOfgZNw4YPt25+Bk9mwpjo2JAVJT5X7HDjmeldWqw2YGhYiIyN9CJROxf79kTTZs0I9ZrcBf/gLccQdgscgxh0PGW1YGdO8OmExyPCpKHh8+LM+PG9dq0z3MoBAREflTSzMR/sq8rFwpHWGNwUnfvsB338nSYhWcAFJzsnu39D5RwYliMgGJifL81q3NG0szMEAhIiLyF9dMRFSUZBxUJqKsTJ73FHRkZQETJwKTJwPXXCP3Eyf6Nr1SWgpMny6Zk9JS/fiMGRJgnHpqw/ccPy6ZnogI9+eMjJTnjx/3fhwtxACFiIjIX1qSifBHDciGDZI1efNN/VhcHPD228CrrwKxse7f16WLTEN52iCwulqe79Kl6TH4CQMUIiKipng77dLcTERLMy92O/DAA8CZZ0rdiTJ2rAQ4U6c2/vsNHy41MgUF0ifFSNNkn56BA+V1rYQBChERUWN8mXZpbiaiJZmXAweAc84B7rtP3zvHYpFC2K++Anr3bvp3NJulgDc2VgpiKyslGKqslMdxcfJ8K/ZDYYBCRETkia/TLs3NRDQ38/Luu0BGBvDNN/qxPn2Ar7+WgMXqw2Ld8eOBF16Q81VUAEePyn1GBrBsWav3QeEyYyIiIneas/RWZSJmz5bnExMluKiuluDEUybCmHmJimo4FtfMS3k5MH8+sGKF8+uuvBJ47jkgPr55v/P48fL7hEAnWWZQiIiI3GnutEtzMhG+ZF42b5Z7Y3ASGwu88Qbw1lvND04Us1n245kwQe6DtGkgMyhERETueDPtUlTkfumtr5kIbzIvt98OPPoocO+90h1WGT1aep6ccEKLf+VQwgCFiIjIHV+nXVypTIS3VOZFdaAtKpLzZ2QAM2cCDz8sRa+KySQN1+6/HwgL8+lXawsYoBAREbmjpl127HCuQQH0aZeMDP8uvXWXedm/H5g1SwIWpWdP6XVy1ln+++wQwxoUIiIid4K19FZlXs44QzIql1/uHJz86U+yyV87Dk4ABihERESeBWvp7Q8/SJCyfLl+rFMn4JVXgFWrgISEwHxuCOEUDxERtQ8OR2CWx44fL9mKVauAnBxpfDZ1qm89RrzlcABPPgksWQLU1enHR46UQtj+/f3/mSGKAQoREbV9WVl6cWltrRSXDhwoUzAtzXK4O/frr/vn3EZHj8qGfp9/rh8zmYA77pCusOHh/vusNsCkaa4LrkNfaWkp4uPjUVJSgri4uGAPh4iIgkl1ey0rk54lERGy8qagQOpHXnih+YFEY+cODwfmzgUyM1uerfnPf4DrrpPzKt27S2+Tc85p/nlDjC/Xb9agEBFR29XSTfaac26bTepQDh+WdvKXXup5b56mVFVJkHPJJc7ByeTJUgjbjoITXzFAISKitqslm+w159xlZVKHUl0tNSiaJvee9uZpzI4dUlvy3HP6seho4MUXgX/9Sz63A2OAQkREbVdzN9lr7rmPHpUdg8PDZcdgTZN7X7I1mgb84x/AqFHAzz/rx4cPB7KzgRtuaBhsdUAMUIiIqO0ydnt1x7Xbq8MhQcDatXLfWDDheu7KSvlZrd7RNAkkrFbvszV5ecCFFwILFkjwoyxaBGzYAAwa5PWv3t4xQCEiorbLl032srKkVmTyZOCaa+S+sdoR13PbbBLQmEz648hImZYBms7WfPKJ9E/59FP9WEoK8NlnwN//7jkL1EExQCEiorZJ9T0591zJdDTW7fWrr6RGZMcOICYGSE2V+8ZqR1w7ydpsEpzY7dKjxGKRAENNx3jam6e6GrjlFsmc5Ofrxy+6SD7/vPMC9hW1ZQxQiIio7TFmQ556SqZe6uok2+Ha7XXcuMZX+pSWyqZ7n37acNrH2ElWBSg2m7y3Vy8JgICG2Rrlp5+AU08Fnn5aPxYRAfzzn7K0uGvX1vi22iQ2aiMiorbFU2+S48clgzFvnnNvkuxsfTUOIMGLzSa1IzYbUF4ObNkCTJ8u7eRdG7wZN/D74gsJLmpr5f0Oh2RICgud9+bRNOD556W2pLpaH/uQIcDbbwODB7f619bWMINCRERtR2N9T3r0kCzKunXOjdPUapzaWmDvXuC334Dffwd+/VV+VgFE586ep33UBn533AG89ppkVIqK5DxFRRJ4qL15jh2TviZz5zoHJ/PnA5s2MTjxEgMUIiJqO5rT96RLFwlscnKkMZrFAoSFSS2JpumFr+HhLWvw5nAAzz4rGZiPPtKPd+sG/Pe/srQ4MrJlv38HwikeIiJqO7zpe1JU5LySZuhQmcpRq25MpoaBh6ZJcAI0DHRGjNBf52l6acsW4Pzz5TOMTj1Vak2Sk1v+u3cwzKAQEVHb4WvfE0Baxlutcqurk+BE05yXJZtMsvJHcbdk2NP0UkUFUFLiHJyYTLL6p6BACmXJZwxQiIiodbk2S7PZvG+e5kvfE+X4cQkkeveWoMLh0IMJs1nfJdgYYLgLdFynlzRN6k1ycpzHEh4uDdf695cC3ObuBdTBcYqHiIhaT1aWXLB375YMhQoWrFY9WHBdRWOkepPMni29SRITJdvhbiWNorIu4eHAgAGSKamrk+XINTX6qhtjh9jCQimEdQ101PSSzSaBSXGx8/hMJinWVc3bPE0VUZOYQSEiotah6jdUs7SYGKkXUTd1rKmN94y9SSoqGvY9cQ1s3GVdTCbJhJjNEtxYLBJ8FBQAhw41HugUFsoeOq7BSViYBDkqIwO0bC+gDo4ZFCIiCjzX+g0AOHhQAobISMlo5OVJhqN7d8mOPPKI9B8xu/m3tLE3yfHjEjwYlxYbqazL1VcDP/6o16CoYlmTSYKI33+Xn+PjJUByDXQGD5Zz/f6783GTSYITh0OmkFT2BPDcXZaaxACFiIgCz7V+o6JCLt5qoz2rVaZbKivlAu/N1IjqTeIt16JYh0NuZrMsBe7USW+Tv2yZBDwqSNm7F7jyyobBSVqaZH9UIGJsfe9pqoi8wikeIiIKHFUQu2aNBCVqebDNpmcxAD1gUIWq/pwaUdkbu12yIP36ScFsZKQeIFVUSKO2xETnPih2O7BihQQYW7bo54yOlmDE4ZDVOmrTQNVd1nUvIHeZHWoUMyhERBQYxoLYigqp2aiqkiJSFRioIEXT5CKuClX9OTVizN6YzZIpqaiQaSX1ecbsjeqD8ssv0tvk88+dzzdrluw+vGePPr1UVAQ8+qh8TlGRjD0jw3OxLzWJAQoREfmfa0OzxEQJOiorZZpEZTCqqqR+Q23AFx3t/6kRd83djBkcTZNMSUmJ/BwdLc8fOSIFs0piIrB8uWxQCDScXho/3ruaGPIKAxQiIvIv14JYNY2TlgYcOCDBwuHD8jgnR69FSU6WAMbTcuHmMjZ3U91iVQbHZpPgxOGQIt38fPnM2lrnc5xzDvD665L98cTXmhhqFEM7IiLyL0/75cTFAb16SZBQUyNTIQkJ+q28vPHlws3lbpmxqhdRnWVVoa7d7hycWK0SbH3+eePBCfkdMyhERORfje2XExcnNSAHDwK33gpMnCh75Wzf3vKpEYfD/RSLu+ZuERHO3V1Npobt8yMigPXrgdGj9WJfTt+0GgYoRETkX+6mVIxqaiRImThRnxJp6dSIa4da1460qrmbek1+vt7B1mZr2Io+MlJ+D6u16XNTQDD8IyIi/2rOfjlNcd2/xxhQuHaoTU1135F2/HhZ7rx6tWRvVMt6V6r1fUUF8MUX3p2b/I4BChER+ZeaUomNlSmVysqW9QbJypJsy+TJwDXXyP3EiXLc0w7DUVHO/UxUQGM2y5TSgQPOuxer5yIj9cClslKCGW/PTX7FAIWIiPzP1/1yXKmMyd/+BsyYITUq7jIYL77oviAX0PuZqI60gKwaGjdO3mdkteo9UYydYHNyvD83+RVrUIiIKDB82S/HSNV87NolS39tNqlZqauT7IXKYBw+LIGGp4JcQDIiRUXy+atWAXPmSL8TV8apHpNJNg+MiPD+3OR3DFCIiChw3PUG8bTaBnBu8Kaatlmt0tDtwAFZphwXJ0FEQoIcczikS21CQsNMh+qx8s9/Ah9/7PxceLjeA8W1VgaQ90VEeC725UaAAcUAhYiIWk9jK2LGjXOuJykr0wMUi0UyKLm5UttSViY/V1RIcFNSIgFPSooEMIC8Ny9PghtjcGIyyTnKyyU4CQ/XC2NVgFNTIz8PHiw7IBsbzqlzcyPAgGKAQkRErcO1/b3KTqh6kkWLnOtJrFY9cFD79FRXA8eO6cuEzWYJSvLyJOBQbfStVmlTX17uPIawMHneYpEdigEJlMLC5D2api8/tlqByy6TOhTVPyUyUsbg72631IDfv1W73Y57770X6enpiIqKQt++ffHAAw9AM6TPNE3Dfffdh9TUVERFRSEzMxN71R8UIiJquzwtB/Zmtc3y5RKwqJqP6GjnpcBqx+Pjx2VqBpD3JycD6elSp2K3S0Cxf3/D4KRTJ+Dkk4H4eDmP2SyBCSCfUVcn74+KkiDGbJbzNrfYt7Gl0dQkv2dQ/va3v+H555/Ha6+9hsGDB2PLli249tprER8fj/nz5wMAHn30UTz99NN47bXXkJ6ejnvvvRcTJkzAzz//jMjISH8PiYiIWkNWFrB0qUyJqEDj5JOBJUskKGhqtc2RI3pHV1XzkZoqAUdtrQQMJpPeit5qlecBmbIZOFA61B475lxTkpIiwUGXLnq2Q2Vn1M1ul9fFxEhgVFWl15eMGOF7sS+bu7WYSdPcVQY130UXXYTk5GS8/PLL9cemTJmCqKgovPnmm9A0DWlpaVi0aBFuu+02AEBJSQmSk5Px6quvYurUqU1+RmlpKeLj41FSUoI4NddIRETBk5UFTJ8uF3BjpsBslgv6/PnAU09JQOHuwu5wSHYiNVUCFWPNR1mZHKuslPc6HBJEpKVJYAJIgHHoUMMVNX/6k9zmzWv42Xv26Lsp19UBffpIIKVpMqWTkSGN3XydwvE0lVVQION94YUOG6T4cv32+xTP6aefjnXr1mHPnj0AgO3bt+Pbb7/F+eefDwDYv38/cnNzkZmZWf+e+Ph4jB49Ghs2bHB7zpqaGpSWljrdiIgoRDgcwOLFUgficEh2QtV02O1SzPrPf8qF33W/G0WtiJk1q2GDN4tFpme6d5dlwt26yWqe2Fh5TX4+8PPPzsFJVBSwYoUsLe7TR2+9b5SaKudWGRmLpfnN5IzfhS+N48gjv0/x3HnnnSgtLcWgQYNgsVhgt9vx0EMPYdq0aQCA3NxcAEBycrLT+5KTk+ufc7V06VL85S9/8fdQiYjIH7KzZVoHkMBEZT7U8l2HQ7Ib4eHSN6R3b32lDSCvyc+X4yNGAM8/Dzz6qEyPFBXJ+zIy9JU+u3cDW7ZIYFFdrdejKHFxwKZNMqXicOjTOzk58hlqfLGxEujk5Mix4mLJdqjPak6Ww9NOzkDD5m4t3X+onfN7gPLuu+/irbfewsqVKzF48GBs27YNCxYsQFpaGmbMmNGscy5ZsgQLFy6sf1xaWoqePXv6a8hERNQSGzfKFIkxOLHbJYAwVhF06gSUlgL79gE9esjFurBQpnYcDilsvewyCSwWL5a+Ju5qPiZMAL780v0+OiaTnKO8XPbRUYFOWZncfvxRMieJiRLclJZKkLJokRTEtnSn4sZ2cgbY3M0Hfg9Qbr/9dtx55531tSRDhgxBTk4Oli5dihkzZiAlJQUAkJeXh1RV3PR/j4cNG+b2nBEREYjw9B+biIhCi6ZJwGLsK6JpUoCqMhl5eRIwlJZKMNC9uwQNatnxjTdKrcaECfJ+tSImP1+Ou2ZNAH1J8ptvAh99JEFKZKQEJElJejB0+LB8dkxMy7Il7jS1kzObu3nN7zUolZWVMLtEnhaLBY7/m29LT09HSkoK1q1bV/98aWkpNm7ciDFjxvh7OEREFGijR8tFV2U0NE0PTkwm/edOnWT65YQTpBi1a1d5PHiwvsLGXa2G2ixw0iTg0kulf4kxMxMZKfUuJpNkcRwOeX91tSwJVv1SunSRz4qLk6mef/1LimD9WbAaiJ2cOyi/Z1D++Mc/4qGHHkKvXr0wePBgbN26FU888QSuu+46AIDJZMKCBQvw4IMPon///vXLjNPS0jBp0iR/D4eIiAJtxAi58G/bJpkDlckA9PuoKAlQ1M/HjsnFOiWl4XSKamO/cyewYAHwwQcSaFRU6AWtSteushLHZpMgCZDsis2m91A5elRf7WM2S9+UggJ9iXFzeGrXr3Zynj2bzd1ayO8ByjPPPIN7770XN910E/Lz85GWlobZs2fjvvvuq3/N4sWLUVFRgVmzZqG4uBhnnHEG1qxZwx4oRERtkdkstR5XXy2Bh3H6RXWE7dFDP1ZdrS8Xdjd9X1qqt7F/7jn3e+WYTHKOigqZTlIZFIfDOWtjtUrQVFkpS5OBlteBNNXjRO3krF7jWujbQZcY+8rvfVBaA/ugEBGFINWobedOyVC461eieoz06SO9TWJjnWs1SktlA0CbTV8B5EpN46j+JYAEAKqJW3i4HLdY5FhdnRTAqutFZaUENqtX+76SxpceJ41tithB+XL95l48RETUPK4X4HHj9I6rX3wBPPusBAwWi7zWOM3x4IOSddmxQ2/KpmmSObHbPQcn6nMdDn26R3WCVT1TuneX81RVyWO1jw/Qsk3+XHucqAJgVTdz+LA8P26cPt3DpcTNxgCFiMjfOsK/nD1Nc6jlwcOGAXfdBbz/vnRsdTfNYTY712o4HHpzNk/JfZNJgg5AghJViGuzNczWHDggY4uKkmmdysqW1YH4o8dJR/iz4ScMUIiI/Kkj7MHiaZpjyxbg4oslQDCb5Xfv3x+48kpZ0tu7NzB1qjyXnS1TL4sW6UFMcbH75cOKsbYkPFwyMrGxwB13yMZ9xmyN1SoBi8Uin330aMvrQFra46Qj/NnwI9agEBH5S0fYg8XhkCW/xqkZQK8dURmLgQOdm7DFxsqta1d5/bFj+kW6f3/JJrz/vnPztbAwvRbFyGqVY2azZGs++QQoKWk8o+OPjEV2NjB5sgQ87nqcNFbb0hH+bHiBNShERK3N1/qEtsjhAFaulOXEMTH6cWPtiOqHUlAgzdhURkQFHtu2yX3XrrLsuK4O+OabhsuHVSGsu39D22ySGenaVV5z/Lg0dPN1x2FfqR4nrsGZ+g481bZ0hD8bAcAAhYjIH1pjDxZv6heaW+PQ1PvU9MS2bRJ8FBfLa1NSJFiortaX+tbVyXN2u2QKVIHs8eN68Wtenr4s2CgmRu9rompNjFTBq8MhWZiEBL0ra6CLUpvb44T78zQLAxQiIn/wtT7B10DCm/qF5tY4NPU+4/RETIwEJyaTTGn8/rtMUagVNCrjUVurr5xRgUh1tXMDN9fsSHg4MGCA7MlTV+d552OLRQ+KbDZg6FDPv5u/NafHCffnaRYGKERE/uDLHiy+BhKe6hd27JDjL7wgr2vqNc05t9pZ2Dg9cfy41FoAEkgUFsrPKuCIiJDjxn14TKbGC2DVUuGDB2XvnKgoOe+BA87v0zR9SbHVKrft21s38zB+vG/TSdyfp1k42UVE5A/e7sFSVCQX/h07JBuRmir3KiDIynJ+r2v9QlRUwz1rli6VW2OvUfva+Hrue+4Bdu1ynp6Ij9d7kbieTxXEqnb3muZ5ugaQc6q9dDTNOdOgpowiIvSLv5oiioqSVUFmc3AyD2o6acIEuW8s+8X9eZqFAQoRkT+o+oTYWKlPUP08KivlcVycrCgxZiOaCiSMRamqTbuRql/48Ue5eVPjYORNbcS+ffI7qKBB02TFjOrSqt6nAhCTSXYRVl1e6+rkd3Q9v3pPZKSePVFLk9XUjtWqvzcyUp5TbfMHDJDPaAuZB2/+bHB/ngb4bRAR+YuqT8jIkCmQo0flPiND+nQkJHhfLKl28F24UP7lfeiQ7OJbWur8vshIuaDX1DRe41Bb2zDT4E1thMMhF04VNFRWypREWJgEVmFhEjT06iXLhaOi5LUqgAEk+Kiudj63xSLBhcqaqCXDJ5ygt8mvqtKLblV2JipKvqfWzjw4HLLMeO1auffU5daTpv5sdIAlxr5iDQoRkT81Vp+wdq13xZJffAG89FLDotSqKqnJ6NVL31emulo/n681DsbaCNVp1WbTm5xVV+vdWX//XbI8qi+JCj6MQQMg4z1wALj5ZuC774DPP3f+TNVkTdP07EpkpAQ6w4ZJlumKKyRrZJwOsdslqElOlu+hNXcG9leDNV9rVzo4BihERP7mabmrN8WSYWHABx80LEqtqtKnTXJz9XbuhYXAkCHy886dvvXnULURW7bIeauq9OBDZUdGjpSg4cYbJYujpnLUJn0Wi9TRGH+H8HDgnXeAX37Rj1utwCWXyMW5okICH7WjcWWlHmxs3SpBmrv+J3a7LE9OSGi9nYG9KVD2ZQzcn8drDNuIiFqLN8WSaWmyy69xGig1VQIBlXFQfTdU/cKSJXLztcbBbJYiz5ISqRtRq2PsdnlcUiLPZ2YCc+ZI9iQvT+5tNnlt1656sORwyOfl5TkHJ4MGAZs2Af/6F7B8uQQXdrsEKna7Ps1x1lnAww/LeSIj5RYRod+r7+ndd4E1awIfnHhTROyu+Jj8ggEKEVFr8aZY8tJLJRAxTgPFxsqKlagofZmta/1Cc2ocHA55T2O7Br/wgkw5LVsmGZXevSVgUqtu8vIkkCkrA37+WWpkjOebPVtqNlT2Zvx4CS5WrwZefVXuVbCxapWcKyxM3w1Y7UasalaqqqQWpzWmRXxpsEZ+xykeIqLW1FSjr/h44LnnGk4Dqb1sCgslu/HEE7IJn/FC7WuNw+bNwG+/yc/uVtloGvDrr7IrsWub9pgYmWqqqJD6FBU4KYmJwMsvA5MmNTyvp2mOnBx9jx13zGbJ3OTkuH/e39hgLagYoBARtbbGAgmHo/H9XiorpZjUNThRfKlxeP99PdvhKUDRNOmD0rOnHCso0AtFTzhBApzy8oa/3+uvy/h90bu33nXW3e/mcMjzvXv7dt7mYoO1oGKAQkQUDJ4CCV/3e2nu3juA3g1WMdbFGAMWm01WEhk3/3PHZAJmzpQMUXOmYKZOBW65RbISxmXKamx1dVIgO3Wq7+dujuZuDkh+wRoUIqJQ46meZMgQ6YtSVyd1HV98Ib1SJk8GrrlG7idObNiN1pPRo/Wf1c7B6uZal3LkSOPBidUqwcNXX8mtOaxWmU6yWvV9dhwOuVebEarnWwMbrAWVSdPcreUKbaWlpYiPj0dJSQniVC8AIqL2xpgd2b9fpmT27JEpFodD6kIiI6VoVS1/LSiQC6o3y19tNql5qaz0/JrISH3VTmOGDJHi1sOHJbBas6b5F+7HH5fVPCUl+rLn+HgJThYtat45W8JffVDIp+s3AxQiolDn2osjPFxWslRWSlDQp4++1FfTvA8SHA5ZArx3r+fXJCcDx441vZS2Tx8ZW2WlZHtWr25Zvw+bTVb15ORIzcnUqQ0zJy2Z3vJVa35WO+bL9Zs1KEREocy1F4fJJAGAWl1is8kUkApQXJe/NhYkbN0qWZdu3STzYpzCsVgk4Kiq8q7Ph2qF76+VLVYrcNVVnp9v7awGG6y1OoZ/REShynWzQFWkaWw3b7VKcGCcpvG0944rtYy2e3fJuPTpI9NFffrI4y5dGhbSeqKW4lZVyf3evc3bs8YbKqO0Y4cEUp06yb2nHaGpTWIGhYgoFKkMwbZtkt0oLpaAQjVJM5n0IEUVkiquy189TZe4LqM1bv5XXCyv9ybAUBv9lZbKe8xm4KGHApPVUBmlggIpFi4q0pclh4dLwPXII7KMm1MwbRoDFCKiUGOsOXHdLDAnRzYLjIyUx+oiXF0tWYSoKCA/XwIRhwN47DG5YBsLTm+5RQpOb73VeS+e2lqZ5nG3iqcxVqsET0eOyOPERMlqOBzN37PGk61bge3bpfeKpslnWyzyc3W1BFvbtzc9vUUhjwEKEVEoca05AdxvFpiSIh1ca2sl6Dh6VA8sVFblD3+QwATQ28c7HJJ1WLJEjk+YIMuCbTa50Kvlxkp4uNS3WCwN61QAvbtrbq58bliY9Ac5fjwwWY38fAnYHA7nDq9ql+SaGnk+P79ln0NBxwCFiCiUuNv/JSUFOHDAebPAsjI9WFCBh8p6WCySxdi/Xw82TCbn/W2qq2Up7/Dhku2orJRAwshiAfr1k4AjNVUCprw8eW9kpKzwqayU4MjhkOCgri6wWQ0VJKldlV1ZLPJ8QUHLPoeCjgEKEVEocbf/S1ycTOvk5uoNzAoKJBDo1Uvuc3LkfWFh8vzhw87TNHV1+kVdZTqKi6WQtba2YXCSmiq9RwoL5XFhodxqauS85eUSJCUmyliLiiQgCXRWIynJOdPj2t3V4dBXIFGbxgCFiCiUeNr/JS5O3yywuFguwsnJ8prKSskaqGkcq1UCEkUV1LruceNwyLmMwsOB9HSpfVHTQXFxwL598nxYmJ4dqayUW8+eesDkjj+zGt26AZ07y7hUtkb9fjab/Ny5s7yO2jSWOBMRhRK1/0tBgXMtiFJVJQFEWJierVAt4VU2obGN/+x2OYdrxgSQlTgnnijBCaCvBjJmXozUYzWl41q/oj7Xn1mN4cOBoUNljFFR8vvU1cl9VJQcHzqU++O0AwxQiIhCiTf7v8yapWdZAAkQzGY9ONA0vd5EPVaFszU17gMfq1UCCJUFUZvhpaVJL5QePdwHBN27y3RPTIx8Rl2dHqg4HPLYn1kN9f0kJemf37u33EdFSQaK++O0C/wvSEQUajxtFpiRASxbJgGKMcsSHa13lVVTHWqPHkXtBuwqPFyCErtd3xDQGAxdeqm8LzER6N8f6NtXGrn17SuPVVakT5/Wy2qo72foUAmCKirkfuhQ+X64P067wL14iIhCVWP7vxh7pVitMm1TUiLvsVolqxAWBhw8KBdwd3/Vm0wy9RIeLsGEzSaZjk6d9AZr8fGyS3JMjAQ9lZXyOqtVgo+iIjn/zJnAe+/JeKKj9bqTyko5RyACB+6P0+Zws0AiokAJpYvinDnAyy833Gm4UyeZIgoPl7qSffskcDBSHWNVxsVikSzM4sXAxIn67+VwyOMtW+R11dV6PQsgz4eFScGumsI5doy7/pJb3CyQiCgQWnuDusY8/jjwyit6NsO4kqW6Gjj9dMlgeNqXRtWkqCXHqmj2D39w7lViNjs3cwsLk+PGoKhLFwmIDh2S+yVLpJA32AEctWkMUIiIvGGcUklKkmyDakA2YwYwbx6Qmdn8C7K7zIzD4X4PHZtNmqzZbDLNolbT2O3yHrsd+Pxz5/OrAEZRAYnJ1PjqH4cDWLtWpnjq6vRmbOr1ZrN8J6qR2+HDwOrVwJo1DEyoRRigEBE1xbX9vLqQ19VJjcWxY8A99wBPPgkMGSIZBF8yKu4yMxER0pitsrLhHjrJyVJvEhbmHJyoVT2uTCaga1cJftztsaOOqTb1RqqzbWqqBEMFBZIpUf1W1MqgykqpPUlMlNc31jU2lKbJKGQxQCEiaoq79vOlpbIXjsom2Gxywf36a+Dnn4E33vAuSHGXmTl8WFrbAxIEhIU576Fz7rn6UmJAfnbX1wTQe5iUlbkvlDWeR63WMXLtbKuWIRt7oxh3U46MlHEeP+759w2VaTIKaQxZiYia4nqR1jTJIrgu21VFpXl5Umza1I7ArpkZNV1j7Liqur9arXLxt9mAb77RnwP05cWu1GZ9YWHO/U+M0zqq4ZvrFJBi7GwLONe7qO9CjQ/Qm7t16dLwXCoY27FDpoxSU+Ve7XjsqV6GOiQGKERETXG9SFdUyIUY0C/2asmuKiL98UfZ5waQQCI7W2o5srP1wMJdZqawUN8E0NiiXj22WGRJsdol2FgTYqReq6Z+jMGScRWOaq5mtcoUjesUj7vOtmpXZVWUGxEh71XN3QYObNjzxF0wZjbrzdbKyuT5poI66jAYoBARNcX1Im3sK6KCCFUwajLpe+Fs3ChZgQkTgIsuAq64Qu4nTJDj7jYGdJ2qMbaoVxsFqkJYQL93lZamr85prJuEpkmQkJwsK3BcMx+qc6vVKkHXr7/KOFTLfEDf1Vg1d3PXydVdMGYUFQVs2wasXMkghQAwQCEiappr+3ljxsK4VNfVnj3A9OlSl3L8uGQJVJ3K9OnA/v3OmRlAHhupGo/a2oa7E3tisUhGoykREdIRtl8/GYO7zIdiDHJUG30VnBUWOne6dVdL4i4YA6SWZ+9e+V4LCoCFC6XvCqd7OjwGKERE3jC2nzdSdR6qaBTQ+4V8/rnUo6jurqo5mqpTWb4cGDDAefokMVE/l8rM2O2NZ0EsFnmf2rQPkAu+ynB4YrNJYHLkiOfMh5qasduBwYMlmOnTR8Y9dKh0ie3dG/jXv2RpsadCV9dpMkCCkwMHZJxqSoo1KfR/GKAQEXlr/Hi5CH/0kexDo7IIxloRdQFOT5cMCSCBiXqt2axnW376Sfa6MW4MqGkNd/1tbMojLEwu7MnJwAknSObEZJKLvgpqwsOlwDYiQh8LIEFHeXnjmQ/j1IzZLF1q4+PlXn1uQYHz5oSuY8/OBvLzpShWBWOaJsuo7XZ9lVJkpARarEkhMEAhIvKN2QyMGiUX9NRUuUjbbDJ9oVrGp6RI0zZVfOpac2GsU3E4Gm4MGBkpF2mLxfMF2mSS16mMjM0mgc6AATJtowIVtRmgolraqx2Qb7658cyHp6kZJTJSnne3rDgrS6ZrJk8GrrtOArbSUrkvLJRaFrNZvgeLRd/c0GRy7qdCHRL7oBARNcf48cDrrwNLl0rxaE2NXMRPPll6lfz8s2/nGjdOb162f7+0so+Pl4ZsroWwnTtL5gNouMwXkMfR0TImm01fhqymjFTAZLUCI0c23iTNODUTFdXweU/Lij113q2rk/eoQl+LRc6bmioBltJUPxVq9xigEBE1l2tgYeyKqjbrU9kBVzabPD96tDw2m6XzqsMhq3zy8iQIMdaeqOCipsZ5qW90tF4Uq4pWTzgB2LVLAhzjewE9KxMdrW/w54lawbRjh3MXXeNnZWQ4F9d66rwbFSVTX4cOyefm5UnNiWtzOKDxfirUIXCKh4goEEaMkKJSQO9D4lqnMniw3g5e1Wo8+qg0YnPt/Go26++vqtKXHGuaXOAdDuelvg88IIGRMTBxbdRmNkuha2NcVzBVVjb8LNfi2saWFJtMcrykRIIoVXdj1Fg/FeowGKAQETWXscbimmvkXi2RNZsl2EhJkUDBuNGeqlO5/npZ6bNsmWRNLrhA9toxrnSxWqWniQo2FFXHYrVKwHL0qPNSX7WqR63sCQvTu8paLPpz27c3/XsaVzCpOpnGlhV7U7dSV9ewQLipwIc6FE7xEBE1h6caix07gFmzgNtuk+mMyy8HXntNMgYqU6A6ry5dKu8vLXXuGKuYTEDPnnLB1zS5sKsdi3v0ABIS5GKeng7cf79Mm6gpprVr5b53b5lKqa7Wa1BUY7bycu9rPBqbznLlbd1KZqYUHKu9eYqK5HhGBvfmIQYoREQ+UVMxt90m0xC9e+sX6ago+Zd/Tg5w663yuKxMgoJu3WRpbkWFLLndt0/qM2pr3XeDVefMz5fXqCJYh0POm5ioT5ccPSrnN+4erIKE8HBZEl1ZKVNCqqW9apfvS42HqpNpii91K2az94EPdSj8E0BE5C01pXPxxTI1Uloqrd9LS+V51XjMbteboKnVM0VFctGtqNAv2Lm58tjIbAZ69ZKpGJNJbyuvac7TQ+ocnpb5GtvzA879S4DA1nj4WreiAp8JE+SewQmBAQoRkXeMO/GGhztv3HfggEzhqMZjqjdJdbVe72G3y8W5uloea1rDfXcsFrl16iRBitqAD5D3R0XJ8bg4/T2eVrsYg4RDhyRQKS6W+0OHAl/j4WvdCpELTvEQUcfkcHg/reC6bLaqSi9aVct9jxyRe7U7sKonqa3Vu6yqOhB3betVu/y6Osm+xMXJ46Ii6Xty7JjzdBLgeZmvMn48MGcO8PDDwMGDeg1KfLwEW4EOEnypWyFywQCFiDqerCy9MLO2VoKDgQMbFmaqIGbDBmDnTn3ZbHS0FLqqOg6rVZ/Ocdf51eHw3BFWtcC3WJybrqlpoYwMYPFi4MYbJQhKTJRpnepqCU4ay4RkZUm2IixMMi9msz7VsmyZBAuBDlK8rVshcmHStMZ2oApNpaWliI+PR0lJCeKMqU4iIqDx7Iin1TcFBTId8sILctE2BjFlZTKFEx0tS35jY+VYTo7eDdWYNQH0/XkaY7VKVuTQIb3OJCpKVu6o4ENNh3gbVBm/g4kTPReqHj4swc+aNcxoUKvx5frNDAoRtS+NXcjHjfPc4bR7d7loqw3qbrxRD2LUapyqKglKeveWIKV3b6mtqKpqGJx4w2KR8yQnS/2KwyHjVbUaxuDD1+mSppqlGfe6YYaDQhADFCJqPxrrTTJ7NrBoUdMX7V27gHvucQ5iVGajqkrqQ44elcAiNlZatefkyPOHD3uuMTGKitKLZH/7TYpizzwTuOwy6WniKfjwZrpEZY/WrJFAx10beYB73VDIY16PiNoH10LWqCi5oKvsSFkZsHy5vqmfO5GRslR41y59bxtAghTVEVbTpIYjL09fEZOYCEyapBfNNpZBSU6WJmuqr4k/Z9mNnW2ffFJW7ezdqy+DNuJeNxTimEEhovbBmymNI0f0zfZcO5yWlUmwoVbaVFZKdiElRWpB4uLkYq6WEh8+LAGQWhFz1lnAiy/qG/g15sABycSYzRI8VVfL/jvr18vnxMQ0Xl9ipDImX3wBPPusZGWSkuRWVSW/x4EDzsuTm1r9QxQCmEEhovbBdf+XykrJHFRWyuPISLlPTZXMhzGIKCsDfv9dLugqA6Jpeo+T0lK5qekQi0WKZVVDtWXLJOsSFtZ0cJKfr++1ExUlwY6qP1HTPjEx+rRUVpbnc6mMyaWXAvfdJ0FTRYUe/PToIWOqrZXn7HbudUNtRkD+ZB4+fBhXXXUVkpKSEBUVhSFDhmDLli31z2uahvvuuw+pqamIiopCZmYm9u7dG4ihEFFHoVq7FxYCe/ZIbcf+/XK/Z48cDw+XfXJcm5cdOKA3TVM7BNtsekfYo0f1zAkg0z8pKZKV6d5dgo7rrmvYFdY1k6OWDwNyrrg4mSqy2yWQUMGEpunTUqpoF9Db7K9dK0HRrFkSyKjzWq2SjcnJkffGxgJ9+kggVFMjvVDYLI3aCL9P8RQVFWHs2LE455xz8Omnn6Jr167Yu3cvEhIS6l/z6KOP4umnn8Zrr72G9PR03HvvvZgwYQJ+/vlnRKp/5RBRx+NL8zRXw4cDXbsC27bJY7Vrr5quqawEBgyQlTcXXgi88YZcsFXmQlFZEBUo2O16e3q1g3BqqrzWbtczLEapqRLYFBXp2QyzWf8c9TsVFcmUkNWqBzMOh7zHdaVNSYnz6qTiYnlt7956Ya7aobi21rmQd+BAGeett0rGhc3SqA3we4Dyt7/9DT179sSKFSvqj6Wnp9f/rGkannrqKdxzzz245JJLAACvv/46kpOT8eGHH2Lq1Kn+HhIRhYKmgg9f+3w0xl2Rqt0u++ZMmybZBbNZAhpAsiOKpunt6evq9GOqiVrXrnLRLy+XDI2xXX10NPDyy8Cf/gSsXAksXCjTNZ07y3RRebl8lupCq4IgY8GsatQG6CttvvgCeOklfXWS3a7vcHzggGwUqKalTCY5R1WVZI0SEyWr0qmTBCdcUkxthN9D6P/85z8YOXIkLr/8cnTr1g3Dhw/H8uXL65/fv38/cnNzkZmZWX8sPj4eo0ePxoYNG/w9HCIKBcbVJddcI/cTJ+r1FcZ9bmJiJAPhbR2GsnWrtIPv0UOmNGw2CQBUAzXVRVV1fLXb5eJvpDbks9nkZqQ6vubnS72KCqSUiAhg1Spg6lQ9kLFYJDgxmyVA6NZNrztRn2ds6GazyXnUCqLqasnofPCB8+okNeUTFqb/HpGRMvaqKv13OHhQxpmbG7iNAYkCxO8Byr59+/D888+jf//+WLt2LW688UbMnz8fr732GgAg9//+pZKcnOz0vuTk5PrnXNXU1KC0tNTpRkRtRFPBxxdfNL082FiH4Y7DIe3oy8r0jqyAHoiorIimSYBisUiGxm6XqRPXLqvuVuKo4tvaWn2HYKVTJ+CMM2TqSFE1MaogFnBerqyyM+Hh8rMal5o+Uitt0tJk9ZFxdZLVqmefVJv9yEj9dzWOvaJCMjcTJnBah9oUv/9pdTgcOOWUU/Dwww9j+PDhmDVrFm644QYsW7as2edcunQp4uPj6289e/b044iJKGC86U1yzz2yAsabjqfuqOzMQw9JXcahQ3JBVj1JFJVJsdslyKipkbHU1enZEcB9ozVjQGMUFgYkJEgQcdddzgHA8OGStXBdMRQXJ6t/LBZ5f0SEvhdPSooEO8aVNpdeKmM09m5RewGpWhVNk99Z1bqo785kkmAwJkYKaxsL8ohCjN8DlNTUVJx00klOx0488UQcOHAAAJCSkgIAyMvLc3pNXl5e/XOulixZgpKSkvrbwYMH/T1sIgqEpnqTJCTI88XFzpkPo8hICSjcdTw1ZmfUVIpiszWddVGZkogI5yDFlcq0GIWFSdO1kSPdr4gxm6V+JjZWgo3KSn2jvtJSCVKefBJ4+23gmWekj0pNjUwfFRUBQ4bIeTMzG2ZiAMm0WCx6HYux2DYsTIKmvn2B/v0l8GksyCMKQX4PUMaOHYvdu3c7HduzZw969+4NQApmU1JSsG7duvrnS0tLsXHjRowZM8btOSMiIhAXF+d0I6I2wLU3iVFpqVy4S0vlX/+//ea+66mnjqeu2Rmg4VSNax0J4BzEqN2Hu3SRiz0gn9XUXjrR0cDjjwMffigt5T0V8Y4fL5sPZmTIVMvRo/oy3xdeAObMkamXAQM8f5anTExsrJ6JMZv1AC86Wtrlq2yMydR4kEcUovy+iufWW2/F6aefjocffhh/+tOfsGnTJrz44ot48cUXAQAmkwkLFizAgw8+iP79+9cvM05LS8OkSZP8PRwiCiZjHYaxc2tpqXM3VfUa1RhNdT1trOOpa3ZGBSPh4Xr2xF1GRtWiGOtUVBGrWu3S1IXcYpHNBK1e/BXa1CZ/nvYP2rlTjr/wgmRiZs+WgC4xUQKO6mo9E3PZZbJ6KCbG/d47bGtPbZDfMyijRo3CBx98gLfffhsnn3wyHnjgATz11FOYNm1a/WsWL16Mm2++GbNmzcKoUaNQXl6ONWvWsAcKUVthbBiWne15KsXdv/41zbnpmapHUc3GbDZ5vqKi8Y6nrtkZNb1hNssFXE3buE7dGJfxAvJcRYVM1fznP8Dddzf9+1dXNz5d4vr9ALK8d8IEuVe/izc1Oo88IgFOY5mYhx4Chg2T6SPXoEwFeVzFQ22MSdP8uVNV6ygtLUV8fDxKSko43UPU2nztV2LMECQmykX5t9/0/h/JyXrWoKhIsigOhyzJHTLE83mzs2W5ckyMvjvw3r16u3rjFI/JJDUaKoBRRa8xMRIoPfEEcOWVMmUzfbreHt8dlYH5xz+AefNa9v24/g6uKislEFm9WgKbxnrJuH7PKstSWChBHjvHUgjw5frNNWdE5L3m9CtxrcPIz5cLbXi4XOxzc6XhmWozkJIiG/DdfXfj9R2u2RnXJbx1dXKRVlM+ERFAz57ACSdI8eiAAfK+YcOASy6RepApUxoPToCGK3la8v00VqMDNKwdMZvdZ2Lcfc/GLAuDE2qDuJsxEXnHdTpCTZuo6YjDh/XpCNfpGGMdxoYNsrFdebmeRVFZiaoq+Vd/QgIwZkzjfTvUKhljbUZMjGRk1OZ74eH61FFkpNSXqMyCmj6aPBkYNUoyHp4+RzHWrowa1fLvx1ONjuJr7UhT9S5EbQj/1BKRd5paMtxUvxL1r/85c/Si1rAwvUbEbJbHqovr0KFNj8ld1gCQJbvPPCPt5j/5RGpLRo50ziwMGSLvnz/fOTg58UTnGhUVlBiDE7VypqXfj6cVOupzm1M70liWhagNYQaFiLzjzXREUVHTK2C2b9c3tTP27lA1I+q57du92zfG26zB+PH6awDg73+X4EYxmYDFi6Uj7NVXS4bHXUfZsDDJ1BQWOh9vzvfjLgvkWjvirkCYqAPgn3oi8o671u1G3k5HHD8uF9zevfV9aerq5D4qSo6bzb717PAma6BeU1sLXHWVtNhXuncH1q2TKZjUVOkxkpCg90ZRLBY5HhEhBbnGFUzN/X5YO0LkFjMoROQdNR2xY4d0Ka2q0jMeUVGe+5W4Uhfy8HDpclpZqZ8nOlrOG4ieHVVVwG23Ac8953z80kuB5ctlakb9nl27Atu2SfYkPFx/bV2dFPmGhQEPPiiBilqhM26c/v0Ya1CAxvu5AKwdIXKDAQoReUdNR0yfDvz0k3PvE7V7rzfTEcZAp3t3KVxVmrqQN9eOHcAVVwA//6wfi4oCbr0VOPNMaS+fkNBw7MY+KjabPt1jNkuQVlOjr9BprKGaN9M1KsNDRAA4xUNEvnLNDPiqsT1qGmvM1hyaBjz9NHDqqc7BSb9+EgC9+SZw7bWykmfiRFkGvHUrcOwY0KOH8xSU6qmieqxUV3vfUG3IEGDhQjlPY43tiKgeG7URkXccDrmIq8yH6xTP4cNyYV6zxrvgwteGb77Ky5Pg49NPnY9ffjnwww9SBGtsLV9QIEHT9dcDTz0ltSgmkwRO5eWydFmt3qmrk/1u1N8/jTVU278feP99YM+ewPyeRG0IG7URkf+5LqONjpYLdHS0d8uMXY0fL8HM6tXAq6/KfWON2Xzx6acSLBmDk5QUeVxcLAGHp9byH3wgWZKaGvm9VO8UQF6r9u4xLkX21FAtLEw2Fdy50/vGdkQEgAEKEXnL166n3vB3z47qamDBAuCCC6SYVbnoIgkKunZtulfJkSNSX2LsTeK6FDoiQgIz4+e6FvZ6u88Op3uI3GKAQkTeMS6j1TSZ0igpkXtVkxGI1Tfebkz400/A6NGyR44SGQk8+6w0auva1bsgq65OVvYYa2QiI/WsitksmRDj+PLyJOhxOPTxtbSxHVEHx1U8ROQdtfpmyxbJIlRX63vgREZKlmHkSP+uvvGmTkXTpF/IwoUyJmXIEODtt4HBg/Vj3raWz8yUVvbqs4uKZGpGtcy3WCQQKSjQ2+rn5ACXXaaPr65OD4Y0reFyam8b2xF1UAxQiMg7ZrNMxXz1ld6mXl2oy8vlwjthgv96dxh35zUWsxqX9WZkADNnSobE6OabgUcf1WtHFNclzo31KjGbG/YmKSqS8+7eLYFJWZm8rnt3yYgYx7dokQQ7hYVycw3oEhICk3Eiaie4ioeIvKNW8WzZomcHHA65QIeHS8AycqT3q3i8+azGVgx17y71ImoXZEA+NylJ9vGZMkVW2rg2PTMGPu56lTTVvVVNOc2ZI/1T+vRpGOgcPiwZnMJCadlvMjWsY1E7KW/axIZs1GH4cv1mBoWIvKNqKlJT9emJmhrJbCQkSBChaipa2nBMfVZkpLSUr6lxDobMZlkqbNSpkwQkZWXA119Lpic2Vm7GaSHVWn7pUuDHH/XfYcgQYMmSplcRqeZtx4/LyqDG6ktUEzp3GwESUaMYoBCRd1SBaW0tcPCgc9Bw/DiQnOz7Kh6bDVi1Suo3evcGpk6VTMPx4zJtVF4un2G1ynSS3S7HXPXoAXTrpvcrsdv183fq5Dwt5I9lzN4U2+bnS2amRw/JpBi/r+hoCWKOHfNPQEfUDjFAISLvdOmiF4Nqmh40aJpkT3JyJJPibU3F448DDz8sK4FUbcYttwB33QWcdZYUldrtepGp3S5BgZHFIoFNQoI8PnpUf4/Dodd9dO8u0y5qWe+NNzasbdm50/sgxptiW7NZPisxUV7vWiTrcMh4WSRL5BYnPonIO0OHygVWFciqPWrMZnmsnhs6tOlzPf64TKcUFUmQER4u90VFcvzNN/VpEIdDAgHX4MRslpqR+Hh5XFgogZKq5zDWe6hpl127gHvuaXlvElVsa+yVoqhi2xNOkEBE7W5sbGwHBG5ZNlE7wQCFiLyzfbv8699qlSJZh0Muxg6HPFbPbd/e+HlsNsmc2Gz68mTVmTUyUo6vWKFnJqqrGwYMFoss+7VaJRjYs0emnWw2GUt1tR6YqI6vkZGSxdi3r+W9SbzZT+jBB4FBgxoPYgYO9O+ybKJ2hAEKEXnn+HG5MPfu7byJnt0uj3v31utRGrNqlUzrhIW5DxLCwqSWRE3xeBIRIdmHQ4fktSqjA+hBU1iYc8ZCTbv4oxuuKrZ13RgwI0NWAmVmtt6miETtEGtQiMg7qu4iPBzo379hTUVVlXdTFqqGpbELs6a5rzdRS3VraiR4UX1O1FSTeq/xPOpeTbscOdJ0ozZvp13Gj2/YK8W4pFkFMcaGb+HhEsRws0CiRjFAISLvuDY5U0togYZNzhrTu7cEFGpFi/Ec7gphAb1GRdWUWK3y89Gj+ioZlSFRWRerVV6ralPUtMujj3rXqM1baj8hT5oKYojILQYoROQdVXcxe7ZMUbhrcubNlMXUqbJaRxXIqmLW2tqGUzpxcRLI1NbKlI0qaE1OltqOmhrpy5KUpGd0amv1Zb12u0y7DBumZyzM5pb/Ds357riUmMgn7CRLRL7xZn+cpqhVPDabBCk2m/PzkZFSBNutmwQkrtNJlZUS4AASZLibrikslFqWJ54ArrxSjqksxv79wPvvS3Ftc38HIvIZO8kSUeCMHy99Stw1WPPWokWS3bj/fucN/gCgb18Jgq6/Xp+KUYWugD4VM2SIPN650/10TWWlZE6uvFK6yroGVQMGSJDkrh0+EQUdAxQi8o27DMrrr/uWfdi3D3j11YbByQknyK7Ev/wCTJ4smQ5PUzFLlsh7mpqu+eor95sO7twpe+m88AKnX4hCEKd4iNorh8P/hZmedhguKJDltN50YX3zTTlHZaV+TO3nU1go446Lkymerl3l+WPHPE/FNDblNG6c86aD7jb1y8jwzwaHRNQkX67fDFCI2iN/1Im4ct1h2NeLfUkJMHcu8NZbzseTkoDOnaWfid0u54qKAnr1ksAnJga4/HK59zSd5CkYy86WTExMjPs6lcpKKaJdvZpZFKJWwBoUoo7MU5ajpRvmqR2GvenC6nqx37BBakF+/10/ppq+JSTIjsV2uzRWUyt6NE0yKTk5wJNPShATEeF+OsnTKhlvNvUrKvL/fjiByF4RdTD8P4aoPXE4JHPS0r1m3PHmYu/ahdVmA/76V+CMM5yDE/X6sDDJYlRX603YVI+U0lLgwAEJXOx2CVBiYvRAKyur6TEbN/VzJxD74WRlSaZp8mTgmmvkfuJE78ZLRPUYoBC1J75kObzlcMhUyd698tjbi31OjtSA3H+/c0DUpYssLa6pkdeUlem7GQP6z8XFEpiEh8tx1VLf35v6+XM/HJW92rFDgqnUVN+DKiICwACFqH1pTpajMcZswIMPynTIr79KdsPI9WK/apXsavzdd/prVB1Mr16ybNhkkgxLUZHerA2QY+HhMk7VMda46Z+/N/XzV2O2QGaviDogBihE7Yk/pzRcswFpaUBKimQy9u2TIMf1Yj9/PjBzJnDFFVIUq8THAyedJOcxmeQ8Fos8V1MjUz11dfKzxSLTOcaAJTLSuReKPzf181djtkBkr4g6MBbJErUnrvvlNHevGddsgDqPCoBycoC8PAko1OZ3kyYBCxYAv/2mnyc6WoKPE05wzlLExUkmJTdXggW1E7HZLMFLZKScv65OMicpKc6/i7839fOHYBXkErVTDFCI2hN/7ZfTWDYgLk4CjuJi4O67gVNPBb74QvbXMbasP+00+az5893vHhwXJ9kSdR6rVW8/X1Iijx0OCWSMyxEDtalfSxmzV/7YKZmog+MUD1F7448pjaayAeoC3LkzcMcdEmCo4MRkksfffAP88Y+NF6kWFUnL+ptuAubMAdaulZ4kr74qS4t79pR6l0DWjvhLaxfkErVzzKAQtUctndLwJhtgs0njNdeCWZMJeP556W+yaJFvGR3XLMeAAXrDuaIifTqpOQ3nAt2bxF/ZKyICwE6yRKEvGE2/Gusaa7PJNExVlfN7zGa90ZqqHVm6VIKUlnS29cfvH4jOuqHwWURtDFvdE7UXwbywGzvSqmxAURFw8KCs5DEKC9MbrQESpFRXSxYlL0+vJwlGd1V/7B/kK3aSJXKLAQpRe9CSC6u//hWvzrNrlxSzlpW5f53Knqilw4BkWux2qSe56irvP9OfWrp/EBH5lS/Xb/4fSRSKWtL0y5/dTMePB15+Wc7hGpwYa1McDgmEjJkVs1mCgJwc/TXZ2VIIm53dOg3L2JuEqM1igEIUipp7YfV3N9N//1umJzZt0o+ZzUD//kBysvMxVXtiHIvJJBsCBmt/Gn931iWiVsMAhSgUNffC6q+MQWUlcOON0nytoEA/HhUlwUlcnNSXqCkdFYxomvysgpX4eKBbt+DtTxOIzQKDkQki6oAYoBCFouZeWP2RMdi2DRg5UnqmKNHR0ogtLk5vOa+6viqaJjebTd+d+M47gb//PXj70/i7Nwl3KiZqNQxQiEJRcy+sLckYOBzSHG30aOCXX/Tjp5wC/PADMH26XqirpKRIoGEsjnU4JLuydKnUsASzBsSfmwVyp2KiVsUAhSgUNffC2tzAJjcXuPBCYOFCybAot98ObNigv8fduVNSpBtsXBzQty+wYoUsLV60KDRqQPzRWZc7FRO1OgYoRKGqORfW5gQ2//2vvtRWSU0FPv8cePRRybg0de6jR6Vo9sUXgauvlukdoOmMjmr2tndvYOs5xo+X30+10V+9Wh57u+Saq4GIWh37oBCFuuY0/fKmD0p1NbB4MfDMM87vvfhiWVrsqXDUlx4rjfUhKS2VJchms+zp422vlmA0QVu7VmpOUlPdf5bDIUHaq68CEyYEdixEbRgbtRFR4xfyH38ErrhC7pXISOCJJ2TTPtcsgS/nduWuI21BgWRhAKBHDznuTRO6YLWRz86WgtiYGPd7E1VWSnZr9erA7phM1MYxQCEi9zQNePZZ4LbbnKddMjKAt98GTjopMJ9rDCxqaqQrraZJjxTj/8ONdXcNRst6hR1pifyCnWSJqKFjx2T65uabnYOTBQuAjRsDF5wAzjUg99wjq3z69XMOTgD39RwOB7B5sxTsFhYGp0jVn6uBiMgr/L+JqCP47DP5F/7HH+vHkpOBTz6RpcWRkYEfg9ks0x/9+8tjb1b2qL4jF18s/VlKS6Wg1th2v7WKVP2xGoiIvGYN9gCIKIBqaoC77pLaEqMLLpDlwN26tf6YjCt73NVzqF4t+/cDjz8uwUhEhAQ4Fous/MnJkemh2Fh5j9ppOdAt68ePB8aN407FRK2AAQpRe/XLL8CVV0rmQYmIAB57DJg3r+lC2EBR/VQ81XMUFkpflfff1/uOVFbK60wmCV5qayWDoQKU5rSsby6VCSKigGLYT9TeaJpMRYwY4RycDB4stRw33xy84ATwrp5jyhRgzx6970h0tGRJbDb5/axWycBUVjavZT0RhTwGKETtSUGBLIedM0dvggZIxmTzZslMhIKm6jnS05070JpM0rHWYpFNCDUNsNvlPSxSJWqXOMVD1F5kZcl+OUeO6Me6dJFak4suCt64PGmsniM7u2GdSlwc0KuXtOWvqpIgpbZWgppA90EholbHAIWorautBe67T9rSG9sanXce8Npr0v3U3/zVzdVTPYenOpW4OGmWpopk1VQWMydE7Q7/ryZqy/buBU4/Hfjb3/TgJCxMVr+sWROY4EQt/Z08Wdq/T54sj/25m29jdSpHjkhtyt//DowaxeCEqJ3i/9lEbZGmAa+8AgwbJtMhyqBB0nRt4cLAXLhVN9cdOySTkZoq9zt2yHF/BinsO0LUobHVPVFbU1QEzJoF/Otfzsdnz5Z+J9HRgfncYLV7D8bmgEQUECHV6v6RRx6ByWTCggUL6o9VV1dj7ty5SEpKQkxMDKZMmYK8vLxAD4Wo7Vu/XoIAY3CSmCgt5JctC1xwAkiQsHu3vvTXKJDdXFWdyoQJrDch6kAC+n/65s2b8cILLyAjI8Pp+K233oqPPvoI7733HtavX48jR45g8uTJgRwKUdtWVwfcfTdwzjnAoUP68XPOkYzGpZcGfgzHjzsv/XVlbFFPRNRCAQtQysvLMW3aNCxfvhwJCQn1x0tKSvDyyy/jiSeewPjx4zFixAisWLEC//vf//D9998HajhEbddvvwFnnAE8/LBeCGu1yuZ4n38u0y3ecjikZmXtWrn3ZXM9Y4t6d1qzmysRtXsBC1Dmzp2LCy+8EJmZmU7Hs7OzUVdX53R80KBB6NWrFzZs2OD2XDU1NSgtLXW6EbV7mga8/roUwm7apB/v1w/43/+AO+6QxmXe8nb1jacgRi39LShwXs6sxspurkTkRwEJUFatWoUffvgBS5cubfBcbm4uwsPD0blzZ6fjycnJyM3NdXu+pUuXIj4+vv7Ws2fPQAybKHSUlADTpgEzZgDl5frx666TGo9Ro3w7n7erbxoLYrxpUc9urkTkJ37/m+TgwYO45ZZb8NZbbyHST1u4L1myBCUlJfW3gwcP+uW8RCHpu++AoUOBt9/Wj3XuDLz7LvDyyxJY+MLhkOkgtfFeVJQEEVFR8risTJ7/4oumgxgu/SWiVuL3TrLZ2dnIz8/HKaecUn/Mbrfj66+/xj//+U+sXbsWtbW1KC4udsqi5OXlISUlxe05IyIiEOGpMI+ovbDZgAcfBB54wLk25KyzgDfekDbvzeHN6ptdu4B77tGDGPU6FcQcPixBzLhxjbeoJyLyE78HKOeeey527tzpdOzaa6/FoEGDcMcdd6Bnz54ICwvDunXrMGXKFADA7t27ceDAAYwZM8bfwyFqG37/XaZ0/vc//ZjFAvz1r77XmrjyZvVNfj6wbx/QtWvTS4jVUl93LeqJiPzE7wFKbGwsTj75ZKdjnTp1QlJSUv3xmTNnYuHChUhMTERcXBxuvvlmjBkzBqeddpq/h0MU+t5+W3YfNhZ/n3ACsHIlMHp0y89vXH2jNt4zqq6WgMPhaDyIKSriEmIiajVByck++eSTuOiiizBlyhScddZZSElJwerVq4MxFKLgKSuTItgrr3QOTqZPl0yFP4ITwLvVNyecIE3euISYiEIEW90TBcPGjRKY7NunH4uLk0LTK67w/+epVTxlZTJdExkpQUdhoXzuc8/Jbsit3caeiDqUkGp1T0QGdrs0XBs71jk4Of10YPv2wAQnQNOrbzIzuYSYiEIKMyhE3vDHhnUHDwJXXQV8/bV+zGwG7rtP2thbrf77rOb+HllZslpn924prA0Pl+mhO+/kEmIiajFfrt8MUIia4o+L9nvvyQ7ExcX6sd69gbfekmyKPz+rpbh7MBEFCAMUIn8x1m4kJckql5oaKTiNjZVpk8YCh/Jy4JZbgFdecT4+dSrw/PPSgM1fn0VEFOJYg0LkD952YPW04d6WLcAppzgHJzExwGuvyRJiY3DS0s8iImpnGKAQeeJNB1bVvMzI4ZAVMWPGAHv36sdPPRXYtg24+uqG52vuZxERtVMMUIg88aYDa22tc/Oyw4eB886T7q82mxwzmaQI9ttvgb59/fdZRETtmN87yRK1eapIVGU/qquliZkr1+ZlH34IzJwpvUWUHj2AN98Ezj678c/0ptsrG6URUQfCAIXIyHUVTXGxBBy9e0svEEV1YM3IkFU2c+ZIEavRlCnAiy/K9ExTVLdXT43S1GcNH+6XX5OIKNRxiodIUatoduyQYtbUVCA5WZqr7dsHHDvWsHnZZZcBo0Y5ByfR0cBLL8nSYm+CE0AKYtkojYioHpcZEwESDEyc6D6DUVoK5OTIsc6dpU5kwACgXz9ZoVNbq792xAhZoTNgQPPGEQp9UIiIAsSX6zeneIiAxlfRxMVJcWtRkRS79u8PPP64tIhXTCbg9tuBBx6QoKK5xo8Hxo1jozQi6vAYoBAB3q2iAaQW5KqrnFfTpKUBr78OnHuu83ua25HVbJZMDBFRB8YAhQhoehVNZaV0hb3/fufjkyZJvUlSkvNxTtUQEbUI88ZEgL6KpqBAVs0YVVQAv/4qAYoSFSVTPKtXuw9OXIttY2Lk8ezZ8jwRETWKAQoR4H4Vjd0OHDoE7NolPytDh0ob+9mzG9arsGU9EZFfMEAhUsaPl+XCGRmycueXX4C8POfX3HorsHEjcNJJ7s/BlvVERH7BGhQio/HjpWvr9OlSj6IkJ8smfxMmNP5+b4pti4rYsp6IqAnMoBAp1dWSIbnwQud29RdcIPUjTQUngHOxrafPYMt6IqImMUAhAoCffwZGjwaeeko/FhEBPPMM8PHHQLdu3p2nsWJb1bJ+4EC2rCciagIDFOrYNA14/nnpO7Jjh3785JOlEHbevIa1JI1hy3oiIr/g35LUcR0/Ln1MbrpJpl6Um28GNm2SIKU5jMW2FRXA0aNyn5EBPPccEB8PrF0LZGdzNQ8RkQcskqWOad06KYQ9elQ/1rUrsGKF1KC0lLuW9UVFwKOPsnkbEZEXmEGhjqW2Fli8GDjvPOfgZMIEmeLxR3CiqJb1EyYAJSXAjTeyeRsRkZcYoFDHsXs3MGYM8NhjegFreDjwxBPAJ58AKSmB+Vw2byMi8hkDFGr/NE32yznlFOCHH/TjJ54oTdduvTWwRats3kZE5DMGKNS+FRYCl18O3HCDrKRR5syRVTrDhgV+DN40b6utZfM2IiIDFslSYDkczoWiw4e33hLbr76SQthDh/RjSUmSTZk0qXXGADS9UzKbtxERNcAMCgVOVhYwcSIweTJwzTVyP3Fi4AtC6+qAu++WlTHG4OTcc6UotTWDE4DN24iImoEBCgVGVpasTmntVSu//gqccQbw8MN6MBAWJst7P/sMSEsLzOc2hs3biIh8xr8Ryf+CsWpF02Qzv+HDpcmaMmAA8P33wO23BzcAaKx527Jl7INCROSCNSjkf76sWhkxouWfV1wsRa/vvON8/PrrZW+dTp1a/hn+4K55W2vW5BARtSEMUMj/vFm1UlTkn1Ur334LTJsGHDigH0tIAJYvB6ZMafn5/U01byMiokbxn27kf8ZVK+74Y9WKzQbcfz9w9tnOwcm4ccD27aEZnBARkdcYoJD/BXrVyv79wFlnAX/9q17HYrVKYewXXwA9e7Zs/EREFHQMUMj/ArlqZeVKaa62YYN+rG9f4LvvgCVLAIvFb78GEREFDwMUCgx/r1opLZWma9Omyc/KjBlSdHrqqf4dPxERBRWLZClw/LVqZcMGCUz279ePxcVJADR1ql+HTEREoYEBCgVWS1at2O1SV/KXv8jPytixwJtvAn36+GWIREQUehigUGg6cAC46irgm2/0Y2YzcN990sbeyj+6RETtGf+Wp9Dz7rvArFlASYl+rHdv4K23JHtCRETtHgMUCh3l5cD8+cCKFc7Hr7gCeP55ID4+MJ8bzB2XiYjILQYoFBo2bwauvFI2+1NiYoDnnpOpHteW+f6SlSX7Au3eLd1vw8OlR8udd3J/HCKiIOI/Eym47HYJEE4/3Tk4GT0a2LZNlhYHMjjxtOPyNdcAf/sbkJ3t300NiYjIKwxQKHgOHQLOO08arNlscsxkAu65R4pj+/YN3Gd72nHZZpN+LYcPS0HupZcCEydKMENERK2GAQoFx+rV0rTtyy/1Yz17Al99BTzwABAWFtjPd7fjclkZkJMjewVZrdKW32qVjMrs2QxSiIhaEQMUal0VFXKxnzJFdjRWLr9cNvk766zWGYe7HZePHpUpp/BwaZmvaXLfvbsEL488wukeIqJWwgCFWs/WrdK07cUX9WOdOgGvvAK88w6QkBD4MTgcUleyd688rq6W+8pK2X1Z9VfRNMmsWK1yn5goGZetWwM/RiIi4ioeagUOB/Dkk1JrUlenHx85Ujb/69+/dcbhumKnuFh2Vu7dWx+nypzYbFKXEh0tz0VGSsbn+PHWGSsRUQfHAIUC6+hR2dDv88/1YyYTcMcd0sI+PLx1xqFW7JSVSd1JRITcDh0C9u0DunaVcdnteqCSkqLXp1RXy1i7dGmd8RIRdXAMUChwPvoIuO4656xD9+7AG28A55zTeuNwXbGjgo4uXSToyMnR62FsNpl2SkmRDQkByagUFkpR7/DhrTduIqIOjDUo5H9VVcDcucDFFzsHJ5deKoWwrRmcAO5X7ChxcbKcOSFBMixpaTK1Y7VKYFNZKUuO4+KkeRs7zBIRtQr+bUv+tWOH1JY895x+LDpaCmPff1+ChNbmbsWOUWSk3F90EfDaa8DQobLa6OhRuc/IAJYtY2dZIqJWxCke8g9NA555Bli8WFbDKMOHSyHsoEHBG5uayqmpkeyIK2N9yYgRwLhx3JuHiCjIGKBQy+XlAddeC3z6qfPxRYuAhx7ynLloLcOHy/46O3Y416AA7utLzGYJVIiIKGj4z0JqmU8+kYu7MThJSQE++wz4+9+DH5wAEnDceScQGyv1JJWVrC8hIgpx/BuZmqe6GrjlFuDCC4H8fP34RRdJpuK884I3NnfGjwdeeEGCKdaXEBGFPE7xkO9++gm44gpg5079WGSkZExuuilwuw+31PjxrC8hImojGKCQ9zQNeP55qS1RLeIBYMgQ4O23gcGDgzc2b7G+hIioTeA/Hck7x44Bl1wi/U2Mwcn8+cCmTW0jOCEiojaDGRRq2uefA1dfDeTm6se6dQNWrAAuuCB44yIionbL7xmUpUuXYtSoUYiNjUW3bt0wadIk7N692+k11dXVmDt3LpKSkhATE4MpU6YgLy/P30OhlqqpAW67DfjDH5yDk4kTpSMsgxMiIgoQvwco69evx9y5c/H999/j888/R11dHf7whz+goqKi/jW33norPvroI7z33ntYv349jhw5gsmTJ/t7KNQSu3YBp50GPP64fiw8HHjqKeC//5WlxERERAFi0jRNC+QHHDt2DN26dcP69etx1llnoaSkBF27dsXKlStx2WWXAQB27dqFE088ERs2bMBpp53W5DlLS0sRHx+PkpISxKkN3cg/NA1YvhxYsED21FFOOkk6wg4dGrShERFR2+bL9TvgRbIlJSUAgMTERABAdnY26urqkJmZWf+aQYMGoVevXtiwYUOgh0ONKSgApkyRTfOMwcmNNwKbNzM4ISKiVhPQIlmHw4EFCxZg7NixOPnkkwEAubm5CA8PR+fOnZ1em5ycjFxjnYNBTU0Nagz7u5SWlgZszB1WVpYUwh4+rB9LSgJeeUV2JSYiImpFAc2gzJ07Fz/++CNWrVrVovMsXboU8fHx9beePXv6aYSE2lpp856Z6RycZGZKR1gGJ0REFAQBC1DmzZuHjz/+GF9++SV69OhRfzwlJQW1tbUoLi52en1eXh5SPBReLlmyBCUlJfW3gwcPBmrYHcvevcDYscDf/ia1JwAQFgY89hiwdi2Qlhbc8RERUYfl9wBF0zTMmzcPH3zwAbKyspCenu70/IgRIxAWFoZ169bVH9u9ezcOHDiAMWPGuD1nREQE4uLinG7UApomPUyGDwe2bNGPDxgAfP+9LC1m+3ciIgoiv9egzJ07FytXrsS///1vxMbG1teVxMfHIyoqCvHx8Zg5cyYWLlyIxMRExMXF4eabb8aYMWO8WsFDLVRUBMyZA7z7rvPxG24AnnwS6NQpOOMiIiIy8PsyY5OHjeJWrFiBa665BoA0alu0aBHefvtt1NTUYMKECXjuuec8TvG44jLjZvrmG2DaNMA4RZaQALz0EsA+NEREFGC+XL8D3gclEBig+KiuDvjrX4GHHwYcDv34uHHAG28AhhohIiKiQPHl+s29eNq7ffska/L99/oxqxV44AHg9tsBiyV4YyMiIvKAAUp79uabwE03AWVl+rG+faUj7KmnBm9cRERETeBSjfaopAS46ipg+nTn4OSaa4CtWxmcEBFRyGMGpb353/9kSuf33/Vj8fHACy8Af/5z0IZFRETkC2ZQ2gubTQphzzrLOTg54wxg+3YGJ0RE1KYwg9Ie5ORI1uS77/RjFgtw//3AXXexEJaIiNocBiht3TvvyO7D/7drNAAgPR146y3AQ2deIiKiUMcpnraqrEyKXqdOdQ5OrroK2LaNwQkREbVpzKC0RZs2AVdeCfz2m34sNhZ47jkJUIiIiNo4ZlDaErtdusGOHescnJx2mmRNGJwQEVE7wQxKW3HwoPQ1Wb9eP2Y2A3ffDdx3n3SHJSIiaid4VWsL/vUvYNYs2YlY6dVLOsWeeWbwxkVERBQgnOIJZeXlwPXXA5df7hyc/PnP0tuEwQkREbVTzKCEquxs4IorgL179WOdOgHPPgtcfTVgMgVvbERERAHGDEqocTiARx+VZcLG4GTUKCmEnTGDwQkREbV7DFBCyZEjwB/+ANxxB1BXJ8dMJmDJEukS269fcMdHRETUSjjFEyr+/W9g5kygoEA/1r27FMKOGxe0YREREQUDMyjBVlkJ3HgjMGmSc3AyeTKwYweDEyIi6pCYQQmmbdukI+wvv+jHoqOBp56S1TusNSEiog6KGZRgcDiAJ58ERo92Dk5OOQX44QfghhsYnBARUYfGAKW15eYCF1wALFwI1Nbqx2+/HdiwARg4MHhjIyIiChGc4mlN//0vcO21wLFj+rHUVOD114HMzOCNi4iIKMQwg9IaqquB+fOBiy5yDk4uvlgKYRmcEBEROWEGJdB+/FEKYXfu1I9FRkoNyuzZrDUhIiJygxmUQNE04J//BEaOdA5OMjKALVuAOXMYnBAREXnAACUQjh2T6ZubbwZqavTjCxYAGzcCgwcHbWhERERtAad4/O2zz2S/nNxc/Vi3bsBrrwETJwZvXERERG0IMyj+UlMDLFoETJjgHJycf74UwjI4ISIi8hozKP7wyy9SCLttm34sIgJ47DFg3jzWmhAREfmIAUpLaBrw4ovArbcCVVX68ZNOAt5+WwpiiYiIyGec4mmuggLZ0G/OHOfgZO5cWaXD4ISIiKjZmEFpjnXrgKuvBo4c0Y916QK88grwxz8Gb1xERETtBDMovqitBe64AzjvPOfg5LzzpBCWwQkREZFfMIPirT17pBA2O1s/FhYGPPKI9DcxM9YjIiLyFwYoTdE0mbqZPx+orNSPDxwohbDDhwdvbERERO0U/9nfmKIi4E9/Aq6/3jk4mTVLMikMToiIiAKCGRRP1q8HrroKOHRIP5aYCLz0EnDppcEbFxERUQfADIqrujrg7ruBc85xDk7OOQfYvp3BCRERUStgBsXot9+kEHbTJv2Y1Qo8+CBw222AxRK8sREREXUgDFCU9euBiy4Cysv1Y/36AStXAqNGBW9cREREHRCneJSMDCAhQX983XXA1q0MToiIiIKAAYqSkAC89RaQlAS8+y7w8stATEywR0VERNQhcYrH6Mwzgd9/Z2BCREQUZMyguGJwQkREFHQMUIiIiCjkMEAhIiKikMMAhYiIiEIOAxQiIiIKOVzFY+RwSO+T48eBLl1kM0AzYzgiIqLWxgBFycoCHnkE2L0bqK0FwsOBgQOBO+8Exo8P9uiIiIg6FKYHAAlOZs8GduyQZcapqXK/Y4ccz8oK9giJiIg6FAYoDodkTsrKgO7dgagomdaJipLHZWXyvMMR7JESERF1GAxQtm6VaZ2kJMBkcn7OZAISE+X5rVuDMz4iIqIOiAHK8eNScxIR4f75yEh5/vjx1h0XERFRB8YApUsXKYitqXH/fHW1PN+lS+uOi4iIqANjgDJ8uKzWKSgANM35OU0DCgvl+eHDgzM+IiKiDogBitksS4ljY4HDh4HKSimIrayUx3Fx8jz7oRAREbUaXnUB6XPywgtARgZQUQEcPSr3GRnAsmXsg0JERNTK2KhNGT8eGDeOnWSJiIhCAAMUI7MZGDEi2KMgIiLq8JgeICIiopDDAIWIiIhCTlADlGeffRZ9+vRBZGQkRo8ejU2bNgVzOERERBQighagvPPOO1i4cCHuv/9+/PDDDxg6dCgmTJiA/Pz8YA2JiIiIQkTQApQnnngCN9xwA6699lqcdNJJWLZsGaKjo/HKK68Ea0hEREQUIoISoNTW1iI7OxuZmZn6QMxmZGZmYsOGDcEYEhEREYWQoCwzPn78OOx2O5KTk52OJycnY9euXQ1eX1NTgxrDXjmlpaUBHyMREREFT5tYxbN06VLEx8fX33r27BnsIREREVEABSVA6dKlCywWC/Ly8pyO5+XlISUlpcHrlyxZgpKSkvrbwYMHW2uoREREFARBmeIJDw/HiBEjsG7dOkyaNAkA4HA4sG7dOsybN6/B6yMiIhAREVH/WPu/XYc51UNERNR2qOu2uo43Jmit7hcuXIgZM2Zg5MiROPXUU/HUU0+hoqIC1157bZPvLSsrAwBO9RAREbVBZWVliI+Pb/Q1QQtQ/vznP+PYsWO47777kJubi2HDhmHNmjUNCmfdSUtLw8GDBxEbGwuTyeTXcZWWlqJnz544ePAg4uLi/Hpu0vF7bh38nlsHv+fWwe+59QTqu9Y0DWVlZUhLS2vytSbNmzxLB1JaWor4+HiUlJTwf4AA4vfcOvg9tw5+z62D33PrCYXvuk2s4iEiIqKOhQEKERERhRwGKC4iIiJw//33O60aIv/j99w6+D23Dn7PrYPfc+sJhe+aNShEREQUcphBISIiopDDAIWIiIhCDgMUIiIiCjkMUAyeffZZ9OnTB5GRkRg9ejQ2bdoU7CG1aUuXLsWoUaMQGxuLbt26YdKkSdi9e7fTa6qrqzF37lwkJSUhJiYGU6ZMabBHE/nmkUcegclkwoIFC+qP8Xv2j8OHD+Oqq65CUlISoqKiMGTIEGzZsqX+eU3TcN999yE1NRVRUVHIzMzE3r17gzjitslut+Pee+9Feno6oqKi0LdvXzzwwANO7dH5Xfvu66+/xh//+EekpaXBZDLhww8/dHrem++0sLAQ06ZNQ1xcHDp37oyZM2eivLw8MAPWSNM0TVu1apUWHh6uvfLKK9pPP/2k3XDDDVrnzp21vLy8YA+tzZowYYK2YsUK7ccff9S2bdumXXDBBVqvXr208vLy+tfMmTNH69mzp7Zu3Tpty5Yt2mmnnaadfvrpQRx127Zp0yatT58+WkZGhnbLLbfUH+f33HKFhYVa7969tWuuuUbbuHGjtm/fPm3t2rXar7/+Wv+aRx55RIuPj9c+/PBDbfv27drFF1+spaena1VVVUEcedvz0EMPaUlJSdrHH3+s7d+/X3vvvfe0mJgY7R//+Ef9a/hd++6TTz7R7r77bm316tUaAO2DDz5wet6b73TixIna0KFDte+//1775ptvtH79+mlXXHFFQMbLAOX/nHrqqdrcuXPrH9vtdi0tLU1bunRpEEfVvuTn52sAtPXr12uapmnFxcVaWFiY9t5779W/5pdfftEAaBs2bAjWMNussrIyrX///trnn3+unX322fUBCr9n/7jjjju0M844w+PzDodDS0lJ0R577LH6Y8XFxVpERIT29ttvt8YQ240LL7xQu+6665yOTZ48WZs2bZqmafyu/cE1QPHmO/355581ANrmzZvrX/Ppp59qJpNJO3z4sN/HyCkeALW1tcjOzkZmZmb9MbPZjMzMTGzYsCGII2tfSkpKAACJiYkAgOzsbNTV1Tl974MGDUKvXr34vTfD3LlzceGFFzp9nwC/Z3/5z3/+g5EjR+Lyyy9Ht27dMHz4cCxfvrz++f379yM3N9fpe46Pj8fo0aP5Pfvo9NNPx7p167Bnzx4AwPbt2/Htt9/i/PPPB8DvOhC8+U43bNiAzp07Y+TIkfWvyczMhNlsxsaNG/0+pqBtFhhKjh8/Drvd3mCjwuTkZOzatStIo2pfHA4HFixYgLFjx+Lkk08GAOTm5iI8PBydO3d2em1ycjJyc3ODMMq2a9WqVfjhhx+wefPmBs/xe/aPffv24fnnn8fChQtx1113YfPmzZg/fz7Cw8MxY8aM+u/S3d8j/J59c+edd6K0tBSDBg2CxWKB3W7HQw89hGnTpgEAv+sA8OY7zc3NRbdu3Zyet1qtSExMDMj3zgCFWsXcuXPx448/4ttvvw32UNqdgwcP4pZbbsHnn3+OyMjIYA+n3XI4HBg5ciQefvhhAMDw4cPx448/YtmyZZgxY0aQR9e+vPvuu3jrrbewcuVKDB48GNu2bcOCBQuQlpbG77oD4RQPgC5dusBisTRY1ZCXl4eUlJQgjar9mDdvHj7++GN8+eWX6NGjR/3xlJQU1NbWori42On1/N59k52djfz8fJxyyimwWq2wWq1Yv349nn76aVitViQnJ/N79oPU1FScdNJJTsdOPPFEHDhwAADqv0v+PdJyt99+O+68805MnToVQ4YMwfTp03Hrrbdi6dKlAPhdB4I332lKSgry8/OdnrfZbCgsLAzI984ABUB4eDhGjBiBdevW1R9zOBxYt24dxowZE8SRtW2apmHevHn44IMPkJWVhfT0dKfnR4wYgbCwMKfvfffu3Thw4AC/dx+ce+652LlzJ7Zt21Z/GzlyJKZNm1b/M7/nlhs7dmyDZfJ79uxB7969AQDp6elISUlx+p5LS0uxceNGfs8+qqyshNnsfHmyWCxwOBwA+F0Hgjff6ZgxY1BcXIzs7Oz612RlZcHhcGD06NH+H5Tfy27bqFWrVmkRERHaq6++qv3888/arFmztM6dO2u5ubnBHlqbdeONN2rx8fHaV199pR09erT+VllZWf+aOXPmaL169dKysrK0LVu2aGPGjNHGjBkTxFG3D8ZVPJrG79kfNm3apFmtVu2hhx7S9u7dq7311ltadHS09uabb9a/5pFHHtE6d+6s/fvf/9Z27NihXXLJJVz62gwzZszQunfvXr/MePXq1VqXLl20xYsX17+G37XvysrKtK1bt2pbt27VAGhPPPGEtnXrVi0nJ0fTNO++04kTJ2rDhw/XNm7cqH377bda//79ucy4NTzzzDNar169tPDwcO3UU0/Vvv/++2APqU0D4Pa2YsWK+tdUVVVpN910k5aQkKBFR0drl156qXb06NHgDbqdcA1Q+D37x0cffaSdfPLJWkREhDZo0CDtxRdfdHre4XBo9957r5acnKxFRERo5557rrZ79+4gjbbtKi0t1W655RatV69eWmRkpHbCCSdod999t1ZTU1P/Gn7Xvvvyyy/d/p08Y8YMTdO8+04LCgq0K664QouJidHi4uK0a6+9VisrKwvIeLmbMREREYUc1qAQERFRyGGAQkRERCGHAQoRERGFHAYoREREFHIYoBAREVHIYYBCREREIYcBChEREYUcBihEREQUchigEFFA/f777zCZTNi2bVuwh0JEbQgDFCLym2uuuQaTJk0K9jCIqB1ggEJEZFBXVxfsIRARGKAQdVjjxo3DzTffjAULFiAhIQHJyclYvnw5KioqcO211yI2Nhb9+vXDp59+CgCw2+2YOXMm0tPTERUVhYEDB+If//hH/fn+3//7f3jttdfw73//GyaTCSaTCV999VX98/v27cM555yD6OhoDB06FBs2bPBqnDk5OfjjH/+IhIQEdOrUCYMHD8Ynn3xS//xPP/2Eiy66CHFxcYiNjcWZZ56J3377DQDgcDjw17/+FT169EBERASGDRuGNWvW1L9XTT+98847OPvssxEZGYm33noLAPDSSy/hxBNPRGRkJAYNGoTnnnuu2d81ETVDQLYgJKKQd/bZZ2uxsbHaAw88oO3Zs0d74IEHNIvFop1//vnaiy++qO3Zs0e78cYbtaSkJK2iokKrra3V7rvvPm3z5s3avn37tDfffFOLjo7W3nnnHU3TZCv3P/3pT9rEiRO1o0ePakePHtVqamq0/fv3awC0QYMGaR9//LG2e/du7bLLLtN69+6t1dXVNTnOCy+8UDvvvPO0HTt2aL/99pv20UcfaevXr9c0TdMOHTqkJSYmapMnT9Y2b96s7d69W3vllVe0Xbt2aZqmaU888YQWFxenvf3229quXbu0xYsXa2FhYdqePXs0TdPqx9anTx/t/fff1/bt26cdOXJEe/PNN7XU1NT6Y++//76WmJiovfrqqwH6r0FErhigEHVQZ599tnbGGWfUP7bZbFqnTp206dOn1x87evSoBkDbsGGD23PMnTtXmzJlSv3jGTNmaJdcconTa1QQ8NJLL9Uf++mnnzQA2i+//NLkOIcMGaL9v//3/9w+t2TJEi09PV2rra11+3xaWpr20EMPOR0bNWqUdtNNNzmN7amnnnJ6Td++fbWVK1c6HXvggQe0MWPGNDleIvIPazCzN0QUXBkZGfU/WywWJCUlYciQIfXHkpOTAQD5+fkAgGeffRavvPIKDhw4gKqqKtTW1mLYsGE+f1Zqamr9eQcNGtTo++bPn48bb7wRn332GTIzMzFlypT6c23btg1nnnkmwsLCGryvtLQUR44cwdixY52Ojx07Ftu3b3c6NnLkyPqfKyoq8Ntvv2HmzJm44YYb6o/bbDbEx8d79bsSUcuxBoWoA3O9sJtMJqdjJpMJgNRyrFq1CrfddhtmzpyJzz77DNu2bcO1116L2tpanz/LeN6mXH/99di3bx+mT5+OnTt3YuTIkXjmmWcAAFFRUV59dlM6depU/3N5eTkAYPny5di2bVv97ccff8T333/vl88joqYxQCEir3z33Xc4/fTTcdNNN2H48OHo169ffTGqEh4eDrvd7vfP7tmzJ+bMmYPVq1dj0aJFWL58OQDJynzzzTduV97ExcUhLS0N3333XYPf46STTvL4WcnJyUhLS8O+ffvQr18/p1t6erp/fzEi8ohTPETklf79++P111/H2rVrkZ6ejjfeeAObN292umj36dMHa9euxe7du5GUlOSXKZEFCxbg/PPPx4ABA1BUVIQvv/wSJ554IgBg3rx5eOaZZzB16lQsWbIE8fHx+P7773Hqqadi4MCBuP3223H//fejb9++GDZsGFasWIFt27bVr9Tx5C9/+Qvmz5+P+Ph4TJw4ETU1NdiyZQuKioqwcOHCFv9ORNQ0BihE5JXZs2dj69at+POf/wyTyYQrrrgCN910U/0yZAC44YYb8NVXX2HkyJEoLy/Hl19+iT59+rToc+12O+bOnYtDhw4hLi4OEydOxJNPPgkASEpKQlZWFm6//XacffbZsFgsGDZsWH3dyfz581FSUoJFixYhPz8fJ510Ev7zn/+gf//+jX7m9ddfj+joaDz22GO4/fbb0alTJwwZMgQLFixo0e9CRN4zaZqmBXsQREREREasQSEiIqKQwwCFiILq/PPPR0xMjNvbww8/HOzhEVGQcIqHiILq8OHDqKqqcvtcYmIiEhMTW3lERBQKGKAQERFRyOEUDxEREYUcBihEREQUchigEBERUchhgEJEREQhhwEKERERhRwGKERERBRyGKAQERFRyGGAQkRERCHn/wPLz3prSnmp+QAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.regplot(x=y_test,y=y_pred,ci=None,color ='red');"
]
},
{
"cell_type": "markdown",
"id": "79c2fe28",
"metadata": {},
"source": [
"#### Difference between Actual and Predicted Values"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "7c9a8b48",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Actual Value | \n",
" Predicted Value | \n",
" Difference | \n",
"
\n",
" \n",
" \n",
" \n",
" 521 | \n",
" 91 | \n",
" 76.507812 | \n",
" 14.492188 | \n",
"
\n",
" \n",
" 737 | \n",
" 53 | \n",
" 58.953125 | \n",
" -5.953125 | \n",
"
\n",
" \n",
" 740 | \n",
" 80 | \n",
" 76.960938 | \n",
" 3.039062 | \n",
"
\n",
" \n",
" 660 | \n",
" 74 | \n",
" 76.757812 | \n",
" -2.757812 | \n",
"
\n",
" \n",
" 411 | \n",
" 84 | \n",
" 87.539062 | \n",
" -3.539062 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 408 | \n",
" 52 | \n",
" 43.546875 | \n",
" 8.453125 | \n",
"
\n",
" \n",
" 332 | \n",
" 62 | \n",
" 62.031250 | \n",
" -0.031250 | \n",
"
\n",
" \n",
" 208 | \n",
" 74 | \n",
" 67.976562 | \n",
" 6.023438 | \n",
"
\n",
" \n",
" 613 | \n",
" 65 | \n",
" 67.132812 | \n",
" -2.132812 | \n",
"
\n",
" \n",
" 78 | \n",
" 61 | \n",
" 62.492188 | \n",
" -1.492188 | \n",
"
\n",
" \n",
"
\n",
"
200 rows × 3 columns
\n",
"
"
],
"text/plain": [
" Actual Value Predicted Value Difference\n",
"521 91 76.507812 14.492188\n",
"737 53 58.953125 -5.953125\n",
"740 80 76.960938 3.039062\n",
"660 74 76.757812 -2.757812\n",
"411 84 87.539062 -3.539062\n",
".. ... ... ...\n",
"408 52 43.546875 8.453125\n",
"332 62 62.031250 -0.031250\n",
"208 74 67.976562 6.023438\n",
"613 65 67.132812 -2.132812\n",
"78 61 62.492188 -1.492188\n",
"\n",
"[200 rows x 3 columns]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pred_df=pd.DataFrame({'Actual Value':y_test,'Predicted Value':y_pred,'Difference':y_test-y_pred})\n",
"pred_df"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3acf1fbc",
"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.11.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}