PIbd-33_Dyakonov_R_R_MAI/lab2.2.ipynb
dyakonovr 851ccb3e02 done
2024-10-07 12:45:24 +04:00

565 lines
117 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Лабораторная работа 2\n",
"\n",
"1. Цены на телефоны\thttps://www.kaggle.com/datasets/mayankanand2701/starbucks-stock-price-dataset\n",
"2. Цены на машины\thttps://www.kaggle.com/datasets/nancyalaswad90/yamana-gold-inc-stock-price\n",
"3. Цены на дома в Бостоне\thttps://www.kaggle.com/datasets/arunjangir245/boston-housing-dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Датасет 1. Цены мобильных телефонов**\n",
"\n",
"1. **Name**: Название модели мобильного телефона.\n",
"2. **Rating**: Рейтинг мобильного телефона (по отзывам пользователей).\n",
"3. **Spec_score**: Оценка спецификаций телефона (возможно, по различным характеристикам).\n",
"4. **No_of_sim**: Количество SIM-карт, поддерживаемых телефоном.\n",
"5. **Ram**: Объем оперативной памяти (RAM) в гигабайтах.\n",
"6. **Battery**: Емкость батареи в мАч.\n",
"7. **Display**: Размер дисплея в дюймах.\n",
"8. **Camera**: Разрешение камеры (в мегапикселях).\n",
"9. **External_Memory**: Поддержка внешней памяти (да/нет).\n",
"10. **Android_version**: Версия операционной системы Android.\n",
"11. **Price**: Цена мобильного телефона в долларах США.\n",
"12. **Company**: Производитель телефона.\n",
"13. **Inbuilt_memory**: Объем встроенной памяти (в гигабайтах).\n",
"14. **Fast_charging**: Наличие быстрой зарядки (да/нет).\n",
"15. **Screen_resolution**: Разрешение экрана (в пикселях).\n",
"16. **Processor**: Тип процессора.\n",
"17. **Processor_name**: Наименование процессора.\n",
"\n",
"**Объект наблюдения**: Каждый объект представляет собой отдельный мобильный телефон.\n",
"\n",
"**Связи между объектами**: Внутри одного объекта есть взаимосвязь между характеристиками и его ценой. Например, объем оперативной памяти, емкость батареи, качество камеры и поддержка быстрой зарядки могут влиять на цену.\n",
"\n",
"**Бизнес-цель**: Оптимизация продаж мобильных телефонов, оценка цен в зависимости от характеристик.\n",
"\n",
"**Эффект для бизнеса**: Более точная оценка стоимости мобильных телефонов может помочь производителям и ритейлерам предлагать конкурентоспособные цены и максимизировать прибыль.\n",
"\n",
"**Техническая цель**: Построение модели машинного обучения для прогнозирования цены мобильного телефона на основе его характеристик.\n",
"\n",
"* **Вход**: Характеристики мобильного телефона (объем RAM, емкость батареи, качество камеры и т.д.).\n",
"* **Целевой признак**: Цена мобильного телефона.\n",
"\n",
"**Информативность**: Высокая. Набор данных содержит важные характеристики мобильных телефонов, которые влияют на их цену.\n",
"\n",
"**Степень покрытия**: Высокая. Датасет включает разнообразные модели телефонов, что позволяет провести полноценный анализ.\n",
"\n",
"**Соответствие реальным данным**: Высокая. Характеристики мобильных телефонов в наборе данных соответствуют реальным характеристикам, определяемым производителями.\n",
"\n",
"**Согласованность меток**: Высокая. Датасет не содержит проблем с несогласованностью меток, так как все данные соответствуют описанию в заголовках столбцов. \n",
"\n",
"---\n",
"\n",
"**Датасет 2. Прогнозирование цен на автомобили**\n",
"\n",
"1. **make**: Производитель автомобиля.\n",
"2. **model**: Модель автомобиля.\n",
"3. **year**: Год выпуска автомобиля.\n",
"4. **mileage**: Пробег автомобиля в километрах.\n",
"5. **engine_size**: Объем двигателя в литрах.\n",
"6. **horsepower**: Мощность двигателя в лошадиных силах.\n",
"7. **fuel_type**: Тип топлива (бензин, дизель и др.).\n",
"8. **transmission**: Тип трансмиссии (механическая или автоматическая).\n",
"9. **color**: Цвет автомобиля.\n",
"10. **body_type**: Тип кузова (седан, хэтчбек, внедорожник и др.).\n",
"11. **price**: Цена автомобиля в долларах США.\n",
"\n",
"**Объект наблюдения**: Каждый объект представляет собой отдельный автомобиль.\n",
"\n",
"**Связи между объектами**: Внутри одного объекта есть взаимосвязь между характеристиками и его ценой. Например, год выпуска, пробег и мощность двигателя могут влиять на цену автомобиля.\n",
"\n",
"**Бизнес-цель**: Оптимизация продаж автомобилей, оценка цен в зависимости от характеристик.\n",
"\n",
"**Эффект для бизнеса**: Более точная оценка стоимости автомобилей может помочь дилерам и производителям предлагать конкурентоспособные цены и максимизировать прибыль.\n",
"\n",
"**Техническая цель**: Построение модели машинного обучения для прогнозирования цены автомобиля на основе его характеристик.\n",
"\n",
"* **Вход**: Характеристики автомобиля (год выпуска, пробег, объем двигателя и др.).\n",
"* **Целевой признак**: Цена автомобиля.\n",
"\n",
"---\n",
"\n",
"**Датасет 3. Прогнозирование цен на жилье в Бостоне**\n",
"\n",
"1. **crim**: Уровень преступности на душу населения по городам.\n",
"2. **zn**: Доля крупных жилых участков (более 25,000 кв. футов).\n",
"3. **indus**: Доля не розничных бизнес-акров на город.\n",
"4. **Chas**: Двоичный признак, указывающий, находится ли объект рядом с рекой Чарльз (1 — да, 0 — нет).\n",
"5. **nox**: Концентрация оксидов азота в воздухе.\n",
"6. **rm**: Среднее количество комнат в одном жилом доме.\n",
"7. **age**: Доля старых жилых единиц, построенных до 1940 года.\n",
"8. **dis**: Взвешенные расстояния до рабочих центров Бостона.\n",
"9. **rad**: Индекс доступности радиальных шоссе.\n",
"10. **tax**: Налог на недвижимость на сумму $10,000.\n",
"\n",
"**Объект наблюдения**: Каждый объект представляет собой отдельный дом или квартиру.\n",
"\n",
"**Связи между объектами**: Внутри одного объекта есть взаимосвязь между характеристиками, такими как уровень преступности, количество комнат и налоги, которые могут влиять на цену жилья.\n",
"\n",
"**Бизнес-цель**: Оценка стоимости недвижимости для покупателей и продавцов, а также для инвесторов в недвижимость.\n",
"\n",
"**Эффект для бизнеса**: Более точная оценка цен на жилье может помочь улучшить принятие решений при покупке и продаже недвижимости.\n",
"\n",
"**Техническая цель**: Построение модели машинного обучения для прогнозирования цен на жилье в Бостоне на основе его характеристик.\n",
"\n",
"* **Вход**: Характеристики жилья (уровень преступности, количество комнат, налоги и др.).\n",
"* **Целевой признак**: Цена жилья."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Выбросы в столбце 'crim':\n",
"367 13.5222\n",
"371 9.2323\n",
"373 11.1081\n",
"374 18.4982\n",
"375 19.6091\n",
" ... \n",
"468 15.5757\n",
"469 13.0751\n",
"477 15.0234\n",
"478 10.2330\n",
"479 14.3337\n",
"Name: crim, Length: 66, dtype: float64\n",
"\n",
"Выбросы в столбце 'zn':\n",
"39 75.0\n",
"40 75.0\n",
"54 75.0\n",
"55 90.0\n",
"56 85.0\n",
" ... \n",
"351 60.0\n",
"352 60.0\n",
"353 90.0\n",
"354 80.0\n",
"355 80.0\n",
"Name: zn, Length: 68, dtype: float64\n",
"\n",
"Выбросы в столбце 'indus':\n",
"Series([], Name: indus, dtype: float64)\n",
"\n",
"Выбросы в столбце 'chas':\n",
"142 1\n",
"152 1\n",
"154 1\n",
"155 1\n",
"160 1\n",
"162 1\n",
"163 1\n",
"208 1\n",
"209 1\n",
"210 1\n",
"211 1\n",
"212 1\n",
"216 1\n",
"218 1\n",
"219 1\n",
"220 1\n",
"221 1\n",
"222 1\n",
"234 1\n",
"236 1\n",
"269 1\n",
"273 1\n",
"274 1\n",
"276 1\n",
"277 1\n",
"282 1\n",
"283 1\n",
"356 1\n",
"357 1\n",
"358 1\n",
"363 1\n",
"364 1\n",
"369 1\n",
"370 1\n",
"372 1\n",
"Name: chas, dtype: int64\n",
"\n",
"Выбросы в столбце 'nox':\n",
"Series([], Name: nox, dtype: float64)\n",
"\n",
"Выбросы в столбце 'rm':\n",
"97 8.069\n",
"98 7.820\n",
"162 7.802\n",
"163 8.375\n",
"166 7.929\n",
"180 7.765\n",
"186 7.831\n",
"195 7.875\n",
"203 7.853\n",
"204 8.034\n",
"224 8.266\n",
"225 8.725\n",
"226 8.040\n",
"232 8.337\n",
"233 8.247\n",
"253 8.259\n",
"257 8.704\n",
"262 8.398\n",
"267 8.297\n",
"280 7.820\n",
"283 7.923\n",
"364 8.780\n",
"365 3.561\n",
"367 3.863\n",
"374 4.138\n",
"384 4.368\n",
"386 4.652\n",
"406 4.138\n",
"412 4.628\n",
"414 4.519\n",
"Name: rm, dtype: float64\n",
"\n",
"Выбросы в столбце 'age':\n",
"Series([], Name: age, dtype: float64)\n",
"\n",
"Выбросы в столбце 'dis':\n",
"351 10.7103\n",
"352 10.7103\n",
"353 12.1265\n",
"354 10.5857\n",
"355 10.5857\n",
"Name: dis, dtype: float64\n",
"\n",
"Выбросы в столбце 'rad':\n",
"Series([], Name: rad, dtype: int64)\n",
"\n",
"Выбросы в столбце 'tax':\n",
"Series([], Name: tax, dtype: int64)\n",
"\n",
"Выбросы в столбце 'ptratio':\n",
"196 12.6\n",
"197 12.6\n",
"198 12.6\n",
"257 13.0\n",
"258 13.0\n",
"259 13.0\n",
"260 13.0\n",
"261 13.0\n",
"262 13.0\n",
"263 13.0\n",
"264 13.0\n",
"265 13.0\n",
"266 13.0\n",
"267 13.0\n",
"268 13.0\n",
"Name: ptratio, dtype: float64\n",
"\n",
"Выбросы в столбце 'b':\n",
"18 288.99\n",
"25 303.42\n",
"27 306.38\n",
"32 232.60\n",
"34 248.31\n",
" ... \n",
"466 22.01\n",
"467 331.29\n",
"475 302.76\n",
"489 344.05\n",
"490 318.43\n",
"Name: b, Length: 77, dtype: float64\n",
"\n",
"Выбросы в столбце 'lstat':\n",
"141 34.41\n",
"373 34.77\n",
"374 37.97\n",
"387 31.99\n",
"412 34.37\n",
"414 36.98\n",
"438 34.02\n",
"Name: lstat, dtype: float64\n",
"\n",
"Выбросы в столбце 'medv':\n",
"97 38.7\n",
"98 43.8\n",
"157 41.3\n",
"161 50.0\n",
"162 50.0\n",
"163 50.0\n",
"166 50.0\n",
"179 37.2\n",
"180 39.8\n",
"182 37.9\n",
"186 50.0\n",
"190 37.0\n",
"195 50.0\n",
"202 42.3\n",
"203 48.5\n",
"204 50.0\n",
"224 44.8\n",
"225 50.0\n",
"226 37.6\n",
"228 46.7\n",
"232 41.7\n",
"233 48.3\n",
"253 42.8\n",
"256 44.0\n",
"257 50.0\n",
"261 43.1\n",
"262 48.8\n",
"267 50.0\n",
"268 43.5\n",
"280 45.4\n",
"282 46.0\n",
"283 50.0\n",
"291 37.3\n",
"368 50.0\n",
"369 50.0\n",
"370 50.0\n",
"371 50.0\n",
"372 50.0\n",
"398 5.0\n",
"405 5.0\n",
"Name: medv, dtype: float64\n",
"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZfr/8c+kJ5BCKCGhB+ldmihSFEWKgq5gQQ2KsgioiA1EDSCIstYVFFAUBcQVlxVFqq7IVw1NYJEiCoQOoabQUp/fH/zmmCEJpM2ZhLxf15UL5pznnHM/z8yce+aeUxzGGCMAAAAAAADARl6eDgAAAAAAAABlD0UpAAAAAAAA2I6iFAAAAAAAAGxHUQoAAAAAAAC2oygFAAAAAAAA21GUAgAAAAAAgO0oSgEAAAAAAMB2FKUAAAAAAABgO4pSAAAAAAAAsB1FKZRKDodDY8eOtWVbS5cuVcuWLRUQECCHw6HExERbtlsYs2bNksPh0J49ezwdCgCUGuQUACibrtT9vzu+E/A9A+5CUQounDub7H9VqlRR165dtWTJEk+HV2Tbtm3T2LFj870zPXHihPr376/AwEBNnTpVs2fPVrly5dwbJABcIcgprsgpAMoK9v+u2P8DefPxdAAomcaPH686derIGKOEhATNmjVLPXv21DfffKPevXt7OrxC27Ztm8aNG6cuXbqodu3al22/bt06paSk6OWXX1a3bt3cH2AR3X///br77rvl7+/v6VAAwEJOuaC05RQAKCr2/xfYvf/nOwFKE4pSyFWPHj3Upk0b6/GgQYMUERGhefPmleoEUlBHjx6VJIWFhRXbOs+cOVPsv4w41+nt7S1vb+9iXTcAFBU55YLSklMAoLiw/7/A7v0/3wlQmnD6HvIlLCxMgYGB8vFxrWOeOXNGTz31lGrUqCF/f381aNBAr7/+uowxkqRz586pYcOGatiwoc6dO2ctd/LkSUVGRuraa69VZmamJGngwIEqX768du/ere7du6tcuXKKiorS+PHjrfVdysaNG9WjRw+FhISofPnyuvHGG7V69Wpr/qxZs9SvXz9JUteuXa1DiVeuXJnr+rp06aKYmBhJUtu2beVwODRw4EBr/vz589W6dWsFBgaqUqVKuu+++3Tw4EGXdTj7tGvXLvXs2VPBwcEaMGDAJftx8OBBDRo0SFFRUfL391edOnX06KOPKi0tzeqHw+HQjz/+qKFDh6pKlSqqXr26y7zshxLXrl1bvXv31sqVK9WmTRsFBgaqWbNmVr8XLFigZs2aKSAgQK1bt9bGjRsvO9YAUBTkFPfnlD179uQ4dSb7X/a4mjZtqm3btqlr164KCgpStWrVNHny5MuOEQAUFPt/e75TXOo7wU8//aR27dopICBA0dHR+vTTT3Msv3XrVt1www0KDAxU9erVNWHCBGVlZeVol9c1uWrXru3Sx/T0dI0bN0716tVTQECAKlasqI4dO2rFihV59gFlB0dKIVdJSUk6fvy4jDE6evSo3n33XZ0+fVr33Xef1cYYo9tuu00//PCDBg0apJYtW2rZsmV65plndPDgQb311lsKDAzUJ598ouuuu05jxozRm2++KUkaNmyYkpKSNGvWLJcqfmZmpm655RZdc801mjx5spYuXarY2FhlZGRo/Pjxeca7detWXX/99QoJCdGzzz4rX19fTZ8+XV26dNGPP/6o9u3bq1OnTnr88cf1z3/+U88//7waNWokSda/FxszZowaNGigGTNmWIce161bV9KFHf2DDz6otm3batKkSUpISNA777yjn3/+WRs3bnT5FSQjI0Pdu3dXx44d9frrrysoKCjPfhw6dEjt2rVTYmKiBg8erIYNG+rgwYP68ssvdfbsWfn5+Vlthw4dqsqVK+ull17SmTNnLvFsSjt37tS9996rv//977rvvvv0+uuv69Zbb9W0adP0/PPPa+jQoZKkSZMmqX///tqxY4e8vKhZAyge5BT7c0rlypU1e/Zsl2np6el68sknXXKJJJ06dUq33HKL7rjjDvXv319ffvmlnnvuOTVr1kw9evTIc5wA4HLY/3vmO0Vedu7cqTvvvFODBg1STEyMPvroIw0cOFCtW7dWkyZNJElHjhxR165dlZGRoVGjRqlcuXKaMWOGAgMDC7w9p7Fjx2rSpEl6+OGH1a5dOyUnJ2v9+vXasGGDbrrppkKvF1cIA2Tz8ccfG0k5/vz9/c2sWbNc2n711VdGkpkwYYLL9DvvvNM4HA6zc+dOa9ro0aONl5eXWbVqlZk/f76RZN5++22X5WJiYowk89hjj1nTsrKyTK9evYyfn585duyYNV2SiY2NtR737dvX+Pn5mV27dlnTDh06ZIKDg02nTp2sac5t//DDDwUaj3Xr1lnT0tLSTJUqVUzTpk3NuXPnrOmLFi0yksxLL72Uo0+jRo3K1/YeeOAB4+Xl5bI9p6ysLJeYOnbsaDIyMnKNNz4+3ppWq1YtI8n88ssv1rRly5YZSSYwMNDs3bvXmj59+vQCjQ8AXAo5JffxsCunXGzo0KHG29vb/Pe//7Wmde7c2Ugyn376qTUtNTXVVK1a1fztb38r1HYAgP1/7uNh1/7/Ut8JVq1aZU07evSo8ff3N0899ZQ1bcSIEUaSWbNmjUu70NDQHOu8ePyybysmJsZ63KJFC9OrV698xY6yh0MhkKupU6dqxYoVWrFihebMmaOuXbvq4Ycf1oIFC6w2ixcvlre3tx5//HGXZZ966ikZY1zurDF27Fg1adJEMTExGjp0qDp37pxjOafhw4db/3c4HBo+fLjS0tL03Xff5do+MzNTy5cvV9++fRUdHW1Nj4yM1L333quffvpJycnJhRqH3Kxfv15Hjx7V0KFDFRAQYE3v1auXGjZsqG+//TbHMo8++uhl15uVlaWvvvpKt956q8u5907ZT7eQpEceeSTf54o3btxYHTp0sB63b99eknTDDTeoZs2aOabv3r07X+sFgPwgp+TNXTnlYp9++qnee+89TZ48WV27dnWZV758eZejFvz8/NSuXTtyAYAiY/+fN7v2/9k1btxY119/vfW4cuXKatCggcv+fvHixbrmmmvUrl07l3aXuwTJpYSFhWnr1q36888/C70OXLkoSiFX7dq1U7du3dStWzcNGDBA3377rRo3bmztzCVp7969ioqKUnBwsMuyzkNX9+7da03z8/PTRx99pPj4eKWkpOjjjz/OUWSRJC8vL5ckIEn169eXpDxvuXrs2DGdPXtWDRo0yDGvUaNGysrK0v79+/Pf+ctw9iu37TVs2NCl35Lk4+NjXfPpUo4dO6bk5GQ1bdo0X3HUqVMnX+0kuRSeJCk0NFSSVKNGjVynnzp1Kt/rBoDLIafkzV05JbtNmzZpyJAhuueeezRy5Mgc86tXr55j/CpUqEAuAFBk7P/zZsf+/2IXfyeQcu7v9+7dq3r16uVol1uc+TV+/HglJiaqfv36atasmZ555hlt3ry50OvDlYWiFPLFy8tLXbt21eHDhwtd4V62bJkk6fz582WqSu7v7++W6zMV5LzuvI6oymu6ycdFIAGgsMgphVfQnHLq1Cn97W9/U/369fXhhx/m2oZcAMAu7P8Lrzi+U9i1v3dedN6pU6dO2rVrlz766CM1bdpUH374oa6++uo88xLKFopSyLeMjAxJ0unTpyVJtWrV0qFDh5SSkuLS7vfff7fmO23evFnjx4/Xgw8+qFatWunhhx9WUlJSjm1kZWXlOF3gjz/+kHThLg65qVy5soKCgrRjx44c837//Xd5eXlZRwTl9ktKQTn7ldv2duzY4dLvgqhcubJCQkK0ZcuWIsUHAKUBOeUCd+UU6UL/BwwYoMTERP3nP/8p1EVxAaC4sf+/wJ37/6KoVatWrsW+3OKsUKGCEhMTXaalpaXp8OHDOdqGh4frwQcf1Lx587R//341b9481zv3oeyhKIV8SU9P1/Lly+Xn52cdStuzZ09lZmZqypQpLm3feustORwO64496enpGjhwoKKiovTOO+9o1qxZSkhI0JNPPpnrtrKvzxijKVOmyNfXVzfeeGOu7b29vXXzzTdr4cKFLofjJiQk6LPPPlPHjh0VEhIiSSpXrpwk5dh5FkSbNm1UpUoVTZs2Tampqdb0JUuWaPv27erVq1eh1uvl5aW+ffvqm2++0fr163PM5xdrAFcKcspf3JVTJGncuHFatmyZ5s2bV6BTvgHAXdj//8Wd+/+i6Nmzp1avXq21a9da044dO6a5c+fmaFu3bl2tWrXKZdqMGTNyHCl14sQJl8fly5fXVVdd5dJvlF0+ng4AJdOSJUusXyeOHj2qzz77TH/++adGjRpl7YxvvfVWde3aVWPGjNGePXvUokULLV++XAsXLtSIESOsW51OmDBBmzZt0vfff6/g4GA1b95cL730kl544QXdeeed6tmzp7XdgIAALV26VDExMWrfvr2WLFmib7/9Vs8//7wqV66cZ7wTJkzQihUr1LFjRw0dOlQ+Pj6aPn26UlNTNXnyZKtdy5Yt5e3trddee01JSUny9/fXDTfcoCpVquR7bHx9ffXaa6/pwQcfVOfOnXXPPfdYt2+tXbt2nokxP1555RUtX75cnTt31uDBg9WoUSMdPnxY8+fP108//eRyW1gAKC3IKXlzV0757bff9PLLL6tTp046evSo5syZ4zI/+4XNAcBd2P/nzZ3fKYri2Wef1ezZs3XLLbfoiSeeULly5TRjxgzVqlUrx3WgHn74YQ0ZMkR/+9vfdNNNN+l///ufli1bpkqVKrm0a9y4sbp06aLWrVsrPDxc69ev15dffulyMXqUYZ667R9Kptxu3xoQEGBatmxp3n//fZOVleXSPiUlxTz55JMmKirK+Pr6mnr16pl//OMfVrtff/3V+Pj4uNyS1RhjMjIyTNu2bU1UVJQ5deqUMebCrU7LlStndu3aZW6++WYTFBRkIiIiTGxsrMnMzHRZXrncfnTDhg2me/fupnz58iYoKMh07drV/PLLLzn6+MEHH5jo6Gjj7e192Vu55nb7Vqd//etfplWrVsbf39+Eh4ebAQMGmAMHDri0cfapIPbu3WseeOABU7lyZePv72+io6PNsGHDTGpq6mVjyuv2r7ndglWSGTZsmMu0+Ph4I8n84x//KFDMAJAbckru42FHTvnhhx9yvR2788+pc+fOpkmTJjmWj4mJMbVq1crXtgDgYuz/cx8Pu75TFOQ7QefOnU3nzp1dpm3evNl07tzZBAQEmGrVqpmXX37ZzJw5M8c6MzMzzXPPPWcqVapkgoKCTPfu3c3OnTtNrVq1TExMjNVuwoQJpl27diYsLMwEBgaahg0bmokTJ5q0tLR89wlXLocxnBOEkmHgwIH68ssvrfPLAQAoLHIKAJRN7P+B0oVrSgEAAAAAAMB2FKUAAAAAAABgO4pSAAAAAAAAsB3XlAIAAAAAAIDtOFIKAAAAAAAAtqMoBQAAAAAAANv5FHbBrKwsHTp0SMHBwXI4HMUZEwCgmBljlJKSoqioKHl52ft7BPkCAEoPT+YLiZwBAKVJceSMQhelDh06pBo1ahR2cQCAB+zfv1/Vq1e3dZvkCwAofTyRLyRyBgCURkXJGYUuSgUHB1sbDwkJKexqAAA2SE5OVo0aNax9t53IFwBQengyX0jkDAAoTYojZxS6KOU8nDYkJISEAQClhCdOhSBfAEDp46lT58gZAFD6FCVncKFzAAAAAAAA2I6iFAAAAAAAAGxHUQoAAAAAAAC2oygFAAAAAAAA2xX6QufFJSEhQUlJSQVaJjQ0VBEREW6KCABQEhUmX9iN/AQAsEtpyIu4svA5B+7g0aLU77//rqFDhykrK7NAy/n6+WvO7E95QwBAGVHYfGE38hMAwA4JCQm67/4HlJ6W6ulQUIbwOQfu4NGi1P79+5WVlanz1a5WZmj1fC3jdT5J2v2jkpKSeDMAQBlRmHxhN/ITAMAuSUlJSk9L1bnozsoKCPV0OMXK61yiAuNX6VydTsoKDPN0OPj/+JwDd/H46XuSZPzKK6tcJU+HAQAo4cgXAAD8JSsg9IrNi1mBYVds3wD8hQudAwAAAAAAwHYUpQAAAAAAAGA7ilIAAAAAAACwHUUpAAAAAAAA2I6iFAAAAAAAAGxHUQoAAAAAAAC2oygFAAAAAAAA21GUAgAAAAAAgO0oSgEAAAAAAMB2FKUAAAAAAABgO4pSAAAAAAAAsJ3HilLnz5/X4cOHPbV5lzj++OMPnT9/3tOhAADykJ6efuE/JtOzgYC8CaBEYx8FAPlTUvaXHitK7du3Tx999JGnNu8Sx+DBg7Vv3z5PhwIAyMPx48clSY60sx6OBORNACUZ+ygAyJ+Ssr/k9D0AAAAAAADYjqIUAAAAAAAAbEdRCgAAAAAAALajKAUAAAAAAADbUZQCAAAAAACA7ShKAQAAAAAAwHYUpQAAAAAAAGA7ilIAAAAAAACwHUUpAAAAAAAA2I6iFAAAAAAAAGzn4+kAPO3s2bOSpMcee0wZGRny8fFRYGCgateurbCwMB08eFCSFB4ertTUVJ04cUKVKlVS69atdfbsWSUkJOjUqVNKTU2Vt7e3Dh48qPT0dIWFhSk6Olrp6emqUKGCzp07p9TUVDVp0kRXXXWVkpOTFR4eriZNmui3337Txo0blZCQoMqVKys0NFTh4eEKDw9XVlaWNm/eLElq3ry5vLy8lJiYqPDwcDVv3lyStHnzZh0/flyJiYkKCwtTpUqV1KRJE23dutWaHhISosTERCUnJ8vLyyvXdXl7e+cYn8zMTG3evFknT568ZDt3yx5HWFiYJF029ouXK0z8xd3/kjKenuCOvpeF8SwLfcSV5/Tp05o0aZIOHTqkqKgojRgxQnPnztWBAwcUGRkpY4yOHDmi6tWr6+9//7sCAwMLtP5jx45p+PDhSkpKUmhoqKZMmaLKlSvne/mTJ09q5MiROnHihCpWrKg333xT4eHhBe3mJZ07d07Tp0/XgQMHcu3n5ebnx8XjPHr0aJUvX75Y+3E5xdGPoq7jjz/+0ODBg63HM2bMUP369V3apKWlaeHChdZY9enTR35+fvmenx9JSUkaM2aMEhISFBERoYkTJyo0NDTfyxfH80nOAACUNmW6KDVgwACr6JSamirpQjJPTU3Vpk2b8lxu//792rhx4yXXnZycrH379uWY/tNPP7k89vLyUlZWVgEjvyB7ceZi3t7eyszMzPe6qlatqqFDh6pTp07WtFWrVum9997TkSNHLtnO3XKLI7u8Yipq/MXd/5Iynp7gjr6XhfEsC33ElWfIkCH6/fffrcfx8fH6+eefc227fv16ffXVV7ruuus0ceLEfK2/d+/eOn36tPX4/Pnz6tevn8qXL69FixZddvk77rhDJ0+etB6npKTojjvuUHh4uBYsWJCvGC5nzJgxLn2+uJ+Xm58fuY1z79691bBhQ02bNq1Y+nE5xdGPoq6jS5cuOaY5C1QrV66UJE2bNk3z5893+Vw0bdo09evXT0OGDLns/PzI/plSulA47dOnj6pVq6a5c+dedvnieD7JGQCA0qjMnr538YcHu/j4uNYBnQWpihUrSlKOX8Sy/1IYHBxs/b9bt25KTEy0ClLt27fX008/rXr16rlsJzIy0mV9zu1kX+8jjzyi6OhoxcbGatWqVZIufLCJjY1VdHS0pk6dqsWLF2vq1Kk52rlb9jgeeeQRSVKzZs3UrFkzORyOXGMvjviLu/8lZTw9wR19LwvjWRb6iCuP84u1w+HQzTffrBYtWuRo4+XlJYfDIUmqVq2afH199fPPP2vMmDGXXX/2glTt2rX1yiuvqHbt2pIuHGXSu3fvSy6fvSDVuHFjvfHGG2rcuLGkC0dP3XHHHfnua16cRRZfX1/de++9mjNnju69916rn3fccccl5+dnHC4e5w8//FA333yzHA6Hfv/993wXUtzZz/z0o6jryF6Q8vLy0t133y0vLy+X+dOmTdPnn3+ukJAQPf300/r3v/+tp59+WiEhIfr88881ZMiQS87PT0Eo+2fKdu3aacqUKWrXrp0k6eDBgxowYMAlly+O55OcAQAorRzGGFOYBZOTkxUaGqqkpCSFhIQUePnsh1qfq9NJGZWuytdyXmeOq9y2r3M9NDu/kpKS1KdPH5dpDodDvr6+yszMzPUII4fDoUIOlaQLRaKMjAw5HA61bdtWa9eulST5+voqKChIp0+fVrt27TR27Fj17t1b6enp8vLyUsWKFZWcnCxJ+vrrrzV27Fj9+uuvyszMVJs2bbRx40Y5HA4tWrRIXl5euvfee5WWlqbk5GSVL19ep0+flo+Pj1q1aiVJWrdunUJCQuTn56c6depo48aNqlChgmbPnq3Y2FjFx8frk08+0QMPPKDo6GhNmDDB5QNeVlaWXnjhBcXHx2vOnDluPSQ8MzNTAwYMUHR0tMaNG6f777/fikmSFcenn35qxT5nzhxJspYrTPzZt1sc/S/u9ZUm7uh7WRhPd/SxqPvsoiiObX/66af66KOPdD6qldKrtSrmCItHceSn0sCZvy/up7Mo5HA4tGTJEhlj1KNHD/n6+mrOnDm66667JEkLFixQ+fLl1atXL6Wnp2vhwoW68847lZ6eriVLluR52taxY8fUr18/SRfyYfbXUnJysm677TZJ0vz583M9lS970WnRokUuPwJlL2gtWLCg0KfynTt3zurzt99+m+P0sB49eigzM1M+Pj5avHhxjvnOMbnUOFw8zgEBAda88+fPq0ePHjLG5OhjcbpcP/PTj6KuI/vnyE8//VQ1a9a05u3bt08PPPCA9bhChQqaP3++yw+DGRkZuvPOO5WYmJjn/H79+ik5OVlLlizJ81S+7J8pFy9erKCgIGve2bNn1bNnT0nSwoULcz2Vrziez+LOGZ7MF8Wx/bz2UVcaZz/PNL5NWeUqeTqcYuXMp1di30qzsvI5pywpjv1lceSMfJ++l5qaap3i5ty4J+3du7fQy7722ms5phljlJaWlucylytIValSRUePHs1zfkZGhrWe7B840tPT1b17d33xxRdq166dtm3bpvT0dEkXPkgcO3bMartt2zbdd999iouLkyRVr15da9askSRt2bJFkpSQkKD+/fvriy++UKtWrbRy5UplZmbq/vvv1x9//KHVq1frpptu0hdffKG7775bq1ev1pEjR7RlyxYNGDBAw4YN08KFC3XkyBG9+OKLLh9spAu/RDrbbd682Sp2ucPmzZutOLZs2ZIjJmcc2WN3Xn+rKPFn325x9L+411eauKPvZWE8S3sfS1q+sFtR8lNpkFf/Jk2aJEm66aabFBAQoLfffluS1K9fP82bN89q98Ybb2jixIm68847NW/ePH388cfW/6dPn64RI0bkuv7hw4dLunCE1MUfekJCQlSrVi3t3btXw4cP17/+9a8cy48cOVLShSOkLv5yX758eTVq1Ejbt2/XyJEjNWvWrMuOQ26mT59u9fniIobzx6CdO3eqTp06uc7PzzhcPM7ZBQQEqFu3blqxYoUmTZqU71PoCupy/cxPP4q6DmdBysvLy6UgJUk1a9Z0uTzCoEGDchyp7uPjo5YtW2rlypVq0aJFrvMfeughvfHGG1q4cKFVEL2Y82iudu3auRSkJCkoKEht27bVunXrNGbMGE2ZMiXH8sXxfJIzcldW98WAu/Hau3KUlOcy30WpSZMmady4ce6MpUDc9UGrsK666qpLFqWyS0lJcXkcFRUl6cKHj+zXubjYyZMn1aFDB+tx9iJa9uWcp+xl/3BTp04d60Xn3J6/v3+u6z506JC1TG6c0y8Va3Fwrr9OnTpWIS57TNnjcMaePabCxp99u4VZ3t3rK03c0feyMJ6lvY8lLV/YraTlJ7s4c0f//v0lSQcOHJAk9ezZ0ypQZW/Xs2dPzZs3TwcOHNATTzxh/T8vSUlJkuRyQevsBg0apJdeeslqd7ETJ05Y7XLz4IMP6tlnn7XaFUb2PufGmZfzOuom+5jk5eJxvli/fv20YsUKq507XK6f+elHcaxDynscbr/9dv373/+WJJfPTtk5n4+Li0FOF38uyk1CQoIkuRyZld3999+vdevWWe0uVhzPJzkjd2V1Xwy4G+8tFLd8F6VGjx5t/cooXfgVo0aNGm4JKj/GjBmjWrVqFWrZ1157Tbt27SrWeHbu3JnvttmvDSX99YHk/Pnzqlq1ap7LhYeHKz4+3nqc/UNt9lMNDh8+bK3PKT4+3voVyrm97L9KZV+3s2gVHx+vJk2a5IjD2a6471R0Mef64+PjXf7vjCl7HLnFVNj4c9tWQZZ39/pKE3f0vSyMZ2nvY0nLF3YrSn4qDfbu3ZvrB9KoqCjFx8friy++0PPPP6/q1atr/fr1Wrx4sfV/ZzvpwqlO0oWjfrP/Py+hoaE6f/68ZsyYoWuvvTbH/JkzZ1rtclOxYkWlpKRo5syZat26dY75H3/8sdWusLL3ObfimTMv53Vkdn7G4eJxvtj8+fOtdu5yuX7mpx/FsQ5J+uKLL3K95tJ//vMf6/9xcXG5Xm/M+Xxk/7yUnfMHsUuNZUREhI4dO6ZPP/1UkydPzjF/9uzZVrvcFMfzSc7IXVndFwPudqW/t8qSkrIfyXdRyt/f3+XIGk+rVatWoc97fPPNN4v9mlKXO0oq+zWlsn/48fX11bJly+Tt7a21a9eqZ8+e8vX1zfWaUo0bN9bYsWPl5+enzMxMHThwQH5+fnI4HGratKm8vLwUERGhFStWyNvbWxs3bpS3t7d8fHysD0Xe3t5asWKFIiIitGbNGvn7+6tChQpq2rSpYmNjFRkZqT59+ujf//635s6dm+u1CebOnavIyEg1b9788oNdBM2bN1fVqlU1d+5cjRs3zvq/85pSzjiyx+6MKXvbgsaffbvF0f/iXl9p4o6+l4XxLO19LGn5wm5FyU+l2ejRo9W7d2+tWLFCI0eO1N///nd99dVXmj9/vubMmaOvvvpKkvTUU08pLS1NX375paQLRyjdeeedkqS///3vea5/ypQp6tevn/bs2aPk5OQc15RyHg2c2ylS0oXcf8cdd2jbtm06ffp0jmtKbd++3WpXWNn7PHDgwBzXSXIWB+Lj45WWlpZjvnNMLjUOF4/zxdcg+u6776x27nK5fuanH0Vdx4wZMzR48GBlZWVp3759Oa4plf3OxjNnztQtt9yS45pRzjst/+9//1NGRkaO+R999JG8vb1zfGbMbuLEierTp4/Wrl2rs2fP5rim1Lp166x2uSmO55Ockbuyui8G3I33Fopbmbz7XmhoqKpVq+YyzXlNqdwKUs75ReG8ppSz+OSUnp6upKQkhYWFKS4uTn/7299cril1+vRp61z7O++8U3FxcUpLS1OXLl20Zs0apaWlKTU1VS+88IIWL16skJAQnTp1Sj4+PkpKSlKVKlWUmpqq1atXa/Xq1QoLC9OpU6eUnJys1atXKzU1Vb1791ZsbKzi4uL06KOPys/PT0OHDlVcXJxeeOEFbd26VWfPntXWrVv1wgsvWO3cfRFpb29vK47Y2Fj17t1bv/zyi5544gk98cQT1i+f2WP39vZ2Wa4w8Rd1eXevrzRxR9/LwniWhT7iylO+fHk1bNjQusD5m2++qebNmys9Pd26yLkk3XnnnerevbvS09MVFRVlXeT8uuuuy/Oi2JJUuXJlq5B02223KSYmRqtWrVJMTIx1kfPy5cvnepFz6cJRIs4jRXr37q1HH31Ua9eu1aOPPmodRZO9TWEEBgbquuuuU3p6unr16qXp06dr//79mj59unr16qXMzEyFh4crIyMj1/n5GYeLx3nixIn6448/NHHiROui2A0bNnTbRc7z08/89KOo68j+heiBBx7QDTfcoHfffVc33HCDy6l0d999t06dOqV+/frpm2++0fHjx/XNN9+oX79+SkxMVMOGDfOc75ye1+mWkutnyp49e+qZZ57R5s2b9cwzz1inJlarVi3PI/iK4/kkZwAA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vlvNmjXT/fffryeffFKTJk2SxDh5CvmCnMD+/gL25X9hf51TfvpctWrVHBcBz8jI0MmTJ0vduJAbpLCwMNWvX187d+70dCi2KIvv69xER0erUqVKpf55L4ufbfLqc27at28vSaX+eS4I24tSfn5+at26tb7//ntrWlZWlr7//nt16NDB7nBKDGOMhg8frv/85z/673//qzp16rjMb926tXx9fV3GbceOHdq3b1+ZG7cbb7xRv/32mzZt2mT9tWnTRgMGDLD+z1hdcN111+W47egff/yhWrVqSZLq1KmjqlWruoxVcnKy1qxZU6bG6uzZs/Lyct0dent7KysrSxLj5CllOV+QEy5gf38B+/K/sL/OKT997tChgxITE/Xrr79abf773/8qKyvL+gJUWpTl3OB0+vRp7dq1S5GRkZ4OxRZl8X2dmwMHDujEiROl9nkvi59tLtfn3GzatEmSSu3zXCieuLr6559/bvz9/c2sWbPMtm3bzODBg01YWJg5cuSIJ8IpER599FETGhpqVq5caQ4fPmz9nT171mozZMgQU7NmTfPf//7XrF+/3nTo0MF06NDBg1GXHBfftYCxumDt2rXGx8fHTJw40fz5559m7ty5JigoyMyZM8dq8+qrr5qwsDCzcOFCs3nzZtOnTx9Tp04dc+7cOQ9Gbq+YmBhTrVo1s2jRIhMfH28WLFhgKlWqZJ599lmrDePkGWU1X5AT8lYW9/fsy/9SVvfXKSkpZuPGjWbjxo1GknnzzTfNxo0bzd69e40x+evzLbfcYlq1amXWrFljfvrpJ1OvXj1zzz33eKpLRVLWcsNTTz1lVq5caeLj483PP/9sunXrZipVqmSOHj3q6dCKTXG8xkubS/U5JSXFPP300yYuLs7Ex8eb7777zlx99dWmXr165vz5854OvVDK4meby/V5586dZvz48Wb9+vUmPj7eLFy40ERHR5tOnTp5OHJ7eaQoZYwx7777rqlZs6bx8/Mz7dq1M6tXr/ZUKCWCpFz/Pv74Y6vNuXPnzNChQ02FChVMUFCQuf32283hw4c9F3QJcvGXFMbqL998841p2rSp8ff3Nw0bNjQzZsxwmZ+VlWVefPFFExERYfz9/c2NN95oduzY4aFoPSM5Odk88cQTpmbNmiYgIMBER0ebMWPGmNTUVKsN4+Q5ZTFfkBPyVlb39+zLLyir++sf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wHYUpQAAAAAAAGA7ilIAAAAAAACwHUUpAAAAAAAA2I6iFEodh8OhsWPH2rKtpUuXqmXLlgoICJDD4VBiYqIt283LrFmz5HA4tH79eo/GAQClVVnOIQCAwiN/AO5BUQoWZ8Ej+1+VKlXUtWtXLVmyxNPhFdm2bds0duxY7dmzJ1/tT5w4of79+yswMFBTp07V7NmzVa5cOfcGCQClFDnEFTkEAPKH/OGK/IGyxsfTAaDkGT9+vOrUqSNjjBISEjRr1iz17NlT33zzjXr37u3p8Apt27ZtGjdunLp06aLatWtftv26deuUkpKil19+Wd26dXN/gABwBSCHXEAOAYCCIX9cQP5AWUNRCjn06NFDbdq0sR4PGjRIERERmjdvXqlOCAV19OhRSVJYWFixrfPMmTP80gHgikYOuYAcAgAFQ/64oCTkD/IN7MTpe7issLAwBQYGysfHtYZ55swZPfXUU6pRo4b8/f3VoEEDvf766zLGSJLOnTunhg0bqmHDhjp37py13MmTJxUZGalrr71WmZmZkqSBAweqfPny2r17t7p3765y5copKipK48ePt9Z3KRs3blSPHj0UEhKi8uXL68Ybb9Tq1aut+bNmzVK/fv0kSV27drUODV65cmWu6+vSpYtiYmIkSW3btpXD4dDAgQOt+fPnz1fr1q0VGBioSpUq6b777tPBgwdd1uHs065du9SzZ08FBwdrwIABl+zHwYMHNWjQIEVFRcnf31916tTRo48+qrS0NJd2qampGjlypCpXrqxy5crp9ttv17Fjx1zaLFy4UL169bLWVbduXb388svWmDv9+eef+tvf/qaqVasqICBA1atX1913362kpKRLxgoA+UEOsSeHjB07Vg6HQzt37tTAgQMVFham0NBQPfjggzp79qxL24yMDL388suqW7eu/P39Vbt2bT3//PNKTU2VJBlj1LVrV1WuXNn6ciRJaWlpatasmerWraszZ85cdlwBoCjIH/bmj23btunee+9VhQoV1LFjR0lS7dq11bt3b61cuVJt2rRRYGCgmjVrZsW/YMECNWvWTAEBAWrdurU2btx42TEDcjDA//fxxx8bSea7774zx44dM0ePHjVbtmwxf//7342Xl5dZvny51TYrK8vccMMNxuFwmIcffthMmTLF3HrrrUaSGTFihNVu9erVxtvb2zz55JPWtLvvvtsEBgaaHTt2WNNiYmJMQECAqVevnrn//vvNlClTTO/evY0k8+KLL7rEKcnExsZaj7ds2WLKlStnIiMjzcsvv2xeffVVU6dOHePv729Wr15tjDFm165d5vHHHzeSzPPPP29mz55tZs+ebY4cOZLrWCxfvtwMHjzYSDLjx483s2fPNr/88ovLOLVt29a89dZbZtSoUSYwMNDUrl3bnDp1yqVP/v7+pm7duiYmJsZMmzbNfPrpp3mO/8GDB01UVJQJCgoyI0aMMNOmTTMvvviiadSokbVe57ZbtWplbrjhBvPuu++ap556ynh7e5v+/fu7rK9v376mf//+5h//+Id5//33Tb9+/Ywk8/TTT1ttUlNTTZ06dUxUVJSZMGGC+fDDD824ceNM27ZtzZ49e/KMFQAuRg75iydySGxsrJUf7rjjDvPee++Zhx9+2Egyzz77rEvbmJgYI8nceeedZurUqeaBBx4wkkzfvn2tNrt37zbly5c3t99+uzVt1KhRxuFwmB9//DHPOACgoMgff/Fk/mjcuLHp06ePee+998zUqVONMcbUqlXLNGjQwERGRpqxY8eat956y1SrVs2UL1/ezJkzx9SsWdO8+uqr5tVXXzWhoaHmqquuMpmZmXluC8gNRSlYnDu6i//8/f3NrFmzXNp+9dVXRpKZMGGCy/Q777zTOBwOs3PnTmva6NGjjZeXl1m1apWZP3++kWTefvttl+WcH5Afe+wxa1pWVpbp1auX8fPzM8eOHbOmX5wQ+vbta/z8/MyuXbusaYcOHTLBwcGmU6dO1jTntn/44YcCjce6deusaWlpaaZKlSqmadOm5ty5c9b0RYsWGUnmpZdeytGnUaNG5Wt7DzzwgPHy8nLZnlNWVpZLTN26dbOmGWPMk08+aby9vU1iYqI17ezZsznW8/e//90EBQWZ8+fPG2OM2bhxo5Fk5s+fn68YASAv5JDcx8OuHOL8UvHQQw+5TL/99ttNxYoVrcebNm0ykszDDz/s0u7pp582ksx///tfa9r06dONJDNnzhzrC172L30AUBzIH7mPh93545577skxr1atWkaSVRgzxphly5YZSSYwMNDs3bvXmu7MGfntJ+DE6XvIYerUqVqxYoVWrFihOXPmqGvXrnr44Ye1YMECq83ixYvl7e2txx9/3GXZp556SsYYlztljB07Vk2aNFFMTIyGDh2qzp0751jOafjw4db/HQ6Hhg8frrS0NH333Xe5ts/MzNTy5cvVt29fRUdHW9MjIyN177336qefflJycnKhxiE369ev19GjRzV06FAFBARY03v16qWGDRvq22+/zbHMo48+etn1ZmVl6auvvtKtt97qci69k8PhcHk8ePBgl2nXX3+9MjMztXfvXmtaYGCg9f+UlBQdP35c119/vc6ePavff/9dkhQaGipJWrZsWY7TOwCgMMgheXNXDsluyJAhLo+vv/56nThxwurH4sWLJUkjR450affUU09JkksMgwcPVvfu3fXYY4/p/vvvV926dfXKK68UKB4AyC/yR948kT+cGjdurA4dOliP27dvL0m64YYbVLNmzRzTd+/eXaDtAhSlkEO7du3UrVs3devWTQMGDNC3336rxo0bWztnSdq7d6+ioqIUHBzssmyjRo2s+U5+fn766KOPFB8fr5SUFH388cc5iiyS5OXl5bJTl6T69etLUp63UD127JjOnj2rBg0a5JjXqFEjZWVlaf/+/fnv/GU4+5Xb9ho2bOjSb0ny8fFR9erVL7veY8eOKTk5WU2bNs1XHNkTgCRVqFBBknTq1Clr2tatW3X77bcrNDRUISEhqly5su677z5Jsq4XVadOHY0cOVIffvihKlWqpO7du2vq1KlcTwpAoZFD8uauHJLd5fLD3r175eXlpauuusqlXdWqVRUWFpYjhpkzZ+rs2bP6888/NWvWLJcfPACgOJE/8mZH/qhTp06u0y/OK84ftWvUqJHr9OzfR4D8oCiFy/Ly8lLXrl11+PBh/fnnn4Vax7JlyyRJ58+fL/Q6SiN/f395eRX/28zb2zvX6eb/X5AxMTFRnTt31v/+9z+NHz9e33zzjVasWKHXXntN0oUjs5zeeOMNbd68Wc8//7zOnTunxx9/XE2aNNGBAweKPW4AZQ85pPAKk0Mulx+ccvtilpuVK1daF0D/7bffChQLABQF+aPwCpM/8vrRIa+8kt98A1wORSnkS0ZGhiTp9OnTkqRatWrp0KFDSklJcWnnPC2sVq1a1rTNmzdr/PjxevDBB9WqVSs9/PDDuR6Jk5WVleNwzz/++EPShTs/5KZy5coKCgrSjh07csz7/fff5eXlZVXx8/sB/FKc/cptezt27HDpd0FUrlxZISEh2rJlS5Hic1q5cqVOnDihWbNm6YknnlDv3r3VrVs36xfzizVr1kwvvPCCVq1apf/7v//TwYMHNW3atGKJBQDIIRe4K4cUNIasrKwcX84SEhKUmJjoEsPhw4f12GOP6eabb1bv3r319NNP5/g1HgDcifxxQUnIH4C7UJTCZaWnp2v58uXy8/OzDo3t2bOnMjMzNWXKFJe2b731lhwOh3r06GEtO3DgQEVFRemdd97RrFmzlJCQoCeffDLXbWVfnzFGU6ZMka+vr2688cZc23t7e+vmm2/WwoULXQ6vTUhI0GeffaaOHTsqJCREklSuXDlJF44iKqw2bdqoSpUqmjZtmvXLsSQtWbJE27dvV69evQq1Xi8vL/Xt21fffPON1q9fn2N+QX9xcP5ykX25tLQ0vffeey7tkpOTrWTv1KxZM3l5ebn0DwAKixzyF3flkILo2bOnJOntt992mf7mm29KkksMjzzyiLKysjRz5kzNmDFDPj4+GjRoEL+CA7AF+eMvJSF/AO7i4+kAUPIsWbLE+rXh6NGj+uyzz/Tnn39q1KhR1s711ltvVdeuXTVmzBjt2bNHLVq00PLly7Vw4UKNGDFCdevWlSRNmDBBmzZt0vfff6/g4GA1b95cL730kl544QXdeeed1odjSQoICNDSpUsVExOj9u3ba8mSJfr222/1/PPPq3LlynnGO2HCBK1YsUIdO3bU0KFD5ePjo+nTpys1NVWTJ0+22rVs2VLe3t567bXXlJSUJH9/f91www2qUqVKvsfG19dXr732mh588EF17txZ99xzjxISEvTOO++odu3aeSa6/HjllVe0fPlyde7cWYMHD1ajRo10+PBhzZ8/Xz/99JPCwsLyva5rr71WFSpUUExMjB5//HE5HA7Nnj07xxeJ//73vxo+fLj69eun+vXrKyMjQ7Nnz5a3t7f+9re/FbovAMouckje3JlD8qtFixaKiYnRjBkzrFO9165dq08++UR9+/ZV165dJUkff/yxvv32W82aNcu6Lsm7776r++67T++//76GDh3q9lgBlC3kj7yVhPwBuI1H7vmHEim327EGBASYli1bmvfff99kZWW5tE9JSTFPPvmkiYqKMr6+vqZevXrmH//4h9Xu119/NT4+Pi63WDXGmIyMDNO2bVsTFRVlTp06ZYy5cOvScuXKmV27dpmbb77ZBAUFmYiICBMbG2syMzNdltdFt2M1xpgNGzaY7t27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kCF67bXX1LhxYw/3CgDgTp988on8/Pz0888/a9q0aZKksWPHasqUKfrll1+0f/9+9e/fX2+//bY+++wzffvtt1q+fLneffddD0cOeI7D8C0aV6CUlBRVrlxZU6ZM0cMPP+wyb8+ePapTp44+/PBDDRo0SJK0bds2NWnSRNu3b1fDhg1zXWfv3r2tLxsbNmxQ69attWfPHtWqVcvt/QEA2KdLly7KzMzU//3f/1nT2rVrpxtuuEE33nijevToofj4eNWoUUPSXzlk7dq1atu2raQLOSM5OVl+fn7y9vbW0qVL5XA4PNIfAID7denSRcnJydqwYYMkaeXKleratau+++473XjjjZKkV199VaNHj9auXbsUHR0tSRoyZIj27NmjpUuXeix2wJM4UgpXpO3btys1NdVKALlp3ry59f/IyEhJ0tGjRyVJmZmZevnll9WsWTOFh4erfPnyWrZsmfbt2ydJatGihW688UY1a9ZM/fr10wcffKBTp065sUcAADtlzxHShTxx9OhRbd++XTVq1LAKUpLUuHFjhYWFafv27da0jz76SJs3b9aGDRs0a9YsClIAUAa0bt06x7Ts+SQiIkJBQUFWQco5zfkdBCiLKErhihQYGHjZNr6+vtb/nV8WsrKyJEn/+Mc/9M477+i5557TDz/8oE2bNql79+7WBQu9vb21YsUKLVmyRI0bN9a7776rBg0aKD4+3g29AQDYLXuOkC7kCWeOyI///e9/OnPmjM6cOaPDhw8Xd3gAgBKoXLlyOaZd/J2jqPkFuNJQlMIVqV69egoMDNT3339fqOV//vln9enTR/fdd59atGih6Oho/fHHHy5tHA6HrrvuOo0bN04bN26Un5+f/vOf/xRH+ACAEqpRo0bav3+/9u/fb03btm2bEhMTrWtGnTx5UgMHDtSYMWM0cOBADRgwQOfOnfNUyAAAACWWj6cDANwhICBAzz33nJ599ln5+fnpuuuu07Fjx7R169ZLntLnVK9ePX355Zf65ZdfVKFCBb355ptKSEiwvnCsWbNG33//vW6++WZVqVJFa9as0bFjx9SoUSN3dw0A4EHdunVTs2bNNGDAAL399tvKyMjQ0KFD1blzZ7Vp00bSheuD1KhRQy+88IJSU1PVqlUrPf3005o6daqHowcAAChZKErhivXiiy/Kx8dHL730kg4dOqTIyEgNGTIkX8u+8MIL2r17t7p3766goCANHjxYffv2VVJSkiQpJCREq1at0ttvv63k5GTVqlVLb7zxhnr06OHOLgEAPMzhcGjhwoV67LHH1KlTJ3l5eemWW26x7pz06aefavHixdq4caN8fHzk4+OjOXPmqGPHjurduzd5AgAAIBvuvgcAAAAAAADbcU0pAAAAAAAA2I6iFAAAAAAAAGxHUQoAAAAAAAC2oygFAAAAAAAA21GUAgAAAAAAgO0oSgEAAAAAAMB2FKUAAAAAAABgO4pSAAAAAAAAsB1FKQAAAAAAANiOohQAAAAAAABsR1EKAAAAAAAAtqMoBQAAAAAAANtRlAIAAAAAAIDtKEoBAAAAAADAdhSlAAAAAAAAYDuKUgAAAAAAALAdRSkAAAAAAADYjqIUSj2Hw6GxY8fasq2lS5eqZcuWCggIkMPhUGJioi3bBQAUv7KWP8aOHSuHw+EyrXbt2ho4cKDtsQBAaVHWckVxyC3fAHmhKIU8zZo1Sw6Hw+WvSpUq6tq1q5YsWeLp8Ips27ZtGjt2rPbs2ZOv9idOnFD//v0VGBioqVOnavbs2SpXrpx7gwSAUoj84Yr8AQA5kStckStQVvl4OgCUfOPHj1edOnVkjFFCQoJmzZqlnj176ptvvlHv3r09HV6hbdu2TePGjVOXLl1Uu3bty7Zft26dUlJS9PLLL6tbt27uDxAASjnyxwUlOX/s2LFDXl78RgnAc8gVF5TkXAG4E0UpXFaPHj3Upk0b6/GgQYMUERGhefPmlepEUVBHjx6VJIWFhRXbOs+cOcMvIACuWOSPC0py/vD39y+GaACg8MgVF5SEXMF3E3gCP42hwMLCwhQYGCgfH9ea5pkzZ/TUU0+pRo0a8vf3V4MGDfT666/LGCNJOnfunBo2bKiGDRvq3Llz1nInT55UZGSkrr32WmVmZkqSBg4cqPLly2v37t3q3r27ypUrp6ioKI0fP95a36Vs3LhRPXr0UEhIiMqXL68bb7xRq1evtubPmjVL/fr1kyR17drVOmR45cqVua6vS5cuiomJkSS1bdtWDofD5Roc8+fPV+vWrRUYGKhKlSrpvvvu08GDB13W4ezTrl271LNnTwUHB2vAgAF59mHv3r0aOnSoGjRooMDAQFWsWFH9+vXL9RDgzZs3q3PnzgoMDFT16tU1YcIEffzxx3I4HDnaL1myRNdff73KlSun4OBg9erVS1u3br3EaAJA8SB/2JM/JOmnn35S27ZtFRAQoLp162r69Om5trv4mlLp6ekaN26c6tWrp4CAAFWsWFEdO3bUihUrLrk9ACgu5Ap7coXzuk/btm3TvffeqwoVKqhjx46SLny3GDhwoKKjoxUQEKCqVavqoYce0okTJ3KsJ7/5BsgLR0rhspKSknT8+HEZY3T06FG9++67On36tO677z6rjTFGt912m3744QcNGjRILVu21LJly/TMM8/o4MGDeuuttxQYGKhPPvlE1113ncaMGaM333xTkjRs2DAlJSVp1qxZ8vb2ttaZmZmpW265Rddcc40mT56spUuXKjY2VhkZGRo/fnye8W7dulXXX3+9QkJC9Oyzz8rX11fTp09Xly5d9OOPP6p9+/bq1KmTHn/8cf3zn//U888/r0aNGkmS9e/FxowZowYNGmjGjBnWIcZ169aVdCHpPPjgg2rbtq0mTZqkhIQEvfPOO/r555+1ceNGl187MjIy1L17d3Xs2FGvv/66goKC8uzHunXr9Msvv+juu+9W9erVtWfPHr3//vvq0qWLtm3bZi178OBBK9mNHj1a5cqV04cffpjrr9+zZ89WTEyMunfvrtdee01nz57V+++/r44dO2rjxo35OrQYAPKL/OGZ/PHbb7/p5ptvVuXKlTV27FhlZGQoNjZWERERl33Oxo4dq0mTJunhhx9Wu3btlJycrPXr12vDhg266aabLrs8ABQUucIzucKpX79+qlevnl555RWrILdixQrt3r1bDz74oKpWraqtW7dqxowZ2rp1q1avXm1dxLwo+QawGCAPH3/8sZGU48/f39/MmjXLpe1XX31lJJkJEya4TL/zzjuNw+EwO3futKaNHj3aeHl5mVWrVpn58+cbSebtt992WS4mJsZIMo899pg1LSsry/Tq1cv4+fmZY8eOWdMlmdjYWOtx3759jZ+fn9m1a5c17dChQyY4ONh06tTJmubc9g8//FCg8Vi3bp01LS0tzVSpUsU0bdrUnDt3zpq+aNEiI8m89NJLOfo0atSofG3v7NmzOabFxcUZSebTTz+1pj322GPG4XCYjRs3WtNOnDhhwsPDjSQTHx9vjDEmJSXFhIWFmUceecRlnUeOHDGhoaE5pgNAYZE/ch8Pu/JH3759TUBAgNm7d681bdu2bcbb29tc/NGvVq1aJiYmxnrcokUL06tXr3xtBwCKglyR+3jYlStiY2ONJHPPPffkmJfb95B58+YZSWbVqlXWtILkGyAvnL6Hy5o6dapWrFihFStWaM6cOeratasefvhhLViwwGqzePFieXt76/HHH3dZ9qmnnpIxxuUOGmPHjlWTJk0UExOjoUOHqnPnzjmWcxo+fLj1f4fDoeHDhystLU3fffddru0zMzO1fPly9e3bV9HR0db0yMhI3Xvvvfrpp5+UnJxcqHHIzfr163X06FENHTpUAQEB1vRevXqpYcOG+vbbb3Ms8+ijj+Zr3YGBgdb/09PTdeLECV111VUKCwvThg0brHlLly5Vhw4d1LJlS2taeHh4jsN1V6xYocTERN1zzz06fvy49eft7a327dvrhx9+yG+3ASBfyB95c1f+yMzM1LJly9S3b1/VrFnTmt6oUSN17979ssuHhYVp69at+vPPP/PZEwAoGnJF3tz5XcNpyJAhOaZl/x5y/vx5HT9+XNdcc40kWd9DippvACeKUrisdu3aqVu3burWrZsGDBigb7/9Vo0bN7Z22tKF6x9FRUUpODjYZVnnIap79+61pvn5+emjjz5SfHy8UlJSrGsfXczLy8tlZy9J9evXl6Q8b6167NgxnT17Vg0aNMgxr1GjRsrKytL+/fvz3/nLcPYrt+01bNjQpd+S5OPjo+rVq+dr3efOndNLL71knTdfqVIlVa5cWYmJiUpKSnKJ4aqrrsqx/MXTnF8wbrjhBlWuXNnlb/ny5dbFFQGguJA/8uau/HHs2DGdO3dO9erVyzEvt21dbPz48UpMTFT9+vXVrFkzPfPMM9q8efNllwOAwiJX5M2d3zWc6tSpk2PayZMn9cQTTygiIkKBgYGqXLmy1c75PaSo+QZwoiiFAvPy8lLXrl11+PDhQv+SumzZMkkXKu9l6ddYf3//fN96+7HHHtPEiRPVv39/ffHFF1q+fLlWrFihihUrKisrq8Dbdi4ze/Zs69eo7H8LFy4s8DoBoCDIH4VXkPxRFJ06ddKuXbv00UcfqWnTpvrwww919dVX68MPP3T7tgFAIlcURWFyRfajopz69++vDz74QEOGDNGCBQu0fPlyLV26VJIK9T0EuBSKUiiUjIwMSdLp06clSbVq1dKhQ4eUkpLi0u7333+35jtt3rxZ48eP14MPPqhWrVrp4YcfdjnyxykrK0u7d+92mfbHH39IUp4X5K5cubKCgoK0Y8eOHPN+//13eXl5qUaNGpKU6y8mBeXsV27b27Fjh0u/C+rLL79UTEyM3njjDd1555266aab1LFjRyUmJuaIYefOnTmWv3ia82KJVapUsX6Nyv7XpUuXQscKAPlF/rjAXfmjcuXKCgwMzPVLWG7byk14eLgefPBBzZs3T/v371fz5s01duzYQsUDAIVBrrjAnd818nLq1Cl9//33GjVqlMaNG6fbb79dN910U46jyooj3wASRSkUQnp6upYvXy4/Pz/rkNmePXsqMzNTU6ZMcWn71ltvyeFwqEePHtayAwcOVFRUlN555x3NmjVLCQkJevLJJ3PdVvb1GWM0ZcoU+fr66sYbb8y1vbe3t26++WYtXLjQ5bDbhIQEffbZZ+rYsaNCQkIkSeXKlZOkHEWegmjTpo2qVKmiadOmKTU11Zq+ZMkSbd++Xb169Sr0ur29vXPckvbdd9+1bmXr1L17d8XFxWnTpk3WtJMnT2ru3Lk52oWEhOiVV15Renp6ju0dO3as0LECQH6QP/7irvzh7e2t7t2766uvvtK+ffus6du3b7eOHLiUi2/3Xb58eV111VUuMQKAO5Er/uLO7xp5cd6h8OLvIW+//XaOdkXJN4CTj6cDQMm3ZMkS61eIo0eP6rPPPtOff/6pUaNGWTvdW2+9VV27dtWYMWO0Z88etWjRQsuXL9fChQs1YsQI6yidCRMmaNOmTfr+++8VHBys5s2b66WXXtILL7ygO++8Uz179rS2GxAQoKVLlyomJkbt27fXkiVL9O233+r5559X5cqV84x3woQJWrFihTp27KihQ4fKx8dH06dPV2pqqiZPnmy1a9mypby9vfXaa68pKSlJ/v7+uuGGG1SlSpV8j42vr69ee+01Pfjgg+rcubPuuece6zattWvXzjMB5kfv3r01e/ZshYaGqnHjxoqLi9N3332nihUrurR79tlnNWfOHN1000167LHHVK5cOX344YeqWbOmTp48af1KExISovfff1/333+/rr76at19992qXLmy9u3bp2+//VbXXXddjkQPAEVB/sibO/PHuHHjtHTpUl1//fUaOnSoMjIy9O6776pJkyaXvT5U48aN1aVLF7Vu3Vrh4eFav369vvzyS5eLAQNAcSJX5M2duSIvISEh6tSpkyZPnqz0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1atu7VO/fn1Vr169WLfPyJEj1bNnT7d6SyWzPb766iu1bNlSffv2VaVKldS8eXO999571vzDhw/r1KlTbm0SEhKiyMjIYtkmbdq00Zo1a3TgwAFJ0n//+1/98MMP6t69u6SS1x5pZaf+MTExCg0NVcuWLa1lOnfuLB8fH23evNnjMRcnafvw4iqzPrq4yar/LY6y6mOLs5I+frgkJCTIZrMpNDTU26FkG+cT2XPw4EFFRESodu3aGjBggI4dO+btkAol+oLsWbdunSpVqqR69erpscce0x9//OHtkLyGc/gby+z4eMGCBapQoYIaNWqk5557TpcuXcpRuX75FeDZs2eVkpKisLAwt+lhYWHat29ffm2mSHA6nRo7dqzatm2rRo0aSZJOnTolu92e7sAgLCxMp06d8kKUBW/hwoXasWOHtm7dmm5eSWyPX3/9Ve+8846efPJJPf/889q6datGjx4tu92ugQMHWvXO6DNUHNvk2Wef1fnz51W/fn35+voqJSVFL730kgYMGCBJJa490spO/U+dOqVKlSq5zffz81O5cuVKRBsVlIz68OLoRn10cZNV/1scZdXHFmclffyQrj8D5ZlnntEDDzyg4OBgb4eTbZxPZC0yMlLz5s1TvXr1dPLkSU2aNEl/+tOftHv3bgUFBXk7vEKFviBr3bp10z333KNatWrp0KFDev7559W9e3fFxMTI19fX2+F5FOfwN5bZ8fGDDz6oGjVqKCIiQrt27dIzzzyj/fv364svvsh22fmWlML/GTlypHbv3l2i7+/+7bffNGbMGK1evVoBAQHeDqdQcDqdatmypf7xj39Ikpo3b67du3dr9uzZxfak6EYWLVqkBQsW6JNPPlHDhg21c+dOjR07VhERESWyPVB4lIQ+vKT10SWx/6WPLbmuXr2qfv36yRijd955x9vhIJ+lvtqxSZMmioyMVI0aNbRo0SINGTLEi5GhKLr//vut/zdu3FhNmjTRTTfdpHXr1qlTp05ejMzzSsLxX15k1j6pn2XbuHFjVa5cWZ06ddKhQ4d00003ZavsfLt9r0KFCvL19U33JPrTp08rPDw8vzZT6I0aNUpff/211q5dq6pVq1rTw8PDlZycrPj4eLfli2v7bN++XWfOnNGtt94qPz8/+fn5af369Xrrrbfk5+ensLCwEtUeklS5cmU1aNDAbdott9xi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gIAASdL777+voUOH6scff1SzZs00ZcoU/ec//9HKlSutMn7//XdVq1ZN+/fvV926db1VFQBAAblw4YLKly+v+fPnq2/fvpKkuLg4Va1aVcOGDdObb76pmjVrauzYsRo7dqymT5+uOXPmaPfu3fL39/dy9AAAT+jQoYPOnz+f6RcWkvT5559r+PDh1l0WDz74oBISEvTNN99Yy9x///1asWKF4uPjCzpkoFDhSimUCAcPHtQDDzyg2rVrKzg4WDVr1pQkHTt2TPv371eTJk2shJQktWrVym39//73v1q7dq3KlClj/dWvX1+S3G4DBAAUH4cOHVJycrIiIyOtaeXKlVO9evUyXL5v3766fPmyateuraFDh+rLL7/UtWvXPBUuAMBLWrRo4fb6u+++U6dOnVSlShUFBQXp4Ycf1h9//KFLly5Jkn7++We3sUWSoqKiPBYvUJiQlEKJ0Lt3b8XFxem9997T5s2btXnzZknXH0SYHRcuXFDv3r21c+dOt7+DBw+qXbt2BRk6AKCIcF09O2vWLAUGBmrEiBFq166drl696u3QAAAFKPWvsB45ckS9evVSkyZN9O9//1vbt2/XzJkzJWX/3AMoSUhKodj7448/tH//fr3wwgvq1KmTbrnlFp07d86aX69ePf30009KSkqypm3dutWtjFtvvVV79uxRzZo1dfPNN7v98VPgAFA83XTTTfL397e+yJCkc+fO6cCBA5muExgYqN69e+utt97SunXrFBMTo59++skT4QIACoHt27fL6XRq2rRpat26terWrasTJ064LXPLLbe4jS2SFBsb68kwgUKDpBSKvbJly6p8+fJ699139csvv+j777/Xk08+ac1/8MEH5XQ6NWzYMP38889auXKlXn/9dUmSzWaTJI0cOVJxcXF64IEHtHXrVh06dEgrV67U4MGDlZKS4pV6AQAKVpkyZTRkyBCNGzdO33//vXbv3q1BgwbJxyfjw6d58+Zp7ty52r17t3799VfNnz9fgYGBqlGjhocjBwB4y80336yrV6/q7bff1q+//qqPP/5Ys2fPdltm9OjRWrFihV5//XUdPHhQ//znP7VixQovRQx4F0kpFHs+Pj5auHChtm/frkaNGumJJ57Qa6+9Zs0PDg7WsmXLtHPnTjVr1kzjx4/XhAkTJMl6zlRERIQ2btyolJQUdenSRY0bN9bYsWMVGhqa6ckJAKDoe+211/SnP/1JvXv3VufOnXX77bene3aIS2hoqN577z21bdtWTZo00Xfffadly5apfPnyHo4aAOAtTZs21fTp0/XKK6+oUaNGWrBggaZOneq2TOvWrfXee+9pxowZatq0qVatWqUXXnjBSxED3sWv7wEZWLBggQYPHqyEhAQFBgZ6OxwAAAAAAIodP28HABQG//rXv1S7dm1VqVJF//3vf/XMM8+oX79+JKQAAAAAACggJKUASadOndKECRN06tQpVa5cWX379tVLL73k7bAAAAAAACi2uH0PAAAAAAAAHscTmgEAAAAAAOBxJKUAAAAAAADgcSSlAAAAAAAA4HEkpQAAAAAAAOBxJKUAAAAAAADgcSSlAAAAAAAA4HEkpQAAAAAAAOBxJKUAAAAAAADgcSSlAAAAAAAA4HEkpQAAAAAAAOBxJKUAAAAAAADgcSSlAAAAAAAA4HEkpQAAAAAAAOBxJKUAAAAAAADgcSSlUGzYbDZNnDjRI9tasWKFmjVrpoCAANlsNsXHx3tkuwCA/0O/7z01a9bUoEGDvB0GAHhdcR2LJk6cKJvNprNnzxbYNgCJpBSyYd68ebLZbG5/lSpVUseOHbV8+XJvh5dne/fu1cSJE3XkyJFsLf/HH3+oX79+CgwM1MyZM/Xxxx+rdOnSBRbfpk2bNHHixBJ/AgTAc+j33Xm638+Jf/zjH1qyZEmBlM34A8CbGIvcFeaxCMgLP28HgKJj8uTJqlWrlowxOn36tObNm6cePXpo2bJl6tWrl7fDy7W9e/dq0qRJ6tChg2rWrJnl8lu3blViYqL+/ve/q3PnzgUe36ZNmzRp0iQNGjRIoaGhBb49AHCh37/O0/1+TvzjH//Qfffdp7vuuivfy77R+LN//375+PDdJoCCx1h0XWEei4C8ICmFbOvevbtatmxpvR4yZIjCwsL06aefFukBIafOnDkjSfmaILp48SLfdAAodOj3rysu/X5+btPhcORLOQCQFcai64rLWASkxVdcyLXQ0FAFBgbKz889t3nx4kU99dRTqlatmhwOh+rVq6fXX39dxhhJ0uXLl1W/fn3Vr19fly9fttaLi4tT5cqV1aZNG6WkpEiSBg0apDJlyujXX39V165dVbp0aUVERGjy5MlWeTfy448/qnv37goODlaZMmXUqVMnxcbGWvPnzZunvn37SpI6duxoXRq8bt26DMvr0KGDBg4cKEm67bbbZLPZ3J6psXjxYrVo0UKBgYGqUKGCHnroIR0/ftytDFedDh06pB49eigoKEgDBgzIcHsTJ07UuHHjJEm1atWy4nNd5vvhhx/qjjvuUKVKleRwONSgQQO98847bmV8//338vHx0YQJE9ymf/LJJ7LZbOmWB4DM0O8XfL8v/d9zPPbt26d+/fopODhY5cuX15gxY3TlyhVrOZvNposXL+qjjz6y6uGKzVXG3r179eCDD6ps2bK6/fbbJUm7du3SoEGDVLt2bQUEBCg8PFyPPPKI/vjjD7cYbjT+ZPRMqV9//VV9+/ZVuXLlVKpUKbVu3VrffPNNpvUEgNxgLPLMWORy9uzZG45FQF5xpRSyLSEhQWfPnpUxRmfOnNHbb7+tCxcu6KGHHrKWMcbozjvv1Nq1azVkyBA1a9ZMK1eu1Lhx43T8+HG98cYbCgwM1EcffaS2bdtq/Pjxmj59uiRp5MiRSkhI0Lx58+Tr62uVmZKSom7duql169Z69dVXtWLFCkVHR+vatWuaPHlypvHu2bNHf/rTnxQcHKy//e1v8vf315w5c9ShQwetX79ekZGRateunUaPHq233npLzz//vG655RZJsv5Na/z48apXr57effdd61Lim266SdL1wWXw4MG67bbbNHXqVJ0+fVozZszQxo0b9eOPP7p9q3Ht2jV17dpVt99+u15//XWVKlUqw+3dc889OnDggD799FO98cYbqlChgiSpYsWKkqR33nlHDRs21J133ik/Pz8tW7ZMI0aMkNPp1MiRIyVJd9xxh0aMGKGpU6fqrrvu0q233qqTJ0/q8ccfV+fOnTV8+PAbvu8ASi76fc/3+6n169dPNWvW1NSpUxUbG6u33npL586d07/+9S9J0scff6xHH31UrVq10rBhwyTJis2lb9++qlOnjv7xj39YJ1KrV6/Wr7/+qsGDBys8PFx79uzRu+++qz179ig2NlY2my3L8Set06dPq02bNrp06ZJGjx6t8uXL66OPPtKdd96pzz//XHfffXeW9QWAjDAWFe6xCMgzA2Thww8/NJLS/TkcDjNv3jy3ZZcsWWIkmSlTprhNv++++4zNZjO//PKLNe25554zPj4+ZsOGDWbx4sVGknnzzTfd1hs4cKCRZB5//HFrmtPpND179jR2u93873//s6ZLMtHR0dbru+66y9jtdnPo0CFr2okTJ0xQUJBp166dNc217bVr1+aoPbZu3WpNS05ONpUqVTKNGjUyly9ftqZ//fXXRpKZMGFCujo9++yz2drea6+9ZiSZw4cPp5t36dKldNO6du1qateu7Tbt4sWL5uabbzYNGzY0V65cMT179jTBwcHm6NGj2YoBQMlCv59xe3iq34+OjjaSzJ133uk2fcSIEUaS+e9//2tNK126tBk4cGCmZTzwwAPp5mU0dnz66adGktmwYYM17UbjT40aNdy2O3bsWCPJ/Oc//7GmJSYmmlq1apmaNWualJSUG1UZANJhLMq4PQrjWATkBbfvIdtmzpyp1atXa/Xq1Zo/f746duyoRx99VF988YW1zLfffitfX1+NHj3abd2nnnpKxhi3X8qYOHGiGjZsqIEDB2rEiBFq3759uvVcRo0aZf3fZrNp1KhRSk5O1nfffZfh8ikpKVq1apXuuusu1a5d25peuXJlPfjgg/rhhx90/vz5XLVDRrZt26YzZ85oxIgRCggIsKb37NlT9evXz/D2hcceeyzP2w0MDLT+7/oWqX379vr111+VkJBgzStVqpTmzZunn3/+We3atdM333yjN954Q9WrV89zDACKL/r9zHmi33dd8ery+OOPS7re5tmV0dWwqceOK1eu6OzZs2rdurUkaceOHTmK0eXbb79Vq1atrFsEJalMmTIaNmyYjhw5or179+aqXABgLMpcURmLgBshKYVsa9WqlTp37qzOnTtrwIAB+uabb9SgQQOrc5ako0ePKiIiQkFBQW7rui5FPXr0qDXNbrfrgw8+0OHDh5WYmKgPP/xQNpst3XZ9fHzcOnVJqlu3riRl+hOq//vf/3Tp0iXVq1cv3bxbbrlFTqdTv/32W/YrnwVXvTLaXv369d3qLUl+fn6qWrVqnre7ceNGde7cWaVLl1ZoaKgqVqyo559/XpLcklKS1LZtWz322GPasmWLunbtqkceeSTP2wdQvNHvZ84T/X6dOnXcXt90003y8fHJ9s+HS9efB5VWXFycxowZo7CwMAUGBqpixYrWcmnHjuw6evRopm3vmg8AucFYlLmiMhYBN0JSCrnm4+Ojjh076uTJkzp48GCuyli5cqWk69/U5raMosjhcOT5p7QPHTqkTp066ezZs5o+fbq++eYbrV69Wk888YQk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hqlq1aoaNmyYvvnmG+sA+vLly27rHTlyxEpILVy4UCtXrtQDDzyglStXauHChZKuJ6aOHDni6SoBAApASkqKZs2apcjISJ04cUKSVLZsWX3xxRe6cOGC/P39ZbPZrOUvX76sRYsWqWzZskpMTLROVu12u06fPq2yZctq2bJlcjgc1smldP3k9cqVK3rzzTcVFRWla9euWSe0X331lRwOhxo2bKhJkybJ4XDIbrdr0qRJatiwoRwOh5YtW6bWrVvL4XDI4XBoypQp6tWrl6ZOnao2bdooISFBkZGRWrx4sVq3bq0pU6aoYcOGKlWqlFu5ktS6dWvNmDFDLVq00K233qoZM2YoKipKDodDM2fO1KxZs9S6dWvFx8erTZs2mjp1qjp16qRz587JZrMpPDxcUVFRWrRokYYMGaKvvvrKqmfLli117tw5lS1bVkuWLNHHH39slV2mTBmFhoZq48aNioyMTBfjlClTFBUVpXfeecftapy071VUVJQmTZqkZcuWqU2bNpoxY4ZVh6+//lqTJk26YTn5IatYWrdurbVr16p169ZWXK73OKt65iWWnLRp2vXq16+vuXPnqk2bNlq8eLGioqL0wQcfqHbt2jp9+rT8/f1VpkwZde/eXeXLl1evXr20cOFCK5k7YcIEa9v169dXQkKCypYtq4SEBNWvX9/aj+12u8qWLaurV6+qWbNmbvug3W7PdB9OW5eM3oOoqCglJyfLbrcrNDRUPj4+mj59uvWZat26tex2u5YsWSK73S673S4fHx/Z7Xa99957mjt3rrW/uj6//v7+OnfunHWbos1mk7+/v3U7q6vM1EltSdb2UlJS1KZNGy1dutSaZ7PZ3N6PyMhI66o6V9LbVUZB7sfFRbZv30tKSlJSUpL1+vz58/kSwNGjR/OlnMKsJNQRKIk89dkuan1IfowXc+bMkST17dvX7fkV0vUB/r777tOnn36qOXPmaOzYsda8IUOGSLp+hVR4eLjbeuHh4XI4HEpKStKQIUO0Zs2aHMeVWlF7X1Cw2B8Kn5L6nhS1eud1zNi1a5dOnTqltm3bWtOGDBmib775Rk6nUx07dnTr71NSUvTNN9/oz3/+sxYtWqSaNWvqv//9r5KTk6119+3b5xaTJLVr107ff/+9li1bplatWikmJkYdOnTQ999/r9OnT2vXrl1q3ry5du/eba27e/du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MiNHjrRep6SkmIiICDN16lQvRlW4pe1zStJxWUEo6ee2BaGknS/nt6Jw/u31Z0q5LiMuV66cJGn79u26evWqOnfubC1Tv359Va9eXTExMZKkmJgYNW7cWGFhYdYyXbt21fnz560samGXkpKihQsX6uLFi4qKiiox9R45cqR69uzpVk+pZLzvBw8eVEREhGrXrq0BAwZYt6MU97p/9dVXatmypfr27atKlSqpefPmeu+996z5hw8f1qlTp9zqHxISosjISLf6h4aGqmXLltYynTt3lo+PjzZv3uy5yuRBcnKy5s+fr0ceeUQ2m63Yv+/InNPp1MMPP6xx48apYcOG3g6n0HA6nfrmm29Ut25dde3aVZUqVVJkZOQNb38sKdq0aaOvvvpKx48flzFGa9eu1YEDB9SlSxdvh+ZRuTlmLCnStk1mywQHB8vPz89TYXlUcnKytm/f7rY/+Pj4qHPnziVuf8iLknJcVlBK6rltQSip58v5rSicf3s1KeV0OjV27Fi1bdtWjRo1kiSdOnVKdrtdoaGhbsuGhYXp1KlT1jKpG8Y13zWvMPvpp59UpkwZORwODR8+XF9++aUaNGhQ7OstSQsXLtSOHTs0derUdPOKe/0jIyOtS+ffeecdHT58WH/605+UmJhY7Ov+66+/6p133lGdOnW0cuVKPfbYYxo9erQ++ugjSf8Xf0b1S13/SpUquc338/NTuXLlCn39XZYsWaL4+HgNGjRIUvHf55G5V155RX5+fho9erS3QylUzpw5owsXLujll19Wt27dtGrVKt1999265557tH79em+H51Vvv/22GjRooKpVq8put6tbt26aOXOm2rVr5+3QPCa3x4wlQUZtk9bZs2f197//vVjfXnX27FmlpKTc8HgCWSspx2UFoSSe2xaEkny+nN+Kyvm3V78qGTlypHbv3u32bJ3irl69etq5c6cSEhL0+eefa+DAgSXiYPu3337TmDFjtHr16mL/bJCMdO/e3fp/kyZNFBkZqRo1amjRokUKDAz0YmQFz+l0qmXLlvrHP/4hSWrevLl2796t2bNna+DAgV6OznPmzp2r7t27l6jnByG97du3a8aMGdqxY4dsNpu3wylUnE6nJKlPnz564oknJEnNmjXTpk2bNHv2bLVv396b4XnV22+/rdjYWH311VeqUaOGNmzYoJEjRyoiIiLdN5/FVUk8ZsyurNrm/Pnz6tmzpxo0aKCJEyd6NjigBKGfyh8l9Xw5vxWl82+vXSk1atQoff3111q7dq2qVq1qTQ8PD1dycrLi4+Pdlj99+rTCw8OtZdI+Fd712rVMYWW323XzzTerRYsWmjp1qpo2baoZM2YU+3pv375dZ86c0a233io/Pz/5+flp/fr1euutt+Tn56ewsLBiXf+0QkNDVbduXf3yyy/F/r2vXLmyGjRo4DbtlltusW5fdMWfUf1S1z/tQ0qvXbumuLi4Ql9/STp69Ki+++47Pfroo9a04v6+I2P/+c9/dObMGVWvXt3qC48ePaqnnnpKNWvW9HZ4XlWhQgX5+fndsL8oiS5fvqznn39e06dPV+/evdWkSRONGjVK/fv31+uvv+7t8DwiL8eMxV1mbeOSmJiobt26KSgoSF9++aX8/f29EKVnVKhQQb6+vjc8nkDWSsJxWUEoqee2BaGkni/nt6J0/u3xpJQxRqNGjdKXX36p77//XrVq1XKb36JFC/n7+2vNmjXWtP379+vYsWOKioqSJEVFRemnn35y6wxXr16t4ODgdAezhZ3T6VRSUlKxr3enTp30008/aefOndZfy5YtNWDAAOv/xbn+aV24cEGHDh1S5cqVi/1737Zt23Q/jXvgwAHVqFFDklSrVi2Fh4e71f/8+fPavHmzW/3j4+O1fft2a5nvv/9eTqdTkZGRHqhF3nz44YeqVKmSevbsaU0r7u87Mvbwww9r165dbn1hRESExo0bp5UrV3o7PK+y2+267bbbbthflERXr17V1atX5ePjfsjm6+trXV1WXOXHMWNxlVXbSNfH0i5dushut+urr74q9N+U55XdbleLFi3c9gen06k1a9YU+/0hP5WE47L8xLltwSsp58v5rUidf+fbI9Oz6bHHHjMhISFm3bp15uTJk9bfpUuXrGWGDx9uqlevbr7//nuzbds2ExUVZaKioqz5165dM40aNTJdunQxO3fuNCtWrDAVK1Y0zz33nKerkyPPPvusWb9+vTl8+LDZtWuXefbZZ43NZjOrVq0yxhTfemcm9dP/jSne9X/qqafMunXrzOHDh83GjRtN586dTYUKFcyZM2eMMcW77lu2bDF+fn7mpZdeMgcPHjQLFiwwpUqVMvPnz7eWefnll01oaKhZunSp2bVrl+nTp4+pVauWuXz5srVMt27dTPPmzc3mzZvNDz/8YOrUqWMeeOABb1QpR1JSUkz16tXNM888k25ecX7fS7LExETz448/mh9//NFIMtOnTzc//vijOXr0aIbLl6Rf38uqbb744gvj7+9v3n33XXPw4EHz9ttvG19fX/Of//zHy5EXrKzapX379qZhw4Zm7dq15tdffzUffvihCQgIMLNmzfJy5AUrP44Zi6us2iYhIcFERkaaxo0bm19++cVtmWvXrnk5+oKzcOFC43A4zLx588zevXvNsGHDTGhoqNsvRyHrPqc4H5flt5J8blsQOF8uWIX1/NvjSSlJGf59+OGH1jKXL182I0aMMGXLljWlSpUyd999tzl58qRbOUeOHDHdu3c3gYGBpkKFCuapp54q9D9x+8gjj5gaNWoYu91uKlasaDp16mR9wIwpvvXOTNoPRXGuf//+/U3lypWN3W43VapUMf379ze//PKLNb84190YY5YtW2YaNWpkHA6HqV+/vnn33Xfd5judTvPiiy+asLAw43A4TKdOncz+/fvdlvnjjz/MAw88YMqUKWOCg4PN4MGDTWJioierkSsrV640ktLVx5ji/76XVGvXrs1wnBs4cGCGy5ekpFR22mbu3Lnm5ptvNgEBAaZp06ZmyZIl3gvYQ7Jql5MnT5pBgwaZiIgIExAQYOrVq2emTZtmnE6ndwMvYPl1zFgcZdU2me1Tkszhw4e9GntBe/vtt0316tWN3W43rVq1MrGxsd4OqdDJqs8pzsdl+a0kn9sWBM6XC1ZhPf+2GWNM/l13BQAAAAAAAGTNaw86BwAAAAAAQMlFUgoAAAAAAAAeR1IKAAAAAAAAHkdSCgAAAAAAAB5HUgoAAAAAAAAeR1IKAAAAAAAAHkdSCgAAAAAAAB5HUgoAAAAAAAAeR1IKAADAAyZOnKhmzZp5OwwAgId06NBBY8eO9XYYQKFGUgolCgMDACAjNWvW1Jtvvplv5dlsNi1ZssRt2tNPP601a9bk2zYAAACKOj9vBwAAAFAUpKSkyGazyccnd9/plSlTRmXKlMnnqAAAAIourpRCiTFo0CCtX79eM2bMkM1mk81m06FDhzRkyBDVqlVLgYGBqlevnmbMmGGtc+XKFTVs2FDDhg2zph06dEhBQUH64IMPvFENAEAudOjQQaNGjdKoUaMUEhKiChUq6MUXX5QxRh06dNDRo0f1xBNPWOODJM2bN0+hoaH66quv1KBBAzkcDh07dkxbt27Vn//8Z1WoUEEhISFq3769duzYYW2rZs2akqS7775bNpvNep329j2n06nJkyeratWqcjgcatasmVasWOGpJgEAeMC1a9cyHHsAXEdSCiXGjBkzFBUVpaFDh+rkyZM6efKkqlatqqpVq2rx4sXau3evJkyYoOeff16LFi2SJAUEBGjBggX66KOPtHTpUqWkpOihhx7Sn//8Zz3yyCNerhEAICc++ugj+fn5acuWLZoxY4amT5+u999/X1988YWqVq2qyZMnW+ODy6VLl/TKK6/o/fff1549e1SpUiUlJiZq4MCB+uGHHxQbG6s6deqoR48eSkxMlCRt3bpVkvThhx/q5MmT1uu0ZsyYoWnTpun111/Xrl271LVrV9155506ePBgwTcGAMAjMht7AFzH7XsoMUJCQmS321WqVCmFh4db0ydNmmT9v1atWoqJidGiRYvUr18/SVKzZs00ZcoUPfroo7r//vt19OhRff311x6PHwCQN9WqVdMbb7whm82mevXq6aefftIbb7yhoUOHytfXV0FBQW7jgyRdvXpVs2bNUtOmTa1pd9xxh9sy7777rkJDQ7V+/Xr16tVLFStWlCSFhoamKy+1119/Xc8884zuv/9+SdIrr7yitWvX6s0339TMmTPzq9oAAC+60dgDgCulAM2cOVMtWrRQxYoVVaZMGb377rs6duyY2zJPPfWU6tatq3/+85/64IMPVL58eS9FCwDIrdatW1u35klSVFSUDh48qJSUlEzXsdvtatKkidu006dPa+jQoapTp45CQkIUHBysCxcupBs7buT8+fM6ceKE2rZt6za9bdu2+vnnn7NdDgCgcMvN2AOUJCSlUKItXLhQTz/9tIYMGaJVq1Zp586dGjx4sJKTk92WO3PmjA4cOCBfX19uqwCAEiQwMNDtZEKSBg4cqJ07d2rGjBnatGmTdu7cqfLly6cbOwAAAHBjJKVQotjtdrdvJTZu3Kg2bdpoxIgRat68uW6++WYdOnQo3XqPPPKIGjdurI8++kjPPPMM32IDQBG0efNmt9eu50H5+vqmGx9uZOPGjRo9erR69Oihhg0byuFw6OzZs27L+Pv737C84OBgRUREaOPGjenKbtCgQTZrBAAo7G409gAgKYUSpmbNmtq8ebOOHDmis2fPqk6dOtq2bZtWrlypAwcO6MUXX0z3QNqZM2cqJiZGH330kQYMGKC77rpLAwYM4BtxAChijh07pieffFL79+/Xp59+qrfffltjxoyRdH182LBhg44fP54uwZRWnTp19PHHH+vnn3/W5s2bNWDAAAUGBrotU7NmTa1Zs0anTp3SuXPnMixn3LhxeuWVV/TZZ59p//79evbZZ7Vz504rJgBA0XejsQcASSmUME8//bR8fX3VoEEDVaxYUV27dtU999yj/v37KzIyUn/88YdGjBhhLb9v3z6NGzdOs2bNUrVq1SRJs2bN0tmzZ/Xiiy96qxoAgFz4y1/+osuXL6tVq1YaOXKkxowZo2HDhkmSJk+erCNHjuimm26yHlSemblz5+rcuXO69dZb9fDDD2v06NGqVKmS2zLTpk3T6tWrVa1aNTVv3jzDckaPHq0nn3xSTz31lBo3bqwVK1boq6++Up06dfKnwgAAr7vR2ANAshljjLeDAAAAKEgdOnRQs2bN9Oabb3o7FAAAAPx/XCkFAAAAAAAAjyMpBQAAAAAAAI/j9j0AAAAAAAB4HFdKAQAAAAAAwONISgEAAAAAAMDjSEoBAAAAAADA40hKAQAAAAAAwONISgEAAAAAAMDjSEoBAAAAAADA40hKAQAAAAAAwONISgEAAAAAAMDjSEoBAAAAAADA40hKAQAAAAAAwONISgEAAAAAAMDjSEoBAAAAAADA40hKAQAAAAAAwONISgEAAAAAAMDjSEqhSLLZbJo4caJHtrVixQo1a9ZMAQEBstlsio+PL7BtzZs3TzabTUeOHCmwbQBAcVVcx4bCwJNtCwAASg6SUnDjSoqk/qtUqZI6duyo5cuXezu8PNu7d68mTpyY7aTPH3/8oX79+ikwMFAzZ87Uxx9/rNKlSxdskDl06dIlTZw4UevWrct1GZs2bdLEiROL/UkVgNxhbHBXFMYGAACAosDP2wGgcJo8ebJq1aolY4xOnz6tefPmqUePHlq2bJl69erl7fBybe/evZo0aZI6dOigmjVrZrn81q1blZiYqL///e/q3LlzwQeYC5cuXdKkSZMkSR06dMhVGZs2bdKkSZM0aNAghYaG5l9wAIoVxobrisLYAAAAUBSQlEKGunfvrpYtW1qvhwwZorCwMH366adF+sQjp86cOSNJ+ZqouXjxIt+oAyiSGBuuY2wAAADIH9y+h2wJDQ1VYGCg/Pzc85gXL17UU089pWrVqsnhcKhevXp6/fXXZYyRJF2+fFn169dX/fr1dfnyZWu9uLg4Va5cWW3atFFKSookadCgQSpTpox+/fVXde3aVaVLl1ZERIQmT55slXcjP/74o7p3767g4GCVKVNGnTp1UmxsrDV/3rx56tu3rySpY8eO1i0omd321qFDBw0cOFCSdNttt8lms2nQoEHW/MWLF6tFixYKDAxUhQoV9NBDD+n48eNuZbjqdOjQIfXo0UNBQUEaMGBAlnVJbdu2beratasqVKigwMBA1apVS4888ogk6ciRI6pYsaIkadKkSVadXM/92LVrlwYNGqTatWsrICBA4eHheuSRR/THH39Y5U+cOFHjxo2TJNWqVcsqg+daAcgKY4NnxoaJEyfKZrPpwIEDeuihhxQSEqKKFSvqxRdflDFGv/32m/r06aPg4GCFh4dr2rRp6cpISkpSdHS0br75ZjkcDlWrVk1/+9vflJSUlG65J554QhUrVlRQUJDuvPNO/f77727LfP7557LZbFq/fn267cyZM0c2m027d+/OtD4AAAAuXCmFDCUkJOjs2bMyxujMmTN6++23deHCBT300EPWMsYY3XnnnVq7dq2GDBmiZs2aaeXKlRo3bpyOHz+uN954Q4GBgfroo4/Utm1bjR8/XtOnT5ckjRw5UgkJCZo3b558fX2tMlNSUtStWze1bt1ar776qlasWKHo6Ghdu3ZNkydPzjTePXv26E9/+pOCg4P1t7/9Tf7+/pozZ446dOig9evXKzIyUu3atdPo0aP11ltv6fnnn9ctt9wiSda/aY0fP1716tXTu+++a92yctNNN0m6fhIzePBg3XbbbZo6dapOnz6tGTNmaOPGjfrxxx/dvj2/du2aunbtqttvv12vv/66SpUqle334cyZM+rSpYsqVqyoZ599VqGhoTpy5Ii++OILSVLFihX1zjvv6LHHHtPdd9+te+65R5LUpEkTSdLq1av166+/avDgwQoPD9eePXv07rvvas+ePYqNjZXNZtM999yjAwcO6NNPP9Ubb7yhChUqWGUDQGqMDd4dG/r3769bbrlFL7/8sr755htNmTJF5cqV05w5c3THHXfolVde0YIFC/T000/rtttuU7t27SRJTqdTd955p3744QcNGzZMt9xyi3766Se98cYbOnDggJYsWWJt49FHH9X8+fP14IMPqk2bNvr+++/Vs2dPtzh69uypMmXKaNGiRWrfvr3bvM8++0wNGzZUo0aNsqwPAACADJDKhx9+aCSl+3M4HGbevHluyy5ZssRIMlOmTHGbft999xmbzWZ++eUXa9pzzz1nfHx8zIYNG8zixYuNJPPmm2+6rTdw4EAjyTz++OPWNKfTaXr27Gnsdrv53//+Z02XZKKjo63Xd911l7Hb7ebQoUPWtBMnTpigoCDTrl07a5pr22vXrs1Re2zdutWalpycbCpVqmQaNWpkLl++bE3/+uuvjSQzYcKEdHV69tlnc7S9w4cPG2OM+fLLL9NtP63//e9/6drD5dKlS+mmffrpp0aS2bBhgzXttddec9suAKTG2JBxe3hqbIiOjjaSzLBhw6xp165dM1WrVjU2m828/PLL1vRz586ZwMBAM3DgQGvaxx9/bHx8fMx//vMft3Jnz55tJJmNGzcaY4zZuXOnkWRGjBjhttyDDz6Yrm0feOABU6lSJXPt2jVr2smTJ42Pj4+ZPHlytuoFAADA7XvI0MyZM7V69WqtXr1a8+fPV8eOHfXoo49aV+hI0rfffitfX1+NHj3abd2nnnpKxhi3X2SaOHGiGjZsqIEDB2rEiBFq3759uvVcRo0aZf3fZrNp1KhRSk5O1nfffZfh8ikpKVq1apXuuusu1a5d25peuXJlPfjgg/rhhx90/vz5XLVDRrZt26YzZ85oxIgRCggIsKb37NlT9evX1zfffJNuncceeyxX23J9q/7111/r6tWrOV4/MDDQ+v+VK1d09uxZtW7dWpK0Y8eOXMUEoORibMicJ8aGRx991Pq/r6+vWrZsKWOMhgwZYk0PDQ1VvXr19Ouvv1rTFi9erFtuuUX169fX2bNnrb877rhDkrR27VpJ1987Seneg7Fjx6aLpX///jpz5ozbbY6ff/65nE6n+vfvn6N6AQCAkoukFDLUqlUrde7cWZ07d9aAAQP0zTffqEGDBtZJgCQdPXpUERERCgoKclvXdcvD0aNHrWl2u10ffPCBDh8+rMTERH344Yey2Wzptuvj4+N28iBJdevWlaRMn3H0v//9T5cuXVK9evXSzbvlllvkdDr122+/Zb/yWXDVK6Pt1a9f363ekuTn56eqVavmalvt27fXvffeq0mTJqlChQrq06ePPvzww3TPAMlMXFycxowZo7CwMAUGBqpixYqqVauWpOu34QBATjA2ZM4TY0P16tXdXoeEhCggIMC67Tr19HPnzlmvDx48qD179qhixYpuf642dD24/ejRo/Lx8bFuR3TJqE7dunVTSEiIPvvsM2vaZ599pmbNmlnlAgAAZIWkFLLFx8dHHTt21MmTJ3Xw4MFclbFy5UpJ16/YyW0ZRZHD4ZCPT+4+ajabTZ9//rliYmI0atQoHT9+XI888ohatGihCxcuZLl+v3799N5772n48OH64osvtGrVKq1YsULS9WeMAEBeMDbkXm7GhtTP2brRNEluD4F3Op1q3LixdZVb2r8RI0bkLHhdj/+uu+7Sl19+qWvXrun48ePauHEjV0kBAIAcISmFbLt27ZokWcmQGjVq6MSJE0pMTHRbbt++fdZ8l127dmny5MkaPHiwmjdvrkcffTTDK3WcTqfbLQeSdODAAUlSzZo1M4yrYsWKKlWqlPbv359u3r59++Tj46Nq1apJUobfwOeUq14ZbW///v1u9c4vrVu31ksvvaRt27ZpwYIF2rNnjxYuXCgp8zqdO3dOa9as0bPPPqtJkybp7rvv1p///Od0VxvcqAwAyApjw3XeGBuy66abblJcXJw6depkXemW+s91JVSNGjXkdDp16NAht/UzqpN0/Ra+s2fPas2aNVq8eLGMMSSlAABAjpCUQrZcvXpVq1atkt1ut27B6NGjh1JSUvTPf/7Tbdk33nhDNptN3bt3t9YdNGiQIiIiNGPGDM2bN0+nT5/WE088keG2UpdnjNE///lP+fv7q1OnThku7+vrqy5dumjp0qVut3GcPn1an3zyiW6//XYFBwdLkkqXLi1Jio+Pz1U7SFLLli1VqVIlzZ492+02uuXLl+vnn39O9ytFeXHu3Ll0P3nerFkzSbK27frFprR1cn17nnb9N998M9128qNdAJQ8jA3/x5NjQ07169dPx48f13vvvZdu3uXLl3Xx4kVJst6bt956y22ZjMYNSercubPKlSunzz77TJ999platWpl3SIOAACQHX7eDgCF0/Lly61vtc+cOaNPPvlEBw8e1LPPPmsdxPfu3VsdO3bU+PHjdeTIETVt2lSrVq3S0qVLNXbsWOuZFFOmTNHOnTu1Zs0aBQUFqUmTJpowYYJeeOEF3XffferRo4e13YCAAK1YsUIDBw5UZGSkli9frm+++UbP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",
"text/plain": [
"<Figure size 1200x800 with 14 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Просачивание данных: Высокая корреляция (0.91) между столбцами 'rad' и 'tax'\n",
"Просачивание данных: Высокая корреляция (0.91) между столбцами 'tax' и 'rad'\n",
"Обучающая выборка: (300, 15)\n",
"Контрольная выборка: (100, 15)\n",
"Тестовая выборка: (101, 15)\n",
"tax_binned\n",
"Low 171\n",
"High 82\n",
"Medium 37\n",
"Very Low 10\n",
"Very High 0\n",
"Name: count, dtype: int64\n",
"Обучающая выборка после undersampling: (40, 15)\n",
"tax_binned\n",
"Very Low 10\n",
"Low 10\n",
"Medium 10\n",
"High 10\n",
"Very High 0\n",
"Name: count, dtype: int64\n"
]
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"from sklearn.model_selection import train_test_split\n",
"from imblearn.under_sampling import RandomUnderSampler\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"df = pd.read_csv(\n",
" \"data/boston_housing.csv\"\n",
") \n",
"\n",
"# Проверка на пропуски и \"зашумленные\" столбцы (если процент пустых значений больше 10%)\n",
"noisy_features = [] # Список для хранения столбцов с большим количеством пропусков\n",
"for col in df.columns: # Проходим по каждому столбцу\n",
" if (\n",
" df[col].isnull().sum() / len(df) > 0.1\n",
" ): # Проверяем, если доля пропусков больше 10%\n",
" noisy_features.append(col) # Добавляем столбец в список\n",
"\n",
"# Проверка на смещение (относительно нормального распределения)\n",
"skewness = df.select_dtypes(\n",
" include=[np.number]\n",
").skew() # Вычисляем коэффициент смещения для числовых столбцов\n",
"\n",
"skewed_features = skewness[\n",
" abs(skewness) > 1\n",
"].index.tolist() # Находим сильно смещенные столбцы\n",
"\n",
"# Поиск выбросов (сильно отличающиеся значения)\n",
"for col in df.select_dtypes(\n",
" include=[\"number\"]\n",
").columns: # Проходим по числовым столбцам\n",
" Q1 = df[col].quantile(0.25) # Находим первый квартиль (значение, ниже которого 25% данных)\n",
" Q3 = df[col].quantile(\n",
" 0.75\n",
" ) # Находим третий квартиль (значение, ниже которого 75% данных)\n",
" IQR = Q3 - Q1 # Вычисляем интерквартильный размах \n",
" lower_bound = Q1 - 1.5 * IQR # Вычисляем нижнюю границу\n",
" upper_bound = Q3 + 1.5 * IQR # Вычисляем верхнюю границу\n",
" outliers = df[col][\n",
" (df[col] < lower_bound) | (df[col] > upper_bound)\n",
" ] # Находим выбросы\n",
" print(f\"Выбросы в столбце '{col}':\\n{outliers}\\n\") # Выводим выбросы\n",
"\n",
"# Визуализация выбросов\n",
"numeric_cols = df.select_dtypes(\n",
" include=[\"number\"]\n",
").columns # Получаем список числовых столбцов\n",
"plt.figure(figsize=(12, 8)) # Устанавливаем размер графика\n",
"\n",
"for i, col in enumerate(\n",
" numeric_cols, 1\n",
"): # Проходим по числовым столбцам для построения графиков\n",
" plt.subplot(\n",
" len(numeric_cols) // 3 + 1, 3, i\n",
" ) # Создаем подграфик для каждого столбца\n",
" sns.boxplot(data=df, x=col) # Строим боксплот для столбца\n",
" plt.title(f\"Boxplot for {col}\") # Устанавливаем заголовок для подграфик\n",
"\n",
"plt.tight_layout() # Упорядочиваем графики\n",
"plt.show() # Отображаем графики\n",
"\n",
"# Проверка на корреляцию (насколько одна переменная изменится (и зависит) от изменения другой) между признаками\n",
"if len(df.columns) >= 2: # Проверяем, что в датасете более одного столбца\n",
" for col1 in df.columns: # Проходим по всем столбцам\n",
" for col2 in df.columns: # Сравниваем с каждым другим столбцом\n",
" if col1 != col2: # Проверяем, что это разные столбцы\n",
" correlation = df[col1].corr(df[col2]) # Вычисляем корреляцию\n",
" if abs(correlation) > 0.9: # Проверяем, превышает ли корреляция 0.9\n",
" print(\n",
" f\"Просачивание данных: Высокая корреляция ({correlation:.2f}) между столбцами '{col1}' и '{col2}'\"\n",
" ) # Выводим информацию о высокой корреляции\n",
"\n",
"\n",
"# Функция для разбиения на train/val/test\n",
"def split_stratified_into_train_val_test(\n",
" df_input,\n",
" stratify_colname=\"y\",\n",
" frac_train=0.6,\n",
" frac_val=0.15,\n",
" frac_test=0.25,\n",
" random_state=None,\n",
"):\n",
" if frac_train + frac_val + frac_test != 1.0: # Проверяем, что доли составляют 1\n",
" raise ValueError(\n",
" \"fractions %f, %f, %f do not add up to 1.0\"\n",
" % (frac_train, frac_val, frac_test)\n",
" ) # Генерируем ошибку, если это не так\n",
"\n",
" if (\n",
" stratify_colname not in df_input.columns\n",
" ): # Проверяем, есть ли колонка для стратификации\n",
" raise ValueError(\n",
" \"%s is not a column in the dataframe\" % (stratify_colname)\n",
" ) # Генерируем ошибку, если колонки нет\n",
"\n",
" X = df_input # Храним все данные\n",
" y = df_input[[stratify_colname]] # Храним целевую переменную\n",
"\n",
" df_train, df_temp, y_train, y_temp = (\n",
" train_test_split( # Разбиваем данные на обучающие и временные\n",
" X, y, stratify=y, test_size=(1.0 - frac_train), random_state=random_state\n",
" )\n",
" )\n",
"\n",
" relative_frac_test = frac_test / (\n",
" frac_val + frac_test\n",
" ) # Вычисляем относительную долю тестового набора\n",
" df_val, df_test, y_val, y_test = (\n",
" train_test_split( # Разбиваем временные данные на валидационные и тестовые\n",
" df_temp,\n",
" y_temp,\n",
" stratify=y_temp,\n",
" test_size=relative_frac_test,\n",
" random_state=random_state,\n",
" )\n",
" )\n",
"\n",
" assert len(df_input) == len(df_train) + len(df_val) + len(\n",
" df_test\n",
" ) # Проверяем, что все данные были распределены\n",
"\n",
" return df_train, df_val, df_test # Возвращаем разбитые данные\n",
"\n",
"\n",
"# целевой признак 'tax'\n",
"df[\"tax_binned\"] = pd.cut( # Разбиваем значения 'tax' на категории\n",
" df[\"tax\"],\n",
" bins=[0, 200, 400, 600, 800, 1000],\n",
" labels=[\"Very Low\", \"Low\", \"Medium\", \"High\", \"Very High\"],\n",
")\n",
"df = df.dropna() # Удаляем строки с пропусками\n",
"\n",
"# Разделение данных\n",
"df_train, df_val, df_test = (\n",
" split_stratified_into_train_val_test( # Разбиваем данные на обучающие, валидационные и тестовые\n",
" df,\n",
" stratify_colname=\"tax_binned\",\n",
" frac_train=0.60,\n",
" frac_val=0.20,\n",
" frac_test=0.20,\n",
" )\n",
")\n",
"\n",
"# Выводим размеры разбитых выборок\n",
"print(\"Обучающая выборка: \", df_train.shape)\n",
"print(\"Контрольная выборка: \", df_val.shape)\n",
"print(\"Тестовая выборка: \", df_test.shape)\n",
"\n",
"# Уравнивание данных для обучения модели\n",
"# Подход с Random Under Sampler\n",
"rus = RandomUnderSampler(\n",
" random_state=42\n",
") # Инициализируем метод уменьшения дисбаланса классов\n",
"X_resampled, y_resampled = rus.fit_resample(\n",
" df_train, df_train[\"tax_binned\"]\n",
") # Применяем undersampling\n",
"\n",
"print(df_train.tax_binned.value_counts())\n",
"\n",
"df_train_rus = pd.DataFrame(X_resampled) # Сохраняем результат в новый DataFrame\n",
"print(\n",
" \"Обучающая выборка после undersampling: \", df_train_rus.shape\n",
") # Выводим размеры новой обучающей выборки\n",
"print(\n",
" df_train_rus.tax_binned.value_counts()\n",
") # Выводим количество классов в новой обучающей выборке"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}