Skip to content

Instantly share code, notes, and snippets.

@pietromarchesi
Last active August 24, 2017 08:52
Show Gist options
  • Save pietromarchesi/7a40dde6618e6b13b29e34cea0d0bb70 to your computer and use it in GitHub Desktop.
Save pietromarchesi/7a40dde6618e6b13b29e34cea0d0bb70 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# LDA score and decoding accuracy across different dimensionalities"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In our datasets, we are often interested in establishing contrasts between experimental conditions (i.e. seeing whether neural responses differentiate between condition A and condition B). A good way to quantify this is by computing the LDA score. Moreover, we might want to determine whether information on a certain experimental parameter is encoded in the activity of the neurons (i.e. can be decoded from it). These two things are not unrelated, because if neural responses differentiate between conditions, then we have good reasons to suspect that a decoder will be able to learn this discrimination rule and correctly decode the variable of interest.\n",
"\n",
"Sometimes, you might be tempted to use these measures to make comparisons between different recordings (in brain areas, or different animals). A problem might arise if the number of recorded neurons is different across areas/animals. Then, the difference that you see in LDA score or decoding performance might be confounded by of the different dimensionality of the two datasets, and not truly reflective of information encoded in the neural response. "
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import sklearn.datasets\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.model_selection import cross_val_score\n",
"from p_utils import lda_score\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\", category=UserWarning)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Recording larger populations (with more responsive neurons)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To see the effects of dimensionality, we generate a number of artificial classification datasets with varying dimensionality, in each of which half of the features (or neurons) are actually informative. The rationale is the fraction of neurons that respond to the experimental parameter of interest is roughly constant, so if you record more neurons you also get more responsive ones.\n",
"\n",
"For each dimensionality, several datasets are generated, so we can look at the mean and standard deviation. For each dataset, we compute the LDA score and the cross-validated accuracy score (or decoding performance) of a logistic regression classifier."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"n_dim = range(20, 150, 20) # range of dimensionalities to investigate\n",
"n_iter = 50 # number of iterations per dimensionality\n",
"# set up a pandas dataframe to save the results\n",
"rs = pd.DataFrame(columns=['n_dim', 'lda_score', 'dec_acc'])\n",
"\n",
"for n in n_dim:\n",
" for i in range(n_iter):\n",
" #clf = RandomForestClassifier(n_estimators=50)\n",
" clf = LogisticRegression()\n",
" # generate the dataset\n",
" X, y = sklearn.datasets.make_classification(n_samples=500,\n",
" n_classes=2,\n",
" n_features=n,\n",
" n_informative=n//2,\n",
" shuffle=False,\n",
" random_state=None)\n",
" # compute the accuracy and the lda score\n",
" cvscore = cross_val_score(clf, X, y, cv=3)\n",
" lda = lda_score(X, y)\n",
" rs.loc[rs.shape[0]+1]=[n, lda, cvscore.mean()]"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAhkAAAGCCAYAAABNU9GWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlAVPX+//HnMOyrgIALbqCCoLikEu4iCIp1XSrplkuZ\nqXktU0uj+9WW63K9t/ql5dXSNjMlEU2Nq2aJmSLuG+ZGioiK7LIJzMz5/cFtkkDAZZgR3o9/5Jw5\nc+Z1RhhenPM556gURVEQQgghhHjAzIwdQAghhBD1k5QMIYQQQhiElAwhhBBCGISUDCGEEEIYhJQM\nIYQQQhiElAwhhBBCGISUjHrEx8eH69evV5ofGxtLly5dCA8PJyQkhJCQEBYsWMDNmzcrLfvPf/6T\nnj17cu3atbqILMRDR1EUPv/8c4YNG0ZYWBghISG89dZb5OfnGztajRITEwkNDQXgvffeY+3atVUu\n5+fnx5UrV6pdV2ZmJj/++ONdZ3jzzTdZunTpXT9PPJykZDQQXbp0Ydu2bezcuZONGzdSUlLCmDFj\nKCkp0S+j0WjYtWsXEyZMYPPmzUZMK4Tp+ve//01cXByrVq1i+/btbN68mbKyMiZNmsTDdNmhmTNn\n8vTTT9/z8xMTE/npp58eYCJRH0nJaIAcHBx4++23sbOzY9OmTfr5v/zyC507d2b48OFs2bLljs8/\nd+4co0ePJiIigsGDB/P1118DcOvWLV5//XWCg4MZMmQI3333HQAlJSXMnTuXsLAwhgwZwqJFi9Bq\ntQAEBwfz0UcfERYWxtWrV7l+/TqTJ08mLCyMsLAwdu/ebcB3Qoi7k5uby+rVq1m0aBEeHh4A2Nra\nMnfuXF544QUURWHp0qX8/e9/54knnuCLL75Ap9PxwQcfEB4eTnh4OHPmzKGoqAiA//73vwwbNowh\nQ4bw2GOPkZiYWO382y1evJh3331XP52dnU2XLl3Iz8/n6NGjjBw5kvDwcIYOHcq+ffsqPX/OnDks\nW7YMgN27dxMaGsqQIUNYuXJlheU+/vhj/R6bSZMmcfPmTZKSknjnnXfYvn07r776KgA7d+7kscce\nY9CgQTz//PNkZ2cDkJOTw/PPP09wcDAvvvjiHff4FBcXM336dMLCwggODuaf//yn/rHU1FSeeeYZ\nQkNDGTVqFElJSdXODw4O5tChQ/rn/z595coV+vTpw4IFC3j22WcB+PHHH3nssccICwtj5MiR/Prr\nr/rnffLJJwwaNIiwsDAWLlyIVquld+/enDx5Ur/M119/zUsvvVRpe77++muGDBlCeHg4TzzxBOfP\nnwfg1KlTjBw5krCwMJ599llSU1MBOHPmDJGRkYSHh/OXv/yFPXv2AOVlLjIykldeeYWZM2dW+16b\nJEXUG+3bt1euXbtWaf6GDRuUcePGVZr/ySefKK+++qp+etq0acrevXsVRVGUsWPHKsePH6/ydaZN\nm6bExsYqiqIoWVlZypQpU5SSkhLl448/VqZPn64oiqJcu3ZNeeSRR5Tr168rK1asUCZOnKiUlZUp\nxcXFyqhRo5RNmzYpiqIoAwcOVP7+97/r1z127Fjlgw8+UBRFUS5duqT07NlTyc7Ovod3Q4gHLz4+\nXgkNDa12mSVLlih9+vRRsrKyFEVRlK1btyrDhw9XCgsLFY1Go0yZMkX5+OOPFUVRlMDAQOXKlSuK\noijKwYMHlQULFlQ7/3bHjx9XBg4cqJ+OiYlRJk2apCiKogwbNkzZunWroiiKsnHjRiUkJERRFEXZ\nv3+//uvZs2crH3/8saLRaJTevXsre/bsURRFUVatWqW0b99eSU1NVU6ePKkEBQUp+fn5ilarVcaP\nH6/PvmTJEiUqKkpRFEW5fPmy0rVrV+Xs2bOKoijK8uXLlWnTpimKoij//Oc/lRkzZiiKoiipqalK\n165dlSVLllTanlWrVikvvPCCotPplNzcXKVnz57KwYMHFUVRlHHjxilr1qxRFEVRfvjhB2Xo0KHV\nzh84cKD+ubdPp6amKv7+/vrPr7KyMqV79+7K0aNHFUVRlKVLl+o/Kw8ePKiEhoYq+fn5SklJiTJq\n1CglLi5Oeffddyv8f4wdO1b/Xv8uPz9f6d69u5Kfn68oiqLExcUpn3zyiaIoihIaGqrEx8criqIo\nn3/+uTJx4kRFq9UqQ4YMUbZs2aIoiqKcOHFC6dGjh5Kfn6/s379f6dSpk7Jv374a32tTJHsyGjB7\ne3v9XxV5eXkkJSXx6KOPAvD444/r90T8maurK9u3bycpKQlnZ2eWLVuGpaUlP//8MxEREQA0adKE\n3bt34+HhQXx8PE899RTm5uZYW1vz2GOPsXfvXv36BgwYAEBRURGJiYmMHz8egFatWvHII4/I3gxh\nMnJzc3F1da1xuc6dO+Pi4gJAfHw8w4cPx9bWFrVazciRI/Xf/66urqxbt460tDS6d+/OG2+8Ue38\n2wUEBKAoCmfOnAHghx9+YMiQIQBs2rRJ//Ujjzyi/2u5KpcuXaK0tJQ+ffoAMGLECP1jHTt2JD4+\nHnt7e8zMzOjatWuV6/r555/p2bMn7du3ByAyMpKffvoJrVbLoUOH9Fk8PT3p2bNnlTmef/55li1b\nhkqlwsnJiXbt2nHlyhVKSkpITExk2LBhAAwaNIhvv/32jvNrUlZWph+XYm5uzr59++jSpQsA3bt3\n12/fzz//TP/+/bG3t8fS0pLVq1czePBgIiIiiIuLQ6fTkZuby6lTpxg4cGCF17CyskKlUhETE0Nm\nZiZDhgxh4sSJXLx4kZycHPr37w/As88+y9KlS7ly5QqZmZn6z89OnTrRrFkz/R4Ta2trgoKCanyv\nTZG5sQMI40lLS9N/YG7dupUbN27oPwAURcHS0pI5c+ZgYWFR4XmzZs1ixYoVTJ8+nZKSEiZNmsQz\nzzxDTk4ODg4O+uXs7OyA8t24Tk5O+vlOTk5kZWVVmAbIz89HURQiIyP1jxUVFemLjxDG5uzsTHp6\neo3L3f79Xt33/3/+8x/+85//MHLkSJo2bUpUVBQ9e/ascn6rVq0YN24cUF4wFi9ezODBg/nxxx9p\n2bIlR44c4d///jcAW7Zs4auvvqKwsBCdTlftWJG8vDzs7e2rzF5cXMzChQv1h2vy8vL0fxTcLj8/\nn0OHDhEeHq6fZ29vT25uLnl5eRU+FxwdHavMcenSJRYtWsRvv/2GmZkZ169fZ+TIkeTm5qLT6fTr\nUKlU2NnZkZ6eXuX8mqjV6grbu3r1ajZu3EhpaSmlpaWoVCqg/DCPu7u7fjkbGxsAunbtioWFBQcO\nHOD69ev06dMHW1vbCq9hYWHBF198wfLly1m6dCk+Pj7MmzePwsLCCu+Fubk55ubmZGdn4+DgoH/t\n39+n7OxsGjduXOH/pLr3ujYFuK5JyWigtFotO3fuZOrUqUD5Xz6rV6/WN3qAKVOmsHv3bkJCQio8\n187OjhkzZjBjxgxOnDjBxIkT6dWrF87OzuTk5OiXu379Ok5OTjRu3Jjc3Fz9/NzcXBo3blwpk6ur\nK2q1mg0bNtTqw0KIutalSxeysrJISkrC399fP7+srIyPPvqIyZMnV3pOdd//LVu2ZOHCheh0OjZt\n2sTMmTPZs2fPHedv27atwrrDwsKYP38+7dq1o0ePHtjb25Oens7f//531q9fT4cOHbh06RJhYWF3\n3CYnJycKCgr007cf3//yyy+5dOkSsbGx2NnZ8cEHH1RZstzd3enVqxdLliyp9Jijo2OFcRjZ2dm0\naNGi0nLvvPMO/v7+fPzxx6jVav0fG87OzqhUKnJycnBxcUFRFC5fvkzTpk2rnN+yZUvMzMzQ6XT6\ndefl5VW57UeOHOHTTz9l/fr1eHp6snfvXv7v//5P/7q3f579/rWzszMRERFs27aN69evV9jzczs/\nPz+WLFlCaWkpK1euZN68eSxcuFBfmszMzCgrKyM9PR1XV1fy8vJQFEVfNO5UGqp7r02RHC5pgIqK\nivi///s/nJycGDJkCMnJyVy7do3OnTtXWC4kJKTCwNDfTZ48WT+IqX379tjb26NSqQgODmbTpk0o\nikJGRgbDhw8nJyeHAQMGEBMTg1arpaioiO+++06/u/B25ubm9O/fn3Xr1gHlf0W98cYbcjqtMBmO\njo688MILzJ49m5SUFKD8+3Tu3LmcPn1a/9fu7QYMGMDmzZspLi5Go9EQExND//79yc7O5rnnnqOg\noAAzMzM6d+6MSqW64/yqdO3alaysLGJjY/WHJLKzs7G1tcXLywuNRkN0dDQAhYWFVa6jZcuWqNVq\n/d6K2NhY/etlZWXh5eWFnZ0daWlp7N69Wz9o1dzcXF8e+vTpw6FDh/SHGk6cOME//vEPoLyY7dy5\nE4DLly9z+PDhKnNkZWXRoUMH1Go1e/fuJSUlhaKiIiwtLenduzcbN24EYM+ePbz44ot3nK9SqXBz\nc9MfRoqLi6twFt3tsrOzcXV1pVmzZhQXF7Nx40aKiopQFIXg4GB++ukn8vLy0Gg0TJ06lV9++QWA\nYcOGsXPnTo4ePVrlZ9nZs2d5+eWXKS0txdLSko4dO6JSqWjdujVNmjRhx44dAMTExDB37lw8PT1p\n0qQJcXFxQHn5yczMJCAgoNK6q3uvTZHsyahnxowZg1qt1k///s137NgxwsPD0el03Lp1i0GDBrFq\n1SrMzc3ZuHEjwcHBlT7IBg4cyLvvvktubi6NGjXSz3/22WeZOXMmZWVlAPz1r3+ldevWjB8/npSU\nFAYOHIi1tTWzZ8+mWbNmjBkzhtTUVCIiIlCpVISHh+s/EP/srbfeYt68eaxfvx4oHxvStGnTB/oe\nCXE/pk2bhpOTE1OmTEGr1WJmZsagQYN46623qlw+PDycs2fPMnLkSBRFITAwkLFjx2JlZUXfvn0Z\nNWoUarUaCwsL5s+fj4uLS5Xzq6JSqQgJCWH9+vW89957APj6+tKvXz/CwsJwdXVlzpw5HDlyhDFj\nxjB79uxK67CwsODdd98lKioKS0tLRo4cqd/9HxkZycsvv0xYWBg+Pj7MmTOHadOm8cUXX9C7d28+\n//xzRo0axYYNG3j33XeZOnUqZWVl2NnZERUVBcCkSZN49dVXCQ4Oxtvbm8GDB1e5LVOmTGHhwoUs\nW7aMQYMG8be//Y0lS5bQoUMH5s+fz6xZs/jmm29wcnLSHxa60/yXXnqJefPm8e233xIWFkbbtm2r\nfM2+ffvyzTffEBISgoeHB1FRURw/fpyXX36ZpUuXMmHCBIYPH46lpSV9+/bVj//w8fGhUaNG+Pj4\nYG1tXWm97du3x9PTk2HDhmFhYYGdnR1z585FpVLx4Ycf8tprr/H+++/j5ubGwoULUalUvP/++8yb\nN4+PPvoIGxsbPvzww0qHYaB8T8ad3mtTpFKqO1gnhBBCiEomTpzIs88+W+WeDPEHOVwihBBC3IXD\nhw+TlpZG3759jR3F5MnhEiGEEKKW3njjDY4cOcK//vUvzMzk7/SayOESIYQQQhiE1DAhhBBCGISU\nDCGEEEIYRJ2PycjIqP3tkJ2dbcnJKTJgmocrB5hOFlPJAZLlfnK4uTnUuIwpks+R+2MqWUwlB5hO\nFlPJAQ/mc8Sk92SYm6trXqgOmEoOMJ0sppIDJEtVTCWHKTCV98JUcoDpZDGVHGA6WUwlBzyYLCZd\nMoQQQgjx8JKSIYQQQgiDkJIhhBBCCIOQkiGEEEIIg5CSIYQQQgiDkJIhhBBCCIOQkiGEEEIIg5CS\nIYQQQgiDkJIhhBBCCIOQkiGEEEIIg6jze5cIIeqHBQsWcPz4cVQqFVFRUQQEBOgfW7NmDZs3b8bM\nzIyOHTvy5ptvotFoePPNN7l8+TJarZbXX3+d7t27M2bMGIqKirC1tQVg9uzZdOzY0VibJYR4gKRk\nCCHu2oEDB0hJSSE6Oprk5GSioqKIjo4GoKCggFWrVrFjxw7Mzc15/vnnOXbsGMnJydjY2LB27VrO\nnz/PG2+8QUxMDAALFy6kffv2xtwkIYQBSMkQop55bdk+1GoViyYFGew1EhISCAkJAcDb25u8vDwK\nCgqwt7fHwsICCwsL/d6J4uJinJycePzxxxk2bBgALi4u5ObmGizf7+rivRBC3JmUDCHEXcvMzMTf\n318/7eLiQkZGBvb29lhZWTF16lRCQkKwsrIiIiKCNm3aVHj+l19+qS8cAEuWLCEnJwdvb2+ioqKw\ntrau9vWdnW1rdYdItVoFmM4t7U0lB5hOFlPJAaaTxVRywP1nkZIhhLhviqLovy4oKGDFihVs27YN\ne3t7xo0bx5kzZ/D19QXKx2skJSWxfPlyAMaOHYuPjw8tW7Zk3rx5rFmzhgkTJlT7ejk5RbXKpdUq\nqNUqMjLy73HLHhw3NweTyAGmk8VUcoDpZDGVHFD7LNUVkVqVjMWLF3P48GE0Gg2TJk1i8ODB+seq\nGuAlhKjf3N3dyczM1E/fuHEDNzc3AJKTk2nRogUuLi4AdO/enVOnTuHr68v69ev56aefWLZsGRYW\nFgCEhobq1xMcHExcXFwdbokQwpBqPIV1//79nD9/nujoaFauXMmCBQv0j/0+wGvNmjWsXbuW5ORk\njh07ZtDAQgjj6927N9u3bwcgKSkJd3d37O3tAWjevDnJycncunULgFOnTtG6dWtSU1NZt24dH330\nEVZWVkD5HpDx48dz8+ZNABITE2nXrp0RtkgIYQg17sno0aOH/tQ0R0dHiouL0Wq1qNXqOw7wEkLU\nb926dcPf35/IyEhUKhXz5s0jNjYWBwcHQkNDmTBhAmPHjkWtVtO1a1e6d+/O+++/T25uLi+++KJ+\nPatWreKpp55i/Pjx2NjY4OHhwbRp04y4ZUKIB6nGkqFWq/Xnr8fExNCvXz/U6vIBV7UZ4CWEqJ9m\nzZpVYfr3MRcAkZGRREZGVnh8xowZzJgxo9J6hg4dytChQw0TUghhVLUe+Llz505iYmL47LPP9PNq\nGuBVldqOCv+dqYyyNZUcYDpZTCUHSJbbmdoZFUKIhqtWJWPPnj0sX76clStX4uDwxwdXdQO87qS2\no8LBdEbZmkoOMJ0sppIDJMuf3c0ZFVJEhBCGVOPAz/z8fBYvXsyKFSto1KhRhcfuNMBLCCGEEKLG\nPRlxcXHk5OQwffp0/bzAwEB8fHzuOMBLCCGEEKLGkjF69GhGjx59x8erGuAlhBBCCCG3ehdCCCGE\nQUjJEEIIIYRBSMkQQgghhEFIyRBCCCGEQUjJEEIIIYRBSMkQQgghhEFIyRBCCCGEQUjJEEIIIYRB\nSMkQQgghhEFIyRBCCCGEQUjJEEIIIYRBSMkQQgghhEFIyRBCCCGEQUjJEEIIIYRBSMkQQgghhEGY\nGzuAEPXFa8v2oVarWDQpyNhRhBDCJMieDCGEEEIYhJQMIYQQQhiElAwhhBBCGISUDCGEEEIYhJQM\nIYQQQhiElAwhhBBCGISUDCGEEEIYhJQMIYQQQhiElAwhhBBCGISUDCGEEEIYhFxWXAhxTxYsWMDx\n48dRqVRERUUREBCgf2zNmjVs3rwZMzMzOnbsyJtvvklZWRlz5szh6tWrqNVqFi5cSIsWLThz5gxv\nvfUWAD4+Prz99ttG2iIhxIMmezKEEHftwIEDpKSkEB0dzfz585k/f77+sYKCAlatWsWaNWtYu3Yt\nycnJHDt2jK1bt+Lo6MjatWuZPHky7733HgDz588nKiqKdevWUVBQwO7du421WUKIB0xKhhDiriUk\nJBASEgKAt7c3eXl5FBQUAGBhYYGFhQVFRUVoNBqKi4txcnIiISGB0NBQAHr16sWRI0coLS0lLS1N\nvxdk4MCBJCQkGGejhBAPnJQMIcRdy8zMxNnZWT/t4uJCRkYGAFZWVkydOpWQkBAGDhxI586dadOm\nDZmZmbi4uABgZmaGSqUiMzMTR0dH/XpcXV316xFCPPxkTIYQ4r4piqL/uqCggBUrVrBt2zbs7e0Z\nN24cZ86cqfY51c2rirOzLebm6hqXU6tVALi5OdRqvYZmKjnAdLKYSg4wnSymkgPuP4uUDCHEXXN3\ndyczM1M/fePGDdzc3ABITk6mRYsW+r0W3bt359SpU7i7u5ORkYGvry9lZWUoioKbmxu5ubn69aSn\np+Pu7l7j6+fkFNUqp1aroFaryMjIv5vNMwg3NweTyAGmk8VUcoDpZDGVHFD7LNUVETlcIoS4a717\n92b79u0AJCUl4e7ujr29PQDNmzcnOTmZW7duAXDq1Clat25N79692bZtGwC7du0iMDAQCwsLvLy8\nOHToEAA7duygb9++RtgiIYQhyJ4MIcRd69atG/7+/kRGRqJSqZg3bx6xsbE4ODgQGhrKhAkTGDt2\nLGq1mq5du9K9e3e0Wi379u3j6aefxtLSkkWLFgEQFRXF3Llz0el0dO7cmV69ehl564QQD0qtSsbi\nxYs5fPgwGo2GSZMmMXjwYP1j165dY8aMGZSVleHn58c777xjsLBCiOolnk4nt6AErU5h7qpEIoJa\nE+jnYZDXmjVrVoVpX19f/deRkZFERkZWePz3a2P8Wdu2bfnmm28MklEIYVw1Hi7Zv38/58+fJzo6\nmpUrV7JgwYIKjy9atIjnn3+emJgY1Go1V69eNVhYIcSdJZ5OZ8XmJLS68sGTVzIKWbE5icTT6UZO\nJoRoqGosGT169ODDDz8EwNHRkeLiYrRaLQA6nY7Dhw8THBwMwLx582jWrJkB4woh7uT7hEt3mJ9S\npzmEEOJ3NR4uUavV2NraAhATE0O/fv1Qq8tPHcvOzsbOzo6FCxeSlJRE9+7dmTlzZrXrq+2pZ78z\nlVN5TCUHmE4WU8kBppHF2KdLXs2q+oyLa1mFJvH+NGSvLduHWq1i0aQgY0cRok7VeuDnzp07iYmJ\n4bPPPtPPUxSF9PR0xo4dS/PmzXnxxReJj49nwIABd1xPbU89A9M5lcdUcoDpZDGVHGA6WYx5uqRG\nq8PGUk3hLU2lx5q62t0xk5QPIYQh1eoU1j179rB8+XI+/fRTHBz++FBydnamWbNmtGzZErVaTVBQ\nEOfPnzdYWCFEZbkFJSz+5miVBQMgIqhVHScSQohyNZaM/Px8Fi9ezIoVK2jUqFGFx8zNzWnRogWX\nLl0Cys+Xb9OmjUGCCiEqS07L450vDnIhLY9APw+ej+iA2qz8sI2nmz2THvc32NklQghRkxoPl8TF\nxZGTk8P06dP18wIDA/Hx8SE0NJSoqCjmzJmDoii0b99ePwhUCGFYPx+/ytc7zqLVKTw1sC1hPVug\nUqn4bs9F1GoV70zoaeyIQogGrsaSMXr0aEaPHn3Hx1u1asXatWsfaCghxJ1ptDrW/nieXUfSsLM2\nZ/JfOuLfxsXYsYQQohK54qcQD5G8wlKWbTzJ+St5eLrZ8bdRAbg3sjF2LCGEqJKUDCEeEr9dvcnH\nG0+Sk19CD193nh/aASvL2p8OLoQQdU1KhhAPgT0nrrJ6+zm0Wh1PDPBmSGBLVCqVsWMJIUS1pGQI\nYcI0Wh3RP17gxyNXsLUyZ/KoTnT0cjV2LCGEqBUpGeKhVp+vpHizsJRlm05xLjWX5m52/G1kJzyc\nbY0dSwghak1Khrhr9fkXu6m4dP0mH8WeJPtmCd193Hg+ogPWlvLjKoR4uMinlhAmZu/Ja3y57Sxa\nrY5R/b0Y+mgrGX8hhHgoSckQwkRotDq+3XWBnYeuYGNlzt9GdiLAW8ZfCCEeXlIyhDABN4tKWb7p\nFGcu59KssR3TRnbCw0XGXwghHm5SMoQwspTr+XwUe4KsmyV0a+/GhIgO2FjJj6YQ4uEnn2RCGFFC\n0nW++O8ZNBodI/q2IaJXa8xk/IUQop6QkvEQkbM66g+tTsf6XcnsOJiKjZWaKcMD6NK2sbFjCSHE\nAyUlQ4g6ll9UyvLvkvg1JYemrrb8bWQnmrraGTuWEEI8cFIyhKhDl9PzWbrhJFk3b9GlbWMmPuYn\n4y+EEPWWfLoJUUf2n77OF3FnKNXo+EufNjzWW8ZfCCHqNykZQhiYVqdjQ/xvbDtwGWtLNdNGdaJr\nOzdjxxJCCIOTkiGEARUUl7Hiu1MkXcrBw8WWl0fJ+AshRMMhJUMIA0m9UcDSDSfIzLtFZ29XJj7m\nj621/MgJ45Kz1ERdkk88IQzgwK/pfBb3K6VlOh7r1Zq/9G0j4y+EEA2OlAwhHoDE0+nkFpSg1Sm8\nsmQP+UVlWFmqmTqiE4/4yPgLIUTDJCVDiPuUeDqdFZuT9NP5RWUAPN67jRQMIUSDZmbsAEI87L5P\nuFTl/IRT1+s0hxBCmBopGULcp7TMwirnX8uqer4QQjQUcrhEiHukKArfJ6SgKFU/LqeqCiEaOikZ\nQtyDkjItn8f9yoFfb2BnY05hsabSMhFBrYyQrG4tWLCA48ePo1KpiIqKIiAgAID09HRmzZqlXy41\nNZWZM2dy5coV9u3bB4BOpyMzM5Pt27cTHBxMkyZNUKvVAPz73//Gw8Oj7jdICPFASckQ4i5l37zF\n0g0nSUnPp21zJ6aO7MSZlBxWbj2NVqfg6WZPRFArAv3q9y/JAwcOkJKSQnR0NMnJyURFRREdHQ2A\nh4cHq1evBkCj0TBmzBiCg4Oxs7NjypQpAGzcuJGsrCz9+j799FPs7GTvjxD1iZQMIe7ChbQ8Poo9\nyc3CUvoENGXMYB8szM0I9PMgJj4ZtVrFOxN6GjtmnUhISCAkJAQAb29v8vLyKCgowN7evsJyGzdu\nJCwsrEKB0Gg0rF27lq+++qpOMwsh6paUDCFq6ZcT1/hq+xm0OoWnQ9oR8ognqgZ8ga3MzEz8/f31\n0y4uLmRkZFQqGevXr+ezzz6rMG/Hjh306dMHa2tr/bx58+aRlpbGI488wsyZM6t9b52dbTE3V9eY\nUa0uX4ebm0OttslQTCUHmFYWMJ0cYDpZTCUH3H8WKRlC1ECr07F+VzI7DqZia2XOlOEd8W/jYuxY\nJkepYgTs0aNH8fLyqlQ8NmzYwNtvv62ffvnll+nbty9OTk5MnTqV7du3Ex4efsfXyskpqlUmrVZB\nrVaRkZFfy60wDFPJYWpZ3NwcTCIHmE4WU8kBtc9SXRGRkiFENQpvlbH8uySSLmbT1NWWl0cF4OFi\na+xYJsGzGuPvAAAgAElEQVTd3Z3MzEz99I0bN3Bzq3jxsfj4eIKCKt4jo6ioiOvXr+Pp6amfN3z4\ncP3X/fr149y5c9WWDCHEw0GukyHEHVzLKuQfXx0m6WI2Ad6uvDmmuxSM2/Tu3Zvt27cDkJSUhLu7\ne6U9FidPnsTX17fCvDNnzuDl5aWfzs/PZ8KECZSWlgJw8OBB2rVrZ+D0Qoi6IHsyhKjCieQsVmxO\norhEw5DAlozq742ZWcMdf1GVbt264e/vT2RkJCqVinnz5hEbG4uDgwOhoaEAZGRk4OrqWuF5GRkZ\nuLj8cbjJwcGBfv36MXr0aKysrPDz85O9GELUE1IyhLiNoihsP5DK+vgLqM3MmDjMj6COTYwdy2Td\nfi0MoNJeiy1btlR6TlhYGGFhYRXmjRs3jnHjxj34gEIIo6pVyVi8eDGHDx9Go9EwadIkBg8eXGmZ\n9957j2PHjunPjRfiYVOm0fLltrPsO3UdJ3tLpo0MwKuZo7FjCSHEQ6vGkrF//37Onz9PdHQ0OTk5\njBgxolLJuHDhAgcPHsTCwsJgQYUwpNyCEj6KPclvV2/SpqkDfxsZgLODlbFjCSHEQ63GktGjRw/9\npYIdHR0pLi5Gq9XqL/8LsGjRIl599VU++ugjwyUVwkAuXrvJ0g0nyC0oJcjfg3Hhvlha1HwNBiGE\nENWrsWSo1WpsbctH1MfExNCvX78KBSM2NpaePXvSvHnzWr1gbS+i8ztTuSiJKeQwlYvomEoOuP8s\n8UeusDT6KGVaHc8N82PEgLb3fIEtU3lfTCWHEELUeuDnzp07iYmJqXDlvtzcXGJjY/n8889JT0+v\n1XpqexEdMJ2LkphKDlO5iI6p5LifLDqdQuzPvxG3PwUbKzUvjQggwLsxmZkFdZ7lQbubHFJEhBCG\nVKuSsWfPHpYvX87KlStxcPjjQ2n//v1kZ2fzzDPPUFpayuXLl1mwYAFRUVEGCyzE/Sou0fDJ5iSO\nJ2fh7mzDy6MCaNZYbswlhBAPWo0lIz8/n8WLF/PFF1/QqFGjCo+Fh4frz2e/cuUKb7zxhhQMYdLS\nc4pYEnOCa1lF+Ld2ZvLwjthZy4BlIYQwhBpLRlxcHDk5OUyfPl0/LzAwEB8fH/0Fd4R4GJy+lM1/\nNp2i8JaG0O4teCrYG7WZXPRWCCEMpcaSMXr0aEaPHl3jijw9PeUaGcIkKYrCj4evsO7HC6hU8NwQ\nX/p2bmbsWEIIUe/JFT9FvabR6vh6x1l+Pn4NR1sLpo7sRDvPRjU/UQghxH2TkiHqrZuFpXy88STn\nr+TR0sOeaSMDcHWyNnYsg/vXS71M5owoIUTDJiWjBq8t24darWLRpKCaFxYm43J6Pks3nCDrZgk9\nfN15PqIDVnKBLSGEqFNSMkS9c+jMDVZ+f5rSMh0j+nkxLKjVPV9gSwghxL2TkiHqDZ2isPmXi2ze\newkrSzXTRnaia3s3Y8cSQogGS0qGqBdulWpYtfVXDp/LoLGTNS+PCsDT3d7YsYQQokEz2ZIhYyFE\nTRJPp5NbUIJWp/DKh79QptXh27IRU4Z3xMHW0tjxhBCiwTPZkiFEdRJPp7Nic5J+ukyrA6BPQFMp\nGEIIYSLkcofioaEoCuk5Rew6coUvt52pcpltial1nEoIIcSdyJ4MYdIKb5Xx66Ucki5lk3Qxm8y8\nW9Uufy2rsI6SCSGEqImUDGFSNFodv129SdLFbJIuZXPx2k0UpfwxGytzHmnvhl8bF344mMr17KJK\nz2/qKndTFUIIUyElQxhV+SGQ4vJScTGbM5dzuFWqBcBMpcK7uRMdW7vg18aFNk0d9Dc0s7UyrzAm\n43cRQa3qNL8QQog7k5Ih6lxBcRmnL2Vz+n+HQLJulugf83C2oVdHF/xbu+DT0hlb66q/RQP9PABY\nufU0Wp2Cp5s9EUGt9POFEEIYn5QMYXAarY7ktDxOXSwvFpeu5fO/IyDYWZvT3ccN/zblxaJxI5ta\nrzfQz4OY+GTUahXvTOhpmPBCCCHumZQM8cApisK1rCL9uIqzl3MpKSs/BKI2U9GuRSP8Wzvj38aV\n1k0cMDOTS34LIUR9JCVD3JXbL4A1d1UiEUGtCfTz4GZRaflZIP8rFjn5fxwCaepqi19rF/zbuODT\nohE2VvJtJ4QQDYF82ota+/MFsK5kFLJicxIbdidXOLXU3saCnh3cy4tFa5cGcXt1IYQQlUnJELX2\nfcKlKudn5t3Ct2Wj8nEVbVxo6eGAmdz1VAghGjwpGaLWrmZWfaErMzMVr/+1Wx2nEUIIYeqkZIga\naXU6tiVeRqdU/XgzuQCWEOIuyU0wGwYpGaJa6dlFrNx6muSrN7GxUlNcoq20jFwASwghRFWkZIgq\n6RSFXUfSWL/rAqUaHYF+HjwT2p6ki9lyASwhhBC1IiVDVJJ98xarvv+VX1NysLexYMIwP3r4ugNy\nASzxhwULFnD8+HFUKhVRUVEEBAQAkJ6ezqxZs/TLpaamMnPmTMrKyvjwww9p2bIlAL169WLKlCmc\nOXOGt956CwAfHx/efvvtOt8WIYRhSMkQeoqisO/Udb7ZeY7iEi2dvV0ZP8QXJ3srY0cTJubAgQOk\npKQQHR1NcnIyUVFRREdHA+Dh4cHq1asB0Gg0jBkzhuDgYLZv387QoUOZPXt2hXXNnz9fX1JmzpzJ\n7t276d+/f51vkxDiwZOSIQDIKyzlq21nOHo+E2tLNc8N8aVPQFNUciqqqEJCQgIhISEAeHt7k5eX\nR0FBAfb29hWW27hxI2FhYdjZVT04uLS0lLS0NP1ekIEDB5KQkCAlQ4h6QkqG4NCZG3y1/SwFxWX4\ntmzE8xEdaOxU+3uIiIYnMzMTf39//bSLiwsZGRmVSsb69ev57LPP9NMHDhxgwoQJaDQaZs+ejaur\nK46OjvrHXV1dycjIqPH1nZ1tMTdX17icWl1ekt3cHGpc1pBMJQeYThZTyXE7U8liKjng/rNIyWjA\nCm+VseaHc+xPSsfC3IynQ9ox6BFPuZCWuGuKUvn85qNHj+Ll5aUvHp07d8bFxYUBAwZw9OhRZs+e\nzcqVK2tcT1VycopqtZxWq6BWq8jIyK/V8oZiKjlMKYup5Pidm5uDSWQxlRxQ+yzVFREpGQ3Uqd+y\n+Py/Z8jJL6FNU0deGNaBpnK9C1FL7u7uZGZm6qdv3LiBm5tbhWXi4+MJCvrjGgje3t54e3sD0LVr\nV7Kzs3F2diY3N1e/THp6Ou7u7gZOL4SoK2bGDiDq1q1SDV9tP8v73x7nZmEpI/p5ETWmmxQMcVd6\n9+7N9u3bAUhKSsLd3b3SoZKTJ0/i6+urn/7000/ZunUrAOfOncPFxQVLS0u8vLw4dOgQADt27KBv\n3751tBVCCEOTPRkNyLnUXFZ9f5qM3Fs0d7Nj4jA/WnqYzrE/8fDo1q0b/v7+REZGolKpmDdvHrGx\nsTg4OBAaGgpARkYGrq6u+uc89thjvPbaa6xbtw6NRsP8+fMBiIqKYu7cueh0Ojp37kyvXr2Msk1C\niAdPSkYDUKbRsvHni2w/cBlUMOTRlgzv44WFuezIEvfu9mthABX2WgBs2bKlwnSTJk30p7berm3b\ntnzzzTcPPqAQwuikZNRzKdfzWbn1NGmZhbg72/BChB9tPZ2MHate+tdLvUxq0JYQQhiblIx6SqPV\nEZeQwpZ9l9DqFIK7NefJAW2xsqz5tD8hhBDiQahVyVi8eDGHDx9Go9EwadIkBg8erH9s//79vP/+\n+5iZmdGmTRvmz5+PmZnshjemq5mFrNx6mkvX83F2sOL5iA74t3YxdiwhhBANTI0lY//+/Zw/f57o\n6GhycnIYMWJEhZIxd+5cvvrqK5o0acLLL7/Mnj175Gp9RqJTFH44mMqG3b+h0ero1bEJfw1ph621\nhbGjCSGEaIBqLBk9evTQX/LX0dGR4uJitFotanX5bvfY2Fj9qWsuLi7k5OQYMK64k4zcYlZ9/yvn\nUnNxsLVgXLg/3dq71fxEIYQQwkBqLBlqtRpbW1sAYmJi6Nevn75gAPqCcePGDfbu3csrr7xS7frk\ncsD3rqosiqKwIzGFVZtPUVyiJahTU14a1ZlGDoa7qZmpvyfGZipZTCWHEKLhqvXAz507dxITE1Ph\nPgS/y8rKYvLkycybNw9nZ+dq1yOXA35wWXLyS/hy2xlOJGdhY2XOxGF+POrvQdmtUjJuldZZDmMy\npSxgOpcEfhCXAxZC1K3Xlu1DrVaxaFJQzQs/JGpVMvbs2cPy5ctZuXIlDg4VP5QKCgqYOHEi06dP\np0+fPgYJKSpLPJ3O1zvOUnhLg39rZ54b2gEXR2tjxxJCCCH0aiwZ+fn5LF68mC+++IJGjRpVenzR\nokWMGzeOfv36GSSgKJd4Op3cghK0OoWpH+ymuESLpYUZYwa3Z0DX5nJLdiH+5PafmbmrEokIak2g\nn4exYwnRoNRYMuLi4sjJyWH69On6eYGBgfj4+NCnTx82bdpESkoKMTExAAwbNozRo0cbLnEDlHg6\nnRWbk/TTxSVaAEb282JgN09jxRLCZP35Z+ZKRqF+WoqGEHWnxpIxevToakvDqVOnHmggUdn3CZeq\nnP/LiesM7tGyTrMI8TC408/M9wkpUjKEqENy1ayHQFpmYZXzr2VVPV+Ihu5qZtUDzOVnRoi6JSXD\nxOUWlGB2h/EWcnt2IarWrLFtlfObulY9XwhhGFIyTFhpmZalG06g1SlVPh4R1KqOEwnxcIgIal3l\nfGtLc0rKtHUbRogGTEqGiVIUhc/ifuXitXx6d2zCi4/5oTYr36Ph6WbPpMf95diyEHcQ6OfBpMf9\n9T8zTV1t8XC24UJaHgtWHyYjt9jICYVoGKRkmKgtey9x4NcbtPV0Ymy4L4/6N6GRvRXuzja8M6Gn\nFAwhahDo56H/mZk/8VHefSGQAV2akXqjgHe+OEjSpWxjRxSi3pOSYYIOnrnBpl8u4upozd9GdMLC\nXP6bhLhf5mozxob7Mi7ch1ulWt6PPsa2xMsoStWHI4VoyF5bto8J/9hx3+uR314m5uK1m6zaehor\nSzWvPBGAo52lsSMJUa/079Kc2c90w9HOkm93XeCTLadlnIYQBiIlw4Tk5JewdMMJyjQ6Jj3uj6e7\nvbEjCVEvtW3uxLzxPWjb3InE0+kyTqOBe1B/tYvKpGSYiJIyLUs2nCC3oJQnB7alS9vGxo4kRL3W\nyN6K1//aVcZpCGFAUjJMgE5RWLX1NCnX8+kT0JSwni2MHUmIBkHGaQhhWFIyTMDmXy5y6GwG7Vs0\nYmyYj9zsTIg6JuM0hDAMKRlGtv/0dTbvvURjJ2umjuiIuVr+S4QwBhmnIcSDJ7/RjCj5ah6ffX8G\nGys1rzzZGQdbOZNECGOScRpCPFhSMowk++YtPtpwEq1Ox6THO9K8sdyH5F7866VerPr7YGPHEPWI\njNMQ4sGRkmEEJaValsScIK+wlNHB7QjwdjV2JCHEn8g4DSHun5SMOqZTFD7deprLNwro17kZod09\njR1JCHEHMk5DiPsjJaOObfz5N46cy8C3ZSOeHdxeziQRwsTJOA0h7p2UjDqUkHSd7xNScG9kw0sj\nOsmZJEI8JGSchhD3Rn7L1ZELaXl8HncGGytzXnkyAHsbC2NHEkLcJRmnIcTdkZJRBzLzivlowwl0\nOoUpw/1p6ipnkgjxsJJxGkLUnrmxA9R3t0o1LIk5yc2iMp4JbU/HNnImiagfFixYwPHjx1GpVERF\nRREQEABAeno6s2bN0i+XmprKzJkzGTJkCG+++SaXL19Gq9Xy+uuv0717d8aMGUNRURG2trYAzJ49\nm44dOxplm2rr93Ea3/xwjvhjV3nni4NMHt4R/9Yuxo4mhEmRkmFAOkXhk82nuZJRwMCuzQnu1tzY\nkYR4IA4cOEBKSgrR0dEkJycTFRVFdHQ0AB4eHqxevRoAjUbDmDFjCA4O5rvvvsPGxoa1a9dy/vx5\n3njjDWJiYgBYuHAh7du3N9r23Ivfx2m0auLA1zvO8X70MZ4c0Jawni1kQLcQ/yMlw4A27E7m2IVM\nOrRy5umQdvLBI+qNhIQEQkJCAPD29iYvL4+CggLs7e0rLLdx40bCwsKws7Pj8ccfZ9iwYQC4uLiQ\nm5tb57kNoX+X5jR3s+fjjSf5dtcFUtLzGT/EFysLtbGjCWF0UjIMZO/Ja/x3/2U8nG14Se5JIuqZ\nzMxM/P399dMuLi5kZGRUKhnr16/ns88+A8DC4o/Bzl9++aW+cAAsWbKEnJwcvL29iYqKwtrautrX\nd3a2xdy85l/ianV5sXdzc6h5o+6Dm5sDPl6NWfTlQRJPp3Mjt5io8T1p8r/xV3WVoyY/H71CbmEJ\nWq3CO18e4slB7ejX1TjX6jGV9wRMJ4up5IAHl0VKhgGcS83li/+ewdbKnJefCMDOWs4kEfVbVady\nHj16FC8vr0rFY82aNSQlJbF8+XIAxo4di4+PDy1btmTevHmsWbOGCRMmVPt6OTlFtcql1Sqo1Soy\nMvJruSX359UnA/TjNKa/H68fp1HXOf5Mq9Pxy4lrfLntrH7epWs3+dfXh7l58xaBfh51n8nI74kp\nZjGVHHebpboiIiXjAcvMLeaj2JMoCkwZ0VHOJBH1kru7O5mZmfrpGzdu4ObmVmGZ+Ph4goKCKsxb\nv349P/30E8uWLdPv2QgNDdU/HhwcTFxcnAGTG1ZV4zQCO3iQW1CCVqcwd1UiEUGt7+mXukaro/CW\nhqJbZRTd0ui/rvivhsL/PV5U8sf8W6V3Ps32+4QUo5QM0TBIyXiAiks0fLjhBAXFZYwZ3F5Gmot6\nq3fv3ixdupTIyEiSkpJwd3evtMfi5MmTDB06VD+dmprKunXr+Prrr7GysgLK94A899xzLFmyBEdH\nRxITE2nXrl2dbosh/D5O44Nvj7H/dLp+/pWMQlZsTiI7v4S2zR0rFITiqopDyR/FobRMd1cZbKzU\n2FpZ4N7IBltrc85crnoMzNXMgvvaViGqIyXjAdHpFFZsTiIto5BB3TwZ2E3uSSLqr27duuHv709k\nZCQqlYp58+YRGxuLg4ODfs9ERkYGrq5/nLK9fv16cnNzefHFF/XzVq1axVNPPcX48eOxsbHBw8OD\nadOm1fn2GELb5k40sreiuKTyoZ31uy7U+HwVYGNljq21OU1d7LC1NsfO2hxba4v//VvxaztrC/2/\nNlZq1GYVx4HNXZXIlYzCSq+jU+D9b8vPjGnhbl/pcSHuh5SMB2R9/AVOJGfh38aFyJC2xo4jhMHd\nfi0MAF9f3wrTW7ZsqTA9Y8YMZsyYUWk9Q4cOrbDHoz5Jz676Il0qYMijrSqUhT+XCBsrc8we4Blp\nEUGtWbE5qdL8Zo3tOPVbNkm/HaBXxyYM7+uFq1P1A2+FqC0pGQ/AnuNX2X4glSYutkz5i3+lvyCE\nEA1Ts8a2Ve49aO5mzxMDvOs0y+/jLlZuPY1Wp+DpZk9EUCt6dnAn6WI23+5KZu+p6yT+eoOQ7p5E\nBLWSQevivslvw/t09nIOX20/i511+T1JbOWHUgjxPxFBre8wv1XdBvmfQD8PGtlb4e5swzsTehLo\n54FKpaKjlytvPdeDCREdcLSzYFviZeYsT2Bb4mXKNHJvFnHvZE/GfbiRW8zHG08B8NKITng42xo5\nUd3410u9cHNzMInTrIQwZXfae2CKZ3OYmano3akpPTu48+PhNLbuu8S3uy7w4+FURvTz4lH/Jg/0\n8I1oGGRPxj0quqVhSUz5mSTPDm5Ph1bOxo4khDBBVe09MGUW5mrCA1uyaHIQ4T1bkldYxsqtv/L2\n5wc5dTHL2PHEQ6ZWezIWL17M4cOH0Wg0TJo0icGDB+sf27dvH++//z5qtZp+/foxdepUg4U1FVqd\njuWbT3E1s5CQ7p707yL3JBFC1C/2NhY8FdyW4Eeas2nPRRJOXef96OP4tXbmyQFtadXE+FelFKav\nxpKxf/9+zp8/T3R0NDk5OYwYMaJCyfjHP/7BqlWr8PDw4NlnnyUsLIy2bev32RXf/pTMqd+y6ejl\nwujg+r2tQoiGrbGTDS8M82NwjxbExCdz6mI2b39xkEf9PBjRzwu3RjbGjihMWI0lo0ePHvpbODs6\nOlJcXIxWq0WtVpOamoqTkxNNmzYFoH///iQkJNTrkhF/LI0fDqXS1NWWyY93lDNJhBANQksPB2aM\n7sLpS9ms35XM/tPpHDp7g+Bungzr1Rp7Gxn0LiqrsWSo1WpsbcsHNMbExNCvXz/U6vIbE2VkZODi\n8sdVLV1cXEhNTa12faZ2Y6O7yXHiQgZrdpzDwdaSt1/sRdPGdXvJcFN5T35nKjlAslTFVHKI+sWv\ntQv/N96ZA6fTif35N3YcTGXPiWsMfbQlod1bYCl3nxW3qfXZJTt37iQmJkZ/R8V7Zao3Nqopx6mz\n6Sz46hAALw33x1zR1Xk2U3lPAJM6u0Sy3HsOKSLiXpipVDzq34RHfNzZdTSNLXsvsmH3b/x0JI3h\nfdvQu2NTzMzkTBRRy5KxZ88eli9fzsqVK3Fw+OND6c83SUpPT8fd3f3BpzSSxNPp+hsb/d+qRDRa\nhfFDfPFpKWeSCCGEhbkZg3u0oE+nJsTtv8wPh1L5PO4MOw6m8uQAbzp5uaKS014btBoHFOTn57N4\n8WJWrFhBo0aNKjzm6elJQUEBV65cQaPRsGvXLnr37m2wsHUp8XQ6KzYnodWV38Jaoy3/10p2BQoh\nRAW21hY8McCbhS8+Sp9OTbmaWcj/W3+Cf609ysVrN40dTxhRjXsy4uLiyMnJYfr06fp5gYGB+Pj4\nEBoayltvvcXMmTOB8nsQtGnTxnBp69D3CZfuMF9uiyyEEFVxcbTm+YgODO5ZfibKieQs3v3yED18\n3RnV3wv3BnLBQvGHGkvG6NGjGT169B0f79GjB9HR0Q80lLGVlGlJq+J+AwDXsqqeL4QQopynmz3T\nn+zMmZQc1sdf4OCZGxw5l8GArs15rHdrfr2Uoz8UPXdVIhFBreWPt3pKLit+G0VRSPw1nZj4ZJQ7\nLNPUtW7PKBFCiIeVbytn/j62OwfP3CB292/8ePgKPx9Lo0z7xyfslYxC/d1hpWjUP1Iy/ufitZus\n3XmeC2l5mKtVdGnbmGMXMistZ6wbGwkhxMNIpVLRs4MH3dq7EX80jXU/nq9yOTkUXT81+JKRk19C\n7O7yWxwDPNLejSeD2+LeyIbE0+kPxY2NhBDC1JmrzQjp3uKOJUMORddPDbZklGm0bD+QyvcJKZSU\naWnhbs/Tg9rhe9uNzgL9PIiJT0atVvHOhJ5GTCuEEPVDs8Z2XKlizFsTFxkUWh81uJKhKAqHz2bw\n7a4LZObdwsHWgtGD2tIvoJlcPEYIIQwsIqi1fgzG7UrKtOQVluJkZ2mEVMJQGlTJSLmez9ofz3Mu\nNRe1mYrwni0Z1qs1ttYN6m0QQgij+f2Q8x+Hou2ws7Hg7OVc5n91iFef6iwD7OuRBvHbNa+wlI0/\nJ7Pn+DUUoEvbxowObouH7J4TQog6V/FQdCCKorBl7yU2/XKRBasP8/ITAbTzbFTzioTJq9clo0yj\nY+fhVLbsvcStUi3NG9sROagd/m1can6yEEKIOqFSqXi8TxtcHK35ctsZ/rX2GC8+5kd33/pzm4qG\nql6WDEVROHY+k+ifLnAjtxg7a3OeCW3PgK7N5NbsQghhovoENKWRgyXLNp7iP5tOMTq4LYN7tjR2\nLHEf6l3JuHKjgLU/nufXlBzMVCpCHvHk8T5tsLexMHY0IYQQNejYxpU5z3Tjg/XHWffTBbJuljB6\nUFvM5EZrD6V6UzLyi0rZtOci8cfSUBTo6OVCZHA7mjWWAURCCPEwaenhwN/HdOf/rT/OD4dSyc6/\nxcRhfljKDSofOg99ydBodfx0JI3Nv1ykqERDExdbIge1I8Db1djRhBBC3CNXJ2veeLYbH8We5PDZ\nDPIKjvHyEwGyV/oh81CXjBPJmaz78QLXs4uwtTLn6UHtGNitOeZqGXchhBAPO1trC159qgufxf1K\n4ul05q8+zKtPdca9kY2xo4laeihLxtXMQtb9dJ5Tv2WjUsHAbs0Z3qcNDrZyERchhKhPLMzNmPiY\nHy6OVvx3/2UWfHWIV57sTJumjsaOJmrhoSoZBcVlbP7lIj8dSUOnKPi1diZyUDs83eyNHU0IIYSB\nmKlUPDmgLa6O1qz54Rz//OYIU/7Skc5tGxs7mqjBQ1EytDod8UevsmnPbxTe0uDubMPo4LZ0adsY\nlYw4FkKIBiG4myfODlas+C6JJRtOMCbMhwFdmhs7lqiGSZaMxNPp5BaUoNUpvP6ffWh1Cjn5JdhY\nqXlqYFsGPeKJhbmMuxBCiIamazs3XvtrV5bEnOCrbWfJyrvFyH5e8geniTK5kpF4Or3CzXMy824B\n4NvSmcl/8cdRbp4jhBANmnczJ94c8wjvf3uc7xNSyL55i+eGdpBB/ybI5ErG9wmXqpxfUFwmBUMI\nE7JgwQKOHz+OSqUiKiqKgIAAANLT05k1a5Z+udTUVGbOnEl4eDhz5szh6tWrqNVqFi5cSIsWLThz\n5gxvvfUWAD4+Prz99tvG2BzxkHF3tiVqzCMsjTlBQlI6uQWlTB3RSW54aWJMrvZdzSyqcv61rMI6\nTiKEuJMDBw6QkpJCdHQ08+fPZ/78+frHPDw8WL16NatXr+bzzz+nadOmBAcHs3XrVhwdHVm7di2T\nJ0/mvffeA2D+/PlERUWxbt06CgoK2L17t7E2SzxkHG0tmfV0V7q2a8yvKTksWnOY7Ju3jB1L3Mbk\nSkazxlXfGVVu/SuE6UhISCAkJAQAb29v8vLyKCgoqLTcxo0bCQsLw87OjoSEBEJDQwHo1asXR44c\nobS0lLS0NP1ekIEDB5KQkFB3GyIeelYWaqaO6MSgbp5cyShk/urDpN6o/L0ojMPkSkZEUOs7zG9V\nt0GEEHeUmZmJs7OzftrFxYWMjIxKy61fv54nnnhC/xwXl/I7IJuZmaFSqcjMzMTR8Y/rHbi6ula5\nHlYEq0AAABr5SURBVCGqY2am4q+h7XhqYFty8ktYtOYwpy9lGzuWwATHZAT6eQCwcutptDoFTzd7\nIoJa6ecLIUyPoiiV5h09ehQvLy/s7au+jk1Vz6lqXlWcnW0xN6/5PhZqdfkZB25uDrVar6GYSg4w\nnSyGyDFmmD+tmzfi/bVH+ODb47w8uivB3VsYJcu9MJUc8OCymFzJgPKiEROfjFqt4p0JPY0dRwjx\nJ+7u7mRmZuqnb9y4gZubW4Vl4uPjCQoKqvCcjIwMfH19KSsrQ1EU3NzcyM3N1S+Tnp6Ou7t7ja+f\nk1P12K0/02oV1GoVGRn5tVreUEwlhyllMVQOX09HZo7uzNINJ/lg7RFS0nKJCGpV7Smu9f09MXSW\n6oqIyR0uEUKYvt69e7N9+3YAkpKScHd3r7TH4uTJk/j6+lZ4zrZt2wDYtWsXgYGBWFhY4OXlxaFD\nhwDYsWMHffv2raOtEPWVT0vn/9/e3YdFVSf8H3+PMwzIQwkGtKAY62Zuko/UhmjpBGp6VVuuGxiy\nZnu5pZZb+VNkCdpcFSr3anN371p1vffGh9WIX9mW6dXuxS+7IiwtCjdvxTY3RBHER2AQmPP7w5wN\nRZGHMwz4ef3DzDkzZz7n6PXlwzlnzmHxjFH0vcaX/Pe/4n+2/S9NLldXx7oqeeWeDBHxbiNHjmTI\nkCEkJSVhsVjIysoiPz+foKAg98mdlZWV9O37n7shT548mQ8//JDk5GTsdjvZ2dkApKenk5mZicvl\nYtiwYYwePbpL1kl6lsjrAvhV6rnbxf+/z8o5frqeR+8bgp9dv/Y8SVtbRNrlu9fCAJrttQB46623\nmj0/f22MC/3gBz9gw4YNnR9Qrnp9An1ZNH0k//VGCZ8fOEbOhk/55bRhXKtrLnmMDpeIiEiP1dvX\nxhM/GcqYod/j4JHTLP2fT3TdJQ9SyRARkR7NZu3Fw3cP5r4x0VSddLIsdxf7y060/kbpMJUMERHp\n8SwWC/eNiebhyYNxnm3ihY2f8cneo10dyyudv0np0eN1ZK4pouifFe1els7J6EZemDOa0NAgr/h6\nk4hIdzR2aATBQb784f+W8F9vlHD7kHD3Xb8z1xQxJe6Gq/q6TBfepLSsssb9vD3bRXsyRETkqhIT\n3ZfFD43Ez9dK4Z4KmlznLgJ3/hdqR/5y724Mw6D+bBPHT9dzqKqG/Pe/avF1bxcebNfytSdDRESu\nOlHhQVwb4Etd/cUXdlv7zpe8X1yOn92Kn9327U8rvhc897Nb8fW5cJoNu0+vy178qyXnD1G0dY+K\nyzBw1jdSW99IrbORum9/1n47ra6Vx3X1je6SdTntPVn2ikrGvn37mDNnDjNnziQlJaXZvPXr17Nl\nyxZ69epFTEwMv/rVr9oVRERExJOOHq9rcfrZRhdfHjze7uVaAN8LS4nPpYqKjfJjNXzw+WH3+8/v\nUSkurSK0T+/mBcL9uIHa+iac9Y1c2cX4/8Pu0wt/XxtB/j6Eh/TG39eH3r5W/P182PW/Rzld23DR\ne9p7k9JWS0ZtbS1Llixpdnng886cOcOaNWvYvn07NpuNWbNm8dlnnzF8+PB2hREREfGUiOv8Kau8\n+C/0fqGBZM6MxXm2ifqzTTjPNuJsaMJ5tglnfRP1DY3ueXXfzj/3uibqG8794neebcLZ0ERdfSMn\nTtdT39DU5nwfXeKwTW9fG/6+Nvpe44e/37nHvX1tLT7297t4ns166TMlburfp9k5Gee19yalrZYM\nu93OqlWrWLVq1UXzfHx88PHxoba2Fn9/f+rq6rj22mvbFURERMSTpsTdcMlfqDZrLwJ79yKwt0+n\nfJbLZZwrIOdLi7vANLEy/3NaujdgLwv8n+QRzUqCn91Gr15tOxTTFp19k9JWS4bNZsNma/llvr6+\nzJ07l4SEBHx9fZkyZQrR0dGXXZ7unthx3pLFW3KAsrTEW3KIeCtP3vW7Vy8Lvb/dkwC+zeZFXhfQ\n4h6ViOsCuSkquNOztKYzb1LaoRM/z5w5w6uvvsq7775LYGAgP/vZz9i7d+9Flxf+Lt09sWO85Sus\n3pIDlKUjOVRE5GrnDXf9vtwele6uQ19hPXDgAP379yckJAS73U5sbCwlJSWdlU1ERKTH+9HN4fzi\n3iFYvz0M0i80kF/cO6RHXK+jQyUjMjKSAwcO4HQ6ASgpKeGGG27ojFwiIiJXjR/dHE6fQF/Cgnvz\n3CO39YiCAVdwuKSkpIScnBwOHTqEzWZj27ZtOBwO+vXrR2JiIo888gipqalYrVZGjBhBbGysJ3KL\niIiIl2u1ZMTExJCbm3vJ+UlJSSQlJXVqKBEREen+dFlxERERMYVKhoiIiJhCJUNERERMoZIhIiIi\nplDJEBEREVOoZIiIiIgpVDJERETEFCoZIiIiYgqVDBERETGFSoaIiIiYQiVDRERETKGSISIiIqZQ\nyRARERFTqGSIiIiIKVQyRERExBQqGSIiImIKW1cHEJHuadmyZRQXF2OxWEhPT2fo0KHueYcPH+ap\np56ioaGBm2++meeee47XXnuNLVu2uF9TUlLCp59+yowZM6itrcXf3x+ARYsWERMT4/H1EZHOp5Ih\nIm22c+dODh48yKZNmzhw4ADp6els2rTJPT87O5tZs2aRmJjIr3/9a8rLy5k2bRrTpk1zv3/r1q3u\n1y9fvpxBgwZ5fD1ExFw6XCIibVZYWEhCQgIAAwcO5OTJk5w5cwYAl8vFrl27cDgcAGRlZREREdHs\n/X/4wx+YM2eOZ0OLiMepZIhIm1VVVREcHOx+HhISQmVlJQDV1dUEBASwfPlykpOTWbFiRbP3fv75\n53zve98jNDTUPe3ll1/moYceIjMzE6fT6ZmVEBHT6XCJiHSYYRjNHldUVJCamkpkZCSzZ8+moKCA\ncePGAZCXl8f999/vfn1qaio33XQTUVFRZGVlsX79eh555JHLfl5wsD82m7XVXFarBYDQ0KB2rFXn\n8ZYc4D1ZvCUHeE8Wb8kBnZdFJUNE2iwsLIyqqir386NHj7r3TAQHBxMREUFUVBQAcXFx7N+/310y\nioqKyMjIcL83MTHR/djhcPDOO++0+vnHj9deUc6mJgOr1UJl5ekrer1ZvCWHN2XxlhzelMVbcrQ1\ny+WKiA6XiEibxcfHs23bNgD27NlDWFgYgYGBANhsNvr378/XX3/tnh8dHQ1ARUUFAQEB2O124Nxe\nj5kzZ3Lq1CngXAG58cYbPbw2ImIW7ckQkTYbOXIkQ4YMISkpCYvFQlZWFvn5+QQFBZGYmEh6ejpp\naWkYhsGgQYPcJ4FWVlYSEhLiXo7FYuGnP/0pM2fOpHfv3oSHh/P444931WqJSCdTyRCRdlmwYEGz\n54MHD3Y/HjBgABs3brzoPTExMaxevbrZtMmTJzN58mRzQopIl9LhEhERETGFSoaIiIiYQiVDRERE\nTKFzMkRExONemDOa0NAgr/i6pphHezJERETEFCoZIiIiYgqVDBERETGFSoaIiIiY4opKxr59+0hI\nSGDdunUXzTt8+DDJycn85Cc/ITMzs9MDioiISPfUasmora1lyZIlxMXFtTg/OzubWbNmkZeXh9Vq\npby8vNNDiohI53hhzmjWZEzo6hhylWi1ZNjtdlatWkVYWNhF81wuF7t27XLflyArK4uIiIjOTyki\nIiLdTqslw2az4efn1+K86upqAgICWL58OcnJyaxYsaLTA4qIiEj31KGLcRmGQUVFBampqURGRjJ7\n9mwKCgoYN27cJd8THOyPzWZtddlWqwW4/H3qPcFbcnyXt2TxlhygLC3xlhwicvXqUMkIDg4mIiKC\nqKgoAOLi4ti/f/9lS8bx47VXtOymJgOr1dLlV4PL/kWcV12VzluyeEsOUJaO5FAREREzdegrrDab\njf79+/P1118DsGfPHqKjozsjl4iIiHRzre7JKCkpIScnh0OHDmGz2di2bRsOh4N+/fqRmJhIeno6\naWlpGIbBoEGD3CeBioiIyNWt1ZIRExNDbm7uJecPGDCAjRs3dmooERER6f50xU8RERExhUqGiIiI\nmEIlQ0REREyhkiEiIiKmUMkQERERU6hkiIiIiClUMkRERMQUKhkiIiJiCpUMERERMYVKhoiIiJhC\nJUNERERMoZIhIiIiplDJEBEREVO0ehdWEZHu6oU5owkNDaKy8nRXRxG5KmlPhoiIiJhCezJEpF2W\nLVtGcXExFouF9PR0hg4d6p53+PBhnnrqKRoaGrj55pt57rnnKCoqYv78+dx4440ADBo0iGeeeYbD\nhw+zcOFCmpqaCA0N5YUXXsBut3fVaolIJ9KeDBFps507d3Lw4EE2bdrE0qVLWbp0abP52dnZzJo1\ni7y8PKxWK+Xl5QDcdttt5ObmkpubyzPPPAPAyy+/zPTp09mwYQMDBgwgLy/P4+sjV7cX5oxmTcaE\nro7RI6lkiEibFRYWkpCQAMDAgQM5efIkZ86cAcDlcrFr1y4cDgcAWVlZREREXHJZRUVF3HXXXQCM\nHz+ewsJCk9OLiKfocImItFlVVRVDhgxxPw8JCaGyspLAwECqq6sJCAhg+fLl7Nmzh9jYWJ5++mkA\nSktLefTRRzl58iTz5s0jPj6euro69+GRvn37UllZ2ernBwf7Y7NZrzhvaGhQG9ewc1mtFq/I8V3e\nksVbckDXZ/Gm/yf/nTWxU5ajkiEiHWYYRrPHFRUVpKamEhkZyezZsykoKOCHP/wh8+bN4+677+ab\nb74hNTWV7du3X3I5l3P8eO0VZ/OGb5c0NRlYrZYuz3GeN2wTb8oB3pGlu/4/uVwpUskQkTYLCwuj\nqqrK/fzo0aOEhoYCEBwcTEREBFFRUQDExcWxf/9+xo0bx+TJkwGIioriuuuuo6KiAn9/f5xOJ35+\nflRUVBAWFub5FTKZvkorVyudkyEibRYfH8+2bdsA2LNnD2FhYQQGBgJgs9no378/X3/9tXt+dHQ0\nW7ZsYc2aNQBUVlZy7NgxwsPDGT16tHtZ27dvZ+zYsZ5fIRExhfZkiEibjRw5kiFDhpCUlITFYiEr\nK4v8/HyCgoJITEwkPT2dtLQ0DMNg0KBBOBwOamtrWbBgAX//+99paGjg2WefxW638/jjj7No0SI2\nbdpEREQEP/7xj7t69USkk6hkiEi7LFiwoNnzwYMHux8PGDCAjRs3NpsfGBjIK6+8ctFywsLCWLt2\nrTkhRaRL6XCJiIiImEIlQ0REREyhkiEiIiKmUMkQERERU6hkiIiIiClUMkRERMQUKhkiIiJiCpUM\nERERMYXXXoxL1/oXEZGrSU/8vXdFezL27dtHQkIC69atu+RrVqxYwYwZMzotmIiIiHRvrZaM2tpa\nlixZQlxc3CVfU1payscff9ypwURERKR7a7Vk2O12Vq1addnbL2dnZ/Pkk092ajARERHp3lo9J8Nm\ns2GzXfpl+fn53HbbbURGRnZqMBEREeneOnTi54kTJ8jPz2ft2rVUVFRc0XuCg/2x2axX/BmhoUHt\njdepvCUHeE8Wb8kBytISb8khIlevDpWMjz76iOrqah566CHOnj3Lv//9b5YtW0Z6evol33P8eO0V\nL99bzrL1lhzgPVm8JQcoS0dyqIiIiJk6VDImTZrEpEmTACgrK2Px4sWXLRgiIiJy9Wi1ZJSUlJCT\nk8OhQ4ew2Wxs27YNh8NBv379SExM9ERGERER6YZaLRkxMTHk5ua2uqB+/fpd0etERETk6qDLiouI\niIgpVDJERETEFCoZIiIiYgqVDBERETGFSoaIiIiYwmIYhtHVIURERKTn0Z4MERERMYVKhoiIiJhC\nJUNERERMoZIhIiIiplDJEBEREVOoZIiIiIgpvKpkPP/88zz44INMnTqV7du3c/jwYWbMmMH06dOZ\nP38+Z8+e9VgWp9NJQkIC+fn5XZpjy5Yt3HvvvTzwwAMUFBR0SZaamhrmzZvHjBkzSEpKYseOHezd\nu5ekpCSSkpLIysoyPcO+fftISEhg3bp1AJfcDlu2bGHq1KlMmzaN1157zWNZZs6cSUpKCjNnzqSy\nstIjWS7Mcd6OHTu46aab3M89sU28hTeNIaBx5Ls0jrSepUeOI4aXKCwsNH7+858bhmEY1dXVxp13\n3mmkpaUZ77zzjmEYhrFixQpj/fr1Hsvz29/+1njggQeM119/vctyVFdXGxMmTDBOnz5tVFRUGBkZ\nGV2SJTc313jxxRcNwzCMI0eOGBMnTjRSUlKM4uJiwzAM46mnnjIKCgpM+/yamhojJSXFyMjIMHJz\ncw3DMFrcDjU1NcaECROMU6dOGXV1dcaUKVOM48ePm55l4cKFxttvv20YhmGsW7fOyMnJMT1LSzkM\nwzCcTqeRkpJixMfHu19n9jbxFt42hhiGxpHv0jhy+Sw9dRzxmj0Zt956K7/73e8AuOaaa6irq6Oo\nqIi77roLgPHjx1NYWOiRLAcOHKC0tJRx48YBdFmOwsJC4uLiCAwMJCwsjCVLlnRJluDgYE6cOAHA\nqVOn6NOnD4cOHWLo0KEeyWG321m1ahVhYWHuaS1th+LiYm655RaCgoLw8/Nj5MiR7N692/QsWVlZ\nTJw4EfjPtjI7S0s5AF555RWmT5+O3W4H8Mg28RbeNIaAxpELaRy5fJaeOo54TcmwWq34+/sDkJeX\nxx133EFdXZ17Jfv27evefWS2nJwc0tLS3M+7KkdZWRlOp5NHH32U6dOnU1hY2CVZpkyZQnl5OYmJ\niaSkpLBw4UKuueYa93yzc9hsNvz8/JpNa2k7VFVVERIS4n5NSEhIp+dqKYu/vz9Wq5WmpiY2bNjA\nPffcY3qWlnL861//Yu/evdx9993uaZ7YJt7Cm8YQ0DhyIY0jl8/SU8cRW+dE7TzvvfceeXl5/PnP\nf2bChAnu6YaHrn7+xhtvMHz4cPr379/ifE/lOO/EiRP8/ve/p7y8nNTU1Gaf76ksb775JhEREaxZ\ns4a9e/cyd+5cgoKCPJ7jUi71+Z7M1dTUxMKFC7n99tuJi4vjrbfe8niW5cuXk5GRcdnXdPW/lSd0\n9RgCGkdaonGkdT1xHPGqkrFjxw5eeeUVVq9eTVBQEP7+/jidTvz8/KioqLhol44ZCgoK+Oabbygo\nKODIkSPY7fYuyQHnmvWIESOw2WxERUUREBCA1Wr1eJbdu3czZswYAAYPHkx9fT2NjY3u+Z7cJue1\n9G8SFhZGVVWV+zVHjx5l+PDhHsmzePFiBgwYwLx58wA8nqWiooKvvvqKBQsWuD8vJSWFxx9/vMu2\nSVfwhjEENI60RONI63riOOI1h0tOnz7N888/z6uvvkqfPn0AGD16NNu2bQNg+/btjB071vQcL730\nEq+//jqbN29m2rRpzJkzp0tyAIwZM4aPPvoIl8vF8ePHqa2t7ZIsAwYMoLi4GIBDhw4REBDAwIED\n+eSTTzya47ta2g7Dhg3jiy++4NSpU9TU1LB7925iY2NNz7JlyxZ8fHx44okn3NM8nSU8PJz33nuP\nzZs3s3nzZsLCwli3bl2XbZOu4C1jCGgcaYnGkcvrqeOI19yFddOmTaxcuZLo6Gj3tOzsbDIyMqiv\nryciIoLly5fj4+PjsUwrV64kMjKSMWPGsGjRoi7J8de//pW8vDwAHnvsMW655RaPZ6mpqSE9PZ1j\nx47R2NjI/PnzCQ0NJTMzE5fLxbBhw1i8eLFpn19SUkJOTg6HDh3CZrMRHh7Oiy++SFpa2kXb4d13\n32XNmjVYLBZSUlK49957Tc9y7NgxfH19CQwMBGDgwIE8++yzpmZpKcfKlSvdv1wdDgf/+Mc/AEzf\nJt7CG8cQ0DhynsaRy2fpqeOI15QMERER6Vm85nCJiIiI9CwqGSIiImIKlQwRERExhUqGiIiImEIl\nQ0REREzhVRfjkvYrKytj0qRJjBgxAoCGhgZiY2OZO3cuH3/8MXv27OGxxx7zaKYnn3yStLQ0wsPD\nPfq5ItI+Gkeks+krrD1EWVkZ06dP5/333wegvr6e7OxsKioq+OMf/9jF6USkO9A4Ip1NezJ6KF9f\nX9LT05k4cSLr16/n008/5cUXX8ThcJCUlMSOHTuorKxk0aJFbNq0idLSUubOncv999/PyZMnycrK\norq6mjNnzvDwww9zzz33sHLlSk6cOMGRI0c4ePAgP/rRj3jmmWfYt28fmZmZ+Pj44HQ6mTt3LuPG\njcPhcLB27Vr69evHsmXL2LNnDwC33347v/zlLykqKuJPf/oT119/PaWlpdhsNlavXo3L5eLpp5/m\n1KlTNDY2Mn78eI//9SQiGkek41QyejAfHx9iYmKoqalpNj04OJjc3FzS0tL4y1/+wtq1a9m5cyfL\nli3j/vvv56WXXmLs2LFMnTqV2tpa7rvvPuLj4wH45z//ybp162hoaCAuLo4nnniCzZs343A4mD17\nNseOHWPHjh3NPm/r1q2UlZWxceNGXC4XSUlJjB49GoDPPvuM7du307dvX2bMmMEHH3wAQGNjIxs2\nbMDlcpGbm4vL5aJXL51CJOJpGkekI1QyerjTp09jtVqbTRs5ciRw7jr14eHhWCwWrr/+ek6fPg1A\nUVERX3zxBW+88QZw7nbAZWVlAIwaNQqr1YrVaiU4OJiTJ08yceJE0tLSKC8vZ/z48dx3333NPq+4\nuJi4uDgsFgtWq5XY2Fi++OILYmJiGDhwIH379gUgMjKSEydO4HA4ePnll5k/fz533nkn06ZN08Ag\n0oU0jkh7aYv3YHV1dXz55Zdce+21zabbbLYWH59nt9vJysoiNzeX3Nxctm7dytChQwEuGmgMw+DW\nW2/lb3/7G3fccQf5+fnuO/idZ7FYLnrP+WkXLg/O3TXyzTffJDU1ldLSUqZOnYrT6WzDmotIZ9E4\nIh2hktFDNTQ08Jvf/Ib4+Pg2t/dRo0axdetWAJxOJ88++2yzWzJfKDc3lyNHjuBwOFi6dKn7Tovn\nDR8+nA8//BDDMGhsbGTnzp0MGzbsksv74IMPKCgoYNSoUSxcuBB/f3+OHTvWpnUQkY7TOCIdpcMl\nPUh1dTUzZsygqamJU6dOER8fT2ZmJm+//XabljNv3jwyMjJITk7m7NmzPPjggy3+pXLe97//fZ5+\n+mkCAgLcJ1t916RJk9i9ezfJycm4XC4SEhIYNWoURUVFLS4vOjqatLQ0Vq9ejdVqZcyYMURGRrZp\nHUSkfTSOSGfSV1hFRETEFDpcIiIiIqZQyRARERFTqGSIiIiIKVQyRERExBQqGSIiImIKlQwREREx\nhUqGiIiImEIlQ0REREzx/wG0EaN7Q3xfnAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbcdfd71c50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# average the results and plot\n",
"lda = rs.groupby('n_dim').mean().lda_score\n",
"std_lda = rs.groupby('n_dim').std().lda_score\n",
"acc = rs.groupby('n_dim').mean().dec_acc\n",
"std_acc = rs.groupby('n_dim').std().dec_acc\n",
"\n",
"f, ax = plt.subplots(1, 2, figsize=[9, 6])\n",
"ax[0].errorbar(n_dim, lda, yerr=std_lda, fmt='-o')\n",
"ax[1].errorbar(n_dim, acc, yerr=std_acc, fmt='-o')\n",
"ax[0].set_xlabel('Dimensions')\n",
"ax[1].set_xlabel('Dimensions')\n",
"ax[0].set_title('LDA score')\n",
"ax[1].set_title('Cross-validated accuracy score')\n",
"for axis in ax:\n",
" axis.set_xticks(n_dim)\n",
" axis.set_xticklabels(n_dim)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Larger populations with the same number of responsive neurons"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What if the population size increases, but the number of informative features remains the same? "
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"n_dim = range(20, 150, 20) \n",
"n_iter = 500 \n",
"rs = pd.DataFrame(columns=['n_dim', 'lda_score', 'dec_acc'])\n",
"\n",
"for n in n_dim:\n",
" for i in range(n_iter):\n",
" clf = LogisticRegression()\n",
" X, y = sklearn.datasets.make_classification(n_samples=500,\n",
" n_classes=2,\n",
" n_features=n,\n",
" n_informative=5, # informative features set at 5\n",
" shuffle=False,\n",
" random_state=None)\n",
" \n",
" cvscore = cross_val_score(clf, X, y, cv=3)\n",
" lda = lda_score(X, y)\n",
" rs.loc[rs.shape[0]+1]=[n, lda, cvscore.mean()]"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nfPq0S0NDg5577jn96le/0t133y1JmjFjhgoKCiRJx44d08yZMz2e4/nnn9cbb7yhgwcPavHixVq9\nerVXckhSQkKC3n//fblcLl26dElNTU1eyzJu3DiVlpZKkqqqqhQUFKTo6Gj97W9/M57lls4+i0mT\nJunUqVOqr69XY2OjTpw4oWnTpnk0x5EjRzRs2DCtXbvWvc0bOSIjI/XOO+/o4MGDOnjwoCIiIpSX\nl+eVLN7CONIR40j3GEfa88Q44tPfanvgwAHt2bNH48ePd2/btWuXsrKydP36dY0cOVI7d+7UsGHD\njGXas2ePRo0apYSEBG3atMkrOV577TXl5+dLkp5++mndf//9XsnS2NiozMxM1dbWqrW1VevWrVN4\neLi2bNkil8ulSZMmafPmzR47fllZmXJyclRVVSW73a7IyEjt3r1bGRkZHT6LP/7xj9q/f7/8/PyU\nmpqqRx991KM5amtrNXz4cI0YMUKSFB0dra1bt3o0R1dZ9uzZ4/5P1+Fw6M9//rMkeTyLr2Ac6Rzj\nyE2MI73L0t/jiE+XDwAAMPj49GkXAAAw+FA+AACAUZQPAABgFOUDAAAYRfkAAABG+fxNxtA3lZWV\nmj9/vqZMmSJJamlp0bRp05Senq4PPvhAp0+f1tNPP2000/e//31lZGQoMjLS6HEB3B7GEfQ3LrUd\n5CorK7Vs2TL95S9/kSRdv35du3btUnV1tX75y196OR2AgYBxBP2NmY8hZvjw4crMzFRycrJefvll\nnTx5Urt375bD4VBKSoqKiopUU1OjTZs26cCBA6qoqFB6eroef/xxXblyRdnZ2aqrq9PVq1f1rW99\nSwsXLtSePXt0+fJlnT9/XmfPntXXv/51/fCHP1R5ebm2bNmiYcOGqbm5Wenp6Zo9e7YcDodeeukl\njR49Wjt27NDp06clSdOnT9czzzyjkpIS/frXv1ZUVJQqKipkt9u1b98+uVwurV+/XvX19WptbdWc\nOXOM/7UFgHEEfUf5GIKGDRummJgYNTY2ttseEhIip9OpjIwM/eY3v9FLL72k48ePa8eOHXr88cf1\n/PPPa+bMmVq0aJGampr02GOPKT4+XpL0z3/+U3l5eWppaVFcXJzWrl2rgwcPyuFw6KmnnlJtba2K\nioraHe/o0aOqrKzUq6++KpfLpZSUFM2YMUOS9I9//EPHjh1TWFiY0tLS9O6770qSWltb9corr8jl\ncsnpdMrlcumOO1i6BJjGOIK+oHwMUQ0NDbLZbO22TZ06VdLN+/hHRkbKz89PUVFRamhokCSVlJTo\n1KlTOnz4sKSbX7tcWVkpSYqNjZXNZpPNZlNISIiuXLmi5ORkZWRk6Ny5c5ozZ44ee+yxdscrLS1V\nXFyc/Pz8ZLPZNG3aNJ06dUoxMTGKjo5WWFiYJGnUqFG6fPmyHA6HXnjhBa1bt06zZs3S4sWLGTAA\nL2Icwe3iEx+Crl27pn/961+666672m232+2d/vsWf39/ZWdny+l0yul06ujRo5o4caIkdRiALMvS\nAw88oN///vdKTEzUoUOH3N+IeIufn1+H59za9tnXk25+E+ebb76p5cuXq6KiQosWLVJzc/PneOcA\n+gvjCPqC8jHEtLS06Mc//rHi4+M/d9uPjY3V0aNHJUnNzc3aunVru6++/iyn06nz58/L4XBo+/bt\n7m+uvGXy5Mn661//Ksuy1NraquPHj2vSpEldvt67776rwsJCxcbGauPGjQoMDFRtbe3neg8A+o5x\nBH3FaZchoK6uTmlpaWpra1N9fb3i4+O1ZcsWvf3225/rddasWaOsrCwtXbpUN27c0JIlSzr9y+aW\ne+65R+vXr1dQUJB7kdenzZ8/XydOnNDSpUvlcrmUlJSk2NhYlZSUdPp648ePV0ZGhvbt2yebzaaE\nhASNGjXqc70HALeHcQT9iUttAQCAUZx2AQAARlE+AACAUZQPAABgFOUDAAAYRfkAAABGUT4AAIBR\nlA8AAGAU5QMAABj1/w4K2CXfj4YPAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbcdfb71518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"lda = rs.groupby('n_dim').mean().lda_score\n",
"std_lda = rs.groupby('n_dim').std().lda_score\n",
"acc = rs.groupby('n_dim').mean().dec_acc\n",
"std_acc = rs.groupby('n_dim').std().dec_acc\n",
"\n",
"f, ax = plt.subplots(1, 2, figsize=[9, 6])\n",
"ax[0].errorbar(n_dim, lda, yerr=std_lda, fmt='-o')\n",
"ax[1].errorbar(n_dim, acc, yerr=std_acc, fmt='-o')\n",
"ax[0].set_xlabel('Dimensions')\n",
"ax[1].set_xlabel('Dimensions')\n",
"ax[0].set_title('LDA score')\n",
"ax[1].set_title('Cross-validated accuracy score')\n",
"for axis in ax:\n",
" axis.set_xticks(n_dim)\n",
" axis.set_xticklabels(n_dim)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"How is it that we are getting progressively higher LDA scores just by throwing in redundant linear combinations of features, repeated features, and noise? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## An alternative dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We repeat the same experiment with a different toy dataset, namely Gaussian-looking blobs. "
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"n_dim = range(20, 150, 20) \n",
"n_iter = 20 \n",
"rs = pd.DataFrame(columns=['n_dim', 'lda_score', 'dec_acc'])\n",
"for n in n_dim:\n",
" for i in range(n_iter):\n",
" clf = LogisticRegression()\n",
" X, y = sklearn.datasets.make_blobs(n_samples=500,\n",
" centers=2,\n",
" n_features=n,\n",
" cluster_std=[10, 10],\n",
" shuffle=False,\n",
" random_state=None)\n",
" cvscore = cross_val_score(clf, X, y, cv=3)\n",
" lda = lda_score(X, y)\n",
" rs.loc[rs.shape[0]+1]=[n, lda, cvscore.mean()]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbcdfac2c88>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"lda = rs.groupby('n_dim').mean().lda_score\n",
"std_lda = rs.groupby('n_dim').std().lda_score\n",
"acc = rs.groupby('n_dim').mean().dec_acc\n",
"std_acc = rs.groupby('n_dim').std().dec_acc\n",
"\n",
"f, ax = plt.subplots(1, 2, figsize=[9, 6])\n",
"ax[0].errorbar(n_dim, lda, yerr=std_lda, fmt='-o')\n",
"ax[1].errorbar(n_dim, acc, yerr=std_acc, fmt='-o')\n",
"ax[0].set_xlabel('Dimensions')\n",
"ax[1].set_xlabel('Dimensions')\n",
"ax[0].set_title('LDA score')\n",
"ax[1].set_title('Cross-validated accuracy score')\n",
"for axis in ax:\n",
" axis.set_xticks(n_dim)\n",
" axis.set_xticklabels(n_dim)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Why the performance of the decoder becomes better in this example is quite clear, as in general linear classification becomes easier in higher dimensions (you can always linearly separate N points in N-1 dimensions...). What is going with LDA is less clear to me, but it might be related to how distances get 'squashed' in high dimensions (a phenomenon known as concentration of norm)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Take-home message"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Regardless of the reason behind these effects, it should be clear that comparing LDA scores or decoding accuracy between recordings with different numbers of neurons may be subject to contamination effects due to the dimensionality of the data, and should thus be handled with care."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2.0
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment