{ "cells": [ { "cell_type": "markdown", "id": "76ded6e1", "metadata": {}, "source": [ "# Prevent overlapping labels in plotnine with automatic positioning\n", "\n", "To prevent labels from overlapping on top of each other, ggplot has ggrepel, while plotnine has [adjustText](https://adjusttext.readthedocs.io/en/latest/).\n", "\n", "## Read in our data" ] }, { "cell_type": "code", "execution_count": 2, "id": "579d4bae", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrycontinentgdp_per_capitalife_expectancypopulation
0AfghanistanAsia66354.86322856302
1AlbaniaEurope419574.2003071856
\n", "
" ], "text/plain": [ " country continent gdp_per_capita life_expectancy population\n", "0 Afghanistan Asia 663 54.863 22856302\n", "1 Albania Europe 4195 74.200 3071856" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "from plotnine import *\n", "\n", "df = pd.read_csv(\"countries.csv\", nrows=10)\n", "df.head(2)" ] }, { "cell_type": "markdown", "id": "73d7c9b8", "metadata": {}, "source": [ "## The problem\n", "\n", "We have labels that conflict with both points and other labels. They are drawn on top of each other, which isn't ideal." ] }, { "cell_type": "code", "execution_count": 3, "id": "1aa968ea", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGvCAYAAABFKe9kAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABj0UlEQVR4nO3dd1gUV9sG8HtZWMoCCooIhiLFgmLvKCqWmFjwNWAssfdu7F2xxxYTJIqJGgugJiom6hsLWAIqmFgi6quiFAsWIkqRujvfH1zM5woqrOCy7v27Li+Zsmee2XkiT86cmSMRBEEAERERkRbR03QARERERCXFAoaIiIi0DgsYIiIi0josYIiIiEjrsIAhIiIircMChoiIiLQOCxgiIiLSOixgiIiISOvoazqAspScnFzqbUokEhgbGyMzMxO6/A5AmUyGnJwcTYehEcyBfMwB3c4BXb7+AHMAKNscqFy58jv3YQ9MCenp6cHExAR6err91RkaGmo6BI1hDuRjDuh2Dujy9QeYA4Dmc0B3v3kiIiLSWixgiIiISOuwgCEiIiKtwwKGiIiItA4LGCIiItI6LGCIiIhI67CAISIiIq3DAoaIiIi0DgsYIiIi0josYIiIiEjrlJu5kB4+fIhNmzbh9u3bMDExwZdffonOnTsDABISEuDv74/4+HhYW1tj5MiRqF+/voYjJiIiIk0pFz0wCoUCS5cuhZubG3bt2oXZs2dj27ZtiImJQV5eHpYsWYJmzZohJCQEffr0wYoVK/D8+XNNh01EREQaUi4KmAcPHuDJkyfw9fWFVCqFi4sLWrRogePHj+Pq1avIzs6Gj48PDAwM0KZNG9jb2yMyMlLTYRMREZGGlIsCRhCEQtORC4KA+Ph4JCYmwtHRUWXGTycnJyQkJHzoMImIiKicKBdjYKpVq4ZKlSphz5498PX1xd27d3H+/HlYWFggMzMTcrlcZX+5XI4nT54UaicpKQlJSUnisqGhIWxtbUs1VqlUqvK3rpJIJDr7HTAH8jEHdDsHdPn6A8wBQPM5UC4KGH19fcybNw+bN2/G4MGDUa1aNXTo0AEJCQkwNjZGRkaGyv4ZGRkwNjYu1E5gYCD8/PzE5Tlz5mDZsmVlErO5uXmZtKtNZDKZpkPQKOYAc0DXc0DXrz/AHNBkDpSLAgYA7O3tsXTpUnF59erVqFmzJuzt7bFv3z4olUrxNlJcXBw8PT0LtTFq1Cj06NFDXDY0NERKSkqpximVSmFubo7U1FQoFIpSbVubyOXyQoWlrmAO5GMO6HYO6PL1B5gDQNnmgIWFxTv3KTcFTFxcHGxtbaGnp4czZ87gypUrGDVqFExMTCCTybB//354e3sjKioKCQkJ8PDwKNSGjY0NbGxsxOXk5OQySyyFQqGzSQvkj1HS5fMHmAPMAd3OAV7/fMwBzZ17uSlgzpw5g6NHjyIvLw8uLi5YvHix2DU3b948bNiwAbt370aVKlUwe/ZsVKxYUbMBExERkcZIhNcf//mIJCcnl3qbUqkUFhYWSElJ0dmqGwDMzMyQlpam6TA0gjmQjzmg2zmgy9cfYA4AZZsDlStXfuc+5eIxaiIiIqKSYAFDREREWocFDBEREWkdFjBERESkdVjAEBERkdZhAUNERERahwUMERERaR0WMERERKR1WMAQERGR1mEBQ0RERFqHBQwRERFpHRYwREREpHVYwBAREZHWYQFDREREWocFDBEREWkdFjBERESkdVjAEBERkdZhAUNERERahwUMERERaR0WMERERKR1WMAQERGR1mEBQ0RERFqHBQwRERFpHRYwREREpHVYwBAREZHWYQFDREREWocFDBEREWkdFjBERESkdVjAEBERkdaRCIIgaDqIspKamgpDQ8NSbVMikUAmkyEnJwcf8Vf3Tvr6+sjLy9N0GBrBHMjHHNDtHNDl6w8wB4CyzYHi/O7WL5MjlxM5OTnIyckp1TalUilkMhkyMjKgUChKtW1tYmZmhrS0NE2HoRHMgXzMAd3OAV2+/gBzACjbHChOAcNbSERERKR1WMAQERGR1mEBQ0RERFqHBQwRERFpHRYwREREpHVYwBAREZHWYQFDREREWocFDBEREWkdFjBERESkdVjAEBERkdZhAUNERERahwUMERERaR0WMERERKR1WMAQERGR1mEBQ0RERFqHBQwRERFpHRYwREREpHVYwBAREZHWYQFDREREWocFDBEREWkdFjBERESkdVjAEBERkdZhAUNERERahwUMERERaR0WMERERKR1WMAQERGVglWrVqFdu3bi8vjx4zFw4EDNBfSRYwFDRETl2oULF2BtbY2+ffuWarshISFwdnYu1TZftXz5cvj7+5dZ+7pOX9MBFHj8+DECAwPxv//9D1KpFI0aNcKoUaNgYmKCp0+fwt/fHzdu3ECFChUwcOBAeHp6ajpkIiL6AIKCgjB8+HAEBQXh0aNHqFq16gc9fk5ODmQyWYk/Z25uXgbRUIFy0wMTEBAAU1NTbNu2DRs3bkRycjKCgoIAAGvWrIGNjQ127dqFSZMmISAgAAkJCRqOmIiIylp6ejpCQ0MxZMgQdOrUCSEhIeK2onpQjhw5AisrK3E5JiYGPXv2hKOjI6pXr44OHTrg8uXLiIyMxMSJE5GamgorKytYWVlh8eLF+O2331CrVi0sWrQI48aNQ/Xq1TFlyhQAwOLFi9G8eXPY29ujYcOGmD9/PnJzc98Y++u3kMLCwtC1a1c4OzujRo0a6NevH+Li4krrq9I55aaAefz4MTw9PWFoaAhTU1O0atUKCQkJePjwIW7duoUBAwbA0NAQ7u7uaNasGcLDwzUdMhERlbGDBw/C1dUVLi4u8PX1RXBwMARBKPbnx4wZA1tbWxw/fhwnTpzAxIkToa+vj6ZNm2Lp0qUwMzNDTEwMDh06hODgYIwaNQr//vsvAgICYGJigvDwcEydOhUAIJfL4e/vj4iICKxYsQI//vgjNm7cWOxYXr58iTFjxuD48ePYt28f9PT0MHjwYCiVyhJ/L1SObiH16NEDp0+fRp06dZCbm4vIyEg0bdoUCQkJsLKygqmpqbhv9erV8c8//xRqIykpCUlJSeKyoaEhbG1tSzVOqVSq8reukkgkOvsdMAfyMQd0Owc+1PUPDg5G7969IZVK0alTJ0ycOBHnz59H69atoaeX///gr8bx+rr79+9jwoQJqFWrFgCgRo0a4r4VK1aERCKBra0t+vfvj+fPn0OhUIjbDx48iFWrVkFfP/9X5YwZM8RtLi4uePDgAYKCgjBx4kQA+d/Jq9+Lnp6eynLPnj1Vzm3Dhg1wdXXF7du34ebm9v5f1gem6X8Dyk0B4+7ujrCwMPTt2xdKpRINGzZEt27dEBERoVK8APlVcGZmZqE2AgMD4efnJy7PmTMHy5YtK5N4eW8Tat0T/pgwB5gDup4DZX39b968iYsXL+L333+HhYUFAKBPnz7Yu3cvunfvDrlcDolEIm4DIP6+KFg3depUTJo0Cfv370fHjh3h6+sr3nZ69fPXrl1TKV4AICUlBS9fvoSDgwMAYM+ePfj+++9x584dpKenIy8vD+bm5uKxjI2NIZVKxWWZTAYDAwNx+fbt21iwYAGioqKQnJws9ry8ePFC5Ry0iSb/DSgXBYxCocCiRYvQsWNHrFy5Enl5efjxxx+xbt06eHp6IiMjQ2X/ly9fwtjYuFA7o0aNQo8ePcRlQ0NDpKSklGqsUqkU5ubmSE1NLZTsukQulxe6LrqCOZCPOaDbOfAhrn9AQADy8vJUetIFQYChoSGWLl2KzMxMKJVKlX/nC34u+HvSpEno2rUrjh07hqNHj2LhwoX46aef0K1bN2RkZEAQBKSkpKBChQr4999/VY5f0KOSkpKC6Oho9O/fH7NmzcKSJUtgYWGBQ4cOYe3ateKxMjMzoVAoxOWcnBzk5uaKy127dsUnn3yCdevWoWrVqlAqlfDw8MCzZ89K/XfVh1CWOVCcgq5cFDAZGRlITk5Gt27dIJPJIJPJ8Pnnn2Pu3LkYMGAAnj59ivT0dLGyvnv3rlgRv8rGxgY2NjbicnJycpn946JQKHT2Hy4g/x8RXT5/gDnAHNDtHCjr65+Xl4fdu3dj8eLFKu9WAYCBAwfil19+wSeffIL09HSkpqZCLpcDgDi84NXYqlevjlGjRmHUqFEYOXIkgoKC8Nlnn0FfX1+8hgsWLMDkyZPF8TUSiQQTJkyAiYkJFAoFoqKiYGdnh8mTJwPIL2ITEhJUvgdBEFSWlUqluPzs2TPcvn0ba9euRcuWLQEA58+fF/fTxjzS9L8B5WIQr7m5OapWrYojR44gNzcXWVlZOHr0KBwdHWFrawsXFxfs2rUL2dnZiImJQXR0NLy8vDQdNhERlZFjx47hxYsX6N+/P2rXrq3yp3v37ggKCkLjxo1hbGyMZcuWIS4uDvv27cPu3bvFNjIzMzFz5kxERkbi3r17iIqKwqVLl8RxMHZ2dsjIyMCZM2fw6aefYtOmTejQoQMMDQ3RvXt3zJs3T2zLyckJ9+/fx4EDBxAXF4fAwEAcOHCg2OdTsWJFWFpaYufOnbh79y7+/PNPLFiwoPS+MB1ULgoYAJg9ezZiYmIwaNAgDBs2DM+ePcPXX38NAJg+fToePHiA/v37Y/369Rg7dmyRPTBERPRxCAoKgqenZ5HjjLp164bLly/j4cOH2LhxI06cOIG2bdti//79KgNtpVIpUlJSMG7cOLRo0QLDhw9Hhw4dxH2aNWuGwYMHY8SIEahVqxZiY2Oxe/duVKlSBU2bNoVEIhHb6tKlC0aPHo1Zs2ahffv2iI6Oxvz584t9Pnp6eti8eTOuXLkCT09PzJ8/HwsXLnyPb4gkQkmeR9MyycnJpd5mwQCtlJQUrezyKy1mZmZIS0vTdBgawRzIxxzQ7RzQ5esPlN8cSExMROPGjREeHg53d/cyPVZZ5kDlypXfuU+56YEhIiLSZuVhyoNq1aohJiYGtWvXLtUYyiMWMERERKWgYMqDc+fO4dGjRx/8+Dk5OZBKpbC2thbfXfMxYwFDRET0nspiyoNly5ahb9++haY8WLVqFQCgUaNGWLt2rcqUB4mJibCyssLVq1cB5D+NNWnSJDRu3Bh2dnZo0aIFAgMDP8A3UvY+/hKNiIiojL0+5cHcuXMxefJklYHAbzNmzBi4u7tj9erV0NPTw6RJk+Dv7w+FQgE9PT0olUocPnwYDg4O4iPjQP67cqZNm4Zp06YV2a5SqYStrS22bNkCCwsLXLhwAVOnToW1tXWhNwNrG/bAEBERvaegoCD4+PgAALy8vJCWloazZ88W+/P379+Hp6cnXF1d8fz5c0RFRam8TwYANm7cCGtra5W307dp0wZjx45F9erVUb169ULtGhgYYObMmWjQoAEcHBzg4+ODPn364ODBg+9zuuUCe2CIiIjeQ2xsLC5duoTt27cDAPT19eHt7Y2goCB4eHgUq40xY8bg66+/xi+//AIrKyvo6+sjLy9PZZ+EhIRCn6tfv/47296yZQuCg4Px4MEDZGZmIjc3F3Xr1i1WXOUZCxgiIqL3EBQUhLy8PJXHlgumPFi5ciX09PQKzaCdm5ursjxjxgx88cUXOH78OA4ePFioeAFQ5JNFJiYmb43twIEDWLRoEfz8/NCkSROYmpoiICAAf//9d0lOsVxiAUNERKSmvLw87Nmz541THuzfv1+c8iAjI0McvxITE1OoLWdnZzg7O2P06NFo3bo1bt68CUNDQ+Tl5UGpVKr14ruoqCg0bdoUQ4cOFdfFx8eXuJ3yiAUMERGRmo4ePSpOefD6W4MLpjzYu3evOOXBiBEjcPHixUJTHixatAg9evSAvb09Hj58iOzsbHh7e6NOnTp48eIFAgIC8L///Q9SqRTGxsbv7Hkp4OTkhL179yI8PBwODg7Yu3cvLl26BHt7+1L9HjSBBQwREZGadu3a9dYpD/z9/cUpDxYtWoRdu3ahTZs2mDFjBqZMmQJAdcqDp0+fwtLSEl27dsWiRYtgZGQEIH/S4xEjRuDZs2eYPn26ypQJbzNo0CBcvXoVI0aMgEQiQa9evTBkyBCEhYWV3pegIZxKoITK6+ujPzRdfo04cyAfc0C3c0CXrz/AHAA4lQARERFRibGAISIiIq3DAoaIiIi0DgsYIiIi0josYIiIiEjrsIAhIiIircMChoiIiLQOCxgiIiLSOixgiIiISOuwgCEiIiKtwwKGiIiItA4LGCIiItI6LGCIiIhI67CAISIiIq3DAoaIiIi0DgsYIiIi0josYD4SkZGRsLKywosXLwAAISEhcHZ2LvPjJiYmwsrKClevXi3zYxERERXQ13QAZUkmk8HQ0LBU25RIJAAAuVwOQRBKte3iOH/+PLy8vNC5c2eEhoaK642NjQEApqamMDMzg5GRESQSCczMzMokDn19fZiZmaFWrVqIj49H5cqVoa//UaeTSNM5UF4U5IAuYg7o9vUHmAOA5nPgo/6Nk5OTg5ycnFJtUyqVQiaTISMjAwqFolTbLo4ff/wRw4cPR1BQEG7fvo2qVasCADIzMwEA6enpkEqlyMrKgiAISEtLK5M4zMzMxLblcrl4fF2g6RwoL17NAV3DHNDt6w8wB4CyzYHidD7wFpIWSU9PR2hoKIYMGYJOnTohJCTknZ85cuQImjVrhk8++QS+vr548OCBuC0uLg4DBgyAq6srrK2tYWNjg44dOyIhIUHcp1GjRvj2228xceJEODo6okGDBtixY4e4/fVbSAqFApMmTULjxo1hZ2eHFi1aIDAwsBS/hY8Tb8UREZUMCxgtcvDgQbi6usLFxQW+vr4IDg5+a9dlZmYmvv32WwQEBODw4cNITU3FiBEjxO0ZGRmoXbs20tPToVQqkZeXhytXrqBz58549uyZuN/GjRvRoEEDhIeHY8iQIZg+fTpu3bpV5DGVSiVsbW2xZcsWREREYNq0aVi+fLnK7a4P5cKFC7C2tkbfvn3fuI+VlRWOHDnyAaMCxo8fj4EDB6qsq1atGmJiYlC7du1SPVZ5KIwaNWqETZs2lXq7r4/7IiLdwgJGiwQFBcHHxwcA4OXlhbS0NJw9e/aN++fm5mLlypVo2rQp6tevjw0bNuDChQu4ePEiAKBu3bpISUkpVAS9ePEChw8fFpc7duyIoUOHwsnJCRMnTkSlSpVw+vTpIo9pYGCAmTNnokGDBnBwcICPjw/69OmDgwcPvte5F6cYeV1QUBCGDx+Oc+fOYcGCBWjXrl2hfWJiYuDl5YW8vLz3iq/AtWvX8Pvvv+Py5cslui8ulUphbW2tkXFE3t7esLKyEv+4ublh6NChuHfv3gePhYiouFjAaInY2FhcunQJvXr1ApA/eMrb2xtBQUFv/Iy+vj4aNmwoLru6uqJChQpi70l6ejoiIyOLvH+bkZEh/uzm5ib+LJFIUKVKFTx58uSNx92yZQs6dOiAWrVqwcHBATt37lS5daWOV4uRR48evXP/12+3xcTEiNsK/s/9xIkT6NevH5ycnBAVFYX09HSMHj0aDg4OqFOnDjZt2gRvb2/MnTtX/Gx2djbmz5+PatWq4ZNPPsGnn36KyMhIAMCSJUvQrl07DB06FJ06dYKLiwscHBzQu3dvMeZVq1Zhz549+O9//ysWDJGRkYV6SgpiPHPmDDp27Ah7e3t8/vnniI2NFWMpuAXo5uYGBwcHdOrU6Y2F5bsMGDAAMTExuHr1Knbs2IGHDx9izJgxarVVoLTHnxERveqjHsT7MQkKCkJeXh7c3d3FdYIgwNDQECtXrlSrzUWLFuHZs2fQ09ODUqkU1ysUCrRo0UJcLqpX4NX9X3XgwAEsWrQIfn5+aNKkCUxNTREQEIC///5brRiB/y9GTpw4gSdPniAkJARff/21uD0yMhI9e/bEvn37sHjxYty6dQvW1tawt7eHi4sLqlSpIt7CsrKyEj+3dOlSXLt2DatWrYKbmxvmz5+PP//8E1ZWVnj48CHWrFmD7OxsnD17Fn369IG7uzt8fX0RHR2NkydPQi6X4/fff4evry9yc3Ohp6f6/wOpqanQ19fH2bNnMWbMGBw4cABjx47FrVu3kJaWhu+//x4AYGFhgQsXLgAAvvjiC2RnZ8PGxgYAsHz5cvj5+aFy5cro0KEDfH190aZNG/z222+Qy+WoXr06fHx84OjoiEePHqFfv35wdHREQkICatWqpfI9vY2xsTGsra0BAFWrVsWwYcMwbdo0cbtCocCUKVMQERGBJ0+eoFq1ahgzZgwGDRok7jN+/HikpqaiQYMG2Lp1KwwNDcXrnpGRgZEjR+Lo0aMwNzfH5MmTMWzYMAD5t7kaN26M8PBwMb9fvHgBFxcXhIaGwsPDAwBw/PhxzJs3Dw8fPkTjxo3x5ZdfqpzDs2fPMGvWLJw7dw4vXryAo6MjJk+eLBb9RPRxYQ+MFsjLy8OePXuwePFinDx5Uvxz6tQpWFtbY//+/W/83OXLl8Xl2NhYvHjxAjVq1AAAREdHY/jw4Rg6dKjK59q0aYMGDRqoFWtUVBSaNm2KoUOHol69enByckJ8fLxabRUo7tifgl/2x48fR3JyMtLT0wEAs2bNgpGREezs7BATE4OtW7cCAGbOnAkAsLa2hoGBAfbs2YOMjAw0a9YMJ0+exLp165CdnS22f//+fURFRcHY2Bht2rRB9erVMW7cOLi6ugLIv332KolEgh49esDDwwMRERG4f/8+TE1NYWRkBENDQ1hbW8Pa2hoymUx8imvNmjUIDw9Ho0aNAAAjRoyAh4cHatasCTMzM9y/fx916tTBsWPHYGxsjKioKGzZsgVz5szB9evXoVAoYGxsjBMnTmDGjBlYtGhRib/vlJQUHDx4UIwBKHps04IFCwqNbTpz5gzu3LmDX3/9VaV3cMOGDahTpw7Cw8MxceJEzJ07F6dOnSp2TA8ePMCQIUPw6aef4uTJk/jqq6+wZMkSlX2ys7NRv359BAcH48yZMxgwYADGjh0r3jIloo+L2gWMrj73rgnHjh3Dixcv0L9/f9SuXVvlT/fu3d94G8nAwACzZ8/G33//jStXrmDChAlo0qSJ+IvJyckJhw8fRr9+/RAUFIRmzZpBLpe/10BSJycnXL58GeHh4bhz5w5WrFiBS5cuqd0eUPyxP3PmzIGHhwekUikyMzNx7949ZGVlwczMDLVr10Zqaiqsra1haWkJACpFWnx8PHJzc6Gvr49169ahZs2a6NGjB2xtbcV9rl+/DqVSifT0dJiamsLOzg4ODg64efMmgML/Tejr68Pe3l4csPvHH3+88RwLisrq1avD2dkZ/fv3BwCVcShSqRQA0LVrV/z555+4f/8+gPxbNQqFAkePHoVCoUDLli1Rq1YtdO7cGePGjSvGNwxs27YNDg4OcHBwQI0aNRAbG4vvvvtO3F7U2KaBAwcWGttkYmKCb7/9FrVq1UKtWrXE9c2aNcOkSZPg7OyMESNGoHv37iUa2Ltt2zY4Ojpi8eLFcHFxEcdWvcrGxgbjxo2Du7s7HB0dMWLECHh5eb33+CsiKp/UvoVkZ2eHwYMHY8iQIR/kja+6LCgoCJ6enjA3Ny+0rVu3bvD398e1a9cKbTM2NsaECRMwevRoJCUloUWLFli/fr24ffHixZg0aRK6du0KS0tLTJgw4b0HkQ4aNAhXr17FiBEjIJFI0KtXLwwZMgRhYWFqtVcw9mf79u0AVMf+FNxaKFAwVicoKEgc1+Po6Ajg/295paamivubmJgUOp6rqyuMjIyK3CcjIwN6enowNjbG5cuX8eLFCygUCpw+fRozZsyApaUlnjx5AqVSCYlEAoVCgZ9++kkcC/K2cUAvX74EAAwePBjPnz8Xe36KGmukVCpx8+bNQrfxJBIJ9PX1VdY3adLkjcd81RdffCHebnr69CnWr18PX19fhIWFwdTUFED+2Kbg4GA8ePAAmZmZyM3NRd26dVXacXNzg0wmK9R+06ZNVZabNGmCzZs3Fys2ALh9+7ZKj1BRbSoUCqxfvx4HDx5EUlKS+B6ogpc8EtHHRe3fVv3798e2bduwYsUKtGnTBsOGDYOPjw//sSgDbxuo26hRIzx9+hQAMHLkSHF93759xSd2unXrVuRn7e3tceDAAZV1BeMSChTV/X7q1CnxBUb29vbi8YH8lw/5+/vD399f5TPz589/4zm8zbvG/rxa1BkYGIi328aMGYONGzciODgYNjY22Lp1K4KDg7F//37xls+rHB0doaenJ952AvKLnVd7QOrVqwelUgmlUgkXFxekpKRAoVCIA2+PHz+OwYMH4+LFizA2NsbChQvRokULREVFYcaMGWIhI5PJCg2cLigshw0bhnbt2uHatWsYO3bsGwfCFrzA8HXqvlDL3NwcTk5OAPJ70davX4+6deviwIEDGDBgQJFjmzZv3ozz58+rtFNUUfguBWOHXu3Bys3NLXE7GzZswObNm7F06VLUrl0bJiYmmDdvnlptEVH5p/YtpG+++Qb37t1DaGgoKlWqhOHDh8PGxgajRo1CdHR0acZIOkqdsT8Ft9s+++wzAICLiwtq164NW1tbmJmZvbEYNDU1RZMmTXDr1i2Eh4fjf//7HyZNmqTyS9XZ2RkeHh7IzMxEcHAwEhIScPHiRXFMTdWqVTFo0CBIJBJMnDgRQ4cOhZubGypUqKByLDs7O1y/fh2xsbH4999/kZubK45VatOmDdzc3GBhYfHW72bYsGEqb6rU19eHgYEBlEqlShGj7uDpgttVWVlZAIoe23T37t1it/fXX3+pLP/9999iIVmpUiUAwOPHj8Xtrz41BuT3jL1+K/L1NqOjo9GlSxf4+vqibt26cHR0xJ07d4odIxFpl/caxKunp4fu3btj3759ePDgARYuXIjIyEi0bNkS7u7uWL9+PZ4/f15KoZKuUWfsT8HttoLbHgXs7e2Rnp6Oy5cvv7HA/umnn6Cvr49+/fqhZ8+e4lgZ4P/nPdm8eTMMDAwwZswYNG3aFL179y5UJOjp6eHQoUO4evUqYmJisHHjRpXtAwYMgIuLCzp27IhatWohOjoa9vb2APJvmcXExGDdunVv/W4qVKiAI0eOwMDAABKJBMbGxpg+fTr09fVx5swZ3Lx5E8ePH0dAQMBb2ymQmZmJx48f4/Hjx4iJicH06dNhZGSE9u3bAyh6bFNJiqPo6Gj4+/vjzp072LJlC3777Texx9DY2BhNmjTB999/j1u3biEyMhIrVqxQ+fzgwYNx9+5dLFq0CLGxsdi3bx92796tso+TkxNOnz6N6Oho3Lp1C1OnTlXpHSSij0upPYX06NEj3Lt3D0+ePIFMJkO1atWwYMECODo64rfffiutw5AOedfYn8uXLxca+xMUFFTkFAvdunVDp06dUKFCBSxfvhzff/99oZ4RGxsbHDhwALVq1UJaWhouXrwo3t4oGBdTpUoVbN26FVWqVIGBgQGaN2+u8su2b9++iIqKQsWKFdG1a1d89dVX6NOnD1q1aiXuU7lyZfzyyy+Ij4/H06dP4eHhgTVr1qB169aYNGkSvvrqK3zxxRdo1aqVSi+LTCbDkiVLxGLH3d0dNWrUwLRp03D37l1MnjwZv//+O2QyGby8vLB8+XIsWLCgWN/1zp07UbduXdStWxf/+c9/8OzZM4SEhMDFxQVA/timrl27YsSIEfj000+RkpKicsvyXcaOHYvLly/Dy8sL69atw+LFi+Hl5SVu/+6776BQKNCxY0fMmzcPs2fPVvn8J598gm3btuHIkSNo164dfv75Z5X38wDAlClTUK9ePfTu3Rs9e/ZElSpVxJ44Ivr4SIT3eJwoLS0NwcHB2Lp1K/766y+4ublhxIgRGDBgACwsLJCamooJEybg9OnT7/0orTqSk5NLvU2pVAoLCwtx/IOu+hgncvvnn38QGxuLhg0bIjU1FWvXrsWpU6eQm5uLu3fviuO7mAP5PsYcKC7mgG5ff4A5AJRtDlSuXPmd+6g9iLdgYB8AfPnll/juu+9UXn4G5A8MHDt2LHbu3KnuYYg+qKVLl+Lp06eQyWSws7ODXC5Hu3btODidiKicUfsW0o0bN7B27VokJSVhy5YthYqXAnXq1MHJkyfVDpDoQ6lXrx6GDBkCKysrZGdnIy0tDV988QXWrl2r6dCIiOg173ULqbzjLaT/Z2Vlhe3bt+Pzzz8vlfZ0uftYW3OgtDEHdDsHdPn6A8wBQPO3kNTugQkLC8O2bduK3Pbzzz/rRK+LOjMka0pMTAw6dOig6TCIiIhKhdoFzNy5c1Xe2/Cqp0+fYt68eWoHpS2KO0OyIAjIy8v7gJEVZm1trfJECxERkTZTu4C5fv36G19T3qhRoyJfbf8xKZgheciQIejUqZPKo7uRkZGwsrLCiRMn0KFDB1SrVg1RUVHw9vbGrFmzMHfuXLi4uMDNzQ07d+5ERkYGJkyYAEdHRzRt2hQnTpxAeno6VqxYga+++gojR45Ez5494eDgADc3N4wdOxb//vuveDxvb2/Mnj0bfn5+cHV1hZubG1atWqUSr5WVFY4cOSIuL168GM2bN4e9vT2aNGmCFStW8I2lRESkNdQuYCQSCV68eFHkNl24JxgaGvrOGZKXLl2K+fPnIzIyUpynZ8+ePbC0tMTRo0cxbNgwTJ8+HcOGDUOzZs0QFhaG9u3bY+zYsejatSv8/f1x9OhRHDhwAH///TdCQkKwe/duPH36FMOHD1c51p49e2BiYoI//vgDCxcuxJo1a946269cLoe/vz8iIiKwbNky7Ny5s0ST6xEREWmS2gVM8+bNERAQUOiXtiAI+OGHH9C8efP3Dq4827Vr1ztnSJ45cybatWuH6tWri6+Gr1OnDqZOnQpnZ2dMnjwZhoaGqFSpEgYMGABnZ2dMnToVKSkpuHnzpkqPSMFsw/Xq1cN3332HiIgIldeku7m5Yfr06XB2dsaXX36JBg0a4MyZM2+Mf+rUqWjWrBns7e3x6aefYty4cZy1l4iItIba74Hx8/ND+/btUa9ePQwePBg2NjZ4+PAhduzYgVu3br31//613c2bN3Hx4kX8/PPPAN48Q3KDBg0KfbagJwbIH8VuaWmJ2rVri+uqVKkCIP919K/2YuXm5iIwMFA8JgDExcWJM4G/2i6QP+blbU9hHThwAD/++CPi4+ORkZEBhUIBMzOzd588ERFROaB2AdOyZUuEhYVhxowZmDlzJpRKJfT09MT1b3ovzMdgy5Ytb50huUBRM/MaGBioLEskEujr66ssAyg06FdfXx+jRo3CwIEDxXXW1tZvbVepVBYZ/4ULFzBmzBjMmDEDXl5eMDMzQ2hoKH744Yc3njMREVF5onYBAwAeHh6IjIxEZmYmUlJSULFixSJ/aX9M8vLysGPHDixZsgRt27ZV2TZw4EDs379fnGX3fbRv3x6nTp2CRCKBQqFA48aNMXv27FJ5kujChQuws7PDlClTxHX37t1773aJiIg+lFKZzNHY2Bi2trYfffECAEePHkVKSgoGDBhQ7BmS1TFo0CDs27cPM2fOhJmZGaysrHD9+nXExcUhPDwcEyZMUHugtJOTE+7fv48DBw4gLi4OmzdvVnlCiYiIqLx7rx6YY8eO4ddff8X9+/eRlZWlsk0ikSAsLOy9giuPdu3ahY4dO8Lc3LxQAdGtWzf4+/uX2iPkrVu3RuvWrdGjRw8sWbIEvr6+yMnJwSeffAIvLy9xpuSS6tKlC0aPHo1Zs2YhOzsbnTp1wpQpU7B69epSiZuIiKisqT2VwOrVqzFz5kw4Ojqidu3akMlkhfYpmOxRUziVQNnR5deIMwfyMQd0Owd0+foDzAFA81MJqN0DExAQgPHjx+P7779XtwlR7969VZZzcnLQpEkT8W2+CQkJ8Pf3R3x8PKytrTFy5EjUr1//vY9LRERE2kntAubZs2fo2bNnqQSxd+9e8WeFQoFhw4aJjyPn5eVhyZIl6Ny5M1asWIHz589jxYoV2LRpEypWrFgqxyciIiLtovYg3u7duyMiIqI0YwEAXLx4EVlZWWjVqhUA4OrVq8jOzoaPjw8MDAzQpk0b2NvbIzIystSPTURERNpB7R6YIUOGYMyYMcjMzESnTp2K7A1p1KhRidsNCwtDmzZtxMeFExMT4ejoqDJg1cnJCQkJCYU+m5SUhKSkJHHZ0NAQtra2JY7hbaRSqcrfukoikejsd8AcyMcc0O0c0OXrDzAHAM3ngNoFTOfOnQEA33zzDb755hvxBWxA/kvdCt5fUhKpqamIjo7GihUrxHWZmZmQy+Uq+8nlcjx58qTQ5wMDA+Hn5ycuz5kzB8uWLStRDMVlbm5eJu1qk6IGbusS5gBzQNdzQNevP8Ac0GQOqF3AnDx5sjTjAACcOnUKNjY2qFmzprjO2NgYGRkZKvtlZGTA2Ni40OdHjRqFHj16iMuGhoZISUkp1RilUinMzc2Rmpr6UYw8j4iIQI8ePRAXF4cKFSoU+3NyubzQdSmrY5U3H1sOqEudHPhYMAd0+/oDzAGgbHOgYP7At1G7gHn9LbSlISwsDB07dlRZZ29vj3379olTFQD5cwB5enoW+ryNjQ1sbGzE5eTk5DJLLIVCoVVJe+HCBXTr1g1eXl4ICQkR1xdMN1DS8xEEocTn37hxY8TExEAul2vVd/cm2pYDpU2dHPjY6HIO8PrnYw5o7txL5U28peHOnTtITExEu3btVNa7u7tDJpNh//79yM3NRUREBBISElQmTaR3CwoKwvDhw3Hu3Dk8evTogx8/NzcXMpkM1tbWKrcbiYiI1PFeBczOnTvRunVrVKlSBebm5oX+lMSJEyfQpEmTQt1G+vr6mDdvHs6fP4++ffsiODgYs2fP5iPUJZCeno7Q0FAMGTIEnTp1UumBKcrOnTtRv3592NvbY9CgQdi4caM46zWQ31PWqVMnuLi4wMbGBk2aNMHq1atVJqC0srLCtm3b8NVXX8HBwQHffvstIiMjYWVlhRcvXgDIfxR/5MiRcHd3h729PTw9PbF///6y+RKIiOijovYtpF27dmHEiBEYPHgwzp49i6FDh0KhUOD3339HxYoVVWZNLo5Ro0a9cZujoyPWrFmjbqg67+DBg3B1dYWLiwt8fX0xd+5cTJ48uciekKioKEybNg0LFixAly5dcPr0aZUZtvfs2YPx48eLyxKJBO3atcPu3bsBANOnTxe3rV69GvPmzcPSpUuhr69f6Mmx7Oxs1K9fHxMmTICZmRmOHz+OsWPHwtHRUa0n2IiISHeo3QOzdu1azJ8/HwEBAQCAsWPHYtu2bYiLi4OVlRVMTU1LLUh6P0FBQfDx8QEAeHl5IS0tDWfPni1y359++gkdOnTAuHHj4OzsjKFDh6JDhw7i9rlz56rsLwgCgoKCMH36dGzfvl1lW69evdCvXz84Ojrik08+KXQsGxsbjBs3Du7u7nB0dMSIESPg5eWFgwcPvu8pExHRR07tAub27dvw8PCAVCqFVCpFamoqgPy5EWbOnFkqUwzQ+4uNjcWlS5fQq1cvAPm35Ly9vd84a3ZsbGyh3o+GDRsCyH8rcsHtn1fl5eVh2rRpePz4MV6+fCmub9CgwVtjUygUWLt2LTw9PeHq6goHBwecPHkS9+/fL8kpEhGRDlL7FlKFChWQnZ0NAKhWrRquX78uDsBVKBT4999/SyVAej9BQUHIy8uDu7u7uE4QBBgaGqrcGioOfX19ODo6Ij4+XmW9ubk5jh07BolEAiMjI3G9iYnJW9vbsGEDNm/ejKVLl6J27dowMTHBvHnzkJubW6K4iIhI96hdwDRp0gT//PMPPv30U/To0QN+fn5QKpUwMDDAypUr0aJFi9KMk9SQl5eHPXv2YPHixYWe7ho4cCD2798PV1dXlfUuLi64dOmSyrrLly+LP2/evBldunQBABgYGAAAtm3bpjLIt7iio6PRpUsX+Pr6Ash/pPvOnTsq7wEiIiIqitq3kGbPng17e3sAwOLFi9GiRQtMnjwZY8aMQZUqVbBp06ZSC5LUc+zYMbx48QL9+/dH7dq1Vf507969yNtIw4cPx4kTJ7Bx40bcuXMH27dvR1hYmDjgt2HDhuK4p7Zt22L79u2oWrUqDhw4gOXLl5coPicnJ5w+fRrR0dG4desWpk6diqdPn77/iRMR0UdP7QKmRYsW+PLLLwEAFStWxMGDB5GRkYHnz58jKipKrf8jp9IVFBQET0/PIh9p79atGy5fvoxr166prG/evDnWrFmDjRs3on379ggPD8eoUaPEuakAwMfHBwcPHkRKSgqGDBmCLl26YNOmTbCzsytRfFOmTEG9evXQu3dv9OzZE1WqVMFnn32m3skSEZFOkQiCIKjzwaFDh2L+/PmoXr16oW0JCQnw8/PD1q1b3zvA95GcnFzqbUqlUlhYWCAlJUVn3r749ddf4/bt2zh06JC4zszMDGlpaRqMSnN0MQeKwhzQ7RzQ5esPMAeAss2BypUrv3MftXtgfv755zd29ycnJxd6pJa0R0BAAGJiYnD37l38+OOP2LNnj9jbRkREVB6oPYgXwBtfCX/79m1UqlTpfZomDbp48SI2bNiA9PR0ODg4YPny5RgwYICmwyIiIhKVqIDZuHEjNm7cCCC/eOnXr1+hWaGzsrIQHx8vPllC72f8+PFITU3Fjh071G4jMTERjRs3Rnh4ONzd3Qstv27Lli3vEzIREVGZK1EBY2tri8aNGwMAYmJiULNmTVhZWansI5PJULt2bQwbNqz0oixHoqOj8fnnn6NDhw4IDg7WdDjFUq1aNcTExIi9Yq8vExERaZsSFTDe3t7w9vYWl+fPnw8nJ6dSD6o827VrFyZMmIAtW7bg0aNHqFq1apkcR6FQlNqszVKpFNbW1m9cJiIi0jZqD+Ldtm2bzhUvBbM6jxkzptCszuPHj4eVlVWhP5GRkQDyJy5cuHAh3N3d4eDggE8//VTcBgAhISFwdnbGH3/8AQ8PD1SrVk3llfqrV69GrVq14ODggM8++wz+/v64c+cOgPzZobt27QpnZ2fUqFED/fr1Q1xcnPjZxMREWFlZ4erVq0UuKxQKTJo0CY0bN4adnR1atGiBwMBAlXMfP348Bg4ciICAANSpUwe2traYMWMG35pLREQaoXYBM3To0Dc+mdKnTx+MHDlS7aDKq4JZnWvWrInevXsjODgYBU+hL1++HDExMeKfkSNHwsrKCi4uLgCAWbNm4cKFC9i8eTNOnTqFHj164MsvvxSLEADIzMzE999/j2+//RYRERHiY2RnzpzBrVu3MHfuXGRnZ+Ovv/7CsmXL4OnpiT///BMvX77EmDFjcPz4cezbtw96enoYPHgwlEplsc5LqVTC1tYWW7ZsQUREBKZNm4bly5cjNDRUZb+IiAjEx8cjNDQUP/30E/bs2SPOQk1ERPQhqf0U0vHjx7FmzZoit33xxReYNm2a2kGVV0FBQeLg5A4dOoizOnt4eMDc3Fx8YdyhQ4ewY8cO/Prrr7C2tsb9+/cREhKCy5cvi7ecxo0bh/DwcISEhGDevHkAgNzcXKxatQp169ZVOa5MJsP69evRqFEj8X0DCoUCCoUCo0aNwvXr11X2/+6771CrVi3cvHkTtWvXfud5GRgYYObMmeKyg4MDLly4gIMHD6Jnz57i+ooVK2LlypWQSqVo1KgROnbsiDNnzvAJJSIi+uDULmCePn1aaABvgUqVKuHx48dqB1UeFczqvGvXLgCqszp7eHiI+/3zzz8YN24cVqxYgebNmwMArl+/DoVCIS4XyMnJgYWFhbgsk8lQp06dQseuU6cOFAoFnj17Vmjb06dPce3aNXz33Xe4ePEi/v33X7Hn5f79+8UqYID8J4+Cg4Px4MEDZGZmIjc3t1AhVbNmTUilUnHZ2toaN27cKFb7REREpUntAqZatWqIioqCl5dXoW1RUVGwsbF5r8DKm4JZnd3c3MR1r87qbG5ujsePH2PAgAHo378/vvrqK3G/jIwMSKVShIWFQU9P9a6dXC4XfzYyMnrjwF1TU1MYGxsjMzOz0Prhw4fjk08+wbp161C1alUolUq0adOm2ONTDhw4gEWLFsHPzw9NmjSBqakpAgIC8Pfff6vsVzB5YwGJRFLs21RERESlSe0xMH379sWyZcuwd+9elfW//PILli9fjn79+r13cOXFq7M6nz59GpcvX8bp06dx6tQpWFtbY//+/cjKysLAgQPh6uqKJUuWqHy+Xr16UCgUePr0KZycnFT+FOdpoGvXriE7OxurVq2CRCJRKXIWLlyI2NhYTJkyBZ6enqhRowaeP39eovOLiopC06ZNMXToUNSrVw9OTk6Ij48vURtEREQfktoFzIIFC9CuXTv06dMHZmZmqFGjBszMzNCnTx+0bdsWCxcuLM04NerVWZ3d3NxQt25duLm5qczqPHXqVDx48ADLly9HcnIyHj9+jMePHyMnJwfOzs7w8fHB+PHjcejQISQkJODixYtYv349jh079s7j5+TkYPLkyWjYsCFmz54NQ0NDuLu7Y//+/Rg4cCAsLS2xc+dO3L17F3/++ScWLFhQovNzcnLC5cuXER4ejjt37mDFihW4dOmSul8XERFRmVP7FpJMJsOhQ4dw/PhxhIWF4dmzZ6hUqRI6duyIDh06lGaMGveuWZ39/f0RHx+P58+fq4yHAYDQ0FB4eHjg+++/x7p167Bw4UIkJSXB0tISTZo0QefOnd95fE9PTzg5OaFHjx7Izs6Gr68vVqxYIc4QvXnzZsyZMweenp5wcXHBsmXLVAbfvsugQYNw9epVjBgxAhKJBL169cKQIUMQFhZW7DaIiIg+JLVno9YGnI26aLGxsWjZsiWioqLUfpePLs9E+zHkQGlgDuh2Dujy9QeYA4AWz0Zd4I8//sCSJUswcuRIJCYmAsh/b8nDhw/ft2kqAykpKfjtt99gZmaGatWqaTocIiIitbzXY9Q9e/bE+fPnYWdnh3v37mH06NGwt7fH1q1bIZfLERAQUJqxUimYPHkyrly5gtWrV4u3oIiIiLSN2gXM5MmT8fTpU8TExMDV1RUymUzc1rFjRyxdurRUAqTStX37dk2HQERE9N7ULmAOHz6MH3/8EbVr1y50/8/Ozk5lHh8iIiKi0qT2GJi8vDyVl7C9KiUlRaVHhoiIiKg0qV3ANG/eHFu3bi1y2+7duws9TkxERERUWtS+hbR06VK0b98enp6e8PHxgUQiQWhoKFasWIHDhw8jIiKiNOMkIiIiEr3Xe2DOnTuHWbNm4ezZs1AoFJBIJGjZsiVWr16Nli1blmacaklNTS31J20kEglkMhlycnLwEb9C55309fWRl5en6TA0gjmQjzmg2zmgy9cfYA4AZZsDxfndXSovssvMzERKSgoqVqwIExOT922u1PBFdmVHl19ixRzIxxzQ7RzQ5esPMAeAj+BFdkD+LMoGBgYwNjYujeaIiIiI3uq9Cphjx47Bw8MDxsbGqFq1KoyNjeHh4YGjR4+WVnxEREREhahdwGzbtg2fffYZDAwMsHr1aoSEhGD16tXQ19fH559//sYnlIiIiIjel9pjYKpXrw4vLy9s2bKl0LYhQ4bg1KlTiIuLe+8A3wfHwJQdXb7/zRzIxxzQ7RzQ5esPMAcALR4D8+TJE/Tp06fIbX379sWTJ0/UbZqIiIjordQuYFq0aIGLFy8Wue3ixYto1qyZ2kERERERvY3aL7Jbvnw5+vbti6ysLPTs2RNVqlTBkydPcODAAezYsQMhISF49uyZuL+lpWWpBExERESk9hgYPb3/77yRSCTizwXNvboOgEbuEXIMTNnR5fvfzIF8zAHdzgFdvv4AcwDQ/BgYtXtgtm7dWqhIISIiIvoQ1C5gBg8eXIphEBERERWf2oN4jx079tbt33//vbpNExEREb2V2gVMly5dMH78eGRmZqqsv3//Pjp06IDp06e/d3BERERERVG7gAkODkZISAgaNGiA6OhoAMD27dtRt25dJCUl4ezZs6UWJBEREdGr1C5g+vTpg6tXr8LJyQmtW7dGixYtMGzYMAwdOhSXLl1C48aNSzNOIiIiItF7TeZoa2uLMWPGQCqVIjo6GvXq1cPMmTNhaGhYWvERERERFaJ2AZORkYERI0bgP//5D/r06YM//vgDaWlpqFu3Ln799dfSjJGIiIhIhdqPUderVw/p6enYt28fevbsCQC4cuUKpkyZgt69e6Nfv37YtWtXacVJREREJFK7B6ZevXqIiYkRixcAMDExwaZNm3DkyBGcOnWqFMIjIiIiKkztHpgDBw68cVuXLl1w9epVdZsmIiIieqv3GsQLAH/88QeWLFmCkSNHIjExEQBw5syZQu+HISIiIiotavfAPH36FD179sT58+dhZ2eHe/fuYfTo0bC3t8fWrVshl8sREBBQmrESERERAXiPHpjJkyfj6dOniImJQWxsLF6d1Lpjx44ICwsrlQCJiIiIXqd2D8zhw4fx448/onbt2oWmErezs8P9+/ffOzgiIiKioqjdA5OXlwe5XF7ktpSUFMhkMrWDIiIiInobtQuY5s2bY+vWrUVu2717Nzw8PNQOioiIiOht1L6FtHTpUrRv3x6enp7w8fGBRCJBaGgoVqxYgcOHDyMiIqI04yQiIiISqd0D07JlS5w8eRISiQRTp06FIAhYtmwZkpKSEBYWhkaNGpVmnEREREQitXtggPwi5vTp08jMzERKSgoqVqwIExOTIvdNTEyEra0t9PXffMizZ88iODgYjx8/hrm5OYYNG4ZWrVohISEB/v7+iI+Ph7W1NUaOHIn69eu/T+hERESkxd6rgClgbGwMY2PjN25XKBSoXr06Lly48MaemStXruCnn37CtGnTUKtWLaSmpiIrKwt5eXlYsmQJOnfujBUrVuD8+fNYsWIFNm3ahIoVK5ZG+ERERKRl3vtNvMX16ntiihIcHIwvv/wSbm5u0NPTQ8WKFVG1alVcvXoV2dnZ8PHxgYGBAdq0aQN7e3tERkZ+oMiJiIiovCmVHpj3pVAocPv2bTRr1gyjR49GVlYWGjZsiOHDhyMxMRGOjo7Q0/v/WsvJyQkJCQkajJiIiIg0qVwUMM+fP0deXh7OnDmDpUuXwsjICGvXrsVPP/0Ea2vrQu+bkcvlePLkSaF2kpKSkJSUJC4bGhrC1ta2VGOVSqUqf+sqiUSis98BcyAfc0C3c0CXrz/AHAA0nwPlooAxNDQEAHTt2hWVK1cGAPj6+mL58uXw9fVFRkaGyv4ZGRlFjrkJDAyEn5+fuDxnzhwsW7asTGI2Nzcvk3a1ia6/rJA5wBzQ9RzQ9esPMAc0mQPlooAxNTVF5cqVIZFICm2zt7fHvn37oFQqxdtIcXFx8PT0LLTvqFGj0KNHD3HZ0NAQKSkppRqrVCqFubk5UlNTC02hoEvkcnmhwlJXMAfyMQd0Owd0+foDzAGgbHPAwsLinfuUiwIGADp37ozDhw+jSZMmMDQ0xL59+9CsWTO4u7tDJpNh//798Pb2RlRUFBISEop806+NjQ1sbGzE5eTk5DJLLIVCobNJC+QPytbl8weYA8wB3c4BXv98zAHNnfsHKWAkEgnatm0LMzOzN+7j6+uL1NRUjBs3DlKpFE2aNMHw4cOhr6+PefPmYcOGDdi9ezeqVKmC2bNn8xFqIiIiHSYR3vV88zvcuHEDf/31F+7du4ehQ4eiatWqiI2NhbW19VsLlg8hOTm51NuUSqWwsLBASkqKzlbdAGBmZoa0tDRNh6ERzIF8zAHdzgFdvv4AcwAo2xwoGA/7Nmr3wLx8+RLDhw/H3r17IZFIoFQq0aVLF1StWhWzZ89G9erVsWrVKnWbJyIiInojtV9kN23aNISHh+PIkSNITU1VeVHd559/jj/++KNUAiQiIiJ6ndo9ML/++itWr16Nzp07F+o+c3R0RHx8/PvGRkRERFQktXtg0tPTVZ74eZUuP1pHREREZU/tAqZevXrYt29fkdsKHocmIiIiKgtq30KaP38+vL298fLlS/j6+kIikSA6OhohISHYunUrjhw5UppxEhEREYnU7oHp2rUrdu/ejYiICPTs2ROCIGDs2LHYs2cPgoKC0KFDh9KMk4iIiEhUoh6Yf/75BzVq1ICRkREAwMfHBz4+Prh16xaSk5NhaWmJWrVqlUmgRERERAVK1APTsGFD/PPPPwAAJycnXLlyBQBQo0YNtGrVisULERERfRAlKmDkcjlSU1MBAPHx8cjOzi6ToIiIiIjepkS3kJo2bYpRo0ahTZs2AIAlS5bAysqqyH0lEgm2bNny/hESERERvaZEBcyWLVswf/58XLt2DRKJBLdu3cL9+/eL3FcikZRKgERERESvK1EB4+joiJ07dwIA9PT0sHPnTjRr1qxMAiMiIiJ6E7XfAxMXF/fGN/ESERERlaUSFTDPnj1DxYoVoaenBzMzM6Snp791f0tLy/cKjoiIiKgoJSpgrKyscO7cOTRr1gyVK1d+5ziX1yd5JCIiIioNJSpgtm7dCmdnZ/FnDtQlIiIiTShRATNo0CDx58GDB5d2LERERETFUqICpl69esXeVyKRiG/qJSIiIipNJSpgGjVqxNtGREREpHElKmB+/vnnMgqDiIiIqPhKNBcSERERUXnAAoaIiIi0zkddwEyZMgWurq6wsrLC1atXi/WZRo0aYdOmTWUcGeDt7Y25c+eW+XGIiIg+RmpPJaANdu/ejdDQUDg4OKBSpUqaDkfFzz//DAMDg2Lt6+3tjbp162LZsmVlHBUREZF2+KgLGGtr63I72aSFhYWmQyAiItJaH/UtpPv378PKygqNGjUCAKSnp2P06NFwcHBAnTp1sGnTpiJv5WRmZmLixIlwdHREgwYNsGPHDpXtM2fORNOmTWFvb48mTZpgxYoVyM3NRXp6OsaPHw87OzvY2Nhg8ODBaNSoEZycnDBixAiVuaNeP+7WrVvRrFkzfPLJJ3Bzc8OQIUMAAOPHj8fZs2exefNmWFlZwcrKComJiVAoFJg0aRIaN24MOzs7tGjRAoGBgSpxjh8/HgMHDkRAQADq1KmDGjVqYMaMGcjNzS3V75mIiOhD+6h7YGxtbXHs2DFIpVIAwPz58xEdHY2dO3fCysoK33zzDf755x/UrVtX5XMbN27ErFmzMHnyZPz++++YPn06WrVqBRcXFwCAmZkZNmzYgCpVquDGjRv4+uuvIZfLce7cOZw+fVosEI4cOYJBgwahV69eGD58OL777rsix71cvnwZc+bMwQ8//ICmTZsiJSUF58+fBwAsX74cd+/eRa1atTBz5kwAQOXKlaFUKmFra4stW7bAwsICFy5cwNSpU2FtbY2ePXuKbUdERMDa2hqhoaGIi4vDiBEj4O7ujgEDBpT6901ERPShfNQFjL6+vlh0pKWlYc+ePdi+fTu6du0KIL/Xo3r16pDJZDAzMwOQ/wbhLl26YNKkSQDy3z68efNm/PXXX2jYsCEkEgnmzZuHnJwcCIKAOnXq4N69ewgODi40UFgQBPz222/YtGkTvvrqK0RERIjHkUql4nH//fdfyOVy9OrVS9zu4eEBIL9YMjIyQoUKFcRzKbB06VLx57p16+LKlSs4cuSIWJwYGBjAwsICAQEBkEqlaNSoEfbv349z585h7Nix7/3dFsSqawpe5iiXyyEIgoaj0RzmgG7ngC5ff4A5AGg+Bz7qAkYQBKSlpQEAYmJikJubi9q1a4vr9PT04OzsjJycHHGdIAioUaOGuAzkz8J9//59pKWlQSqV4sCBA1i3bh3i4uKQkZEBhUIBExOTImPIyspCWloaLCws8PjxY7FdhUIhHrd58+b45JNPUKtWLXh5ecHLywuff/652Oar+75qy5YtCA4OxoMHD5CZmYnc3FzUrVtX3C83Nxc1atTAy5cvxc9YWlrixo0bhdoqKTMzs/duQ1sVFJ8F115XMQd0Owd0+foDzAGgbHPA0NDwnft81GNg1KWvX7iuUyqVAIDo6Gj0798fnTp1QnBwMMLDw/H1119DoVDAzs5OvF0F5PeAtGvXrlAbrzM1NUVYWBgCAwNhbW2Nb775Bu3atcOLFy/eGOOBAwewaNEi9O/fH3v37sXJkyfRt29f5OTkqOz3+pNOEonkjXEQERFpC50pYBwdHWFgYIBLly6J61JTU3Hnzp0StRMdHQ0HBwdMnToVDRo0gLOzM+7duwcA2LNnD2xsbMR9GzZsiO+++65Y7err66Nt27ZYuHAhTp06hXv37uHPP/8EAMhkskIVflRUFJo2bYqhQ4eiXr16cHJyQnx8fInOhYiISFt91LeQXmVqaoovv/wSfn5+sLCwQOXKlfHNN99AT0+vRBNUOjs7IzExEfv27UP9+vVx/PhxHDlyBADg6uqK6OhozJs3D3/++ScOHTpUrLaPHTuG+Ph4tGzZEhUrVsSJEyegVCrFMS92dna4ePEiEhMTIZfLYWFhAScnJ+zduxfh4eFwcHDA3r17cenSJdjb26v3BREREWkRnemBAYAlS5agSZMm6N+/P7744gs0b94cNWrUKNa9tgKfffYZvv76a8ycORPt27fHhQsXMGXKFHG7gYEBKlWqBJlMVuzCyNzcHIcPH0avXr3g4eGB7du3IzAwELVq1QIAjBs3DlKpFK1bt0atWrVw//59DBo0CF27dsWIESPw6aefIiUlRXz0moiI6GMnET7i4dPJyclv3Z6RkYF69erBz88PX331VbHalEqlsLCwQEpKis4O3AJ0ewAfcyAfc0C3c0CXrz/AHADKNgcqV678zn105hYSAPzzzz+IjY1Fw4YNkZqairVr1wLI71UhIiIi7aFTBQwABAQEIDY2FjKZDPXr18fvv/9e7uZJIiIiorfTqQKmXr16CAsL03QYRERE9J50ahAvERERfRxYwBAREZHWYQFDREREWocFDBEREWkdFjBERESkdVjAEBERkdZhAUNERERahwUMERERaR0WMERERKR1WMAQERGR1mEBQ0RERFqHBQwRERFpHRYwREREpHVYwBAREZHWYQFDREREWocFDBEREWkdFjBERESkdVjAEBERkdZhAUNERERaR1/TAQDA+vXrcebMGejr/384AQEBsLKyAgA8ffoU/v7+uHHjBipUqICBAwfC09NTU+ESERGRhpWLAgYAvL29MWjQoCK3rVmzBo6Ojpg7dy5u3bqFpUuXwsHBAQ4ODh84SiIiIioPyv0tpIcPH+LWrVsYMGAADA0N4e7u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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='gdp_per_capita', y='life_expectancy', label='country')\n", " + geom_point()\n", " + geom_text(size=10)\n", " + ylim(40, 90)\n", " + xlim(0, 35000)\n", ")" ] }, { "cell_type": "markdown", "id": "8d0a598e", "metadata": {}, "source": [ "## The solution\n", "\n", "You'll need to `pip install adjustText` for this to work (and maybe restart your kernel for it to pick up the install). By passing a list of adjust_text options to `geom_text`, plotnine will reposition labels until it is \"right\" (and usually not overlapping)." ] }, { "cell_type": "code", "execution_count": 21, "id": "f48013d5", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGvCAYAAABFKe9kAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABq00lEQVR4nO3dd1gU1/s28HtZWDoCioBKBxUUW+xERCwxsWAUe+yKBaNGjd0o9p6iqBhrFFETFRM1RsUWsJGIiRi/UQxgUIwQUYrUZd4/eJmfK6jLAlmWvT/X5RV3yplndp7Iw5kzcySCIAggIiIi0iA66g6AiIiIqKxYwBAREZHGYQFDREREGocFDBEREWkcFjBERESkcVjAEBERkcZhAUNEREQahwUMERERaRxddQdQmVJTUyu8TYlEAkNDQ2RnZ0Ob3wEok8mQl5en7jDUgjlQhDmg3TmgzdcfYA4AlZsDtWrVeus27IEpIx0dHRgZGUFHR7u/On19fXWHoDbMgSLMAe3OAW2+/gBzAFB/DmjvN09EREQaiwUMERERaRwWMERERKRxWMAQERGRxmEBQ0RERBqHBQwRERFpHBYwREREpHFYwBAREZHGYQFDREREGocFDBEREWmcKjMX0qNHj7B161bcu3cPRkZGGDhwILp16wYASExMxMaNG5GQkABra2sEBASgadOmao6YiIiI1KVK9MDI5XIsW7YMHh4e2LdvH+bOnYtdu3YhNjYWBQUFWLp0KVq3bo2wsDAMGjQIK1euxLNnz9QdNhEREalJlShgHj58iCdPnqB///6QSqVwdXVF27ZtcebMGdy6dQu5ubnw9/eHnp4eOnToAHt7e0RFRak7bCIiIlKTKlHACIJQYjpyQRCQkJCABw8ewNHRUWHGT2dnZyQmJv7XYRIREVEVUSXGwNStWxc1a9bEwYMH0b9/f/z111+4evUqLCwskJ2dDWNjY4XtjY2N8eTJkxLtJCcnIzk5Wfysr6+POnXqVGisUqlU4b/aSiKRaO13wBwowhzQ7hzQ5usPMAcA9edAlShgdHV1sWDBAmzbtg0jR45E3bp10blzZyQmJsLQ0BBZWVkK22dlZcHQ0LBEOyEhIQgKChI/z5s3D8uXL6+UmM3MzCqlXU0ik8nUHYJaMQeYA9qeA9p+/QHmgDpzoEoUMABgb2+PZcuWiZ/Xrl2LBg0awN7eHocPH0ZhYaF4Gyk+Ph7e3t4l2hg/fjx69+4tftbX10daWlqFximVSmFmZob09HTI5fIKbVuTGBsblygstQVzoAhzQLtzQJuvP8AcACo3BywsLN66TZUpYOLj41GnTh3o6Ojg0qVL+O233zB+/HgYGRlBJpPhyJEj8PPzw7Vr15CYmAgvL68Sbdja2sLW1lb8nJqaWmmJJZfLtTZpgaIxStp8/gBzgDmg3TnA61+EOaC+c68yBcylS5fw008/oaCgAK6urliyZInYNbdgwQJs2rQJBw4cQO3atTF37lyYm5urN2AiIiJSG4nw6uM/1UhqamqFtymVSmFhYYG0tDStrboBwNTUFBkZGeoOQy2YA0WYA9qdA9p8/QHmAFC5OVCrVq23blMlHqMmIiIiKgsWMERERKRxWMAQERGRxmEBQ0RERBqHBQwRERFpHBYwREREpHFYwBAREZHGYQFDREREGocFDBEREWkcFjBERESkcVjAEBERkcZhAUNEREQahwUMERERaRwWMERERKRxWMAQERGRxmEBQ0RERBqHBQwRERFpHBYwREREpHFYwBAREZHGYQFDREREGocFDBEREWkcFjBERESkcVjAEBERkcZhAUNEREQahwUMERERaRwWMERERKRxWMAQERGRxmEBQ0RERBqHBQwRERFpHIkgCIK6g6gs6enp0NfXr9A2JRIJZDIZ8vLyUI2/urfS1dVFQUGBusNQC+ZAEeaAdueANl9/gDkAVG4OKPOzW7dSjlxF5OXlIS8vr0LblEqlkMlkyMrKglwur9C2NYmpqSkyMjLUHYZaMAeKMAe0Owe0+foDzAGgcnNAmQKGt5CIiIhI47CAISIiIo3DAoaIiIg0DgsYIiIi0jgsYIiIiEjjsIAhIiIijcMChoiIiDQOCxgiIiLSOCxgiIiISOOwgCEiIiKNwwKGiIiINA4LGCIiItI4LGCIiIhI47CAISIiIo3DAoaIiIg0DgsYIiIi0jgsYIiIiEjjsIAhIiIijcMChoiIqBpYs2YNfHx8xM+TJ0/G8OHD1RdQJWMBQ0RE9AbR0dGwtrbG4MGDK7TdsLAwuLi4VGibL1uxYgU2btxYae2rGwsYIiKiNwgNDcXYsWNx5coVPH78+D8/fl5enkr7mZmZoUaNGhUcTdXBAoaIiOg1MjMzER4ejlGjRqFr164ICwsT1+3evRuOjo4K2588eRJWVlbi59jYWPTp0weOjo5wcnJC586dcfPmTURFRWHKlClIT0+HlZUVrKyssGbNGgBAixYtsH79egQGBsLJyQnTp08HACxZsgRt2rSBvb09WrZsiZUrVyI/P/+1sb96CykiIgI9evSAi4sL6tevjyFDhiA+Pr4ivia1YAFDRET0GseOHYObmxtcXV3Rv39/7N+/H4IgKL3/xIkTUadOHZw5cwZnz57FlClToKuri1atWmHZsmUwNTVFbGwsYmNjMWnSJHG/4OBgNGrUCOfOncOMGTMAAMbGxti4cSMiIyOxfPly7N27F1u3blU6lhcvXmDixIk4c+YMDh8+DB0dHYwcORKFhYXKfyFViK66AyAiIqqqQkND4e/vDwDw9fVFRkYGLl++DG9vb6X2T0pKQmBgINzc3ABAYcyLmZkZJBIJrK2tS+zXoUMHhYIGgFjIAIC9vT0CAwNx9OhRfPzxx0rF0qtXL4XPX375JRo2bIg///wT7u7uSrVRlbCAISIiKkVcXBxiYmKwZ88eAICuri78/PwQGhqqdAEzceJEfPLJJ/j222/h7e2N3r17w8nJ6a37NW3atMSyo0eP4uuvv0ZCQgKysrIgl8thamqq9Pncv38fq1evxo0bN/Dvv/+KPS9JSUksYIiIiKqL0NBQFBQUwNPTU1wmCAL09fWRnp4OHR2dEreTXh2TMmvWLPTr1w9nzpxBREQE1qxZg23btqFHjx5vPLaRkZHC5+joaEycOBGzZs2Cr68vTE1NER4ejs2bNyt9Ph999BHq1auHDRs2wMbGBoWFhejQocMbx9FUZSxgiIiIXlFQUICDBw9iyZIlCu9WAYDhw4fj8OHDcHd3R2ZmJrKysmBsbAygaNDuq1xcXODi4oIJEyYgICAAYWFh6NGjB2QyGeRyuVLxREdHw87OThzQCwB///230ufz9OlTxMXFYcOGDWjXrh0A4OrVq0rvXxVVmQLmn3/+QUhICP73v/9BKpWiRYsWGD9+PIyMjJCSkoKNGzfizp07qFGjBoYPH6509x0REVFZnT59Gs+fP8fQoUNhZmamsK5Xr17Yt28fzp49CyMjIyxfvhzjxo3DjRs3cODAAXG77OxsLF68GL1794a9vT0ePXqEmJgYcSyKnZ0dsrKycOnSJTRq1AiGhoYlel6KOTs7IykpCUePHkWzZs1w5swZnDx5UunzMTc3h6WlJfbu3Qtra2s8fPgQS5cuVeGbqTqqzFNIwcHBMDExwa5du7BlyxakpqYiNDQUALBu3TrY2tpi3759mDp1KoKDg5GYmKjmiImIqDp59uwZvv/+exw5cgQ7duyAt7d3ieIFAHr27ImYmBgkJSVh69atOHv2LDp27IgjR45g1qxZ4nZSqRRpaWkIDAxE27ZtMXbsWHTu3FncpnXr1hg5ciTGjRuHhg0bYtOmTa+NrXv37pgwYQLmzJmDTp06ITo6WqE35m10dHSwbds2/Pbbb/D29sbChQuxaNGiMnw7VY9EKMvzYJVo/PjxGDduHFq2bAkAOHHiBK5cuYJJkyYhMDAQe/fuhYmJCQBg/fr1sLS0xKhRo97YZmpqaoXHKZVKYWFhgbS0NKW7/qojU1NTZGRkqDsMtWAOFGEOaHcOVLfrHxcXh169euHZs2eQSCTQ09PD/v374eXlVer2zIHKzYFatWq9dZsqcwupd+/euHjxIho1aoT8/HxERUWhVatWSExMhJWVlVi8AICTkxN+//33Em0kJycjOTlZ/Kyvr486depUaJxSqVThv9pKIpFo7XfAHCjCHNDuHKhu13/ChAkKxUhBQQFGjRqFP//8E7q6JX9UMgfUnwNVpoDx9PREREQEBg8ejMLCQjRv3hw9e/ZEZGSkQvECFL3MJzs7u0QbISEhCAoKEj/PmzcPy5cvr5R4S+tW1DYymUzdIagVc4A5oO05UJ2u/+3btxV6UgRBQFpaGl68eAEHB4fX7sccUF8OVIkCRi6XY/HixejSpQtWrVqFgoICfP3119iwYQO8vb2RlZWlsP2LFy9gaGhYop3x48ejd+/e4md9fX2kpaVVaKxSqRRmZmZIT0/X2m5DoKiIfPW6aAvmQBHmgHbnQHW7/jVq1MC///6rsEwikUAikZT6c4Q5ULk5YGFh8dZtqkQBk5WVhdTUVPTs2RMymQwymQwffPAB5s+fj2HDhiElJQWZmZliT8xff/1VakVsa2sLW1tb8XNqamqlJZZcLtfapAWKfjvR5vMHmAPMAe3Ogep2/T/77DNMmzZNfK+LVCpFYGAgjIyM3niezAH1nXuVeArJzMwMNjY2OHnyJPLz85GTk4OffvoJjo6OqFOnDlxdXbFv3z7k5uYiNjYW169fh6+vr7rDJiKiamLIkCHYtWsXOnfuDG9vb6xatQoLFixQd1j0BlXmKaT4+Hjs2LEDf/31FyQSCRo0aIBx48bB1tYWKSkp+Oqrr3Dnzh2Ym5tj2LBh6Nix41vb5FNIlae6PYFQFsyBIswB7c4Bbb7+AHMA4FNIIicnJyxbtqzUdVZWVhr/wh0iIiKqOFXiFhIRERFRWbCAISIiIo1TZW4hERERUZHCwkLs27cPN27cgIWFBUaNGgV7e3t1h1WlsIAhIiKqQgRBwKRJk3Ds2DHI5XLo6upi9+7dOHv2LFxcXNQdXpXBW0hERERVyI0bN3D48GEUFBRAEATk5+cjOzv7tQ+6aCsWMERERFXIw4cPoaenp7BMLpcjMTFRTRFVTSxgiIiIqhBXV1fk5+crLNPT04O7u7uaIqqaWMAQERH9Bx48eAArKyvcunXrjdt5eHhg+vTp0NHRgb6+PmQyGWrXro1Fixb9R5FqBhYwRERU7UVHR8Pa2hqDBw+u0Hb379+v9MDaunXrIjY2VqmelLlz5+LQoUOYMWMGli9fjosXL6J27drlDbda4VNIRERU7YWGhmLs2LEIDQ3F48ePYWNj858ePy8vDzKZDNbW1krv07FjR6WmzdFW7IEhIqJqLTMzE+Hh4Rg1ahS6du2KsLAwcV1YWFiJHpSTJ0/CyspK/BwbG4s+ffrA0dERTk5O6Ny5M2JiYnDhwgVMnjwZ6enpsLKygpWVFdasWQMAaNGiBdavX4/AwEA4OTlh+vTpJW4hyeVyTJ06Fe+88w7s7OzQtm1bhISE/AffSPXAHhgiIqrWjh07Bjc3N7i6uqJ///6YP38+pk2bBolEotT+EydOhKenJ9auXQsdHR3ExsZCT08Pbdq0wYoVK7By5UpcuXIFAGBsbCzuFxwcjJkzZ2LmzJmltltYWIg6depgx44dsLCwQHR0NGbMmAFra2v06dOn3Odd3bGAISKiai00NBT+/v4AAF9fX2RkZODy5cvw8vJSav+kpCQEBgbCzc0NAODi4gKpVAqZTAYzMzNIJJJSbw116NABkyZNEj8/ePBAYb2enh5mz54tfnZwcEB0dDSOHTvGAkYJvIVERETVVlxcHGJiYtC3b18AgK6uLvz8/BAaGqp0GxMnTsQnn3yCfv364csvv0R8fLxS+zVt2vSt2+zYsQOdO3dGw4YN4eDggL179+Lhw4dKx6bNWMAQEVG1FRoaioKCAnh6esLGxgY2NjbYvXs3jh8/jvT0dOjo6EAQBIV9Xn0Hy6xZsxAZGYmuXbsiMjIS7777Lo4fP/7WYxsZGb1x/dGjR7F48WIMHToUhw4dwvnz5zF48GDk5eWV/US1EG8hERFRtVRQUICDBw9iyZIl8PHxUVg3fPhwHDlyBPXq1UNmZiaysrLE8SuxsbEl2nJxcYGLiwsmTJiAgIAA7N+/H8OGDYNMJoNcLlcpvmvXrqFVq1YYPXq0uCwhIUGltrQRe2CIiKhaOn36NJ4/f46hQ4fC3d1d4U+vXr0QGhqKd955B4aGhli+fDni4+Nx+PBhHDhwQGwjOzsbs2fPRlRUFP7++29cu3YNMTExqF+/PgDAzs4OWVlZuHTpEv7991+8ePFC6ficnZ1x8+ZNnDt3Dvfv38fKlSsRExNT4d9DdcUChoiIqqXQ0FB4e3vDzMysxLqePXvi5s2bePToEbZs2YKzZ8+iY8eOOHLkCGbNmiVuJ5VKkZaWhsDAQLRt2xZjx45F586dMWfOHABAmzZtMHLkSIwbNw4NGzbEpk2blI5vxIgR6NGjB8aNG4f33nsPaWlpGDVqVPlPXEtIhFdv/lUjqampFd6mVCqFhYUF0tLSVO42rA5MTU2RkZGh7jDUgjlQhDmg3TmgzdcfYA4AlZsDtWrVeus27IGpZFFRUbCyssLz588BlP7SpMqg7JwbREREmogFTAWprHk2VFWWOTeIiIg0DQuYClI8z8aVK1fw+PFjdYcDqVQKa2tr6OryQTMiIqp+WMBUgDfNs/E6J0+eROvWrVGvXj30799f4cVF8fHxGDZsGDw8PODg4ICuXbvi4sWLCvu3aNECn3/+OaZMmQJHR0c0a9YM33zzjbiec268HW+zERFpLhYwFeDVeTb2799f4sVIL8vOzsbnn3+O4OBgnDhxAunp6Rg3bpy4PisrC126dMHhw4dx7tw5+Pr64qOPPkJSUpJCO1u2bEGzZs1w7tw5jBo1Cp9++ini4uJKPebLc25ERkZi5syZWLFiBcLDwyvkOyhW1W6lFZs8eTKGDx+usIy32VRjZWWFkydPqjuMSlMVCtsWLVpg69atFd7uq2PyiDQZC5gK8Lp5Nl4nPz8fq1atQqtWrdC0aVNs2rQJ0dHRuHHjBgCgcePGGDFiBNzd3eHi4oK5c+fC0dERp06dUminS5cuGD16NJydnTFlyhTUrFkTkZGRpR6zeM6NZs2awcHBAf7+/hg0aBCOHTtWQd9CEWVvpQmCgIKCggo9dllV99ts5S0m16xZU+LlX0DRS746d+5czug0W69evSCRSGBpaQkrKyt4eHhg9OjR+Pvvv9UdGpHWYAFTTqrMs6Grq4vmzZuLn93c3FCjRg3cvXsXQNEtqUWLFqF9+/ZwcXGBg4MD7t69W2J+DA8PD/HvEokEtWvXfuOj45U958abbqUV/+Z39uxZdO7cGXXr1sW1a9eQmZmJCRMmwMHBAY0aNcLWrVvh5+eH+fPni/vm5uZi0aJF8PT0hIODA9577z1ERUWJ64uf7Dp37hzat28PBwcHDBgwQCyg1qxZg4MHD+LHH38Up7yPiooq8Zt2cYyXLl1Cly5dYG9vjw8++EChVys+Ph5Dhw6FtbU17OzsSr29V1VU1rgsa2tr6OvrV1h7mmrcuHG4c+cObt26hW+++QaPHj3CxIkTy9UmXyFPpDwWMOX0tnk2VLF48WKcPHkS8+fPxw8//IDz58/D3d29xD9upfUcFBYWltrmfzHnhjK30pYtW4aFCxciKioKHh4eWLhwIa5fv469e/fiu+++w9WrV/H7778r7DNnzhxER0dj27ZtuHDhAnr37o2BAwfi/v374jbZ2dnYvHkzNm/ejO+//x4PHz7E4sWLAQCTJk2Cn58ffH19ERsbi9jYWLRq1eq157FixQoEBQXhzJkzkEqlmDJlirguKysLXbt2RUREBC5cuPDa23vq9rZxWW8r1sLCwrB27Vrcvn1bLPqK23j1FtL169fh4+ODevXqoUuXLjh58qRCYVjaqwOKtymmzLivV1XEWDEAuHHjBjp16iTGr+ytIyMjI1hbW8PGxgYtW7bEmDFjFPZVZtxZ8a3NDRs2oHHjxmjXrp24LisrCwEBAXBwcICnpyd27NghrivtNtfz58/F4rzYmTNn0KZNG9jZ2aFPnz4lZkN++vQpAgIC4OnpCXt7e3h7e+PIkSNKnT+RurGAKYeX59k4f/68+OfChQuwtrZ+7T8EBQUFuHnzpvg5Li4Oz58/F19Nff36dQwaNAg9evSAh4cHateuXe6u6Zfn3GjSpAmcnZ0rfM4NZW6lzZ49Gz4+PnBycoKenh4OHjyIxYsXw9vbG+7u7vjqq68UirCkpCSEhYVh586daNeuHZycnBAYGIg2bdoo/FDOz8/H2rVr0axZMzRt2hRjxozBpUuXAAAmJiYwMDCAvr4+rK2tYW1tDZlM9trzmDdvHry8vNCgQQNMmTIF0dHRyMnJAVB0e2/kyJFo3LjxG2/vqZuy47JeV6z16dMHkyZNQsOGDcWir0+fPiX2z8jIwEcffQQPDw9ERERgzpw5WLJkSZnjVXbclyr7vGmsWGZmJoYOHYoGDRrg7NmzmDVrllj4lkVaWhqOHTuGFi1aiMuUHXd26dIl3L9/H999951Cz+2mTZvQqFEjnDt3DlOmTMH8+fNx4cIFpWN6+PAhRo0ahffeew/nz5/HRx99hKVLlypsk5ubi6ZNm2L//v24dOkShg0bhkmTJom3s4mqsup58///k8lkFd7VLZFIAADGxsY4e/Ysnj9/jvHjx6NGjRoK2/Xr1w8HDhzAihUrABT9EDU1NYWBgQH09PSwYMECrF+/Hrq6uvjkk0/Qpk0bdOzYEQBQv359/Pjjj/jwww8hkUgQFBQEQRAgk8lgamoqxmFgYCB+BorGdBRvUzwpmbGxMUxNTeHh4YFvv/0WV69ehaOjI0JDQ3Hz5k04OjoqtKEsXV1dhf3u3r2LmJgYHD58WFzev39/HDx4EN27d4ehoSEAwMvLS1wfHx+P/Px8dOjQQVxmamqK+vXri+eRkJAAuVyOtm3bKhw/NzcXtWvXFr9TIyMjNGnSRFzv6OiI1NRUsV09Pb0SMb/6HRXH2Lp1a3E7Z2dnAEU9PFZWVsjMzMSSJUtw6tQpJCcno6CgANnZ2UhJSVHpe6wsBw4cwEcffQRTU1P4+flh6tSpiImJEXOs+FyXLl0KX19fAEU9XX369IGenh5MTU1hYWEBmUwGV1fXEu0bGhpCV1cXJ06cgI6ODr7++msYGBigZcuWSEtLw6RJk8Tv1cDAABKJROH7KT5+8bJ27dop9D40a9YMp06dwoULF157W0aZfSQSCbp3746pU6cCAJo0aYJt27bhl19+QfPmzXHw4EEIgoAdO3bAwMAArVq1wtOnT/Hxxx+L8ZdGKpVi8+bN2L59OwRBwIsXL+Dm5oYffvhBYZ9ly5aJf2/cuDF+++03nDx5EsOGDQNQlJcmJibYvn27QlEtkUjQvn17LFiwQDy3mJgYbN++Hb169SqRuwDEt8EaGhrC1NQUoaGhcHZ2xueffw4AaN68Oe7fv49169aJ/x6ZmpqKr8QHAE9PT/z888/48ccfxVx5nVf/f9I2L/8sqMYvtH8jdedAtS5g8vLyKvyecnGRkJWVhe3bt8Pb2xs6OjolXqfcrVs3rF+/Hr/88guAot/0pFIpcnJyYGhoiEmTJmH48OFITk5G27Zt8cUXX4htfPbZZ5g6dSp8fHxgaWmJjz/+GGlpacjLyxO3EQQBOTk5CseVy+XiNllZWQCKfkvNyMjAwIEDER0djaFDh0IikaBv374YOXIkIiIiVHoV9KuvkN62bRsKCgrg5OQkLhMEAfr6+li2bBmys7PFZcX7vRpjaeeRkpICqVSKs2fPQkdHscPQ2NgYGRkZyMnJga6urkIbOTk5CsfKz89HQUGBwjavHr84xtzcXHG74onZMjIykJGRgZkzZ+LixYvYsGEDateuDT09PYwePRqZmZlV5rXqcXFx+OWXX7Bz504xpt69e2P79u1iD0HxuTo5OYnbvFxY1qtXD3l5eZDL5aWeV3Z2NgoKCsSnuPLz85Gfnw/g/8ZmFX+vr16Ll49fvCwzMxNr167FmTNn8M8//6CgoAA5OTm4f//+a79XZfYRBAH169dXaMPKygpJSUnIyMjArVu3SsTfuHFjhfhLI5fLMXToUEyePBlyuRwpKSn44osv8MEHHyAiIgImJiYAisad7d+/Hw8fPkR2djby8/PRuHFjhbxs2LAhcnNzkZubK7YvCAKaN2+ucPymTZti27Ztpf7/Xfx9FH+3GRkZuH37Npo1a6bQRnGRX/zvkVwuxxdffIFjx44hOTlZ/DdTT0/vrfnMqQT+72cBpxKoeMp0PlTrAqayvWmgbosWLZCSkgIACAgIEJcPHjxYfCqkZ8+epe5rb2+Po0ePKiwbM2aMwufSunhf7l62t7cXjw8UJcPGjRuxceNGhX2Kx6AsXLgQjx49gru7O9auXQsHB4fXnturlJmy3s3NrcR+jo6O0NPTQ0xMDOrVqwcASE9Px/3798XfrJs0aSL+gHj5t+2yKs+U9y+7fv06Bg8ejA8//BBpaWl4/vx5lXvy5OVxWcWKi8lVq1YpTGynp6cn/r34N8rXjaNSlY6OTonfUIuLhWKLFy/GxYsXsXjxYjg5OcHAwACjR49+4y8gyu5TlrFiZVGjRg04OztDLpfD2dkZX3zxBRo3boyjR49i2LBh4rizoKAgtGzZEiYmJggODsavv/6q0I6RkVGZj11czL/8vb76nSpj06ZN2LZtG5YtWwZ3d3cYGRlhwYIFKrVF9F9jAaPlisc2FBQUQBAEpKam4v3330dkZCQsLS2VauPlKetfnfW1eMr60sYVmJiYYODAgQgKCoKFhQVq1aqF1atXQ0dHR/xh6uLiAn9/f0yePBlBQUHw9PTEv//+i0uXLsHDwwPdunVTKkY7OzucP38ecXFxsLCwKHV2WmU4Ozvj+PHjGDBgADIyMrB8+fIK/4FfHsoUkyNHjlSqLT09vbeem6urK7777jvk5uaKvzHFxMQobFOzZk1kZmYiKytLvPURGxursM3L476Aoh6CtxWGquzzqvr16+Pbb79FTk4ODAwMAKBEgaEsqVQKAOJ4qZfHnRUry7iz4t7bYr/++qv4i0DNmjUBAP/884+4/tXv1M3NDT/99NMb27x+/Tq6d++O/v37Aygq7O7fv48GDRooHSeRunAQr5bbs2cPCgsLxd/kCgoK8Pz5c5w4cULpNpSZsv727dul7rt06VK0bNkSQ4cORb9+/dCmTRvUr19fofvwq6++woABA7Bo0SK0a9cOw4cPx82bN8VeG2UMGzYMrq6u6NKlCxo2bIjr168rve/LlixZAnNzc7Rv3x6DBw9Gp06dFMbe3L59Gz/88ANu3ryplvviLxeT7u7uCn+Ki0ll2dvbIzExEbdu3cK///6rcIujWL9+/VBYWIjp06fj7t27OHfuHDZv3gzg/3p03nnnHRgaGmL58uWIj4/H4cOHceDAAYV2igvDW7duITY2FhMmTHhr8aTKPq/q27cvJBIJpk+fjj///BNnzpxBcHCwUvu+ePEC//zzD/755x/Exsbi008/hYGBATp16iTGd/PmTZw7dw7379/HypUrSxR3b3L9+nVs3LgR9+/fx44dO/D999+LvbmGhoZo2bIlvvrqK9y9exdRUVFYuXKlwv4jR47EX3/9hcWLFyMuLu613/vFixdx/fp13L17FzNmzFDouSWqyljAaLmMjIwSt1Z0dHTEe+zKCA0Nfe30CcW30gICApCSklJisLOJiQm2bt2KxMRE3L59G8OGDUNcXJzCWJril/D9+uuvePToEWJjY7F7925xrMXgwYMVHqkGgA8++EDhH+JatWrh22+/RUJCAlJSUuDl5SXeZiu+1eLl5VUiRk9PT6SkpMDe3h5A0Q/1Y8eO4cWLF7h16xbGjBmDY8eOYfny5Vi6dCl8fHwwfvx4dO3aFVOmTPnPi5jyFJOlbe/r64sPP/wQDRs2LPWpOlNTU+zbtw+3b99Gp06dsGLFCsycORMAxB4NCwsLbNmyBWfPnkXHjh1x5MgRzJo1S6Gd4sKwR48e+Oijj0oUhqVRZZ9XmZiYYN++ffjjjz/g6+uLFStW4LPPPlNq36+//hru7u5o3LgxPvzwQzx9+hRhYWHioOcRI0agR48eGDduHN577z2kpaVh1KhRSsc2adIk3Lx5E76+vtiwYQOWLFkiDrgGgC+//BJyuRxdunTBggULMHfuXIX969Wrh127duHkyZPw8fHB7t27Fd6vBADTp09HkyZNMGDAAPTp0we1a9fG+++/r3SMROokEarx8Ok3vdRNVVKpFBYWFkhLS6sWA7f27duHmTNnKpyLRCLB6dOn0axZs9fuV1GDt37//XfExcWhefPmSE9Px/r16xEVFYXr16+L3eRVTWk5EBERgSFDhij0AEilUnz++eeVNq2CXC7H8ePH8ffff8PZ2Rndu3cvMdC5Mr0uB7777jtMmTIF9+/fF582qm6q278DquAgXuZAZeZArVq13roNx8BouaFDh+L27dvYvn07gKL/KYvfp/JfCQ4ORlxcHGQyGZo2bYoffvihyhYvr3Pjxg3o6emVeJIkJiamUgqY/Px8DBgwAFevXoWuri7y8/PRvXt37Ny58z8tYgDg4MGDcHBwgK2tLW7fvo0lS5bAz8+v2hYvRFQ1qFzACIIg3uMmzSWRSLBy5UqMHz8ejx8/hpOTE6ytrf+z4zdp0gQRERH/2fEqi7m5eYnbRVKptMQts4ryzTff4Nq1aygoKBDnlPrpp58QHh4uTmvxX3ny5AlWr16NJ0+ewNraGr1798a8efP+0xiISPuo/KuanZ0dFixYUGLsAWkmR0dHtG3btsKLl+o+c3Exf39/WFpaio/s6urqwsDAACNGjKiU4/35558lBqzq6Ojgzz//rJTjvcnHH3+MGzduICkpCb/++iuWLVum0qPBRERloXIBM3ToUOzatQv169eHj48P9u7dK76ciipXeWcZ/i9py8zFFhYWOHPmDPz8/NC4cWN0794dZ8+eLdOTUmVhY2MjPrZbTBAE2NraVsrxiIiqmnIN4i0sLMSJEyfEyQsNDQ0xcOBAjBkzBq1bt67IOFVSXQfxTps2DcbGxggNDcXVq1dhY2NT6naCIEAul5f6Iq/y0uYBfFUhB54/fw4fHx/8888/yM/Ph0wmg5OTE06fPv2f9X4wBziAU1uvP8AcANQ/iLdco/10dHTQq1cvHD58GA8fPsSiRYsQFRWFdu3awdPTE1988QWePXtWnkPQK940y3DxDMNnz55F586dUbduXVy7dg1+fn6YM2cO5s+fD1dXV3h4eGDv3r3IysrCxx9/DEdHR7Rq1Qpnz55VONadO3cwcOBAODg4wMPDA5MmTcK///4rrvfz88PcuXMRFBQENzc3eHh4YM2aNQptvHoLacmSJWjTpg3s7e3RsmVLrFy5km/9VEGNGjVw7tw5TJo0CR9++CGmTp2KU6dO8dYNEWmNCntc4fHjx/j777/x5MkTyGQy1K1bF5999hkcHR3x/fffV9RhtJ4yswwvW7YMCxcuRFRUlPiulIMHD8LS0hI//fQTxowZg08//VTsKYuIiECnTp0QGBgozv3z/Plz9O3bF56enjh79iwOHDiAlJQUjB07VuFYBw8ehJGREU6dOoVFixZh3bp1b5wx19jYGBs3bkRkZCSWL1+OvXv3YuvWrRX7JWkJCwsLLFiwANu2bcOsWbPE+XeIiLRBuQqYjIwMhISEoE2bNmjatCnOnDmDBQsW4NGjRzh16hSSkpLg5+eHKVOmVFS8Wi80NBT+/v4AAF9fX2RkZODy5csK28yePRs+Pj5wcnKChYUFAKBRo0aYMWMGXFxcMG3aNOjr66NmzZoYNmwYXFxcMGPGDDx9+hR//PEHAGD79u1o3LgxFixYADc3NzRp0gRffvklIiMjFQZue3h44NNPP4WLiwsGDhyIZs2a4dKlS6+Nf8aMGWjdujXs7e3x3nvvITAwEMeOHavor4mIiKo5lQdHFE9WBgADBw7El19+ibZt2ypsY2ZmhkmTJmHv3r3li5IAFM0yHBMTgz179gAoetLFz88PoaGh8PLyErcr7R0uxT0xQNG9W0tLS7i7u4vLateuDeD/xg3dvn0bUVFRpU7qGB8fLx7j5XYBwNra+o1jj44ePYqvv/4aCQkJ4iyu6pyOnYiINJPKBcydO3ewfv16DBky5I0/gBo1aoTz58+rehh6ydtmGS5W2jiIl2cdBore//Ly4N5XZyLOyspCt27dSn2t+suPWpfW7uvmo4mOjsbEiRMxa9Ys+Pr6wtTUFOHh4eLcOURERMpSuYB5dVbT1zExMUHHjh1VPQz9f8rMMlw8U21FaNKkCY4fPw57e/sKe4opOjoadnZ2mD59urisrLMHExERAeUYAxMREYFdu3aVum737t3sdalgFTnLsDLGjBmDZ8+eISAgADExMYiPj8e5c+fw8ccfq/zIoLOzM5KSknD06FHEx8dj27ZtWvGSOyIiqngqFzDz58/HP//8U+q6lJQULFiwQOWgqKSKnGVYGTY2Njh+/DgKCwvRv39/dOzYEQsWLECNGjVUnmune/fumDBhAubMmYNOnTohOjpaoTeGiIhIWSq/yM7MzAxHjhxBly5dSqyLiIhAv3791P4OGE1+kV1mZiY2btyI27dvo169epg6dWqVesuqNr/Eii+wKsIc0O4c0ObrDzAHAPW/yE7lwQ0SiQTPnz8vdZ02X9CKkJOTg169euHPP/9Efn4+dHV1cfToUVy8ePG1b90lIiLSJirfQmrTpg2Cg4NLvERNEARs3rwZbdq0KXdw2uqHH34QixegaABvRkYGtmzZoubIiIiIqgaVe2CCgoLQqVMnNGnSBCNHjoStrS0ePXqEb775Bnfv3n3j21jpzZ48eQKpVKrwiv38/Hw8fvxYjVERERFVHSoXMO3atUNERARmzZqF2bNno7CwEDo6OuLyV19qR8pzd3dHXl6ewjI9PT00atRITRERERFVLeV6wYeXlxeioqKQnZ2NtLQ0mJubczK5CtCpUyeMGDECe/bsgUwmQ35+Pt555x2MHz9e3aERERFVCRXyhjJDQ0MYGhpWRFOEogHSa9asQe/evfHnn3/C1tYW3bp1q7AXyv3XoqKi0KdPH8TFxaFGjRrV5lhERKQ+5fqJePr0aXz33XdISkpCTk6OwjqJRIKIiIhyBaft3n33Xbz77rvqDkNp0dHR6NmzJ3x9fREWFqaWGFq1aoXY2NhS35dDRETVh8pPIa1duxbdu3fH2bNnIZFIUKNGDYU//AGifUJDQzF27FhcuXJFLQOO8/PzIZPJYG1tLc7tRERE1ZPKPTDBwcGYPHkyvvrqq3IHMWDAAIXPeXl5aNmypfg238TERGzcuBEJCQmwtrZGQEAAmjZtWu7jUsXJzMxEeHg4zp49iydPniAsLAyffPLJa7ffu3cv1q1bh7S0NHTq1Alt27bFunXrcP/+fXGbH3/8EWvXrsXdu3dhY2ODgQMH4pNPPhFvpVlZWWHNmjWIiIjAzz//jMDAQHh5eSncQnr69CnmzJmDK1eu4Pnz53B0dMS0adPQt2/fSv9OiIio8qjcA/P06VP06dOnQoI4dOiQ+CcsLAzm5ubw8vICUPQOlKVLl6J169YICwvDoEGDsHLlSrW/5ZcUHTt2DG5ubnB1dUX//v2xf//+Eu8IKnbt2jXMnDkTAQEBOH/+PDp27IjPP/9cYZsrV64gMDAQAQEBiIyMxLp163DgwIES261duxYffPABLl68iCFDhpQ4Vm5uLpo2bYr9+/fj0qVLGDZsGCZNmoQbN25U3MkTEdF/TuUCplevXoiMjKzIWAAAN27cQE5ODtq3bw8AuHXrFnJzc+Hv7w89PT106NAB9vb2iIqKqvBjk+pCQ0Ph7+8PAPD19UVGRgYuX75c6rbbt29H586dERgYCBcXF4wePRqdO3dW2GbdunWYMmUKBg0aBEdHR/j4+GDOnDnYs2ePwnZ9+/bFkCFD4OjoiHr16pU4lq2tLQIDA+Hp6QlHR0eMGzcOvr6+OHbsWAWdORERqYPKt5BGjRqFiRMnIjs7G127doW5uXmJbVq0aFHmdiMiItChQwfo6+sDAB48eABHR0eFCQSdnZ2RmJhYYt/k5GQkJyeLn/X19VGnTp0yx/AmUqlU4b/aSiKRiN/BvXv3EBMTg3379kEqlUIqleLDDz/E/v374e3tLV674nX3799Hjx49FL7Dd955B6dPnxaX3b59G9evX8cXX3whbiOXy5GTk4Pc3Fzxcf0WLVootPPqseRyOTZs2IDw8HAkJycjPz9f3F/Va8gcKPJyDmgb5oB2X3+AOQCoPwdULmC6desGAFi9ejVWr16tMGhSEARIJJIyz4eUnp6O69evY+XKleKy7OxsGBsbK2xnbGyMJ0+elNg/JCQEQUFB4ud58+Zh+fLlZYpBWRykDMhkMgDAd999h4KCAnh4eIjrBEGAvr4+tm3bBlNTUwCAubk5zM3NIZVKYWhoCAsLC3F7IyMjSCQScVlWVhaCgoJKHatia2srFiq1a9dWaOfVY61atQrbtm3DF198AU9PTxgbG2PatGkAoLCfKpgD/5cD2krbc0Dbrz/AHFBnDqhcwJw/f74i4wAAXLhwAba2tmjQoIG4zNDQEFlZWQrbZWVllfremfHjx6N3797iZ319faSlpVVojFKpFGZmZkhPT9fqCSuNjY2RlZWFgoIC7NmzB0uXLkWnTp0Uthk2bBh27NgBNzc3AMCzZ88gCAKcnJxw+fJlhWsTFRUFQRDEZU2aNMHvv/+OcePGlTj2y5OIZmZmKrRTPDNq8bEuXLiA7t27o0ePHgCAwsJC/O9//0ODBg1Uzg3mQJHiHNBGzAHtvv4AcwCo3BxQ5hdMlQuYjh07qrrra0VERKBLly4Ky+zt7XH48GFxqgIAiI+Ph7e3d4n9bW1tYWtrK35OTU2ttMSSy+Vam7RAUQ+LXC7Hjz/+iGfPnmHIkCElfhPp2bMn9u7di8WLFwP4v+9szJgx6N27NzZt2oRu3bohMjJSfBy/+DudMWMGhg4dirp166JXr17Q0dHB7du3cefOHcybN088RmFhocJ1KCwsVDiWk5MTfvjhB1y5cgXm5ubYsmULnjx5gvr165f7+jEHBK0+f0C7c4DXvwhzQH3nrvIg3op2//59PHjwAD4+PgrLPT09IZPJcOTIEeTn5yMyMhKJiYniU0qkXqGhofD29i61G7Vnz564efMmbt++rbC8TZs2WLduHbZs2YJOnTrh3LlzGD9+vDjuCSgaCBwaGorz58+jW7du6N69O7Zu3Qo7O7syxTd9+nQ0adIEAwYMQJ8+fVC7dm28//77qp0sERFVGRLhdc+6KmHv3r0ICQnB3bt3S7yJFyga06KskJAQpKamYv78+SXWJSQkYNOmTUhISEDt2rUxfvx4pd4Dk5qaqvTxlSWVSmFhYYG0tDStrbojIiJw7Ngx5OTkoFevXujVq1e52/zkk09w7949HD9+vAIirFzMgSKmpqbiLTttwxzQ7usPMAeAys2BWrVqvXUblW8h7du3D+PGjcPIkSNx+fJljB49GnK5HD/88APMzc0xfPjwMrX3pokKHR0dsW7dOlVDpQp08OBBfPzxxwCKug+PHTuGoKAgTJgwoUztBAcHo2PHjjAyMkJERAQOHjyI1atXV0bIRERUDal8C2n9+vVYuHAhgoODAQCTJk3Crl27EB8fDysrK5iYmFRYkFR1zJ8/H4IgiC+pKywsRFBQEPLz88vUzo0bN9C/f3907NgRe/bswYoVKzBs2LDKCJmIiKohlQuYe/fuwcvLS3zfRvHtIlNTU8yePbtCphigqqWgoEDhCaCXl5f1zcg7duzATz/9hJycHGzZsgUjR47EgwcPYGVlhVu3blVQxEREVF2pXMDUqFEDubm5AIC6devijz/+ENfJ5XL8+++/5Y+OlBYdHQ1ra2sMHjy40o6hq6tb4qWCQNHjbjVr1ixze3Xr1kVsbCzc3d1L/UxERPQ6Ko+BadmyJX7//Xe899576N27N4KCglBYWAg9PT2sWrUKbdu2rcg46S2KZ4IODQ3F48ePYWNjUynH2bJlC/r16ycO2tbT08P27dtLFDXKkEqlsLa2fu1nIiKi11G5B2bu3Lmwt7cHACxZsgRt27bFtGnTMHHiRNSuXRtbt26tsCDpzYpngh41ahS6du2KsLAwcd3kyZNhZWVV4k/xXFK5ublYtGgRPD094eDggPfee09hnqmwsDC4uLjg1KlT8PLyQs+ePXH48GG0bt0a7u7uGDFiBAICAuDk5ISZM2ciLy9P3DciIgI9evSAi4sL6tevjyFDhiA+Pl5c/+oto1c/y+VyTJ06Fe+88w7s7OzQtm1bhISEKJz75MmTMXz4cAQHB6NRo0aoX78+Zs2aVeYxOUREpFlULmDatm2LgQMHAih6bfuxY8eQlZWFZ8+e4dq1a3BxcamwIOnN3jQT9IoVKxAbGyv+CQgIgJWVFVxdXQEAc+bMQXR0NLZt24YLFy6gd+/eGDhwIO7fvy+2n52dja+++gqff/45IiMj4eHhAVdXVyQkJODJkycIDw9HSEgITpw4gbVr14r7vXjxAhMnTsSZM2dw+PBh6OjoYOTIkeLL5t6msLAQderUwY4dOxAZGYmZM2dixYoVCA8PV9guMjISCQkJCA8Px6ZNm3Dw4EEcOHCgnN8qERFVZSoXMKNHj1b4bRooenW/mZkZEhMTMXr06HIHR8p500zQZmZmsLa2hrW1NaKjo/HNN99g165dsLa2RlJSEsLCwrBz5060a9cOTk5OCAwMRJs2bRR6cfLz87FmzRq0bt0arq6u4kSKMpkMX375JRo2bIhu3bph9uzZ+Prrr8UCpVevXujZsyecnZ3h6emJL7/8En/88Qf+/PNPpc5LT08Ps2fPRrNmzeDg4AB/f38MGjSoxEzSxXMeubm5oVu3bujSpQsuXbpU7u+ViIiqLpULmN27dyMlJaXUdampqdizZ4/KQZHy4uLiEBMTI056qKurCz8/P4SGhips9/vvvyMwMBArV65EmzZtAAB//PEH5HI52rRpAwcHB/HP5cuXkZCQIO4rk8nQqFGjEsdu1KiRWMwAReOisrKy8PDhQwBFb1cOCAhAy5Yt4eTkJM5OnpSUpPT57dixA507d0bDhg3h4OCAvXv3iu0Xa9CggcKMqNbW1pXyEkMiIqo6VB7EC0BhBuqX3bt3T6WnUqjsQkNDUVBQAE9PT3FZ8UzQq1atgpmZGf755x8MGzYMQ4cOxUcffSRul5WVBalUioiIiBKDcF+eAdzAwOC11/pNPvroI9SrVw8bNmyAjY0NCgsL0aFDB6XHpxw9ehSLFy9GUFAQWrZsCRMTEwQHB+PXX39V2E5PT0/hs0QiUfo2FRERaaYyFTBbtmzBli1bABT9kBgyZEiJWaFzcnKQkJCA/v37V1yUVKqCggIcPHgQS5YsKTGH1PDhw3HkyBEMGjQIw4cPh5ubG5YuXaqwTZMmTSCXy5GSkoJ27dqV+fi3b99Gdna2mAO//vorjI2NUbduXTx9+hRxcXHYsGGD2PbVq1fL1P61a9fQqlUrhduRL/cMERGR9ipTAVOnTh288847AIDY2Fg0aNAAVlZWCtvIZDK4u7tjzJgxFRcller06dN4/vw5hg4dWmIyxV69eiE0NBTR0dF4+PAhjhw5onBbxcLCAi4uLvD398fkyZMRFBQET09P/Pvvv7h06RI8PDzQrVu3Nx4/Ly8P06ZNw/Tp0/HgwQOsXr0aY8aMgY6ODszNzWFpaYm9e/fC2toaDx8+LFFAvY2zszMOHTqEc+fOwcHBAYcOHUJMTIz49BsREWmvMhUwfn5+8PPzEz8vXLgQzs7OFR4UKedtM0Fv3LgRCQkJePbsWYnZu8PDw+Hl5YWvvvoKGzZswKJFi5CcnAxLS0u0bNnyrcULAHh7e8PZ2Rm9e/dGbm4u+vbti1mzZgEAdHR0sG3bNsybNw/e3t5wdXXF8uXL0adPH6XPb8SIEbh16xbGjRsHiUSCvn37YtSoUYiIiFC6DSIiqp7KNRt1VVcdZ6O+d+8ezp49CwDo1q2b2h5Xr4xZSOPi4tCuXTtcu3atShfG6s6BqkKbZyNmDmj39QeYA4AGz0Y9evRoZGVl4eDBgyXWDRo0CGZmZti2bZuqzVMpLly4gCFDhogDbpctW4YDBw6gQ4cOao6s/NLS0vD999/D1NQUdevWVXc4RERUxan8GPWZM2fER3df1a9fP/z0008qB0UlCYKA8ePHIz8/H7m5ucjNzUV+fj7Gjx+v7tAqxLRp0/DNN99g7dq10NfXV3c4RERUxancA5OSklJiAG+xmjVr4p9//lE5KCopIyMDT58+VVgmCAJSUlLw4sULhfexaCK+N4iIiMpC5R6YunXr4tq1a6Wuu3btGmxtbVUOikoyMTEp8cj6m5YTERFVZyoXMIMHD8by5ctx6NAhheXffvstVqxYgSFDhpQ7OPo/Ojo6WLNmDSQSCXR0dCCVSiGRSLB27VqVXjJHRESkyVS+hfTZZ5/h5s2bGDRoEMaMGQNbW1skJyfjxYsXeP/997Fo0aKKjJNQNDja1tYWP/zwAyQSCXr37l0tBvASERGVlcoFjEwmw/Hjx3HmzBlERETg6dOnqFmzJrp06YLOnTtXZIz0ko4dO6Jjx47qDoOIiEityjUXEgB07doVXbt2rYhYiIiIiJSi8hiYYqdOncLSpUsREBCABw8eAAAuXbqER48elTs4IiIiotKU6zHqPn364OrVq7Czs8Pff/+NCRMmwN7eHjt37oSxsTGCg4MrMlYiIiIiAOXogZk2bRpSUlIQGxuLuLg4vDwjQZcuXThfDREREVUalXtgTpw4ga+//hru7u4l5oGws7NDUlJSuYMjIiIiKo3KPTAFBQUwNjYudV1aWhpkMpnKQRERERG9icoFTJs2bbBz585S1x04cABeXl4qB0VERET0JirfQlq2bBk6deoEb29v+Pv7QyKRIDw8HCtXrsSJEycQGRlZkXESERERiSTCy6Nvy+jKlSuYM2cOLl++DLlcDolEgnbt2mHt2rVo165dRcapkvT09Aqf2VgikUAmkyEvLw/l+Oo0nq6uLgoKCtQdhlowB4owB7Q7B7T5+gPMAaByc0CZn93lKmCKZWdnIy0tDebm5lVqVuTU1NQKb1MqlcLCwgJpaWklBi9rE1NTU2RkZKg7DLVgDhRhDmh3Dmjz9QeYA0Dl5kCtWrXeuk25X2QHAAYGBtDT0+OsyERERPSfKFcBc/r0aXh5ecHQ0BA2NjYwNDSEl5cXfvrpp4qKj4iIiKgElQuYXbt24f3334eenh7Wrl2LsLAwrF27Frq6uvjggw9e+4QSERERUXmpPAbGyckJvr6+2LFjR4l1o0aNwoULFxAfH1/uAMuDY2Aqjzbf/2YOFGEOaHcOaPP1B5gDgAaPgXny5AkGDRpU6rrBgwfjyZMnqjZNRERE9EYqFzBt27bFjRs3Sl1348YNtG7dWuWgiIiIiN5E5RfZrVixAoMHD0ZOTg769OmD2rVr48mTJzh69Ci++eYbhIWF4enTp+L2lpaWFRIwERERkcpjYHR0/q/zRiKRiH8vbu7lZQDUco+QY2Aqjzbf/2YOFGEOaHcOaPP1B5gDgPrHwKjcA7Nz584SRQoRERHRf0HlAmbkyJEVGAYRERGR8lQexHv69Ok3rv/qq69UbZqIiIjojVQuYLp3747JkycjOztbYXlSUhI6d+6MTz/9tNzBEREREZVG5QJm//79CAsLQ7NmzXD9+nUAwJ49e9C4cWMkJyfj8uXLFRYkERER0ctULmAGDRqEW7duwdnZGe+++y7atm2LMWPGYPTo0YiJicE777xTkXESERERico1mWOdOnUwceJESKVSXL9+HU2aNMHs2bOhr69fUfERERERlaByAZOVlYVx48bhww8/xKBBg3Dq1ClkZGSgcePG+O677yoyRiIiIiIFKj9G3aRJE2RmZuLw4cPo06cPAOC3337D9OnTMWDAAAwZMgT79u2rqDiJiIiIRCr3wDRp0gSxsbFi8QIARkZG2Lp1K06ePIkLFy5UQHhEREREJancA3P06NHXruvevTtu3bqlatNEREREb1SuQbwAcOrUKSxduhQBAQF48OABAODSpUsl3g9DREREVFFU7oFJSUlBnz59cPXqVdjZ2eHvv//GhAkTYG9vj507d8LY2BjBwcEVGSsRERERgHL0wEybNg0pKSmIjY1FXFwcXp7UukuXLoiIiKiQAImIiIhepXIPzIkTJ/D111/D3d29xFTidnZ2SEpKKndwRERERKVRuQemoKAAxsbGpa5LS0uDTCZTOSgiIiKiN1G5gGnTpg127txZ6roDBw7Ay8tL5aCIiIiI3kTlW0jLli1Dp06d4O3tDX9/f0gkEoSHh2PlypU4ceIEIiMjKzJOIiIiIpHKPTDt2rXD+fPnIZFIMGPGDAiCgOXLlyM5ORkRERFo0aJFRcZJREREJFK5BwYoKmIuXryI7OxspKWlwdzcHEZGRqVu++DBA9SpUwe6uq8/5OXLl7F//378888/MDMzw5gxY9C+fXskJiZi48aNSEhIgLW1NQICAtC0adPyhE5EREQarFwFTDFDQ0MYGhq+dr1cLoeTkxOio6Nf2zPz22+/Yfv27Zg5cyYaNmyI9PR05OTkoKCgAEuXLkW3bt2wcuVKXL16FStXrsTWrVthbm5eEeETERGRhin3m3iV9fJ7Ykqzf/9+DBw4EB4eHtDR0YG5uTlsbGxw69Yt5Obmwt/fH3p6eujQoQPs7e0RFRX1H0VOREREVU2F9MCUl1wux71799C6dWtMmDABOTk5aN68OcaOHYsHDx7A0dEROjr/V2s5OzsjMTFRjRETERGROlWJAubZs2coKCjApUuXsGzZMhgYGGD9+vXYvn07rK2tS7xvxtjYGE+ePCnRTnJyMpKTk8XP+vr6qFOnToXGKpVKFf6rrSQSidZ+B8yBIswB7c4Bbb7+AHMAUH8OVIkCRl9fHwDQo0cP1KpVCwDQv39/rFixAv3790dWVpbC9llZWaWOuQkJCUFQUJD4ed68eVi+fHmlxGxmZlYp7WoSbX9ZIXOAOaDtOaDt1x9gDqgzB6pEAWNiYoJatWpBIpGUWGdvb4/Dhw+jsLBQvI0UHx8Pb2/vEtuOHz8evXv3Fj/r6+sjLS2tQmOVSqUwMzNDenp6iSkUtImxsXGJwlJbMAeKMAe0Owe0+foDzAGgcnPAwsLirdtUiQIGALp164YTJ06gZcuW0NfXx+HDh9G6dWt4enpCJpPhyJEj8PPzw7Vr15CYmFjqm35tbW1ha2srfk5NTa20xJLL5VqbtEDRoGxtPn+AOcAc0O4c4PUvwhxQ37n/JwWMRCJBx44dYWpq+tpt+vfvj/T0dAQGBkIqlaJly5YYO3YsdHV1sWDBAmzatAkHDhxA7dq1MXfuXD5CTUREpMUkwtueb36LO3fu4JdffsHff/+N0aNHw8bGBnFxcbC2tn5jwfJfSE1NrfA2pVIpLCwskJaWprVVNwCYmpoiIyND3WGoBXOgCHNAu3NAm68/wBwAKjcHisfDvonKPTAvXrzA2LFjcejQIUgkEhQWFqJ79+6wsbHB3Llz4eTkhDVr1qjaPBEREdFrqfwiu5kzZ+LcuXM4efIk0tPTFV5U98EHH+DUqVMVEiARERHRq1Tugfnuu++wdu1adOvWrUT3maOjIxISEsobGxEREVGpVO6ByczMVHji52Xa/GgdERERVT6VC5gmTZrg8OHDpa4rfhyaiIiIqDKofAtp4cKF8PPzw4sXL9C/f39IJBJcv34dYWFh2LlzJ06ePFmRcRIRERGJVO6B6dGjBw4cOIDIyEj06dMHgiBg0qRJOHjwIEJDQ9G5c+eKjJOIiIhIVKYemN9//x3169eHgYEBAMDf3x/+/v64e/cuUlNTYWlpiYYNG1ZKoERERETFytQD07x5c/z+++8AAGdnZ/z2228AgPr166N9+/YsXoiIiOg/UaYCxtjYGOnp6QCAhIQE5ObmVkpQRERERG9SpltIrVq1wvjx49GhQwcAwNKlS2FlZVXqthKJBDt27Ch/hERERESvKFMBs2PHDixcuBC3b9+GRCLB3bt3kZSUVOq2EomkQgIkIiIielWZChhHR0fs3bsXAKCjo4O9e/eidevWlRIYERER0euo/B6Y+Pj4176Jl4iIiKgylamAefr0KczNzaGjowNTU1NkZma+cXtLS8tyBUdERERUmjI9hWRlZYVffvkFAFCrVi1YWVm98Q+9nSAImD59Otzc3GBlZYVbt24ptV+LFi2wdevWSo4O8PPzw/z58yv9OERERGVRph6YnTt3wsXFRfw7B+oqLzo6Gj179oSvry/CwsLE5REREThw4ADCw8Ph4OCAmjVrqjHKknbv3g09PT2ltvXz80Pjxo2xfPnySo6KiIi0XZkKmBEjRoh/HzlyZEXHUq2FhoZi7NixCA0NxePHj2FjYwOg6H061tbWVXYwtIWFhbpDICIiKqFMt5CaNGmi9J+mTZtWVswaJzMzE+Hh4Rg1ahS6du0q9sBMnjwZc+fORVJSEqysrNCiRQtx+wkTJsDBwQGNGjXC1q1bS72Vk52djSlTpsDR0RHNmjXDN998o7B+yZIlaNOmDezt7dGyZUusXLkS+fn54vo1a9bAx8cHhw4dQosWLeDs7Ixx48YpjG169bg7d+5E69atUaNGDXh4eGDUqFHiuVy+fBnbtm0TbyE+ePAAcrkcU6dOxTvvvAM7Ozu0bdsWISEhCnFOnjwZw4cPR3BwMBo1aoT69etj1qxZCrESERG9rEw9MC1atOBtIxUcO3YMbm5ucHV1Rf/+/TF//nxMmzYNK1asgJOTE7755hucPn0aUqkUQNFM39evX8fevXthZWWF1atX4/fff0fjxo0V2t2yZQvmzJmDadOm4YcffsCnn36K9u3bw9XVFUDRm5M3btwIGxsb3LlzB5988glMTEzw8ccfi20kJCTg5MmTCA0NxbNnzzB27Fh8+eWXpY57uXnzJubNm4fNmzfDx8cHSUlJuHr1KgBgxYoV+Ouvv9CwYUPMnj0bQNE4qcLCQtSpUwc7duyAhYUFoqOjMWPGDFhbW6NPnz5i25GRkbC2tkZ4eDji4+Mxbtw4eHp6YtiwYRV6LYiIqHooUwGze/fuSgqjegsNDYW/vz8AwNfXFxkZGbh8+TK8vLxgbGwMqVQKa2trAEW9LwcPHsTWrVvh7e0NAPjqq6/g6elZot0uXbpg9OjRAIApU6YgJCQEkZGRYgEzY8YMcVt7e3sEBgbi6NGjCgWMIAjYtGkTTExMAAADBgzAzz//XOp5JCUlwcjICN26dYOtrS0sLS3RpEkTAICZmRn09PRgaGgongsASKVSsaABAAcHB0RHR+PYsWMKBYy5uTlWrVoFqVQKNzc3dOnSBZcuXWIBQ0REpVL5PTCknLi4OMTExGDPnj0AAF1dXfj5+SE0NBReXl4ltk9ISEB+fr54OwkoKg6KB0+/zMPDQ/y7RCJB7dq1kZqaKi47evQovv76ayQkJCArKwtyuRympqYKbdjZ2YnFCwBYW1srtPEyHx8f2NnZoWXLlujWrRu8vb3xwQcfwMjI6I3fwY4dO7B//348fPgQ2dnZyM/PL9Gb1KBBA7EHqjiOO3fuvLFdIiLSXmUaA0NlFxoaioKCAnh6esLGxgY2NjbYvXs3jh8/Lk6MqSpd3ZL1Z2FhIYCip54mTpyILl26YP/+/Th37hw++eQT5OXlKd3Gq0xMTBAREYGQkBDY2tpi9erV8PHxwfPnz18b49GjR7F48WIMHToUhw4dwvnz5zF48OAScbz6pJNEInltHEREROyBqUQFBQU4ePAglixZAh8fH4V1w4cPx5EjR0rs4+joCD09PcTExKBevXoAgPT0dNy/fx/t2rVT+tjR0dGws7PD9OnTxWV///23aifyEl1dXXTs2BE9e/bElClT4Orqip9//hk9e/aETCaDXC5X2P7atWto1aqVeKsLKOplIiIiKg8WMJXo9OnTeP78OYYOHQozMzOFdb169UJoaCj69eunsNzExAQDBw5EUFAQLCwsUKtWLaxevRo6OjplGkDt7OyMpKQkHD16FM2aNcOZM2dw8uTJcp9PQkIC2rVrh7p16+LYsWMoLCwUx9zY2dnhxo0bePDgAYyNjWFhYQFnZ2ccOnQI586dg4ODAw4dOoSYmBjY29uXKxYiItJuvIVUiUJDQ+Ht7V2ieAGAnj174ubNm6VOx7B06VK0bNkSQ4cORb9+/dCmTRvUr18f+vr6Sh+7e/fumDBhAubMmYNOnTohOjpaoTdGFWZmZjhx4gT69u2LZs2aYc+ePQgJCUHDhg0BAIGBgZBKpXj33XfRsGFDJCUlYcSIEejRowfGjRuH9957D2lpaeKj10RERKqSCIIgqDuIyvK6wajlIZVKYWFhgbS0tBK3SzIzMzFnzhycPn0aenp6GDVqFKZPnw4dnfLViVlZWWjSpAmCgoLw0UcflautimJqaoqMjAx1h6EWb8oBbcIc0O4c0ObrDzAHgMrNgVq1ar11G95CqiCCIGDcuHG4ePGi+AK29evXo7CwELNmzSpTW7///jvi4uLQvHlzpKenY/369QCA999/v8LjJiIi0kTVugcmPT29TLddlCGRSCCTyZCXl4eXv7rk5GQ4OTmV2N7S0hKPHj0q0zFu3ryJiRMn4u7du5DJZGjevDnWrFlT4tFjddLV1UVBQYG6w1CL1+WAtmEOaHcOaPP1B5gDQOXmgDI/u6t1D0xeXl6Jx3XLSyqVQiaTie9VKfa621U5OTll7mJzcXHB6dOnSyyvSt212tx9/Loc0DbMAe3OAW2+/gBzAKjcHFCmgOEg3gpiZ2cHOzs7hZex6enplXh8moiIiMqPBUwFkUqlOHjwIGxtbcVlzZs3x5dffqnGqIiIiKqnan0L6b/m5uaG69evIz4+Hnp6enB0dOTkl0RERJWABUwF09PTQ/369dUdBhERUbXGW0hERESkcVjAEBERkcZhAUNEREQahwUMERERaRwWMERERKRxWMAQERGRxmEBQ0RERBqHBQwRERFpHBYwREREpHFYwBAREZHGYQFDREREGocFDBEREWkcFjBERESkcVjAEBERkcZhAUNEREQahwUMERERaRwWMERERKRxWMAQERGRxmEBQ0RERBqHBQwRERFpHBYwREREpHFYwBAREZHGYQFDREREGkdX3QEAwBdffIFLly5BV/f/wgkODoaVlRUAICUlBRs3bsSdO3dQo0YNDB8+HN7e3uoKl4iIiNSsShQwAODn54cRI0aUum7dunVwdHTE/PnzcffuXSxbtgwODg5wcHD4j6MkIiKiqqDK30J69OgR7t69i2HDhkFfXx+enp5o3bo1zp07p+7QiIiISE2qTA/MTz/9hJ9++gm1atVCr1690LVrVwBAYmIirKysYGJiIm7r5OSE33//XV2hEhERkZpViQKmV69eGD16NIyNjXH79m2sXr0axsbGaN++PXJychSKFwAwNjZGdnZ2iXaSk5ORnJwsftbX10edOnUqNFapVKrwX20lkUi09jtgDhRhDmh3Dmjz9QeYA4D6c6BKFDAuLi7i35s0aYIePXogKioK7du3h4GBAbKyshS2f/HiBQwNDUu0ExISgqCgIPHzvHnzsHz58kqJ2czMrFLa1SQymUzdIagVc4A5oO05oO3XH2AOqDMHqkQB8yqJRAJBEAAADg4OSElJQWZmptgT89dff5U6gHf8+PHo3bu3+FlfXx9paWkVGptUKoWZmRnS09Mhl8srtG1NYmxsXKKw1BbMgSLMAe3OAW2+/gBzAKjcHLCwsHjrNlWigImMjESLFi1gYGCA//3vfzhx4gQCAgIAAHXq1IGrqyv27duHUaNG4d69e7h+/TrWrFlToh1bW1vY2tqKn1NTUystseRyudYmLQAIgqDV5w8wB5gD2p0DvP5FmAPqO/cqUcAcP34cwcHBKCwsRK1atfDRRx8pvOfl008/xVdffYWhQ4fC3NwckyZN4iPUREREWqxKFDCrVq1643orKyssXbr0P4qGiIiIqroq/x4YIiIiolexgCEiIiKNwwKGiIiINA4LGCIiItI4LGCIiIhI47CAISIiIo3DAoaIiIg0DgsYIiIi0jgsYIiIiEjjsIAhIiIijcMChoiIiDQOCxgiIiLSOCxgiIiISOOwgKFye/DgAaysrHDr1i11h0JERFqCBUw1EB0dDWtrawwePFjdoRAREf0nWMBUA6GhoRg7diyuXLmCx48fqzscIiKiSscCRsNlZmYiPDwco0aNQteuXREWFiaui4qKgpWVFS5duoQuXbrA3t4eH3zwAeLi4hTaWL9+Pdzd3eHo6Ihp06ZhyZIl8PHxEdcXFhZi3bp1aNKkCerWrQsfHx+cPn36tTHJ5XJMnToV77zzDuzs7NC2bVuEhIRU+LkTEZH2YgGj4Y4dOwY3Nze4urqif//+2L9/PwRBUNhmxYoVCAoKwpkzZyCVSjFlyhRx3XfffYcvvvgCCxcuREREBOrVq4fdu3cr7L9t2zZs3rwZQUFBuHjxInx9fdGvXz/cv3+/1JgKCwtRp04d7NixA5GRkZg5cyZWrFiB8PDwij59IiLSUixgNFxoaCj8/f0BAL6+vsjIyMDly5cVtpk3bx68vLzQoEEDTJkyBdHR0cjJyQEAbN++HUOGDMGQIUPg4uKCmTNnwt3dXWH/4OBgfPzxx/jwww/h6uqKzz77DE2bNn1tr4qenh5mz56NZs2awcHBAf7+/hg0aBCOHTtWCd8AERFpIxYwGiwuLg4xMTHo27cvAEBXVxd+fn4IDQ1V2M7Dw0P8u7W1NQAgNTVVbKNFixYK27/8OSMjA48fP0br1q0VtmnXrh3u3bv32th27NiBzp07o2HDhnBwcMDevXvx8OFDFc6SiIioJF11B0CqCw0NRUFBATw9PcVlgiBAX18fq1atEpfp6emJf5dIJACKbvNUlqNHj2Lx4sUICgpCy5YtYWJiguDgYPz666+VdkwiItIuLGA0VEFBAQ4ePFhiwC0ADB8+HEeOHIGbm9tb23F1dUVMTAwGDhwoLouJiRH/bmpqChsbG1y/fh1eXl7i8itXrqBJkyaltnnt2jW0atUKo0ePFpclJCQoeWZERERvxwJGQ50+fRrPnz/H0KFDYWZmprCuV69eCA0NxeLFi9/aztixYzF9+nQ0a9YMrVq1Qnh4OP744w84ODiI2wQGBmLNmjVwdHSEp6cn9u/fj99++w2bNm0qtU1nZ2ccOnQI586dg4ODAw4dOoSYmBjY29uX65yJiIiKsYDRINnZ2bh79y4MDAywb98+eHt7lyheAKBnz57YuHEjbt++/dY2/f39kZiYiMWLFyMnJwd+fn4YNGiQQi9MQEAAMjIysGjRIqSmpqJ+/fo4fPgwXFxcSm1zxIgRuHXrFsaNGweJRIK+ffti1KhRiIiIUP3kiYiIXiIRXn3mthopHqhakaRSKSwsLJCWlga5XF7h7b/OrVu3MHDgQKSkpAAAWrVqhbCwMNSoUaPCj+Xv74/atWtj8+bNr93G1NQUGRkZFX5sTaCuHKhqmAPanQPafP0B5gBQuTlQq1att27Dp5A0QG5uLgYNGoR///1XXHbz5k3MmDGj3G2/ePECW7Zswf/+9z/cu3cPq1evxsWLFxXGxBAREVU1vIWkARISEvDkyROFZfn5+bhw4UK525ZIJDh79iw+//xz5ObmwsXFBbt27ULHjh3L3TYREVFlYQGjAQwNDUtdbmBgUCFtHz58uNztEBER/ZeqdQEjk8mgr69foW0Wv0fF2Ni4xCv7K4uHhwe6du2KixcvIi8vD0DR/dcZM2bA1NT0P4nhVbq6umo7trqpIweqIuaAdueANl9/gDkAqD8HOIi3jNQ1cCsrKwvz58/HmTNnYGBggICAAAQEBIj/E/3XtHkAHwfvFWEOaHcOaPP1B5gDgPoH8VbrHpjqxNjYGF988YW6wyAiIqoS+BQSERERaRwWMERERKRxWMAQERGRxmEBQ0RERBqHBQwRERFpHBYwREREpHFYwBAREZHGYQFDREREGocFDBEREWkcFjBERESkcVjAEBERkcZhAUNEREQahwUMERERaRwWMERERKRxWMAQERGRxmEBQ0RERBqHBQwRERFpHBYwREREpHFYwBAREZHGYQFDREREGocFDBEREWkcFjBERESkcVjAEBERkcZhAUNEREQahwUMERERaRwWMERERKRxdNUdwKvS09MxceJE2NraYt26dQCAxMREbNy4EQkJCbC2tkZAQACaNm2q5kiJiIhIXapcD8yuXbtgZ2cnfi4oKMDSpUvRunVrhIWFYdCgQVi5ciWePXumviCJiIhIrapUARMbG4tHjx6hS5cu4rJbt24hNzcX/v7+0NPTQ4cOHWBvb4+oqCg1RkpERETqVGUKmPz8fISEhGDChAmQSCTi8gcPHsDR0RE6Ov8XqrOzMxITE9URJhEREVUBVWYMzOHDh9G0aVM4OTnhr7/+EpdnZ2fD2NhYYVtjY2M8efKkRBvJyclITk4WP+vr66NOnToVGqdUKlX4r7aSSCRa+x0wB4owB7Q7B7T5+gPMAUD9OVAlCphHjx4hIiICX375ZYl1hoaGyMrKUliWlZUFQ0PDEtuGhIQgKChI/Dxv3jwsX7684gMGYGZmVintahKZTKbuENSKOcAc0PYc0PbrDzAH1JkDVaKAuXPnDtLS0jBhwgQAQF5eHvLy8jB8+HBMmjQJiYmJKCwsFG8jxcfHw9vbu0Q748ePR+/evcXP+vr6SEtLq9BYpVIpzMzMkJ6eDrlcXqFtaxJjY+MShaW2YA4UYQ5odw5o8/UHmANA5eaAhYXFW7epEgXMu+++ixYtWoiff/75Z5w/fx6fffYZTE1NIZPJcOTIEfj5+eHatWtITEyEl5dXiXZsbW1ha2srfk5NTa20xJLL5VqbtAAgCIJWnz/AHGAOaHcO8PoXYQ6o79yrRAGjr68PfX198bOxsTGkUqlYgS1YsACbNm3CgQMHULt2bcydOxfm5uZqipaIiIjUrUoUMK/q3LkzOnfuLH52dHQUX2pHREREVGUeoyYiIiJSFgsYIiIi0jgsYIiIiEjjsIAhIiIijcMChoiIiDQOCxgiIiLSOCxgiIiISOOwgCEiIiKNwwKGiIiINA4LGCIiItI4LGCIiIhI47CAISIiIo0jEQRBUHcQmiQ5ORkhISEYP348bG1t1R0OqQFzgJgDxBxQP/bAlFFycjKCgoKQnJys7lBITZgDxBwg5oD6sYAhIiIijcMChoiIiDQOC5gysrW1xaJFi3jPU4sxB4g5QMwB9eMgXiIiItI47IEhIiIijcMChoiIiDSOrroD0CSZmZkIDg7GjRs3YGhoiA8//BB+fn7qDovK4Pjx4zh37hwSEhLQrl07fPrpp+K6xMREbNy4EQkJCbC2tkZAQACaNm0qro+KisKePXvw9OlTNGzYEFOmTEHt2rXF9fv27cOpU6dQUFAALy8vTJgwAXp6egCYO1VJfn4+tm7dit9++w0ZGRmoVasWBgwYgI4dOwJgHmiDTZs24ZdffkF2djZMTU3RrVs3DBgwAACvv0YRSGnr1q0Tli5dKmRlZQnx8fHCRx99JPzyyy/qDovKICoqSrhy5YqwZcsWYc2aNeLy/Px8YcyYMcLBgweFvLw84dKlS8LAgQOFtLQ0QRAE4cGDB0L//v2FGzduCDk5OcLXX38tzJgxQ9z/p59+EsaOHSskJycLz58/F2bNmiXs2rVLXM/cqTqys7OFffv2CcnJyUJhYaFw+/ZtYeDAgcKdO3eYB1oiMTFRyMnJEQRBEJ48eSJMmjRJ+Pnnn3n9NQxvISkpJycHUVFRGDZsGIyMjODo6Ihu3brhzJkz6g6NyqB9+/Zo27YtzMzMFJbfunULubm58Pf3h56eHjp06AB7e3tERUUBAC5cuIAWLVqgefPm0NfXx5AhQxAfH48HDx4AAM6ePQs/Pz/Y2NjAzMwMgwYNQkREBADmTlVjYGCAoUOHwsbGBhKJBB4eHnB3d8edO3eYB1rC3t4e+vr64meJRIJHjx7x+msYFjBKevjwIQRBgIODg7jMyclJTFzSbA8ePICjoyN0dP7vfwlnZ2ckJiYCKOpWdnJyEtcZGRnBxsZGXP/gwQM4Ozsr7Pv8+XOkpaUxd6q4nJwcxMXFwcHBgXmgRfbs2YP+/ftjzJgxyMnJQadOnXj9NQzHwCgpJycHRkZGCsuMjY2RnZ2tpoioImVnZ8PY2FhhmbGxMZ48eQKg6PqXtr74+r+6vvjv2dnZzJ0qrLCwEF988QXc3NzQvHlz3L17l3mgJUaMGIHhw4cjLi4OV69eFa8Fr7/mYA+MkgwMDEok2osXL2BoaKimiKgiGRoaIisrS2FZVlaWeH0NDAzw4sULhfUvX38DAwOF/Yu3NTQ0ZO5UUYIgYPPmzXj69Ck+/fRTSCQS5oGWkUgkcHNzg56eHsLCwnj9NQwLGCXVrVsXABS6++Lj42Fvb6+ukKgC2dvbIzExEYWFheKy+Ph4sbvXwcEBf/31l7guOzsbjx8/Ftfb29sjPj5eXP/XX3+hRo0asLCwYO5UQYIgYOvWrYiPj8fixYvFHyLMA+1UWFiI5ORkXn8NwwJGSQYGBvDy8sLevXvx4sULJCYm4vTp0+jatau6Q6MykMvlyMvLQ2FhIQoLC5GXl4eCggJ4enpCJpPhyJEjyM/PR2RkJBITE+Hl5QUA8PHxwY0bN3Dz5k3k5eVh//79cHR0FP/x6dy5M44dO4bHjx8jIyMDBw4cQOfOnQEwd6qikJAQ/PnnnwgKClLo1mceVH+ZmZk4f/48Xrx4gcLCQvzxxx/48ccf0axZM15/DcOpBMogMzMTmzZtEp/h79u3L5/h1zD79+/HgQMHFJb5+vpi2rRpSEhIwKZNm5CQkIDatWtj/PjxCu9/iIyMxJ49e5CWloYGDRpg6tSp4vsfBEFAaGgofvzxR8jlcrRv3x4TJ05UeP8Dc6dqePLkCcaOHQs9PT1IpVJxub+/PwYMGMA8qOYyMzOxcuVK/PXXXygsLISlpSW6dOmCvn37QiKR8PprEBYwREREpHF4C4mIiIg0DgsYIiIi0jgsYIiIiEjjsIAhIiIijcMChoiIiDQOCxgiIiLSOCxgiIiISOOwgCEiIiKNwwKGiIiINA4LGCItEh4eLr4uncrH0dERkydPFj+Hh4dj8+bNaoyISLvoqjsAIiJNdPToUVhYWIifw8PD8csvv2DSpElqjIpIe7CAIaIqLzs7G4aGhuoOQ0Hz5s3VHQKRVuMtJCINFRISAgcHBxgZGaFr166IiYmBRCLB7t27AQD5+fmYNm0aLC0tUaNGDYwZMwaZmZkKbSQkJEAikWDPnj0YM2YMatSoAUtLS0yfPh0FBQVKx+Lj44OePXvim2++gYuLCwwNDeHj44M///xTYTtBELBu3TrUr18f+vr6cHZ2xueff66wzeLFi2FiYoLr16+jXbt2MDAwQHBwsFJx3LlzB3379oWlpSWMjIzQtGlThIWFievXr1+PVq1aoUaNGqhduzZ69uyJu3fvKrQxcuRING7cGD/++CMaN24MAwMDvPPOO7h69arCdi/fQho5ciT27NmD27dvQyKRQCKRYOTIkQCAK1euoHfv3qhTpw6MjY3RrFkz7N27V6nzIaLXYw8MkQb6/vvvMWHCBIwdOxb+/v64efMmBgwYoLDN3LlzsXnzZgQFBaFFixYICwvDnDlzSm1v3rx56NatGw4dOoQbN27gs88+g0wmw6pVq5SO6caNG7h//764z4IFC/Dee+/hzz//hL6+PgBg6tSp2L59O+bPn482bdrg8uXLmD17NgwNDTFhwgSxrby8PAwZMgSffPIJVqxYgZo1a771+Pfu3UO7du1gZ2eHr776CjY2NoiNjcWDBw/EbZKSkjB58mQ4ODggPT0dW7duRfv27XH37l1YWlqK2yUnJ2PSpElYvHgxLCwssGrVKrz33nu4d+8eateuXeLYCxcuREpKCv73v/8hNDQUAGBlZQUASExMhJeXFyZMmAADAwNERUVhzJgxKCwsxIgRI5T+fonoFQIRaZxWrVoJvr6+CsuWLl0qABB27dol/Pvvv4KhoaGwcOFChW28vb0FAEJ8fLwgCIIQHx8vABA6dOigsN3ChQsFIyMj4enTp0rF07FjR0FHR0e4e/euuOzevXuCjo6OsHXrVkEQBCEuLk6QSCRCSEiIwr6zZ88WbGxsBLlcLgiCICxatEgAIBw4cECpYxcbMmSIYGVlJTx//lyp7QsKCoQXL14IJiYmCjGNGDFCACBERESIy549eyaYmpoKc+bMEZc5ODgIgYGBCvs1atTojccsLCwU8vPzhYCAAKFdu3bKnhoRlYK3kIg0jFwuR0xMDHr37q2w3M/PT/z7rVu3kJ2djQ8//FBhm379+pXa5qvb+fv748WLF7h165bScTVu3Bhubm7iZ1dXVzRt2hTXrl0DAJw9e1aMoaCgQPzTpUsXPH78GH///bdCez169FD62AAQEREBf39/mJmZvXabq1evomvXrqhZsyZ0dXVhZGSEzMzMEreRatSoAV9fX4XPXbp0Ec+lLNLS0jBlyhQ4ODhAT08Penp62LZtW4ljElHZ8BYSkYZJSUlBQUGBeIui2Mu3NpKTk0ssAwBra+tS23zddsXtKKO0WyvW1tZiG6mpqRAEAbVq1Sp1/7///hsODg4AACMjI5iYmCh9bAD4999/UadOndeuf/DgAbp164aWLVsiJCQEderUgUwmQ48ePZCTk6Ow7avfbfG53Llzp0wxAUXjYy5fvozPPvsMjRo1gpmZGbZs2YKDBw+WuS0i+j8sYIg0jJWVFXR1dZGSkqKw/MmTJ+LfbW1txWV169YVl//zzz+ltvnyvi9vV9yOMl5to7idZs2aAQAsLS0hkUgQGRkJmUxWYtsGDRqIf5dIJEoft1jNmjXx6NGj164/deoUMjMzceTIEZibmwMACgoK8PTp0xLbvvrdAkXnUpbvAwBycnJw/PhxbNiwAR9//LG4vLCwsEztEFFJvIVEpGGkUimaN2+OY8eOKSwPDw8X/+7p6QlDQ0McPXpUYZvDhw+X2uar23333XcwMjKCp6en0nHFxsYiLi5O/BwXF4fffvsNbdq0AQB07twZQFFPScuWLUv8MTU1VfpYpenSpQu+++47ZGRklLo+OzsbEokEenp64rJDhw6V+rTV8+fPce7cOYXPZ8+eFc+lNDKZrERPTm5uLgoLCxUKtoyMDHz//fdKnxcRlY49MEQaaMGCBfDz88O4cePQv39/xMTEYM+ePQAAHR0dWFpaYsKECVi1ahUMDQ3Fp5Du379fanv379/HqFGjMGjQINy4cQMrV67EJ598ovCitrextrZGr169sGTJEgBFT+bUrVtXfJy4fv36CAwMxLBhw/Dpp5+iTZs2yM/Px927d3H+/HmFAkwVixYtwvHjx/Huu+9i1qxZsLW1xR9//IEXL15g1qxZ4piWUaNGYfz48bh9+zbWr18v9sa8zNLSEmPGjEFQUBDMzc2xatUqCIKAadOmvfb47u7u2LlzJ8LCwuDm5oZatWrB0dERrVq1wqpVq8Ses1WrVqFGjRql9lgRURmoexQxEalmy5Ytgp2dnWBgYCB07NhROH36tABACA8PFwRBEHJzc4WPP/5YMDc3F8zMzIQRI0YIe/fuLfUppF27dgkjRowQTE1NBXNzc2Hq1KlCXl6e0rF07NhR6NGjh7Bz507B0dFR0NfXF7y9vYU//vhDYbvCwkJh48aNQuPGjQWZTCZYWloK7dq1EzZs2CBus2jRIsHY2Fil7+T27dtC7969BTMzM8HIyEho1qyZwtNM33zzjeDs7CwYGBgIbdu2Fa5fv/7ap4mOHz8uuLu7CzKZTGjevLkQFRWlcKxX93v+/LkwaNAgoWbNmgIAYcSIEYIgFD2N5evrKxgZGQl2dnbC2rVry3WORFREIgiCoN4Siogqwo4dOzB27FjEx8fD0dFRqX0SEhLg5OSEb7/9Fv7+/iof28fHByYmJjh+/LjKbVQVI0eOxC+//ILY2Fh1h0JEb8BbSEQa6OnTpwgKCoKvry9MTU0RHR2N5cuXw8/PT+nihYhIk7GAIdJAenp6uH//Pvbv349nz57BysoKw4YNw+rVqyv8WHK5HG/qqNXVrfx/RgoLC9/45I5UKlXpySUi0ly8hUREb+To6IjExMTXrv8v/gkpnmvodc6fPw8fH59Kj4OIqg4WMET0Rrdu3UJubu5r17ds2bLSY0hISEBqaupr1zdo0KDcj2ETkWZhAUNEREQahy+yIyIiIo3DAoaIiIg0DgsYIiIi0jgsYIiIiEjjsIAhIiIijcMChoiIiDQOCxgiIiLSOP8PnzBgSV2IPc0AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Text elements avoid each other\n", "# Text elements avoid being drawn on top of points \n", "# Bounding box for text is expanded 1.1x width 1.25x height\n", "\n", "adjust_text_options = {\n", " 'avoid_text': True,\n", " 'avoid_points': True,\n", " 'expand_text': (1.1, 1.25),\n", "}\n", "\n", "(\n", " ggplot(df)\n", " + aes(x='gdp_per_capita', y='life_expectancy', label='country')\n", " + geom_point()\n", " + geom_text(adjust_text=adjust_text_options, size=10)\n", " + ylim(40, 90)\n", " + xlim(0, 35000)\n", ")" ] }, { "cell_type": "markdown", "id": "06da3e6a", "metadata": {}, "source": [ "I honestly don't think it works very well but it's The Suggested Solution." ] }, { "cell_type": "code", "execution_count": null, "id": "fe396cfb", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }