1231/module A.ipynb
2025-02-23 21:54:44 +03:00

695 lines
59 KiB
Plaintext
Raw 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": "code",
"execution_count": 167,
"id": "ea761e6b-19b2-451b-b7c0-2748ece54e4f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Rank</th>\n",
" <th>Image Link</th>\n",
" <th>Title</th>\n",
" <th>Current</th>\n",
" <th>24h Peak</th>\n",
" <th>All-Time Peak</th>\n",
" <th>Genre</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>Counter-Strike 2</td>\n",
" <td>1,015,721</td>\n",
" <td>1,276,702</td>\n",
" <td>1,818,773</td>\n",
" <td>First-person Shooter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>Dota 2</td>\n",
" <td>702,487</td>\n",
" <td>805,624</td>\n",
" <td>1,295,114</td>\n",
" <td>MOBA (Multiplayer Online Battle Arena)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>Banana</td>\n",
" <td>409,758</td>\n",
" <td>428,540</td>\n",
" <td>917,272</td>\n",
" <td>Unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>PUBG: BATTLEGROUNDS</td>\n",
" <td>371,000</td>\n",
" <td>688,475</td>\n",
" <td>3,257,248</td>\n",
" <td>Battle Royale</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>ELDEN RING</td>\n",
" <td>294,359</td>\n",
" <td>319,707</td>\n",
" <td>953,426</td>\n",
" <td>Action RPG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>96.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>Soundpad</td>\n",
" <td>16,028</td>\n",
" <td>17,064</td>\n",
" <td>21,920</td>\n",
" <td>Simulation / Tycoon</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>97.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>Supermarket Simulator</td>\n",
" <td>15,817</td>\n",
" <td>15,875</td>\n",
" <td>51,363</td>\n",
" <td>Vampire / Open world</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>98.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>V Rising</td>\n",
" <td>15,803</td>\n",
" <td>16,275</td>\n",
" <td>150,645</td>\n",
" <td>Tactical Shooter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>99.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>Squad</td>\n",
" <td>15,729</td>\n",
" <td>19,288</td>\n",
" <td>35,151</td>\n",
" <td>Grand Strategy</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>100.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>Victoria 3</td>\n",
" <td>15,609</td>\n",
" <td>17,598</td>\n",
" <td>70,100</td>\n",
" <td>Unknown</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" Rank Image Link \\\n",
"0 1.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"1 2.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"2 3.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"3 4.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"4 5.0 https://shared.cloudflare.steamstatic.com/stor... \n",
".. ... ... \n",
"95 96.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"96 97.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"97 98.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"98 99.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"99 100.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"\n",
" Title Current 24h Peak All-Time Peak \\\n",
"0 Counter-Strike 2 1,015,721 1,276,702 1,818,773 \n",
"1 Dota 2 702,487 805,624 1,295,114 \n",
"2 Banana 409,758 428,540 917,272 \n",
"3 PUBG: BATTLEGROUNDS 371,000 688,475 3,257,248 \n",
"4 ELDEN RING 294,359 319,707 953,426 \n",
".. ... ... ... ... \n",
"95 Soundpad 16,028 17,064 21,920 \n",
"96 Supermarket Simulator 15,817 15,875 51,363 \n",
"97 V Rising 15,803 16,275 150,645 \n",
"98 Squad 15,729 19,288 35,151 \n",
"99 Victoria 3 15,609 17,598 70,100 \n",
"\n",
" Genre \n",
"0 First-person Shooter \n",
"1 MOBA (Multiplayer Online Battle Arena) \n",
"2 Unknown \n",
"3 Battle Royale \n",
"4 Action RPG \n",
".. ... \n",
"95 Simulation / Tycoon \n",
"96 Vampire / Open world \n",
"97 Tactical Shooter \n",
"98 Grand Strategy \n",
"99 Unknown \n",
"\n",
"[100 rows x 7 columns]"
]
},
"execution_count": 167,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"df = pd.read_csv('sample-dataset-a-b-modules.csv')\n",
"\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 168,
"id": "5217f315-c20d-4672-8f42-3ae7933b3426",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 100 entries, 0 to 99\n",
"Data columns (total 7 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Rank 100 non-null float64\n",
" 1 Image Link 100 non-null object \n",
" 2 Title 100 non-null object \n",
" 3 Current 100 non-null object \n",
" 4 24h Peak 100 non-null object \n",
" 5 All-Time Peak 100 non-null object \n",
" 6 Genre 100 non-null object \n",
"dtypes: float64(1), object(6)\n",
"memory usage: 5.6+ KB\n"
]
}
],
"source": [
"# приведение значений датасета к нижнему регистру\n",
"cols = df.select_dtypes('object')\n",
"for col in cols.columns:\n",
" df[col] = df[col].str.lower()\n",
"df.info() # выполнено исходное исследование данных (их типы данных, количество строк и столбцов)"
]
},
{
"cell_type": "code",
"execution_count": 169,
"id": "34b40a59-67c4-4639-8279-1fae884962d1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Пропущенные значения:\n",
" Rank 0\n",
"Image Link 0\n",
"Title 0\n",
"Current 0\n",
"24h Peak 0\n",
"All-Time Peak 0\n",
"Genre 0\n",
"dtype: int64\n"
]
}
],
"source": [
"# Оценка пропущенных значений\n",
"missing_data = df.isnull().sum()\n",
"print('Пропущенные значения:\\n', missing_data)"
]
},
{
"cell_type": "raw",
"id": "8c289deb-9028-4b75-874c-b7fe37760175",
"metadata": {},
"source": [
"Аномалий в датасете не имеется, т.к значения вполне нормальные"
]
},
{
"cell_type": "code",
"execution_count": 173,
"id": "c752cdef-e4f3-44f6-8e02-8b9d12f87692",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 100 entries, 0 to 99\n",
"Data columns (total 7 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Rank 100 non-null float64\n",
" 1 Image Link 100 non-null object \n",
" 2 Title 100 non-null object \n",
" 3 Current 100 non-null int32 \n",
" 4 24h Peak 100 non-null int32 \n",
" 5 All-Time Peak 100 non-null int32 \n",
" 6 Genre 100 non-null object \n",
"dtypes: float64(1), int32(3), object(3)\n",
"memory usage: 4.4+ KB\n"
]
}
],
"source": [
"# Список колонок для обработки\n",
"columns_to_convert = ['Current', '24h Peak', 'All-Time Peak']\n",
"\n",
"# Удаляем запятые и преобразуем в числовой тип\n",
"for col in columns_to_convert:\n",
" df[col] = df[col].str.replace(',', '').astype(int)\n",
"df.info()"
]
},
{
"cell_type": "code",
"execution_count": 175,
"id": "bbf28f49-ce5a-49e5-846f-77a73f2065f2",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Current</th>\n",
" <th>24h Peak</th>\n",
" <th>All-Time Peak</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1.000000e+02</td>\n",
" <td>1.000000e+02</td>\n",
" <td>1.000000e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>7.057893e+04</td>\n",
" <td>8.599056e+04</td>\n",
" <td>2.762827e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>1.336045e+05</td>\n",
" <td>1.690666e+05</td>\n",
" <td>4.705076e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.560900e+04</td>\n",
" <td>1.587500e+04</td>\n",
" <td>2.192000e+04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>2.038625e+04</td>\n",
" <td>2.294275e+04</td>\n",
" <td>6.986800e+04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>3.067700e+04</td>\n",
" <td>3.737950e+04</td>\n",
" <td>1.042010e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>6.255050e+04</td>\n",
" <td>6.582150e+04</td>\n",
" <td>2.482632e+05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>1.015721e+06</td>\n",
" <td>1.276702e+06</td>\n",
" <td>3.257248e+06</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Current 24h Peak All-Time Peak\n",
"count 1.000000e+02 1.000000e+02 1.000000e+02\n",
"mean 7.057893e+04 8.599056e+04 2.762827e+05\n",
"std 1.336045e+05 1.690666e+05 4.705076e+05\n",
"min 1.560900e+04 1.587500e+04 2.192000e+04\n",
"25% 2.038625e+04 2.294275e+04 6.986800e+04\n",
"50% 3.067700e+04 3.737950e+04 1.042010e+05\n",
"75% 6.255050e+04 6.582150e+04 2.482632e+05\n",
"max 1.015721e+06 1.276702e+06 3.257248e+06"
]
},
"execution_count": 175,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Оценка критических значений\n",
"nums = df.select_dtypes('int32') # создание переменной с численными типами данных для работ с числами\n",
"nums.describe()"
]
},
{
"cell_type": "code",
"execution_count": 177,
"id": "35bac5e7-62f4-48f6-919d-45fe08c4f2f5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Rank</th>\n",
" <th>Image Link</th>\n",
" <th>Title</th>\n",
" <th>Current</th>\n",
" <th>24h Peak</th>\n",
" <th>All-Time Peak</th>\n",
" <th>Genre</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>counter-strike 2</td>\n",
" <td>1015721</td>\n",
" <td>1276702</td>\n",
" <td>1818773</td>\n",
" <td>first-person shooter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>dota 2</td>\n",
" <td>702487</td>\n",
" <td>805624</td>\n",
" <td>1295114</td>\n",
" <td>moba (multiplayer online battle arena)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>banana</td>\n",
" <td>409758</td>\n",
" <td>428540</td>\n",
" <td>917272</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>pubg: battlegrounds</td>\n",
" <td>371000</td>\n",
" <td>688475</td>\n",
" <td>3257248</td>\n",
" <td>battle royale</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>elden ring</td>\n",
" <td>294359</td>\n",
" <td>319707</td>\n",
" <td>953426</td>\n",
" <td>action rpg</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>96.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>soundpad</td>\n",
" <td>16028</td>\n",
" <td>17064</td>\n",
" <td>21920</td>\n",
" <td>simulation / tycoon</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>97.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>supermarket simulator</td>\n",
" <td>15817</td>\n",
" <td>15875</td>\n",
" <td>51363</td>\n",
" <td>vampire / open world</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>98.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>v rising</td>\n",
" <td>15803</td>\n",
" <td>16275</td>\n",
" <td>150645</td>\n",
" <td>tactical shooter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>99.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>squad</td>\n",
" <td>15729</td>\n",
" <td>19288</td>\n",
" <td>35151</td>\n",
" <td>grand strategy</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>100.0</td>\n",
" <td>https://shared.cloudflare.steamstatic.com/stor...</td>\n",
" <td>victoria 3</td>\n",
" <td>15609</td>\n",
" <td>17598</td>\n",
" <td>70100</td>\n",
" <td>unknown</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" Rank Image Link \\\n",
"0 1.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"1 2.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"2 3.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"3 4.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"4 5.0 https://shared.cloudflare.steamstatic.com/stor... \n",
".. ... ... \n",
"95 96.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"96 97.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"97 98.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"98 99.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"99 100.0 https://shared.cloudflare.steamstatic.com/stor... \n",
"\n",
" Title Current 24h Peak All-Time Peak \\\n",
"0 counter-strike 2 1015721 1276702 1818773 \n",
"1 dota 2 702487 805624 1295114 \n",
"2 banana 409758 428540 917272 \n",
"3 pubg: battlegrounds 371000 688475 3257248 \n",
"4 elden ring 294359 319707 953426 \n",
".. ... ... ... ... \n",
"95 soundpad 16028 17064 21920 \n",
"96 supermarket simulator 15817 15875 51363 \n",
"97 v rising 15803 16275 150645 \n",
"98 squad 15729 19288 35151 \n",
"99 victoria 3 15609 17598 70100 \n",
"\n",
" Genre \n",
"0 first-person shooter \n",
"1 moba (multiplayer online battle arena) \n",
"2 unknown \n",
"3 battle royale \n",
"4 action rpg \n",
".. ... \n",
"95 simulation / tycoon \n",
"96 vampire / open world \n",
"97 tactical shooter \n",
"98 grand strategy \n",
"99 unknown \n",
"\n",
"[100 rows x 7 columns]"
]
},
"execution_count": 177,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Проведена очистка от дубликатов. В датасете их не выявилось\n",
"df.drop_duplicates()"
]
},
{
"cell_type": "code",
"execution_count": 187,
"id": "558b01e5-3f9e-4e81-a56e-be56a22f4817",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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UKVKFcHc3Fzw9vYWbt++/cr1NASh7Osw2NraCunp6cLIkSMFCwsLQSqVCo6OjsL+/ftLjLF69epCSkqK3L6S3pPitR5K217+/Dx+/FiYOnWqUL9+fUEqlQqNGzcW5s+fL+Tl5ZX4WSPSFIkgKOk7pkpn7ty5CAgIQGRkpNKljRXdu3cPDRo0KHGiXWVRPMmQ/wwqt+I5LiXdgvqmDB06FPfu3VNLjwnRm8Y5DERERFQqzmGgd1rTpk1fOXufSJ06d+6M9PR0TYdBVC5MGOid5uzsDGdnZ02HQe8IZXciEb0tOIeBiIiISsU5DERERFQqJgxERERUKiYMREREVComDERERFQqJgxERERUKiYMREREVComDERERFQqJgxERERUKiYMREREVComDERERFQqJgxERERUKiYMREREVComDERERFQqJgxERERUKiYMREREVComDERERFQqJgxERERUKiYMREREVComDERERFQqJgxERERUKiYMREREVComDERERFoiKioKvXv3Ru3atSGRSLBv375Sjzlx4gQcHBxgaGiIhg0bYv369aI6u3fvhp2dHaRSKezs7LB3716VY2PCQEREpCWePn2K1q1bY/Xq1WWqf/fuXfTs2ROurq64cOECvvnmG0ycOBG7d++W1Tl9+jR8fHzg6+uLixcvwtfXF97e3jh79qxKsUkEQRBUOoKIiIgqnEQiwd69e9GvX78S63z99dcICwvDtWvXZGVjx47FxYsXcfr0aQCAj48PsrOzcfDgQVmd7t27w9TUFDt27ChzPOxhICIiqkC5ubnIzs6W23Jzc9XS9unTp+Hp6SlX5uXlhZiYGOTn57+yTnR0tErn0nu9UNUnP+2OpkMgLVKUkaLpEEiLVG0+UNMhkJYpyEuq0PbV+Z0UuHorAgIC5MrmzJmDuXPnvnbbKSkpsLS0lCuztLREQUEB0tLSYG1tXWKdlBTVfs9qTcJARESkNYoK1daUv78/pkyZIlcmlUrV1r5EIpF7XTzT4OVyZXUUy0rDhIGIiKgCSaVStSYIL7OyshL1FKSmpkJPTw81a9Z8ZR3FXofScA4DERGRIqFIfVsFcnZ2RkREhFzZkSNH4OjoCH19/VfWcXFxUelc7GEgIiJSVFSxX/QlefLkCW7duiV7fffuXcTFxcHMzAz16tWDv78/kpKSsHXrVgAv7ohYvXo1pkyZglGjRuH06dPYvHmz3N0PkyZNgpubGxYvXoy+ffti//79OHr0KE6dOqVSbOxhICIiUiAIRWrbVBETEwN7e3vY29sDAKZMmQJ7e3t8++23AIDk5GQkJibK6jdo0ADh4eE4fvw42rRpg/nz52PlypUYMGCArI6Liwt27tyJ4OBgtGrVCiEhIQgNDUX79u1Vik1r1mHgXRL0Mt4lQS/jXRKkqKLvksj774ra2jKo3VxtbWkShySIiIgUaWhIQpsxYSAiIlJUwZMV30acw0BERESlYg8DERGRIjUu3FRZMGEgIiJSxCEJEQ5JEBERUanYw0BERKSId0mIMGEgIiJSoOqCS+8CDkkQERFRqdjDQEREpIhDEiJMGIiIiBRxSEKECQMREZEirsMgwjkMREREVCr2MBARESnikIQIEwYiIiJFnPQowiEJIiIiKhV7GIiIiBRxSEKECQMREZEiDkmIcEiCiIiISsUeBiIiIgWCwHUYFDFhICIiUsQ5DCIckiAiIqJSsYeBiIhIESc9ijBhICIiUsQhCREmDERERIr48CkRzmEgIiKiUrGHgYiISBGHJESYMBARESnipEcRDkkQERFRqdjDQEREpIhDEiJMGIiIiBRxSEKkXEMSDRs2RHp6uqg8MzMTDRs2fO2giIiISLuUq4fh3r17KCwU36Oam5uLpKSk1w6KiIhIo9jDIKJSwhAWFib7/8OHD8PExET2urCwEH/++Sfq16+vtuCIiIg0gU+rFFMpYejXrx8AQCKRYMiQIXL79PX1Ub9+fSxdulRtwREREZF2UClhKPr/LpoGDRrg77//hrm5eYUERUREpFEckhAp16THu3fvMlkgIqLKSyhS36aitWvXokGDBjA0NISDgwNOnjz5yvpr1qxBs2bNYGRkhKZNm2Lr1q1y+0NCQiCRSERbTk6OSnGV+7bKP//8E3/++SdSU1NlPQ/FgoKCytssERGR5mmohyE0NBR+fn5Yu3YtOnbsiA0bNqBHjx64evUq6tWrJ6q/bt06+Pv7Y9OmTXBycsK5c+cwatQomJqaonfv3rJ6xsbGSEhIkDvW0NBQpdjKlTAEBARg3rx5cHR0hLW1NSQSSXmaISIiopcsW7YMI0aMwMiRIwEAy5cvx+HDh7Fu3ToEBgaK6m/btg1jxoyBj48PgBfLHpw5cwaLFy+WSxgkEgmsrKxeK7ZyJQzr169HSEgIfH19X+vkREREWkmNKz3m5uYiNzdXrkwqlUIqlcqV5eXlITY2FjNmzJAr9/T0RHR0dIltK/YUGBkZ4dy5c8jPz4e+vj4A4MmTJ7C1tUVhYSHatGmD+fPnw97eXqXrKNcchry8PLi4uJTnUCIiIu1XVKS2LTAwECYmJnKbst6CtLQ0FBYWwtLSUq7c0tISKSkpSsP08vLCTz/9hNjYWAiCgJiYGAQFBSE/Px9paWkAgPfffx8hISEICwvDjh07YGhoiI4dO+LmzZsqvSXlShhGjhyJX375pTyHEhERvVP8/f2RlZUlt/n7+5dYX3GYXxCEEof+Z8+ejR49eqBDhw7Q19dH3759MXToUACArq4uAKBDhw4YNGgQWrduDVdXV/z6669o0qQJVq1apdJ1lGtIIicnBxs3bsTRo0fRqlUrWZdHsWXLlpWnWSIiIu2gxiEJZcMPypibm0NXV1fUm5CamirqdShmZGSEoKAgbNiwAQ8ePIC1tTU2btyI6tWrl3g3o46ODpycnFTuYShXwnDp0iW0adMGABAfHy+3jxMgiYjoraeBuyQMDAzg4OCAiIgIfPTRR7LyiIgI9O3b95XH6uvro06dOgCAnTt3olevXtDRUT6IIAgC4uLi0LJlS5XiK1fCEBkZWZ7DiIiI6BWmTJkCX19fODo6wtnZGRs3bkRiYiLGjh0L4MXwRlJSkmythRs3buDcuXNo3749MjIysGzZMsTHx2PLli2yNgMCAtChQwc0btwY2dnZWLlyJeLi4rBmzRqVYnutx1vfunULt2/fhpubG4yMjF45zkJERPTW0NA6DD4+PkhPT8e8efOQnJyMFi1aIDw8HLa2tgCA5ORkJCYmyuoXFhZi6dKlSEhIgL6+Pjp37ozo6Gi55zplZmZi9OjRSElJgYmJCezt7REVFYV27dqpFJtEEARB1QtKT0+Ht7c3IiMjIZFIcPPmTTRs2BAjRoxAjRo1yvU8ify0OyofQ5VXUYbyGcH0bqrafKCmQyAtU5BXsU9Gfn5AfXPxjHpNUVtbmlSuuyQmT54MfX19JCYmokqVKrJyHx8fHDp0SG3BERERkXYo15DEkSNHcPjwYdkEi2KNGzfGP//8o5bAiIiINIYPnxIpVw/D06dP5XoWiqWlpZXp1hGSFxN3GV9On4POfT5Hi4498GeU8hW96O22849j6D7iKzh+NAo+k+YiNv7Gq+sf+BN9x34Dp/6j0XuMP8L+/EtUZ9v+I+g9xh9O/Uej29ApWLJpB3Lz8ivqEkjNxo4ZgpsJp/Ek+zbOnjmIDzq+ekzZwMAA8+d9jds3z+Lp4ztIuPYXhg7xke23s2uCX0M34taNMyjIS8LECSMr+hIqLw0+fEpblSthcHNzk3salkQiQVFREb7//nt07txZbcG9K54/z0HT9xrimylfaDoUqiCHos5iyaZfMMq7F35dGYC2zZvgi7nLkJyarrR+aPgxrNjyG8Z91hd71y7AF5/1w8L1P+P42ThZnT8iT2NFyC6M/bQP9q1biICJw3H45Dms2PLbG7oqeh0DB/bBsqVzEbhoJRzbeeHUqXM48PvPqFu3donH7NyxHl06f4DRY6bBroUbBvl+iYSE27L9VYyMcPdOIr6ZtRDJyQ/exGVUXmpc6bGyKNeQxPfffw93d3fExMQgLy8P06dPx5UrV/Do0SP89Zf4ryB6NVdnJ7g6O2k6DKpAW/cdwUfd3DDAqxMA4OvRnyH6fDx+DT+GSUPFE/oOHIvGxz3c0d2tPQCgjpUFLiXcRvDucLi3bwMAuHj9Fto0a4wP3Z0BADaW5ujh1h6Xb3AC8dtg8qRRCAreiaDgHQCAqdPmwNOzE8aOGYyZsxaJ6nt5usPNtQMaN3VBRkYmAOCff+7L1YmJvYiY2IsAgIULvqnYC6B3Trl6GOzs7HDp0iW0a9cO3bp1w9OnT9G/f39cuHABjRo1UneMRG+1/PwCXLt1Dy72zeXKne2bI+76baXH5OUXQKqwgqqhgT4u37iD/IICAIC9XRNcu30PlxNeJAj3U1JxMuYS3JxaV8BVkDrp6+ujbdtWiDh6Qq48IuIEnDs4Kj2mVy9PxMZewlfTxuGfuzG4euUkliyarfIjiqmMOCQhonIPQ35+Pjw9PbFhwwYEBASU66TKntylk5vL+Q9UKWVkP0ZhURFqmhrLldc0NUHa+Xilx7i0bYE9R6LQxbktmjWyxdVb97D36CkUFBQiM/sJapnVQI9O7ZGR/RhDvl4ICEBBYSG8e3bGiIEfvonLotdgbm4GPT09pD5IkytPTU2DpZWF0mMaNqiHjh2dkJOTi48HjoS5uRlWrVwIU7MaGDV66psI+91SiYYS1EXlHgZ9fX3Ex8e/1gJNyp7ctXjF+nK3R/Q2kEDZA2WU1x3zSR984NASg6YuQNu+IzFp/kr07doRAGTLvf596To2hf6OmeN8sXPFHPz4zXhE/X0RG3aEVeh1kPooLoMjkUhEZcV0dHQgCAJ8h4zH3zFxOHjoGKZND8CQwd7sZaA3olxzGAYPHozNmzdj0SLxOFtZ+Pv7Y8oU+YUsdB5X7CIcRJpialwdujo6SMvIkit/lJmNmjVMlB5jKDXAPL8RmD1+CNIzs1HLtAZ+O3wcVY0MYWpcDQCw+uc96NXFRTYvokn9uniem4t5q7dglE/J68iT5qWlPUJBQQEsrWrJldeqVROpDx4qPSY5JRVJSSnIzn4sK7t+/SZ0dHRQp441bt26W6Exv3PYwyBSroQhLy8PP/30EyIiIuDo6IiqVavK7S/taZXKntyVn5dWQm2it5u+vh6avVcfp+OuoKuLg6z8TNxVdP7/CYwlHqunBytzMwDAoahzcGvXWpYI5OTmQUehi6L4r1DV12+lNyk/Px/nz1+CR1c37N//v8XuPDzc8Pvvh5UeEx39Nz4e0AtVq1bB06fPAACNGzdEYWEh7t9PfiNxv1P4j0ikXAlDfHw82rZtC+DFgy9exmdJqO7Zs+dIvP+f7HXSfw9w/cZtmBhXh3UJ45n0dhnczxPfLNuE5u/VR+tm7+G3QyeQ/DAdA3u+uA15RcguPEjPxMKpowAA95JSEH/jDlo2aYjsJ8+wbd9h3PrnPhZM/t999Z3atcG2fYfxfkNbtGzaEP8mp2LNz3vh3r4NdHXZu6DtflyxCVuCVyA29iLOnI3FqBGDUK+uDTZs3AYA+G7BDNSubY1hwycBAHbs3IuZ3/hh808/ImDeDzCvaYbFi2YjOGQncnJyALwYMrazawIAMDDQh01tK7Ru3RxPnjzF7dv3NHKdVHmonDAUFhZi7ty5aNmyJczMzCoipndO/PWbGD7ha9nrJas2AgD69vDAd7M4maky6O7WHpmPn2LDzjA8fJSF92xtsGbuZNS2ePG8+ocZWUh5+L81GYqKirB172HcS0qBnq4unFq9j63fz4SN5f+ebz/6k96QSF4MTaSmZ8DUpDo6tWuDCb4D3vj1kep27QpDTTNTzJo5GdbWFoi/koDefXyRmPhieNbKyhL1XlqT4enTZ+je8xOs+HEBzp4+iPT0DPz22++YPWeJrE7t2paI/fuI7PXUqeMwdeo4nDgRja7d+DwOlXBIQqRcD58yNDTEtWvX0KBBA7UFwodP0cv48Cl6GR8+RYoq/OFT22errS2jz+errS1NKle/ZcuWLXHnDr/giYiI3hXlShi+++47TJs2DQcOHEBycjKys7PlNiIiorcaF24SKdekx+7duwMA+vTpIzfJ8cV95RIUFhaqJzoiIiJN4BwGkXIlDJGRkeqOg4iISHvwtkqRciUMnTp1UnccREREpMXKlTBERUW9cr+bm1u5giEiItIKHJIQKVfC4O7uLip7eS4D5zAQEdFbjQmDSLnuksjIyJDbUlNTcejQITg5OeHIkSOlN0BERERvlXL1MJiYiB+Y061bN0ilUkyePBmxsbGvHRgREZHGVKLbIdWlXAlDSWrVqoWEhAR1NklERPTGCUW8S0JRuRKGS5cuyb0WBAHJyclYtGgRWrdurZbAiIiISHuUK2Fo06YNJBIJFB9D0aFDBwQFBaklMCIiIo3hpEeRciUMd+/elXuto6ODWrVqwdDQUC1BERERaRTnMIiodJfEsWPHYGdnB1NTU9ja2sq2unXrIjc3F82bN8fJkycrKlYiIiLSEJUShuXLl2PUqFEwNjYW7TMxMcGYMWOwbNkytQVHRESkEUWC+rZKQqWE4eLFi7IHTynj6enJWyqJiOjtV1Skvq2SUGkOw4MHD6Cvr19yY3p6ePjw4WsHRUREpFGV6IteXVTqYbCxscHly5dL3H/p0iVYW1u/dlBERESkXVRKGHr27Ilvv/0WOTk5on3Pnz/HnDlz0KtXL7UFR0REpBGCoL6tklBpSGLWrFnYs2cPmjRpgvHjx6Np06aQSCS4du0a1qxZg8LCQsycObOiYiUiInozOCQholLCYGlpiejoaIwbNw7+/v6yhZskEgm8vLywdu1aWFpaVkigREREpDkqL9xka2uL8PBwZGRk4NatWxAEAY0bN4apqWlFxEdERPTmVaLbIdWl3A+fMjU1hZOTkzpjISIi0g5c6VFEpUmPRERE9G5iwkBERKRIgys9rl27Fg0aNIChoSEcHBxKfeTCmjVr0KxZMxgZGaFp06bYunWrqM7u3bthZ2cHqVQKOzs77N27V+W4mDAQEREpEIqK1LapIjQ0FH5+fpg5cyYuXLgAV1dX9OjRA4mJiUrrr1u3Dv7+/pg7dy6uXLmCgIAAfPnll/j9999ldU6fPg0fHx/4+vri4sWL8PX1hbe3N86ePatSbBJB8RnVGpKfdkfTIZAWKcpI0XQIpEWqNh+o6RBIyxTkJVVo+08Dh6itrar+W8pct3379mjbti3WrVsnK2vWrBn69euHwMBAUX0XFxd07NgR33//vazMz88PMTExOHXqFADAx8cH2dnZOHjwoKxO9+7dYWpqih07dpQ5NvYwEBERKVLjkERubi6ys7PlttzcXNEp8/LyEBsbC09PT7lyT09PREdHKw0zNzcXhoaGcmVGRkY4d+4c8vPzAbzoYVBs08vLq8Q2S8KEgYiISJFQpLYtMDAQJiYmcpuy3oK0tDQUFhaK1jOytLRESoryXlcvLy/89NNPiI2NhSAIiImJQVBQEPLz85GWlgYASElJUanNkpT7tkoiIqJKS43rMPj7+2PKlClyZVKptMT6EolE7rUgCKKyYrNnz0ZKSgo6dOgAQRBgaWmJoUOHYsmSJdDV1S1XmyVhDwMREVEFkkqlMDY2ltuUJQzm5ubQ1dUV/eWfmppa4irKRkZGCAoKwrNnz3Dv3j0kJiaifv36qF69OszNzQEAVlZWKrVZEiYMREREioqK1LeVkYGBARwcHBARESFXHhERARcXl1ceq6+vjzp16kBXVxc7d+5Er169oKPz4ive2dlZ1OaRI0dKbVMRhySIiIgUaWhp6ClTpsDX1xeOjo5wdnbGxo0bkZiYiLFjxwJ4MbyRlJQkW2vhxo0bOHfuHNq3b4+MjAwsW7YM8fHx2LLlf3dmTJo0CW5ubli8eDH69u2L/fv34+jRo7K7KMqKCQMREZGW8PHxQXp6OubNm4fk5GS0aNEC4eHhsLW1BQAkJyfLrclQWFiIpUuXIiEhAfr6+ujcuTOio6NRv359WR0XFxfs3LkTs2bNwuzZs9GoUSOEhoaiffv2KsXGdRhIK3EdBnoZ12EgRRW+DsNsb7W1VXX+r2prS5PYw0BERKSIT6sU4aRHIiIiKhV7GIiIiBSo+gyIdwETBiIiIkUckhDhkAQRERGVij0MREREitjDIMKEgYiISJHAOQyKmDAQEREpYg+DCOcwEBERUanYw0BERKRAYA+DCBMGIiIiRUwYRDgkQURERKViDwMREZEirvQowoSBiIhIEYckRDgkQURERKViDwMREZEi9jCIMGEgIiJSIAhMGBRxSIKIiIhKxR4GIiIiRRySEGHCQEREpIgJgwgTBiIiIgVcGlpMaxKGoowUTYdAWkTH1ErTIZAWcbWw03QIRO88rUkYiIiItAZ7GESYMBARESniytAivK2SiIiISsUeBiIiIgWc9CjGhIGIiEgREwYRDkkQERFRqdjDQEREpIiTHkWYMBARESngHAYxDkkQERFRqdjDQEREpIhDEiJMGIiIiBRwSEKMCQMREZEi9jCIcA4DERERlYo9DERERAoE9jCIsIeBiIhIUZEaNxWtXbsWDRo0gKGhIRwcHHDy5MlX1t++fTtat26NKlWqwNraGsOGDUN6erpsf0hICCQSiWjLyclRKS4mDERERFoiNDQUfn5+mDlzJi5cuABXV1f06NEDiYmJSuufOnUKgwcPxogRI3DlyhXs2rULf//9N0aOHClXz9jYGMnJyXKboaGhSrExYSAiIlIgFKlvU8WyZcswYsQIjBw5Es2aNcPy5ctRt25drFu3Tmn9M2fOoH79+pg4cSIaNGiADz74AGPGjEFMTIxcPYlEAisrK7lNVUwYiIiIFKlxSCI3NxfZ2dlyW25uruiUeXl5iI2Nhaenp1y5p6cnoqOjlYbp4uKC+/fvIzw8HIIg4MGDB/jtt9/w4YcfytV78uQJbG1tUadOHfTq1QsXLlxQ+S1hwkBERFSBAgMDYWJiIrcFBgaK6qWlpaGwsBCWlpZy5ZaWlkhJSVHatouLC7Zv3w4fHx8YGBjAysoKNWrUwKpVq2R13n//fYSEhCAsLAw7duyAoaEhOnbsiJs3b6p0HUwYiIiIFKhzSMLf3x9ZWVlym7+/f4nnlkgk8rEIgqis2NWrVzFx4kR8++23iI2NxaFDh3D37l2MHTtWVqdDhw4YNGgQWrduDVdXV/z6669o0qSJXFJRFrytkoiISIE6b6uUSqWQSqWl1jM3N4eurq6oNyE1NVXU61AsMDAQHTt2xFdffQUAaNWqFapWrQpXV1csWLAA1tbWomN0dHTg5OTEHgYiIqLXpYlJjwYGBnBwcEBERIRceUREBFxcXJQe8+zZM+joyH+V6+rqvrgGQfny1oIgIC4uTmky8SrsYSAiItISU6ZMga+vLxwdHeHs7IyNGzciMTFRNsTg7++PpKQkbN26FQDQu3dvjBo1CuvWrYOXlxeSk5Ph5+eHdu3aoXbt2gCAgIAAdOjQAY0bN0Z2djZWrlyJuLg4rFmzRqXYmDAQEREpEpTPGahoPj4+SE9Px7x585CcnIwWLVogPDwctra2AIDk5GS5NRmGDh2Kx48fY/Xq1Zg6dSpq1KiBLl26YPHixbI6mZmZGD16NFJSUmBiYgJ7e3tERUWhXbt2KsUmEUrqs3jDcm8qv2WE3k06pqrfI0yVl2ebMZoOgbRM5P2I0iu9hhQ3d7W1ZRV1XG1taRLnMBAREVGpOCRBRESkQCjSzJCENmPCQEREpIBPqxTjkAQRERGVij0MRERECgQN3SWhzVTuYfj5559L3Fe80hQREdHbTFNPq9RmKicM48ePx4EDB0TlkydPfmUyQURERG8vlROGnTt3YtCgQYiKipKVTZgwAb/++isiIyPVGhwREZEmCEUStW2VhcpzGLp3747169ejX79+OHLkCIKCgrB//35ERkaiSZMmFREjERHRG6UdSxpql3JNevzkk0+QkZGBDz74ALVq1cKJEyfw3nvvqTs2IiIijahMPQPqUqaEYcqUKUrLLSwsYG9vj7Vr18rKli1bpp7IiIiISGuUKWG4cOGC0vJGjRohOztbtl8iYUZGRERvP/YwiJUpYeBkRiIiepdwDoMYV3okIiKiUpVr0uPff/+NXbt2ITExEXl5eXL79uzZo5bAiIiINIVDEmLlWoehY8eOuHr1Kvbu3Yv8/HxcvXoVx44dg4mJSUXESERE9EYJgkRtW2WhcsKwcOFC/Pjjjzhw4AAMDAywYsUKXLt2Dd7e3qhXr15FxEhEREQapnLCcPv2bXz44YcAAKlUiqdPn0IikWDy5MnYuHGj2gMkIiJ60/gsCTGVEwYzMzM8fvwYAGBjY4P4+HgAQGZmJp49e6be6IiIiDSgSJCobassVJ706OrqioiICLRs2RLe3t6YNGkSjh07hoiICHTt2rUiYiQiIiINUzlhWL16NXJycgAA/v7+0NfXx6lTp9C/f3/Mnj1b7QESERG9aZVpsqK6qJwwmJmZyf5fR0cH06dPx/Tp09UaFBERkSbxtkqxci3cdPv2bcyaNQuffvopUlNTAQCHDh3ClStX1BocERGRJgiC+rbKQuWE4cSJE2jZsiXOnj2LPXv24MmTJwCAS5cuYc6cOWoPkIiIiDRP5YRhxowZWLBgASIiImBgYCAr79y5M06fPq3W4IiIiDRBKJKobassVJ7DcPnyZfzyyy+i8lq1aiE9PV0tQREREWlSZbodUl1U7mGoUaMGkpOTReUXLlyAjY2NWoIiIiIi7aJywvDZZ5/h66+/RkpKCiQSCYqKivDXX39h2rRpGDx4cEXESERE9EbxWRJiKicM3333HerVqwcbGxs8efIEdnZ2cHNzg4uLC2bNmlURMRIREb1RvEtCTOU5DPr6+ti+fTvmz5+P8+fPo6ioCPb29mjcuHFFxEdERERaoMwJQ1FREZYuXYp9+/YhPz8fHh4e+Pbbb2FoaFiR8b3Vdv5xDCF7DiLtUSYa1bPB9FGfwaFFk5LrH/gTOw78if9S02BVqyZGefdCn64d5eps238Ev4ZHIuVhOmoYV0O3jk6YNORjSA30K/py6A2JibuM4F9+w9Xrt/Aw/RFWBM5GVzcXTYdFFaDv4N7wGTsQNS1q4t6Ne1g9dx0un4svsb6+gT4G+w2CR/+uMKtliofJadi+6hccDD0sqzNgxEfoM7g3LG0skPUoCyf+OIlNizYjPzf/TVxSpcFJj2JlThgWL16MWbNmoWvXrjAyMsKyZcuQlpbGJ1SW4FDUWSzZ9AtmjvOFvV1j7Dp4HF/MXYZ9a7+DtUVNUf3Q8GNYseU3zJkwFC2aNMDlhLsIWB0C42pV4d6+DQDgj8jTWBGyCwGThqNNs8b4JykFs5dvBgBMH/Xpm7w8qkDPn+eg6XsN0a+nJybPXKDpcKiCdO7dCV/OHYflM1ch/u8r6D3oQyzethBDO49A6n8PlR4zZ90smNYyxffTliLp3n8wNa8BXV1d2X6Pj7pgtP9ILJn2A+JjrqJuwzr4etlXAIC1AevfyHVVFpVp7oG6lDlhCAkJwapVq/DFF18AeLGyY79+/bBhwwZIJHxjFW3ddwQfdXPDAK9OAICvR3+G6PPx+DX8GCYNHSiqf+BYND7u4Y7ubu0BAHWsLHAp4TaCd4fLEoaL12+hTbPG+NDdGQBgY2mOHm7tcfnGnTdzUfRGuDo7wdXZSdNhUAUbOHoAwnceQviOgwCANXPXwamTI/oM7o2fFgWJ6ju5O6J1h1b4rONgPM588cTgB/cfyNWxc7BDfMwV/LkvUrb/2P5IvN+maQVfDb0Lyjzp8Z9//kGvXr1kr728vCAIAv77778KCextlp9fgGu37sHFvrlcubN9c8Rdv630mLz8Akj15YcVDA30cfnGHeQXFAAA7O2a4Nrte7ic8CJBuJ+SipMxl+Dm1LoCroKIKoqevh6atGyCmKhYufKYqFi0cGyu9JiO3ZyRcOkGPhnnjV9jdmBrVDDGzhoNA8P/LaB3+Vw8mrRsLEsQrOtZoX2Xdjhz7GzFXUwlxUmPYmXuYcjLy4ORkZHstUQigYGBAXJzc1U+aW5urvi4vDxIX1o58m2Wkf0YhUVFqGlqLFde09QEaeeVj0+6tG2BPUei0MW5LZo1ssXVW/ew9+gpFBQUIjP7CWqZ1UCPTu2Rkf0YQ75eCAhAQWEhvHt2xoiBH76JyyIiNTExM4Guni4yHmbIlWc8zIBpLVOlx1jbWqOlUwvk5ebh25FzYWJmAr/vJsC4RnUsmbYUABAZdhw1appg5Z4fIZFIoKevh/1bwrBjTWiFX1NlwzkMYirdJTF79mxUqVJF9jovLw/fffcdTExMZGXLli0rtZ3AwEAEBATIlc0cPxyzJ45QJRytJ4H8B04QBJQ0ejPmkz5Iz8jCoKkLIAgCatYwRt+uHRG8+yB0dF50BP196To2hf6OmeN80bJpQ/z7XyoWb/oFG3aEYcynfSr6cohIzQTFPz8lkhL/JJVIdCBAwHcTAvH08TMAwNp5GzB3w2wsn7UKeTl5aO3cCoMmfIblM1fh2oVrsKlvg/EBX8A39RG2rdhe0ZdTqXAOg1iZEwY3NzckJCTIlbm4uODOnf+Nn5d1LoO/vz+mTJkiX/jv+bKGovVMjatDV0cHaRlZcuWPMrNRs4aJ0mMMpQaY5zcCs8cPQXpmNmqZ1sBvh4+jqpEhTI2rAQBW/7wHvbq4yOZFNKlfF89zczFv9RaM8uklSyyISLtlPcpCYUEhzCzM5MpNzWsgIy1T6TGPUtORlpImSxYA4J+bidDR0UEt61pIupuE4dOG4sieo7J5EXev34NhFUNMXeyHn1f+Ik5QiFRQ5m+Y48ePIzIy8pXbsWPHytSWVCqFsbGx3FZZhiMAQF9fD83eq4/TcfKP+z4TdxVt3m/06mP19GBlbgZdXR0cijoHt3atZYlATm4edBSSMh0dHQiCUKnGyYgqu4L8Aty4fAOOrm3lyh1c2yI+5orSY+JjrqCmZU0YVvnfrex1G9qgsLAQD5Nf3FVhaCSFUCT/y6CosAgSiYST01VUJEjUtqlq7dq1aNCgAQwNDeHg4ICTJ0++sv727dvRunVrVKlSBdbW1hg2bJjo2U67d++GnZ0dpFIp7OzssHfvXpXj4p+kFWRwP0/sORKFvUeicOff/7Bk0w4kP0zHwJ6dAQArQnbhm6WbZPXvJaXgQGQ0/klKweWEO5i+eB1u/XMfEwd/LKvTqV0b/BoeiYMnzuJ+ykOcvnAFa37eC/f2baCryx9lZfHs2XNcv3Eb12+8mCCb9N8DXL9xG8kpqRqOjNRp18bd6PlpD/Tw8UK99+rhizljYWljgd+3HQAAjJwxHP7Lp8vqH917DNkZ2fh62VewbVwPrdq3xJhZo3Ew9DDycvIAANFHz6CPby907uMOq7pWcHBti+FfDUH0kdMoKirSyHW+rQQ1bqoIDQ2Fn58fZs6ciQsXLsDV1RU9evRAYmKi0vqnTp3C4MGDMWLECFy5cgW7du3C33//jZEjR8rqnD59Gj4+PvD19cXFixfh6+sLb29vnD2r2mRYiaAlfVS5N6M1HYLa7fzjGEJ2h+Phoyy8Z2uDr0Z9CscWL2Yvz/rxJ/z3IA1Bi2YAAO78+x9mfL8B95JSoKerC6dW78Nv6EA0qGMta6+gsBCbQn/HgcjTSE3PgKlJdXRq1wYTfAfAuFoVpTG8rXRMrTQdgsacO38Jwyd8LSrv28MD382aqoGINM+zzRhNh1Ah+g7ujU/GecPMwgz3Eu5hTcB6XDp7GQDw9bKvYFXXEpMHTpPVr9uoLibO/xItnJojOyMbx3+Pwubvg2UJg46uDgZN/AyeAzxgbmWOzPQsnI44g5+WBOFp9lONXGNFibwfUaHtn6ndX21t2d/dIZroL5VKIZVKRXXbt2+Ptm3bYt26dbKyZs2aoV+/fggMDBTV/+GHH7Bu3Trcvv2/O/BWrVqFJUuW4N9//wUA+Pj4IDs7GwcPHpTV6d69O0xNTbFjx44yXwcTBtJK73LCQGKVNWGg8qvohCHaeoDa2joypqVoov+cOXMwd+5cubK8vDxUqVIFu3btwkcffSQrnzRpEuLi4nDixAlxnNHR6Ny5M/bu3YsePXogNTUV3t7eaNasGdavf7FYV7169TB58mRMnjxZdtyPP/6I5cuX459//inzdaj8LAkiIqLKTp13SSib6K+sdyEtLQ2FhYWwtLSUK7e0tERKSorStl1cXLB9+3b4+PggJycHBQUF6NOnD1atWiWrk5KSolKbJeHANxERUQVSOtFfScJQTHGC6otb8pUnMFevXsXEiRPx7bffIjY2FocOHcLdu3cxduzYcrdZknL1MGRmZuLcuXNITU0VTaQZPHhweZokIiLSGpqYImpubg5dXV3RX/6pqamiHoJigYGB6NixI7766sUzQ1q1aoWqVavC1dUVCxYsgLW1NaysrFRqsyQqJwy///47Pv/8czx9+hTVq1eXy1AkEgkTBiIieusJePO3oRoYGMDBwQERERFycxgiIiLQt29fpcc8e/YMenryX+XFDyQrnqLo7OyMiIgIuTkMR44cgYuLak/BVTlhmDp1KoYPH46FCxfKrfpIREREr2fKlCnw9fWFo6MjnJ2dsXHjRiQmJsqGGPz9/ZGUlIStW7cCAHr37o1Ro0Zh3bp18PLyQnJyMvz8/NCuXTvUrl0bwItJk25ubli8eDH69u2L/fv34+jRozh16pRKsamcMCQlJWHixIlMFoiIqNIq0tD9gz4+PkhPT8e8efOQnJyMFi1aIDw8HLa2tgCA5ORkuTUZhg4disePH2P16tWYOnUqatSogS5dumDx4sWyOi4uLti5cydmzZqF2bNno1GjRggNDUX79u1Vik3l2yr79++PTz75BN7e3iqdqDS8rZJextsq6WW8rZIUVfRtlccs1fcd1+XBr2prS5PK1MMQFhYm+/8PP/wQX331Fa5evYqWLVtCX+GRzH368CFIRET0dtPEHAZtV6aEoV+/fqKyefPmicokEgkKCwtfOygiIiLSLmVKGLgGORERvUv4rSfGlR6JiIgUcEhC7LVXemzYsCFu3rypjliIiIhIS5W5h2HlypVKyxMTExEcHAwrqxez2idOnKieyIiIiDSEQxJiZU4Y/Pz8YGNjI1pRqqioCFu3boW+vj4kEgkTBiIieusxYRArc8IwatQonDt3Dr/88guaNWsmK9fX18eRI0dgZ2dXIQESERGR5pV5DsOGDRswZ84ceHl5YfXq1RUZExERkUYJkKhtqyxUmvTYr18/nD59Gnv37kWPHj1UfpY2ERHR26BIor6tslD5LgkbGxscPXoUbm5usLe3h4orSxMREdFbqFzrMEgkEvj7+8PT0xOnTp2CtbW1uuMiIiLSmKJKNJSgLq+1cJODgwMcHBzUFQsREZFWYN+5mEpDEs+fP8epU6dw9epV0b6cnBzZ87mJiIjeZkVq3CqLMicMN27cQLNmzeDm5oaWLVvC3d0dycnJsv1ZWVkYNmxYhQRJREREmlXmhOHrr79Gy5YtkZqaioSEBBgbG6Njx45ITEysyPiIiIjeuCKJRG1bZVHmhCE6OhoLFy6Eubk53nvvPYSFhaFHjx5wdXXFnTt3KjJGIiKiN0pQ41ZZlHnS4/Pnz0XLQq9ZswY6Ojro1KkTfvnlF7UHR0RERNqhzAnD+++/j5iYGLlloQFg1apVEAQBffr0UXtwREREmlCZJiuqS5mHJD766CPs2LFD6b7Vq1fj008/5SJORERUKXClR7EyJwz+/v4IDw8vcf/atWtRVMScjIiIqDJ6rYWbiIiIKiOu9CjGhIGIiEgBB9jFVH74FBEREb172MNARESkoDJNVlQXJgxEREQKOIVfjAkDERGRAs5hEOMcBiIiIioVexiIiIgUcA6DGBMGIiIiBZzDIMYhCSIiIioVexiIiIgUsIdBjAkDERGRAoFzGEQ4JEFERESlYg8DERGRAg5JiDFhICIiUsCEQYxDEkRERFpk7dq1aNCgAQwNDeHg4ICTJ0+WWHfo0KGQSCSirXnz5rI6ISEhSuvk5OSoFBcTBiIiIgWCGjdVhIaGws/PDzNnzsSFCxfg6uqKHj16IDExUWn9FStWIDk5Wbb9+++/MDMzw8CBA+XqGRsby9VLTk6GoaGhSrExYSAiIlJQJFHfpoply5ZhxIgRGDlyJJo1a4bly5ejbt26WLdundL6JiYmsLKykm0xMTHIyMjAsGHD5OpJJBK5elZWViq/J0wYiIiIFBSpccvNzUV2drbclpubKzpnXl4eYmNj4enpKVfu6emJ6OjoMsW9efNmeHh4wNbWVq78yZMnsLW1RZ06ddCrVy9cuHChjO/E/zBhICIiqkCBgYEwMTGR2wIDA0X10tLSUFhYCEtLS7lyS0tLpKSklHqe5ORkHDx4ECNHjpQrf//99xESEoKwsDDs2LEDhoaG6NixI27evKnSdfAuCSIiIgXqvEvC398fU6ZMkSuTSqUl1pdI5McxBEEQlSkTEhKCGjVqoF+/fnLlHTp0QIcOHWSvO3bsiLZt22LVqlVYuXJlGa7gBSYMREREClSdrPgqUqn0lQlCMXNzc+jq6op6E1JTU0W9DooEQUBQUBB8fX1hYGDwyro6OjpwcnJSuYeBQxJERERawMDAAA4ODoiIiJArj4iIgIuLyyuPPXHiBG7duoURI0aUeh5BEBAXFwdra2uV4mMPAxERkQJV725QlylTpsDX1xeOjo5wdnbGxo0bkZiYiLFjxwJ4MbyRlJSErVu3yh23efNmtG/fHi1atBC1GRAQgA4dOqBx48bIzs7GypUrERcXhzVr1qgUGxMGIiIiBZpa6dHHxwfp6emYN28ekpOT0aJFC4SHh8vuekhOThatyZCVlYXdu3djxYoVStvMzMzE6NGjkZKSAhMTE9jb2yMqKgrt2rVTKTaJIAjqHKopt9ybZbtlhN4NOqaq3yNMlZdnmzGaDoG0TOT9iNIrvYZFtoPU1taMf35WW1uaxB4GIiIiBVrxl7SWYcJARESkoIgpg4jWJAxVmw8svRK9M1wt7DQdAmmRI3EbNB0C0TtPaxIGIiIibcHHW4sxYSAiIlLAAQkxJgxEREQK2MMgxpUeiYiIqFTsYSAiIlKgqZUetRkTBiIiIgW8rVKMQxJERERUKvYwEBERKWD/ghgTBiIiIgW8S0KMQxJERERUKvYwEBERKeCkRzEmDERERAqYLohxSIKIiIhKxR4GIiIiBZz0KMaEgYiISAHnMIgxYSAiIlLAdEFM5TkMmZmZJe67devW68RCREREWkrlhKFnz57IyckRlSckJMDd3V0dMREREWlUkRq3ykLlhMHU1BT9+vVDQUGBrOzatWtwd3fHgAED1BocERGRJghq/K+yUDlh2L17N54+fYrPPvsMgiAgPj4e7u7u+PTTT7FixYqKiJGIiIg0TOWEwdDQEAcOHMDNmzcxcOBAdO3aFYMHD8ayZcsqIj4iIqI3jkMSYmW6SyI7O1vutUQiQWhoKDw8PDBgwADMnj1bVsfY2Fj9URIREb1BvK1SrEwJQ40aNSCRSETlgiBg/fr12LBhAwRBgEQiQWFhodqDJCIiIs0qU8IQGRlZ0XEQERFpDfYviJUpYejUqVNFx0FERKQ1OCQhVu6VHp89e4bExETk5eXJlbdq1eq1gyIiIiLtonLC8PDhQwwbNgwHDx5Uup9zGIiI6G1Xme5uUBeVb6v08/NDRkYGzpw5AyMjIxw6dAhbtmxB48aNERYWVhExEhERvVFcuElM5R6GY8eOYf/+/XBycoKOjg5sbW3RrVs3GBsbIzAwEB9++GFFxElERPTGsIdBTOUehqdPn8LCwgIAYGZmhocPHwIAWrZsifPnz6s3OiIiItIKKicMTZs2RUJCAgCgTZs22LBhA5KSkrB+/XpYW1urPUAiIqI3jUMSYioPSfj5+SE5ORkAMGfOHHh5eWH79u0wMDBASEiIuuMjIiJ64zgkIaZywvD555/L/t/e3h737t3D9evXUa9ePZibm6s1OCIiItIOKg9JFMvLy0NCQgIMDAzQtm1bJgtERFRpFAmC2jZVrV27Fg0aNIChoSEcHBxw8uTJEusOHToUEolEtDVv3lyu3u7du2FnZwepVAo7Ozvs3btX5bhUThiePXuGESNGoEqVKmjevDkSExMBABMnTsSiRYtUDoCIiEjbCGrcVBEaGgo/Pz/MnDkTFy5cgKurK3r06CH7rlW0YsUKJCcny7Z///0XZmZmGDhwoKzO6dOn4ePjA19fX1y8eBG+vr7w9vbG2bNnVYpN5YTB398fFy9exPHjx2FoaCgr9/DwQGhoqKrNERER0f9btmwZRowYgZEjR6JZs2ZYvnw56tati3Xr1imtb2JiAisrK9kWExODjIwMDBs2TFZn+fLl6NatG/z9/fH+++/D398fXbt2xfLly1WKTeWEYd++fVi9ejU++OADuSdY2tnZ4fbt26o2R0REpHWKIKhty83NRXZ2ttyWm5srOmdeXh5iY2Ph6ekpV+7p6Yno6Ogyxb1582Z4eHjA1tZWVnb69GlRm15eXmVus5jKCcPDhw9l6zC87OnTp0ofgU1ERPS2UedtlYGBgTAxMZHbAgMDRedMS0tDYWEhLC0t5cotLS2RkpJSaszJyck4ePAgRo4cKVeekpJS7jZfpnLC4OTkhD/++EP2ujhJ2LRpE5ydnVVtjoiIqFLz9/dHVlaW3Obv719ifcU/vgVBKNMf5CEhIahRowb69euntjZfpvJtlYGBgejevTuuXr2KgoICrFixAleuXMHp06dx4sQJVZsjIiLSOupch0EqlUIqlZZaz9zcHLq6uqK//FNTU0U9BIoEQUBQUBB8fX1hYGAgt8/KyqpcbSpSuYfBxcUF0dHRePbsGRo1aoQjR47A0tISp0+fhoODg6rNERERaR11zmEoKwMDAzg4OCAiIkKuPCIiAi4uLq889sSJE7h16xZGjBgh2ufs7Cxq88iRI6W2qUilHobHjx/jzJkzyM/Px9KlS7n2AhERVUqaWtJ5ypQp8PX1haOjI5ydnbFx40YkJiZi7NixAF4MbyQlJWHr1q1yx23evBnt27dHixYtRG1OmjQJbm5uWLx4Mfr27Yv9+/fj6NGjOHXqlEqxlTlhuHTpEnr06IGUlBQIggBjY2P89ttv8PDwUOmEREREpJyPjw/S09Mxb948JCcno0WLFggPD5fd9ZCcnCxakyErKwu7d+/GihUrlLbp4uKCnTt3YtasWZg9ezYaNWqE0NBQtG/fXqXYJIJQtmWoevbsiYyMDCxduhSGhoYICAhAQkICrl+/rtIJS6JnYKOWdqhycLWw03QIpEWOxG3QdAikZfTNG1Zo+/1t+6itrT3/hKmtLU0qcw9DTEwMwsPD4ejoCAAICgqChYUFnjx5gmrVqlVYgERERG9aGf+WfqeUedJjWloa6tWrJ3tds2ZNVKlSBQ8fPqyQwIiIiEh7lLmHQSKR4PHjx7LloIvv4Xz8+DGys7Nl9YyNjdUfJRER0Rukyt0N74oyJwyCIKBJkyaiMnt7e9n/SyQSFBYWqjdCIiKiN0yd6zBUFmVOGCIjIysyDiIiItJiZU4YOnXqVJFxEBERaQ1NrcOgzVReGpqIiKiy4xwGMZWXhiYiIqJ3D3sYiIiIFHAdBjEmDERERAp4l4RYuYckbt26hcOHD+P58+cAmI0REVHlIajxv8pC5YQhPT0dHh4eaNKkCXr27Ink5GQAwMiRIzF16lS1B/g2GztmCG4mnMaT7Ns4e+YgPujY7pX1DQwMMH/e17h98yyePr6DhGt/YegQH9l+O7sm+DV0I27dOIOCvCRMnDCyoi+B1Kjv4N74JXorDt/6AxvC16BlO/FT5V6mb6CPEdOHYceZn3H49h/4+dQW9PDxkqszYMRH2HIiCIduHUDoue34Ys5Y6Ev1K/IySANi4i7jy+lz0LnP52jRsQf+jIrWdEj0DlI5YZg8eTL09PSQmJiIKlWqyMp9fHxw6NAhtQb3Nhs4sA+WLZ2LwEUr4djOC6dOncOB339G3bq1Szxm54716NL5A4weMw12LdwwyPdLJCTclu2vYmSEu3cS8c2shUhOfvAmLoPUpHPvTvhy7jj8vGoHRnUfh0vn4rF420JY1K5V4jFz1s1C2w/s8f20pRjcaTgWjF+IxFv/yvZ7fNQFo/1HYuuP2zDEfQS+n7YMnXu7Y9SMEW/ikugNev48B03fa4hvpnyh6VDeGUUQ1LZVFirPYThy5AgOHz6MOnXqyJU3btwY//zzj9oCe9tNnjQKQcE7ERS8AwAwddoceHp2wtgxgzFz1iJRfS9Pd7i5dkDjpi7IyMgEAPzzz325OjGxFxETexEAsHDBNxV7AaRWA0cPQPjOQwjfcRAAsGbuOjh1ckSfwb3x06IgUX0nd0e07tAKn3UcjMeZjwEAD+7LJ4l2DnaIj7mCP/dFyvYf2x+J99s0reCroTfN1dkJrs5Omg7jncJhdjGVexiePn0q17NQLC0tDVKpVC1Bve309fXRtm0rRBw9IVceEXECzh0clR7Tq5cnYmMv4atp4/DP3RhcvXISSxbNlj27g95eevp6aNKyCWKiYuXKY6Ji0cKxudJjOnZzRsKlG/hknDd+jdmBrVHBGDtrNAwMDWR1Lp+LR5OWjWUJgnU9K7Tv0g5njp2tuIshoneWyj0Mbm5u2Lp1K+bPnw/gxUOpioqK8P3336Nz585qD/BtZG5uBj09PaQ+SJMrT01Ng6WVhdJjGjaoh44dnZCTk4uPB46EubkZVq1cCFOzGhg1mnND3mYmZibQ1dNFxsMMufKMhxkwrWWq9BhrW2u0dGqBvNw8fDtyLkzMTOD33QQY16iOJdOWAgAiw46jRk0TrNzzIyQSCfT09bB/Sxh2rAmt8Gsiquwq01CCuqicMHz//fdwd3dHTEwM8vLyMH36dFy5cgWPHj3CX3/9VaY2cnNzkZubK1dW/PCqykSxS0sikZTYzaWjowNBEOA7ZDyys190QU+bHoBfd27EhIkzkZOTU+HxUsUS/ewlEqCEz4NEogMBAr6bEIinj58BANbO24C5G2Zj+axVyMvJQ2vnVhg04TMsn7kK1y5cg019G4wP+AK+qY+wbcX2ir4cokqtMt3doC4qD0nY2dnh0qVLaNeuHbp164anT5+if//+uHDhAho1alSmNgIDA2FiYiK3CUWPVQ5eW6WlPUJBQQEsreQntNWqVROpDx4qPSY5JRVJSSmyZAEArl+/CR0dHdSpY12h8VLFynqUhcKCQphZmMmVm5rXQEZaptJjHqWmIy0lTZYsAMA/NxOho6ODWtYvPlfDpw3FkT1HEb7jIO5ev4dTh/7CT4uD8Nn4Typd8k1EmleudRisrKwQEBCAAwcOIDw8HAsWLIC1ddm/1Pz9/ZGVlSW3SXSqlycUrZSfn4/z5y/Bo6ubXLmHhxtOn4lRekx09N+oXdsKVav+b35I48YNUVhYiPv3kys0XqpYBfkFuHH5Bhxd28qVO7i2RXzMFaXHxMdcQU3LmjCs8r85LHUb2qCwsBAPk18knYZGUghF8n8FFRUWQSKRMGEgek1FgqC2rbIo10qPOTk5uHTpElJTU1FUJL8eVp8+fUo9XiqViiZIVrZfcD+u2IQtwSsQG3sRZ87GYtSIQahX1wYbNm4DAHy3YAZq17bGsOGTAAA7du7FzG/8sPmnHxEw7weY1zTD4kWzERyyUzYcoa+vDzu7JgAAAwN92NS2QuvWzfHkyVPcvn1PI9dJZbNr4274r/gaCZdu4ErsNfT6vCcsbSzw+7YDAICRM4ajlpU5Av2WAACO7j0G30mf4+tlXyFk6RaYmJlgzKzROBh6GHk5eQCA6KNnMHDUANyMv4VrF67Dpn5tDP9qCKKPnBb9u6S327Nnz5F4/z/Z66T/HuD6jdswMa4O6xLmRdHrqTxf8+qjcsJw6NAhDB48GGlpaaJ9EokEhYWFagnsbbdrVxhqmpli1szJsLa2QPyVBPTu44vExCQAgJWVJeq9tCbD06fP0L3nJ1jx4wKcPX0Q6ekZ+O233zF7zhJZndq1LRH79xHZ66lTx2Hq1HE4cSIaXbsNfHMXRyqL/P0EjE2NMdhvEMwszHAv4R5mDJ6JB0mpAICaFjVhYfO/X/w5z3Iw7dMZmDj/S6wPX4PsjGwc/z0Km78PltXZtmI7BEHAiOlDYW5ljsz0LJyOOIOflohv06S3W/z1mxg+4WvZ6yWrNgIA+vbwwHezOCma3gyJoOLNpu+99x68vLzw7bffwtLSUm2B6BnYqK0tevu5WthpOgTSIkfiNmg6BNIy+uYNK7T9jjZd1NbWX0nH1NaWJqncw5CamoopU6aoNVkgIiLSJrytUkzlSY8ff/wxjh8/XgGhEBERaQdBENS2VRYq9zCsXr0aAwcOxMmTJ9GyZUvo68s/6GbixIlqC46IiIi0g8oJwy+//ILDhw/DyMgIx48fl7u7QSKRMGEgIqK3HockxFROGGbNmoV58+ZhxowZ0NEp1zIOREREWo0rPYqp/I2fl5cHHx8fJgtERETvEJW/9YcMGYLQUD7choiIKi9OehRTeUiisLAQS5YsweHDh9GqVSvRpMdly5apLTgiIiJN4BwGMZUThsuXL8Pe3h4AEB8fL7evsi3vTERERC+onDBERkZWRBxERERaozINJahLuR4+RUREVJlxSEKsTAlD//79ERISAmNjY/Tv3/+Vdffs2aOWwIiIiEh7lClhMDExkc1PMDExqdCAiIiINI3rMIiVKWEIDg7GvHnzMG3aNAQHB5d+ABER0VusiHMYRMq8DkNAQACePHlSkbEQERFpBUGN/1UWZU4YOGOUiIio4q1duxYNGjSAoaEhHBwccPLkyVfWz83NxcyZM2FrawupVIpGjRohKChItj8kJAQSiUS05eTkqBSXSndJcJ0FIiJ6F2hqSCI0NBR+fn5Yu3YtOnbsiA0bNqBHjx64evUq6tWrp/QYb29vPHjwAJs3b8Z7772H1NRUFBQUyNUxNjZGQkKCXJmhoaFKsamUMHTt2hV6eq8+5Pz58yoFQEREpG00NZSwbNkyjBgxAiNHjgQALF++HIcPH8a6desQGBgoqn/o0CGcOHECd+7cgZmZGQCgfv36onoSiQRWVlavFZtKCYOXlxeqVav2WickIiJ6l+Tm5iI3N1euTCqVQiqVypXl5eUhNjYWM2bMkCv39PREdHS00rbDwsLg6OiIJUuWYNu2bahatSr69OmD+fPnw8jISFbvyZMnsLW1RWFhIdq0aYP58+fLVm0uK5UShq+++goWFhYqnYCIiOhto84hicDAQAQEBMiVzZkzB3PnzpUrS0tLQ2FhISwtLeXKLS0tkZKSorTtO3fu4NSpUzA0NMTevXuRlpaGL774Ao8ePZLNY3j//fcREhKCli1bIjs7GytWrEDHjh1x8eJFNG7cuMzXUeaEgfMXiIjoXaHOIQl/f39MmTJFrkyxd+Flit+3giCU+B1cVFQEiUSC7du3y9ZJWrZsGT7++GOsWbMGRkZG6NChAzp06CA7pmPHjmjbti1WrVqFlStXlvk6XusuiUWLFiEzM7PMJyMiInrXSKVSGBsby23KEgZzc3Po6uqKehNSU1NFvQ7FrK2tYWNjI7eoYrNmzSAIAu7fv6/0GB0dHTg5OeHmzZsqXUeZE4a7d++iVq1acmULFy7Eo0ePVDohERGRtisSBLVtZWVgYAAHBwdERETIlUdERMDFxUXpMR07dsR///0nt07SjRs3oKOjgzp16ig9RhAExMXFwdrausyxASokDLa2tkq7SYiIiCobTS3cNGXKFPz0008ICgrCtWvXMHnyZCQmJmLs2LEAXgxvDB48WFb/s88+Q82aNTFs2DBcvXoVUVFR+OqrrzB8+HDZpMeAgAAcPnwYd+7cQVxcHEaMGIG4uDhZm2XFp1USERFpCR8fH6Snp2PevHlITk5GixYtEB4eDltbWwBAcnIyEhMTZfWrVauGiIgITJgwAY6OjqhZsya8vb2xYMECWZ3MzEyMHj0aKSkpMDExgb29PaKiotCuXTuVYpMIr9FN8O+//6J27drQ1dUtbxMyegY2r90GVR6uFnaaDoG0yJG4DZoOgbSMvnnDCm2/Qc3WamvrbvpFtbWlSa/Vw1C3bl11xUFERKQ1iirRMyDUpUwJg6mpaZlvq+QkSCIiettxjp5YmRKG5cuXV3AYREREpM3KlDAMGTKkouMgIiLSGhySECtTwpCdnV3mBo2NjcsdDBERkTbgkIRYmRKGGjVqlDqHoXjpysLCQrUERkRERNqjTAlDZGRkRcdBRESkNdT58KnKokwJQ6dOncrUWFxc3OvEQkREpBXU+fCpyqLMS0OXJCsrC2vXrkXbtm3h4OCgjpiIiIhIy5Q7YTh27BgGDRoEa2trrFq1Cj179kRMTIw6YyMiItIIQRDUtlUWKq30eP/+fYSEhCAoKAhPnz6Ft7c38vPzsXv3btjZcSlfIiKqHHhbpViZexh69uwJOzs7XL16FatWrcJ///2HVatWVWRsREREpCXK3MNw5MgRTJw4EePGjUPjxo0rMiYiIiKNqkxDCepS5h6GkydP4vHjx3B0dET79u2xevVqPHz4sCJjIyIi0ogiQVDbVlmUOWFwdnbGpk2bkJycjDFjxmDnzp2wsbFBUVERIiIi8Pjx44qMk4iI6I3hpEcxle+SqFKlCoYPH45Tp07h8uXLmDp1KhYtWgQLCwv06dOnImIkIiIiDXutdRiaNm2KJUuW4P79+9ixY4e6YiIiItKoIghq2yoLlW6rLImuri769euHfv36qaM5IiIijapMQwnq8torPRIREVHlp5YeBiIiosqkMt3doC5MGIiIiBTw4VNiHJIgIiKiUrGHgYiISAGHJMSYMBARESngXRJiHJIgIiKiUrGHgYiISAEnPYoxYSAiIlLAIQkxJgxEREQKmDCIcQ4DERERlYo9DERERArYvyAmEdjvojVyc3MRGBgIf39/SKVSTYdDGsbPA72MnwfSNCYMWiQ7OxsmJibIysqCsbGxpsMhDePngV7GzwNpGucwEBERUamYMBAREVGpmDAQERFRqZgwaBGpVIo5c+ZwQhMB4OeB5PHzQJrGSY9ERERUKvYwEBERUamYMBAREVGpmDAQERFRqZgwEBERUamYMBC9IRKJBPv27dN0GCLu7u7w8/PTdBha6fjx45BIJMjMzAQAhISEoEaNGuVub+jQoejXr59aYtM2iu8VVT5MGFSUkpKCCRMmoGHDhpBKpahbty569+6NP//8U9OhlUhbv6jeFoGBgXByckL16tVhYWGBfv36ISEhocT6Y8aMgUQiwfLly1/73O7u7pBIJJBIJJBKpWjSpAkWLlyIwsLC126bXoiOjoauri66d+9e7jbu3bsn+zmVtM2dOxcrVqxASEiI+oIvo+Iv8+KtVq1a6NGjBy5evPjGY6G3FxMGFdy7dw8ODg44duwYlixZgsuXL+PQoUPo3Lkzvvzyy3K1KQgCCgoKROV5eXmvGy6pyYkTJ/Dll1/izJkziIiIQEFBATw9PfH06VNR3X379uHs2bOoXbu22s4/atQoJCcnIyEhARMnTsSsWbPwww8/qK39d11QUBAmTJiAU6dOITExsVxt1K1bF8nJybJt6tSpaN68uVzZtGnTYGJi8lo9FK8rISEBycnJ+OOPP5CRkYHu3bsjKytLY/HQ24UJgwq++OILSCQSnDt3Dh9//DGaNGmC5s2bY8qUKThz5ozsr4y4uDjZMZmZmZBIJDh+/DiA/2X6hw8fhqOjI6RSKU6ePAl3d3eMHz8eU6ZMgbm5Obp16wYAuHr1Knr27Ilq1arB0tISvr6+SEtLk7Xv7u6OiRMnYvr06TAzM4OVlRXmzp0r21+/fn0AwEcffQSJRCJ7TWV36NAhDB06FM2bN0fr1q0RHByMxMRExMbGytVLSkrC+PHjsX37dujr6yttKy0tDR999BGqVKmCxo0bIywsrNTzV6lSBVZWVqhfvz7Gjx+Prl27ynqM8vLyMH36dNjY2KBq1apo37697LMGAOnp6fj0009Rp04dVKlSBS1btsSOHTtKvV4TExNs3bq11Njedk+fPsWvv/6KcePGoVevXuX+619XVxdWVlayrVq1atDT0xOVKQ5JuLu7Y8KECfDz84OpqSksLS2xceNGPH36FMOGDUP16tXRqFEjHDx4UO58pf1eKImFhQWsrKzQrl07LF26FCkpKThz5gyAFz0tbm5uMDIyQt26dTFx4kS5pPjnn3+Go6MjqlevDisrK3z22WdITU0t8VzPnz/Hhx9+iA4dOuDRo0cqvqOkjZgwlNGjR49w6NAhfPnll6hatapov6p/NUyfPh2BgYG4du0aWrVqBQDYsmUL9PT08Ndff2HDhg1ITk5Gp06d0KZNG8TExODQoUN48OABvL295drasmULqlatirNnz2LJkiWYN28eIiIiAAB///03ACA4OBjJycmy11R+xX+RmZmZycqKiorg6+uLr776Cs2bNy/x2ICAAHh7e+PSpUvo2bMnPv/8c5V/mRoZGSE/Px8AMGzYMPz111/YuXMnLl26hIEDB6J79+64efMmACAnJwcODg44cOAA4uPjMXr0aPj6+uLs2bNK2965cye8vb2xdetWDB48WKW43kahoaFo2rQpmjZtikGDBiE4OBhvei27LVu2wNzcHOfOncOECRMwbtw4DBw4EC4uLjh//jy8vLzg6+uLZ8+eAUCZfy+UxsjICACQn5+Py5cvw8vLC/3798elS5cQGhqKU6dOYfz48bL6eXl5mD9/Pi5evIh9+/bh7t27GDp0qNK2s7Ky4Onpiby8PPz5559y/1boLSZQmZw9e1YAIOzZs6fEOnfv3hUACBcuXJCVZWRkCACEyMhIQRAEITIyUgAg7Nu3T+7YTp06CW3atJErmz17tuDp6SlX9u+//woAhISEBNlxH3zwgVwdJycn4euvv5a9BiDs3bu3rJdKr1BUVCT07t1b9J4vXLhQ6Natm1BUVCQIgiDY2toKP/74o1wdAMKsWbNkr588eSJIJBLh4MGDJZ6vU6dOwqRJkwRBEITCwkLh4MGDgoGBgTB9+nTh1q1bgkQiEZKSkuSO6dq1q+Dv719imz179hSmTp0qOseaNWsEExMT4dixY698DyoTFxcXYfny5YIgCEJ+fr5gbm4uREREyPYX/3vNyMgQBEEQgoODBRMTk1LbnTNnjtC6dWtR+ZAhQ4S+ffvKXiv++y0oKBCqVq0q+Pr6ysqSk5MFAMLp06cFQSjb7wVFiteRlpYm9OnTR6hevbrw4MEDwdfXVxg9erTcMSdPnhR0dHSE58+fK23z3LlzAgDh8ePHcue4fv260Lp1a6F///5Cbm6u8jeI3kp6GslS3kLC///VIZFI1NKeo6NjqWWxsbGIjIxEtWrVRHVv376NJk2aAICsh6KYtbX1K7sKqfzGjx+PS5cu4dSpU7Ky2NhYrFixAufPny/18/Hyz6pq1aqoXr16qT+rtWvX4qeffpLNa/H19cWcOXPwxx9/QBAE2eegWG5uLmrWrAkAKCwsxKJFixAaGoqkpCTk5uYiNzdX1Eu2e/duPHjwAKdOnUK7du1KfyMqgYSEBJw7dw579uwBAOjp6cHHxwdBQUHw8PAo9fjExETY2dnJXn/zzTf45ptvVI7j5c+Erq4uatasiZYtW8rKLC0tAUD2OSnr7wVl6tSpA+DFUEzjxo2xa9cuWFhYIDY2Frdu3cL27dtldQVBQFFREe7evYtmzZrhwoULmDt3LuLi4vDo0SMUFRUpfR88PDzg5OSEX3/9Fbq6uiq/H6S9mDCUUePGjSGRSHDt2rUSb4vS0XkxwiO81KVZ3HWsSNmwhmJZUVERevfujcWLF4vqWltby/5fcbxcIpHI/jGT+kyYMAFhYWGIioqS/eIFgJMnTyI1NRX16tWTlRUWFmLq1KlYvnw57t27Jysvz8/q888/x8yZMyGVSlG7dm3ZL+GioiLo6uoiNjZW9Iu5+Mtk6dKl+PHHH7F8+XK0bNkSVatWhZ+fn2hSbZs2bXD+/HkEBwfDyclJbYmxNtu8eTMKCgpgY2MjKxMEAfr6+sjIyICpqekrj69du7bcfKXydrsr+0y8XFb8syj+nJT194IyJ0+ehLGxMWrVqgVjY2NZeVFREcaMGYOJEyeKjqlXrx6ePn0KT09PeHp64ueff0atWrWQmJgILy8v0Wfpww8/xO7du3H16lW5xIfefkwYysjMzAxeXl5Ys2YNJk6cKPpyz8zMRK1atQC8GGO0t7cHALlfKKpq27Ytdu/ejfr160NPr/w/Kn19fd6G9xoEQcCECROwd+9eHD9+HA0aNJDb7+vrK/qLtHjcediwYa99fhMTE7z33nuicnt7exQWFiI1NRWurq5Kjz158iT69u2LQYMGAXjxxXDz5k00a9ZMrl6jRo2wdOlSuLu7Q1dXF6tXr37tuLVZQUEBtm7diqVLl8LT01Nu34ABA7B9+3a58Xtl9PT0lP5cKtrr/F5o0KCB0vlWbdu2xZUrV0q8nsuXLyMtLQ2LFi1C3bp1AQAxMTFK6y5atAjVqlVD165dcfz4cbneB3q7cdKjCtauXYvCwkK0a9cOu3fvxs2bN3Ht2jWsXLkSzs7OMDIyQocOHbBo0SJcvXoVUVFRmDVrVrnP9+WXX+LRo0f49NNPce7cOdy5cwdHjhzB8OHDVUoA6tevjz///BMpKSnIyMgodzzvqi+//BI///wzfvnlF1SvXh0pKSlISUnB8+fPAQA1a9ZEixYt5DZ9fX1YWVmhadOmFRZXkyZN8Pnnn2Pw4MHYs2cP7t69i7///huLFy9GeHg4AOC9995DREQEoqOjce3aNYwZMwYpKSklthcZGYndu3dX+oWcDhw4gIyMDIwYMUL0s/v444+xefNmTYdYInX9XnjZ119/jdOnT+PLL79EXFwcbt68ibCwMEyYMAHAi14GAwMDrFq1Cnfu3EFYWBjmz59fYns//PADPv/8c3Tp0gXXr18vV0ykfZgwqKBBgwY4f/48OnfujKlTp6JFixbo1q0b/vzzT6xbtw7Ai3u68/Pz4ejoiEmTJmHBggXlPl/t2rXx119/obCwEF5eXmjRogUmTZoEExMT2fBHWSxduhQRERGoW7eurOeDym7dunXIysqCu7s7rK2tZVtoaKimQ0NwcDAGDx6MqVOnomnTpujTpw/Onj0r+ytw9uzZaNu2Lby8vODu7g4rK6tXrjTYtGlTHDt2DDt27MDUqVPf0FW8eZs3b4aHhwdMTExE+wYMGIC4uDicP39eA5GVTl2/F17WqlUrnDhxAjdv3oSrqyvs7e0xe/Zs2RBHrVq1EBISgl27dsHOzg6LFi0qdS2QH3/8Ed7e3ujSpQtu3LhRrrhIu0gE4Q3fQ0RERERvHfYwEBERUamYMBAREVGpmDAQERFRqZgwEBERUamYMBAREVGpmDAQERFRqZgwEBERUamYMBAREVGpmDAQERFRqZgwEBERUamYMBAREVGp/g9h1ASTMWlKZwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Построенна корреляционная матрица для выявления связей между данными\n",
"corr_matr = nums.corr() # Создание переменной для удобного выполнения задания\n",
"sns.heatmap(corr_matr, annot=True) # Ввод данных\n",
"plt.title('Корреляционная матрица \\n', fontsize=14) #создание заголовка\n",
"plt.show() #Вывод корреляционной матрицы"
]
},
{
"cell_type": "code",
"execution_count": 191,
"id": "e75f6687-73e8-4829-9c6d-11683ae36a7f",
"metadata": {},
"outputs": [],
"source": [
"# Сохренение датасета с выполненным модулем А в формате CSV\n",
"df.to_csv('module_a.csv',index=False)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}