diff --git a/Scenarios.png b/Scenarios.png new file mode 100644 index 0000000..ce1ca4f Binary files /dev/null and b/Scenarios.png differ diff --git a/alex-baybe-inhibitor.ipynb b/alex-baybe-inhibitor.ipynb new file mode 100644 index 0000000..1033359 --- /dev/null +++ b/alex-baybe-inhibitor.ipynb @@ -0,0 +1,4365 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", + "count 515.000000 515.000000 515.000000 515.000000 \n", + "mean 157.151456 6.613592 0.006934 0.113476 \n", + "std 212.312862 2.270734 0.012923 0.159137 \n", + "min 0.500000 0.000000 0.000010 0.000000 \n", + "25% 24.000000 4.400000 0.001000 0.050000 \n", + "50% 24.000000 7.000000 0.001000 0.100000 \n", + "75% 240.000000 7.000000 0.003000 0.100000 \n", + "max 672.000000 10.000000 0.100000 0.600000 \n", + "\n", + " Efficiency \n", + "count 515.000000 \n", + "mean 18.439395 \n", + "std 313.671188 \n", + "min -4834.000000 \n", + "25% 25.625000 \n", + "50% 50.000000 \n", + "75% 85.475000 \n", + "max 100.000000 \n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "df_AA2024 = pd.read_excel('data/averaged_filtered_AA2024.xlsx')\n", + "print(df_AA2024.describe())" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " SMILES Time_h pH Inhib_Concentrat_M \\\n", + "0 C(=O)(C(=O)[O-])[O-] 24.0 4.0 0.0010 \n", + "1 C(=O)(C(=O)[O-])[O-] 24.0 7.0 0.0005 \n", + "2 C(=O)(C(=O)[O-])[O-] 24.0 10.0 0.0010 \n", + "3 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 24.0 4.0 0.0010 \n", + "4 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 24.0 7.0 0.0005 \n", + "\n", + " Salt_Concentrat_M Efficiency \n", + "0 0.10 20.00 \n", + "1 0.05 12.35 \n", + "2 0.10 20.00 \n", + "3 0.10 30.00 \n", + "4 0.05 -23.95 \n" + ] + } + ], + "source": [ + "print(df_AA2024.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", + "count 333.000000 333.000000 3.330000e+02 333.000000 \n", + "mean 79.969970 0.440733 1.510580e-01 0.051051 \n", + "std 143.826377 1.913196 5.784776e-01 0.301263 \n", + "min 0.000000 -0.600000 1.000000e-07 0.000000 \n", + "25% 2.000000 -0.136721 2.000000e-04 0.000000 \n", + "50% 5.500000 0.000000 1.800000e-03 0.000000 \n", + "75% 96.000000 1.000000 4.279601e-03 0.000000 \n", + "max 720.000000 13.000000 3.280000e+00 2.000000 \n", + "\n", + " Efficiency \n", + "count 333.000000 \n", + "mean 60.781498 \n", + "std 22.139768 \n", + "min -49.170000 \n", + "25% 47.066667 \n", + "50% 66.000000 \n", + "75% 77.220000 \n", + "max 96.200000 \n" + ] + } + ], + "source": [ + "df_AA1000 = pd.read_excel('/workspaces/project-project-surface-science-syndicate/data/averaged_filtered_AA1000.xlsx')\n", + "print(df_AA1000.describe())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Construct dataframe to work with" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "df = df_AA2024\n", + "df_transfer = df_AA1000" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "df_combined = pd.concat([df, df_transfer], axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Time_hpHInhib_Concentrat_MSalt_Concentrat_MEfficiency
count848.000000848.0000008.480000e+02848.000000848.000000
mean126.8431604.1895806.352976e-020.08896235.066659
std192.0556763.6961833.690920e-010.227758245.617010
min0.000000-0.6000001.000000e-070.000000-4834.000000
25%6.0000000.0000005.000000e-040.00000035.000000
50%24.0000004.0000001.000000e-030.01000060.000000
75%144.0000007.0000004.200000e-030.10000080.507500
max720.00000013.0000003.280000e+002.000000100.000000
\n", + "
" + ], + "text/plain": [ + " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", + "count 848.000000 848.000000 8.480000e+02 848.000000 \n", + "mean 126.843160 4.189580 6.352976e-02 0.088962 \n", + "std 192.055676 3.696183 3.690920e-01 0.227758 \n", + "min 0.000000 -0.600000 1.000000e-07 0.000000 \n", + "25% 6.000000 0.000000 5.000000e-04 0.000000 \n", + "50% 24.000000 4.000000 1.000000e-03 0.010000 \n", + "75% 144.000000 7.000000 4.200000e-03 0.100000 \n", + "max 720.000000 13.000000 3.280000e+00 2.000000 \n", + "\n", + " Efficiency \n", + "count 848.000000 \n", + "mean 35.066659 \n", + "std 245.617010 \n", + "min -4834.000000 \n", + "25% 35.000000 \n", + "50% 60.000000 \n", + "75% 80.507500 \n", + "max 100.000000 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABLQAAAGwCAYAAACw8jwSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABsJElEQVR4nO3dd3xUVf7/8fdMpqQ30ihJ6CVBCE0EFBQRxJ9YgEUsiAUrsgqWFV0burK6AoqCuChRd3Wtq6JfRQUBG1gQUIyCIMWlhCIQCJCE5PP7g8fczaRQA2HY1/PxuI9kbjn33Dt3Zs59z517XGZmAgAAAAAAAEKEu7YrAAAAAAAAABwKAi0AAAAAAACEFAItAAAAAAAAhBQCLQAAAAAAAIQUAi0AAAAAAACEFAItAAAAAAAAhBQCLQAAAAAAAIQUT21XAEDtKCsr07p16xQTEyOXy1Xb1QEAAAfBzLRjxw7Vq1dPbjffTQMA/ncRaAH/o9atW6f09PTargYAADgMv/32mxo0aFDb1QAAoNYQaAH/o2JiYiTtaxDHxsbWcm0AAMDBKCgoUHp6uvM5DgDA/yoCLeB/VOBnhrGxsQRaAACEGG4XAAD4X8cP7wEAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUjy1XQEA/1tKSkqUl5cX9FiSvF6vMy4rKyvoMQAAAAAA5RFoATim8vLydMOkdxWTmiFJ2pD3lcKiEpWc2UyStCN/jZ4eLrVt27Y2qwkAAAAAOI4RaAE45mJSM5SQ/t8AyxOb7DwGAAAAAOBAuIcWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRZwHLr//vvlcrmChpYtWzrT9+zZo+HDh6tOnTqKjo7WgAEDlJ+fX4s1BgAAAADg2CHQAo5T2dnZWr9+vTN8/vnnzrSRI0fq3Xff1euvv665c+dq3bp16t+/fy3WFgAAAACAY8dT2xUAUDWPx6O0tLRK47dv367nnntOL7/8snr27ClJys3NVatWrTR//nydcsopVZZXVFSkoqIi53FBQcHRqTgAAAAAAEcZV2gBx6lffvlF9erVU+PGjXXppZdqzZo1kqQFCxaopKREvXr1cuZt2bKlMjIyNG/evGrLGzt2rOLi4pwhPT39qG8DAAAAAABHA4EWcBzq3Lmznn/+ec2YMUNPP/20Vq5cqdNOO007duzQhg0b5PP5FB8fH7RMamqqNmzYUG2Zo0eP1vbt253ht99+O8pbAQAAAADA0cFPDoHjUN++fZ3/27Rpo86dOyszM1OvvfaaIiIiDqtMv98vv99fU1UEAAAAAKDWcIUWEALi4+PVvHlzLV++XGlpaSouLta2bduC5snPz6/ynlsAAAAAAJxoCLSAELBz506tWLFCdevWVYcOHeT1ejVr1ixn+tKlS7VmzRp16dKlFmsJAAAAAMCxwU8OgePQbbfdpn79+ikzM1Pr1q3Tfffdp7CwMF188cWKi4vT1VdfrVGjRikxMVGxsbEaMWKEunTpUm0PhwAAAAAAnEgItIDj0H/+8x9dfPHF2rJli5KTk3Xqqadq/vz5Sk5OliRNmDBBbrdbAwYMUFFRkfr06aPJkyfXcq0BAAAAADg2CLSA49Arr7yy3+nh4eGaNGmSJk2adIxqBAAAAADA8YN7aAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBIeCvf/2rXC6XbrnlFmfcnj17NHz4cNWpU0fR0dEaMGCA8vPza6+SAAAAAAAcIwRawHHum2++0TPPPKM2bdoEjR85cqTeffddvf7665o7d67WrVun/v3711ItAQAAAAA4dgi0gOPYzp07demll2rq1KlKSEhwxm/fvl3PPfecxo8fr549e6pDhw7Kzc3Vl19+qfnz51dZVlFRkQoKCoIGAAAAAABCEYEWcBwbPny4/t//+3/q1atX0PgFCxaopKQkaHzLli2VkZGhefPmVVnW2LFjFRcX5wzp6elHte4AAAAAABwtBFrAceqVV17Rd999p7Fjx1aatmHDBvl8PsXHxweNT01N1YYNG6osb/To0dq+fbsz/Pbbb0ej2gAAAAAAHHWe2q4AgMp+++033Xzzzfr4448VHh5eI2X6/X75/f4aKQsAAAAAgNrEFVrAcWjBggXauHGj2rdvL4/HI4/Ho7lz52rixInyeDxKTU1VcXGxtm3bFrRcfn6+0tLSaqfSAAAAAAAcI1yhBRyHzjzzTP3www9B46688kq1bNlSf/rTn5Seni6v16tZs2ZpwIABkqSlS5dqzZo16tKlS21UGQAAAACAY4ZACzgOxcTEqHXr1kHjoqKiVKdOHWf81VdfrVGjRikxMVGxsbEaMWKEunTpolNOOaU2qgwAAAAAwDFDoAWEqAkTJsjtdmvAgAEqKipSnz59NHny5NquFgAAx7WSkhLl5eUFjcvKypLX662lGgEAgMNBoAWEiDlz5gQ9Dg8P16RJkzRp0qTaqRAAACEoLy9PN0x6VzGpGZKkHflr9PRwqW3btrVcMwAAcCgItAAAAPA/JSY1QwnpzWq7GgAA4AjQyyEAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWUIMaN26sLVu2VBq/bds2NW7cuBZqBAAAAADAiYdAC6hBq1atUmlpaaXxRUVFWrt2bS3UCAAAAACAE4+ntisAnAimT5/u/P/hhx8qLi7OeVxaWqpZs2apYcOGtVAzAAAAAABOPARaQA244IILJEkul0tDhw4Nmub1etWwYUONGzeuFmoGAAAAAMCJh0ALqAFlZWWSpEaNGumbb75RUlJSLdcIAAAAAIATF4EWUINWrlxZ21UAAAAAAOCER6AF1LBZs2Zp1qxZ2rhxo3PlVsC0adNqqVYAAAAAAJw4CLSAGvTAAw9ozJgx6tixo+rWrSuXy1XbVQIAAAAA4IRDoAXUoClTpuj555/XkCFDarsqAAAAAACcsNy1XQHgRFJcXKyuXbvWdjUAAAAAADihEWgBNWjYsGF6+eWXa7saAAAAAACc0PjJIVCD9uzZo7///e+aOXOm2rRpI6/XGzR9/PjxB1XO008/raefflqrVq2SJGVnZ+vee+9V3759nfXceuuteuWVV1RUVKQ+ffpo8uTJSk1NrdHtAQAAAADgeESgBdSg77//Xjk5OZKkJUuWBE07lBvEN2jQQH/961/VrFkzmZleeOEFnX/++Vq4cKGys7M1cuRI/d///Z9ef/11xcXF6aabblL//v31xRdf1OTmAAAAAABwXCLQAmrQ7Nmza6Scfv36BT3+y1/+oqefflrz589XgwYN9Nxzz+nll19Wz549JUm5ublq1aqV5s+fr1NOOaXKMouKilRUVOQ8LigoqJG6AgAAAABwrHEPLeA4V1paqldeeUWFhYXq0qWLFixYoJKSEvXq1cuZp2XLlsrIyNC8efOqLWfs2LGKi4tzhvT09GNRfQAAAAAAahxXaAE16IwzztjvTws/+eSTgy7rhx9+UJcuXbRnzx5FR0frrbfeUlZWlhYtWiSfz6f4+Pig+VNTU7Vhw4Zqyxs9erRGjRrlPC4oKCDUAgAAAACEJAItoAYF7p8VUFJSokWLFmnJkiUaOnToIZXVokULLVq0SNu3b9cbb7yhoUOHau7cuYddN7/fL7/ff9jLAwAAAABwvCDQAmrQhAkTqhx///33a+fOnYdUls/nU9OmTSVJHTp00DfffKMnnnhCF110kYqLi7Vt27agq7Ty8/OVlpZ22HUHAAAAACBUcA8t4Bi47LLLNG3atCMqo6ysTEVFRerQoYO8Xq9mzZrlTFu6dKnWrFmjLl26HGlVAQAAAAA47nGFFnAMzJs3T+Hh4Qc9/+jRo9W3b19lZGRox44devnllzVnzhx9+OGHiouL09VXX61Ro0YpMTFRsbGxGjFihLp06VJtD4cAAAAAAJxICLSAGtS/f/+gx2am9evX69tvv9U999xz0OVs3LhRl19+udavX6+4uDi1adNGH374oc466yxJ+37a6Ha7NWDAABUVFalPnz6aPHlyjW4LAAAAAADHKwItoAbFxcUFPXa73WrRooXGjBmj3r17H3Q5zz333H6nh4eHa9KkSZo0adJh1RMAAAAAgFBGoAXUoNzc3NquAgAAAAAAJzwCLeAoWLBggX766SdJUnZ2ttq1a1fLNQIAAAAA4MRBoAXUoI0bN2rw4MGaM2eO4uPjJUnbtm3TGWecoVdeeUXJycm1W0EAAAAAAE4A7tquAHAiGTFihHbs2KEff/xRv//+u37//XctWbJEBQUF+uMf/1jb1QMAAAAA4ITAFVpADZoxY4ZmzpypVq1aOeOysrI0adKkQ7opPAAAAAAAqB5XaAE1qKysTF6vt9J4r9ersrKyWqgRAAAAAAAnHgItoAb17NlTN998s9atW+eMW7t2rUaOHKkzzzyzFmsGAAAAAMCJg0ALqEFPPfWUCgoK1LBhQzVp0kRNmjRRo0aNVFBQoCeffLK2qwcAAAAAwAmBe2gBNSg9PV3fffedZs6cqZ9//lmS1KpVK/Xq1auWawYAAAAAwImDK7SAGvDJJ58oKytLBQUFcrlcOuusszRixAiNGDFCnTp1UnZ2tj777LPariYAAAAAACcEAi2gBjz++OO65pprFBsbW2laXFycrrvuOo0fP74WagYAAAAAwImHQAuoAYsXL9bZZ59d7fTevXtrwYIFx7BGAAAAAACcuAi0gBqQn58vr9db7XSPx6NNmzYdwxoBAAAAAHDiItACakD9+vW1ZMmSaqd///33qlu37jGsEQAAAAAAJy4CLaAGnHPOObrnnnu0Z8+eStN2796t++67T+eee24t1AwAAAAAgBOPp7YrAJwI/vznP+vf//63mjdvrptuukktWrSQJP3888+aNGmSSktLdffdd9dyLQEAAAAAODEQaAE1IDU1VV9++aVuuOEGjR49WmYmSXK5XOrTp48mTZqk1NTUWq4lAAAAAAAnBgItoIZkZmbq/fff19atW7V8+XKZmZo1a6aEhITarhoAAAAAACcUAi2ghiUkJKhTp061XQ0AAAAAAE5Y3BQeAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYWbwgMAcJBKSkqUl5cXNC4rK0ter7eWagQAAAD8byLQAgDgIOXl5emGSe8qJjVDkrQjf42eHi61bdu2lmsGAAAA/G8h0AIA4BDEpGYoIb1ZbVcDAAAA+J/GPbQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUgi0gOPQ2LFj1alTJ8XExCglJUUXXHCBli5dGjTPnj17NHz4cNWpU0fR0dEaMGCA8vPza6nGAAAAAAAcOwRawHFo7ty5Gj58uObPn6+PP/5YJSUl6t27twoLC515Ro4cqXfffVevv/665s6dq3Xr1ql///61WGsAAAAAAI4NT21XAEBlM2bMCHr8/PPPKyUlRQsWLFD37t21fft2Pffcc3r55ZfVs2dPSVJubq5atWql+fPn65RTTqmNagMAAAAAcExwhRYQArZv3y5JSkxMlCQtWLBAJSUl6tWrlzNPy5YtlZGRoXnz5lVZRlFRkQoKCoIGAAAAAABCEYEWcJwrKyvTLbfcom7duql169aSpA0bNsjn8yk+Pj5o3tTUVG3YsKHKcsaOHau4uDhnSE9PP9pVBwAAAADgqCDQAo5zw4cP15IlS/TKK68cUTmjR4/W9u3bneG3336roRoCAAAAAHBscQ8t4Dh200036b333tOnn36qBg0aOOPT0tJUXFysbdu2BV2llZ+fr7S0tCrL8vv98vv9R7vKAAAAAAAcdVyhBRyHzEw33XST3nrrLX3yySdq1KhR0PQOHTrI6/Vq1qxZzrilS5dqzZo16tKly7GuLgAAAAAAxxRXaAHHoeHDh+vll1/WO++8o5iYGOe+WHFxcYqIiFBcXJyuvvpqjRo1SomJiYqNjdWIESPUpUsXejgEAAAAAJzwCLSA49DTTz8tSTr99NODxufm5uqKK66QJE2YMEFut1sDBgxQUVGR+vTpo8mTJx/jmgIAAAAAcOwRaAHHITM74Dzh4eGaNGmSJk2adAxqBAAAAADA8YN7aAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpBBoAQAAAAAAIKQQaAEAAAAAACCkEGgBAAAAAAAgpHhquwIAAABATSopKVFeXp7zOCsrS16vtxZrBAAAahqBFgAAAE4oeXl5umHSu4pJzdCO/DV6erjUtm3b2q4WAACoQQRaAAAAOOHEpGYoIb1ZbVcDAAAcJdxDCwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACHFU9sVAAAAAI6WstK9Wrp0qfN43/9W7fSsrCx5vd5jWUUAAHAYCLQAAABwwircvE5/fa9IyT/skSRtyPtKcY3aKKGK6Tvy1+jp4VLbtm1rr8IAAOCgEGgBAADghBad0kAJ6c0kSTvy1+x3OgAACA3cQwsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALOE59+umn6tevn+rVqyeXy6W33347aLqZ6d5771XdunUVERGhXr166ZdffqmdygIAAAAAcAwRaAHHqcLCQrVt21aTJk2qcvqjjz6qiRMnasqUKfrqq68UFRWlPn36aM+ePce4pgAAAAAAHFue2q4AgKr17dtXffv2rXKamenxxx/Xn//8Z51//vmSpBdffFGpqal6++23NXjw4GNZVQAAAAAAjimu0AJC0MqVK7Vhwwb16tXLGRcXF6fOnTtr3rx5VS5TVFSkgoKCoAEAAAAAgFBEoAWEoA0bNkiSUlNTg8anpqY60yoaO3as4uLinCE9Pf2o1xMAAAAAgKOBQAv4HzF69Ght377dGX777bfarhIAAAAAAIeFQAsIQWlpaZKk/Pz8oPH5+fnOtIr8fr9iY2ODBgAAAAAAQhGBFhCCGjVqpLS0NM2aNcsZV1BQoK+++kpdunSpxZoBAAAAAHD00cshcJzauXOnli9f7jxeuXKlFi1apMTERGVkZOiWW27RQw89pGbNmqlRo0a65557VK9ePV1wwQW1V2kAAAAAAI4BAi3gOPXtt9/qjDPOcB6PGjVKkjR06FA9//zzuuOOO1RYWKhrr71W27Zt06mnnqoZM2YoPDy8tqoMAAAAAMAxQaAFHKdOP/10mVm1010ul8aMGaMxY8Ycw1oBAAAAAFD7uIcWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgo3hQdwXCkr3aulS5c6j7OysuT1eg+4XElJifLy8oLGHeyywOE63OMVAAAAwJEh0AJwXCncvE5/fa9IyT/s0Y78NXp6uNS2bdsDLpeXl6cbJr2rmNQMSTqkZYHDdbjHKwAAAIAjQ6AF4LgTndJACenNDnm5mNSMw1oOOBKHe7wCAAAAOHzcQwsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhhUALAAAAAAAAIYVACwAAAAAAACGFQAsAAAAAAAAhxVPbFQAABCspKVFeXl7QuKysLHm93iMqq6SkRJKCyjnccgEAAACgNhFoAcBxJi8vTzdMelcxqRmSpB35a/T0cKlt27ZHVNaGvK8UFpWo5MxmR1wuAAAAANQmAi0AOA7FpGYoIb1ZjZa1I3+NPLHJNVYuAAAAANQW7qEFAAAAAACAkEKgBQAAAAAAgJBCoAUAAAAAAICQQqAFAAAAAACAkMJN4QEct8pK92rp0qVB47KysuT1emupRvtXUlKivLy8oMeSnPrur+7ll923zXZ0KwsANaTie590fL9X78+hfO6cSNsNAEAoItACcNwq3LxOf32vSMk/7JEk7chfo6eHS23btq3lmlUtLy9PN0x6VzGpGZKkDXlfKSwqUcmZzQ5Y9/LLbsj7SnGN2ijhWFYeAA5Txfe+4/29en8O5XPnRNpuAABCEYEWgONadEoDJaQ3q+1qHLSY1Aynvjvy18gTm3zQ9Q8suyN/zdGsIgDUuPLvfaHuUD53TqTtBgAg1HAPLQAAAAAAAIQUAi0AAAAAAACEFAItAAAAAAAAhBTuoQWgxu2vt78j6cGvYu9TNdWbVMX6li/3eOzFan/1RWg6WsdZqB2/+6vvgbblUMot/55UsTfS/T0+0LwV11tTTuTXfE0dDxWfC3qLBQDgxEegBaDG7a+3vyPpwa9871M12ZtU+fpWLPd47MVqf/VFaDpax1moHb/7q++BtuVQyq34nhT4v+K0Q533aO3fE/k1X1PHQ1XPDb3FAgBwYiPQAnBUVNfb35H24He0ej3cX09Vx2MvVsdjnXBkjtZzejweK4f7ejvQthzsshXfk8r3Rrq/xwea92g6Hp/HmlITx0NVzw0AADixcQ8tAAAAAAAAhBQCLQAAAAAAAIQUAi0AAAAAAACEFO6hBeCEVL5HxAP1TFa+N6yKPSlW7Clrf+Xur1etiuUeybL7q++RlCsdfA9iR6uXuON93iN5jg+l3EM5fmujXKn63uiO1uttf9MOtdyjpab276Hss+PxdXEs3n9r4zmV9t9r7/7eUwEAQM0j0AJwQirfI+LB9GIW6A2r/HIVpx1MudX1qlVVuUey7P7qe7jlHmoPYkejl7hQmPdInuODLfdQj99jXe7+eqM7mq+36qYdarlHS00+b4eyz46318Wxev891s9pVfthf8fkidYjJQAAxxsCLQAnrECPiAfTi1lVy1U17UDlHkx9DqYOB1r2aJRb0YF6EDsavcSFwrwHuz+PtNxDOX6PdblVCRwvR/P1dqD9fSjlHi019bwdyj47Hl8Xx+L991ipbn8f6JgEAABHF/fQAgAAAAAAQEgh0AIAAAAAAEBIIdACAAAAAABASOEeWgBCUm31YnYiq40exBCaeP0BAACgthFoAQhJtdWL2YmsNnoQQ2ji9QcAAIDaRqAFIGTVVi9mJ7La6EEMoYnXHwAAAGoT99ACAAAAAABASCHQAkLcpEmT1LBhQ4WHh6tz5876+uuva7tKAAAAAAAcVQRaQAh79dVXNWrUKN1333367rvv1LZtW/Xp00cbN26s7aoBAAAAAHDUEGgBIWz8+PG65pprdOWVVyorK0tTpkxRZGSkpk2bVttVAwAAAADgqOGm8ECIKi4u1oIFCzR69GhnnNvtVq9evTRv3rxK8xcVFamoqMh5vH37dklSQUFBjddt586d2vrbMu0t2r1vHRtWK6ygQF538P8Vpx3KvDVVDvMyL/MyL/My79GYd8fG37RzZ5Ma/5wNlGdmNVouAAChhkALCFGbN29WaWmpUlNTg8anpqbq559/rjT/2LFj9cADD1Qan56eftTqCADA/7JTX/jLUSt7x44diouLO2rlAwBwvOMnh8D/iNGjR2v79u3OsHXrVq1YsULbtm0LGl+Tw2+//SZJ+u2334L+rziNeZmXeZmXeZn3RJ23podt27bpt99+U7169QQAwP8yrtACQlRSUpLCwsKUn58fND4/P19paWmV5vf7/fL7/UHj4uPjj2YVHbGxsUH/H+gx8zIv8zIv8zLviTZvTeLKLAAAuEILCFk+n08dOnTQrFmznHFlZWWaNWuWunTpUos1AwAAAADg6OIKLSCEjRo1SkOHDlXHjh118skn6/HHH1dhYaGuvPLK2q4aAAAAAABHDYEWEMIuuugibdq0Sffee682bNignJwczZgxo9KN4muL3+/Xfffd5/zUsfz/FacxL/MyL/MyL/OeiPMCAICjw2X0+QsAAAAAAIAQwj20AAAAAAAAEFIItAAAAAAAABBSCLQAAAAAAAAQUkIy0Jo1a5ZatWqljz76SK1atVJpaelBL7tlyxalpKRoypQp8ng8WrFixSGtu3v37nr55ZedvwfjueeeU+/evXXPPffo2muvdf5WZ86cOXK5XHK5XLrgggsk1cw2L1y4UCkpKVq1alXQ9CuuuMJZ39tvvx007UB1rWjw4MEaN26c81eSnn/+eaf8wHDLLbcELZeXl6cGDRqosLCwUpnz58+X2+3WkiVLqq13YHjyySfVoEEDffvtt2rQoIGeeOIJ9evXL2i5VatWOfPn5OQETfvDH/6gxMREzZs3Tw0bNtS3334bVP+K9S6v/Hzdu3d39sGsWbMUGRnpTDvvvPMq1Tuw3xctWqSwsDB16dJFU6ZMqVT3/SkuLlbDhg11/fXXKzw83NkHgXWEhYXpyy+/DJq/adOmQeMqCizr8/n08MMPO+MDx3ReXp6Sk5ODjtchQ4YoISHBGbdt2zbdeeedGjFiRJXrKH+MjRw5UjExMZo6dap69+6tzZs3KyUlpdK+Ov30053HzZs3d/4PDw/Xdddd5zy+6667lJaWpsGDBwfVX5JefPHFoHKTkpKCygm488475fV6g+ZdtGhRUN2HDBkil8sVVNf4+HgNGzas0nMdWHbWrFmKiooKmhYfH6+6detWe3xu2bJF8fHxioiIqFRuxSEtLU2tWrUKOgaSkpL0wQcfHHDZwFBxPRkZGUGPTzrpJO3cufOgyzvQEDhWDjSf2+2Wz+fT119/rbCwsGqfx8AwZswYNW/eXElJSZWey65duzr/16lTRzExMerUqdNB1XfEiBHVTiv/GvB4PMrOzj6sffL444/rkksuqZH96/F4FB0drVWrVsnv9zvje/bsKanye7XP51NGRoYSEhKC5g8MXq9Xt9xyi+655x7l5OTojDPOUL9+/dS9e3d16dJFN9544xHXOTIyUlOmTNEpp5zijPP7/brsssuqnL9Tp07Kzc1VnTp1grYj8H+DBg00btw4bd68WVFRUbr00ks1dOjQA9aj/GvR4/FUO1/F47HiEB8fr3vuuUeDBg1SWlqaLr300gOuu/x7wqEMQ4YMCfpcfeutt4LqV36/VBxSU1Mrjevdu7eeeuop53GzZs2qXLZiua+88kq121X+s9Hl2veeUvF9pqqh4ut4f8Pw4cM1fPhw5/GoUaOUlZV10MsfaF3x8fGSpI8//ni/+6Ft27ZOu0KS0tLSKpXl8Xj07bffKi8vTwkJCTrnnHMqzRP4DJH2tbkGDx5cbd0uvvjiaqdFRESoYcOGzuMnn3xS9erVcx5XbO8E2qEV25+nl/s8vvLKK4M+64cMGeJ89gY+LwOf6//5z38qLT9nzhylpKQEvX8GhgsuuKBSu6V8ey4iIkJlZWVB7cnyz1H5bS3/OfP4449LUlC9yr8Xlv8MrVevnp555pmg10TFelb83K743hrYrxWPn4rK1zew/RXtrz17OKpqVwfKrep84GDbx+WV365t27ZVmr6/84GlS5cqLS1NO3bsOKz1H+z+quq8qLp6HWh7DsfB1vNw9v+RKP9aLf8+JAW/1o+mGTNmKCcnR2VlZZWmVXyPuv/++yu9zmtCVfuhunod6HV+OKrKCapytLb/aDnY7aqSHYb169fbTTfdZI0aNTKfz2cNGjSwc88912bOnGlmZs8884z16NHDYmJiTJJt3br1kMtOT083t9ttYWFh5na7LSkpyVq2bGmNGzc2l8tl0dHRFhUVZddcc40VFxdbUVGRPfLII9aiRQtzuVwmySSZy+WyhIQEu+2226y4uNhGjhxpw4YNs5SUFDv99NOd9b7xxhvWo0cPi4iIMLfbbW6323w+n2VlZVlOTo5JsiFDhljz5s3trbfesubNm9ukSZNMkqWkpDjLSHLqHRYWZpIsPj7e3nnnHYuJibGvv/7avF6vdezY0e666y5r0qSJs42BZQN1P/300+3tt982M7P27dvbaaedZpJs0KBBZmbONmdkZJgkCwsLM5fL5azf7/db69atrUuXLnbZZZfZyJEj7ZJLLrGLL77YmjVrZi6Xy26++Wbbtm2brV+/3iTZW2+9ZYMHD7bu3bs75SYkJFjXrl3t3HPPtfr161faVrfbbZGRkRYZGens+65du1pMTIxNnz7dMjMznW2SZMnJyfbwww9bUVGRDRw40DweT9B0l8tlTZo0sXvuuccKCwutadOm1qFDB+e5GjBggHXu3NkSEhKc9QX29cMPP2wDBgyw8847L6jMsLAwi46ODtq/VQ2BcsoP8fHxJsmaN28edGwdaEhOTq70nB7K0LRp00r7prohPDzcPB7PYa/raA7lj4tjNdTEfoiIiKjyeGAIHlwu1zF/fsuv+2BfIwwMR2M4lPeawGeqy+WyFi1a1Hrdj+ehNj/LIiIizO/3H/T8NfH+53K5zOv1mtfrrbI8j8djXq/3gGVERkYeUT06dOhgqamplp2dbTfffLP98MMPJsliY2MrzRseHm633367DRs2LKi9GGije71eCwsLs8svv9w6d+5skszn81lCQoJ5vV5zu93WrFkzu+222+zTTz81SXbppZfasGHD7NJLL7WwsDB78803TZK1bt3aIiIinDIrHh+Bz4KzzjrLNm/ebAMGDLDRo0ebJEtMTDSPx2NhYWHWrl07++abbyw/P99GjRrljI+KirLY2Fin7X/WWWfZO++8Y126dLH69etby5YtLSMjw8LCwszj8Vjv3r3t7LPPtnbt2llCQoJTh/r161ujRo2c9uq7775r3bt3d46ntm3b2uTJk53znccff9yio6PtiiuusPr165vP57OGDRva4MGD7aOPPrIHHnjAJNk333wTdC41dOhQk2R33HGHSbKZM2fa5s2b7a233jJp36nd9u3b7a677rIWLVqY3++31NRUO/PMM+3NN9+0a665xho3bmzh4eGWlJRk5513nv30009B5wPTpk2zW2+91dq2bWvr16+3mJgYW7VqVdA5W25ursXGxtr69eutoKDAJk+ebCeddJLFxMRYVFSUJScnW506dZzt6t69u5100kkWHh5ukqxdu3aWm5tb6VxwwIABNmbMmErjL7zwQnvooYeqXf+1117rbFdCQoLVq1fP4uPjzefzWbNmzezuu++2FStWONtVnYrnRfurV2Zmpo0ZM8bWr19vZWVlzvi9e/fa+PHjrXXr1ub3+y0+Pt7OPvts+/zzz6tdb/ll169ff8B6Vtz+gB49epgk+9e//hU0/4QJEywzM/OA66/Oli1b7OuvvzZJtnDhQmf8okWLLDEx0Xbs2HHYZZuZPf/889axY0eLiIiw6Oho6969u7377ruV5uvYsaO9+OKLlca3b9/e/vnPfzqP77vvPsvOzrb169dbYWFh0LxffPGF9e3b1+Lj453z5XHjxtnevXsPWM/q9kNV9ZJkubm5lp+fHzR+165ddu+991qzZs3M5/NZnTp1bODAgbZkyZIDrr+oqMjWr19vgwYNsvPPP7/a+fa3/d99950NHDjQUlJSzO/3W9OmTW3YsGG2dOnSA67/SO3Zs8fatm1baf8d7HZV5ZADrZUrV1q9evUsKyvL3njjDVu6dKktWbLExo0bZy1atDCzfS+YsWPH2tixY006+EArUHbTpk0tMTHRmjZtahMmTLDbb7/dwsPDLSIiwhISEiw6OtpefPFFi4iIsJycHPv666/t9NNPt5iYGOeDbtCgQTZy5Ehr3LixnXPOOeb3++3LL7+02NhYmzhxokmyOXPmmJnZXXfdZWFhYda5c2cLCwuza665xiZMmGB9+vSxG264wTIyMszr9ZrH47F7773XzjzzTBs+fLhFREQ4DY02bdqYx+OxRo0aWZMmTWzYsGEWHh7uhEsPPvig9enTxx588EFr0KCBRUZGWt26dS0+Pt4yMjIsLi7OkpOTLSkpyQYMGGCS7KGHHrIWLVrY22+/bT6fz/kAcLlcdtZZZ1nbtm0tPj7e6tata5IsKSnJ+XCPjY21+Ph4u+uuu8ztdlu9evXM5/NVCr+io6OdMFKSjR8/3jwej0VFRVl4eLjzAe33+83v95vb7Q4Kzco3vKKjoy08PNwyMjLswgsvrHSiGXgcHR0dtJzP5wv6G6hf+YbZO++8Y2Zm77zzTpUNyPLrqq4xeKgNu4phRm2dtDMwMDAwMDAcuyHwRVb54VBDtsP5QiTQVinfnpP2tZuqCpUq1i8Qrkiy7Oxsk6pvuwS+dK5Y50GDBllSUpJdccUVleqRlZVldevWDQrXoqKibOrUqU4dPB6PZWRk2KBBg6xJkyYmyfx+v7Vp08YiIyMtOzvbCZKmTZtm6enp1r59e6esefPm2VNPPWWSrE+fPibJxowZY3/+85+Dtsfv91taWppJspYtW1rdunUtPDzcmjVrZlOnTnX2/5///GdbvXq1paWlWePGjS05Odnat29vDRo0sDp16lirVq3M4/FYWlqahYeHOyGcx+Ox7Oxsq1+/vvXs2dPmzp1rixYtMq/Xa6effrrzJWKHDh2sUaNG1qJFCzv11FNNkj355JM2ceJEc7vdNnr0aHvooYcsJibGHnvsMfP7/Xbrrbeamdm9995r0r4vgd977z1bvny5LVy40O6//37r3r27TZgwwSRVCpKGDh1q4eHhzjEROCkMBFoXX3yxJScnW4MGDez555+3H3/80ZYuXWpXXHGFhYeH24QJE2zu3Lm2cuVKW7BggfXr18/S09Odk3lpX5Bz3333Wdu2bZ1zmNzcXOvRo4dTj9zcXIuLi3MeT58+3f7v//7P3nzzTYuOjrYGDRpYWFiYvf/++3bHHXeYy+Wy9PR0y83NNUn24IMPBu2PgPfee8/q1q1rJSUlzrjVq1eby+WykSNHVrv+Z555xubOnWv//ve/LTw83NLS0iw1NdVWrFhhr732mqWnp1vXrl3tz3/+836DooDAfthfvTIzM23ChAlBy5WVldnAgQMtPj7epk6dar/++qstWrTIrrnmGvN4PEFl7k9g/1en4vYH9OjRw8LDw61JkyZWXFzsjD9QoHXffffZ0KFD91unlStXBh1zZmZXX321XXfddftd7kBuvfVW8/v99re//c1++eUXy8vLc85hn3zyyaB5n3rqKevYsWPQuM8++8zi4uJs9+7dQdtT1f7797//bR6Px6655hpbuHChrVy50qZOnWoJCQk2cODAoGCyOlXth6rqVfEYMtsX6HTt2tUaNGhgr776qq1atcq++uoru+CCC5z3wIMxdOjQAwZaVW3/u+++az6fz/r162cff/yx/frrrzZ//ny79dZbnYtmDkePHj2qDKgr+uMf/2h9+/attP8CDrRdVTnkQKtv375Wv35927lzZ6VpFYOr2bNnm3TwgVag7N69ewet45FHHjG3223fffedDRs2zAYOHGjDhw+3gQMHWnFxsT344IPmdrudK4G++OILp8zi4mLbuXOnbdy40f7xj39YcnKy9enTx3w+n5mZffXVVybJRo4caZLs8ccfr7RNQ4cOtTPOOMP5kJD2XT3TqFEjk2TnnnuuJSUl2QUXXBC0H9LT061hw4bmdrstIyPDnnrqKcvOzrZ69eqZ2+22M844o9L27tixwwmXtm7daosXL3a+OapXr54lJydbo0aNrHHjxibJ/vjHPwY1Nm644QZbunSpzZ4920aOHGmdO3e2mJgY5xuauLg4i4uLs8zMTOvUqZNddtllThgpyUlMc3JyrGHDhnb//ffb6aef7jQe/H6/vfDCC0GNCo/HYykpKdaoUSOLjo62s88+2zp16lSpETVixAiLiYmxl156yaKiokyS1a9f3+Li4szlcpnP5zOv12vNmjULajy63W4z25fclv/WNDU11blKLrCu8o2sQDkH04gr31AN1C0uLq7aUKtVq1ZB2xeY72hf0VNV3RkYGBgYGBhCYzjcL8fKt38qlhF4XP6K+AkTJliHDh2qLCsqKsr69OlTKSSLiIhwrkbPyMgI+qLR7XZbamqqtWnTplIdXnzxRZNkPXv2tOHDh5sk50vmQPsyLi7OOnbsaKWlpc4Xy3fddZctWrTIKSchIcHM9p2ol2+X/fDDD07Yl5OT42znJ5984szz0ksvmbTvyrGmTZsGbet5551n9evXt0cffdTZ5kWLFjmBXc+ePe3ee++1jh07mtfrtalTp1r//v3N4/FY3bp17eabb3bOC8444wznVwAtWrSwoUOHWosWLaxt27Z23333WXJysvMl+KhRo5ztCQQPgW2fN2+e1a9f38LCwqy0tLTKc6pAoPXll1/aH/7wB4uLi7OEhARLT0+3nj17OoFhxUCrRYsW5vV6be3atUFl5ubm2qmnnuoEMnv27LFbb73V+UVBmzZtnHO38oFWdna2PfXUUwcMtMz2hTnZ2dnWoUMHKy0ttYSEBHv00UfN6/XaqFGjbOvWrc46fvjhB+dXMLGxsXbeeefZypUrnfZ+4Jc/ZmZ/+9vfrE6dOnbfffcdcP1ZWVnWsWNHW7hwoUmy5cuXm9m+K4lcLpedeeaZhxVoVVWvqgKtV155xSTZ9OnTK5XZv39/q1OnTpXn0RUdSaB15ZVXWp06dWzSpEnO+KMRaO3du9fi4uLsvffe2+9y+zNv3jyTZBMnTqw0bdSoUeb1em3NmjXOuNWrVwc9r2bm5AIVt6fi/tu5c6fVqVPH+vfvX2ld06dPN0n2yiuvHLDOVQVaVdWr4jFkZvbXv/7VXC6XLVq0KGh8aWmpdezY0bKysg4qVDucQKuwsDAos6iofGbzww8/2Nlnn21RUVGWkpJil112mW3atKna9R1MoPX+++9by5Yt7ccff6y0/wIOJ9A6pHto/f7775oxY4aGDx+uqKioStMP5feh2dnZio6ODho++OADbdy4UR999JGioqKcdbz00kvq1auX2rVrp6+//lodO3bUZ599po4dO8rr9er1119Xjx49tHr1ajVt2lRdu3Z11uP1ehUVFaXk5GR988036tChgxYsWKCGDRs6ZUdHR2v16tWSpLvvvjuoTg0aNNBLL72kuXPnyuPx6M0335Tf79fy5cvVunVrSVK3bt20efNm3XHHHUH7we12a8OGDTrjjDO0Zs0aNWnSRD/++KM2b96s5ORkzZkzR1deeaU+/vhjZ59GR0crLCxM0r77CbVv316FhYXavXu31q1bp82bN2vdunX69ddf5XK59MknnzjzR0dH64knnlDz5s11+umna/z48crJyVFmZqZ27typmJgYRUdH68Ybb9Rvv/2mBQsW6J///KduvfVWLV26VJK0ePFiSfvu5bRq1SotXLhQn376qZKSkuT3+9WmTRtdd911zvZJ0t69e7V161atXLlSRUVFOu+88/Tdd9/JzCRJYWFhcrvdzr2wLrnkEiUkJEjadw+J7du3KycnR40bN1ZSUpL27NmjzMxM5/l3uVyKjo5WZGSkioqKnOc2Pz9fw4cPlyRnXXv37nWmX3LJJWrevHmlY++hhx5y/o+JiZEk5zfPERERzu/jo6KiFBkZWeXx+/PPPzvrdLvdzu+1D+beZi6X64DzVCdw3wAAABB6Am2HQ1W+/VOxjMDjDRs2OOPGjRunhQsXVllWYWGhPvzwQxUUFASN3717t5YtWyYz05o1a1RcXOxMc7vd2rp1q77//nu53e6gOlx++eWSpM8//1x///vfJe1rr5SWlurMM8+UJG3fvl1xcXGKjY3V6NGjJUkPP/xw0D2Ctm7dqujoaF1//fUqKytz2pnTp0932nc33nij02afPXu2JCkyMlJff/21UlNT1alTJy1fvty5F+bYsWMVHR2t/Px8uVwup12Xnp6uwsJCJScnKz09XS6XSyNHjlRJSYmmT5+uW2+9VXv37g3a75LUrl07zZo1S5LUtGnTSvs2OTlZJSUl2rt3r2677bZK06+77jpFR0dr4sSJWrt2rXw+n7Od5ZU/p7r88ssVExOjzz77TF988YU8Ho++/vprjRw5UtK+9nB5K1eu1EknnaR69epVKjcsLEwej0eSdNNNN+nzzz/X6aefrvT0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UZWysjKVlJSorKysUlAXKOfnn3/W999/HzTt/PPPd/7PycmRmem6667Txo0btX37drlcLj3//POSpNdeey3oJ4eBcps2beq0jQLtul27djlXYf3nP/9R8+bN9fvvvzshXuDKqwceeEAzZ85Uamqq+vfv77T3PvvsM4WHhysuLk69e/fWkCFDdO+990qS2rdvr4iICEn7fkFwySWXaMaMGVq8eLFuvvlmxcXFqbS0VOvWrau0n0pKSlRcXKzi4mKtW7dOY8aMCbqSqbi4OOgKsLCwsKCrVqq6yqR169aVfjly5plnOu3wzp07q2vXrs55g9frVcuWLbVgwQLnVxjffPONxowZo44dO2rRokV65JFH5Ha79cUXX+j777+X3+/XQw895Fw5Ju27LUdgH7/99ttBywdO9Pfs2RN0zjRs2DBJ0tVXX60bbrhBbdu21erVq7V9+/ZK+ysnJ0dff/21/H6/LrvsMi1atEjLli3TJZdcot9//11t2rRxtjknJ0fNmjXT9ddf74x74IEHKrXLA7+aiIyM1BtvvKGff/5Zb731ljP9p59+ci6aCGxLYCh/XlOd33//3flVUHWaN28etB/LC4wP3BLl2Wefddb//vvvH3D9h+qyyy5TZmZm0O1WAipu//XXX6/zzjvvkPZJUlKSdu3aVen941B+chg4F6/qPWjdunUqKCiodAuZis9D+VxgfwLl7O/5CcxTcV8czJVFNX18lP9F27PPPnvA9R9IoNwDZTk7d+5Uv379Kl1V98svv6h79+6SFPRaDOyfilfmBd7PPvnkE82bN09+v18ej8cJwTt27KihQ4ce8XYdUqCVmJioPn36aNKkSVX+HjfwTc3BqPiTw0WLFum0005TYmKiunXrpoKCAmcdl1xyiWbOnKmFCxeqdevWysvLU7t27ZSXl6eSkhINHDhQc+fOVWZmppYvX64vv/zSWU9JSYkKCwu1adMmZWdnKy8vTw0bNnQuU77kkku0c+dOZ4ffcsstQXX69NNP1a9fP+Xk5Gjbtm1q0qSJ82H51VdfSZK++OILJSUl6dFHHw3aD2VlZUpLS9P69esVGxurAQMGyOVyKTk5WZs2bVKPHj2Um5urXr16Ofu0/Dc+999/v1wulxo1aqTBgwcrNTVV9evX16JFizRq1ChJwZeX79y5U5MnT5aZqW7dusrMzNQpp5yi33//XXFxcZL2fduSmJioFi1aVPuTw/Hjx+uzzz4L+i174BuavLw89e/fX+Hh4frss8/k8/nk9Xqd8Ck9PV35+fnOTzql/95jKiUlRT6fT3feeacaNGggad/P+iIjI7Vs2TL99a9/1Z49e+R2u7V3715169ZN0r4P+8WLFzu/gQ948MEHncusL774Yklyrkzbu3ev2rVr5zzPgeejQYMGQYFb4BgLfAtpZs43JcXFxZW+3azqvhWBRk918+xPTf3M4Fg72G+dAQD4X3QobeIj+ZKoVatWzs/wyrc/CgsL1bZt2yoDrbi4OKe9VF75n4S53e6gNkrdunU1atQohYeHy+1266yzznKmBdbRsWNHPfPMM872hIWF6YcffpAkJSQkaNeuXVq4cKFz76c+ffpoypQpTjmBNm4gqAhsT79+/Zzg4plnnnGuYAp8+bp792717t1bK1as0NatW+V2u50rtdq0aaMzzzxT4eHhiomJcb589Hq9io6O1vbt27V37141atRI7777riIjI3X22WfrqaeeksfjUWRkpOLj49WxY0c1bdpUGzZscH5yuXHjxkr7cOPGjfJ6vfJ4PBo3bpxSUlKUmprqXMk0ZcoUFRYW6o9//KPq1aun4uJiNW7cWE2bNlXTpk2dfVf++Fm1apVSUlKceWJjYxUdHe18WT1q1CjNnj1bq1atkrTv55bLli1TbGyszjzzTJ155plq3bq10w5v2LCh+vbtq7KyMhUXF6tJkybOc1T+aiu3262YmBjFxsaqsLBQKSkpzi9FAvdnqviTw++//15NmzZVs2bNlJaWprKyMtWvX19er1fjxo0L2q4VK1bovffe0+7du3XDDTc42xcXF6clS5aoc+fOzriuXbtq165dSkxMdMYFruQrLycnx/kVSWlpqczMabMuXrxYM2fOdO6BHNiWwFDxS+yqLFmyRO3atdvvPIMHD9Yvv/yid999t9K0cePGqU6dOs7rp379+s76K/56qSa43W6NHTtWTz/9tHN8BFTc/sTERMXExBzSPgkEiBUvZjiUnxwOHjxYO3fu1DPPPFOp/Mcee0xer1cDBgxwxgWu4iv/PARygQPp3bu3EhMTNW7cuErTpk+frl9++cU5p6y4Lyqe71VUVb2qMnjwYM2cObPSfbLKyso0YcIEZWVlOffXyszMdNZfv379A27fgfTu3Tsos6go8Pps3769fvzxRzVs2DBoHzRt2tT5sqb8azGwf8q/T5V/P5s4caIWL15cKbx99dVX9Ze//OWIt+uQezlcsWKFpaWlWVZWlr3xxhu2bNkyy8vLsyeeeMJatmxpZmbr16+3hQsXOt34fvrpp7Zw4ULbsmXLQZXdtGlTi4+Pt6ZNm9rjjz9uf/rTn8zv91tkZKTFxMRYq1at7N5777VGjRpZ+/bt7auvvrLTTjvN6VHF7XbboEGD7Pbbb7emTZvaeeedZ36/31577TXzeDx2yy23mCT7/fffzczsjjvusLCwMDv55JMtLCzMrrvuOps4caL17dvXbrzxRsvMzLTWrVtbcnKyvf3225acnBzUc0xYWJi1bNnSJFm9evWsadOmdu2111p4eLilp6dbgwYNrH///nbLLbdYVFSUhYWFWUREhKWlpVlcXJwlJSWZ2+22lJQUS0pKskGDBpkkGzt2rEVFRVlcXJzl5OTYySef7PRmsWfPHuvSpUtQr37dunUzt9ttderUsRtvvNGys7Pt9ttvN2lfb4Iul8vq1q1rV111lTVv3tw6dOhgl1xyiS1cuNDpYULa1131lClT7IwzzrBhw4Y5y4aHh1vdunWdbpKTkpIsMjLSwsLCzOVymcvlsu7du9s555xjnTt3dnqkCQy33367hYeHm9vtrrKXn0BPOIEhOjra+X/Tpk1Ol82B9UVFRdlDDz3k9J4TmBYop3z31VX1SFhxSElJCXrctm3bSj0AHajb7PJDVd1+H8xwOD0gBbbpULsVZ2BgYGBgYNg3HG4PhMdiqK7tEuiJsGLdU1JSgtpRFYeIiIhK484//3yT9vVe3bVr10rTA70LhoWFBdWnfNujRYsWlpOTY9nZ2da+fXunvHPOOcciIiKsdevW5vF4LCwszB544AGnnRwo9/fff7fc3FxzuVzWsWNHk2QPPvig0xt5YDt9Pp/VrVvXJFlWVpbTq3jjxo2tfv36Tn1uuukme/XVVy0yMtIyMjIsOTnZcnJyLD093ZKSkqxFixbm8XgsLS3NIiIizOv1Wr9+/czj8Vh2dralpqZa165d7dtvv7XVq1dbWlqa5eTkmNvtNrfbbR07drRGjRpZy5Yt7bTTTjNJNnDgQGvWrJm53W6766677OGHH7aYmBgbN26c+f1+u/XWW83M7J577jFJ1rVrV/u///s/mzx5smVmZtpDDz1k3bt3d3o5bNSokZ1++uk2ZcoUa9SokfXo0cMaNWpkX375pUn7egobMmSIhYeHmyQbPHiw1alTxxo0aGAvvPCC/fjjj7Zs2TK78sorzefz2T333GPffvutXXDBBZaWlmYdO3a0+Ph4++CDD+zhhx82KbiXw/79+9utt95ql156qcXHxzvnbRV72bvzzjtt7ty59tZbb1lUVJTzPLzwwgt2++23m8vlsvT0dKe39Dp16pjL5bKLLrrIfv31V5s9e7aNGDHCvvzyS3O5XLZq1Sqn7OnTp1t4eLjdc889Va5/xYoV9vDDD9u3335rb775pvn9fktLS7PY2FhbsGCBvfbaa5aenm5du3a1u++++7B6OVy5cmWlelXVy2FZWZldeOGFlpCQYM8++6ytXLnSFi9ebNdee615PJ5Kvd5Vp2IvdU8++aT17Nmzyu0vr0ePHkE9c5qZnXbaaRYeHl7jvRyambVv396efPLJ/S53IDfffLP5/X577LHHbPny5fbTTz/Z3XffbW63u1Lvh7Nnz7bo6GgrLCx0xk2cONE6dOhQaXuqep5ff/11CwsLs2uuucYWL15sK1eutGeffdYSEhJs4MCBB9XDYFX7oap6VTyGzMx2795tnTt3tvT0dHvttdds9erV9vXXX9sFF1xgUVFRNm/evAOu36xyb4B33nmnDRky5IDb//bbbzvvcx9//LGtXLnSvvnmG7v99tvtoosuMjOztWvXWnJysg0cONC+/vprW758uc2YMcOuuOIK27t3b5X1OZheDgOq2n/VbdfBOORAy8xs3bp1Nnz4cMvMzDSfz2f169e38847z2bPnm1m+3ZgVR+eB7ORgbLr169vbrfbCajq1KljrVq1cj5MY2NjzeVy2dixY62kpMT27NljY8eOdbobLt84SUhIsD/96U9WUlJiJ598so0bN85cLpfdf//9znpfffVV6969uxO4uN1u8/l8lp2dbTk5OXbOOefYHXfcYYMHD7Y77rjDzj33XCdMSk5ODlpnoN5hYWHWtm1bCw8Pt9dff93q16/vBEzdunWzO++80xo3blxp2cD/ffv2tZdeeslSU1PN5XJZ+/btzeVy2f/93//ZE088YS1atLA77rijygZZoA5xcXEWHx9vTZo0sRYtWlhUVFSVz00gfAqsKyEhwWns1KlTx9xut/n9fktMTKyykRUbGxsUrnXt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/SkqKrIHH3zQZsyYYRdddJGzT6OiopxvNb///vugZXJzc23o0KF27bXX2h133GHXXHNN0PRAWBcWFmaXXXZZ0D6cOHGi/fLLL9asWbOg43X27NmWkpLinMB89NFH9vrrr9v8+fODyi4sLDSfz2fXXXedc4w9//zzzs9JR44caZs2bbJHHnnE2f/169c3s32NzMDJQvfu3c3tdpvH47FWrVo5Vy2GhYXZxIkT7aGHHrJRo0aZJLvqqqucMHratGlBDfEBAwZYRESEud1ui4qKMjOzU0891WJjYytdabhw4UJ78803LSwszP70pz9ZZGSkpaSk2J133unMUzHcDPzUODEx0Xbs2GFbt251fpIQmKd58+Z2//33OydBbrfbkpKSbPz48XbWWWfZpk2bzO12W0JCQtCJUlVDo0aNzO/3B13p6Pf7nZ/p7m8IHC8dOnQIutKw4jp9Pp8TfB/JCWFgaNWqld12220WGRnphOAej6fSCaDX6zWv12tt27atVEbDhg0rjcvOzramTZvaAw88YK1bt3Z+Ih34mUhgvi5duljPnj2rvZK1/OByuWzcuHHV7r+a+vmvx+OxnJycGgmh/X6/derUyc4555yg5zIlJcX5SXj55zYzM9OaNGliJ510UpU/d4qJibHzzjvPuXI6UN927dqZz+ezk046qdp9dyj1/sMf/mDJycnOc5+ZmVltQOLxeOziiy+2O++8s8qft7dq1cp69+7tTAscZwdTj+zs7CN+DgJXWefm5tpDDz1kV155ZdBPqKpaJvBF1cGWH9imoUOHWu/evZ339a1bt1qnTp2q3d4DPS9paWn2hz/8wXkezj777APWJ3C1S8V1BOpX8WdtMTExdumll1b787rAUK9evYPe5zfffLONGjXK2b+PPPKI3XjjjU7AU/FYKn9MhIWFWaNGjaot2+PxmMfjsZKSEqftVt3QqlUrp11hZpaenl7l/grsX7fbbaeccoozPrDvyp9ITp061f72t78571nln1ufz2ejRo2q9v0sLi7OsrKynNf94sWLrVevXk5IVvEKj0A7tGL78+yzz3b25aOPPhr0WT979mznCotAezLwuR74lr/88gsXLrS//e1vzjETqFv59nBubq7Tlgm05/x+vzVr1szMgtuTgTLq16/vXDkUFRVl99xzj9NeC4QR5esVaM+53W6rX7++eb1ei4qKsuHDh9vHH3/sXNHUu3fvoOMn8MuMigLtyPLt36ioKPP7/dUGEllZWc77fvntL29/7dnDUbFdHficNav6fKCq7TqQ8sdcVYHWgc4HHnroISsoKDis9a9evdqioqKCtqsq5fdD+fZ5VfUqf1xt27btgHU4GAdbz8PZ/0ei4mu1vPKv9aPpm2++sVdeeaXKaRXfo+677z6nTT9p0qQaq0NV+6G6epV/D6opn376qfMedKBA62hs/9FysNtVFZfZIfaTiaNu9+7dWrt2rSQpOjo66AbrR8PGjRtVUFAgad9NP7/55hvt2LFD/fr1O+SyVq1apXfffVcjRoxwxu3YsUP5+fnauXOniouLlZiYqPj4eCUlJR1WfefMmaMdO3aoc+fOKigo0JYtWxQREaHIyEjVrVvXuVnd448/rgEDBlS6mfzevXudGyP6/f5K0ysK1F+SPv30U2VnZ6tz5877nS+wfePGjdNll12mvXv3avfu3U79o6KilJycrOnTp+umm25S/fr1q+wRae/evXrkkUf0xz/+8aBuVlmV5cuX6z//+Y/mzJmj+++/v9L0bdu2afLkyfL5fBoyZIjTM1Bg2ddee01Lly7VlClTqrwh4s8//6yXX35Zl19+uXO8rl69WiUlJfrqq68UHR0d1MtRec8++6zy8vKcnnkkaejQoWrcuLHat2/vHIPLly+XtO8Gs40aNdLatWud/fn++++rZcuWaty4saKjo+Xz+bRx40b9/e9/16hRo9SgQQPdfvvt+uabb3T11VcrJiZGderUUUFBgX799VenC/KrrrrK6S01sJ7JkydrxYoVuvLKK7VkyRJ9+OGH6t27twYMGCCfz6ebbrpJ7du3V0pKil599VW98MILmj17tv7xj38oOTlZLpdLbrdbixcv1l133aW6detqzpw56ty5s0466SStXbtWq1ev1rPPPqsmTZqoa9euOu2007Rq1Sp99dVX+uSTT9SwYUOVlpbq4osv1u+//67HH3/cuYHizp07NWvWLP3www9KT0/XueeeqxtvvFH169dXkyZNtGvXLg0aNEhz585VeHi4WrZsqYKCAjVs2FDvvPOOdu7cqcLCQtWvX1/du3eXx+NRYWGhGjVqpLi4OPn9fs2YMUObNm3SwoULdeqpp6qsrExr165VcXGx4uLidOqpp6q0tFRffvml6tWrpw0bNqhv376aOXOmVq9erU2bNjk9S0VHR+u2227Tpk2bVFpaqrS0NA0ZMkQLFizQGWecoSuuuEJFRUVau3at9u7dq61btyo5OVl+v18vv/yycwPKhg0bavLkyWrcuLHy8vK0ZMkSnXzyyerYsaPatGmjsLAwvfPOOxo/fryuvPJKLV26VA899JBatGihjRs3atWqVXrjjTd055136oknnlCfPn10991369FHH1WnTp305ptvqri4WLNnz9bKlSsVFham7du3a+3atWrcuLGzjzt37qyLLrpIiYmJmjNnjnbv3q2ePXvqjDPOkNfr1S+//KKVK1dq06ZNuvzyy/X777/rvffek8/nU3h4uOrVq6elS5fq5JNPVmlpqbZv365+/frJzLRp0yb9+9//VkxMjO6//37t2bNH06ZN08KFCxUWFqaEhAR169ZNe/fu1auvvqq6detq0KBBevTRR5Wenq5ly5bJ5/MpKytLfr9fvXv31g8//KAbb7xRpaWlmjRpknJycpxjrGXLltq9e7dyc3OVmpqqvXv3atKkSdq9e7feeustLVmyRJ988on69eunXbt2yev16uGHH1ZCQoKkfe9rP/74o4YNG6YffvhBK1asUNu2bfXyyy/L5/Np6tSpys3N1caNG/X2229r3rx5uuCCC9SvXz8VFBRo586deuqpp9SrVy+1adNGP//8s7799lvt3r1b119/verVq+e8N/n9fr3wwgt64YUXdP7552vZsmXauHGjWrRooU2bNum9997Txo0bNX78eF100UW6+eabFRsbq8aNG+uOO+5QZGSkpk6dqiFDhqiwsFC5ubmaPXu2brrpJq1Zs0affvqpzjzzTHXu3FkbNmzQqFGjlJqaqgULFujjjz/W7Nmz1bJlS23btk0tW7bU559/rr1792rx4sVKSUlRfHy80tLS5PV6tXLlSmVmZsrlcqlly5Zau3atsrKynK6/N27cqJ9++kl79+5VTEyMCgsLtXv3bqd3oPnz5+vqq69WRESEPv30U3300Udavny5kpOT1bNnT23ZskXt2rVTUlKStmzZoqZNm6q0tFR169ZVfHy8XnjhBV122WXOvgu0L5577jm1b99e//nPf7R3717Vq1dPLVq0UGxsrLZv3665c+fKzBQZGam5c+eqS5cuOuWUUzRv3jyn16vo6Gh9/vnnWr58uTZv3qz09HSlpaUpIyNDcXFx8vl8KigoUG5uruLj43X66adr7969io2NVXJysuLj47Vr1y4988wz2rRpk3777TfdfPPNOvnkk7Vu3Trl5+frm2++0XfffadOnTopKSnJeR9p0KCBduzYoe3bt2v9+vUKDw/XlClT1KFDB0VEROj777/X2WefrVNOOUX16tWT2+12On9JTk6Wz+fT2rVr9dVXX2n16tVOe6Ju3bpOL9LFxcWqW7euvF6vli1bpmnTpunMM89U3bp1FRsbq7KyMi1ZskQNGzbUhRdeqL179+q2225Tt27dlJaWJp/Pp8LCQr300ku6+uqrlZ6eHtTeWLx4sfLz8/XTTz/J5/MpPj5e7du3V1pamgoKCpSSkiK/36/ly5drw4YNKikpUXp6ujIyMuTz+ZxyAm2PDRs2yOfzBQ3x8fHatm2b1q5dq7KyMsXExDg3TU9KSlJ8fLzT+U3jxo1VWFhYqR1zIOU/jyvW7WBUtXxgm/bs2ePcCLyq9vCB2nPl2w5ut9vZ1sB+kfYdD4GOkwLKt+d2797ttH0yMjJUWlrqtNHDw8O1du1abdu2Tb///ruys7OVkJBQqR5VtQ8rtmsqWr16tbNcenq6YmNjD3n7D1XgfGDv3r0qLi5WZGTkfsutarsOJNA+lPYdc0fSOdKhrv9g91fF86L99Vhak9tzqPU8nP1/JI70tX6s/f7770Hv+xVf54frUPbDgV7nh+Ngc4Kjtf1Hy5HkHwRaAAAAAAAACClHHiMDAAAAAAAAxxCBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAC1ZNOmTbrhhhuUkZEhv9+vtLQ09enTR1988YUkqWHDhnK5XHrllVcqLZudnS2Xy6Xnn3/eGdewYUM9/vjj1T4ub9WqVXK5XFUO8+fPlySVlpbqr3/9q1q2bKmIiAglJiaqc+fOevbZZ2tsHwAAAACHw1PbFQAA4H/VgAEDVFxcrBdeeEGNGzdWfn6+Zs2apS1btjjzpKenKzc3V4MHD3bGzZ8/Xxs2bFBUVNQR12HmzJnKzs4OGlenTh1J0gMPPKBnnnlGTz31lDp27KiCggJ9++232rp16xGvFwAAADgSBFoAANSCbdu26bPPPtOcOXPUo0cPSVJmZqZOPvnkoPkuvfRSTZgwQb/99pvS09MlSdOmTdOll16qF1988YjrUadOHaWlpVU5bfr06brxxhv1hz/8wRnXtm3bI14nAAAAcKT4ySEAALUgOjpa0dHRevvtt1VUVFTtfKmpqerTp49eeOEFSdKuXbv06quv6qqrrjrqdUxLS9Mnn3yiTZs2HfV1AQAAAIeCQAsAgFrg8Xj0/PPP64UXXlB8fLy6deumu+66S99//32lea+66io9//zzMjO98cYbatKkiXJycmqkHl27dnXCtcAQMH78eG3atElpaWlq06aNrr/+en3wwQc1sl4AAADgSBBoAQBQSwYMGKB169Zp+vTpOvvsszVnzhy1b98+6EbvkvT//t//086dO/Xpp59q2rRpNXp11quvvqpFixYFDQFZWVlasmSJ5s+fr6uuukobN25Uv379NGzYsBpbPwAAAHA4CLQAAKhF4eHhOuuss3TPPffoyy+/1BVXXKH77rsvaB6Px6MhQ4bovvvu01dffaVLL720xtafnp6upk2bBg3lud1uderUSbfccov+/e9/6/nnn9dzzz2nlStX1lgdAAAAgENFoAUAwHEkKytLhYWFlcZfddVVmjt3rs4//3wlJCTUQs32ycrKkqQq6wgAAAAcK/RyCABALdiyZYv+8Ic/6KqrrlKbNm0UExOjb7/9Vo8++qjOP//8SvO3atVKmzdvVmRk5CGtZ+3atUE/I5T29aZYvh4bNmwImh4fH6/w8HANHDhQ3bp1U9euXZWWlqaVK1dq9OjRat68uVq2bHlI9QAAAABqEoEWAAC1IDo6Wp07d9aECRO0YsUKlZSUKD09Xddcc43uuuuuKpepU6fOIa/nscce02OPPRY07h//+IdOPfVUSVKvXr0qLfOvf/1LgwcPVp8+ffSvf/1LY8eO1fbt25WWlqaePXvq/vvvl8dDEwIAAAC1x2VmVtuVAAAAAAAAAA4W99ACAAAAAABASCHQAgAAAAAAQEgh0AIAAAAAAEBIIdACAAAAAABASCHQAgAAAAAAQEgh0AIAAAAAAEBIIdACAAAAAABASCHQAgAAAAAAQEgh0AIAAAAAAEBIIdACAAAAAABASCHQAgAAAAAAQEj5/2z63vjGvKGaAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkUAAAGxCAYAAABslcJTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtCElEQVR4nO3de3RV5Z2H8eeEXAAhiQFyqwngFVBQBA1R20FJQaRWRtpRi4qW6sgkVMSxlFZBacdY2/E6EZcdBV2V0jqjqFShGBBvASSKXEQqFhoUkohMcgAhQLLnDxfHHgErMeQk5PmstdfK2e+bvX/vm8Phu/bthIIgCJAkSWrj4mJdgCRJUktgKJIkScJQJEmSBBiKJEmSAEORJEkSYCiSJEkCDEWSJEmAoUiSJAmA+FgX0BI0NDSwefNmOnfuTCgUinU5kiTpKwiCgO3bt5OdnU1c3Nc/zmMoAjZv3kxOTk6sy5AkSY2wadMmjjvuuK+9HUMR0LlzZ+CzSU1OTo5xNZIk6asIh8Pk5ORE/h//ugxFEDlllpycbCiSJKmVaapLX7zQWpIkCUORJEkSYCiSJEkCDEWSJEmAoUiSJAkwFEmSJAGGIkmSJMBQJEmSBBiKJEmSAEORJEkSYCiSJEkCDEWSJEmAoUiSJAkwFEmSJAEQH8udT58+nenTp7Nx40YATj31VKZMmcLw4cMB2L17NzfffDOzZ8+mrq6OYcOG8dBDD5GRkRHZRkVFBePGjWPRokV06tSJMWPGUFxcTHx8TIcWUVFRwdatW2NdBgBdu3YlNzc31mVIktQixTQ5HHfccdx1112cdNJJBEHA448/ziWXXMLbb7/Nqaeeyk033cSf/vQnnnrqKVJSUigqKuLSSy/l9ddfB6C+vp4RI0aQmZnJG2+8wZYtW7j66qtJSEjgzjvvjOXQgM8CUa9evdm169NYlwJAhw4dee+9tQYjSZIOIhQEQRDrIv5eWloav/71r/ne975Ht27dmDVrFt/73vcAeO+99+jduzdlZWUMGjSIF198ke985zts3rw5cvTo4YcfZtKkSXz88cckJiZ+pX2Gw2FSUlKora0lOTm5ycby1ltvMWDAAPJ+OJXkrB5Ntt3GCG/ZyNLH7qC8vJwzzzwzprVIktQUmvr/75ZxjonPjvo89dRT7Ny5k/z8fMrLy9m7dy8FBQWRPr169SI3NzcSisrKyujbt2/U6bRhw4Yxbtw41qxZQ//+/Q+6r7q6Ourq6iKvw+HwkRsYkJzVg7TcU47oPiRJ0tcT8wutV61aRadOnUhKSuKGG27gmWeeoU+fPlRWVpKYmEhqampU/4yMDCorKwGorKyMCkT72/e3HUpxcTEpKSmRJScnp2kHJUmSWp2Yh6JTTjmFFStWsHTpUsaNG8eYMWN49913j+g+J0+eTG1tbWTZtGnTEd2fJElq+WJ++iwxMZETTzwRgAEDBvDmm29y//33c9lll7Fnzx5qamqijhZVVVWRmZkJQGZmJsuWLYvaXlVVVaTtUJKSkkhKSmrikUiSpNYs5keKvqihoYG6ujoGDBhAQkICpaWlkbZ169ZRUVFBfn4+APn5+axatYrq6upInwULFpCcnEyfPn2avXZJktR6xfRI0eTJkxk+fDi5ubls376dWbNm8fLLLzN//nxSUlIYO3YsEydOJC0tjeTkZMaPH09+fj6DBg0CYOjQofTp04errrqKu+++m8rKSm699VYKCws9EiRJkg5LTENRdXU1V199NVu2bCElJYV+/foxf/58vv3tbwNw7733EhcXx6hRo6Ie3rhfu3btmDt3LuPGjSM/P59jjjmGMWPGMG3atFgNSZIktVIxDUWPPvrol7a3b9+ekpISSkpKDtmne/fuvPDCC01dmiRJamNa3DVFkiRJsWAokiRJwlAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSUCMQ1FxcTFnnXUWnTt3Jj09nZEjR7Ju3bqoPoMHDyYUCkUtN9xwQ1SfiooKRowYQceOHUlPT+eWW25h3759zTkUSZLUysXHcueLFy+msLCQs846i3379vGzn/2MoUOH8u6773LMMcdE+l133XVMmzYt8rpjx46Rn+vr6xkxYgSZmZm88cYbbNmyhauvvpqEhATuvPPOZh2PJElqvWIaiubNmxf1eubMmaSnp1NeXs63vvWtyPqOHTuSmZl50G38+c9/5t133+Wll14iIyODM844g1/84hdMmjSJ22+/ncTExCM6BkmSdHRoUdcU1dbWApCWlha1/sknn6Rr166cdtppTJ48mU8//TTSVlZWRt++fcnIyIisGzZsGOFwmDVr1hx0P3V1dYTD4ahFkiS1bTE9UvT3GhoamDBhAueeey6nnXZaZP0PfvADunfvTnZ2NitXrmTSpEmsW7eOp59+GoDKysqoQAREXldWVh50X8XFxdxxxx1HaCSSJKk1ajGhqLCwkNWrV/Paa69Frb/++usjP/ft25esrCyGDBnCBx98wAknnNCofU2ePJmJEydGXofDYXJychpXuCRJOiq0iNNnRUVFzJ07l0WLFnHcccd9ad+8vDwA1q9fD0BmZiZVVVVRffa/PtR1SElJSSQnJ0ctkiSpbYtpKAqCgKKiIp555hkWLlxIz549/+HvrFixAoCsrCwA8vPzWbVqFdXV1ZE+CxYsIDk5mT59+hyRuiVJ0tEnpqfPCgsLmTVrFs8++yydO3eOXAOUkpJChw4d+OCDD5g1axYXXXQRXbp0YeXKldx0001861vfol+/fgAMHTqUPn36cNVVV3H33XdTWVnJrbfeSmFhIUlJSbEcniRJakVieqRo+vTp1NbWMnjwYLKysiLLH/7wBwASExN56aWXGDp0KL169eLmm29m1KhRPP/885FttGvXjrlz59KuXTvy8/O58sorufrqq6OeayRJkvSPxPRIURAEX9qek5PD4sWL/+F2unfvzgsvvNBUZUmSpDaoRVxoLUmSFGuGIkmSJAxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgTEOBQVFxdz1lln0blzZ9LT0xk5ciTr1q2L6rN7924KCwvp0qULnTp1YtSoUVRVVUX1qaioYMSIEXTs2JH09HRuueUW9u3b15xDkSRJrVxMQ9HixYspLCxkyZIlLFiwgL179zJ06FB27twZ6XPTTTfx/PPP89RTT7F48WI2b97MpZdeGmmvr69nxIgR7NmzhzfeeIPHH3+cmTNnMmXKlFgMSZIktVLxsdz5vHnzol7PnDmT9PR0ysvL+da3vkVtbS2PPvoos2bN4oILLgBgxowZ9O7dmyVLljBo0CD+/Oc/8+677/LSSy+RkZHBGWecwS9+8QsmTZrE7bffTmJiYiyGJkmSWpkWdU1RbW0tAGlpaQCUl5ezd+9eCgoKIn169epFbm4uZWVlAJSVldG3b18yMjIifYYNG0Y4HGbNmjUH3U9dXR3hcDhqkSRJbVuLCUUNDQ1MmDCBc889l9NOOw2AyspKEhMTSU1NjeqbkZFBZWVlpM/fB6L97fvbDqa4uJiUlJTIkpOT08SjkSRJrU2LCUWFhYWsXr2a2bNnH/F9TZ48mdra2siyadOmI75PSZLUssX0mqL9ioqKmDt3Lq+88grHHXdcZH1mZiZ79uyhpqYm6mhRVVUVmZmZkT7Lli2L2t7+u9P29/mipKQkkpKSmngUkiSpNYvpkaIgCCgqKuKZZ55h4cKF9OzZM6p9wIABJCQkUFpaGlm3bt06KioqyM/PByA/P59Vq1ZRXV0d6bNgwQKSk5Pp06dP8wxEkiS1ejE9UlRYWMisWbN49tln6dy5c+QaoJSUFDp06EBKSgpjx45l4sSJpKWlkZyczPjx48nPz2fQoEEADB06lD59+nDVVVdx9913U1lZya233kphYaFHgyRJ0lcW01A0ffp0AAYPHhy1fsaMGVxzzTUA3HvvvcTFxTFq1Cjq6uoYNmwYDz30UKRvu3btmDt3LuPGjSM/P59jjjmGMWPGMG3atOYahiRJOgrENBQFQfAP+7Rv356SkhJKSkoO2ad79+688MILTVmaJElqY1rM3WeSJEmxZCiSJEnCUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAhoZio4//ng++eSTA9bX1NRw/PHHf+2iJEmSmlujQtHGjRupr68/YH1dXR0fffTR1y5KkiSpucUfTufnnnsu8vP8+fNJSUmJvK6vr6e0tJQePXo0WXGSJEnN5bBC0ciRIwEIhUKMGTMmqi0hIYEePXrwn//5n01WnCRJUnM5rFDU0NAAQM+ePXnzzTfp2rXrESlKkiSpuR1WKNpvw4YNTV2HJElSTDUqFAGUlpZSWlpKdXV15AjSfo899tjXLkySJKk5NSoU3XHHHUybNo2BAweSlZVFKBRq6rokSZKaVaNC0cMPP8zMmTO56qqrmroeSZKkmGjUc4r27NnDOeec09S1SJIkxUyjQtGPfvQjZs2a1dS1SJIkxUyjTp/t3r2bRx55hJdeeol+/fqRkJAQ1X7PPfc0SXGSJEnNpVGhaOXKlZxxxhkArF69OqrNi64lSVJr1KhQtGjRoqauQ5IkKaYadU2RJEnS0aZRR4rOP//8Lz1NtnDhwkYXJEmSFAuNCkX7ryfab+/evaxYsYLVq1cf8EWxkiRJrUGjQtG999570PW33347O3bs+FoFSZIkxUKTXlN05ZVX+r1nkiSpVWrSUFRWVkb79u2bcpOSJEnNolGnzy699NKo10EQsGXLFpYvX85tt93WJIVJkiQ1p0aFopSUlKjXcXFxnHLKKUybNo2hQ4c2SWGSJEnNqVGhaMaMGU1dhyRJUkw1KhTtV15eztq1awE49dRT6d+/f5MUJUmS1NwaFYqqq6u5/PLLefnll0lNTQWgpqaG888/n9mzZ9OtW7emrFGSJOmIa9TdZ+PHj2f79u2sWbOGbdu2sW3bNlavXk04HObHP/7xV97OK6+8wsUXX0x2djahUIg5c+ZEtV9zzTWEQqGo5cILL4zqs23bNkaPHk1ycjKpqamMHTvWZyVJkqTD1qhQNG/ePB566CF69+4dWdenTx9KSkp48cUXv/J2du7cyemnn05JSckh+1x44YVs2bIlsvz+97+Pah89ejRr1qxhwYIFzJ07l1deeYXrr7/+8AclSZLatEadPmtoaCAhIeGA9QkJCTQ0NHzl7QwfPpzhw4d/aZ+kpCQyMzMP2rZ27VrmzZvHm2++ycCBAwF48MEHueiii/jNb35Ddnb2V65FkiS1bY06UnTBBRdw4403snnz5si6jz76iJtuuokhQ4Y0WXEAL7/8Munp6ZxyyimMGzeOTz75JNJWVlZGampqJBABFBQUEBcXx9KlSw+5zbq6OsLhcNQiSZLatkaFov/6r/8iHA7To0cPTjjhBE444QR69uxJOBzmwQcfbLLiLrzwQp544glKS0v51a9+xeLFixk+fDj19fUAVFZWkp6eHvU78fHxpKWlUVlZecjtFhcXk5KSEllycnKarGZJktQ6Ner0WU5ODm+99RYvvfQS7733HgC9e/emoKCgSYu7/PLLIz/37duXfv36ccIJJ/Dyyy9/rSNSkydPZuLEiZHX4XDYYCRJUht3WEeKFi5cSJ8+fQiHw4RCIb797W8zfvx4xo8fz1lnncWpp57Kq6++eqRq5fjjj6dr166sX78egMzMTKqrq6P67Nu3j23bth3yOiT47Dql5OTkqEWSJLVthxWK7rvvPq677rqDhoiUlBT+9V//lXvuuafJivuiDz/8kE8++YSsrCwA8vPzqampoby8PNJn4cKFNDQ0kJeXd8TqkCRJR5/DCkXvvPPOAc8J+ntDhw6NCij/yI4dO1ixYgUrVqwAYMOGDaxYsYKKigp27NjBLbfcwpIlS9i4cSOlpaVccsklnHjiiQwbNgz47JTdhRdeyHXXXceyZct4/fXXKSoq4vLLL/fOM0mSdFgOKxRVVVUd9Fb8/eLj4/n444+/8vaWL19O//79I18PMnHiRPr378+UKVNo164dK1eu5Lvf/S4nn3wyY8eOZcCAAbz66qskJSVFtvHkk0/Sq1cvhgwZwkUXXcR5553HI488cjjDkiRJOrwLrb/xjW+wevVqTjzxxIO2r1y5MnJq66sYPHgwQRAcsn3+/Pn/cBtpaWnMmjXrK+9TkiTpYA7rSNFFF13Ebbfdxu7duw9o27VrF1OnTuU73/lOkxUnSZLUXA7rSNGtt97K008/zcknn0xRURGnnHIKAO+99x4lJSXU19fz85///IgUKkmSdCQdVijKyMjgjTfeYNy4cUyePDly6isUCjFs2DBKSkrIyMg4IoVKkiQdSYf98Mbu3bvzwgsv8H//93+sX7+eIAg46aSTOPbYY49EfZIkSc2iUU+0Bjj22GM566yzmrIWSZKkmGnUd59JkiQdbQxFkiRJGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIExDgUvfLKK1x88cVkZ2cTCoWYM2dOVHsQBEyZMoWsrCw6dOhAQUEB77//flSfbdu2MXr0aJKTk0lNTWXs2LHs2LGjGUchSZKOBjENRTt37uT000+npKTkoO133303DzzwAA8//DBLly7lmGOOYdiwYezevTvSZ/To0axZs4YFCxYwd+5cXnnlFa6//vrmGoIkSTpKxMdy58OHD2f48OEHbQuCgPvuu49bb72VSy65BIAnnniCjIwM5syZw+WXX87atWuZN28eb775JgMHDgTgwQcf5KKLLuI3v/kN2dnZzTYWSZLUurXYa4o2bNhAZWUlBQUFkXUpKSnk5eVRVlYGQFlZGampqZFABFBQUEBcXBxLly495Lbr6uoIh8NRiyRJattabCiqrKwEICMjI2p9RkZGpK2yspL09PSo9vj4eNLS0iJ9Dqa4uJiUlJTIkpOT08TVS5Kk1qbFhqIjafLkydTW1kaWTZs2xbokSZIUYy02FGVmZgJQVVUVtb6qqirSlpmZSXV1dVT7vn372LZtW6TPwSQlJZGcnBy1SJKktq3FhqKePXuSmZlJaWlpZF04HGbp0qXk5+cDkJ+fT01NDeXl5ZE+CxcupKGhgby8vGavWZIktV4xvftsx44drF+/PvJ6w4YNrFixgrS0NHJzc5kwYQK//OUvOemkk+jZsye33XYb2dnZjBw5EoDevXtz4YUXct111/Hwww+zd+9eioqKuPzyy73zTJIkHZaYhqLly5dz/vnnR15PnDgRgDFjxjBz5kx+8pOfsHPnTq6//npqamo477zzmDdvHu3bt4/8zpNPPklRURFDhgwhLi6OUaNG8cADDzT7WCRJUusW01A0ePBggiA4ZHsoFGLatGlMmzbtkH3S0tKYNWvWkShPkiS1IS32miJJkqTmZCiSJEnCUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJgKFIkiQJMBRJkiQBhiJJkiTAUCRJkgQYiiRJkgBDkSRJEmAokiRJAgxFkiRJQAsPRbfffjuhUChq6dWrV6R99+7dFBYW0qVLFzp16sSoUaOoqqqKYcWSJKm1atGhCODUU09ly5YtkeW1116LtN100008//zzPPXUUyxevJjNmzdz6aWXxrBaSZLUWsXHuoB/JD4+nszMzAPW19bW8uijjzJr1iwuuOACAGbMmEHv3r1ZsmQJgwYNau5SJUlSK9bijxS9//77ZGdnc/zxxzN69GgqKioAKC8vZ+/evRQUFET69urVi9zcXMrKyr50m3V1dYTD4ahFkiS1bS06FOXl5TFz5kzmzZvH9OnT2bBhA9/85jfZvn07lZWVJCYmkpqaGvU7GRkZVFZWful2i4uLSUlJiSw5OTlHcBSSJKk1aNGnz4YPHx75uV+/fuTl5dG9e3f++Mc/0qFDh0Zvd/LkyUycODHyOhwOG4wkSWrjWvSRoi9KTU3l5JNPZv369WRmZrJnzx5qamqi+lRVVR30GqS/l5SURHJyctQiSZLatlYVinbs2MEHH3xAVlYWAwYMICEhgdLS0kj7unXrqKioID8/P4ZVSpKk1qhFnz7793//dy6++GK6d+/O5s2bmTp1Ku3ateOKK64gJSWFsWPHMnHiRNLS0khOTmb8+PHk5+d755kkSTpsLToUffjhh1xxxRV88skndOvWjfPOO48lS5bQrVs3AO69917i4uIYNWoUdXV1DBs2jIceeijGVUuSpNaoRYei2bNnf2l7+/btKSkpoaSkpJkqkiRJR6tWdU2RJEnSkWIokiRJwlAkSZIEGIokSZIAQ5EkSRLQwu8+kyRJjVNRUcHWrVtjXQYAXbt2JTc3N9Zl/EOGIkmSjjIVFRX06tWbXbs+jXUpAHTo0JH33lvb4oORoUiSpKPM1q1b2bXrU/J+OJXkrB4xrSW8ZSNLH7uDrVu3GookSVJsJGf1IC33lFiX0Wp4obUkSRKGIkmSJMBQJEmSBHhNUZuzdu3aWJcAQF1dHUlJSbEuo9XcJipJOvIMRW3ErtpPgBBXXnllrEv5TCgEQRDrKlrNbaKSpCPPUNRG7P10OxBwxg8m0a1nr5jWsmVVGaufeyTmtbSm20QlSUeeoaiN6ZSeG/PbM8NbNraYWiRJ2s8LrSVJkjAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIMRZIkSYChSJIkCTAUSZIkAYYiSZIkwFAkSZIEGIokSZIAQ5EkSRJgKJIkSQIgPtYFSPpMRUUFW7dujXUZAHTt2pXc3NxYlyFJzcpQJLUAFRUV9OrVm127Po11KQB06NCR995bG/NgZFBs2fz76GhjKJJagK1bt7Jr16fk/XAqyVk9YlpLeMtGlj52B1u3bo3pfzIGxZbNv8+htYSwuHbt2pjuv7UyFEktSHJWD9JyT4l1GS2CQbFl8+9zcC0tLO6t2xPrEloVQ5GkFs2g2LL594nWUsLillVlrH7uEfbt2xezGlojQ5EkSU0s1mExvGVjzPbdmnlLviRJEh4pklrEBYktoQZJausMRWqzdtV+AoS48sorY11KhBdFSlLsGIrUZu39dDsQcMYPJtGtZ6+Y1uJFkZIUe4YitXmd0nNjfvdMS7woMtan9GK9/4NpKTXV1dWRlJQU0xpaylz8vZZQU0uoQY1nKJIUpaWdVmwJpxRb2pwQCkEQxLoKwL/PobSEedHhMxRJitJSTiu2pFOKLWVO4PN5iXUt/n0OriXNiw6foUjSQcX6tGJLPKUY6zmBz+cl1rX49zm4ljgv+up8TpEkSRKGIkmSJOAoCkUlJSX06NGD9u3bk5eXx7Jly2JdkiRJakWOilD0hz/8gYkTJzJ16lTeeustTj/9dIYNG0Z1dXWsS5MkSa3EURGK7rnnHq677jquvfZa+vTpw8MPP0zHjh157LHHYl2aJElqJVp9KNqzZw/l5eUUFBRE1sXFxVFQUEBZWVkMK5MkSa1Jq78lf+vWrdTX15ORkRG1PiMjg/fee++gv1NXV0ddXV3kdW1tLQDhcLhJa9uxYwcA2/62jn11u5p024crvOVvANR+9D4J8SFraUF1WEvLrsNaWnYd1tKy6wAIV1YAn/2f2NT/z+7fXtBUDzMNWrmPPvooAII33ngjav0tt9wSnH322Qf9nalTpwaAi4uLi4uLy1GwbNq0qUkyRas/UtS1a1fatWtHVVVV1PqqqioyMzMP+juTJ09m4sSJkdcNDQ1s27aNLl26EAo1XaIOh8Pk5OSwadMmkpOTm2y7rZFz8Tnn4nPOxeeci2jOx+eci899cS6CIGD79u1kZ2c3yfZbfShKTExkwIABlJaWMnLkSOCzkFNaWkpRUdFBfycpKemAL1NMTU09YjUmJye3+Tfyfs7F55yLzzkXn3Muojkfn3MuPvf3c5GSktJk2231oQhg4sSJjBkzhoEDB3L22Wdz3333sXPnTq699tpYlyZJklqJoyIUXXbZZXz88cdMmTKFyspKzjjjDObNm3fAxdeSJEmHclSEIoCioqJDni6LlaSkJKZOnXrAqbq2yLn4nHPxOefic85FNOfjc87F5470XISCoKnuY5MkSWq9Wv3DGyVJkpqCoUiSJAlDkSRJEmAoOmJKSkro0aMH7du3Jy8vj2XLlsW6pCb3yiuvcPHFF5OdnU0oFGLOnDlR7UEQMGXKFLKysujQoQMFBQW8//77UX22bdvG6NGjSU5OJjU1lbFjx0a+HqU1KS4u5qyzzqJz586kp6czcuRI1q1bF9Vn9+7dFBYW0qVLFzp16sSoUaMOeOhoRUUFI0aMoGPHjqSnp3PLLbewb9++5hzK1zZ9+nT69esXeY5Ifn4+L774YqS9rczDwdx1112EQiEmTJgQWdeW5uP2228nFApFLb169Yq0t6W5APjoo4+48sor6dKlCx06dKBv374sX7480t5WPkN79OhxwPsiFApRWFgINPP7okmei60os2fPDhITE4PHHnssWLNmTXDdddcFqampQVVVVaxLa1IvvPBC8POf/zx4+umnAyB45plnotrvuuuuICUlJZgzZ07wzjvvBN/97neDnj17Brt27Yr0ufDCC4PTTz89WLJkSfDqq68GJ554YnDFFVc080i+vmHDhgUzZswIVq9eHaxYsSK46KKLgtzc3GDHjh2RPjfccEOQk5MTlJaWBsuXLw8GDRoUnHPOOZH2ffv2BaeddlpQUFAQvP3228ELL7wQdO3aNZg8eXIshtRozz33XPCnP/0p+Mtf/hKsW7cu+NnPfhYkJCQEq1evDoKg7czDFy1btizo0aNH0K9fv+DGG2+MrG9L8zF16tTg1FNPDbZs2RJZPv7440h7W5qLbdu2Bd27dw+uueaaYOnSpcFf//rXYP78+cH69esjfdrKZ2h1dXXUe2LBggUBECxatCgIguZ9XxiKjoCzzz47KCwsjLyur68PsrOzg+Li4hhWdWR9MRQ1NDQEmZmZwa9//evIupqamiApKSn4/e9/HwRBELz77rsBELz55puRPi+++GIQCoWCjz76qNlqPxKqq6sDIFi8eHEQBJ+NPSEhIXjqqacifdauXRsAQVlZWRAEn4XMuLi4oLKyMtJn+vTpQXJyclBXV9e8A2hixx57bPDf//3fbXYetm/fHpx00knBggULgn/6p3+KhKK2Nh9Tp04NTj/99IO2tbW5mDRpUnDeeecdsr0tf4beeOONwQknnBA0NDQ0+/vC02dNbM+ePZSXl1NQUBBZFxcXR0FBAWVlZTGsrHlt2LCBysrKqHlISUkhLy8vMg9lZWWkpqYycODASJ+CggLi4uJYunRps9fclGprawFIS0sDoLy8nL1790bNR69evcjNzY2aj759+0Y9dHTYsGGEw2HWrFnTjNU3nfr6embPns3OnTvJz89vs/NQWFjIiBEjosYNbfN98f7775Odnc3xxx/P6NGjqaj47BvU29pcPPfccwwcOJDvf//7pKen079/f377299G2tvqZ+iePXv43e9+xw9/+ENCoVCzvy8MRU1s69at1NfXH/A07YyMDCorK2NUVfPbP9Yvm4fKykrS09Oj2uPj40lLS2vVc9XQ0MCECRM499xzOe2004DPxpqYmHjAd+x9cT4ONl/721qTVatW0alTJ5KSkrjhhht45pln6NOnT5ubB4DZs2fz1ltvUVxcfEBbW5uPvLw8Zs6cybx585g+fTobNmzgm9/8Jtu3b29zc/HXv/6V6dOnc9JJJzF//nzGjRvHj3/8Yx5//HGg7X6Gzpkzh5qaGq655hqg+f+NHDVPtJZaisLCQlavXs1rr70W61Ji5pRTTmHFihXU1tbyP//zP4wZM4bFixfHuqxmt2nTJm688UYWLFhA+/btY11OzA0fPjzyc79+/cjLy6N79+788Y9/pEOHDjGsrPk1NDQwcOBA7rzzTgD69+/P6tWrefjhhxkzZkyMq4udRx99lOHDhzfZt94fLo8UNbGuXbvSrl27A66Mr6qqIjMzM0ZVNb/9Y/2yecjM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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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XnvNc7u9vd1yOp3Wr3/9a8+6pqYmKzIy0nrhhRf8Pg9ndvzgxIkTqqqqUm5urmddSEiIcnNzVVFRYeNkZmtubpYkJSQk2DyJmQoKCjR+/Hiv/67hO2+++aaGDRum73//+0pMTNSQIUP0hz/8we6xjHP99derrKxMn376qSTpb3/7mzZv3qyxY8faPJnZ9u3bJ5fL5fXvR1xcnLKysgLye9GIT1AONo2NjWprazvjE5yTkpK0e/dum6YyW3t7u2bPnq2RI0fq2muvtXsc47z44ov66KOPtH37drtHMdbf//53rVixQkVFRbr//vu1fft23X333YqIiNCUKVPsHs8Y9913n9xutzIyMhQaGqq2tjY98sgjys/Pt3s0o7lcLkk66+/F09v8idiBEQoKClRTU6PNmzfbPYpx9u/fr1mzZmn9+vWKioqyexxjtbe3a9iwYXr00UclSUOGDFFNTY1WrlxJ7PjQyy+/rOeff16lpaXq37+/qqurNXv2bKWkpPA8G4yXsfyge/fuCg0NVX19vdf6+vp6OZ1Om6YyV2FhodauXav33ntPV199td3jGKeqqkoNDQ36xje+obCwMIWFham8vFxPPPGEwsLC1NbWZveIRkhOTla/fv281mVmZqqurs6micx0zz336L777tPkyZM1YMAA3X777ZozZ46Ki4vtHs1op3/32fV7kdjxg4iICA0dOlRlZWWede3t7SorK1N2draNk5nFsiwVFhbqtdde08aNG5Wenm73SEYaNWqUPv74Y1VXV3uWYcOGKT8/X9XV1QoNDbV7RCOMHDnyjI9O+PTTT9WjRw+bJjLTV199pZAQ7199oaGham9vt2miy0N6erqcTqfX70W3263KysqA/F7kZSw/KSoq0pQpUzRs2DCNGDFCy5Yt09GjR3XnnXfaPZoxCgoKVFpaqjfeeEMxMTGe133j4uIUHR1t83TmiImJOeM6qK5du6pbt25cH+VDc+bM0fXXX69HH31UP/jBD7Rt2zatWrVKq1atsns0o0yYMEGPPPKI0tLS1L9/f/31r3/V0qVLddddd9k9WqfX0tKivXv3em7v27dP1dXVSkhIUFpammbPnq2HH35Yffr0UXp6uubPn6+UlBRNnDjR/8P5/f1el7Hly5dbaWlpVkREhDVixAhr69atdo9kFElnXVavXm33aMbjref+8dZbb1nXXnutFRkZaWVkZFirVq2yeyTjuN1ua9asWVZaWpoVFRVl9erVy/rlL39ptba22j1ap/fee++d9d/kKVOmWJb1r7efz58/30pKSrIiIyOtUaNGWbW1tQGZzWFZfGwkAAAwF9fsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwCMlpOTo9mzZ5+xfs2aNYqPjw/4PAACj9gBAABG41vPAXRqOTk5nm9f/9Of/qTw8HDNmDFDixcvlsPhsHk6AMGAMzsAOr1nn31WYWFh2rZtm373u99p6dKl+uMf/2j3WACCBN96DqBTy8nJUUNDg3bu3Ok5k3PffffpzTff1CeffKKcnBxt2bJFERERXj936tQpRUVFqampyYapAQQSZ3YAdHrXXXed10tW2dnZ2rNnj9ra2iRJ+fn5qq6u9loWL15s17gAAoxrdgAYLy4uTl//+te91iUmJto0DYBA48wOgE6vsrLS6/bWrVvVp08fhYaG2jQRgGBC7ADo9Orq6lRUVKTa2lq98MILWr58uWbNmmX3WACCBC9jAej07rjjDh07dkwjRoxQaGioZs2apenTp9s9FoAgwbuxAHRqOTk5Gjx4sJYtW2b3KACCFC9jAQAAoxE7AADAaLyMBQAAjMaZHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDR/g99zKYyGxs+RQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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y8u1c+dO7dy5U9LPNz7v3LlTx44dU3l5uaZNm6YtW7bou+++U1ZWloYNG6YbbrhBaWlpkqSOHTtq8ODBGj9+vLZt26bPP/9cGRkZuvfee3knFgAAkFTLl7HOnDmjv/3tb1q7dq26du2q4OBgt/ZXXnmlWuN88cUXuvXWW137F15aGjNmjN58803t2rVLb7/9tkpKSpSYmKhBgwbphRdecPusncWLFysjI0MDBw5UQECARo4cqddff7020wIAABaqVdjZtWuXunfvLknavXu3W1tNblYeMGCAjDGXbF+9evUVx4iOjuYDBAEAwCXVKuysX7/e03UAAAB4Ra3u2QEAAKgvanVl59Zbb73sy1Xr1q2rdUEAAACeVKuwc+F+nQsqKyu1c+dO7d69+6IvCAUAAPClWoWdV199tcrjs2fPVnl5+VUVBAAA4EkevWfngQce8Nj3YgEAAHiCR8NOdna2wsLCPDkkAADAVanVy1gjRoxw2zfGqKCgQF988YWeeeYZjxQGAADgCbUKO5GRkW77AQEBat++vZ5//nkNGjTII4UBAAB4Qq3CzsKFCz1dBwAAgFfUKuxckJOTo3379kmSOnfurN/85jceKQoAAMBTahV2iouLde+992rDhg2KioqSJJWUlOjWW2/Vu+++qyZNmniyRgAAgFqr1buxJk6cqFOnTmnPnj06efKkTp48qd27d6usrEyTJk3ydI0AAAC1VqsrO6tWrdLatWvVsWNH17FOnTopMzOTG5QBAIBfqdWVHafTqeDg4IuOBwcHy+l0XnVRAAAAnlKrsHPbbbfpD3/4g/Lz813H8vLyNGXKFA0cONBjxQEAAFytWoWd//mf/1FZWZlatmypNm3aqE2bNmrVqpXKyso0f/58T9cIAABQa7W6ZycpKUlffvml1q5dq/3790uSOnbsqNTUVI8WBwAAcLVqdGVn3bp16tSpk8rKyuRwOPQf//EfmjhxoiZOnKhevXqpc+fO+uyzz7xVKwAAQI3VKOzMmzdP48ePV0RExEVtkZGRevTRR/XKK694rDgAAICrVaOw89VXX2nw4MGXbB80aJBycnKuuigAAABPqVHYKSoqqvIt5xcEBQXphx9+uOqiAAAAPKVGYadp06bavXv3Jdt37dqlhISEqy4KAADAU2oUdm6//XY988wzOnPmzEVtP/30k2bNmqXf/e53HisO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VFFR4dovLS2VJJWVlXm0tlOnTulUca7OnPq3AspLFeA8p/IT+QoIbSjn2TMKcAS6/gww53Xw4EGdOnVKhYWFOlWcK0k6eDBCp06dumjswsJCnav46f/6HKyyT21Ude7q1ONPLtRbeeZHnSk7oYMHIyTJr+dQVc2/rrE6fXytus/duvq38NbPCYAr++XP36lTpzz+O1b6/7+3jTGX72jquby8PCPJbN682e34tGnTTO/evat8zKxZs4wkNjY2NjY2Ngu23Nzcy2aFen9lJyYmRoGBgSoqKnI7XlRUpPj4+CofM2PGDE2dOtW173Q6dfLkSV1//fVyOBweq62srExJSUnKzc1VRESEx8aFO9a57rDWdYN1rhusc93w5jobY3Tq1CklJiZetl+9DzshISHq0aOHsrKyNHz4cEk/h5esrCxlZGRU+ZjQ0FCFhoa6HYuKivJajREREfwg1QHWue6w1nWDda4brHPd8NY6R0ZGXrFPvQ87kjR16lSNGTNGPXv2VO/evTVv3jydPn1aDz30kK9LAwAAPmZF2Lnnnnv0ww8/6Nlnn1VhYaG6d++uVatWXXTTMgAAuPZYEXYkKSMj45IvW/lKaGioZs2addFLZvAs1rnusNZ1g3WuG6xz3fCHdXYYc6X3awEAANRfVnyCMgAAwKUQdgAAgNUIOwAAwGqEnRrKzMxUy5YtFRYWpuTkZG3btu2y/ZcuXaoOHTooLCxMXbp00SeffOLWbozRs88+q4SEBDVo0ECpqak6ePCgN6dQL3hynSsrKzV9+nR16dJFDRs2VGJioh588EHl5+d7exp+z9PP51967LHH5HA4NG/ePA9XXf94Y5337dunO++8U5GRkWrYsKF69eqlY8eOeWsK9YKn17m8vFwZGRlq1qyZGjRo4PqiadRsrffs2aORI0eqZcuWl/0/oab/fjXike9suEa8++67JiQkxLz11ltmz549Zvz48SYqKsoUFRVV2f/zzz83gYGBZu7cuWbv3r1m5syZJjg42Hz99deuPi+++KKJjIw0y5YtM1999ZW58847TatWrcxPP/1UV9PyO55e55KSEpOammree+89s3//fpOdnW169+5tevToUZfT8jveeD5f8MEHH5hu3bqZxMRE8+qrr3p5Jv7NG+t86NAhEx0dbaZNm2a+/PJLc+jQIbN8+fJLjnkt8MY6jx8/3rRp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4eHh6tu3rw4cOOB2vo8++ki9evVSWFiYYmJidNddd7naKioq9OSTT6pp06Zq2LChkpOTtWHDBlf7hZfsVq9erY4dO6pRo0YaPHiwCgoKJEmzZ8/W22+/reXLl8vhcMjhcGjDhg2uqy3vvfee+vfvr7CwMC1evFgnTpzQfffdp6ZNmyo8PFxdunTRO++84zrf2LFjtXHjRr322muu8ap7RWbMmDFauHCh27GFCxdqzJgx1Xo8YC2PfaUoAL8xZswYM2zYMGPMz99AHBERYWbPnm2++eYb8/bbbxuHw2E+/fRTV39JplmzZmbJkiXm4MGDZtKkSaZRo0bmxIkTxhhj1q9fbySZf//738YYYxYuXGiCg4NNz549zebNm80XX3xhevfubfr27Vut+rp27WoGDRp0xX6TJk0yiYmJ5pNPPjF79uwxY8aMMdddd91FdSUnJ5sNGzaYPXv2mN/+9rdudaxcudIEBgaaZ5991uzdu9fs3LnT/OlPf3K1P/LII6Zv375m06ZN5tChQ+all14yoaGh5ptvvnGba2pqqtm+fbvJyckxHTt2NPfff78xxphTp06Zu+++2wwePNgUFBSYgoICU1FR4fqm55YtW5r//d//Nd9++63Jz88333//vXnppZfMjh07zOHDh83rr79uAgMDzdatW40xxpSUlJiUlBQzfvx413jnzp277DpdONe2bdtMTEyM+eyzz4wxxnz22WemSZMmZtu2bUaSOXLkSLX+fQDbEHYAC/067Nx8881u7b169TLTp0937UsyM2fOdO2Xl5cbSeaf//ynMabqsCPJbNmyxfWYffv2GUmuX9qX06BBAzNp0qTL9ikvLzfBwcFm8eLFrmNnz541iYmJZu7cuW51rV271tXn448/NpLMTz/9ZIwxJiUlxYwaNarKcxw9etQEBgaavLw8t+MDBw40M2bMcJvroUOHXO2ZmZkmLi7Otf/L9b7gQgCZN2/eZedpjDFDhw41TzzxhGu/f//+5g9/+MMVH/frc+3YscNMnjzZPPTQQ8YYYx566CEzZcoUs2PHDsIOrmm8jAVcA7p27eq2n5CQoOLi4kv2adiwoSIiIi7q80tBQUHq1auXa79Dhw6KiorSvn37rliPMeaKfQ4fPqzKykr169fPdSw4OFi9e/e+6By/rD0hIUGSXLXv3LlTAwcOrPIcX3/9tc6fP6927dqpUaNGrm3jxo06fPiwq194eLjatGnjdo7Lrc0v9ezZ023//PnzeuGFF9SlSxdFR0erUaNGWr16tY4dO1at8a5k3LhxWrp0qQoLC7V06VKNGzfOI+MC9VmQrwsA4H3BwcFu+w6HQ06ns8Z9PKVdu3bav3+/x8b7Ze0XbqK+UHuDBg0u+bjy8nIFBgYqJydHgYGBbm2NGjWqcvwL56hOYJN+Do6/9NJLL+m1117TvHnz1KVLFzVs2FCTJ0/W2bNnqzXelXTp0kUdOnTQfffdp44dO+rGG2/Uzp07PTI2UF9xZQdArZw7d05ffPGFa//AgQMqKSlRx44dr/jY+++/X2vXrtWOHTsuaqusrNTp06fVpk0bhYSE6PPPP3dr2759uzp16lTtOrt27aqsrKwq237zm9/o/PnzKi4u1g033OC2xcfHV/scISEhOn/+fLX6fv755xo2bJgeeOABdevWTa1bt9Y333xT6/GqMm7cOG3YsIGrOsD/IewAqJXg4GBNnDhRW7duVU5OjsaOHas+ffqod+/eV3zs5MmT1a9fPw0cOFCZmZn66quv9O233+r9999Xnz59dPDgQTVs2FCPP/64pk2bplWrVmnv3r0aP368fvzxRz388MPVrnPWrFl65513NGvWLO3bt09ff/21/vznP0v6+QrTqFGj9OCDD+qDDz7QkSNHtG3bNs2ZM0cff/xxtc/RsmVL7dq1SwcOHNDx48cv+xbztm3bas2aNdq8ebP27dunRx99VEVFRReNt3XrVn333Xc6fvx4ja+wjR8/Xj/88IMeeeSRGj0OsBVhB0CthIeHa/r06br//vvVr18/NWrUSO+99161HhsaGqo1a9boqaee0l//+lf16dNHvXr10uuvv65JkybpxhtvlCS9+OKLGjlypEaPHq2bbrpJhw4d0urVq3XddddVu84BAwZo6dKlWrFihbp3767bbrtN27Ztc7UvXLhQDz74oJ544gm1b99ew4cP1/bt29W8efNqn2P8+PFq3769evbsqSZNmrhdjfq1mTNn6qabblJaWpoGDBig+Pj4iz6Q8Mknn1RgYKA6deqkJk2a1Ph+nqCgIMXExCgoiDsVAElymOq+8AwAAFAPcWUHAABYjbADwOM6d+7s9lbuX26LFy/2dXn1zmOPPXbJ9Xzsscd8XR7g93gZC4DHHT169JI36cbFxalx48Z1XFH9VlxcrLKysirbIiIiFBsbW8cVAfULYQcAAFiNl7EAAIDVCDsAAMBqhB0AAGA1wg4AALAaYQcAAFiNsAMAAKxG2AEAAFYj7AAAAKv9P+bDKgz8xq1kAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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Pt8XGBio0NDQWhsAALDTNRU75eXlOnz4sGJiYtSvXz/5+/srOzvbuT8/P19Hjx5VQkKCB6cEAADexKs/xnryySd13333qX379iosLFR6erp8fX310EMPKSwsTJMmTdL06dMVERGh0NBQTZs2TQkJCXwTCwAAOHl17Bw/flwPPfSQTp8+rdatW2vIkCH69NNP1bp1a0nS888/Lx8fH6WkpKiiokJJSUn63e9+5+GpAQCAN/Hq2FmzZk29+4OCgpSRkaGMjIxmmggAAFxrrqlrdgAAABqL2AEAAFYjdgAAgNW8+podAADg3bp076miwsJ6j4mJjVX+vj3NNNHliB0AAOCyosJCjVr8fr3HbJgxupmmqRsfYwEAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALCan6cHAADAG3Xp3lNFhYX1HhMTG6v8fXuaaSK4itgBAKAORYWFGrX4/XqP2TBjdDNNg6vBx1gAAMBq1sRORkaGOnTooKCgIMXHx+vzzz/39EgAAMALWBE7f/rTnzR9+nSlp6fryy+/VO/evZWUlKSTJ096ejQAAOBhVsTOc889p8mTJ+uRRx5R9+7dtWzZMt14441avny5p0cDAAAeds3HTmVlpXJzc5WYmOi8z8fHR4mJicrJyfHgZAAAwBtc89/G+uabb1RdXa2oqKha90dFRenAgQN1PqaiokIVFRXO26WlpZKksrIyt89njFHVd+d/8JimeO36Xo+ZAKB+/LvUMJ5cp0vPaYyp/0BzjTtx4oSRZLZv317r/qeeesoMHDiwzsekp6cbSWxsbGxsbGwWbMeOHau3Fa75MzutWrWSr6+vSkpKat1fUlKi6OjoOh8za9YsTZ8+3Xm7pqZGZ86c0U033SSHw+G22crKyhQXF6djx44pNDTUbc9rI9aqcVivhmOtGo61ajjWquGacq2MMTp37pxiY2PrPe6aj52AgAD169dP2dnZGjt2rKR/xEt2drbS0tLqfExgYKACAwNr3RceHt5kM4aGhvIfQwOxVo3DejUca9VwrFXDsVYN11RrFRYW9oPHXPOxI0nTp0/XhAkT1L9/fw0cOFAvvPCCzp8/r0ceecTTowEAAA+zInYefPBBnTp1SnPnzlVxcbH69OmjrKysyy5aBgAA1x8rYkeS0tLSrvixlacEBgYqPT39so/McDnWqnFYr4ZjrRqOtWo41qrhvGGtHMb80Pe1AAAArl3X/A8VBAAAqA+xAwAArEbsAAAAqxE7VykjI0MdOnRQUFCQ4uPj9fnnn9d7/Nq1a9W1a1cFBQXptttu04YNG5ppUs9rzFrt3btXKSkp6tChgxwOh1544YXmG9QLNGatXn31Vd1xxx1q2bKlWrZsqcTExB/8e2ibxqzX22+/rf79+ys8PFwtWrRQnz599Mc//rEZp/Wsxv6bdcmaNWvkcDicP8/setCYtcrMzJTD4ai1BQUFNeO0ntXYv1dnz55VamqqYmJiFBgYqM6dOzft/w/d80sbrk9r1qwxAQEBZvny5Wbv3r1m8uTJJjw83JSUlNR5/LZt24yvr69ZvHix2bdvn5k9e7bx9/c3X331VTNP3vwau1aff/65efLJJ80bb7xhoqOjzfPPP9+8A3tQY9fqxz/+scnIyDA7d+40+/fvNxMnTjRhYWHm+PHjzTy5ZzR2vT744APz9ttvm3379plDhw6ZF154wfj6+pqsrKxmnrz5NXatLikoKDBt2rQxd9xxhxkzZkzzDOthjV2rFStWmNDQUFNUVOTciouLm3lqz2jsWlVUVJj+/fubUaNGmU8++cQUFBSYrVu3mry8vCabkdi5CgMHDjSpqanO29XV1SY2NtYsXLiwzuP/7d/+zYwePbrWffHx8eaxxx5r0jm9QWPX6vvat29/XcXO1ayVMcZcvHjRhISEmJUrVzbViF7latfLGGP69u1rZs+e3RTjeRVX1urixYtm8ODB5ve//72ZMGHCdRM7jV2rFStWmLCwsGaazrs0dq1eeukl06lTJ1NZWdlcIxo+xnJRZWWlcnNzlZiY6LzPx8dHiYmJysnJqfMxOTk5tY6XpKSkpCsebwtX1up65Y61+vvf/66qqipFREQ01Zhe42rXyxij7Oxs5efn684772zKUT3O1bWaP3++IiMjNWnSpOYY0yu4ulbl5eVq37694uLiNGbMGO3du7c5xvUoV9bq3XffVUJCglJTUxUVFaWePXvq17/+taqrq5tsTmLHRd98842qq6sv+ynNUVFRKi4urvMxxcXFjTreFq6s1fXKHWs1c+ZMxcbGXhbWNnJ1vUpLSxUcHKyAgACNHj1aS5cu1d13393U43qUK2v1ySef6LXXXtOrr77aHCN6DVfWqkuXLlq+fLneeecdvf7666qpqdHgwYN1/Pjx5hjZY1xZq7/97W968803VV1drQ0bNmjOnDl69tlntWDBgiab05qfoAxAWrRokdasWaOtW7deVxdHNlZISIjy8vJUXl6u7OxsTZ8+XZ06ddKwYcM8PZrXOHfunB5++GG9+uqratWqlafH8XoJCQlKSEhw3h48eLC6deuml19+Wc8884wHJ/M+NTU1ioyM1CuvvCJfX1/169dPJ06c0H//938rPT29SV6T2HFRq1at5Ovrq5KSklr3l5SUKDo6us7HREdHN+p4W7iyVterq1mrJUuWaNGiRdq8ebN69erVlGN6DVfXy8fHR7fccoskqU+fPtq/f78WLlxodew0dq0OHz6sI0eO6L777nPeV1NTI0ny8/NTfn6+br755qYd2kPc8W+Wv7+/+vbtq0OHDjXFiF7DlbWKiYmRv7+/fH19nfd169ZNxcXFqqysVEBAgNvn5GMsFwUEBKhfv37Kzs523ldTU6Ps7Oxadf99CQkJtY6XpE2bNl3xeFu4slbXK1fXavHixXrmmWeUlZWl/v37N8eoXsFdf7dqampUUVHRFCN6jcauVdeuXfXVV18pLy/Pud1///0aPny48vLyFBcX15zjNyt3/L2qrq7WV199pZiYmKYa0yu4sla33367Dh065IxnSfr6668VExPTJKEjia+eX401a9aYwMBAk5mZafbt22emTJliwsPDnV83fPjhh83Pf/5z5/Hbtm0zfn5+ZsmSJWb//v0mPT39uvrqeWPWqqKiwuzcudPs3LnTxMTEmCeffNLs3LnTHDx40FNvodk0dq0WLVpkAgICzJtvvlnra6/nzp3z1FtoVo1dr1//+tfmf//3f83hw4fNvn37zJIlS4yfn5959dVXPfUWmk1j1+qfXU/fxmrsWs2bN89s3LjRHD582OTm5ppx48aZoKAgs3fvXk+9hWbT2LU6evSoCQkJMWlpaSY/P9+sX7/eREZGmgULFjTZjMTOVVq6dKlp166dCQgIMAMHDjSffvqpc9/QoUPNhAkTah3/5z//2XTu3NkEBASYHj16mPfff7+ZJ/acxqxVQUGBkXTZNnTo0OYf3AMas1bt27evc63S09Obf3APacx6/fKXvzS33HKLCQoKMi1btjQJCQlmzZo1HpjaMxr7b9b3XU+xY0zj1urxxx93HhsVFWVGjRplvvzySw9M7RmN/Xu1fft2Ex8fbwIDA02nTp3Mr371K3Px4sUmm4/feg4AAKzGNTsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7ABokMzNT4eHhnh4DABqN2AGuE6dOndLUqVPVrl07BQYGKjo6WklJSdq2bZtLz/f000+rT58+jX7czp079a//+q+KiopSUFCQbr31Vk2ePFlff/21S3N4ypEjR+RwOJSXl+eW59u6dascDofOnj3b4MdMnDhRDodDP/3pTy/bl5qaKofDoYkTJ7plPuBaRuwA14mUlBTt3LlTK1eu1Ndff613331Xw4YN0+nTp5tthvXr12vQoEGqqKjQqlWrtH//fr3++usKCwvTnDlzmm2O5lRZWdmkzx8XF6c1a9bou+++c9534cIFrV69Wu3atWvS1wauGU32W7cAeI1vv/3WSDJbt2694jHPPvus6dmzp7nxxhtN27ZtzdSpU2v95vQVK1aYsLAw55/1T794dMWKFfXOcP78edOqVSszduzYK854ydatW82AAQNMQECAiY6ONjNnzjRVVVXO/UOHDjXTpk0zTz31lGnZsqWJioq67Beffvvtt2bKlCkmMjLSBAYGmh49epj33nvPuf/jjz82Q4YMMUFBQaZt27Zm2rRppry83Lm/ffv25le/+pV55JFHTHBwsImLizMvv/yyc/8/v/9Lv6T20i/LXLBggYmJiTEdOnQwxhjzhz/8wfTr188EBwebqKgo89BDD5mSkhJjTN2/+La+X8h5yaXX6tmzp3n99ded969atcr06tXLjBkzpkHPA9iOMzvAdSA4OFjBwcFat26dKioq6jzGx8dHL774ovbu3auVK1dqy5YtmjFjRp3HPvjgg/qv//ov9ejRQ0VFRSoqKtKDDz5Y7wwbN27UN998c8XnvHQ90IkTJzRq1CgNGDBAu3bt0ksvvaTXXntNCxYsqHX8ypUr1aJFC3322WdavHix5s+fr02bNkmSampqNHLkSG3btk2vv/669u3bp0WLFsnX11eSdPjwYSUnJyslJUW7d+/Wn/70J33yySdKS0ur9RrPPvus+vfvr507d+pnP/uZpk6dqvz8fEnS559/LknavHmzioqK9Pbbbzsfl52drfz8fG3atEnr16+XJFVVVemZZ57Rrl27tG7dOh05csT5EVNcXJzeeustSVJ+fr6Kior0P//zP/Wu5/c9+uijWrFihfP28uXL9cgjjzT48YD1PF1bAJrHm2++aVq2bGmCgoLM4MGDzaxZs8yuXbuuePzatWvNTTfd5Lz9/TM7xhiTnp5uevfu3eDX/81vfmMkmTNnztR73C9+8QvTpUsXU1NT47wvIyPDBAcHm+rqamPMP87sDBkypNbjBgwYYGbOnGmMMWbjxo3Gx8fH5Ofn1/kakyZNMlOmTKl138cff2x8fHzMd999Z4z5x5mdn/zkJ879NTU1JjIy0rz00kvGmP9/Nmbnzp21nmfChAkmKirKVFRU1Ps+d+zYYSQ5z5598MEHRlKtM1w/5NKZnZMnT5rAwEBz5MgRc+TIERMUFGROnTrFmR3g/3BmB7hOpKSkqLCwUO+++66Sk5O1detW/ehHP1JmZqakf5yhGDFihNq0aaOQkBA9/PDDOn36tP7+97+75fWNMQ06bv/+/UpISJDD4XDed/vtt6u8vFzHjx933terV69aj4uJidHJkyclSXl5eWrbtq06d+5c52vs2rVLmZmZzjNewcHBSkpKUk1NjQoKCup8DYfDoejoaOdr1Oe2225TQEBArftyc3N13333qV27dgoJCdHQoUMlSUePHv3B5/shrVu31ujRo5WZmakVK1Zo9OjRatWq1VU/L2ALYge4jgQFBenuu+/WnDlztH37dk2cOFHp6ek6cuSI7r33XvXq1UtvvfWWcnNzlZGRIcl9F9heCo8DBw645fn8/f1r3XY4HKqpqZEk3XDDDfU+try8XI899pjy8vKc265du3Tw4EHdfPPNDXqN+rRo0aLW7fPnzyspKUmhoaFatWqVduzYob/85S+S3Le+jz76qDIzM7Vy5Uo9+uijbnlOwBbEDnAd6969u86fP6/c3FzV1NTo2Wef1aBBg9S5c2cVFhbW+9iAgABVV1c3+LXuuecetWrVSosXL65z/6WvXHfr1k05OTm1zgRt27ZNISEhatu2bYNeq1evXjp+/PgVv87+ox/9SPv27dMtt9xy2fbPZ2Su5NJxDVmDAwcO6PTp01q0aJHuuOMOde3a9bIzRI15vrokJyersrJSVVVVSkpKcuk5AFsRO8B14PTp07rrrrv0+uuva/fu3SooKNDatWu1ePFijRkzRrfccouqqqq0dOlS/e1vf9Mf//hHLVu2rN7n7NChgwoKCpSXl6dvvvnmihc+X9KiRQv9/ve/1/vvv6/7779fmzdv1pEjR/TFF19oxowZzp8V87Of/UzHjh3TtGnTdODAAb3zzjtKT0/X9OnT5ePTsH+yhg4dqjvvvFMpKSnatGmTCgoK9Ne//lVZWVmSpJkzZ2r79u1KS0tTXl6eDh48qHfeeeeyC5TrExkZqRtuuEFZWVkqKSlRaWnpFY9t166dAgICnOv77rvv6plnnql1TPv27eVwOLR+/XqdOnVK5eXlDZ5Fknx9fbV//37t27fPeSE2gH8gdoDrQHBwsOLj4/X888/rzjvvVM+ePTVnzhxNnjxZv/3tb9W7d28999xz+s1vfqOePXtq1apVWrhwYb3PmZKSouTkZA0fPlytW7fWG2+88YNzjBkzRtu3b5e/v79+/OMfq2vXrnrooYdUWlrq/LZVmzZttGHDBn3++efq3bu3fvrTn2rSpEmaPXt2o97zW2+9pQEDBuihhx5S9+7dNWPGDOdZk169eunDDz/U119/rTvuuEN9+/bV3LlzFRsb2+Dn9/Pz04svvqiXX35ZsbGxGjNmzBWPbd26tTIzM7V27Vp1795dixYt0pIlS2od06ZNG82bN08///nPFRUV1ajwuiQ0NFShoaGNfhxgO4dp6FWDAAAA1yDO7AAAAKsROwDcYtWqVbW+yv39rUePHp4e75pz9OjRK65ncHCwW76yDlwv+BgLgFucO3dOJSUlde7z9/dX+/btm3mia9vFixd15MiRK+7v0KGD/Pz8mm8g4BpG7AAAAKvxMRYAALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAav8P+V6ffwkdGTAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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aBaNWrMDAADQWjTqys6gQYNOeLtq3bp1jS4IAAAgkBoVdo6t1zmmpqZGxcXF2rZtW70fCAUAAAimRoWdBQsWNNj+wAMPqKqqqkkFAQAABFJA1+z84he/4HexAABASAlo2CksLFR0dHQgDwkAANAkjbqNdd111/ntG2P0+eef691339X06dMDUhgAAEAgNCrsuFwuv/2wsDCde+65mj17tq644oqAFAYAABAIjQo7eXl5ga4DAACgWTQq7BxTVFSknTt3SpJ69eqlvn37BqQoAACAQGlU2Dl48KBGjhyp119/XfHx8ZIkj8ejQYMGadWqVTrjjDMCWSMAAECjNepprMmTJ+urr77S9u3bVV5ervLycm3btk1er1d33HFHoGsEAABotEZd2cnPz9drr72mnj17+trOO+885ebmskAZAACElEZd2amrq1NkZGS99sjISNXV1TW5KAAAgEBpVNi5/PLL9atf/UoHDhzwte3fv1933nmnBg8eHLDiAAAAmqpRYWfx4sXyer3q2rWrunXrpm7duik1NVVer1c5OTmBrhEAAKDRGrVmJyUlRZs3b9Zrr72mDz74QJLUs2dPZWRkBLQ4AACApjqlKzvr1q3TeeedJ6/XK4fDoZ/85CeaPHmyJk+erEsuuUS9evXS//3f/zVXrQAAAKfslMLOwoULlZWVpbi4uHp9LpdLt956q+bPnx+w4gAAAJrqlMLOe++9pyFDhhy3/4orrlBRUVGTiwIAAAiUUwo7ZWVlDT5yfkxERIS++OKLJhcFAAAQKKcUdjp37qxt27Ydt3/r1q1KSkpqclEAAACBckph58orr9T06dN1+PDhen1ff/21Zs6cqauvvjpgxQEAADTVKT16fv/99+v555/XOeeco0mTJuncc8+VJH3wwQfKzc1VbW2t7rvvvmYpFAAAoDFOKewkJibq7bff1i9/+UtlZ2fLGCNJcjgcyszMVG5urhITE5ulUAAAgMY45W9QPvPMM7V27Vp9+eWX2rhxozZs2KAvv/xSa9euVWpqasAL3L9/v37xi1+oQ4cOiomJUe/evfXuu+/6+o0xmjFjhpKSkhQTE6OMjAx99NFHAa8DAAC0To36uQhJat++vS655BL1799f7du3D2RNPhUVFbr00ksVGRmpv//979qxY4cee+wxv/ebN2+eFi1apKVLl2rjxo2KjY1VZmZm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i2D37t2rq666Sm3atFGnTp1099136+jRo35jXn/9dV100UVyOp06++yztWzZsnrHyc3NVdeuXRUdHa20tDS98847zXBGrVurmqOm/zpV63TmmWea2bNnm88//9y3VVVV+forKytNYmKiGT16tNm2bZt59tlnTUxMjHniiSd8Y9566y0THh5u5s2bZ3bs2GHuv/9+ExkZad5//33fmLlz5xqXy2VWr15t3nvvPXPttdea1NRU8/XXX7fo+YaKO+64wwwdOtRIMlu2bPG1M9+BM3/+fFNYWGj27Nlj3nrrLZOenm7S09N9/cx1YPz9738348aNMy+//LL55JNPzJo1a0ynTp3MXXfd5RvDXAfWjBkzzPz5883UqVONy+Wq13/06FFz/vnnm4yMDLNlyxazdu1a07FjR5Odne0b8+mnn5o2bdqYqVOnmh07dpicnBwTHh5u8vPzfWNWrVploqKizNNPP222b99usrKyTHx8vCkrK2uJ02wVWtscndZhZ8GCBcftf/zxx0379u1NdXW1r+2ee+4x5557rm//hhtuMFdddZXf69LS0sytt95qjDGmrq7OuN1u89vf/tbX7/F4jNPpNM8++2yAzqT1WLt2renRo4fZvn17vbDDfDefNWvWGIfDYY4cOWKMYa6b07x580xqaqpvn7luHnl5eQ2GnbVr15qwsDBTWlrqa1uyZImJi4vz/TeYNm2a6dWrl9/rfvazn5nMzEzffv/+/c3EiRN9+7W1tSY5OdnMmTMnwGfSerW2OTptb2NJ0ty5c9WhQwf17dtXv/3tb/0udRYWFupHP/qRoqKifG2ZmZnatWuXKioqfGMyMjL8jpmZmanCwkJJ0u7du1VaWuo3xuVyKS0tzTfmdFFWVqasrCz96U9/Ups2ber1M9/No7y8XCtWrNCAAQMUGRkpibluTpWVlUpISPDtM9ctq7CwUL179/b7QtnMzEx5vV5t377dN+ZE833kyBEVFRX5jQkLC1NGRgbz/W+tcY5O27Bzxx13aNWqVVq/fr1uvfVWPfzww5o2bZqvv7S0tN43MB/bLy0tPeGYb/d/+3UNjTkdGGM0btw43XbbberXr1+DY5jvwLrnnnsUGxurDh06aO/evVqzZo2vj7luHh9//LFycnJ06623+tqY65bVlPn2er36+uuv9eWXX6q2tpb5PoHWOEdWhZ177723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xp7wysupaujW1vFUVVVJkp566imlpaX59YWHh/vtR0ZG+v58LKQcuzX2fe/Zt29fXXjhhVq+fLmuuOIKbd++XS+99NJJ1wmg+bBAGUCrc8EFF6i4uFjl5eXfOzYxMVHJycn69NNPdfbZZ/ttqampp/Se3/c4+y233KJly5YpLy9PGRkZSklJOenjA2g+hB0Aza66ulqlpaV+25dfftno440aNUput1vDhw/XW2+9pU8//VR/+ctf6j09dcysWbM0Z84cLVq0SB9++KHef/995eXlaf78+Sf9ntnZ2dq0aZNuv/12bd26VR988IGWLFnidx4///nPtW/fPj311FO6+eabG31+AAKLsAOg2eXn5yspKclvu+yyyxp9vKioKL3yyivq1KmTrrzySvXu3Vtz586td1vqmFtuuUW///3vlZeXp969e+vHP/6xli1bdkpXds455xy98soreu+999S/f3+lp6drzZo1ioj4z2oAl8ulESNGqG3btho+fHijzw9AYDmMMSbYRQCALQYPHqxevXpp0aJFwS4FwL8RdgAgACoqKvT666/rpz/9qXbs2KFzzz032CUB+DeexgKAAOjbt68qKir0yCOPEHSAEMOVHQAAYDUWKAMAAKsRdgAAgNUIOwAAwGqEHQAAYDXCDgAAsBphBwAAWI2wAwAArEbYAQAAVvt/cExfeEA/TfQAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "for i, column in enumerate(df.columns, 1):\n", + " sns.histplot(df[column])\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Set targets/objectives = efficiency for now" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vscode/.local/lib/python3.10/site-packages/baybe/telemetry.py:222: UserWarning: WARNING: BayBE Telemetry endpoint https://public.telemetry.baybe.p.uptimize.merckgroup.com:4317 cannot be reached. Disabling telemetry. The exception encountered was: ConnectionError, HTTPConnectionPool(host='verkehrsnachrichten.merck.de', port=80): Max retries exceeded with url: / (Caused by NameResolutionError(\": Failed to resolve 'verkehrsnachrichten.merck.de' ([Errno -2] Name or service not known)\"))\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "from baybe.targets import NumericalTarget\n", + "from baybe.objective import Objective\n", + "\n", + "target = NumericalTarget(\n", + " name=\"Efficiency\",\n", + " mode=\"MAX\",\n", + ")\n", + "objective = Objective(mode=\"SINGLE\", targets=[target])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Search Space" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.parameters import NumericalContinuousParameter, CategoricalParameter, NumericalDiscreteParameter\n", + "from baybe.searchspace import SearchSpace\n", + "\n", + "basic_parameters=[\n", + "NumericalDiscreteParameter(\n", + " name=\"Time_h\",\n", + " values=df_combined[\"Time_h\"].unique(),\n", + " tolerance=5/60,\n", + "),\n", + "NumericalDiscreteParameter(\n", + " name=\"pH\",\n", + " values=df_combined[\"pH\"].unique(),\n", + " ), \n", + "NumericalDiscreteParameter(\n", + " name=\"Inhib_Concentrat_M\",\n", + " values=df_combined[\"Inhib_Concentrat_M\"].unique(),\n", + " ),\n", + "NumericalDiscreteParameter(\n", + " name=\"Salt_Concentrat_M\",\n", + " values=df_combined[\"Salt_Concentrat_M\"].unique(),\n", + " ),\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Substance parameter**\n", + "\n", + "Instead of values, this parameter accepts data in form of a dictionary. The items correspond to pairs of labels and SMILES. SMILES are string-based representations of molecular structures. Based on these, BayBE can assign each label a set of molecular descriptors as encoding." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'C(=O)(C(=O)[O-])[O-]': 'C(=O)(C(=O)[O-])[O-]', 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O': 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O', 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]': 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]', 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]': 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]', 'C1=CC(=C(C=C1O)O)C=NNC(=S)N': 'C1=CC(=C(C=C1O)O)C=NNC(=S)N', 'C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]': 'C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]', 'C1=CC(=CC(=C1)S)C(=O)O': 'C1=CC(=CC(=C1)S)C(=O)O', 'C1=CC2=NNN=C2C=C1Cl': 'C1=CC2=NNN=C2C=C1Cl', 'C1=CC=C(C(=C1)C=NNC(=S)N)O': 'C1=CC=C(C(=C1)C=NNC(=S)N)O', 'C1COCCN1CCCS(=O)(=O)O': 'C1COCCN1CCCS(=O)(=O)O', 'C1N2CN3CN1CN(C2)C3': 'C1N2CN3CN1CN(C2)C3', 'C=CC(=O)OCCOC(=O)OCCSc1ncccn1': 'C=CC(=O)OCCOC(=O)OCCSc1ncccn1', 'CC(=O)O': 'CC(=O)O', 'CC(=O)SSC(=O)C': 'CC(=O)SSC(=O)C', 'CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C': 'CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C', 'CCCCCCCC/C=C\\\\CCCCCCCC(=O)O': 'CCCCCCCC/C=C\\\\CCCCCCCC(=O)O', 'CCCCCCCCCCCCCCCCCC(=O)O': 'CCCCCCCCCCCCCCCCCC(=O)O', 'CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCCCCCCCCCOS(=O)(=O)O': 'CCCCCCCCCCCCOS(=O)(=O)O', 'CCCCCCCCCCCCc1ccccc1S([O])([O])O': 'CCCCCCCCCCCCc1ccccc1S([O])([O])O', 'CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O': 'CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O', 'CCCCOP(=O)(OCCCC)O': 'CCCCOP(=O)(OCCCC)O', 'CCN(C(=S)S)CC': 'CCN(C(=S)S)CC', 'CCOc1ccc2c(c1)nc([nH]2)S': 'CCOc1ccc2c(c1)nc([nH]2)S', 'CCSc1nnc(s1)N': 'CCSc1nnc(s1)N', 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C': 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C', 'CNCC(C1=CC(=CC=C1)O)O': 'CNCC(C1=CC(=CC=C1)O)O', 'COC(=O)CCCC1=CNC2=CC=CC=C21': 'COC(=O)CCCC1=CNC2=CC=CC=C21', 'COC(=O)n1nnc2ccccc12': 'COC(=O)n1nnc2ccccc12', 'COCCOC(=O)OCSc1nc2c(s1)cccc2': 'COCCOC(=O)OCSc1nc2c(s1)cccc2', 'COc1ccc2c(c1)[nH]c(=S)[nH]2': 'COc1ccc2c(c1)[nH]c(=S)[nH]2', 'COc1cccc(c1)c1n[nH]c(=S)[nH]1': 'COc1cccc(c1)c1n[nH]c(=S)[nH]1', 'CS[C]1N[N]C(=N1)N': 'CS[C]1N[N]C(=N1)N', 'CSc1[nH]c2c(n1)cc(c(c2)C)C': 'CSc1[nH]c2c(n1)cc(c(c2)C)C', 'CSc1nnc(s1)N': 'CSc1nnc(s1)N', 'Cc1cc(C)nc(n1)S': 'Cc1cc(C)nc(n1)S', 'Cc1ccc(c(c1)n1nc2c(n1)cccc2)O': 'Cc1ccc(c(c1)n1nc2c(n1)cccc2)O', 'Cc1ccc2c(c1)nc([nH]2)S': 'Cc1ccc2c(c1)nc([nH]2)S', 'Cc1n[nH]c(=S)s1': 'Cc1n[nH]c(=S)s1', 'Cc1nsc(c1)N': 'Cc1nsc(c1)N', 'ClC([C]1N[N]C=N1)(Cl)Cl': 'ClC([C]1N[N]C=N1)(Cl)Cl', 'Clc1cc2[nH]c(=S)[nH]c2cc1Cl': 'Clc1cc2[nH]c(=S)[nH]c2cc1Cl', 'Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O': 'Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O', 'Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1': 'Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1', 'Clc1ccc2c(c1)[nH]c(n2)S': 'Clc1ccc2c(c1)[nH]c(n2)S', 'Clc1cccc(c1)c1n[nH]c(=S)[nH]1': 'Clc1cccc(c1)c1n[nH]c(=S)[nH]1', 'Cn1cnnc1S': 'Cn1cnnc1S', 'Cn1nnnc1S': 'Cn1nnnc1S', 'N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]': 'N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]', 'NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O': 'NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O', 'NCC(=O)O': 'NCC(=O)O', 'NO': 'NO', 'Nc1cc(N)nc(n1)S': 'Nc1cc(N)nc(n1)S', 'Nc1cc(S)nc(n1)N': 'Nc1cc(S)nc(n1)N', 'Nc1ccc2c(c1)sc(=S)[nH]2': 'Nc1ccc2c(c1)sc(=S)[nH]2', 'Nc1ccnc(n1)S': 'Nc1ccnc(n1)S', 'Nc1n[nH]c(=S)s1': 'Nc1n[nH]c(=S)s1', 'Nc1n[nH]c(n1)S': 'Nc1n[nH]c(n1)S', 'Nc1n[nH]cn1': 'Nc1n[nH]cn1', 'Nc1nc([nH]n1)C(=O)O': 'Nc1nc([nH]n1)C(=O)O', 'Nc1ncncc1N': 'Nc1ncncc1N', 'Nn1c(NN)nnc1S': 'Nn1c(NN)nnc1S', 'Nn1c(S)nnc1c1ccccc1': 'Nn1c(S)nnc1c1ccccc1', 'Nn1cnnc1': 'Nn1cnnc1', 'O/N=C(/C(=N/O)/C)\\\\C': 'O/N=C(/C(=N/O)/C)\\\\C', 'O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1': 'O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1', 'O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]': 'O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]', 'OC(=O)/C=C/c1ccccc1': 'OC(=O)/C=C/c1ccccc1', 'OC(=O)CCCCC(=O)O': 'OC(=O)CCCCC(=O)O', 'OC(=O)CCCCCCCCCCCCCCC(=O)O': 'OC(=O)CCCCCCCCCCCCCCC(=O)O', 'OC(=O)CCS': 'OC(=O)CCS', 'OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O': 'OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O', 'OC(=O)CS': 'OC(=O)CS', 'OC(=O)Cn1nnnc1S': 'OC(=O)Cn1nnnc1S', 'OC(=O)c1ccc(=S)[nH]c1': 'OC(=O)c1ccc(=S)[nH]c1', 'OC(=O)c1ccc(cc1)N': 'OC(=O)c1ccc(cc1)N', 'OC(=O)c1ccc(cc1)S': 'OC(=O)c1ccc(cc1)S', 'OC(=O)c1ccc(cc1)c1ccccc1': 'OC(=O)c1ccc(cc1)c1ccccc1', 'OC(=O)c1ccccc1': 'OC(=O)c1ccccc1', 'OC(=O)c1ccccc1O': 'OC(=O)c1ccccc1O', 'OC(=O)c1ccccc1S': 'OC(=O)c1ccccc1S', 'OC(=O)c1ccccn1': 'OC(=O)c1ccccn1', 'OC(=O)c1cccnc1': 'OC(=O)c1cccnc1', 'OC(=O)c1cccnc1S': 'OC(=O)c1cccnc1S', 'OC(=O)c1ccncc1': 'OC(=O)c1ccncc1', 'OC(=O)c1n[nH]c(n1)N': 'OC(=O)c1n[nH]c(n1)N', 'OCC(CO)O': 'OCC(CO)O', 'OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O': 'OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O', 'OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O': 'OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O', 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O': 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O', 'O[C@H]1C(=O)OCC1(C)C': 'O[C@H]1C(=O)OCC1(C)C', 'Oc1ccc(cc1)C(=O)O': 'Oc1ccc(cc1)C(=O)O', 'Oc1ccc(cc1)S([O])([O])O': 'Oc1ccc(cc1)S([O])([O])O', 'Oc1cccc2c1nccc2': 'Oc1cccc2c1nccc2', 'Oc1ccccc1c1nnc([nH]1)S': 'Oc1ccccc1c1nnc([nH]1)S', 'On1nnc2c1cccc2': 'On1nnc2c1cccc2', 'S=c1[nH]c2c([nH]1)c(=O)n(cn2)C': 'S=c1[nH]c2c([nH]1)c(=O)n(cn2)C', 'S=c1[nH]c2c([nH]1)cncn2': 'S=c1[nH]c2c([nH]1)cncn2', 'S=c1[nH]c2c([nH]1)nccn2': 'S=c1[nH]c2c([nH]1)nccn2', 'S=c1[nH]nc([nH]1)c1cccnc1': 'S=c1[nH]nc([nH]1)c1cccnc1', 'S=c1[nH]nc([nH]1)c1ccco1': 'S=c1[nH]nc([nH]1)c1ccco1', 'S=c1[nH]nc([nH]1)c1ccncc1': 'S=c1[nH]nc([nH]1)c1ccncc1', 'S=c1sc2c([nH]1)cccc2': 'S=c1sc2c([nH]1)cccc2', 'SC#N': 'SC#N', 'S[C]1NC2=C[CH]C=NC2=N1': 'S[C]1NC2=C[CH]C=NC2=N1', 'Sc1n[nH]cn1': 'Sc1n[nH]cn1', 'Sc1nc(N)c(c(n1)S)N': 'Sc1nc(N)c(c(n1)S)N', 'Sc1nc(N)c2c(n1)[nH]nc2': 'Sc1nc(N)c2c(n1)[nH]nc2', 'Sc1nc2c([nH]1)cccc2': 'Sc1nc2c([nH]1)cccc2', 'Sc1ncc[nH]1': 'Sc1ncc[nH]1', 'Sc1ncccn1': 'Sc1ncccn1', 'Sc1nnc(s1)S': 'Sc1nnc(s1)S', '[Cl-].[Cl-].[Cl-].[Ce+3]': '[Cl-].[Cl-].[Cl-].[Ce+3]', '[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]': '[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]', '[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]': '[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]', '[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]': '[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]', '[O-]S(=O)[O-].[Na+].[Na+]': '[O-]S(=O)[O-].[Na+].[Na+]', 'c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]': 'c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]', 'c1ccc(nc1)c1ccccn1': 'c1ccc(nc1)c1ccccn1', 'c1ccc2c(c1)[nH]nn2': 'c1ccc2c(c1)[nH]nn2', 'c1ncn[nH]1': 'c1ncn[nH]1', 'C(C(CO)([N+](=O)[O-])Br)O': 'C(C(CO)([N+](=O)[O-])Br)O', 'C(CC=O)CC=O': 'C(CC=O)CC=O', 'C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O': 'C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O', 'C1=CC(=CN=C1)C=NNC(=S)N': 'C1=CC(=CN=C1)C=NNC(=S)N', 'C1=CC(=NC(=C1)N)N': 'C1=CC(=NC(=C1)N)N', 'C1=CC=C(C=C1)C(C2=CC=CC=C2)(C3=CC=CC=C3Cl)N4C=CN=C4': 'C1=CC=C(C=C1)C(C2=CC=CC=C2)(C3=CC=CC=C3Cl)N4C=CN=C4', 'C1=CC=NC(=C1)C=NNC(=S)N': 'C1=CC=NC(=C1)C=NNC(=S)N', 'C1=CN=C(C=N1)C(=O)N': 'C1=CN=C(C=N1)C(=O)N', 'C1=CN=C(N=C1)N': 'C1=CN=C(N=C1)N', 'C1=CN=CC=C1C=NNC(=S)N': 'C1=CN=CC=C1C=NNC(=S)N', 'C1CCC(=NO)CC1': 'C1CCC(=NO)CC1', 'C=CC1=C(N2C(C(C2=O)NC(=O)C(=NOCC(=O)O)C3=CSC(=N3)N)SC1)C(=O)O': 'C=CC1=C(N2C(C(C2=O)NC(=O)C(=NOCC(=O)O)C3=CSC(=N3)N)SC1)C(=O)O', 'CC(=NO)C': 'CC(=NO)C', 'CC(C)(C)NCC(COC1=CC=CC2=C1CC(C(C2)O)O)O': 'CC(C)(C)NCC(COC1=CC=CC2=C1CC(C(C2)O)O)O', 'CC(C)(C)NCC(COC1=NSN=C1N2CCOCC2)O': 'CC(C)(C)NCC(COC1=NSN=C1N2CCOCC2)O', 'CC(C)NCC(COC1=CC=C(C=C1)CC(=O)N)O': 'CC(C)NCC(COC1=CC=C(C=C1)CC(=O)N)O', 'CC(C)NCC(COC1=CC=CC2=CC=CC=C21)O': 'CC(C)NCC(COC1=CC=CC2=CC=CC=C21)O', 'CC(OC(=O)C)OC(=O)C1=C(CSC2N1C(=O)C2NC(=O)C(=NOC)C3=CC=CO3)COC(=O)N': 'CC(OC(=O)C)OC(=O)C1=C(CSC2N1C(=O)C2NC(=O)C(=NOC)C3=CC=CO3)COC(=O)N', 'CC1=CC=C(C=C1)[N]2N=NC=C2O': 'CC1=CC=C(C=C1)[N]2N=NC=C2O', 'CC1=CN=C(C=N1)C(=O)N': 'CC1=CN=C(C=N1)C(=O)N', 'CC1=NC(=CC=C1)C': 'CC1=NC(=CC=C1)C', 'CCC(=NO)C': 'CCC(=NO)C', 'CCOC(=O)C1=C(C)N=C(S)NC1C2=CC=C(C=C2)Cl': 'CCOC(=O)C1=C(C)N=C(S)NC1C2=CC=C(C=C2)Cl', 'CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O': 'CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O', 'COC(=O)C1=CC=C(C=C1)[N]2N=NC=C2O': 'COC(=O)C1=CC=C(C=C1)[N]2N=NC=C2O', 'COC1=NC=C(N=C1)C(=O)N': 'COC1=NC=C(N=C1)C(=O)N', 'NC(N)=S': 'NC(N)=S', 'NC1=CCNC(=S)N1': 'NC1=CCNC(=S)N1', 'OC1=C(C=CC=C1)C=NC2=CC=C(C=C2)N=NC3=C(C=CC=C3)N=CC4=C(C=CC=C4)O': 'OC1=C(C=CC=C1)C=NC2=CC=C(C=C2)N=NC3=C(C=CC=C3)N=CC4=C(C=CC=C4)O', 'OC1=CN=N[N]1C2=CC=C(C=C2)Cl': 'OC1=CN=N[N]1C2=CC=C(C=C2)Cl'}\n" + ] + } + ], + "source": [ + "#Create a dictionary of unique SMILES representations found in the dataframe\n", + "\n", + "unique_SMILES = df_combined[\"SMILES\"].unique()\n", + "\n", + "dic_SMILES = dict(zip(unique_SMILES, unique_SMILES))\n", + "\n", + "print(dic_SMILES)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.parameters import SubstanceParameter\n", + "\n", + "mordred_parameters = basic_parameters + [\n", + " SubstanceParameter(\n", + " name=\"SMILES\",\n", + " data=dic_SMILES,\n", + " encoding=\"MORDRED\",\n", + " )\n", + "]\n", + "\n", + "rdkit_parameters = basic_parameters + [\n", + " SubstanceParameter(\n", + " name=\"SMILES\",\n", + " data=dic_SMILES,\n", + " encoding=\"RDKIT\",\n", + " )\n", + "]\n", + "\n", + "morganfp_parameters = basic_parameters + [\n", + " SubstanceParameter(\n", + " name=\"SMILES\",\n", + " data=dic_SMILES,\n", + " encoding=\"MORGAN_FP\",\n", + " )\n", + "]\n", + "\n", + "ohe_parameters = basic_parameters + [\n", + " CategoricalParameter(\n", + " name=\"SMILES\",\n", + " values=unique_SMILES,\n", + " encoding=\"OHE\",\n", + " )\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C(=O)(C(=O)[O-])[O-]')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC(=C(C=C1O)O)C=NNC(=S)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC(=CC(=C1)S)C(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC2=NNN=C2C=C1Cl')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC=C(C(=C1)C=NNC(=S)N)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1COCCN1CCCS(=O)(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1N2CN3CN1CN(C2)C3')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C=CC(=O)OCCOC(=O)OCCSc1ncccn1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC(=O)SSC(=O)C')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C')\n", + "_______________________________________smiles_to_mordred_features - 0.3s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCCCCC/C=C\\\\CCCCCCCC(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCCCCCCCCCCCCCCC(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCCCCCCCCCOS(=O)(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCCCCCCCCCc1ccccc1S([O])([O])O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.5s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCCCOP(=O)(OCCCC)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCN(C(=S)S)CC')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCOc1ccc2c(c1)nc([nH]2)S')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCSc1nnc(s1)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CN1C=NC2=C1C(=O)N(C(=O)N2C)C')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CNCC(C1=CC(=CC=C1)O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('COC(=O)CCCC1=CNC2=CC=CC=C21')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('COC(=O)n1nnc2ccccc12')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('COCCOC(=O)OCSc1nc2c(s1)cccc2')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('COc1ccc2c(c1)[nH]c(=S)[nH]2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('COc1cccc(c1)c1n[nH]c(=S)[nH]1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CS[C]1N[N]C(=N1)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CSc1[nH]c2c(n1)cc(c(c2)C)C')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CSc1nnc(s1)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Cc1cc(C)nc(n1)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Cc1ccc(c(c1)n1nc2c(n1)cccc2)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Cc1ccc2c(c1)nc([nH]2)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Cc1n[nH]c(=S)s1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Cc1nsc(c1)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('ClC([C]1N[N]C=N1)(Cl)Cl')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Clc1cc2[nH]c(=S)[nH]c2cc1Cl')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Clc1ccc2c(c1)[nH]c(n2)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Clc1cccc(c1)c1n[nH]c(=S)[nH]1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Cn1cnnc1S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Cn1nnnc1S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('NCC(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('NO')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1cc(N)nc(n1)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1cc(S)nc(n1)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1ccc2c(c1)sc(=S)[nH]2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1ccnc(n1)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1n[nH]c(=S)s1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1n[nH]c(n1)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1n[nH]cn1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1nc([nH]n1)C(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nc1ncncc1N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nn1c(NN)nnc1S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nn1c(S)nnc1c1ccccc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Nn1cnnc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('O/N=C(/C(=N/O)/C)\\\\C')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)/C=C/c1ccccc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)CCCCC(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)CCCCCCCCCCCCCCC(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)CCS')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)CS')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)Cn1nnnc1S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccc(=S)[nH]c1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccc(cc1)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccc(cc1)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccc(cc1)c1ccccc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccccc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccccc1O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccccc1S')\n", + "_______________________________________smiles_to_mordred_features - 0.3s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccccn1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1cccnc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1cccnc1S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1ccncc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC(=O)c1n[nH]c(n1)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OCC(CO)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('O[C@H]1C(=O)OCC1(C)C')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Oc1ccc(cc1)C(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Oc1ccc(cc1)S([O])([O])O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Oc1cccc2c1nccc2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Oc1ccccc1c1nnc([nH]1)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('On1nnc2c1cccc2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('S=c1[nH]c2c([nH]1)c(=O)n(cn2)C')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('S=c1[nH]c2c([nH]1)cncn2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('S=c1[nH]c2c([nH]1)nccn2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('S=c1[nH]nc([nH]1)c1cccnc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('S=c1[nH]nc([nH]1)c1ccco1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('S=c1[nH]nc([nH]1)c1ccncc1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('S=c1sc2c([nH]1)cccc2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('SC#N')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('S[C]1NC2=C[CH]C=NC2=N1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Sc1n[nH]cn1')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Sc1nc(N)c(c(n1)S)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Sc1nc(N)c2c(n1)[nH]nc2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Sc1nc2c([nH]1)cccc2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Sc1ncc[nH]1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Sc1ncccn1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('Sc1nnc(s1)S')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('[Cl-].[Cl-].[Cl-].[Ce+3]')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('[O-]S(=O)[O-].[Na+].[Na+]')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('c1ccc(nc1)c1ccccn1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('c1ccc2c(c1)[nH]nn2')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('c1ncn[nH]1')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C(C(CO)([N+](=O)[O-])Br)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C(CC=O)CC=O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC(=CN=C1)C=NNC(=S)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC(=NC(=C1)N)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC=C(C=C1)C(C2=CC=CC=C2)(C3=CC=CC=C3Cl)N4C=CN=C4')\n", + "_______________________________________smiles_to_mordred_features - 0.4s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CC=NC(=C1)C=NNC(=S)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CN=C(C=N1)C(=O)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CN=C(N=C1)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1=CN=CC=C1C=NNC(=S)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C1CCC(=NO)CC1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('C=CC1=C(N2C(C(C2=O)NC(=O)C(=NOCC(=O)O)C3=CSC(=N3)N)SC1)C(=O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.3s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC(=NO)C')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC(C)(C)NCC(COC1=CC=CC2=C1CC(C(C2)O)O)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC(C)(C)NCC(COC1=NSN=C1N2CCOCC2)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC(C)NCC(COC1=CC=C(C=C1)CC(=O)N)O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC(C)NCC(COC1=CC=CC2=CC=CC=C21)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC(OC(=O)C)OC(=O)C1=C(CSC2N1C(=O)C2NC(=O)C(=NOC)C3=CC=CO3)COC(=O)N')\n", + "_______________________________________smiles_to_mordred_features - 0.5s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC1=CC=C(C=C1)[N]2N=NC=C2O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC1=CN=C(C=N1)C(=O)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CC1=NC(=CC=C1)C')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCC(=NO)C')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CCOC(=O)C1=C(C)N=C(S)NC1C2=CC=C(C=C2)Cl')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O')\n", + "_______________________________________smiles_to_mordred_features - 0.2s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('COC(=O)C1=CC=C(C=C1)[N]2N=NC=C2O')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('COC1=NC=C(N=C1)C(=O)N')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('NC(N)=S')\n", + "_______________________________________smiles_to_mordred_features - 0.0s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('NC1=CCNC(=S)N1')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC1=C(C=CC=C1)C=NC2=CC=C(C=C2)N=NC3=C(C=CC=C3)N=CC4=C(C=CC=C4)O')\n", + "_______________________________________smiles_to_mordred_features - 0.3s, 0.0min\n", + "________________________________________________________________________________\n", + "[Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features...\n", + "_smiles_to_mordred_features('OC1=CN=N[N]1C2=CC=C(C=C2)Cl')\n", + "_______________________________________smiles_to_mordred_features - 0.1s, 0.0min\n" + ] + } + ], + "source": [ + "searchspace_mordred = SearchSpace.from_dataframe(df.drop(\"Efficiency\", axis = 1), mordred_parameters)\n", + "searchspace_rdkit = SearchSpace.from_dataframe(df.drop(\"Efficiency\", axis = 1), rdkit_parameters)\n", + "searchspace_morganfp = SearchSpace.from_dataframe(df.drop(\"Efficiency\", axis = 1), morganfp_parameters)\n", + "searchspace_ohe = SearchSpace.from_dataframe(df.drop(\"Efficiency\", axis = 1), ohe_parameters)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Recommenders" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The **SequentialGreedyRecommender** is a powerful recommender that leverages BoTorch optimization functions to perform sequential Greedy optimization. It can be applied for discrete, continuous and hybrid sarch spaces. It is an implementation of the BoTorch optimization functions for discrete, continuous and mixed spaces. **It is important to note that this recommender performs a brute-force search when applied in hybrid search spaces, as it optimizes the continuous part of the space while exhaustively searching choices in the discrete subspace.** You can customize this behavior to only sample a certain percentage of the discrete subspace via the sample_percentage attribute and to choose different sampling strategies via the hybrid_sampler attribute. \n", + "\n", + "e.g.\n", + "strategy = TwoPhaseStrategy(recommender=SequentialGreedyRecommender(hybrid_sampler=\"Farthest\", sampling_percentage=0.3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For implementing fully customized surrogate models e.g. from sklearn or PyTorch, see:\n", + "https://emdgroup.github.io/baybe/examples/Custom_Surrogates/Custom_Surrogates.html\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.recommenders import (\n", + " SequentialGreedyRecommender,\n", + " FPSRecommender,\n", + " TwoPhaseMetaRecommender,\n", + ")\n", + "\n", + "recommender = TwoPhaseMetaRecommender(\n", + " initial_recommender=FPSRecommender(), # farthest point sampling\n", + " recommender=SequentialGreedyRecommender(), # Bayesian model-based optimization\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Campaign Strategy" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.strategies import TwoPhaseStrategy\n", + "from baybe import Campaign\n", + "\n", + "campaign_rdkit = Campaign(searchspace_rdkit, objective)\n", + "campaign_mordred = Campaign(searchspace_mordred, objective)\n", + "campaign_morganfp = Campaign(searchspace_morganfp, objective)\n", + "campaign_ohe = Campaign(searchspace_ohe, objective)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Start simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "scenarios = {\n", + " \"OHE\" : campaign_ohe,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/10 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.lineplot(\n", + " data=results,\n", + " x=\"Num_Experiments\",\n", + " y=\"Efficiency_CumBest\",\n", + " hue=\"Scenario\",\n", + " marker=\"x\",\n", + ")\n", + "\n", + "plt.xlim(0, N_DOE_ITERATIONS)\n", + "plt.ylim(0, 100)\n", + "\n", + "plt.savefig(\"Scenarios\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Evalute best results" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Index(['Scenario', 'Random_Seed', 'Iteration', 'Num_Experiments',\n", + " 'Efficiency_Measurements', 'Efficiency_IterBest', 'Efficiency_CumBest'],\n", + " dtype='object')\n" + ] + } + ], + "source": [ + "print(results.columns)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Use transfer learning on other metals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define the training function (i.e. the previously investigated larger data set) and the yet to be optimized data sets." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.parameters import TaskParameter\n", + "\n", + "taskparam = TaskParameter(\n", + " name=\"Al_alloys\",\n", + " values=[\"AA1000\", \"AA2024\"],\n", + " active_values=[\"AA2024\"],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "unique_SMILES_transfer = df_transfer[\"SMILES\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "from baybe.parameters import NumericalContinuousParameter, CategoricalParameter, NumericalDiscreteParameter\n", + "from baybe.searchspace import SearchSpace\n", + "\n", + "transfer_parameters=[\n", + "NumericalDiscreteParameter(\n", + " name=\"Time_h\",\n", + " values=df_combined[\"Time_h\"].unique(),\n", + " tolerance=5/60,\n", + "),\n", + "NumericalDiscreteParameter(\n", + " name=\"pH\",\n", + " values=df_combined[\"pH\"].unique(),\n", + " ), \n", + "NumericalDiscreteParameter(\n", + " name=\"Inhib_Concentrat_M\",\n", + " values=df_combined[\"Inhib_Concentrat_M\"].unique(),\n", + " ),\n", + "NumericalDiscreteParameter(\n", + " name=\"Salt_Concentrat_M\",\n", + " values=df_combined[\"Salt_Concentrat_M\"].unique(),\n", + " ),\n", + "CategoricalParameter(\n", + " name=\"SMILES\",\n", + " values=unique_SMILES,\n", + " encoding=\"OHE\",\n", + " )\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "searchspace_transfer = SearchSpace.from_dataframe(df_transfer.drop(\"Efficiency\", axis = 1), transfer_parameters)\n", + "\n", + "campaign_transfer = Campaign(searchspace_transfer, objective)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "df_features = df.drop(\"Efficiency\", axis = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/10 [00:00\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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Time_hpHInhib_Concentrat_MSalt_Concentrat_MEfficiency
count258.000000258.000000258.000000258.000000258.000000
mean167.6027136.6360470.0073860.11790728.268191
std220.4887882.1496130.0132020.166813265.800655
min0.5000000.0000000.0000100.000000-3813.000000
25%24.0000005.4000000.0010000.05000030.000000
50%24.0000007.0000000.0010000.10000055.000000
75%240.0000007.0000000.0045000.10000089.000000
max672.00000010.0000000.0440000.600000100.000000
\n", + "" + ], + "text/plain": [ + " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", + "count 258.000000 258.000000 258.000000 258.000000 \n", + "mean 167.602713 6.636047 0.007386 0.117907 \n", + "std 220.488788 2.149613 0.013202 0.166813 \n", + "min 0.500000 0.000000 0.000010 0.000000 \n", + "25% 24.000000 5.400000 0.001000 0.050000 \n", + "50% 24.000000 7.000000 0.001000 0.100000 \n", + "75% 240.000000 7.000000 0.004500 0.100000 \n", + "max 672.000000 10.000000 0.044000 0.600000 \n", + "\n", + " Efficiency \n", + "count 258.000000 \n", + "mean 28.268191 \n", + "std 265.800655 \n", + "min -3813.000000 \n", + "25% 30.000000 \n", + "50% 55.000000 \n", + "75% 89.000000 \n", + "max 100.000000 " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fraction_df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "No objects to concatenate", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[26], line 7\u001b[0m\n\u001b[1;32m 4\u001b[0m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFraction\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m fractions[i]\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# Concatenate the dataframes into a single dataframe\u001b[39;00m\n\u001b[0;32m----> 7\u001b[0m concatenated_df \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresults_transfer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mignore_index\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;66;03m# Print the concatenated dataframe\u001b[39;00m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(concatenated_df)\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:382\u001b[0m, in \u001b[0;36mconcat\u001b[0;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[0m\n\u001b[1;32m 379\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m copy \u001b[38;5;129;01mand\u001b[39;00m using_copy_on_write():\n\u001b[1;32m 380\u001b[0m copy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m--> 382\u001b[0m op \u001b[38;5;241m=\u001b[39m \u001b[43m_Concatenator\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 383\u001b[0m \u001b[43m \u001b[49m\u001b[43mobjs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 384\u001b[0m \u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 385\u001b[0m \u001b[43m \u001b[49m\u001b[43mignore_index\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mignore_index\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 386\u001b[0m \u001b[43m \u001b[49m\u001b[43mjoin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 387\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkeys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 388\u001b[0m \u001b[43m \u001b[49m\u001b[43mlevels\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlevels\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 389\u001b[0m \u001b[43m \u001b[49m\u001b[43mnames\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnames\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 390\u001b[0m \u001b[43m \u001b[49m\u001b[43mverify_integrity\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mverify_integrity\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 391\u001b[0m \u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 392\u001b[0m \u001b[43m \u001b[49m\u001b[43msort\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msort\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 393\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 395\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m op\u001b[38;5;241m.\u001b[39mget_result()\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:445\u001b[0m, in \u001b[0;36m_Concatenator.__init__\u001b[0;34m(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)\u001b[0m\n\u001b[1;32m 442\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverify_integrity \u001b[38;5;241m=\u001b[39m verify_integrity\n\u001b[1;32m 443\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcopy \u001b[38;5;241m=\u001b[39m copy\n\u001b[0;32m--> 445\u001b[0m objs, keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_clean_keys_and_objs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobjs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeys\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;66;03m# figure out what our result ndim is going to be\u001b[39;00m\n\u001b[1;32m 448\u001b[0m ndims \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_ndims(objs)\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:507\u001b[0m, in \u001b[0;36m_Concatenator._clean_keys_and_objs\u001b[0;34m(self, objs, keys)\u001b[0m\n\u001b[1;32m 504\u001b[0m objs_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(objs)\n\u001b[1;32m 506\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(objs_list) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 507\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo objects to concatenate\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 509\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keys \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 510\u001b[0m objs_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(com\u001b[38;5;241m.\u001b[39mnot_none(\u001b[38;5;241m*\u001b[39mobjs_list))\n", + "\u001b[0;31mValueError\u001b[0m: No objects to concatenate" + ] + } + ], + "source": [ + "# Add an additional column to each dataframe\n", + "fractions = (0.01, 0.2)\n", + "for i, df in enumerate(results_transfer):\n", + " df['Fraction'] = fractions[i]\n", + "\n", + "# Concatenate the dataframes into a single dataframe\n", + "concatenated_df = pd.concat(results_transfer, ignore_index=True)\n", + "\n", + "# Print the concatenated dataframe\n", + "print(concatenated_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (750597114.py, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn[27], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m results =\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "results = " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'result_fraction' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[28], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m ax \u001b[38;5;241m=\u001b[39m sns\u001b[38;5;241m.\u001b[39mlineplot(\n\u001b[0;32m----> 2\u001b[0m data\u001b[38;5;241m=\u001b[39m\u001b[43mresult_fraction\u001b[49m,\n\u001b[1;32m 3\u001b[0m marker\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mo\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 4\u001b[0m markersize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m10\u001b[39m,\n\u001b[1;32m 5\u001b[0m x\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNum_Experiments\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 6\u001b[0m y\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEfficiency_CumBest\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 7\u001b[0m )\n", + "\u001b[0;31mNameError\u001b[0m: name 'result_fraction' is not defined" + ] + } + ], + "source": [ + "ax = sns.lineplot(\n", + " data=result_fraction,\n", + " marker=\"o\",\n", + " markersize=10,\n", + " x=\"Num_Experiments\",\n", + " y=\"Efficiency_CumBest\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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AAAimcdreocMGaKtW7f6pIicnBydeuqpuvzyy93H+vTpI5vNptzcXPexnTt3at++fcrKyvLJ54ayameNqpxHnoPVijADAIhgHt8Fr7jiCk2aNEnbt29Xjx496k0AvvLKK5v0PjU1NcrJydHo0aNltR4rJzExUbfeeqsmT56sNm3aKCEhQXfddZeysrJYySSptOrYnKRW0YQZAEDk8vguOH78eEnSww8/XO9ccyYAr1ixQvv27dPYsWPrnZs7d67MZrOuvfbaOpvm4djkX7OJpdkAgMjmcZg5/llMnrrkkktkGEaD56Kjo7VgwQItWLDAJ58VTlzLsqNtFtks7AAMAIhc3AVDVO3df60W71aSAQAQyjzumWloeKm2GTNmePrWaALX7r/RVrOsZjIpACByeRxmlixZUuf7qqoq5eXlyWq1qlOnToSZFlZ7mMlipmcGABC5PA4zmzdvrnfM4XDolltu0dVXX+1VUTg51wTgKB4yCQCIcD4dn0hISNBDDz2k6dOn+/Jt0QDXnJkYG0NMAIDI5vM7YXFxsYqLi339tjiOa5+ZKCs9MwCAyObxMNP8+fPrfG8YhvLz8/Xqq69q+PDhXheGEyt1z5mhZwYAENk8DjNz586t873ZbFa7du00evRoTZ061evCcGK1l2YDABDJPA4zeXl5vqwDzeRemk2YAQBEuGaPUTidTm3btk1lZWX1zpWVlWnbtm0+2x0YjXMvzbYyzAQAiGzNvhO++uqrGjt2rOx2e71zNptNY8eO1RtvvOGT4tC4MoaZAACQ5EGYeemll3TffffJYql/E7VarZoyZYqef/55nxSHxjFnBgCAI5odZnbu3KkLLrig0fN9+/bVN99841VROLlS95wZhpkAAJGt2XfCkpISORyORs8fOnRIpaWlXhWFk3MtzWafGQBApGt2mMnMzNQXX3zR6PlVq1YpMzPTq6Jwcq5hprgojxekAQAQFpodZm644QZNmzZN27Ztq3du69atmjFjhm644QafFIfGuZZmx0fRMwMAiGzN/mf9pEmTtGzZMvXp00fZ2dnq2rWrJOk///mPVqxYof79+2vSpEk+LxR1uZZm0zMDAIh0zb4T2mw2ffTRR5o7d67eeOMNff755zIMQ126dNFjjz2miRMnymaztUStqIVhJgAAjvDoTmiz2TRlyhRNmTLlpG0XL16sK6+8UnFx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M5Wfn6+HHnpIF110kXbs2BEU15swA0SACRMmaMeOHXXGuOF7Z555prZs2aLi4mK98847Gj16tFauXBnossLO/v37dc899+jjjz9WdHR0oMuJCMOHD3d/3bNnT/Xr108dOnTQW2+9pZiYmABWdgTDTLWccsopslgs9WZgFxYWKiUlJUBVRQbX9eXa+96dd96pf/zjH/r000/rPEE+JSVFlZWVKioqqtOea+45u92uzp07q0+fPpo9e7Z69eqlp556imvtYxs3btTBgwd17rnnymq1ymq1auXKlZo/f76sVquSk5O53i0sKSlJXbp00e7du4Pi7zdhpha73a4+ffooNzfXfaympka5ubnKysoKYGXhLyMjQykpKXWuvcPh0Lp167j2HjIMQ3feeaeWLFmiTz75RBkZGXXO9+nTRzabrc4137lzp/bt28c195GamhpVVFRwrX1s6NCh2r59u7Zs2eJ+nXfeeRo1apT7a653yzp8+LD27Nmj1NTU4Pj77ZdpxiHkzTffNKKiooyXX37Z+Prrr41x48YZSUlJRkFBQaBLC3mHDh0yNm/ebGzevNmQZDz55JPG5s2bjb179xqGYRhz5swxkpKSjL///e/Gtm3bjBEjRhgZGRlGWVlZgCsPTbfffruRmJhofPbZZ0Z+fr77VVpa6m4zfvx4o3379sYnn3xifPnll0ZWVpaRlZUVwKpD1wMPPGCsXLnSyMvLM7Zt22Y88MADhslkMj766CPDMLjWLa32aibD4Hr72r333mt89tlnRl5enrF69WojOzvbOOWUU4yDBw8ahhH4602YacDTTz9ttG/f3rDb7cb5559vrF27NtAlhYVPP/3UkFTvNXr0aMMwjizPnj59upGcnGxERUUZQ4cONXbu3BnYokNYQ9dakpGTk+NuU1ZWZtxxxx1G69atjdjYWOPqq6828vPzA1d0CBs7dqzRoUMHw263G+3atTOGDh3qDjKGwbVuaceHGa63b1133XVGamqqYbfbjdNOO8247rrrjN27d7vPB/p689RsAAAQ0pgzAwAAQhphBgAAhDTCDAAACGmEGQAAENIIMwAAIKQRZgAAQEgjzAAAgJBGmAEAACGNMAMg4plMJi1dujTQZQDwEGEGCBO33HKLTCaT5syZU+f40qVLZTKZAlTVESaTqcHXm2++GdC6XPLz8zV8+PBAl6GXX35ZSUlJgS4DCDmEGSCMREdH6/HHH9cvv/wS6FLqycnJUX5+fp3XVVddFdCaKisrJUkpKSmKiooKaC0APEeYAcJIdna2UlJSNHv27AbPP/jggzrnnHPqHJs3b546duzo/v6WW27RVVddpVmzZik5OVlJSUl6+OGHVV1drT/84Q9q06aNTj/9dOXk5DSrtqSkJKWkpNR5RUdHS5LGjh2rnj17qqKiQtKRkNG7d2/dfPPNkqTvv//e3ZNz4YUXKjo6WmeffbZWrlxZ5zN27Nih4cOHKz4+XsnJybrpppv0448/us9ffPHFuvPOOzVx4kSdcsopGjZsmKS6w0yuz3rrrbd00UUXKSYmRn379tW3336rDRs26LzzzlN8fLyGDx+u//3vf3U+/8UXX1S3bt0UHR2trl276tlnn3Wfc73ve++9p8GDBys2Nla9evXSmjVrJEmfffaZxowZo+LiYnfP1YMPPihJevbZZ5WZmano6GglJyfrN7/5TbOuPRDuCDNAGLFYLJo1a5aefvpp/fe///X4fT755BMdOHBAn3/+uZ588knNnDlTv/71r9W6dWutW7dO48eP12233ebVZ9Q2f/58lZSU6IEHHpAk/fGPf1RRUZGeeeaZOu3+8Ic/6N5779XmzZuVlZWlK664Qj/99JMkqaioSEOGDFHv3r315Zdfavny5SosLNTvfve7Ou+xaNEi2e12rV69Ws8991yjNc2cOVPTpk3Tpk2bZLVadcMNN2jKlCl66qmn9O9//1u7d+/WjBkz3O1ff/11zZgxQ4899pi++eYbzZo1S9OnT9eiRYvqvO8f//hH3XfffdqyZYu6dOmikSNHqrq6WhdeeKHmzZunhIQEd8/Vfffdpy+//FJ33323Hn74Ye3cuVPLly/XwIEDvbreQNjx2/O5AbSo0aNHGyNGjDAMwzAuuOACY+zYsYZhGMaSJUsM13/qM2fONHr16lXn5+bOnWt06NChzvt06NDBcDqd7mNnnnmmcdFFF7m/r66uNuLi4ozFixc3qTZJRnR0tBEXF1fntXfvXnebL774wrDZbMb06dMNq9Vq/Pvf/3afy8vLMyQZc+bMcR+rqqoyTj/9dOPxxx83DMMwHnnkEeOSSy6p87n79+83JBk7d+40DMMwBg0aZPTu3bvB+pYsWVLns1588UX3+cWLFxuSjNzcXPex2bNnG2eeeab7+06dOhlvvPFGnfd95JFHjKysrEbf96uvvjIkGd98841hGIaRk5NjJCYm1nmPd99910hISDAcDke9ugEcYQ1YigLQYh5//HENGTJE9913n0c/3717d5nNxzpuk5OTdfbZZ7u/t1gsatu2rQ4ePNjk95w7d66ys7PrHEtLS3N/nZWVpfvuu0+PPPKI7r//fg0YMKDee2RlZbm/tlqtOu+88/TNN99IkrZu3apPP/1U8fHx9X5uz5496tKliySpT58+Taq3Z8+e7q+Tk5MlST169KhzzPXnLykp0Z49e3Trrbfq97//vbtNdXW1EhMTG33f1NRUSdLBgwfVtWvXBuv41a9+pQ4dOuiMM87QpZdeqksvvVRXX321YmNjm/TnACIBYQYIQwMHDtSwYcM0depU3XLLLe7jZrNZhmHUaVtVVVXv5202W53vTSZTg8dqamqaXFNKSoo6d+7c6PmamhqtXr1aFotFu3fvbvL7uhw+fFhXXHGFHn/88XrnXKFBkuLi4pr0frX/vK7VYMcfc/35Dx8+LEl64YUX1K9fvzrvY7FYTvq+J7qOrVq10qZNm/TZZ5/po48+0owZM/Tggw9qw4YNrHwCjmLODBCm5syZow8++MA9wVSS2rVrp4KCgjqBZsuWLQGorr4//elP+s9//qOVK1dq+fLlDU4wXrt2rfvr6upqbdy4Ud26dZMknXvuufrqq6/UsWNHde7cuc6rqQHGU8nJyUpLS9N3331X77MzMjKa/D52u11Op7PecavVquzsbD3xxBPatm2bvv/+e33yySe+/CMAIY2eGSBM9ejRQ6NGjdL8+fPdxy6++GL973//0xNPPKHf/OY3Wr58uZYtW6aEhIQWr6eoqEgFBQV1jrVq1UpxcXHavHmzZsyYoXfeeUf9+/fXk08+qXvuuUeDBg3SGWec4W6/YMECZWZmqlu3bpo7d65++eUXjR07VpI0YcIEvfDCCxo5cqSmTJmiNm3aaPfu3XrzzTf14osv1ush8bWHHnpId999txITE3XppZeqoqJCX375pX755RdNnjy5Se/RsWNHHT58WLm5uerVq5diY2P1ySef6LvvvtPAgQPVunVr/etf/1JNTY3OPPPMFv3zAKGEnhkgjD388MN1hjC6deumZ599VgsWLFCvXr20fv16j+fVNNeYMWOUmppa5/X000+rvLxcN954o2655RZdccUVkqRx48Zp8ODBuummm+r0VMyZM0dz5sxRr169tGrVKr3//vs65ZRTJB2Zf7N69Wo5nU5dcskl6tGjhyZOnKikpKQ6839ayv/93//pxRdfVE5Ojnr06KFBgwbp5ZdfblbPzIUXXqjx48fruuuuU7t27fTEE08oKSlJ7733noYMGaJu3brpueee0+LFi9W9e/cW/NMAocVkHD+ADgBB5vvvv1dGRoY2b95cb58cAKBnBgAAhDTCDACvzJo1S/Hx8Q2+guF5RwDCH8NMALzy888/6+eff27wXExMjE477TQ/VwQg0hBmAABASGOYCQAAhDTCDAAACGmEGQAAENIIMwAAIKQRZgAAQEgjzAAAgJBGmAEAACGNMAMAAELa/wc88abPtPc0wwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sns.lineplot(\n", + " data=result_transfer_learning,\n", + " marker=\"o\",\n", + " markersize=10,\n", + " x=\"Num_Experiments\",\n", + " y=\"Efficiency_CumBest\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/alex/Scenarios.png b/alex/Scenarios.png deleted file mode 100644 index b38ca2a..0000000 Binary files a/alex/Scenarios.png and /dev/null differ diff --git a/alex/alex-baybe-inhibitor.ipynb b/alex/alex-baybe-inhibitor.ipynb deleted file mode 100644 index 41ab0ed..0000000 --- a/alex/alex-baybe-inhibitor.ipynb +++ /dev/null @@ -1,3831 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Imports" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", - "count 515.000000 515.000000 515.000000 515.000000 \n", - "mean 157.151456 6.613592 0.006934 0.113476 \n", - "std 212.312862 2.270734 0.012923 0.159137 \n", - "min 0.500000 0.000000 0.000010 0.000000 \n", - "25% 24.000000 4.400000 0.001000 0.050000 \n", - "50% 24.000000 7.000000 0.001000 0.100000 \n", - "75% 240.000000 7.000000 0.003000 0.100000 \n", - "max 672.000000 10.000000 0.100000 0.600000 \n", - "\n", - " Efficiency \n", - "count 515.000000 \n", - "mean 18.439395 \n", - "std 313.671188 \n", - "min -4834.000000 \n", - "25% 25.625000 \n", - "50% 50.000000 \n", - "75% 85.475000 \n", - "max 100.000000 \n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "df_AA2024 = pd.read_excel('/data/averaged_filtered_AA2024.xlsx')\n", - "print(df_AA2024.describe())" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " SMILES Time_h pH Inhib_Concentrat_M \\\n", - "0 C(=O)(C(=O)[O-])[O-] 24.0 4.0 0.0010 \n", - "1 C(=O)(C(=O)[O-])[O-] 24.0 7.0 0.0005 \n", - "2 C(=O)(C(=O)[O-])[O-] 24.0 10.0 0.0010 \n", - "3 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 24.0 4.0 0.0010 \n", - "4 C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O 24.0 7.0 0.0005 \n", - "\n", - " Salt_Concentrat_M Efficiency \n", - "0 0.10 20.00 \n", - "1 0.05 12.35 \n", - "2 0.10 20.00 \n", - "3 0.10 30.00 \n", - "4 0.05 -23.95 \n" - ] - } - ], - "source": [ - "print(df_AA2024.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", - "count 333.000000 333.000000 3.330000e+02 333.000000 \n", - "mean 79.969970 0.440733 1.510580e-01 0.051051 \n", - "std 143.826377 1.913196 5.784776e-01 0.301263 \n", - "min 0.000000 -0.600000 1.000000e-07 0.000000 \n", - "25% 2.000000 -0.136721 2.000000e-04 0.000000 \n", - "50% 5.500000 0.000000 1.800000e-03 0.000000 \n", - "75% 96.000000 1.000000 4.279601e-03 0.000000 \n", - "max 720.000000 13.000000 3.280000e+00 2.000000 \n", - "\n", - " Efficiency \n", - "count 333.000000 \n", - "mean 60.781498 \n", - "std 22.139768 \n", - "min -49.170000 \n", - "25% 47.066667 \n", - "50% 66.000000 \n", - "75% 77.220000 \n", - "max 96.200000 \n" - ] - } - ], - "source": [ - "df_AA1000 = pd.read_excel('/workspaces/project-project-surface-science-syndicate/data/averaged_filtered_AA1000.xlsx')\n", - "print(df_AA1000.describe())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Construct dataframe to work with" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "df = df_AA2024\n", - "df_transfer = df_AA1000" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "df_combined = pd.concat([df, df_transfer], axis=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Time_hpHInhib_Concentrat_MSalt_Concentrat_MEfficiency
count848.000000848.0000008.480000e+02848.000000848.000000
mean126.8431604.1895806.352976e-020.08896235.066659
std192.0556763.6961833.690920e-010.227758245.617010
min0.000000-0.6000001.000000e-070.000000-4834.000000
25%6.0000000.0000005.000000e-040.00000035.000000
50%24.0000004.0000001.000000e-030.01000060.000000
75%144.0000007.0000004.200000e-030.10000080.507500
max720.00000013.0000003.280000e+002.000000100.000000
\n", - "
" - ], - "text/plain": [ - " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", - "count 848.000000 848.000000 8.480000e+02 848.000000 \n", - "mean 126.843160 4.189580 6.352976e-02 0.088962 \n", - "std 192.055676 3.696183 3.690920e-01 0.227758 \n", - "min 0.000000 -0.600000 1.000000e-07 0.000000 \n", - "25% 6.000000 0.000000 5.000000e-04 0.000000 \n", - "50% 24.000000 4.000000 1.000000e-03 0.010000 \n", - "75% 144.000000 7.000000 4.200000e-03 0.100000 \n", - "max 720.000000 13.000000 3.280000e+00 2.000000 \n", - "\n", - " Efficiency \n", - "count 848.000000 \n", - "mean 35.066659 \n", - "std 245.617010 \n", - "min -4834.000000 \n", - "25% 35.000000 \n", - "50% 60.000000 \n", - "75% 80.507500 \n", - "max 100.000000 " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_combined.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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7ZJLLrGLL77YmjVrZi6Xy26++Wbbtm2brV+/3iTZW2+9ZYMHD7bu3bs75SYkJFjXrl3t3HPPtfr161faVrfbbZGRkRYZGens+65du1pMTIxNnz7dMjMznW2SZMnJyfbwww9bUVGRDRw40DweT9B0l8tlTZo0sXvuuccKCwutadOm1qFDB+e5GjBggHXu3NkSEhKc9QX29cMPP2wDBgyw8847L6jMsLAwi46ODtq/VQ2BcsoP8fHxJsmaN28edGwdaEhOTq70nB7K0LRp00r7prohPDzcPB7PYa/raA7lj4tjNdTEfoiIiKjyeGAIHlwu1zF/fsuv+2BfIwwMR2M4lPeawGeqy+WyFi1a1Hrdj+ehNj/LIiIizO/3H/T8NfH+53K5zOv1mtfrrbI8j8djXq/3gGVERkYeUT06dOhgqamplp2dbTfffLP98MMPJsliY2MrzRseHm633367DRs2LKi9GGije71eCwsLs8svv9w6d+5skszn81lCQoJ5vV5zu93WrFkzu+222+zTTz81SXbppZfasGHD7NJLL7WwsDB78803TZK1bt3aIiIinDIrHh+Bz4KzzjrLNm/ebAMGDLDRo0ebJEtMTDSPx2NhYWHWrl07++abbyw/P99GjRrljI+KirLY2Fin7X/WWWfZO++8Y126dLH69etby5YtLSMjw8LCwszj8Vjv3r3t7LPPtnbt2llCQoJTh/r161ujRo2c9uq7775r3bt3d46ntm3b2uTJk53znccff9yio6PtiiuusPr165vP57OGDRva4MGD7aOPPrIHHnjAJNk333wTdC41dOhQk2R33HGHSbKZM2fa5s2b7a233jJp36nd9u3b7a677rIWLVqY3++31NRUO/PMM+3NN9+0a665xho3bmzh4eGWlJRk5513nv30009B5wPTpk2zW2+91dq2bWvr16+3mJgYW7VqVdA5W25ursXGxtr69eutoKDAJk+ebCeddJLFxMRYVFSUJScnW506dZzt6t69u5100kkWHh5ukqxdu3aWm5tb6VxwwIABNmbMmErjL7zwQnvooYeqXf+1117rbFdCQoLVq1fP4uPjzefzWbNmzezuu++2FStWONtVnYrnRfurV2Zmpo0ZM8bWr19vZWVlzvi9e/fa+PHjrXXr1ub3+y0+Pt7OPvts+/zzz6tdb/ll169ff8B6Vtz+gB49epgk+9e//hU0/4QJEywzM/OA66/Oli1b7OuvvzZJtnDhQmf8okWLLDEx0Xbs2HHYZZuZPf/889axY0eLiIiw6Oho6969u7377ruV5uvYsaO9+OKLlca3b9/e/vnPfzqP77vvPsvOzrb169dbYWFh0LxffPGF9e3b1+Lj453z5XHjxtnevXsPWM/q9kNV9ZJkubm5lp+fHzR+165ddu+991qzZs3M5/NZnTp1bODAgbZkyZIDrr+oqMjWr19vgwYNsvPPP7/a+fa3/d99950NHDjQUlJSzO/3W9OmTW3YsGG2dOnSA67/SO3Zs8fatm1baf8d7HZV5ZADrZUrV1q9evUsKyvL3njjDVu6dKktWbLExo0bZy1atDCzfS+YsWPH2tixY006+EArUHbTpk0tMTHRmjZtahMmTLDbb7/dwsPDLSIiwhISEiw6OtpefPFFi4iIsJycHPv666/t9NNPt5iYGOeDbtCgQTZy5Ehr3LixnXPOOeb3++3LL7+02NhYmzhxokmyOXPmmJnZXXfdZWFhYda5c2cLCwuza665xiZMmGB9+vSxG264wTIyMszr9ZrH47F7773XzjzzTBs+fLhFREQ4DY02bdqYx+OxRo0aWZMmTWzYsGEWHh7uhEsPPvig9enTxx588EFr0KCBRUZGWt26dS0+Pt4yMjIsLi7OkpOTLSkpyQYMGGCS7KGHHrIWLVrY22+/bT6fz/kAcLlcdtZZZ1nbtm0tPj7e6tata5IsKSnJ+XCPjY21+Ph4u+uuu8ztdlu9evXM5/NVCr+io6OdMFKSjR8/3jwej0VFRVl4eLjzAe33+83v95vb7Q4Kzco3vKKjoy08PNwyMjLswgsvrHSiGXgcHR0dtJzP5wv6G6hf+YbZO++8Y2Zm77zzTpUNyPLrqq4xeKgNu4phRm2dtDMwMDAwMDAcuyHwRVb54VBDtsP5QiTQVinfnpP2tZuqCpUq1i8Qrkiy7Oxsk6pvuwS+dK5Y50GDBllSUpJdccUVleqRlZVldevWDQrXoqKibOrUqU4dPB6PZWRk2KBBg6xJkyYmyfx+v7Vp08YiIyMtOzvbCZKmTZtm6enp1r59e6esefPm2VNPPWWSrE+fPibJxowZY3/+85+Dtsfv91taWppJspYtW1rdunUtPDzcmjVrZlOnTnX2/5///GdbvXq1paWlWePGjS05Odnat29vDRo0sDp16lirVq3M4/FYWlqahYeHOyGcx+Ox7Oxsq1+/vvXs2dPmzp1rixYtMq/Xa6effrrzJWKHDh2sUaNG1qJFCzv11FNNkj355JM2ceJEc7vdNnr0aHvooYcsJibGHnvsMfP7/Xbrrbeamdm9995r0r4vgd977z1bvny5LVy40O6//37r3r27TZgwwSRVCpKGDh1q4eHhzjEROCkMBFoXX3yxJScnW4MGDez555+3H3/80ZYuXWpXXHGFhYeH24QJE2zu3Lm2cuVKW7BggfXr18/S09Odk3lpX5Bz3333Wdu2bZ1zmNzcXOvRo4dTj9zcXIuLi3MeT58+3f7v//7P3nzzTYuOjrYGDRpYWFiYvf/++3bHHXeYy+Wy9PR0y83NNUn24IMPBu2PgPfee8/q1q1rJSUlzrjVq1eby+WykSNHVrv+Z555xubOnWv//ve/LTw83NLS0iw1NdVWrFhhr732mqWnp1vXrl3tz3/+836DooDAfthfvTIzM23ChAlBy5WVldnAgQMtPj7epk6dar/++qstWrTIrrnmGvN4PEFl7k9g/1en4vYH9OjRw8LDw61JkyZWXFzsjD9QoHXffffZ0KFD91unlStXBh1zZmZXX321XXfddftd7kBuvfVW8/v99re//c1++eUXy8vLc85hn3zyyaB5n3rqKevYsWPQuM8++8zi4uJs9+7dQdtT1f7797//bR6Px6655hpbuHChrVy50qZOnWoJCQk2cODAoGCyOlXth6rqVfEYMtsX6HTt2tUaNGhgr776qq1atcq++uoru+CCC5z3wIMxdOjQAwZaVW3/u+++az6fz/r162cff/yx/frrrzZ//ny79dZbnYtmDkePHj2qDKgr+uMf/2h9+/attP8CDrRdVTnkQKtv375Wv35927lzZ6VpFYOr2bNnm3TwgVag7N69ewet45FHHjG3223fffedDRs2zAYOHGjDhw+3gQMHWnFxsT344IPmdrudK4G++OILp8zi4mLbuXOnbdy40f7xj39YcnKy9enTx3w+n5mZffXVVybJRo4caZLs8ccfr7RNQ4cOtTPOOMP5kJD2XT3TqFEjk2TnnnuuJSUl2QUXXBC0H9LT061hw4bmdrstIyPDnnrqKcvOzrZ69eqZ2+22M844o9L27tixwwmXtm7daosXL3a+OapXr54lJydbo0aNrHHjxibJ/vjHPwY1Nm644QZbunSpzZ4920aOHGmdO3e2mJgY5xuauLg4i4uLs8zMTOvUqZNddtllThgpyUlMc3JyrGHDhnb//ffb6aef7jQe/H6/vfDCC0GNCo/HYykpKdaoUSOLjo62s88+2zp16lSpETVixAiLiYmxl156yaKiokyS1a9f3+Li4szlcpnP5zOv12vNmjULajy63W4z25fclv/WNDU11blKLrCu8o2sQDkH04gr31AN1C0uLq7aUKtVq1ZB2xeY72hf0VNV3RkYGBgYGBhCYzjcL8fKt38qlhF4XP6K+AkTJliHDh2qLCsqKsr69OlTKSSLiIhwrkbPyMgI+qLR7XZbamqqtWnTplIdXnzxRZNkPXv2tOHDh5sk50vmQPsyLi7OOnbsaKWlpc4Xy3fddZctWrTIKSchIcHM9p2ol2+X/fDDD07Yl5OT42znJ5984szz0ksvmbTvyrGmTZsGbet5551n9evXt0cffdTZ5kWLFjmBXc+ePe3ee++1jh07mtfrtalTp1r//v3N4/FY3bp17eabb3bOC8444wznVwAtWrSwoUOHWosWLaxt27Z23333WXJysvMl+KhRo5ztCQQPgW2fN2+e1a9f38LCwqy0tLTKc6pAoPXll1/aH/7wB4uLi7OEhARLT0+3nj17OoFhxUCrRYsW5vV6be3atUFl5ubm2qmnnuoEMnv27LFbb73V+UVBmzZtnHO38oFWdna2PfXUUwcMtMz2hTnZ2dnWoUMHKy0ttYSEBHv00UfN6/XaqFGjbOvWrc46fvjhB+dXMLGxsXbeeefZypUrnfZ+4Jc/ZmZ/+9vfrE6dOnbfffcdcP1ZWVnWsWNHW7hwoUmy5cuXm9m+K4lcLpedeeaZhxVoVVWvqgKtV155xSTZ9OnTK5XZv39/q1OnTpXn0RUdSaB15ZVXWp06dWzSpEnO+KMRaO3du9fi4uLsvffe2+9y+zNv3jyTZBMnTqw0bdSoUeb1em3NmjXOuNWrVwc9r2bm5AIVt6fi/tu5c6fVqVPH+vfvX2ld06dPN0n2yiuvHLDOVQVaVdWr4jFkZvbXv/7VXC6XLVq0KGh8aWmpdezY0bKysg4qVDucQKuwsDAos6iofGbzww8/2Nlnn21RUVGWkpJil112mW3atKna9R1MoPX+++9by5Yt7ccff6y0/wIOJ9A6pHto/f7775oxY4aGDx+uqKioStMP5feh2dnZio6ODho++OADbdy4UR999JGioqKcdbz00kvq1auX2rVrp6+//lodO3bUZ599po4dO8rr9er1119Xjx49tHr1ajVt2lRdu3Z11uP1ehUVFaXk5GR988036tChgxYsWKCGDRs6ZUdHR2v16tWSpLvvvjuoTg0aNNBLL72kuXPnyuPx6M0335Tf79fy5cvVunVrSVK3bt20efNm3XHHHUH7we12a8OGDTrjjDO0Zs0aNWnSRD/++KM2b96s5ORkzZkzR1deeaU+/vhjZ59GR0crLCxM0r77CbVv316FhYXavXu31q1bp82bN2vdunX69ddf5XK59MknnzjzR0dH64knnlDz5s11+umna/z48crJyVFmZqZ27typmJgYRUdH68Ybb9Rvv/2mBQsW6J///KduvfVWLV26VJK0ePFiSfvu5bRq1SotXLhQn376qZKSkuT3+9WmTRtdd911zvZJ0t69e7V161atXLlSRUVFOu+88/Tdd9/JzCRJYWFhcrvdzr2wLrnkEiUkJEjadw+J7du3KycnR40bN1ZSUpL27NmjzMxM5/l3uVyKjo5WZGSkioqKnOc2Pz9fw4cPlyRnXXv37nWmX3LJJWrevHmlY++hhx5y/o+JiZEk5zfPERERzu/jo6KiFBkZWeXx+/PPPzvrdLvdzu+1D+beZi6X64DzVCdw3wAAABB6Am2HQ1W+/VOxjMDjDRs2OOPGjRunhQsXVllWYWGhPvzwQxUUFASN3717t5YtWyYz05o1a1RcXOxMc7vd2rp1q77//nu53e6gOlx++eWSpM8//1x///vfJe1rr5SWlurMM8+UJG3fvl1xcXGKjY3V6NGjJUkPP/xw0D2Ctm7dqujoaF1//fUqKytz2pnTp0932nc33nij02afPXu2JCkyMlJff/21UlNT1alTJy1fvty5F+bYsWMVHR2t/Px8uVwup12Xnp6uwsJCJScnKz09XS6XSyNHjlRJSYmmT5+uW2+9VXv37g3a75LUrl07zZo1S5LUtGnTSvs2OTlZJSUl2rt3r2677bZK06+77jpFR0dr4sSJWrt2rXw+n7Od5ZU/p7r88ssVExOjzz77TF988YU8Ho++/vprjRw5UtK+9nB5K1eu1EknnaR69epVKjcsLEwej0eSdNNNN+nzzz/X6aefrvT0dF188cU6++yzg+YvLS1VXl6eOnbsGDT+4Ycf1nXXXaft27cHnTdFRkbqxx9/1JIlSzR58mQVFhZq8+bNKikp0W233Ra0XQMHDlROTo4iIiJ0/vnnKzo62ll/Tk6OPvvsM2fezz77THXq1Km0PRUtWrRIeXl5uvHGG/XCCy+oUaNGSk9PlyS1bdtWvXr1qnRP3oPl8/kq1asqL7/8spo3b17lfXBvvfVWbdmyRR9//PFh1eFgxcbG6u6779aYMWOqvB9ZTfn++++1ffv2SsfH9ddfX+k8v+IQ8K9//UvR0dHO+WV5t956q0pKSvTmm2864zIyMpSamlrp+KhYh6p89NFH2rJlS5WvzX79+ql58+b617/+dVDbXlFV9arKyy+/rLPOOktt27YNGu92uzVy5Ejl5eU55+M17cMPPwzKLCoKvD63bdumnj17ql27dvr22281Y8YM5efna9CgQYe97vz8fF1zzTX6xz/+Ue359eE6pEBr+fLlMjO1bNnyiFf8/vvva9GiRc7wwgsvSJJzU7vbb7/dmfeXX35x1rl69WrVq1fP+RuYnpycLElq0aJFtesMLLNt2zalpaU5yzZu3Fg7d+5UixYtguoUGPr166emTZuqQYMGzs1Zpf+GIIEPu4r7paysTHv27HHe0AIfgMXFxfJ4PDIzxcTEVLtPb7zxRpWVlTk35PZ4PMrKytKSJUvkcrnUpEkTLVu2zAlRGjduLK/XG1TGhg0blJCQoN27d2vz5s0aPny4fD6fmjdvro4dO6p///6aOXOmZs6c6SwzbNgwJ3BauHChysrK1Lp1axUUFOj888/XoEGD5PP5nCBNkk4++WRJ+z4cO3fuHBTsBLbh22+/dRokgUbX1q1bJUlxcXF6+OGHtWHDBv3nP//Rqaee6rwBl5WVadGiRUpJSXHKzMjI0MyZM/X0009L2nczQum/z39ERIRWr17tbEd55Rsgu3btCpq2e/du5/nNz8+vFCAFGnCBv5GRkU5jrKoGSVUOtzF7LJS/GToAADj6Drb9cCDlw5dGjRrtt00c+KIyoGL7UZISExOd/8eOHasff/xRbdq0cdp8gZOfQHtw4sSJTujgcrkUExMT1B686667nLZ1XFycoqOjNXPmTPXu3VuS1LVrVy1atEgPPPCAXC6Xs1+WL1/uhDCBOkdGRmrlypWSpPr162vZsmWqV6+eNm/e7Gy/tC+4ys3NVWlpqZYvX67ff//dKbOkpESpqalO/Vq1aiVJWrFihfN/oN06efJkRUdHa/z48dq1a5fi4uKcOpXn9Xrl8/nk8/lUt27dStN9Pp8aN26sn376KWjf7U9ZWZmeffZZnXTSSWrVqpW6deum3bt3O1/KBtrCAcXFxUpKStpvmQ899JCeffZZffXVV/r+++81e/Zs3XnnnTr11FMrlWVmlcKx66+/XmPGjFFMTEzQOdPNN9/sLHf33XfrrbfeUkFBgeLi4irtj7KyMk2bNk3NmjXT5s2blZubqzVr1mjOnDnOuV7A6tWrD+ok+KmnnpIkXXXVVfrggw/08ccfy+fzOdNbtWqlLVu2HLCc6lSsV1WWLVvmHD8VBcYvW7bssOtwsG688UaFh4dr/PjxR20dq1evVlhYWNA5miSNGTOmynPq8kPAsmXL1KRJk6DnKaBevXqKjY2ttL+qOj6qCnArCpRT3fPTsmXLI3pujvfj45dffpFUObOo6KmnnlK7du308MMPq2XLlmrXrp2mTZum2bNnH1bdzExXXHGFrr/++oMKHg9V5XfiA1SmpmRmZgY9Dry5BD4Iy6fw5de7e/duhYeHO38PpV6BZUpLSyst63a75ff7q/y2JTY2VmFhYYqMjFS3bt00derUoGWrW39gfCCF/sc//lHtPFUpKCiQmamsrEyZmZkqKytTRESEmjZtKq/XqxUrVlTZCFqzZo2ysrIkSXv27JH03yuHxowZo9LSUtWpU0epqalKT093vj0LeOSRR3T55Zere/fuat26tfPhIu1rQGzatEktW7bUhAkTnGUDL5CysjLnA7b8Nrrdbp188slO7z5ViY+Pl5kpOTlZxcXFQT1F5OTkBH3D8J///EcbNmxwGls5OTn6xz/+4TTIfD6fdu3aVeWb4xVXXOH837dvX7333ntyuVzOc3HKKado3rx5CgsLc/Z/dYqKipyeMsPDw7Vr1y6lp6frt99+q3aZA/F4PEFXmlXF7Xbvt17SvkbSofSGKf33eDmQwyn7aDmYfQEAwLHk9/srXd1TnaPxGTZ//nyVlJRUO33z5s1BV4xXdfV4IPyR9v2C4f7779fu3budtlagV7dA/Z944gllZGRow4YNMjPt2LFDzz33nFPGueeeK7fbrWeeecbZP2eeeab++c9/SpIaNGigpk2bOr1sHup+iYiIcK5W+vnnnyVJF154oTP9888/d/7v0aOH9u7dqyVLljhX7ASu4P/pp580b948Sfva4pMnT1ZsbKzMTF6vVyUlJdq5c+dBtYOuv/565ebmqri4WNHR0dq5c2fQ9MD4gLy8PGVkZATNs3r16qC2dVFRkUpLS7VmzRpJ+65gi4yMDDqnCPSkHPjiNjw8XGamkpISRUdHO+3MsLAwLV++XM2bN1d4eHjQVXnbt28POgEuLS11lpekkpISud3uoHOnk046SdK+c54lS5Zo6NChlc4zAn799VfFxMRo9+7d+vHHH5WYmKg9e/ZoxYoVioiI0E8//eSsa9euXXK5XPrxxx/12GOPSdoXNlYMFU899VRNmzZNU6dO1fTp0zVo0CB98cUXVX5h+9lnn6lv377O42eeeUaXXnpplXUNiIiIqPRleFUO9ty0b9++zhU9mZmZ+vHHHw9quYPh9/s1ZswYjRgxQjfccEOl6RW3PxBevvHGG864A+2T3bt3O70gl5eSklIp5NqfQ80YKj4P5XOBmlrfSy+9FHTV2AcffKDTTjvtkOp1JOuX9v2iLRCQnXbaafrggw8OarkjXe/ixYs1e/bsoPemgBUrVqh58+Z6+OGHg3q23L17t+bPn6+bbrrJGRd4P3vyySe1Y8cO5+rcmnZIXwkFumgOfEgciYo/OQy82d1zzz2SpDvvvNOZt3nz5s46k5KStHXrVudvYPqmTZskyfnpXFUCy4SHhwct++uvvyoyMlLff/99lZdEvvTSS1q6dKnWrVunTp06OR/kgW9VAi+givslMD0QOgU+JHw+n/bu3SuXy+V0eV/VPg0k6nv37tWQIUNUVlam7777zvkgMrOgN/Jff/1VJSUlqlevnpN+n3POOWrdurViY2Ml7bsE/frrr1d+fr4+++wzPfHEE04XmQF16tTRGWecIem/V1AFEuOXXnpJH330kZYsWaLzzjvPWSYw35NPPqm8vLyg7QiERf3791dpaak++ugj51uawLd769atU79+/dSwYUNt3rxZb731VtA3fxVfgGVlZbrssst00UUXSZL+9Kc/SZLTKAlcRl4+oAk8D4Eu6qX/Xq4eCMZcLpezT6OioiqFcxW/SSsrK9P27dsl/fdqr0BX1IfrQGFWYL0HcjQDp6q+lawthFkAgONNVbfmONrKf8mZkZGhiIiI/d7moHzbqnyQUZWysjKVlJSorKysUlAXKOfnn3/W999/HzTt/PPPd/7PycmRmem6667Txo0btX37drlcLj3//POSpNdeey3oJ4eBcps2beq0jQLtul27djlXYf3nP/9R8+bN9fvvvzshXuDKqwceeEAzZ85Uamqq+vfv77T3PvvsM4WHhysuLk69e/fWkCFDdO+990qS2rdvr4iICEn7fkFwySWXaMaMGVq8eLFuvvlmxcXFqbS0VOvWrau0n0pKSlRcXKzi4mKtW7dOY8aMCbqSqbi4OOgKsLCwsKCrVqq6yqR169aVfjly5plnOu3wzp07q2vXrs55g9frVcuWLbVgwQLnVxjffPONxowZo44dO2rRokV65JFH5Ha79cUXX+j777+X3+/XQw895Fw5Ju27LUdgH7/99ttBywdO9Pfs2RN0zjRs2DBJ0tVXX60bbrhBbdu21erVq7V9+/ZK+ysnJ0dff/21/H6/LrvsMi1atEjLli3TJZdcot9//11t2rRxtjknJ0fNmjXT9ddf74x74IEHKrXLA7+aiIyM1BtvvKGff/5Zb731ljP9p59+ci6aCGxLYCh/XlOd33//3flVUHWaN28etB/LC4wP3BLl2Wefddb//vvvH3D9h+qyyy5TZmZm0O1WAipu//XXX6/zzjvvkPZJUlKSdu3aVen941B+chg4F6/qPWjdunUqKCiodAuZis9D+VxgfwLl7O/5CcxTcV8czJVFNX18lP9F27PPPnvA9R9IoNwDZTk7d+5Uv379Kl1V98svv6h79+6SFPRaDOyfilfmBd7PPvnkE82bN09+v18ej8cJwTt27KihQ4ce8XYdUqCVmJioPn36aNKkSVX+HjfwTc3BqPiTw0WLFum0005TYmKiunXrpoKCAmcdl1xyiWbOnKmFCxeqdevWysvLU7t27ZSXl6eSkhINHDhQc+fOVWZmppYvX64vv/zSWU9JSYkKCwu1adMmZWdnKy8vTw0bNnQuU77kkku0c+dOZ4ffcsstQXX69NNP1a9fP+Xk5Gjbtm1q0qSJ82H51VdfSZK++OILJSUl6dFHHw3aD2VlZUpLS9P69esVGxurAQMGyOVyKTk5WZs2bVKPHj2Um5urXr16Ofu0/Dc+999/v1wulxo1aqTBgwcrNTVV9evX16JFizRq1ChJwZeX79y5U5MnT5aZqW7dusrMzNQpp5yi33//XXFxcZL2fduSmJioFi1aVPuTw/Hjx+uzzz4L+i174BuavLw89e/fX+Hh4frss8/k8/nk9Xqd8Ck9PV35+fnOTzql/95jKiUlRT6fT3feeacaNGggad/P+iIjI7Vs2TL99a9/1Z49e+R2u7V3715169ZN0r4P+8WLFzu/gQ948MEHncusL774Yklyrkzbu3ev2rVr5zzPgeejQYMGQYFb4BgLfAtpZs43JcXFxZW+3azqvhWBRk918+xPTf3M4Fg72G+dAQD4X3QobeIj+ZKoVatWzs/wyrc/CgsL1bZt2yoDrbi4OKe9VF75n4S53e6gNkrdunU1atQohYeHy+1266yzznKmBdbRsWNHPfPMM872hIWF6YcffpAkJSQkaNeuXVq4cKFz76c+ffpoypQpTjmBNm4gqAhsT79+/Zzg4plnnnGuYAp8+bp792717t1bK1as0NatW+V2u50rtdq0aaMzzzxT4eHhiomJcb589Hq9io6O1vbt27V37141atRI7777riIjI3X22WfrqaeeksfjUWRkpOLj49WxY0c1bdpUGzZscH5yuXHjxkr7cOPGjfJ6vfJ4PBo3bpxSUlKUmprqXMk0ZcoUFRYW6o9//KPq1aun4uJiNW7cWE2bNlXTpk2dfVf++Fm1apVSUlKceWJjYxUdHe18WT1q1CjNnj1bq1atkrTv55bLli1TbGyszjzzTJ155plq3bq10w5v2LCh+vbtq7KyMhUXF6tJkybOc1T+aiu3262YmBjFxsaqsLBQKSkpzi9FAvdnqviTw++//15NmzZVs2bNlJaWprKyMtWvX19er1fjxo0L2q4VK1bovffe0+7du3XDDTc42xcXF6clS5aoc+fOzriuXbtq165dSkxMdMYFruQrLycnx/kVSWlpqczMabMuXrxYM2fOdO6BHNiWwFDxS+yqLFmyRO3atdvvPIMHD9Yvv/yid999t9K0cePGqU6dOs7rp379+s76K/56qSa43W6NHTtWTz/9tHN8BFTc/sTERMXExBzSPgkEiBUvZjiUnxwOHjxYO3fu1DPPPFOp/Mcee0xer1cDBgxwxgWu4iv/PARygQPp3bu3EhMTNW7cuErTpk+frl9++cU5p6y4Lyqe71VUVb2qMnjwYM2cObPSfbLKyso0YcIEZWVlOffXyszMdNZfv379A27fgfTu3Tsos6go8Pps3769fvzxRzVs2DBoHzRt2tT5sqb8azGwf8q/T5V/P5s4caIWL15cKbx99dVX9Ze//OWIt+uQezlcsWKFpaWlWVZWlr3xxhu2bNkyy8vLsyeeeMJatmxpZmbr16+3hQsXOt34fvrpp7Zw4ULbsmXLQZXdtGlTi4+Pt6ZNm9rjjz9uf/rTn8zv91tkZKTFxMRYq1at7N5777VGjRpZ+/bt7auvvrLTTjvN6VHF7XbboEGD7Pbbb7emTZvaeeedZ36/31577TXzeDx2yy23mCT7/fffzczsjjvusLCwMDv55JMtLCzMrrvuOps4caL17dvXbrzxRsvMzLTWrVtbcnKyvf3225acnBzUc0xYWJi1bNnSJFm9evWsadOmdu2111p4eLilp6dbgwYNrH///nbLLbdYVFSUhYWFWUREhKWlpVlcXJwlJSWZ2+22lJQUS0pKskGDBpkkGzt2rEVFRVlcXJzl5OTYySef7PRmsWfPHuvSpUtQr37dunUzt9ttderUsRtvvNGys7Pt9ttvN2lfb4Iul8vq1q1rV111lTVv3tw6dOhgl1xyiS1cuNDpYULa1131lClT7IwzzrBhw4Y5y4aHh1vdunWdbpKTkpIsMjLSwsLCzOVymcvlsu7du9s555xjnTt3dnqkCQy33367hYeHm9vtrrKXn0BPOIEhOjra+X/Tpk1Ol82B9UVFRdlDDz3k9J4TmBYop3z31VX1SFhxSElJCXrctm3bSj0AHajb7PJDVd1+H8xwOD0gBbbpULsVZ2BgYGBgYNg3HG4PhMdiqK7tEuiJsGLdU1JSgtpRFYeIiIhK484//3yT9vVe3bVr10rTA70LhoWFBdWnfNujRYsWlpOTY9nZ2da+fXunvHPOOcciIiKsdevW5vF4LCwszB544AGnnRwo9/fff7fc3FxzuVzWsWNHk2QPPvig0xt5YDt9Pp/VrVvXJFlWVpbTq3jjxo2tfv36Tn1uuukme/XVVy0yMtIyMjIsOTnZcnJyLD093ZKSkqxFixbm8XgsLS3NIiIizOv1Wr9+/czj8Vh2dralpqZa165d7dtvv7XVq1dbWlqa5eTkmNvtNrfbbR07drRGjRpZy5Yt7bTTTjNJNnDgQGvWrJm53W6766677OGHH7aYmBgbN26c+f1+u/XWW83M7J577jFJ1rVrV/u///s/mzx5smVmZtpDDz1k3bt3d3o5bNSokZ1++uk2ZcoUa9SokfXo0cMaNWpkX375pUn7egobMmSIhYeHmyQbPHiw1alTxxo0aGAvvPCC/fjjj7Zs2TK78sorzefz2T333GPffvutXXDBBZaWlmYdO3a0+Ph4++CDD+zhhx82KbiXw/79+9utt95ql156qcXHxzvnbRV72bvzzjtt7ty59tZbb1lUVJTzPLzwwgt2++23m8vlsvT0dKe39Dp16pjL5bKLLrrIfv31V5s9e7aNGDHCvvzyS3O5XLZq1Sqn7OnTp1t4eLjdc889Va5/xYoV9vDDD9u3335rb775pvn9fktLS7PY2FhbsGCBvfbaa5aenm5du3a1u++++7B6OVy5cmWlelXVy2FZWZldeOGFlpCQYM8++6ytXLnSFi9ebNdee615PJ5Kvd5Vp2IvdU8++aT17Nmzyu0vr0ePHkE9c5qZnXbaaRYeHl7jvRyambVv396efPLJ/S53IDfffLP5/X577LHHbPny5fbTTz/Z3XffbW63u1Lvh7Nnz7bo6GgrLCx0xk2cONE6dOhQaXuqep5ff/11CwsLs2uuucYWL15sK1eutGeffdYSEhJs4MCBB9XDYFX7oap6VTyGzMx2795tnTt3tvT0dHvttdds9erV9vXXX9sFF1xgUVFRNm/evAOu36xyb4B33nmnDRky5IDb//bbbzvvcx9//LGtXLnSvvnmG7v99tvtoosuMjOztWvXWnJysg0cONC+/vprW758uc2YMcOuuOIK27t3b5X1OZheDgOq2n/VbdfBOORAy8xs3bp1Nnz4cMvMzDSfz2f169e38847z2bPnm1m+3ZgVR+eB7ORgbLr169vbrfbCajq1KljrVq1cj5MY2NjzeVy2dixY62kpMT27NljY8eOdbobLt84SUhIsD/96U9WUlJiJ598so0bN85cLpfdf//9znpfffVV6969uxO4uN1u8/l8lp2dbTk5OXbOOefYHXfcYYMHD7Y77rjDzj33XCdMSk5ODlpnoN5hYWHWtm1bCw8Pt9dff93q16/vBEzdunWzO++80xo3blxp2cD/ffv2tZdeeslSU1PN5XJZ+/btzeVy2f/93//ZE088YS1atLA77rijygZZoA5xcXEWHx9vTZo0sRYtWlhUVFSVz00gfAqsKyEhwWns1KlTx9xut/n9fktMTKyykRUbGxsUrnXt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/SkqKrIHH3zQZsyYYRdddJGzT6OiopxvNb///vugZXJzc23o0KF27bXX2h133GHXXHNN0PRAWBcWFmaXXXZZ0D6cOHGi/fLLL9asWbOg43X27NmWkpLinMB89NFH9vrrr9v8+fODyi4sLDSfz2fXXXedc4w9//zzzs9JR44caZs2bbJHHnnE2f/169c3s32NzMDJQvfu3c3tdpvH47FWrVo5Vy2GhYXZxIkT7aGHHrJRo0aZJLvqqqucMHratGlBDfEBAwZYRESEud1ui4qKMjOzU0891WJjYytdabhw4UJ78803LSwszP70pz9ZZGSkpaSk2J133unMUzHcDPzUODEx0Xbs2GFbt251fpIQmKd58+Z2//33OydBbrfbkpKSbPz48XbWWWfZpk2bzO12W0JCQtCJUlVDo0aNzO/3B13p6Pf7nZ/p7m8IHC8dOnQIutKw4jp9Pp8TfB/JCWFgaNWqld12220WGRnphOAej6fSCaDX6zWv12tt27atVEbDhg0rjcvOzramTZvaAw88YK1bt3Z+Ih34mUhgvi5duljPnj2rvZK1/OByuWzcuHHV7r+a+vmvx+OxnJycGgmh/X6/derUyc4555yg5zIlJcX5SXj55zYzM9OaNGliJ510UpU/d4qJibHzzjvPuXI6UN927dqZz+ezk046qdp9dyj1/sMf/mDJycnOc5+ZmVltQOLxeOziiy+2O++8s8qft7dq1cp69+7tTAscZwdTj+zs7CN+DgJXWefm5tpDDz1kV155ZdBPqKpaJvBF1cGWH9imoUOHWu/evZ339a1bt1qnTp2q3d4DPS9paWn2hz/8wXkezj777APWJ3C1S8V1BOpX8WdtMTExdumll1b787rAUK9evYPe5zfffLONGjXK2b+PPPKI3XjjjU7AU/FYKn9MhIWFWaNGjaot2+PxmMfjsZKSEqftVt3QqlUrp11hZpaenl7l/grsX7fbbaeccoozPrDvyp9ITp061f72t78571nln1ufz2ejRo2q9v0sLi7OsrKynNf94sWLrVevXk5IVvEKj0A7tGL78+yzz3b25aOPPhr0WT979mznCotAezLwuR74lr/88gsXLrS//e1vzjETqFv59nBubq7Tlgm05/x+vzVr1szMgtuTgTLq16/vXDkUFRVl99xzj9NeC4QR5esVaM+53W6rX7++eb1ei4qKsuHDh9vHH3/sXNHUu3fvoOMn8MuMigLtyPLt36ioKPP7/dUGEllZWc77fvntL29/7dnDUbFdHficNav6fKCq7TqQ8sdcVYHWgc4HHnroISsoKDis9a9evdqioqKCtqsq5fdD+fZ5VfUqf1xt27btgHU4GAdbz8PZ/0ei4mu1vPKv9aPpm2++sVdeeaXKaRXfo+677z6nTT9p0qQaq0NV+6G6epV/D6opn376qfMedKBA62hs/9FysNtVFZfZIfaTiaNu9+7dWrt2rSQpOjo66AbrR8PGjRtVUFAgad9NP7/55hvt2LFD/fr1O+SyVq1apXfffVcjRoxwxu3YsUP5+fnauXOniouLlZiYqPj4eCUlJR1WfefMmaMdO3aoc+fOKigo0JYtWxQREaHIyEjVrVvXuVnd448/rgEDBlS6mfzevXudGyP6/f5K0ysK1F+SPv30U2VnZ6tz5877nS+wfePGjdNll12mvXv3avfu3U79o6KilJycrOnTp+umm25S/fr1q+wRae/evXrkkUf0xz/+8aBuVlmV5cuX6z//+Y/mzJmj+++/v9L0bdu2afLkyfL5fBoyZIjTM1Bg2ddee01Lly7VlClTqrwh4s8//6yXX35Zl19+uXO8rl69WiUlJfrqq68UHR0d1MtRec8++6zy8vKcnnkkaejQoWrcuLHat2/vHIPLly+XtO8Gs40aNdLatWud/fn++++rZcuWaty4saKjo+Xz+bRx40b9/e9/16hRo9SgQQPdfvvt+uabb3T11VcrJiZGderUUUFBgX799VenC/KrrrrK6S01sJ7JkydrxYoVuvLKK7VkyRJ9+OGH6t27twYMGCCfz6ebbrpJ7du3V0pKil599VW98MILmj17tv7xj38oOTlZLpdLbrdbixcv1l133aW6detqzpw56ty5s0466SStXbtWq1ev1rPPPqsmTZqoa9euOu2007Rq1Sp99dVX+uSTT9SwYUOVlpbq4osv1u+//67HH3/cuYHizp07NWvWLP3www9KT0/XueeeqxtvvFH169dXkyZNtGvXLg0aNEhz585VeHi4WrZsqYKCAjVs2FDvvPOOdu7cqcLCQtWvX1/du3eXx+NRYWGhGjVqpLi4OPn9fs2YMUObNm3SwoULdeqpp6qsrExr165VcXGx4uLidOqpp6q0tFRffvml6tWrpw0bNqhv376aOXOmVq9erU2bNjk9S0VHR+u2227Tpk2bVFpaqrS0NA0ZMkQLFizQGWecoSuuuEJFRUVau3at9u7dq61btyo5OVl+v18vv/yycwPKhg0bavLkyWrcuLHy8vK0ZMkSnXzyyerYsaPatGmjsLAwvfPOOxo/fryuvPJKLV26VA899JBatGihjRs3atWqVXrjjTd055136oknnlCfPn10991369FHH1WnTp305ptvqri4WLNnz9bKlSsVFham7du3a+3atWrcuLGzjzt37qyLLrpIiYmJmjNnjnbv3q2ePXvqjDPOkNfr1S+//KKVK1dq06ZNuvzyy/X777/rvffek8/nU3h4uOrVq6elS5fq5JNPVmlpqbZv365+/frJzLRp0yb9+9//VkxMjO6//37t2bNH06ZN08KFCxUWFqaEhAR169ZNe/fu1auvvqq6detq0KBBevTRR5Wenq5ly5bJ5/MpKytLfr9fvXv31g8//KAbb7xRpaWlmjRpknJycpxjrGXLltq9e7dyc3OVmpqqvXv3atKkSdq9e7feeustLVmyRJ988on69eunXbt2yev16uGHH1ZCQoKkfe9rP/74o4YNG6YffvhBK1asUNu2bfXyyy/L5/Np6tSpys3N1caNG/X2229r3rx5uuCCC9SvXz8VFBRo586deuqpp9SrVy+1adNGP//8s7799lvt3r1b119/verVq+e8N/n9fr3wwgt64YUXdP7552vZsmXauHGjWrRooU2bNum9997Txo0bNX78eF100UW6+eabFRsbq8aNG+uOO+5QZGSkpk6dqiFDhqiwsFC5ubmaPXu2brrpJq1Zs0affvqpzjzzTHXu3FkbNmzQqFGjlJqaqgULFujjjz/W7Nmz1bJlS23btk0tW7bU559/rr1792rx4sVKSUlRfHy80tLS5PV6tXLlSmVmZsrlcqlly5Zau3atsrKynK6/N27cqJ9++kl79+5VTEyMCgsLtXv3bqd3oPnz5+vqq69WRESEPv30U3300Udavny5kpOT1bNnT23ZskXt2rVTUlKStmzZoqZNm6q0tFR169ZVfHy8XnjhBV122WXOvgu0L5577jm1b99e//nPf7R3717Vq1dPLVq0UGxsrLZv3665c+fKzBQZGam5c+eqS5cuOuWUUzRv3jyn16vo6Gh9/vnnWr58uTZv3qz09HSlpaUpIyNDcXFx8vl8KigoUG5uruLj43X66adr7969io2NVXJysuLj47Vr1y4988wz2rRpk3777TfdfPPNOvnkk7Vu3Trl5+frm2++0XfffadOnTopKSnJeR9p0KCBduzYoe3bt2v9+vUKDw/XlClT1KFDB0VEROj777/X2WefrVNOOUX16tWT2+12On9JTk6Wz+fT2rVr9dVXX2n16tVOe6Ju3bpOL9LFxcWqW7euvF6vli1bpmnTpunMM89U3bp1FRsbq7KyMi1ZskQNGzbUhRdeqL179+q2225Tt27dlJaWJp/Pp8LCQr300ku6+uqrlZ6eHtTeWLx4sfLz8/XTTz/J5/MpPj5e7du3V1pamgoKCpSSkiK/36/ly5drw4YNKikpUXp6ujIyMuTz+ZxyAm2PDRs2yOfzBQ3x8fHatm2b1q5dq7KyMsXExDg3TU9KSlJ8fLzT+U3jxo1VWFhYqR1zIOU/jyvW7WBUtXxgm/bs2ePcCLyq9vCB2nPl2w5ut9vZ1sB+kfYdD4GOkwLKt+d2797ttH0yMjJUWlrqtNHDw8O1du1abdu2Tb///ruys7OVkJBQqR5VtQ8rtmsqWr16tbNcenq6YmNjD3n7D1XgfGDv3r0qLi5WZGTkfsutarsOJNA+lPYdc0fSOdKhrv9g91fF86L99Vhak9tzqPU8nP1/JI70tX6s/f7770Hv+xVf54frUPbDgV7nh+Ngc4Kjtf1Hy5HkHwRaAAAAAAAACClHHiMDAAAAAAAAxxCBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAAAAAAAQgqBFgAAAAAAAEIKgRYAAAAAAABCCoEWAAC1ZNOmTbrhhhuUkZEhv9+vtLQ09enTR1988YUkqWHDhnK5XHrllVcqLZudnS2Xy6Xnn3/eGdewYUM9/vjj1T4ub9WqVXK5XFUO8+fPlySVlpbqr3/9q1q2bKmIiAglJiaqc+fOevbZZ2tsHwAAAACHw1PbFQAA4H/VgAEDVFxcrBdeeEGNGzdWfn6+Zs2apS1btjjzpKenKzc3V4MHD3bGzZ8/Xxs2bFBUVNQR12HmzJnKzs4OGlenTh1J0gMPPKBnnnlGTz31lDp27KiCggJ9++232rp16xGvFwAAADgSBFoAANSCbdu26bPPPtOcOXPUo0cPSVJmZqZOPvnkoPkuvfRSTZgwQb/99pvS09MlSdOmTdOll16qF1988YjrUadOHaWlpVU5bfr06brxxhv1hz/8wRnXtm3bI14nAAAAcKT4ySEAALUgOjpa0dHRevvtt1VUVFTtfKmpqerTp49eeOEFSdKuXbv06quv6qqrrjrqdUxLS9Mnn3yiTZs2HfV1AQAAAIeCQAsAgFrg8Xj0/PPP64UXXlB8fLy6deumu+66S99//32lea+66io9//zzMjO98cYbatKkiXJycmqkHl27dnXCtcAQMH78eG3atElpaWlq06aNrr/+en3wwQc1sl4AAADgSBBoAQBQSwYMGKB169Zp+vTpOvvsszVnzhy1b98+6EbvkvT//t//086dO/Xpp59q2rRpNXp11quvvqpFixYFDQFZWVlasmSJ5s+fr6uuukobN25Uv379NGzYsBpbPwAAAHA4CLQAAKhF4eHhOuuss3TPPffoyy+/1BVXXKH77rsvaB6Px6MhQ4bovvvu01dffaVLL720xtafnp6upk2bBg3lud1uderUSbfccov+/e9/6/nnn9dzzz2nlStX1lgdAAAAgENFoAUAwHEkKytLhYWFlcZfddVVmjt3rs4//3wlJCTUQs32ycrKkqQq6wgAAAAcK/RyCABALdiyZYv+8Ic/6KqrrlKbNm0UExOjb7/9Vo8++qjOP//8SvO3atVKmzdvVmRk5CGtZ+3atUE/I5T29aZYvh4bNmwImh4fH6/w8HANHDhQ3bp1U9euXZWWlqaVK1dq9OjRat68uVq2bHlI9QAAAABqEoEWAAC1IDo6Wp07d9aECRO0YsUKlZSUKD09Xddcc43uuuuuKpepU6fOIa/nscce02OPPRY07h//+IdOPfVUSVKvXr0qLfOvf/1LgwcPVp8+ffSvf/1LY8eO1fbt25WWlqaePXvq/vvvl8dDEwIAAAC1x2VmVtuVAAAAAAAAAA4W99ACAAAAAABASCHQAgAAAAAAQEgh0AIAAAAAAEBIIdACAAAAAABASCHQAgAAAAAAQEgh0AIAAAAAAEBIIdACAAAAAABASCHQAgAAAAAAQEgh0AIAAAAAAEBIIdACAAAAAABASCHQAgAAAAAAQEj5/2z63vjGvKGaAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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rG9L8zF16tTg1FNPDbZs2RJZPv7440h7W5qLbdu2Bd27dw+uueaaYOnSpcFf//rXYP78+cH69esjfdrKZ2h1dXXUe2LBggUBECxatCgIguZ9XxiKjoCzzz47KCwsjLyur68PsrOzg+Li4hhWdWR9MRQ1NDQEmZmZwa9//evIupqamiApKSn4/e9/HwRBELz77rsBELz55puRPi+++GIQCoWCjz76qNlqPxKqq6sDIFi8eHEQBJ+NPSEhIXjqqacifdauXRsAQVlZWRAEn4XMuLi4oLKyMtJn+vTpQXJyclBXV9e8A2hixx57bPDf//3fbXYetm/fHpx00knBggULgn/6p3+KhKK2Nh9Tp04NTj/99IO2tbW5mDRpUnDeeecdsr0tf4beeOONwQknnBA0NDQ0+/vC02dNbM+ePZSXl1NQUBBZFxcXR0FBAWVlZTGsrHlt2LCBysrKqHlISUkhLy8vMg9lZWWkpqYycODASJ+CggLi4uJYunRps9fclGprawFIS0sDoLy8nL1790bNR69evcjNzY2aj759+0Y9dHTYsGGEw2HWrFnTjNU3nfr6embPns3OnTvJz89vs/NQWFjIiBEjosYNbfN98f7775Odnc3xxx/P6NGjqaj47BvU29pcPPfccwwcOJDvf//7pKen079/f377299G2tvqZ+iePXv43e9+xw9/+ENCoVCzvy8MRU1s69at1NfXH/A07YyMDCorK2NUVfPbP9Yvm4fKykrS09Oj2uPj40lLS2vVc9XQ0MCECRM499xzOe2004DPxpqYmHjAd+x9cT4ONl/721qTVatW0alTJ5KSkrjhhht45pln6NOnT5ubB4DZs2fz1ltvUVxcfEBbW5uPvLw8Zs6cybx585g+fTobNmzgm9/8Jtu3b29zc/HXv/6V6dOnc9JJJzF//nzGjRvHj3/8Yx5//HGg7X6Gzpkzh5qaGq655hqg+f+NHDVPtJZaisLCQlavXs1rr70W61Ji5pRTTmHFihXU1tbyP//zP4wZM4bFixfHuqxmt2nTJm688UYWLFhA+/btY11OzA0fPjzyc79+/cjLy6N79+788Y9/pEOHDjGsrPk1NDQwcOBA7rzzTgD69+/P6tWrefjhhxkzZkyMq4udRx99lOHDhzfZt94fLo8UNbGuXbvSrl27A66Mr6qqIjMzM0ZVNb/9Y/2yecjM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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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XnvNc7u9vd1yOp3Wr3/9a8+6pqYmKzIy0nrhhRf8Pg9ndvzgxIkTqqqqUm5urmddSEiIcnNzVVFRYeNkZmtubpYkJSQk2DyJmQoKCjR+/Hiv/67hO2+++aaGDRum73//+0pMTNSQIUP0hz/8we6xjHP99derrKxMn376qSTpb3/7mzZv3qyxY8faPJnZ9u3bJ5fL5fXvR1xcnLKysgLye9GIT1AONo2NjWprazvjE5yTkpK0e/dum6YyW3t7u2bPnq2RI0fq2muvtXsc47z44ov66KOPtH37drtHMdbf//53rVixQkVFRbr//vu1fft23X333YqIiNCUKVPsHs8Y9913n9xutzIyMhQaGqq2tjY98sgjys/Pt3s0o7lcLkk66+/F09v8idiBEQoKClRTU6PNmzfbPYpx9u/fr1mzZmn9+vWKioqyexxjtbe3a9iwYXr00UclSUOGDFFNTY1WrlxJ7PjQyy+/rOeff16lpaXq37+/qqurNXv2bKWkpPA8G4yXsfyge/fuCg0NVX19vdf6+vp6OZ1Om6YyV2FhodauXav33ntPV199td3jGKeqqkoNDQ36xje+obCwMIWFham8vFxPPPGEwsLC1NbWZveIRkhOTla/fv281mVmZqqurs6micx0zz336L777tPkyZM1YMAA3X777ZozZ46Ki4vtHs1op3/32fV7kdjxg4iICA0dOlRlZWWede3t7SorK1N2draNk5nFsiwVFhbqtdde08aNG5Wenm73SEYaNWqUPv74Y1VXV3uWYcOGKT8/X9XV1QoNDbV7RCOMHDnyjI9O+PTTT9WjRw+bJjLTV199pZAQ7199oaGham9vt2miy0N6erqcTqfX70W3263KysqA/F7kZSw/KSoq0pQpUzRs2DCNGDFCy5Yt09GjR3XnnXfaPZoxCgoKVFpaqjfeeEMxMTGe133j4uIUHR1t83TmiImJOeM6qK5du6pbt25cH+VDc+bM0fXXX69HH31UP/jBD7Rt2zatWrVKq1atsns0o0yYMEGPPPKI0tLS1L9/f/31r3/V0qVLddddd9k9WqfX0tKivXv3em7v27dP1dXVSkhIUFpammbPnq2HH35Yffr0UXp6uubPn6+UlBRNnDjR/8P5/f1el7Hly5dbaWlpVkREhDVixAhr69atdo9kFElnXVavXm33aMbjref+8dZbb1nXXnutFRkZaWVkZFirVq2yeyTjuN1ua9asWVZaWpoVFRVl9erVy/rlL39ptba22j1ap/fee++d9d/kKVOmWJb1r7efz58/30pKSrIiIyOtUaNGWbW1tQGZzWFZfGwkAAAwF9fsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwCMlpOTo9mzZ5+xfs2aNYqPjw/4PAACj9gBAABG41vPAXRqOTk5nm9f/9Of/qTw8HDNmDFDixcvlsPhsHk6AMGAMzsAOr1nn31WYWFh2rZtm373u99p6dKl+uMf/2j3WACCBN96DqBTy8nJUUNDg3bu3Ok5k3PffffpzTff1CeffKKcnBxt2bJFERERXj936tQpRUVFqampyYapAQQSZ3YAdHrXXXed10tW2dnZ2rNnj9ra2iRJ+fn5qq6u9loWL15s17gAAoxrdgAYLy4uTl//+te91iUmJto0DYBA48wOgE6vsrLS6/bWrVvVp08fhYaG2jQRgGBC7ADo9Orq6lRUVKTa2lq98MILWr58uWbNmmX3WACCBC9jAej07rjjDh07dkwjRoxQaGioZs2apenTp9s9FoAgwbuxAHRqOTk5Gjx4sJYtW2b3KACCFC9jAQAAoxE7AADAaLyMBQAAjMaZHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDR/g99zKYyGxs+RQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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y8u1c+dO7dy5U9LPNz7v3LlTx44dU3l5uaZNm6YtW7bou+++U1ZWloYNG6YbbrhBaWlpkqSOHTtq8ODBGj9+vLZt26bPP/9cGRkZuvfee3knFgAAkFTLl7HOnDmjv/3tb1q7dq26du2q4OBgt/ZXXnmlWuN88cUXuvXWW137F15aGjNmjN58803t2rVLb7/9tkpKSpSYmKhBgwbphRdecPusncWLFysjI0MDBw5UQECARo4cqddff7020wIAABaqVdjZtWuXunfvLknavXu3W1tNblYeMGCAjDGXbF+9evUVx4iOjuYDBAEAwCXVKuysX7/e03UAAAB4Ra3u2QEAAKgvanVl59Zbb73sy1Xr1q2rdUEAAACeVKuwc+F+nQsqKyu1c+dO7d69+6IvCAUAAPClWoWdV199tcrjs2fPVnl5+VUVBAAA4EkevWfngQce8Nj3YgEAAHiCR8NOdna2wsLCPDkkAADAVanVy1gjRoxw2zfGqKCgQF988YWeeeYZjxQGAADgCbUKO5GRkW77AQEBat++vZ5//nkNGjTII4UBAAB4Qq3CzsKFCz1dBwAAgFfUKuxckJOTo3379kmSOnfurN/85jceKQoAAMBTahV2iouLde+992rDhg2KioqSJJWUlOjWW2/Vu+++qyZNmniyRgAAgFqr1buxJk6cqFOnTmnPnj06efKkTp48qd27d6usrEyTJk3ydI0AAAC1VqsrO6tWrdLatWvVsWNH17FOnTopMzOTG5QBAIBfqdWVHafTqeDg4IuOBwcHy+l0XnVRAAAAnlKrsHPbbbfpD3/4g/Lz813H8vLyNGXKFA0cONBjxQEAAFytWoWd//mf/1FZWZlatmypNm3aqE2bNmrVqpXKyso0f/58T9cIAABQa7W6ZycpKUlffvml1q5dq/3790uSOnbsqNTUVI8WBwAAcLVqdGVn3bp16tSpk8rKyuRwOPQf//EfmjhxoiZOnKhevXqpc+fO+uyzz7xVKwAAQI3VKOzMmzdP48ePV0RExEVtkZGRevTRR/XKK694rDgAAICrVaOw89VXX2nw4MGXbB80aJBycnKuuigAAABPqVHYKSoqqvIt5xcEBQXphx9+uOqiAAAAPKVGYadp06bavXv3Jdt37dqlhISEqy4KAADAU2oUdm6//XY988wzOnPmzEVtP/30k2bNmqXf/e53HisO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VFFR4dovLS2VJJWVlXm0tlOnTulUca7OnPq3AspLFeA8p/IT+QoIbSjn2TMKcAS6/gww53Xw4EGdOnVKhYWFOlWcK0k6eDBCp06dumjswsJCnav46f/6HKyyT21Ude7q1ONPLtRbeeZHnSk7oYMHIyTJr+dQVc2/rrE6fXytus/duvq38NbPCYAr++XP36lTpzz+O1b6/7+3jTGX72jquby8PCPJbN682e34tGnTTO/evat8zKxZs4wkNjY2NjY2Ngu23Nzcy2aFen9lJyYmRoGBgSoqKnI7XlRUpPj4+CofM2PGDE2dOtW173Q6dfLkSV1//fVyOBweq62srExJSUnKzc1VRESEx8aFO9a57rDWdYN1rhusc93w5jobY3Tq1CklJiZetl+9DzshISHq0aOHsrKyNHz4cEk/h5esrCxlZGRU+ZjQ0FCFhoa6HYuKivJajREREfwg1QHWue6w1nWDda4brHPd8NY6R0ZGXrFPvQ87kjR16lSNGTNGPXv2VO/evTVv3jydPn1aDz30kK9LAwAAPmZF2Lnnnnv0ww8/6Nlnn1VhYaG6d++uVatWXXTTMgAAuPZYEXYkKSMj45IvW/lKaGioZs2addFLZvAs1rnusNZ1g3WuG6xz3fCHdXYYc6X3awEAANRfVnyCMgAAwKUQdgAAgNUIOwAAwGqEnRrKzMxUy5YtFRYWpuTkZG3btu2y/ZcuXaoOHTooLCxMXbp00SeffOLWbozRs88+q4SEBDVo0ECpqak6ePCgN6dQL3hynSsrKzV9+nR16dJFDRs2VGJioh588EHl5+d7exp+z9PP51967LHH5HA4NG/ePA9XXf94Y5337dunO++8U5GRkWrYsKF69eqlY8eOeWsK9YKn17m8vFwZGRlq1qyZGjRo4PqiadRsrffs2aORI0eqZcuWl/0/oab/fjXike9suEa8++67JiQkxLz11ltmz549Zvz48SYqKsoUFRVV2f/zzz83gYGBZu7cuWbv3r1m5syZJjg42Hz99deuPi+++KKJjIw0y5YtM1999ZW58847TatWrcxPP/1UV9PyO55e55KSEpOammree+89s3//fpOdnW169+5tevToUZfT8jveeD5f8MEHH5hu3bqZxMRE8+qrr3p5Jv7NG+t86NAhEx0dbaZNm2a+/PJLc+jQIbN8+fJLjnkt8MY6jx8/3rRp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4eHh6tu3rw4cOOB2vo8++ki9evVSWFiYYmJidNddd7naKioq9OSTT6pp06Zq2LChkpOTtWHDBlf7hZfsVq9erY4dO6pRo0YaPHiwCgoKJEmzZ8/W22+/reXLl8vhcMjhcGjDhg2uqy3vvfee+vfvr7CwMC1evFgnTpzQfffdp6ZNmyo8PFxdunTRO++84zrf2LFjtXHjRr322muu8ap7RWbMmDFauHCh27GFCxdqzJgx1Xo8YC2PfaUoAL8xZswYM2zYMGPMz99AHBERYWbPnm2++eYb8/bbbxuHw2E+/fRTV39JplmzZmbJkiXm4MGDZtKkSaZRo0bmxIkTxhhj1q9fbySZf//738YYYxYuXGiCg4NNz549zebNm80XX3xhevfubfr27Vut+rp27WoGDRp0xX6TJk0yiYmJ5pNPPjF79uwxY8aMMdddd91FdSUnJ5sNGzaYPXv2mN/+9rdudaxcudIEBgaaZ5991uzdu9fs3LnT/OlPf3K1P/LII6Zv375m06ZN5tChQ+all14yoaGh5ptvvnGba2pqqtm+fbvJyckxHTt2NPfff78xxphTp06Zu+++2wwePNgUFBSYgoICU1FR4fqm55YtW5r//d//Nd9++63Jz88333//vXnppZfMjh07zOHDh83rr79uAgMDzdatW40xxpSUlJiUlBQzfvx413jnzp277DpdONe2bdtMTEyM+eyzz4wxxnz22WemSZMmZtu2bUaSOXLkSLX+fQDbEHYAC/067Nx8881u7b169TLTp0937UsyM2fOdO2Xl5cbSeaf//ynMabqsCPJbNmyxfWYffv2GUmuX9qX06BBAzNp0qTL9ikvLzfBwcFm8eLFrmNnz541iYmJZu7cuW51rV271tXn448/NpLMTz/9ZIwxJiUlxYwaNarKcxw9etQEBgaavLw8t+MDBw40M2bMcJvroUOHXO2ZmZkmLi7Otf/L9b7gQgCZN2/eZedpjDFDhw41TzzxhGu/f//+5g9/+MMVH/frc+3YscNMnjzZPPTQQ8YYYx566CEzZcoUs2PHDsIOrmm8jAVcA7p27eq2n5CQoOLi4kv2adiwoSIiIi7q80tBQUHq1auXa79Dhw6KiorSvn37rliPMeaKfQ4fPqzKykr169fPdSw4OFi9e/e+6By/rD0hIUGSXLXv3LlTAwcOrPIcX3/9tc6fP6927dqpUaNGrm3jxo06fPiwq194eLjatGnjdo7Lrc0v9ezZ023//PnzeuGFF9SlSxdFR0erUaNGWr16tY4dO1at8a5k3LhxWrp0qQoLC7V06VKNGzfOI+MC9VmQrwsA4H3BwcFu+w6HQ06ns8Z9PKVdu3bav3+/x8b7Ze0XbqK+UHuDBg0u+bjy8nIFBgYqJydHgYGBbm2NGjWqcvwL56hOYJN+Do6/9NJLL+m1117TvHnz1KVLFzVs2FCTJ0/W2bNnqzXelXTp0kUdOnTQfffdp44dO+rGG2/Uzp07PTI2UF9xZQdArZw7d05ffPGFa//AgQMqKSlRx44dr/jY+++/X2vXrtWOHTsuaqusrNTp06fVpk0bhYSE6PPPP3dr2759uzp16lTtOrt27aqsrKwq237zm9/o/PnzKi4u1g033OC2xcfHV/scISEhOn/+fLX6fv755xo2bJgeeOABdevWTa1bt9Y333xT6/GqMm7cOG3YsIGrOsD/IewAqJXg4GBNnDhRW7duVU5OjsaOHas+ffqod+/eV3zs5MmT1a9fPw0cOFCZmZn66quv9O233+r9999Xnz59dPDgQTVs2FCPP/64pk2bplWrVmnv3r0aP368fvzxRz388MPVrnPWrFl65513NGvWLO3bt09ff/21/vznP0v6+QrTqFGj9OCDD+qDDz7QkSNHtG3bNs2ZM0cff/xxtc/RsmVL7dq1SwcOHNDx48cv+xbztm3bas2aNdq8ebP27dunRx99VEVFRReNt3XrVn333Xc6fvx4ja+wjR8/Xj/88IMeeeSRGj0OsBVhB0CthIeHa/r06br//vvVr18/NWrUSO+99161HhsaGqo1a9boqaee0l//+lf16dNHvXr10uuvv65JkybpxhtvlCS9+OKLGjlypEaPHq2bbrpJhw4d0urVq3XddddVu84BAwZo6dKlWrFihbp3767bbrtN27Ztc7UvXLhQDz74oJ544gm1b99ew4cP1/bt29W8efNqn2P8+PFq3769evbsqSZNmrhdjfq1mTNn6qabblJaWpoGDBig+Pj4iz6Q8Mknn1RgYKA6deqkJk2a1Ph+nqCgIMXExCgoiDsVAElymOq+8AwAAFAPcWUHAABYjbADwOM6d+7s9lbuX26LFy/2dXn1zmOPPXbJ9Xzsscd8XR7g93gZC4DHHT169JI36cbFxalx48Z1XFH9VlxcrLKysirbIiIiFBsbW8cVAfULYQcAAFiNl7EAAIDVCDsAAMBqhB0AAGA1wg4AALAaYQcAAFiNsAMAAKxG2AEAAFYj7AAAAKv9P+bDKgz8xq1kAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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Pt8XGBio0NDQWhsAALDTNRU75eXlOnz4sGJiYtSvXz/5+/srOzvbuT8/P19Hjx5VQkKCB6cEAADexKs/xnryySd13333qX379iosLFR6erp8fX310EMPKSwsTJMmTdL06dMVERGh0NBQTZs2TQkJCXwTCwAAOHl17Bw/flwPPfSQTp8+rdatW2vIkCH69NNP1bp1a0nS888/Lx8fH6WkpKiiokJJSUn63e9+5+GpAQCAN/Hq2FmzZk29+4OCgpSRkaGMjIxmmggAAFxrrqlrdgAAABqL2AEAAFYjdgAAgNW8+podAADg3bp076miwsJ6j4mJjVX+vj3NNNHliB0AAOCyosJCjVr8fr3HbJgxupmmqRsfYwEAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALCan6cHAADAG3Xp3lNFhYX1HhMTG6v8fXuaaSK4itgBAKAORYWFGrX4/XqP2TBjdDNNg6vBx1gAAMBq1sRORkaGOnTooKCgIMXHx+vzzz/39EgAAMALWBE7f/rTnzR9+nSlp6fryy+/VO/evZWUlKSTJ096ejQAAOBhVsTOc889p8mTJ+uRRx5R9+7dtWzZMt14441avny5p0cDAAAeds3HTmVlpXJzc5WYmOi8z8fHR4mJicrJyfHgZAAAwBtc89/G+uabb1RdXa2oqKha90dFRenAgQN1PqaiokIVFRXO26WlpZKksrIyt89njFHVd+d/8JimeO36Xo+ZAKB+/LvUMJ5cp0vPaYyp/0BzjTtx4oSRZLZv317r/qeeesoMHDiwzsekp6cbSWxsbGxsbGwWbMeOHau3Fa75MzutWrWSr6+vSkpKat1fUlKi6OjoOh8za9YsTZ8+3Xm7pqZGZ86c0U033SSHw+G22crKyhQXF6djx44pNDTUbc9rI9aqcVivhmOtGo61ajjWquGacq2MMTp37pxiY2PrPe6aj52AgAD169dP2dnZGjt2rKR/xEt2drbS0tLqfExgYKACAwNr3RceHt5kM4aGhvIfQwOxVo3DejUca9VwrFXDsVYN11RrFRYW9oPHXPOxI0nTp0/XhAkT1L9/fw0cOFAvvPCCzp8/r0ceecTTowEAAA+zInYefPBBnTp1SnPnzlVxcbH69OmjrKysyy5aBgAA1x8rYkeS0tLSrvixlacEBgYqPT39so/McDnWqnFYr4ZjrRqOtWo41qrhvGGtHMb80Pe1AAAArl3X/A8VBAAAqA+xAwAArEbsAAAAqxE7VykjI0MdOnRQUFCQ4uPj9fnnn9d7/Nq1a9W1a1cFBQXptttu04YNG5ppUs9rzFrt3btXKSkp6tChgxwOh1544YXmG9QLNGatXn31Vd1xxx1q2bKlWrZsqcTExB/8e2ibxqzX22+/rf79+ys8PFwtWrRQnz599Mc//rEZp/Wsxv6bdcmaNWvkcDicP8/setCYtcrMzJTD4ai1BQUFNeO0ntXYv1dnz55VamqqYmJiFBgYqM6dOzft/w/d80sbrk9r1qwxAQEBZvny5Wbv3r1m8uTJJjw83JSUlNR5/LZt24yvr69ZvHix2bdvn5k9e7bx9/c3X331VTNP3vwau1aff/65efLJJ80bb7xhoqOjzfPPP9+8A3tQY9fqxz/+scnIyDA7d+40+/fvNxMnTjRhYWHm+PHjzTy5ZzR2vT744APz9ttvm3379plDhw6ZF154wfj6+pqsrKxmnrz5NXatLikoKDBt2rQxd9xxhxkzZkzzDOthjV2rFStWmNDQUFNUVOTciouLm3lqz2jsWlVUVJj+/fubUaNGmU8++cQUFBSYrVu3mry8vCabkdi5CgMHDjSpqanO29XV1SY2NtYsXLiwzuP/7d/+zYwePbrWffHx8eaxxx5r0jm9QWPX6vvat29/XcXO1ayVMcZcvHjRhISEmJUrVzbViF7latfLGGP69u1rZs+e3RTjeRVX1urixYtm8ODB5ve//72ZMGHCdRM7jV2rFStWmLCwsGaazrs0dq1eeukl06lTJ1NZWdlcIxo+xnJRZWWlcnNzlZiY6LzPx8dHiYmJysnJqfMxOTk5tY6XpKSkpCsebwtX1up65Y61+vvf/66qqipFREQ01Zhe42rXyxij7Oxs5efn684772zKUT3O1bWaP3++IiMjNWnSpOYY0yu4ulbl5eVq37694uLiNGbMGO3du7c5xvUoV9bq3XffVUJCglJTUxUVFaWePXvq17/+taqrq5tsTmLHRd98842qq6sv+ynNUVFRKi4urvMxxcXFjTreFq6s1fXKHWs1c+ZMxcbGXhbWNnJ1vUpLSxUcHKyAgACNHj1aS5cu1d13393U43qUK2v1ySef6LXXXtOrr77aHCN6DVfWqkuXLlq+fLneeecdvf7666qpqdHgwYN1/Pjx5hjZY1xZq7/97W968803VV1drQ0bNmjOnDl69tlntWDBgiab05qfoAxAWrRokdasWaOtW7deVxdHNlZISIjy8vJUXl6u7OxsTZ8+XZ06ddKwYcM8PZrXOHfunB5++GG9+uqratWqlafH8XoJCQlKSEhw3h48eLC6deuml19+Wc8884wHJ/M+NTU1ioyM1CuvvCJfX1/169dPJ06c0H//938rPT29SV6T2HFRq1at5Ovrq5KSklr3l5SUKDo6us7HREdHN+p4W7iyVterq1mrJUuWaNGiRdq8ebN69erVlGN6DVfXy8fHR7fccoskqU+fPtq/f78WLlxodew0dq0OHz6sI0eO6L777nPeV1NTI0ny8/NTfn6+br755qYd2kPc8W+Wv7+/+vbtq0OHDjXFiF7DlbWKiYmRv7+/fH19nfd169ZNxcXFqqysVEBAgNvn5GMsFwUEBKhfv37Kzs523ldTU6Ps7Oxadf99CQkJtY6XpE2bNl3xeFu4slbXK1fXavHixXrmmWeUlZWl/v37N8eoXsFdf7dqampUUVHRFCN6jcauVdeuXfXVV18pLy/Pud1///0aPny48vLyFBcX15zjNyt3/L2qrq7WV199pZiYmKYa0yu4sla33367Dh065IxnSfr6668VExPTJKEjia+eX401a9aYwMBAk5mZafbt22emTJliwsPDnV83fPjhh83Pf/5z5/Hbtm0zfn5+ZsmSJWb//v0mPT39uvrqeWPWqqKiwuzcudPs3LnTxMTEmCeffNLs3LnTHDx40FNvodk0dq0WLVpkAgICzJtvvlnra6/nzp3z1FtoVo1dr1//+tfmf//3f83hw4fNvn37zJIlS4yfn5959dVXPfUWmk1j1+qfXU/fxmrsWs2bN89s3LjRHD582OTm5ppx48aZoKAgs3fvXk+9hWbT2LU6evSoCQkJMWlpaSY/P9+sX7/eREZGmgULFjTZjMTOVVq6dKlp166dCQgIMAMHDjSffvqpc9/QoUPNhAkTah3/5z//2XTu3NkEBASYHj16mPfff7+ZJ/acxqxVQUGBkXTZNnTo0OYf3AMas1bt27evc63S09Obf3APacx6/fKXvzS33HKLCQoKMi1btjQJCQlmzZo1HpjaMxr7b9b3XU+xY0zj1urxxx93HhsVFWVGjRplvvzySw9M7RmN/Xu1fft2Ex8fbwIDA02nTp3Mr371K3Px4sUmm4/feg4AAKzGNTsAAMBqxA4AALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7ABokMzNT4eHhnh4DABqN2AGuE6dOndLUqVPVrl07BQYGKjo6WklJSdq2bZtLz/f000+rT58+jX7czp079a//+q+KiopSUFCQbr31Vk2ePFlff/21S3N4ypEjR+RwOJSXl+eW59u6dascDofOnj3b4MdMnDhRDodDP/3pTy/bl5qaKofDoYkTJ7plPuBaRuwA14mUlBTt3LlTK1eu1Ndff613331Xw4YN0+nTp5tthvXr12vQoEGqqKjQqlWrtH//fr3++usKCwvTnDlzmm2O5lRZWdmkzx8XF6c1a9bou+++c9534cIFrV69Wu3atWvS1wauGU32W7cAeI1vv/3WSDJbt2694jHPPvus6dmzp7nxxhtN27ZtzdSpU2v95vQVK1aYsLAw55/1T794dMWKFfXOcP78edOqVSszduzYK854ydatW82AAQNMQECAiY6ONjNnzjRVVVXO/UOHDjXTpk0zTz31lGnZsqWJioq67Beffvvtt2bKlCkmMjLSBAYGmh49epj33nvPuf/jjz82Q4YMMUFBQaZt27Zm2rRppry83Lm/ffv25le/+pV55JFHTHBwsImLizMvv/yyc/8/v/9Lv6T20i/LXLBggYmJiTEdOnQwxhjzhz/8wfTr188EBwebqKgo89BDD5mSkhJjTN2/+La+X8h5yaXX6tmzp3n99ded969atcr06tXLjBkzpkHPA9iOMzvAdSA4OFjBwcFat26dKioq6jzGx8dHL774ovbu3auVK1dqy5YtmjFjRp3HPvjgg/qv//ov9ejRQ0VFRSoqKtKDDz5Y7wwbN27UN998c8XnvHQ90IkTJzRq1CgNGDBAu3bt0ksvvaTXXntNCxYsqHX8ypUr1aJFC3322WdavHix5s+fr02bNkmSampqNHLkSG3btk2vv/669u3bp0WLFsnX11eSdPjwYSUnJyslJUW7d+/Wn/70J33yySdKS0ur9RrPPvus+vfvr507d+pnP/uZpk6dqvz8fEnS559/LknavHmzioqK9Pbbbzsfl52drfz8fG3atEnr16+XJFVVVemZZ57Rrl27tG7dOh05csT5EVNcXJzeeustSVJ+fr6Kior0P//zP/Wu5/c9+uijWrFihfP28uXL9cgjjzT48YD1PF1bAJrHm2++aVq2bGmCgoLM4MGDzaxZs8yuXbuuePzatWvNTTfd5Lz9/TM7xhiTnp5uevfu3eDX/81vfmMkmTNnztR73C9+8QvTpUsXU1NT47wvIyPDBAcHm+rqamPMP87sDBkypNbjBgwYYGbOnGmMMWbjxo3Gx8fH5Ofn1/kakyZNMlOmTKl138cff2x8fHzMd999Z4z5x5mdn/zkJ879NTU1JjIy0rz00kvGmP9/Nmbnzp21nmfChAkmKirKVFRU1Ps+d+zYYSQ5z5598MEHRlKtM1w/5NKZnZMnT5rAwEBz5MgRc+TIERMUFGROnTrFmR3g/3BmB7hOpKSkqLCwUO+++66Sk5O1detW/ehHP1JmZqakf5yhGDFihNq0aaOQkBA9/PDDOn36tP7+97+75fWNMQ06bv/+/UpISJDD4XDed/vtt6u8vFzHjx933terV69aj4uJidHJkyclSXl5eWrbtq06d+5c52vs2rVLmZmZzjNewcHBSkpKUk1NjQoKCup8DYfDoejoaOdr1Oe2225TQEBArftyc3N13333qV27dgoJCdHQoUMlSUePHv3B5/shrVu31ujRo5WZmakVK1Zo9OjRatWq1VU/L2ALYge4jgQFBenuu+/WnDlztH37dk2cOFHp6ek6cuSI7r33XvXq1UtvvfWWcnNzlZGRIcl9F9heCo8DBw645fn8/f1r3XY4HKqpqZEk3XDDDfU+try8XI899pjy8vKc265du3Tw4EHdfPPNDXqN+rRo0aLW7fPnzyspKUmhoaFatWqVduzYob/85S+S3Le+jz76qDIzM7Vy5Uo9+uijbnlOwBbEDnAd6969u86fP6/c3FzV1NTo2Wef1aBBg9S5c2cVFhbW+9iAgABVV1c3+LXuuecetWrVSosXL65z/6WvXHfr1k05OTm1zgRt27ZNISEhatu2bYNeq1evXjp+/PgVv87+ox/9SPv27dMtt9xy2fbPZ2Su5NJxDVmDAwcO6PTp01q0aJHuuOMOde3a9bIzRI15vrokJyersrJSVVVVSkpKcuk5AFsRO8B14PTp07rrrrv0+uuva/fu3SooKNDatWu1ePFijRkzRrfccouqqqq0dOlS/e1vf9Mf//hHLVu2rN7n7NChgwoKCpSXl6dvvvnmihc+X9KiRQv9/ve/1/vvv6/7779fmzdv1pEjR/TFF19oxowZzp8V87Of/UzHjh3TtGnTdODAAb3zzjtKT0/X9OnT5ePTsH+yhg4dqjvvvFMpKSnatGmTCgoK9Ne//lVZWVmSpJkzZ2r79u1KS0tTXl6eDh48qHfeeeeyC5TrExkZqRtuuEFZWVkqKSlRaWnpFY9t166dAgICnOv77rvv6plnnql1TPv27eVwOLR+/XqdOnVK5eXlDZ5Fknx9fbV//37t27fPeSE2gH8gdoDrQHBwsOLj4/X888/rzjvvVM+ePTVnzhxNnjxZv/3tb9W7d28999xz+s1vfqOePXtq1apVWrhwYb3PmZKSouTkZA0fPlytW7fWG2+88YNzjBkzRtu3b5e/v79+/OMfq2vXrnrooYdUWlrq/LZVmzZttGHDBn3++efq3bu3fvrTn2rSpEmaPXt2o97zW2+9pQEDBuihhx5S9+7dNWPGDOdZk169eunDDz/U119/rTvuuEN9+/bV3LlzFRsb2+Dn9/Pz04svvqiXX35ZsbGxGjNmzBWPbd26tTIzM7V27Vp1795dixYt0pIlS2od06ZNG82bN08///nPFRUV1ajwuiQ0NFShoaGNfhxgO4dp6FWDAAAA1yDO7AAAAKsROwDcYtWqVbW+yv39rUePHp4e75pz9OjRK65ncHCwW76yDlwv+BgLgFucO3dOJSUlde7z9/dX+/btm3mia9vFixd15MiRK+7v0KGD/Pz8mm8g4BpG7AAAAKvxMRYAALAasQMAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAav8P+V6ffwkdGTAAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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aBaNWrMDAADQWjTqys6gQYNOeLtq3bp1jS4IAAAgkBoVdo6t1zmmpqZGxcXF2rZtW70fCAUAAAimRoWdBQsWNNj+wAMPqKqqqkkFAQAABFJA1+z84he/4HexAABASAlo2CksLFR0dHQgDwkAANAkjbqNdd111/ntG2P0+eef691339X06dMDUhgAAEAgNCrsuFwuv/2wsDCde+65mj17tq644oqAFAYAABAIjQo7eXl5ga4DAACgWTQq7BxTVFSknTt3SpJ69eqlvn37BqQoAACAQGlU2Dl48KBGjhyp119/XfHx8ZIkj8ejQYMGadWqVTrjjDMCWSMAAECjNepprMmTJ+urr77S9u3bVV5ervLycm3btk1er1d33HFHoGsEAABotEZd2cnPz9drr72mnj17+trOO+885ebmskAZAACElEZd2amrq1NkZGS99sjISNXV1TW5KAAAgEBpVNi5/PLL9atf/UoHDhzwte3fv1933nmnBg8eHLDiAAAAmqpRYWfx4sXyer3q2rWrunXrpm7duik1NVVer1c5OTmBrhEAAKDRGrVmJyUlRZs3b9Zrr72mDz74QJLUs2dPZWRkBLQ4AACApjqlKzvr1q3TeeedJ6/XK4fDoZ/85CeaPHmyJk+erEsuuUS9evXS//3f/zVXrQAAAKfslMLOwoULlZWVpbi4uHp9LpdLt956q+bPnx+w4gAAAJrqlMLOe++9pyFDhhy3/4orrlBRUVGTiwIAAAiUUwo7ZWVlDT5yfkxERIS++OKLJhcFAAAQKKcUdjp37qxt27Ydt3/r1q1KSkpqclEAAACBckph58orr9T06dN1+PDhen1ff/21Zs6cqauvvjpgxQEAADTVKT16fv/99+v555/XOeeco0mTJuncc8+VJH3wwQfKzc1VbW2t7rvvvmYpFAAAoDFOKewkJibq7bff1i9/+UtlZ2fLGCNJcjgcyszMVG5urhITE5ulUAAAgMY45W9QPvPMM7V27Vp9+eWX2rhxozZs2KAvv/xSa9euVWpqasAL3L9/v37xi1+oQ4cOiomJUe/evfXuu+/6+o0xmjFjhpKSkhQTE6OMjAx99NFHAa8DAAC0To36uQhJat++vS655BL1799f7du3D2RNPhUVFbr00ksVGRmpv//979qxY4cee+wxv/ebN2+eFi1apKVLl2rjxo2KjY1VZmZm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i2D37t2rq666Sm3atFGnTp1099136+jRo35jXn/9dV100UVyOp06++yztWzZsnrHyc3NVdeuXRUdHa20tDS98847zXBGrVurmqOm/zpV63TmmWea2bNnm88//9y3VVVV+forKytNYmKiGT16tNm2bZt59tlnTUxMjHniiSd8Y9566y0THh5u5s2bZ3bs2GHuv/9+ExkZad5//33fmLlz5xqXy2VWr15t3nvvPXPttdea1NRU8/XXX7fo+YaKO+64wwwdOtRIMlu2bPG1M9+BM3/+fFNYWGj27Nlj3nrrLZOenm7S09N9/cx1YPz9738348aNMy+//LL55JNPzJo1a0ynTp3MXXfd5RvDXAfWjBkzzPz5883UqVONy+Wq13/06FFz/vnnm4yMDLNlyxazdu1a07FjR5Odne0b8+mnn5o2bdqYqVOnmh07dpicnBwTHh5u8vPzfWNWrVploqKizNNPP222b99usrKyTHx8vCkrK2uJ02wVWtscndZhZ8GCBcftf/zxx0379u1NdXW1r+2ee+4x5557rm//hhtuMFdddZXf69LS0sytt95qjDGmrq7OuN1u89vf/tbX7/F4jNPpNM8++2yAzqT1WLt2renRo4fZvn17vbDDfDefNWvWGIfDYY4cOWKMYa6b07x580xqaqpvn7luHnl5eQ2GnbVr15qwsDBTWlrqa1uyZImJi4vz/TeYNm2a6dWrl9/rfvazn5nMzEzffv/+/c3EiRN9+7W1tSY5OdnMmTMnwGfSerW2OTptb2NJ0ty5c9WhQwf17dtXv/3tb/0udRYWFupHP/qRoqKifG2ZmZnatWuXKioqfGMyMjL8jpmZmanCwkJJ0u7du1VaWuo3xuVyKS0tzTfmdFFWVqasrCz96U9/Ups2ber1M9/No7y8XCtWrNCAAQMUGRkpibluTpWVlUpISPDtM9ctq7CwUL179/b7QtnMzEx5vV5t377dN+ZE833kyBEVFRX5jQkLC1NGRgbz/W+tcY5O27Bzxx13aNWqVVq/fr1uvfVWPfzww5o2bZqvv7S0tN43MB/bLy0tPeGYb/d/+3UNjTkdGGM0btw43XbbberXr1+DY5jvwLrnnnsUGxurDh06aO/evVqzZo2vj7luHh9//LFycnJ06623+tqY65bVlPn2er36+uuv9eWXX6q2tpb5PoHWOEdWhZ177723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xp7wysupaujW1vFUVVVJkp566imlpaX59YWHh/vtR0ZG+v58LKQcuzX2fe/Zt29fXXjhhVq+fLmuuOIKbd++XS+99NJJ1wmg+bBAGUCrc8EFF6i4uFjl5eXfOzYxMVHJycn69NNPdfbZZ/ttqampp/Se3/c4+y233KJly5YpLy9PGRkZSklJOenjA2g+hB0Aza66ulqlpaV+25dfftno440aNUput1vDhw/XW2+9pU8//VR/+ctf6j09dcysWbM0Z84cLVq0SB9++KHef/995eXlaf78+Sf9ntnZ2dq0aZNuv/12bd26VR988IGWLFnidx4///nPtW/fPj311FO6+eabG31+AAKLsAOg2eXn5yspKclvu+yyyxp9vKioKL3yyivq1KmTrrzySvXu3Vtz586td1vqmFtuuUW///3vlZeXp969e+vHP/6xli1bdkpXds455xy98soreu+999S/f3+lp6drzZo1ioj4z2oAl8ulESNGqG3btho+fHijzw9AYDmMMSbYRQCALQYPHqxevXpp0aJFwS4FwL8RdgAgACoqKvT666/rpz/9qXbs2KFzzz032CUB+DeexgKAAOjbt68qKir0yCOPEHSAEMOVHQAAYDUWKAMAAKsRdgAAgNUIOwAAwGqEHQAAYDXCDgAAsBphBwAAWI2wAwAArEbYAQAAVvt/cExfeEA/TfQAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from matplotlib import pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "for i, column in enumerate(df.columns, 1):\n", - " sns.histplot(df[column])\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Set targets/objectives = efficiency for now" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/vscode/.local/lib/python3.10/site-packages/baybe/telemetry.py:222: UserWarning: WARNING: BayBE Telemetry endpoint https://public.telemetry.baybe.p.uptimize.merckgroup.com:4317 cannot be reached. Disabling telemetry. The exception encountered was: ConnectionError, HTTPConnectionPool(host='verkehrsnachrichten.merck.de', port=80): Max retries exceeded with url: / (Caused by NameResolutionError(\": Failed to resolve 'verkehrsnachrichten.merck.de' ([Errno -2] Name or service not known)\"))\n", - " warnings.warn(\n", - "/home/vscode/.local/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - } - ], - "source": [ - "from baybe.targets import NumericalTarget\n", - "from baybe.objective import Objective\n", - "\n", - "target = NumericalTarget(\n", - " name=\"Efficiency\",\n", - " mode=\"MAX\",\n", - ")\n", - "objective = Objective(mode=\"SINGLE\", targets=[target])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Search Space" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "from baybe.parameters import NumericalContinuousParameter, CategoricalParameter, NumericalDiscreteParameter\n", - "from baybe.searchspace import SearchSpace\n", - "\n", - "basic_parameters=[\n", - "NumericalDiscreteParameter(\n", - " name=\"Time_h\",\n", - " values=df_combined[\"Time_h\"].unique(),\n", - " tolerance=5/60,\n", - "),\n", - "NumericalDiscreteParameter(\n", - " name=\"pH\",\n", - " values=df_combined[\"pH\"].unique(),\n", - " ), \n", - "NumericalDiscreteParameter(\n", - " name=\"Inhib_Concentrat_M\",\n", - " values=df_combined[\"Inhib_Concentrat_M\"].unique(),\n", - " ),\n", - "NumericalDiscreteParameter(\n", - " name=\"Salt_Concentrat_M\",\n", - " values=df_combined[\"Salt_Concentrat_M\"].unique(),\n", - " ),\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Substance parameter**\n", - "\n", - "Instead of values, this parameter accepts data in form of a dictionary. The items correspond to pairs of labels and SMILES. SMILES are string-based representations of molecular structures. Based on these, BayBE can assign each label a set of molecular descriptors as encoding." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'C(=O)(C(=O)[O-])[O-]': 'C(=O)(C(=O)[O-])[O-]', 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O': 'C(C(=O)[O-])C(CC(=O)[O-])(C(=O)[O-])O', 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]': 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Fe+2]', 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]': 'C(C(C(C(C(C(=O)[O-])O)O)O)O)O.C(C(C(C(C(C(=O)[O-])O)O)O)O)O.[Zn+2]', 'C1=CC(=C(C=C1O)O)C=NNC(=S)N': 'C1=CC(=C(C=C1O)O)C=NNC(=S)N', 'C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]': 'C1=CC(=C(C=C1SSC2=CC(=C(C=C2)[N+](=O)[O-])C(=O)O)C(=O)O)[N+](=O)[O-]', 'C1=CC(=CC(=C1)S)C(=O)O': 'C1=CC(=CC(=C1)S)C(=O)O', 'C1=CC2=NNN=C2C=C1Cl': 'C1=CC2=NNN=C2C=C1Cl', 'C1=CC=C(C(=C1)C=NNC(=S)N)O': 'C1=CC=C(C(=C1)C=NNC(=S)N)O', 'C1COCCN1CCCS(=O)(=O)O': 'C1COCCN1CCCS(=O)(=O)O', 'C1N2CN3CN1CN(C2)C3': 'C1N2CN3CN1CN(C2)C3', 'C=CC(=O)OCCOC(=O)OCCSc1ncccn1': 'C=CC(=O)OCCOC(=O)OCCSc1ncccn1', 'CC(=O)O': 'CC(=O)O', 'CC(=O)SSC(=O)C': 'CC(=O)SSC(=O)C', 'CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C': 'CC1(C(N2C(S1)C(C2=O)NC(=O)C(C3=CC=C(C=C3)O)N)C(=O)O)C', 'CCCCCCCC/C=C\\\\CCCCCCCC(=O)O': 'CCCCCCCC/C=C\\\\CCCCCCCC(=O)O', 'CCCCCCCCCCCCCCCCCC(=O)O': 'CCCCCCCCCCCCCCCCCC(=O)O', 'CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCCCCCCCCCOS(=O)(=O)O': 'CCCCCCCCCCCCOS(=O)(=O)O', 'CCCCCCCCCCCCc1ccccc1S([O])([O])O': 'CCCCCCCCCCCCc1ccccc1S([O])([O])O', 'CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]': 'CCCCCCCCN(CC(=O)O[Na])CC(=O)O[Na]', 'CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O': 'CCCCN(CCCC)C1=NC(=NC(=N1)NC(CCSC)C(=O)O)NC(CCSC)C(=O)O', 'CCCCOP(=O)(OCCCC)O': 'CCCCOP(=O)(OCCCC)O', 'CCN(C(=S)S)CC': 'CCN(C(=S)S)CC', 'CCOc1ccc2c(c1)nc([nH]2)S': 'CCOc1ccc2c(c1)nc([nH]2)S', 'CCSc1nnc(s1)N': 'CCSc1nnc(s1)N', 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C': 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C', 'CNCC(C1=CC(=CC=C1)O)O': 'CNCC(C1=CC(=CC=C1)O)O', 'COC(=O)CCCC1=CNC2=CC=CC=C21': 'COC(=O)CCCC1=CNC2=CC=CC=C21', 'COC(=O)n1nnc2ccccc12': 'COC(=O)n1nnc2ccccc12', 'COCCOC(=O)OCSc1nc2c(s1)cccc2': 'COCCOC(=O)OCSc1nc2c(s1)cccc2', 'COc1ccc2c(c1)[nH]c(=S)[nH]2': 'COc1ccc2c(c1)[nH]c(=S)[nH]2', 'COc1cccc(c1)c1n[nH]c(=S)[nH]1': 'COc1cccc(c1)c1n[nH]c(=S)[nH]1', 'CS[C]1N[N]C(=N1)N': 'CS[C]1N[N]C(=N1)N', 'CSc1[nH]c2c(n1)cc(c(c2)C)C': 'CSc1[nH]c2c(n1)cc(c(c2)C)C', 'CSc1nnc(s1)N': 'CSc1nnc(s1)N', 'Cc1cc(C)nc(n1)S': 'Cc1cc(C)nc(n1)S', 'Cc1ccc(c(c1)n1nc2c(n1)cccc2)O': 'Cc1ccc(c(c1)n1nc2c(n1)cccc2)O', 'Cc1ccc2c(c1)nc([nH]2)S': 'Cc1ccc2c(c1)nc([nH]2)S', 'Cc1n[nH]c(=S)s1': 'Cc1n[nH]c(=S)s1', 'Cc1nsc(c1)N': 'Cc1nsc(c1)N', 'ClC([C]1N[N]C=N1)(Cl)Cl': 'ClC([C]1N[N]C=N1)(Cl)Cl', 'Clc1cc2[nH]c(=S)[nH]c2cc1Cl': 'Clc1cc2[nH]c(=S)[nH]c2cc1Cl', 'Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O': 'Clc1ccc(cc1)CC[C@](C(C)(C)C)(Cn1cncn1)O', 'Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1': 'Clc1ccc(cc1Cl)c1n[nH]c(=S)[nH]1', 'Clc1ccc2c(c1)[nH]c(n2)S': 'Clc1ccc2c(c1)[nH]c(n2)S', 'Clc1cccc(c1)c1n[nH]c(=S)[nH]1': 'Clc1cccc(c1)c1n[nH]c(=S)[nH]1', 'Cn1cnnc1S': 'Cn1cnnc1S', 'Cn1nnnc1S': 'Cn1nnnc1S', 'N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]': 'N.N.[N+](=O)(O)[O-].[N+](=O)(O)[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].O.O.O.O.[Ce+3]', 'NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O': 'NC(=S)NN=CC1=C(C(=C(C=C1)O)O)O', 'NCC(=O)O': 'NCC(=O)O', 'NO': 'NO', 'Nc1cc(N)nc(n1)S': 'Nc1cc(N)nc(n1)S', 'Nc1cc(S)nc(n1)N': 'Nc1cc(S)nc(n1)N', 'Nc1ccc2c(c1)sc(=S)[nH]2': 'Nc1ccc2c(c1)sc(=S)[nH]2', 'Nc1ccnc(n1)S': 'Nc1ccnc(n1)S', 'Nc1n[nH]c(=S)s1': 'Nc1n[nH]c(=S)s1', 'Nc1n[nH]c(n1)S': 'Nc1n[nH]c(n1)S', 'Nc1n[nH]cn1': 'Nc1n[nH]cn1', 'Nc1nc([nH]n1)C(=O)O': 'Nc1nc([nH]n1)C(=O)O', 'Nc1ncncc1N': 'Nc1ncncc1N', 'Nn1c(NN)nnc1S': 'Nn1c(NN)nnc1S', 'Nn1c(S)nnc1c1ccccc1': 'Nn1c(S)nnc1c1ccccc1', 'Nn1cnnc1': 'Nn1cnnc1', 'O/N=C(/C(=N/O)/C)\\\\C': 'O/N=C(/C(=N/O)/C)\\\\C', 'O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1': 'O/N=C(\\\\C(=N/O)\\\\c1ccco1)/c1ccco1', 'O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]': 'O=C([O-])C(O)C(O)C(O)C(O)CO.[Na+]', 'OC(=O)/C=C/c1ccccc1': 'OC(=O)/C=C/c1ccccc1', 'OC(=O)CCCCC(=O)O': 'OC(=O)CCCCC(=O)O', 'OC(=O)CCCCCCCCCCCCCCC(=O)O': 'OC(=O)CCCCCCCCCCCCCCC(=O)O', 'OC(=O)CCS': 'OC(=O)CCS', 'OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O': 'OC(=O)CN(CC(=O)O)CCN(CC(=O)O)CC(=O)O', 'OC(=O)CS': 'OC(=O)CS', 'OC(=O)Cn1nnnc1S': 'OC(=O)Cn1nnnc1S', 'OC(=O)c1ccc(=S)[nH]c1': 'OC(=O)c1ccc(=S)[nH]c1', 'OC(=O)c1ccc(cc1)N': 'OC(=O)c1ccc(cc1)N', 'OC(=O)c1ccc(cc1)S': 'OC(=O)c1ccc(cc1)S', 'OC(=O)c1ccc(cc1)c1ccccc1': 'OC(=O)c1ccc(cc1)c1ccccc1', 'OC(=O)c1ccccc1': 'OC(=O)c1ccccc1', 'OC(=O)c1ccccc1O': 'OC(=O)c1ccccc1O', 'OC(=O)c1ccccc1S': 'OC(=O)c1ccccc1S', 'OC(=O)c1ccccn1': 'OC(=O)c1ccccn1', 'OC(=O)c1cccnc1': 'OC(=O)c1cccnc1', 'OC(=O)c1cccnc1S': 'OC(=O)c1cccnc1S', 'OC(=O)c1ccncc1': 'OC(=O)c1ccncc1', 'OC(=O)c1n[nH]c(n1)N': 'OC(=O)c1n[nH]c(n1)N', 'OCC(CO)O': 'OCC(CO)O', 'OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O': 'OC[C@H]([C@H]([C@@H]([C@@H](CO)O)O)O)O', 'OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O': 'OC[C@H]([C@H]([C@@H]([C@H](C(=O)O)O)O)O)O', 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O': 'OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O', 'O[C@H]1C(=O)OCC1(C)C': 'O[C@H]1C(=O)OCC1(C)C', 'Oc1ccc(cc1)C(=O)O': 'Oc1ccc(cc1)C(=O)O', 'Oc1ccc(cc1)S([O])([O])O': 'Oc1ccc(cc1)S([O])([O])O', 'Oc1cccc2c1nccc2': 'Oc1cccc2c1nccc2', 'Oc1ccccc1c1nnc([nH]1)S': 'Oc1ccccc1c1nnc([nH]1)S', 'On1nnc2c1cccc2': 'On1nnc2c1cccc2', 'S=c1[nH]c2c([nH]1)c(=O)n(cn2)C': 'S=c1[nH]c2c([nH]1)c(=O)n(cn2)C', 'S=c1[nH]c2c([nH]1)cncn2': 'S=c1[nH]c2c([nH]1)cncn2', 'S=c1[nH]c2c([nH]1)nccn2': 'S=c1[nH]c2c([nH]1)nccn2', 'S=c1[nH]nc([nH]1)c1cccnc1': 'S=c1[nH]nc([nH]1)c1cccnc1', 'S=c1[nH]nc([nH]1)c1ccco1': 'S=c1[nH]nc([nH]1)c1ccco1', 'S=c1[nH]nc([nH]1)c1ccncc1': 'S=c1[nH]nc([nH]1)c1ccncc1', 'S=c1sc2c([nH]1)cccc2': 'S=c1sc2c([nH]1)cccc2', 'SC#N': 'SC#N', 'S[C]1NC2=C[CH]C=NC2=N1': 'S[C]1NC2=C[CH]C=NC2=N1', 'Sc1n[nH]cn1': 'Sc1n[nH]cn1', 'Sc1nc(N)c(c(n1)S)N': 'Sc1nc(N)c(c(n1)S)N', 'Sc1nc(N)c2c(n1)[nH]nc2': 'Sc1nc(N)c2c(n1)[nH]nc2', 'Sc1nc2c([nH]1)cccc2': 'Sc1nc2c([nH]1)cccc2', 'Sc1ncc[nH]1': 'Sc1ncc[nH]1', 'Sc1ncccn1': 'Sc1ncccn1', 'Sc1nnc(s1)S': 'Sc1nnc(s1)S', '[Cl-].[Cl-].[Cl-].[Ce+3]': '[Cl-].[Cl-].[Cl-].[Ce+3]', '[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]': '[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+3]', '[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]': '[NH4+].[NH4+].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[N+](=O)([O-])[O-].[Ce+4]', '[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]': '[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[O-]S(=O)(=O)[O-].[Ce+3].[Ce+3]', '[O-]S(=O)[O-].[Na+].[Na+]': '[O-]S(=O)[O-].[Na+].[Na+]', 'c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]': 'c1cc(ccc1c2[nH]c(nn2)S)[N+](=O)[O-]', 'c1ccc(nc1)c1ccccn1': 'c1ccc(nc1)c1ccccn1', 'c1ccc2c(c1)[nH]nn2': 'c1ccc2c(c1)[nH]nn2', 'c1ncn[nH]1': 'c1ncn[nH]1', 'C(C(CO)([N+](=O)[O-])Br)O': 'C(C(CO)([N+](=O)[O-])Br)O', 'C(CC=O)CC=O': 'C(CC=O)CC=O', 'C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O': 'C1=CC(=C(C=C1F)F)C(CN2C=NC=N2)(CN3C=NC=N3)O', 'C1=CC(=CN=C1)C=NNC(=S)N': 'C1=CC(=CN=C1)C=NNC(=S)N', 'C1=CC(=NC(=C1)N)N': 'C1=CC(=NC(=C1)N)N', 'C1=CC=C(C=C1)C(C2=CC=CC=C2)(C3=CC=CC=C3Cl)N4C=CN=C4': 'C1=CC=C(C=C1)C(C2=CC=CC=C2)(C3=CC=CC=C3Cl)N4C=CN=C4', 'C1=CC=NC(=C1)C=NNC(=S)N': 'C1=CC=NC(=C1)C=NNC(=S)N', 'C1=CN=C(C=N1)C(=O)N': 'C1=CN=C(C=N1)C(=O)N', 'C1=CN=C(N=C1)N': 'C1=CN=C(N=C1)N', 'C1=CN=CC=C1C=NNC(=S)N': 'C1=CN=CC=C1C=NNC(=S)N', 'C1CCC(=NO)CC1': 'C1CCC(=NO)CC1', 'C=CC1=C(N2C(C(C2=O)NC(=O)C(=NOCC(=O)O)C3=CSC(=N3)N)SC1)C(=O)O': 'C=CC1=C(N2C(C(C2=O)NC(=O)C(=NOCC(=O)O)C3=CSC(=N3)N)SC1)C(=O)O', 'CC(=NO)C': 'CC(=NO)C', 'CC(C)(C)NCC(COC1=CC=CC2=C1CC(C(C2)O)O)O': 'CC(C)(C)NCC(COC1=CC=CC2=C1CC(C(C2)O)O)O', 'CC(C)(C)NCC(COC1=NSN=C1N2CCOCC2)O': 'CC(C)(C)NCC(COC1=NSN=C1N2CCOCC2)O', 'CC(C)NCC(COC1=CC=C(C=C1)CC(=O)N)O': 'CC(C)NCC(COC1=CC=C(C=C1)CC(=O)N)O', 'CC(C)NCC(COC1=CC=CC2=CC=CC=C21)O': 'CC(C)NCC(COC1=CC=CC2=CC=CC=C21)O', 'CC(OC(=O)C)OC(=O)C1=C(CSC2N1C(=O)C2NC(=O)C(=NOC)C3=CC=CO3)COC(=O)N': 'CC(OC(=O)C)OC(=O)C1=C(CSC2N1C(=O)C2NC(=O)C(=NOC)C3=CC=CO3)COC(=O)N', 'CC1=CC=C(C=C1)[N]2N=NC=C2O': 'CC1=CC=C(C=C1)[N]2N=NC=C2O', 'CC1=CN=C(C=N1)C(=O)N': 'CC1=CN=C(C=N1)C(=O)N', 'CC1=NC(=CC=C1)C': 'CC1=NC(=CC=C1)C', 'CCC(=NO)C': 'CCC(=NO)C', 'CCOC(=O)C1=C(C)N=C(S)NC1C2=CC=C(C=C2)Cl': 'CCOC(=O)C1=C(C)N=C(S)NC1C2=CC=C(C=C2)Cl', 'CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O': 'CN(C)CC1CCCCC1(C2=CC(=CC=C2)OC)O', 'COC(=O)C1=CC=C(C=C1)[N]2N=NC=C2O': 'COC(=O)C1=CC=C(C=C1)[N]2N=NC=C2O', 'COC1=NC=C(N=C1)C(=O)N': 'COC1=NC=C(N=C1)C(=O)N', 'NC(N)=S': 'NC(N)=S', 'NC1=CCNC(=S)N1': 'NC1=CCNC(=S)N1', 'OC1=C(C=CC=C1)C=NC2=CC=C(C=C2)N=NC3=C(C=CC=C3)N=CC4=C(C=CC=C4)O': 'OC1=C(C=CC=C1)C=NC2=CC=C(C=C2)N=NC3=C(C=CC=C3)N=CC4=C(C=CC=C4)O', 'OC1=CN=N[N]1C2=CC=C(C=C2)Cl': 'OC1=CN=N[N]1C2=CC=C(C=C2)Cl'}\n" - ] - } - ], - "source": [ - "#Create a dictionary of unique SMILES representations found in the dataframe\n", - "\n", - "unique_SMILES = df_combined[\"SMILES\"].unique()\n", - "\n", - "dic_SMILES = dict(zip(unique_SMILES, unique_SMILES))\n", - "\n", - "print(dic_SMILES)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "from baybe.parameters import SubstanceParameter\n", - "\n", - "mordred_parameters = basic_parameters + [\n", - " SubstanceParameter(\n", - " name=\"SMILES\",\n", - " data=dic_SMILES,\n", - " encoding=\"MORDRED\",\n", - " )\n", - "]\n", - "\n", - "rdkit_parameters = basic_parameters + [\n", - " SubstanceParameter(\n", - " name=\"SMILES\",\n", - " data=dic_SMILES,\n", - " encoding=\"RDKIT\",\n", - " )\n", - "]\n", - "\n", - "morganfp_parameters = basic_parameters + [\n", - " SubstanceParameter(\n", - " name=\"SMILES\",\n", - " data=dic_SMILES,\n", - " encoding=\"MORGAN_FP\",\n", - " )\n", - "]\n", - "\n", - "ohe_parameters = basic_parameters + [\n", - " CategoricalParameter(\n", - " name=\"SMILES\",\n", - " values=unique_SMILES,\n", - " encoding=\"OHE\",\n", - " )\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "searchspace_mordred = SearchSpace.from_dataframe(df.drop(\"Efficiency\", axis = 1), mordred_parameters)\n", - "searchspace_rdkit = SearchSpace.from_dataframe(df.drop(\"Efficiency\", axis = 1), rdkit_parameters)\n", - "searchspace_morganfp = SearchSpace.from_dataframe(df.drop(\"Efficiency\", axis = 1), morganfp_parameters)\n", - "searchspace_ohe = SearchSpace.from_dataframe(df.drop(\"Efficiency\", axis = 1), ohe_parameters)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Recommenders" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The **SequentialGreedyRecommender** is a powerful recommender that leverages BoTorch optimization functions to perform sequential Greedy optimization. It can be applied for discrete, continuous and hybrid sarch spaces. It is an implementation of the BoTorch optimization functions for discrete, continuous and mixed spaces. **It is important to note that this recommender performs a brute-force search when applied in hybrid search spaces, as it optimizes the continuous part of the space while exhaustively searching choices in the discrete subspace.** You can customize this behavior to only sample a certain percentage of the discrete subspace via the sample_percentage attribute and to choose different sampling strategies via the hybrid_sampler attribute. \n", - "\n", - "e.g.\n", - "strategy = TwoPhaseStrategy(recommender=SequentialGreedyRecommender(hybrid_sampler=\"Farthest\", sampling_percentage=0.3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For implementing fully customized surrogate models e.g. from sklearn or PyTorch, see:\n", - "https://emdgroup.github.io/baybe/examples/Custom_Surrogates/Custom_Surrogates.html\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "from baybe.recommenders import (\n", - " SequentialGreedyRecommender,\n", - " FPSRecommender,\n", - " TwoPhaseMetaRecommender,\n", - ")\n", - "\n", - "recommender = TwoPhaseMetaRecommender(\n", - " initial_recommender=FPSRecommender(), # farthest point sampling\n", - " recommender=SequentialGreedyRecommender(), # Bayesian model-based optimization\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Campaign Strategy" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "from baybe.strategies import TwoPhaseStrategy\n", - "from baybe import Campaign\n", - "\n", - "campaign_rdkit = Campaign(searchspace_rdkit, objective)\n", - "campaign_mordred = Campaign(searchspace_mordred, objective)\n", - "campaign_morganfp = Campaign(searchspace_morganfp, objective)\n", - "campaign_ohe = Campaign(searchspace_ohe, objective)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Start simulation" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "scenarios = {\n", - " \"OHE\" : campaign_ohe,\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/10 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "sns.lineplot(\n", - " data=results,\n", - " x=\"Num_Experiments\",\n", - " y=\"Efficiency_CumBest\",\n", - " hue=\"Scenario\",\n", - " marker=\"x\",\n", - ")\n", - "\n", - "plt.xlim(0, N_DOE_ITERATIONS)\n", - "plt.ylim(0, 100)\n", - "\n", - "plt.savefig(\"Scenarios\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Evalute best results" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index(['Scenario', 'Random_Seed', 'Iteration', 'Num_Experiments',\n", - " 'Efficiency_Measurements', 'Efficiency_IterBest', 'Efficiency_CumBest'],\n", - " dtype='object')\n" - ] - } - ], - "source": [ - "print(results.columns)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Use transfer learning on other metals" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define the training function (i.e. the previously investigated larger data set) and the yet to be optimized data sets." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "from baybe.parameters import TaskParameter\n", - "\n", - "taskparam = TaskParameter(\n", - " name=\"Al_alloys\",\n", - " values=[\"AA1000\", \"AA2024\"],\n", - " active_values=[\"AA2024\"],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "unique_SMILES_transfer = df_transfer[\"SMILES\"].unique()" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "from baybe.parameters import NumericalContinuousParameter, CategoricalParameter, NumericalDiscreteParameter\n", - "from baybe.searchspace import SearchSpace\n", - "\n", - "transfer_parameters=[\n", - "NumericalDiscreteParameter(\n", - " name=\"Time_h\",\n", - " values=df_combined[\"Time_h\"].unique(),\n", - " tolerance=5/60,\n", - "),\n", - "NumericalDiscreteParameter(\n", - " name=\"pH\",\n", - " values=df_combined[\"pH\"].unique(),\n", - " ), \n", - "NumericalDiscreteParameter(\n", - " name=\"Inhib_Concentrat_M\",\n", - " values=df_combined[\"Inhib_Concentrat_M\"].unique(),\n", - " ),\n", - "NumericalDiscreteParameter(\n", - " name=\"Salt_Concentrat_M\",\n", - " values=df_combined[\"Salt_Concentrat_M\"].unique(),\n", - " ),\n", - "CategoricalParameter(\n", - " name=\"SMILES\",\n", - " values=unique_SMILES,\n", - " encoding=\"OHE\",\n", - " )\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [], - "source": [ - "searchspace_transfer = SearchSpace.from_dataframe(df_transfer.drop(\"Efficiency\", axis = 1), transfer_parameters)\n", - "\n", - "campaign_transfer = Campaign(searchspace_transfer, objective)" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [], - "source": [ - "df_features = df.drop(\"Efficiency\", axis = 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/1 [00:00\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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Time_hpHInhib_Concentrat_MSalt_Concentrat_MEfficiency
count258.000000258.000000258.000000258.000000258.000000
mean161.0910856.5798450.0081030.12740338.761628
std214.5363172.2416080.0143350.177444158.903313
min0.5000000.0000000.0000100.000000-1760.000000
25%24.0000005.4000000.0010000.05000030.000000
50%24.0000007.0000000.0010000.10000057.500000
75%240.0000007.0000000.0100000.10000087.825000
max672.00000010.0000000.1000000.600000100.000000
\n", - "" - ], - "text/plain": [ - " Time_h pH Inhib_Concentrat_M Salt_Concentrat_M \\\n", - "count 258.000000 258.000000 258.000000 258.000000 \n", - "mean 161.091085 6.579845 0.008103 0.127403 \n", - "std 214.536317 2.241608 0.014335 0.177444 \n", - "min 0.500000 0.000000 0.000010 0.000000 \n", - "25% 24.000000 5.400000 0.001000 0.050000 \n", - "50% 24.000000 7.000000 0.001000 0.100000 \n", - "75% 240.000000 7.000000 0.010000 0.100000 \n", - "max 672.000000 10.000000 0.100000 0.600000 \n", - "\n", - " Efficiency \n", - "count 258.000000 \n", - "mean 38.761628 \n", - "std 158.903313 \n", - "min -1760.000000 \n", - "25% 30.000000 \n", - "50% 57.500000 \n", - "75% 87.825000 \n", - "max 100.000000 " - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fraction_df.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "No objects to concatenate", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[65], line 7\u001b[0m\n\u001b[1;32m 4\u001b[0m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFraction\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m fractions[i]\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# Concatenate the dataframes into a single dataframe\u001b[39;00m\n\u001b[0;32m----> 7\u001b[0m concatenated_df \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconcat\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresults_transfer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mignore_index\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;66;03m# Print the concatenated dataframe\u001b[39;00m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(concatenated_df)\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:382\u001b[0m, in \u001b[0;36mconcat\u001b[0;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[0m\n\u001b[1;32m 379\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m copy \u001b[38;5;129;01mand\u001b[39;00m using_copy_on_write():\n\u001b[1;32m 380\u001b[0m copy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m--> 382\u001b[0m op \u001b[38;5;241m=\u001b[39m \u001b[43m_Concatenator\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 383\u001b[0m \u001b[43m \u001b[49m\u001b[43mobjs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 384\u001b[0m \u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 385\u001b[0m \u001b[43m \u001b[49m\u001b[43mignore_index\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mignore_index\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 386\u001b[0m \u001b[43m \u001b[49m\u001b[43mjoin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 387\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkeys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 388\u001b[0m \u001b[43m \u001b[49m\u001b[43mlevels\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlevels\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 389\u001b[0m \u001b[43m \u001b[49m\u001b[43mnames\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnames\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 390\u001b[0m \u001b[43m \u001b[49m\u001b[43mverify_integrity\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mverify_integrity\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 391\u001b[0m \u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 392\u001b[0m \u001b[43m \u001b[49m\u001b[43msort\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msort\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 393\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 395\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m op\u001b[38;5;241m.\u001b[39mget_result()\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:445\u001b[0m, in \u001b[0;36m_Concatenator.__init__\u001b[0;34m(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)\u001b[0m\n\u001b[1;32m 442\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverify_integrity \u001b[38;5;241m=\u001b[39m verify_integrity\n\u001b[1;32m 443\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcopy \u001b[38;5;241m=\u001b[39m copy\n\u001b[0;32m--> 445\u001b[0m objs, keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_clean_keys_and_objs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobjs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeys\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;66;03m# figure out what our result ndim is going to be\u001b[39;00m\n\u001b[1;32m 448\u001b[0m ndims \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_ndims(objs)\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/reshape/concat.py:507\u001b[0m, in \u001b[0;36m_Concatenator._clean_keys_and_objs\u001b[0;34m(self, objs, keys)\u001b[0m\n\u001b[1;32m 504\u001b[0m objs_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(objs)\n\u001b[1;32m 506\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(objs_list) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 507\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo objects to concatenate\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 509\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keys \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 510\u001b[0m objs_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(com\u001b[38;5;241m.\u001b[39mnot_none(\u001b[38;5;241m*\u001b[39mobjs_list))\n", - "\u001b[0;31mValueError\u001b[0m: No objects to concatenate" - ] - } - ], - "source": [ - "# Add an additional column to each dataframe\n", - "fractions = (0.01, 0.2)\n", - "for i, df in enumerate(results_transfer):\n", - " df['Fraction'] = fractions[i]\n", - "\n", - "# Concatenate the dataframes into a single dataframe\n", - "concatenated_df = pd.concat(results_transfer, ignore_index=True)\n", - "\n", - "# Print the concatenated dataframe\n", - "print(concatenated_df)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Random_SeedIterationNum_ExperimentsEfficiency_IterBestEfficiency_CumBest
count50.050.0000050.0000050.00000050.000000
mean1337.024.5000025.5000068.42471886.399133
std0.014.5773814.5773823.77539911.036087
min1337.00.000001.000004.39000057.000000
25%1337.012.2500013.2500050.80600078.380000
50%1337.024.5000025.5000079.91000090.000000
75%1337.036.7500037.7500087.32821493.590000
max1337.049.0000050.0000096.20000096.200000
\n", - "
" - ], - "text/plain": [ - " Random_Seed Iteration Num_Experiments Efficiency_IterBest \\\n", - "count 50.0 50.00000 50.00000 50.000000 \n", - "mean 1337.0 24.50000 25.50000 68.424718 \n", - "std 0.0 14.57738 14.57738 23.775399 \n", - "min 1337.0 0.00000 1.00000 4.390000 \n", - "25% 1337.0 12.25000 13.25000 50.806000 \n", - "50% 1337.0 24.50000 25.50000 79.910000 \n", - "75% 1337.0 36.75000 37.75000 87.328214 \n", - "max 1337.0 49.00000 50.00000 96.200000 \n", - "\n", - " Efficiency_CumBest \n", - "count 50.000000 \n", - "mean 86.399133 \n", - "std 11.036087 \n", - "min 57.000000 \n", - "25% 78.380000 \n", - "50% 90.000000 \n", - "75% 93.590000 \n", - "max 96.200000 " - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "results = " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ax = sns.lineplot(\n", - " data=result_fraction,\n", - " marker=\"o\",\n", - " markersize=10,\n", - " x=\"Num_Experiments\",\n", - " y=\"Efficiency_CumBest\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGxCAYAAACXwjeMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJYElEQVR4nO3deVxU5f4H8M+ZGWZhGUBFFkNExB3N1Ig0TSWVzLRscalUKrMoUzPTm0tqinrvL00zvbaglUu26K3uVQtKuprikorbNURcSsBSmJEdZs7vD52RkUVmmJkzA5/36zWvl5zzcPhyWs7H53nO8wiiKIogIiIiclMyqQsgIiIiqg+GGSIiInJrDDNERETk1hhmiIiIyK0xzBAREZFbY5ghIiIit8YwQ0RERG6NYYaIiIjcmkLqAhzNaDTi0qVL8PHxgSAIUpdDREREdSCKIq5du4aQkBDIZLX3vTT4MHPp0iWEhoZKXQYRERHZ4OLFi7jjjjtqbdPgw4yPjw+A6zdDq9VKXA0RERHVhV6vR2hoqPk5XpsGH2ZMQ0tarZZhhoiIyM3UZYoIJwATERGRW2OYISIiIrfGMENERERujWGGiIiI3BrDDBEREbk1hhkiIiJyawwzRERE5NYa/DozRGS94jIDAEAhF1BhEAEAGqXcpdu4Yk2s2/XauGJNDb1uZ5A8zFy7dg2zZ8/G1q1bcfnyZXTr1g3vvvsuevbsCeD63gxz587FBx98gPz8fPTq1QurV69GZGSkxJUTNTxFZRUoKjMgaXcWdpzIgb64AlqNAoM7BWF873B4KeUQAZdp46mUw1OpYN2sm3W7YN3OJIiiKDr1J97iySefxPHjx7F69WqEhITgs88+w7Jly3Dy5Em0aNECS5YsQWJiItavX4/w8HDMnj0bx44dw8mTJ6FWq297fb1eD19fX+h0Oq4ATFSLknID1qRmYkVKBozV/F8h1F+Db1/pjXW/nHOJNjIBmDWkA0ZFh+GfrJt1s26XaCMTgEkDIjGxbwTUHvXrpbHm+S1pmCkuLoaPjw/+9a9/YciQIebj3bt3R1xcHBYsWICQkBC89tprmDZtGgBAp9MhMDAQ69atw8iRI2/7MxhmiG6vqKwCa38+i+XJGTW2+fbl3vj+ZA5W/njGJdqY2iWfysW7KaybdbNuV2hjMjk2EhP6tK5XD401z29JJwBXVFTAYDBU6WHRaDTYvXs3srKykJOTg9jYWPM5X19fREdHY+/evdVes7S0FHq93uJDRLUrKjNgRS3/w4wObwJ/Lw+s+qnm/4k5s03ldit/ZN2sm3W7QpvKVqRkmOfUOIOkYcbHxwcxMTFYsGABLl26BIPBgM8++wx79+5FdnY2cnJyAACBgYEW3xcYGGg+d6vExET4+vqaP6GhoQ7/PYjcWXGZAR/vzqq2y9jk6XvCsGHfBZdp44o1sW7Xa+OKNTX0uk2MIpC055zTAo3kr2Z/+umnEEURLVq0gEqlwooVKzBq1CjIZLaVNnPmTOh0OvPn4sWLdq6YqOHZeaL6vxyY3B3eBN+fdJ02rlgT63a9Nq5YU0Ovu7Ltx7Otal8fkoeZiIgIpKamoqCgABcvXsT+/ftRXl6O1q1bIygoCACQm5tr8T25ubnmc7dSqVTQarUWHyKqmUIuQF9cUWsbL5XCpdq4Yk2s2/XauGJNDb3uyvQlFVDIBau+x1aShxkTLy8vBAcHIy8vDzt37sSwYcMQHh6OoKAgpKSkmNvp9XqkpaUhJiZGwmqJGo4KgwitpvZJeoWlFS7VxhVrYt2u18YVa2rodVemVSvM6884muRhZufOndixYweysrLwww8/oF+/fmjfvj3Gjx8PQRAwefJkvP322/jmm29w7NgxPPPMMwgJCcHw4cOlLp2owRjcqfqeTpP9WVcxsKPrtHHFmli367VxxZoaet2VxXUOtqp9fUgeZnQ6HRISEtC+fXs888wz6N27N3bu3AkPDw8AwPTp0/HKK69gwoQJ6NmzJwoKCrBjx446rTFDRLenUcoxvnc4ZLX0Bn+67zzG3NPSZdq4Yk2s2/XauGJNDb1uE5kAjO/VymkrAkseZp544glkZmaitLQU2dnZeO+99+Dr62s+LwgC5s+fj5ycHJSUlCA5ORlt27aVsGKihsdTKcekATWvqp2WdRV5heVI6NfGJdpUbvdKf9bNulm3K7Sp7NUBkU7d2kDyMENE0vNUKjCxbwQmDWhT49+8XtxwCM/2Dsfk2EiXaCMTgP3nruDF+yNcpibWzbpZ9/UF817oG+HULQ0k387A0bgCMFHd5OpLcFlfCn8vD2xKu4gdJ7KhL6mAVq1AXOdgjO/VCp439mUpLjMgac85bD8ubRtNpb1rXKUm1s26Wbd99mZym+0MnIFhhqhu3k3OwLLk3zCyZyhmP9QRMkFwmZ13G/quwq5WE+t2vTauWJOjd8225vkt+a7ZRCQ9o1HEloPXF5hs4aeBl+rm/xpq2iuu8v+0XKGNK9bEul2vjSvW1NDrdgbOmSEi7Mn8C3/kF8NLJceQLs57nZKIyB4YZogImw9c75W5v21zhDfzkrgaIiLrMMwQNXJXC8vw/Y29mQZ2DIQgOGf5cSIie2GYIWrkth7+A+UGEW0CvDGgY+Dtv4GIyMUwzBA1YqIo4vMDFwAAD3QMhLeK7wQQkfthmCFqxI5czMdvuQVQKmQY0sW6fVeIiFwFwwxRI/b5jYm/vSOaoUOw721aExG5JvYpuwEuuuR6NTWMuo3o2zYAWX8V4oGOgZDXdQc5IiIXwzDjworKKlBUZkDS7izsOJEDfXEFtBoFBncKwvje4fC6sax0bW08Ky2HXd9rObMN63ZOm4Edg/DOE13hq/GQ5N9xIiJ74HYGLqqk3IA1qZlYkZIBYzX/hEL9Nfj2ld5Y98u5GtvIBGDWkA4YFR2Gf9bzWs5sw7qdX/ekAZGY2DcCaqmX8SQiuoF7M1XijmGmqKwCa38+i+XJGTW2+fbl3vj+ZA5W/nim1mt9+3JvJJ/Kxbsp9buWM9uwbufXDVzf6XZCn9ZO3emWiKgm1jy/OQHYBRWVGbCilodhdHgT+Ht5YNVPtT+gTO1W/li/azmzDet2ft0mK1IyzHNqiIjcCcOMiykuM+Dj3VnVDgeYPH1PGDbsu1Brm7q2c7U2rlhTQ6/bxCgCSXvOMdAQkdthmHFBO28sLV+Tu8Ob4PuTtbepaztXa+OKNTX0uivbfjzbqvZERK6AYcbFKOQC9MUVtbbxUilu26au7VytjSvW1NDrrkxfUgGFnK9oE5F7YZhxMRUGEVpN7RMwC0srbtumru1crY0r1tTQ665Mq1aY16ghInIXDDMuaHCn2peV3591FQM73n7p+bq0c7U2rlhTQ6+7srjOwVa1JyJyBQwzLkajlGN873DUthjrp/vOY8w9LWttU9d2rtbGFWtq6HWbyARgfK9W1a5kTETkyhhmXJCnUo5JAyJrPJ+WdRV5heVI6Nem1uuY2r3Sv37XcmYb1u38uk1eHRDJIENEbolhxgV5KhWY2DcCk2Mja/xb9YsbDuHZ3uG1tpEJwP5zV/Di/fW/ljPbsG7n1z05NhIv9I3ggnlE5Ja4ArALKyqruLHuzDnsOJENfUkFtGoF4joHY3yvVvC8sedOcZkBSXvOYfvxqm00lfYKqq1dXa7lzDasW5q6iYhcBbczqMSdw4zJ2T8L4KVSwEelgCBc/+t1w9zFmXW7QhsiIldgzfObfxVzAz/+7zLe/vcp9Ilshk+eja62TeUHUm17Bdalnau1ccWaGnrdRETuhHNm3ICuuBwA4KP2kLgSIiIi18Mw4wbyisoAAN5qdqQRERHdimHGDeQXXe+Z0TLMEBERVcEw4wZMYYbDTERERFVJGmYMBgNmz56N8PBwaDQaREREYMGCBaj8gtW4ceMgCILFZ/DgwRJW7XymYSYf9swQERFVIenTccmSJVi9ejXWr1+PTp064eDBgxg/fjx8fX0xadIkc7vBgwcjKSnJ/LVKpZKiXMmYemaaeSslroSIiMj1SBpmfvnlFwwbNgxDhgwBALRq1QqbNm3C/v37LdqpVCoEBVm3YV5Dkn+jZ6aJV+MKcURERHUh6TDTvffei5SUFPz2228AgKNHj2L37t2Ii4uzaLdr1y40b94c7dq1w4svvogrV67UeM3S0lLo9XqLjzsrqzCi8MZCZwE+DDNERES3krRnZsaMGdDr9Wjfvj3kcjkMBgMWLlyIMWPGmNsMHjwYjz76KMLDw5GZmYm//e1viIuLw969eyGXV131KzExEfPmzXPmr+FQ+cXXe2UEAE29OMxERER0K0nDzJYtW7BhwwZs3LgRnTp1wpEjRzB58mSEhIRg7NixAICRI0ea20dFRaFLly6IiIjArl27MGDAgCrXnDlzJqZOnWr+Wq/XIzQ01PG/jIOY5st4qxRcdp6IiKgakoaZ119/HTNmzDAHlqioKJw/fx6JiYnmMHOr1q1bo1mzZjhz5ky1YUalUjWoCcI3X8tWQCnnm/RERES3kvTpWFRUBJnMsgS5XA6j0Vjj9/z++++4cuUKgoODHV2eS7j5WrYHFAwzREREVUjaMzN06FAsXLgQLVu2RKdOnXD48GG88847iI+PBwAUFBRg3rx5GDFiBIKCgpCZmYnp06ejTZs2GDRokJSlO42uUs8MERERVSXpE3LlypWYPXs2XnrpJVy+fBkhISF44YUXMGfOHADXe2nS09Oxfv165OfnIyQkBAMHDsSCBQsa1FBSbbhgHhERUe0kfUL6+Phg+fLlWL58ebXnNRoNdu7c6dyiXEwetzIgIiKqFSdhuDhdMXtmiIiIasMw4+LyCm/0zKgYZoiIiKrDMOPi8otvvs1EREREVTHMuDjTOjO+ngwzRERE1WGYcXGmt5macsdsIiKiajHMuDhTzwz3ZSIiIqoew4wLKy4zoLTi+mrIzbwbx7o6RERE1mKYcWGmyb9ymYAmnuyZISIiqg7DjAszv5atVkDlwR2ziYiIqsMw48LyTVsZqBRQKfiPioiIqDp8Qrqw/OKbWxnIZILE1RAREbkmhhkXxk0miYiIbo9hxoXlF92cM0NERETVY5hxYeY5M9zKgIiIqEYMMy4sr4ibTBIREd0Ow4wLuznMxJ4ZIiKimjDMuLB8TgAmIiK6LYYZF2Z6Ndvfiz0zRERENWGYcWF5hdd7Zppwk0kiIqIaMcy4KFEUobvRM8NNJomIiGrGMOOiCkorUGEUATDMEBER1YZhxkWZ3mRSKmTw9eScGSIiopowzLiovEqbTCrl/MdERERUEz4lXVTlrQy4YzYREVHN+JR0UXmVtjIQBO6YTUREVBOGGRdlepOJC+YRERHVjmHGReUVcisDIiKiumCYcVGVJwATERFRzRhmXBSHmYiIiOqGYcZF5XGTSSIiojphmHFRN1/N5pwZIiKi2kgaZgwGA2bPno3w8HBoNBpERERgwYIFEEXR3EYURcyZMwfBwcHQaDSIjY1FRkaGhFU7R/6Nnpmm3txkkoiIqDaShpklS5Zg9erVeO+993Dq1CksWbIES5cuxcqVK81tli5dihUrVmDNmjVIS0uDl5cXBg0ahJKSEgkrd7y8Gz0zTTwZZoiIiGoj6YSMX375BcOGDcOQIUMAAK1atcKmTZuwf/9+ANd7ZZYvX45Zs2Zh2LBhAIBPPvkEgYGB2LZtG0aOHClZ7Y5kMIrQl1wPMwFabjJJRERUG0l7Zu69916kpKTgt99+AwAcPXoUu3fvRlxcHAAgKysLOTk5iI2NNX+Pr68voqOjsXfvXklqdgZ9cTlMI21NvdgzQ0REVBtJe2ZmzJgBvV6P9u3bQy6Xw2AwYOHChRgzZgwAICcnBwAQGBho8X2BgYHmc7cqLS1FaWmp+Wu9Xu+g6h0n/8Zr2RoPOby4zgwREVGtJO2Z2bJlCzZs2ICNGzfi119/xfr16/GPf/wD69evt/maiYmJ8PX1NX9CQ0PtWLFzVH4tW6WQS1wNERGRa5M0zLz++uuYMWMGRo4ciaioKDz99NOYMmUKEhMTAQBBQUEAgNzcXIvvy83NNZ+71cyZM6HT6cyfixcvOvaXcID8SmFGyR2ziYiIaiXpk7KoqAgymWUJcrkcRqMRABAeHo6goCCkpKSYz+v1eqSlpSEmJqbaa6pUKmi1WouPu+EaM0RERHUn6YSMoUOHYuHChWjZsiU6deqEw4cP45133kF8fDwAQBAETJ48GW+//TYiIyMRHh6O2bNnIyQkBMOHD5eydIfKK+JWBkRERHUl6dNy5cqVmD17Nl566SVcvnwZISEheOGFFzBnzhxzm+nTp6OwsBATJkxAfn4+evfujR07dkCtVktYuWPpzMNM7JkhIiK6HUGsvNxuA6TX6+Hr6wudTuc2Q06ztx3Hp/vO48meoVgyoovU5RARETmdNc9vzi51Qea3mfhaNhER0W0xzLggXTEnABMREdUVw4wLMvXMaDkBmIiI6LYYZlyQ6dXsJtwxm4iI6LYYZlyQqWemmTc3mSQiIrodhhkXU1ZhRGGpAQDQzIthhoiI6HYYZlyMafKvAKAph5mIiIhui2HGxZj2ZfJSKaBRcpNJIiKi22GYcTH5xTe3MlBxk0kiIqLb4tPSxeQVml7L9oBCzn88REREt8OnpYsxvZbtzTVmiIiI6oRhxsXkF5s2mWSYISIiqguGGReTd6NnhvsyERER1Y3NYSY+Ph7Xrl2rcrywsBDx8fH1KqoxMw0zcV8mIiKiurE5zKxfvx7FxcVVjhcXF+OTTz6pV1GNWT73ZSIiIrKK1U9MvV4PURQhiiKuXbsGtVptPmcwGPCf//wHzZs3t2uRjYlpKwNv9swQERHVidVhxs/PD4IgQBAEtG3btsp5QRAwb948uxTXGJmGmfw0DDNERER1YXWY+emnnyCKIvr374+vvvoKTZo0MZ9TKpUICwtDSEiIXYtsTLhjNhERkXWsDjN9+/YFAGRlZaFly5YQBMHuRTVmplezm3oxzBAREdWFzROAT506hT179pi/XrVqFe68806MHj0aeXl5dimusSkpN6Ck3AgACPDhjtlERER1YXOYef3116HX6wEAx44dw9SpU/Hggw8iKysLU6dOtVuBjYlp8q9cJsDfk3NmiIiI6sLm93+zsrLQsWNHAMBXX32FoUOHYtGiRfj111/x4IMP2q3AxiS/0oJ5ag++mk1ERFQXNvfMKJVKFBUVAQCSk5MxcOBAAECTJk3MPTZkHVPPjI9aASV3zCYiIqoTm//637t3b0ydOhW9evXC/v378fnnnwMAfvvtN9xxxx12K7AxubnJpAfkMk6sJiIiqgub//r/3nvvQaFQ4Msvv8Tq1avRokULAMD27dsxePBguxXYmJjCDFf/JSIiqjubn5otW7bEd999V+X4smXL6lVQY2Ze/ZebTBIREdVZvSZmZGZmYtasWRg1ahQuX74M4HrPzIkTJ+xSXGOjK+Ymk0RERNayOcykpqYiKioKaWlp+Prrr1FQUAAAOHr0KObOnWu3AhuTvEJuMklERGQtm8PMjBkz8Pbbb+OHH36AUnlztdr+/ftj3759dimusckzTwBmmCEiIqorm8PMsWPH8Mgjj1Q53rx5c/z111/1Kqqx0hWbemY4zERERFRXNocZPz8/ZGdnVzl++PBh85tNZB1Tz4wvV/8lIiKqM5vDzMiRI/HGG28gJycHgiDAaDRiz549mDZtGp555pk6XaNVq1YQBKHKJyEhAQBw//33Vzk3ceJEW0t2efk33mZqxk0miYiI6szmyRmLFi1CQkICQkNDYTAY0LFjRxgMBowePRqzZs2q0zUOHDgAg8Fg/vr48eN44IEH8Pjjj5uPPf/885g/f775a09PT1tLdmmiKJrXmWnqzTBDRERUVzaHGaVSiQ8++ABz5szBsWPHUFBQgG7duiEyMrLO1wgICLD4evHixYiIiEDfvn3Nxzw9PREUFGRrmW6joLQCFUYRABDgo5a4GiIiIvdR79dmQkNDERoaWu9CysrK8Nlnn2Hq1KkQhJtL+W/YsAGfffYZgoKCMHToUMyePbtB9s6YemWUchm0Gs6ZISIiqiubwkxGRgbS09Nx1113ITw8HP/+97+xZMkSFBcXY/jw4fjb3/5mEUjqYtu2bcjPz8e4cePMx0aPHo2wsDCEhIQgPT0db7zxBk6fPo2vv/66xuuUlpaitLTU/LW7bHqZX+m1bBU3mSQiIqozq8PM1q1b8cQTT0Amk0EQBKxduxYvvPAC7r//fmi1Wrz11ltQKBR44403rLruRx99hLi4OISEhJiPTZgwwfznqKgoBAcHY8CAAcjMzERERES110lMTMS8efOs/bUkl198c8E8pZxhhoiIqK6sfmouXLgQ06dPR0lJCVavXo2JEyciMTER27dvx3fffYdVq1Zh3bp1Vl3z/PnzSE5OxnPPPVdru+joaADAmTNnamwzc+ZM6HQ68+fixYtW1SIV02vZPmoPyLhjNhERUZ1ZHWZOnz6N+Ph4CIKAsWPHoqysDLGxsebzAwcOxPnz5626ZlJSEpo3b44hQ4bU2u7IkSMAgODg4BrbqFQqaLVai487yOcmk0RERDax+slZWFgIHx8fAIBMJoNGo7GYkKvRaCzmrNyO0WhEUlISxo4dC4XiZjmZmZnYuHEjHnzwQTRt2hTp6emYMmUK+vTpgy5dulhbtsszzZnhvkxERETWsfrJaVq8rqavrZWcnIwLFy4gPj7e4rhSqURycjKWL1+OwsJChIaGYsSIEXVew8bd5Jl6ZriVARERkVWsDjOiKKJt27bmAGNaX0Ymk5nPW2PgwIHVfk9oaChSU1OtLc9t6dgzQ0REZBOrn5xJSUmOqKPRM/XM+DDMEBERWcXqJ+fYsWMdUUejl2deZ4bDTERERNawSzdAQUEBjEajxTF3eYvIVeiKr4eZJtxkkoiIyCo2r86WlZWFIUOGwMvLC76+vvD394e/vz/8/Pzg7+9vzxobhbzC68NMTRlmiIiIrGJzz8xTTz0FURTx8ccfIzAwsF5vNDV2RqMIXcn1nplm3DGbiIjIKjaHmaNHj+LQoUNo166dPetplPQl5TC90BXgo5K2GCIiIjdj8zBTz5493WarAFdnmvyr8ZDDiysAExERWcXmJ+eHH36IiRMn4o8//kDnzp3h4WH5Fk5DXKXXUfIrvZat5I7ZREREVrE5zPz555/IzMzE+PHjzccEQYAoihAEAQaDwS4FNgb55teyuWM2ERGRtWwOM/Hx8ejWrRs2bdrECcD1lF98vWdGq/bgfSQiIrKSzWHm/Pnz+Oabb9CmTRt71tMo5RVe75nh6r9ERETWs3lMo3///jh69Kg9a2m0THNmvDn5l4iIyGo2Pz2HDh2KKVOm4NixY4iKiqoyAfjhhx+ud3Hurrjs+rwhhVxAheH6u9capbxKm/G9w/FC3wiUVRhRXGao0oaIiIhqJojWbnN9g2mX7Gov6kITgPV6PXx9faHT6Zy2xUJRWQWKygxI2p2FHSdyoC+ugFajwOBOQRjfOxxeSjlEoNY2nko5PJXsqSEiosbJmue3zWHGXTg7zJSUG7AmNRMrUjJgrObOhvpr8O0rvbHul3M1tpEJwKQBkZjYNwJqD/bSEBFR42PN85t/9bejorIKrP35LJYnZ9TY5v0x3fHR7iys/PFMjW2MIszXmNCnNXtoiIiIamHzU3L+/Pm1np8zZ46tl3ZbRWUGrEipOchEhzeBv5cHVv1Uc5CpbEVKBp6+J4xhhoiIqBY2PyW3bt1q8XV5eTmysrKgUCgQERHR6MJMcZkBH+/OqnbYyOTpe8KwYd+FWttUZhSBpD3nkNCvDScFExER1cDmMHP48OEqx/R6PcaNG4dHHnmkXkW5q50ncmo9f3d4EyxL/s2qa24/no2EflzLh4iIqCZ2XTtfq9Vi3rx5mD17tj0v6xYUcgH64opa23ipFLdtcyt9SQUUcq4KTEREVBO7bwSk0+mg0+nsfVmXV2EQodXU3tFVWFpx2za30qoV5jVqiIiIqCqbh5lWrFhh8bUoisjOzsann36KuLi4ehfmjgZ3CsKqXZk1nt+fdRUDOwZhdWrNbW4V1znYHqURERE1WDavMxMeHm7xtUwmQ0BAAPr374+ZM2fCx8fHLgXWlzPXmfmroBR3L0yucYJvdHgT/N8TXdFn6U91mgQsE4ADb8aiqbfKvoUSERG5OKesM5OVlWXrtzZYnko5Jg2IrHGdmbSsq8grLEdCvza1rjNj8uqASL7FREREdBtWz5kxGAxIT09HcXFxlXPFxcVIT0+H0Wi0S3HuxlOpwMS+EZgcGwlZDXN2X9xwCM/2Dq+1jUwAJsdG4oW+EVxjhoiI6DasHmZat24d3nvvPaSlpUEut+w1qKiowD333IPJkyfjqaeesmuhtpJqb6biMgM+2p2FnSdyoC+pgFatQFznYIzv1QqeN/ZmKi4zIGnPOWw/nl2ljYZ7MxERUSPm0L2Z7rvvPiQkJGDkyJHVnt+yZQvee+89/Pzzz9Zc1mGkCDMmh87l4Y4mGmjVN3cUr27XbKD2nbWJiIgaG2ue31YPM50+fRr33HNPjed79uyJU6dOWXvZBumD/55F9KIUvJuSAY1SXm1IMR33kMtqbENEREQ1szrMFBYWQq/X13j+2rVrKCoqqldRDUVh2fUF8jTc+ZqIiMhhrA4zkZGR+OWXX2o8v3v3bkRGRtarqIaisPRGmFHafW1CIiIiusHqp+zo0aMxa9YspKenVzl39OhRzJkzB6NHj7ZLce6usPT6fBhvNSfyEhEROYrVYWbKlCmIiopC9+7dERcXhylTpmDKlCmIi4tDjx490LlzZ0yZMqVO12rVqhUEQajySUhIAACUlJQgISEBTZs2hbe3N0aMGIHc3FxrS5aMaZjJR+Vxm5ZERERkK6vDjIeHB77//nssXLgQ2dnZWLt2Lf75z38iOzsbCxcuxPfffw8Pj7o9vA8cOIDs7Gzz54cffgAAPP744wCuB6dvv/0WX3zxBVJTU3Hp0iU8+uij1pYsGdMwkw97ZoiIiBzG5u0M6mrTpk14+OGH4eXlddu2kydPxnfffYeMjAzo9XoEBARg48aNeOyxxwAA//vf/9ChQwfs3bu31jeqKpPy1ezIN/+DcoOIr168F93D/J36s4mIiNyZQ1/NttYLL7xQp6GhsrIyfPbZZ4iPj4cgCDh06BDKy8sRGxtrbtO+fXu0bNkSe/fudWTJdlFWYUT5jXVjfNkzQ0RE5DAOf8rWteNn27ZtyM/Px7hx4wAAOTk5UCqV8PPzs2gXGBiInJycGq9TWlqK0tJS89e1vUbuSEU35ssAgI+Gc2aIiIgcxWXeGf7oo48QFxeHkJCQel0nMTERvr6+5k9oaKidKrROwY35Mh5ygQvhEREROZBLhJnz588jOTkZzz33nPlYUFAQysrKkJ+fb9E2NzcXQUFBNV5r5syZ0Ol05s/FixcdVXatim5sU6DxkMND5hK3mYiIqEFyiadsUlISmjdvjiFDhpiPde/eHR4eHkhJSTEfO336NC5cuICYmJgar6VSqaDVai0+UigwL5gnh0Jew/bYREREVG+Sz0w1Go1ISkrC2LFjoVDcLMfX1xfPPvsspk6diiZNmkCr1eKVV15BTExMnd9kkpJ59V8PORQyhhkiIiJHcXiYCQsLq3XdmeTkZFy4cAHx8fFVzi1btgwymQwjRoxAaWkpBg0ahPfff9+R5dpN5TAjCAwzREREjmLzMNPYsWPx888/37bd8ePHa52EO3DgQIiiiLZt21Y5p1arsWrVKly9ehWFhYX4+uuva50v40pMWxlw8i8REZFj2RxmdDodYmNjERkZiUWLFuGPP/6wZ11uz7SVgZo7ZhMRETmUzWFm27Zt+OOPP/Diiy/i888/R6tWrRAXF4cvv/wS5eXl9qzRLRVUGmYiIiIix6nX20wBAQGYOnUqjh49irS0NLRp0wZPP/00QkJCMGXKFGRkZNirTrdTxGEmIiIip7DLq9mmTSJ/+OEHyOVyPPjggzh27Bg6duyIZcuW2eNHuB32zBARETmHzWGmvLwcX331FR566CGEhYXhiy++wOTJk3Hp0iWsX78eycnJ2LJlC+bPn2/Pet1GIcMMERGRU9j8anZwcDCMRiNGjRqF/fv3484776zSpl+/flX2VmoszCsAc5iJiIjIoWwOM8uWLcPjjz8OtVpdYxs/Pz9kZWXZ+iPcmmmYiW8zEREROZbNw0wPP/wwioqKqhy/evWqZDtVuxIOMxERETmHzWFm5MiR2Lx5c5XjW7ZswciRI+tVVENQeGOYyVst+Y4RREREDZrNYSYtLQ39+vWrcvz+++9HWlpavYpqCEw9Mz5q9swQERE5ks1hprS0FBUVFVWOl5eXo7i4uF5FNQSmOTM+qpr3pSIiIqL6sznM3H333Vi7dm2V42vWrEH37t3rVVRDUHRjOwMfDYeZiIiIHMnmJ+3bb7+N2NhYHD16FAMGDAAApKSk4MCBA/j+++/tVqA7qjAYUVJuBABo1eyZISIiciSbe2Z69eqFvXv3IjQ0FFu2bMG3336LNm3aID09Hffdd589a3Q7psm/AMMMERGRo9VrDOTOO+/Ehg0b7FVLg2EaYlLIBHiqOMxERETkSPV60hqNRpw5cwaXL1+G0Wi0ONenT596FebOKq8x4yEXJK6GiIioYbM5zOzbtw+jR4/G+fPnIYqixTlBEGAwGGr4zoav4MaO2WqlHAqZXfbyJCIiohrYHGYmTpyIHj164N///jeCg4MhCOyBMGHPDBERkfPYHGYyMjLw5Zdfok2bNvasp0GoHGYY8oiIiBzL5jGQ6OhonDlzxp61NBiFNyYAc8dsIiIix7O5Z+aVV17Ba6+9hpycHERFRcHDw/IV5C5dutS7OHdlmjPDTSaJiIgcz+YwM2LECABAfHy8+ZggCBBFsdFPAC7ijtlEREROY3OYycrKsmcdDYppzoyaw0xEREQOZ3OYCQsLs2cdDQqHmYiIiJynXougfPrpp+jVqxdCQkJw/vx5AMDy5cvxr3/9yy7FuasiTgAmIiJyGpvDzOrVqzF16lQ8+OCDyM/PN8+R8fPzw/Lly+1Vn1sqMM+Z4YJ5REREjmbz03blypX44IMP8Oabb0Iuv9kD0aNHDxw7dswuxbmrQk4AJiIichqbw0xWVha6detW5bhKpUJhYWG9inJ3pl2zNUpuMklERORoNoeZ8PBwHDlypMrxHTt2oEOHDvWpye2ZemY8OWeGiIjI4WzuOpg6dSoSEhJQUlICURSxf/9+bNq0CYmJifjwww/tWaPbMYUZrZo9M0RERI5m89P2ueeeg0ajwaxZs1BUVITRo0cjJCQE7777LkaOHGnPGt2OaZjJW+1xm5ZERERUX/XqOhgzZgzGjBmDoqIiFBQUoHnz5vaqy62ZemZ8VOyZISIicjS7vDvs6elpc5D5448/8NRTT6Fp06bQaDSIiorCwYMHzefHjRsHQRAsPoMHD7ZH2Q5hNIooutEzo9WwZ4aIiMjRrOo6uOuuu5CSkgJ/f39069YNgiDU2PbXX3+97fXy8vLQq1cv9OvXD9u3b0dAQAAyMjLg7+9v0W7w4MFISkoyf61Sqawp26mKym/uSaXVsGeGiIjI0ax62g4bNswcJIYPH17vH75kyRKEhoZaBJXw8PAq7VQqFYKCgur985zBNMQkEwBvvppNRETkcFY9befOnVvtn231zTffYNCgQXj88ceRmpqKFi1a4KWXXsLzzz9v0W7Xrl1o3rw5/P390b9/f7z99tto2rRptdcsLS1FaWmp+Wu9Xl/vOq1RUGnBPA8FVwAmIiJyNJuftgcOHEBaWlqV42lpaRZzXmpz9uxZrF69GpGRkdi5cydefPFFTJo0CevXrze3GTx4MD755BOkpKRgyZIlSE1NRVxcnHn7hFslJibC19fX/AkNDbXtF7SRefVfpRwKec3DcERERGQfgiiKoi3fePfdd2P69Ol47LHHLI5//fXXWLJkSbVB51ZKpRI9evTAL7/8Yj42adIkHDhwAHv37q32e86ePYuIiAgkJydjwIABVc5X1zMTGhoKnU4HrVZb11/PZnszr2DUB/sQ6q9B6uv9IJMx0BAREVlLr9fD19e3Ts9vm3tmTp48ibvuuqvK8W7duuHkyZN1ukZwcDA6duxocaxDhw64cOFCjd/TunVrNGvWDGfOnKn2vEqlglartfg4k6lnRu0hZ5AhIiJyApvDjEqlQm5ubpXj2dnZUCjqNhWnV69eOH36tMWx3377DWFhYTV+z++//44rV64gODjYuoKdpLDs5jATEREROZ7NYWbgwIGYOXMmdDqd+Vh+fj7+9re/4YEHHqjTNaZMmYJ9+/Zh0aJFOHPmDDZu3Ii1a9ciISEBAFBQUIDXX38d+/btw7lz55CSkoJhw4ahTZs2GDRokK2lO1Rh6Y1NJrljNhERkVPY/O7wP/7xD/Tp0wdhYWHm3bOPHDmCwMBAfPrpp3W6Rs+ePbF161bMnDkT8+fPR3h4OJYvX44xY8YAAORyOdLT07F+/Xrk5+cjJCQEAwcOxIIFC1x2rZnCSm8zERERkePZHGZatGiB9PR0bNiwAUePHoVGo8H48eMxatQoeHjUfeXbhx56CA899FC15zQaDXbu3GlriZIoKOUwExERkTPVa1U3Ly8vTJgwwV61NAhFZeyZISIiciarwsw333yDuLg4eHh44Jtvvqm17cMPP1yvwtxVwY05M2qGGSIiIqewKswMHz4cOTk5aN68ea3bGQiCUOOidg1dIYeZiIiInMqqMGM0Gqv9M93EYSYiIiLnsurV7CZNmuCvv/4CAMTHx+PatWsOKcqdFfBtJiIiIqeyKsyUlZWZN25cv349SkpKHFKUOzOtM+OpYpghIiJyBquGmWJiYjB8+HB0794doihi0qRJ0Gg01bb9+OOP7VKguzGtAOyjrteLYkRERFRHVj1xP/vsMyxbtgyZmZkAAJ1Ox96ZW5gmAHurGGaIiIicwaonbmBgIBYvXgwACA8Px6effoqmTZs6pDB3ZZozo1XXfeFAIiIisp3NE4D79esHpVLpkKLclSiKKCq7PmdGq2HPDBERkTNwArAdFZcbIIrX/+zDnhkiIiKn4ARgOzINMQkAtJwATERE5BQ2TwAWBIETgG9RWGkrAw8FX80mIiJyBk4AtqPCSgvmecgFiashIiJqHKyaMwMADz74IHQ6HbKystC0aVMsXrwY+fn55vNXrlxBx44d7Vmj26i8L5OHzOpbS0RERDaw+om7Y8cOlJaWmr9etGgRrl69av66oqICp0+ftk91bqaw0r5MMhl7ZoiIiJyh3t0Houn1HTLPmeGO2URERM7DsRA7Mg0zqT14W4mIiJzF6qeuIAgQBKHKMaq8YzZfyyYiInIWq5+6oihi3LhxUKlUAICSkhJMnDgRXl5eAGAxn6axMa3+y2EmIiIi57E6zIwdO9bi66eeeqpKm2eeecb2itzYzVezOcxERETkLFaHmaSkJEfU0SAUVFpnhoiIiJyDXQh2xGEmIiIi52OYsaMC89tMDDNERETOwjBjR4UcZiIiInI6hhk7KrwxzOSpYpghIiJyFoYZOzL1zHirPCSuhIiIqPFgmLEjU5jxUXPRPCIiImdhmLEjU5jRqtkzQ0RE5CwMM3YiiqJ5zgx7ZoiIiJyHYcZOSiuMMBiv7yDuo2GYISIichbJw8wff/yBp556Ck2bNoVGo0FUVBQOHjxoPi+KIubMmYPg4GBoNBrExsYiIyNDwoqrZ1pjBgC0nABMRETkNJKGmby8PPTq1QseHh7Yvn07Tp48if/7v/+Dv7+/uc3SpUuxYsUKrFmzBmlpafDy8sKgQYNQUlIiYeVVFZVeH2JSKWRQcwVgIiIip5F0PGTJkiUIDQ212O8pPDzc/GdRFLF8+XLMmjULw4YNAwB88sknCAwMxLZt2zBy5Ein11wT875MSjkUMkHiaoiIiBoPSXtmvvnmG/To0QOPP/44mjdvjm7duuGDDz4wn8/KykJOTg5iY2PNx3x9fREdHY29e/dWe83S0lLo9XqLjzMUlt1c/ddDLvnoHRERUaMh6VP37NmzWL16NSIjI7Fz5068+OKLmDRpEtavXw8AyMnJAQAEBgZafF9gYKD53K0SExPh6+tr/oSGhjr2l7ih8lYGcvbMEBEROY2kYcZoNOKuu+7CokWL0K1bN0yYMAHPP/881qxZY/M1Z86cCZ1OZ/5cvHjRjhXXrLCUO2YTERFJQdIwExwcjI4dO1oc69ChAy5cuAAACAoKAgDk5uZatMnNzTWfu5VKpYJWq7X4OAM3mSQiIpKGpGGmV69eOH36tMWx3377DWFhYQCuTwYOCgpCSkqK+bxer0daWhpiYmKcWuvtmOfMsGeGiIjIqSR9m2nKlCm49957sWjRIjzxxBPYv38/1q5di7Vr1wIABEHA5MmT8fbbbyMyMhLh4eGYPXs2QkJCMHz4cClLr8LUM6NmzwwREZFTSRpmevbsia1bt2LmzJmYP38+wsPDsXz5cowZM8bcZvr06SgsLMSECROQn5+P3r17Y8eOHVCr1RJWXlWBac4MwwwREZFTCaIoilIX4Uh6vR6+vr7Q6XQOnT8z51/H8cne83iyZyiWjOjisJ9DRETUGFjz/OaCKHZSwAnAREREkmCYsRO+zURERCQNhhk7KSrjOjNERERSYJixEw4zERERSYNhxk5Mw0zeaoYZIiIiZ2KYsRPTdgY+Kg+JKyEiImpcGGbsxNQz46OWdOkeIiKiRodhxk5M2xn4aNgzQ0RE5EwMM3ZQWmFAueH62oO+7JkhIiJyKoYZOyi6MV8GALTsmSEiInIqhhk7ML2WrZTLuNEkERGRkzHM2IFpvoxGKYeHnLeUiIjImfjktQPTa9lqDxkUMkHiaoiIiBoXhhk7qLwvk4I9M0RERE7FJ68dmMOMkm8yERERORvDjB0UmjaZ9ODtJCIicjY+fe2gkJtMEhERSYZhxg7MO2YrGWaIiIicjWHGDorK2DNDREQkFYYZO7j5ajbDDBERkbMxzNgBh5mIiIikwzBjB6ZhJk/2zBARETkdw4wdFHCYiYiISDIMM3ZQyGEmIiIiyTDM2IEpzHiruAIwERGRszHM2IFp12wfNcMMERGRszHM2EFBCXtmiIiIpMIwYwemvZm0Gg+JKyEiImp8GGbqqdxgRFmFEQCgVTPMEBERORvDTD0V3XgtGwB8PRlmiIiInI1hpp4Kbkz+VcgEvppNREQkAUnDzFtvvQVBECw+7du3N5+///77q5yfOHGihBVXVVR6c5NJDxmzIRERkbNJ/vpNp06dkJycbP5aobAs6fnnn8f8+fPNX3t6ejqttrqovC+TQi5IXA0REVHjI3mYUSgUCAoKqvG8p6dnreelZtoxW+Mhh0LGMENERORsko+LZGRkICQkBK1bt8aYMWNw4cIFi/MbNmxAs2bN0LlzZ8ycORNFRUUSVVo904J5ag85BIFhhoiIyNkk7ZmJjo7GunXr0K5dO2RnZ2PevHm47777cPz4cfj4+GD06NEICwtDSEgI0tPT8cYbb+D06dP4+uuva7xmaWkpSktLzV/r9XqH/g7cl4mIiEhakoaZuLg485+7dOmC6OhohIWFYcuWLXj22WcxYcIE8/moqCgEBwdjwIAByMzMRERERLXXTExMxLx58xxeu0lhpQnARERE5HySDzNV5ufnh7Zt2+LMmTPVno+OjgaAGs8DwMyZM6HT6cyfixcvOqRWE9PqvwwzRERE0nCpMFNQUIDMzEwEBwdXe/7IkSMAUON5AFCpVNBqtRYfR+IwExERkbQkHWaaNm0ahg4dirCwMFy6dAlz586FXC7HqFGjkJmZiY0bN+LBBx9E06ZNkZ6ejilTpqBPnz7o0qWLlGVbKOAwExERkaQkDTO///47Ro0ahStXriAgIAC9e/fGvn37EBAQgJKSEiQnJ2P58uUoLCxEaGgoRowYgVmzZklZchWm7QzYM0NERCQNScPM5s2bazwXGhqK1NRUJ1Zjm4JKr2YTERGR87nUnBl3ZJoz48kwQ0REJAmGmXriMBMREZG0GGbqyTQB2JNhhoiISBIMM/Vk2s7ARy35NldERESNEsNMPRWU3AgzGg+JKyEiImqcGGbqqejGCsDsmSEiIpIGw0w9GIwiisuvhxlfNXtmiIiIpMAwUw+m+TIAoNWwZ4aIiEgKDDP1YHotWyYAnkqGGSIiIikwzNRDQaVNJpUK3koiIiIp8AlcD+Ydsz0UUMh4K4mIiKTAJ3A9mObMaDxk8JALEldDRETUODHM1ENhpa0MBIFhhoiISAoMM/Vwc5iJWxkQERFJhWGmHkzDTGqGGSIiIskwzNRDYaW3mYiIiEgaDDP1UGCaM8OeGSIiIskwzNRDEefMEBERSY5hph7Mr2ZzmImIiEgyDDP1wGEmIiIi6THM1INpmIlvMxEREUmHYaYeTHszeXKYiYiISDIMM/VgmjPjpeKO2URERFJhmKkH03YGPgwzREREkmGYqQfTonneaoYZIiIiqTDM1INpzowPwwwREZFkGGZsZDSKKCq7Psyk1XhIXA0REVHjxTBjo+Jyg/nPWjXDDBERkVQYZmxkmi8jEzgBmIiISEp8CttILhOw/28D4KVSQCYAxWUGbmtAREQkAYYZKxWVVaCozICPd2dh54kc6IsroNUoMLhTEMb3DoenUg5PJW8rERGRs0g6zPTWW29BEASLT/v27c3nS0pKkJCQgKZNm8Lb2xsjRoxAbm6uZPWWlBuw9uezuHthMt7flYnMPwvxZ0EpMv8sxKpdmbh7YTLW/nwWJZXm0xAREZFjST5nplOnTsjOzjZ/du/ebT43ZcoUfPvtt/jiiy+QmpqKS5cu4dFHH5WkzqKyCqxJzcTy5AwYxerbGEVgeXIG1qRmoujG6sBERETkWJKPhygUCgQFBVU5rtPp8NFHH2Hjxo3o378/ACApKQkdOnTAvn37cM899zi1zqIyA1akZNSp7YqUDDx9TxiHm4iIiJxA8p6ZjIwMhISEoHXr1hgzZgwuXLgAADh06BDKy8sRGxtrbtu+fXu0bNkSe/fudWqNxTfmyNTUI3Mrowgk7TmH4jIONxERETmapGEmOjoa69atw44dO7B69WpkZWXhvvvuw7Vr15CTkwOlUgk/Pz+L7wkMDEROTk6N1ywtLYVer7f42MPOEzX/zOpsP55tl59LREREtZN0HCQuLs785y5duiA6OhphYWHYsmULNBqNTddMTEzEvHnz7FUiAEAhF6Avtm4OjL6kAgq5YNc6iIiIqCrJh5kq8/PzQ9u2bXHmzBkEBQWhrKwM+fn5Fm1yc3OrnWNjMnPmTOh0OvPn4sWL9a6rwiBCq7Eu92nVClQY6jguRURERDZzqTBTUFCAzMxMBAcHo3v37vDw8EBKSor5/OnTp3HhwgXExMTUeA2VSgWtVmvxsYfBnWoOUNWJ6xxsl59LREREtZM0zEybNg2pqak4d+4cfvnlFzzyyCOQy+UYNWoUfH198eyzz2Lq1Kn46aefcOjQIYwfPx4xMTFOf5NJo5RjfO9wyOo4aiQTgPG9WnFFYCIiIieQdM7M77//jlGjRuHKlSsICAhA7969sW/fPgQEBAAAli1bBplMhhEjRqC0tBSDBg3C+++/L0mtnko5Jg2IxPLk27+e/eqASAYZIiIiJxFEUWzQEzv0ej18fX2h0+nqPeRUUm7AmtRMrEipfuE8mQBMGhCJiX0joPZgmCEiIrKVNc9vhhkrFZVVoLjMgKQ957D9eDb0JRXQqhWI6xxsHlriYnlERET1wzBTib3DjIlpQTyFXDC/tcShJSIiIvuw5vnNLgQbVQ4uHFEiIiKSjku9mk1ERERkLYYZIiIicmsMM0REROTWGGaIiIjIrTHMEBERkVtjmCEiIiK3xjBDREREbq3BrzNjWhNQr9dLXAkRERHVlem5XZe1fRt8mLl27RoAIDQ0VOJKiIiIyFrXrl2Dr69vrW0a/HYGRqMRly5dgo+PDwRBqNP36PV6hIaG4uLFi3bdAoGqx/vtXLzfzsX77Vy8387lyPstiiKuXbuGkJAQyGS1z4pp8D0zMpkMd9xxh03fq9Vq+R+DE/F+Oxfvt3PxfjsX77dzOep+365HxoQTgImIiMitMcwQERGRW2OYqYZKpcLcuXOhUqmkLqVR4P12Lt5v5+L9di7eb+dylfvd4CcAExERUcPGnhkiIiJyawwzRERE5NYYZoiIiMitMcxUY9WqVWjVqhXUajWio6Oxf/9+qUtqEH7++WcMHToUISEhEAQB27ZtszgviiLmzJmD4OBgaDQaxMbGIiMjQ5piG4DExET07NkTPj4+aN68OYYPH47Tp09btCkpKUFCQgKaNm0Kb29vjBgxArm5uRJV7N5Wr16NLl26mNfbiImJwfbt283nea8dZ/HixRAEAZMnTzYf4/22r7feeguCIFh82rdvbz4v9f1mmLnF559/jqlTp2Lu3Ln49ddf0bVrVwwaNAiXL1+WujS3V1hYiK5du2LVqlXVnl+6dClWrFiBNWvWIC0tDV5eXhg0aBBKSkqcXGnDkJqaioSEBOzbtw8//PADysvLMXDgQBQWFprbTJkyBd9++y2++OILpKam4tKlS3j00UclrNp93XHHHVi8eDEOHTqEgwcPon///hg2bBhOnDgBgPfaUQ4cOIB//vOf6NKli8Vx3m/769SpE7Kzs82f3bt3m89Jfr9FsnD33XeLCQkJ5q8NBoMYEhIiJiYmSlhVwwNA3Lp1q/lro9EoBgUFiX//+9/Nx/Lz80WVSiVu2rRJggobnsuXL4sAxNTUVFEUr99fDw8P8YsvvjC3OXXqlAhA3Lt3r1RlNij+/v7ihx9+yHvtINeuXRMjIyPFH374Qezbt6/46quviqLIf7cdYe7cuWLXrl2rPecK95s9M5WUlZXh0KFDiI2NNR+TyWSIjY3F3r17Jays4cvKykJOTo7Fvff19UV0dDTvvZ3odDoAQJMmTQAAhw4dQnl5ucU9b9++PVq2bMl7Xk8GgwGbN29GYWEhYmJieK8dJCEhAUOGDLG4rwD/3XaUjIwMhISEoHXr1hgzZgwuXLgAwDXud4Pfm8kaf/31FwwGAwIDAy2OBwYG4n//+59EVTUOOTk5AFDtvTedI9sZjUZMnjwZvXr1QufOnQFcv+dKpRJ+fn4WbXnPbXfs2DHExMSgpKQE3t7e2Lp1Kzp27IgjR47wXtvZ5s2b8euvv+LAgQNVzvHfbfuLjo7GunXr0K5dO2RnZ2PevHm47777cPz4cZe43wwzRI1AQkICjh8/bjHGTfbXrl07HDlyBDqdDl9++SXGjh2L1NRUqctqcC5evIhXX30VP/zwA9RqtdTlNApxcXHmP3fp0gXR0dEICwvDli1boNFoJKzsOg4zVdKsWTPI5fIqM7Bzc3MRFBQkUVWNg+n+8t7b38svv4zvvvsOP/30k8UO8kFBQSgrK0N+fr5Fe95z2ymVSrRp0wbdu3dHYmIiunbtinfffZf32s4OHTqEy5cv46677oJCoYBCoUBqaipWrFgBhUKBwMBA3m8H8/PzQ9u2bXHmzBmX+PebYaYSpVKJ7t27IyUlxXzMaDQiJSUFMTExElbW8IWHhyMoKMji3uv1eqSlpfHe20gURbz88svYunUrfvzxR4SHh1uc7969Ozw8PCzu+enTp3HhwgXeczsxGo0oLS3lvbazAQMG4NixYzhy5Ij506NHD4wZM8b8Z95vxyooKEBmZiaCg4Nd499vp0wzdiObN28WVSqVuG7dOvHkyZPihAkTRD8/PzEnJ0fq0tzetWvXxMOHD4uHDx8WAYjvvPOOePjwYfH8+fOiKIri4sWLRT8/P/Ff//qXmJ6eLg4bNkwMDw8Xi4uLJa7cPb344ouir6+vuGvXLjE7O9v8KSoqMreZOHGi2LJlS/HHH38UDx48KMbExIgxMTESVu2+ZsyYIaampopZWVlienq6OGPGDFEQBPH7778XRZH32tEqv80kirzf9vbaa6+Ju3btErOyssQ9e/aIsbGxYrNmzcTLly+Loij9/WaYqcbKlSvFli1bikqlUrz77rvFffv2SV1Sg/DTTz+JAKp8xo4dK4ri9dezZ8+eLQYGBooqlUocMGCAePr0aWmLdmPV3WsAYlJSkrlNcXGx+NJLL4n+/v6ip6en+Mgjj4jZ2dnSFe3G4uPjxbCwMFGpVIoBAQHigAEDzEFGFHmvHe3WMMP7bV9PPvmkGBwcLCqVSrFFixbik08+KZ45c8Z8Xur7zV2ziYiIyK1xzgwRERG5NYYZIiIicmsMM0REROTWGGaIiIjIrTHMEBERkVtjmCEiIiK3xjBDREREbo1hhoiIiNwawwwRNXqCIGDbtm1Sl0FENmKYIWogxo0bB0EQsHjxYovj27ZtgyAIElV1nSAI1X42b94saV0m2dnZiIuLk7oMrFu3Dn5+flKXQeR2GGaIGhC1Wo0lS5YgLy9P6lKqSEpKQnZ2tsVn+PDhktZUVlYGAAgKCoJKpZK0FiKyHcMMUQMSGxuLoKAgJCYmVnv+rbfewp133mlxbPny5WjVqpX563HjxmH48OFYtGgRAgMD4efnh/nz56OiogKvv/46mjRpgjvuuANJSUlW1ebn54egoCCLj1qtBgDEx8ejS5cuKC0tBXA9ZHTr1g3PPPMMAODcuXPmnpx7770XarUanTt3RmpqqsXPOH78OOLi4uDt7Y3AwEA8/fTT+Ouvv8zn77//frz88suYPHkymjVrhkGDBgGwHGYy/awtW7bgvvvug0ajQc+ePfHbb7/hwIED6NGjB7y9vREXF4c///zT4ud/+OGH6NChA9RqNdq3b4/333/ffM503a+//hr9+vWDp6cnunbtir179wIAdu3ahfHjx0On05l7rt566y0AwPvvv4/IyEio1WoEBgbiscces+reEzV0DDNEDYhcLseiRYuwcuVK/P777zZf58cff8SlS5fw888/45133sHcuXPx0EMPwd/fH2lpaZg4cSJeeOGFev2MylasWIHCwkLMmDEDAPDmm28iPz8f7733nkW7119/Ha+99hoOHz6MmJgYDB06FFeuXAEA5Ofno3///ujWrRsOHjyIHTt2IDc3F0888YTFNdavXw+lUok9e/ZgzZo1NdY0d+5czJo1C7/++isUCgVGjx6N6dOn491338V///tfnDlzBnPmzDG337BhA+bMmYOFCxfi1KlTWLRoEWbPno3169dbXPfNN9/EtGnTcOTIEbRt2xajRo1CRUUF7r33XixfvhxardbcczVt2jQcPHgQkyZNwvz583H69Gns2LEDffr0qdf9JmpwnLY/NxE51NixY8Vhw4aJoiiK99xzjxgfHy+Koihu3bpVNP2nPnfuXLFr164W37ds2TIxLCzM4jphYWGiwWAwH2vXrp143333mb+uqKgQvby8xE2bNtWpNgCiWq0Wvby8LD7nz583t/nll19EDw8Pcfbs2aJCoRD/+9//ms9lZWWJAMTFixebj5WXl4t33HGHuGTJElEURXHBggXiwIEDLX7uxYsXRQDi6dOnRVEUxb59+4rdunWrtr6tW7da/KwPP/zQfH7Tpk0iADElJcV8LDExUWzXrp3564iICHHjxo0W112wYIEYExNT43VPnDghAhBPnToliqIoJiUlib6+vhbX+Oqrr0StVivq9foqdRPRdQrJUhQROcySJUvQv39/TJs2zabv79SpE2Symx23gYGB6Ny5s/lruVyOpk2b4vLly3W+5rJlyxAbG2txLCQkxPznmJgYTJs2DQsWLMAbb7yB3r17V7lGTEyM+c8KhQI9evTAqVOnAABHjx7FTz/9BG9v7yrfl5mZibZt2wIAunfvXqd6u3TpYv5zYGAgACAqKsrimOn3LywsRGZmJp599lk8//zz5jYVFRXw9fWt8brBwcEAgMuXL6N9+/bV1vHAAw8gLCwMrVu3xuDBgzF48GA88sgj8PT0rNPvQdQYMMwQNUB9+vTBoEGDMHPmTIwbN858XCaTQRRFi7bl5eVVvt/Dw8Pia0EQqj1mNBrrXFNQUBDatGlT43mj0Yg9e/ZALpfjzJkzdb6uSUFBAYYOHYolS5ZUOWcKDQDg5eVVp+tV/n1Nb4Pdesz0+xcUFAAAPvjgA0RHR1tcRy6X3/a6td1HHx8f/Prrr9i1axe+//57zJkzB2+99RYOHDjAN5+IbuCcGaIGavHixfj222/NE0wBICAgADk5ORaB5siRIxJUV9Xf//53/O9//0Nqaip27NhR7QTjffv2mf9cUVGBQ4cOoUOHDgCAu+66CydOnECrVq3Qpk0bi09dA4ytAgMDERISgrNnz1b52eHh4XW+jlKphMFgqHJcoVAgNjYWS5cuRXp6Os6dO4cff/zRnr8CkVtjzwxRAxUVFYUxY8ZgxYoV5mP3338//vzzTyxduhSPPfYYduzYge3bt0Or1Tq8nvz8fOTk5Fgc8/HxgZeXFw4fPow5c+bgyy+/RK9evfDOO+/g1VdfRd++fdG6dWtz+1WrViEyMhIdOnTAsmXLkJeXh/j4eABAQkICPvjgA4waNQrTp09HkyZNcObMGWzevBkffvhhlR4Se5s3bx4mTZoEX19fDB48GKWlpTh48CDy8vIwderUOl2jVatWKCgoQEpKCrp27QpPT0/8+OOPOHv2LPr06QN/f3/85z//gdFoRLt27Rz6+xC5E/bMEDVg8+fPtxjC6NChA95//32sWrUKXbt2xf79+22eV2Ot8ePHIzg42OKzcuVKlJSU4KmnnsK4ceMwdOhQAMCECRPQr18/PP300xY9FYsXL8bixYvRtWtX7N69G9988w2aNWsG4Pr8mz179sBgMGDgwIGIiorC5MmT4efnZzH/x1Gee+45fPjhh0hKSkJUVBT69u2LdevWWdUzc++992LixIl48sknERAQgKVLl8LPzw9ff/01+vfvjw4dOmDNmjXYtGkTOnXq5MDfhsi9COKtA+hERC7m3LlzCA8Px+HDh6usk0NExJ4ZIiIicmsMM0RUL4sWLYK3t3e1H1fY74iIGj4OMxFRvVy9ehVXr16t9pxGo0GLFi2cXBERNTYMM0REROTWOMxEREREbo1hhoiIiNwawwwRERG5NYYZIiIicmsMM0REROTWGGaIiIjIrTHMEBERkVtjmCEiIiK39v9zIb8V8A0DiwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ax = sns.lineplot(\n", - " data=result_transfer_learning,\n", - " marker=\"o\",\n", - " markersize=10,\n", - " x=\"Num_Experiments\",\n", - " y=\"Efficiency_CumBest\",\n", - ")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}