Skip to content

Instantly share code, notes, and snippets.

@mcejp
Created August 2, 2018 15:17
Show Gist options
  • Save mcejp/4ffc5aa9aa4e7ada44ffc7311d3d0a26 to your computer and use it in GitHub Desktop.
Save mcejp/4ffc5aa9aa4e7ada44ffc7311d3d0a26 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 179,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABHsAAAKNCAYAAACwSmfQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XuwZmV94PvfQ+/eTffuKxdpbopUnMk4VKWk2lajpqLRHIUhHjN4hqmMl3AEmako4DikiXLXQCzDxSlrEAnxEqpwbHVKBEm0Qip6MoItasJF5xAOhkuDgE3f6d27ec4fvTPVQtP7XWuvtd61Hj+fqi53997Pen7v++Xdu/vx3e9OOecAAAAAoAwHjXsAAAAAAJrjsAcAAACgIA57AAAAAArisAcAAACgIA57AAAAAArisAcAAACgIA57AAAAAArisAcAAACgIA57AAAAAAoy0cZFpyan8iEHr2zj0hzAz595OrZPb09NXOvQQw7LLz72xZXXbdx8fxPbF+HIFb9Sa90P//4HT+acD29ihsllk3nxYYsrrztq+bGV1zy65aHKa7rW1e3a+eTOmN463chjccHkRF64ZFETl2rNYatXV17z5GOPtTBJs3Zt3tHYY3Fq8ZJ8yLIVTVxqTkuWL+1kn/nYsWVbJ/v8fOvm2L5zRyOPxZWrlubVRx9aed1Tjz/exPZFOPSII2qt+8k9/9TYYzEddFA+aMGCyuuOX1X989wDm/r/ea6r2/Xsnj2Rn322kcfiwROL89Sibj6f8ot+vuPxxh6Li5csyCtWtPJPUQ5g8+aZ2LljTyOPxUUTi/LUoiVNXIqKNu14eqTHYiuPsEMOXhnnrD2rjUtzAFffeW1j13rxsS+Ov/7L71Re97FbTmlshqH78Mk311p3yJFTP21qhsWHLY5fv+S1lddd+KarKq+59FvnVl7Tta5u199d9P9UXvNCFi5ZFMe9/lcbu14bTj/vDyuvueHjf9LCJM36ydfvauyxeMiyFfHBf3d6U5c7oBPf8LpO9pmPu26v/vWljiu/eENj11p99KFx/frzK6/7wlVXNzbD0L3z3HNqrXv9v/qPjT0WD1qwIBYfWv3/kPzk26t/LXjHVy+vvKZrXd2unU89XXnNC5latCJO+lfvbOx6jO4vvv+Jxh6LK1ZMxLt+v/phI/Pz+T9v7hB6atGS+O2Xv7Gx6zG6L274ykiPRd/GBQAAAFCQkQ57UkpvSSn9JKV0f0ppXdtD0TwNy6Dj8GlYBh2HT8My6Dh8GpZBx+HTsDxzHvaklBZExKci4q0R8fKI+PcppZe3PRjN0bAMOg6fhmXQcfg0LIOOw6dhGXQcPg3LNMoze9ZGxP055wdyztMRcVNEvK3dsWiYhmXQcfg0LIOOw6dhGXQcPg3LoOPwaVigUQ57jo6IfX8czcOzf8ZwaFgGHYdPwzLoOHwalkHH4dOwDDoOn4YFauwFmlNKZ6aUNqSUNmzfvb2py9KhfRs++dST4x6HmvbtOL11etzjUMO+DfdMz4x7HGr6ha+LO3eMexxq2Lfh05u6+XHxNG/fjvnZZ8c9DjXs23DXjM+nQ7Vvx5079ox7HGr4xcfirnGPwxxGOex5JCKO3ef3x8z+2S/IOV+Xc16Tc14ztXCqqfloRuWGhx16WGfDMbLKHSeXTXY2HCOp3HDB5ERnwzGy6l8XFy/pbDhGUrnhylVLOxuOkVXumA7yg2h7pnLDRRM+n/ZQ5Y6LlyzobDhGUuOxuKiz4ahnlK9434uIl6WUXppSmoyI0yLia+2ORcM0LIOOw6dhGXQcPg3LoOPwaVgGHYdPwwLN+X8Z55xnUkp/EBF/GRELIuKGnPM9rU9GYzQsg47Dp2EZdBw+Dcug4/BpWAYdh0/DMo30/QE551sj4taWZ6FFGpZBx+HTsAw6Dp+GZdBx+DQsg47Dp2F5fOMyAAAAQEF+aV/585SPvKvymps/+vkWJumnjZvvj4/dckrldR8++ebKa+rs07VSb9cLufRb5457hFYM8XYdtnp1nH7eH1Zed8PH/6SFaYapzv0XEfGHX/93jc2wZPnSOPENr2vsegdy1+3fqbWuznxd7lXHkm/89072OZB3nntO5TVfuOrqzvZiNO/46uXjHqEVQ7xdi47eE8df/nQnez1w/spa6+rM1+Vetf12d1u9kLXnfHzcI/TGnVefN+4R6DnP7AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgIJMjHuAcbn5o58f9wi9duSKX4kPn3zzuMc4oDrzfeyWU1qYZP/q3n9/GlMNT9KNC9901bhHmNOl3zp33CNU9uRjj8UNH/+TyutOP+8PK6+ps8981tXR5e1q0o4t2+Ku279Ted2Jb3hdC9PsX535ulRnvh1btjW2/1OPPx5fuOrqxq53IO8895xa6+rM1+VefXD8qtXxybdX/1rwjq9eXnnNl95+fuU1Xevqdn3gy/3/OwLdmjrimFh7zh9XXnfn1ee1MM3+rT3n45XX9H2+L9/6R43tv+LYFfGWq06qvO62c29tbIahq3P/RUR88fVfGenjPLMHAAAAoCAOewAAAAAK4rAHAAAAoCBzHvaklI5NKd2eUro3pXRPSunsLgajORqWQcfh07AMOg6fhmXQcfg0LIOOw6dhmUZ5geaZiPjPOee7UkrLIuL7KaVv5pzvbXk2mqNhGXQcPg3LoOPwaVgGHYdPwzLoOHwaFmjOZ/bknDfmnO+afXtrRNwXEUe3PRjN0bAMOg6fhmXQcfg0LIOOw6dhGXQcPg3LVOk1e1JKx0XEKyLijjaGoX0alkHH4dOwDDoOn4Zl0HH4NCyDjsOnYTlGPuxJKS2NiC9HxDk55y37ef+ZKaUNKaUN23dvb3JGGlKl4ZNPPdn9gIykSsfprdPdD8icqjTcMz3T/YCMpNLXxZ07uh+QOVVp+Mwze7ofkJFU6bhlp7+j9lGVhjs2P9P9gIyk0mPxqee9mx6o0nDr01u7H5BKRjrsSSktjL3Rb8w5f2V/H5Nzvi7nvCbnvGZq4VSTM9KAqg0PO/SwbgdkJFU7Ti6b7HZA5lS14YLJUV5aja5V/rq4eEm3AzKnqg0PPnhBtwMykqodly/2d9S+qdpwyYqDux2QkVR+LB66vNsBmVPVhstWLut2QCob5adxpYj4s4i4L+d8Zfsj0TQNy6Dj8GlYBh2HT8My6Dh8GpZBx+HTsEyjPLPntRHxzoh4Y0rph7O/Tmp5LpqlYRl0HD4Ny6Dj8GlYBh2HT8My6Dh8GhZozu8PyDl/JyJSB7PQEg3LoOPwaVgGHYdPwzLoOHwalkHH4dOwTJV+GhcAAAAA/darV/485SPvqrzm5o9+voVJmlXq7WrKh0++uda6j91ySmd7DdVRy4+NC990VeV1l37r3BamGaY699/pf/pvW5ikmhs+/ifjHqEVpd6uF3LX7d+pvObEN7yuhUmaVed2jduhRxwR7zz3nMrrvnDV1S1Ms39dzldnr7quu+4/NnatBzY9Fu/46uWV133p7ec3NkOf1Lldde6/nZuerrymD46/vLu5u9yrD7Y//nDcefV5ney19pyPd7LPfPaqc1/UWbP98ccqr2G4PLMHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAKMjHuAfZ180c/X3nNKR95V5F7jdvGzffHx245pfK6D598c+U1dfapq+5efb9dL+TRLQ/Fpd86t/K6C990VQvTjF+d21Xn/nt0y0OV10BT7rr9O7XWnfiG13W2F0DXHjh/ZWd7HX/505XX9H0+GKe3XHVSrXW3nXtrr/dqm2f2AAAAABTEYQ8AAABAQRz2AAAAABRk5MOelNKClNIPUkpfb3Mg2qNhGXQcPg3LoOPwaVgGHYdPwzLoOHwalqXKM3vOjoj72hqETmhYBh2HT8My6Dh8GpZBx+HTsAw6Dp+GBRnpsCeldExEnBwR17c7Dm3RsAw6Dp+GZdBx+DQsg47Dp2EZdBw+Dcsz6jN7ro6I8yLi2RZnoV0alkHH4dOwDDoOn4Zl0HH4NCyDjsOnYWHmPOxJKf2biPhZzvn7c3zcmSmlDSmlDdt3b29sQOavTsMdW6c7mo5R1ek4rWOv1Gm4Z3qmo+kYVa2vizt3dDQdo6jT8OlN2zqajlHV6Zif9W+YPqn1d9TNz3Q0HaOq03Hnjj0dTcco6jTc+vTWjqajrlGe2fPaiPidlNKDEXFTRLwxpfQXz/2gnPN1Oec1Oec1UwunGh6TearccMmyya5nZG6VO07q2DeVGy6YnOh6RuZW/evi4iVdz8iBVW64ctXSrmdkbpU7poP8INqeqf531BUHdz0jc6vccfGSBV3PyIFVbrhs5bKuZ6SiOb/i5ZzPzzkfk3M+LiJOi4i/zjn/h9YnozEalkHH4dOwDDoOn4Zl0HH4NCyDjsOnYZn83xsAAAAABan0/QE557+JiL9pZRI6oWEZdBw+Dcug4/BpWAYdh0/DMug4fBqWwzN7AAAAAArSq1f+POUj76q85uaPft5ePfKxW04Z9witKPV29cGl3zq38poL33RVC5NA/5z4htd1ttddt3+n8pq+z9ekpx5/PL5w1dVjnWEudeZ757nndLZXHxy/anV88u3Vv+6846uXV17zpbefX3lN17q6XR/48jC/bh9/+dO93+uB81c2PEk3po44Jtae88eV19159XmdrImIWHvOxzvbq44683351j9qbP/ND22O2869tfK6t1x1UmMz9Emd21Xn/qvCM3sAAAAACuKwBwAAAKAgDnsAAAAACuKwBwAAAKAgDnsAAAAACuKwBwAAAKAgDnsAAAAACuKwBwAAAKAgDnsAAAAACuKwBwAAAKAgDnsAAAAACuKwBwAAAKAgDnsAAAAACjIx7gHm65SPvKvWups/+vnO9vpl8uGTb6685mO3nGKvX2IXvumqcY/ArNPP+8Na6274+J/0eq8+WLJ8aZz4htd1stddt3+n1ro683W5V501S77x3yuveSGHHnFEvPPccxq73oF84aqra63rar6u97ruuv/Y2LUe2PRYvOOrlzd2vQPpap+u1bldOzc93dj+ux5ZEA+cv7LyuuMvrz5DnX26NtTbtf3xh+POq8+rvG7tOR9vYZrmdDlfnftv++OPtTBJNbede2vlNW+56qQWJmlWndvVNs/sAQAAACiIwx4AAACAgjjsAQAAACjISIc9KaWVKaX1KaUfp5TuSym9pu3BaJaGZdBx+DQsg47Dp2EZdBw+Dcug4/BpWJ5RX6D5moi4Led8akppMiKWtDgT7dCwDDoOn4Zl0HH4NCyDjsOnYRl0HD4NCzPnYU9KaUVE/EZEvCciIuc8HRHT7Y5FkzQsg47Dp2EZdBw+Dcug4/BpWAYdh0/DMo3ybVwvjYgnIuLPU0o/SCldn1Kaeu4HpZTOTCltSClt2L57e+ODMi+VG+7Y6rHdQ5U7TuvYN5Ub7pme6X5K5lK54+bNW7qfkgOp3PDpTdu6n5K5VO6Yn322+yk5kMoNd83s6H5K5lK5484de7qfkgOp8Vjc1f2UVDLKYc9ERJwYEf8t5/yKiNgeEeue+0E55+tyzmtyzmumFj7vvwvGq3LDJcsmu56RuVXuOKlj31RuuGBy1O+2pUOVO65YsbzrGTmwyg1Xrlra9YzMrXLHdJCfTdIzlRsumvCdJT1UuePiJQu6npEDq/FYXNT1jFQ0yle8hyPi4ZzzHbO/Xx97/0NgODQsg47Dp2EZdBw+Dcug4/BpWAYdh0/DAs152JNzfiwiHkop/cvZP/qtiLi31alolIZl0HH4NCyDjsOnYRl0HD4Ny6Dj8GlYplG/P+D9EXHj7KtyPxARv9/eSLREwzLoOHwalkHH4dOwDDoOn4Zl0HH4NCzMSIc9OecfRsSalmehRRqWQcfh07AMOg6fhmXQcfg0LIOOw6dheVp55c8VRx4ap3zkXZXX3fzRz7cwzf6VON+fv+9LLUzSvg+ffHOtdR+75ZTO9hqqo5YfGxe+6arK6y791rktTDNMde6/0//037YwCUO2Y8u2uOv274x7jAPqcr6u9tqxZfw/QesLV11d5F51vPPcc8Y9Qm1fevv5lde846uXtzBJs0q9XfvzwPkrK685/vKnW5ikWXVu15DdefV54x6BeXrLVSdVXnPbube2MEmze/XxdvmRBAAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFSTnn5i+a0hMR8dP9vOuwiHiy8Q2rK3WOl+ScD2/iQgdoGFHu/deXGbro2If7LqLcOTwWy5jBY7F7Hovz04c5PBbnp9Q5PBbLmMFjsXsei/PThznG9lhs5bDnBTdLaUPOeU1nG5qjFX2Zuw9z9GGGOvoytznmpy9z92GOPsxQR1/mNsf89GXuPszRhxnq6Mvc5pifvszdhzn6MEMdfZnbHPPTl7n7MMc4Z/BtXAAAAAAFcdgDAAAAUJCuD3uu63i/F2KO+enL3H2Yow8z1NGXuc0xP32Zuw9z9GGGOvoytznmpy9z92GOPsxQR1/mNsf89GXuPszRhxnq6Mvc5pifvszdhznGNkOnr9kDAAAAQLt8GxcAAABAQRz2AAAAABSklcOelNJbUko/SSndn1Jat5/3L0opfXH2/XeklI5rYYZjU0q3p5TuTSndk1I6ez8f85sppc0ppR/O/rqw6Tlm93kwpfQPs3ts2M/7U0rpk7P3x9+nlE5sY46qxt1Rw/kbd8PZPXScp3F31HD+xt1wdg8d52ncHTWcv3E3nN1Dx3kad0cN52/cDWf30HGext1RwznknBv9FRELIuIfI+L4iJiMiB9FxMuf8zH/KSKunX37tIj4YgtzHBkRJ86+vSwi/td+5vjNiPh603vvZ5YHI+KwA7z/pIj4RkSkiHh1RNzR9kxD6Kjh8BvqWEZHDYffUMcyOmo4/IY6ltFRw+E31LGMjhoe+Fcbz+xZGxH355wfyDlPR8RNEfG253zM2yLic7Nvr4+I30oppSaHyDlvzDnfNfv21oi4LyKObnKPBr0tIj6f9/puRKxMKR055pnG3lHDeRt7wwgdGzD2jhrO29gbRujYgLF31HDext4wQscGjL2jhvM29oYROjZg7B01PLA2DnuOjoiH9vn9w/H8O/x/f0zOeSYiNkfEoS3MEhERs08Xe0VE3LGfd78mpfSjlNI3Ukr/uqURckT8VUrp+ymlM/fz/lHus671qqOGtfSqYYSONfWqo4a19KphhI419aqjhrX0qmGEjjX1qqOGtfSqYYSONfWqo4bPN9HmxfsgpbQ0Ir4cEefknLc85913RcRLcs7bUkonRcT/iIiXtTDG63LOj6SUXhQR30wp/Tjn/Lct7FMkDcug4/BpWAYdh0/DMug4fBqWQcfh03D/2nhmzyMRcew+vz9m9s/2+zEppYmIWBERTzU9SEppYeyNfmPO+SvPfX/OeUvOedvs27dGxMKU0mFNz5FzfmT2f38WEV+NvU9529co91nXetFRw3npRcPZa+tYXy86ajgvvWg4e20d6+tFRw3npRcNZ6+tY3296KjhvPSi4ey1dayvFx01fGFtHPZ8LyJellJ6aUppMva+ENPXnvMxX4uId8++fWpE/HXOe1+1qCkppRQRfxYR9+Wcr3yBj1k9+3GRUlobe++Ppv/jm0opLfvntyPityPi7ud82Nci4l1pr1dHxOac88Ym56hh7B01nLexN4zQsQFj76jhvI29YYSODRh7Rw3nbewNI3RswNg7ajhvY28YoWMDxt5Rwznkdl6J+qTY+0rY/xgRH579s0sj4ndm3z44Ir4UEfdHxJ0RcXwLM7wu9n7f3N9HxA9nf50UEWdFxFmzH/MHEXFP7H3l8O9GxK+3MMfxs9f/0exe/3x/7DtHiohPzd5f/xARa9roMrSOGg6/oY5ldNRw+A11LKOjhsNvqGMZHTUcfkMdy+io4YF/pdmNAQAAAChAG9/GBQAAAMCYOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCTLRy0QUL8sKJBW1c+nmOWLWi1rrHN23u9V517J7ZEzN79qQmrjWxYDIvnFhced3CI6ea2L4Iuzdur7XumektT+acD29ihgULFuaFCxc1cSkq2L17V+zZs7uRx+KKFUvyEatXVl63fce2JrYfydSSpZXX9H2+iIj/939tbOyxePDypXnZiw5t4lK9ctiS7j7nP7mj+ufUrT97Kp7Zsq2Rx+KCyYk8sXhhE5eiouktzzT2WFy0dHGeOmRZE5ea087NO2utW7yi+t+/utyrju0/3xq7tu1s5LE4NbEkH7Ko3t/Jq9r9km7+PTMfC3+6p7O9Ht7xWGOPxYMWTuSJSX9H7drM9K54dvdMM/9enJzIi5ZMVl53+ILqj98n9nTz7+mIevNFdDvjjs07R3ostnLYs3BiQfzKUavbuPTznH3qW2utu2b9N3q9Vx33P/pYY9daOLE4jl/965XXrb7o1Y3NMHSPXfzdWuvu/afbftrUDAsXLooXv/iEpi7HiP7pn+5u7FpHrF4Zn7rujMrr/ueGv2tshrm8Zk31zxV9ny8i4rd/89LGHovLXnRo/O4n/qipy/XGe05c29len73rzsprvvKhP25s/4nFC+PI17y0sesxup/+5X2NPRanDlkWb/7Df9fU5Q7o7lvqfS044eTqX7e73KuOb/7JFxu71iGLVsTZL//9xq53IE9c282h0nwcflZ3/8D8Lxsub+yxODG5KA4/4VebuhwjeuLuHzd2rUVLJuNf/cavVF73vmWnVF7z6a03V15TV535Irqd8fs3/8NIj0XfxgUAAABQEIc9AAAAAAUZ6bAnpfSWlNJPUkr3p5TWtT0UzdOwDDoOn4Zl0HH4NCyDjsOnYRl0HD4NyzPnYU9KaUFEfCoi3hoRL4+If59Sennbg9EcDcug4/BpWAYdh0/DMug4fBqWQcfh07BMozyzZ21E3J9zfiDnPB0RN0XE29odi4ZpWAYdh0/DMug4fBqWQcfh07AMOg6fhgUa5bDn6Ih4aJ/fPzz7Z78gpXRmSmlDSmnDnj3PNjUfzajRcLqz4RhZjY67OxuOkVRuuHnzjs6GY2SVOz6zpbsfNc9Iqn8+nZ7pbDhGVrnjrm31fkQ5ranccNuMr4s9VLnjszM+p/ZM5YYzvi72XmMv0Jxzvi7nvCbnvGbBAq/7PES/2HBy3ONQ0y92XDjucahh34YrViwZ9zjUtG/Hg5cvHfc41PALn08nJ8Y9DjXt23HR0sXjHoca9m24dMLXxaHat+NBEz6nDtG+DSd8Xey9UU5lHomIY/f5/TGzf8ZwaFgGHYdPwzLoOHwalkHH4dOwDDoOn4YFGuWw53sR8bKU0ktTSpMRcVpEfK3dsWiYhmXQcfg0LIOOw6dhGXQcPg3LoOPwaVigOZ97lXOeSSn9QUT8ZUQsiIgbcs73tD4ZjdGwDDoOn4Zl0HH4NCyDjsOnYRl0HD4NyzTSN9rlnG+NiFtbnoUWaVgGHYdPwzLoOHwalkHH4dOwDDoOn4blGfyrKl2z/hu11p196ls722uIFh45FasvenXldY9d/N3Ka1ZfXH2frnV5u+49/bZa65p0zQcurLzm7E9e2sIkzRri7dq+Y1v8zw1/N9YZhm7I9997Tlxbec1n77qzhUmaVWfGOvfF3y6ZqryGsu3cvDPuvuXuyutOOPmETtZERGfz1VVnvp2bx/9T0J64dsW4R2hFndt1+FmbW5gERvPprTd3ttf7lp1SeU2X87XNj80CAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCTIx7gPk6+9S39n6va9Z/o+FJ2rd74/Z47OLvdrJXV/t0rQ+369gXHRnXfODCyuvO/uSlldfU2adrXd2uD3z87MprYNzec+Layms+e9edLUzS3F5P7tje2P4vOerQ+NRl76687owLPld5zWdq7FPyXr/9l+tqrRuqE04+Ydwj9NrulyyIJ65dUXnd4WdtbmGaYapz/0VExJpm56jj4l87qvqaHz3a+704sPctO6XWuk9vvbnhSV5YnRnbns8zewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCBzHvaklI5NKd2eUro3pXRPSskrjw6MhmXQcfg0LIOOw6dhGXQcPg3LoOPwaVimUX4a10xE/Oec810ppWUR8f2U0jdzzve2PBvN0bAMOg6fhmXQcfg0LIOOw6dhGXQcPg0LNOcze3LOG3POd82+vTUi7ouIo9sejOZoWAYdh0/DMug4fBqWQcfh07AMOg6fhmWq9Jo9KaXjIuIVEXHHft53ZkppQ0ppw549zzYzHY0bveF016NRwagdt2zb3PVojGjUhtu37+56NCoYteMzW7Z1PRojGrXh5qe3dz0aFYz895tR1S0vAAAgAElEQVRpn1P7atSGOzd5LPbZqB2fnZnpejRGNGrDmWkN+27kw56U0tKI+HJEnJNz3vLc9+ecr8s5r8k5r1mwwOs+91G1hpPdD8hIqnRcvnRF9wMypyoNp6YWdj8gI6nS8eDlS7sfkDlVabhi5VT3AzKSSn+/mfQ5tY+qNFy8ymOxr6p0PGhilFcToWtVGk5Math3I53KpJQWxt7oN+acv9LuSLRBwzLoOHwalkHH4dOwDDoOn4Zl0HH4NCzPKD+NK0XEn0XEfTnnK9sfiaZpWAYdh0/DMug4fBqWQcfh07AMOg6fhmUa5Zk9r42Id0bEG1NKP5z9dVLLc9EsDcug4/BpWAYdh0/DMug4fBqWQcfh07BAc36jXc75OxGROpiFlmhYBh2HT8My6Dh8GpZBx+HTsAw6Dp+GZfqlfVWla9Z/o/Kas099awuT9NPCI6di9UWv7mSvxy7+bif7zMfqi7u5LyIi7j39tsau9dDPNsbZn7y08rprPnBh5TV19ulaV7froZ9trLwGmvKeE9fWWvfZu+5seJIXVmfGLucbtzMu+FyRe/XB4hWL44STTxj3GAd09y13V17T5W2qs9fGu+9pbP+FP90Th59V/aeNPnFt9R9aUWefrpV6u5p08a8dVW/djx5teJID7FVzxqo+9sA/drLPkL1v2Sm11n16680NTzJ/fmwWAAAAQEEc9gAAAAAUxGEPAAAAQEEc9gAAAAAUxGEPAAAAQEEc9gAAAAAUxGEPAAAAQEEc9gAAAAAUxGEPAAAAQEEc9gAAAAAUxGEPAAAAQEEc9gAAAAAUZKKNix6xakWcfepb27j081yz/hu11tWZr8u96vjoF77SyT4H8tjF3628ZvXFr25hkmYN9XYd+6Ij45oPXFh53dmfvLSFafavy/nqrKsz3wc+fnblNUC//fTRp+KMCz437jEO6DOXvbvymi5vU9/vP8p2+FmbO9vriWtXVF5Td74ubxcwLJ7ZAwAAAFAQhz0AAAAABXHYAwAAAFAQhz0AAAAABRn5sCeltCCl9IOU0tfbHIj2aFgGHYdPwzLoOHwalkHH4dOwDDoOn4ZlqfLMnrMj4r62BqETGpZBx+HTsAw6Dp+GZdBx+DQsg47Dp2FBRjrsSSkdExEnR8T17Y5DWzQsg47Dp2EZdBw+Dcug4/BpWAYdh0/D8oz6zJ6rI+K8iHj2hT4gpXRmSmlDSmnD1h3PNDIcjarUcHrbju4mo4pKHbds29zdZIyqUsPt23d3NxlVVOr4zJZt3U3GqCo13DM9091kVFGp465tO7ubjFFVarhtxt9Re6pSx2dnfE7toUoNZ3xd7L05D3tSSv8mIn6Wc/7+gT4u53xdznlNznnNsiUHNzYg81en4eTSJR1Nx6jqdFy+dEVH0zGKOg2nphZ2NB2jqtPx4OVLO5qOUdRpuGByoqPpGFWdjouWLu5oOkZRp+HSCX9H7Zs6HQ+a8Dm1T+o0nPB1sfdGeWbPayPid1JKD0bETRHxxpTSX7Q6FU3TsAw6Dp+GZdBx+DQsg47Dp2EZdBw+DQs052FPzvn8nPMxOefjIuK0iPjrnPN/aH0yGqNhGXQcPg3LoOPwaVgGHYdPwzLoOHwalqnKT+MCAAAAoOcqfaNdzvlvIuJvWpmETmhYBh2HT8My6Dh8GpZBx+HTsAw6Dp+G5fCqSozdYxd/d9wjFOuhn22Msz956bjHOKAS53voZxtbmARG89m77qy17j0nru1sr7rrfll85rJ311p3xgWf6/VefbBz8864+5a7K6874eQTWphm/HvVUef+27l5mD8F7Ylru/tBF3X3OvwsP3l1Lhf/6NF6637tqO72qrmuqid2+Cmvc/n01ptrrXvfslM622tUvo0LAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAT4x5gvs4+9a1F7gVDc80HLqy17uxPXtrrveCXxWfvurPymvecuLbXe/3tkqnKa/rgjAs+V2vdZy57d2d70Z67b7m78poTTj6hhUnK8sS1K8Y9Qivq3K7Dz9rcwiTduPhHjxa5Fwf26a0311r3vmWndLZX3XVt8sweAAAAgII47AEAAAAoiMMeAAAAgIKMdNiTUlqZUlqfUvpxSum+lNJr2h6MZmlYBh2HT8My6Dh8GpZBx+HTsAw6Dp+G5Rn1BZqviYjbcs6nppQmI2JJizPRDg3LoOPwaVgGHYdPwzLoOHwalkHH4dOwMHMe9qSUVkTEb0TEeyIics7TETHd7lg0ScMy6Dh8GpZBx+HTsAw6Dp+GZdBx+DQs0yjfxvXSiHgiIv48pfSDlNL1KaXn/SzTlNKZKaUNKaUNW3c80/igzEvlhtPbdnQ/JXOp3HHPnt3dT8mBVG64fbuGPVS54zNbtnU/JQdS/fPp9Ez3UzKXGh19Tu2Zyg23zfg7ag9V7vjsjM+pPVO54Yyvi703ymHPREScGBH/Lef8iojYHhHrnvtBOefrcs5rcs5rli05uOExmafKDSeXetZeD1XuuGDBwq5n5MAqN5ya0rCHKnc8ePnSrmfkwKp/Pp0c9Tvf6VCNjj6n9kzlhksn/B21hyp3PGjC59SeqdxwwtfF3hvlsOfhiHg453zH7O/Xx97/EBgODcug4/BpWAYdh0/DMug4fBqWQcfh07BAcx725Jwfi4iHUkr/cvaPfisi7m11KhqlYRl0HD4Ny6Dj8GlYBh2HT8My6Dh8GpZp1OdevT8ibpx9Ve4HIuL32xuJlmhYBh2HT8My6Dh8GpZBx+HTsAw6Dp+GhRnpsCfn/MOIWNPyLLRIwzLoOHwalkHH4dOwDDoOn4Zl0HH4NCzP4F9V6Zr136i17uxT39rrvcZt98bt8djF3628bvXFr668ps4+Je81VGd/8tJa6675wIWd7TVEU0uWxmvW/Hrldf9zw9+1MM0w1bn/9vpWo3PU8dm77hz3CK14z4lrK6+pc188uWN75TV98JnL3l1r3RkXfK7Xe/XB4hWL44STT+hkr7tvubvWujrzdblXnTUb776n8pohO/yszZXXPHHtihYmgf5537JTKq/59Naba+1VZ12d+eru1bZRXqAZAAAAgIFw2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVJOefmL5rSExHx0/2867CIeLLxDasrdY6X5JwPb+JCB2gYUe7915cZuujYh/suotw5PBbLmMFjsXsei/PThzk8Fuen1Dk8FsuYwWOxex6L89OHOcb2WGzlsOcFN0tpQ855TWcbmqMVfZm7D3P0YYY6+jK3OeanL3P3YY4+zFBHX+Y2x/z0Ze4+zNGHGeroy9zmmJ++zN2HOfowQx19mdsc89OXufswxzhn8G1cAAAAAAVx2AMAAABQkK4Pe67reL8XYo756cvcfZijDzPU0Ze5zTE/fZm7D3P0YYY6+jK3OeanL3P3YY4+zFBHX+Y2x/z0Ze4+zNGHGeroy9zmmJ++zN2HOcY2Q6ev2QMAAABAu3wbFwAAAEBBHPYAAAAAFKSVw56U0ltSSj9JKd2fUlq3n/cvSil9cfb9d6SUjmthhmNTSrenlO5NKd2TUjp7Px/zmymlzSmlH87+urDpOWb3eTCl9A+ze2zYz/tTSumTs/fH36eUTmxjjqrG3VHD+Rt3w9k9dJyncXfUcP7G3XB2Dx3nadwdNZy/cTec3UPHeRp3Rw3nb9wNZ/fQcZ7G3VHDOeScG/0VEQsi4h8j4viImIyIH0XEy5/zMf8pIq6dffu0iPhiC3McGREnzr69LCL+137m+M2I+HrTe+9nlgcj4rADvP+kiPhGRKSIeHVE3NH2TEPoqOHwG+pYRkcNh99QxzI6ajj8hjqW0VHD4TfUsYyOGh74VxvP7FkbEffnnB/IOU9HxE0R8bbnfMzbIuJzs2+vj4jfSimlJofIOW/MOd81+/bWiLgvIo5uco8GvS0iPp/3+m5ErEwpHTnmmcbeUcN5G3vDCB0bMPaOGs7b2BtG6NiAsXfUcN7G3jBCxwaMvaOG8zb2hhE6NmDsHTU8sDYOe46OiIf2+f3D8fw7/H9/TM55JiI2R8ShLcwSERGzTxd7RUTcsZ93vyal9KOU0jdSSv+6pRFyRPxVSun7KaUz9/P+Ue6zrvWqo4a19KphhI419aqjhrX0qmGEjjX1qqOGtfSqYYSONfWqo4a19KphhI419aqjhs830ebF+yCltDQivhwR5+Sctzzn3XdFxEtyzttSSidFxP+IiJe1MMbrcs6PpJReFBHfTCn9OOf8ty3sUyQNy6Dj8GlYBh2HT8My6Dh8GpZBx+HTcP/aeGbPIxFx7D6/P2b2z/b7MSmliYhYERFPNT1ISmlh7I1+Y875K899f855S8552+zbt0bEwpTSYU3PkXN+ZPZ/fxYRX429T3nb1yj3Wdd60VHDeelFw9lr61hfLzpqOC+9aDh7bR3r60VHDeelFw1nr61jfb3oqOG89KLh7LV1rK8XHTV8YW0c9nwvIl6WUnppSmky9r4Q09ee8zFfi4h3z759akT8dc57X7WoKSmlFBF/FhH35ZyvfIGPWT37cZFSWht774+m/+ObSikt++e3I+K3I+Lu53zY1yLiXWmvV0fE5pzzxibnqGHsHTWct7E3jNCxAWPvqOG8jb1hhI4NGHtHDedt7A0jdGzA2DtqOG9jbxihYwPG3lHDOeR2Xon6pNj7Stj/GBEfnv2zSyPid2bfPjgivhQR90fEnRFxfAszvC72ft/c30fED2d/nRQRZ0XEWbMf8wcRcU/sfeXw70bEr7cwx/Gz1//R7F7/fH/sO0eKiE/N3l//EBFr2ugytI4aDr+hjmV01HD4DXUso6OGw2+oYxkdNRx+Qx3L6KjhgX+l2Y0BAAAAKEAb38YFAAAAwJg47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoyEQbF125alVeffTRbVz6ebY8+kitdcuPqj5fl3vV8dgjj8TTmzalJq61fPLgfMSSZU1cioru3/zkkznnw5u41sTEQXnh5ILK66aOOq7ymu2PPlh5Tdd7dWX39J6YmXm2kcfiyuVT+agXray87pEnnmxi+5Ecffhhldf0fb6IiPv+8dHGHovLJ5bmwxcd2sSlirD0yEWV12zbuKvymid2PRVbZrY18lhcvGhZXjbV74arjlpYec2mR3e3MEmzntj008YeiwsmF+aJg6v/99d3q6eqf62PiHhs+56GJ9m/mWd2xZ7p3Y08FhdNLcxThxzcxKV6ZdXUcbXWbdr+YGd7PfCTuxt7LB40MZEnJqt/zurSi4+t/veHf3qou7/f1DEzvTuenZlp5u+oh6zMRx2zuvK6pzZtbGL7kRy66sjKa/o+X0TEff/wk5Eei60c9qw++uj4sy9/pY1LP883L1pXa92bL7mi13vV8X//299t7FpHLFkWV77u7Y1dj9H9zi2f+WlT11o4uSB+5Verf6Fae8FVldfcedkZldd0vVdX7v9xc1/oj3rRyvj8n/6nyusuuPa6xmaYy2VnnVl5Td/ni4h45f/5kcYei4cvOjT++F+f39TlBu/1646vvObbVzxQec0f3XN55TUvZNnUofF//R8XNXa9Npx64RGV16y/9PEWJmnWp246vbHH4sTBi+KoV/1aU5frjXWvqvd/0F1xx9aGJ9m/R+/4UWPXmjrk4Pitc09s7Hp9cdorr6+17qbvvbezvU79jX/R3GNxcmEc8asvbepyrfjEJ06vvOb9H7qhhUma8/iP/7/GrnXUMavj87dWv703rr+ksRnm8nunVv+63ff5IiJeeexrR3os+jYuAAAAgIKMdNiTUnpLSuknKaX7U0r1nt7CWGlYBh2HT8My6Dh8GpZBx+HTsAw6Dp+G5ZnzsCeltCAiPhURb42Il0fEv08pvbztwWiOhmXQcfg0LIOOw6dhGXQcPg3LoOPwaVimUZ7ZszYi7s85P5Bzno6ImyLibe2ORcM0LIOOw6dhGXQcPg3LoOPwaVgGHYdPwwKNcthzdEQ8tM/vH579s1+QUjozpbQhpbTh6U2bmpqPZlRuuHn6mc6GY2SVO+6Zebaz4RhJ5YabtmzvbDhGVrnjlpltnQ3HSCo33LlLwx6q/nVxd/9/+tgvmcoNd23XsIcqd3x2Zqaz4RhJ9b+j/vzpzoajnsZeoDnnfF3OeU3Oec3KVauauiwd2rfhisnyfqTlL4t9Oy6Y8BrsQ7Rvw1XLp8Y9DjXt23H5xNJxj0MN+zZcvEjDofqFr4sL+/2jntm/fRsumtJwqPbteNBEKz8Umpb9wt9RD1k57nGYwyj/EnwkIo7d5/fHzP4Zw6FhGXQcPg3LoOPwaVgGHYdPwzLoOHwaFmiUw57vRcTLUkovTSlNRsRpEfG1dseiYRqWQcfh07AMOg6fhmXQcfg0LIOOw6dhgeZ8/lzOeSal9AcR8ZcRsSAibsg539P6ZDRGwzLoOHwalkHH4dOwDDoOn4Zl0HH4NCzTSN8smXO+NSJubXkWWqRhGXQcPg3LoOPwaVgGHYdPwzLoOHwalsertwIAAAAUZPAvg/7mS66ote6bF63rbK8hSscsi8kr39DJXtMfvL2Tfeajq/siIiJu+Ux3e72AOy87o8i91l7QzX278b+c29i1Hnniybjg2usau94voz7cf0uPXBSvX3d8J3t9+4oHaq3rar666sy39LxFje2/6qiFceqFR1Ret/7SxyuvqbNPyXt96qZayxq17lXLOtvriju2drJmqFZNHRenvfL6Tva66Xvv7WSf+ahzXwzhdvXB+z90w7hH6LWnNm2MG9dfUnnd7516UeU1dfaZz7o6urxdo/LMHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKMhEGxfd8ugj8c2L1rVx6ed58yVXdLqujq7uiy2PPtLYtfLDW2P6g7dXXjd55Rs6WRMRnc1XV535mjZ11HGx9oKrKq+787IzKq9Ze8FnKq+pu1eX6sy3/dEnW5iEIdu2cVd8+4oHOtnr9euOr7WuznxD2Kspmx7dHesvfbyTveruc+qFR3S2Vx1d7vVCVk8tiHWvWtbJXlfcsbWTfSKi9m3qcsYhOu2V19dad9P33tvwJP3Ya6j+6ydOr7Xu/R+6odd7jduhq46M3zv1osrrblx/SeU1dfYpea+rz/2rkT7OM3sAAAAACuKwBwAAAKAgDnsAAAAACjLnYU9K6diU0u0ppXtTSveklM7uYjCao2EZdBw+Dcug4/BpWAYdh0/DMug4fBqWaZQXaJ6JiP+cc74rpbQsIr6fUvpmzvnelmejORqWQcfh07AMOg6fhmXQcfg0LIOOw6dhgeZ8Zk/OeWPO+a7Zt7dGxH0RcXTbg9EcDcug4/BpWAYdh0/DMug4fBqWQcfh07BMlV6zJ6V0XES8IiLu2M/7zkwpbUgpbdixa1cz09G4URtunn6m69GoYNSOz2zZ3PVojGjUhtPTe7oejQpG7bhlZlvXozGiURvu3KVhn43acduO6a5HY0Qjfz59+uddj0YFo3Z8dmam69EY0agNN/386a5Ho6KRD3tSSksj4ssRcU7Oectz359zvi7nvCbnvGbJokVNzkhDqjRcMXlw9wMykiodD16+ovsBmVOVhpOTC7ofkJFU6bh8Ymn3AzKnKg0XL9Kwr6p0XLpksvsBmVOlz6crD+l+QEZSpeNBE6O8mghdq9Jw1SErux+QSkY67EkpLYy90W/MOX+l3ZFog4Zl0HH4NCyDjsOnYRl0HD4Ny6Dj8GlYnlF+GleKiD+LiPtyzle2PxJN07AMOg6fhmXQcfg0LIOOw6dhGXQcPg3LNMoze14bEe+MiDemlH44++uklueiWRqWQcfh07AMOg6fhmXQcfg0LIOOw6dhgeb8Zsmc83ciInUwCy3RsAw6Dp+GZdBx+DQsg47Dp2EZdBw+DctU6adxAQAAANBvg38Z9G9etK7WujdfckVne/0ymf7g7ZXXTF75hlp71V1XR53b1QfbH30w7rzsjMrr1l7wmRamGb8698VQXXbWmZXXXHDtdbX2qruuji5v11B9+4oHaq17/brji9tr28Zdlde8kFVHLYxTLzyisesdyPpLH+9kn/no6r6IiPjUTc1d67Hte+KKO7Y2d8EWrHvVsspr+n6bmrRp+4Nx0/feO+4xGlf3Np32yus722uo3v+hG4rca9ye2rQxblx/ybjHGLS27z/P7AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgII47AEAAAAoiMMeAAAAgIJMjHsAyjJ55Rs622v6g7dXXlN3vjrr6swHz3X04YfFZWedWXndBdde18I041fndtW5/yIibrvtI7XWUaZNj+6O9Zc+XnndqRce0cI0+1dnvi71fT4AKIln9gAAAAAUxGEPAAAAQEEc9gAAAAAUZOTDnpTSgpTSD1JKX29zINqjYRl0HD4Ny6Dj8GlYBh2HT8My6Dh8GpalyjN7zo6I+9oahE5oWAYdh0/DMug4fBqWQcfh07AMOg6fhgUZ6bAnpXRMRJwcEde3Ow5t0bAMOg6fhmXQcfg0LIOOw6dhGXQcPg3LM+oze66OiPMi4tkX+oCU0pkppQ0ppQ07du1qZDgaVanh5ulnupuMKip13DPzgh/G+FRquGnL9u4mo4pKHbfMbOtuMkZVqeHOXRr2VLWvi7t3dzcZo6rUcNd2DXuqUsdnZ2a6m4xRVfu6uH26u8moZc7DnpTSv4mIn+Wcv3+gj8s5X5dzXpNzXrNk0aLGBmT+6jRcMXlwR9MxqjodF0x4DfY+qdNw1fKpjqZjVHU6Lp9Y2tF0jKJOw8WLNOybWl8XFy7saDpGUafhoikN+6ZOx4MmJjqajlHU+ro4NdnRdNQ1yr8EXxsRv5NSejAiboqIN6aU/qLVqWiahmXQcfg0LIOOw6dhGXQcPg3LoOPwaVigOQ97cs7n55yPyTkfFxGnRcRf55z/Q+uT0RgNy6Dj8GlYBh2HT8My6Dh8GpZBx+HTsEy+xwMAAACgIJW+WTLn/DcR8TetTEInNCyDjsOnYRl0HD4Ny6Dj8GlYBh2HT8NyeGYPAAAAQEFaeRn05UcdHW++5IrK67550brKa+rsU1fdvbq6XTfd/buV1zRt+oO3V14zeeUbWpikWXVuVx9MHXVcrL3gqsrr7rzsjMpr1l7wmcprulZnxjr3RZMeeeLJuODa6yqvu+ysMyuvqbNP10q9XU16/brja6379hUPFLfX0vP8dFB+0eqpBbHuVcs62euKO7Z2tq7ubao74zitmjouTnvl9eMe44Bu+t57K6+pe5vq7DVk//UTp1de8/4P3dDCJM0a4u06dNWR8XunXlR53Y3rL2lhmmGqc/9FRFx97l+N9HGe2QMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQEIc9AAAAAAVx2AMAAABQkIk2Lrrl0Ufimxeta+PSjakz35svuaKFSfavznxbHn2khUnaN/3B24vcqw+2P/pg3HnZGZ3s1dU+XVt7wWcqr9n4X85tYZJqLrj2usprLjvrzCL36oOlRy6K1687vpO9vn3FA7XWdTVf13s1ZdVRC+PUC4+ovG79pY+3MM3+dTlfnXV15ouI+NRNtZbt12Pb98QVd2ytvG7dq5Z1siYias1XZw1zu+l77x33CHM67ZXXV14zhNv1Qt7/oRvGPUIrhni7ntq0MW5cf0nldb936kWV19TZp666e/XxdnlmDwAAAEBBHPYAAAAAFGSkw56U0sqU0vqU0o9TSvellF7T9mA0S8My6Dh8GpZBx+HTsAw6Dp+GZdBx+DQsz6iv2XNNRNyWcz41pTQZEUtanIl2aFgGHYdPwzLoOHwalkHH4dOwDDoOn4aFmfOwJ6W0IiJ+IyLeExGRc56OiOl2x6JJGpZBx+HTsAw6Dp+GZdBx+DQsg47Dp2GZRvk2rpdGxBMR8ecppR+klK5PKU0994NSSmemlDaklDbs2LWr8UGZl8oNN08/0/2UzKVyxz0zz3Y/JQdSueH09J7up2QulTs+tXlz91NyINW/Lv5cwx6q/nVx9+7up+RAKjfc8vTPu5+SuVTu+OzMTPdTciCVG+7c7iyo70Y57JmIiBMj4r/lnF8REdsj4nk/FzznfF3OeU3Oec2SRYsaHpN5qtxwxeTBXc/I3Cp3XDDhNdh7pqlOYtUAAB9oSURBVHLDyckFXc/I3Cp3PHTFiq5n5MCqf108RMMeqv51ceHCrmfkwCo3XL7ykK5nZG6VOx40MeqridCRyg0XT012PSMVjfIvwYcj4uGc8x2zv18fe/9DYDg0LIOOw6dhGXQcPg3LoOPwaVgGHYdPwwLNediTc34sIh5KKf3L2T/6rYi4t9WpaJSGZdBx+DQsg47Dp2EZdBw+Dcug4/BpWKZRnz/3/oi4cfZVuR+IiN9vbyRaomEZdBw+Dcug4/BpWAYdh0/DMug4fBoWZqTDnpzzDyNiTcuz0CINy6Dj8GlYBh2HT8My6Dh8GpZBx+HTsDxevRUAAACgIK28DPryo46ON19yRRuXHqSu7oub7v7dTvY5kMkr31B5zfQHb29hkmaVerteyNoLPlN5zZ2XndH7vequq2r7o082dq2jDz8sLjvrzMrrLrj2usZmmEud+bpUd77bbvtIYzNs27grvn3FA41drw1dzvf6dcdXXlNnvm0bd1Ve07RTLzyi8pr1lz7ewiTNqnO7huyKO7aOe4QDWveqZbXW9f127c+m7Q/GTd9777jH6I0698Vpr7y+1l7r41/UWtek//qJ0yuvef+HbmhhkmYN8XYduurI+L1TL6q87sb1l7Qwzf51OV+ddXXmi4i4+ty/GunjPLMHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAAAAoCAOewAAAAAK4rAHAADg/2/v/mPtLusEj38e2tsWyo/yS9FCQLJkJ84mG5wuUcbdiCbULRtJs4Zogs5upgVi3MiPYcvGhE1ITGgIhZ3EXaB1NzPBrDJqDRHcYiKT2Q0RrQgqoLPoYtqOCCJtAaEt9dk/epzUctt7vt/z/fnweiU33vae5zyfc94cuefh3HMBCpJyzs1faUovRMQv5vnSGRHx68Y3rK7UOc7NOZ/ZxBUdo2FEufffUGboouMQ7ruIcufwWCxjBo/F7nkszmYIc3gszqbUOTwWy5jBY7F7HouzGcIcvT0WWznsOepmKW3POa/qbENztGIocw9hjiHMUMdQ5jbHbIYy9xDmGMIMdQxlbnPMZihzD2GOIcxQx1DmNsdshjL3EOYYwgx1DGVuc8xmKHMPYY4+Z/BjXAAAAAAFcdgDAAAAUJCuD3vu6Xi/ozHHbIYy9xDmGMIMdQxlbnPMZihzD2GOIcxQx1DmNsdshjL3EOYYwgx1DGVuc8xmKHMPYY4hzFDHUOY2x2yGMvcQ5uhthk7fswcAAACAdvkxLgAAAICCtHLYk1L6cErppymlZ1JKN83z9aUppS9Pvv5oSum8FmY4J6X0cErpqZTSkymlz8xzmQ+klPaklB6ffNzc9ByTfZ5NKf1ossf2eb6eUkp/Obk/fphSek8bc1TVd0cNZ9d3w8keOs6o744azq7vhpM9dJxR3x01nF3fDSd76DijvjtqOLu+G0720HFGfXfUcAE550Y/ImJRRPwsIs6PiCUR8UREvPuIy3wqIu6afP6xiPhyC3O8IyLeM/n8pIj4+3nm+EBEfKPpveeZ5dmIOOMYX18TEd+MiBQR742IR9ueaQwdNRx/Qx3L6Kjh+BvqWEZHDcffUMcyOmo4/oY6ltFRw2N/tPHKnosi4pmc889zzvsj4ksRcfkRl7k8Iv5q8vlXIuJDKaXU5BA551/mnB+bfP5yRDwdESub3KNBl0fEX+dDvhMRK1JK7+h5pt47ajiz3htG6NiA3jtqOLPeG0bo2IDeO2o4s94bRujYgN47ajiz3htG6NiA3jtqeGxtHPasjIgdh/15Z7z5Dv/Hy+Sc34iIPRFxeguzRETE5OViF0bEo/N8+X0ppSdSSt9MKf1xSyPkiHgopfT9lNJV83x9mvusa4PqqGEtg2oYoWNNg+qoYS2DahihY02D6qhhLYNqGKFjTYPqqGEtg2oYoWNNg+qo4ZstbvPKhyCldGJEfDUirs057z3iy49FxLk551dSSmsi4usRcUELY7w/57wrpfS2iPhWSuknOee/a2GfImlYBh3HT8My6Dh+GpZBx/HTsAw6jp+G82vjlT27IuKcw/589uTv5r1MSmlxRJwSES82PUhKaS4ORf9izvlrR34957w35/zK5PMHI2IupXRG03PknHdN/vf5iNgah17ydrhp7rOuDaKjhjMZRMPJdetY3yA6ajiTQTScXLeO9Q2io4YzGUTDyXXrWN8gOmo4k0E0nFy3jvUNoqOGR9fGYc/3IuKClNK7UkpL4tAbMd1/xGXuj4g/m3z+0Yj4ds6H3rWoKSmlFBFfiIinc86bjnKZsyaXi5TSRXHo/mj6H77lKaWTfv95RFwaET8+4mL3R8Qn0yHvjYg9OedfNjlHDb131HBmvTeM0LEBvXfUcGa9N4zQsQG9d9RwZr03jNCxAb131HBmvTeM0LEBvXfUcAG5nXeiXhOH3gn7ZxHx2cnf3RIRH5l8viwi/iYinomI70bE+S3M8P449HNzP4yIxycfayLimoi4ZnKZT0fEk3HoncO/ExEXtzDH+ZPrf2Ky1+/vj8PnSBHx+cn99aOIWNVGl7F11HD8DXUso6OG42+oYxkdNRx/Qx3L6Kjh+BvqWEZHDY/9kSYbAwAAAFCANn6MCwAAAICeOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKIjDHgAAAICCOOwBAAAAKMjiNq506dyyfMKy5W1cdWPefuaZldf86oUXBr3Xb19/NfYdeD1VXjiPxcfP5aUnLau8buXJ51Zes2vvLyqvKXmv377wyq9zztX/oZnHkkVL8rK56h2ZzesHXo/9B/c38lhccdqKfNbKdzZxVVT00x8/3dhj8dQVJ+d3nlX9qnbs2Ft5zTnnnFx5Tde6ul3/8NwL8dLuvY08FpcvPT6vOOGUyutOPrX6mr0v7am8pmtd3q5/2P2rxh6Lxy2ay4vnllZed/bpZ1des/PFnZXX1FVnvrrq3K43DuyL3x080Mhj8bi5Zfm4Gs8zTjzvrMprXnn2ucpr6qozX0S9GevutefHTzX378UTT8krT397E1fVml27c+U1K1c08o95a3a9+Kt46ZU9zTxfXLQoL5lr5TihV2eduaLWuude2N3ZXv9v5/NTPRZbqXPCsuXxwQsva+OqG3Pd1esqr7nj7i2D3uvbP3ig8pqjWXrSsvijf3th5XUbL91cec2Gh9ZXXlPyXo/d9b/rnRLNY9ncsrjovH/R1NUxpe8++73Gruusle+MLV+/t7HrY3r/8p/8SWOPxXeedWb8zy/cWnndDdduq7zm9jtXV17Tta5u18f//KbKa45mxQmnxNWXfLLyutVXrKm8Ztt9D1Ze07Uub9d/3npbY4/FxXNL423n/vPK6z535cbKa268d0PlNXXVma+uOrfr+V880dj+xy1bHqf8SfV//i7eUv3/Dx5ZV/3/t+uqM19EvRnr7vWNC/5ZY4/Flae/Pe777H9t6upacfPW1yuvuWXtsP8j6xWf+1Rj17VkbnH80XnvaOz6huL69Wtrrdu0eWtne33iL+6c6rHox7gAAAAACjLVYU9K6cMppZ+mlJ5JKTX3n8nojIZl0HH8NCyDjuOnYRl0HD8Ny6Dj+GlYngUPe1JKiyLi8xHxryPi3RHx8ZTSu9sejOZoWAYdx0/DMug4fhqWQcfx07AMOo6fhmWa5pU9F0XEMznnn+ec90fElyLi8nbHomEalkHH8dOwDDqOn4Zl0HH8NCyDjuOnYYGmOexZGRE7Dvvzzsnf/YGU0lUppe0ppe37Duxraj6aUbnhG68d6Gw4pla544GD+zsbjqlUbrj7Ny91NhxTq9zxpd3Vf/sUrarc8NV9r3U2HFOr3PF3B31/MzCVG2bPM4aocsffvDL83zr4FlP9+eLBg50NRz2NvUFzzvmenPOqnPOqpTV+pSX9O7zh4uPn+h6Hmg7vOLdoSd/jUMPhDVecdmrf41DT4R1PXTH8X4fOmx3ecPnS4/seh5oO73jcIt/fjNHhDZPnGaN1eMfTTjyl73Go4Q+eLy5a1Pc4LGCaw55dEXHOYX8+e/J3jIeGZdBx/DQsg47jp2EZdBw/Dcug4/hpWKBpDnu+FxEXpJTelVJaEhEfi4j72x2LhmlYBh3HT8My6Dh+GpZBx/HTsAw6jp+GBVq80AVyzm+klD4dEdsiYlFE/Pec85OtT0ZjNCyDjuOnYRl0HD8Ny6Dj+GlYBh3HT8MyLXjYExGRc34wIh5seRZapGEZdBw/Dcug4/hpWAYdx0/DMug4fhqWp7E3aAYAAACgf1O9sqdEd9y9pfKa665e19leY7XhofWV12y8dHORe73VrLtrba11W67ZOui9+rbn5V/FAw9vqrzuskuur7ymzj5dG+vt2rFjb9xw7bbK626/c3XlNXX2KXWvHTv6/5X32+6r/h9JV1+xpsi9mM5tV27sewR68Mi6W2utu3jLTZ3tBW8FmzZ393yh7b28sgcAAACgIA57AAAAAArisAcAAACgIA57AAAAAArisAcAAACgIA57AAAAAArisAcAAACgIA57AAAAAArisAcAAACgIA57AAAAAArisAcAAACgIA57AAAAAAqyuO8BDnfd1esqr7nj7i0tTNLsXkO/XX3b8ND6Ivd6q9lyzdYi94ImnHPOyXH7nasrr7vh2m0tTDPOvercfx//84crr2na6ivW9D1CK+rcrm33PdjCJN248d4NldfcduXGzvbqUp3b9dm7qn8v3LRH1t1aec3FW25qYZL51ZlvlnVjdfPW1/se4Zi6nO+Wtcs622s+Z525Iq5fv7byuk2bq38fX2efunvV1dV9UYVX9gAAAAAUxGEPAAAAQEEc9gAAAAAUZMHDnpTSOSmlh1NKT6WUnkwpfaaLwWiOhmXQcfw0LIOO46dhGXQcPw3LoOP4aVimad6g+Y2IuCHn/FhK6aSI+H5K6Vs556dano3maFgGHcdPwzLoOH4alkHH8dOwDDqOn4YFWvCVPTnnX+acH5t8/nJEPB0RK9sejOZoWAYdx0/DMug4fhqWQcfx07AMOo6fhmWq9J49KaXzIuLCiHh0nq9dlVLanlLavu/Avmamo3HTNnzjtQNdj0YF03Y8cHB/16MxpWkb/vblYf+K0be6aTu+tHtv16MxpWkbvrrvta5Ho4JpO/7uoO9vhmrahtnzjEGbtuNvXtnT9WhMadqGe1/178Whm/qwJ6V0YkR8NSKuzTm/6bvWnPM9OedVOedVS+eWNjkjDanScPHxc90PyFSqdJxbtKT7AVlQlYYnnLSs+wGZSpWOp644ufsBWVCVhsuXHt/9gEylSsfjFvn+ZoiqNEyeZwxWlY6nnXhK9wOyoCoNT17u34tDN9VhT0ppLg5F/2LO+WvtjkQbNCyDjuOnYRl0HD8Ny6Dj+GlYBh3HT8PyTPPbuFJEfCEins45b2p/JJqmYRl0HD8Ny6Dj+GlYBh3HT8My6Dh+GpZpmlf2/GlEfCIiPphSenzysabluWiWhmXQcfw0LIOO46dhGXQcPw3LoOP4aVigBX/1es75/0RE6mAWWqJhGXQcPw3LoOP4aVgGHcdPwzLoOH4alqnSb+MCAAAAYNgWfGXP0F139bpa6+64e0vDkwxjr75tvHRz5TUbHlpvL2jYAw9X/3Hryy65vsi9xuz2O1f3PQIz2nbfg53ttfqK6q+473K+ITj79LPjc1durLzuxns3dLKma7d1dF88/+LOymuO5sTzzoqLt9xUed0j627tZE3XurovmrZrd46bt77eyV63rK33m03rzNflXnXW7NqdK685mude2B2bNm9t7PqOpe4+169f29leXd0XVXhlDwAAAEBBHPYAAAAAFMRhDwAAAEBBHPYAAAAAFMRhDwAAAEBBHPYAAAAAFMRhDwAAAEBBHPYAAAAAFMRhDwAAAEBBHPYAAAAAFMRhDwAAAEBBHPYAAAAAFGRx3wMA0LzLLrm+8poHHt7UwiTN7jX029W0G67dVnnN7XeubmGSZpV6uwCYzsoVKW5Zu6zvMY6py/m62usnT6VO9mEYvLIHAAAAoCAOewAAAAAK4rAHAAAAoCBTH/aklBallH6QUvpGmwPRHg3LoOP4aVgGHcdPwzLoOH4alkHH8dOwLFVe2fOZiHi6rUHohIZl0HH8NCyDjuOnYRl0HD8Ny6Dj+GlYkKkOe1JKZ0fEZRGxpd1xaIuGZdBx/DQsg47jp2EZdBw/Dcug4/hpWJ5pX9lzZ0T8x4j4XYuz0C4Ny6Dj+GlYBh3HT8My6Dh+GpZBx/HTsDALHvaklP5NRDyfc/7+Ape7KqW0PaW0fd+BfY0NyOzqNHzjtQMdTce06nQ8cHB/R9MxjToNf/vy6x1Nx7TqdHxp996OpmMadRq+uu+1jqZjWnU6vvzq7o6mYxp1Gu7/zUsdTce06nT8zSt7OpqOadR6vnjwYEfTUdc0r+z504j4SErp2Yj4UkR8MKV075EXyjnfk3NelXNetXRuacNjMqPKDRcfP9f1jCyscse5RUu6npFjq9zwhJOWdT0jC6vc8dQVJ3c9I8dWueHypcd3PSMLq9zxpOUrup6RY6vccMlpp3Y9Iwur3PG0E0/pekaOrfrzxUWLup6RihY87Mk5/6ec89k55/Mi4mMR8e2c85WtT0ZjNCyDjuOnYRl0HD8Ny6Dj+GlYBh3HT8MyVfltXAAAAAAM3OIqF845/21E/G0rk9AJDcug4/hpWAYdx0/DMug4fhqWQcfx07AcXtkDAAAAUJBKr+wZojvu3tL3CAu67up1ldeM4XbNZ8ND6+1FJevuWlt5zZZrtrYwSVkeeHhT3yO0Yqy3a8eOvXHDtds62avuPrffubqzveqos9eOHf3/FrTVV6zpbK9t9z1Yec3Q52vazhd3xo33buhkr9uu3FhrXVfz1d2rzu367F3Vvxc+mleefS4eWXdrY9d3LBdvuamTfSKi9m3q6r5o2q7dOW7e6jeOdm3X7tzYdZ115oq4fn317+M3ba7+fXydferuVVdX90UVXtkDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUBCHPQAAAAAFcdgDAAAAUJDFfQ9wuDvu3tL3CMd03dXraq0b+u3q28ZLN9dat+Gh9YPei+lsuWZr3yMU6bJLrq+85oGHN7UwSbNKvV1Nuv3O1YPf64ZrtzU8yXBtu+/BymtWX7GmhUmaVed2jdltV26svObGezd0tleX6tyu51/c2cIk1Vy85abKax5Zd2sLkzSr1Nt1NLesXdbZXjdvfb3ymqHP16TnXtgdmzZ38318V/vMYogzemUPAAAAQEEc9gAAAAAUZKrDnpTSipTSV1JKP0kpPZ1Sel/bg9EsDcug4/hpWAYdx0/DMug4fhqWQcfx07A8075nz3+JiP+Vc/5oSmlJRJzQ4ky0Q8My6Dh+GpZBx/HTsAw6jp+GZdBx/DQszIKHPSmlUyLiX0XEv4uIyDnvj4j97Y5FkzQsg47jp2EZdBw/Dcug4/hpWAYdx0/DMk3zY1zviogXIuJ/pJR+kFLaklJa3vJcNEvDMug4fhqWQcfx07AMOo6fhmXQcfw0LNA0hz2LI+I9EfHfcs4XRsSrEfGm3/GXUroqpbQ9pbR934F9DY/JjCo3fOO1A13PyMIqdzxw0IH8wFRu+NuX+/21msyr+mPxjde6npFjq9zw1X0aDlDljr876PubgancMHueMUTVny/u39P1jBxb9eeLBw92PSMVTXPYszMiduacH538+Stx6B+EP5BzvifnvCrnvGrp3NImZ2R2lRsuPn6u0wGZSuWOc4uWdDogC6rc8ISTlnU6IFOp/lhcfHynA7Kgyg2XL9VwgCp3PG6R728GpnLD5HnGEFV/vrjklE4HZEHVny8uWtTpgFS34GFPzvm5iNiRUvqnk7/6UEQ81epUNErDMug4fhqWQcfx07AMOo6fhmXQcfw0LNO0v43rP0TEFyfvyv3ziPj37Y1ESzQsg47jp2EZdBw/Dcug4/hpWAYdx0/Dwkx12JNzfjwiVrU8Cy3SsAw6jp+GZdBx/DQsg47jp2EZdBw/DcszzXv2AAAAADAS0/4YV3Guu3pd5TV33L1l8Hv1beOlmyuv2fDQenu15IxzV8S6u9ZWXrflmq2V19TZp9S9fn71/628pmkPPLyp8prLLrm+yL3eam64dlvfI3CY1Vesqbxm230PtjBJs3sN/XaN2Y33bqi85rYrN7YwCV26eMubfvHRVB5Zd2tne33jgntrrevbzVu7+82mdfe6Za1fyDEU16+v9zxj0+bqzzPq7vWJv7hzqst5ZQ8AAABAQRz2AAAAABTEYQ8AAABAQRz2AAAAABTEYQ8AAABAQRz2AAAAABTEYQ8AAABAQRz2AAAAABTEYQ8AAABAQRz2AAAAABTEYQ8AAABAQRz2AAAAABTEYQ8AAABAQVLOufkrTemFiPjFPF86IyJ+3fiG1ZU6x7k55zObuKJjNIwo9/4bygxddBzCfRdR7hwei2XM4LHYPY/F2QxhDo/F2ZQ6h8diGTN4LHbPY3E2Q5ijt8diK4c9R90spe0551WdbWiOVgxl7iHMMYQZ6hjK3OaYzVDmHsIcQ5ihjqHMbY7ZDGXuIcwxhBnqGMrc5pjNUOYewhxDmKGOocxtjtkMZe4hzNHnDH6MCwAAAKAgDnsAAAAACtL1Yc89He93NOaYzVDmHsIcQ5ihjqHMbY7ZDGXuIcwxhBnqGMrc5pjNUOYewhxDmKGOocxtjtkMZe4hzDGEGeoYytzmmM1Q5h7CHL3N0Ol79gAAAADQLj/GBQAAAFCQVg57UkofTin9NKX0TErppnm+vjSl9OXJ1x9NKZ3XwgznpJQeTik9lVJ6MqX0mXku84GU0p6U0uOTj5ubnmOyz7MppR9N9tg+z9dTSukvJ/fHD1NK72ljjqr67qjh7PpuONlDxxn13VHD2fXdcLKHjjPqu6OGs+u74WQPHWfUd0cNZ9d3w8keOs6o744aLiDn3OhHRCyKiJ9FxPkRsSQinoiIdx9xmU9FxF2Tzz8WEV9uYY53RMR7Jp+fFBF/P88cH4iIbzS99zyzPBsRZxzj62si4psRkSLivRHxaNszjaGjhuNvqGMZHTUcf0Mdy+io4fgb6lhGRw3H31DHMjpqeOyPNl7Zc1FEPJNz/nnOeX9EfCkiLj/iMpdHxF9NPv9KRHwopZSaHCLn/Muc82OTz1+OiKcjYmWTezTo8oj463zIdyJiRUrpHT3P1HtHDWfWe8MIHRvQe0cNZ9Z7wwgdG9B7Rw1n1nvDCB0b0HtHDWfWe8MIHRvQe0cNj62Nw56VEbHjsD/vjDff4f94mZzzGxGxJyJOb2GWiIiYvFzswoh4dJ4vvy+l9ERK6ZsppT9uaYQcEQ+llL6fUrpqnq9Pc591bVAdNaxlUA0jdKxpUB01rGVQDSN0rGlQHTWsZVANI3SsaVAdNaxlUA0jdKxpUB01fLPFbV75EKSUToyIr0bEtTnnvUd8+bGIODfn/EpKaU1EfD0iLmhhjPfnnHellN4WEd9KKf0k5/x3LexTJA3LoOP4aVgGHcdPwzLoOH4alkHH8dNwfm28smdXRJxz2J/PnvzdvJdJKS2OiFMi4sWmB0kpzcWh6F/MOX/tyK/nnPfmnF+ZfP5gRMyllM5oeo6c867J/z4fEVvj0EveDjfNfda1QXTUcCaDaDi5bh3rG0RHDWcyiIaT69axvkF01HAmg2g4uW4d6xtERw1nMoiGk+vWsb5BdNTw6No47PleRFyQUnpXSmlJHHojpvuPuMz9EfFnk88/GhHfzvnQuxY1JaWUIuILEfF0znnTUS5z1uRykVK6KA7dH03/w7c8pXTS7z+PiEsj4sdHXOz+iPhkOuS9EbEn5/zLJueoofeOGs6s94YROjag944azqz3hhE6NqD3jhrOrPeGETo2oPeOGs6s94YROjag944aLiC3807Ua+LQO2H/LCI+O/m7WyLiI5PPl0XE30TEMxHx3Yg4v4UZ3h+Hfm7uhxHx+ORjTURcExHXTC7z6Yh4Mg69c/h3IuLiFuY4f3L9T0z2+v39cfgcKSI+P7m/fhQRq9roMraOGo6/oY5ldNRw/A11LKOjhuNvqGMZHTUcf0Mdy+io4bE/0mRjAAAAAArQxo9xAQAAANAThz0AAAAABXHYAwAAAFAQhz0AAAAABXHYAwAAAFAQhz0AAAAABXHYAwAAAFAQhz0AAAAABfn/2htpLTq3+P4AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1440x864 with 40 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import colorsys\n",
"import numpy as np\n",
"import matplotlib.colors\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def random_banner(w=7, h=8):\n",
" threshold = np.random.uniform(0.5, 0.8)\n",
" im = (np.random.random((w, h)) > threshold)\n",
"\n",
" r = np.random.random()\n",
"\n",
" if r < np.sqrt(2)-1:\n",
" #print('horizontal')\n",
" im[-w//2:,:] = np.flip(im[0:(w+1)//2,:], axis=0)\n",
" elif r < 2*(np.sqrt(2)-1):\n",
" #print('vertical')\n",
" im[:,-h//2:] = np.flip(im[:,0:(h+1)//2], axis=1)\n",
" else:\n",
" #print('both')\n",
" im[-w//2:,:] = np.flip(im[0:(w+1)//2,:], axis=0)\n",
" im[:,-h//2:] = np.flip(im[:,0:(h+1)//2], axis=1)\n",
"\n",
" h1 = np.random.random()\n",
" h2 = h1 + 0.3 * np.random.randn()\n",
"\n",
" l_mid = np.random.uniform(0.3, 0.7)\n",
" dist = np.random.uniform(0.2, 0.5)\n",
" l1 = np.clip(l_mid - dist/2, 0, 1)\n",
" l2 = np.clip(l_mid + dist/2, 0, 1)\n",
"\n",
" s = np.clip(0.3 + 0.1 * np.random.randn(), 0, 1)\n",
"\n",
" c1 = colorsys.hls_to_rgb(h1, l1, s)\n",
" c2 = colorsys.hls_to_rgb(h2, l2, s)\n",
" pal = np.array([c1, c2])\n",
" #print(pal)\n",
"\n",
" rgb = np.zeros((h, w, 3))\n",
" np.take(pal, im.T, out=rgb, axis=0)\n",
" return rgb\n",
"\n",
"plt.figure(figsize=(20, 12))\n",
"\n",
"for i in range(40):\n",
" plt.subplot(4, 10, 1+i)\n",
" plt.imshow(random_banner())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment