From 70f7004cc3a7e8404dd8a76f20425ecabc74181a Mon Sep 17 00:00:00 2001 From: Francesc Verdugo Date: Thu, 19 Sep 2024 10:37:09 +0200 Subject: [PATCH] More changes in ASP and LEQ --- notebooks/LEQ.ipynb | 357 +-- notebooks/asp.ipynb | 10 +- notebooks/figures/fig_jacobi.svg | 3528 +++++++++++++++++++++++++++++- 3 files changed, 3607 insertions(+), 288 deletions(-) diff --git a/notebooks/LEQ.ipynb b/notebooks/LEQ.ipynb index 4f4a1ec..b2e951c 100644 --- a/notebooks/LEQ.ipynb +++ b/notebooks/LEQ.ipynb @@ -22,7 +22,7 @@ "In this notebook, we will learn\n", "\n", "- How to parallelize Gaussian elimination\n", - "- How to fix static load imbalance" + "- What is load imbalance, and how to fix it in this algorithm" ] }, { @@ -37,26 +37,15 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "7e93809a", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ge_lb_answer (generic function with 1 method)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "using Printf\n", "function answer_checker(answer,solution)\n", " if answer == solution\n", - " \"🥳 Well done! \"\n", + " \"🥳 Well done!\"\n", " else\n", " \"It's not correct. Keep trying! 💪\"\n", " end |> println\n", @@ -70,7 +59,8 @@ "function ge_lb_answer()\n", " msg = \"It is a form of static load balancing. We know in advance the load distribution and the partition strategy does not depend on the actual values of the input matrix\"\n", " println(msg)\n", - "end" + "end\n", + "println(\"🥳 Well done!\")" ] }, { @@ -105,14 +95,14 @@ "1 \\\\\n", "35 \\\\\n", "\\end{matrix}\n", - "\\right]\n", + "\\right].\n", "$$\n", "\n", "This is just a small example with three unknowns, but practical applications need to solve linear equations with large number of unknowns. Parallel processing is needed in these cases.\n", "\n", "### Problem statement\n", "\n", - "Let us consider a system of linear equations written in matrix form $Ax=b$, where A is a nonsingular square matrix, and x and b are vectors. The goal of Gaussian elimination is to transform the system $Ax=b$, into a new system $Ux=c$ such that\n", + "Let us consider a system of linear equations written in matrix form $Ax=b$, where $A$ is a nonsingular square matrix, and $x$ and $b$ are vectors. $A$ and $b$ are given, and $x$ is unknown. The goal of Gaussian elimination is to transform the system $Ax=b$, into a new system $Ux=c$ such that\n", "- both system have the same solution vector $x$,\n", "- the matrix $U$ of the new system is *upper triangular* with unit diagonal, namely $U_{ii} = 1$ and $U_{ij} = 0$ for $i>j$.\n", "\n", @@ -167,7 +157,7 @@ "\\right]\n", "$$\n", "\n", - "The most challenging part of solving a system of linear equations is to transform it to upper triangular form. Afterwards, the solution vector can be obtained easily with a backward substitution." + "The most challenging part of solving a system of linear equations is to transform it to upper triangular form. Afterwards, the solution vector can be obtained easily with a backward substitution. For this reason, we will study here the triangulation step only." ] }, { @@ -179,7 +169,7 @@ "\n", "### Augmented system matrix\n", "\n", - "In practice, vector $b$ is added as an additional column to A forming the so-called *augmented* matrix $A^* = [A | b]$.\n", + "In practice, vector $b$ is added as an additional column to A forming the so-called *augmented* matrix $A^* = [A b]$. The augmented matrix in the example above is\n", "\n", "$$\n", "\\left[\n", @@ -211,10 +201,10 @@ "1 & 2 & -1 & 1 \\\\\n", "3 & 11 & 5 & 35\\\\\n", "\\end{matrix}\n", - "\\right]\n", + "\\right].\n", "$$\n", "\n", - "With this new notation, the goal of Gaussian elimination is to find the augmented matrix containing $U$ and $c$, namely $U^*= [U | c]$, given the augmented matrix $A^* = [A | b]$.\n", + "With this new notation, the goal of Gaussian elimination is to find the augmented matrix containing $U$ and $c$, namely $U^*= [U c]$, given the augmented matrix $A^* = [A b]$. These are $A^*$ and $U^*$ in our example:\n", "\n", "$$\n", "A^*=\n", @@ -232,7 +222,7 @@ "0 & 1 & 2 & 8\\\\\n", "0 & 0 & 1 & 4\\\\\n", "\\end{matrix}\n", - "\\right]\n", + "\\right].\n", "$$\n", "\n" ] @@ -245,41 +235,32 @@ "### Serial implementation\n", "\n", "\n", - "The following algorithm computes the Gaussian elimination on a given augmented matrix `B`, representing a system of linear equations.\n", + "The following algorithm computes the Gaussian elimination on a given augmented matrix `B`, representing a system of linear equations. The result is given by overwriting `B`, avoiding the allocation of an additional matrix.\n", "\n", "- The outer loop is a loop over rows.\n", "- The first inner loop in line 4 divides the current row by the value of the diagonal entry, thus transforming the diagonal to contain only ones. Note that we skip the first entries in the row, as we know that these values are zero at this point. The cells updated in this loop at iteration $k$ are depicted in red in the figure below.\n", - "- The second inner loop beginning in line 8 substracts the rows from one another such that all entries below the diagonal become zero. The entries updated in this loop are depicted in blue in the figure below." + "- The second inner loop beginning in line 8 subtracts the rows from one another such that all entries below the diagonal become zero. The entries updated in this loop are depicted in blue in the figure below." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "e4070214", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "gaussian_elimination! (generic function with 1 method)" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "function gaussian_elimination!(B)\n", " n,m = size(B)\n", " @inbounds for k in 1:n\n", - " for t in k:m\n", + " for t in (k+1):m\n", " B[k,t] = B[k,t]/B[k,k]\n", " end\n", + " B[k,k] = 1\n", " for i in (k+1):n \n", - " for j in k:m\n", + " for j in (k+1):m\n", " B[i,j] = B[i,j] - B[i,k]*B[k,j]\n", " end\n", + " B[i,k] = 0\n", " end\n", " end\n", " B\n", @@ -288,17 +269,17 @@ }, { "attachments": { - "g30822.png": { - "image/png": "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" + "g27851.png": { + "image/png": "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" } }, "cell_type": "markdown", - "id": "ffb84b53", + "id": "cc6ce65e", "metadata": {}, "source": [ "
\n", - "\n", - "
\n" + "\n", + "" ] }, { @@ -307,7 +288,7 @@ "metadata": {}, "source": [ "
\n", - "Note: This algorithm is not correct for all matrices: if any diagonal element B[k,k] is zero, the computation in the first inner loop fails. To get around this problem, another step can be added to the algorithm that swaps the rows until the diagonal entry of the current row is not zero. This process of finding a nonzero value is called pivoting. We are not going to consider pivoting here for simplicity. \n", + "Note: This algorithm is not correct for all nonsingular matrices: if any diagonal element B[k,k] is zero, the computation in the first inner loop fails. To get around this problem, another step can be added to the algorithm that swaps the rows until the diagonal entry of the current row is not zero. This process of finding a nonzero value is called pivoting. We are not going to consider pivoting here for simplicity. \n", "
" ] }, @@ -321,24 +302,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "eb30df0d", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3×4 Matrix{Float64}:\n", - " 1.0 3.0 1.0 9.0\n", - " 0.0 1.0 -1.0 1.0\n", - " 0.0 0.0 1.0 35.0" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "A = Float64[1 3 1; 1 2 -1; 3 11 5]\n", "b = Float64[9,1,35]\n", @@ -373,15 +340,15 @@ "\n", "```julia\n", "n,m = size(B)\n", - "for k in 1:n\n", - " for t in k:m\n", - " B[k,t] = B[k,t]/B[k,k]\n", - " end\n", - " for i in (k+1):n \n", - " for j in k:m\n", - " B[i,j] = B[i,j] - B[i,k]*B[k,j]\n", - " end\n", + "for t in (k+1):m\n", + " B[k,t] = B[k,t]/B[k,k]\n", + "end\n", + "B[k,k] = 1\n", + "for i in (k+1):n \n", + " for j in (k+1):m\n", + " B[i,j] = B[i,j] - B[i,k]*B[k,j]\n", " end\n", + " B[i,k] = 0\n", "end\n", "```" ] @@ -403,37 +370,21 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "078e974e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "🥳 Well done! \n" - ] - } - ], + "outputs": [], "source": [ - "answer = \"a\" # replace x with a, b, c, or d \n", + "answer = \"x\" # replace x with a, b, c, or d \n", "ge_par_check(answer)" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "1169c86e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The outer loop of the algorithm is not parallelizable, since the iterations depend on the results of the previous iterations. However, we can extract parallelism from the inner loops.\n" - ] - } - ], + "outputs": [], "source": [ "ge_par_why()" ] @@ -445,7 +396,7 @@ "source": [ "### Data partition\n", "\n", - "Let start considering a row-wise block partition, as we did for the previous algorithms.\n", + "Let start considering a row-wise block partition, as we did in previous algorithms.\n", "\n", "In the figure below, we use different colors to illustrate which entries are assigned to a CPU. All entries with the same color are assigned to the same CPU." ] @@ -501,7 +452,7 @@ "Definition: *Load imbalance*: is the problem when work is not equally distributed over all processes and consequently some processes do more work than others.\n", "\n", "\n", - "Having processors waiting for others is a wast of computational resources and affects negatively parallel speedups. The optimal speedup (speedup equal to the number of processors) assumes that the work is perfectly parallel and that it is evenly distributed. If there is load imbalance, the last assumption is not true anymore and the speedup will be suboptimal.\n" + "Having processors waiting for others is a waist of computational resources and affects negatively parallel speedups. The optimal speedup (speedup equal to the number of processors) assumes that the work is perfectly parallel and that it is evenly distributed. If there is load imbalance, the last assumption is not true anymore and the speedup will be suboptimal.\n" ] }, { @@ -511,9 +462,9 @@ "source": [ "### Fixing load imbalance\n", "\n", - "In this application is relatively easy to fix the load imbalance problem. We know in advance which data is going to be processes at each CPU and we can design a more clever data partition.\n", + "In this application, is relatively easy to fix the load imbalance problem. We know in advance which data is going to be processes at each CPU and we can design a more clever data partition.\n", "\n", - "We can consider row-wise cyclic partition to fix the problem. See figure below. In this case, the CPUs will have less work as the value of $k$ increases, but amount of work will be better distributed than with the block partition." + "We can consider row-wise cyclic partition to fix the problem. See figure below. In this case, the CPUs will have less work as the value of $k$ increases, but amount of work will be better distributed than with the previous row block partition." ] }, { @@ -555,18 +506,10 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "a6741a25", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It is a form of static load balancing. We know in advance the load distribution and the partition strategy does not depend on the actual values of the input matrix\n" - ] - } - ], + "outputs": [], "source": [ "ge_lb_answer()" ] @@ -578,46 +521,46 @@ "source": [ "### Data dependencies\n", "\n", - "Using a cyclic partition, we managed to distribute the work uniformly. But we still need to study the data dependencies in order to implement it efficiently.\n", + "Using a cyclic partition, we managed to distribute the work uniformly. But we still need to study the data dependencies in order to implement this algorithm in parallel efficiently.\n", "\n", "Look again to the algorithm\n", "\n", "```julia\n", "n,m = size(B)\n", - "for k in 1:n\n", - " for t in k:m\n", - " B[k,t] = B[k,t]/B[k,k]\n", - " end\n", - " for i in (k+1):n \n", - " for j in k:m\n", - " B[i,j] = B[i,j] - B[i,k]*B[k,j]\n", - " end\n", + "for t in (k+1):m\n", + " B[k,t] = B[k,t]/B[k,k]\n", + "end\n", + "B[k,k] = 1\n", + "for i in (k+1):n \n", + " for j in (k+1):m\n", + " B[i,j] = B[i,j] - B[i,k]*B[k,j]\n", " end\n", + " B[i,k] = 0\n", "end\n", "```\n", "\n", - "Note that all updates on the loop over i and j we do the following update \n", + "Note that all updates on the loop over i and j we do the following: \n", "\n", "```julia\n", "B[i,j] = B[i,j] - B[i,k]*B[k,j]\n", "```\n", "\n", - "As we are using a row-wise partitions, the CPU that updates `B[i,j]` will also have entry `B[i,k]` in memory (both are in the same row). However, `B[k,j]` is in another row and it might be located on another processor. We might need to communicate `B[k,j]` for `j=k:m`. This corresponds to the cells marked in red in the figure below. These red entries are the data dependencies of this algorithm. The owner of these entries will send them to the other processors. This is very similar to the communications seen in previous notebook for Floyd's algorithm. There is a key difference however, in the current case we do not need to send the full row, only the entries beyond column $k$ (the red cells in the figure).\n" + "As we are using row-wise partitions, the CPU that updates `B[i,j]` will also have entry `B[i,k]` in memory (both are in the same row). However, `B[k,j]` is in another row and it might be located on another processor. We might need to communicate `B[k,j]` for `j=(k+1):m`. This corresponds to the cells marked in red in the figure below. These red entries are the data dependencies of this algorithm. The owner of these entries has to send them to the other processors. This is very similar to the communication pattern seen in previous notebook for Floyd's algorithm. There is a key difference however. In the current case, we do not need to send the full row, only the entries beyond column $k$ (the red cells in the figure).\n" ] }, { "attachments": { - "g30822.png": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzAAAAJsCAYAAAAiM0YjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAACAASURBVHic7N15nBx1nf/xV/X0zOS+LxJOEw4JEORGEMEFFEXwRF1wFQWPXd0VcfHADU0WVERWRV1XQMRjXcFdEfH4KaCcchiCAoKAAiEhCQFykWuurt8fNQM9ne6eqU73VNXM6/l49CNd1d/v1LtnJj396W/V9xsgSRru8sDZJdt/Aa7rvd8OnAy8G9gD2AkoAo8DvwIuBZ6u8nX3A84AXg3sBowCVgP3AN8Hrm3kk5AkSZI0MowGwpLbj3r37wM8XPZY+W0D8LayrzcK+E+gZ4C+PwfGNOk5SZIkSRqmKhUwBwGbqF2A9N26geN7v9Yo4KZB9guBXwJBk5+fJEmSpGGkvID5DfBE7/2twOVEoyyHA8cAnwZWlfVZ2vt1vl2y7z6iU9OOBQ4FTiE6Na28iDmt+U9RkiRJ0nBRXsD03R4Fdq/SZ2bv46Xtf9D7bxH4VyBXpe8ny/rd14gnIUmSJGlkqFTArCG6YL+WEyr0C4FFA/QLgHvL+uxZZ3ZJkiRJI0ylAuZjg+iXY9tTyZYBrYPo+7Gyfn8fO7UkSRVUG/6XJA1fPcBVg2hXBJaU7fs+0DWIvn8o23YERpLUEBYwkjTyPAisG2Tb5WXbd9TZb9Ig+0mSVJMFjCSNPNUWpqxkY9n2ikH221S2PT7GMSVJqsoCRpJGnvKipJZinX3L+7kWjCSpISxgJGnkCZMOIElSvSxgJEmSJGWGBYwkSZKkzLCAkSRJkpQZFjCSJEmSMsMCRpIkSVJmWMBIkiRJygwLGEmSJEmZYQEjSZIkKTMsYCRJkiRlhgWMJEmSpMzIJx1AktR0IbC2ZHtTjL5byvr21HnMzTGOKUmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJA2N0cCpwM+BtoSzSJKk+KYCvwPeTfR3XZKGnQA4CrgWWAVsBf4v0USSJGl73Eb09/wZ4Drg1UAu0USS1ADzgEuAZcCzQNh7WwXslGAuSZK0fQ6g/9/2NcBK4GvAHgnmkqTYJgMfAf5MVKh089KLW9/twcTSSZKkRnmKbf/GF4HngUeBjwFTEkunYS9IOoAyrRU4AVhI9KnLqN591dwOfH8IckmSpOb5GPDyGo93A1uAB4AvAr8EuoYgl0YICxjV6zDg10QX5I9KOIskSUqnTqJrZg4BHkk4i4YJCxjVKwccA3wcOAIYB7QM0Odxok9jJElSdh0KzBqgTRewFvgFcCnwx2aHkqQ4RgHvAH4PrCZ60So/NzYE7kgqoCRJapjHqPx3fgvRBf13AqdQ+7RySUqNHYHzgSfpP0tJ3yxkYxNLJkmSttdsor/nfX/be4imVH4Q+DAwMblokrT9DgK+R/RpzHqic2A/mWgiSZK0Pf6LqGh5jmi5hIuBlyWaSJKaoBU4GbiFaIrFtmTjSJKkOkwluq7lx0TXv3ottaQRoT3pAJIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZI0kMnAmpLbN5KNI0lSOuSTDiBJqiggKmL6jEkqiCRJaZJLOoAkSZIkDZYFjCRJkqTMsICRJEmSlBkWMJIkSZIywwJGkiRJUmZYwEiSJEnKDKdRlqThZ0dgZtm+B4GOBLJIkiRJGgGmAGHJ7TuD7HccsL6kXxEoNCGfJEmSJL2ongLmvUBnSZ8O4O+blE+SJEmSXhSngAmIRllK268Fjm5qQkmSJEnqNdgCJg9cVtb2aWDBEGSUJEmSJGBwBcw44Jdl7R4AdhqijJIkSZIEDFzA7AAsKWtzIzBxCDNKkiRJElC7gJkPLC17/LtA6xBnlCRJkiSgegFzDNEF+qWPfZXoQn5JkiRJSkSlAubtwJaSfd3Ah5MKKEmSJEl9yguYlUSLUvZtbwTekFg6SZIkSSpRXsCU324A2hJLJ0mSJEklyguYO4hGYUr3/QIYlVRASZIkSepT6RqY3YDHy/bfDIxPJqIkSZIkRarNQrYz8FjZY7cBExLIKEmSJElA7XVgZgEPlD2+GJg6xBklSZIkCahdwADMAP5Y1ubPwA5DmFGSJEmSgIELGIDJwF1l7R4G5gxRRkmSJEkCBlfAAEwEbi9r+zjRBf+SJEmSNCQGW8AAjCFaF6a0/VJgXpMzSpIkSRIQr4ABaAd+WtZnJbBPEzNKkiRJEhC/gAFoA/63rN8zwIImZZQkSZIkoL4CBqAFuKqs7xrg0MZHlCRp6AVJB5AkVZQDdi3ZfgF4dpB9W4BdyvZtBlZtfyxJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJUnq1AlOSDiFJkiQpnfJJByjzQeBNwLFJB9FghbsBeySdQpIkpdrtEGxKOoSGhyDpAGUeAmYC84C1CWfRoISfBL6QdApJkpRq8yF4KOkQGh5ySQcoMQ+YBowFTks4iwYUjoZwAvz0mKSTSJKktPv0CdH7hrA16STKvjSNwPwHcFbv/SeAlyWYRQMKrwNOSjqFJEnKlDMhuCLpEMq2tIzABMDbS7Yn4nUVkiRJksqk5SL+VwGjS7YnE13Qf3YycVSHJcA/JB1iWwf8HHb+X/jpVUknqezYT8OGfeCeU5NOUtm3doKvXwsPHJR0kur2uxve8R449y9JJ6ns0KtgzFL43XlJJ6nslFPgsffDfa9NOkl1+/4JHliQdIrq9r8RXv4N+J9rk05S2asvhI4ZcNeZSSep7NwFcP234P7Dkk5S3b73wr+dAKesTjpJZQf/CCYvht98KekkZcYDdyYdQmqWnwBh2W056TrFTf2E10EYltxuSzpRFY+Q7kL4UtL94j4XSPusMRuA/ZMOUcPNwOVJh6jhQ0Sn7aZZV9IBBvAUcHrSIWq4Crgh6RA1HAasSzrEALYAc5IOUcM9wMVJh9hWOKnsvUII4RlJp1L2peEUslHAKyvsHwMcOcRZJEmSJKVYGgqYtxLNPFZuMvCxIc4iSZIkKcXSUMB8DBhX5bEjiEZiJEmSJCnxAmYmsFONx8cBbx6iLJIkSZJSLulZyN5PdKpYNWOBfwH+e2jiKGEzgb2Blt7tR4BlycWRJElS2iRdwJxJNAr0DNFMRzsCbcDjRMXLWGB3YBawKqGMap4jgGOAg4ADiX7+pT4KfH2oQ0mSJCm9kjyFbD6wA/BlYAHRdK3P9j72dmAXojewPUBK18jQdjoP+HfgZLYtXiRJkqRtJDkC8zjwMmBFlcc7iOauvwaYOESZlIxO4H7gXqLC9XXJxpEkSVJaJTkCs4XqxUupzcDKJmdRMr5EdOrYOOBgogX17ko0kSRJklIt6WtgNLL9JukAkiRJypakp1GWJEmSpEGzgJEkSZKUGRYwkiRJkjLDAkaSJElSZljASJIkScoMCxhJkiRJmWEBI0mSJCkzLGAkSZIkZYYFjCRJkqTMsICRJEmSlBkWMJIkSZIywwJGkiRJUmZYwEiSJEnKDAsYSZIkSZlhAaMknQyEZbdCyeNfq/D4kUMbUZIkSWliASNJkiQpM/JJB9CI9hDwqZh9nmxCDkmSJGWEBYyS9BhwUdIhJEmSlB2eQiZJkiQpMyxgJEmSJGWGBYwkSZKkzLCAkSRJkpQZFjCSJEmSMsMCRpIkSVJmWMBIkiRJygzXgVGDLJ8FfCjpFBVMAY4CNiUdpIpXAHNI5/cOYCbQSnrzAbQD7wAOSzpIFTsDo0nv9/A1wETSmw+iD9vSnG8CcBzR72IazQcmkd7v4Tyi711a80H0fuk9wJqkg1SxA3Awqfse7j46WvJNaqwg6QBllhO9mTsQWJJwFtUUXgec9NL2PVvh0FWJxaluJ2AjsDbpIFVMI/rD/XTSQapoBWYDS5MOUsMuwCqgI+kgVcwGuoHVSQepYmLv7amkg9SwK/Bkwhlq2RlYB2xIOkgVM4jegK9IOkgVo4g+LEnz68yuRO9RuhPOUc0cotfA55IO0t+UHDy/c9nOMyG4IpE4UpMsB0LggKSDaCDhdRCGJbfbkk5UxSPA2UmHqOFS4M6kQ9Qwl/SOXvXZAOyfdIgabgYuTzpEDR8Cnkg6xAC6kg4wgKeA05MOUcNVwA1Jh6jhMKICMM22EBUJaXUPcHHSIbYVTip7rxBCeEbSqZR9XgMjSZIkKTMsYCRJkiRlhgWMJEmSpMywgJEkSZKUGU6jLA1sR2APXir47yKa2UySJElDzAJG2tYbiObTP4hoSu9ZZY/vD/xpqENJkiTJAkaq5H+J1iWQJElSyngNjFTdFqLTxb6BSwlLkiSlgiMw0rY+CPwReIiXVl2+Adg9sUSSJEkCLGCkSr6XdABJkiRV5ilkkiRJkjLDAkaSJElSZljASJIkScoMCxhJkiRJmWEBI0mSJCkzLGAkSZIkZYYFjCRJkqTMsICRJEmSlBkWMJIkSZIywwJGkiRJUmZYwEiSJEnKDAsYSZIkSZlhASNJkiQpMyxgJEmSJGVGPukAUgotAj5Stm9cyf1bgZ6S7RCY2uxQkiRJsoCRKhkNTK7x+ISy7bCJWSRJklTCAkba1u/oP8IyEAsYSZKkIWIBI23rl703SZIkpYwX8UuSJEnKDAsYSZIkSZlhASNJkiQpMyxgJEmSJGWGBYwkSZKkzLCAkSRJkpQZFjCSJEmSMsMCRpIkSVJmWMBIkiRJygwLGEmSJEmZESQdoMxyYA5wILAk4SyqKbwOOOml7TtCOLInsTjV5YFi7y2NWnr/TeP3rk8e6E46RA15ou9fmHSQKtL+M8713tL+M057Pl9n6hcQZUz7z9jXmdgmAWvzZTvPhOCKJNJIzbKc6MXhgKSDaCDhdRCGJbfbkk5UxSPA2UmHqOFS4M6kQ9QwF9iUdIgBbAD2TzpEDTcDlycdooYPAU8kHWIAXUkHGMBTwOlJh6jhKuCGpEPUcBiwLukQA9hC9AFrWt0DXJx0iG2Fk8reK4QQnpF0KmWfp5BJkiRJygwLGEmSJEmZYQEjSZIkKTMsYCRJkiRlhgWMJEmSpMywgJEkSZKUGRYwkiRJkjKjfHEhSdnRCuwD7Ae09+67gfSv6SFJklQ3CxgpW04BjgYOon/h0udtWMBIkqRhzAJGypaFwPykQ0iSJCXFAkbKpqeBe3tvRwF/l2wcSZKkoWEBI2XLB4DHgVUl+76JBYwkSRohLGCkbPl90gEkSZKS5DTKkiRJkjLDAkaSJElSZljASJIkScoMCxhJkiRJmWEBI0mSJCkzLGAkSZIkZYYFjCRJkqTMsICRJEmSlBkWMJIkSZIywwJGkiRJUmZYwEiSJEnKDAsYSZIkSZlhASNJkiQpM/JJB5AUSzswpsK+PmOByWWPrweKzQwlSZI0VCxgpGw5Hfhmjce/W2HfPOBvzYkjSZI0tDyFTJIkSVJmOAIjZcstwAdj9nm2GUEkSZKSYAEjZcvDvTdJkqQRyVPIJEmSJGWGBYwkSZKkzLCAkSRJkpQZFjCSJEmSMsMCRpIkSVJmWMBIkiRJygwLGEmSJEmZESQdoMxyYA5wILAk4SyqKbwOOOml7bs74bA1icWpbgawBXgh6SBVTCJaj+m5pINUkQemAs8kHaSGmcBaoDPpIFVMA3qIMqbR2N7b6qSD1DALWJV0iBpmAJt6b2k0hejv/fNJB6minei1MM2vM7OIFgXuSTpIFdOBLmBd0kH6m5KD52eU7TwTgisSiaNhw4Us1SC7PA78W9IpKvg6cBNwbdJBqjgTmAt8KukgVcwCLgE+mnSQGr4PfAF4IukgVVwArAS+kXSQKk4g+jAizT/jq0l3vm8BPwZuTDpIFf9CVMScl3SQKvYCPkO6f8Y/BD4LpPGDOoCLgYeA7yQdpL8dxgJXJZ1CarblQAgckHQQDSS8DsKw5HZb0omqeAQ4O+kQNVwK3Jl0iBrmkt5PlftsAPZPOkQNNwOXJx2ihg+R3uKvT1fSAQbwFHB60iFquAq4IekQNRxG6kYOtrGF6AyRtLqHqIhJmXBS2XuFEMIzkk6l7PMaGEmSJEmZYQEjSZIkKTMsYCRJkiRlhhfxS2qGHYhmE3wF0QxXAL8CbkkskSRJGhYsYCQ1ymnA24kKl0oXu67FAkaSJG0nCxhJjfI2+q0NJEmS1HgWMJIaaStwP3Bv7+0VwD8lmkiSJA0rFjCSGuUjRCtpl67Z8YmEskiSpGHKAkZSoyxPOoAkSRr+nEZZkiRJUmZYwEiSJEnKDAsYSZIkSZlhASNJkiQpMyxgJEmSJGWGBYwkSZKkzLCAkSRJkpQZFjCSJEmSMsMCRpIkSVJmWMBIkiRJygwLGEmSJEmZYQEjSZIkKTMsYCRJkiRlRj7pAJKGjQnA7mX75pTdP7Ds8ceADc0MJUmShhcLGEmNcghwQ43HP9p7K/U64NdNSyRJkoYdTyGTJEmSlBmOwEhqlCXAcTH73NeMIJIkafiygJHUKGuAG5MOIUmShjdPIZMkSZKUGRYwkiRJkjLDAkaSJElSZljASJIkScoMCxhJkiRJmWEBI0mSJCkzLGAkSZIkZYYFjCRJkqTMsICRJEmSlBkWMJIkSZIyI590AA0XD74c+EnSKSrYCTgDOCLpIFUcCEwind87gHHAKNKbD2AM8BVgTdJBqlgAzCO938M9gFmkNx9AC+nONwP4GPDGpINUcRjQTnq/h9OJXmvSmg+gDfg2sDnpIFXsRfR9nJt0kP5mtcKqpENoGHIERkpWkHSAAaQ9n7ZfmHQASZKybDnRH9MDkg6igYTXQRiW3G5LOlEVjwBnJx2ihkuBO5MOUcNcYFPSIQawAdg/6RA13AxcnnSIGj4EPJF0iAF0JR1gAE8BpycdooargBuSDlHDYcC6pEMMYAswJ+kQNdwDXJx0iG2Fk8reK4QQnpF0KmWfIzCSJEmSMsMCRpIkSVJmWMBIkiRJygwLGEmSJEmZYQEjSZIkKTNcB0bSSDSXl9bgAfgLcGtycSRJ0mBZwEgaCQ4C3kZUtBwITC57/HIsYCRJygQLGEkjwTtJ93pAkiRpkCxgJI0kG4D7gHuBNuAjycaRJElxeRG/pJHgO8BeRKeOHU00GnNTkoEkSVJ9HIGRNBL8OekAkiSpMRyBkSRJkpQZFjCSJEmSMsMCRpIkSVJmWMBIkiRJygwLGEmSJEmZYQEjSZIkKTMsYCRJkiRlhgWMJEmSpMywgJEkSZKUGRYwkiRJkjLDAkaSJElSZljASJIkScoMCxhJkiRJmZFPOoAkDYEcMLFs39iS++3A5LLHNwMdzQwlSZLicwRG0kiwC7Cm7PaDksf/ocLjZwxxRkmSNAgWMJIkSZIyw1PIJI0EzwEfjNnnjmYEkSRJ28cCRtJI8AJwWdIhJEnS9vMUMkmSJEmZYQEjSZIkKTMsYCRJkiRlhgWMJEmSpMywgJEkSZKUGRYwkiRJkjLDAkaSJElSZljASJIkScoMF7JUg6yaBrwt6RQVTAQOIJ3ZAPYCZpDefDsALaQ3H0ArcDwwL+kgVczq/Tet38NDgHGkNx9EH7alOd9Y4DCiBVPTaC4whfR+D/cC2khvPoheB08Enk86SBXTgb1J3fdwn7HwYNIhNAwFSQcosxyYAxwILEk4i2oKrwNOemn77k44bE1icaqbAWwhvW8sJhK9AX8u6SBV5IGpwDNJB6lhJrAG6Eo6SBXT2lpacuPb2lKZb3N3d76zpyc3qb29M+ks1azZsqV9yujRHUnnqGZdR0fb6Hy+2N7S0p10lko2dHa2BkBafwc7e3pym7q6WiePGpXan/HarVvbJ7S3d7YEQZh0lko2dHS0BUEQpu1nXAwnsXbrivay3WdCcEUigTRsOAKTPfsCry/ZvhZ4NKEsJQ69B3hV0ikqeAS4DLgk6SBVXAocDByedJAq5gL3E43EpNUG4Fjgj0kHqaS1peX2dy9Y8MorTjopla+331y8OPjFI490/fzUU1OZD2DKRReFz33yk6nNt+ell3Z//y1vaTlkxx1TmfE9114b7DZ5ck/h6KNTme/OZcv4wM9+1vPAP/1TKvMBzLj44uJfP/rRlgmjRiUdpaJ//PnPu8a0trZ+6bWvTdX3cN2WUUy+qLFfMywUJhGNKEaef/7p4GtfS23xq+ZI1S+6BuVA4Asl24+RigJGkiSp6f4RWPTi1vTpBwP3JZZGifAifkmSJEmZ4QiMJEmSpNjCc8+dQz5/5Ys7guD/gkLhsmYf1wJGkiRJUnxBMIYg+LuSPX8aisN6CpkkSZKkzLCAkSRJkpQZFjCSJEmSMsMCRpIkSVJmeBH/yDEX+ApQugrX/wLfSiaOpIGs3bKFxStWBItXruTeFSuCB595JugqFgH4/LHHFk+ZPz+Vq4JLUlqFhcJhwBsIwyMJghnANOB54DngTuBXFAq3BFD362u4aNHBFIsnEi3wPQOYDqwhDJ8jCO4CfgXcHBQKxUFmnkax+OYXd+Ry9waFwhKA8BOfGMuYMW8hCN4C7EoQzOw91jKC4Ho6Oq4OPv/55+t9LlUzLVz4dmAS0fMrtV+4cOGZVTvmcv8TFAobt/f4FjAjwyHA9fT/JbsUuDyZOJIG8parr85d+/DDQbXHN3S48LQkDVZYKOxHGF4CHANA0O/ldSqwB/BK4GzOO+8PYUvLx4OFC++MdYxFi+ZTLF5CsXhshYenEgS7A4cDZwFLwkWLzg4WLrxtwC+cy+0EfLNkzyJgSXj++ccRht8jKpBKzSAI9gKOo739/LBQODsoFL4X57kMItN5wF4VHjmWXK7S8490df0G2O4CxlPIhr+Tgd/xUvESAp8C/gUYVOUvaeit3rSp33Y+l2PSqFFVWkuSqgkLhdcDtxMExwyqQxAcTLH427BQOG3Qxzj//OMoFu8Aqr957+8AisUbwoULTx/sMfodb+HCdxOGv2Db4qXcZODKsFD4bD3HSStHYIa3M4gq9r6fcwfwXuBHSQWSNDh7TZ3KHlOmhAfOmRMetMMOLJg5Mzz/lltyX7j99qqjMpKk/sJFi46gWPwJ/d/zrgG+Q/QB72qi08iOBN4PzOxt0wp8JywUNgSFws8GOMbBFIvXAW0lu9cBVxEENxGGzxAEU4FXEobvB2b3tsmTy10WLly4MVi06MeDf1LhfHK5TxANRHQA3yEIricMlwHjgAOADwD7lfQqhAsXLgsWLfruoI9TS7H4ZXK5qUSjV2eXPHI78Muq/Vpb1zbi8Hn6V4rP0n8Bmh2B9wALgDlAQPSDvoPo+oknGhFCDRcA5/Xe+qwF3gTcmkgiSbFccfLJjpBK0nYIzzlnPMXiVZQWL2F4B0HwjqBQWFXW/DdhofAV4AfA8b37AuBb4Wc+c3fwuc89U/EYhcIYisXv0r94uQd4W1AorChrfkNYKHwVuAo48cVj5HLfCM899/fBhRc+PagnFgRv7b33NLnc64OFC/9c1uKesFC4ArgY+OiLe3O5S8LPfOY3wec+t3JQx6kVYdGibwOEn/3s7uTzpQXMPUGh8MXt/foDyQE3lNwW9e4fDfwX8CRwAfB2ovMCDyc6JemLwF+Ai4CWZodULG1E//lKi5cniX5+Fi+SJGlkGDPmTGC3kj2PsXXrSRWKFwCCQmEN8DbgjyW7p9PWdlbVYxSLpxNdP9PnCeDECsVL3zHWAe8kKnL6TKG19RO1nkoFncAbKxQvfcfpplD4OGF4bcnuSbS1xT1OKlW6BmYKcBfwQWoXJ23AOUBjhqLUCJOAXwN/X7LvfqJh0b8kkkiSJGmIhYVCjui97EuC4GPBRRetr9UvKBQ2k8t9mP6zkL0vPOus0dscIxo9+VDZ7rN7C6Fax9jae4zSkfb3hOecM75WvzL/GRQK99c8DoQEwVnAlpLd7w4LhcxfUFlewOSBq3npnLlHgEuIhp8+DHyJ6NP8UqcCg77ISU0zB7gZOLpk3w1EU/gNbkhSkiRpeNiLaAmJPo8E553368F0DBYu/ANwd8muKUya9MptGhYKc4GXl+x5kkLh+kEe40+EYekMZBMYO/aowfTtddmgjlMoLAd+XrJrCkHwqhjHSaXyAuZ4omtithBd7L038Ang60SnlP0r0S/EVWX9Pkt0nqCSsS/RqNmCkn1XAW8ANiQRSJIkKTHF4uFlewZVWJT4ab+tMCz/egCHlR8j1voxYVh+jPKvV81jQaHw6KCPA7/ot9XTc0iMvqlUaQSmCJxEdGpYpYtIO4AzgQdL9u0JHNyMgBrQcUSTKuzYux0CBeB0oCuhTJIkScnJ5eb32y4W74vVPwjK28+v0Grvsu14x8jnl/TbDsN9BtUvDGueOraNXO6+su1KzyVTKl0D803gxgH6dQNfK9s32KpRjfUhoPScyU8A5yeURZIkKQ0m99vK55fH6t3V1b99GE6p0Kp8X7xjdHSUt690jG0FQbxLA4rF/rOOheHUWP1TqFIBc+kg+/6ubHtwVaMarXw10/cBs5IIIkmSlBITy7bjnVKfz5df7D+p4cdobR3MMSqJu5J9/1xBUJ47c8oLmOXAYM+pe5z+5/kNrmpUo/0z8PuS7fm927tVbi5JkjTsdfbbKhZbY/Zv67cVBB0DHiOXa8YxKom3EP369eW5Oiu2y5DyAibOwpQ9wKaS7QnbH0d1WE80+cJNJft2Ixohm5dIIkmSpGStK9se7OhGJJcrH6Uo/3oQLRL+kjCMd4xtM1U6RiXxRlAmThzMc8mU8gKm5tzYFXTX+FoaOpuIJl4onR5wF+A2Kl90JkmSNJw9U7a9KpF01QAAIABJREFUV6zexeLLy/ZUWr1+db+tnp54x9g2U6VjbCsM9xi4UT/l7Ssuspkl5UVHpVnHlA2biYqYn5TsmwX8lpfW9ZEkSRoJ/lC2fWjM/v3bF4uLt2kRBP2PkcvFPUb/CbAqHaOSINg//MAHBn+6WrFY/lzuHXTfgeTz5dNGD8mAhqMmw0sncArw/ZJ9M4gWuMz8nN+SJEmD0tFxN/0/mH9jWCiMGUzXsFDIE72fekkud8c2DTdvvof+ZyO9PjznnPHbtKt8jBzwzgGPUdlkZs/+u0G2hSDo/1zy+d9XaRlfZ+emsj2TK7ZrMAuY4aeHaA2YK0v2TQZ+A2y7iqwkSdIwE3z+888CvyzZNYFi8axBdS4WPwzsULJncVAoPLTNMS66aD1heF3JrjGMGfOJQR7j/cDOJXseDAqFJdWaV/CZcBCLyIfnn38CQfCKkl1LgoUL/xzjOLW1ta2n/6Re0xv2tWuwgBmeeoAz6D8l9kSiIubYRBJJkiQNpSDov2ZhLvepsFA4slaXsFA4iFxuUdnu6kuMlB8DPhEWCq8Z4Bj7kct9od/OYvGrtfpU8EoKhbMHOM5swvDrZcf5Rszj1BQUCpuJZibuc0h41lmjG3mMSuJNw6YsCYGPAV1A3y/4WOBnwJvpf8G/pJT5w9NPB5ffe2+/T9fuWfHSdZff/9OfgnuWL+/3+LlHHVXcZVLcSXAkaXgKzjvvprBQ+G/g1N5do4Hrw0Lhk8CVQaHw4ulf4dvf3sL8+acC/0HpAuFheAPnn/8/VY9RKNweFgpXEq3DB9AOXBsWCp9mxYrLg8su63rxSxUKOYrFdwBfpXQmsTC8hVzuuzGe2vre/p8PC4WprF+/KPjyl7eUNggXLTqcYvFKokmd+vyeXK70MoNG+S0wt/f+NCZOvD4sFP6TXO4JisXyCcKeKv2+18sCZngLgU8AzwJ9lf5ooiLmXfS/4F/ZNYqoOJ1INJ15D9EiV+t6/+2q3lVp9de1a7l8yZKqpwfcunRpcOvSpf32feDAA4NdJk0qv6BSkkayfyEM9yMI9u3dHg/8J7AoPO+8OwiC1cBU4HD6nzYG8Djd3WcE/U+R2tbmzWczevQrSk7VGgtcyuzZ54WFwh3AM4ThFOAwcrk5Zb2XEgSnB4VCnIm0/gt4LbA/8K9MnPjBsFD4LbAUmEAYHkCxuKCsz2q6u98fXHBBMybs+gbwHl5a1+Zo4GiKFQ7V1TW3N+d2sYAZGS7q/beviGkDriG6VqYZlbiaZxeidX9eQTT94nyiiRqqCYGngIeBPwNLiE4lfK65MbW92nI5Jo8aFatPPudZwZJUKigU1oWFwjFE73tKT+2aRhCcXKPrYuBNwYUXrhrwGF/84gvhOee8htGjf0QQvLbkoalEM8RCUPHzqD/S1XVycOGFTw90jDIddHe/nXz+Z8DLiT68fNNLgbY51kpyudcHF1zwWMzjDEpQKDwYFgpnAN8kKt6azgImex4BLivZHuzioxcRjcSUTqV3ONECmJmfD3yY2xN4P/AGYO+YfQOiomcX4HW9+3qAe4hG4q6kfB57pcJb9947fOvee/cknUOSUqVY3EIuV7qA5ICnIwWFwroQXkuh8HbgM8A+NZo/RrH4JR5++Krgxz8e9Gtw8MUvvgC8ISwU3kIYnksQlI+AlPobcAlwZXDhhXWdThVccMETYaFwOPB5olPkKi0ovxX4IfCpYOHCNfUcZ9B5CoUfhoXCzcBpwJFEi6lPY9uJBhoyAmQBkz139t7qcSX9ZydTuh1HdB3T62jshBstRMXr4UCB6MXtK8D9DTyGJEkNFyxa9GXgy7H7QUihcA1wTXjuubvQ2noExeJMcrlpFItrgNUUi3dt7yhFUCj8BPhJeO65O9HSciS53EyiN/LriE7juju44IJHtucYJcfaCHw0POusc5g06TWE4W7ADIrFteRyS4Ebg0JhQyOONcg8K4Av9t6aygJGSp95wNd4acSkmdqJTiV8L/ADogkfnh2C40qSlIjgwguX0oDrMAY4xjKg6sX/DT1WdAH/L4biWGnhCdNSeuSBfwceZGiKl1IB8G7gIeAfhvjYkiRJg2YBI6XDVOD/AZ8lGhVJyjTgu8C3eGk2EUmSpNTIA1NKtuNOt7obL12cs91zOksj1Bii2U52TThHqQ8QzXJWc5EsSZKkoZYH1g7Yqrp1jQoijVBTiWYWS+P1aEcRTbNddS0SSZKkoeYpZFJydgdOJp3FS5+9iE5pGz9QQ0mSpKGQtk9WlwNzgAOJFtxTaoXX0bc4EwB3hHBkGtesyBPNOd6MlWe3V6MLl/KVghv5/zskWj8mjfJE2VK5An0Q5FqCXEsQBEEafwcJwzAICYNckEtlPoBisZjL5dKbLwzDXBAEISn9HSwWi0GvlH4Pw6BYLAa5XEtK86X/ZxyGYS4MwzCXy6UsXy4IwxlBCBC+jbB4CcCZEFyRbK5sCRctegXF4h9Kdi0KCoVFiQVKgTR/8qtMOeIO4FVJp6igb+HPS5IOUiIH/Bw4YTu+xhbgp8D/AXcBlVbxDYimZD4ceAdwPPX/nw+A84EL6uzfTBuITnf7Y9JBKsvdOmXP49pfdvy//V/SSSp58qYvHrZh+eKj9nvPNU2ft79ei79+9OcP/MjNn046RzVLvvW6T80++D03zjrgXYuTzlLJn390xin5tnET9nzLV1L5pvHZh6/fedmt33zfAR/8ZSHpLNUs/sYxF8x/13cuHjVl1/VJZ6nkz1ef+U/59rFP7vmmr6RqKt3urfnRKxfPLnRsuJl1j99MmNoSNeW2bl1BW9tnXtzO5e5IME0qWMBIQ+8c6i9etgBfBb4ADPSHNAQe6719j2h083yiNV9a6jh2AbgNuKWOvpIkqQ7B5z73DEOwOGSWeA2MNLQWEK31Uo/FwD7Apxm4eKnkaeAMohGZJ+vo30J0Uf/YOvpKkiQ1hAWMNHQC4OvUN/L5PeBI4PEG5PgD0XVmN9fRdyeitWokSZISYQEjDZ3TiIqQuH4MvA/oaGCWNcAbgFvr6PtxYM8GZpEkSRo0CxhpaIwGLqqj3y3A39OcGcA2E03j/ETMfm3AxY2PI0mSNDALGGlonA7sELPPs8CpQHfj47xoHdEMZZ0x+70ReEXj40iSJNVmASM1XwtwVh39/pnK0yM32h+ob0Tl7EYHkSRJGogFjNR8byVajyWO3wNXNyFLNZ8DlsXs805gbhOySJIkVeU6MFLzfaiOPmcztCs+byaa3vmyGH1agPcDnxmoobbP84/eMGf1fT8+fPPaJ+cWOzdPCIKWrvyoCWvGzV7w4I6v+sc7R02YvSXpjJIkDRULGKm55hCtEh/HrcBdTcgykO8RLXQZ51qdU4mmVXZ95Sb5688/deyav936d4ThiyPmIT35zk3PzVnz2E1z1i+967Cdj/qX/56+zxuXJplTkqSh4ilkUnOdSvxV7/+jGUEGoQP4Rsw+O1Pf1NAahMd/8+9HrvnrLccRhrkg19I9fs6Cu2cd8M5rps1/43XtE+c8DtDTuWni0pu/9N71S/8wLem8kiQNBUdgpOY6LWb71cAvmhFkkK4kGoWJU3T9PfWtJ6MaNq68f/LzD//6BIAgl+/a9TXnXF42yvL7R3/68RPWPXnn0cXuzjFLf3fxyfu995pvJxRXkqQh4wiM1Dy7AvvG7PMjmjtt8kBWEq09E8ebgKAJWUa0Zbf/19Fh2JMHmLz7MTdWOkVs9xO/8Ou2sdNWAGxdt2yPZx+8fpehzilJ0lCzgJGa57g6+lzT8BTx/U/M9jOB/ZoRZKQKuztzm555eF+AINfSteMRH7q7Ursg31actPsxv+/bfv6R3ywYqoySJCXFAkZqnmNjtl9HMhfvl/sl8WdAO74ZQUaq5x+7Ycdi99axAG3jd3iq1ixjM+e/8S999zc/++heQ5FPkqQkWcBIzZEDjonZ5yagpwlZ4loBPByzTz2jTapi46qHZ/XdHz15p5rr84yevvsLLW3j1gJ0b31hSvfWta3NzidJUpIsYKTmmA9Mj9nnpmYEqdMNMdsfiZOCNEzH2mUv/u60jZ+xdqD2+dETe9uEwfqn7ov7eydJUqZYwEjNcVAdfe5seIr6xc0yGti7GUFGou6uzWP67reOmbZxoPYt7WNfbNO16ZmxzcolSVIaWMBIzfGKmO07gD83I0idFtfRJ+5zVhVh99b2vvu51lFdA7UPWto6++73dG5ua1YuSZLSwAJGao64b+YfAAZ8ozqEHgfWxOxjAdMoxeKL6/AELS3FgZrncrkX24TdXXEXTpUkKVMsYKTGywFxp7O9vxlBtkNI/EwHNCPISBS0tL44ohJ2dQ54bVGxp+vFC/db2sd01morSVLWWcBIjTcHGB+zz2PNCLKd/hqzvVP4Nkiutf3FIqS7a9OAp4SFXR0vnnLW0ja+o1m5JElKAwsYqfF2q6NPGguYuJmmA+OaEWSkaR0zdV3f/a4Nz0waqH331g0T++6PmbrbulptJUnKOgsYqfF2raPPcChgoL7nrjKjp+y6uu9+x4aVNadFDrs7c11b108FCHL5rnGz97GAkSQNaxYwUuPVMwLzVMNTbL96MtXz3FVm4m5HLCO6Dokt657atVbbNY/fskPY0zUKoG38zGUE+bD5CSVJSo4FjNR4u8ZsXwTWNyHH9lpVRx8LmAYYN2v+urax01YAdG9ZP/35R2+YU63tcw/9Yv++++PnLEjTVNySJDWFBYzUeLNjtu+i99P2lHmGqLiKY4dmBBmJJs191d1995++69uvrdRm46oHJm1YtuQQgCCX79zh4NPuG6p8kiQlxQJGarwpMdunaf2XUt3A2ph94j53VbHLqz66OD964rMAW9cs3fPhqz/41q4XnhnV9/i6v90y69Hrznl/3+ljk192xC2jJ++2Kam8kiQNlQHXF5AU29SY7bubkqIx1hHv+cR97qoiaB3dM/d1he8+9rNP/lOxp3P0CyvvP+SP33nb/q1jJq8u9nS2d29ZPw0IAEZN2fUvc1+36LcJR5YkaUg4AiM1XtxRiJ6mpGiMjTHbOwLTQBN3OezZ3d98ydfaJ8x6EiAsdrd1bnx2x+4t66cDAUGuZ+Kuh92y97su+36Qb4t7up8kSZnkCIzUWHlgQsw+aS5g4p6S5AhMg03c8aDnF7zv2m+ueex3O6x74va5nRufm5TLt3e2T9hhzcz93/rQqEk7b046oyRJQ8kCRmqsCfSe1hNDmguYuCMwEwduonpM2f2YlVN2P2Zl0jkkSUqap5BJjdVWR580n/oT99P99qakkCRJ6mUBIzVWax190jiFcp+4EwzU8/wlSZIGzQJGaqx6RmCGUwFTz/OXJEkaNAsYqbFG+giMBYwkSWoqCxipsRyBiT+JgSRJ0qBZwEiNleZiRJIkKfPS9knpcmAOcCCwJOEsqim8Djjppe17tsKhqxKLU91ORFMBrx2i47US/Q7H0QMsa0KWRpgOjI3RPgSWNilLNbsAq4COIT7u4AS5Ofm2MSG5fNwpqYdE2LV1dBjQnsuPWpd0lmqKnZum5NrGrkk6RzXFri2Tc/lRWwiCrUlnqaSnc9P4XEtbELS0bkg6S0U9Pa3FYue4XOvooXqdjq3YtXlKrnXMOlI6a2TY3TkpDHu6cq2j467d1WRBQDh5MmEHPd1zCXtuATgTgiuSTqZscx0YNcjs5cCXkk5RwQXAHcCvhuh404F/j9nnBeALTcjSCGcAB8Vo38HQP5dLgasY+sJpUAKCT42Zvmduwi6HLE46SyXrn7xrXsf6p+fNWPDWm5POUs2Ku7795lkHvOvmpHNUs3Lx90+YuOshj4yeOu+JpLNU8tyff3ZoS/u49snzXnNr0lkq2bpu6dR1f73tlWn+Ga+45zsnT9/npDtb2sZuSTpLJc8//KvXkGt5fuqex/8p6SylwmJL29a1+57YtelhNq5c5SkKahgLGDXIjquAbyWdooKPA7cxdNl2In4Bs5F0fu8AjiVeAbOJoX8uFwPXAH8c4uMOUnBq24SZ7bMP/oe7k05SSeeGVUHX5ufmpDUfwIq7r3xTmvOtWvLDY8bOePlfZx3wrlQWqWv/dusu+bZxE9L6PXz24et3Xvf4nYekNR/Ainu+88bpLz/hvlFTdl2fdJZK1j5+20H59rFPp+172L01P3rl4tknhsVxwM1Jx9Ew4jUwUmN11tEnbadyloo7q1o9z1+SJGnQLGCkxqrnDXya/x+OidneAkaSJDVVmt84SVm0gfgXebY0I0iDxLmAH4ZusgRJkjRCWcBIjdUDxD1HOs0FzLiY7Z9vSgpJkqReFjBS48Wd7jXNBYwjMJIkKVWchUxqvOeBuTHap/n/4dSY7Z9rSooRLuza0rLivqv3eGH5vfN6tr4wjly+p33c9DXTXv66ByfNfXUa11+SJKlp0vzGScqquCMwbU1Jsf3agIkx+6R2scGsevbB63d56vavv6Nn64Z+xeQmYM1fbz5u7Iw9/jT3xM9fO2rC7FSuTyFJUqN5CpnUeCtjtm8lnVMpzyR+rrjPXTU89/Avdn7ytxd9oK94aWkbt27M1Jc9NGrSLo8GuZYugE2rH13wl2v+8X3dWzfEnfJakqRMcgRGary4q3EHwBTSdwH8zDr6PNnoECNV99YNrUt/9+XTwmJPHmDKvFffMPd1i34b5NuKAFuee3zcoz87+90dG1bt2rnxmZ3/+stzX7fXW752fbKpJUlqPkdgpMaLW8AA7NzwFNtv1zr6PN7oECPVUzf/x+E9nZsmAoydsecf5534hRv7iheA0dNetnGPN3/le7n8qE0ALyy777CNqx6YlFReSZKGigWM1HhP1tFnXqNDNEDcTCGOwDTMuqV3H9x3f84rz7ypUpvRk3fZNGGXQ+8ECMOe/KolV79iqPJJkpQUCxip8eoZgdm94Sm2X9xMq4HNzQgy0qxfvnhq95Z1MwDaxk5dMWnXI1ZXaztj/on3993fuOLBvYcinyRJSbKAkRpvBfEXs9yjGUG2U9wC5uGmpBiBNiy9Z8e+++2Tdn6qVttJu71ydS7fthmga9Nzs8PuTl/XJUnDmn/opMYLgfti9lnQjCDbIQD2i9nn3mYEGYm2rHlyRt/99gmzaq+tE+TC/KiJayA6jWzDqvsnNzmeJEmJsoCRmmNJzPbzgVHNCFKnPYi/Bkzcok1V9GxeP6Hvftu4GQOO5uVHT1jXd7/j+aVxf26SJGWKBYzUHHHfzLcC+zQjSJ0OqqNP3KJNVRR7Otr77re0j+kcqH3Q0v5im56Oje212kqSlHUWMFJz1PNm/vCGp6hf3CybgEebEWQkCnu6XlyUMmhp7Rmofa4l3913v7trc1uzckmSlAYWMFJzPAysitnn75oRpE7HxWx/CzDgG20NUklBEvb0DPg6Xezpaem7n8uP6mpWLEmS0sACRmqOEPhtzD6vITqVLGk7E39WtBuaEWSkamlp6+i7XxzEiErpiE3rqLEdtdpKkpR1FjBS89wYs/144JXNCBLT6+voYwHTQC3t4zf13e/Y+Nz4gdr3dLxQctH/zE212kqSlHUWMFLzxC1gAN7Z8BTxvStm+6eBPzcjyEg1atJOz/bd73zhmSkDte/esj5qEwTFcTsfUHvaZUmSMs4CRmqeZcRfG+UUIMmLsHcCjozZ5yfNCDKSjZ2974q++x3rntqpVtuNqx6Y1NO1eQJAfvTkZ/Ot47trtZckKessYKTm+kHM9lOAk5oRZJDeT/zXhR82I8hINnX316xsaRu7HqDjhdU7bXnu8XHV2q5+4Pq9++6Pm7Hnw0ORT5KkJFnASM31QyDuJ+LnNCPIIIwCPhSzz9+Au5uQZWQLcuG42fv8CYCw2LLs9q+/qlKz7q4X8usev7Xvuqlw6t4n/mmoIkqSlBQLGKm5VhN/NrKDgSOakGUg7wVmxuzzA6IZ19RgOx/1z7cEuXwnwLqldx319N3f3rv08bC7M/fITz7+5u4t66cDjJk+78Gpe7xmRaWvJUnScJJPOoA0AvwncHzMPl8BDgWKjY9T0XhgYcw+XcC3m5BFwOgpL9s4c/9TfrJqyQ/fQRjmnr7z2//w/CM3PjJmyq7Lit0drRufeWif7i3rpwG0tI1dt9vxn/1Z0pklSRoKFjBS810P/AXYK0afg4DTgO81JdG2/g3YIWafHxBNVKAm2fmoj95XLHbln73/2pPCYnfb1jVP7rV1zZP9fo/axkxdudtrP/vfY6fvuSGpnJIkDSULGKn5isCXgCti9vsqcBvwRMMT9fcq4KyYfUKi56Qm2/Xoj/9h2l7HPbZq8Q8P2vTsY3N7OjeOJ2jpaRs7+bkJOx364OzD3/uAM49JkkYSCxhpaPwAOI9omuLBmgT8D/BqoFmrq8/oPUbc14KfAA81Po4qGTdr33XzTvz8jdS3tpAkScOKF/FLQ6MD+Nc6+h0KXAu0NzYOEBVIvwDmxOzXAXy68XEkSZIGZgEjDZ2rgd/V0e8E4BqiC+0bZQ7Rp/kH1dH3i8BjDcwiSZI0aBYw0tD6Z6LZu+I6CfgDsH8DMhwPLAEOrKPvUuALDcggSZJUFwsYaWg9SP2nX+0JLCaaDGDnOvrvC1wH/Jro2pe4uoBTgc119JUkSWoICxhp6P0HUSFRjxbg/UQzk90EfBg4AGit0HYs0YKYnyAavbmfaCSnXucCd2xHf0mSpO3mLGTS0AuB04F7gHl1fo0c8JreG0APsK73liO6QH/y9sXs5zqcNlmSJKWABYyUjLVExceDwIQGfL0WYGrvrdGKRKeOhU342pIkSbF4CpmUnGXAT4HOpIPU8EeiaZM3JR1EkiQJIEg6QJnlRNO7Hkg0S5JSK7yOftdTPLQa5v8qsTjVvY1oyt8/JR2kiiOA6b33JyYZpILlRAXMCUQLcabVacD/A55LOkglQZB7Y+u4GbSOm/pE0lkq6Xph9czurS/MGD197gNJZ6lm8zN/OWDMzL1S+zdhy7N/XdA2foeVLaPGrk46SyVbn186N5dvz7dNnPVI0lkq6dmycXzHhhXzxszc476ks1SzedVfDhgzfd6DtORT+YFTx9qn9w6DcOOoSTs+lXSW/vItxa499y92PkPXpgkUe34GcCYEVySdTNnmKWRqkK42YMekU1SQJ7oeJI3ZAMYRnf61GNib+mYHa4alwN+AaUQfdKT1+wdRvpnAqKSDVBa05VrbybeObcSpgg1XzI8eXcx35tKaD4AgF6Q5XxDkgpa2UaPTmjHIteRzLa35tOajp2ds0JJP7f8RgKAlT0v72PFBkK9nGvym62xpaQmgPX3fw6ClGPTQHRaB7qTDaBixgFGDLHgQODbpFBU8AlwGXJJ0kCouBQ4GjiF6I/4x4Hwau2hlHE8BHwGu792eSzR7WRp/tn02AGcSjRalUHDruFnz2192/L/9X9JJKnnypi8etmH54qP2fMtXU/uJ6OKvH/35NOdb8q3XfWrqnsf/7v+3d+fRcVR3vsC/t5Ze1Gqt1mJLtryB8YKNF1nyAtgDhgQIQxaTMO+FJCTwZgkDDkkmb96ZjDLDvMmQEBwYkjfAHJJMZiA4JECAQALBxoskWza2sWxsvFuy9q219VJV9/3Rbrllt9RSxuqqNt/POTrc6v6177dbttHPt25V8ZK76uzOkkj981+5U3NlZs351EZHfoZth34z7cy7P77Hyd/juifXPjx97Tf+y5M3vcfuLInU/+Lev9LcvpNz7tj4mt1Z4hlBzdtUN6UqFNiMUM9mu+PQZYR7YIicQwJ4DNH7vfwHUrtpPoJoM7UA55sXIiIiIsdhA0PkPE0A7gawDMDPEN1EP1G6AHwPwBUAHgDQO4FzEREREf23sYEhcq49AL4AoAzANwC8g+hKyX9XP6L3dfkKgKkAvononhciIiIix+MeGCLna0H0JpLfR/SeMX8CYCGim/7nItqEJLpppYnoCssJAAcBHAKwG8BWTOyqDhEREdGEYQNDlF4CiN475qUEz2We+zIB9AEYTGEuIiIiopRgA0N0+eg790VERER02eIeGCIiIiIiShtcgSEicjhphJXm/S/O7j29a1Yk2JOlqHpEzyzsLJj3iQPZZeXtducjIiJKJTYwREQO1nHk9yWn3nn0LmOwp+DC5zoP//7jvuL5u6+89Z9e0f1FQTvyERGl2sqH9pQZRvCq2LErbO7c9uNru+zM9FG2fr1UT02pHrrhtaXrjXXfLz9wKecof3D7NUKKotgxGxgiIofqOPL7kuNv/MNfSMvQAUDRvb0uf1GjNCOucKCpTEpL7W+uX3pw01/kz//8T5/WdL9hd2YioolmWJECCLEodhzR9HpEr7pJNjiITapPTB36fqiWqQK4pA2MgJgOIa6MHbOBISJyICPUq51865HPx5qXnJmr/jDr4//4lqp7TQDoaz6YffTVb30+3Nc2NRRomn7stW/fNOeOx163NzUREdHE4yZ+IiIHOr1lY6UZ7ssFgIyCK/dfefv334w1LwCQWTyvZ84dG3+iaO4BAAic3rWqr/lgtl15iYiIUoUNDBGRA3WfrFkeG5eu+PJbiWq8k2b2ZU1bXg0A0jK15veeX5yqfERERHbhKWRERA7T2/BenjHQWQQAroz8ppyZ17WMVFs4/9b93ce33gAA/U3vzwOwOTUpiYiIgPpNd4bXfPGdx2PHvS6/OVr9H8MccL3mD/e+ETtmA0NE5DDdp2qmxsbu3NLTo9XmzFzVoqiuQcsMe8N9bSXSCCtCc1kTn5KIiChq80/WTuiVMHc/tSwCIBI75ilkREQOM9h5qjA2dmdNaRu1WGhS82Z3ANHTyPqa9+dOcDwiIiJbcQWGiMhhzIGurNhYzywIJKvX3Fk94b62UgAY7DiV7S9d1jGR+YiI0t3S++p0eIOTdaH6TKhuiHBElWq/JyfYvLnq0qwmrKl6R+sPKJNVy5UZnQMREZEDqm42Vz+2cvBSzBEZhJCWAAAgAElEQVRv5de3F0pTZBlSZiqqGkYYgdr8N86iquqyW5VnA0NE5DCWGXLHxprbF0pWL3T3UI0Z6XdNVC4ionS3+Kvbprg0sVIiMg1QNQuAgAlIFRaAgS63XL5hR6MwlV21j1d++MfMsfTBdycr0FcMdGO6AOLmAKABpgVZ/sD2Jgm5q+6Hqw+P5de85sH3ctwidGfsWFhyX80PV9QCUlQ8VLtEmnKxYSAPAAQEpCkBFVjec9OAfOiW/VavUn3uNKxLbul9dbrmM740lE3KIzUbV2y+lHNUPFCzDgpmxI7ZwBAROYw0I3psLFQ96WZIRdWGbmBphgbYwBARXahKKsu6a25WgKvlaHVCCEiUSkWWlm+oPunrCr4y5v0dVVVKRc+6G6VUrhm1TgghIKYI4E+XP7jjjCrwUrIVGVekQ5W6Lyd2bCnSs6bqHU9/T83t0sT0EV8oRYYwzUol05yz+ltbf7ntu9de8ht+BruOC1/G1KFsUETGpZ5DCssHKYbm4B4YIiKnUc43JNI0k/49bZmmGhsLTTdGqyUi+qhZv/4FdXlX9acV4Or4xwWkJSCahCKOSaARAsNWKITE9MFc711L76tL/gN5VZVS3n3zHRc2LwLCgpTNsTmEIsLDXyimmlD/bP5fvpM5nvekSiEGu123CXmueRFSCogmQB4RijgmpdU3bBYLuaGg9rmK+2uyEv166YYrMEREDqNqrqH/wVmRQX20WmD4io3q8odHqyUi+qg5OW36KmGaQ6cfQUopVKVOkbKm+rHKoZWPpffV6Yo3dI0QyrU49zOylLJAyYh8DMCvRpujsvvmFRYwe+gBIaU0sccM6tW7n1o2ED+H5jcWSkteB4no393Sys9we24B8MJY35OEmC+h+M4dHdF16+3tj6zsjasQFX9dOxsq1kkpMwFAAH5ouAXA82Odx6m4AkNE5DCq298fG0f62/zJ6s1Q71CNJ6uob7RaIqKPkpVf314oLKMi/jFL139b+4PKdy48bWv3U8siu364apcpzV8CGFrNFsDsyger5440x/L/XZsvIVYMe1Cov9v1+Mq345uX2By1j1buViFfiF/xERLTV2zYMWyFaDQSMtq8SLlv58aVL21/ZHXv8Aohax+v/DAkB/9LQA79P0VKOa18w875Y53HqdjAEBE5jDtnamtsHAq05CWrN4KBaI0QVmbpkvYJjEZElFbMsFwGKUTsWAq5v+775QdGe83uH64+rUhsj3/MElg+Ur0IGkslZNzP1Er9zh9U7BttjurHVjYC5tZhc0iUj/aaC0kFXWVnV7w1Ws3ejWu7oSu/G/5Cc1zzOBEbGCIih8mcsqApNg52n5k6Wm1f88FsM9yfDQCaJ7tdc/u5B4aICNHTtaSiXhU7FhDWQCi0bSyvnXr2TF38ygUkilZ+fXvhhXXr17+gQqjzhh4QUgpTbr2wLpGd2W/tkcDQyomEmLT0wXcnj+W10ReoOzZtEkkv9FL7vcoPIdAyFBEoTPRe0gkbGCIih8m/4oazqp4RAIBwb8u0wa4TvpFq2+tfGTqtwVd01aFU5CMiSgea2yjC8P3eJ+t/tHZMp9lu2nSnKaEO+zvVMpTSC+uOlxQXSksOXf1REeJ07ROVSe/fBQCoqrIg5MH4hxSpXjRHIlJY5kC2b8yXebYgk76XdMIGhojIaYQifZMX7AMAKS31zNYfr0pUZkYG1c5jW1aeO5ST5t0y6ikLREQfJaZmTRn2gIKGcf0CF9RbUC5aHdGhD3tMmqJxPFNYhhw2h6Jgyki18YTQ2uqr5o/5oi06MCyXBWvsKz0OxAaGiMiByq796hahaBEA6DmxfU1T3c/nDCuQhjjy0oY/NQa6iwAgI3/mofwr143rf5xERJcz5dzVt4YY6BjP61VpDttTqCjWRZc6NlV12GOKZo1vH2KGe1i9JZWxXU7ZGt97cXeFhtUryhjncSheRpmIyIG8BVf0Fi781Este19YL6Wlntn+oy92HH7zYEbezNOGMejqa6pfYAx0FgOAqmcEpq/7Py/ZnZmIyEmEJT3xW+stTRnbDSnPG3aVMtOC98ICxbI88TfGlKYY1xxBr3fQFzp/+xkhpGcsr5PCCo1nns0/WRNavqFaxi5oYEmMaR6nYgNDRORQZWs21EkzpLXVv3qbtEx9oO3ogoG2owviazRvTuvMG7/1n5nF83rsyklE5ESWqqoirrswwuGkG97jBRoaTF/J+euoCKGoFxUJaIibw1TUcc1Rj3nGctScf8Aa28/miki+eX84ISW2WwLi3HuQad0DpHV4IqLL3fQbvlWTP+fGD5v2PL9ssP3YLCPYmy1UPax5s7uyppW/X1p5717NkxVJ/isREX20KLBCMm63hNedkfTGwPEK5s93DXSf348vhLxo1cMyrJBQxPnjSMR1Yc1oVvRUu02cfz2Usa3gSNMa1zzr17+gnpLnGzBpXfxe0gkbGCIih/OXLuvwly570+4cRETpxFL0oDDPL1RELGNc+z56uzv8KuJ6HgsXNReqIoJW/LF+8T6Z0WiGJ9NUz/cSirh4joQUZIxnntPF03yIWypShDre0+kchZv4iYiIiOiyIyORzvhjRVjjuveJqojh9crFG+eFKodvjpdawXjmCGrG8DnkGDfnWxjXe1E0K+l7SSdsYIiIiIjosqOr4mz8sZRi5nheLy1tVvyxaRpnL6yxwsqwxyxg9njmUBAZVi8VcdEcCQmRvfyvavPHOo+lKDPij01THds8DsUGhoiIiIguO9WPrewUQnYPPSCt/PKv7Zw6ykuGLP2bumwFMr7hMXRFOX1hXe0TlQHIuFUYiazKB6unj2WOVd/c5pdSGWqSpBDmoPCeGstrAUDRravHUje/qt4lTXlV3EOGrkQuei/phA0MEREREV2WLEu+N/wB84Y1Ve8k2QMuhRYxbpQQQz8nW8Ch6sdWDiaqtlTsGXYs5Q1L76tLesGASFi5AcP2o8sj+7+/qD/Z6+IyLVn9ra25yeoyA72rgLhLQEt5ZKT3kirlD2wvX/7AjpuHvr5eOyP5q85jA0NEREREl6WB3Jx9EuiNHQugsL/bc/v8qvqEV/Fav/4FtWJD7TppyfOnjwlEdCFrR5pD9rkOCCHOr/QIka96w3fMvv91d8IXVFUp5RuqbwTElUO/hrBMS9Grx/XmAC0SUtdX3F+TNVJB5YPVS6Qly+PnQYY63nkuOVVVZkKIRbEvYcmi8byeVyEjIiIiostSfdX88MqHtr9uWOLO2E0cBTDb1xO4p/yB7bt1Had6BsIDHq/fo0qz5LSUS6SUwzbiKxJbqjeu7Ew8A7D7qWWRivtrXoci74KIzgEhZuSqufcs27Bjt2opp/oig/2+7Ay3GJAlVrdcIjB8E76E2Lr70WXtY31fUpqnoIhSSCVHqNY9lQ9W71I060Npil53drYa6ukptoSyyIpvxKK5qnf+c0Vab+AH2MDQJdOZDeB6u1Mk4ANwJZyZDQCmAciBc/OVAFDh3HxA9O+xcgDZdgcZQW64r1Vv3ffiuDaPpkqwu7HAjAw6Nh8AQJpwcj5pRvSB1g+KnJrRDAaypRnOcGq+gbYPi6QZVp2aDwAgLaXj6DvTdHfWmE/vSSUr2Oc1jHCu0z5Dy3K5w71LYAx+AIzx6sATYcejq05VPlj9qinELULK6L1QJLKEUNYaBuBzeQAzcu7h4aQit9X8YOUeJFH7RGXD8q/Vviyl8Qlx7n4rAvALKdZIIaNzDFqQAvF3fYnOIa2auo2rdo7rTSlKszRwRKhYJyFcElhlGcoqAIjeu0YAcvi7EZZ5YOfGVbavvgCAlELEf9rClBd+9KNiA0OXyOG5AH5td4oEsgHcDWC93UFG4EO0QXDiZwdEs7nh3HxA9LzeRwEYdgdJRMLK6m/5AIPtJ8a0cTTVLCOoSzOiNdY++3m7s4xESqk4Op9lertP1qzoOb17md1ZEjHDfW4IRTj1M5RWRLWMkMup+QBASqm27P3lpwXEuH7IShUz0u+VlsxrrH12VvLqlBKAF9IKAXJcF+e65Go2rjhUcX9Nr6XixgtXPxISCFiW+U7dD1YfHuscO39QcWTxV7c9p6vyRghRnKxeAr2KGdmy84nrDo51jnh1T6x8r+L+d0PQXTdJS454Y0sphCmlrKn74aodeNwhv4clhq6gJiAszRs5Mp6Xs4GhS2RFDYBr7U6RwGEATyH6A64TPY7o6sEKu4OMYBaA/QDy7A4yigCA6wDstTtIIgLKu7mzrnPPvOnvXrQ7SyIn336kMtBQd93CL7zwiN1ZRlL3r2v+efF9r37H7hwj2fNvH/vWlPIvvFW85K46u7MkUv/8V+7UXJlZcz618Rm7syTSdug30868++N7nPw9rnty7cPzPvPkY5686T12Z0mk/hf3/pXm9p2cc8fG1+zOEs8Iat6muilVocBmdB/ffMl+XVOGGnWpb4kdq15jTN+X2icqGwD504q/rp1tqdYsIUWpUETmuR/+DUjZb0E0CUU95svuP7y5au24/2HsvX9dfRbAz5bev32WqojZUNRSIU2/hIjOITAgYDWZquuYDIjDu55aERnvHMPf03UH11TVnx7s6FoAVbtCCisbUmRAICKk7LEEjmmQ71dvXNmJjf+dmUY2DzDPSAx9PyIRc9RT4ZY+VDdJmhFf7NiErK/97rVd45mTDQwRERERpY3dG69rAtD0x71ayNrH8SGAD4ceqqpSUFVlXZJw5+x+YtUxAMcmco6YzVXz+wDUnPsCpBQQqVtp2bTpThPAiBc5uJBuRqbFPggphCld2o5kr5FCuOLekcGrkBERERHRR9cENRYpnyMmhc3LH8OyZFlsrMB8f/e/LEu6gibiLgMtIEJsYIiIiIiIKAWkkELE9oQami7HeFEB6Y+NLGn2sIEhIiIiIqIJV/FAbaEQ8ACAVOS+7Y+s7k32mvKv7ZwKKTJix6qiNHMPDBERERERTThv7mBPfyt+BgADhYUJ762zpuodzWjR/IMu4VcVvRDSqIy/+LQ0xAdsYIiIiIiIaMJtrlobBNA8Wk2w21NquXGnCgDSwrA750h5ovaJFQ1sYIiI0oE0RPep2oJwT5Mfqsv0F83t8BZckXTpnYiI6HIgpXVWU8SrAC+jTETkaDIyqB773T9d33OqptIM92fHP+XOKj5dtPiu3xUvvvOobQGJiIgmgIAMQygDUlqtwjSO7Hz82kOxK6yxgSEicqjIYKfr4HNf/nIo0Dw9wdMiFGguO71l41cGWg+9PvPmv3831fmIiCg1dj55YwcAx95w+FKq2bjiJBK91yfOD9nAEBE51OFfb1gfa160jLyWyUs++3rOzNUNZqhPb933q6s7jrx1k7RMvf3Qm7e4c8vaSpZ/8ZDNkYmIiCYcGxgiIgdq3ffizIHWIwsBQPX4O+d97ukfe7KmDMaez5y88F3vpNktZ7Y9+SVAiuY9z31iyuLPHhG617QvNRER0cTjfWCIiByoed8vr4+Nixetfy2+eYmZvOx/Hs4omH0AAMxgIL9h57MLUpmRiIjIDmxgiIgcJtLX6g51nZkNAIrm6ZtS/oWDI9Xmz7l5V2zcc6qWDQwREV322MAQETlM+5Hfl0lpagDgyS09ITSXNVLtpPm3nIBQTAAIdp6elaqMREREdmEDQ0TkMIPtxwtjY0926ag3/NK9eWHNm9UOAJYR9A12nfBNdD4iIiI7sYEhInKYUKB5UmzsyizsTlavebKHavoaD0warZaIiCjdsYEhInIYywi6Y2PVmzOQrF7VPEMb/I1wwD1aLRERUbpjA0NE5DDSDLliY0X3GMnqFVWPxMZWqJ8NDBERXdbYwBAROZgQkGOomvggREREDsEGhojIYYTqDsfGZjioJ6u3zPBQjeL2hSYqFxERkROwgSEichhF8ww1IeZgd0ayetMIemNj3ZsTnKhcRERETsAGhojIYdxZxe2xcbivNSdZvRHsGarxFS/omKhcRERETsAGhojIYbyTZrbGxsGehuLRaiODnS5jMDAJABTN0+/NLeuf6HxERER2YgNDROQwk65cd0oI1QCAYFfDDGmER/y7ur3+9RmQlgoA3rxpR1OVkYiIyC5sYIiIHEbPLAy5c6ceBQDLCGae3fXTeSPVdhx+szw2ziqrrE9FPiIiIjuxgSEicqDiRZ/ZEhs379t0azBw1nthTVPdz+cMtB1dAACqJ6ujdPkXD6QyIxERkR00uwMQEdHFChd9+njrgVf2D7QdWWgGe/MOPvflvyy65jNv5M287rQR6nG1vP/K1V0f/mEdojeBkcWLP/eq0L2m3bmJiIgmGhsYIiKHmvOpxzYdfO4rWaFA03RjsLuwsfqZuxurn7mgSshJcz/2WknFlw7aEpKIiCjFeAoZEZFD6d688MK7n/+3vDnrfqu6MrsveFq6syafmL72oadm3vztrbYEJCIisgFXYIiIHExoLmv2x/9hM6Sxpef07vxQd0OW4vIYvqK5nd68mX125yMiIko1NjBEROlAaDK7rKIdZRXtyYuJiIguXzyFjIiIiIiI0gYbGCIiIiIiShtsYIiIiIiIKG2wgSEiIiIiorTBBoaIiIiIiNIGGxgiIiIiIkobbGCIiIiIiChtCLsDXKABQAmApQD22JyFRiVfBnD7+ePtElgdsS3OyFwAzHNfTqQh+ufQiZ8dEM2mAwjbHWQULgAGAMvuIIkIoehC1QAIR+aDZQophCKE4tQ/I5CWqQpFdW4+KVUhhAVA2p0lEWkailBUQDj09yAkpLRUIRz/PXZ0PkhLCkV14PdYVQEJac2FtHYDwL2AeMbuVJTeeCNLukQqagDcZHeKBN4D8CyAx+0OMoLvAVgC4Aa7g4xgOoBaAEU25xhNE4B1AA7YHSQx5c3c2Wvd09Z+7SW7kyTS+O4T5YHGfdfOveuZH9idZST7nr79O4vufaXK7hwjef8ndz5UvOSudwoWftKR//B25FcPflpzZ2bNvPXhZ+3OkkjXkbemNux45u6rv/j8P9mdZST7nvnTb8/9zI83unKmBOzOksiRX3/tf6mujFOzbn34DbuzxDNDurd1X9nfhgNb0X1iG6QD2ytKT2xg6BLRTAB9dqdIwAIQgjOzAdGVFwvOzTd47r9OzQdE/9U7COdmNIWimro7y5mrWIpuQsBybL5zHJ5PKqrLcGxGoZiA4tjfg0LTIwCkU/PFqLon4tiMQlhCcd73WEhNFcIDCB3OO+mH0hn3wBARERERUdpgA0NERERERGmDDQwREREREaUNNjBERERERJQ22MAQEREREVHaYANDRERERERpgw0MERERERGlDd4HhojI4YKBs97mXT9b1NdyaJYZDGQJRY/ovrzOnFnXH5i8eP2HEJoj7wBPREQ0EdjAEBE5WGPts/Oadv30M5YR8sU/Huw+g97GfRWt+148Puvj//B8ZvG8HrsyEhERpRJPISMicqimup/Paax5+vOx5sWVWdCQNXXpdv/kBXWK5ukDgFBP48wjLz/0lWDgrNfetERERKnBFRgiIgeK9LZ4Gmue+RykVAAhCxd96lfT1359Z+x5I9ilf7Dpq3820HF8njHYXXjit39/29zPPr3JzsxERESpwBUYIiIHOrH5sWstI5QBAP7Sa2rimxcA0Dy5kTmffOx51eXrBoDe5volPadqCuzISkRElEpsYIiIHKi3cc+S6EjIqav+fEuiGj2zMJQ9Y+UOAICUSsv+X12TsoBEREQ2YQNDROQw3cffLTKDvXkA4Mqc1JA5eWHXSLUFV99+IDYeaD40LxX5iIiI7MQGhojIYQIN+6bExp7cstOj1WaXLuuIbegPD3QWycigOtH5iIiI7MQGhojIYYLdpwpjY5e/sDNZvZ6R0wEAkJba07gnfwKjERER2Y4NDBGRw5iDAX9s7PYXJb2/i+rODMTG4Z4m/2i1RERE6Y4NDBGRw1hmyBUbK7onkqxeqO5wbBwJ9blGqyUiIkp3bGCIiBxGmoYeGwtVN5PVK6o6VGNFBtnAEBHRZY0NDBGRwwhVG1p1kWYk6aZ8yzSHahTdGx6tloiIKN2xgSEichgl7pQwMzyQdEVFxp1yprsz2cAQEdFljQ0MEZHDqN6s3tg43NeWlazeDPUN1biyJ/eOVktERJTu2MAQETmMJ6esNTYO97bkJauPDHRHL50sFDO7ZEnHBEYjIiKyHRsYIiKHySpdfDY2DnadLhuttqehLt8ygpkA4MrIaxG6N+mmfyIionTGBoaIyGFyZq5u0bxZ7QAQ7msv6WvanztSbdv7r1wdG2cUzz+YinxERER2YgNDRORAWSWL34uOpDiz7f+tSVQT6Wt195zYsQIAIIRVtPCT76UqHxERkV3YwBAROVDZ9Ru2KZp7AAB6G9+rOPn2dyvjn48MdroO/eqBPzPD/TkA4C+evzu7rKLdjqxERESppNkdgIiILqb7i4IlK+997szWJ78EKZXW91/+ZPfxbRXunGmnLTPoHmw/fqVlhHwAoGXktMz4+HdeszszERFRKrCBISJyqMlL/scRWOZPG2ueXW8Zwcxwf8eUcH/HlPgaT07p0Vm3PvwLT9aUQbtyEhERpRIbGCIiB5u87O4PJs25+XuNu39+dX9z/SxjsDtHqO6QnpHXlX/F2vcLF95xHEKTduckIiJKFTYwREQOp/uLgtPXPLQLwC67sxAREdmNm/iJiIiIiChtsIEhIiIiIqK0wQaGiIiIiIjSBhsYIiIiIiJKG2xgiIiIiIgobbCBISIiIiKitCHsDnCBBgAlAJYC2GNzFhqVfBnA7eeP6waA8pN2pRnFlQC6AbTaHWQEJQA8AI7ZHWQEbgAzARyyO8go5gI4CcCZN3IUyizNnSkV1dVtd5REzMigT0rLp7l8Tv0zgkiwp1j3ZDfbnWMkRqi3UNEz+hVF7bc7SyJGsDdX0XRV0TztdmdJxLIibisSzNHc/ha7s4zECAaKFLe/XRHCtDtLImZksEBaRlhz+3vszhJPQhGQk4qkNQgzMgPSfBsA7gXEM3Zno/TG+8DQJZLfBuA5u1Mk8DUAewFssTvICO4AMAXO/OwAIB/AV+HcfADwbQBvADhrd5BEBMSfe/JnKP7iBe/bnSWR3rP7poUDLdPzr7ppv91ZRtKy94Wi/Ktudmy+1vdfut5fsvCMJ7u0we4siXQeeXuh6s50Z5dVOPIzDAUac3tO1y128ve4Zd+LN+ZdueaQqnqCdmdJpOv41hUQSlfujFUf2J0lnpSqFu6dVxQZOIr+lh7wjrt0qbCBoUtkxhkAD9udIoHPI/rD7aN2BxlBIYByOPOzA4BZAO6Dc/MBwDcBPIVoo+pA4iZPdol76rVffdvuJImcfPuRSiPYU+DUfADQsu+XNzo5X9vBV8v9UxbVFy+5q87uLIkEGvfma67MLKd+hm2HfjMt0LBvgVPzAUDL/hfXFi/8zDZP3nRHrXDEBM7uu0pz+0467TM0gpq3qW7Kn0BsBrDZ5jR0OeEeGCIiIiIiShtsYIiIiIiIKG2wgSEiIiIiorTBBoaIiIiIiNIGGxgiIiIiIkobbGCIiIiIiCht8DLKREQO131sS3Hz3l8uH+g4PssK9/uFUE3Nm93hL118YOqK++p0f5Ej701BREQ0EdjAEBE52PE3qq5rP/z7j0FaavzjZmQgK3SwaUbX8a2rpv/JN36ef+W6RrsyEhERpRIbGCIihzr59ncr2z9481YAEEIxM4rm7vXmz2yAGdYCDXuvDve1TDODvXknfvd/73H7Cv41s+SaLrszExERTTQ2MEREDtTXfDC7rf7V2wBAKKpRdv2Gfy9c9OnjQwXS2vrBrx+4LXC6brVlBDOPv/0vdyy8+7lnbQtMRESUItzET0TkQA3bnlwjLVMHgNxZ1/1hWPMCAEKRc25/9DUtI68ZAIKdJ6/qOPTGVBuiEhERpRQbGCIip5GG6Gs5uBCIrr6Urvrz6kRlQnNZebPXbo8dtx367aJURSQiIrILGxgiIofpOPx2iRUJZgKAy1982pMzbWCk2oKrP/FBbDzQdnhuKvIRERHZiQ0MEZHD9DYfmBwbe3Knnhmt1lcwJ6C6fN0AYAwG8o1gQJ/ofERERHZiA0NE5DCh7jOFsbE7syjplcU0b9a5GikCZ3ZPmrhkRERE9mMDQ0TkMFaoPyM21n35vcnqVbd/qCbc1+abqFxEREROwAaGiMhhTCPsio0V3RtJVi8UfajGDPe6RqslIiJKd2xgiIicxjKG7tElVNVKVq6oqhkbSyPC+3sREdFljQ0MEZHDCFUPx8bSjKjJ6i0zMrRxX3VnhEerJSIiSndsYIiIHEbR3UNNiBHqcyerl5Hzp5ypuo8NDBERXdbYwBAROYzuzeuJjSO9rdnJ6o1gT05s7M2f2T1RuYiIiJyADQwRkcN48spaY+NQb1PBqMXSEJFgTz4ACEWN+EuuTnrZZSIionTGBoaIyGFyZqwcunnlYFdD2Wi1nUe3Fksz4gEAV2ZhA4QmJzofERGRndjAEBE5TObkhV0uX/5ZADAGOos6jvxhyki17fW/uSY29pdcU5+KfERERHZiA0NE5EA5M1bujI2bav99XaKa/rbDWYEzuysAQChaZPKSu/amKh8REZFd2MAQETnQ1Os37FQ9WR0AMNBxfN4HL95/uxHsGrpcck9DXf6HLz10j2WGvQCQPb1iq7fgil678hIREaWKnTc8ywewHMBvk9TNBFAMYMeEJyIicghV95qz1v3tzz58/e/+QpoRT+BM3aq9T9+xRPflN0sz4goPdEyGlAoAeHJKj17x8X98y+7MREREqWDnCowK4BUAuwDcBsAX95wCYAmAnwP4AEB5ytMREdksZ9b1zVfc+vCPXL5JjQBgmWFvKNA0I9zfXhJtXoT0ly6pnve5f/+J0L2m3XmJiIhSwc4VmFYAuwFUINqoBAFMOvfcGwCsc8dtAP7DjoBERHbLmXldy4joYxUAAAIVSURBVDUzVj/RVv/atJ5TtbMig11ZQtEMT9bkjoJFn6z3FcwJ2J2RiIgolexsYADgMQBPA8g+9xWTHzc+BKAzlaGIiBxFKLJgwSdOFSz4xCm7oxAREdnN7k38LwMYHOX5XkSbHCIiIiIiItsbmCCAzaM8P4Dkm/yJiIiIiOgjwu4GBgAeB9AxwnO/AxBOYRYiIiIiInIwJzQw2xFdablQO6LNDREREREREQBnNDAA8DyACy8B2g+gzoYsRERERETkUHZfhSzmRwC+AKDw3LEJ4Gf2xaE/ghuQZXaHuNgVOlCcC2x1YDYAWOoH+tzAYYfm+04J8BMBnHBoPgCYoQC3TQae6LI7SWIL3Ga4xN3X5M+1O0kiRrA0w7JaFafmi5oGR+ezyhSjf3KGUzNKs8xlGV7NqfnCgcl+yKnCqfkAALJMDLTnZhshv1P+4XcYaZRqlpLlcdpnaEYUjxlWYUV8iN7+j+jSEHYHiHMAwPxz404A1wA4Y18cGp18GcDtdqcgIiIi51PUv4dlfgcA7gXEM3bnofTmpH9JeBKAPDduA5sXIiIiIiK6gJMamP9EdON+EMCjNmeh5L4IoAR4ZYvdQYiIiMjZLNlXBaAEwH/ZHIUuA046hQwA3gJQDmAKopv4yfHk3wD4rt0piIiIyNHmA+Kg3SHo8uCUTfwxjwD4Eti8pJNfAzhqdwgiIiJyNG4NoEvm/wNSbNP5CS6+7QAAAABJRU5ErkJggg==" + "g27851.png": { + "image/png": "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" } }, "cell_type": "markdown", - "id": "44639340", + "id": "0050b6c4", "metadata": {}, "source": [ "
\n", - "\n", - "
\n" + "\n", + "" ] }, { @@ -625,113 +568,26 @@ "id": "cf189776", "metadata": {}, "source": [ - "### Implementation\n", + "### Parallel implementation\n", "\n", - "The parallel implementation of this method is closely related to the Floyd's algorithm. But there are some differences.\n", "\n", "At iteration $k$,\n", "\n", - "1. The CPU owning row $k$ does the loop over $t$ to update row $k$\n", - "2. This CPU sends the " - ] - }, - { - "cell_type": "markdown", - "id": "9c553ada", - "metadata": {}, - "source": [ - "The computation of the complexity of computation and communication is left as an exercise.\n" - ] - }, - { - "cell_type": "markdown", - "id": "6b17aee4", - "metadata": {}, - "source": [ - "1. **Block-wise row partitioning**: Each processor gets a block of subsequent rows. \n", - "2. **Cyclic row partitioning**: The rows are alternately assigned to different processors." - ] - }, - { - "attachments": { - "fig-asp-1d-partition.png": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABL4AAAI0CAYAAAATGeCIAAAACXBIWXMAAB7CAAAewgFu0HU+AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzs3XmcXFWZ//HvU1XdnU5nIyEhCYRVGBYBWRwQERFk2JRVUBxEXAYXXEcUB3QE11FREcF12BQFQWRRGJBNVFBQdhAwkIXsezq9d1Xd5/fHrfzsVN1Oeq17cvN5v155Kae2p+69ffv09557jrm7AGy+zOxsSVdXNX/N3S+oYw3Nkjqrmue4+y71qmFzYmbtklr6NLW5+4S06gEAAEA2mdmnJX2jqvk8d/9WGvUAaSikXQC2XGZ2uqRJfZpud/elI/Teh2tgx3e7pF5JayV1S+p097UjUQMAAACyzcxOkbR1n6Y73X3hCL33oZLGDOCpHZJ6FPdnexT3Z9eMRA3YcpnZREn/lfDQbe7+53rXAwwHwRdSYWY5SVdpw1Evz0kakeBL0i3aMFQbMDNbJ+kFSX+X9Lyk+yQ97gyPBAAAwIZ+KGlqn/8+RtKIBF+SfiFp1lBeaGZtkl7UP/uz90v6K/1ZDMJ4SecntC+URPCFzQrBF9JyqDYMvUIyQdK/Vv6tt8DMbpf0fXf/ezplAQAAIBRmtr82DL1CMl7SgZV/6y02s99I+oG7P5VOWQBQf7m0C8CWx8yaJH0t7ToGaZakcyU9Y2a/NLM90y4IAAAA6TCzBtXOmxS6mZI+IOkJM7vFzPZNuyAAqAeCL9SVmc2U9FtJh6RdyxDlJJ0u6XEz+5SZWdoFAQAAoH7MbKqkX0s6Mu1ahsgknSTpb2Z2oZnl0y4IAEYTtzpi1JjZBMWTfU6TtI+kNyn+JTuQSTpHw/skJQ3rbpHUKGmypB0k7SLp1ZIOUv8/I02SLpH0ejM7w917Rr5cAAAApMnMxkuaImkbxf3DwyWdrPSm7PiokudXGqu4f7qV/tmf3UvSwZIa+nmvgqQvSzrUzE519+oVurFl65D044T25+pdCDBcBF8YFWY2W9Kr0q6jyovu/thAn1xZyeTNkj6k/q/onSzpDjN7q7t3jUCNAAAACICZPSHpNWnXUWX2IPuz4xX3Y89RPPF+0t0Kx0j6nZkd6+5tI1MmNneVlUE/kHYdwEjgVkeMls3+2HL3Vne/2d3fLOm1ild3THKkpCu57REAACBTstCfbXP3W939OEn7Sbqzn6e+XtJ1lZXXASBTOLEBA+Duf5N0lKSPSColPOUMSZ+oa1EAAADAALn7U+5+vOLpP5Km6ThB0oX1rQoARh+3OmK03KB4fq/+nKR47q/Nhru7pCvMbK7iCU2bqp7yZTO71d3n1r+6gTOzaZK2U7yyT0HSMknz3H1JqoX1ozLh6s6Kj5epklzSCklLFdcd1bGOrSv/xkhaK2k5twQAAJBZN0v6y0YeP17StnWqZcS4+1WV/uxvFc8N1tfnzOxX7v58CqVtkpmNUdwXmyqpLGm1pBVZnG/XzJr1z75nJr+rmTXqn98xr39+R+abw4gi+MKocPeNXi0ys320mQVf67n7nWb2QUlXVz00VtK3JJ1S/6o2rhJ2fVjxyLTd+nnO3yT9QtIP3L27juUl1VJQHI6erHjeicn9PHWZmd2hOIi8sxJOjmQdhyju1B6t+PaAmlGyZjZPcaf4Pkm3uPuqkaxhE/Vto3ikYfVttt2SvkGnAQCAoXP3L27scTO7R5th8CVJ7v6AmZ0t6ZfasB/RKOm7kv4tjbqqVYKuExTXc7Tii7fVSmb2tOJJ/++QdK+7FxPe61TF05f09aK7V/fph1Ln8ZLeUNX8F3e/dRDv0awNv2vSsVXs811/K+n+pO86UszsI6rd5l9z99Yhvl9e8Xc7VvH3TPq7JDKz5yU9Iun/FPfx6dNiWAi+gCFw92vM7C2STq166EQz+xd3fzGNuqqZ2ThJn5J0nqRxm3j6gZV/55jZe909acWgUWdmR0u6XANbHGEbSe+t/HvSzD7g7o+OQA2vl/QVSW8cwNN3rPx7h6QfmNndkr7r7vcMt46NMbOtJd2reIWpvroknUQHAQAAbIy731QJbN5d9dBRZra/uz+eRl2SZGYNivt3n1Ny2NVXQdL+lX/nSlptZtcp7o/N6fO8LknnV722s3LHxpph1JqTdJniOxT66m9xrOrXNyq+/fRCbTpIbZB0QOXfRyStMrOfSbpslO46ebfivw/6ulzSoIKvylzIp0r6oqQ9NvH0nOIVSfdSfAx0mNmvJF3q7k8O5nOB9ZjjCxi6/5RUfYUlJ+ljKdRSw8wOlvS0pIu06dCrr90l3W9mR4xGXRtjZp9RfGVnKCuCvkbSn8zsXcP4/LyZXSrpTxpY6FWtoHiE2O/M7KKh1rEpZraVpHuUHHqd6O6/G63PBgAAmXK+4v5DtY/Xu5D1zGxbxaPpf6hNh15JJivuj//DzPbt036XpJernjtW0tlD+Iy+jlFt6PWcpAc29UIzm6V4ZNP3NbTRg1MUj/6fbWbV/cIgmNkExaPTbtKmQ68kLYoDuCfM7OSRrA1bDoIvYIjc/RXFt9hVOymAFR5PlvRHSTsN8fVjJN1mZnVbwtvMviHp60peZluK5zZYqnhOsv5uaWyQdK2ZDXqhgcpy37dr5Dp6LSP0Phsws4mS7lbt8uqdkk4Y7ZFmAAAgO9x9meKpLqq9tTL1RF2Z2f6SHlU8emu48pKa1/9HZV7YHyY874PD7Lufm9B2+aam4DCzAxWHXiPR384r7r8Hxcx2kPSQpONG6C0HczEf+P8IvoDh+XlC20yNzC/r4dhdtbcyr5V0naTPSnqXpLMq//9+xaFStXGSflKPZa3N7CxJn054qFvSpZJeJ6nR3We4+3TFAdfhkn6i2lU2TdK3zOyoQXx+QdKvlPxLuaz4CtW/S9pT8VXEqZL2lnS64rnelg/0s4ajcuvqnaqdn2J96HVvPeoAAACZktSf3UrS6+tZhJntJul3ivvS1ZZL+rbieaF2kjRB8WiwgxQHT3creaXKalepdoTbbpLePMSad1Y84quvtZJ+tonX7a74u85IeHiZ4nmDj1I8ncb673qwpI9WXhf8BPdmNkXJdyhIUrukHyue02w3xd9xhuJbON+jeGGJ9vpUii0Bc3wBw/N7xbc7NlS1HyzpsbpXk+yvkr6qeGLI3oTHv14ZBn6dan8xHSjp/Yp/MY0KM9tJ0vcSHnpa0inuXj0kXe5elvSgpAfN7PuSbpW0Q5+n5CRdY2b7DHCy+c8peRLXRyS9392fTXhspaRnJd1UmYfi3xUHif8ygM8bNDMbq3iY+CFVD3VKequ73z8anwsAADLvIUkdqh2tfrDi/taoq8xz9UvFt+5Vu0zSfydMqN4maZHiEWLfryz685+SPiRpfNLnuPtqM7te8dxRfX1YcUgzWB9S7WCSq9y9o78XmFmTpBsVh4vVLpX0BXdfV9W+/rs+IulyM5uueB7fDyrcUVBXSto1of1Xkj7u7our2tsU393xuOJ+/HjF++U/tZkuioZwMOILGAZ3b5OUNJH9nvWuJcFixZOc/6u739pP6CVJcvenJB0hKWlSzNGe4+Griq/y9PWCpCOTQq9qlUkuD5e0pOqhmYonCd0oM3uVpAsSHvqdpCP6Cb2qayi6+zWK9/snlTxXxpBVVjS6TbXzjnVIeguhFwAAGKpKH/GZhIfq2Z/9mJJv+fuku398IKsIuvsydz9f8XxbN27kqVcktL2lMt/WgFVWYXxPVXOkeL6ujfmk4jsH+nJJH3P3TyaEXjXcfam7f1rSLopHRwXFzE6UdGLCQ5dLOj0h9Krh7m3u/nXFI/y+q3jbAkNC8AUM3+yEtqSleevpAUmvdvfbBvoCd1+h+KpVtT0r8y2MuMrkpdUrY0aKR1mtHOj7uPs8JS8q8N7K1aKN+ZxqR+wtlPT2wa6M6O6Ru18qaT/FV+SGrXIF9GbVDsHvkHS8u29y4lQAAIBNSOrPJo3WGXGVAOmzCQ9dU+lXDYq7r3T3t0t6u6Sakf+V1SqrVy8vSDpnkB/1DtWOULtzYxduzaxF0mcSHrrS3ZPugNgod1/u7m+T9E5JQ16ZchRcnND2R8UjvTY691k1d+9090+o/4v0wCYRfAHDtyyhbVLdq9jQX4ayLLO7363kWzTfNvySEp2j2tDpN+7+0GDfyN1/pfi2zr4mKp7PLJGZTVLcKar2CXdfO9ga+tTyYqWeYancQvlL1c491i7pOHevy+0HAAAg85L6s0m34o2GU1UbIK1VvFrhkLn7je6eFOhJyaOy3l+54DhQH05o21R4dZpqt+tqxbctDpm7Xz+QOyXqobKy/L5VzesvbA951Ja7P+jufxpWcdhiEXwBw5c08eKmRhmFLGmlygNG6bOS5tW6bhjvl/TajU1yf7hqV8BZovi2wlSZWV7StZJOqnqoQ/FE9n+of1UAACCjkuakqld/9tiEtp8P5PbGYbhRtWHfdEmnDOTFlXDnwKrmf2jT84QlfdefDeT2xs1I9WT/knSPu/+j7pUAFQRfwPAlrYi4OS8ckbQy4Egss7yByrxV+1U1u+JVeYbqjoS2QzayRHX1nFmS9Et3r14psq4qK2leI+mMqofaJB3D7Y0AAGCEJfV96tWfPSyh7YbR/MDKvGZXJjyUNO1HkqTnXTaA2/jq/l1TkPQdr697FUAfBF/A8FWvgCNJm/NVmxcS2qZVliQeSa+R1FTVNreyYMBQzVEcDvU1TfGkmEkOTWh7dBifP2yVkO4nks6seqhN0rEM8QYAAKMglf5sZXXv7aqaS4pX9httP1LtBezDzKx6lfMNmNlUSadXNa+T9NNNvG5XxaPK+uqV9MSmS908VKbpODjhoerpSIC6IvgChi9p/oPRHJo9qipDrVckPDTS8zzMTGhLCt0GrHKVLWmVzW37eUl1R0uSnhpODcNRCb2uUO0S2+sUj/Qa9NxnAAAAA5BWfzapL/aPwS4wNBTu/oqk3yQ8lDR3V1/vVe1UGdcM4OJt0nd9wd17NvG6zckUSc1Vbd0aZh8fGC6CL2D4dk5oe6nuVYyspI7OhBH+jNHqYCVNSt9faDc5oa1m9Z86+rZqh863Kw69Hk6hHgAAsGXYJaGtv4nhR1LSHQUDXtl7BFyR0PYuM0vs91amo/hAVbMrebL8aml/13pI+o6rhzOpPTASCL6AYaj88tsj4aFn613LCKvHhP1JYdRwbnPc2HvUfJaZjZOUtHJPKqP1zOx/lLx6UbNqh8UDAACMpD0T2p6rw+cm9QfrOWXIfaodjTROtVNOrHe8aqfQuMvdk+44qJb2d62HLeE7YjNE8AUMz2skTUpof6TehYywfEJb1wh/Rn8Tzg9X0qSiSZ/V3/lvU5OSjobxks7v57G8pOvN7Ig61gMAALYQZrabkqegqEd/NqmPVre+WGWajB8kPNTfJPfnJrRdPsCPS/W71klS/zpr3xGbIYIvYHhOSmhbqpQnSB8BExPaRnoo9pqEtpEYVZY0ND3ps9okFQf4+nqrnuuhSdKtZvbaNIoBAACZltSfXSvpwTp89uqEtqR+6Gi6VrV3O7zazDZYnbAyOf2/VT1vtqS7Bvg5IXzX0ZY0ZUjWviM2QwRfwBBVVi15T8JDt2TgPvakYcojPfdVUhiVNHpusJLeo+azKlf4kjogI7165WC44tsdT1S8yk9f4yXdaWZJtyIAAAAMWmXajvcnPPQbd0+6QDjSkvpiSXOwjhp3b5V0XcJD1ZPcf0i1o7auGES/P/XvWgdJ33GrynEGpIYDEBi6D6t2dRbXwIc7B8nMZql25NU6jfz9+UsT2pLmSxuwyi/Vf0l4aEk/L0kaxbbvcGoYhrKk/3D377r73ZLeLam6I7W1pLvNbIe6VwcAALLoPZJ2TWi/rE6fn9QX+xczq141cbQlTU5/splNlyQzGyvp7KrH2yVdM4jPSFo1fQ8zS5pzdnO1WrX912YlH2NA3RB8AUNgZrtIujjhod+6+9/rXc8I2y+h7fHKCKmR9LhqbzXcwcz6W4FxIHZRbWi3Sv2vsvlMQlsatxNGks509yvXN7j7DZI+nvDc7ST9zsym1as4AACQPWa2naSvJTz0gLv/rU5lzJbUXdXWoHge3bpx92ck/aGquVH/HA33TtXeEfHTymixgfqHakf0N0naZxDvETR371H8PasxXQdSRfAFDFIlmLlZtfer90r6TP0rGnEnJLTdO9If4u5dkp6oajbFq+UM1VsS2v68kdDu4YS201IYjt1RCbo24O6XS/piwvN3k3SXmTFnAgAAGDQzGy/pV5KmVj1UlvSpetVRuZ3yrwkPvb1eNfRxRULbOWZWUO2k9oO+y6MSCiUFiml819GU1L/O2nfEZobgCxgEM9tW8bLHSbfDfcPdq5dD3qxUOkGnVzW7pF+P0kfel9B21jDeL+m1GwvtfqPalWa21/DCtxHl7l9Q8mpD+0m63cya61wSAADYjJnZNpJ+J+mghIe/5+7VFyZH220Jbe+q9Evr6RZJi6vaZikeFVc9Au1ed39+CJ+R9F3PMrOWIbxXqJK+47FmtlPdKwEqCL6AAbDY2yU9qeRbAf+o5JE5m5uvqPZWwbuH+It9IH6k+MpiX0eZ2VGDfSMze6dqOyXtilfqSeTu85Qcvl06nA6Ime1kZqcO9fUJPiLpxoT2wyTdWFloAQAAoF+V/uxJivuzByc85a+S/qu+VUmKJ5avvgVwipJvwxwwMzuxshLjgFRGn/044aHzEtq+N8SyrpLUUdU2TXEffMjM7JTKVCwh+D/Vzq+bV/I8agNmZgeb2aHDeQ9suQi+gI0ws4ZKB+EJSTconly82lxJp9Vp5ZtRY2anqXYYtyR9e7Q+093nK/mq0A/XTyY6EGa2s5LrvNbd127i5V9PaNtZ0k8HO9momeXN7BzFx0tSh3JIKqsFvUvJo9feIukqVssBAABJKv2T4yU9onhUU1Ifa5GkU929er6tUefuy5Q8SfyHzCxpBfWNMrOtzewnkm7V4Ffr/olq56CtNkfSHYOtS5LcfaXiC7/VPmpm7xrs+5nZVDO7UvE0LMOZJ3fEVP4mSuqXH2NmXxrs+5lZi5l9WfFAA0aNYUj4QwmoMLOcmc0ys8PN7Bwzu1Hx6iu3qP+V/l6QdFjlF3ZIjjazYwYShphZo5l9VtL1qj0n3KFRmN+ryoWSOqvadpZ030Cu0pnZvpIekLRN1UMrJH15U69393uVHL6dIunOgVw9qxw7b5H0mOLOzIjPveXuvZJOVvI8GGdKunSkPxMAAGxeKqO6tjWzw8zsfWZ2vaTlkn6r/icYn6u4P7ugboXW+oLiBYn6ykm60sy+VFlVcaPMbKKZfVrxhPnv39Tzk7j7YsV9/435fuWi5FBdImlNVVtO0jVmdtFAprGofNfzFX/X9w6jltFyuaQXE9o/Z2ZXmtkmA0kzazKz9yn+e+tCSYURrhFbEA4ejAoze4ekCRt5SnVIIUknmNleG3nNjQMYvbMxN5pZ0lWsFsWrtkxSPLn6QN0h6ezKlZvQ7K94mPErZnaLpN9Lek7xktEdiq9+7SDp3xTPi5UU7iyX9L5RWM1xA+7+gpmdp9rhz3tKetrMrpB0vbs/tv6BSqB3kOJRUP+h5HPZ+9196QDLOEfSAYpXTOzrSEl/N7MbFHcYn1I8dNsVTwb7aklvVBySjfoVKHdvN7PjFF/x2r3q4Y+a2Wp3v2i06wAAYEtgZm+TNHkjT9k2oe1YM9thI6+5xd1XDKOsq82sK6F9rOIVAgfbn71P0rvcvfrWtLpy96Vm9n7FI5f6Xog1SZ+TdLaZ/VzSXZJeVtxPHat4btZ9JR2reBT8uBEo5wrVznm7Xofi2xWHzN2XVO4QuFEb7quc4gDwvVXfdYXiv1dmKZ7W41jF89GOxHcdFe7ebWb/rnilzOrQ8r2STjaz6xT/vfK84v3ZIGmG4v35ZkknKfluG2DQbJT/psUWysxeVjxqZyTtOdC5psxsjeJf/KNhmaSLJf1wtEOhgTCzsyVdPcJv2y7pLe7+4ABraFbtqK057j6guQbMzBRP4P6BjTytW/G2N8XBadNGnvtVd79wIJ/dp4a9FI9uG/Atlptwibt/up/PalfcgVmvzd03FhRXv357SQ+pNqiTpI+5+1DnnQAAABVm9pSkfUb4bf/V3ZNGbyd9/iuKw47RsFLSVyV9d5ijl0aUmX1I8Wihkboz6XXu/pch1PG0pL0THvqRu39w+GVJZvZRSd/V4ILKjXmtu9esGlkZBfeNqubz3P1bm3pDM/urpAOrmme5+8KBFFS5xfZXksYM5PkDcJa7/2yE3gtbEG51BAZuieLlnXd29x+EEHqNklWSjhxo6DUSPPZBbfzWxDGKR6ltr/5Dr0jSBYMNvSo1PCfpECUvMz0UwxmduFHu/oqko1V7S4AUT8x/5mh9NgAA2KytkHSB4v7sd0IKvSTJ3X8g6TSNTD+qV7UTyQ/UFf20Xz7E96tRuVD5dkmtI/B2Paq9CJ06d79D8eitkbiNNtLIbCtsgQi+gP4VFd8e+E1Jb1B8dePb7h7cL5UE1yi+FXOw4dxvJB3g7o+OeEUD4O6fV3zb4FB+OT4v6Qh3H/IKQO4+V3H49UHF810MVrfiudIOdvdhrc6zKe7+d8VD+qs7dDnFk92/dTQ/HwAAbBZKiudI+o6kN0ma4e5fc/e2dMvqn7v/WtJeiucvHUq/e4ni1dZ3dPdnhljGvIS2B9z92SG+XyJ3v0nxd71MUtItrJuyWPGdKDtW+obBcfeHFI+eS5rHbSDWKt4+/+Lut49kbdhycKsjRoWZfUUjf0/2RQOdf8DMvqPa+8mTdCq+QtKquGOwVtJCxRNFznP30hBrrRsze52ks6uaL3P358zs1ZLerXhS9P5uO+yQdKeka9z9ziHW0KDaK2ArhzLyqvJ+jZLOkHSipKPU/xwGayTdrXg+iFvcvTyUz+unhoLiuQWOVDyP1x79PHWBpL8oDhpvdfdNXokys8u04ai1bnf/+BDrfLPiK6PVuiR9PuSOLQAAITOz/1byPF7D8TV3nzfAz/8fDWylvvX92XXasD/7kqS5m/PK42Y2VdI7FPfFDlM8x2q1kqRnJT2suE/44HD7hGZ2h6TjqppPcfdNTXw/nM+cpg2/a9LfUuu/658Uf9c/bGrUnpn9m6RTq5p/5e73DKCmCxTfcdHXZ929enL+ATGzcYpHuR2u+Hsm3crriifG/4vihQbudveeoXwesB7BF7CFMLNtFE8YP0XSeMVD3RdJesHdh3KFqS7MrEnSbpKmKZ5/yxVfyVsu6cV6hZNmNkbxtpuiOLRqVRzura7H5wMAAGzpzGyC4kBoiqSypNWSlrp70gJWQ/2MPRTf9dF37q35knYZyYusA6hjguKgb7LiwGuNRvi7ps3MWhTvy60l5fXP/TnUW1SBRARfAAAAAABIMrOfSHp/VfP57l49QTyAzQTBFwAAAABgi1e5tXK+pOY+zV2K5/odyvxUAALA5PYAAAAAAEjnasPQS5J+TugFbN4Y8QUAAAAA2KJV5pWdp3hO2b5e4+5P1b8iACOFEV8AAAAAgC3dWaoNvf5A6AVs/gi+AAAAAABbLDMzSZ9IeOh79a4FwMjjVkcAAAAAwBbLzI6VdGdV82JJO7p7MYWSAIwgRnwBAAAAALZk/5nQdgWhF5ANjPgCAAAAAGyRzOzVkp6WZH2aeyRt7+7L06kKwEgqpF0AAAAAAAApKUl6e1XbSkIvIDsY8QUAAAAAAIBMYo4vAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmUTwBQAAAAAAgEwi+AIAAAAAAEAmEXwBAAAAAAAgkwi+AAAAAAAAkEkEXwAAAAAAAMgkgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJhfX/x0wflrR9irX0NVGEcgAAhOYJd/0w7SIAM71L0l5p11ExXn361AAAIAgvu+sbkmTuLkky08OSXpdmVQAAIGi/dtepaRcBmOnXkk5Ouw4AABCsh931ekkqmOkd0oOzzHY6wD2UAV8AACA0lnv2WLP8h6Q9FrvrtrTrwZbHTCdJL063XPkYj/ZMuxwAABAos/kHms37tPTGBSZVhnwBAAAMzDJ3TU+7CGx5zLRM0rS06wAAAJuPmvkImlqkxjFplLJx7avnadzkHdMuo18daxd687iplis0pV1Kou725crlG9XYPCntUhKVip3q7VzrYyfOtLRr6U/4x+AiH9My2fINzWmXkqinY6WknDe1TA5yH0flXnW1LVPLpFlpl9Kv9jXzNW7SLMnCnAKxs3WxNzZPtEJjS9qlJOrtWqOoXPIx46YGeQzKXe1rXtG4yTukXUmNnk6ptyvtKoBajc1S09i0q6jVvnq+xm21vWRhnm46Wxd5Y/NWVmgMcONJ6ulcLXf3MS1TgtyAHpXU2bpYLVuFe7dM+5r5apm4nSyXT7uURJ2tS7xxzHgrNI1Lu5REvV2tKpd6vHn8tCCPQalyngmwz7Bex5oF3jxhuuXyDWmXkqirbakKDWPVMGZC2qUkKvW0q7en3cdOmB7wMRjm38e9XXHfta+aEV8HnSjtfXgdqxqgn1042d/1ldXB7vQbv7Jb8Yizrm/YetYBaZeS6P6fvkNTttsv2veI84P8i3nB83fq8bsuLp34yUeCnRz2pxds5Wd9ZbWF2om9+Zv7FF934ncaZu52ZNqlJHr45o8oX2gqHXTit4Lcx6uXPK37rj6tfNoFL4bZQ5T0889vE512wYu5UAPs2y49uLjvEZ9p2HGfU9IuJdHjd1+stlVzim9857VB9sBKxS7dcPGs6MwvrwzuPP3IbdIzv9+giRFfSEX1iK+93yQddEKKBfXjus9tHb3jCwtyhUAvRt3yrf03V+wPAAAgAElEQVR7Dzz2S42z9jw+7VISPfqbz6jU01485G3fD/J83b5mvn57+eHROz4/N7jz9Xq/+MLM8snnPZ5vHh/mqfo333tDac/Xf6iwy/7vTLuURM/cf4mWL3i0eOS7bwzyGFQU6br/nuZnfnllmH+YSLrhSzuWjvnAXYVJ03ZPu5REd//vW6NZux+T2/PQc9MuJdFLj/1csx+9unjsh+4N8xhUuBnNMw9Ij9y+YVuwJ2sAAAAAAABgOAi+AAAAAAAAkEkEXwAAAAAAAMgkgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmUTwBQAAAAAAgEwi+AIAAAAAAEAmEXwBAAAAAAAgkwi+AAAAAAAAkEkEXwAAAAAAAMgkgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZFKhumH+s7dHna0PRmkUszFRuVh45LZPldKuoz+l3o7Cs3+4tNw8bpqnXUuS1Yueyne2LrbutuVBbsO21fOsY+3CfMj7WB4VHrn9vGDr6+1cW3j+4R9FC56/M7ifX0laNvfhvOVywe7jzral6u5YGfR5JvJy4bH/++9SLt+QdimJutYtLcz+60+jZXMfCvIYXD7vz7ne7nXB7mOPyvIoCrK+JS+dmJMO42IZgrPkpQejR267PbhzjkdR4W+//WzJcjVd7SD0dKxsePEvV0WLZ98f3LaTpKVz/piLSr1Bng8lqdjTpt6uNcHWJ0lRVCo8cfcXS/mG5rRLSdSxdmH+pcd+Ea1c8FiQx+CKBX/LdbUtC3ofl4pdQddXLnbnn77v6+WmsZOD/Pu4denz+XKxy9tWzSmnXUuStcteyLWueCnofRzqeXrFK4fnpLdu0G+t+W3sUTlXLvUE17mNSkUvl3rC7D1IKvV2RMWe9nzjmIlpl5KoVOpSsact2G1YKnaqVOoKtj5JKpd6gq6v1NsRFXvbgvz5leJ9bFKw2zAqFeXyYOuTJC+XvFTsKuQ9yD6iSsXOqLd7XcDHYJeKPe1RqPvYo7KiqBTkMeheTLsEING05Qty+7b9Mbhzzj+62/zVTz9UKAR6c8XCtlXRti8/mdtpwYIgC+zpmq/uqOj7dv4xuPOhJLVHPZrX3en7PhlmfZL0Umer7/bMw4Vxuca0S0m0pG1FtE3XM7ndFy8P8hh8qmuRVpTbo5D38exiUSHXt6CzzXd/4bH8hNyYtEtJtLx9uW/d0W37LF8X5DZ8qWeFOntXBn2emV3sDbK+v/fsoKVVbTVF7rjPydr78JPrVNLAvfz4L3TIqZenXUa/Fr7wu/J+R30ut/WsA9IuJVF3x0pN2W4/3/eI8y3tWpIseP5O9XSsLh9y6uXB/eCs99JjP9chp3xPsiA3oZbM+UN5n8PPy83c7ci0S0n08M0fUb7QVD7oxG8FuY9XL3laqxc/FR1y6uX5tGvpz9wnb/KDTvimNTZPSruURCsW/K281xs+kttxn1PSLiXR43dfrLZVc8qHnHp5kJ3sUrFLc5+6yQ859fLgTjKP3CatWpR2FUCtQ8burM9OPS7tMmrc0facf27qMTbGgvyVpye6FpbO3urgxje17Jp2KYm+vvIedZR7SxdNOy7IIc6LSq36a9crftG044I7X6/3u/YXovO3fnN+amFc2qUkerFnWXTGpANzJ4zfO+1SEv1kzcN6qmtx+aJpxwXZZ4gUn2dCPgYf6JhdPnfyYYVdGrdOu5REi4utfljLq+zMSa9Nu5REt7c9o5tanwz2PChJv2l7VhdNC+938P+u2V2Pd23YFuQPMgAAAAAAADBcBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmUTwBQAAAAAAgEwi+AIAAAAAAEAmEXwBAAAAAAAgkwi+AAAAAAAAkEkEXwAAAAAAAMgkgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmVSoblgy+wF59Nc0atmocm+Xnr7/G2mX0a/ertX5F//yv1o8+760S0m0ZvGz6m5fbiZLu5REq5c+p/Y18/Mh7+NyqUdPP/DNtMvoV2/H6vycJ2/UyoWPpV1KohXzH1W+oTkX6j7uaF2k3q61wdYnSeVyrz33x8uUL4xJu5REHWsX5uY88UutW/lS2qUkWvLSg+puXx7seSaKSiqXixZifSsWvEnSa9MuA6jxdM8i/XjNQ2mXUaPbi3bVmodVsHzapSRaUWrP/2bdM5rduzztUhI91rVAnVFvPsR9K0lry11qLXdZqPVJUmfUm/vZ2kc1Lt+UdimJFhfX5R5on62lpXVpl5Lozx1ztaLcngt5H/dExSDPf+t1R8XcTeue0OT82LRLSTSnuNJKHZE6vTftUhI93bVY83pXBXselKRiVAryGHy0c2ZNW03w1b52UXnlgseiulQ0GLlcw8oFjxXTLqM/lisU1q18udzTuTq8bSep2NOWt468hboNO9ctyXlUzoVanyTlcoWgj8GoXCy0rphd7u1aG+Qx2Nm2JF9obAn2GOzuWKlyqSfofWxmDasWPlnM5RvSLiWZe6GjdWEkqZx2KUm625fnS72dwR6D7mWZWZDHYNe6PfNilDgCtLbhlWjeuPuCO+c0tnrD/HG/L+bDvN6ofIcX1ox9Jpo39tngtp0kdfR6vuyyeeOWB3c+lKT2kqQ2b5g37r4g65OkxnXesKDlj6XmgnnatSTpbfPCijGtUfO4MI/B5b3Kd5rnQj0GJclXh30MWpsKC5v/XFrXqDCPwQ4vtI9Z7fPGvVxKu5Yka+S5qKxcyPtYa8I8BteU9s+pQxtceaoJvnZ97Zn5vQ8/M7jLUz+7cLIf8e5fBvrXnnTjV3YrvvYtX2vYetYBwW07Sbr/p+/QlO32i/Y94vwgt+GC5+/U43ddXAp5H//0gq38iLNuaJCF2Yu9+Zv7FPc76sKGmbsdGeQx+PDNH1G+0FQ66MRvBbmPVy95WvddfVo55GPw55/fJjrsjKsaGpsnpV1KotsuPbi49+Gfathxn1OCDEgev/tita2aU3zjO68Nch+Xil264eJZUYjH4CO3Sc/8Pu0qgFonzPLcN17rwZ1zpv5C0U8P84bmIH8jSwfcpt7P7K3G42eFt+0k6fy/SW1FFb//Og/ufChJ89ulN/2fohsOD7M+Sdr2BpV/9HoVpjcHmTnosDtU+uAeXnjnzmFeVLnkWenRFSqGuo8jSdv8Qh5qfZK0000qffsgFXafmHYlyU64R9HR2yl37h5hbsOfvyxd/VK4x6AkTQn0GLzk2UhPVd3EGOSJBgAAAAAAABgugi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmUTwBQAAAAAAgEwi+AIAAAAAAEAmEXwBAAAAAAAgkwi+AAAAAAAAkEkEXwAAAAAAAMgkgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCpUN0TlkkqlUhq1bFKp1J12CRvhisq9wdboUaQoKgZbX1Qqyj0Ktr71SuWetEvoX+SKyuHuY4/K8ijcfRyVeiV5sPWtF5V6Aq4x7PNgFJXkUTnc+krx+SXE+iIvKKHLAKSu5FJ3Oe0qkvWUJUu7iH64ZL0Bb7tSFPa+7Y0kV7j1rdcThVujSyoGXF/RpUjh1ueV/w21vvV6A97HkcI+zxRdKivc+tYLsb5SVNtmknvfhrG5C3xM7rJ61TRgbeVuG58f45t+Zjp6o5LlLed5C3MQXUe5RwXLW1OuEOQ2LHpZPVHRxgW8jzvKPdaSbwq2vm6PrCB5IdBjsL3co4LlbEyuIchtWPJInVGvTQj4GOyOSjYm0J9hSeqOipa3nBosH2SN3VFRLrfmXGOQ9UlSV1S05gB/Rjqjr1p39LG+TcvcNT2terDlMtMySdPW//fYpkvUMubTwf3MdHTLWprkoSZf3T2yfF7eEGie3dktyWRjmxTcvpUkj6TWTtmkcWHWJ0ldPbIxjXIL9Bjs7JYVClJjIcxt2NEVB8TjmsOsT5LWtMu2CvgY7O2VFQryXJh/mqitU2pskDU1hLkNe4pSb1E2fmyY9UlSa4dsYkt49XX2nKeO7m9ucPar+XX38SmH2/u2aqxfVQN0wMvf8Ed3Pi/QU7f05nnfK146/W0Nrx4zI+1SEn18ya+0V9PM6JzJhwR56vl9x2x9b9WDpZu3f3+gXTBp/5e+7o/sfF6o/QcdP/8HxQunHtNwyNid0i4l0UXL71STFUr/NfXfgtzHL/Qs00eX3FS+Z8eP5NOupT8HvXxJdM+OH8lNyI1Ju5REb3vlyuJ/TD6k4ehxewT5Y3LZqge1sHdN8RszTmpIu5Yk3V7SG+Z8J3p05/OCO09/bcWBunJN2lUAtT58rPTNs8OLl7Z+l6L5/6tcc3hdaknS/p9S75fOUOPxB6ZdSbLPXCu1d6n4/Q8qyPP1/BXS4RcqmvvjcKeNmfkelR//tvLTt0q7kmRvuEClDx2jwjsPC+/nV5IuuVV69B8q3viZMI/BKJKmvVu+/Nowt58k7XiOSnf9twq7b5d2Jcne+mVFx+wvO/e4MLfhzx+Urr5PxXu/GOYxKEmTzwzzGLzkVunT12zYFuzJGgAAAAAAABgOgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmUTwBQAAAAAAgEwi+AIAAAAAAEAmEXwBAAAAAAAgkwi+AAAAAAAAkEkEXwAAAAAAAMgkgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCaZ5N63YUL+81FL7ntRWgX1p73cUxiXbyqlXUd/uqLeQpMVopzlgtt2ktQR9eSbVFAhly+nXUuSopet6OX82FxjsPs49GOwM+rNN1uDm1mQx+C6cle+2RrVEOgxWFLZusulfND7uNxTGJtvLEvmm352/XWWe/NNuYLnAz0PdkfFnEnWlGsI8hiUZB1RT74lF94xuK78lVxHdG7fi2XL3DU9tYKwxTLTMknT1v/3tInfjrbd+tPBnXNeWhwVdpmeK1tOQZ6v5y+PCpPHWTR+bJh9hiWrPB+5a9utc0Ger3uL0stLo8Ies3LBna/Xm7M0Kmy/tZULhTD7DPOXRfmJLaZJ4yzIfbx8ree7etx22Cbcffzc/Kiw1w7h1jdvWVSYvpWVxzSGeQzOXer5CWOlKRPCPAbXtHludbvndpkR7j5+fkGY58Fla8/LLV719Q0GeRWqn/TOiQfkTpt4VnAjwU6e/xO/bruzauoNxdkLrytfOPXo/K5NU4PbdpL05eV36VWNU/0dkw4Ichs+2jVf1655pHzFzNODrE8K/xj8j4W/KH14ymGF/Zq3C/IY/M7K+9Wcayp/cPLrg9yGL/eu1JeW3xVds92ZQdYnSae/cpX/aOYZ+ZZcY9qlJPrY4ptKp0/cv3Boyy5BHoM/XfOolpTWlc6f+uYg93Gvl3XGgquDPM/8cPUeuqk17SqAWuN2eltuxiH7BnfOee6qU3ybo67P5wtNaZeS6OVffrA0YZ8zC9N3OTS4bSdJqx/6gUo97eUZR3w6uPOhJHW2LdOcWz4RzTj6+iDrk6S/X/v2aOrh38+PaZmSdimJ5t38ifL4PY/Nz9jj6CC3Yefjv1Bx2QulGUd/Mcj6JNezV53qM47+daD1SS/87N/LU1//5fy4yTulXUqihb/9rI/d7gCb8ZrTgtyG5RfuUevz/1eecfS3g6xPkp658iSfcfStwdXX9eT2Wvzwhm01RW6VH6sdGibXq6YBM7Mg61ovbxZNL0zIh1rj2Fyjtsq3+A4Nky3tWpLM7V2lJit4qNtvve0bJivIDSipIZf3aYXxwf6cTMqPDXofd0VFFSwXbH0Vvl3DJJuQG5N2HYkarOBbF8YFewxOzDerrdwd7D7u9pJMFuR5OtRjDmjZanvN3HX7tMuokcs3+IxXvckKDc1pl5KooXl8NHX7AzVz1yPTLiXRwhfuVqmnPZq565H5tGtJ0r5mvvKNLcFuP0nK5xt9xi6HqXl8mINzG1sm+ZTtXhPsNly14An1drd5qPUpipTPNwS7/SQp3zDGp+10qCZN2z3tUhKNGT/dJ8/Y20Ldhp3rlmrVwr8Fex6UFOwxuGphbVuQV3kAAAAAAACA4SL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmUTwBQAAAAAAgEwi+AIAAAAAAEAmEXwBAAAAAAAgkwi+AAAAAAAAkEkEXwAAAAAAAMgkgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmUTwBQAAAAAAgEwi+AIAAAAAAEAmEXwBAAAAAAAgkwi+AAAAAAAAkEkEXwAAAAAAAMikQnXD9Wsfj/7Y8TNPo5iN6fZi7uyFPyunXUd/VpY6Cp9f/ttoYm5McNtOkp7vWZZ7snuRPdz5cpDbcFWp0xaU1uRD3sc9KuXeE3B9y4tthUtW3htNCPQY/EfvilyTFXIv9iwLchu2Rz1aUWoP+jzT46XcuYt/Wc4Hes1ibu/KwndWPuDXr/1blHYtSeYVV1tX1BvseSaSq9dLQR6Dc4uzctIhlnYdQLXlcx/2J+6+J7hzjrvnn7r3K+VcriHtUhL1dK5pePnx633lgjDP18vmPpwrl3oKT9x9cXDnQ0nq6Wq1YndrLtT6JCmKyrmnH/hW1Ng0Lsh+YWfrkvy8p3/t61bMDvIYXDr34Vxn66Jgj0FJKhe78yHXFxW788//6fvRmJYpQR6DbStm5xa6vKdjZZDH4KrFz1jbqrlBH4NRuRTkMbh07iEmHbXBH0w1wdeeY6blDh27V/2qGqAnuxfpuPF75dOuoz9ziquiN7a8KjezMDHtUhKti3o0szBRh7XsEuQ2/EfvCnW093jI+/ip7sXBH4P/2rxjbufGKWmXkqij9QmNyzfp2HF7BpnaLCq2alGpNehj8O89S/2ocXvkx1jNqTsIi0ut0cFjd8zt2TQ9yG14f8dsrS51RKHu46JHeq5naZDnmTvbpmhRMe0qgFoTFs+27VffEtzPzLNdrb7dn2/PFyzIX3l6qX1pNOnvf8zNang2uG0nSau7F6rHS759a3j7VpI6vEezu9p8+4fDrE+SnutY49v+9Y5cc64x7VISzelY4uM7um37uS8FuQ07epaqt9wR9D5+ttijkOt7uXOdz3zinty4XFPapSSa37HQx7aute0XLghyG5Z7V2lt76qgj8HneruCPAZ7eidokY7aoK3mr6d9x2yn0yfuX7eiBurrK+/10yfuH+zV5h+veaj85pbdc68eMyPtUhI91DlHezXNjE6fuH+QPbDfd8zWE10LyqdP3D/Mv+gl/c+Ke/y0iftbqAfhtWsfKR/W8qrcIWN3SruURH/vWaomKwS7j1/oWaY725+LTp+4f3An7/W+tfJ+P2nCPjYhNybtUhLd2PpE+XVjd8odPW6PtEtJtLTUpoW2phzqebDbS7p01QNBnqdf7p2mP3WmXQVQ640tu+qzU09Ku4wav++Y7V+bfoKFeqHixPk/Ln1g8qGNb2rZNe1SEn195T3qKPeWvrjN8UEOmVtUatVz3df4N6efFGq3UA91zom+MO24/NTCuLRLSXTGgqvLZ0w6sHDC+L3TLiXRT9Y8rKe6Fpe+Of2kII/BSPF5JuRj8I1zv1s+b+sjC7s0bp12KYnOWXS9H9byKjtz0mvTLiXR7W3P6KbWJ4M9BiXp/o5/BHkM/u+avfRs94ZtwXWuAQAAAAAAgJFA8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSQRfAAAAAAAAyCSCLwAAAAAAAGQSwRcAAAAAAAAyieALAAAAAAAAmUTwBQAAAAAAgEwi+AIAAAAAAEAmEXwBAAAAAAAgkwi+AAAAAAAAkEkEXwAAAAAAAMgkgi8AAAAAAABkEsEXAAAAAAAAMongCwAAAAAAAJlE8AUAAAAAAIBMIvgCAAAAAABAJhF8AQAAAAAAIJMIvgAAAAAAAJBJBF8AAAAAAADIJIIvAAAAAAAAZBLBFwAAAAAAADKJ4AsAAAAAAACZRPAFAAAAAACATCL4AgAAAAAAQCYRfAEAAAAAACCTCL4AAAAAAACQSYXqhie6Fup6eyyNWjaqx0u6fm14da3XVu7O/bb9WT3TvTjtUhLN6V2l9qjHxq9tSruURM/3LNXS0rrc/2vn3qP1Kus7gX/3eznJyYUkXIPiFbVgNVXjjY4glHakxcuIrQupbWVcq2PV0VUR7Kpr7HjprKkG25mldqTt8o6o1UorqVZFsBWQa8QoUYEQLoaQkJCc5OSc8172/OFkLTBvqh1nsZ/Zfj7/Za/3j+96nt/7nL2/74aS93iQUS4pON+e0Xznin3fz5aFnU1HmeiW+XuzuOoXu8dbR3uydzxflZovSYb1uPrs7g1ZXPWbjjLRfcOZzuX7vp+dw9mmo0y0Ye6u7Bju65a6x8OMMqxHRc7gpvlfajoCTLRpfluR94fz9bD6zO4b00u36SgT3T/a1/3q3k25d7Cn6SgTbZzbmn3jhWLP612jfZkZzRU5ewfsHy9Un9uzIYd1ppuOMtF9w72dq2c3Z99ooekoE92w/86in03qlP98PDcedtbPfCdHdpc1HWWiLYOd1VWzm9Mt9F2gG+fuyt2DXcWeg0kyqEdFzuBN+x990LWDiq87uptG1dRl44cl0b9Bp1P3r5q6bNB0jkPp9Ovept7Vo3umUtzaJcnuTt2re8lVU7cVuYY7xuksdOpuyXvc7ZY9g4Nueht73xxvncqo6SyT3JO6u6RbVVdNbS5yDR9YSOaqsve46qV/7dQ/DXpV00kmG/Xr3ubehvHs1LeKnMGtc+nuT12VusfjOukUes7c0zmtG2+JU6B7OrePr5q6rLgzp9et+1f3vzjoFnpe1/26d1v/xvHuqZuKW7sk2datu6NOqqumfljceZgkc8NkVPizSa9f92/sXz6c6qZuOsskezvp/aC7c7x3akORM3jb/nTnqrpT8h6Py79v7W3oXzla0ivz+Xhvt+79sLejvmpq07DpLJNsHaYz1y17BlPoOXjH/JM7yUN/eTqo+Hr1k8bd855SF/fz1BEXp77s1+oyX3NI8gufzeDPn1v31x5R5k97Z1+RPOPwjC9YU+Yarr87ecdNGZa8x4d/IvUXfq3uF3oPmzV/l8Gfrk3/9GPLfDh9/TXJ4m49XPesFLnHN+9KXn55RiXP4OpPZvypU9NfOdV0kslO+ocMzl+T/lmPqYucwbdvSDbPZPDhk8vc4/2j5NGfyrjEGTz/ujoXbmw6BRzsZY+tO+9+VnlnzlEXZ/x3p9f96SLvCpO1l2bhbU/L1JmPKg36SeEAABmgSURBVG/tkuQt1yczgww+cFJ552GSbNmbnPaPZZ7XBzzykow+9vy6t7rMF75yymUZvubE9M55fJkzuG5jcu32DD59Wpl7PE5yTOHPx4/7TIZ/+cvpnbCizOfjF3854xccl87rTixzDT9xW/KhWzMoeY9L7WjWbRznguseeq3IgwYAAAAAflaKLwAAAABaSfEFAAAAQCspvgAAAABoJcUXAAAAAK2k+AIAAACglRRfAAAAALSS4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGglxRcAAAAAraT4AgAAAKCVFF8AAAAAtJLiCwAAAIBWUnwBAAAA0EqKLwAAAABaSfEFAAAAQCspvgAAAABoJcUXAAAAAK2k+AIAAACglRRfAAAAALSS4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJWqpK4ffGFJ78314u6FTeU5pH3DVEt7qX/yJ5sxHKeqqtTdqukkk80OU/U6yVSnzDUcjpOFcaolBe/x3CjV4m65+UZ1qiTpVmVm3DtIprqpSp3B0TjZP0q1rF9mviQZjFP1OqkLPWayME7VSdIrdI/nR0mdsr/HC+MyvyOzw3XV3Oi8B1/aVtdZ3VQefn5VVbYlOfrAvxf312XJovOL+87MD1MtKvieZmGYqttJugWeN0kyN0iqqtw1HNfJ7HyqZYvLzJckg9H/uWco9KZhfpCq2y33nmF2IelUqRYXfF84M5dqecEzOBqlqjqpO4XO4OxCqn436Rd6XzgYJcNRqumpMvMlyb75VEsXlZdvbvDmzM6/5yGT1/vxD7396anOe8rDF+qndcTFqXeck0K/NskvfDaDi09Nf+0RTSeZ7OwrkmccnvEFa8p8y2/93ck7bsrwmhcdPJOlOPwTqbefk1LvH7Lm7zL48+emf/qxZX5PXn9Nsrib4bpnlbnHN+9KXn55Rptelm7TWQ5l9Scz3vSydFZONZ1kspP+IYPz16R/1mPKnMG3b0g2z2Tw4ZPTbzrLJPtHyaM/lfH2c8o7p8+/LrlwY9Mp4GCvPzN5z6vKO3OO/J2M7/qbdKYLPa+fcV4W3vmKTJ35zPLWLkku+Eiyd38GH3hNmef1lu3JqW/NePNF5Z3XBzzi3IxufG+6q1c1nWSyk/84wz84I71zTilzBtd9Prn2+xl8+oIyZ3A8To7+vdQ7Plbm+iXJY38/wy++Lb0Tjms6yWQvelfGZzwjndf9Rplr+Ikrkw99NYOvvKPMGUySw1+Z+v6Pl7d+6z6fnP/hh14r9rAGAAAAgJ+F4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGglxRcAAAAAraT4AgAAAKCVFF8AAAAAtJLiCwAAAIBWUnwBAAAA0EqKLwAAAABaSfEFAAAAQCspvgAAAABoJcUXAAAAAK2k+AIAAACglRRfAAAAALSS4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGilKqnrB184YtH5o5VT68ZNBTqUHfPpH7kog6ZzHMquhfSW9VL3Oxk1nWWSXQvpLeokS3oZNp1lkrlxOnPDdFdOlbvH98+nf0ThM7i0l3qq0BncPpfe0n6ypFvsDFb7BumVvMc759NftSjDKql/8qcffrsW0lvSS72o0BmcGaSbKtXyQs/BOql2zpc5gzvmL+zuXnjTg38s21bXWd1YIH5uVVW2JTn6wL+XTP/leOnSPynuzNkzO+gvX9Iv9rzeu3+ht2hqqu53yzyvZ+cG3VTdasmiTpHn9biuq72zg95hS6eKO68PmJkd9JdO94edqtwZnOpP1VO9Mmdw/8KwOx5X1dLF3SJnMEl275vvr1i6qOgZXLK4P+p2Uly3kCQzs/O9qf6iLOqXeV+4MBh1FoZ1Z9l0r8h8SbJ730J/RYHn4Oz+13f27Xtb98HXej/+od97Yt393Sek++PXm3bq+tSfPT39pnMcyllfzehP16Z74soy36L7o+uSE1amftUTy1zDb2xL/nJTxh9/fpn5kvJn8OyvZfSmp6T77KPKnMF3bEiW9zL6w6eUuYabHkj+6PqMS97jf//F1B89Jb1lhSZ81dcz+t0npPsrjyhzBv/XpuSefRm9c22Ze7wwSn79n8o8Z967sc5Hb206BRzskU/5zc5TT/13xZ056z/wK/Xzfnd9r9OdajrKRF/72G+PTnzeH3RXP+55xa1dkmy88i8yHOwbPe1X31rceZgks3vuzT9f8h/rk89dX2S+JPnHD75g/NyzL+4tWnJE01Em+udLXj1+3NN+q3PcCWcUOYM/uO4j2bl14+g5L35PoXtc57L3n1affO5XCs2X/NNfvWj0zLPe11226jHFdQtJcvXn3lAf8/jnVY9/2suLXMO7blmfO7596ejkl3+wyHxJ8oX3Pb/IGfzBdUfl21c89NpBxdex08maVQ9Ton+Dqioz1wHdKuMnHJZuqRkPm0pWL069ZlWqprNMcve+ZEk34zWrynxgPuCpq1LmAibpVRk/bnm5M7h6OlncTV1qviSZ6pSdL0n95JWpVpb5HJVFnYwfvazcGTxmOpkdZrxmVXk/7iTJ/h/95l3kOX3U4qYTwGSLlx2Vwx9xVNMxJqlXrv7FqtefbjrHRJ1ef7R81WO6hz9iTdNRJlq87MgM5xePD3/EmiLP66npFam6/frwR6wp7rw+oEpVrzzmxEwvL/Pl3E5/8XjpyuM6pc7gkuXHZu8DdxU7gxmPU1WdlLp+SZJOVR921BOz8ugTmk4yUW/x8nrJYcdWpa7hzq3fztSipeXOYJKqqoqcwSWHHXyt6JIBAAAAAP5vKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGglxRcAAAAAraT4AgAAAKCVFF8AAAAAtJLiCwAAAIBWUnwBAAAA0EqKLwAAAABaSfEFAAAAQCspvgAAAABoJcUXAAAAAK2k+AIAAACglRRfAAAAALSS4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGglxRcAAAAAraT4AgAAAKCVFF8AAAAAtFLvxy985NbkG/c1EeVft3eQnHV50ykObetsen/4zeTIxU0nmeya+5Lrd6S6ZkfTSSb74Wzy3QfSLXmP9w2TlxWcb8u+9P74huSRS5pOMtkNO5I66d4+03SSyXbNJ3fuS6fkGdwzSHXO15PFhf5ksWlPuu/6VvLx25pOMtnGXcmehfRK3eNRncyNUpWYb+OuphPAZDvuuiEbr/znpmMcpK7rzi3/8v5UnYNutYswmNvd37Lx77N7+w+ajjLRjrtuyGg439t45V80HWWihdldGc7PdErNlyR1Pe5suvqv0l+0vOkoE83t3d69e9OXsn+mwAfPJPdu/pfs3XVHsTOY1BkNF6py8yXj4UL3B9d9NNPLjm46ykR777+j2nrblRmPBk1HmWjH3Tdm7wN3FzyDyXg8KnIG7719bZKTH3LtoL/GT3hSctpTH65IP73LL0512q81neLQbrw0ee5JyaOObDrJZHdenhx3ZKrT1jSdZLJb7k7uuzEpeY+v+GTZM/itf0ie88zkicc2nWSy+69O+t3ktGc3nWSyrTuT711e9gx+4zOpTj0tmZ5qOslk31mfau2TkzWPbTrJZPM3JffPJKed0nSSyYajH+1xiTO4+5vJrd9uOgUcbNGdN2fFtouajnGQev/uevnlf111qzJ/qaj33ZPejV/IiqnySsMk6cxtzbAeZcWOnU1HmWh2vJDx7AP1iq9eVDWd5VDGe+/P0q9/NNOdftNRJtu3JZ3dD2TFpuuaTjLR9vntqUezWfHV8s6XA6qFsvP1Zndl+VWfztJumTeu1eyWVDu3ZsVtG5uOMtGehV2pB7uK3uPOfJkzuGvh3PzE4ut5T07e8MKHK9JP779ekvoNL0yxf1zetz7Ds09Of+3xTSeZ7KpNydOPz/gNLyzzP29df0Ny4+0ZveGFB89kKf7kk6n/85mpqkKn8K+/nOF/eE76pxdabn7/h8mifrl7fPMdyeeuyfgNL0y36SyH8qd/m/F/ekE6K5c2nWSyi7+e4W+sTf+sk5pOMtmuvcnt2zJ8wwtT5FPA/oXkv/1tmef0nduTrym+KNCvLv2F/NFRL286xkGeddt76r849jerxVWRf/Lyki0XDd545KlTpy19YtNRJvqzHV/OvtHC8B3HnFnkeX3PcHfOuevD9fuPfXmhd4XJL9/+3vGfHfOS7lG9ZU1HmegVd31o9IqVz+y9eHmBb1wk+atdV+Vb+384fN+xv1nkDI6TPOe29xQ9g8/f/D9G/+XoM3rHT5X5Zsjv3/PJ+pSlT6heufJZTUeZ6O9nvp3P7N4wfP+xLy9yBpNk7W3vLnIG/3rXL+W/b3/oteJurgEAAADg/wXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGglxRcAAAAAraT4AgAAAKCVFF8AAAAAtJLiCwAAAIBWUnwBAAAA0EqKLwAAAABaSfEFAAAAQCspvgAAAABoJcUXAAAAAK2k+AIAAACglRRfAAAAALSS4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGglxRcAAAAAraT4AgAAAKCVFF8AAAAAtJLiCwAAAIBW6v34hQ2bk0/9SxNR/nULgzJzHTCzP53Lrk9u3dp0kslu35YMRqlKXcPrb03u3ZVOqfmSZDBMPv2NplMc2p7ZdK7YmOzY03SSyW65O1kyVe4e33Ffsneu3O9IkgxHyeeuSZYuajrJZNt3p/rat5PBqOkkk920Obl3Z7kzuDBMhuMyZ/B79zSdACa7fWFHLpv5TtMxDrJQD6svznw3/arbdJSJHhjNdq6avT2z44Wmo0z0/bn7MptBp8S9TZL7R/uydzRf5OwdMFcPqi/t25RVnemmo0y0Yzjb2bD/7nQLfQ9j49zWbBvuLnYG6yQL9bDoGVwYD6uv77s1m+a3NR1lonsGu6sb5+7KqpklTUeZ6LrZO7N1uLtb8h4P63GRM3jL/PEHXauSun7whcevPn/0qCPXjR+2VD+la7+f/rOflEHTOQ7lO3em95ijMl42neLWLkluuSu95dPJcUdm2HSWSXbNpLNle7pPe3y5e3zDremvfUK5+TZuSe+4I1OvXJoia4fv3pne9KLkcceUOYN79qf6wT3plbzH39qc/i8+JsNeJ/VP/vTD77t3pnf0itRHrihzBrfcl+78INWTHlnmDNZ1qg2b03t6gefgbVsv7N59/5se/HSyra6zurFA/NyqqmxLcvSBfx+39MLx8cvPL+7Muen+uv9Lh1fDTlXoef1A3Vs9nfrwRVVxa5ckt8/U3VGd6omHVUWe13OjVN/eVfeedWRV3Hl9wM076/4JK6rhVLfMGbx5Z91bvaTK0YvL/Jt8+0y686O6OnFlmTOYJNdsr/vPParcGdy4K/3jl2c03Svz+fi7D9S9VVPJsUvK3ONt+9O9b67uPHVVuXt87Y66/+wCz8G79p3fuX3mzx7yy9NBb3y99tfr7nkvSXE/Tx3+ytRXvCv9pnMcypNem8EHX5v+2uPLW7skOXtd8vTjM37LS8tcw/U3JG//VIYl7/Gq3079tXemX1VNJ5lszRszuPDc9E9fU+ZPZ6+/KFnUz/DCc8vc45vvSH7r3RmVPIPHvCrjL7w1vZVLm04y2XMvyOCCl6Z/1kllzuDbL0lu35bBR95Y5h7vX0ge9eqMS5zBN3+ozoWXNp0CDnb24+rOu59VF3fmHHVxxl98Qd2bLvKuMFl7aRbe8YxMnfmo8tYuSd5yfTIzyOADJ9XFnYdJsmVvcto/Zvy1Xy8zX5I88pKMPnt63Vtd5gtfOeWyDF9zYt075/Hl/c1LknUbk2u3Z/Dp08rc43GSYy5OXfIMPu4zGX74lPROWFHm8/GLv5zxC45L53UnlrmGn7gt+dCtGXzlBWXmS5IjCp3BdRvHueC6h14r8o8dAAAAAPysFF8AAAAAtJLiCwAAAIBWUnwBAAAA0EqKLwAAAABaSfEFAAAAQCspvgAAAABoJcUXAAAAAK2k+AIAAACglRRfAAAAALSS4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGglxRcAAAAAraT4AgAAAKCVFF8AAAAAtJLiCwAAAIBWUnwBAAAA0EqKLwAAAABaSfEFAAAAQCspvgAAAABoJcUXAAAAAK2k+AIAAACglRRfAAAAALSS4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArVUldP/jC9KI314v7FzaV55DmFlItnkr9kz/ZjPE4VVWlrqqmk0w2t5Cq30u6nTLXcDRKhuNUi/pl5kuSwTBVv1duvvE4VaqkU5WZcXY+meql6nXLzDcaJwvDVNMFnzOjcapSv8NJMhil6nbKncGFYVKl7O/xcFTmd2T//LpqbnDegy9tq+usbioPP7+qKtuSHH3g34v76zI9dX5x35nBKFW/wO/yAcNxqk7B9wzzw6RTlbuGdZ3MDVNNF3zfOqpTdQvd3+RH91y9brkzuH8h6XZTTRU6g0kyu5BqScH3rXWdKlXqQh+PMzdINdUrdwaH4x/d+y8q+L51bpBqcYHn4Nzgzdm/8J6HjF7vxz/0znNSnfeShy/UT+vwV6be+fGU+r3Jk16bwSfPS3/t8U0nmezsdcnTj8/4LS8t8y2/9Tckb/9Uht9898EzWYpVv536/o+lKrXcXPPGDP781emfvqbM78nrL0oW9TO88Nwy9/jmO5LfendG3/tAuk1nOZRjXpXx996fzsqlTSeZ7LkXZHDBS9M/66QyZ/DtlyS3b8vgI29Mv+ksk+xfSB716ox3fKy8c/rNH0ouvLTpFHCw15+ZvOdV5Z05R/5Oxnf9TTrTU00nmewZ52Xhna/I1JnPLG/tkuSCjyR792fwgdeUeV5v2Z6c+taMN19U3nl9wCPOzejG96a7elXTSSY7+Y8z/IMz0jvnlDJncN3nk2u/n8GnLyhzBsfj5OjfS73jY2WuX5I89vcz/OLb0jvhuKaTTPaid2V8xjPSed1vlLmGn7gy+dBXM/jKO8qcwaTcjmbd55PzP/zQa8Ue1gAAAADws1B8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAKym+AAAAAGglxRcAAAAAraT4AgAAAKCVFF8AAAAAtJLiCwAAAIBWUnwBAAAA0EqKLwAAAABaSfEFAAAAQCspvgAAAABoJcUXAAAAAK2k+AIAAACglRRfAAAAALSS4gsAAACAVlJ8AQAAANBKii8AAAAAWknxBQAAAEArKb4AAAAAaCXFFwAAAACtpPgCAAAAoJUUXwAAAAC0kuILAAAAgFZSfAEAAADQSoovAAAAAFpJ8QUAAABAK/V+/MKVG5/fRI6faG6QXHhp0ykObdfeqvPxK+pcsbHpJJN9755kZi5Vr9Cq85a7k607q86Fl9ZNRzmk+f8zg1XVdJLJtu+uOp/5Rp0Nm5tOMtmGzUmnU+4eb92Z7NpbVaXmS5LZ+VTvW59MTzWdZLKtO6vO319bZ/N9TSeZ7KpNyc6ZcmdwMEz2L6Qq8W/d9bc+s+kIMNH1tz4z7730TU3HOMjcQqr/+YWk3206yWT3PVB1P//NOt+7p+kkk11/azK/UHXeW+h5vWtfsmc21XsLPK8P2DdXVR/8Up3l000nmeye+6vO+hvq3Lur6SSTff07yZ3by53Buk7mFpKSZ3DPbNX58OV1jl7RdJLJbtuW6vKbf/SMV6Ibb0u2FDyDyY86mhJn8OvfOeWga9WPvjYAAD+1bXWd1U2H4OdPVWVbkqObzgEA/P+jl+TqZPeyquo+pa6XFfouCwDQtKraVdf14puS6R82nYWfW9cl+4+tqrmn1/Uq960AwERVtbeu6+F3kpUzVV3XqapqWfLA1cmKpzQdDgAo1bYrktVn1HU933QSfn5VVbUo2fqlZHWZ/38OAKAAuzcmK3+5ruuZXpLUdb23qjLTdCwAoGTH7FR60bS6ruerKjubzgEAlGzF3rquZ5LkfwMsr/V0M+ypbQAAAABJRU5ErkJggg==" - } - }, - "cell_type": "markdown", - "id": "c518f863", - "metadata": {}, - "source": [ - "
\n", - "\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "746e37f6", - "metadata": {}, - "source": [ - "### Block-wise partition" - ] - }, - { - "cell_type": "markdown", - "id": "102d6fa2", - "metadata": {}, - "source": [ - "To evaluate the efficiency of both partitioning schemes, consider how much work the processors do in the following example. \n", - "In any iteration k, which part of the matrix is updated in the inner loops? \n", + "1. The CPU owning row $k$ does the loop over $t$ to update row $k$.\n", + "2. The CPU owning row $k$ sets $B_{kk} = 1$.\n", + "2. This CPU sends the red cells in figure above to the other processors.\n", + "3. All processors receive the updated values in row $k$ and do the loop over i and j locally (blue cells).\n", "\n", - "### Block-wise partition" - ] - }, - { - "cell_type": "markdown", - "id": "d9d29899", - "metadata": {}, - "source": [ - "It is clear from the code that at any given iteration `k`, the matrix is updated from row `k` to `n` and from column `k` to `m`. If we look at how that reflects the distribution of work over the processes, we can see that CPU 1 does not have any work, whereas CPU 2 does a little work and CPU 3 and 4 do a lot of work. " - ] - }, - { - "cell_type": "markdown", - "id": "6409890d", - "metadata": {}, - "source": [ - "### Load imbalance\n", "\n", - "The block-wise partitioning scheme leads to load imbalance across the processes: CPUs with rows $\n", - "\n", - "" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e0565e92", - "metadata": {}, - "outputs": [], - "source": [ - "answer = \"x\" # replace x with a, b, c, or d \n", - "ge_dep_check(answer)" + "As you probably see, the parallel implementation of this method is closely related to Floyd's algorithm. But there are some differences. \n", + "\n", + "1. The process that owns row $k$ updates its values before sending them.\n", + "2. We do not send the full row $k$, only the entries beyond column $k$.\n", + "3. We need a cyclic partition to balance the load properly.\n", + "\n", + "A key similarity between the two algorithms, however, is that they both suffer from synchronization problems. We need to make sure that the rows arrive in the right order. The strategies discussed for Floyd's algorithm also apply in this current case.\n", + "\n", + "The actual implementation of the parallel algorithm is left as an open exercise." ] }, { @@ -740,54 +596,9 @@ "metadata": {}, "source": [ "## Conclusion\n", - "Cyclic partitioning tends to work well in problems with predictable load imbalance. It is a form of **static load balancing** which means using a pre-defined load schedule based on prior information about the algorithm (as opposed to **dynamic load balancing** which can schedule loads flexibly during runtime). The data dependencies are the same as for the 1d block partitioning.\n", "\n", - "At the same time, cyclic partitioning is not suitable for all communication patterns. For example, it can lead to a large communication overhead in the parallel Jacobi method, since the computation of each value depends on its neighbouring elements." - ] - }, - { - "cell_type": "markdown", - "id": "20982b04", - "metadata": {}, - "source": [ - "## Exercise\n", - "The actual implementation of the parallel algorithm is left as an exercise. Implement both 1d block and 1d cyclic partitioning and compare their performance. The implementation is closely related to that of Floyd's algorithm. To test your algorithms, generate input matrices with the function below (a random matrix is not enough, we need a non singular matrix that does not require pivoting). " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a65cf8e6", - "metadata": {}, - "outputs": [], - "source": [ - "function tridiagonal_matrix(n)\n", - " C = zeros(n,n)\n", - " stencil = [(-1,2,-1),(-1,0,1)]\n", - " for i in 1:n\n", - " for (coeff,o) in zip((-1,2,-1),(-1,0,1))\n", - " j = i+o\n", - " if j in 1:n\n", - " C[i,j] = coeff\n", - " end\n", - " end\n", - " end\n", - " C\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "31d8586a", - "metadata": {}, - "outputs": [], - "source": [ - "n = 12\n", - "C = tridiagonal_matrix(n)\n", - "b = ones(n)\n", - "B = [C b]\n", - "gaussian_elimination!(B)" + "\n", + "We studied the parallelization of an algorithm that leads to load imbalance. We fixed the problem using a cyclic partition. This is a form of static load balancing since we were able to distribute the load in advance without using runtime values. This is opposed to dynamic load balancing which can schedule loads flexibly during runtime. Note however that cyclic partitioning is not suitable for all communication patterns. For example, it can lead to a large communication overhead in the parallel Jacobi method, since the computation of each value depends on its neighboring elements.\n" ] }, { @@ -801,14 +612,6 @@ "\n", "This notebook is part of the course [Programming Large Scale Parallel Systems](https://www.francescverdugo.com/XM_40017) at Vrije Universiteit Amsterdam and may be used under a [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) license." ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8ab22f67", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/asp.ipynb b/notebooks/asp.ipynb index 33869e2..5c6a5e5 100644 --- a/notebooks/asp.ipynb +++ b/notebooks/asp.ipynb @@ -647,7 +647,7 @@ "- On the receive side $O(N)/O(N^2/P) = O(P/N)$\n", "\n", "\n", - "In summary, the send/computation ratio is $O(P^2/N)$ and the receive/computation ratio is $O(P/N)$. The algorithm is potentially scalable if $P^2<u + u_new + -1 + -1 + 1 + 1 + -1 + 1 + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + -1 + 1 + i-1 + i+1 + i + -1 + 1 + -1 + 1 + i-1 + i+1 + i + -1 + 1 + "red" phase + "black" phase + n \ No newline at end of file + id="flowPara23600-0-7-3-1">nCPU 1CPU 2CPU 3CPU 4kk1111110000000loop tloop i,jmn \ No newline at end of file