Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mvanorder/067c57e73f454aaf6b7e9ce374345113 to your computer and use it in GitHub Desktop.
Save mvanorder/067c57e73f454aaf6b7e9ce374345113 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "southwest-factor",
"metadata": {},
"outputs": [],
"source": [
"from datetime import datetime\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"id": "infinite-mortgage",
"metadata": {},
"source": [
"Source from [Laziness in Python - Computerphile](https://www.youtube.com/watch?v=5jwV3zxXc8E)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "constitutional-synthesis",
"metadata": {},
"outputs": [],
"source": [
"def nats(n):\n",
" yield n\n",
" yield from nats(n + 1)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "concrete-criminal",
"metadata": {},
"outputs": [],
"source": [
"def sieve(iterator):\n",
" n = next(iterator)\n",
" yield n\n",
" yield from sieve(i for i in iterator if i % n)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "automatic-scoop",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 1000\n",
" 1010\n",
" 1020\n",
" 1030\n",
" 1040\n",
" 1050\n",
" 1060\n",
" 1070\n",
" 1080\n",
" 1090\n",
" 1100\n",
" 1110\n",
" 1120\n",
" 1130\n",
" 1140\n",
" 1150\n",
" 1160\n",
" 1170\n",
" 1180\n",
" 1190\n",
" 1200\n",
" 1210\n",
" 1220\n",
" 1230\n",
" 1240\n",
" 1250\n",
" 1260\n",
" 1270\n",
" 1280\n",
" 1290\n",
" 1300\n",
" 1310\n",
" 1320\n",
"RecursionError: 330\n"
]
}
],
"source": [
"r = []\n",
"g = sieve(nats(2))\n",
"prev = datetime.now()\n",
"for iters in range(0, 340, 10):\n",
" try:\n",
" for n in range(10):\n",
" p = next(g)\n",
"# print(f'p: {p}')\n",
" except RecursionError:\n",
" print(f\"RecursionError: {iters}\")\n",
" break\n",
" r.append((iters + 1000, prev, (prev := datetime.now())))\n",
" print(f'{iters + 1000:5}')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "subtle-footage",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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f1P+6roF2b73YH7r3LFpailT26Wo9LR2T7wCAAAAAAB4HjbsOpA//9HjuXXxlswY3iffeddpmTG8rtKzOgyPDayQMWPGZNu2bU/72q5du/L1r3/9ybc3bNiQ17/+9SdqGgAAAAAA8DRaWst8566Vufhvf5G7l2/Px6+Ymh994Bzh6hh7znhVFMXVRVFsKYri8Wd4/a1FUcwrimJ+URR3F0Vx0rGfWRllWaa19cQfsPab8WrYsGH5wQ9+cMJ3AAAAAAAAhy3csDtXfv2ufOK6hZkzpn9+9ocvyXvPG5cu1e4TOtaO5rGB1yT5+yTffYbXVyY5vyzLnUVRXJbkG0nOeNHLbvpIsmn+i/4wv2bIzOSyzz3rJatWrcoll1ySM844Iw899FBOP/30PPDAAymKIh//+Mfzpje9Kbfffnu++MUv5vrrr0+SfOhDH8qcOXPyrne9K2PGjMk73/nOXHfddWlqasr3v//9TJkyJdu3b89VV12V9evX56yzznrWQ9s+8pGPZPny5Tn55JNz8cUX54Mf/GBe8YpX5PHHH88111yTH/3oR9m3b1+WLl2aP/7jP86hQ4fyr//6r+natWtuvPHG9O/fP8uXL88HP/jBbN26NT169Mg3v/nNTJky5Zj+7QQAAAAAgI6usaklf3fL0nzzzhXp16MmX71qdl45a2iKwtlWx8tz5sCyLO9IsuNZXr+7LMudR968N8mIY7StYpYuXZoPfOAD+eQnP5l169blscceyy233JIPf/jD2bhx43P++AEDBuThhx/O7/7u7+aLX/xikuQTn/hEzj333CxYsCCvfe1rs2bNmmf88Z/73Ocyfvz4PProo/nCF77wv15//PHHc+211+aBBx7Ixz72sfTo0SOPPPJIzjrrrHz3u4cb4/vf//587Wtfy0MPPZQvfvGL+cAHPvAC/24AAAAAAEDnNHfptlzyd3fkn36xPK87ZXhu+aPz86qThglXx9nR3Hn1fPxWkpue6cWiKN6f5P1JMmrUqGf/SM9xh9TxNHr06Jx55pn5wz/8w1x11VWprq7O4MGDc/755+eBBx5Inz59nvXHX3nllUmSU089Nddee22S5I477njy+1dccUX69ev3gvddcMEF6d27d3r37p26urq88pWvTJLMnDkz8+bNy969e3P33XfnDW94w5M/5uDBgy/48wEAAAAAQGeyY9+hfPr6hbn2kfUZO6Bnvve+M3L2+AGVntVpHLN4VRTFBTkcr859pmvKsvxGDj9WMHPmzHnm5+ZVWM+ePZ/19S5duvzaWViNjY2/9nrXrl2TJNXV1Wlubj7m+3758ZOkqqrqyberqqrS3Nyc1tbW9O3bN48++ugx/9wAAAAAANBRlWWZHz6yPp+6fmH2NDbn9142IR+8YEK61VRXelqnckxOESuKYlaSbyV5dVmW24/Fx2wLzjvvvPzXf/1XWlpasnXr1txxxx05/fTTM3r06CxcuDAHDx7Mrl27cuuttz7nx3rJS16S733ve0mSm266KTt37nzGa3v37p09e/a84N19+vTJ2LFj8/3vfz/J4X/ZHnvssRf88QAAAAAAoKNbvX1f3v7t+/NH//1Yxg7omRt+/7z835dPFq4q4EXfeVUUxagk1yZ5e1mWS178pLbjta99be65556cdNJJKYoin//85zNkyJAkyRvf+MbMmDEjY8eOzezZs5/zY/3lX/5lrrrqqkyfPj1nn332sz42sb6+Puecc05mzJiRyy67LB/84Aef9/Z///d/z+/+7u/m05/+dJqamvLmN785J5100vP+OAAAAAAA0JE1tbTmW3euzN/dsiQ11VX51Gtm5K2nj0pVlXOtKqUoy2d/el9RFP+R5KVJBiTZnOQvk9QkSVmW/1QUxbeSvC7J6iM/pLksyznP9YnnzJlTPvjgg7/2vkWLFmXq1KnP8y+BF8PfcwAAAAAAOqtH1+7KR/5nXhZv2pNLpg/OJ141I0PqulV6VqdQFMVDz9STnvPOq7Isr3qO19+b5L0vcBsAAAAAAMAJtfdgc770sydyzd2rMqh31/zT207NpTOGVHoWR7zoxwbywm3fvj0XXnjh/3r/rbfemvr6+gosAgAAAACAju3WRZvz5z96PBt3N+btZ47Ohy+ZnN7daio9i6doc/GqLMsURed4jmR9fX0effTRin3+53pkJAAAAAAAdBRbdjfmE9ctzA3zN2bS4F75wVvOzqmj+1V6Fk+jTcWrbt26Zfv27amvr+80AatSyrLM9u3b062bZ3cCAAAAANBxtbaW+c8H1uazNy3KwebW/PHLJ+X9Lxmf2i5VlZ7GM2hT8WrEiBFZt25dtm7dWukpnUK3bt0yYsSISs8AAAAAAIDjYtmWPfnotfPzwKqdOWtcfT7z2hkZN7BXpWfxHNpUvKqpqcnYsWMrPQMAAAAAAGjHDja35B9vX56v/3x5utdW5/Ovn5U3nDrCU9/aiTYVrwAAAAAAAF6M+1fuyEevnZflW/fl1ScPy5+/YloG9Opa6Vk8D+IVAAAAAADQ7jUcaMrnblqc/7h/TUb0655r3n1aXjp5UKVn8QKIVwAAAAAAQLtVlmVunL8pf3XdgmzfezDvO29s/vDiSelRK4G0V/6fAwAAAAAA2qUNuw7kz3/0eG5dvCUzhvfJd951WmYMr6v0LF4k8QoAAAAAAGhXWlrL/Mvdq/Klnz2R1jL5+BVT866zx6RLdVWlp3EMiFcAAAAAAEC7sXDD7nz02nl5bF1Dzp80MJ9+zYyM7N+j0rM4hsQrAAAAAACgzTtwqCVfuXVpvnnnivTrUZOvXjU7r5w1NEVRVHoax5h4BQAAAAAAtGl3Lt2aj/3w8azZsT9vmjMyH718Svr2qK30LI4T8QoAAAAAAGiTtu89mM/csCjXPrI+4wb0zH+878ycNb6+0rM4zsQrAAAAAACgTSnLMtc+vD6fvmFh9jQ25/deNiEfvGBCutVUV3oaJ4B4BQAAAAAAtBmrt+/Lx374eOYu25ZTRvXNZ6+clclDeld6FieQeAUAAAAAAFRcU0trvnXnyvzdLUtSW12VT71mRt56+qhUVRWVnsYJJl4BAAAAAAAVdfeybfnk9QuzeNOeXDp9SP7qVdMzpK5bpWdRIeIVAAAAAABQEYs37c7nblqc25/YmuF9u+ef335qLpk+pNKzqDDxCgAAAAAAOKE2NhzI3/5sSX7w8Lr07tolf3b5lLzjrDHpVlNd6Wm0AeIVAAAAAABwQuxubMo/3r48V89dmbJM3nfeuHzgpePTt0dtpafRhohXAAAAAADAcXWwuSX/fu+afO22pdm5vymvnT08f3TxpIzs36PS02iDxCsAAAAAAOC4aG0tc8P8jfn8Txdn7Y4DOWdCfT562dTMGF5X6Wm0YeIVAAAAAABwzN2zfHs+e9OizFvXkClDeudf3nN6XjJxQIqiqPQ02jjxCgAAAAAAOGae2LQnf/OTxblt8ZYMq+uWL73hpLxm9vBUV4lWHB3xCgAAAAAAeNE2NTTmb29+Ij94aF16du2Sj1w2Je86e0y61VRXehrtjHgFAAAAAAC8YLsbm/LPv1ieb89dmdbW5N3njM2HLpiQfj1rKz2Ndkq8AgAAAAAAnrdDza353n2r89XblmXHvkN59cnD8scvn5yR/XtUehrtnHgFAAAAAAActbIsc8P8jfnCT5/I6u37c/b4+nz0sqmZOaKu0tPoIMQrAAAAAADgqNy7Yns+e9PiPLZ2V6YM6Z1r3n1azp80MEVRVHoaHYh4BQAAAAAAPKslm/fkb25anFsXb8mQPt3yhdfPypWnjEh1lWjFsSdeAQAAAAAAT2vz7sZ8+eYl+e8H16ZnbZf8yaWT855zxqZbTXWlp9GBiVcAAAAAAMCv2dPYlG/csSLfvHNFWlrLvOvssfnQyyakf8/aSk+jExCvAAAAAACAJMmh5tb8x/1r8tVbl2b7vkN55UnD8uGXT86o+h6VnkYnIl4BAAAAAEAnV5Zlbnp8Uz7/k8VZtX1/zhzXP1dfNjUnjexb6Wl0QuIVAAAAAAB0Yvev3JG/vnFRHl27K5MG98p33nVaXjp5YIqiqPQ0OinxCgAAAAAAOqFlW/bkb37yRG5euDmD+3TN5183K687dUSqq0QrKku8AgAAAACATmTL7sZ8+Zal+a8H1qRHbZd8+JLJec85Y9O9trrS0yCJeAUAAAAAAJ3C3oPN+cYdK/LNO1akqaU17zhrTH7vZRNS36trpafBrxGvAAAAAACgA2tqac1/3r8mX7l1abbtPZQrZg3Nh18+OWMG9Kz0NHha4hUAAAAAAHRAZVnmpws25fM/eSIrtu3L6WP755vvmJLZo/pVeho8K/EKAAAAAAA6mAdX7chf37goD6/ZlQmDeuVb75iTC6cOSlEUlZ4Gz0m8AgAAAACADmLZlr35/E8W52cLN2dQ76753JUz8/pTR6RLdVWlp8FRE68AAAAAAKCdW7VtX/7pF8vz/YfWpVuXqvzfiyflt84bmx61MgDtj39qAQAAAACgnVqwoSFfv315bpq/MV2qq/K2M0bl9y6cmAG9ulZ6Grxg4hUAAAAAALQjZVnm/pU78vXbl+cXS7amV9cuef9Lxuc9547JoN7dKj0PXjTxCgAAAAAA2oGyLHPb4i35+u3L89DqnanvWZsPXzI5bztzdOq611R6Hhwz4hUAAAAAALRhzS2tuWH+xvzj7cuzeNOeDO/bPZ941fS8cc7IdK+trvQ8OObEKwAAAAAAaIMam1ryg4fW5Rt3rMiaHfszYVCvfOkNJ+VVJw9LTXVVpefBcSNeAQAAAABAG7KnsSn/du+afHvuymzbezAnjeybj10xNRdPHZyqqqLS8+C4E68AAAAAAKAN2Lb3YL5z18p8957V2dPYnHMnDMgHXnpyzhpfn6IQreg8xCsAAAAAAKigdTv355t3rMh/PrA2h1pac+n0Ifndl47PrBF9Kz0NKkK8AgAAAACACli6eU/+8fbl+X+PbUiR5LWzh+e3zx+fCYN6VXoaVJR4BQAAAAAAJ9Aja3bm67cvz80LN6d7TXXecdbovO+8cRnWt3ulp0GbIF4BAAAAAMBxVpZl5i7blq//fHnuWbE9dd1r8vsXTsy7zh6T/j1rKz0P2hTxCgAAAAAAjpPW1jI/XbApX799eeavb8ig3l3zscun5qozRqVXV1+ih6fj3wwAAAAAADjGDjW35kePrs8//WJ5VmzdlzH1PfLZK2fmylOGp2uX6krPgzZNvAIAAAAAgGNk/6Hm/Of9a/PNO1dkY0Njpg3tk69dNTuXzxya6qqi0vOgXRCvAAAAAADgRdq1/1D+5e7Vuebuldm5vymnj+2fz145M+dPGpiiEK3g+RCvAAAAAADgBdq8uzHfunNFvnffmuw71JILpwzKBy4Yn1NH96/0NGi3xCsAAAAAAHieVm7bl2/csTz/89D6NLe25pUnDcvvvnR8pgzpU+lp0O6JVwAAAAAAcJQWbGjI129fnpvmb0yX6qq8Yc6I/PZLxmdUfY9KT4MOQ7wCAAAAAIBnUZZl7l+5I1+/fXl+sWRrenXtkve/ZHzec+6YDOrdrdLzoMMRrwAAAAAA4GmUZZnbFm/J129fnodW70x9z9p8+JLJeduZo1PXvabS86DDEq8AAAAAAOApmltac8P8jfnH25dn8aY9Gd63ez7xqul545yR6V5bXel50OGJVwAAAAAAkKSppTX/9cDafOOOFVmzY38mDuqVv33jSXnlScNSU11V6XnQaYhXAAAAAAB0eo+t3ZU//Z95WbxpT04e2Tcfv2JqLpo6OFVVRaWnQacjXgEAAAAA0GntP9ScL/1sSb5z18oM7N0133j7qbl42uAUhWgFlSJeAQAAAADQKd2xZGv+7Ifzs27ngbztzFH5k0unpE+3mkrPgk5PvAIAAAAAoFPZue9QPnXDwlz78PqMG9gz3/+ds3LamP6VngUcIV4BAAAAANAplGWZHz+2IZ+8bmEaDjTl9142IR+8YEK61VRXehrwFOIVAAAAAAAd3vpdB/LnP3o8ty3ekpNG9s2/v25mpgzpU+lZwNN4znhVFMXVSV6RZEtZljOe5vUiyVeSXJ5kf5J3lWX58LEeCgAAAAAAz1dLa5l/u3d1Pv+TxWktk794xbS88+wxqa4qKj0NeAZHc+fVNUn+Psl3n+H1y5JMPPK/M5L845FvAQAAAACgYpZs3pOP/M+8PLxmV14yaWA+85oZGdm/R6VnAc/hOeNVWZZ3FEUx5lkueXWS75ZlWSa5tyiKvkVRDC3LcuOxGgkAAAAAAEfrYHNLvv7z5fn67cvSq2uXfPlNJ+U1Jw/P4QeJAW3dsTjzaniStU95e92R9/2veFUUxfuTvD9JRo0adQw+NQAAAAAA/MpDq3fmI/8zL0u37M2rTx6Wv3jFtNT36lrpWcDzcCzi1VEry/IbSb6RJHPmzClP5OcGAAAAAKDj2nuwOV/4yeJ8997VGVbXPd9592m5YPKgSs8CXoBjEa/WJxn5lLdHHHkfAAAAAAAcd7ct3pyP//DxbNzdmHeeNSYfvmRyenY9ofduAMfQsfi398dJPlQUxX8mOSNJg/OuAAAAAAA43rbtPZhPXrcwP35sQyYN7pX/eevZOWVUv0rPAl6k54xXRVH8R5KXJhlQFMW6JH+ZpCZJyrL8pyQ3Jrk8ybIk+5O8+3iNBQAAAACAsixz7cPr86kbFmb/wZb80cWT8jvnj09tl6pKTwOOgeeMV2VZXvUcr5dJPnjMFgEAAAAAwDNYu2N//uyH83Pn0m05dXS/fO7KmZk4uHelZwHHkId+AgAAAADQ5rW0lvnOXSvzpZ8tSVWRfOrV0/PWM0anqqqo9DTgGBOvAAAAAABo0xZt3J2P/M+8PLauIRdOGZRPvWZGhvXtXulZwHEiXgEAAAAA0CY1NrXka7ctzT//YkXqutfka1fNzitmDU1RuNsKOjLxCgAAAACANue+Fdvz0WvnZ8W2fXn9qSPyscunpl/P2krPAk4A8QoAAAAAgDZjd2NTPnfT4nzvvjUZ2b97/u23zsi5EwdUehZwAolXAAAAAAC0CT9dsCl/8f8ez9Y9B/P+l4zLH1w0MT1qfRkbOhv/1gMAAAAAUFFbdjfmL3+8IDc9vilTh/bJN98xJ7NG9K30LKBCxCsAAAAAACqiLMv894Nr85kbFqWxuTV/cunkvO+8camprqr0NKCCxCsAAAAAAE64Vdv25aPXzs89K7bnjLH989krZ2bcwF6VngW0AeIVAAAAAAAnTHNLa75558r83S1LUtulKp+9cmbeNGdkqqqKSk8D2gjxCgAAAACAE+Lx9Q350/+ZlwUbdueS6YPzyVfPyOA+3So9C2hjxCsAAAAAAI6rA4da8ne3LMm35q5Mfc/a/NPbTsmlM4ZWehbQRolXAAAAAAAcN3ct25aPXjs/a3bsz1Wnj8xHLpuauu41lZ4FtGHiFQAAAAAAx9yu/YfymRsW5fsPrcvYAT3zH+87M2eNr6/0LKAdEK8AAAAAADhmyrLMjfM35S9/vCA79x/KB146Pr9/4cR0q6mu9DSgnRCvAAAAAAA4Juava8iXbn4itz+xNTOH1+Vf3nNapg+rq/QsoJ0RrwAAAAAAeFEeW7srX7l1aW5bvCV13Wvyscun5t3njEmX6qpKTwPaIfEKAAAAAIAX5JE1O/OVW5fm9ie2pm+PmvzxyyflnWePSe9uNZWeBrRj4hUAAAAAAM/LQ6sPR6s7lmxNvx41+fAlk/POs8ekV1dfcgZePD+TAAAAAABwVB5ctSNfuXVp7ly6Lf171uZPL52Sd5w1Oj1FK+AY8jMKAAAAAADP6v6VO/KVW5fkrmXbU9+zNh+9bEredqZoBRwffmYBAAAAAOBp3btie75yy9Lcs2J7BvSqzccun5q3njkqPWp9aRk4fvwMAwAAAADAk8qyzD1HotV9K3dkYO+u+fgVU/PWM0ane211pecBnYB4BQAAAABAyrLM3csPR6v7V+3IoN5d85evnJarTh+VbjWiFXDiiFcAAAAAAJ1YWZaZu2xbvnLL0jy4emeG9OmWT7xqet502kjRCqgI8QoAAAAAoBMqyzJ3LN2Wr9yyJA+v2ZWhdd3yqVdPzxvmiFZAZYlXAAAAAACdSFmWuX3J1nzllqV5dO2uDKvrlk+/ZkbeMGdEunYRrYDKE68AAAAAADqBsizz8ye25Cu3LM1j6xoyvG/3/PVrZ+b1p45IbZeqSs8DeJJ4BQAAAADQgZVlmVsXbclXb1uaeesaMqJf93zuypm58hTRCmibxCsAAAAAgA6oLMv8bOHmfPXWpVmwYXdG9e+Rz79uVl57yvDUVItWQNslXgEAAAAAdCCtrWV+tnBTvnLrsizauDuj63vkC6+fldfMFq2A9kG8AgAAAADoAFpby/xkwaZ89dalWbxpT8YO6JkvveGkvPrkYekiWgHtiHgFAAAAANCOtbaWufHxjfnarcvyxOY9GTegZ778ppPyylmiFdA+iVcAAAAAAO1QS2uZG+ZvzNduXZqlW/Zm/MCe+cqbT84rZg1LdVVR6XkAL5h4BQAAAADQjrS0lrl+3oZ87bZlWbZlbyYO6pWvXjU7V8wcKloBHYJ4BQAAAADQDjS3tOa6I9FqxdZ9mTS4V/7+LbNz+YyhqRKtgA5EvAIAAAAAaMOaW1rz/x7dkL//+bKs3LYvU4b0ztffekounT5EtAI6JPEKAAAAAKANam5pzQ8fWZ9/+PmyrNq+P1OH9sk/ve2UvHyaaAV0bOIVAAAAAEAb0tzSmmsfXp+///myrNmxP9OH9ck/v/3UXDx1sGgFdAriFQAAAABAG/HzJ7bkMzcsyrItezNjeJ988x1zctHUQSkK0QroPMQrAAAAAIAKW7J5Tz59w6LcsWRrxtT3yD+//dS8fNpg0QrolMQrAAAAAIAK2b73YP725iX5j/vXpFfXLvn4FVPzjrPGpLZLVaWnAVSMeAUAAAAAcIIdbG7Jv9y9Kl+7dVn2N7Xk7WeOzv+5aFL696yt9DSAihOvAAAAAABOkLIs89MFm/LZmxZn9fb9uWDywHzsiqmZMKh3pacBtBniFQAAAADACfD4+oZ86vqFuW/ljkwc1Cv/8p7Tc/6kgZWeBdDmiFcAAAAAAMfR5t2N+cJPn8j/PLwu/XrU5lOvmZGrThuZLtXOtQJ4OuIVAAAAAMBxcOBQS75554r80y+Wp6mlNe87b1w+eMGE1HWvqfQ0gDZNvAIAAAAAOIbKssyPH9uQv7lpcTY0NObS6UPy0cunZHR9z0pPA2gXxCsAAAAAgGPkodU786nrF+bRtbsyfVif/O2bTs6Z4+orPQugXRGvAAAAAABepHU79+dzNy3O9fM2ZlDvrvnC62fldaeMSFVVUelpAO2OeAUAAAAA8ALtPdicf7x9Wb5558oUSX7/ZRPy2+ePT8+uvvQK8EL5GRQAAAAA4HlqaS3zg4fW5os/W5Ktew7mNScPy59cOiXD+nav9DSAdk+8AgAAAAB4Hu5evi2fvn5RFm7cnVNG9c033n5qZo/qV+lZAB2GeAUAAAAAcBRWbtuXv75xUW5euDnD+3bPV6+anVfOGpqicK4VwLEkXgEAAAAAPIuG/U356m1L8917VqW2uiofvmRyfuvcselWU13paQAdkngFAAAAAPA0mlta87371+TLNy/JrgNNeeOpI/N/L5mUQb27VXoaQIcmXgEAAAAA/IafP7Eln7lhUZZt2ZuzxtXn46+YmunD6io9C6BTEK8AAAAAAI5YsnlPPn3DotyxZGvG1PfIN95+ai6eNti5VgAnkHgFAAAAAHR62/cezJdvWZLv3bcmvbp2ycevmJp3nDUmtV2qKj0NoNMRrwAAAACATutgc0v+5e5V+dpty7L/UEvefubo/J+LJqV/z9pKTwPotMQrAAAAAKDTKcsyP12wKZ+9aXFWb9+fCyYPzMeumJoJg3pXehpApydeAQAAAACdyuPrG/Kp6xfmvpU7MnFQr/zLe07P+ZMGVnoWAEeIVwAAAABAp7B5d2O+8NMn8j8Pr0u/HrX51Gtm5KrTRqZLtXOtANoS8QoAAAAA6NAam1ryzTtW5B9/sTxNLa1533nj8sELJqSue02lpwHwNMQrAAAAAKBDKssyP35sQ/7mpsXZ0NCYS6cPyUcvn5LR9T0rPQ2AZyFeAQAAAAAdzsNrduaT1y3Mo2t3ZfqwPvnbN52cM8fVV3oWAEdBvAIAAAAAOoyGA035m58szvfuW5NBvbvmC6+fldedMiJVVUWlpwFwlMQrAAAAAKDdK8syN87flL+6bkG27z2Y9547Nn948aT07OpLoADtjZ+5AQAAAIB2bf2uA/mLHz2eWxdvyYzhfXL1O0/LzBF1lZ4FwAskXgEAAAAA7VJLa5lr7l6VL/3siZRl8vErpuZdZ49Jl+qqSk8D4EUQrwAAAACAdufx9Q356LXzM399Qy6YPDCffPWMjOzfo9KzADgGxCsAAAAAoN3Yf6g5X755Sa6+a1X69ajN379ldq6YOTRFUVR6GgDHiHgFAAAAALQLP39iSz7+w8ezfteBXHX6yHzk0qmp61FT6VkAHGNHFa+Korg0yVeSVCf5VlmWn/uN10cl+ZckfY9c85GyLG88tlMBAAAAgM5o656D+eT1C3PdYxsyfmDP/Pdvn5XTx/av9CwAjpPnjFdFUVQn+YckFydZl+SBoih+XJblwqdc9vEk/12W5T8WRTEtyY1JxhyHvQAAAABAJ1GWZf77wbX5zA2L0tjUmj+4aGJ+96Xj07VLdaWnAXAcHc2dV6cnWVaW5YokKYriP5O8OslT41WZpM+R79cl2XAsRwIAAAAAncuyLXvzZz+cn/tX7sjpY/vnr187MxMG9ar0LABOgKOJV8OTrH3K2+uSnPEb1/xVkp8VRfF7SXomuejpPlBRFO9P8v4kGTVq1PPdCgAAAAB0cAebW/KPty/P13++PN1qqvI3r5uZN5w6MlVVRaWnAXCCHNWZV0fhqiTXlGX5paIozkryr0VRzCjLsvWpF5Vl+Y0k30iSOXPmlMfocwMAAAAAHcD9K3fko9fOy/Kt+/Kqk4blz18xLQN7d630LABOsKOJV+uTjHzK2yOOvO+pfivJpUlSluU9RVF0SzIgyZZjMRIAAAAA6Lga9jflcz9ZlP+4f22G9+2e77z7tFwweVClZwFQIUcTrx5IMrEoirE5HK3enOQtv3HNmiQXJrmmKIqpSbol2XoshwIAAAAAHUtZlrl+3sZ84rqF2bHvYN7/knH5g4smpkftsXpgFADt0XP+KlCWZXNRFB9K8tMk1UmuLstyQVEUn0zyYFmWP07yf5N8syiKP0xSJnlXWZYeCwgAAAAAPK11O/fnz3/0eH7+xNbMHF6Xa959WmYMr6v0LADagKP6IwxlWd6Y5MbfeN9fPOX7C5Occ2ynAQAAAAAdTXNLa665e1W+9LMlKYrkz18xLe88a3S6VFdVehoAbYT7bwEAAACAE+Lx9Q35yLXz8vj63XnZlEH55KunZ0S/HpWeBUAbI14BAAAAAMfVvoPN+fLNS3L1XSvTv2fX/MNbTsnlM4ekKIpKTwOgDRKvAAAAAIDj5ueLt+TjP3o863cdyFvOGJU/vXRK6rrXVHoWAG2YeAUAAAAAHHNb9jTmk9ctzPXzNmbCoF75/u+cldPG9K/0LADaAfEKAAAAADhmWlvL/NeDa/PZGxelsak1f3TxpPz2+ePStUt1pacB0E6IVwAAAADAMbFsy5782bWP5/5VO3LG2P756ytnZvzAXpWeBUA7I14BAAAAAC/KweaWfP3ny/P125elR22XfP51s/KGOSNSFEWlpwHQDolXAAAAAMALdt+K7fnoD+dnxdZ9efXJw/Lnr5iWAb26VnoWAO2YeAUAAAAAPG8N+5vy2ZsW5T8fWJsR/brnmneflpdOHlTpWQB0AOIVAAAAAHDUyrLMdfM25pPXLcjO/U357ZeMy/+5aGJ61PpSIwDHhl9RAAAAAICjsnbH/nz8R4/nF0u2ZtaIuvzLe07P9GF1lZ4FQAcjXgEAAAAAz6q5pTVX37UyX755aYoi+YtXTMs7zx6T6qqi0tMA6IDEKwAAAADgGc1btysfvXZ+FmzYnQunDMonXzMjw/t2r/QsADow8QoAAAAA+F/2NDbl725Zmu/ctTL1vbrm6289JZfNGJKicLcVAMeXeAUAAAAAPGntjv255u5V+e8H1mbPwea89YxR+ZNLp6Sue02lpwHQSYhXAAAAANDJlWWZB1fvzLfvXJmfLdyUqqLI5TOH5n3njcvMEXWVngdAJyNeAQAAAEAndai5NTfO35ir71qZeesaUte9Jr99/vi846zRGVrnXCsAKkO8AgAAAIBOZue+Q/ne/Wvy3XtWZfPugxk3sGc+/ZoZufKU4elR60uGAFSWX4kAAAAAoJNYtmVPvj13VX74yLo0NrXmvIkD8rnXzcr5Ewemqqqo9DwASCJeAQAAAECHVpZl7li6LVfPXZlfLNma2i5VuXL28Lz7nLGZPKR3pecBwP8iXgEAAABAB9TY1JJrH16f79y1Mku37M3A3l3zfy+elLecMSr1vbpWeh4APCPxCgAAAAA6kM27G/Ov96zOv9+3Ojv3N2X6sD752zeelCtmDU3XLtWVngcAz0m8AgAAAIAOYP66hlx918pcP29DmlvLXDx1cN5z7ticMbZ/isJ5VgC0H+IVAAAAALRTLa1lbl64KVfPXZX7V+1Iz9rqvPWM0Xn3OWMyur5npecBwAsiXgEAAABAO7OnsSn/9cDaXHP3qqzbeSDD+3bPx6+YmjeeNjJ9utVUeh4AvCjiFQAAAAC0E2u27881d6/Kfz+4NnsPNmfO6H752OVTc/G0welSXVXpeQBwTIhXAAAAANCGlWWZ+1fuyNV3rczNCzenqihyxayhec85Y3PSyL6VngcAx5x4BQAAAABt0KHm1twwf0O+PXdlHl+/O3171OR3zh+fd5w1JkPqulV6HgAcN+IVAAAAALQhO/YdyvfuW53v3rM6W/YczPiBPfOZ187IlbNHpHttdaXnAcBxJ14BAAAAQBuwdPOeXH3Xylz78PocbG7NeRMH5G9ePyvnTxyYqqqi0vMA4IQRrwAAAACgQsqyzC+WbM23567MnUu3pbZLVa6cPTzvOXdsJg3uXel5AFAR4hUAAAAAnGAHDrXk2kfW5Tt3rcqyLXszsHfX/N+LJ+UtZ4xKfa+ulZ4HABUlXgEAAADACbKpoTHfvWdVvnf/muza35Tpw/rkb994Ul4xa1hqu1RVeh4AtAniFQAAAAAcZ/PW7crVc1fm+nkb01KWuXjq4PzWuWNz+tj+KQrnWQHAU4lXAAAAAHAclGWZny7YnG/PXZEHVu1Mz9rqvP2s0Xn32WMzqr5HpecBQJslXgEAAADAMTZ/XUM+cd2CPLh6Z0b0656PXzE1bzxtZPp0q6n0NABo88QrAAAAADhGtuxpzBd/+kS+/9C69O9Rm89eOTNvOHVEulQ7zwoAjpZ4BQAAAAAv0sHmllxz16p87bZlOdjckvedNy4fetkEd1oBwAsgXgEAAADAC1SWZW5dtCWfvmFhVm3fnwunDMrHrpiacQN7VXoaALRb4hUAAAAAvABLN+/JJ69fmDuXbsv4gT1zzbtPy0snD6r0LABo98QrAAAAAHgedu0/lL+7ZWn+9d7V6VFbnb94xbS8/azRqXGuFQAcE+IVAAAAAByF5pbW/Mf9a/Klm5dk94GmXHX6qPzRxZNS36trpacBQIciXgEAAADAc7h72bZ84rqFeWLznpw5rn/+4hXTM21Yn0rPAoAOSbwCAAAAgGewZvv+fObGhfnpgs0Z0a97/vGtp+TSGUNSFEWlpwFAhyVeAQAAAMBv2HuwOV//+bJ8686Vqa4q8scvn5T3njcu3WqqKz0NADo88QoAAAAAjmhtLfPDR9bnb36yOFv2HMyVs4fnTy6dkiF13So9DQA6DfEKAAAAAJI8vGZnPnHdwjy2dldOGtk3//T2U3PKqH6VngUAnY54BQAAAECntqmhMZ//yeJc+8j6DOzdNV96w0l57ezhqapyrhUAVIJ4BQAAAECn1NjUkm/PXZl/+PmyNLeU+cBLx+cDF0xIr66+ZAYAleRXYgAAAAA6lbIs85PHN+UzNy7Kup0Hcsn0wfnY5dMyqr5HpacBABGvAAAAAOhEFm3cnU9ctyD3rtiRyYN759/fe0bOmTCg0rMAgKcQrwAAAADo8HbsO5Qv/eyJ/Mf9a9Kne00+9erpuer0UelSXVXpaQDAbxCvAAAAAOiwmlpa86/3rM7f3bIk+w615B1njckfXDQxfXvUVnoaAPAMxCsAAAAAOqRfLNmaT163IMu37st5Ewfkz18xLZMG9670LADgOYhXAAAAAHQoK7buzWduWJRbF2/J6Poe+eY75uSiqYNSFEWlpwEAR0G8AgAAAKBD2N3YlL+/bVm+c9fKdO1SnY9eNiXvOmdMunaprvQ0AOB5EK8AAAAAaNdaWsv84KG1+cJPn8j2fYfyhlNH5I8vmZxBvbtVehoA8AKIVwAAAAC0Ww+s2pFPXLcgj6/fnVNH98vV7zots0b0rfQsAOBFEK8AAAAAaHfW7zqQz964KNfP25ihdd3ylTefnFedNMy5VgDQAYhXAAAAALQbBw615J/vWJ5/+sXylGXy+xdOzO+cPy49an2ZCwA6Cr+qAwAAANDmlWWZ6+dtzGdvXJQNDY25YtbQfPSyKRnRr0elpwEAx5h4BQAAAECb9vj6hnziugV5YNXOTB/WJ3/35tk5fWz/Ss8CAI4T8QoAAACANmn+uoZ8a+6K/PixDenfozafu3Jm3jBnZKqrnGsFAB2ZeAUAAABAm9HaWubWxVvyrTtX5L6VO9Kra5e8/7xx+eDLJqRPt5pKzwMATgDxCgAAAICK23+oOT94aF2unrsyq7bvz/C+3fPxK6bmjaeNFK0AoJMRrwAAAAComE0NjfmXe1ble/etScOBppw0sm/+/pLJuXT6kHSprqr0PACgAsQrAAAAAE64x9c35NtzV+a6xzaktSxzyfQhee95Y3PKqH4pCmdaAUBnJl4BAAAAcEK0tpa5bfGWfGvuity7Ykd61lbnHWeNybvPGZOR/XtUeh4A0EaIVwAAAAAcV/sPNed/HlqXq+9alZXb9mVYXbd87PKpedPpzrMCAP438QoAAACA42Lz7sb8y92r8u+/PM9qRF2+dtXsXDpjSGqcZwUAPAPxCgAAAIBjasGGhnz7zpW5bt6GNLeWuWTa4fOsTh3tPCsA4LmJVwAAAAC8aK2tZX7+xJZ8686VuWfF9vSorc5bzxidd58zJqPre1Z6HgDQjohXAAAAALxgBw615H8eXper567Mim37MrSuWz562ZS8+fRRqevuPCsA4Pk7qnhVFMWlSb6SpDrJt8qy/NzTXPPGJH+VpEzyWFmWbzmGOwEAAABoQ7bsbsx371mdf7tvdXbtb8qsEXX5yptPzuUzhzrPCgB4UZ4zXhVFUZ3kH5JcnGRdkgeKovhxWZYLn3LNxCQfTXJOWZY7i6IYdLwGAwAAAFA5CzfszrfnrsyPH1uf5tYyL582OL917ricNsZ5VgDAsXE0d16dnmRZWZYrkqQoiv9M8uokC59yzfuS/ENZljuTpCzLLcd6KAAAAACV0dpa5vYlh8+zunu586wAgOPraOLV8CRrn/L2uiRn/MY1k5KkKIq7cvjRgn9VluVPfvMDFUXx/iTvT5JRo0a9kL0AAAAAnCAHDrXk2kfW5dtzV2bF1n0Z0qdbPnLZlFx12qjU9XCeFQBwfBzVmVdH+XEmJnlpkhFJ7iiKYmZZlrueelFZlt9I8o0kmTNnTnmMPjcAAAAAx9CWPY3513tW59/uXZ2d+5syY3gf51kBACfM0cSr9UlGPuXtEUfe91TrktxXlmVTkpVFUSzJ4Zj1wDFZCQAAAMBxt2jjkfOsHt2QptbWXDR1cN577ticPra/86wAgBPmaOLVA0kmFkUxNoej1ZuTvOU3rvlRkquSfKcoigE5/BjBFcdwJwAAAADHQWtrmV8s3Zpv37kyc5dtS/ea6lx1+si8+5yxGTPAeVYAwIn3nPGqLMvmoig+lOSnOXye1dVlWS4oiuKTSR4sy/LHR157eVEUC5O0JPlwWZbbj+dwAAAAAF64xqaWXPvw+nx77oos37ovg/t0zZ9eOiVXnT4yfXvUVnoeANCJFWVZmaOn5syZUz744IMV+dwAAAAAndWWPY35t3tW59/uW5Md+w5lxvA+ee+543L5zKGp7eI8KwDgxCiK4qGyLOc83WtH89hAAAAAANq5xZt259t3rsz/O3Ke1YVTBue9543NGc6zAgDaGPEKAAAAoAObt25XvvDTJ3Ln0m3pVlOVN502Mu8+Z0zGDexV6WkAAE9LvAIAAADogDY2HMgXfvJErn1kfep71ubDl0zOW88Y5TwrAKDNE68AAAAAOpD9h5rzz79YkX++Y3lay+R3Xzo+H3jp+PTuVlPpaQAAR0W8AgAAAOgAWlvLXPvI+nzhp4uzeffBXDFraD5y6ZSM7N+j0tMAAJ4X8QoAAACgnbt/5Y586vqFmb++ISeNqMs/vOWUzBnTv9KzAABeEPEKAAAAoJ1as31/PnvTotz0+KYMreuWv3vTyXnVScNSVVVUehoAwAsmXgEAAAC0M7sbm/L3ty3LNXetSnVVkT+6eFLed964dK+trvQ0AIAXTbwCAAAAaCeaW1rzHw+szZdvXpKd+w/ldaeMyIcvmZzBfbpVehoAwDEjXgEAAAC0A79YsjWfuWFhlmzem9PH9s9fvGJaZgyvq/QsAIBjTrwCAAAAaMOWbt6Tz9y4KLc/sTWj63vkn952ai6ZPjhF4VwrAKBjEq8AAAAA2qAd+w7lyzcvyffuX5MetdX52OVT846zR6drF+daAQAdm3gFAAAA0IYcbG7Jd+9ena/etjT7D7XkrWeMyv+5cGLqe3Wt9DQAgBNCvAIAAABoA8qyzE8XbM5nb1qU1dv356WTB+Zjl0/NxMG9Kz0NAOCEEq8AAAAAKuzx9Q351PULc9/KHZk4qFf+5T2n5/xJAys9CwCgIsQrAAAAgArZvLsxX/jpE/mfh9elX4/afOo1M3LVaSPTpbqq0tMAACpGvAIAAAA4wQ4cask371yRf/rF8jS3lHn/eePygQsmpK57TaWnAQBUnHgFAAAAcIK0tpb5f4+tz+d/8kQ2NjTmshlD8pHLpmR0fc9KTwMAaDPEKwAAAIAT4MFVO/KpGxblsbW7MnN4Xf7uTSfnjHH1lZ4FANDmiFcAAAAAx9HaHfvzuZ8szg3zNmZwn6750htOymtnD09VVVHpaQAAbZJ4BQAAAHAc7GlsytdvX55vz12ZqiL5PxdOzG+fPy49an05BgDg2fjdEgAAAMAx1NJa5r8eWJu/vfmJbNt7KFeeMjwfvmRyhtZ1r/Q0AIB2QbwCAAAAOEbmLt2WT9+wMIs37clpY/rl6nedllkj+lZ6FgBAuyJeAQAAALxIy7fuzV/fsCi3Lt6Skf275+tvPSWXzRiSonCuFQDA8yVeAQAAALxAO/cdylduXZp/u3d1utVU5yOXTcm7zh6TbjXVlZ4GANBuiVcAAAAAz9Oh5tb8672r89Vbl2ZPY1OuOn1U/vDiSRnQq2ulpwEAtHviFQAAAMBRKssytyzakr++cVFWbtuX8yYOyMevmJbJQ3pXehoAQIchXgEAAAAchYUbdufTNyzM3cu3Z/zAnvnOu07LSycPdK4VAMAxJl4BAAAAPIsFGxry7TtX5oePrk9d95p84lXT85YzRqWmuqrS0wAAOiTxCgAAAOA3tLSWuWXR5lw9d2XuW7kjPWqr895zx+ZDF0xMXY+aSs8DAOjQxCsAAACAI/Y0NuW/H1yXa+5embU7DmR43+75+BVT84Y5I1PXXbQCADgRxCsAAACg01uzfX++c/fKfP/Bddl7sDmnjemXP7tsai6eNjhdPB4QAOCEEq8AAACATqksy9y3ckeunrsyNy/anOqiyCtPGpZ3nzMms0b0rfQ8AIBOS7wCAAAAOpWDzS257rGNuXruyizcuDv9e9bmQxdMyNvOHJ3BfbpVeh4AQKcnXgEAAACdwtY9B/Pv963Ov927Jtv2Hsykwb3yuStn5jWzh6dbTXWl5wEAcIR4BQAAAHRoCzfsznfuWpn/9+iGHGppzcumDMp7zhmbcybUpyiKSs8DAOA3iFcAAABAh9PSWua2xVty9dyVuWfF9nSvqc6bTx+Zd509JuMG9qr0PAAAnoV4BQAAAHQYew825/sPrs01d6/K6u37M7xv9/zZ5VPypjmjUtejptLzAAA4CuIVAAAA0O6t3bE/19y9Kv/9wNrsOdicOaP75U8vnZKXTxucLtVVlZ4HAMDzIF4BAAAA7VJZlnlg1c5cPXdlfrZwU6qKIlfMGpp3nzM2J4/sW+l5AAC8QOIVAAAA0K4cam7N9fM25Oq7Vubx9bvTt0dNfvel4/P2M8dkSF23Ss8DAOBFEq8AAACAdmHb3oP53n1r8q/3rs7WPQczcVCvfPbKmXnNycPTvba60vMAADhGxCsAAACgTVu8aXeunrsyP3p0Qw41t+alkwfmPeeMzXkTB6QoikrPAwDgGBOvAAAAgDantbXMz5/YkqvvWpm7lm1P95rqvHHOiLzr7LGZMKhXpecBAHAciVcAAABAm7HvYHN+8NC6fOeulVm1fX+G1nXLRy6bkjefNjJ9e9RWeh4AACeAeAUAAABU3Nod+/Pde1blPx9Ymz2NzZk9qm/++JLJuWT6kNRUV1V6HgAAJ5B4BQAAAFREWZZ5cPXOXD13ZX66YFOKosjlM4fm3eeMySmj+lV6HgAAFSJeAQAAACfUoebW3Dh/Y66+a2XmrWtIXfea/Pb54/OOs0ZnaF33Ss8DAKDCxCsAAADghNix71C+d9/qfPee1dmy52DGD+yZz7x2Rl47e3h61PoSBQAAh/mdIQAAAHDcbN7dmFsXbcmtizbnzmXbcqi5NedPGpgvvGFszpswIFVVRaUnAgDQxohXAAAAwDFTlmUWbNidWxZtzq2LtmT++oYkyYh+3fOW00flrWeMysTBvSu8EgCAtky8AgAAAF6UxqaW3L18W25ZtCW3LdqSTbsbUxTJ7JF98+FLJueiqYMzaXCvFIW7rAAAeG7iFQAAAPC8bdnTmNsWbckti7bkrmXbcqCpJT1qq/OSiQNz4dRBuWDKoAzo1bXSMwEAaIfEKwAAAOA5lWWZhRt3P3l+1WPrDj8OcHjf7nnDnBG5cOrgnDmuf7p2qa7wUgAA2jvxCgAAAHhajU0tuWfF9ty6aHNuW7QlGxoOPw7wpBF988cvn5QLpw7OlCG9PQ4QAIBjSrwCAAAAnrR1z8H8fPGW3LJoc+Yu25b9h1rSvaY6500ckD+4aFIumDIoA3t7HCAAAMePeAUAAACdWFmWWbxpT25dtDm3LNqSx9btSlkmQ+u65cpThufCqYNz1rj6dKvxOEAAAE4M8QoAAAA6mYPNLblvxY4ng9X6XQeSJCeNqMsfXjQpF04dlGlD+3gcIAAAFSFeAQAAQCewfe/B/PyJrbl10ebcsWRr9h1qSbeaqpw7YWB+72UT8rIpgzKoT7dKzwQAAPEKAAAAOqKyLLN0y97csmhzbl20JQ+v2ZmyTAb36ZpXnTw8F00dlHMmDPA4QAAA2hzxCgAAADqIQ82tuX/ljsPBavHmrN1x+HGAM4b3ye+/bGIumjo4M4Z7HCAAAG2beAUAAADt2M59h/LzJ7bk1kVbcseSrdlzsDldu1TlnAkD8jvnj8+FUwZnSJ3HAQIA0H6IVwAAANCOlGWZ5Vv35pZFW3Lros15aPXOtJbJwN5dc8Wsoblw6uCcO2FAutd6HCAAAO2TeAUAAABtXFNLax5YtSO3LNySWxdvzurt+5Mk04b2yYcumJALpw7OzOF1qaryOEAAANo/8QoAAADaoN2NTfnFE1tzy6LN+fniLdnd2JzaLlU5e3x93nveuFw4ZVCG9e1e6ZkAAHDMiVcAAADQRqzdsT+3LtqcWxZtyb0rtqe5tUz/nrV5+fQhuWjq4Jw3cUB6dvWf8gAAdGx+xwsAAAAV0tpaZv76htyyaHNuXrg5izftSZKMH9gzv3Xe2Fw8dXBmj+qXao8DBACgExGvAAAA4ARqbGrJ3cu35eaFW3Lros3Zsudgqopkzpj++djlU3Ph1EEZN7BXpWcCAEDFiFcAAABwnG3bezC3Ld6SWxZuzp1Lt+VAU0t61lbn/MkDc9HUwblg8qD061lb6ZkAANAmiFcAAABwjJVlmeVb9+bmhVtyy6LNeXjNzpRlMrSuW15/6ohcNG1wzhzXP127VFd6KgAAtDniFQAAABwDzS2teXD1ztyycHNuWbQ5q7bvT5LMHF6XP7hwUi6cOijTh/VJUTi/CgAAno14BQAAAC/Qnsam3LFkW25ZtDm3Ld6ShgNNqa2uytkT6vPe88blwqmDMrSue6VnAgBAu3JU8aooikuTfCVJdZJvlWX5uWe47nVJfpDktLIsHzxmKwEAAKCNWL/rQG5dtDk3L9yce1dsT1NLmX49anLR1MG5eNqgnDtxYHp19WdFAQDghXrO300XRVGd5B+SXJxkXZIHiqL4cVmWC3/jut5J/k+S+47HUAAAAKiE1tYyj29oyC0LN+fmRVuyaOPuJMm4gT3znnPG5qJpg3PKqH6prvI4QAAAOBaO5o+CnZ5kWVmWK5KkKIr/TPLqJAt/47pPJfmbJB8+pgsBAADgBGtsask9y7fn5kWbc+uizdm8+2CqimTO6P75s8un5MKpgzN+YK9KzwQAgA7paOLV8CRrn/L2uiRnPPWCoihOSTKyLMsbiqJ4xnhVFMX7k7w/SUaNGvX81wIAAMBxsn3vwdy2eEtuWbQ5dy7dlv2HWtKjtjrnTxqYi6YOzgVTBqV/z9pKzwQAgA7vRT+EuyiKqiR/m+Rdz3VtWZbfSPKNJJkzZ075Yj83AAAAvFBlWWb51n25ZdHm3LJwcx5aszNlmQzp0y1XnjI8F00dnDPH1adbTXWlpwIAQKdyNPFqfZKRT3l7xJH3/VLvJDOS3F4URZIMSfLjoiheVZblg8dqKAAAALxYLa1lHly143CwWrQlK7ftS5JMH9Ynv/+yibl42uBMH9YnR/77FgAAqICjiVcPJJlYFMXYHI5Wb07yll++WJZlQ5IBv3y7KIrbk/yxcAUAAEBb0NzSmvtW7sgN8zfmZws2ZdveQ6mtrspZ4+vznnPH5sIpgzKsb/dKzwQAAI54znhVlmVzURQfSvLTJNVJri7LckFRFJ9M8mBZlj8+3iMBAADg+Whuac09K7bnxvmb8rMFm7J936F0r6nOy6YOyuUzhub8yQPTq+uLfpI+AABwHBzV79TLsrwxyY2/8b6/eIZrX/riZwEAAMDz09TSmnuWb8+N8zfmpws2Zef+pvSorc6FUwfniplDcv6kQele6/wqAABo6/wxMwAAANqtppbW3LVsW26cvzE/W7g5u/Y3pWdtdS6aNjiXzxya8ycNTLcawQoAANoT8QoAAIB25VDz4WB1w/yNuXnh5jQcaErvrl1y0bTBuWzGkLxEsAIAgHZNvAIAAKDNO9jckrlLt+XG+Zty88JN2d3YnN5du+TiI3dYnTdpQLp2EawAAKAjEK8AAABokxqbfhmsNubmRZuzp7E5fbp1ycXThuSKWUNyzgTBCgAAOiLxCgAAgDajsakldyzZmhvnb8wti7Zk78Hm1HWvyaXTh+TyWUNzzvgBqe1SVemZAADAcSReAQAAUFGNTS25/YnDwerWRZuz71BL+vaoyRUzh+byWUNz9vj61FQLVgAA0FmIVwAAAJxwBw615PYntuTGxzfltiPBql+PmrzypGG5fObQnCVYAQBApyVeAQAAcELsP9Sc25/Ymhvmb8zPF2/J/kMt6d+zNq86eXiumDk0Z47rny6CFQAAdHriFQAAAMfN/kPNuW3xltw4f2N+vnhrDjS1ZECv2rx29uFgdfpYwQoAAPh14hUAAADH1L6Dzbl18ZbcNH9jfv7EljQ2tWZAr655/akjcvmRYFVdVVR6JgAA0EaJVwAAALxoew8259ZFm3Pj/I25/YmtOdjcmkG9u+ZNc0bm8plDM2eMYAUAABwd8QoAAIAXZE9jU25dtCU3zN+YXyzZmkPNrRncp2uuOn3U4WA1ul+qBCsAAOB5Eq8AAAA4KmVZZuW2fXlw9c78bMGm3LFkWw61tGZIn2556xmjcsXMoTlllGAFAAC8OOIVAAAAT2t3Y1MeW7srj6zZlUfW7Mwja3dl1/6mJMmwum55+1mjc/nMoZk9sq9gBQAAHDPiFQAAAGltLbNs6948smZnHl69K4+s3ZmlW/amLJOiSCYO6pVLpg3J7FF9M3tUv0wc1EuwAgAAjgvxCgAAoBPatf/Qr91R9eiaXdlzsDlJUte9JrNH9c0rZg3L7FF9c9LIvunTrabCiwEAgM5CvAIAAOjgmlta88TmPUdi1eFgtWLbviRJVZFMHtInrzp5WGaP6pdTRvXN2AE9UxTuqgIAACpDvAIAAOhgtu09mEfW7MrDa3bmkTU7M29dQ/YfakmS1PeszexR/fK6U0fklFH9MmtEXXp29Z+GAABA2+G/UAAAANqxQ82tWbxpdx5effjxf4+s2ZU1O/YnSbpUFZk2rE/ecOqInDK6X2aP7JeR/bu7qwoAAGjTxCsAAIB2ZFND45PnVD28emfmr2/IwebWJMngPl1zyqh+eduZozJ7VL/MHF6XbjXVFV4MAADw/IhXAAAAbVRjU0sWbNh9OFYdOatqQ0NjkqS2uiozhvfJ284cndmj+uaUUf0ytK6bu6oAAIB2T7wCAABoA8qyzPpdB/LwkUj18JpdWbihIU0tZZJkeN/uOWV0v7x3VL/MHtU304b1Sdcu7qoCAAA6HvEKAACgAvYfas78dQ1PPv7vkbW7snXPwSRJt5qqzBreN+85d2xmj+yXU0b1zaA+3Sq8GAAA4MQQrwAAAE6AQ82teWTNzsxdti1zl23LvHUNaWk9fFfV6PoeOXfCgMwe1TezR/bLlKG9U1NdVeHFAAAAlSFeAQAAHAdlWeaJzXsyd+m23LVsW+5buSP7D7Wkqkhmjeib337JuJw6ul9OHtk39b26VnouAABAmyFeAQAAHCMbGw7krmXbM3fp1sxdtj3b9h5+DOC4AT3zulNG5NyJA3LmuPrUda+p8FIAAIC2S7wCAAB4gfY0NuXeFTty17JtuXPp1izfui9JUt+zNudMGJBzJwzIORMHZHjf7hVeCgAA0H6IVwAAAEepqaU1j67dlTuPPArw0bW70tJapltNVU4fW583nTYy504YmClDeqeqqqj0XAAAgHZJvAIAAHgGZVlm6Za9T55bde+K7dl35NyqmSP65nfOH5dzJgzIqaP7pWuX6krPBQAA6BDEKwAAgKfYvLsxdy3blrlLt2Xusm3ZsufwuVVj6nvkNbOH57yJA3LWuAGp6+HcKgAAgONBvAIAADq1vQebc9+K7Zl7JFgt3bI3SdK/Z23OHl9/+NyqCQMysn+PCi8FAADoHMQrAACgU2lqac28db86t+qRNbvS3Fqma5eqnD62f15/6oicM2FApg3t49wqAACAChCvAACADq0syyzfuvfJxwDeu2JH9h5sTlEkM4fX5X0vGZdzj5xb1a3GuVUAAACVJl4BAAAdzpY9vzy3anvuWrYtm3Y3JklG9e+RV508LOdOGJCzxtWnX8/aCi8FAADgN4lXAABAu7fvYHPuX7njyXOrnti8J0nSt0dNzhl/+MyqcycMyKh651YBAAC0deIVAADQ7jS3tGbe+oYnHwX4yJqdaWopU9ulKqeN6ZfXzJ6ScycMyPRhzq0CAABob8QrAACgXVi9fV/uWLotc5duzd3Lt2dP4+Fzq6YP65P3nDs2500YmDljnFsFAADQ3olXAABAm9Swvyl3L992OFgt25q1Ow4kSYb37Z7LZwzNuRMPPw6wv3OrAAAAOhTxCgAAaBMONbfmkTU7c+fSbblz2bbMX7crrWXSq2uXnDmuPu87b1zOnTAgYwf0TFF4FCAAAEBHJV4BAAAVUZZllm/dezhWLd2We1dsz/5DLamuKnLSiLp86GUT85KJA3LSyL6pqa6q9FwAAABOEPEKAAA4YbbvPZi5y7Zl7pFgtWl3Y5JkTH2PXHnK8Jw7YWDOGl+fuu41FV4KAABApYhXAADAcdPY1JIHV+3Mncu25s4l27Jw4+4kSV33mpwzoT7nThiY8yYOyMj+PSq8FAAAgLZCvAIAAI6ZsiyzaOOezF22NXcu3Zb7V+7IwebW1FQXOWVUv/zxyyflvIkDM2N4XaqrnFsFAADA/yZeAQAAL8rm3Y25c+m2zF26NXOXbcu2vYeSJBMH9cpbzhiV8yYOyBlj69Ozq//8AAAA4Ln5r0cAAOB52X+oOfet2HE4WC3bmiWb9yZJBvSqzTkTBuTcCQNy7sQBGVrXvcJLAQAAaI/EKwAA4Fm1tJZ5fH1D5i7bljuXbs1Dq3emqaVMbZeqnDG2f153yoicO3FApg7pkyqPAgQAAOBFEq8AAID/Ze2O/Zm7bFvmLt2Wu5Zvy679TUmSaUP75D3njM25EwfktDH9062musJLAQAA6GjEKwAAIHsam3LP8u1HHgW4LSu37UuSDO7TNRdNHZzzJg7I2eMHZGDvrhVeCgAAQEcnXgEAQCe0u7Epj69vyP0rD59d9ejaXWlpLdOjtjpnjO2ft585OudNHJAJg3qlKDwKEAAAgBNHvAIAgA5u78HmLFjfkPnrGzJv3eFvf3lnVVEks4bX5XfPH59zJw7IKaP6pbZLVYUXAwAA0JmJVwAA0IHsP9ScBRt2Z/66X8aqXVmxbV/K8vDrw+q6ZeaIurzulOGZOaJvThpRl749ais7GgAAAJ5CvAIAgHbqwKGWLNy4O/PX7cr89bszf/2uLNuyN61HQtXgPl0zc3jfvPrk4Zk5vC4zhtc5swoAAIA2T7wCAIB2oLGpJYs37cn8dbuefPTf0i1703KkVA3o1TWzRtTlshlDM2tEXWYOr8ugPt0qvBoAAACeP/EKAADamIPNLVmyaW/mrd+V+esOn1O1ZPOeNB8JVf171mbm8LpcPG1wZg6vy8wRdRnSp1uKoqjwcgAAAHjxxCsAAKigppbWPLFpTx5f35B56xsyf11DFm/anaaWw6Gqb4+azBxel/dPHnf4jqoRfTOsTqgCAACg4xKvAADgBGluac3SLXsz/8hj/+atb8iijbtzqLk1SdK7W5fMGlGX95w7NrOG982sEXUZ0a+7UAUAAECnIl4BAMBx0NJaZvnWvYfPp1q3K/PXN2Thxt1pbDocqnp17ZIZw/vkXWePyYzhdZk1vC6j63sIVQAAAHR64hUAALxIra1lVmzbl/nrdx2JVQ1ZsGF3DjS1JEl61FZnxrC6vPWM0Zk1oi4zhtdlbH3PVFUJVQAAAPCbxCsAAHieGpta8vCanbl3+fbct3JHHl/fkH2HDoeqbjVVmT6sLm86bWRmjajLrBF1GTugV6qFKgAAADgq4hUAADyHg80teXTNrty7YkfuWbEtD6/ZlUPNrakqkunD6vK6U0dk5vC6zBrRN+MH9kyX6qpKTwYAAIB2S7wCAIDf0NTSmnnrduWe5dtzz4rteWj1zjQ2taYokmlD++QdZ47OWePrc9rY/unTrabScwEAAKBDEa8AAOj0mltaM399Q+5ZsT33rtiRB1ftyP4jjwGcMqR33nzaqJw1vj5njO2fvj1qK7wWAAAAOjbxCgCATqeltczCDbtzz4ptuWf59jywamf2HmxOkkwc1CuvP3VEzhpXnzPG1ad/T7EKAAAATiTxCgCADq+1tcyiTbsPn1m1fHvuX7k9uxsPx6pxA3rmVScPy1nj6nPmuPoM7N21wmsBAACgcxOvAADocMqyzJLNe3PP8m25Z8X23LdyR3btb0qSjK7vkctnDs1Z4w/HqsF9ulV4LQAAAPBU4hUAAO1eWZZZvnXf4TOrlm/PvSu2Z/u+Q0mS4X2756Kpg3PWuPqcNb4+w/p2r/BaAAAA4NmIVwAAtDtlWWbV9v25Z/n2w8FqxfZs3XMwSTK0rlvOnzQwZ46vz1nj6jOyf48KrwUAAACeD/EKAIB2Ye2OX8Wqe5Zvz6bdjUmSgb27PnlX1Vnj6jO6vkeKoqjwWgAAAOCFEq8AAGiT1u86cDhWHXkM4PpdB5Ik9T1rn7yr6qzx9Rk3oKdYBQAAAB2IeAUAQJuweXfjk7HqnhXbs2bH/iRJ3x41OXNsfd7/knE5a3x9Jg7qJVYBAABAByZeAQBQEbv2H8o9y7dn7rJtuWf59qzYti9J0qdbl5wxrj7vOntMzhxXnylDeqeqSqwCAACAzkK8AgDghGhsasmDq3Zm7rJtuWvZtjy+oSFlmfTq2iWnj+2fq04flbPG12fq0D6pFqsAAACg0xKvAAA4Llpayzy+viF3LT8cqx5YtTOHmlvTparIKaP65Q8unJRzJ9Zn1oi+qamuqvRcAAAAoI04qnhVFMWlSb6SpDrJt8qy/NxvvP5HSd6bpDnJ1iTvKcty9THeCgBAG1aWZVZt33/4zqql23L38m3Z3dicJJkypHfecebonDNhQE4f2z89u/ozVAAAAMDTe86vGhRFUZ3kH5JcnGRdkgeKovhxWZYLn3LZI0nmlGW5vyiK303y+SRvOh6DAQBoO7buOZi7j9xZddey7Vm/60CSZFhdt1w6Y0jOmTAgZ48fkIG9u1Z4KQAAANBeHM0feT09ybKyLFckSVEU/5nk1UmejFdlWf78Kdffm+Rtx3IkAABtw76Dzbl/5Y4nz61avGlPkqSue03OHl+f33np+Jw7YUDG1PdIUTi3CgAAAHj+jiZeDU+y9ilvr0tyxrNc/1tJbnq6F4qieH+S9yfJqFGjjnIiAACV0tTSmsfW7spdy7bnrmXb8vCanWluLVPbpSqnjemXP7l0cs6dMCDTh9WlukqsAgAAAF68Y3rYQFEUb0syJ8n5T/d6WZbfSPKNJJkzZ055LD83AAAvXlmWWbplb+YuPXxn1b0rtmffoZYURTJzeF3ee964nDthQOaM6ZduNdWVngsAAAB0QEcTr9YnGfmUt0cced+vKYrioiQfS3J+WZYHj808AACOt40NB568s2rusm3Zuufwb+XG1PfIa2YPz7kTBuSs8fXp26O2wksBAACAzuBo4tUDSSYWRTE2h6PVm5O85akXFEUxO8k/J7m0LMstx3wlAADHTMOBpty74lexasXWfUmS+p61OWfCgJw7YUDOnlCfEf16VHgpAAAA0Bk9Z7wqy7K5KIoPJflpkuokV5dluaAoik8mebAsyx8n+UKSXkm+f+Rg7jVlWb7qOO4GAOAoHWxuyUOrd+auZdty17LtmbduV1rLpHtNdc4Y1z9vOX1UzpkwIJMH906Vc6sAAACACivKsjJHT82ZM6d88MEHK/K5AQA6stbWMgs37n7yzqoHVu1IY1NrqquKnDyyb86ZMCDnjK/P7FH9UtulqtJzAQAAgE6oKIqHyrKc83SvHc1jAwEAaMPKsszaHQdy1/LDseruZduyc39TkmTioF5582mjcu6EATljXP/07lZT4bUAAAAAz068AgBoR5pbWrNi274s3LA7CzY0ZOHG3Vm4YfeTsWpwn6552ZTBOWdCfc6ZMCCD+3Sr8GIAAACA50e8AgBoo/Yfas7iTXuyYMPhQLVwQ0MWb9qTg82tSZLaLlWZPLh3Lpk+JNOH9clZ4wdk/MCeOXIGKQAAAEC7JF4BALQB2/YePHI31e4jd1M1ZMW2ffnl8aR13WsybWifvP3M0Zk2rE+mD6vLuIE9U1PtzCoAAACgYxGvAABOoNbWMmt27H/ycX+/fPTf5t0Hn7xmeN/umTasT1550rBMG9on04fXZVhdN3dUAQAAAJ2CeAUAcJwcbG7J0s17Dz/yb+PhULVo457sPdicJKmuKjJxUK+cM35Apg3rc/h/Q/ukb4/aCi8HAAAAqBzxCgDgGGg40JRFG3f/6nyqjbuzdPOeNLcefu5fz9rqTB3aJ1eeMvzw3VTD6jJxcK90q6mu8HIAAACAtkW8AgB4HsqyzKbdjVmw/ld3Uy3cuDtrdxx48pqBvbtm+rA+uWDywCfPpxrdv0eqqjz2DwAAAOC5iFcAAM+guaU1K7ftO3w31VPOqNq5vylJUhTJ2PqemTWib646fVSmDT386L9BvbtVeDkAAABA+yVeAQAkOXCoJYs2/TJQHY5VizfuzsHm1iRJbZeqTBnSO5dMH5LpR86nmjKkT3p29dspAAAAgGPJV1sAgE7nYHNLFm/ck3nrdmXeuobMX9+QJZv35MjxVKnrXpPpw/rk7WeOzvThfTJtaF3GDeyZmuqqyg4HAAAA6ATEKwCgQ2tqac2SzXsyf11DHlvXkPnrd+WJTXvS1HK4VNX3rM2sEXV5+fQhmTGsT6YPr8uwum4pCudTAQAAAFSCeAUAdBgtrWWWb917+G6qdbsyb31DFm741aP/+nTrklkj+uZ9543LrBF1mTmir1AFAAAA0MaIVwBAu9TaWmb1jv2/evTfuoY8vqEh+w+1JEl61lZnxvC6vOOs0Zk5om9OGlGXUf17CFUAAAAAbZx4BQC0eWVZZt3OA5m/viHz1jVk3rpdmb++IXsam5Mk3WqqMn1YXd44Z2RmjajLrBF1GTegV6qqhCoAAACA9ka8AgDanM27G/PY2l1Pxqr56xuyY9+hJElNdZGpQ/vkVScNy0kj+mbmiLpMHNQrXaqrKrwaAAAAgGNBvAIAKmr73oOZt74h89Y2ZP76w48A3LLnYJKkuqrIpMG9c/HUwZl55I6qyUN6p2uX6gqvBgAAAOB4Ea8AgBOmYX/T4bup1u/K/HWH76pav+tAkqQokvEDe+XcCQMya0RdZo7om2lD+6R7rVAFAAAA0JmIVwDAcbH3YHMW/PKMqvUNmb9uV1Zt3//k62Pqe+SU0f3yrrPHZNaIukwfXpdeXf3WBAAAAKCz8xUiAOBFa2ppzcINu/PImp1PxqrlW/emLA+/Prxv98waUZc3njYys4b3zczhdanrUVPZ0QAAAAC0SeIVAPC8NexvysNrdubB1Tvy0OqdeWxtQw40tSRJBvbumpNG1OWVs4Zl1si6zBxelwG9ulZ4MQAAAADthXgFADyrsiyzZsf+PLhqZx5cvTMPrd6RJZv3Jkmqq4pMH9Ynbz59ZE4d3S+nju6XoXXdK7wYAAAAgPZMvAIAfs2h5tYs2NCQh1bvfDJYbdt7MEnSu1uXnDKqX145a1hOHdMvJ4/smx61fjsBAAAAwLHjq00A0Mnt2n/ocKhavTMPrdqZx9btysHm1iTJqP49ct7EATl1dL/MGdMvkwb1TlVVUeHFAAAAAHRk4hUAdCJlWWbltn15aPXOJ4PVsi2HHwHYparI9OF1eduZozPnyCMAB/XpVuHFAAAAAHQ24hUAdGAHm1vy+PqGJx//9/Dqndm+71CSpK57TU4d3S+vnT08p47ul5NG9E332uoKLwYAAACgsxOvAKAD2b73YB5esysPrt6Rh1btzLz1DTl05BGAY+p75KWTB2XOmH6ZM7pfxg/s5RGAAAAAALQ54hUAtFNlWWb51n15aPWOPLjq8GMAV2zblySpqS4yY3hd3nnW6Jw6un9OHd0vA3t3rfBiAAAAAHhu4hUAtBONTS2Zt67hyHlVO/LQ6p3Zub8pSdKvx+FHAL5hzsicOrpfZo2oS7cajwAEAAAAoP0RrwCgjdq29+CRO6p25MHVO/P4+oY0tZRJknEDeuaiqYMzZ0y/nDq6f8YP7Jmi8AhAAAAAANo/8QoA2oCGA01ZunlPFm/ak0fW7MpDq3dk1fb9SZLa6qrMGlGX95w7NqeO6pdTR/dLfS+PAAQAAACgYxKvAOAE2newOUu37M2STXuyZPOePLF5T5Zu3ptNuxufvKZ/z9qcOrpfrjp9VOaM6ZcZw+vStYtHAAIAAADQOYhXAHAcNDa1ZNmWvVmyeU+WbP7lt3uybueBJ6/p2qUqEwb1ytnj6zNxcO9MHtIrEwf1zoh+3T0CEAAAAIBOS7wCgBfhUHNrVm7bd+QOqj15YtOeLN2yN6u370vr4eOpUlNdZNyAXpk9ql/eNGdkJg3pnUmDe2dU/x6prhKpAAAAAOCpxCsAOArNLa1ZvWP/kcf9/epOqpXb9qX5SKWqrioypr5HpgzpnVeeNCyTB/fOpMG9MmZAz9RUV1X4rwAAAAAA2gfxCgCeorW1zLqdB/LEkTj1y8f+Ld+6N4eaW5MkRZGM7Ncjkwb3zsXTBmfykTupxg3s6WwqAAAAAHiRxCsAOqWyLLOxofEpj/vbm6Vb9mTp5r050NTy5HXD6rpl0pDeOW/igEw6cifVhEG90qPWL6EAAAAAcDz4yhsAHVpZltm692CWbNr7lDupDkeqPQebn7xuUO+umTS4d646fVQmDe6VSUN6Z+KgXundraaC6wEAAACg8xGvAOgw9jQ2ZfGmPVm8cfeRx/4dDla79jc9eU2/HjWZNLh3XnvK8Ewc3PvJc6n69qit4HIAAAAA4JfEKwDanbIss3n3wSzc2JCFG3Zn4cbdWbBhd1Zv3//kNb27dcmkwb1z2YyhmTS4VyYP7p2Jg3tnQK/aFEVRwfUAAAAAwLMRrwBo05pbWrNy274s3Lg7CzccjlQLN+7Ojn2HnrxmTH2PTB/WJ284dUSmDeuTKUP6ZGhdN5EKAAAAANoh8QqANmPfweYs3rTnyVC1cENDFm/ak4PNrUmS2uqqTB7SOxdPHZxpw/ocCVW9nUsFAAAAAB2IeAVARWzZ0/hrj/xbtGF3Vm7fl7I8/Hpd95pMH9Ynbz9z9JOhavzAXqmprqrscAAAAADguBKvADiuWlrLrNq+79ce+bdww+5s23vwyWtG9u+eaUP75NUnD38yVA3z2D8AAAAA6JTEKwCOmQOHWvLE5j1ZsKHhybuqFm/ckwNNLUmSmuoiEwf1zksnD8y0oYcj1dShfVLX3WP/AAAAOIaaDybblhz+fre6pFvfpGvvxB+S5De1NCW71iTblyXblyc7lid7Nyf9xiaDpiYDpyQDJye1PSu9lLaopSnZvz3ZuyXZtzUpW5OJF1d6VYcgXgHwgmzfe/DJR/79MlSt2Lo3rUce+9e7W5dMG9onbz595JOhauKg3qnt4rF/AAAAHEMH9ySb5icb5yWb5h3+duvipLXp168rqo6ErCMxq1td0r3vr95+6vf/19t1SZfaE/vXxbHT2pI0rD0Sp1b8eqjauTopW351bde6pNfAZMlPk5ZDR95ZJP1GJwOnJoOmJIOmHY5aAyYlNd0q8pfEcVKWh39O2bc12bct2bflV9/f+5Tv79t6+LUDO3/9x/cdnfzBvMps72DEKwCeVWtrmTU79h955N+v7qjavPtXj/0b3rd7pg7tk8tnDs20oX0yfVifjOjX3WP/AAAAOLb2bjkSqR77VazaseJXr/ccmAyZlUy8KBk8I6muTRp3JY0NyYEj3z717T2bDr99YFfScvDpPuOv1PR4+uj1jG8/5fu1vdz1dby1tiZ7NvwqSj01VO1c9ZQQlaSmZ9J/3OF/Vqa/Nuk/Pqkff/jbngMO/3/V0nz4x29dlGxZfOTbRcmym5PW5sMfp6g6/HEGTvnVXVqDpiX1E8TOtqSl+fDdUc8Yon4jSjU3Pv3H6dY36TXo8M8zg6YkPf9/e/caI2l233X8d+qpW1d3V3VPT1/mujvrmc3u2l4neLRxHBEZJGInQizCMTGKFAMRkQG/iHiBYkWKkSOkoLwiEIIisDZGDiZCAlbgKLGCRHhj4Q2xg3dt76z3kpndme7Z6e7qS1XX9fDinKeeS1X1Zbanq6r7+5FKz3lOPXXrqdPV8/zqf85PuPb0ebedWXIXHAtjrR3JA9+8edO+9NJLI3lsAMBgW3st3Vrd0a3V7d7aVN+9u6XdpvsGUpAxurE006ukeuZiWc9cKGuuxB9kAAAAwNjqdqTaujQ1LwV8j/mRajekzdvuRPnGG25bvSOVFtwJ7nPX3Hb+cSk3NeInO+asdT+/sJIq3O7ci46Ze0y68Ky08iG/fVaaXXn4kKi1t3/Qtbc5YL8q1atSo7r/fZsgqvo6KOgqVqTivGtPzbv9TPBwr+m0sdaFDus/SFZPPXjdBU3tenRsUHDjbSEWTIXb9/I+aTfdY675MCsMt9Z/4KaMk6RM1j1OvEpr6Wn3fAKWTnjPrJWaOwcHUWF/fX3w/QT5WPi0FLVnlpKh1PSS+z1OIHnsjDF/aq29OfA6wisAOHuq9ZZurW7r1tqOC6vWtnVrdUf3tqJvlswUsnr6wqyvpKromYtlXV+aUTHHH8wAAADAWAlP5m6+5dZt2XjTtTf8fvWOmz7NZKTZi9LcFalyJdrG2/nSqF/NeLPWfXt/481kQLXu97felhQ715YtSuWL7jZ7qXBj9oIPsq5J5x6Pta+5wOIs6bTd+lRhQHX3224awDAQMoFbc2jl2SikWvmgC3fGRbcjNbb2Cb6qUYXXoFAsXhU0SLHi3hdDL+cG9M1NZlBirQvcw+qpB68lK6maO9GxmZwLg3vh1BOu6unc+6TyJSlzgksXtPakB7eSVVpr33W/G8LfC0FeWrjhQq3Fp12gtfS0ew1nPaBs7bmQqbY+IIi6L+3cT1VH1QffT3HOB06Dgqil6LqZRalQpiJyxAivAOCMqtZaetUHU6+ubuu1Nbdd246mQpjKBbq+NKMbyzO6sTSrJ/328vyUMhk+wAEAAICRs9atqREPpHptv5+e4mh60VWlzF1167TMXnAn+zZvu3Vfqrel6tvJdV4k983yXph1tT/ompo//Sf6Wnvu59MLqFKX+IlzSZpZcSeeB11mlqOT57V1af0NF3itv+FOwofteDWR5H7OYZDVC7V85dbM8mT/GzRr0urLLqgKw6q1V6L3cHZKWn5/FFJdeNZVrpz2SrVWfUDQteH26xvDL3ubUbXPIPnZKMgaFHqVBoVe81K28Ohfc30zVjWVCqriYa/JuN9n6eqphfe530vjXlHarLlwNl6ltfZdqfoX0THZonT+RrJKa+lp93v4JAO449Dtuvdlbd2/T30gNXDrr69vSK3a4PvL5KKwaXrIJbyudJ7qqAlDeAUAp9zGblO31qKA6tbatl5d3dH9WEhVyge6sTSj60uzurE80wupLs0RUgEAAAAj19jpD6Ti7cZW8vhixZ3MnX/Mh1Rh+6q75KcPfsxuR9q+GwVam3/ht7ejbfqb7fkZqXI5GWjNXY32Z1bG/0SrtS7IGxZObb2jZPXU1PBwau7q8VSrNXd9BVc81Hrd7VdvJ8OJXCkKtuYfj0Kt+WvjdyK/tu4qqO75aqq7f+4qU8LXU6z4gOpD0Xbh+ni9hnHX7brfD2EAcJjAKwwV0uF1XK7UX8V1YKXXvAsZ4+FqYydadyodVNXejT2gcb9bBgVUc4+dzkCisS3dfzVZpXX/e76C08uVXNVhvEpr8Sn3szqJELtZGxw61Tei4Knvuk0lfofGmSAVnJ6LAtT4fjyYKlYmO7DHvgivAOCUWN9t6tbqtl5d29Frqy6gurW2o3d3opBqOh/o+vKsbixFAdWN5RldrBBSAQAAACPTq+Z5S9p8s7+CKr0eR66UCqeuJtsnMV1aOEVeItS6kwy66hvJ22RyUuVS/3SEvSkKL59MRUerHk2hOOiS/ob/7MV9qqeWRnvitN10P+te1dbryQquTvT/QWWy/r1yLbXG1jX3/nlU1UvWutAvvT5VvLKkfMlN9Ref+m/uKielR8VaF57sF3L1QrD1ZPDVbQ2/36AQhV31zf6qwtkL/dP7LbzPvUdzxUf4gidIfVO6//1YldYrLtTaWY2Oyc/6qQefigKtpWeGr+XV7fh/z/2qoFL/zvX1/qreuPyMDzHnUkHUoK0PPAvl8f+CA04U4RUATJgHOw29urqj19a2ExVV7+5Ec2DPFLJuur+lGT25PKvry257sVKU4Y9/AAAA4GR1Wi7YGTSl38Zb/Sdwg7wLc8JAqlc19bhrlxYm46R+Y9u/7tsuqIhXbVVvS9v3lPwGvnHT3u237laxfPDjWutO5A4Lp7bvJo/PlQYEU75yae7K5E5J1+261xoPtXqVW29Ga0aFypcGr7E1f+3wgWi36ypn7n47GVbVHvgDjAsjwpAqrKqaPn98rxujY60Lfw9T2VWsuPfZwnVfSfXE4apCMVht3YVYa6/4dbV8uzf25H7mi09LhdlkMJVecy/OBFHIlKiAmt8nkDqhqSVx6hFeAcAYstbqwW4zsRbVLV9Jtb4bhVSzhayuL8dCKr+9QEgFAAAAnJwwJEhP6RdWUG3dSU7tZjJS+fKAcMq3J2F6vePQbrqfTS/gup0Kuu70V3EUK/3rbWWy7me98aYLZjbeSk1paKTyPtVT04uTEQYeJ2vdietBa2ytvy7triWPnzqXWmPLt7MFN/VfGFLd+47U2nW3yeRc1ceFZ6WVD7nt8gekwszJv17grNq531+l1aodrhKq5KuhztrvR4wNwisAGCFrre7vNPSaD6ZeXXXVVLdWt7VRi/6TNlvI+rWoooDqxvKMVsqEVAAAAMCJaDd8QPJGclq2jTdcaNJpJo+fvZAMpOLT+5UvSUFuJC9jonS7roJq2Jpb1dtSc8cdm58ZHk5VrjDl2FE1dvw6W6/3T0dYTYWxkvv5p6f9W3zqdK5FBAA4EYRXAPCINdodrW01dLe6p7vVula39vTmg5pu+aBqMx5SFbN6cnlWTy7P6PrSbG9dquVygZAKAAAAeNT2qslgav11fwL/DWnrbSWmuMtN+3WDHo+mmAtDKsKSk2GttLfp1muZlKkUT4N201cYvuEqOJY/4MbAWagWBACcmP3Cq+xJPxkAmDS1Zlv3qnu6V93T3eqe7m25gOpetaF7W3Xdq+4l1qIKVaZyenJ5Rj/1gQu9gOrJ5RktzhJSAQAAAI+MtW6dpUHVU+tvuLU/4qYX3Un5x388uf7PuWtnc6q5cWOMW1sFJyubl85fdxcAAEaA8ArAmWWt1daeD6a29nSvWnfhVBhS+Sqqrb12323nSjmtlIu6UCnqg5cqWilP6UKlqJVKsbedLTJFCAAAAPBIdFpRVcj6G1HlVLgfXwvJZKTKZVdB9czzyXBq/nG3qD0AAADGCuEVgFPJWqv13WYUQm3tabVXORWFVLVmp++252cKulAp6upCST/6xLleILVcLupCZUor5aKm8sEIXhUAAABwhoTr8SSm9/Pt6h3Jxv6Wz065IOrcNemJv5IMqCpXWJMHAABgwhBeAZg4na7VuzsNH0ClqqW29nqVVM12cnHZIGO0PFvQcqWop1Zm9bEnl/qqpZZmi8pnmcMbAABgYnW7Uu2BtHVH2npHqr7t1jHaesdv35Zq61ImK2ULUpB3l7CdLUhBTgoK+/cFeReI9PrC6/fp67uNv58gdzanprNW2n13+PR+u2vJ46fmXSB1+ab0wU/5tah8SDW7cjZ/hgAAAKcU4RWAsdJod7S21fDrSg2ullrbbqjTtYnb5YOMVnwA9SNX57RSjodSbkq/8zMFBRn+QwsAADCxul2p9q6rutl6x19i7eodafuu1EmtR5rJSeWLUvmSdOmmNH3eTTvXabpLu5FstxvS3lasryl1fH+n5drd/qml35NDBV5+mwkkmWRYY0ys72G2vTt6j/elaDvomE4zNt3fm1JzO/ZDMO7f6Nw16cmPp6b3uyZNzR3vzxwAAABji/AKwImw1mqr3naVUYkp/Pa0GquWWt9t9t22lA96QdRH33c+US217NedOjedl+GblgAAnB3djtTYcmHGYU6Yp7e944ccw98VJ6/blXbvR9VRYaVU9e1YSHVX6raStwvyUTB15Tm3LV9yfRXfLp2XMsdcXd/tuhBrWLgV9iWu92HYka5vReFasyZ1Ntxjy3+Zy1rXPvJWyf2Hui8N6B/UF9tmsm4av3PXpKsfddtzT7hwau6qlCse778TAAAAJhLhFYD3rN3p6t2dpp+yr+6DqIZWt/Z0t1rX6lZD96p7qrf615damM5r2VdJfejKnAumykUt++2FuaJmC1mCKQCYRO2mVF9303fV/La+7tvryes6DckErpogsc3E9lPtfY992P5B93tQf1bKT0uFWSk/IxVm3DbD+ogHslZq7kp7m1J9Q6qH243+vsT+ptSontCTPETQlaiAGVbRMiA4y+Tceyc/7d4zA9v7XZc6bpzfc92umwIuDKV6U/nFp/PbL5i6LF35iA+kLvs+319aOP5g6jAyGSkzJeWmTv6xAQAAgFOO8ArAvmrNdq8qajU2lZ+roGroXrWu+9sNpWbxUy4wWpp1VVHPXCzrrz611JvKb8UHU0vlggrZMT7JAuBwrJVaNWmvKrXq0XRHQc5Pf+SnNyKEnmzNWix4SoVQif1Yu7kz/P5y0+6Ec2lemjonZRcl25Vsx1XU2I6vamhJ3b3+/sR+x902sT/suP4vUjwyuVIyzCrM9gdcg/YTfbNumy2O9xhqN324tHmI4Cm1nw4r4jJZt8ZNcc5tZ5alxaei/WLF/X45cuWIUn3p/SNUkfQ99iGeQ3hMt+XGVnPXjZfaAzedWrjf3Dna1HTZqfcYgIXvO7+fm3bT1B2k23EVU4lAKh5SvSNtv9P/WoJCVDF19ceidq9qygdT4/zeBwAAAPBIEF4BZ5S1Vuu7YbXU8Kn8tvb6T5jMFrO9IOrG0mJv+r54OHWulFeG9aWAydBuuqm39qru0mtvJduJ61LHHRgImCjI6oVa8TU98qm2v8QXs3/o2+Rj64Wkb1MYzbf1R8na6CR5ogIqHjw9SPWvS+368PssVFwIVVqQphdduFA650KpUnhZ8PsLbj9bOLnXnDYs1Hro/rYLGxrb7mfb8KFDY7u/b+ud5H6rdrjnbIJkmDUo4Erv944ZEJANqtDpdv243jxE8LSpRJVUa3f/51+oSFOVKIgqX3Rr18SDqan5/r78NMFFu+mDrN3YZTvW3hnSjgVgO6vJ69p7h3/8ID84DMuV3Htg6223xlQ6mMoWozDqsY9GlVK9qqlLBFMAAAAAhiK8Ak6ZRrujzVpLm7WWNmpNvbvjpuxLV0+tbTXU7HQTtzVGWpwp6EKlqMcXpvWRJxZ6a0rFp/KbLvCrA2Og23XfWO80/doSsUXXrXUnZoOcm5Ipk5WCbKydOz0ny7pddxKzL2AK24OCp1QotV8oESqU3aVYkYpld+Kx8JRrFyvRdblS9O8QLnofrv0RX9Mj0Y6t5dGqu5OhifVCUsftV6XxMEwQC7n8eyScEi6TjV2G9YXHZwdcn0ntZ2NTzmUH3GbI/ZhB95Pqs9aFCongKR1Q+f2hP0PjwoMwaCpfllaedSFCGDqlQ6ipefdzmySZjKTMeDzvTjsKGOKh174h2HZ03fa95G0OW6WTnYrCLGN8KFV1FWzDBIVkyDR3RbrwbCx8mkuFUX5bKLvfwXg42byU9SHwcem0XeB4YAA2KAzz7frb7t/6sR/360r5Kfx6wdS50/NZCwAAAODE8b9IYEw1211t1puq1lrarLe0sdvUZr2lzVrTB1MtVeuxdq2pjVpr4LpSklTMZVwAVS7qw4/N96buC0OpC5WiFmcKygZnrAIBSda6b2M3tqOQIB4KddpRu9se3N9pDQmV9unvNFOP1Tq4/71O/WUyLswKcj4oyEXBRRhw9bVzPgQLg7ADArKh9zXstv7Squ1T9ZQKohrb6k1BNUy2mAyeihX3zfde8FSJrksfVygPr9IYlTC4DAOvXkgWttOL3afbg27TiN7X3barrElsU+2w+qYVv0031o4db4fcx1GmAnsYJohVPy1I556QLt+MVUOlQqjSQjQFG05OkPUhz9x7v6/e7/BUwDVov7EVtWWjUGq/IIp1fU6PICsF/nc/AAAAAIwhwivgEWt3uj50cmHTxm4rFUK5UKoatmvuut3m8BPz2YzRXCmnylRO86W8Ls0V9f6LZc1N5TRXymmulNdcyV23MJPXSrmoylROhm+/nm7djjsZ2dj2wcd2FHY0tlLXpdtb0W0eRVVLb0q3bKy6JRe1g1g7Px0FSenrD9tvMj5ca0UhQa/dcmHbwHbLhwutIbdtu7VJDryf1H0eFC7t+/PLpAKlOWn+8f6Kp77gac7vl0c7PdujkMlImcLpeF19gVfbr900IAQbFKTFgzErXzXlA6tihaqHs8YYFzDlpiQtjvrZAAAAAADw0AivgEPqdK2qYeiUroDyVU/x/s16U5u7LW03hn+zPmPUC5rmpnJaLhf1QyuzmpvKa77kgqhKyben/HGlnGYKWYKo08RaN1XaocKmauq47ei65s7Bj2WCWMjht+VL0fRvYZVNYdZV6yQCpwNCp0H9mdzZW09okN4Uh4cI07ptN/Ve+G8UTumF0ymTkTJ5SflRPxMAAAAAAICxQXiFU8laq0a7q91GW7VmR7VmR7vNtmqNjmrNdm+/3uxoN9VXa3RUa3VUa7S12+xot9HWZq2prb3hIZQx6lVBVaZyOj+T1/WlmV5fGDrNlfKaC48r5TRbyCqTOcMnpa11U3W161Jrz0111N5zQU7YtlaSjRWu2Oi2Q9v+uHj7yMfpIW6TOq7TGFABtZ2qdAqrnQ4xfVhuOhkwFctujYmw2qYwm7yukAqpCrPu2/gEISfvNFUKAQAAAAAAAI8Y4RVGKgyZaj4kqrc6icCp1mz3hUvpwCk8JnnbtrpHmKWrkM1oupBVKR/4S1bThUBzpbymC0EvlAqn4qv4bRhEzRZPQQhlrVvvJQyOEtt4wBTbthsDjt/vulgoFYZV72U6tUmRycZCpFm3vlD5srSUCqLC63rt2G3ysyx2DwAAAAAAAOBM4EwoDhQGTPWmq0iqN6Nwqd50oZFrx/pbUbhUjx27Gwucag23f5SQKZ/NaNqHS6V8oFIhq1Iu0MW5XC9wmsq5be+YfKDpQlZT+UDTqb4wqApGGTx12i406jSkdtO3my786TTc1GJ97Wa07bVb/j7i/c1UNdOQEOo9B0l+jY1s0W8LUnZKyhXdtnRu+HWJbTF2nG8bP+WcMe5xem3/uCb2HAYeN+g25oDbDDguXa10mNsEeb/eUJFqJwAAAAAAAAA4JMKrU6LTtar5qqRaIlByQVG4Hw+Z6q0oWHL7sbCp0dZes6Vmu61GsyljuwrUVUZuG29njNtm1VFGVoG6KgZW0zmjUs5oKiut5DIqZo2m8oGK065dzGU0lQ1U8O2iP6bo+6ZygfJZo2LW9ReyGQXGyE3Z1lTfdG2Jrfr7WlZqSdrZZ9q5gffRjYKgdJjUFzYd1A7vI9a23WN8JxgXDoXrE2X9NGXxUKg4J82GQdOAwGi/EGpY0BTkCWcAAAAAAAAAAMfiUOGVMeYTkv6lpEDSv7PW/nrq+oKkL0v6sKQHkn7WWvvm8T7Vs+vPvv4Vdb/9n9TtdKRuR9Zf1O3IWrc1PjyKh0oldTXbFzTZXvgUqKusCa+3CmK3z8gHKkbSwy7RYiU1/eW0MRkpKEhZHxIl2j40CgpSfkYqLaT6w23O3y7eTt9feHzYzkX33fd4eTc9HSESAAAAAAAAAGCCHRheGWMCSb8l6a9JuiPpm8aYF621r8QO+wVJG9ba68aYT0v6F5J+9lE84bOotXVfK7UfyJrAhSaZQMoGUiaQyQRSJi+TCWQyWWWCQBm/NUFWQRAoCLLKBFkFQVbZrNsGgbu9TGrb15fpP2Zgf9a3M0OO9VO/9aZVMwOmXTugr2+quEHTuh3lPtJ9w55HJhkgZQvutQEAAAAAAAAAgGN3mMqr5yS9Zq19XZKMMV+V9LykeHj1vKR/5tv/WdK/NsYYa+3DLqCDmOc++UvSJ39p1E8DAAAAAAAAAADgkcscfIguSbod27/j+wYeY61tS6pKWkjfkTHmF40xLxljXrp///7DPWMAAAAAAAAAAACcWocJr46NtfZ3rLU3rbU3FxcXT/KhAQAAAAAAAAAAMAEOE169LelKbP+y7xt4jDEmK6ki6cFxPEEAAAAAAAAAAACcHYcJr74p6YYx5poxJi/p05JeTB3zoqTP+PbPSPqfrHcFAAAAAAAAAACAo8oedIC1tm2M+ZykP5QUSPqStfZlY8wXJb1krX1R0r+X9B+MMa9JWpcLuAAAAAAAAAAAAIAjOTC8kiRr7dckfS3V96ux9p6kTx3vUwMAAAAAAAAAAMBZc5hpAwEAAAAAAAAAAIATQXgFAAAAAAAAAACAsUF4BQAAAAAAAAAAgLFBeAUAAAAAAAAAAICxQXgFAAAAAAAAAACAsUF4BQAAAAAAAAAAgLFBeAUAAAAAAAAAAICxQXgFAAAAAAAAAACAsUF4BQAAAAAAAAAAgLFBeAUAAAAAAAAAAICxQXgFAAAAAAAAAACAsUF4BQAAAAAAAAAAgLFBeAUAAAAAAAAAAICxQXgFAAAAAAAAAACAsUF4BQAAAAAAAAAAgLFBeAUAAAAAAAAAAICxQXgFAAAAAAAAAACAsWGstaN5YGPuS3prJA8+mc5LenfUTwLAkTBugcnDuAUmD+MWmCyMWWDyMG6BycO4xaR4zFq7OOiKkYVXOBpjzEvW2pujfh4ADo9xC0wexi0weRi3wGRhzAKTh3ELTB7GLU4Dpg0EAAAAAAAAAADA2CC8AgAAAAAAAAAAwNggvJocvzPqJwDgyBi3wORh3AKTh3ELTBbGLDB5GLfA5GHcYuKx5hUAAAAAAAAAAADGBpVXAAAAAAAAAAAAGBuEVwAAAAAAAAAAABgbhFcjZIz5kjFmzRjznVjfOWPM140xt/x23vcbY8xvGmNeM8b8uTHmL8Vu8xl//C1jzGdG8VqAs+KI4/ZjxpiqMeZb/vKrsdt8whjzfT+mf3kUrwU4C4aM2U8ZY142xnSNMTdTx3/ej8vvG2M+HutnzAIn5Cjj1hjzuDGmHvus/bex6z5sjPl/ftz+pjHGnPRrAc6KIeP2N4wx3/P/f/0vxpi52HV83gIjdpRxy+ctMB6GjNtf82P2W8aYPzLGXPT9nEvGxCO8Gq0XJH0i1ffLkv7YWntD0h/7fUn6KUk3/OUXJf225E6aS/qCpB+V9JykL4QnzgE8Ei/o8ONWkv63tfaH/eWLkmSMCST9lty4fkbS3zHGPPPInzlwNr2g/jH7HUl/S9KfxDv9OPy0pPf72/wbY0zAmAVO3As65Lj1fhD7rP1srP+3Jf0DRX9Dp+8TwPF5Qf1j7OuSPmCtfVbSq5I+L/F5C4yRF3TIcevxeQuM3gvqH2O/Ya191lr7w5L+u6Twi9OcS8bEI7waIWvtn0haT3U/L+l3fft3Jf3NWP+XrfMNSXPGmAuSPi7p69badWvthtwfGvyhADwiRxy3wzwn6TVr7evW2qakr/r7AHDMBo1Za+13rbXfH3D485K+aq1tWGvfkPSa3HhlzAIn6IjjdiD/d3LZWvsNa62V9GUd/PkM4CENGbd/ZK1t+91vSLrs23zeAmPgiON2ID5vgZM1ZNxuxXanJVnf5lwyJh7h1fhZttbe9e17kpZ9+5Kk27Hj7vi+Yf0ATs6wcStJP2aM+bYx5g+MMe/3fYxbYDzxWQtMpmvGmD8zxvwvY8xf9n2X5MZqiHELjNbfl/QHvs3nLTAZ4uNW4vMWGFvGmH9ujLkt6ecUVV7xeYuJR3g1xvy3VuyBBwIYG6lx+38lPWat/ZCkfyXpv47qeQEAcErdlXTVWvsjkv6JpN8zxpRH/JwAxBhjfkVSW9JXRv1cABzOgHHL5y0wxqy1v2KtvSI3Zj836ucDHBfCq/Gz6ks4w/LrNd//tqQrseMu+75h/QBOzsBxa63dstbu+PbXJOWMMefFuAXGFZ+1wITx04498O0/lfQDSU/KjdH4VEeMW2AEjDF/V9Jfl/Rz/kteEp+3wFgbNG75vAUmxlckfdK3+bzFxCO8Gj8vSvqMb39G0n+L9f+8cT4iqeqnKftDST9pjJn3i+v9pO8DcHIGjltjzIoxxvj2c3K/cx9I+qakG8aYa8aYvNyC1S+e+LMGkPaipE8bYwrGmGtyC9v+HzFmgbFljFk0xgS+/YTcuH3d/528ZYz5iP8s/nlFf1cDOAHGmE9I+qeS/oa1tha7is9bYEwNG7d83gLjyxhzI7b7vKTv+TbnkjHxsqN+AmeZMeY/SvqYpPPGmDuSviDp1yX9vjHmFyS9Jelv+8O/Jumn5RazrUn6e5JkrV03xvya3B/6kvRFa21i4T4Ax+eI4/ZnJP1DY0xbUl3Sp/0319rGmM/J/XEQSPqStfblk30lwNkwZMyuy03luSjpfxhjvmWt/bi19mVjzO9LekVumpR/bK3t+PthzAIn5CjjVtJPSPqiMaYlqSvps7G/hf+RpBckTcmt2RFftwPAMRoybj8vqSDp6/77XN+w1n6Wz1tgPBxl3IrPW2AsDBm3P22M+SG5sfmWpM/6wzmXjIlnosp9AAAAAAAAAAAAYLSYNhAAAAAAAAAAAABjg/AKAAAAAAAAAAAAY4PwCgAAAAAAAAAAAGOD8AoAAAAAAAAAAABjg/AKAAAAAAAAAAAAY4PwCgAAAAAAAAAAAGOD8AoAAAAAAAAAAABj4/8DKFlwBCvPeZsAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 2160x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"start_time = r[0][1]\n",
"pd.DataFrame.from_dict({\n",
" iterations: {\n",
" 'run_time': end - start_time,\n",
" 'round_time': (end - begin)\n",
" }\n",
" for iterations, begin, end in r\n",
"}, orient='index').plot(figsize=(30,10))"
]
},
{
"cell_type": "markdown",
"id": "functioning-seattle",
"metadata": {},
"source": [
"Improve nats to use an infinite loop rather than infinite recursion"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "organic-demand",
"metadata": {},
"outputs": [],
"source": [
"def nats2(n):\n",
" n -= 1\n",
" while True:\n",
" yield (n := n + 1)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "committed-easter",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1470: 0:00:00.161079\n",
"1471: 0:00:00.142281\n",
"1472: 0:00:00.147174\n",
"1473: 0:00:00.143953\n",
"1474: 0:00:00.149012\n",
"1475: 0:00:00.145238\n",
"1476: 0:00:00.147952\n",
"1477: 0:00:00.146081\n",
"1478: 0:00:00.147671\n",
"RecursionError\n"
]
},
{
"data": {
"text/plain": [
"<AxesSubplot:xlabel='iterations'>"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"r = []\n",
"for iters in range(1470, 1480):\n",
" g = sieve(nats2(2))\n",
" start = datetime.now()\n",
" try:\n",
" for n in range(iters):\n",
" p = next(g)\n",
"# print(f'p: {p}')\n",
" except RecursionError:\n",
" print(\"RecursionError\")\n",
" break\n",
" end = datetime.now()\n",
"\n",
" print(f'{iters:3}: {end - start}')\n",
" r.append(dict(iterations=iters, time=end - start))\n",
"import pandas as pd\n",
"\n",
"pd.DataFrame(r).set_index('iterations').plot()"
]
},
{
"cell_type": "markdown",
"id": "dying-revelation",
"metadata": {},
"source": [
"Improve sieve to use an infinite loop in sieve rather than infite recursion"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "coordinated-concept",
"metadata": {},
"outputs": [],
"source": [
"def sieve2(iterator):\n",
" while True:\n",
" yield (n := next(iterator))\n",
" iterator = (i for i in iterator if i % n)"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "boring-hypothesis",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"RecursionError: 2957\n"
]
}
],
"source": [
"r = []\n",
"for iters in range(2957, 2960):\n",
" g = sieve2(nats2(2))\n",
" start = datetime.now()\n",
" try:\n",
" for n in range(iters):\n",
" p = next(g)\n",
"# print(f'p: {p}')\n",
" except RecursionError:\n",
" print(f\"RecursionError: {iters}\")\n",
" break\n",
" end = datetime.now()\n",
"\n",
" print(f'{iters:3}: {end - start}')\n",
" r.append(dict(iterations=iters, time=end - start))\n",
"\n",
"# pd.DataFrame(r).set_index('iterations').plot()"
]
},
{
"cell_type": "markdown",
"id": "pleased-relief",
"metadata": {},
"source": [
"Use a python opject rather than recursion to avoid all recursion errors"
]
},
{
"cell_type": "code",
"execution_count": 303,
"id": "broad-timeline",
"metadata": {},
"outputs": [],
"source": [
"class Sieve:\n",
"\n",
" def __init__(self, number):\n",
" self.primes = []\n",
" self.nat = n\n",
"\n",
" def __next__(self):\n",
" nat = self.nat\n",
" self.nat += 1\n",
" while self.primes and any([n % prime == 0 for prime in self.primes]):\n",
" nat = self.nat\n",
" self.nat += 1\n",
" self.primes.append(nat)\n",
" return nat\n",
"\n",
" def __iter__(self):\n",
" return self\n"
]
},
{
"cell_type": "code",
"execution_count": 377,
"id": "eight-watch",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 1000\n",
" 2000\n",
" 3000\n",
" 4000\n",
" 5000\n",
" 6000\n",
" 7000\n",
" 8000\n",
" 9000\n",
"10000\n",
"11000\n",
"12000\n",
"13000\n",
"14000\n",
"15000\n",
"16000\n",
"17000\n",
"18000\n",
"19000\n",
"20000\n"
]
}
],
"source": [
"r = []\n",
"g = Sieve(2)\n",
"prev_round = end = start = datetime.now()\n",
"for iters in range(0, 20000, 1000):\n",
" try:\n",
" for n in range(1000):\n",
" p = next(g)\n",
"# print(f'p: {p}')\n",
" except RecursionError:\n",
" print(f\"RecursionError: {iters}\")\n",
" break\n",
" r.append((iters + 1000, datetime.now()))\n",
" print(f'{iters + 1000:5}')\n"
]
},
{
"cell_type": "code",
"execution_count": 378,
"id": "stopped-optimum",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 378,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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7t+j0mO1G1ZeVciYMWOyZcuWIz63Y8eOfOlLXzr0eN26dXnta197skYDAAAAAACOYH9Dc/7ppkW54gt3ZvW2ffns6+fkv95xhnB1nIlXz6Isy7S0nPwLrD01Xg0bNizXXHPNSZ8DAAAAAAA44PbHNueln709X719WV5z6vDc/H/OzytPGZ6iKCo9WrvTercNvOmDyYbjfHGzITOTyz75rKesWLEil156ac4888zMnz8/Z5xxRu65554URZGPfOQjef3rX5/bbrstn/nMZ3LDDTckSd7//vdn7ty5efvb354xY8bkbW97W37yk5+ksbExV199daZMmZKtW7fmjW98Y9auXZuzzz77Wfe9/OAHP5ilS5dmzpw5ueSSS/K+970vV1xxRR566KF861vfyo9//OPs3bs3ixcvzl/91V+loaEh//3f/50uXbrkxhtvTL9+/bJ06dK8733vy+bNm9O9e/d8/etfz5QpU47rlxMAAAAAANq7zbvr8/c3PJzr71+XcQN75PvvOitnjetf6bHaNSuvjmDx4sV573vfm49//ONZs2ZN7r///vzyl7/MBz7wgaxfv/45Xz9gwIDce++9ec973pPPfOYzSZKPfexjefGLX5yFCxfmVa96VVatWvWMr//kJz+Z8ePHZ8GCBfnnf/7npz3/0EMP5Uc/+lHuueeefPjDH0737t1z33335eyzz85//dd/JUne9a535Qtf+ELmz5+fz3zmM3nve997jF8NAAAAAADoeFpaynz/d6ty0b/clp89tCF/fvHE3PRn5wpXJ0HrXXn1HCukTqTRo0fnrLPOyl/8xV/kjW98Y6qrqzN48OCcf/75ueeee1JbW/usr3/1q1+dJDnttNPyox/9KElyxx13HLr/8pe/PH379j3m+S688ML06tUrvXr1Su/evfOKV7wiSTJz5sw88MAD2bNnT37zm9/kda973aHX1NfXH/PnAQAAAABAR7Jk0+78zY8eyu9WbMuZY/vlH141MxMG9az0WB1G641XFdSjx7NfWK2mpuZJ18Kqq6t70vNdunRJklRXV6epqem4z/f4+ydJVVXVocdVVVVpampKS0tL+vTpkwULFhz3zwYAAAAAgPaqrrE5X7p1Sb58+9J071yTT79mVl43d4TrWp1ktg18Fueee25+8IMfpLm5OZs3b84dd9yRM844I6NHj87DDz+c+vr67NixIzfffPNzvtd5552X733ve0mSm266Kdu3b3/Gc3v16pXdu3cf89y1tbUZO3Zsrr766iRJWZa5//77j/n9AAAAAACgvfvN0i25/HO/yudvWZKXzxyam//P+fm900cKVxVg5dWzeNWrXpXf/va3mT17doqiyKc//ekMGTIkSfJ7v/d7mTFjRsaOHZtTTjnlOd/rox/9aN74xjdm+vTpOeecczJq1KhnPLd///550YtelBkzZuSyyy7L+973vuc9+3e/+9285z3vySc+8Yk0NjbmDW94Q2bPnv283wcAAAAAANqz7Xsb8g83Lso189dkVL/u+e93npFzJw6s9FgdWlGWZUU+eO7cueW8efOedGzRokWZOnVqRebpqHzNAQAAAADoiMqyzLX3rc0nfroou/Y35o/OG5c/fcnEdOtcXenROoSiKOaXZTn3SM8958qroii+meSKJJvKspxxhOeLJJ9LcnmSfUneXpblvS9sZAAAAAAAgBNjxZa9+fCPH8yvl2zNqaP65B9fPTNThtRWeiwOOpptA7+V5N+T/NczPH9ZkokH/5yZ5MsHb3kOW7duzUUXXfS04zfffHP69+9fgYkAAAAAAKD9amhqydfuWJrP37IkXaqr8vevnJE3nzEqVVWua9WaPGe8KsvyjqIoxjzLKVcl+a/ywP6DdxVF0acoiqFlWa4/loHKsuwwFz/r379/FixYULHPr9SWkQAAAAAAcLLNW7Etf3Ptg3ls455cPnNIPvqK6Rlc27XSY3EER7Py6rkMT7L6sMdrDh57WrwqiuJdSd6VJKNGjXraG3Xt2jVbt25N//79O0zAqpSyLLN169Z07eq/mAAAAAAAtF879zfmUz97JN+7e1WG9+mWb7xtbi6aOrjSY/Esjke8OmplWX4tydeSZO7cuU9b9jNixIisWbMmmzdvPpljdVhdu3bNiBEjKj0GAAAAAAAcd2VZ5qcPrs/HfvJwtu6pzztfPDZ/ecmk9OhyUtMIx+B4/F9obZKRhz0ecfDY89apU6eMHTv2OIwEAAAAAAB0VKu37cvfXvdQbn10c2YMr80333Z6Zo7oXemxOErHI15dn+T9RVF8P8mZSXYe6/WuAAAAAAAAjlVTc0v+89cr8q//+1iKIvnIy6fm7eeMSU11VaVH43l4znhVFMX/JLkgyYCiKNYk+WiSTklSluVXktyY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\n",
"text/plain": [
"<Figure size 2160x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"start_time = r[0][1]\n",
"pd.DataFrame.from_dict({\n",
" iterations: {\n",
" 'run_time': run_time - start_time,\n",
" 'round_time': (run_time - prev_time)\n",
" }\n",
" for iterations, run_time, prev_time in zip([i for i, t in r], [t for i, t in r], [t for i, t in r[0:1] + r[:-1]])\n",
"}, orient='index').plot(figsize=(30,10))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.8.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment