Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/m-wells/kdestimation.jl

Provides a general framework for implementing and performing Kernel Density Estimation
https://github.com/m-wells/kdestimation.jl

julia kernel-density-estimation

Last synced: 28 days ago
JSON representation

Provides a general framework for implementing and performing Kernel Density Estimation

Awesome Lists containing this project

README

        

{
"cells": [
{
"cell_type": "markdown",
"id": "fcaa0ca3-5af3-44ff-bec2-d9cc49b384d6",
"metadata": {},
"source": [
"tube.com/# KDEstimation (Kernel Density Estimation)\n",
"[![Build Status](https://travis-ci.com/m-wells/KDEstimation.jl.svg?branch=master)](https://travis-ci.com/m-wells/KDEstimation.jl)\n",
"[![codecov](https://codecov.io/gh/m-wells/KDEstimation.jl/branch/master/graph/badge.svg?branch=master)](https://codecov.io/gh/m-wells/KDEstimation.jl)\n",
"[![Coverage Status](https://coveralls.io/repos/github/m-wells/KDEstimation.jl/badge.svg?branch=master)](https://coveralls.io/github/m-wells/KDEstimation.jl?branch=master)\n",
"\n",
"The purpose of this package is to provide a general framework for implementing Kernel Density Estimation methods.\n",
"\n",
"## Univariate KDE\n",
"The density estimator\n",
"\n",
"\n",
"\n",
"where\n",
"* is the estimator\n",
"* is the kernel function\n",
"* is the bandwidth\n",
"can be evaluated using one of three implemented methods.\n",
"* `Direct()` \n",
" * where is the sample size\n",
"* `Binned()`\n",
" * where is the number of evaluation points\n",
" * by default\n",
"* `FFT()`\n",
" * where is the number of evaluation points\n",
" * by default\n",
"\n",
"## Multivariate KDE (work in progress)\n",
"\n",
"## Kernels implemented\n",
"Here is a link to the [relevant wikipedia article](https://en.wikipedia.org/wiki/Kernel_(statistics)#Kernel_functions_in_common_use)\n",
"\n",
"\n",
" \n",
" Kernel\n",
" \n",
" Support\n",
" \n",
" \n",
" Biweight\n",
" \n",
" \n",
" \n",
" \n",
" Cosine\n",
" \n",
" \n",
" \n",
" \n",
" Epanechnikov\n",
" \n",
" \n",
" \n",
" \n",
" Logistic\n",
" \n",
" unbounded\n",
" \n",
" \n",
" Normal\n",
" \n",
" unbounded\n",
" \n",
" \n",
" SymTriangularDist\n",
" \n",
" \n",
" \n",
" \n",
" Triweight\n",
" \n",
" \n",
" \n",
" \n",
" Uniform\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"This package uses [Distributions.jl](https://github.com/JuliaStats/Distributions.jl) to suppy kernels such that\n",
"\n",
"\n",
"\n",
"where\n",
"\n",
"\n",
"\n",
"and is one of the kernels listed in the table above.\n",
"\n",
"__Note:__ for the Uniform distribution, [Distributions.jl](https://github.com/JuliaStats/Distributions.jl) defines `(loc,scale) = (a, b-a))` where `a` and `b` are the bounds lower and upper bounds, respectively.\n",
"This package accounts for this inconsistancy by evaluating the Uniform kernel as\n",
"\n",
"\n",
"\n",
"## Bandwidth selection via Least Squares Cross Validation\n",
"The objective function to minimize is given by\n",
"\n",
"\n",
"\n",
"where\n",
"\n",
"\n",
"\n",
"This has also been implemented using `Direct`, `Binned`, and `FFT` methods.\n",
"\n",
"# Example usage"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "moral-mouse",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"rule of thumb: 0.3955940866915174\n"
]
},
{
"data": {
"text/plain": [
"LSCV{Normal,FFT(4096),1}\n",
"Results of Optimization Algorithm\n",
" * Algorithm: Golden Section Search\n",
" * Search Interval: [0.289408, 0.389348]\n",
" * Minimizer: 3.457826e-01\n",
" * Minimum: -2.834224e-01\n",
" * Iterations: 33\n",
" * Convergence: max(|x - x_upper|, |x - x_lower|) <= 2*(1.5e-08*|x|+2.2e-16): true\n",
" * Objective Function Calls: 34"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"using KDEstimation, Distributions\n",
"# set a seed for reproducibility\n",
"using StableRNGs\n",
"rng = StableRNG(1111)\n",
"# generate random data\n",
"x = randn(rng, 100)\n",
"rot = rule_of_thumb2(Normal,x)\n",
"println(\"rule of thumb: \", rot)\n",
"lscv_res = lscv(Normal,x,FFT())"
]
},
{
"cell_type": "markdown",
"id": "macro-essence",
"metadata": {},
"source": [
"# Visualization using [Plots.jl](https://github.com/JuliaPlots/PlotDocs.jl)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "eligible-legislature",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABaKUlEQVR4nO3deVyVZf7/8dd9OAocEBB3QURScElEXDJzbVqUtAzatbSasGmc5Zvl1Ezjt6ysb5lN5vTTFlPHsixomTYnxzRLS02pFFRcUFBzF0RAOZz798eRkyggy4HDkffz8fABnHs51+ECztvrvu7PZZimaSIiIiIibmPxdANERERELjYKWCIiIiJu5jUBq6CggA0bNlBQUODppoiIiIhUymsC1pYtW+jTpw9btmyp0fH5OYV88+DP5OcUurllUio3N9fTTfBaxw78RMqL7Th24Kd6f271m3dSv3kn9VvDVFlGqGmfeU3AkoavpKTE002QGlC/eSf1m3dSv3mfmvaZApaIiIiImylgiYiIiLiZ1dMNEBERaQz27NnDjh07CA4O9nRT5BwFB4rYeiAbfj6B7aBfmW25ubnn9VnLli2JiIio9JwKWCIiInVsz549dOvWTXfCN3RvV203m81GRkZGpSFLAUtERKSOHT58mIKCAhYtWkS3bt083RyphYyMDMaNG8fhw4cVsERERBqCbt26ER8f7+lmSD1oFJPcU1NTGXv7bQCMvf02UlNTPdwiERERuZhd9AErNTWVpKQkbCcOA2A7cZikpCSFLBEREakzF33AevrJaQzp2Ionh8YA8OTQGAZ3bMn0p570cMtERETkYnXRB6wtW7cyNCIUwzAAMAyDYREtyKjhkjsiIiIiF3LRB6yuMTGs3HMU0zQBME2TFXuO0K1rVw+3TERERC5WF33A+tvfp/L17kM8ttI5YvXYyi2s2n2Yv/19qodbJiIiIheriz5gJSYmkpKSQm5AawCO2lqTmprKjTfe6OGWiYiIyMXqog9Y4AxZby5ylmedOPMthSsREZFyGIZBfn5+nT/Pgw8+yDvvvAPA/PnzCQkJIS4uzvUvLS3N1Z7Y2FjX49OmTXN93r17d6xWq+vrW2+9lV9++YXLLrsMu91e56/hQhpNodGAM6/0QKHp2YaIiIg0Ynv37uXzzz/nhRdecD121VVX8f7775e7/+rVqwkMDHR9PXWqc4pPVlYWffv2dYWxUpdddhmLFi1iwoQJbm97dTSagFV6F+GhQg83REREpAL7C0z218Fyhe1s0M5mVHl/h8PBH//4R5YtW4avry9Wq5Vvv/0WPz8/Pv30Ux5//HFOnz6NYRjMnTuXL7/8kgMHDvDyyy8DkJ+fT0REBNu2baNly5Zlzj1v3jxuuukm1/uyu91xxx1MnjxZAau+HdQIloiINFBzMxw8scHh9vP+b7yFx/v4VHn/H3/8kf/+97+kp6djsVjIzc2ladOmbNu2jXvvvZevv/6a6OhoiouLKSgoICwsjPj4eF544QWaNm3Ke++9x/Dhw88LVwArVqzgoYceKvPYsmXLiIuLA6BNmzYsXbrUtW3gwIFYLM4ZTXPnzuWyyy6rtO19+vRh48aNnDx5koCAgCq/ZnerVcDKzMxk/PjxHD58mJCQEObPn0/37t3L7FNUVMRtt91Geno6NpuNtm3bMmfOHCIjIyvdVlcOFtXZqUVERGplYjcL13d0//Todrbq7R8VFUVxcTH33HMPw4cP57rrrsNisfDll1+SkJBAdHQ0AE2aNCE4OJjg4GB69+7Nxx9/zE033cSbb77JlClTyj13Tk4Obdu2LfNYdS4RXkiTJk0ICQlh//79dO7cucrHuVutAtbEiRNJTk5mwoQJvP/++9x7772sWbPmvP2Sk5MZOXIkhmEwe/ZskpOT+c9//nPBbXVBlwhFRKShamczqh2G6kJwcDCbN29m5cqVfPXVVzz66KN8/fXXlR5z9913M3/+fOLi4ti+fTsjR44sdz+bzUZhYd2+GRcVFeHv71+nz3EhNY7JBw8eZMOGDYwbNw6ApKQkdu3aRVZWVpn9/Pz8SEhIcF1rHTBgADt37rzgtrpyqAgcpi4TioiIVOTQoUOcPHmSa665hunTpxMZGUl6ejrXXnstn3/+Odu2bQOguLiY3NxcAG688UbWrl3Ls88+y5133omPT/mXJGNjY9lSh6upHDhwAKvVSvv27evsOaqixiNY2dnZtG/fHqvVeQrDMIiIiGDPnj2VXuKbNWsWo0ePrva2UpMmTSI4OJjExESSkpKq3N7C3NMA2B2wbf9xWvspZLnbsWPHPN0Er3UiLw+AvLw8zCZH6/W51W/eSf3mXUpDiLfIzs7mvvvuo7i4GIfDwcCBAxk5ciRNmjThjTfe4Pbbb6e4uBgfHx/mzp1L//798fX15eabb+aVV14hIyOjwnPfdNNNLFy4kHvuuadO2v7FF19w44031tkk+lK5ubkcPfrr3+vQ0NAy2ysMWIMHD67wG7Rx40aA8xpvXmBkaPr06WRmZjJnzpxqbTvb7NmziY+Pr3Sf8uQXFAKHAChoGkJoaN1+4xurc3/ApGqM4iAAgoKCaO6B76H6zTup37xHcHCwp5tQJaXv4/Hx8fzwww/l7pOQkEBCQkK52/75z3/yz3/+s9LnuO6663j88cfJyckhPDycCRMmVHjHX2W5IjIyksOHD5/3+Ouvv85rr71WaRvcITg4uNLfwQoD1qpVqyo9sa+vLzk5OdjtdqxWK6Zpkp2dTURERLn7z5gxg9TUVJYtW4bNZqvytrqw96RJfEsFLBERkfpmsViYO3cuWVlZhIeHu/XcBw4c4He/+x1dG8B6wzWeg9W6dWt69+7NokWLAEhJSSEyMrLcy4MzZ85k8eLFfPnll4SEhFR5W12wGM6AJSIiIp7Rt29fBg0a5PbztmnThjvuuMPt562JWt1FOHfuXCZMmMD06dMJCgpiwYIFrm0JCQlMmzaNtm3bMnnyZKKiohg+fDjgHP36/vvvycnJqXBbXWnpB3vroIibiIiISKlaBayYmJhyyzIAfPbZZ67PK7qGGh4efsF5W+7W2h9yNIIlIiIidahRLPZ8ttZ+sPekp1shIiJScw6Hg/z8fBwO91d9F/dodAGrlb+hOVgiIuKV0tLSGD9+PIGBgTRr1ozAwEDGjx9/3oLH4nmNLmC11hwsERHxQm+//Tb9+vVj4cKFrkrohYWFLFy4kH79+rF48WIPt9DzIiMj2bRpk6ebATTCgNXGZpB7GvKLNYolIiLeoXTkym63Ex0awAtXX8oXd1zOC1dfSnRoAHa7nbvuuqveRrLsdnu9PE95SkpKPPbc1dHoAlYrP+dHzcMSERFv8eKLL7rC1ce3DuCW7mH0aBXELd3D+PjWAXQ5E7L+8Y9/1Op5DMPg8ccf54orriA6OrrMqJhhGLzwwgsMGzaMRx99lBMnTnDffffRv39/YmNjuf/++ykuLgbgqaeeolu3bsTFxREXF8fu3bsBWLduHVdeeSV9+/YlPj6elJQUwBnYrr32Wvr27UuPHj0YO3YsBQXOy03z589nxIgR3HXXXfTt25e1a9eyZs0aBg8eTK9evYiNjeWjjz5ytTMlJYWBAwfSqVMnnnrqqVp9P2qjVncReqPW/s4Co3tPmsSEqNioiIg0bA6Hg/feew+AiX06EdC07Ft3QFMrE+M78dCyTSxZsoR58+ZhsdR8/MQwDL799lt27txJ//79GTRoEB06dADg1KlTrFixAoDk5GSGDBnCa6+9hmma3HfffcyePZsJEyYwY8YM9u/fj7+/PwUFBVgsFo4fP87EiRP59NNPadeuHYcPH6ZPnz5cccUVtGnThrfffpsWLVpgmiYPPPAAr7zyCg899BAA33zzDRs3bqRLly4cPXqU7t27k5qaysCBA3E4HBw/ftzV/uPHj7N69WoOHTpE586dufvuuwkLC6vx96OmGl/AKh3B0jwsERHxAgUFBa45Vz1aNSt3n0tbOx8vLCyksLCQgICAGj/fb3/7WwCioqIYNGgQq1atchXvPHv9wA8//JDvvvuOF154wfXcTZs2JSgoiC5dujBu3DiuueYarrvuOsLDw1m+fDk7d+5k5MiRrnOYpsnWrVtp3bo1L774Ip9++il2u53c3FyGDBni2m/QoEF06dIFgDVr1tC9e3cGDhwIOCvDn71kzdixYwFo1aoVUVFR7Nq1SwGrPvhZDUKaqpq7iIh4B5vNhr+/P4WFhWw+dIIerYLO22fTwRMA+Pv74+/v79bnP3vd4cDAQNfnpmny4YcfEhUVdd4x3333HatXr2bFihUMGDCAxYsXY5omsbGxfP311+ftv2jRIlauXMnXX39Ns2bNmDVrVpn9zn7eC/Hz83N97uPj47H5Yo1uDhZAeIDmYImIiHewWCzcfPPNAMz9YRcnT5cNDCdP25m7YRcAt9xyS60uDwLMmzcPgKysLL755psKl7S5/vrrefbZZ10B5tixY2zfvp0TJ05w4MABBg8ezN///ncGDRrExo0bGThwIJmZmSxfvtx1jrS0NE6fPs2xY8do0aIFzZo148SJE8yfP7/C9g0cOJCMjAxWr14NOC+hHj16tFavuS40yoAVFmComruIiHiN//mf/8FqtbLt6ElGv/sd727ey+ZDeby7eS+j3/2OzKMnsVqt/PnPf671c/n6+nLFFVdwzTXX8PLLL7vmX53rH//4B1arlbi4OGJjY7nqqqvIysoiNzeXxMREevbsSWxsLMXFxYwfP57mzZvz73//myeffJJevXrRvXt3HnnkERwOB3fddRf5+fl0796dxMREBg8eXGH7mjdvzgcffMDDDz9MbGwsvXv35ptvvqn163a3RneJECDMBj8f83QrREREqiYuLo4FCxYwfvx4Mo+e5KFlZWs9Wa1WFi5cSFxcXK2f64EHHmDKlCnnPX7u0nbNmjXjlVdeKfcc3333XbmP9+3bl6+++uq8x/38/Fi2bFm5x0yYMIEJEyaUeWzAgAF8++235+2blZVV5uv169eXe8760GhHsDQHS0REvMkdd9zBunXrGD9+vGuelb+/P+PHj2fdunXcfvvtHm6hnK1xjmAFwC+FYHeYWC0q1SAiIt4hLi6O+fPnM2/ePAoLC/H396/1nKuznTtKJTXXKEewwgMMHCYcKPR0S0RERKrPYrEQEBDg1nAl7tUoeyYswDlqpYnuIiIiUhcaZ8CyOT+qVIOIiIjUhUYZsFr6QVOLio2KiIh3cjgc5Ofn43A4PN0UqUCjDFiGYdDepuVyRETEu6SlpTF+/HgCAwNp1qwZgYGBjB8/nrS0NI+05/HHH3etF1hX5s+fz7Zt2+r0OepCowxY4JzorhEsERHxFm+//Tb9+vVj4cKFrrUJCwsLWbhwIf369WPx4sUebmHtlbeszYUCVklJSV02qcYabcAKC4AczcESEREvUDpyZbfbsYU1Izo5jvinhxKdHIctrBl2u5277rqrViNZhYWF3HrrrXTv3p1evXpxzTXXuLY999xz9OjRg549ezJ27Fhyc3PPOz46OpoffvjB9fWbb75JYmIiAL/88gu33HIL/fv3JzY2lqlTp7r2i4yM5Omnn2b48OGMHz++zDlff/111q9fzx//+Efi4uL47LPPmD9/PiNGjOCuu+6ib9++rF27lpkzZ9KvXz969+5N//79+f77713nWLNmDYMHD6ZXr17Exsby0UcfAZCZmcl1111Hv3796NWrV4VFU2uqUdbBAuedhBsO69q1iIg0fC+++KIrXPV+YjA+fs6378COwbTq356NU7+mYF8+//jHPypdx68yX3zxBceOHSM9PR3Atb7f559/zptvvsmaNWsICQkhOTmZv/71r/zzn/8sc/yECRN488036dOnD+AceSq9fDh+/Hj+9re/MWTIEOx2O6NGjeKDDz7gxhtvBGDPnj0sX768zMLSAL/97W9ZtGgRDz30EKNGjXKd95tvvmHjxo106dIFgM6dO/Pg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2dnZtG/fHqvVucKSYRhERESwZ8+eCo+ZNWsWo0ePrq8mSjmq029Tp05l3LhxdOrUqb6bKWepap/t2LGDFi1a8NRTT9G3b18GDx7Mf//7X080Wah6vxmGwZIlS0hMTKRjx44MGjSIBQsW0LRpU080W6qouu+BClhSLYZhlPnarKRO7fTp08nMzOTpp5+u62bJBVSl39asWcO6det44IEH6qtZUomq9FlxcTE7d+6ke/furF+/ntmzZ3Pbbbdx6NCh+mqmnKMq/Wa323nmmWf46KOP2L17N//9738ZP348R48era9mSg1V5z1QAUuqrEOHDuTk5GC3OxcjNk2T7OxsIiIiztt3xowZpKam8vnnn7uWDRDPqGq/rVy5ki1bttCpUyciIyPJycnh2muv5fPPP/dEsxu1qvZZx44dsVgsjB07FoBevXrRqVMnNm/eXO9tlqr3W1paGvv27eOKK64AoF+/frRv354ff/yx3tssVVed90BQwJJqaN26Nb1792bRokUApKSkEBkZSWRkZJn9Zs6cyeLFi/nyyy8JCQmp/4ZKGVXtt0ceeYR9+/aRlZVFVlYW4eHhLF26lJEjR3qg1Y1bVfusZcuW/OY3v2Hp0qUA7N69m127dhETE1PfTRaq3m+lb9Rbt24FYPv27ezYsYPo6Oj6brJUQ1X718W908PkYrdlyxZzwIABZpcuXcw+ffqYmzZtcm0bOXKkuWrVKhMwo6KizF69epm9evUy+/fv78EWi2leuN/WrVt33jGa5O5ZVe2zHTt2mEOHDjUvvfRSs1evXmZqaqqnmixm1fvt7bffNi+99FIzNjbW7Nmzp7l48WJPNVlM03zggQfMsLAw08fHx2zTpk2Zm7PO7rfK+vdcWuxZRERExM10iVBERETEzRSwRERERNxMAUtERETEzRSwRERERNxMAUtERETEzf4/Zfm92qC8rPYAAAAASUVORK5CYII="
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"using Plots; pyplot()\n",
"plot(lscv_res)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "viral-steering",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"fkde(0.3) = 0.38237039523949345\n",
"frot(-2) = 0.04546902308913938\n"
]
}
],
"source": [
"h = minimizer(lscv_res)\n",
"fkde = kde(Normal, h, x, FFT())\n",
"frot = kde(Normal, rot, x, FFT())\n",
"# these are callable\n",
"@show fkde(0.3);\n",
"@show frot(-2);"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "entertaining-church",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABalUlEQVR4nO3dd3hU55n+8e+ZGY16L4BAQjSJjiim2biACybuOLGTsAkJWew4TrJJNtn84vRkbW/WcbJeJ2uycUvstHUvuBvbgOkYU0QRRSBRJCTUR9PP74+RR6KDGOmMRvfnurg4U/XAkebcet/nvMcwTdNERERERCLGZnUBIiIiIrFGAUtEREQkwno0YLlcLjZu3IjL5erJLysiIiLSo3o0YO3YsYPJkyezY8eOnvyy56SxsdHqEuQCaR/GBu3H2KD9GBu0H7tOU4TtAoGA1SXIBdI+jA3aj7FB+zE2aD92nQKWiIiISIQpYImIiIhEmMPqAkRERHqbAwcOUFtba3UZ3a6xsZH09HSry4g6OTk5FBYWnvE5ClgiIiLn4cCBA4waNUpnxPdhSUlJbN++/YwhSwFLRETkPNTW1uJyuXjqqacYNWqU1eVID9u+fTsLFiygtrZWAUtERCTSRo0axaRJk6wuQ6KUmtxFREREIkwjWCLSa5imydZ6eGl/kI/qTKpaoc1vkhlvUJAMU3INLh9gY1wW2AzD6nJFpA9TwBKRXuGNyiA/3hBk7VHzFI+G7ntqtwkEKUyBL46wsajExuBUBS0R6XmaIhSRqNbgMVmwzM/c1wOnDFfOU3yKHWiBX3wUZPjf/XzpfT/ljacKZSIi3UcjWCIStfY3m8x93c+Oho77xmXBHSNtzBloY3gaOGwGLT6T8kZYfiTI0kqTtw6aBE3wm/DELpOnyv18c6yNH0+ykebUiJaIdD8FLBGJSvuaTC552c+h9qWG0p3w0Aw7C0YYJ/VXpcQZTMyBiTl2vjEWDrWaLNkR5KGtQRq8oaD16y1Bnt4d5A+z7Fw/WIP3ItK99CkjIlGn1m1yzWsd4WpEGmy82cEXim3HhSszGMBbtZuWla/SuPRJGp57hMalT5K2+XXuydtLxW0GP55kI8Eeev6RNrjhzQCLl/tp8WnaUGJbUVERW7duPe6+Dz74gBkzZlBaWsro0aO5+OKLqa6uDj/+97//nSlTplBSUsLo0aO5/vrr2bJlC9deey0PP/zwSV9jwoQJPP/8893+b+mNNIIlIlElYMJtbwcobwrdHpUB71/nIDexI1gFmo7R8v4LtK5/h2Bj3Wnfy5aayb9MuIQvXXEDX981gFcOhELV/+4wWXnEz4tXOxierilD6Rv8fj8333wzb7/9NhMnTgRg586dJCcnA/D4449z33338cILLzB69GgANmzYwKFDh1i0aBH33Xcfd999d/j91q9fz5EjR7juuut6/h/TCyhgiUhU+a+dTpYdDgWhAUnw+rUd4coM+Gl+6+80v/sPTK/nrO8VbK6ndcXLOFa+whOll/LaxC9z55YsWv1Q1gBTX/Tzjzl2rhyowXyJfc3NzTQ3NzNgwIDwfSUlJeHtn/zkJzzyyCPhcAUwefJkALxeL3fddRcff/wxEyZMAOCxxx7jC1/4AnFxcT30L+hdFLBEJGpsOGpyf5kTAJsBf5ttpzAlFK78Rw9R96f78FWWd7zAZidh1BTiiycSlzcIIyEJ0+3CV12JZ/dm3DvWg98HpknbR+9zxbbVbJ69kOubPkVZo0G9B659LcBTV8BtwxSyJLIOu0wOd8PlCgckwYCk8x95zczM5K677mLEiBHMmjWLGTNmcNttt1FcXExNTQ2VlZXMmDHjlK91Op0sWLCAxx9/nN/+9re43W7+9re/sXLlygv958QsBSwRiQqBoMmdKwIEzNCB44cTbVw6IBR6PPvKqPvfnxB0NYeebLOTcvGnSL3yNuzp2Se9V8KoKaRefjPBtlZaP1xK87JnCLY0Yno9OF9fwjujPuJb+f/C346k4jfhs+8GaPLBP49UyJLIWbI9yM82BiP+vj+ZZOOnk+1deu1vf/tbvvWtb7Fs2TLeeecdJk6cyBtvvEFxcfFZX7to0SIuv/xyfvWrX/Hcc88xatQoXYvxDBSwRCQqLNkRZH1taGpwTGYoYAG4d26k9o8/BZ8XAEfuQLL+6d9wFp79gGBLTCZ1zqdJnjGXxqVP0rriFQD829fyYO13GTTpZzxQ1Q8TWLw8QJwNFhYrZElk3DHKxg3dcMbqgKQLe/3gwYNZuHAhCxcuJDk5mX/84x889NBDDBo0iFWrVjFv3rxTvm7MmDEMGzaMl19+mccee4xFixZdWCExTgFLRCzX6DX50fqO3/T/52I7cTYD7/6d1D3683C4ii8uJfvLP8KWkHxe729LSiXz1rtJHDOdY0//J8GWRgJHD/Ktld8hZ+bP+f7BoQB85YMAmU64sUghSy7cgCTjgsNQJLW0tLB8+XLmzp2LYRi0tbWxfft2brnlFgB++tOf8u1vf5uhQ4cycuRIAFatWkVDQwPXXnstEBrFuvfee9m9ezcvvPCCVf+UXkEBS0Qs9+CWIMfae9ZvLfAxa0Ac/trD1P7hR5heNwAJY6eTvfAeDEfXG2oTRk0h7zv/Te2SH+I/coBgSyMLVvwQ7yX38+ODhaEzGN8N8N6nYHo/hSzp/a688kocjtChvq2tjdLSUr75zW+SmJiIz+dj7ty5fO1rXwNC4SkxMZHPf/7ztLS04HA4GDZsGPfdd1/4/W6//Xa+9a1vcdttt5GSkmLJv6m3UMASEUvVuk0e3BIavXIY8P9GezC9duoe/yXB1tBaDc5h48j+4g8uKFx9wpGZR943fk3t//4E774yTFcziz78AXVT/4P/qh6IJwC3vB1gw81GlxqJRaJFRUXFeb/mc5/7HJ/73OdO+3hqaiotLS0XUFXfoV/RRMRSv94cpMUX2v7KSBtFKSb1z/0e38E9QKjnKucrP8WIc0bsa9qSUsm54xc4B4emQYItjfzb5p8zLzvURH/YBbe8FcAT0GKkItI1ClgiYplmr8n/bA+NXjltocZ2/871uFa/AYDhjA/1XCWeX8/VubAlJJNzxy+Jyx8CQKD2EH+ovI8hiaG0t7rG5IfrI38GmIj0DQpYImKZx3YFaQz1r7NguMEAWvC++lj48Yz5XyNuQFG3fX1bUgrZ//wzbKmZAJj7tvC68STO9k/GX28O8u5BhSwROX8KWCJiCX/Q5LdbOsLLt8fZaXhhCbQ0AJAwZhpJU6/q9jocmXlkL/oJtPd3Ja17kSf6rQXABL7wfoB6j6YKReT8KGCJiCVe3G9S0d4rO3eQwfD6bbjWvQ2AkZhC5me+gWH0TJN5fNFIMm5aHL596Ye/5das0DUOD7bC99YEeqQOEYkdClgiYokl2zuNXo0xaXj+f8K306/70ilXaO9OyRdfR8L4mQCYrmZ+c/A3pDpCI1d/3Gmy8oimCkXk3ClgiUiP29dk8tbBUHgZmgrTD76Nryp01qDRfzDJM+b2eE2GYZB127ewZ+SG7tj7MU+lvRN+/M4VAXxBTRWKyLlRwBKRHvfozo7RoDuHeWh+9cnwbec1X8Cwde06axfKlpxK5m3fDN+evP5RrkqtB2BrPTy8TaNY0nsUFRUxcuRISktLKSkp4f777z+n1y1cuJCHH344orUsWrSIMWPGcPPNN5/02G9/+1tqamrCt3/605/yr//6rxH9+ifqia+hgCUiPcofNHl8Vyio2A34XO2rBNsb2xMnXIJ9sLUXj00YNYWkKbMBMNta+H3DH/ikE+yXHwVpUMO79CLPPPMMmzZtYtmyZdx///2sXbu2x2uorq7m//7v/9iyZQvPP//8SY+fGLBihQKWiPSo1ypNDrlC258e0Iax/JnQDcNG2rwvWldYJ+k33YEtOR2AhB0r+FH6ZgCOeeA/PtYolvQ++fn5lJSUsH//fgAuv/xyXnnllfDjt956K0888cRJr/P5fHz/+99n6tSplJaWcvvtt9PQ0HDKr/HnP/+ZcePGMX78eD71qU9x8OBBGhoauOKKK3C5XEyaNOmkUbSf//znHDp0iFtvvZXS0lI2bdoEwKFDh7j++usZPXo0s2fP5tixYwA88cQT3HrrreHXv/LKK1x++eUAvPfee5SWlnLnnXcybtw4Jk2axNatW7ntttsYPXo0V1111XGr0B84cIB58+YxduxYbrjhBurr68/3v/WMFLBEpEf9ubxTc3vrSwRdodXTkyZfQVy/AqvKOo49JZ30GxaFb39lzx9JMEJnEv52a5DKFo1iydkFGuvwVpZH/E+gse68a9mxYwe1tbXhMHKu/vM//5OUlBTWrl3Lpk2bGDNmDD/5yU9Oet7WrVv57ne/y+uvv87mzZuZOXMmixcvJiMjg6VLl5KRkcGmTZv4/ve/f9zrfvzjH5Ofnx8eaSstLQVgzZo1PPnkk5SVlZGXl8eSJUvOqd5t27Zx5513smXLFmbMmMHcuXP59a9/TVlZGXFxcfzlL38JP3f58uU8/vjjbN26lUGDBnHPPfec1//N2ehahCLSY5q9Ji8fCIWTIkcL+RufxwSw2Ui75vOW1naipIuupGX5S/iqdmNU7+N/Ct/hS66rcQfgZxsD/PFSfXzKmbV8uJTmN56O+PumXvN50q/9p3N67q233ophGOzcuZPf/OY35ObmntfXeuGFF2hqauKZZ0IjzV6vl2HDhp30vGXLlnHdddcxcOBAAO666y5++ctfYppd+2Xk2muvJSsrC4AZM2awZcuWc3pdSUlJOKRNmjSJ/fv3M2jQIAAmT57M3r17w8+97rrr6NevHwCLFy/mM5/5TJdqPR19QohIj3lxv4m7fUmpnwdex3S3ApA09SocufkWVnYyw2Yj4+Y7OfrfoUbYK8v+xIBhl3A4kMSTu0x+PMmkMEUXg5bTS5k5j8Sx0yP+vva0rHN+7jPPPMPYsWN5++23uf7665k9ezbjxo3D4XAQCHSs7+Z2u0/5etM0+f3vf8/s2bPP+HVM0zxu3boLXcMuISEhvG232/H7/QBnrfvE1514u62t7bRfM9Lr7mmKUER6zF/3tF93MOhj1r6XQncaBmlzbrOwqtOLHzaWxNJZoRutjTxsexUAvwn/qV4sOQt7ejbOghER/9OVNeKuvPJKvvrVr/LDH/4QgGHDhrFmzRoA9u3bx4oVK075uhtuuIEHH3wQlyvUOOlyudi2bdtJz5szZw5Lly7lyJEjADzyyCPMmTPnnEJLWloajY2N5/TvGDZsGB9//DFutxu/33/clN/5evXVV8PN9Y8++ihXXnlll9/rVBSwRKRH1LlN3qwKTRd8yf0+jtZQQ2ni+IujbvSqs7R5XwQj9FE5dcdz9DNCTbJ/3Bmk2qVeLOk9fvSjH7FixQo2bNjAv/3bv/HWW28xefJk7rnnHqZNm3bK13z/+9+ntLSUadOmMX78eKZPnx5uRO9szJgx3HfffVx99dWMHz+e5cuXn3Pf1De+8Q2+9KUvHdfkfjozZszgmmuuYezYscydO/eU05Xnas6cOSxatIixY8eyf/9+fvnLX3b5vU7FMLs6QdoFGzduZPLkyWzYsIFJkyb11Jc9J8eOHQvP90rvpH0Y3ZZsD3DniiCGGeSjqq+T3XQAgNx/+Q3xRR1LM0Tjfjz2l1/jWvsWAKvHfJZP8zkAvjfexn9Ms2bNrmgXjfsxUqL5WCbd71z3v0awRKRH/H1P6He5y1s2hsOVc+iY48JVtEq75vPQvvjp9N0vkBsMnfn4hx1BWn0axRKRkylgiUi3q3ObfHAkFES+2fhC+P7UK249zSuiiyO7P8nTrg7d8LTxK5YC0OA9ftkJEZFPKGCJSLd75YBJwIRhnkomN34MgCMnn4Qxp+77iEapcz4T7sWavf9lEoIeAB7aFuzyqegiErsUsESk271QERrlWXDs9fB9yRd/CsPWez6CHDkDwmcU2lyN/L/guwBsb4C3Dypgicjxes+nm4j0Si6/yRtVJglBN59pfCd0Z5yT5KlXW1tYF6TO7pjS/Nzh57CZofV4HtJFoEXkBApYItKt3qwyaQvAjY3LSQu0Lyw68TJsyakWV3b+nAUjiC+eCEBC0xEWeFcBsLTSpEqXzxGRThSwRKRbPd8+PfiFY0vD96Vccp1V5Vyw1DmfDm/f3RS6WG7QhCd2aRRLRDooYIlIt/EHQ9cenNC2i/Hu3QDEFYzAWVhicWVdF188EUe/QgAG1GxjpLsCgMd2BQmq2V1E2ilgiUi3WX7EpN5zfHN7ysW9d/QKQtcr6zwCd48ndPmcfc3w3iEFLBEJ0cWeRaTbLK00SQy6ua4pdJ0zIz6JxEmXWVzVhUu6aA6NrzyO6WljVvV7pKYspNmezKM7g8weqN9b+4rt27dbXYJY4Fz3uwKWiHSb1yqDfKppJSnB0BXskyZdhs2ZcJZXRT9bQjJJU+bQuvIV7D43X2h5l9+lX8+zFSa/95qkO89+gVvpvXJyckhKSmLBggVWlyIWSUpKIicn54zPUcASkW5R2WKyrR5+Uv92+L6kqVdZWFFkpVxyHa0rQ03ui5re4Hdp1+EJGDxfYbKwWAErlhUWFrJ9+3Zqa2utLqXbNTY2kp6ebnUZUScnJ4fCwsIzPkcBS0S6xetVJoXeI8xwbQXAkTcIZy+47uC5ihtQhHPIaLz7ysht2s8EdzkfJxbzl91BFhZrmjDWFRYWnvUAGwti+aLd3U2fAiLSLV6vDPLphs6jV1djGLE1spPcaUTuK62hf+s7h0yOuNTsLtLXKWCJSMT5gibvVAW4tSF0ORkMG8kXzbG2qG6QOPFSjLh4AK6t/4D4oJegCf+3V2tiifR1ClgiEnGrqk3GNmxhkO8oAAkjJ2NPz7a4qsizJSSTOOESAOK9rVzTvBqAv+zRCJZIX6eAJSIR91qlyWc6Tw9Oi53m9hMlTeu4puKXW0L/5tU1JnubFLJE+jIFLBGJuA8qmpnX9GHoRmIqiWOnW1tQN4ofNg57Vj8AJjVsor+vDoBn92maUKQvU8ASkYg67DIZvG8FCaYXgOQpV2A4nBZX1X0Mm42ki64MbWNyXeNyAJ6r0AiWSF+mgCUiEfVGlcn8xmXh28kxtPbV6SRNujy8fXvrB0BomvBQq0KWSF+lgCUiEbV652GmubYB4MsuIG7QcIsr6n5x/QqIGzgMgJKWcgZ7DwPwwn5NE4r0VQpYIhIx/qBJelnH6FXmtNkxt/bV6XQexbqhMTSK9bymCUX6LAUsEYmYtTVBrq3rCFgpU2ZbWE3PSpx4aXj71uZQH9ayQybH3ApZIn2RApaIRMz6TbsY7j0IwLH8cTjaz67rCxxZ/XAOGQ3A0Lb9lLj3EzDh5QMKWCJ9kQKWiESMc8u74e3saX1n9OoTSRMvC29/Mk34QoX6sET6IgUsEYmI6hYf04+EQoXXiGPARbMsrqjnJZbOgvaes+taVgHw1kETT0CjWCJ9jQKWiETEhlUbyAk0AnCgYBq2pBSLK+p59rSsjmlCdyVDPVW0+mH5EQUskb5GAUtEIiK4qWN6MBYv7HyuEsfNDG/PbQqNYr2qPiyRPkcBS0QumM/VwshDoQsd19tTmTBtssUVWadzwLq2/eLPSyvVhyXS1yhgicgF2/HhyvClcbYMuhSnM3YvjXM2jpwBxOUPAaC0bRf9fXXsaoTdjRrFEulLFLBE5IK1re+YHnRM6rvTg59I6DSKdU2TRrFE+iIFLBG5IP6Go/Q/shmAvc58ZkwaaXFF1kscf3F4++r2aUL1YYn0LQpYInJBatcsw0YoPKzofzkFqfpYicsfgj27PwAzXVvI8Dfz3mGTFp9ClkhfoU9CEeky0zRpXPtO+LZ/fN9bXPRUDMMIN7s7zACXtW7EG4QPDitgifQVClgi0mW+g3tJrtsPwLrEUVw8Kt/iiqJHwphp4e3ZzesBePugApZIX6GAJSJd1rq+Y/TqlawruKS/YWE10SV+6BiM+CQALm/ZgM0M8NZBNbqL9BUKWCLSJWYwQNP69wDwGA5co2YRb1fA+oRhd5AwchIAWYFmJrSVs7Uejrg0iiXSFyhgiUiXeHZtwt5yDIB3Uy7isqFpFlcUfRJGXRTenqNpQpE+RQFLRLqkde1b4e3nMi7n2gJ9nJwoYdSU8PYVLZ8ELE0TivQF+kQUkfMWdDXTtnklAHX2NA4OuojBqZoePJE9PZu4QcMBGO/eQ57vGG8fMjFNjWKJxDoFLBE5b66N74PfB8Dz6Zdz1eB4iyuKXgmjO6YJr2jZwMFW2NFgXT0i0jMUsETkvLWufTO8/Y/MK7m2QKNXp5Mwemp4W9OEIn2HApaInBff4Qp8B3YBsCVhKAdShjBLyzOclrOwGFty6ASAS1s+wmH6eUuN7iIxTwFLRM5L65qO0au/Z1zF7HxDyzOcgWGzE18SWq4hNdhGadsuPjhiEggqZInEMgUsETlnZsCPq31xUY/h4MX0yzQ9eA4S2gMWwKyWTTR6YfMxCwsSkW6ngCUi58y9bS3BlkYA3kydRoMjVcsznIP44onh7UtaNwHw/mH1YYnEstN+MpaXlzNz5kyKi4uZOnUqZWVlp3ze1Vdfzfjx4yktLWXWrFls2rSpu2oVEYsd19yecSWjM6BIyzOclSMzF0feIAAmuXaSEnDxni78LBLTThuw7rjjDhYvXsyuXbv43ve+x6JFi075vH/84x9s3ryZTZs28Z3vfIcvf/nL3VasiFgn0FiHu2wtAIcd2XyQMpEbizR6da4+6cNyEGRG6xaWHzEJaj0skZh1yk/HmpoaNm7cyIIFCwCYP38++/bto6Ki4qTnZmRkhLcbGxux2fSBKxKLWle/DsHQtNYzGbMJGnZuHKzRq3OVUHL8NOExD2xVH5ZIzHKc6s7Kykry8/NxOEIPG4ZBYWEhBw4coKio6KTnf+ELX2DZsmUAvP7662f9onfffTfp6enccsstzJ8//wLKj5z6+nqrS5ALpH3YfcxgAPfKVwEIYvB05lzy4oMMszdzLMIhIVb3o5lVAIYNzCCzWjYBsHRPC4MMn7WFdZNY3Y99jfbjucvKyjru9ikDFoRCVWdnurTDn/70JwCefPJJvvvd77J06dIzFvHwww8zadKkMz7HCif+50jvo33YPdq2rKKtKZSk3kmZwkFnHl8pMsjJ7p7/79jcj1nUFI3Eu6+MEd4q+vtqWdeYy/ezUq0urNvE5n7se7Qfu+aU83kFBQVUVVXh9/uBULiqrKyksLDwjG/2xS9+kWXLllFXVxf5SkXEMi0rXwlv/ylrHgA3DlY7wPnqfDbhpS2b+OCIrksoEqtO+QmZl5fHxIkTeeqppwB49tlnKSoqOml6sKmpiUOHDoVvP//882RnZyvtisQQ/9FDeHZsAKDK2Y/3UyaRaIc5A9V/db46r4d1Sesmat1QphkYkZh02inCJUuWsHDhQu69917S0tJ48sknw4/NmzePn//85/Tr14/58+fT1taGzWYjNzeXV1555aTpRRHpvVo+fDW8/aeMuZiGjasHGSQ69HN+vpyDSzDikzA9Li5u/RhMk/ePBBmTZbe6NBGJsNMGrJKSElatWnXKxzr3WK1duzbyVYlIVAi6XbSuCp244rc5+HvmVQDcpOUZusSwO4gfNgZ32Try/A0M9R7kg8MF3DXa6spEJNL0KSkip9W65k1MdysAS7Ou4JgjnTgb3KTlGbosfvj48PaM1i2srFYPlkgsUsASkVMyAwFa3n8+fPu/0m8E4JpBBhnxClhdFT+sc8DaSlUrVLYoZInEGgUsETmlti0fEjhWDcC+/pPYlTAYgE8P0cfGhYgbNBwjPhGA6a4tYJoaxRKJQfqkFJGTmKZJy7Jnw7cfTLsJAKcNbtD04AUx7Hbih44FoJ+/nqHeg6w8ooAlEmsUsETkJJ7dm/Hu3wGAN3cILzhKAU0PRsqJfVgf1gQtrEZEuoMCloicpOn1p8LbrxbNh/alVz4zVB8ZkXB8wNrKx3XQ4tMolkgs0aeliBzHXf4x3j1bALDlDuTH3ksASImDm4s0ehUJJ/ZhBYIma2oUsERiiQKWiByn+Y2nw9tlpZ+lwR9aBPPWIQbJcQpYkWDY7TiHjAE6+rA+VKO7SExRwBKRMHf5x3h2bwbAkTuQX5uzwo8tLNbHRSRpPSyR2KZPTBEBwAwGaXzpj+Hb/ktv543DoY+IIakwq79GryLpxD6sVdUmgaBClkisUMASEQDaPnofX2U5AHH5Q3g04TI+Odx/YYQNm64xGlHOguP7sJq8JmUN1tYkIpGjgCUimD4vja88Hr6dfN1XeGRnKFDZDVhUoo+KSDPsDpxFo4BQH1ahr5qVR7Rcg0is0KemiNC87BkC9TUAxI+cwsvOiRxpCz12U5FBQYpGr7pD/NAx4e2LXGXqwxKJIQpYIn2c/+ghmt78a+iGzUbGDYt4uKxjJOXrY/Qx0V0+OZMQYIqrjLVHFbBEYoU+OUX6MNM0qX/mYfD7AEi57GZWG4PDSwaMzYRL1dzebZyDR4It9DF8kauMXY1Q71HIEokFClgifZhr/Tt4dm4EwJ6RS9rcBfz7po7Rq++Ot2Ooub3b2OITiBs0HIASTyUZ/mbWasFRkZiggCXSR/nrjtDw7O/DtzNuvYsNTfG8URU6wBelwGeHK1x1t/hO04ST27ZrmlAkRihgifRBZjDAsacfwHS7AEiaMofEsTP44bqO0avvl9qIsylgdTfnCY3uumSOSGxQwBLpg5rf/BvevVsBsGfmkTH/Ll6vDPLmwdDBfXCKVm7vKfFDRoe3L2pvdDdNhSyR3k6foCJ9TNu2NTS98VTohmEja8H3CMQn8a9rAuHn3HeRnXi7Rq96gj0tC0dOPgAT2sppcnmpaLa4KBG5YApYIn2Ir6aKY3/+D2gfIUmb9wXih43l/k1BttWHnjM11+D2YQpXPemTacJ40884927WqA9LpNdTwBLpIwLN9dT+4UfhvqvECZeQeuVtbK4z+cVHod4ruwG/v1hnDva046YJW8t0JqFIDFDAEukDgm2t1D7yQwK1hwFwDCgi83PfockHt77tx9fe2/5vE2xMzlW46mnOoWPD2xe1bdcIlkgMUMASiXFBr5u6R3+G7+AeILTeVc4dv8DvSOD2dwKUN4WeV5oNP5qojwQrOPIGYUtOA2CKazsfHQ3gCypkifRm+jQViWFBt4u6P/wYz+7NANiS08j56r34U3K47Z0Ar7eveZUZD89d6SDBodErKxiGEb5sTmagmUGuKrYcs7goEbkgClgiMSo0LXhPOFwZ8UnkLP4Fh5IGcdkrAV7YHwpXiXZ44So7Q9IUrqwUP7SjD2uKaztraoJneLaIRDsFLJEYFGht4ujvv4+3YjsARlIK9kX38u+1wxn9jD+8WniSA166xs6lA/RRYDVnUUfAmtS2Uyu6i/RyDqsLEJHICARNjrRBTU09KU//gMTaCgBczjR+MfaX/PWDIQTMjlGRwhR48WoHpdkauYoGzkHDwWaHYICJbTt4TGcSivRqClgivVST1+SZfSZvHwyy7qjJ/hbI9tTx14p7yPUeBKDakcVnC35BeWth+HV2A746ysa/X2QjzalwFS0MZzxxA4fiqyynxFPJoboWGr0ZpGsfifRKClgivUy9x+TnG4P8YUcQl7/j/kHeav5W8UMG+44AcDAuh9sH/zsV8aFVwkekwU1FNr422sbgVB20o5GzaBS+ynIAxreVs+HoFGYP1L4S6Y0UsER6kTcqg/zTewGOuo+/f3TgIE/t/yG5vloAmlL6s/OGe/ltXn8GJMGgZIP8ZB2oo1384JG0Ln8JgEmunWyonczsgRYXJSJdooAl0kv8dkuAb68O8klnTqIdvlRi44uZBxn01/9H0Bu61o0jr4CSu+5jdEaOdcVKlziLRoW3J7XtYGmt+rBEeiudOiTSCzywOcC3OoWrTxUY7PyMg/8aXUfBP+4h2BwKV3H5Q8j9+n9iV7jqlezZ/bGlpAOhMwnXH9VSDSK9lQKWSJR7dl+Q767pOND+aKKNl66xk282Uvv7/0eg4SgAcflDyf3ar7CnZlhUqVwowzBwDh4JQEaghWDtIeo9GsUS6Y0UsESi2LZjJl98LxC+/bPJNn4+xY7h81L7hx/hPxo6W9CRO5Ccr/47tuRUq0qVCDl+mnAnGzVNKNIrKWCJRCl/0OQL7/tpbT9TcMFwgx9NtGGaJsf+/tvw2Wb2jBxyvnov9tRMC6uVSPlkBAtgsmsHGxSwRHolBSyRKPXA5iAbQycFMjoD/jDLjmEYtLz7DG0blgFgOBPIXvxzHFn9rCtUIspZWIxphD6aJ7btVMAS6aUUsESi0IEWk59tDPVd2Qx47DI7iQ4Dz74yGl95PPy8rAXfxZk/1KoypRvYEpKI6z8YgFHuCrYeabO4IhHpCgUskSj04/UB3O2tV98YY2Nano1gWyvH/vwf0H65m9SrP0fi+IstrFK6S3xRaJrQTpC0o+VqdBfphRSwRKLM5jqTP5WHDqiZ8fDjSaEf04Znf0fgWDUAziGjSbvm85bVKN3ruEZ31w41uov0QgpYIlHmpxsD4fWuflBqIzPewL19Pa717wJgJCSRteB7GHa7dUVKt+rc6B5aD0sBS6S3UcASiSI7G0xeqAgdTAckwd2jbQS9buqfeTj8nIyb78SR3d+qEqUHOPIGYcYnA+2N7lpwVKTXUcASiSK/3tIxevUvY20kOAya3/wrgbrQBZydw8aRNPUq6wqUHmHYbMQXlQCQ52/g4MEjFlckIudLAUskSlS7TJ7cFYpXaXFwxygb/trDNC97NvQEu4PMz3wDw9BFm/uC+E7ThFm15Rxza5pQpDdRwBKJEo/vCuJtnwm6Y5SNdKdB49InIRBaaTT1ivnE9SuwsELpSc7BJeHt0rZdbKxTwBLpTRSwRKJA0DT53x0dfTZ3jrLhrSynbeN7ANiS00m98jMWVSdWcBYWh7cntJWr0V2kl1HAEokC7x4y2dsc2r5qoMHQNIPGlx8LP5569WexJSRbVJ1YwZ6aSTA9D4Bx7j1sPOq3uCIROR8KWCJR4A/bO0avFo+04dm7Dc+ujwCwZ/cn5eJPWVWaWChp8AgAkoNuag9UWlyNiJwPBSwRizV4TF7cH5r+yUuEGwYbNL/99/DjaVd/DsMRZ1V5YqHOje65dVrRXaQ3UcASsdhzFWa4uf32oTY4vBd32VoA7Jl5JE2ZbWF1YqW4Tn1YpW272KRGd5FeQwFLxGJ/3dMxPfjZYQbN7/wjfDt19q0YdocVZUkUcBYMxyS0LMeEtnI+0iVzRHoNBSwRC1W7TN49FDpoDkmFyY4a2jYtB8CWkkHytGusLE8sZktIJpAzCIBR7n1sqfFYXJGInCsFLBEL/d++IMH2QYnbh9loXfkqmKERrZRLb8BwxltYnUSD5PYV3eMI0Fy51+JqRORcKWCJWOj/9nZM+Xy20IdrzRuhG3YHyTOutagqiSaJgzv6sNJrdtHm1zShSG+ggCVikVq3yYrq0MGyOB2GVnxAsLUJgKTSWdhTM60sT6JE5xXdx7nK2VqvgCXSGyhgiVhk6QEzPD1442AbLSteDj+WfMn1FlUl0SYufwhBW+hEh9K2XXxUa3FBInJOFLBELPLi/o6zB291luOrLAcgbtAwnEWjrCpLoozhcOLrNxSA4d6DlB1psbgiETkXClgiFnD7Td6oCg1f5STA8N3vhB9Lvvg6DMOwqjSJQilFHX1YrRW7LKxERM6VApaIBZYdNmltv7TcjQP9uD96L3QjzklS6aWW1SXRKWVIRx9WcvUuAkH1YYlEOwUsEQu8WNFxgFwQWE/QFbrSc+K4mdgSdVFnOZ6z04ruY1rL2dloYTEick4UsER6mGmavFYV6r+Kt8OofZ2mB6deZVVZEsUceYPwxiUC7Su665I5IlFPAUukh5U3woH2PuVrM5vw7VgHgD09h/jiUusKk6hl2Ox4+48AIN9fy87KOosrEpGzUcAS6WFvHuw4e/CL7g8gGAAgacpsDJvdqrIkyqUO6ZgmdKnRXSTqKWCJ9LA3qzqmdyYcWh7eTrpojhXlSC+RObSj0T2peiemqWlCkWimgCXSg3xBk2WHQwfGMbZa4irLAHD0H0xc/8FWliZRrvOK7iObd1HZamExInJWClgiPWh1tUmLL7R9l/lh+H4tzSBnY8/IxZWQAcA49x4+Oho88wtExFIKWCI96K2DHdM6l9auDG8nls6yohzpRQzDwNPe6J4ZaKZ8/xGLKxKRM1HAEulBb7YHrP6+WjKOdJ4eLLSyLOklUgePCG+37C+3sBIRORsFLJEe0ug1WXc0FLC+7NP0oJy/vOEdASvhiAKWSDRTwBLpISuOmHxyhZPrmzQ9KOcvvtOK7kVN5dS5dSahSLRSwBLpIR+0nz2Y7W9gYN12ABz9CzU9KOfMnp5NS0IWAOPa9vBRrRrdRaKVApZID3n/SChgzW5ej0FoO3HMdCtLkl6orb3RPT3YSvm+QxZXIyKno4Al0gNafCYb2vuvbvasDd+fMFYBS85PcqdG92at6C4StRSwRHrAqmoTvwnxQS/TGj4CwJacftzikSLnYsCIjoDlPKxGd5FopYAl0gM+aJ8enNG6BWfADUDCmKm69qCct6TBHY3uAxt24/Kr0V0kGilgifSA99sb3K9s7pgeTBwzzapypBezp2bSkJgLhFZ031oXsLgiETkVBSyRbtbmN1lTY4JpMre1PWDZ44gfOdnawqTXas0bDkBKsI3yPQctrkZETkUBS6SbrT1q4g3CaPc++nlrAYgfMR5bfKLFlUlvlVjY0YfVsE+N7iLRSAFLpJuFpwdb1oXv0/SgXIiBxR19WPbDuy2sRERORwFLpJutbG9wv7Tlo/B9CaOnWlWOxICMIR0jWP3rywkE1eguEm0UsES6UdA0WV1jkhJwMbltBwCO3IE4svtbXJn0ZvaUdOoS+wEw2rWH8gY1uotEGwUskW5UVg9NPpjZuhmHGToIqrldIqG5vdE9yfSwa3elxdWIyIkUsES60aqa0NTNZS0bw/cllEyyqhyJIc6Cjj6sY3vV6C4Sbc4YsMrLy5k5cybFxcVMnTqVsrKy4x53u93cdNNNFBcXU1payty5c6moqOjOekV6lVXVoYvxXtq6KXSH3UH8iAnWFSQxI7/Tiu7GIa3oLhJtzhiw7rjjDhYvXsyuXbv43ve+x6JFi056zuLFi9m5cyebNm3iuuuuY/Hixd1WrEhvs6rGZLD3MEXewwA4i0ZpeQaJiAHDh4e3c+vKMU01uotEk9MGrJqaGjZu3MiCBQsAmD9/Pvv27TtuhCohIYF58+ZhGAYA06dPZ+/evd1bsUgvccxtsqPhhLMH1X8lEWJPTqM6cQAAxa59HG5Ro7tINHGc7oHKykry8/NxOEJPMQyDwsJCDhw4QFFR0Slf89BDD3H99def9YvefffdpKenc8sttzB//vyuVR5h9fX1VpcgFyja9uFbh+1A0nH9V94Bwzl27Jh1RfUC0bYfo9mxrKH0O3iYBNPLxk1lJIwZZHVJYdqPsUH78dxlZWUdd/u0AQsIj0x94kxD0Pfeey/l5eU88sgjZy3i4YcfZtKk6Gv0PfE/R3qfaNqHW/cGcJheZrZuBsCWnE726EkYNp1bcjbRtB+jmXPwSDi4EgDX4YNkzRpvcUXH036MDdqPXXPaT/qCggKqqqrw+/1AKFxVVlZSWFh40nMfeOABnnvuOV577TWSkpK6r1qRXmRVtclE105Sg20AxJdMVLiSiOo/ouNMQvOgGt1FoslpP+3z8vKYOHEiTz31FADPPvssRUVFJ00PPvjgg/z1r3/lrbfeIiMjoztrFek1AkGTNUdNLm4fvQItzyCRN6RkWHg7u1YBSySanPHX6SVLlrBkyRKKi4u5//77efTRR8OPzZs3jxUrVvCd73yHhoYGrrjiCkpLS5k2TddYE9laDy3tC4x+QsszSKQ5k1KoSgz1XQ1x7aPJ5bW4IhH5xBl7sEpKSli1atUpH1u6dClw5r4skb5qVXWQhKCHSe2Xx7Fn98eR1c/iqiQW1ecMZ1BlFfGmn527KriotPjsLxKRbqeGEJFusKrGZLJrB/FmqIdRo1fSXWwDO9bDqt6jaUKRaKGAJdIN1h41j5seTBiugCXdI2d4x4hVoFIBSyRaKGCJRFiT12RnA8xo3RK+TyNY0l1KRg4nSGhJnQw1uotEDQUskQjbUGuSGGijtC10AV5H7kDs6dkWVyWxKiUliQPtje4FrfvxejwWVyQioIAlEnHrjppc1LadOEKXLtHolXS32uzQhZ+dpp89u/ZZXI2IgAKWSMStO2oys6Xz8gyl1hUjfYI5cER4+9BuTROKRAMFLJEIW3fUZKarU8AaHl2XL5HYkz2kI2D5DuyysBIR+YQClkgEHW0zOdbYyri2PQA4+g/GnpphbVES84pHDiPQ/nGeenS3xdWICChgiUTUuqMmU13bsBME1H8lPaN/RiJ7E0PXiR3Ysp+gx21xRSKigCUSQeuOmszstDxDgqYHpYfUZIUWHHUQpGrvXourEREFLJEIWnfUZHp7wDINA6cClvQQf35HH9bBXWp0F7GaApZIhJimSVl1K2PcodPk4/oPxp6cZnFV0ldkFnWs6O5Wo7uI5RSwRCKkshUKju3o6L8aNtbiiqQvGV48FB92AJKrNYIlYjUFLJEIWXfU5CJXWfh2/JAxFlYjfc3wHCflCYMB6NdSpUZ3EYspYIlEyNoak6mtHQHLqREs6UE2w+BwZqjR3U6Q+got1yBiJQUskQjZWO1lYtvO0I2MPBwZudYWJH2Od0BHH9aBnerDErGSApZIBARNE3flbhJNLwBJwzQ9KD0vvdOK7q796sMSsZIClkgE7GqEMU2dpgeHanpQet7Q4UV4DAcAiWp0F7GUApZIBJzU4D5UI1jS88bmOtmRUARATstBgu5WawsS6cMUsEQiYF1NIByw/AmpOPoVWlyR9EUJDoOq9NA0oQ2T1gNqdBexigKWSAQc2l9FVqAZgPghozFs+tESa7j7Dw9va0V3EevoKCBygXxBk5SDW8O3U4ar/0qskzK4o9G9pUJnEopYRQFL5AJtPQalLZ0b3NV/JdYpGlaE23ACEH9YAUvEKgpYIhdoQ21Hg7vf7sRZMOIsrxDpPqV5cWxJGAZAZusRAq1NFlck0jcpYIlcoJ0HjjLYVw2AL78EwxFncUXSl2UnGOxN6wj5nv07LaxGpO9SwBK5QN5928LbGcWaHhTrtfbvWNG9ZremCUWsoIAlcgE8AZN+1R0BK1UN7hIFkos6AlbzPgUsESsoYIlcgK3HYHJ7/1UQG84hoyyuSASGDh5Igy0ZgPjDOzFN0+KKRPoeBSyRC7DpYBOj3BUANGUXYUtItrYgEaA0x8bmxFAfVpK7gUBDrcUVifQ9ClgiF6CufDs2QqMDtiJND0p0KEqFHSkdje7eA2p0F+lpClgiF8BxoKP/asAoNbhLdDAMg9Z+HX1YjXsVsER6mgKWSBe5/SZFdR0LjKaN0AiWRI+EopLwdpMa3UV6nAKWSBdtOeplfFvowHUsqT/29GyLKxLpMGJQDkccWQDEHS7HDAYtrkikb1HAEumiPdt3kWD6AGgZqOlBiS4Tsw0+bm90d/pc+I8etLgikb5FAUuki9r2dPRfpQxXwJLoMioDtiR19GGp0V2kZylgiXRR+uGOgDVknPqvJLo47QaNeR1nEroqFLBEepIClkgXuLwBihu3A9DoSCNlQIHFFYmcLLFQK7qLWEUBS6QLtu/aT0agBYCDuaMxDMPiikRONnJAKnud+QDYj+zB9Pssrkik71DAEumCI9u3hrfNweq/kuhU2qnR3R704ztcYW1BIn2IApZIV+zv6L/KHan+K4lOE7INNiV2bnTXNKFIT1HAEumCAUdDC4y6jHhGjhpucTUip5buNDia3dHo7tm/w8JqRPoWBSyR89R8tJo8z1EAytNLSIqPs7gikdNLKhiKv/2jvrWi3OJqRPoOBSyR87R3S0f/VX1/9V9JdBuTl8iOhCIAjKMHCHrarC1IpI9QwBI5T427OvqvEoYqYEl067yiu2EG8VXttrgikb5BAUvkPCUdCgUsPzaGjB5pcTUiZ1aabfBxQkcflhrdRXqGApbIeQi6munftB+A7YlDGTsg2eKKRM5sYDJUpHc6k3C/VnQX6QkKWCLnobG8Y3pwX9Zo4u1aYFSim2EYpA4aTJvhBKBtv0awRHqCApbIeTi0vSNguQvUfyW9w/hcB1sSh4Vu1B8h0NJgaT0ifYEClsh58O3tOIMwa4QWGJXeYXKOwUeJJeHb3gqthyXS3RSwRM6R6fWQcTS0jtBeZz7jB2dZXJHIubko12BjYscJGV4tOCrS7RSwRM6Rt3IXDtMPwPrkMYzNtLggkXM0NBX2pHeMYHn2bbewGpG+QQFL5Bw17doS3q7OG41TDe7SSxiGQcHAXA45cgDwHtiJGQxYXJVIbFPAEjlH9Z0WGLUPUf+V9C5Tcgw2JrWPYnnd+A7vt7YgkRingCVyDsxggLiq0AWeqx2ZDB2cb3FFIudnyol9WBWaJhTpTgpYIufAd2gfcb7QNdzWJY1mSp5+dKR3OW4ECzW6i3Q3HSVEzoF3b8f04EcpoxmjBnfpZQpT4EjGMLyGA9AIlkh3U8ASOQfN5R3rX7UMHEucTQ3u0rsYhsH4fvFsSxgKgL+mimBrs8VVicQuBSyRszBNE3f7AqPNtkTyioZYXJFI10zJMdjYacFRj6YJRbqNApbIWQTqDhPXWg/AhqRRXNTPYXFFIl0zJddgY5IWHBXpCQpYImfh2dMxPbguaTRTczU9KL3TiSNY6sMS6T4KWCJn4enU4F6WPpphaRYWI3IB8pMNgul5VDtCZ2l49+/ADAYtrkokNilgiZxFa/sIltdwkDC4BMPQCJb0XlPybOELP5tuF/6aSosrEolNClgiZxBorseoPQjA5oThTOyfYHFFIhdmSo7BhiQtOCrS3RSwRM6g8/pXa5PGcJH6r6SXm5JrhEewALwVanQX6Q4KWCJn0Ln/al3yaAUs6fWm5Bh8nDgcf/vHv0cjWCLdQgFL5Aw8ezvOIDycO4r+SQpY0rvlJhr0S0ugLCG0npu/+gBBlxYcFYk0BSyR0wh62vBW7QFgR/xgRg3Q6YMSG6bkGqxLGh26YZoaxRLpBgpYIqfh3VeGYYZOYdf6VxJLpnUOWBzfaygikaGAJXIanj1bwturk8cyNU8BS2LD9LzjA1bnqXARiQwFLJHT8OzeHN5emzyWyTkKWBIbJuca1DmzqHAOAMC7fxemz2txVSKxRQFL5BSCHjfe/TsB2O0cSHZuFilxClgSG5IcBhOyYV3SqNAdAR/eynJrixKJMQpYIqfgrSiDYACAVcnj1H8lMWd6no21x00Tqg9LJJIUsEROofP04JrksQpYEnNO7MPy7lPAEokkBSyRU+gcsFYnjWVmP/2oSGyZnmewxzmIY/ZUADz7tunCzyIRpKOGyAmCXjfeA7sA2OMciCspmzGZFhclEmHD0yAroWMUy3S14K8+YHFVIrFDAUvkBN6K7RDwA7AqeSzT8gzsNk0RSmwxDINpJy3XoGlCkUhRwBI5wXH9V0ljmaH1ryRGTc8zjmt0Vx+WSOQoYImc4Lj+q+RxzOingCWxaXqewdaEYbQZTkAjWCKRpIAl0knQ27H+1V5nPkfispmuESyJUVNzDXy2OD5KLAEgcKwaf8NRi6sSiQ0KWCKdeCt2dOq/GseoDMiMV8CS2JQRbzAqgxOuS1hmXUEiMUQBS6STE5dnUP+VxLrpeQbrkjs1une6BqeIdJ0Clkgnnt0fh7dXJ4/T+lcS82b0s7E+cST+9sNB518yRKTrdPQQaRf0tIWmCOnov1KDu8S6S/oZtNqT+DhxBAD+6gMEmo5ZXJVI73fagFVeXs7MmTMpLi5m6tSplJWdel7+G9/4BkVFRRiGwdatW7utUJHu5tmzJXz9weXJpWQ4YWSGtTWJdLeRGZAdD6uSx4fv0yiWyIU7bcC64447WLx4Mbt27eJ73/seixYtOuXzbr31VlasWMHgwYO7rUiRnuDZ+VF4e0VKKdPzDGyGRrAkthmGwSX9DVYljw3fp4AlcuFOGbBqamrYuHEjCxYsAGD+/Pns27ePioqKk5576aWXMmjQoG4tUqQneHaFAlYAG6u0/pX0IZf0D63o7jUcAHjKPz7LK0TkbBynurOyspL8/HwcjtDDhmFQWFjIgQMHKCoquuAvevfdd5Oens4tt9zC/PnzL/j9IqG+vt7qEuQCXcg+NFsa8B2uAGBz4nAa7SmMT2rh2LFAhKqTc6WfxZ43LtFGmy2ZTYkjmOrajv/oQWr378GW2vWLcGo/xgbtx3OXlZV13O1TBiwIharOTNOMWBEPP/wwkyZNitj7RcqJ/znS+3R1H7r2bqKtfXtF8gQcBlw9PI0kh0axrKCfxZ51RbpJwnI/q5PGMdW1HYCk2gMkDR52Qe+r/RgbtB+75pRThAUFBVRVVeH3hxZcNE2TyspKCgsLe7Q4kZ7i3tXRf7U8pZSLcg2FK+kznPbQhZ8/7NzormlCkQtyyoCVl5fHxIkTeeqppwB49tlnKSoqisj0oEi0MU0z3H/VZjjZkDiKSwcoXEnfMqu/wYakknAflnu3ApbIhTjtWYRLlixhyZIlFBcXc//99/Poo4+GH5s3bx7r168H4Gtf+xqDBg2iqqqKK6+8kuHDh3d/1SIR5K+pItBQC8Ca5LF4bXFc2l8BS/qWS/oZuG0JHdclrD2Mv17XJRTpqtP2YJWUlLBq1apTPrZ06dLw9u9+9zt+97vfRb4ykR7i6TQ9uCJ5AgZwsQKW9DEz+hnYDPgweRzTXNuA0JUNHBddaXFlIr2TVnKXPs+9a1N4e3lyKaXZkO5UwJK+Jc1pMD4rdJHzT3jKtR6WSFcpYEmfZgYC4WbeOnsa2xOKuHSAfiykb7qkn42NiSNxG04gNLobyTPIRfoSHUmkT/NWbMd0twKwIrkU07Cp/0r6rEsHGHhsTtYkjQEg0HAUf02VxVWJ9E4KWNKnucvWhrffTZ0MhM6mEumLLm8/e3Z5Smn4PveODRZVI9K7KWBJn+bevj68/X7KJEZlQG6iApb0TbmJBuOy4P2UieH7PDs3WliRSO+lgCV9VqChFt+hvQBsShxBnSODy9R/JX3cFQNs7IgvosaRAYQu/Gz6fdYWJdIL6WgifZZ7R8fo1bKU0PTgnHyNXknfNjvfAMPgg+TQKJbpdeOt2G5xVSK9jwKW9FnusnXh7XdTpmAAVyhgSR936QADA/ig0zShW9OEIudNAUv6JDPgx70ztMDoMXsqmxOHMzEHshMUsKRvy4w3mJgTOqv2E2p0Fzl/CljSJ3n2bsP0uAB4L2UyQcPOnHz9OIgAzM63cTQuk20JQwDwVe0m0NJocVUivYuOKNIndT57UP1XIse7on25hk/6sDBNPJ2ueCAiZ6eAJX2Se9saAIIYvJ8ykTgbXKL1r0SA0FpwduOEPixNE4qcFwUs6XN81ZX4qw8AsD5pFPWOdGbkGSTHKWCJAKQ6DS7KNViXNBqXEQ+Ae8c6zGDQ4spEeg8FLOlz3FtXh7ffSJ0OwJUDFa5EOpuTH7pszsqUCQAEm+rxVe22uCqR3kMBS/qctq2rwttvpk4DYI4ClshxrhkU+pl4O+Wi8H1t7VPrInJ2CljSpwSajoUXTSxPKKQiPp8MJ0zNVcAS6Wx6P4PUOHg3tSNgdb52p4icmQKW9Clt29aAaQLwWkpoevCaQQYOmwKWSGdxNoM5+QZH4rLZkjAUAF9lOYHGOosrE+kdFLCkT3Fv+TC8/UZaKGDNK9CPgcipzC0I/eLxjkaxRM6bjizSZwTdLtzta/nUOrPZnDAc6Og1EZHjXTModIh4J2Vq+L62TpeYEpHTU8CSPsO9fT34fQC8mjwNDIMpOQb9khSwRE6lKNWgJB0+ThzOUXsGAJ6dGzF9XmsLE+kFFLCkz2j76P3w9mtpMwG4tkDhSuRMrhlkwzRsLEsNXfHA9Lrx7N5scVUi0U8BS/qEoNtF2/bQ1EazM4PVyWMBmKeAJXJG4eUaOvVhtXVaS05ETk0BS/oE99bV0D6t8XLaTAKGnex4uEjLM4ic0WUDDOLtoesSeow4ANq2rNSq7iJnoYAlfYKr0/TgcymzAPhUoYFdyzOInFFynMHlAwxa7Um8nzIJCK3q7q0os7gykeimgCUxL+hqCV+otikhi7VJowG4uUjf/iLn4sbBoV9EXm3vXQRo+3ilVeWI9Ao6wkjMa9vyIQT8ALycdgmmYSPJAVdreQaRc3J9YehQ8XbqVHyGA4C2zSsx2xftFZGTKWBJzOs8Pfj35ND04NxBBkkOBSyRczEoxWBSDjTZU1iRPB6AQH0NvspdFlcmEr0UsCSmBRrr8Oz8CIDG5H58lFgCaHpQ5Hzd0D6KtVTThCLnREcZiWmuDe+CGTrb6dmMK8AwcBihBncROXc3DA4dLt5MnU6w/dDR9vEKTROKnIYClsQs0zRpXftW+PZjSbMBuCLfIDNeAUvkfJRmQ0EyHHOks6Z9HTl/7SF8h/ZZXJlIdFLAkpjlq9yF/8gBAKpyx7DfOQCAW4fo217kfBmGER7Fejnt4vD9rg3LrCpJJKrpSCMxq/Po1RPJcwCIs8GtQzR6JdIVnyzX8EraxQQMOwBtG5dp0VGRU1DAkphk+r24Nr4HQNARz9MJod+4ry0wyEpQwBLpisvzDbLjod6RzvupoUVHAw21ePZssbgykeijgCUxqe3jlZiuFgC2DphBiz0JgM8N07e8SFfF2QxuaR8Bfjbt8vD9bZomFDmJjjYSk1pWvBzefjDhGgCSHXD9YI1eiVyIzwz95GzCqbjtiQC4Ni3HbL/Wp4iEKGBJzPEe2ot3X+g6aa7swbwTNwaAm4u0uKjIhbp8gEFOArhtCbyWNgMA092Ku2ytxZWJRBcFLIk5rSteDW+/2G8eGKFQ9fnh+nYXuVAOm8H89oV6n0m7LHx/64Z3rSpJJCrpiCMxJehuxbX+ndANZwK/NC8HoDAFrhqo0SuRSPjM0NDP0srkCTTGZwLg3raWQHODhVWJRBcFLIkprrVvY3rdAOwomk2TLdTc/uViG3abApZIJFw2wCAvEQKGnb+lhRbwJeDHte5tawsTiSIKWBIzzGCA5vefD9++N/5aAAzgSyX6VheJFLvN4Pb2Zven0q8O39+6+nVdOkeknY46EjMC29cRqDsCQHPRZJYFiwCYW2BQmKLRK5FI+mJx6PBREZ/Ptoz2S+fUVOHdu83KskSihgKWxATTNPF/2LE0w//m3hze/opGr0QibmI2jA21X/FI8jXh+1tXvWZRRSLRRUceiQme3ZsJHg5ddDbQfxi/aR0PwOAUuEFrX4lEnGEY4VGs19Jm4namAOD6eDlBV7OVpYlEBQUsiQnNb/89vP1y4S3hpRm+PsaGQ83tIt3i88Nt2Azw2Jy8lHlF6E6fl9a1anYXUcCSXs+zdyuenRsBMLL68wN36LqDKXHwlZH6FhfpLgOSDOYOCv0C80jK3PD9Lctf0gWgpc/T0Ud6vaalfwpvLx95O80BOwBfKraR7tTolUh3Wtg+TVieUMiO3IkABOoOEyjfaGVZIpZTwJJezV3+MZ7dmwEwM/vz9bbLAbAb8M2x+vYW6W43DjboH7okIfcn3RC+37/6dYsqEokOOgJJr2WaJk1Lnwzffrf4M9R6Q6NXnx9uMCxNo1ci3c1pN/jn9qn4d5Mn0ZA2EIDg/jK8B/daWZqIpRSwpNdq+3h5+KLOtrwC/tVzeWjbgHtK7RZWJtK3/PPIULO7adj4Q+b14ftb3nvOwqpErKWAJb2S6fPS+OIfw7ffGvslan1xAHx2mEFxhkavRHpKQYrBDYWhn7lHE2fjj29fsmHDMvzti/+K9DUKWNIrNb/3HIH6GgCM4RO5u24KEOq9+uFEjV6J9LS7RocOJy57Ii/lt49iBQM0v/N/FlYlYh0FLOl1Ag21HeteGTYeKfoKLf7Qb8//PNLGSI1eifS4OQMNRmaEtn/ivJ5AXAIArWveJNBQa11hIhZRwJJexTRN6p95GNPTBoBn8rXce6QQgBSHyc8m61taxAo2w+A740Kjxw2OVN4eNC/0QMBH87vPWFiZiDV0NJJepW3TctxbVwNgS83kzoR/ImiGHvtmiZe8RI1eiVhlwfCOJRu+77wJMy4egJZVSwk01llYmUjPU8CSXiPQ2kTDs78P31477U7erk8GYEQa3DXCa1VpIgIkOIzw+nO1jkzWFLWPYvm8NL3+lIWVifQ8BSzpFUzTpP7vvyXY0hC6PWoGXzw6I/z4H2bZSVBvu4jl7hxlIyV0Qi9fj5sP8UkAtK5+A9+R/RZWJtKzFLCkV2j9cCnuzR8CYCSl8vWcO2lqb2z/crHB5fn6VhaJBhnxBneNCv08HjHSWTbi06EHzCCNrzxuYWUiPUtHJYl6vsMVNLywJHz7nWn/wovHsgAoSIYHpmvoSiSafHeCjWRHqDnyruB1mGnZALi3rsZd/rGVpYn0GAUsiWrB1mZqH/0Z+EL9VQ2TrufLR6cCoRXbn77CTma8GttFoklOgsFXh4d+ZluMBF4Y9vnwYw3P/A7T77OqNJEeo4AlUcsMBKh78t8J1B4GINh/KFcFFxJoP2vwnlIbswboW1gkGt01wktm6CRCvu2dTSC/GAB/9QGadQkd6QN0dJKoZJomDc//D55dm0J3JKfzhUH3cMTnBODaAoOfTNK3r0i0SnfCd8eHfkb92PlF4V1ghG43v/EXXUJHYp6OUBKVml5/itYVr4Ru2B38sPgHvN+WB8CoDPjrbDt2m6YGRaLZv4y1MTh0WUIebR5GzYTrADB9Hur//l+YwaCF1Yl0LwUsiTrN7z1P8xtPh28vKfk6T3pHA5CXCC9d7SDdqXAlEu0SHQYPTOs4CWWh43PY0kMN755dH9Gy/CWrShPpdgpYElWalz1LY6czBh8b/s/80pgNQGY8vHWtg+HpClcivcX8IQaXDwj9zG5pS+alKd8KP9b4ymNaG0tilgKWRAXTNGl87c80vvi/4fv+VPBZfhJ/AxDq53h9rp3x2QpXIr2JYRg8NNOOo/1H9+vVE2ibemPohs9L3ZP3EWy/tqhILFHAEsuZfh8N/3jouGnB/x7wee5J/SwAA5Lgg+scTM3Tt6tIbzQuy+AHE9sb3k1YEPdP2PuFLtLuP1xB/V9/g2maVpYoEnE6YomlAi2NHP2fH9C66rXwfT/p/8/8Kut2MAxGZsCHNzg0ciXSy91TamNcaH1g1jbE8/RFP8Bov4xO26YPaHn3GQurE4k8BSyxjKdiOzW//jrePVsA8BpxfH3gd3gsOzQteEuRwZobHRSlKlyJ9HZOu8Hjlzqwt/84f3ffQCrmfif8eOPLj9K6/h2LqhOJPAUs6XFmMEDTW3/j6EPfIVBfA0CNI5P5RffxQsblxNngV1NtPHOlnTSdLSgSMybnGtx3Ucdh58bKqTDnn8K36//yIG1la60oTSTiFLCkR/mOHODow/9G06tPQPsaOOsSR/GpoQ+yKamE0mxYf5OD706wYxgKVyKx5jvjbVxfGPrZrvPAjb5P45zxqdCDwQB1j/2Ctq2rLKxQJDIUsKRHmD4vja/9mer/vAvv3q0ABLDxm9zb+fSQ+2hMyOHnk22suVH9ViKxzGYYPHGZnaL2BUg31hl8KW0xCaWXhu7w+6h77Be0rnvbuiJFIsBhdQES20zTxL3lQxpefozA0YPh+yucA/hu/tdZnTyOzw0zuH+qnYIUBSuRviArweDVuQ4ufslPgxeWVtn49tBv86DNhnvjexAMUv/0A/gO7SP9ui9j2O1nfU+RaKOAJd3GU7GD+hf/F/++beH7fNh5JOcWHsq9jUkDElg5zcbMfhpIFelrRmcavHi1nauWBvAG4c977XiHfJvfJabQtjJ0mayWZc/iPbCLrM99B0d2f4srFjk/ClgScd79O6l9/S8Et6857v7VSWP40YA7yR48hJcn25iTb6jPSqQPu3SAjf+7Em59O4AvCH/fZ9Aw8A7+dGMh3peXQDCAd88Wqv/jTtI+tZCUS67DsOuwJb2DvlMlYjx7tnJk6V+w79l43P27nQO5t9+XaBs+jYen2JmtYCUi7W4YbOPFq+HmtwJ4AvDGQbgk7Vpe+sIQ0l/4DwINtZheN43PP0Lr8pdIm7uAxNJZGI64bq/NNE3qPbC/Bfa3mNS6ocVn0uqHoAnxdkiwQ06CQUEyFKQYDEyGOF2IXlDAkgtk+r24PlrO4XdfJOHwLjp3Shxy5PC73E/jnngNP5vgZIamAkXkFK4tsPHmtXDLWwHqPFDeBKUbR/Lv8/6HhRWP0/bhUgD8tYc49tSvsL30vyRPu4bECbOIGzg0Yr+w1bpN1tSE/qyuDlJW7SLO1UBS0E286SXe9BFv+gDwGHH4DAdeI44Gewp19nRctgRsNoOR6TApx2BSjsHMfgaTcwwcCl19jmH24PUJNm7cyOTJk9mwYQOTJk3qqS97To4dO0ZWVpbVZfQagcY6ji1/lcaVS0loazjusf1x/fhjv0+TMe1Kvj4hnqFpPfPBon0YG7QfY0NX9mNFs8mNb/rZfKzjvrGZ8FBBOWPWPYF39+aTXmPPzMM5ZDTOwhLi+hVgz+qHPSMHIy4ew9bxS50ZDGL6vARdTQRbGvE2NbC/upHK6gZq6xpoa2wgrq2BXH8D2YFGcvyNJJje86q/zXBy1JHBAWd/9jnz2e8cEPo7dSgjCvOYPdDGdYU2RvSiC9br57HrNIIl58z0e2nbuobqFW9i370BG0ESOj2+NWEozwy4keJZV/DgmDgy43vPh4iIWK8o1WD1jQ5+tD7Ig1uCmMDWephdP4Kx/X7Jj0Zu4+KKVzDLVoXX0QvU19BWX0PbxvdOej8jLh5sNky/DwL+kx5Pb/8TKYmml0JfDYW+Gi5pPT4M1u9MZUvCMB5PGMbR3GIKRo/l6pJMpuYZ2NQyEZMUsOSMzGAQ7/4dNKxbRuuG93B6munc+eDHxmtpM1g77AbmzBjL74fZcNr1YSEiXZPoMHhgup35Qwy+uSrIuqOhSZatDQa3NYzFYCzXTK/nM57VTKpeReaRbdj8px5pMn2e8/76QcOGPyGNuLQMEtLSsaVkYEtMxnA4MeKc8Envl9+H2f4n6Gom2NJAoLmBQGMdZlvLSe+bGWjm0tZNXNq6CeqAHbDHOZD/SRuNbfAYSiaM5eLR+cQ71EoRKxSw5CRmMIi3oozWj5bTuGklcc21ADg7PedgXA4vZs7BO3keC6bk8VUtDioiETSjn401Nxo8V2Hymy1BVlaHgpYJvN6YyetcC+nX4kjzU+Lezzj3bgq91Qzy1ZDrrycp6CEx6MFOAI8Rh8dw4rE5abCncMyeTiApjYzMDPJz0xk6IIMR+ZkkpGdiS07FsF3YulvB1mb8tYfwHz2Ir/oA3srdtB0ox+ZqPO55w7wHGVZ7EGrfgg1Q5sjkUN4YUoePZfykcaQXFl1wLWIdBSwBINDahGfnRlxl62gp24jDVQ9w3GiV23CyNG0mawfNYdr0Uv6txEG6rhUoIt3EMAzmDzGYP8TGpjqTf+wN8mJFkLKGjuf4DQfbEoexLXHYad8nNQ4m5xhMzzOY0c/gplyDfknd99llS07FmVyCc3BJ+D7TNAk21uGtLKd+1zbqdm0jtaYch9kxdZnrryf30Ao4tIKWD6DGkUxL/mj6jxpL9shxOAtG9MjZkxIZClh9VLC1GU9FGd6922je9TFm5S4MQr8hdv6m8BoOPkgu5b3sS8ieOJPbx6Tw9RwtsyAiPas026A02869F9mpc5t8VGeyrd7kiAtq2kz87adrpcYZ5CZAXiIUpxuMzDDIT8LyzyzDMLBn5JCYkUPiuBnkA6bXQ+O+nWzftJW2PVvJr91OSrAt/JokfytJB9YRPLCOo2+A3+7EP3Ak2SVjSBw+DmfRKGzxidb9o+SMFLD6gGBbK75D+/Ad3IP34F5a9m7HdvTAcc/p/NHTaktgZfIE3sqYiTFqOvNHpbKk0CBevVUiEgWyEwyuHGhw5UCrK7kwhjOejJLxzCgZD4DX52fNlr3s2bwV+/4tjGsqIyfQMa3oCHhxHNhM64HNtL71V0wMvJn5JBUMI7lwOM6BQ4kbNBx7aoZF/yLpTAErRgS9bgINte3z/ofw1x7GVXMI75EDxDVWH/fcU7VQ7ogfzHspk1iTMZn+I8dw0/B4/jjIIDlOoUpEpCc44xzMmlTMrEnFBM2b2XA0yF+2VFFdtoWC2m1MdW2j0FcTfr6BSXz9QQL1B2na/EH4fl98Cmb2QJL7DyKx/0AcOQOxZ+VhT8/Bnpalazv2kNMGrPLycr74xS9SW1tLRkYGTzzxBKNHj+7y8+TUzGCw42yUgA/T72+/7SXgacPT2orX5cLX5sLnaiXQ1orP1YK/qQGaj2Fvrcfpqsfpc53y/U81W+/DzrbEoaxLGs36pNEEC0Zz0dAsrhlo8OM8Q2cBiohYzGYYXJRn56I5g2HOYPY1fYplh02e3lONa/dWiuvLGN9WTolnPwnti59+Is7TAod24ju0E98J7xs0bHgSMvCmZBNMycKWlIojOQVncujvuORUnEnJOBMSiIuPJ9jmxh90h9YVi4vHcDrBHmf5lGtvcNqAdccdd7B48WIWLlzIM888w6JFi1i1alWXnxcJ3oN7qX/6AWjvFcLsOKuE8Hqp5nF/he43OeaBJm/oTgMT0wz9Hf4WMYNgGBid3ueTx4wT3rvj28oMP9b5vk++hmGefB+AzQziNH3EBX04CJ7zv9/e/sd5tid20mJLZEf8YMoShlCWMITD6UPILBjCxPxEZuUZfDvXUKO6iEiUG5JmMCTN4MslAzDN/uxqvJK1R01+V+3j8IFKbIf3MMK1l5HuCoZ6DzLQV3vK97GZQRLbjpHYdgyOnvy4v/1P51/Zj5zifQLYCBg2goaNgGEngD28HTQ6tk86ohrGyfe1/20ane83jnuOGT5MGSe89ngDk0N9eOfNZqPfd/77/F93Bqdcyb2mpobi4mJqa2txOByYpsmAAQNYvXo1RUVF5/28T1zoSu6efWUc/a9vn/frYlmTLYmjjkyOOjKodmSz39mf6qQBeNIHQHY+/XKzGJVpMCrTYHSGQW5i7IYprTgcG7QfY4P2Y8/yB012N8GuRpNdjSZ7attorj5C3LEq0poPkeeppb+/jv6+Ovr7j5Hjb8B+Hr/gxzy7g0G/fiWib3nKEazKykry8/NxOEIPG4ZBYWEhBw4cOC44nevzTnT33XeTnp7OLbfcwvz588+52EBLS8cib53ScJhhnPBY+AHcQQNPAEyjI/0ahMaWOhLyJ49x3PuYnce6jkvYHa83OP69O97n+PcGCGLDZwtdx8pnOELb4dtxBOxxBG0O/PZ4PHFJeOOS8DmT8Mcl4Y9PAmcStpR0nKlpJCfFkx4HGU6TyfEm1yUGST1uXrCpY7MNjrURs+rr660uQSJA+zE2aD/2vDwgLxUuSQUGAWQBWZjmeBp8cLjNRrXbYJPXoMkTxNPSjLe99YS2VuK8LcR7WnD6XNgDHux+L3a/h7igl/igl/iAh/igB7sZwG4GsJnB0N8EsJtmx/2E7neYAeCEWZ9PjoztB1rjhBme4+4zzROew0nPPVGc7dR9xmdlt3Ps2LGzP+8MTvyF4rRThCfOr57ukoXn+rzOHn744a5dizBrKjzw8vm/7hzot63YoH0YG7QfY4P2Y/TIBk5eKSzjrK/TsbHrThn0CgoKqKqqwu8PLYBmmiaVlZUUFhZ26XkiIiIifckpA1ZeXh4TJ07kqaeeAuDZZ5+lqKjopGm/c32eiIiISF9y2qnKJUuWsGTJEoqLi7n//vt59NFHw4/NmzeP9evXn/V5IiIiIn3RaXuwSkpKTrvcwtKlS8/peSIiIiJ9UZea7UVERETk9BSw2j377LNWlyAXSPswNmg/xgbtx9ig/dh1CljtnnvuOatLkAukfRgbtB9jg/ZjbNB+7LoevdhzW1tolcvt27f35Jc9J42NjWzcuNHqMuQCaB/GBu3H2KD9GBu0H8/PyJEjSUpKAk5zqZzu8vTTT7NgwYKe+nIiIiIiPabzpQB7NGDV1tbyxhtvUFRURGJiYk99WREREZFuZ9kIloiIiEhfoCZ3ERERkQhTwBIRERGJMAUsERERkQhTwBIRERGJMAWs0/jZz36GYRhs3brV6lLkPLndbm666SaKi4spLS1l7ty5VFRUWF2WnEV5eTkzZ86kuLiYqVOnUlZWZnVJcp70sxd7dCzsOgWsU9i4cSOrV6+msLDQ6lKkixYvXszOnTvZtGkT1113HYsXL7a6JDmLO+64g8WLF7Nr1y6+973vsWjRIqtLki7Qz17s0LHwwihgncDj8fC1r32N3//+9xiGYXU50gUJCQnMmzcvvP+mT5/O3r17La5KzqSmpoaNGzeGFyKeP38++/bt0+hHL6OfvdihY+GFU8A6wY9//GMWLFjAkCFDrC5FIuShhx7i+uuvt7oMOYPKykry8/NxOEJX7zIMg8LCQg4cOGBxZXIh9LPXe+lYeOF69FqEVps1a9Zpr4P40UcfUVVVxbp167j//vt7uDI5H2fbjwUFBeHb9957L+Xl5TzyyCM9VZ500Ym/JWsN5N5NP3u916pVq3QsjIA+FbCWL19+xseffvppduzYEU7sVVVVXHPNNfzxj3/k2muv7YkS5RycbT9+4oEHHuC5557j7bffDl+6QKJTQUEBVVVV+P1+HA4HpmlSWVmp3o9eSj97vdv777+vY2EE6FI5Z1BUVMQrr7zC2LFjrS5FztODDz7I008/zdtvv01mZqbV5cg5uPzyy1m4cCELFy7kmWee4YEHHmD16tVWlyXnST97sUfHwq5RwDoDfVP1TlVVVRQUFDB06FBSU1MBiI+PZ82aNRZXJmeyc+dOFi5cSF1dHWlpaTz55JOMGTPG6rLkPOhnLzbpWNg1ClgiIiIiEaazCEVEREQiTAFLREREJMIUsEREREQiTAFLREREJMIUsEREREQi7P8DtRgrvX0EtywAAAAASUVORK5CYII="
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot(fkde, label=\"LSCV\", lw=2)\n",
"plot!(frot, label=\"Rule of thumb\", lw=2)"
]
},
{
"cell_type": "markdown",
"id": "laden-event",
"metadata": {},
"source": [
"# Further Reading\n",
"This work has been heavily influenced by Artur Gramacki's book \"Nonparametric Kernel Density Estimation and Its Computational Aspects\" "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.6.0",
"language": "julia",
"name": "julia-1.6"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}