{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Symbolic Image Filtering" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pymbolic.primitives as p\n", "\n", "u_var = p.Variable(\"u\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Want to define an image filter.\n", "\n", "----\n", "\n", "To that end, define a new formula 'thing': A neighbor-average." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "NeighborAverage(Variable('u'))" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class NeighborAverage(p.Expression):\n", " def __init__(self, child):\n", " self.child = child\n", " \n", " def __getinitargs__(self):\n", " return (self.child,)\n", " \n", " mapper_method = \"map_neighbor_average\"\n", " \n", "img_filter = NeighborAverage(u_var)\n", "#img_filter = u_var + u_var - NeighborAverage(u_var)\n", "\n", "img_filter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's define some indexing variables:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from pymbolic.mapper import IdentityMapper\n", "\n", "i = p.Variable(\"i\")\n", "j = p.Variable(\"j\")\n", "\n", "ii = i+1\n", "jj = j+1" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "class IndexMapper(IdentityMapper):\n", " def map_variable(self, expr):\n", " return expr[ii, jj]\n", " \n", " def map_neighbor_average(self, expr):\n", " var = expr.child\n", " return (2*var[ii,jj] + var[ii+1,jj] + var[ii-1,jj]\n", " + var[ii,jj+1] + var[ii,jj-1])/6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now apply this to our filter:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2*u[i + 1, j + 1] + u[i + 1 + 1, j + 1] + u[i + 1 + -1, j + 1] + u[i + 1, j + 1 + 1] + u[i + 1, j + 1 + -1]) / 6\n" ] } ], "source": [ "idx_mapper = IndexMapper()\n", "print(idx_mapper(img_filter))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----\n", "\n", "Now let's generate some code for this, using `loopy`:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import loopy as lp\n", "result_var = p.Variable(\"result\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Observe the two parts of the `loopy` kernel description:\n", "\n", "* Polyhedral loop domain\n", "* Instructions `[lp.ExpressionInstruction()]`" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "knl = lp.make_kernel(\n", " \"{[i,j]: 0<=i,j\n", "result: GlobalArg, type: , shape: (n + 2, n + 2), dim_tags: (N1:stride:n + 2, N0:stride:1)\n", "u: GlobalArg, type: , shape: (2 + n, 2 + n), dim_tags: (N1:stride:2 + n, N0:stride:1)\n", "---------------------------------------------------------------------------\n", "DOMAINS:\n", "[n] -> { [i, j] : i >= 0 and j >= 0 and i <= -1 + n and j <= -1 + n }\n", "---------------------------------------------------------------------------\n", "INAME IMPLEMENTATION TAGS:\n", "i: None\n", "j: None\n", "---------------------------------------------------------------------------\n", "INSTRUCTIONS:\n", "[i,j] result[i + 1, j + 1] <- (2*u[i + 1, j + 1] + u[i + 1 + 1, j + 1] + u[i + 1 + -1, j + 1] + u[i + 1, j + 1 + 1] + u[i + 1, j + 1 + -1]) / 6 # insn\n", "---------------------------------------------------------------------------\n" ] } ], "source": [ "print(knl)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----\n", "\n", "Let's move towards running this code. To do so, we need `pyopencl`:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Choose platform:\n", "[0] \n", "[1] \n", "[2] \n", "Choice [0]:1\n", "Set the environment variable PYOPENCL_CTX='1' to avoid being asked again.\n" ] } ], "source": [ "import numpy as np\n", "import pyopencl as cl\n", "import pyopencl.array\n", "import pyopencl.clrandom\n", "\n", "ctx = cl.create_some_context(interactive=True)\n", "queue = cl.CommandQueue(ctx)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And some data to work with:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python3/dist-packages/PIL/Image.py:665: ResourceWarning: unclosed file <_io.BufferedReader name='cat.jpeg'>\n", " self.load()\n" ] } ], "source": [ "n = 200\n", "\n", "import scipy.misc\n", "u = scipy.misc.imread(\"cat.jpeg\").astype(np.float32).sum(axis=2)/(3*256)\n", "u = cl.array.to_device(queue, u)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as pt\n", "pt.imshow(u.get(), cmap=\"gray\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now run the code, and tell loopy to print what it generates:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#define lid(N) ((int) get_local_id(N))\n", "#define gid(N) ((int) get_group_id(N))\n", "\n", "__kernel void __attribute__ ((reqd_work_group_size(1, 1, 1))) loopy_kernel(__global float *restrict result, int const n, __global float const *restrict u)\n", "{\n", "\n", " for (int j = 0; j <= -1 + n; ++j)\n", " for (int i = 0; i <= -1 + n; ++i)\n", " result[(n + 2) * (i + 1) + j + 1] = (2.0f * u[(2 + n) * (i + 1) + j + 1] + u[(2 + n) * (i + 1 + 1) + j + 1] + u[(2 + n) * (i + 1 + -1) + j + 1] + u[(2 + n) * (i + 1) + j + 1 + 1] + u[(2 + n) * (i + 1) + j + 1 + -1]) / 6.0f;\n", "}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/andreas/src/loopy/loopy/compiled.py:841: LoopyWarning: kernel scheduling was ambiguous--more than one schedule found, ignoring\n", " kernel = get_one_scheduled_kernel(kernel)\n" ] } ], "source": [ "knl = lp.set_options(knl, write_cl=True)\n", "\n", "result = cl.array.zeros_like(u)\n", "_ = knl(queue, u=u, result=result, n=n)\n", "u = result" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQwAAAEACAYAAABGTkjoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvUmMZFl2pvc/m9xtnnyIjIjMrMoqDgtSKHBBNSCgqgA1\nBLUggDuipY3IXnCj3pO9ErRT95ICCBFQk2gBEkQJhFS9ECSiAXHQRmgttBOrqwBmZmVkhIdPNrmZ\n2/i08Pyu/e/6M4/IiMj0zIZfwOHuNrzh3nv+85//nHtfkqapHtpDe2gP7XVa4b4v4KE9tIf27WkP\ngPHQHtpDe+32ABgP7aE9tNduD4Dx0B7aQ3vt9gAYD+2hPbTXbg+A8dAe2kN77faVAUaSJP9hkiR/\nmyTJv0mS5Pe/qvM8tIf20L6+lnwVdRhJkhQk/RtJ/76kzyX9a0n/ME3Tv33nJ3toD+2hfW3tq2IY\nvynpZ2mafpKm6VLS/yjpt76icz20h/bQvqb2VQHGE0m/sP8/++K1h/bQHtq3uD2Ing/toT20126l\nr+i4zyR9YP8//eK10JIkeVjE8tAe2j21NE2TN/neVwUY/1rS95Mk+VDSc0n/UNJ/En/oBz/4gX70\nox9ptVpptVppvV5rvV5rs9koTVMVCjcEKE1TJUmiYrGoYrEYXi8UCioUClqv11oul1osFlqv1+Hz\nSbLtE47J9yRptVppuVxKUjh2mqbhdd7j+1zfYrHQ9fW15vO5VquV0jQNP1zT2dmZnj59qmq1qv39\n/XBsvrdYLLTZbFQsFlUqlVQqlVQul1UqlVSpVCQp3EOapuFzhUJBy+VS19fXWiwWWq1WoW9KpZL2\n9va0t7encrmsYrGoSqWiSqWiQqGgSqWi/f197e/vq1wuq1AoqFQqaX9/P1zD3t5eOI9f197eniqV\nisrlsv70T/9Uv/d7vxf6jH5OkkSFQiFcM+NQKBTC/7Q0TbXZbDLzIU+A5zW+z3f8ePGxX9V2fXaz\n2ehP/uRP9Lu/+7uZ8WaMuUc/DuPt903zz/r/fDaeo3n/x9ccvxb3Q/xe/Pof/uEf6ic/+cmd/XNX\n+0oAI03TdZIk/1jSX+gm7PnnaZr+f/Hn1uu1ZrOZlsulVqtVmAxMMjtefPzwfSYRgMDf8YDEnenv\n+3sYCq85eJVKpcx18p5fB8cAxLiPUqkU7s3BiYnJ6/EkAAjK5XIAEr+25XKZ+f58PlepVArAWi6X\nA0BwDEAhSRKVSiVVq9UACIBHHmDwmeVyqel0mjkPn+cevV8dGHzCAyR545Azp3IBY5ex3NV2AQzX\nEV8X4xJfP/fgAODnj4GT12KQiY8bnyN+3ftq173s6h+3qzdpXxXDUJqm/7ukX7nrM6vVStPp9BZY\nFItFjhF+FwqFzMRzxsD/sBMAw72fD6IzFCa5DyB/l8vl4GH82larVabjkyTJXA/XCWi4p3VDZWLy\nOsfEs6VpqnK5nJm0fo2lUincM4xosVioUChkAGM+nwf2Ev+Uy2VdX18HJgTIcY0OVvv7+6pUKrq+\nvtZwOLx1HBhIPClj4/B+43fsJOLmDO4udpEHIHnH2sVuXsdYMdg8488z4Lz7ZIx2AcVdfcXv12EW\n8XvfWMB4ndZsNnV9fX3LmN1gHPHdu2CgHqL4e7wWIz+D5WGOG1jsEVarlebzeQYM8gbPw6dCoaBa\nraYkSTKUtlAoBO8uKUyYONRaLpfhnN4XkgL7IdxwlgJ40JIkCaHefD4PfYGBwxwcbPgc5yKkASjK\n5bI++OADXV5ehmNwHA913OvCknAEsdHFgJFHu3d51TyjeBXD8HnkLU1T/eAHP7j1+djg/W8HDD+O\nfzf+jrOy2PHk/b3rGvLu+a6/JenXfu3X9Od//ud39M7d7V4Bo16va7FYZDp+vV5Lyhp+jN4MuHd8\nPKFgGvGA8FlnBH5+jNSBqlgshrAJ/QHjREOIgajZbIZrAjT4H30hj5ryec7hgMF3pS2dd2/lx4w1\nGdd3AJtSqRTuZzabBQbBdVQqlcA8+HypVNLh4aEuLy8zYLK3t6fFYpEBDGcfHBOQjMH2VYDB395i\nw7/rs95ig/O58Bu/8Ru3QuMY2OL5FI/frvPFAJMXzuwCjV3X4Pf9OqDx67/+6zv75XXavQIGhuQM\nwjvevToT38MN3pOyE88b3/XJyvHdEDmGX4czDoTG6+trzWazIDiuVqsMS6HlUdvNZqPr62utVquM\nToDhe/jhTIt+4vjumfzeXBjlegBgjgFwcQ3z+VzX19cZ46c/AAwXUV0LAUjQN2azWbh2BNRqtRr6\nGZbBZ2KQyDMGH5c8/SA2ll3swdsuKn9XiOTXlwcA7tDcecX3kXePr9Iy8q4tD1Tj+8p77VsdkrhH\nj9lE3DFkLtbr9a2JgjfcRQWh7JKChhBPMrSGPIDB2MiOXF9fh2txwPJjO+3mfY4PWykWiwGcAAs8\nMmGMT0ppy57y9Jk4LuYe6D+AD/DFgBeLhRaLRWAJ3FOpVNJsNgusAcAg/ABMqtWqKpVKODehV6PR\nyAAzoBP/cO1xn/kciQ0qzzj883kG66/H4WeeEftvzu3/O+j5XIvZbt51xHPQ7+2u0CSvxXM9z+ny\nvzu1N2n3Chh+o+51/H2MyuN0N+wkSTSfz1WtVlUul295mBh4/HX3yIQbGBReP08hZ5IggMaf9+NL\nW/EThuGDyv1xDui7A2CcvvTXK5VKAC48f5qmgQE5iM3nc83n83AegMNDL5gNTGQ+n2fCn0qlolqt\npr29PU2nU1WrVV1fX2fOUywWVa/Xw1igoyC8ekjmqVy/N28+L/JET295RpL3s4uJ3BUe5DGM+LVC\noZBxOq9iOj6P47YrDMqbz7xH/8T37p95m3avgEGMi2els/He7h29VkPK0kGvl/CYmY7lPDQmC3F5\n7NUAJ4zHWYGHRF4DUavV1Ov1VK1WVa1W1Wg01Gw2ValUtFgsNJlMNBwOdXl5qfF4HAzXxcD1eq3r\n6+twz7GYST0FXrtUKt1S+53poMV4OLVYLDJ94VkgwAuAkxSM20Ol+XwePsOxPcsDa+FY+/v7IWwh\nNeshGf0AKOWxzPjndQGD1/KMOK/vnNHEmsqua4nP5deRx4TuYhBxqPFlDTwGk3+rQhKMOw4N3DtK\nyhiNtPXensLDiFx8dPoOU/CCKYyBY/Jdr+OQtpkSGAjAtdlstLe3p8PDQ73//vs6OjpSo9HIGIdr\nLWmaajQa6ezsTC9fvtRgMAiMg3uAiXjxGPeFfgAzgm15FgYg2d/fD+f1tDVGitH6+67LeF8CGA7q\nZHGSJAksxQ2dsG0+n6tWqwXNo1arhVqPYrGovb29DNtzBkKf0GLvnscO4u942OH1OnnA4izBQ41X\n/XhjzsX6WPy3nytPe6P5nL8LPPLez/v8txowmIQuyGEoDiKeQsWYmVwAARNosVhk0NR/vFbDJ6Wk\nzAA7TfQJALuRFADt8ePH+qVf+iU9efJEtVpN0nZyYFTE9BhMr9fT06dPA+M4OzvTYDDQdDoN14bx\nz2azDJvgfQ+D3LPTJ3hsPlMul4MA6bqDpABMPtE97HJR1wvO3BCd5UnK1LCgg9RqtQyAUAjH9XoY\nxnVjCLsm+qvifh9TjhGDhgOHn9M1GXcou8KW+FwxQPnnYtay6/52sYy81+/630Pgt2n3DhjcCJPL\nxU8mHZ/1lKsPTozCTDY+6/SejuZ80Hf36nye4zrr4UeSOp2OPvroI3344YdqNpshpPAUprSt/PTz\nVatV1Wo1HRwc6Pj4WCcnJ3rx4oWGw2EIS+JJ6ZPLPSyG7IVTXi4PA9jf31eSJNrb2wuentDK6zAA\nbAcgBw6vqmVMvF/43Gq1Cv1BKMM5KFFP0zTDXHxsY8CK05ev41H9vV16wi624SARX0OeMcZz0n/i\n0MC/n3fM+HN5AHXXPe/63reaYRBGxNqEdx4Ums/4RHFtQVIwGCYgk8TrEPAcXszknsdjeI5B6tGB\nZ39/X48fP9Z3v/tdNZvNQNN93QENuk8oxHXg6Qllut2uTk5O9OzZM11dXQWRMTaOvBSu36tndTy8\nQFyE6RAyMQ7oEX4fcWFbDPLU0bhQCvsDNABeB5pYE3IAcibF8e6i5HdpAnkgkccKdgmDMWjkhSJ5\nugPf2xUGxSz4y7CF+PW7gPJNP7urfSPqMGLAkLZgEiO7hxgYiBdFubbh7ILJ6IjLeWOAiuP+ePFR\nuVxWq9XSe++9p16vp8ViEUrcMUxAyAVEjocXv7q6Ckxjb29Px8fHqtfrKpfLOjk5ycTfhFuLxSKT\nivQ+ixmY6xYuXLqQ6SzFmR1g4+9xDmdwcZYFQEKgdaBnrABPH3sAZLFYaLlchn7xkHMXu9gVHsTv\n5XnxPMDY9Tp9mWd0eYzBmW8cmvj17Qpx8u4n77yvup532e4dMGL0jSk3k9wnqefvPcvCJPVwIi6X\ndg2EgcTQmPB0tgMZ5wTE6vW66vW6lsulBoNBoN1QeIySz3v61QXGq6sr7e/vq16vq1arqdFo6Dvf\n+Y46nY729/f14sULTafTwJDQGiiy4rqc/tKH8eKw2MPneVVYjXtIByyvG3F6y3UQanDvnNOvR1IA\nP/9BJPWQCL2GUDXPQPIMzjUwB5w80HAW4PfEZ13/uKv5NXjf8v3XBYy7wp1d343PmQcYeQD4Zdu9\nAoZ7QGgtLRbboPPefHJDg72sWtpOCAzAz4EhxVkEBxK8LMdnUiHcjUYjTSaTMGi+LsOLmVws5Lxx\nJSeLwBqNhp4+fRo89S9+8YsQEuGJyZ5Qe+Ge2PUMBwwPU+gbGn97cZWHEs4GGZM4lUrKFPbmDM4X\npzHWFMJxTy54+zoWwszYcPN0jbyWF88zxgCFi96xQcaaWZ5R5zEUP8aua/LP3BXu7AqddrGTvOt6\nF+1eAYOJEtPNmIK6p+cz/I/ncrEPw8C4Y7HKJwgGBqBwPheqvLo0SRLt7+/r4OBAnU4nZB0wAgyf\n2oTYcFlOLm21Db47nU41mUw0mUx0cHCgXq8XvKykkNrl+vH4aZpmlqX7EnYXf/MmJPfFZ5xRxOPh\noOcl8XzOWZRX71Ja7uwP8ZPj+XcAPF+nwhg4E/IMUcwkuCYpazjxPHMNzQHd2a4zM44Re/ZdgLGr\n5YVKuxiDh2C7mETePeZ9/m3bvQIGHoZBZ0L43g/S7aXsDPRyuQyfl5SpyuRzvM4kgI7H1J3z8xkv\nfvI6iTS9KUNvNpsqlUqaTqeZ6lAPC2AP3BfABCNgbwkMECNirUq/31e73dav/uqvql6vq1Kp6Nmz\nZ5rNZpIUDGm5XIY0pa8gdWOmD11AjCenp465H+8f11F8ctKn8/n8VhoclpSmaWaTozjcAzgpR4et\neAo4L725S2vIo/Bx+OH/+7j5XLhLz8gDiruuYddnd4UP8ft3gYW3OOR6l6DxjciSQFt9sxYveMJz\neQGXx8cumPr/nMMnBpMVY3BqjZf0SUmGBkNJkiSsk8BTzmaz4HEpncZgMUhfjyFlK1JhC7PZTEmS\naLFYaDgcajqdqtfrqdvthhCl1Wrpk08+0XA41N7eniRlWJrfT55QiY7gOo+PBaDgIQoiLiBAaIZB\nkyHyzIcDL2Po4+eAQ5jjfc0iP6pEYY8AkDMFDyd5Lf6dl+KM5+KrjDiPofl5dv39KsaR917e+ePX\n4+vZdY5X3deXafcKGFRDepwbgwWTDG0Ajxx7OMqVnTnQOXzeQxW+6z8+0flMPMEqlYq63a663e6t\n1G0ssDKxMUIfWK7Ry7FLpZIajUbYd2I2m+ni4kLz+VydTkf9fl/ValWtVks///nPNZ1Og3YQs4k4\nBU1z5uBpQj4bF77B9rjXSqUS7tEL57xGw88DO4ENet/HQqID6nK5zCx8S9M0hHL+eR9Hv8e4ueOI\nr8GBfZeWELddoUje33HoEjOD1zHieO7kXWPeWN/Fwt6k3StgoKjDCFxF99QmN4swBii4MOo0N047\neqzK60wWn0TOXACqmJ04rZ9OpyGD4RPSazh8wnuRk6dz/T08LaXUhCej0UhJcrPPxve+9z1VKhX9\n3d/9nYbDYehPGA99EGd9+IyHfc5y4rjZ1/rQX4Q+8WI4wB4woi9gjvSf13TQPFyj/7gmL4DzMVqt\nVpldxPIYB//nsczYabhu4T+76iTyWl7IsEvncGPfpT/4e3cZ+y42FAMUwP427d4rPWMhi5v0Ah73\neF5A5N/1/52Ox6EMXtMnaN45PYXp52CCbjbbvS1I/fkgeW1InN7kfjxDEusqrL5li72Li4sghvb7\nfT15cvOYl48//lgXFxchnHEjghnEJfSegeBeYjbC386aCHWcdfDZarWayTbxXe6H++N6vO8lZbIn\ns9lMs9lMpVIpgAfshcIyFvnt7+9n+tXBgOagETMNvuup+7iyNRbOvY/uCk/iz+wKDV7FVqTd+6Lm\nHeuu875Oeviu9o2ow9g1GFJW/cYYpNuexMU5/557FiZ7tVoNE8RTeg4YCHRSdg8NDGC1utmPdD6f\n30oxupbgAiSD6GEIFaeADL+vrq6CRrFYLDQYDELp+Xq9VqvV0qNHj8I9vnjxImx3GFck+iTxcm8P\np7wWAiONY39qKxi7eKWxZ0HcuzFh0XjI4Hgox3j7ODjIbTYbTSaToB+1Wq1b2oWPu88hb26Y7mDQ\nURhv//HxvSsE4Pje4pAvfm/X92N2EAOGO8g8sI/DHb/nt2n3zjAcyb25KOc02j0JIYZTXyaXdDsl\n6LUCXgfhLMRpLxSaY0lblkP6dDabBaru29gBFA4k3LODHuEDgp+HYu4tC4WbtRiXl5dar9fqdrvq\n9Xp68uRJML6Tk5NMStI1AQdmAAsWxBoP0sFuwBgtK3ZhQ77GJB6XvJS1rz5GyOSevZzdQTtJbjSV\n8XgcGEej0QjXTb+5MTsjpL8dJPJAlP71rI2vDOZnlyf3+ZEHGH4d8ev+nTwhOmZ/fv0OmHmA4a95\nyPU27d5FT6horCu4wcbx5S7xiMkSTw6OCxXHCGJwiAXTeBA4Bgbqm/XGZdQehrjRx/cZTwDPJsBy\nSqWSWq2W9vb2dH19rclkErIST5480fvvvx/OPZlMMgwjBgfvT/720IjPMXldV6LP2N+DwrHY+/ok\nxzBXq1XY7IdrowyeRYZe5emMgyI1L5zDqF3D8HoaPsd88GvKi+O9UC0GIq8s9hbPR+8jWuxw3An6\n3PP79ON6OBiX9Duj9evJ+9vn8Nu0ewUMRDcXK7lRj3el7TqJmPI6Ffb0qv/mbzfY2INLt7MXPkmY\naLAIv5a8c/qxOKezKQYdmg8tdnABlOgrJjFL3k9PT5Ukid5//309fvxYkvT8+XONRqPAArgWz9J4\nVop+jI3EV7n6zuAOlr4hj98f5/S+4dzj8Th8t9lsZhbBeX95aAiQkbJGAI7H02tRfEx9zsTe11/z\na3WgjDMpefflgJGX1vf+om8pxKP+Bk3Mwa9cLmeWDdBXjG0eGNzFNr7VgOF0lToGgMIzIXxWylYj\n8lled5YQoz/fy6O9lJQ7nXYE9+uNBT//jZHDNmJv5tflGQyyG7PZLDOBvbKScABg5bynp6cqFAp6\n/Pixnjx5or29Pf3iF7/Qy5cvQ5ghbatXARI3ijRNM3t00jdM5kqlokajEepLmOxXV1fBoAEW1xwc\nmDA4DGMymWg0GqlWqwUBM4/14Xnpv6urq1urgv17VLy6Ycfp7tjI8jI3sUDtjCVmhz629B1jNZ1O\ndXV1FXZcG4/HQfuif/khI8YcLJfLmc2ZYlB3bS0OhfLa24Yj0jdgxy0mrYttvgYjDg0AhjxQ8VLz\nGEj8t4MOHe+U3NN/koIYiHeNP+tqumdfPNMiKVB4zsv/XAMiJ9RUUhBppayQCz1drVYaDoeqVCo6\nOjrS0dFRuJYXL14EjYXzY4Besbm/v69er6dGo6FqtRrAhNAHoKGWYrPZhOsaj8ehDN6FZEIL6jZg\nLfQl1Z3sWA5gOBA4MwCMACFYlpQfero+4kw0L9TcpaPl6R6ARR5rAShms5nG47HOz8/18uVLnZ6e\najQahb70cyZJEup1eH02m4UlAkmSqN1u6+DgIDgrL7Xn+vLYxVfR7r3Sk5ulw11Rj2Nn6TYNZDLx\nniv2bty+tV6sksdhTh5axyKsDzwD6FkaPuf01N93ncLBkSIsFmURLlSrVZVKJdXr9eDhXfQajUba\nbDY6ODjQ4eFh6KPz8/NQCMaGNc5o6I/r6+uwwU6lUlG9Xtfe3l7I2FxdXen09DR4tb29PTWbTaVp\nGormAEwHpNVqlRE48aK+1sWZB4blnhtaTn/QPwBRkiRBAyF7Qk2Ii61co88RZz80p+/+ngMWn6NK\n9/r6WldXVxqPx7q4uAggMR6PA8C2Wq0AyPSP6zEclwzcZDIJ11ir1dRqtdRoNDJh7a5QI8/Z+r29\nabtXwJjNZsEDeewXFx1Bu6StR3BjlxTScHHxV57C7J2G8UARXQD1knGngICQex1/Vkecv5eysWye\n2BmzKM6JIMhEpW/W67XOzs6UpmmI2zku5eRc4+npaQBWvC9hAKnj1Wql8XisQqEQFtNRC8JTz1jG\nnySJjo6OdHx8HHZqn06nt8Q/Mi7Slt1Ax9M0VbvdDjE5j18E4LhXlv77cvx6vR5C2el0qsFgoPl8\nrtFopHa7HfQR1wEYR1gQLDaeR/GY+TgzZn4v4/FYg8FAL1++1OXlZVjnw/fZFhFgYazjMInQEQDx\nknh0HtfPmM/+O37tq2Ab97683emiD4pTLB8wSRnjddbg3/M42Hfl8hJmX1LtFN0ppwOUL932OB+j\nxZiZmH79DnrOYPw8NP72a+WzMI/lchmMFY9FWjRJEh0eHqrX64U+xtgBDhazueiGLuFCJgDDYxAR\nVNvttorFm31BpBstxcGA/kXYhgFwDWSsJOnq6irsbToajUKohqGQIYJVMcawjMlkEkCw2+1qOp2q\nXq8HIOUaAB/O632fl+Xw9Dz3c3V1pdFopPPzc52fn2s8Hme2b2Q+87+v4GXuugjuduCZQX/iHAAe\nf9/F83ju7AKTbzXDcICI41A6ItYpPB3lcSOA4TUMccrUEd1DFF9FSSaE6/A0qe894V6diTyfzzUe\nj4OhsXdmLDI6CEi3Y3AmHdfOZzzOxstxPe5tpRuwaTQaarfb4ThUhKJbMAbOijBMQgc+T397jO47\nhlHG7kyA8IZnmNDH+/v7arfbYQHfeDzW5eWlhsNhqLeo1+tqtVrq9Xrq9XoqlUrBOJPkZt+R0WiU\nGftaraajo6OwBoXMDsyv1+uF+/Vw0Z0R/erhKetaBoOBLi4uwsJAdlljPnm1LszVtTJ+PEVK41yu\nt8FyCd/iAjJPsfp88nkV//+tBoxYQERtJ2PCZ9yQAAjWa3gnY4iEFtJ2cRrnib2BlN2AGM/mFB9a\n64DB/842YBZMEp6GDgB5OkxSBng8znagi7MFPjE4J7R+Op2GlbOFQkGPHj1Ss9lUvV5Xv98PtP/q\n6ioAAfoI2YpyuazpdBqenwLFhoHwMxqNwgOZuQ+WodPPhE6xmIyn50lrcR8SDnU6HbXbbdXr9WAc\ns9lMtVotGOxkMgliOfE9NRseIlar1czye7b/Ayj5Xrx3K+lQsh2z2SxkafwHDcbZpqSMcTszcGNn\nnvvnHdD8sZReCBhndWLt7V3rF9I3YAMdaKVXWTKwTB6yE8SUnraUsqvyYgYSA4Y/6wNj9c8ABohm\ncWzrIhXrMGK13EVMrpNzObvwNJlXEnJ/UnZXMl8ij7fnvgkbMMzJZKLxeBw0Ijz2dDrNbPRLWCMp\nsIFarZYxHPeIHvLBNKD4PGaBsIRQBOYhKQCtj1te2TX3w1oR2ArjxjwhRMPRAGau98A+CCdOTk5C\nuOOC+Ww2CyFXLES61uXbJcZzCqCIK0X9/pgb7sDywmrmcLVaDQCbV0BGywOEdw0a9woYdJi0RVaP\n5XxC8Z4Lgt5ce/DPATLx6x42YIxxxsK1B2cyfJe4nknMJPX0F5Pe93GIvYlfk1NjaQs23i9+PthU\nsVgMXhMQnk6ngX4jcvoiL4BpNptlNB0+S7+worhcLuv6+lrFYlHtdjuENTAHwigmuY8H2gOxOQYD\n04udhhsifcA4O1B4Zk1SeI1UMGBYrVZ1cXERQLdcLqvRaIRNjLh2tCHqTgAz9CMHP593jLuzRsIh\nDz88xe4l8V6wRaO/YIkOYMyNr7vde0hCZzMwcejgnpSfuOzaNQovrfaJ6F6djvZwAMCQskq5G3Bc\nj8Ck4n8a9JwKPV87wTHdc8XX65MdRhHH3IAPnh7PhFG7iIk4SehBwZV7v9VqFYBms9mEzXq4fvrm\n+vo6PBKBhy1jtE7La7WaOp2OpJvqToDBWYPfO/0CEJJiTZIkAG+pVArZBBb9AfjcixfmAYQUUA2H\nw0zmg0dZpmmqVqsVKk+pR0nTNIRlXrbuDiEuH/c5HbMm5jz36nOYMBbGya5u7L3Cgsl4Xsbs+qtu\n9woY0tZoMQConQ8sgxHH/HQ2omUc+zurYFBpvOZiYxx3ugBLjOsUG0/stRZu9D45YjrKIPv9kXrz\n49AHNO6ZH4RJBz3iewqiANh2u63xeBzWgdD/MA6AaTqdSrrxylyDC5aNRkPHx8cqlUphE2Tvd3SK\nbrcbxoyHOsPIKPaCqZFtccO8urrSZrMJJeHUctBvPA/G6ysIXXwM/AFNABXjWiqV1Ov1dHh4qFar\nFYr4ELDZVgDWhL7loOEpWs7rIJLHnJnfCKpoPgAkT8g7ODgIWSJ3dt4Aiq+Dcdz7alVHSqfmjqRk\nLhwo+MHw44yLH9Pf93UgTgtpeV6Byej59Pl8HlaFOjAwMfhMvDjLKa5Pfimr0OP1ARDAzKk6WZHp\ndBoMD6Dx0AqjwXvWarVMOTdU3CteJ5NJuAeqD8lSHB8fhwzHdDrV2dmZqtWq2u22qtVqKPSiFgJh\n1usXuKeDg4PQd51OR9fX14GRcL+FQiFTtMVObb4OiT4lpAAgqCx14KEM/ujoKGRiCoVCAAnWfBDu\ncb5WqxVEVNelYg3G57KnzF1fcxHb0+boIqVSSc1mU81mM7CoeH5zLu59F5uJbe5t2r2HJHQeHghk\nRuCSblfbQVyDAAAgAElEQVTced6a48QMAYNzuutKssfJ0nadiHsFPsf7/r3N5qaasF6vazgcZhiF\nax5MWgcMZ0reFwiRfk8exiyXNw8/YuNh6i4IJfDaCJWAbpqmmeeb7u/vazweh3MDcIwFIALFx5Co\nPKQfvXiJ2o5CoaDJZKKLiws1m00tFotQjIVBjMfjYIjdbjf0L1WazWYzjIsXmUHVXTyeTCYhZUtY\nNZlMQj9hfFRKdjqdkH3p9/vhXqkBiRmdb0bsmzc7WMRMolAohLqYmG1K24d7o/dwT8w1ALbdbmeK\n25yl8jlaDCSxnb2r9o0o3JLyN2H1OJcO9qwCn3MDdC0Do4oXK3nqCvroE8BjQpDbdRKPN4l30QV8\nARmiqu8O1e12g57gi9j8mC5A0i8wCjw/xhE/DtH7JEmSAIJoGrVaTfV6PVQl+rNgEVfx3ghtVHHi\noam85Pq4FkDfy9aXy2VIfVKABOOh/mKz2QStBdrPGCFANhqNzP05EFOl6vt5kBkilGi32+p0OmHN\nTKFQ0Gw209nZmebzeWa5PvfPvPJ0pjMc1y/yxGzpJsQi3Q3zgzERRkvb7Skpy+/3+4EBecWzt13/\nv0uAiNu9r1aN6ZaLmExGDDBGas+hO7ggOmHoAAb03tXrOFTAOB0Y4vy572sJELhi77UTvhoRej2f\nz4OQh+fkvM4cYBKe54dqM+G4N3QD1ir4taVpqtFoFMCA+6cyE9EWI2HVqq9c5b673a7a7Xbm/H7d\njBPfpXmtDIvsNptNCD8o7+50OkGMBPTxwp6J8tWdXqkrKQjSnU4nZI9gFizk85oVZ5lca1zj4E6J\nfuJvDzE9JQ74c04HUkJZQNvHD/bDoyxorwonnEG7GOq/37bdK2Dgeb25YOlpRwZE2gqC8cIhL8Dy\ndJXHlNJ2QZPXUUi3Y0xJgSW41yF9yVPIvTLUvQ6Uk2tzA5UUJnKj0QjhCdeMIQASGIRnU7xWwMUy\nJjsenVCA7AP3xfc4hoMY/cpYUDzEngxkHYbDYQhffKk748r9oy34YxiS5KakfTqdajQaBeEP7QPQ\nnM/nob/q9brSNA2LvVwk55r39/dDKrJWq6nZbIY+phYDzYbUcOy43BEB6MwtrpO+gikCIPQ5nyOk\nARxwRIjK7GEq3Rh9vV5Xs9nM6CW7Mi4xq4j1Ddq7EkTvnWFI2cyCx9N8hg5zjSNOq6K8M4GWy2Xw\nvgwQNBLPK20fluzpWJgC53OaipdhY148uqTMMTgv18gkkraeBjBjzwkEQuJ8BxhPDXMPkjIg4lkR\nzu1l74RM0rZIS9qKuo1G49amujCCNE1DluLly5d68eJFiPvpH46P0dIQPGEugBcswUOJq6urTOUn\nfQoAO9DADPmhfwB4Mg0APGEdQi4GT7rXM1AAh2sHnm5n3NCenH36Yx/IPLk+BhuFyTC/WQHc7XbV\narUyy97zxE4Pg14XON623buG4UzA/3eGEYMEExzAgRL7BiQYiqTMAiSnkV44A2h4SowNZ8ks+KCN\nRqPM6kjPoHj6zAuO8OZeXl4qlQK4eRgzHA4zKxgBVQAMr+ahGBMcA/XroJ9ms1nwYFBiDNwfEATA\nkQmCpQyHQ41Go7DXRpqmQcehMS5OtXkWbaFQyPSX1zVgfFdXV+H8lOgTPnD8xWIRwi3OA2vy9SMA\nAetjVqtVYEq+GbSnbJ0p0Bc011HcUQDqfn4XtT2rArDFe5K0220dHh7q4OAgE47cJWjGzYEjDkXe\nBXDcex0GVM/z71J2L0QYAh0Qp0o9p+2aB+GBp2SZVJwzLs3F4Ci8arVaQXhiUkjScDjUxx9/rFqt\nFsAkjwICPkxCqkM9vYqnHY/HIabHqDBY+kLa7o/pXsurNTk//cD9cEyuAzDmeJvNJnhfSQEwYFST\nyURnZ2caDAYh69JqtdRut0MoBGuhjoJ7R2gEKAAIjAvD32w2IVvh4RFjNRwOQx/ivb2v3VhJEwPI\naCwwHeYYTMzrT9w5ecFUnPr3lCaaDsfwRX15bBoQTtNU9Xpdh4eHevToUXhglYOT/44N/+sQO2nf\niNWqdJzXHHj2wDUGGkYOFXVPCjWkOagAKJzPvRZeCQ8Mu6C82tO3y+VSl5eXOj8/1/HxcYi7aa6D\ncGzuE5BwbYZ1DGyE4xPWKakbM7S6Xq9nCrIIX0iRUjUYF795vE2KlMcTYmiwoaurK52dneny8lKr\n1UrNZlPtdjtQZ0CJ4rHhcBiMARDxOhMMDuBKkiQwFq/yZfHZYrEIhVzlcnYXMh9nFyWlG3ETLYZz\nUj8CIKIlcI0YvWdIACAvBXBnhtaFI0KwZhw5jrMRD6F6vZ6ePn2qJ0+eqNvt3lpGQPOQ4+sAiLjd\n++IzjM8NXtItA5e2D7Nx3cJrAuIUKZ9HPHQm4VkQYnAYBWDhi5MQIfksE4S9IwgVuD7ESv/tKr9r\nGByfClI0CiYskx+Dl5RJ67HojJoDPA7A5BkPJiygiWFC+9ELSHt6uEcfdrtdHR4eqtPpqF6vh4lP\nupj9LdBVWK/BGHl5fbPZDP0GC2HnKrQe9Ij9/X1dXV2FVakscqNfHIjcuLkGdBDY7GazCSEL58gz\nSGe1hEjxnAV4S6VSEDFdN/MFcgCjpABY7733nt5//30dHx9nVufGNpEHEl8ncNwrYJCfZ/AwJqgr\nExSEdgpIvOsKubRlJx73ARjEsB5Pkhlg7wjoNQzFC8sojWaCdjodFQoFdTqdzPk8w0AWgNeh6NB/\n11GkrVofL4Di+xiC11f4PpkOlAAGnhTaTVk73+U+PS1KkZhXPhYKN7s/QZvr9XqodcDz09/cC5kK\nX99CX/JAIowMGu+b8aBLwfTiRVqkgX3LQQyXdCzCJkaOTuSOaL1eh/sBFJzZ0k+SQkjHZzxrBSBd\nXV2FfuP80s1CP5gS93t0dKSnT5/q0aNHarVamcyXC7F5zUHt62j3/uQzz2K4p8BIV6vVrdQSk8JZ\nBt6WicL7DN5kMgmTDZpOyEEIwuIjFxLdi/gCuc1mo06no4ODg7B5DEbhDMipJ6AAgPkGLJIyhWPE\n2qwKdYWe/uK6WNJN9SSGy/1DyzGqZrOpXq+XEXwXi0XIeKAjkH70jEWz2VS/3w8ViN1uNxPWDAaD\nUEXqYQMsBaP2sCFJbp5RQupzOBwG/YGKSU9tsjYFoyuXy0E/mM1mYROgYrEYmKKHGfQbY4PISiUs\nlZXOcBn36XSaWQzHXGHueWh2fn5+i4l4Xy6XNzuXHR8f67333lO73c6EIq7bSbdBIWYfX0d7K8BI\nkuRjSUNJG0nLNE1/M0mSrqQ/k/ShpI8l/XaapsO877Ndmle8YWyeJaF5OMLnYR/EiK6HuNjl8Soe\notlshkIhPCGe2Helds/u5ecHBwf66KOPVCgUNBwONZlMdHl5GcDJlXNnRu7ZPJePJgGz8GwKQl8M\nppVKRaPRKKwSlRQ20QVkWG0pbTNKabrdb/Ly8jLzPuXVvk8nwEbtiAMnoLJarQI4e2UsbAUGw70U\nCgVNp9MMaBNCdDqdoGWcn59rMBhktADfrg+BGtAAHKlDAQwwPkRRTwMzPrPZLLAW15Bgec5QpK0T\nIeQCpGCJPKmOPpIUnkNbqVR0cHCgx48f6/DwMJTWf2FbGVt5HZbxdbS3ZRgbST9O0/TSXvsDSf8q\nTdN/liTJ70v6J1+8dqsxcK5BuIDpMb+LTjRQmO9ICrTbt4tjAlB2TLbEl56TgsOzcXwpu68otFPa\nek5JmdJ1WBITRVLINDCh8MwUD3lK0IU7in88w8PEx6NSB+BLwDlXXEcADfb0Ll6ce/BNdrz4zDMa\nPL7Ad/jysaEvqtVqMEpEZdZveNqcHb82m40ODw9VLBY1GAw0HA51cXGhxWIRwrQ0TQM7Q3PZ399X\nv98P10WfES5wv3Hqm76khN1reZzZeTgJ6MJ2ABPva9KkMBjXTXAcnU5HH374oT766CP1+/3MUgH6\n8F2nRd+2vS1gJJLiRyn9lqQfffH3v5D0l9oBGBg6yOvU1ivx/JGKTuE9G8AEdQWbAQYQmJQMclzB\nGS/Y4hqZQB76SDeb115cXKhYLAb6zkIoaKwPNur+0dGR+v1+JrXn94BRel8QyztYYNh4ZTa+JaNA\n/3ltCpPSazc4Hh7di72kbZYH5uOakWc0uFf6kz01BoNB0FgQfH0lrzM/KftEPBgL7GS9XqvZbAYm\n4ZkYBzRYhRu/608uYDJeXg+0Wq1CZalnycLET7Z7kbjO5qKzP4oBgEI7q9fr+u53v6vvfe976vf7\n4dpgEvFP3OJr8d/8zTi543vb9raAkUr6P5IkSSX9cZqm/62k4zRNTyQpTdMXSZIcvfIgkRrtA05B\nETGlK+E01zKkrRaAwTCQLnQyGZionmJ0Y/eJxGSnvJk9Hvf29kKpMntRABBOiSWFPQ4ODg5Cvn+9\nXmf2RICNIFBiKM6YMCqqRKXtln+Ao6dr6T+UerQWtBKMizQn18JPtVpVv99Xr9cLlZ+j0UjD4fBW\n2Ih2QdjH/bnRE1IBhp7a9BSyF44xzoArIMH1xqIw9+qsNRbFPU3tIQi1MNybi+4+P2EVfl3SNozF\nSQAWpVJJnU5Hjx8/1ve//309efIkZEVim7grDIk/mwcWeWHN27a3BYx/L03T50mSHEr6iyRJfqob\nEPG28yrpEKdp0PR4KTMG44NCJzMZ+D6TwgUoF7qg73hMJgETkmO7FwaM+J9409Nfruo7o4AlFYvF\noMR75amDIIOMUXms7jubS9viNsqwCS2ovygUCkFPYfICLq7rwLKq1WqIv/Hg0O1araaDgwN1Op0A\nftBsABomx8Y2cRiCUXvtBCEQBXCMDbt1EeLxFDbAarVahfoONuglBMLb4wAYI58bsBOfi3ERmDsM\nZyTME68gdq3H5ylhJnN4b29Px8fH+uijj/TBBx+o1WplirpikPB5fRdDeBULob0ty3grwEjT9PkX\nv0+TJPlfJf2mpJMkSY7TND1JkuSRpJe7vv/Tn/40dGS73Q4bmdDBGLKvznQEx2DpcFetfXJg/NJ2\n3wsmomdePGNDeOMCpVPpmG56PYhPHjyRr8LMW7cASGKEpBUBHzwp14khk0GoVCqZ1LEDH+fFoKDh\nzh7Qc7gnYnka4QU6gNd20PcADpkW2JEXL3nYAVBR5UqWCmbJOh0v+cf7o9swjoCx617oFYQjjKVn\n3QACSZkSfXc+HNPDUc92cA18nv6Na4NqtZra7bYeP34csiIuxppd5bKLPNZwh22Gv//6r/9af/M3\nfyPp5kl4b9PeGDCSJKlJKqRpOkmSpC7pP5D0X0r6l5J+R9I/lfSfSfrJrmP88i//csjBewzPwAAW\nsAtEI/fEDDgTMgYHfjyuJgOBB/JQhGPCLrzYiwzCer0ORUuSMoDB8TyNCQ2lOtJ1ErwV90coMp1O\nM+KqZ4icmVFVSViEGMi9IBR6tSKhDjSbgjXPJNVqtVBuzsI0jsN3a7VauHaMBSPCIH2FppdrA0CN\nRiMwKUIuN0DSnAAkfcp5CMniHbj8c6SA6XcPZ92hUG+BsSO0shs64R5ziTHwcMirjLmvNE3D/R4c\nHOj4+DiTQqW9KhPypuzghz/8oX74wx9Kkn72s5/pj//4j9/oONLbMYxjSf/LF/pFSdJ/n6bpXyRJ\n8v9I+p+SJPlHkj6R9Ns7T17KPozZvTWomxeyxMo1f8cLflzZhhWQLcFY8uieVyN63MzkBwTISpDC\nxaNIW6EQr8ixoO6EMOwO5YVEAAXXzfW4GIxhNZvNzDM6ptOpisViCIHcgIvFYqZwCPrPZr8ONoAr\nx2IZPoAzmUwyK00Bbi9Sq1QqOjs7C5kcN+hSqZRJpTIOXC/j7cI3O3WxG7ovx6csezKZSNruYOZl\n6QAXx40ZJGl55kNcaMZxXbvw+UnfeaUujIh+7vf7YVPfWGCPW56Y+arm+sU3KiRJ0/TvJP0g5/UL\nSX//TY7popenxmjOKhxsfJA9k+HHwHNCT+NB93jV6zh4z4vAEOlarZYKhZtSZhZkYfh4ZV/xulqt\nNBqNQnjAMnbWZwBmvgkO4YEvkkuSJDxgGcGMZeGsBSF8oKiLycmOXYCHh4DQfmpQyIxwTYAgdRoA\nFKXOxPpems/aGMZC2qZcGaN2ux3uzZ8zAlh79gBwciGZOghf6YojITPm+11g4IwR4YYbPSwFsRvW\n4OX3zlhct/AKUapdKXhjxzXXLWLB0mzpS4NFnvj5Ltu9V3q6wBlXxMU1DQyQswrPfbtQ6is5HTRg\nGV5R52EH8TGThfecdjOxCRtGo1HItbtwilGUy2V1u101m83gcWANvrMWExlj8RJlQAhw9JieCc3z\nTvkMHhjDIotD//mCMzdmSaF4Cm/ofUY6EfBklW29Xlen0wlpQjYdJiNCXxYKhUzZe61WC8aepmk4\nj+8G5nQdpoC4yxyijwAAnunhdSc+N+KUI+Gml9tzLMYNbQnG6tk1X7PkTIP5R4GZrw/y8Mg1La7p\nyxi8O9R3DRS0e98EmMnOBI7XVmDETve9wMsHVcrGmZ4+80Fw7+DaRawpxLF1uVwOzypNkkTD4VCF\nQiFUWSIg4v18khK+eHk05/GYnV2kNpuNWq2WpK0Rc3+lUimwG9J/9AMeE1ZEVma9vnkaGgIqJdhU\nIjabzZBGZN0GdJ++dO3IayQmk0kwGO6fayb8wgOjmfR6PbVarcBoRqORxuNxEE4dSFlZyn0BNrVa\nLYCTF49tNptQkYrBYvDUg+A8fC4QvuIsYFCkimFbjC01GjAqtLF4ZzQeDu2ZMK9Ufhes4G1Djddt\n9woYIHUs5gEapPacecSUTdrG+ngbfkvZ8IWcPu974RiTyeNWrxAElKhn8OX4fgxifoySiQsldgBE\nWPMJRtjCZ/Fgng1yAOR8XAPMghh9NpuFUu5qtarlchnESjwm+0wsl0s1Go2wS5VvQCMpMCoWpVEO\nT1VpDLYAn7MIPC9hGQ8sQqBkXsDY6MOrqyu1Wq1b634ASBxKs9kMRVflcjlcKwDBbxfHfWw5FtWp\nzEn6GYCA0fgmTYAqjISFh4joXiLA3PSWBxZfNiSJj8Vr74px3Ctg0LFMdiaci3yeeUBIc0Wa1xwI\n8BSeFnNAiZmHC6mSMmsSMH4XqBwwPKxBNERD6HQ64XoBIFfwndGgKzDAnuLjXrhvMiPQe0IOqDaA\n4YunuH9JmapU39UaoZMxSNPtow68LmQ0Gun09FSXl5ehD6DbeGCYT5qmoS4DnQdQoXyfLQK4Zqj9\n3t6e+v1+RnPgeA6KsFGERnQOSSEVHhf9AXBxPUyapiH1zMZIfN7X2bgQX6lUwsOGuBZAB02JBz8B\nGsxd5lSeQ8z7/77bvQKGr2Ugi+BeH4PyXL+U3cUZcPAiLwDBNQyvufB6CfeKAIXXPnjJsiv4zjCY\nPFDN6+vrkGGoVG52vx4Oh4Gu+yT2+8FAuXZJ4TxkNPwJ5YBMXLaMDkNMPpvN1Gq1AjiPRqNwn35P\n7H4+mUwyBUmeNSJDwlPg+Z5vXNtsNlUoFDQYDCTdLDJElKUuAq8LsNBPeGRSqpSBSwoPbILRQPep\nyQBMfBk8TMbZgbQtwEOLwHh9TtE/gCUhXPwoCRgbZelcP2EVc8+rjuPQJG5vkiGJazm+ivaN2AQY\no3WkxbPxPp93aknHO9vwqj6n7kx8jgVw+F4ZvmgNKkxaDoPxnawBOf6meIjJgccnFchnPH7lHkkD\nUizlE8r3zfBHBzj9dcHU031co7R9qrq/H1NWaLSvGQFYvYrRPSJFbDAMnjTO9z2M87Fk/CirB9wQ\nT6k6pd9hHV5C76L0dDrNaAxkgHyJgafgeRizh6c+Lj4msIXZbJZ5hgll3zg2d06sfCZ0cmDylgcK\nrqtxTa9qXxVIeLv3TYA9Fpe2eoCn4pxZeKaDQfVMglPImPa5aIq39Z2r8SjQfAzeC6r8iVqk+aDz\nTAwXDKVtyTbqPhMMY3eRkliXgiuouK/D8FoAj5e9SlVSyCK4QfEaIZJnpficr00BgDEq2BxsRJK6\n3W4wcN9YFwMhmyJla298Dc/V1VUY/2KxGIRNXqNuwzM8HAsA9O303HtTXCUpMCE0Dk+hO+tkLjnL\n8qI6wM+BE8EdzQvH1u/3w0ZB9DO6SMwkdhm920pec2fr7U0zLrvavadVPYRww3Hx09NFnjbz5cru\nvV272DUgeF9nCkyQONPCZPFNctAHfOfsXq+nbrd7a3MVqDiMBk/m6Ve0B67Nqf3+/n4mUwCocV30\nGRSchVwuzMGcOD/hFxPNRWZid/qc0BFDwJOjPbAtvu9vQhiVpqkGg4Gurq5CXYQLqS7Gutfmc2Q/\nSNNyXx6ScQwvDWd86BuOzec9vHLGBNgBaIwjc8vTrcxDvxcqYD1E4qFEXlFK/74KCLzdZfC7dJA4\nTfu2msi9Mwy8uTOFuMCGFjMK99b+Gp+hs2J0pdPwqKj5HvNS7ONG6Sk4r7eo1+s6Pj7WwcFB8IJO\n4wFG936c02speAQhDMLBkRSg7wbFNQB0nvqTbtZ/UDjlExRqjVHzHizFt+/bbLYPMYoZGGAP6/B1\nFPP5zcOqJ5NJEDsJp1h9SgUo9RguGnM8F8FhIVyfAwwaCJ+Rtg8F8u0NpJv1FFyjV6m6k3HRnGPt\n79886pL1Lz6uXKOzXBwPDIOQyMfC08Vu0LHRvwosdv0fZ0vett3709uJMTFePAhqvcdwLlAh1LmC\njpExaaG3zmA8G+KiG5OPieXLvAEQvs+5K5VKSPEdHh6GlYd4Ioqb/LkZ3CuiGqGQ6zAUSqEDcH9Q\nXE/HMhE8TSttF1jt7e2FdCie3Gs/6FuANqboAAT96pkYsj/UgXDvaBpJkuji4iIwGc7F+HA+ZwFu\npMwRwGU8HmcYk6QANgBcoVAI63YI6xygCCl9LL0gzZcoEFbBInzFMf0NSyU09dQt9TI8z9WFeRyh\nOzVvr2PkX4dmEbd7z5K4qOgGzcR2qkiHY8hQRzaPYaUkE5G6CIwHmukMBCMDAKDDsAAoMdvIUZyD\nJ6POAs8DVUbAu7y81HQ6Dak3n5he3enU+/DwMIiOgIJrE9KNIfF0dLytG7jrIO12W4PBQBcXF6rV\nanrx4kUAKgCG/sAb+/M94pAQHeD8/DyEdCzUAtTZMs/Bxj05RW6z2UzPnz/XxcWFxuNxeJq7a07M\nDxjJcDjUfD4PYSP9SVq41+sFcMSYuVfukTGmUA5tx1PYeGcYlGfTeA+W6aEuehOiOQ4o1iyYk84u\nXjfT8SpWkfc7/vtN2jciS5Km6a1iGJ76hVGRgsQgXJQi/Yb3RYyLay88D+7Ljz37gtcBdNwT8B28\nTZpuVyHW6/UgiuFRq9Vq2NeB53qwaTBAKSkzQdFmXGvAGABSdlv3sASDwvvi5dndezabqdFoaL1e\nZ3ZFd8rKdw4PD9Xr9TIbEHNtjUYjVGb6dXvlY5qmwagBYsAr3guEPh0MBmGMqX2Rbta+vHz5Umdn\nZ2FhGeBYLBYzm/KyRUK5XNZgMNDZ2ZlKpVLmmTFoDOyrSV0FoSTzATBIkiSUe0tbnYLrYF4hwvNd\nzntwcBDGwMM4Lxq7y6Bdl3gTRvEudAtv9woYTHgXmPBEGKakDIrzvocont+ORaQ43cjxACWM0Xdv\ncsrv2RCAgElHDp5l7oDMaDQKIiUhRqFQCKnbJNluhOtVp5zTd3riWugjzkt1pq9bgIEgzq7X68Aw\nut1uuG8A1H/oN7yiF8F5PO4rQj0tLG13OmOLQECPzIuXyEs3ad6zszNdXFyEz5Jt2tu7eQYrhs8G\nOcwRjJWUdbyHJvUcMAN/TCLXAUjCLtI0zSzpJ5QBLGBFGD5zjn5hvJkfPN8mr7weYNnVYu3hy7KN\nXcLn27Z7Fz1Bcc87ew0BdBvqFusa0nbjX4ydUAWP4eky1xjoyPV6HQyMCenrV1znoEgJj5Ek20VS\ngBxqPkvAvcYEigo4SVtQ8OImxDqKgWgufEoKTzNnImIcvqdDkiRqtVohq+Mg4IIakx3BkXN4EZ2L\nenhliu98B26EWbQFT6eS5bi8vNSnn34a2AWiKNdFzQPGjgAtZZ8/wxhRUk4fdzqdAPZct98X4Qal\n9Z4xIdSJnxnr8w8QgH3S1x7aOEPwECEPDPz1u95/nbbrc9/qkMRjZACC34QW6Bhe6x/HeR46eLbD\nRVHAwDUDJhDvAyKe4eC4UEz2jsBDAG6kWjk/gIK3J3zpdDphS71Y+MIDwXg840I4JSnziAFpOxkB\nTNKF6DCLxSIcr91uh4VeAAhhDVmAXq8XhEPPAPA5aiAQNhE/eZaqZ5dYbk7IB3vxYjm2AIAJoSOR\nXua+/NkiLtTCenAgBwcHIdwhfPM6GcAM7QpW4quNAf5Wq5UpwkPz8cY1SMpsx8g84wdmFRttHJK8\nLrN4VYu/+y5Yxr0DBpTRgcJXiEpZg5Bub8/ndJyBk7LLhaH00FioMsd3VuGCKDEtxu5GFJet+/oN\nF2O5JiYdHgnq617ZAYvQBC/oG/JghM4C0FboV0CF/mJ1p9dj4IELhUJ4wBGqPpkqDM7TxKQzYVUO\nsrAuCt08DOH+2DyoUCgEDajf7wdA9cIwN26vB2FM0RmKxWIQPKkIZQw9vHKn48VfHgITfgKG9J8/\niY77jVmJh7SsvyGs9PnM37vau8yCuCj7Nu3en97OZAPp8YhkGqRt6OJA4ZWY7n2ZDDGYoHT7ILgH\niNmMZ1PwTk7hmXwuhOIVfbl5XPjj9Q3e+CwT2zUZSRmDBKjyJh73DPuIV1ji/Slx981yKDxjIRVV\nrhiqtK3EBTAwNBeNGS/qPTAkN6DT01Odn59n0tmkHqUbFsWKWH9CHECBTsBzSubzedhq0MNFwg0v\nBvT0JvOBtLOkwH7oc89m+Xfpc6//8VW6tVotzCuWG3h25K7mIfo3qd17pScG4YzB41JnH5JuFdT4\ne240FBt5lsTTqD4JvAgLtR9j8Pie8EfKPjsDwPD6BJR1N2yOAeBwzbyGQZfL5bAkns+4su6TjWPF\ntKo1/ugAACAASURBVJbro1SbflitVmo0Gup0OuGxhnj5R48ehf0vY33D+9d1FKoaPWUK2yHE87oX\nQOP8/DxkWrz/+P5sNtNgMNBoNMrUm7h+wiMbGRf0pbjgzDNv7pwYFwCLvnWGAuuL2WA8XwlVCBd5\njfnLMejTVwFBHHbf1d5lFuRV7d6f3g7txjMy+EwySbcMQtqyA4Q+NAqYR/wAJDyFU0S8DlSeOgg8\nVAxaLkh5ObGDCfdRLBbDuSSFVB7MxB8f4IIsk5Hr4lgu+MGUAD3XUhyA412yYFIYXKfTCWngg4OD\n8DBgBwsPlWBBnk2SshTbWeJ6vQ6ZAkAIXQWQ4P4YL67ZF9x5VgGmhM7hhVVoE5eXl5n1Rg5irsc4\ncLsm4vfo2gXOhc9L2U2X+BtQ9MpPT0Hzk5fdyPv7ddvXARz3ChhU6zEwqOc+KL5ZKp+VdMuA8QAO\nFK6GO5MAAFwg9UVVCKa+hwXXw4Rn9yq+CyB52o/aCERQ9AU2jOG9OBuBCIcWgfCH8ZB29sdBepxP\nSEKBGcZD7QjX0+/3w0Q/OjoKT653Gu7rH7wGQdrqRYAU2SqvJiW8iUMAVovCpljtykbDALIXocEa\nAB5CNLIieUAM0/NKUv8++pC01SS4Nxe+2RKg3+8HwIVFkJVifhKOAcbOZl5Xv9jV4kyKv/46x/tW\nZ0kQkyQF7wx9BOmZIL4mw0MO4nwXSKG+xNp4Q4Qpp8muczgljr13PEBMJq4HEPIaB8+GADRcm2dg\nCGu4P67P71VSpk6DxwdKCl6W8wCa3H+5fLO1IPE9hVvsxCVJnU4nZH+8WC5eLAezIaMAYHkanPED\nJFxP4nW2DazVaur1eur3++Hz0k1o2O129ejRo9BXbHwMiLBnZ7fbVbvdVqlUCquC0T+4Pq7Nwynm\nC6DvVZcIn16zwzwiw0QhnQMDYAQriRmqz1VvMet4nRTqXdmWr6rde6WnF2tJWQFJ2saseH0XEp3+\nMjF539V0SRnvCwBh1C7W+eTiGn3Cczxf4JWmaWBLeGXPyFxdXeny8lJnZ2eSlBEaC4VCeJ/NVlxc\nkxQYBQVJbJa7t7cXqjE9jZymqSaTSWAyksIzURqNhvr9vh4/fhyejRGn/FwIJOzjGnieq6Twv5Td\neMbrP1wbgkF6Vgtv7Y9rBEh5gjsL2Bxgnjx5okePHmWW1UvSeDzWYrHQ5eWlJpNJZv0RoiQFXF7b\ng65TqVQ0nU51eXkZQJMMElkjdiyDIbGojXOTHaMkPGa7zhTpc//N51zzitOtnnaNWcdd771tu1fA\n8Mo3Dy0AAYyPHwzMhVGP3QEOMhQsSefYaBwxLYyRHeoOnY31Fa9K9LJzUsJOiYm3/fkWCKeSQvzu\nFJcMhlcHUmtABSPPZ+33+2FLOWj39fW1Li4uNBqNNBgMMhmos7MzPX/+XGdnZ/rOd76j4+PjUP7t\n6UqMmu8SmgHIse7ixV54cgchPLZnonwzIMAJXQFDJ5W5t7cXgKparardbqvT6ajVagWw8YxLu90O\nIOLhJ2zMq1l9SbpX9zLPeB4KY7DZ3DxhnlAqSbZbAhCqSttQ2PWfOL37KpYQi9mveu1133vTdu+V\nnh4GeNoNo8L4fTEU342pPEJVLJK6mOgFNh4b+3JpPAJeO6bVFB7xTJFYWPPl1hyX0nJp62VgFC4m\nMrExcE/jcf5Op6PvfOc7oeaAfsKoCSV8r05Yi3TDtk5OTgLdfvr0adh7wwvZYATE6QAEYYukDGDy\nXWds0nZ/S17DUCir9wI3gITzNBoNHR8fa7FYhNqQo6MjHRwcBMaEuOmpd4yVc7vDcGYBCFLp6RoP\naVGcB9ftjse1Mx7KRFgUP6TKHczrGrEzhrdt7+JY34jHDLiw5mjsgw67ICxwIQvaS3NxibADoEGc\n8rUjrp+4eIi34rq8KMzDJGodCGU85maXLX/uqWdrEE590x28LgZTq9UC65Ckfr8fFrG5EdKX3Jvf\nY7lcVqvVChWQi8VCo9FIz549C8bOlnjxZAY0AG/otWdT/DswFWcafAYazn0ixvq4eZqWRy2USiUd\nHh6qWq0GwGAzYGeNsEO2/HOW5vtswBa9wCoGA1/xTAjDtRSLxcD4YIj8Zp561upVomQcjsThBa+/\nTfvWMwwQ2pHbV4x6Ws29PJMaL4yQxmte9u0GFIud0jZWJCVHhSKFPMSnHI9rw9uSLmU5NRON0AK2\nNBwONR6PM9u7ISIi4CFGcs3E65VKRRcXF8EYESg9tYcRSApAx6Y3pVIpUPhyuRyESaotP/vsswyT\nkXSLVSHioU24oeJl+Z7H3o1GI/M0dw8PfLxhHPHS+s1mE9bL9Pv9UEKOA4EdAsTOjtCQYrDylCrn\noPn1O0j6ylrulfNx7Sxk89ohWB5hTgwcd3n9d6U7vMt275WenrL0BTtOL4k1+bx7NT6DoTH4xMBQ\nS97zFKaUje/iqj4G3g3HazN4ncnF69SXIFCyy7bH8K7JSNt4l9CKOL3X62mz2QQtAsoOtfbiN3QC\nnkRGCARdpqwdYfL6+lrD4VBnZ2eh9N2LvGBZGC8L8GBQzhC9X10zIuxwHYX7cAD2z3JvvEdWhaIq\nSRmqH6eBCTkcxD1UdT1GyhbCuaYFaKJP0B9cm7TdoZ30Lqts2Yfj8vJS5+fngRG5EB+3XXUYrwMa\nr/OZbz3DcG8jZYtgnGYDBngRaTvIXshDyhQPyDNNCR34PODgadN40mFYeEFoNTl3FzaZMLAKdnbi\nqWDQY7bQQ2jDS3MNMAM0EGoTWMCVJ6BJCoyKoqXnz5/r5OREw+Ew1EJ4eTyfLRRultwPh0O9fPlS\n7733Xkhju2biGhDfZeyg6ly/bzTD95yBcK+MH8BbLpeDHuF1NxyDvmdDYTJGLjASOpClcH3IGadn\nKug/2IS/7ufnu81mM7zuYI0j8H1Orq+vdX5+rpOTEx0cHISQ0NcA0b4MQLwp6/jWZ0ncy7tg53Gv\np1Dx7rwOorOtntdk+GP+pC0zcWrs9RBxZaGDGH9zjRiE5/gp0hqPx5lnrQIssAWu06sa48pO3+aN\nUMDrVQiZ8uo8lstlSOEul8tQ6u3raGBmgM5yudT5+blOT0/V7XaDR40/B2DE4R/gAztiAyDG4/r6\nOgCBh07cM5sQAaZeA3J9fa3BYKDz8/PwpDV+LxaLzDijBcFESHuSjeH6nUWRGcGJeMEWO3V5JgjA\n5fOsVaE/0Ix4otzl5aVevnyZAQycWJxWpU/uancBy+swiG+16MmEdI3CNy3xSkKM3WNSSRmP6F7M\ni3EkZTSKXUVJfM5pLazDvR4FQtB+NIurq6sAFJ7ZqdVqarfbIQXHdXvVok9IvCTswz/LGovJZBI0\nD2cMCIGFws1iuG63q6OjI3W73VuVtNz3YnHzLBK23AOA6NN4fwdP4/r4IBB6yT1g76EMDoFqT/qG\n61subzb8ZfOc09NTXVxchAcJDYfDkLXo9/s6OjoKz2mFzb18+TKwxYODAx0dHanX62V2vornoZ+f\nlDw1GoyFM1/XSWJD5JjL5VIXFxf6/PPPQwqYOenX8a4yIXe1b31I4lvDO1WEIvpkczruHp/3/QlY\neBtAxyeE1/lLWfUarwNYeEZDUjAeD0UQtQaDQchi+PNJnW5XKtst+ONFcAAHYMHE2mxuNnFptVrh\nKWCDwUCDwUCtVkvtdjtj2N1uV/1+P6j3jx8/1nvvvadGoyFJAVikreaBCEplJKKhx/6+rR5xOuXr\nADVAzD0iKPqKUdaylEql0E8wiyS52WNzNBrp5cuXev78edjhmz4cjUYBqHye0D+Swr6fp6enOjs7\n0+eff67j42M9fvw4gAuVpgCcp/TdKXHPiN+wR9gtDgEQ5HgwKo5HTQzbAXqY5FkkWsxwv0w4cRcw\nvG1Ycu8Mw9mDpzXdCzIRpezTrpmEPmmhxVBTH3wMxEuXnSKTSfH0qJ8zpspUUxKaQI/7/b76/X5Y\nRIVxURMhZZ/8ReyL5uIL1TgfGw2Px+OwcS4P42HCFYtFdTodffTRR2FfiW63m1kshucHZFk+7iXO\niJDoDYwVLBDPyQ5hXKsLxqvVzeMh/aHOHu6xOY0/EQzQevnypU5PTzUej1UsFnV0dKTDw8OgDxF6\nzefzEC61Wi0dHR0FI+WaKBGHAZ6fn4cHL6ERUWGKA/CNddBOAAQXfBk/+pU9OSSFMWV+EQIDyDg6\nxj8PLBw0/D0fk687i3Lvq1UREV0Ec0rstRhMNmcYGDXgIG1TgoAEx2QHKAaWYiYmAOdzZhKn7wg5\neGo5NSJoBcTMcZEZ3yuVSiFnL23jeJgL9wNlJ6bv9Xp69OiRrq6ugqgJU+h2uxkRrdvtBhrtRVYu\nSI7H47C5LtWjHqJ54RV9Avj6OhivEKUfJQWAgoV4PUypdLNbl28hsF6vdXZ2pk8++SQwHcAGEB2N\nRqG4CmNsNpsBTA8ODlQqlTSZTAKzOz8/D7UwbONI9oK6CdiAA6qzNsAMrQNAB5x89avX5OAUYBLz\n+c2DrLlvakxeZfR5wHFf7d7XkjA4LixJ2wmL8OQNj49R8R20BCrvXECjszHOuD7DxVC8h7Q1FsAC\nD8d6BOonmEBMDry45/g9/ECEdIPj/LPZLLNTVrlcVrPZ1PHxcaC45+fnuri4CHQfWh+zNU9xJkkS\nQprPP/9cn332mc7OzoJ4yP3SYibnOhGZKe7Lx1C6Wc7vAjUGRIbAQ780TTWdTvXpp5/q5cuXAah9\nz5HT01N9+umnOj8/zyyVZ9tBdiMHKAgjfP9UmIw/wIiMiq+o9XlGyMH/hBPcN33DeQE5ai/4Xpqm\nAewJSbl/xhon6X2f12KW8WXat1709AH2oixqG9z7+6T01KQvT3YhLq61INfPJPaKPuJVgATaC0hA\nh2FEeJN2u612ux2yGdBuvosI55kfFPh4Ba2kMHHZh5P+Ya2J993FxYWePXumq6ursGLT05zuvbn2\ny8tLnZ6e6uTkJHhfp8BePcsYAFL0OWHg3t5eSHGSEnZBD72DdR5SdlWys8jBYKBPP/00PJvE97mA\nHbAbO6Do+hbpYcrrASSumUrWYrEYCupwSLAZFyQxZOYN8w69gs14uEZ0M69IxrHgCKiRKRaLYXcw\ngI/jSLcfvJwXgtxHOCJ9Ax4z4LGchxsuRKERSMpQYRfZSFNigHyWjIefhx/XIySF9BuD4aXDXIuv\n1vSKTMIOrnU2m4UFYHgmqhhhP6z2RFtZr9fhkXp4Y4yKMmkmZa1W02effRZ2rppMJjo9PQ3e0jUS\nFk0Nh0MNBgMNh8OgPzgIE4ezwtX/9896VsfX8ngI6RkEryL1cJMxXywWOj8/17Nnz7TZbDLrWhhr\nvDeVqgiLFOZxn/TPZrMJq0d5nTAI4ZTSfe6RtCcNFgj4lUqlIIDTHzgrrhdHE2f0SDN7URdz2xlG\nrBvlpU53vf91ZFruHTDwPD7R8HQuEEnbZ6E6zfVB8Rg5Vvk998/xvJxYUmAOeCyKrnwxEdoFYYJX\nfvqzS/yJ8G5o/pBnqkGZOMT96/U6bK+PKOdFXcfHxyFz8vnnn+v8/DxkaSjykrahG1oC10cNhxs4\noEqWAt0Doc6Blu/hgZ0Bcl6qOvHUhGyMsbOH2Wym8/NzXV5eZupOSHNKCmtITk9PdXp6qkKhoF6v\np8PDw1BB6SEh90JFaKPRUKvVCqCASMx4kkaFFcCEeI10t7TNpnk9ipTdTBrD53/eB2SYH5yPvvPQ\neVfYkReSONDc1b7VWRLPzTswuHKMDkHH8nlXq6XsQ458xy0PczAeL8DCWNzDYmCkTPnBuKUtG8F7\n+8RxbYKFZNK28IsJ4usOFouFxuNx8HaVSkXD4TCwEcq7iaEBEgCEVKuHUPQX8TKbzBAqSNJ0Og2e\nOE1TjUajAExeI+JVkzG4Owjzebwq/Qrj8e8xjpPJROfn5+ExBTwEysvNy+WyDg4O9P7770u6KXf/\n4IMPdHR0lFndynlHo1GodqXAipoPAIW0qK9SxcBhVYBwpVIJtSzsjUGoxZi6JkcYSkhILQ/hJiGW\nZ1K8etdbXBUat68zNPlGAIaLPd7pLvx5SEHHeqUeVFBSqPzzYiMHDTdcL7rxDImXjUMj0zQNNJgn\ncvMdxDO+R+0AVY8YDUwEkCCsgUInSRIedTgcDoORUrlIrE2BVqvVUqfT0dHRUaYuBFZEOMW1+z4Q\n7N59cnIS1qpcXl5KUkjxxsDhYi6veQrSswKAkusC/E24t1wuw3Nf6eOLiwv1er1MhSoh2gcffBDG\ngD1IAQsAaTKZ6NmzZ/r00081Go1CCrfZbAYB09PgrDnxgjNYItcnKaSbC4VCpngNkEeb8BWycRqV\n34johKoestG39FncHCDcYb5O+1YzDEmZQXLQcGbAAiRpG8+6SIS+kKZpWNmIUOUxo7MLP4/Hsx6e\neFgCALTbbR0dHeno6Ei1Wi2zj4PfA3UNrFDFeMfjcXgfLwdg+MY6XkBE/D6ZTIIewNPXfL0MK1Kd\nCnvYBcWnHwCX4XAYsgeAVMyQPN1K8yyUT3ZJGY8ai3h4boD18vJSo9FIaZoGEAP0Dw4OQpajULjZ\nOAjgBCw8ZB2Px3r27Jl+9rOf6fnz5yqVSur3+yF0QaNi/B3UHcSq1WpGR2PvE+akrxmhD8ickY3x\nsn/en8/nmR3K/RqcFcd6hvR2i9PeVbv3LElc6s3kpLP420u2AQM+z4+DCDQZMBiNRplYEVpeKBTC\nFnAXFxdar9ehkIciKQy72+3q+PhYx8fHYdk5cTL34/QSKr+3txcmHMfDi/i6ES8JJwQiFKPc3L0T\nmgjpw06nkxFXYVhOmylMogaG8wCKHrZJWRYIw5Oy64DIMLlYDEX34jjYnC/Um8/nury81Hw+D0Y4\nm8304sWLUIfCA5YZm/hRkwDNcDjU8+fP9fHHH+v58+dKkkTHx8f64IMPws5k8fodnJEzKOYXlarU\nqbCG5fLyMgAax5S2C9Di+esgAEMDoNA7mDvuKD0lHzOJ+8iQSN8AwIA5EGIw+E7LpG3dvRd4MTCS\ngrDmC84coeOBgpEQM5+enoZnfDLBCRmoteBRiVBbwh6eABangQklyPlTZerXi7fEkJgsHBthjBCG\nvuIar66uQihDkRNb+/t+ksT2MCaewM4DhSh28lCPfgasvBCJPvUwjz4HZGA3GBKswxnddDrVYDAI\nFZ0IjVdXV/rss880m83CjuY8/d1DOPb8vLi40MnJic7OzgJjevr0qb7//e/r/fffV6fTyd2shxQ6\nAEZ/SwrsZbO5Kc9H10BzAXi8stj7hH5gvH1ZAZWnsE/mUyx2ug3cF0h4u1fAIEdOnI7gg4fjf9c1\nJGViQQaUgXOBLi7xhmaysIkwAQ+OYfJ5vLf/hhF4Hcj+/n7mwcvoGQCXr6pst9thzQvHchBEgPNw\nhLAJMc4BxScU7IUS62KxGMRSYm4Mg2wI2+cXCtkNkaWtSIsH9HoWZ3peAetiNdcc78+K18a4p9Op\nKpWKDg8PdXh4GGpMTk9PNZvN9MknnwThl1AsSZJwXvb/ILvS6XR0eHioDz74QN/97nd1dHSUCSG8\nojN2UlJ28yAHOwdPFs75s2acMTOmvvrVtTQcIn+7DuSM+5vW7n15u3tVV9j9bxoD5/Gxv0aBEiGC\npIDkTFqMztOHDB4ZCc7JGggmq68m9e3xPLUqbRepYRyFwnYVab1e13A4DKDE9fC3F3oBksS4UGiA\nEjbkgh8FQmQaYCloO+g5s9ks6CR4WjQR93Zx8+vyMNFjbv6XtiyEUIVrZGduVsgSSvFA5qdPn2o0\nGuny8jI8Ac13TPcCMwyYEnHCxoODg8xyfRfHXfhmLABbRGxS2cvlUvV6PTzYmT6eTCYBMEgbO7h4\nOb3/wHTjzJIDD/P9m8AqvN17HQa5eozAC2dcifdJIt0YZby4B7Sez+cB4TEQX4pOiMCSaI8hfc9H\njJX3GFQPCaTtzt8YA0ABw0EbIP4GJFDQ4yX30rbi02NfGBdiHCzDNQoqMj1eBjyYqM6opO1DoqH8\nvgW/lF0x6aIxY4S24UVMgBvgz/8OsNQ+sBky9RCbzSaEVmwADMB7PQm1EoBdvV5Xs9kMi/8A9WJx\nu7UB4rdv0gsL9WUIjLuntP1Ri+v1Ogi1q9UqLPZzhutpfxfrYb+Atu/Lsgsg7mIc/p1XMZO3ZS73\nzjB88rmh8r57OT7vQpsXD0nKPIPC42kW/hA2eN2/l6XH5/ZSZ99zkzoKPof67iGOi5vumaHTXI+L\nZZIyYYTTXJ9sXlLsx8a4nSJ7WtqVf9/smFSlp039+hmXeMxcm/D1IXzP6bjXJvAdPoMoDMOBybFW\n5ODgILOzGWX4ZCM8XQwblLZaFzoFLMUL5gB2Qirmg6RMeTfpV1gJIaC0LaYiqxSHZV6Lwfxx4fn6\n+jqTho71kJhpx2BO+7caMHziMOFi4cdTq0xWL2Rx1dg7OQYMDAPqDg2nAMtDEWcOeHUMyp8MLmX3\nJGWC4Mmk7ZoKvxeMktAIQ8JwqbVgYRz3w2/vO67DF2TlTVCfdPQLbAjNhVJv9CP6kM95+CfdXkUZ\nhydS1il4zQvMgIVagMZwOAzpT5qHZmhHcZaGtlqtNBqNwv94bddT6Hf36D7ffKUxn18ul6E8H7Bg\nXdF0Og3jRcm/p0w5v++x6iGfsxZ3ktxXbORvChav+5m72isBI0mSfy7pP5Z0kqbpv/PFa11Jfybp\nQ0kfS/rtNE2HX7z3h5L+gaQrSb+Tpun/e9fFe6d4XMz/0rZWwzvUKW4cO3vlppcWswQdY0W3ADA8\nLpayq2JZM5JXAemZDT8vsTHHw0tT1s0EggYTwzuTcAFU2uo+GIyv2IUB+O9YwKS/nJ3god3Q/Tv0\nhWtFrlFwbx4++rjweddmyCDVarXg3TFEtAGuAbYGSwAo44yZC5Ocw6+H7/jnnC35Gh5AHfDfbLJP\ngwdUeG82m2XS4h66OmgQSjoz4jtcr4dxbiv89ixKbE9fdXsdhvGnkv5rSf+dvfYHkv5Vmqb/LEmS\n35f0TyT9QZIk/0DS99I0/aUkSf5dSf+NpL+38+SWSgUAEEFdJ3BgcJDJo8ceJ2NoeFDEPERGaVvR\nWCpld+Piuz7x3RtxXgcJJgfX7uXlgBP1H91uV+VyOZNdcY2DWJuGoXmYgHaCN0bUc5Ve2tZSeBUr\nE5Z7gDV51oa0MmDqoY+UfXKdh0OxmOdirQMV4QOrSNEaAA2uAbF2Op2Ggi9fL+QpdvqOcDVmPPzv\ne5rQ756SRydh/AB7WAQLAOP1Ro1GI8wb+og5zpi5Ybsu5vfkc84rZf33fbRXAkaapv9XkiQfRi//\nlqQfffH3v5D0f+oGRH5LXwBLmqb/d5Ik7SRJjtM0Pck7NlWOziC8qlPKLlP3NKuzEJ/ALizxPY9x\nv7i2MDikEt3API3JeZmYsAKPM12tx0D4jVfkOp0tIDA6Y/C1Mr41IJ5I2jIWXqfAyNkV5/JNcZxl\nuAekXz1+57vcS8wQ+Lx7u9gw3Tgd3J01lUqlsJUhWgdhQKGwfXQhYIGgDVB7jM+Yo22wEpjX0T24\nLmou0L18fBBkfcsCr6nw/Ux8RXUcXjOmMeNBfPfUvjvFmEXcJ0h4e1MN4wgQSNP0RZIkx1+8/kTS\nL+xzz754LRcw8AK+bb9PAia3tM39O0j4/3gszyQwIYmXmWQuLsUqOuGBH9+XiVN9SS2GA4a0pYwY\nKgZBtgJ1XlKIe10oZJK6pwEI/SFP9AuG7RQd+k4fYOBeeMXr3IevmvSwyvs7TwdxQKFxLb6uhOvy\n6/OdwAAHxh025JoMc0ZSMDLGh7EFEJyxuPDp2hJzgQVh9KMLv+gs1OKQSYJ1bTabzD6jDqL870DN\nmPkeovS9OxPv028SaLwr0fONksWxwbvXjtNLTn352+N5N142hQEovNiK7282m1BpCAvwpd+xVhFu\n1AQsX0PhyjnH8Vg5fqjRer0Onso3/YVVsLoSb4+RYQSsVfHY2isTAWCn2IQcHlJ5DYf3pdd3OGuJ\nhU33ij42jBmNe4hBh+/Qj7FQzTXCorhHhEUHBIyVayMkQZeoVquZEBGgAczZwo/5AjNF7Eb4dkF6\nuVyGXczH43G4TgDKrzeu5OW+4rVRMcjmaRn31d4UME4INZIkeSTp5RevP5P0vn3u6Rev5ba//du/\nDR3a7/f16NEjSVnVXcruL+n0U1LwVHHNAgPB4HuIwqRE/AQ0SIs5RfdB9T02fZs399qsjeC5GTyr\nBJ0ClsLE5Ljr9TqspHT67BWark8QPmw2m0whmfcf/cN9c2yPp5moeEwaIMF3GAfPnPCaAwBjhDHF\n2gnHRQcANDwk436pe+D4iIpoAp4O9TCL9zxMcsbjeg0hhdewUM/h1b0+B5ytdrvdADbn5+d68eJF\npkDNH8xESOOFXvQX/ec/7woc/vIv/1J/9Vd/JUk6Ozt7q2O9LmAkX/zQ/qWk35H0T7/4/RN7/T+X\n9GdJkvw9SYNd+oUkfe973wu7SdOYjJ7/j5tPUozbAcHLtpkceGgHDSgx+X6Mx+NgUp1etk7+3Auy\nMHr2zDw5OQlAMZlMwuRh/Uir1Qpb7MOCACOuE+aAMXC9GIKvZYgFYjwr98n1I6YCpvQPBkFI5iyE\n4/kEJk0dhyMOKHhWBxLXnNxwMWoex+hG7yEV56LPyTA4QAC0AKrvGsb84H3XPgg/2GjH2YSHOR4i\n7O/vq9frheO7AIpG5szZU93Sts7DmaHPfx/vNwWQH//4x/rxj38sSfrpT3+qP/qjP3qj40ivl1b9\nHyT9WFI/SZJPJf0Xkv4rSf9zkiT/SNInkn5bktI0/d+SJPmPkiT5uW7Sqr9717Hd29GYqJ6PlrIL\nneKJB0vh+z7JXPhjEDAeYnjPyvAdPDiTBZBApHKW4oIZ5c5sCEOsjZbRarXCg416vV4oGXehlh8M\nD2CCYgNo0OnFYhE8r1N37y/+R5dwyg0w0y8ulNK/jNcXcyL0n2eJPH3pcbufn+N4H8OOAGzWrYGa\nZgAAIABJREFUa3gYxPjwPRd4vToXQOc+AR5qKYrFYniMImDjaWlS3qyIpY88dIpDBDI9PJtWUmBI\n6GUuKPuqWZ/PceFbrBu5jeS1ryNceZ0syX+6462/v+Pz//h1T+5ahE+muFaAieyfczU67zkmcVyL\nYXu6lkmHd+V6YkpICEKalFiUkAavyKIutskvFouhCKnVaung4CBs1MuDh130dLBkosA2fGtCjAih\nEPBwg6IPXIHHwAEXz7xwTmoGeM3ZQizo+bJwj7XzgMFFQg853WBhWF/Mo1vaEeL4er3OrBDlHhBI\nSWmjB3HfHuYw5oCVbxPgmpcLqg7AHu7ALH1tDgIrOgvH8R/qUJgDzjxiduH9kPe3f2dXi8fvTdq9\nL2930TOO5dyA44nG9/mf95hYNCaTn4+/MRqPSX0SMMFjg/Fl2/GTzKRsbQdsotPpqNVqZRaxIXY5\nqLlxAwCAI6FEvFLV9wP1VZfQXRqGA+i47gNAOjPgetzL56n3viIVT83rAJ57Zv8bo+R7vhAsFlL5\n8YyC78oGAPg1AA7U4LAamFDJq0d9A+Y4/OC6HaydsflaFcI1n8MOGB5Oe4Wos2bXMtxR0vIMPwbs\nr6Lde2l4DBj+t1NkJhKTnAFnsjOQbnzOUqSt+uzsxCvz4nP7Xg58F7Bi0uIpOL6zIiaE78Up3V4r\nwPVyDkkZo2NNCXtkYnD0CR7e10Mwmb1mgUkb90HMEBgbjuM7bnN9zsAADHQIB3CyNLuyKXhzN3g+\nz73F9+sZHv73tLyDESFAuXyzafNkMgmiM+EEa1d4ULbPA0JaXssDEV+LQ8YFoZd5CBOKBXgPdRyI\n3QE6oPOaj5N/x7/7VbR7B4w4DRen7gAL4ngM0vULJr7rAMS2XsjlnQnNxzO4keP1qQakGpOMCsKh\nhzgwFV8EBSARrzpTAvBiKu9aAx6asIN43Os1HBwcdBy4PKXsQMX1uyfzlbSl0s2Gtzx7BfpeKBTC\ndXEv9DsetFQqheduUDXJcd3j+kIxAERShmn5NRIKwt6SZLvgjx9fIYygjXi8v7+v4XAYqjcBEncm\nzmqdWcYZDBfHG41GYFjn5+chJGWuScrMUdcqnNXFLOEuZnFXeHKXzb1Nu/cNdBzRY6R1iu4DKmV3\n5sZofZWhA4TTci8Kcs+Eh2DCsqT64uJCg8Egs7EuzAJw4Fr4Oy+E8XDI6T5G7loNYVUc+vhvnoHi\nAOMZE/ozzvPn0Xz3/uv1OjyLtNfrqdfr6fj4+NajHTF4D4v8PovFYojP6bfBYKDxeBw8tusD0raM\nOk6x+lgDnACkh1TeR5Iy4R99yxxAr6GP3Hu7/uVskBZfp8+hzWYTytfdEcZ1Lb59Aef17EgcosfM\n4U2B41sNGB7TefyGp8NYPPZ2cci9J3/nqeVSdo8G8u5MxjgtShoOEXMymQSgQGX3rfpIjeIJvXlo\nEbMcn0Cx8Aeb8AcpOeOgQlbSrS0N3Zi4hhhIHby4Fk9R8gzQcrkclr1zDVL2mbAYgPc1bAHhlyer\nO8uIvbSHSTSvCPVxRGB0Nsd4ukjOfpyEVrA9noDnOhjzMF5zQ7/R4tAEgRPWube3F9gXn4+ZNNfg\nj3jkmrnHeKzuCkm+rnbvomes3GLUeH8GxoUoF5AwLAzJqZ6zE47tWQM0BjzRarUKz/dgYgMYq9Uq\n7FOBJuFiqZR90hr3B5AhjLnwl3dPcbEaXtNFQGm7PmGz2YTMDMDCZrWECC4Eunbj4RwTmvoQloCf\nn5+HJ4uxaI/KRzdy1y7c40PXCS9JNTebzeAs6JM8r56m22fFpGkaHr7sHtl1C9cvePrc+fm5+v2+\njo6O1Gq1gm7imx474+HHx8vBxedWLIwDnmRpeI0iML9uVkAzPzhPLPh6exuweBfg8o3YcctFS2k7\ncRxZfVLSif6kMtcfXAPwUAZD8WXSiIVoFZeXlxqPx+G7NPbOAGAQXqncpMjKQyS8XuyVPXyKQwUf\nVLyn9wfHc6aF54QRkeL15fO+Z6nXGnhIJd08RPnJkyfabDZ6+fKlfv7zn+uzzz4LG/7s7e3po48+\n0q/8yq+o3W5nYnoPc66vr8NWhLCzs7Oz8JAmKiilLctxMTNmnKRE0SXibAh97Bvr0HfoFWmahodO\neSiIsOwCqTML11y8qhfDhpm5SAxgXV9fB2fE+4Szrnc5Y3FtL9Yw3rZ9q0MSX5ATx25+YxiFi5rQ\ncQZTyqIzQCFtxVSKcDabTViWzOaxrCuJH3GIcbHhqz8OgOt0Lw0IuocgxIDRsAEMGQSn1T5Riaf/\n//bOL8ay7Kzua1dVd3V1V3V3dU/3GHlsQDHS8GJZUQRIJDh5QYZEcsQDQpGSQEQUKUhBIlKwebEU\nRSJEgjgEQSRCUBwFEZQHcBQpWCgx0UgBTwIDJtgTB2ts48Qetz0z3V1V/aeqTh6q1rm/s2rvc++t\nqu5b7dQnlerec8/ZZ5/9Z33r+7P34UpGMiqCTCllEMW4ePFib3o5h8R+Bid/UWMajA0ot27d0u7u\nbp/u7OiCX2dgNudr3E82XfxukK2tLV2/fr1Pe/fbx+yw9OT2eHB/0SlLU5NjJtnc6upqD/5ehfrc\nc8/1YLK9vd07PL2cwC+DchjcQG5Qt4Lw2hFOZtfXLM7jzmPV761hUp0Z0q1btwavwcyl+B7LfraU\nZFRpMrXOP6ksFDCScjFpR5rYlRwsFrIOMpEECnqeaS9zdyl67p3VZ7rsZB4OHGbpeQD5XrwPHXRp\nWzNRiv4DgyJDci7DvhWvXaBG5vL9paWl3mxy1MP1Zig4287/L1w4eGGT6+h72+7mTtkuw+2+v7+v\nN998U5/73Of0hS98YcAcr1271vt+nKXKSIE0cZ6SnTHPxed5kvL+Zlo2MTiRbdpYQfjVDCsrK/0L\noqhUfK3TxF1H58IsL0+yf8lW6acopfRmovuImx27HQz6Nq9aPotZHJ95zmnLwp2eDjda6LGnI4g5\nB+n5Z2cmS8lVjNYefK+IB4c1N00lOtQy7OWOzlCl7+sBmc6udNT5Xg5lcvk9HbjeCPett97SG2+8\n0ecTcJtBThQunFpfXx8sE2e0KQemHXebm5sDbbWzs6MbN270rygkaFr29vb694QsLR28MNlAUXv1\nYrblvXv3+pc0uX28DZ5NKzqs3Y/uW6d9G6j4/9GjRwMzyA71vb29/m32BEUqA7MdgyKVGNcduT1s\nblpJmGHYSW62ynVAHKezsIr8/KTBQjpjgEGKnIlE0tHVfBnDrtm+1NC+ByMTrgcjENZo9B1wgtHZ\nRvrqjnayj8v2oOTkdF0S1CT1E99L2P3eDeaAWAxU9BUsL0924iJrSQcngS0985xoPnbv3j1tbm7q\n5s2b2tjY0MrKSq9d3aZOHltaWtKtW7f0/PPPDxyNZkFkkewvtxVzFxyB2tjYGBw3yEqTTW1sRlJL\ne+Lu7+8P3jPjFcSSelAyk/GanMePH/f7lxCQXTYBhUlZNrl8Lncz91aR9LnlOJ9FavPjScvCTRI3\nFpO1zBaYvksAsdalCWNtYADx8TyHk5ZORw94T/5aQhUjGnRAGmw8+JlS7UFFukoHIR2kvN7hXa9+\n7LquZwsO6zI8adPDnnkDH9fJMLPVmi+98NkvHvjS5CXX0oT12RFpoLSvxOnwN27c6CcwwZwOYF/r\nZC8DOB2Nrjv9OgZaT2KuvqUvwL8vLS317165evVq75cxc7lw4UK/1QHflytNoi6MZLlP3ZYEYbM6\nj6NLly7p1q1bunHjRr9EgG3fcm4mg8hjTztSsnCnpzUcB1QmyvhcamFL2nyeLDyP53hBlmm37+k6\nkN7yN2tgmy25sEsaZvJRS7ssmwqeBOkhJ1CaRXA/D5/DdS4eoN6kxwyEIeWsB9uXJp2F7WzzzRp0\na2tLd+7c6f0gXmDVdZN9N7uu0+3bt3Xz5s3B/hUUtzEZj6Teb5AJbW47l8NMWDMTtyXHDCNUfh4D\nWPpPXIb9Q1w1S4czo1kGJI8ls0u3j52ZFy9e7NcT2Y9BdtECDMos/osnLQsHjJq3lzactTjpM+1D\naiwuvnJHc1KSZTC5iYuwSN1dro97cDo3gmBBb7e1eO6lYC2YjEVSvxmMWYNDj64DNSuTmZiH4Odm\nCI9tm8Dh63g+zUJ/ty/EYcqvfe1revjwYe9gpJP2woULvaPQWxMyGW1MY9Lcc33Zfz5nZWWl19BZ\nJlmfn4l+Bgr73s/BRXBub5tdHD8WH08gzgiMnefr6+tHsk99PdtkzIeRn5+mLHwtCbU5xRM3IyOc\n0ERodjA1Dik5zRXf1x1LBx4TcazJ/ZsnEN905vs55Or/fPmvNFk5aybhbEVSbIdb+WwEUwKjtSC3\ny2f9Sc39/LTRGUIkmyLrY1jTYHfv3r1+ZymDxOXLl7W5uanr16/rueee68Ei60FTgWaF81n8PJ68\nubJXmmx4ZBCjOeuxwDVI3A9FmpiifHXEV7/6Vb3xxhu9+cfUdwMen8d1yb6jIrAv6fr16/2b0dje\nzE5N3xb7fRqzyOuepCzch5E+gcwP8HmktYxEEGhoEzOmTcbhCcCXyTh5ix1Fx2vNTKImMOXkeymo\nFb2WwpvFEgRrWpdOSg4aMoDd3d1B2rqkgQ3P6zzpfA1NGteTE9L3IZMzYCwvH7xd/c0339Trr7+u\nruu0ubmpGzdu6B3veMfAZ+GdvzkpaOcbLJiYdffu3X6JuKQjdVhZWdHNmzf7dqKPwyaGy7T/y4yB\nE9v5KH79xLVr13Tnzh196Utf6rNmL168ONgRTdKg/+jA5TIEh2YdveJeoPRfsT04pigJsrXfn6Ys\nFDCkoX9BGr4ekY3Kye/zfB2dadaQHDhLS0t9x5EKOgrhweMJzyxNgpY0XHxl8PHASCbjSeBU7a4b\nvruEA1w6uj8C8yxsUpn+m5a7nmQf+/v7vU2dJpZZhf/7/rT9DY5MJnL5q6ur+oZv+AbduXNHDx48\n0Nraml544QW9853v1Obm5gAgXIakAWvx/ai1CVzMSnVdvL7FkQuXT9OKioRp5gYWR8EM4P7NJsf6\n+rqef/55ra+v9/4pmmw1P4nbKBdJmgXx1Y9Mz2cZHOuWmklZEzLIpyELZxjU/tLRDVGp7ejwYhYc\nIw4+ZlrJ/Sgc/XAEwnRVUu9QqzEX1je1Gte02DRgdmVGOZzwY298KaXf59N2uf0lNnM8KO1zsWb0\nvUy9ue7EbWhHKNvRbIigRHAhu+Axn7e+vq7NzU3t7+9rc3NTt2/f7l/MRDPD5hXDpryXNb3rYJ8I\n9z9hSNQbKvvzV77yFW1tbfUp+3Qyps+E4OW2cp+4zdz3knpFQIc1lQkZrMsnY/b19mFQobBeHPsc\nuyx7bP7wumQoT4J9LHzxmXTU4Zl2eLKQdIwyL0GaOCDtn1hZWemz8qy9MnbORBzfk5OHDs2kvtSI\n1m5874Qdf7yHf7NzVFK/GEpSvzTcTMBg5cxFe+OpLS9cuDDII2Fol8/EaAnDkDTnGL2gb8P5Cs78\nZMaiATSBwH3s9nIb+xnscLQ2L6UMnMUu98aNG3342Kxgd3e3f6s7MzPd71xT47LsX3G0zM/KiBHf\n5M5duJgQJw1f02iAN7PwSlQCTPpzak5O/s75kfNm7HPr+pP6ORYKGB64LXDIwV6z59Je5ToPTmZ/\nd74EKaLvRRZjm93agiZEpm17glKTelLYp8EB6YFHMDALSLPJdD3tdE9sgoAzRVdWVnrAcP3ZbgYK\nmifUVnkvR3C8A/pXv/pVvf766302JLWqqTZDnuwjav50GvMc9wEBw2C5sbHR9wHXABmEHz582CeW\nZSSObUDg9Bi7cuVK71Ph+15ttjIpzG1G88dp9Zubm73fguYHQaLmu6gxjASQ2jVPSxae6UmHFH0D\nmZHITqKdKk0GuJ1T1l5M8ZYmGoap1Ong9CQ3xfWg6rqu1+bU3Nby0uQNXnSuJS22JrbZYjHbcc6D\nWYPrYDBjKNdmmBOqmK1KU4UhWLYD6bZ9I/QFuI7ONPViPa/oLaX0kQ2HgOlXYCjbZh7ZmfvUE8q+\nCp7L/tnb2+uB1r/xdQFeceyEN+ZtEBgJIE4Ht+PS5xIszUZottjMMNC4fG+BYOdvRrzcbzUZm/i1\n38bYRe1z7fu8svAdt5KqUftRY7PjpWH2ZWrgmkfcwoVjTHCinWrHoxkKmYS/2672dnDME6DTTdKg\nbPo7nODDN60tLS31y7H9shuyGDoC3WY2vXwe39dppx4HCh2F0sQnZHD1feyHuXv37iA1/dGjR32I\ncHt7W3fv3u0ZkTSk8Bau/yDoMfpEYPS1bkuDCMOZZloOj+7v7/f7UJh9UNHQRHWEw+n0ZLocm+4r\nvuyI7NJ1tq/MJpqTs2qmyLRJW2MUs5yf8nXnw2CY0w1LzWf0tkZOpuDfqIk8IAkavJcdYvyNTiqb\nA6a6fMUgozHSxE50HZhTQa86V0DSOcqt7Q1A1nJ+vr29g/0cGOK1EDDTZPPvCQ7SZK0O/7i1nR2s\nXupPR+rKykpPtT3xHj161EeBPJHTdpeGO7i7TD6XnboG1lJKz5DMIP3yagMjzQHvmua+cbl2km5v\nb/eMzPkXroPraR8KfRuuv30b29vbPbtglMzh5fX19SM5LjSHyBD9n59rTs95zY4xlnESWThgMALg\nzqavgZqKWob0kglbBgPu+E2HpQePpMEgdBjS+yl4nUTXdYNtABle9fWmy0xD9mBqbfRiLeRntwPO\nA9AU+d69e4Nndhke5B6YnCC+n9vQQOW24g5ebm867hhqdVkGJk/qa9eu9Q5O94/Zl8EwXzNIR7Lv\n6/aSJgBI/5LNBU5gl5dJWXx2+xy4UMzvt7XT9Pr16wPHNn1YZEAGBzMUSf1rMO3runr1ap+4ZrPY\n9/V/KjYfy0iH/9fAIo+3gOBJgYV0BpyeHkhuFNJPRhVSY1ujp4ayieAymETFsk1jDRQOdXodgQeQ\nwYaedHc+y7W3n5OIAz9zKrws2xrcSULWrGY3mVPhiU+aKw3D0HSmuj4EtYwIcD8QajLv02k73z4f\nL33P8KUHp30fnBAMS9LZaOCiOerrEmDc516A5+fmO1hpttQcwzapuJzdpoPF11ExuS0Nggyb3rhx\nQ9evX++ZFyNPNWd+y4SoSTKLmjOUQv/Mk5CFAwZtf+loZISJPdYs0jCcRdrricGyJPXa1q+1s7eb\nNn965z3IWD61kRkOnbUZkjTgkY34+exb8D6hFy5c0N27d3tHoqTeZOEEt81s5lBbim9t6wltU4cT\n021FU83iupv+u11skjg0mQlZ7Edpso2igcwTTxq+Oc3ts7y83AM+Wafb2r4ag4brZ81N/4Kfg/1o\nk4YbPNvfYP+G/SGuozR84ZLXhNy4cUPPPfecNjc3tbGxMdhZiwqQzl3XZ5YJXWMaaa7wM587yz+t\nSMrCoyT0eDPESQptNHckwA4oa0Ve50mUaysuXrzYO6WWl5d70yO1k8sh/bVmzWjO8vJyb2KYHdCn\nwpwC192T1wzEUZBHjx712/C7LRjNITvgKw7NiNwW1q4EXoKJ2yQnZA5CmiUEGK7t4JZ/BMn03hNQ\nPHmp9f3dTl7vLGazkk5gKpLl5WWtr6/3fey62GTzcY4Rjzk7nN944w3dv39fjx496pedOzHNZod9\nTgZhg8WtW7d0+/bt/p0tVIB8Zqn+YqZso5q0GEaLXeT9xso+jizch8FswvQMuwE8QOms9GSm/W4t\nJk1i49YY1opLS0v9LtsPHjzoBwG9/KTzXdf1Po/UpPZTXLt2rd8TkmFB7gZlFpOhQTvS+DZ4g5FN\nL9rpvsaT1YBH+9uD0m1LX4c0Sb/3s5DlkakxesSyybhcV058goTPNVjUfud4YMjXrIiJbl7tSRbq\n53M7mS3Zabu/v987tOm4Nqszu/RzGuS9xsQmp5XX1atX+0V2169fH9QpJzHBgU5P+sKeppz0fgsF\nDIaxqN0tSf3prU/7naFX00JTd2txe/7v37/fL4NPTzgpPVOvmUDl8/hCYEYK6PNgPohBhHF/Rycy\nmpPMhixif3+/XwNDyksHntuX/hZqn9Q6rUgKy036y/slc6AfwCDHc3h/ptN7stO88Pne/cpJWVzw\nZXPDY8Tmn8u378NlWVG4L1JRcXEa9z/1mPKrFrjzd5plHE/08/iPwMt71z6n1EwO3if787R8G2cC\nMNL2dqdSCzNUydAoIyhkGVxs1nVd7x0nQ6HmpcaiSWFNTrruFO2NjY3eMfjmm2/2A5WA4EHLjE+b\nCS6XCWwcyD6Pk8K+DEY6aE5Ri/E6PhuvoQOUuSPpCyJTYJ+x7WrAkSFfgkVGtOx8NZt0FIR+D0bQ\nSikDMDdzM/AwOpSRpGQ29p/4HmQZuelNPmf6TKjIkpXSScy2GJvQ0yY5zZSajPk25pWFmyREwqS1\n/i2zOj1QEs2t0Rxnt5bZ2trq04dplzNU6foQgGgGkCrTW551YXagr2Po2KCQTko7/Tx4JQ1yMnj/\nTC7ixE82kLYzJy1NAD6v/xJYcnAnM2P/0UeR9LsGFHTcsh/ylQ3S8EXY0mQNTq4doq2fDm1OII4b\nhtCpeDICknkxjIZQ6VjYTmyHmgP0OD6HLJ/jkfJMA4YdUJwApHb0eHNwutM9Kbluw2DBJCnbsdak\nLoN0mfdwQ2e9uNeFy0qtTR+GtZ40eZlQ13U9MKRfgKaUJ4qP2/6m956TU6qvU8iogc+jCej7GzAM\nHqmFOSiTLRCAauBEx6RBgiFwmiGe+GZe/M3fmbdiEKVfy8/uuqZ5RZ+K+8nRDysbKgiG19OPleyO\nQubBtmtN6JofhOXkuWPfeey0fCVnCjDoZU4PPgevzyVtZqfbJPCCKQ9CTkQORkc6rHlqphIHMScA\nwY3XMH5vP4V30yazomamycHn8n3TzEhfAAex243PQD8CATJNE55TG/AJBvyzsG08Yfme2NpyfDsX\nqd0N+GkKmUFw+T/r6+8GvvTvuG2dh+EtBhxyZ/8xY5XPnFLzhaQpkH6FbF8KJ3uNhdTul9fWxsJJ\n5MwABjuD35P+JrJTq3CrPWsx5y14ANn5R3AgRUygkCYDiw5Saj6Gea2RXBd7651XsbKy0ic12X9B\nk8A5D48ePRrkJnjwE9xY15omYVvSlKFJRsdbTobaAOR3toU0AXmm3VOj8jUONEV8no9tb2/3CwnX\n1tYG4Vs/gxVCbhjErF/mQ7jtCQQGCzsw7acwm6uZZDVw9NjJtsuJToe9JduYADLLBJ/GPJLZPNOA\n4UFrSVT0pEznEZ1xBgsuVqv5PNzhnsSkuMxdsHAycMPZUoYv2OF+Dh6QXmfhwe/oiZOGuBTe4OVy\nfN/d3d3B6wSdoOQ6k9Km38LitjJg8Jn8DLTDE4h9LH07Cej+c5jX9WT57kv6K1wW6ytNMkW5p6ez\nYQkYPndnZ0ellMFLinZ3d3vm4Pt4TY+B0lEuvtmOzumsV5ph/o0Tm4wq+4L/KWPsoWVKJDNJoGFZ\nkgbj9yRyJrbo838/DCdBjQGwEayh6eVPn0TSbg9uZj/6GmoBZzWyXIKNk6a8jJo7We3u7vY7btnT\nb+eo7+W68+3kfhY6fJ28ZOeetSOzYA16bB+aW5ng5ufkBPR9ufjLwoHp87h+xwBqwPBEMmAxXZp9\nwv7187tsm5IG2jQX7XcxezEguD8lDULq7k/3kRkuGSR9MJyELe3s87Id2WaUFggk8Ew7n9fVvmff\nuRwC4XFk4YCRlC/ZhClzxuSt9WiTMvJADcjyeT4blyaMB5CTduh19wT2pLBJxW3YMouUyWSeDKTH\nLs8gRRCwtuVbulZXV6sb1PiZ/Pw0YThYPKF8HwOgGQ7zClyn9C3RlPH9DSDT7Hv2AcE6zU+vzfHW\nfX5+RqUYniZoG0TM7AwETuLL1aSt5DPWc9oYnsU8GGMaPF4zC48rsz7HLHJmAKOFrEmppGGEw4Mm\nqS1tawIIy/fA5f2t5TY2NnqwsEd+f39/sGmwbWq/g2NlZaU3QcwqPLE4oazFma9hbcrfSxmudfFE\n9cShds1oCBmKhW2YbIwb7bDebieCuP1CmfTGfnA9M2pCs5NMws/PvsuoCfci4bP6njbbeL7B+fLl\nywMzhKtwXV+OxeNMrFkneZY9Bh4nneCnLQsFDE6gmu2VHcdsO/orxlC5BUiSBoBizUpGcOHChX7Q\n2ywwiLhM79+4vLzcb1LrQcqkJWp7U3466Og3MPNglmiaRX5OT3iun2BZdD7mhPYzmDVxN+4apWX7\n2g/CZLQ0Gdm2GeVyeQZSs8maz4M5GQyVsj4GHkdZMtph86PGLAhiWUfLrIwgf0vGnIrQ154Gk6jV\nm585Lo4rZyLTsxWLZkMm+tOXQK1Kiu5BmE7BZC4JSvaw+3qaK6Tsq6ur/b4QZhYGGNN4mgJkFmQc\nHLSm4F7fQBufpgZpfLaFJ7NBx9e4zX2d78HIhsvLCen6+7vbxmYDGQEpOtmCr01TxvfPCUoAdDTK\nGxp54rsd3T87Ozs9kG1ubg52vWKeD9uzpcVZz5oySrCojdvWuK7dZ5rMyzZO0xSxLPxVibkWwlJj\nHNRkuaTb50hDZ19SYAJGAhX9HLTLmRjmSW/PusOk3l+B5aRpxKXPTlrK9Q324m9tbQ3ahAObrMET\njiFK158h6wQMaeILYFRJqucK0NdgwCILIpMiSKSjNRkQJzz7nSaHy9vb29P9+/dVSun9RWYX7Ceb\nOj6P+3CQnXJstRhC7fOs5/BZxmQWE+i0wOKkwLFwwPBAsVCLpRDlkyn4uCcQQ68ZepSGL0xy2Zy4\nNAdsN0uTl/leuXKld4Y65Zxl23Sxduu6SYYnQ6TcE4J5KQQfaucEUbajr/GzMVcjQZIAUAtdk72w\nHnQyllJ6kyHB2OXT8UzAsKZnO1vsiOXzOrTN/UkNEGSp7D87dZkVmwlvHBM5lqY5MenArPXLrKbG\nk2IYec1psIwzARhJuWsdwMavUWRSdVJcMwYCAq/N49LEt0Lb2ueZXTCCYW2e5kJqWq4J5cFxAAAg\nAElEQVQn4WTyPRwS9B6eLq+lcbNNOLlrk96Ty23izxkG5GRlP+zv7/ebCyddT1vZdXcdfT8/t80D\n9hevzTpw9a77pjbZ2S4EqFb0gzILE8hzWtfUxus00+e0pQYWJ/WVLBQwnC6dNjMbu+Z/qNmBac/7\nu0HJk4SsgjRVUp9paYorqR+kNkmcer63t9dvrELnqOtPcf0dQjVj4cRnPomzPVuAwJBnggjbLNuF\nZpKl5kMi6BFUum6yJN9mRS2U7Xq4DSX15gN9S1wfY9OCERCe78xXszoyGII/mYSfz20ylk4/JjnZ\nWsyh5r+YxaypjZda2fPIkwALacGAwZcMMfRGh1nSvqSqHFz5J01yH2h3W2wGWPPbC880b4MOF58t\nLS0N3miW2pbPwQHtsjigM2mI6ezSJDxJFuDf+Jz0+NOJyvM8qVPLZnta6xNMGHVh++Q5mefC5C6a\nNS7L2ZkEeAIvzRb7I8wa+OdzvUiMKfWuW5qgFkZ2ku1Om7ynQflrCjDLPC0W8kwzDPobkhlMk2Qc\nNcrugcz7kGUwmpCOMw58a0OHW8kSWpORgMFUcpfnOjCi4jYwSLAcf2aotgYWbJs0j3guQ5d5rid5\nRqB8X67VcPuyXwgcThff398f7J6ejuk0IVwG29j9wMhSgpQBg692SFBhPWvjyv9PY5K22AjvJR2N\nxNQ+n4Y8ccAopfySpL8i6ctd17378NiHJP1tSa8fnvYTXdf9p8PfPijpb0nalfSjXdd9rFW2J6kn\nCJ2VtQ5rHUuw4MrFpLdpQ1uDMddBGmoahzoNLJ7M9mO4U5Py+j42WaRJLokHrOuRNn7WI6MlqeXo\nXCX4cjLXtDJ9Ar5frS/YhtxYKNkAnZw2wZgj4r1IDaAsw+X7xVDZpgYpA28Cgc/3ojWvD6mluacP\nqDbGZjVVWhN6mu+idn4LNKbJaYLKmMzCMH5Z0j+X9JE4/jNd1/0MD5RSvlXS90v6VkkvSPqtUsq3\ndI0n5sD0IK9FNFJDJkDg/oMJSTuXnvylpUn4ko68pN/SZOs3T/pkKtbSyQR8T59Hqu26JnCRrZAh\npXmTmsn1pOlFmu0yaiYJ2UVKnkcmlb6h3F/VDIz18vm+nn1DhpQp5m4bm0JZl2SWzpGxCUOzMZ+L\n7Tgvqzht7X8SeVp1mQoYXde9VEr5xspPtdq9X9Kvdl23K+m1UspnJH2bpN+tlU2wyGSkFiD4f9rd\nFDpRc1ByIxRJg6QsshPTXtNbSQNNmZM760cgqGW0cnAnNeb32j3IDFJb+vy0xWsMxO2TZmACFM/3\ns5k9cF0JmYLr5DZ0ONTh05YZyWNsN/dVgitzT+xYZX9TgcwiiwaBJ2mOnIacxIfxI6WUvy7pv0v6\n+13XvSXp7ZL+G8754uGxqpDmcsC2qFxqvEwM4vXMQbA4h8LvtqAZkmBBc6KUMqDW0tD7nkDGAUtQ\n5GSvmTAug07f/CMo5GSgKcD2y+hQmmqsu4WAkenYXqvBZ7NpQTPI9bEfgkqB/UkgI0uzIiHo5Zvo\nXWame08Lo9ZI77z2/WlM5gRqH5vHHDnN+kyT4wLGz0v6h13XdaWUfyTppyX98HEKSorsY/xNqjds\nTiyfl4PWfx7oy8vL/RvHqA0JXo6geMLUMktzkEtHQ7WMCrCenJCcuGmT81xOomyLfFbeL++TlN6/\nMTU8o0lsb5tpFl+XeStmIwTvBIAWA0jTxfXizmP0KVnMNHJhHCXNr9r4mdc8OQ056+xCOiZgdF33\nFXz9RUn/4fDzFyW9A7+9cHisKp/85Cf12c9+VisrK3rXu96lF1988YhGtdRAxJKhPE/4/M5dmZgJ\n6vMYUTC7kFR1iLaAjP4SJiRRas839pz0v7Cu1NaejKxn7V75DMkAXOcMzdbq4wnpXBq2tyc1w8Mt\nBsPISd7Lvg+/l8R7YzjDlLuGGyyY2Znt6jpk7o8lx88sk7bFiI8jJwGKVj0+/vGP67d/+7clSXfu\n3DlR/WYFjCL4LEopb+u67kuHX79P0h8dfv6opH9bSvmnOjBF3iXpE61C3/3ud+v27dv9i3up8QgC\n1QphYtF2ptDOt++CWYLc7YsTieyCE3OWjnTdk4ITmPIZ6EfgxHN5GQJ1nTILNEGPf3SI+jvNMGmS\nY0GfDlkcgYL198StMSk+B/0PbAOaJdl/rpe3GPAyfEZSMgw7xi5qMovJkkyuVkaOkdozta47DfH9\ns7z3vve9+q7v+i5J0quvvqpf+IVfOPY9Zgmr/oqkvyjpZinl85I+JOkvlVLeI2lf0muS/s5hhf+4\nlPJrkv5Y0mNJf7cbaY0Wdeag5LlpAuT/HIh0eNr2tTbM9Q+caDQpOOBrdfdn1t/HmNRUe5YEiZq5\nUQuB5h/BrjbQk22l2UKTJEGJbeMJSbZTy2PJ+hgwXQ8yIZuKOSFZjvuy67pBcp2kfmFZLluvAQaB\njGPO33letlFNpv0+K2DNChhj5bHNn6TMEiX5a5XDvzxy/k9K+sl5K5KagiG6w3KP5CikBvV5qZ25\n1NuT09qpFUqlsy/ZDicR6zHmwPR1rGNOTDKilhmR1xJgWE7NZ+G/1uQgYPL+zL1oLRFnG9f8PUxn\nd5kEVCaBEUTdN9yt3WXQMW2/RTqSa8xgbOJR8ZzEPOD9553ENaZQYzCLkIXvuJUTr6YdcsLQKcfz\nqCklDTRPjY6nxkmv+izmTs10IIA414PPmpOdk6M2qP1MzLHgIja2ZeZfsDxqbU5W1iVtf4vv9/Dh\nw35i5h8ds2QcrjdX5tLc8/L4ZCBkk/mCIZdHsKApkv1YA8t5JJXDrCAw7bzW7y2weNIMYposHDCk\nur2YHTutYWtl5Oa4ptXU3LwXowkZKajdNwEj084TrKThi4WoTfOZ+VwMXdIxyR2oWB79KNJkERg1\nN5lI7mfqSU/w6bquX5YvHU3BroV4WU+DmxPmfG4uyfezMHkrE7Foahoksq9awDCtX1vn18ybsfuk\nyXoSIVj8f80w0m6uaXmfx88clDlxLR5MHpSeHEnzLelclI4OipwQvC/vV3tGTlqWlfQ371kDF4MH\nl5qTWdEnkCaA78dFZI8fP+7Xe/iadNZS+3uV8dramkopg704s64GC7MCt5NNEJfJnAvW0Z+dbevF\nemkGJrvLNj4NhpGT9mlO3rMAFtIZ2A+jtvisJtM6nNqQFJkaPJ2HY+XVNEr6SmgWWeORrVBb8v6k\n4JlDkPeuUWBqe2t8PqeZFMOV+UoAtin39fA9PVm5CZCPO2LhpeZelu57sX0dFnUbcGUunycjLGyf\nmjJgn9PvRaaXZR13wtF3luYOpXbsOOyidk1L0U27/2nLwjcBpq1bAwxqVaK8/yQNJga95C2wGAMK\nlpudVGMApsykuRy0NDdYl7S17S9JZmHxcS4N5/ta/ayeOPRRdN0kulCLsrgs1iWjNbWBSqZjfxHr\n7mflilPnVDD0zLa30DSqOTLpTOYxPz8X9SVgHGdiTTNljgsWtfGex9OEXqQsnGGkY4y2c4b2WpNf\nmmh8Dxppou1o43IC15jGGGBYOPDSFLF2Z9TA57psMgk+T+aF1ECSz2HtzXYy9ffv1tDW8q32zgxM\nRjnIqgh47kO/MzZNNjOKTN7KNTkJnGwPf08ziyCcgD7GNk4y4eYxR2pgcRJfxlkAC+kM7IfBkB0H\nddruszQ2B5vLl4YveSZYcDJLw7DlLJ3jwZkDskWL+Uw0HWpL3wmS0sTOZ5n2EbSWoadp4I2H+QIk\ni8GIkRtPbmrqdDQajPwbfROSBtEL9g0dwTTnyNY4+XOdCoEsAbxlTiZo8HtrfD2pSXpc8JimzPhb\nTU76PAuPkjBESA0oDbV9TctzAGZYk+fVBhQnI+sy5kNJSW1L+ss/mgi+t8usaUiyCGp/mhwMYWa+\niIFE0iAKsb293b9bJYEtGRif22DCF0f7u39P53WaWY4Ysc9zKT4Zm8upRbqm9cfYZGI719hCmgLz\nTLAE4OOeM3aN6zWrnDbgLTxK4kmT5glt1DGGkTS0pi3GTApq5dZ90izgtVlWAlfNWcbnSsDgtcxn\n8PdargHrsb+/379vRFJ/7e7uru7du6ft7e3eVHA4lCDqOrH+PMdb5HFic82INFxq7smeE1/SADBs\nApFt2P9hwJXUsyCz0Gx7gumYozPBIMdN9m2OkWkmx2kCButQY09j5Zy2KbNwwOCAIcOoUcvULjQf\nGBXIgSQNnVa132cZADWbuwYgOYn9ew7gNLnISMhEfG6tTdIEs4mSjMHvTnnw4EH//lGDhkGNZoI0\nCRVzh2+HNGkmZCTD7MNlkEEQDA0gZJRuj1pCmK9ndM0sxCCVzs5pLIH93zJlcjzQrKQ8ScBgXbO+\n0wDhJL6TlIWbJGQYZBkcULVGrmkDagIOBJ9L3wGvzbKn1bf1Pf0TtY6sTfhW9MTgQX8LWZkndIan\nOTGtif3WsK7r+i0H/SpBT2CClOuSE5CTlHuVMmzL9HE/X4Kly6Zvp5TJhr/0kbiNM/plxWKAciJZ\nKzqSY6UFCGOsZMxMnjY+5jkn7zvLsWn3meVe02ThgCENPf65gInS6mB+56StDZRambXPY+e1QGKa\ntOhjaorUyBz4fkYvqLt06dIRdkag8WT23h9+VcLly5f71wgaJJjGLtX9QmYujEZltEaa5ErUzAIC\nAM0UgrzHROZapFIhYNhPUksTd/u2IiZjbKEms1D9MVN61vtMk1YdWmDxTAMGHXYe8MwXsHCySEcn\nL8OKqZEsnIDHEWoV14V1dNlp585qP7ZMo5rJs7y8PNien5maBE3nV5hlrKwcvMX8ypUrR9K5adal\n81IaLhZjG7NNPZkd2q09XwJBDRQZfrXyIJtiSnzmXtD/QWeuNBlHNdaRrHTW/hmT0zQFTuqLGPO9\nzCNnwodhCsrQKp1gko4ARj44KbvP4X04occaPs0VTvzaZE4NlvQ+TaMsg5Mz8x38O/MprE2dlv3w\n4cNB+ax3rs69cOHCYBdtOlw90XyvfM7U7L4+MzbpwOS9E1joU2LbsT2dgeoNfS5evNgzpVLKIFWc\nm+bUWATBqWb7t/pXmixqbJ3Xkto4O8mEnRU0aibT1wVgcHBxkRJZRq2Da5OagDFmjrRs15r25O+1\ne9ecedJw60CCQGpdllezjVkvAoZ9B9xQt1amNAn1mpU4kcptZu3ticbwaNadb4RL30SyEfYJ/SLT\nmCJNJLOJx48f905UK5c0P2pL27P/a32fUuvnbN+aKTPGSlrl1M6ZJi3QGBsDp8l0Fp7p6cHBAUlt\nJg2XXGfHc1Cn2WBhxKBWRo1uZ4MTcDJfg3WgDyEHMJlKaqqWNiDQECzIXkzjbQqQFdlH4Gu9k1i2\nR81ByGdyCri3xmMiHHMyklmxn11P/vezGKAIMvaLJPNiBKUVTct2yLZtKR8+U82sGjMZW+W2lFDe\nd5qkcqkBV+1cHqsprXlk4QzDD88l3MzHSHbg/9TqLbqVky0nbGpQOltrk5kDiYOd0RyCBQc02UeW\nmwDRYhueLEnnCSSMlvAcA4pBzPcgQ0jzh9mVdEp3XTdI2uL9uSyd4WHmXKQfiaaKnzUduG6/VvSD\nbIx/NCcsLVaQ7HTs2tr1yZ5qY+k0pKYYa8BYO/+ZNkmoQUsZOj65wtF/OdFZBhsjBwQ1aXZoJgL5\n3DH6yPI9uP2dEyQBg4M/yyDD4f1Ti7TCk86PYKJWmiaOHDCaQcegfQZeG0I2wz+3Hd8JQvC2z4Gh\n166brGeRDsDBjIdvoMs2dbiUfUNWmBmj/s7sWj9nzVSZNoFyLI0xk/y9xSbzmtOS2rOcNlgtHDCs\nBdy5pr7e2SnRNDU1J3gL8VuTnwlLyS5q12ReAAGJGap+Jn+nd74W7kuTKOuf4ML62AG6vLzct1uW\nSRrv5zVYMrfBK0m9FR/v6Wf0RLYvYW9vr3ei0ufAd7rYNHL/upwMmRoofE/6Jsw2/Wxul8xBIXAw\naYw0PhVQbVy6/Tn2+Bt/z881afXhPMIxk3XNOrQYxknlTACGxQPOYJFRDU40MhOXJR1ttAScnHD0\nSSRTmaXuCVx0BGa40PeqhfwSLDjAeQ4nC9/5arDwPfh6A66oNe2vgZYZHieyf/MkZz6HP3vxGQHH\nDCKf3+ez/ejv8bM7KkKmkE5pgwrBguBmwM5+H5vcNcCeVWZhDfOWOY/UQCI/n1QW7sNIwDAtplbw\nQOIATMeaVHf8pGZh49HGrZkDtXI5wfJefA7WnyCSmj3NE5ZXAz+f4wlVSulfRWhN7M9cx8FQqjSM\nWNDH4LLTKUlTUZq8wZ7MjAlctQVzZI/2/ZD9kGlwVy6vjfH9XE8nayU7JHgTICk1EyWlNh5qn2tM\nJMfMtEl7kkn9NEwRy5kADE6EGnXzwFtdXR28L4Tn0b5P6paNx/NrZsiYWTAmrC8HLsug9iYL4UCb\nRjvNLmySWMM7acp2v8s1ra+xFk9CvsfUppM0ZH0PHjzQw4cPe7qf2bkEXQKETYu9vT3t7OzowYMH\nvZ+DGaLcOdxRktwNjAyo67r+tZcUjqGayVozT/K6Vvvze+2+Y8qmJbOOr1p9ppkbpw0cCw+r2hbO\nDk166cFz6dKl/jwCBx2Lszi4ctD4WErNlOH1/F67phYV8LPXTBTeiwDEP4c07RcopfSg4clucM17\n+nwCNRkGsyUNBI8fP9bW1pbu3bunhw8f9mBkM4RrSVw/skLXZX9/vwceby24s7PTA5J9MS7XYJbr\naMzSbGLVADVBg9caPNmWrQk7NiGTAbfKqTGQWllULDz3SbKTeWXhgEHPuI9JQ4cinWXScD2DJSl2\nTXPUbFnazWMy5lBiubVONi2vaXf/nqwk68j/FPoq3A6MTNA3wbY2WPu+DGEbUGzePHjwQFtbW7p/\n/74ePXrUOzrNEGxm2G/htHV/39vb09raWn+MCsDXuZxLly5pZWWlN4HSn+I2STBk27f6im3Lic5s\nVcqsJklNKdTGQWsc1uo+KzOZhVm0Ph9HFgoYdMalb4AD3oPenWz6bZuXGppg0Wr89B2MSZbFQTdN\nA9TMo7HfW8zCx2hGsW38zJ6srqO1vk2DXJhmoCBj67ph1u3Dhw+1s7Ojra2twf6hBu8EAEmDJfM2\nLfiioYsXLw4iGwaLixcv9nX2MWmSWu42cVl86XJr8tTMu2RXbNs0D2sMM0GdZfO62vFZZcwsqj3r\nNNOkdd28slDAuHnzpq5evdoPEG4hJ6nXNB5MpQxfaGMbvpZVmT6BnLitQTY2uaV2NCbvmfeepWyX\nlQNvbMBxstsBmAv5mGfCMtNxbGbhSAedlH7bPZmcAZwhW09k+zCkoQanc/PChQuDdSJeE5ITmG89\nc4r72tqaLl261L/npGb2tfrOQuVSGw9j/VWbsLOaEFl2zQxt1XdM5r3vcWShgPH2t79dN2/e7G3k\nt956S3fv3tX29vZgAZM1zKNHj7Szs9NrGTveuFKxlthERlHL3pPGY+oJNq1BlZ9bf/k7ZR4/isvh\nak3mLtC0qJlMycb29/d7gDDY+FUG3JgntbHr9vjx48F6FeZhECg8udfW1npTyCDg3A6Dg1mT+83g\n4vOtQAgY9FdMA1ypbaq0AKB2fBaTtsVAamXMyijmkZOChbRgwHjb296m27dv6/Hjx7p3717vHHOY\nkFqMWYq2e/lyHG9Wm4lRLKNmC6dMYwMt6jfGLjgAp5Wbx6bZwnR02lRIqs5QKhmCTQI6OR0J4Z6g\nNhNchgEp13EYGAjouVJVOprebSDh3hj2UXg8MAnLma0JFnwmmh1Zx7FoGs2QWv+OyTRzYN4yWmNt\nVvOrJs80w9jY2NDVq1e1u7vb09FLly7p6tWrfayeaxeosVqDxJ7+BIgcHFmOJbV5ywzICTyNXVBq\nrOI4QELt7Trli4lZhu/BCJRBxclfDnt6cjLvweaB25ftbLPSZS8tLfVsw9cy78ami4HFZXBCZ1JX\nMg+yST+P/Sm+J9u2xfAILKxHjT1Om3Cz+lFm6e9Z/BSzmFCz/j6LLBQwPKA4QFZXV3t7mYCR+zVw\nsudaAg8CgsU0X0Wro1PLT6O5Y2BxnME2JgQ9gwYXvWWdCRQEAWnyfhH/+Tc6BW1mpInH56QJ5Ik9\nxpTo//Bz1JgD+zMZCp+PyVq1/TH8TGnCZN/xO/tunv70OZzo846BWU2deet1XFl4lITa0VvGra6u\nDrzwHixdN3wJDjUbQ3DSMGmn5rdoofWYfdliG/l7TgqWm/bxmNRAqQVsOYF9LnMsOKE8aZgstbOz\no52dnf5ViPYRZX6F+4H3ZB9luzCcS+3N72QXjJ6RQUoasI58Tj+bna1kDDWHONuv1bYtU5Dl12Rs\nLMwi0/wjx2E/pyFnBjAoTMjKichsQn93CM4g499qjqO8dqyRx0BiGoCwzrOCw6xmSe281IbJhhie\nTtZmZ+f29ra2trYGIWtPWIvb2yDA+9oHYXbjcphDw/rb78TjnvRmBvzNoFQzJ/iMaXLV/lpMYlof\n5fcWA2kpED5LtkeeW/v8tJhESxYKGLaDa9R9zDbjpO+6ro/zMxrggceBaslcitYEzHvN00GkvTkg\nxsCEbGSaKdUyi/hcBmUChm18Sf07VZ1rQcDgKyBdBpkcTRWaQ3S4cg8NankygjShfA9u9lMz8Wpg\nkeMmgYGgUWuvWjvPItMUCM8Z6/fWdWOSvpqxOp5UFg4YpLX+oznh3ywcJBwIHtDScGk36SzL4LEM\nxSa15zV5bbIfDlI6FX3uWKcR7HJgJXC5TWrmlv0Aa2tr/WT1G8+Yk2G/haMj9+7d6wGDiVF0Okrq\nIzHZlzZx6JuiSePoBn0j/t3OUfYvWYzbL5OuErgYYqfDNJlJDcynTbhZGGXtt5rUxkQy4FnuLw33\ne3nSsvDXDNQAY5Zszbw+J2PNpk3JCZpS87KzU7OzE9jy/LxmrE6158znqzExOyadiu1J+tZbb2l3\nd7cHhNwK8dGjR4NsTpfHey8tLfXRLOdBMHHKoLC6uqrV1VWVcrDGxeU4FEogydwMOq0z4Sw3IzKr\noWnUyhOp/fEZ83OrD/K809Das5Q1zWyaFSySWc0rCwWM7HzazS3qVrteOtoQZhykn0lhczL7HLKc\ntNNTCyRopNTukb/XTJZa2ck2so08Yf2ZYdC9vT1tbW2p67pB5qZ9PwYNOzPdpgSCtbU1bWxs9Pky\nly5d0tra2sBB6Xs6M9f3d74HNX72T7JJbo5DBuFxkoDsslrMoua74P/8nHISk2VeaSnK2oTPc1ps\nZxrozCILZxiWBI7UcjVbvtUAHLw1QGCOQe1anuv//OPvNUqak7vlj2Bds8wEjVZHcycq6ahfyNqc\nbyl78OCBtre3+wQtMi2WQfPiypUrunbtmq5evdqzh9XVVV2+fLlPoHN7ci+LNGf43MzMrTEm14lZ\nvzT32FZ+1gSVFtOo9XdNpp17msDRKv806jCNqc8qZwow+JeREv6fJjm5axqFA4+/WWahbjm5W5p/\nVhCo2bLJbtJM4HVsO4pZmx2eTvc2u+BkMyPwqxT9lrT19XVdu3ZNV65c6cHWTMIOZ9axZqrRt0QT\nw+YH+5zMhr6OluTYyUWJLTMly5jn82lIS4nU7nnSe59G3RduktS+J6uYBhgtFpLn+DymK6d257kE\ngjHTo3Z8jDm0pFYONSiBpsaEeL40dObSX5HJWAYKOwz9CkYDxfr6uq5cudKzCW4wTPPC92feBQGj\nxtLyufl83JGLoWACQk0J1ACidi7laQDEGBvOY7MCRo3hzluHeWThgFHToDkZaoNsngaqMYwaWNS0\netYhQ3f8nM7aGlvKyZ+SoNN6plYd+J11dr0JClz3wXU8q6urvX/CQOHsSzoia+3j49zrhIlWCWZ8\nFrIjm0WuKxP4fG6aHNnHtYk2BhS17zXT+DiTrlUf3mOsHjw+plim1eGksnDAIF0da1SpHoqypGkx\nNlhaGroGGjkZ0izI+rVYigf1PBqh5eCalnDGulDLM9RqM2JpaWkQ8eBKUC4fL2XyZvVc6FdzLNLH\nUFMEdFzyWCZ4mWnYieqyfT7XtrTYBMurtdMsfVEbe/NMwGSKfL5UQrPUY9bz563nNFk4YEz7G2sY\na0+W1+qY2r1r19X8Hpl12uqAlinherbYTqtdcr1HDaz4v9VWTrff2NjoJ7u3xltaWurZRAJGvlaR\na3UcIuUWdxntyM150yHL9kg/hReRGXD4/lSCkJlPbU+UMWlp9WkM77gMY+xas90x1tg6xnKPy8Ln\nkTPj9KR4IHkApLay1Do3Ncys98tOa3XOGGDkdbU610Axj+f9ao5ZZkZOe9alpSWtra3p2rVr/bUr\nKyv97uJ2cHryGTQSLDzpDUDciTz39JQOoiVOI/d3ggwXwfl7vi+W2boEBT8XQYIKhOysxihr3+dh\nDseZjLXxW1Mi87AHljVWvzEFNY8sHDBqEygn76xI35rM84JHrfFr4NSqX8s3kr+1AKOVcESxOTGt\nnqbtly9fPsK+/DoHmx6m90wJJ11mJIW7t/NNdUx2I9Dk2pNaXTPvxXWwKcSNjlMpUMk8Cc16WsKF\ncBxHJwGLpylnziThgGNyT8v8yPJa95i1PmPMgkDW0uwuI4GiJjUgoXlUCwHWNCMnYA2QzAj8mycm\nN6lhGrgBg87STOLiBOceoNJkI+fc8VsasoIEXP/mz5l0xze3JyMgI6Vp1Or7Fsuo/fakZMwEGRuH\ni5QzBxgEDkuNkrcYRus+047XJpuPj5Uxq3DC5LHWuen3yLrnn5+hpaltEnhrPGbD5hqMZHg5EdOv\nkeBghlFjW+m0Zf0sCRhuD6b585ldR0ZjpvXZGGhkX2RdTwIqXJj4rMlUwCilvCDpI5Kel7Qv6Re7\nrvvZUsqmpH8n6RslvSbp+7uue+vwmp+V9D2StiT9YNd1r4yU32QZOVgYnpTmA43Wb9PMDZ5zGuie\nVNTSMl3GNE9OZIIFmQF/s4bmqwAILjUzh5rfZTH7Ml//QMZQa8fcnyL3usiEPXlWSv4AAAchSURB\nVAudrr6WTtexxWat9kuF0HIg5vUnHQuzJKGdRZmFYexK+rGu614ppaxL+h+llI9J+iFJv9V13T8p\npfy4pA9K+kAp5Xsk/Zmu676llPLtkv6FpO+oFdxiFR7oicRjE6x2Tu28GrVvDSj/VhtE83Yo7ztW\nZjIGPkPLr8Pzck+IPMdrOpzObdNCGiZ6UXNz+TmXyUtDwKnlVvDeBIwEjWwjMhEep4O167rBXp+t\nP5bdmvAtk2TM7J3V3zDvWHlaJtFxZCpgdF33JUlfOvx8v5TyKUkvSHq/pPcenvavJf0XSR84PP6R\nw/N/t5RyrZTyfNd1X86yk3LWJg+1H9cbpAZuaWQfS20yT6eMaZyx81rlzzPQxkAxn4OUn4DBdGxq\nf6ddZ32TNaSTMYGpZha12BJ/q+3LScVR6yezGwMVn2EMMGrtPmaSTBsfT3JSz8Oan7bMZUiVUr5J\n0nsk/Y6kHgQOQeX5w9PeLukLuOyLh8eOyKc//el+MHL/gml/uVagpkkoLVpfG9wuY1onpdbPcl59\n9dW+rGnrF1oDvPV7spVpAzvNFF6b7Upzg89D4Pj85z9/hBkwAS/Xq+R3H2PGqMHBvhQ6YRNEzDK4\n89dp9J8kvfTSS4NzWte1fj+p1Pr3NOXll18+0fUzA8ahOfLvJf1o13X3JWVrzd16n/rUp6obndSO\n8Tg3dUkN2Jp0fSUbE72mEcfOn/abAYN1GPtrgV/+XvtrDayk3znJ3ZbccDdBhWX5t9dee21QL96f\nk5l/eYzvOiGLzHrVlETu59mauKx/5vK0+v6ll16aqlByjJyW1BTfLIAxTelIk2f5xCc+caI6zhQl\nKaWs6AAs/k3Xdb9xePjLNjVKKW+T9Prh8S9Kegcuf+Hw2BF55ZVX9OEPf1iS9OKLL+rFF1880pFp\nk9c6kxrUv9Vklk6eFTymlXn//n29/vrrMw+2pPU1kONnTlZpuGFQLdHN19TalRsN2RSpAYLZx9bW\nlu7cudPXz2DDVybS/5T1YVSG7xeRNFAIrTZiX+/s7PRgtLW1pStXrvQZoZR0MiZIufyvfe1r+pM/\n+ZNm39SOn5aMsYsx8J82rl9++eWeWZBBHauOs0yiUspHJN3puu7HcOynJH2t67qfKqV8QNL1rus+\nUEr5Xkk/0nXdXy6lfIekD3ddd8TpWUo52xkq53IuX8fSdd2xkG4qYJRSvlPSf5X0SR2YHZ2kn5D0\nCUm/pgM28TkdhFXfPLzm5yS9Twdh1R/quu73KuWeA8a5nMuC5IkBxrmcy7mci+XZTDc7l3M5l4XI\nOWCcy7mcy8yyEMAopbyvlPLpUsr/KgdZos+0lFJeK6X8QSnl90spnzg8tllK+Vgp5dVSym+WUq4t\nup6zSinll0opXy6l/CGONZ+nlPKzpZTPlFJeKaW8ZzG1nk0az/ahUsqfllJ+7/Dvffjtg4fP9qlS\nyncvptazSSnlhVLKfy6l/M9SyidLKX/v8Pjp9d1YbPpJ/OkApP63DtagXJD0iqQXn3Y9TvmZPitp\nM479lKR/cPj5xyX940XXc47n+fM6SND7w2nPo4M1Q//x8PO3S/qdRdf/GM/2IR0sf8hzv1XS7+sg\n/eCbDsdtWfQzjDzb2yS95/DzuqRXJb14mn23CIbxbZI+03Xd57queyzpV3WQTv4sS9FRtvZ+HaTM\n6/D/X32qNTqBdF33kqQ34nA+z/txvF8KIOlaKeV5nVFpPJt00Icp75f0q13X7XZd95qkz+hg/J5J\n6bruS93hQs/uILmSyzhOpe8WARiZOv6naqSOP0PSSfrNUsrLpZQfPjyWqfO3F1a705Hb3QmXApxx\n+ZFDWv4vQdmf2Wcrp7yMw3Lu9Dwd+c6u6/6cpO/VwcD7CzqF1PkzLl9Pz/PzOlhh/R4dLLT86QXX\n50RSnsAyDssiAOOLkt6J783U8WdFuq77v4f/vyLp13VAW79sehep88+qtJ5n5qUAZ1W6rvtKd2jI\nS/pFTcyOZ+7ZxpZxHP5+or5bBGC8LOldpZRvLKVclPQDkj66gHqcipRSLh8iukopVyR9tw6yYj8q\n6QcPT/ubkn6jWsDZlaKhXc/n+UFNnuejkv6GJB0uBXizq2xlcMZk8GyHk8jyfZL+6PDzRyX9QCnl\nYinlmyW9SwcZzmdZ/pWkP+667p/h2On13YK8ue/TgQf3M5I+sGjv8gmf5Zt1EOn5fR0AxQcOj9+Q\n9FuHz/kxHay1WXh9Z3ymX5H0fyQ9lPR5HWyWtNl6Hkk/p4MIwh9I+rOLrv8xnu0jkv7wsB9/XQc2\nv8//4OGzfUrSdy+6/lOe7Tsl7WE8/t7hXGuOxXn77jw1/FzO5VxmlnOn57mcy7nMLOeAcS7nci4z\nyzlgnMu5nMvMcg4Y53Iu5zKznAPGuZzLucws54BxLudyLjPLOWCcy7mcy8xyDhjnci7nMrP8P4cT\nwIAusfihAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pt.imshow(u.get(), cmap=\"gray\", vmin=0, vmax=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's obviously not very parallel. Introduce parallelism:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#define lid(N) ((int) get_local_id(N))\n", "#define gid(N) ((int) get_group_id(N))\n", "\n", "__kernel void __attribute__ ((reqd_work_group_size(1, 1, 1))) loopy_kernel(__global float *restrict result, int const n, __global float const *restrict u)\n", "{\n", "\n", " result[(n + 2) * (gid(0) + 1) + gid(1) + 1] = (2.0f * u[(2 + n) * (gid(0) + 1) + gid(1) + 1] + u[(2 + n) * (gid(0) + 1 + 1) + gid(1) + 1] + u[(2 + n) * (gid(0) + 1 + -1) + gid(1) + 1] + u[(2 + n) * (gid(0) + 1) + gid(1) + 1 + 1] + u[(2 + n) * (gid(0) + 1) + gid(1) + 1 + -1]) / 6.0f;\n", "}\n" ] } ], "source": [ "tknl = knl\n", "tknl = lp.tag_inames(tknl, {\"i\": \"g.0\", \"j\": \"g.1\"})\n", "evt, (result,) = tknl(queue, u=u)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But OpenCL/CUDA require blocking to be efficient!" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#define lid(N) ((int) get_local_id(N))\n", "#define gid(N) ((int) get_group_id(N))\n", "\n", "__kernel void __attribute__ ((reqd_work_group_size(16, 16, 1))) loopy_kernel(__global float *restrict result, int const n, __global float const *restrict u)\n", "{\n", "\n", " if (\n", " -1 + -16 * gid(0) + -1 * lid(0) + n >= 0\n", " && -1 + -16 * gid(1) + -1 * lid(1) + n >= 0\n", " )\n", " result[(n + 2) * (1 + lid(1) + gid(1) * 16) + 1 + lid(0) + gid(0) * 16] = (2.0f * u[(2 + n) * (1 + lid(1) + gid(1) * 16) + 1 + lid(0) + gid(0) * 16] + u[(2 + n) * (1 + 1 + lid(1) + gid(1) * 16) + 1 + lid(0) + gid(0) * 16] + u[(2 + n) * (1 + -1 + lid(1) + gid(1) * 16) + 1 + lid(0) + gid(0) * 16] + u[(2 + n) * (1 + lid(1) + gid(1) * 16) + 1 + 1 + lid(0) + gid(0) * 16] + u[(2 + n) * (1 + lid(1) + gid(1) * 16) + 1 + -1 + lid(0) + gid(0) * 16]) / 6.0f;\n", "}\n" ] } ], "source": [ "sknl = knl\n", "sknl = lp.split_iname(sknl,\n", " \"i\", 16, outer_tag=\"g.1\", inner_tag=\"l.1\")\n", "sknl = lp.split_iname(sknl,\n", " \"j\", 16, outer_tag=\"g.0\", inner_tag=\"l.0\")\n", "evt, (result,) = sknl(queue, u=u)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How about some data reuse?" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#define lid(N) ((int) get_local_id(N))\n", "#define gid(N) ((int) get_group_id(N))\n", "\n", "__kernel void __attribute__ ((reqd_work_group_size(16, 16, 1))) loopy_kernel(__global float *restrict result, int const n, __global float const *restrict u)\n", "{\n", " __local float u_fetch[18 * 18];\n", "\n", " for (int u_dim_1_outer = 0; u_dim_1_outer <= 1; ++u_dim_1_outer)\n", " if (\n", " 17 + -16 * u_dim_1_outer + -1 * lid(0) >= 0\n", " && 1 + -16 * u_dim_1_outer + -1 * lid(0) + -16 * gid(0) + n >= 0\n", " )\n", " for (int u_dim_0_outer = 0; u_dim_0_outer <= 1; ++u_dim_0_outer)\n", " if (\n", " 1 + -16 * u_dim_0_outer + -1 * lid(1) + -16 * gid(1) + n >= 0\n", " && 17 + -16 * u_dim_0_outer + -1 * lid(1) >= 0\n", " )\n", " u_fetch[18 * (lid(1) + u_dim_0_outer * 16) + lid(0) + u_dim_1_outer * 16] = u[(2 + n) * (16 * gid(1) + lid(1) + u_dim_0_outer * 16) + 16 * gid(0) + lid(0) + u_dim_1_outer * 16];\n", " barrier(CLK_LOCAL_MEM_FENCE) /* for u_fetch (insn depends on u_fetch_rule) */;\n", " if (\n", " -1 + -16 * gid(0) + -1 * lid(0) + n >= 0\n", " && -1 + -16 * gid(1) + -1 * lid(1) + n >= 0\n", " )\n", " result[(n + 2) * (1 + lid(1) + gid(1) * 16) + 1 + lid(0) + gid(0) * 16] = (2.0f * u_fetch[18 * (1 + lid(1)) + 1 + lid(0)] + u_fetch[18 * (2 + lid(1)) + 1 + lid(0)] + u_fetch[18 * lid(1) + 1 + lid(0)] + u_fetch[18 * (1 + lid(1)) + 2 + lid(0)] + u_fetch[18 * (1 + lid(1)) + lid(0)]) / 6.0f;\n", "}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/andreas/src/loopy/loopy/compiled.py:841: LoopyWarning: kernel scheduling was ambiguous--more than one schedule found, ignoring\n", " kernel = get_one_scheduled_kernel(kernel)\n" ] } ], "source": [ "sknl = knl\n", "sknl = lp.split_iname(sknl,\n", " \"i\", 16, outer_tag=\"g.1\", inner_tag=\"l.1\")\n", "sknl = lp.split_iname(sknl,\n", " \"j\", 16, outer_tag=\"g.0\", inner_tag=\"l.0\")\n", "sknl = lp.add_prefetch(sknl, \"u\",\n", " [\"i_inner\", \"j_inner\"],\n", " fetch_bounding_box=True)\n", "evt, (result,) = sknl(queue, u=u, n=n)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#define int_floor_div_pos_b(a,b) ( ( (a) - ( ((a)<0) ? ((b)-1) : 0 ) ) / (b) )\n", "#define lid(N) ((int) get_local_id(N))\n", "#define gid(N) ((int) get_group_id(N))\n", "\n", "__kernel void __attribute__ ((reqd_work_group_size(8, 1, 1))) loopy_kernel(__global float *restrict result, int const n, __global float const *restrict u)\n", "{\n", "\n", " for (int i_inner = 0; i_inner <= 15; ++i_inner)\n", " if (-1 + -1 * i_inner + -16 * gid(0) + n >= 0)\n", " {\n", " /* bulk slab for 'j_outer' */\n", " for (int j_outer = 0; j_outer <= -2 + int_floor_div_pos_b(7 + n, 8); ++j_outer)\n", " result[(n + 2) * (1 + i_inner + gid(0) * 16) + 1 + lid(0) + j_outer * 8] = (2.0f * u[(2 + n) * (1 + i_inner + gid(0) * 16) + 1 + lid(0) + j_outer * 8] + u[(2 + n) * (1 + 1 + i_inner + gid(0) * 16) + 1 + lid(0) + j_outer * 8] + u[(2 + n) * (1 + -1 + i_inner + gid(0) * 16) + 1 + lid(0) + j_outer * 8] + u[(2 + n) * (1 + i_inner + gid(0) * 16) + 1 + 1 + lid(0) + j_outer * 8] + u[(2 + n) * (1 + i_inner + gid(0) * 16) + 1 + -1 + lid(0) + j_outer * 8]) / 6.0f;\n", " /* final slab for 'j_outer' */\n", " for (int j_outer = -1 + n + -1 * int_floor_div_pos_b(7 * n, 8); j_outer <= -1 + int_floor_div_pos_b(7 + n, 8); ++j_outer)\n", " if (-1 + -8 * j_outer + -1 * lid(0) + n >= 0)\n", " result[(n + 2) * (1 + i_inner + gid(0) * 16) + 1 + lid(0) + j_outer * 8] = (2.0f * u[(2 + n) * (1 + i_inner + gid(0) * 16) + 1 + lid(0) + j_outer * 8] + u[(2 + n) * (1 + 1 + i_inner + gid(0) * 16) + 1 + lid(0) + j_outer * 8] + u[(2 + n) * (1 + -1 + i_inner + gid(0) * 16) + 1 + lid(0) + j_outer * 8] + u[(2 + n) * (1 + i_inner + gid(0) * 16) + 1 + 1 + lid(0) + j_outer * 8] + u[(2 + n) * (1 + i_inner + gid(0) * 16) + 1 + -1 + lid(0) + j_outer * 8]) / 6.0f;\n", " }\n", "}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/andreas/src/loopy/loopy/diagnostic.py:60: LoopyAdvisory: No device parameter was passed to the PyOpenCLTarget. Perhaps you want to pass a device to benefit from additional checking. (add 'no_device_in_pre_codegen_checks' to silenced_warnings kernel argument to disable)\n", " warn(text, type)\n" ] } ], "source": [ "cpuknl = knl\n", "cpuknl = lp.split_iname(cpuknl, \"i\", 16, outer_tag=\"g.0\")\n", "cpuknl = lp.split_iname(cpuknl, \"j\", 8, inner_tag=\"l.0\", slabs=(0,1))\n", "cpuknl = lp.set_loop_priority(cpuknl, \"i_inner, j_outer\")\n", "\n", "evt, (result,) = cpuknl(queue, u=u, n=n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Judgement day: Has it helped?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's time the execution of our \"blur\" operation on an actually big image. (We'll make do with random data for this timing:" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from time import time\n", "\n", "rounds = 4\n", "\n", "n = 5000\n", "u = cl.clrandom.rand(queue, (n+2, n+2), dtype=np.float32)\n", "\n", "uh = u.get()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, `numpy`:" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.354830265045166\n" ] } ], "source": [ "t_start = time()\n", "for i in range(rounds):\n", " blurred_u = np.zeros_like(uh)\n", " blurred_u[1:-1, 1:-1] = (\n", " 2*uh[1:-1, 1:-1]\n", " + uh[2:, 1:-1]\n", " + uh[:-2, 1:-1]\n", " + uh[1:-1, 2:]\n", " + uh[1:-1, 2:]\n", " )/6\n", "\n", "print((time()-t_start)/rounds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, our generated code:" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.06881153583526611\n" ] } ], "source": [ "queue.finish()\n", "t_start = time()\n", "for i in range(rounds):\n", " evt, (result,) = cpuknl(queue, u=u)\n", " \n", "queue.finish()\n", "codegen_time = (time()-t_start)/rounds\n", "print(codegen_time)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now estimate performance:" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8.72644519136357\n" ] } ], "source": [ "pixels_accessed = 6*n**2\n", "bytes_accessed = pixels_accessed * 4\n", "gbytes_per_second = bytes_accessed / codegen_time / 1e9\n", "print(gbytes_per_second)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.5.1+" } }, "nbformat": 4, "nbformat_minor": 0 }