Skip to content

Instantly share code, notes, and snippets.

@orbeckst
Last active March 13, 2017 11:57
Show Gist options
  • Save orbeckst/a1f9dcfa4e2d047654a15b07dd78b6e4 to your computer and use it in GitHub Desktop.
Save orbeckst/a1f9dcfa4e2d047654a15b07dd78b6e4 to your computer and use it in GitHub Desktop.
Parallel analysis with MDAnalysis and dask
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Parallel trajectory analysis with MDAnalysis and dask\n",
"I just heard [Matthew Rocklin's talk at SciPy 2016](http://matthewrocklin.com/slides/dask-scipy-2016.html#/) about the latest additions to [dask](http://dask.pydata.org) and the new [dask.delayed](http://dask.pydata.org/en/latest/delayed.html) grabbed my attention because it makes it *really* easy to organize parallel computations.\n",
"\n",
"The following is a proof of concept for how to use `dask.delayed` with the current version of MDAnalysis for **parallel trajectory analysis**. \n",
"\n",
"\n",
"Two ideas are explored:\n",
"\n",
"1. Simply split the trajectory in blocks (\"chunks\" in dask parlance), accumulate data for blocks, and then recombine. (Not really different from what everyone else has been doing, but [pretty simple with `dask.delayed`](http://dask.pydata.org/en/latest/examples/delayed-array.html)).\n",
"2. Treat the *whole trajectory* (i.e., all the positions) as one big *out-of-core* [dask.array](http://dask.pydata.org/en/latest/array.html).\n",
"\n",
"As an example, calculate the mean center of mass of a protein.\n",
"\n",
"The main problem is that we cannot use a single `Universe` because a reader can only access a single frame at a time --- it is not thread-safe in any form. The quick solution is to \"clone\" the universe, based on the stored file information and kwargs. We also recreate the AtomGroup from its indices. All of this is actually very fast and with the new topology system (in the upcoming 0.16.0 release), we could even share the same topology so that it does not become a memory problem (but that's not done in this notebook)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What are we testing?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The *center of mass calculation* is a light-weight computation, which means that the following tests are almost certainly completely dominated by the I/O. That's ok: we want to get an idea if we can *speed up the data ingestion* because it's very likely that heavy computation will almost certainly benefit from parallelization. Thus, we are looking here at a worst-case."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Hardware "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The benchmarks in this notebook were performed on \n",
"1. Linux Ubuntu 14.04 on 2x6 core Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz, attached SATA HD 7200rpm\n",
"2. Macbook Pro with 2-core i7 3.1 GHz CPU and a SSD."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Required packages "
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from __future__ import print_function, division"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import os.path\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.15.0\n"
]
}
],
"source": [
"import MDAnalysis as mda\n",
"from dask.delayed import delayed\n",
"import dask.array as da\n",
"\n",
"print(mda.__version__)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Get the example trajectories "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Download example datafiles from \n",
"* https://www.dropbox.com/sh/ln0klc9j7mhvxkg/AAAL5eP1vrn0tK-67qVDnKeua/Trajectories/equilibrium/adk4AKE.psf?dl=1\n",
"* https://www.dropbox.com/sh/ln0klc9j7mhvxkg/AABSaNJ0fRFgY1UfxIH_jWtka/Trajectories/equilibrium/1ake_007-nowater-core-dt240ps.dcd?dl=1"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"download_files = [\"https://www.dropbox.com/sh/ln0klc9j7mhvxkg/AAAL5eP1vrn0tK-67qVDnKeua/Trajectories/equilibrium/adk4AKE.psf\",\n",
" \"https://www.dropbox.com/sh/ln0klc9j7mhvxkg/AABSaNJ0fRFgY1UfxIH_jWtka/Trajectories/equilibrium/1ake_007-nowater-core-dt240ps.dcd\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For convenience, use a simple function to download files from dropbox:"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import urllib2\n",
"import os.path\n",
"\n",
"def dropbox_file_download(url, filename=None, force=False):\n",
" \"\"\"Download file and save file.\n",
" \n",
" The filename is extracted from the url or provided with `filename`.\n",
" If the file already exists, the download is skipped.\n",
" \n",
" Arguments\n",
" ---------\n",
" url : URL_string\n",
" Dropbox url (we ignore GET parameters, we add '?dl=1')\n",
" filename : path, optional\n",
" Save url under this name; if `None`, use last component of the url.\n",
" force : bool, optional\n",
" If `True`, force a download and overwrite an existing file\n",
" of the same name. If `False` (the default), then an existing file\n",
" will just be skipped.\n",
" \n",
" Returns\n",
" -------\n",
" filename : path\n",
" \"\"\"\n",
" url = url.split('?')[0]\n",
" filename = url.split('/')[-1]\n",
" url_GET = url + \"?dl=1\"\n",
" if not os.path.exists(filename) or force: \n",
" with open(filename, \"w\") as out:\n",
" out.write(urllib2.urlopen(url_GET).read())\n",
" return filename"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"PSF, DCD1 = [dropbox_file_download(fn) for fn in download_files]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"TODO: generate full trajectories so that we are not limited by the *ChainReader* (for concatenating on the fly).\n",
"* NAMD DCD\n",
"* Gromacs XTC\n",
"* Amber NCDF"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Set up test system "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Make an artifically big trajectory by replicating the DCD 10 times (1x is not very representative there are no speed-ups (dask has overhead))."
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"longDCD = 10*[DCD1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the universe we want to work with:"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<Universe with 3341 atoms and 3365 bonds>\n",
"frames in trajectory 41870\n"
]
}
],
"source": [
"u = mda.Universe(PSF, longDCD)\n",
"print(u)\n",
"print(\"frames in trajectory \", u.trajectory.n_frames)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's compute the average center of mass of the protein:"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"protein = u.select_atoms(\"protein\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate sum of center of mass for a block\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will need a function that creates a *new* Universe and then calculates the sum of the center of masses because in order to run analysis in parallel we need **independent trajectory readers**. At the moment, this only works when we clone the `Universe` and get multiple readers that can iterate independently while accessing the same file."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The mean from a simple sum over the blocks is just"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\langle x \\rangle = \\frac{1}{\\sum_{j=0}^{M-1} N_j}\\sum_{j=0}^{M-1}\\sum_{t=b_j}^{b_{j+1}} x_t\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we wanted to calculate the block means $\\langle x \\rangle_j$ we would need to reweight:\n",
"\\begin{align}\n",
"\\langle x \\rangle &= \\frac{1}{\\sum_{j=0}^{M-1} N_j}\\sum_{j=0}^{M-1}\n",
" N_j \\left(\\frac{1}{N_j}\\sum_{t=b_j}^{b_{j+1}} x_t \\right) \\\\\n",
" &= \\frac{1}{\\sum_{j=0}^{M-1} N_j}\\sum_{j=0}^{M-1} N_j \\langle x \\rangle_j \\\\\n",
" &= \\sum_{j=0}^{M-1} \\frac{N_j}{\\sum_{j=0}^{M-1} N_j} \\langle x \\rangle_j \n",
" = \\sum_{j=0}^{M-1} w_j \\langle x \\rangle_j \n",
"\\end{align}\n",
"where the weight for block $j$ is\n",
"$$\n",
"w_j = \\frac{N_j}{\\sum_{j=0}^{M-1} N_j}. \n",
"$$\n",
"\n",
"(For simplicity, here I am just doing the sum and divide by the total number of frames, but for more complicated calculations, the weighted approach might be clearer.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using `dask.delayed` for block-based analysis\n",
"\n",
"Simply split the trajectory in blocks (\"chunks\" in dask parlance), accumulate data for blocks, and then recombine. Use `dask.delayed` as in the [example](http://dask.pydata.org/en/latest/examples/delayed-array.html))."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The **block_com()** function computes the sum of masses for one trajectory block; it clones the underlying universe so that it can be run in parallel."
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def block_com(ag, start=None, stop=None, step=None):\n",
" \"\"\"Compute sum of center of mass over a block.\n",
" \n",
" Arguments\n",
" ---------\n",
" ag : AtomGroup\n",
" start, stop, step : integers, optional\n",
" Slice of the trajectory, all default to `None` so the whole trajectory would be used.\n",
" \n",
" Returns\n",
" -------\n",
" w_com : array\n",
" sum \n",
" \n",
" Note\n",
" ----\n",
" This function clones the underlying universe `ag.universe` so that this function\n",
" can be safely used in threads or dask so that trajectory reading does not \n",
" collide.\n",
"\n",
" \"\"\"\n",
" u = ag.universe\n",
" clone = mda.Universe(u.filename, u.trajectory.filenames, **u.kwargs)\n",
" g = clone.atoms[ag.indices]\n",
" assert u != clone\n",
" print(\"block_com\", start, stop, step)\n",
" return np.sum(g.center_of_mass() for ts in clone.trajectory[start:stop:step])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Single thread\n",
"Traditional analysis: just run through the whole trajectory:"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 11.1 s, sys: 74.1 ms, total: 11.1 s\n",
"Wall time: 11.1 s\n"
]
}
],
"source": [
"%time r0 = np.sum((protein.center_of_mass() for ts in u.trajectory), axis=0)/protein.universe.trajectory.n_frames"
]
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.66527606 1.64131859 -6.422865 ]\n"
]
}
],
"source": [
"print(r0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"How much time is it to set up a new universe (\"cloning\")? Is this a sizable cost?"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 155 ms, sys: 86.7 ms, total: 242 ms\n",
"Wall time: 246 ms\n"
]
}
],
"source": [
"%time clone = mda.Universe(u.filename, u.trajectory.filenames, **u.kwargs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Not really, so I should be able to run the `block_com()` function without slicing as a baseline:"
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"block_com None None None\n",
"CPU times: user 11.6 s, sys: 469 ms, total: 12 s\n",
"Wall time: 12 s\n"
]
}
],
"source": [
"%time ref10 = block_com(protein)/protein.universe.trajectory.n_frames"
]
},
{
"cell_type": "code",
"execution_count": 188,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.66527606 1.64131859 -6.422865 ]\n"
]
}
],
"source": [
"print(ref10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### With `dask.delayed`\n",
"[dask](http://dask.pydata.org/) can run and schedule `n` parallel tasks.\n",
"\n",
"Write a function to set up blocks and generate a dask `Delayed` object of the calculation:"
]
},
{
"cell_type": "code",
"execution_count": 217,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def com_parallel_dask(ag, n_blocks):\n",
" bsize = int(np.ceil(ag.universe.trajectory.n_frames / float(n_blocks)))\n",
" print(\"setting up {} blocks with {} frames each\".format(n_blocks, bsize))\n",
"\n",
" blocks = []\n",
" for iblock in range(n_blocks):\n",
" start, stop, step = iblock*bsize, (iblock+1)*bsize, 1\n",
" print(\"dask setting up block trajectory[{}:{}]\".format(start, stop))\n",
" blocks.append(delayed(block_com, pure=True)(ag, start=start, stop=stop))\n",
" total = delayed(np.sum, pure=True)(blocks, axis=0)\n",
" return total/ag.universe.trajectory.n_frames"
]
},
{
"cell_type": "code",
"execution_count": 218,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"setting up 3 blocks with 13957 frames each\n",
"dask setting up block trajectory[0:13957]\n",
"dask setting up block trajectory[13957:27914]\n",
"dask setting up block trajectory[27914:41871]\n"
]
}
],
"source": [
"total = com_parallel_dask(protein, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The processing graph is really simple:"
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nfD6/c+fOGRkZWlpaW7Zsqa6u3r9/P+vPTpw4kby21eUNNmLjjaihofH6laytrKxMTU2zs7Pfdb3t\nBhux8UZk9qYLCgqk/VhQUEAIGTFixDutsbXnr58/f04IGTt2bJPlzD8Rly9fbvJId3f3IUOGEEJ2\n7NghfSc4Nze38W+kh4fH119//fXXX0dERLw1wJtGaybAuz/LprKzs3v37s20XnZ2dv/+/d/0SGar\nTJgwofUrbTvYiI03ovSIlSE9vpbnciTYiP+7EadNm8blcpldWsbNmzdVVVWZjyS/g2aOvVkxu7gl\nJSUSiUQsFq9cudLd3Z15s4Z5B9T4/7V333FNXf0fwM/NHmwQlC0oAaGKW0QNAawWV12oKPqotUqt\naFtXtcpjbattteBTW0d9ahUVQRxFxYVEXCBaR7VAooCgIMiWMELG/f1xf6U8GkMSbu7NOO8/+iok\nOecTjvd797keHtj/+/v7u7i4tB93iI2NDQ4Olslk5eXl2EVJAoFg586dX3zxxZgxYyQSCYqi2EVM\nCoVCJpMJBAJra+u7d++qz/O21tQEQFG0tbUVAODj44O95OXlBQBobGzEfvT09AQAyOXyt3Wampoa\nHh6O/f/gwYMvXLjQ/tK2bdt+/fXXhoYGFEWbm5vHjx+/YMECQzs/AwcRVTuIHRns8Uc4iKjaQVy/\nfn2vXr2wJbGhocHb23vTpk2d/lVBF8/PXLp0aeLEiaGhoQsXLoyJifn++++x71lYWLhs2TKs5v7w\nww+1tbWvXr1atWrV6NGjP/3001WrVm3evLl9zVxUVDRt2rTu3bvb2dnNmzevsrKypqam/XbRr776\n6tmzZ9hBXEtLy2+++aaurk5NpDdbw37/tgAVFRWfffYZAIDBYFy6dOn8+fNUKhUAEBsbW11d/eOP\nP2Ixvv3226qqKpU9fvPNN0uXLsX+39bWtrCwsP2ldevWubm5OTg4rFixYtWqVdnZ2er/nhiC6yMc\nRFTtIHZksPURDiKqdhCVSuW+ffvmzJmzbt26adOm7d27t9PNFPSNGohgv8IgCJKcnBwZGanx1ieE\nj5SUlBkzZnQcC3LbgXSALTgpKSkG0g6kg9dqoHHcP4O83ZuHbCHDBAfRBJjbIHb1/DUx4AaRCYCD\naALMbRCNY/sRgiCIeLA+QhAEqQbrIwRBkGqwPkIQBKkG6yMEQZBqsD5CEASpBusjBEGQarA+QhAE\n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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 219,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total.visualize()"
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"block_com 0 13957 None\n",
"block_com 27914 41871 None\n",
"block_com 13957 27914 None\n",
"CPU times: user 13.6 s, sys: 1.43 s, total: 15 s\n",
"Wall time: 7.86 s\n"
]
}
],
"source": [
"%time rd = total.compute()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check that the results are the same to within machine precision (float32, so about $10^{-6}$)."
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.05471187e-14, -4.21884749e-15, -1.01252340e-13])"
]
},
"execution_count": 221,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rd - ref10"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Performance on Xeon(R) CPU E5-2630 0 @ 2.30GHz and local 7200rpm disk on SATA:"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.4376590330788805"
]
},
"execution_count": 222,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"11.3/7.86"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So with a small number of blocks (3), one can get some speed-up."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With 12 blocks (for 12 cores) I actually got slow-down:"
]
},
{
"cell_type": "code",
"execution_count": 158,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.6848484848484849"
]
},
"execution_count": 158,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"11.3/16.5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That means, the dask-ified approach is *slower* than the pure serial approach."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the 10x trajectory, running 2 dask threads on my 2-core laptop is faster than the serial version:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.4361313868613137"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"7.87/5.48"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Not quite twice as fast but already decent."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Testing longer trajectories\n",
"Does it make a difference to look at longer trajectories?"
]
},
{
"cell_type": "code",
"execution_count": 189,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<Universe with 3341 atoms and 3365 bonds>\n",
"frames in trajectory 418700\n",
"atoms in selection 3341\n"
]
}
],
"source": [
"xDCD = 100*[DCD1]\n",
"w = mda.Universe(PSF, xDCD)\n",
"w_protein = w.select_atoms(\"protein\")\n",
"print(u)\n",
"print(\"frames in trajectory \", w.trajectory.n_frames)\n",
"print(\"atoms in selection\", w_protein.n_atoms)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### serial "
]
},
{
"cell_type": "code",
"execution_count": 190,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"block_com None None None\n",
"CPU times: user 1min 51s, sys: 3.79 s, total: 1min 55s\n",
"Wall time: 1min 55s\n"
]
}
],
"source": [
"%time ref100 = block_com(w_protein)/protein.universe.trajectory.n_frames"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The ref100 value is not correct:"
]
},
{
"cell_type": "code",
"execution_count": 198,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6.65276058, 16.41318586, -64.22864997])"
]
},
"execution_count": 198,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ref100"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It should be identical to the ref10 value of the 10x trajectory, after all, it's just a 100x trajectory..."
]
},
{
"cell_type": "code",
"execution_count": 199,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 5.98748453, 14.77186728, -57.80578497])"
]
},
"execution_count": 199,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ref100 - ref10"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Somehow the reference value is incorrect: should be closer to `[0, 0, 0]` because we are just copying the same array 100x instead of 10x. Almost but not quite factor of 10. What's going on?"
]
},
{
"cell_type": "code",
"execution_count": 195,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6.65276058, 16.41318586, -64.22864997])"
]
},
"execution_count": 195,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ref100"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... no idea, someone else will surely spend out my stupidity. I am mainly concerned with the dask output being correct and because that's the case, I am moving on..."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### dask"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Run dask with 3 chunks, as before:"
]
},
{
"cell_type": "code",
"execution_count": 224,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"setting up 3 blocks with 139567 frames each\n",
"dask setting up block trajectory[0:139567]\n",
"dask setting up block trajectory[139567:279134]\n",
"dask setting up block trajectory[279134:418701]\n",
"CPU times: user 4.61 ms, sys: 213 µs, total: 4.82 ms\n",
"Wall time: 3.66 ms\n"
]
}
],
"source": [
"%time total = com_parallel_dask(w_protein, 3)"
]
},
{
"cell_type": "code",
"execution_count": 225,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"block_com 279134 418701 None\n",
"block_com 0 139567 None\n",
"block_com 139567 279134 None\n",
"CPU times: user 2min 8s, sys: 13.3 s, total: 2min 21s\n",
"Wall time: 1min 11s\n"
]
}
],
"source": [
"%time rd100 = total.compute()"
]
},
{
"cell_type": "code",
"execution_count": 226,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.66527606, 1.64131859, -6.422865 ])"
]
},
"execution_count": 226,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rd100"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `rd100` value *is* close to the reference from the 10x trajectory:"
]
},
{
"cell_type": "code",
"execution_count": 227,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 2.15383267e-14, 2.10942375e-14, -9.32587341e-14])"
]
},
"execution_count": 227,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rd100 - ref10"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On Xeon with locally mounted disk:"
]
},
{
"cell_type": "code",
"execution_count": 228,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.619718309859155"
]
},
"execution_count": 228,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(1*60 + 55)/(1*60 + 11)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On the long trajectory, dask gave about 1.5x speedup (before I got 1.4 and 1.56). I used 3 tasks so that's actually reasonably good speedup!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On my laptop (i7 3.1 GHz with SSD) with 2 dask \"tasks\". Speed-up:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.50278293135436"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(1*60+21)/53.9"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(Note on the benchmarks: I redid them a couple of times on the laptop and anecdotally, the speedups are typically between 1.35 and 1.5.)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"TODO\n",
"* test with more chunks"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using `dask.array`\n",
"The idea is to represent the **whole trajectory** as one gigantic out-of-core array of shape `(n_frames, n_atoms, 3)` with dtype `np.float32`."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import dask.array as da"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ingest a trajectory with `dask.from_array()`\n",
"`dask.from_array()` can use *anything that has an array-like interface*... so we are going to fake it.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First just check that we can easily get coordinates (the `copy()` is required but the overhead is small compare to I/O). Reading a chunk of 1000 frames is reasonably fast:"
]
},
{
"cell_type": "code",
"execution_count": 486,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 168 ms, sys: 56.3 ms, total: 224 ms\n",
"Wall time: 344 ms\n"
]
},
{
"data": {
"text/plain": [
"(1000, 3341, 3)"
]
},
"execution_count": 486,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time np.array([protein.positions.copy() for ts in u.trajectory[:1000]]).shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Reading 20,000 frames takes a few seconds:"
]
},
{
"cell_type": "code",
"execution_count": 487,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 2.34 s, sys: 2.3 s, total: 4.63 s\n",
"Wall time: 4.7 s\n"
]
},
{
"data": {
"text/plain": [
"(20000, 3341, 3)"
]
},
"execution_count": 487,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time np.array([protein.positions.copy() for ts in u.trajectory[:20000]]).shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So try to provide an array-like interface that `da.from_array()` can use."
]
},
{
"cell_type": "code",
"execution_count": 529,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import numbers\n",
" \n",
"class posarray(object):\n",
" \"\"\"Represent position trajectory in universe u with array interface.\"\"\"\n",
"\n",
" def __init__(self, ag):\n",
" \"\"\"Wrap an AtomGroup or Universe to provide a minimal array-like interface.\n",
" \n",
" Arguments\n",
" ---------\n",
" ag : AtomGroup or Universe\n",
" \n",
" Returns\n",
" -------\n",
" posarray\n",
" \"\"\"\n",
" self.ag = ag.atoms # works with Universe or AtomGroup\n",
" self.u = self.ag.universe\n",
" self.shape = (self.u.trajectory.n_frames, self.ag.n_atoms, 3)\n",
" self.dtype = self.ag.positions.dtype\n",
" \n",
" def clone_universe(self):\n",
" \"\"\"clone Universe so that dask can run with lock=False\"\"\"\n",
" return mda.Universe(self.u.filename, self.u.trajectory.filenames, **self.u.kwargs)\n",
" \n",
" def clone_AtomGroup(self):\n",
" \"\"\"clone AtomGroup so that dask can run with lock=False\"\"\"\n",
" u = self.clone_universe()\n",
" return u.atoms[self.ag.indices]\n",
" \n",
" def __getitem__(self, idx):\n",
" ag = self.clone_AtomGroup()\n",
" u = ag.universe\n",
" #print(\"posarray idx\", idx)\n",
" # some special casing to catch indexing as done by humans and da.array\n",
" if isinstance(idx, (int, np.integer, numbers.Integral)):\n",
" # u_a[3]\n",
" u.trajectory[idx]\n",
" return u.atoms.positions\n",
" elif len(idx) == 3 and all(isinstance(ix, slice) for ix in idx):\n",
" # what da.array sends down\n",
" pass\n",
" else:\n",
" raise IndexError(\"Currently only indexing with one integer or 3 slices supported\")\n",
" #print(idx[0],' and ', idx[1:])\n",
" # In the following I could also just return a tuple of arrays instead of ndarray\n",
" # but the overhead for array creation seems to be small compared to everything else.\n",
" return np.array([ag.positions[idx[1], idx[2]].copy() for ts in u.trajectory[idx[0]]])"
]
},
{
"cell_type": "code",
"execution_count": 520,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"u_a = posarray(protein)"
]
},
{
"cell_type": "code",
"execution_count": 521,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(41870, 3341, 3)"
]
},
"execution_count": 521,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u_a.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's too complicated to deal with [all the ways in which numpy arrays can be indexed](http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html) so I restricted the wrapper to just what's needed, i.e, three slices (and just a single frame for testing). Therefore, the following fancy indexing won't work:"
]
},
{
"cell_type": "code",
"execution_count": 522,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "IndexError",
"evalue": "Currently only indexing with one integer or 3 slices supported",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-522-3d7e9aca9239>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mu_a\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-519-88df8326fcf7>\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, idx)\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 44\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mIndexError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Currently only indexing with one integer or 3 slices supported\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 45\u001b[0m \u001b[0;31m#print(idx[0],' and ', idx[1:])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mag\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpositions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0midx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mts\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrajectory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mIndexError\u001b[0m: Currently only indexing with one integer or 3 slices supported"
]
}
],
"source": [
"u_a[[3,0,-1]].shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now create a dask array *lazily*:"
]
},
{
"cell_type": "code",
"execution_count": 523,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 0 ns, sys: 0 ns, total: 0 ns\n",
"Wall time: 1.09 ms\n"
]
}
],
"source": [
"%time u_d = da.from_array(u_a, chunks=(20000, u.atoms.n_atoms, 3), lock=False)"
]
},
{
"cell_type": "code",
"execution_count": 524,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(41870, 3341, 3)"
]
},
"execution_count": 524,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u_d.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now *do the computation on the whole array*. This approach is radically different from working on blocks and gathering/reducing data ourselves: here `dask` takes care of it. (Note: use the dask numpy-like functions when needed and *not* the numpy functions in order to keep everything lazily evaluated!)\n",
"\n",
"This is now the **whole analysis** to compute the mean center of mass:"
]
},
{
"cell_type": "code",
"execution_count": 564,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"weights = (protein.masses / protein.total_mass())[:, np.newaxis]\n",
"x = (u_d.mean(axis=0) * weights).mean(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 565,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(3,)"
]
},
"execution_count": 565,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.shape"
]
},
{
"cell_type": "code",
"execution_count": 566,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n9O3b10yYMMEYY0xaWppp2LChw/vVq1c3N954o8OxadOmGUkmNjb2svNfSEREhJFkCgoKHI7n5+cb\nSeaOO+5wOH7w4EEjyURFRVVoHQojAACqLr4lDQBQKRw5ckQNGza85JgLPW5Vs2bN8475+flp+/bt\n9tebNm1SaGiotm3bdtG5hw4dqpycHH388cfKzs7WuXPnVFxcfNG1bTab/Pz8dPTo0Utmrug64eHh\nWrZsmRYtWqTo6GidOnVKktS9e/cKjWnRosV5a6enp7ttfQ+P356Kr1u3rv1Yea5Deea+3Dn8p/Ks\ne6G/r4CAAGVlZWnv3r1av369PvzwQ+Xl5enkyZNq0aKFoqOj9c4778jf319eXo4/ct13332SdMk1\nL6VFixZKSkpSdna2brzxRvvxsr+PoKAgh/F+fn6SfvvvCAAAoDwojAAAlYKnp6dKSkpcMndubq52\n796tvLy88wqmkpISeXp6KikpSf3791d8fLyioqI0ffp0l2S53DqvvPKKgoKC9MQTT2jdunXKzMzU\nO++847ChcXnGpKenW7r+hZTnOpRn7opeq/Kse7G/r4KCAtWqVUvbt29XzZo19eqrryo3N1cffvih\nfUyzZs20YcMGGWPsxWLZN6XVqlXrktkuJjQ0VJJ06NAhh8Lo0KFDkqTOnTs7jP/9/lIAAADlQWEE\nAKgUGjZsqGPHjrlk7tDQUBUUFOi9995TXFyc/XhqaqpWrFih4cOHKzY2VjabTVFRUZJkL69+XwI4\nw+XWKSkp0datW7VhwwY1a9bsgnOUZ8y1uH55rkN55i7Ptfr9HUflWfdiMjMz1ahRI3vRlJmZeV5Z\n06dPH/373/9WSkqK2rZtK0n2b2lr3759+f5y/kPfvn01cuRIff/997rjjjvsx1etWiVvb289+uij\nDuPL7jy63F16AAAAZSiMAACVQpcuXTRlyhSdOXNGtWvXvuCYc+fOSXK8i6KoqEjSb3eRlN3NUTau\n7O6R3r17q2nTpnrjjTd08OBB3X///UpLS9PGjRs1e/ZsSdLJkyeVk5OjH374QWlpacrJyZEkbdy4\nUUFBQTp79qx97bJS4syZM5KkwsJC+fj4lOs8L7fOlClTtGDBArVu3Vq7du2Sr6+v6tWrp1tvvdW+\nxttvv33ZMVavX3YNiouL7Y9rlec6lGfuy51Dw4YNdejQIW3ZskVhYWHlWvdiMjIy1Lx5c/vrzMxM\n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\n/vnntX79emVmZqpVq1ZasmSJ1ZGueUVFRRo+fLi6du2qLl26aNu2bZRFAAAA5URhBABAJdGuXTsl\nJyfrvvvu04MPPqjhw4erqKjI6ljXpD179qhz586aOHGipk6dqhkzZsjX19fqWAAAAJUGhREAAJWI\nr6+vZsyYoXfffVeff/65unXrptTUVKtjXTOMMUpMTFTHjh119OhRff/99xo0aJDVsQAAACodCiMA\nACoZm82mF198UUlJScrOzlabNm00atQo5eXlWR3NUqmpqbr//vs1cOBARUVF6eeff1bHjh2tjgUA\nAFApURgBAFBJdezYUSkpKZo0aZImT56s2267TV9++aWq2vdZnDhxQoMGDVLr1q119uxZ/fTTT5o8\nebL8/f2tjgYAAFBpURgBAFCJ2Ww2DRo0SFu2bNG9996rP/3pT+rZs6eSk5OtjuZyJSUlmjp1qtq2\nbat58+Zp7NixSkpKUtu2ba2OBgAAUOlRGAEAcB0ICgrS9OnTtXLlSh07dkzt2rVT37599euvv1od\nzelKSko0Y8YMtWrVSk8++aTuu+8+paWlacSIEfLy8rI6HgAAwHWBwggAgOtI165d9dNPP2nOnDna\nsWOHwsLC1LNnT33//fdWR7tq+fn5+vzzz9W8eXMNGDBAd955p7Zt26YvvvhCQUFBVscDAAC4rthM\nVdvoAACAKmTt2rX65JNP9M0336hhw4YaMGCABg8erJCQEKujlYsxRt99953i4+O1YMEC3XDDDfrL\nX/6ip556SjfeeKPV8QAAAK5bFEYAAFQBW7du1cSJE5WQkKCcnBzdd9996tevn6Kjo1W3bl2r451n\n27ZtmjlzpmbMmKEdO3aodevWeuKJJzRo0CA2swYAAHADCiMAAKqQs2fPat68eZo5c6aWLFmikpIS\nRUREKCoqSlFRUWrZsqUluc6dO6e1a9dq8eLFWrRokbZv365GjRqpb9++6t+/vzp06GBJLgAAgKqK\nwggAgCrqzJkzWrRokRYvXqxly5bp2LFjCggIUMeOHdWhQwe1adNGrVq1UuPGjWWz2Zy27rlz55SW\nlqZt27Zp8+bN2rBhg5KTk1VYWKiwsDA98MAD6tWrl8LDw+XhwXaLAAAAVqAwAgAAKi0tVUpKipKS\nkpSUlKR169bp8OHDkqTatWsrJCREt956qxo3bqzg4GAFBASofv36CggIuGCpc/bsWWVlZenYsWM6\n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\nWLGi6UgAAAAOQ2EEAICDXL16VS1atFDLli21atUq03FQCs6ePavmzZvrxRdf1JQpU0zHAQAAcBhu\nSQMAwEHeffddJSUlafbs2aajoJTUr19f77//vqZPn669e/eajgMAAOAwzDACAMABjhw5ohYtWmjq\n1KkaM2aM6TgoRdnZ2QoICJC7u7uioqJks9lMRwIAACg2CiMAABzg0Ucf1dmzZ7Vv3z65urqajoNS\n9v3336tt27ZasGCBhgwZYjoOAABAsVEYAQBQTN98840effRRbdu2TZ06dTIdB4aMGjVKGzZs0JEj\nR1S5cmXTcQAAAIqFwggAgGKwLEtt2rSRj48PC13f4f7zn//I19dX77zzjv72t7+ZjgMAAFAsLHoN\nAEAxhIWFKTY2Vh988IHpKDCsXr16eu211zRp0iQlJyebjgMAAFAszDACAKCIsrKy5Ofnp4CAAC1Y\nsMB0HJQBV65cUaNGjfTyyy/rvffeMx0HAACgyJhhBABAES1dulQnT57UuHHjTEdBGeHp6am//OUv\n+uc//6mUlBTTcQAAAIqMwggAgCKaNm2a+vfvL19fX9NRUIaMHj1aOTk5mjNnjukoAAAARUZhBABA\nEWzcuFExMTHMLsJNqlWrppdeeknTp0/X9evXTccBAAAoEtYwAgCgCHr37q20tDR9++23pqOgDEpI\nSFDTpk01b948DR061HQcAACAQqMwAgCgkE6dOqWmTZsqPDxc/fr1Mx0HZdTAgQOVmJioHTt2mI4C\nAABQaNySBgBAIc2ZM0fe3t56/PHHTUdBGfbHP/5RO3fu1IEDB0xHAQAAKDQKIwAACiEzM1Pz5s3T\niBEj5OrqajoOyrAuXbqoWbNm+uKLL0xHAQAAKDQKIwAACiEyMlI///yznn32WdNRUMbZbDaNGDFC\nYWFhysrKMh0HAACgUCiMAAAohCVLliggIECNGzc2HQVOYNiwYbp48aIiIyNNRwEAACgUCiMAAAro\n+vXrWr16tQYMGGA6CpzEvffeq/bt22v58uWmowAAABQKhREAAAW0efNmpaamsjMaCqV///5as2YN\nt6UBAACnQmEEAEABff3113rooYfUoEED01HgRPr27auLFy9q165dpqMAAAAUGIURAAAF9PXXX6tP\nnz6mY8DJNGnSRL6+vlq/fr3pKAAAAAVGYQQAQAEcPHhQp0+fVq9evUxHgRPq2bOnNmzYYDoGAABA\n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\nMrOMUCTr169XmzZtVLNmTdNRAAAACoTCCACAAvjd736npk2basOGDaajwAmtW7dOvXr1Mh0DAACg\nwCiMAAAooO7duysiIsJ0DDiZI0eO6PTp0+revbvpKAAAAAVGYQQAQAE99thj2r9/vxISEkxHgRNZ\ntWqVatWqxfpFAADAqVAYAQBQQN27d1ft2rW1dOlS01HgRJYsWaKBAwfKzc3NdBQAAIACozACAKCA\n3Nzc1K9fPy1fvtx0FDiJw4cPKyYmRoMGDTIdBQAAoFAojAAAKIT+/ftr3759OnnypOkocAIrVqxQ\nvXr1FBgYaDoKAABAoVAYAQBQCA8//LAaN26sOXPmmI6CMi47O1shISF69tln5erqajoOAABAoVAY\nAQBQCDabTSNGjND8+fOVkZFhOg7KsH//+986c+aMnn/+edNRAAAACo3CCACAQho+fLguXLigdevW\nmY6CMuyLL75QYGCgGjdubDoKAABAodksy7JMhwAAwNn06dNHqamp+vbbb01HQRmUkJCgpk2bav78\n+RoyZIjpOAAAAIVGYQQAQBFERUUpKChIO3fuVEBAgOk4KGP+8pe/aP369Tpy5AjrFwEAAKfELWkA\nABRBp06d1LZtW3300Uemo6CMuXz5subPn69XXnmFsggAADgtCiMAAIpo7NixCg8PV1xcnOkoKENm\nzpypChUqsNg1AABwatySBgBAEVmWpfbt28vb21tfffWV6TgoA86fP68mTZpowoQJ+tvf/mY6DgAA\nQJExwwgAgCKy2Wx6++23tXLlSn333Xem46AMmDJliry8vPTKK6+YjgIAAFAszDACAKAYLMtSmzZt\nVKtWLUVERJiOA4N++ukn3XfffZo4caJee+0103EAAACKhcIIAIBiio6OVmBgoFauXKknnnjCdBwY\nMnDgQMXGxio2NlYVKlQwHQcAAKBYKIwAAHCAZ555Rnv27NHBgwdVsWJF03FQyrZv367g4GCtXbtW\nffr0MR0HAACg2CiMAABwgFOnTsnPz0+TJ0/WmDFjTMdBKcrOzlZAQICqVq2qTZs2mY4DAADgECx6\nDQCAAzRq1EgTJkzQ+PHjdfz4cdNxUIpmzJihH3/8USEhIaajAAAAOAwzjAAAcJCsrCy1b99eVatW\n1ZYtW2Sz2UxHQgk7fvy4WrZsqXfeeUdvvPGG6TgAAAAOQ2EEAIADRUdHq1OnTpozZ46ee+4503FQ\n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\nzJN5kA4dOqRatWrJ3t7+rscCAAAo7ixGfl4bDgAA8t2VK1dUpkwZLV26VF27djU7jmn69++vy5cv\na9myZWZHAQAAKPK4wggAgCKudOnSqly5sqKiosyOYqqoqCjVrVvX7BgAAAA2gcIIAAAb0KpVK/3y\nyy9mxzBNQkKC9u3bp9atW5sdBQAAwCZQGAEAYAN8fX21adOmPJ34uijJKst8fX1NTgIAAGAbKIwA\nALAB7du31+XLlxUeHm52FFOsX79ePj4+cnFxMTsKAACATaAwAgDABtSrV09eXl76/vvvzY5S4NLT\n07VkyRJ169bN7CgAAAA2g8IIAAAbMXjwYM2dO1cpKSlmRylQq1at0pkzZzR48GCzowAAANgMCiMA\nAGxEv379lJiYqFWrVpkdpUCFhISoRYsWql69utlRAAAAbIbFMAzD7BAAACBvPProo7p48aK2bNli\ndpQCcfToUXl6eurrr7/WwIEDzY4DAABgMyiMAACwIbt27VKzZs20fv16dejQwew4+W7YsGHavHmz\n9u/fL3t7e7PjAAAA2AwKIwAAbIyfn58sFovWrVtndpR8deLECXl6emrmzJl6+umnzY4DAABgUyiM\nAACwMTt37lTLli31/fffKzAw0Ow4+ebxxx/XoUOHFBERIUdHR7PjAAAA2BQKIwAAbNDzzz+vxYsX\nKyoqSi4uLmbHyXP//e9/9fjjj2vz5s1q1aqV2XEAAABsDoURAAA26Pz586pXr56eeOIJffHFF2bH\nyVOJiYlq3LixWrVqpZCQELPjAAAA2CQ7swMAAIC8V7ZsWY0ZM0bBwcHq2rWr2XHyjGEY8vHx0cWL\nFxUUFKSMjAyzIwEAANgkrjACAMBGxMfHa8WKFfr555+1evVqJScnS5KcnJy0f/9+1alTx+SEd+/j\njz/WCy+8oKwfX+655x498sgj6tKliwICAlSxYkWTEwIAANgGCiMAAIqojIwM7d69W8uXL9d///tf\n7d+/X3Z2dtnfs7OzU6VKlVS1alX9+eef2rJliypVqmRy6jv3448/qnfv3nr99df10Ucf6eLFizIM\nQ/b29pKkzMxMeXt7q1u3bgoICFCLFi3k4OBgcmoAAICiicIIAIAiJDY2VitWrNDSpUu1fv16paSk\nqESJEkpJSbluXXt7e+3cuVM1atRQq1at5OTkpI0bN+ree+81IfndWb9+vR599FE988wz+vjjj7V6\n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\ndiQAAIB8x0+qAADks59//lmNGjXS0aNHtWXLFo0ePZqyqAgJDAzU3r17Vb58eTVv3lzTpk1TZmam\n2bEAAADyFT+tAgCQT7Imtu7WrZt69OihX3/9VU2bNjU7Fu5AtWrVFBYWpqlTp+qNN97QI488ori4\nOLNjAQAA5BtuSQMAIB/s27dPTz75pOLj4xUcHKwnnnjC7EjII3v27NGAAQOUkJCgL7/8Ut27dzc7\nEgAAQJ7jCiMAAPJQZmampk2bpubNm6tChQqKiIigLLIxTZo00d69e9WvXz/17NlTQUFBSkpKMjsW\nAABAnuIKIwAA8khcXJwGDx6sX375Rf/5z380atQoWSwWs2MhH61evVpDhgyRs7Oz5s+fr5YtW5od\nCQAAIE9whREAAHkgNDRUjRo10vHjx7V161aNHj2asqgY6Ny5syIiItSgQQO1a9dOEydOVEZGhtmx\nAAAA7hqFEQAAdyFrYuvu3burX79+ioiIUJMmTcyOhQLk5uamZcuW6dNPP9X777+v1q1bKyYmxuxY\nAAAAd4XCCACAOxQREaGmTZtq8eLFWrx4sWbMmKGSJUuaHQsmsFgseuaZZ7R7926lpKTowQcfVHBw\nsNmxAAAA7hiFEQAAtylrYusWLVrIzc1NERERevzxx82OhUKgfv362rlzp1588UWNHDlSvXv3VkJC\ngtmxAAAAbhuTXgMAcBvi4uI0aNAgbdq0iYmtcUthYWEKCgqSnZ2dvv32W7Vv397sSAAAALnGFUYA\nAORS1sTWJ06cYGJr5MjX11eRkZFq06aNOnTooNGjRys1NdXsWAAAALlCYQQAQA6uXLmioKAgdevW\njYmtcVvKlSun+fPna+HChZo7d66aNGmi33//3exYAAAAOaIwAgDgFvbu3aumTZtqxYoV+vHHH5nY\nGnckMDBQERERcnFxUbNmzTRjxgwxKwAAACjMKIwAALiBv09sXb16dUVGRqpnz55mx0IRVr16dYWF\nhenNN9/U2LFjFRAQoNOnT5sdCwAA4IaY9BoAgH9gYmvkt927d6t///66ePGiZs+era5du5odCQAA\nwApXGAEA8DfLli1To0aNdPLkSW3bto2JrZEvmjZtqn379qlv377q3r27hg8fritXrpgdCwAAIBuF\nEQAA+v+Jrbt3765+/fpp7969euihh8yOBRtWsmRJzZgxQ0uWLNGSJUvUpEkThYeHmx0LAABAEoUR\nAADau3evmjRpwsTWMEXPnj21f/9+1apVS82bN9fEiROVkZFhdiwAAFDMURgBAIqtzMxMTZw4Uc2a\nNVPNmjW1f/9+JraGKdzd3fXzzz9r5syZeu+999SpUyedPHnS7FgAAKAYozACABRLp06dkr+/v6ZO\nnar33ntPy5cvl7u7u9mxUIxZLBY988wz2r17txITE3X//fcrJCTE7FgAAKCYojACABQ7S5cuVaNG\njfTnn39qz549TGyNQsXb21vbt2/XiBEjFBQUpN69eysxMdHsWAAAoJihMAIAFBtZE1v37NlTTz75\npHbu3KmGDRuaHQu4jrOzs6ZOnarVq1dr27Ztaty4sTZt2mR2LAAAUIxQGAEAioXw8HA1adJEK1eu\nZGJrFBkdO3ZUZGSkWrRooQ4dOmj8+PFKTU01OxYAACgGKIwAADYta2Lr5s2bq2bNmoqMjFSPHj3M\njgXkmouLi7777jt9/fXX+vTTT9W6dWtFR0ebHQsAANg4CiMAgM06deqUOnXqxMTWsAlBQUH67bff\n5OTkpEaNGmnGjBlmRwIAADaMwggAYJO+//57NWzYUGfPnmVia9iMmjVrauPGjXrllVf08ssv6/HH\nH9e5c+fMjgUAAGwQhREAwKYkJSUpKChITz75pIKCgrRr1y4mtoZNcXBw0MSJE7V161b9/vvvatiw\noZYvX252LAAAYGMojAAANiNrYuu1a9dq5cqVmjFjhpydnc2OBeSLZs2aKTw8XN27d1fXrl01fPhw\nJScnmx0LAADYCAojAECRlzWxdbNmzVS7dm3t27dPnTt3NjsWkO/KlCmjWbNm6YcfftDixYvVtGlT\nRUREmB0LAADYAAojAECRFhsbq44dO2rq1Kl6//339fPPP8vNzc3sWECBeuKJJxQRESF3d3c1b95c\n06ZNU2ZmptmxAABAEUZhBAAosr7//nvdf//9On/+vH799VcmtkaxVrVqVa1fv17Tpk3Tm2++KX9/\nf506dcrsWAAAoIiiMAIAFDn/nNh6586datCggdmxANNZLBaNHj1ae/bs0dmzZ9WwYUN99913ZscC\nAABFEIURAKBI2b59ux544AGtW7eOia2Bm2jYsKF27typoKAg9e/fX0FBQUpKSjI7FgAAKEIojAAA\nRUJGRoYmTpyotm3bytvbWxEREUxsDdyCs7OzZsyYoVWrVmn9+vW6//77tWXLFrNjAQCAIoLCCABQ\n6MXGxqpTp05677339Omnnyo0NJSJrYFc8vf3V0REhB544AH5+vpq/PjxSktLMzsWAAAo5CiMAACF\n2nfffaeGDRsqISFBu3bt0jPPPMPE1sBtqlChgpYuXaqvvvpKM2fOVJs2bXT48GGzYwEAgEKMwggA\nUChlTWzdv39/DRo0SDt27GBia+AuBQUFac+ePUpPT9eDDz6o4OBgsyMBAIBCymIYhmF2CAAA/m7b\ntm0aMGCArl27pjlz5sjf39/sSIBNSU9P11tvvaW33npLPXr00KxZs3TfffeZHQsAABQiXGEEACg0\nsia2bteunRo0aKCIiAjKIiAfODg4aOLEidq8ebP27t2rhg0batWqVWbHAgAAhQhXGAGwSceOHdOa\nNWvMjoHbYBiGZs6cqYMHD6p79+7y9/cvEnMVOTs7q2/fvnJycjI7is3g+C1YSUlJmj9/vvbt26fA\nwEB16NDB7EgohurWrStfX1+zYwAA/obCCIBN6tevn77//nuzY6CYWLJkiR5//HGzY9gMjl+g+HFw\ncODpfQBQyDiYHQAA8kNGRoYCAwO1aNEis6PAxlksFqWnp5sdw6Zw/ALFy6JFi9SnTx+zYwAA/oE5\njAAAAAAAAGCFwggAAAAAAABWKIwAAAAAAABghcIIAAAAAAAAViiMAAAAAAAAYIXCCAAAAAAAAFYo\njAAAAAAAAGCFwggAAAAAAABWKIwAAAAAAABghcIIAAAAAAAAViiMAAAAAAAAYIXCCAAAAAAAAFYo\njAAAAAAAAGCFwggAAAAAAABWKIwAAACAQub48eNmRwAAFHMURgBwA9HR0Xr//feVlJSk6tWra+XK\nlWZHMkXbtm21bNkySdKKFSvUokWLm677ySefyGKxZH99p++dYRj66quvFBgYqFdffVVPP/20FixY\ncEf5cxorPT1dr7zyimJjY+9ofBROHL8obHI6l2adP//+Z8qUKZI4lwIAzONgdgAAKGw2btyo4OBg\nzZkzR4ZhKDY2VsnJyWbHMsXhw4dVp04dSVJMTIxq1659w/V2796tcePGWS1zdHS8o/duypQp+vrr\nr7V37165uroqMTFRjRs31tmzZzV69Og8HcvBwUHjxo3TsGHD9P7776tWrVq3NT4KH45f5IWTJ0+q\natWqeTberc6laWlp+u677/Tuu+9mL7NYLOrfv78kzqUAAPNwhREA/M2BAwcUFBSkTz75RE5OTipR\nooRq1aolLy8vs6MVuCtXrig+Pl41a9aUdPPCKDExUUuXLr3ul6s7ee+OHz+uKVOmaPjw4XJ1dZUk\nubq6atiwYfr3v/+t8+fP5/lY9913n958801169ZNSUlJuR4fhQ/HL/LC0aNH9eSTT+bZeDmdS7/7\n7jsNGDBA48ePz/4zbtw4eXh4SOJcCgAwD4URAPxPZmamBg4cqCFDhui+++7LXu7t7Z39L8PFSUxM\njDw8PFSyZMnsr/9ZGBmGoSlTpmjs2LFWt6Nlud33LiQkROnp6fLz87Na3qFDByUnJ2v27Nn5MpaP\nj49q166tsWPH5np8FC4cv8gLsbGxeuyxx3T27Nk8G/NW59LMzExNmzZN48aNU8eOHfX666/ryJEj\n143BuRQAYAYKIwD4n9DQUIWHh+uRRx6xWv7cc8/J2dlZ0l9zo/Ts2VMTJkzQgAED1K5dO+3bty97\n3QMHDsjf31+vvvqqxo4dKzs7O12+fPmW22ZkZGjjxo164YUXVKNGDcXFxaldu3aqUqWKfvzxx+uW\nV6tWTQkJCbfMMm/ePJUsWVIWi0Xvvvuu0tPTJUkLFiyQk5OTvv3225u+DzNnzpTFYpGPj49OnjyZ\nPZ/Gzz//rEGDBslisejcuXOS/pp3o0+fPipXrtwNx/r7e5cbW7ZskaTsf1nPknX10t/f67weq3Pn\nzvryyy8VExOT632g8Mjp+L1y5Yrmz5+vfv36qWXLllq8eLEqV66shx9+WFFRUYqIiJC/v7/KlSun\npk2b6sCBA1bjJCUl6a233tKQIUPUpEkTdezYUb///nv29292PBqGoaVLl+qZZ55RlSpV9Oeff6pn\nz54qW7asHn74YasxciOnc5BhGPrggw/Ur18/jRgxQiVKlLCaFye365i5/xudD7POezl9DrnZ/61e\nw5w5c3TgwAHFx8drxIgRuf78byQ359IjR46oc+fOat68uXbs2KG33npL9evX1+TJk63G4lwKADCF\nAQA2KDAw0AgMDLytbfr27WtIMlJTU2+6Tt26dY1atWoZhmEYqampRrly5Yz69etnf9/b29u49957\njczMTMMwDKN79+7GmTNnbrnttWvXjK1btxrOzs6GJOPdd9811q5dawwYMMBYvXr1dcuHDh1qXL58\nOccs48aNMyQZkZGR2cuOHDli9OjR45bvQ1pamnH16lXjtddeM0aOHGlcvXrVuHz5suHo6GicOnXK\nuHr1qpGZmWls27bNmD59evZ2Xl5ext3+teLj42NIMpKTk62WX7lyxZBkNG/ePN/GCg8Pz36fb4ck\nY+HChbe1DW4tP47fjIwMIzo62pBkuLi4GKtXrzZOnDhhSDJq165tTJ061bhw4YIRERFhSDL8/f2z\nt83MzDQGDhxoHDx4MHtZp06dDDc3N+PixYuGYdz8+M7MzDROnjxp3HPPPYYkY/LkycaxY8eM5cuX\nG5KMli1b3tbrzOm4/+ijjww7Ozvj3LlzhmEYxqeffmpIMl588cXbWses/d/sfDh06FDj0qVLOX4O\nudl/Tq9BkuHl5ZX9dW4+/xvJ7bk0y4ULF4wpU6YY9vb2hiQjODg4x8/jZorauXThwoV3/fcHACDv\ncWYGYJPu5BfO6tWrG+XKlbvlOl988UX2D/EZGRlGrVq1DAcHh+zvly9f3pBkfPjhh0ZGRobx22+/\nZf9CkdO2devWNSQZ58+ft9rnzZbnNF58fLzh7OxsDB06NHvZ5MmTjdDQ0Fy9H7169TJmzZplGIZh\nHDx40KhUqVL2986dO2c89dRTRkZGRvayvCiM2rRpY0gyrl69arU8OTnZkGQ8+OCD+TbWqVOnDElG\nly5dbiszhVHey6/jNzMz87oywMPD47r/b93d3Q1XV9fsrzdv3mxIuuGfrOMpp+PR09PTaj+ZmZmG\nu7u74eTkdFuvM6f9dO7c2bBYLEZKSophGIZx5syZ636pz806Zu//Rue93HwOuRk7p9fwz/9HcrPf\nW7nVufRGPv/8c0OS0ahRoxzHvpmidi6lMAKAwomnpAHA/8THx6tSpUq3XGf48OG6ePGiZsyYoQsX\nLiglJSX7di9J+vzzzzV48GC9+OKLmj9/vmbOnKmyZcvmals7u7/uEr733nut9nmz5TmN5+7urqef\nflqzZs3SpEmTVLlyZYWFhWnChAnZ69SrV++611i+fHmdO3dOx48f1/bt2/XBBx/oypUrSkhIUL16\n9dSzZ0/FxMRo5MiRio6Ozt4uJSVFkhQVFSVHR8ebPlHtVurVq6fNmzfrwoULqlixYvbyxMRESVLl\nypXzbSwXFxdJf/1/gKInN8fvjW63Kl269HXLXFxcdOjQoeyvd+/eLW9vb+3fv/+mY+d0PP5z3xaL\nRS4uLjpz5swtM9/uflq2bKnVq1dr+fLl6tmzZ/b/7506dbqtdW50boiKiiqw/d/ovJebzyE3Y+f0\nGv4pN/u903Pp35+MlmXYsGF68cUX9ccff9x0fznhXAoAyAsURgDwP/b29srIyLjlOps3b1a/fv0U\nHBysLl266LvvvrP6fq9eveTj46ORI0dq/fr1at26tYKDg/XUU0/luO3tys14Y8eO1RdffKEPP/xQ\nvXv3VvPmzeXg8P+n/qioqBuOffXqVd1zzz06dOiQSpcurTfeeENJSUn64IMPJEnOzs764Ycfbrht\n/fr1Vbt2bR0+fPi2X5O3t7ckKS4uzuoXk7i4OElS69at822sv8+vgqInN8fvnUpKStLRo0d15cqV\n6wqmjIwM2dvb5/nxfTM57ef1119X5cqVNXToUG3btk2HDx/Wu+++azUJcW7Wudm5oaD2fyO5+Rxy\nM/btfla52e+dnktvxN7eXvfee6/c3NxumetWOJcCAPICk14DwP9UqlRJFy5cuOU6Q4YMkcViUZcu\nXSQp+xfUrB+M3377bdWtW1fr1q3TggULlJGRoddffz1X296u3IxXrVo1DRgwQLNmzdLMmTP11FNP\n5Wrsw4cPq0qVKtm/HB0+fNjqCT3Xrl2T8ddtzdl/sh75bBjGHZVF0l+Fm52dnTZs2GC1PCwsTI6O\njrf1qOvbHSvrX8tzukoFhVNujt875e3tratXr2ratGlWyw8cOKCZM2dKyvvj+2Zy2k9GRoYiIyO1\nY8cOvffee/rpp580fvx42dvbZ4+Rm3UK4/5z8znkZuzcfFZ/v+IoN/u9mZzOpTcSFxenuLg49enT\n55br3QrnUgBAXqAwAoD/adu2rS5fvpz9VLMbSUhIUFxcnLZu3arZs2fr4sWLkqRdu3bp5MmT+vDD\nD7Mfx9ynTx+5uLioevXqudo265auf94acbPlOY2X5ZVXXlFSUpJOnDiR68cyR0dHZxdAUu5+ycnJ\nO++8oxo1auibb7656ToeHh6aMGGCZs2apUuXLkmSLl26pFmzZum1117LfipPXo6VJetza9Wq1V29\nTpgjN8dv1rH092IgLS1N0l9XkfxzvawioWvXrqpbt66mTJmioUOHKiQkRK+99ppeeOEFDRkyRFLO\nx+O1a9eu23dW1tTU1Fy/zpz288477yg0NFSbN2/WqlWrtG3bNh06dMhqH7lZx+z93+i8l5vPITdj\n5/QaKlWqpLi4uOynf+VmvzeT07l08uTJ+te//qWDBw9K+uuKpJEjR6pPnz43veKKcykAoMAU/LRJ\nAJD/7mTS3LCwMEOSsXr16puu89VXXxmurq6Gj4+PsWnTJuOzzz4zXF1dDX9/f+Ps2bOGJKNGjRrG\npEmTjOeff97o3r27cfz48Vtu26pVK2PUqFHZk6iOGjXKCA8PN5KSkozJkydftzy3Wf7Oz8/PmDt3\nbq7fi3feecd47rnnsr92dXU1YmJibrlNTpNejxw50rBYLLmamHj27NnGgAEDjH//+99Gr169jODg\nYKunCeXlWFk+++wzw87Ozjh8+PAtx/wnMel1nsuP4zc+Pt54+eWXDUmGk5OTsXbtWmPVqlXZT6Qa\nNWqUce7cOeOTTz7JPuamTZuWfSydOHHC6N69u+Hq6mq4u7sbw4YNM/7888/s8W91PE6cODF7zEmT\nJhkXLlwwPvzww+xlY8aMue4JVDeT03G/Zs0aw83N7brJmV1dXY358+cbhmHkah2z9j9r1qxbnvdy\n+hxys/+cXsM333xjuLq6Gq+++mqu93szOZ1Lg4ODjQYNGhilSpUygoKCjBEjRhjr1q275Zi2eC5l\n0msAKJwshsENxgBsT+/evSVJixYtuq3tAgIC5OXlpY8++ig/YpkiNTVVDz74oHbt2qVSpUqZmuXg\nwYMKCgrS7t27C9VY0l9XEbi7u2v27Nm3tZ3FYtHChQuz/5/D3eP4vXPz58/XuXPn9MILL0iSMjMz\nFRcXp7CwML344os6d+5crtax5f3bAls7ly5atEh9+vRh3iMAKGSY9BoA/mbOnDlq3bq1xo8fbzW5\nZ1EWHBysbt26mV4WJSUlaeLEiZo1a1ahGkuStm/frujoaIWEhOTJeDBHUT5+b/QEt386ePDgDZ/G\nlWXy5Ml68803lZCQkL3Mzs5OHh4eatmypWrXrp2rde5UUdi/LeBcCgAoKMxhBAB/4+7uriVLlujF\nF1/UlStXzI5zxzZu3KiGDRuqTp06mjJlil566SWzIykmJkYfffSRHnzwwUI11qlTp/T2229r3bp1\nKlu27F2PB/MU5ePX+Mck8jf6c6uySJK2bNkiSfrwww+t5kzavXu3JkyYoHnz5uVqnTtVFPZvCziX\nAgAKCrekAbBJd3pLS5aYmBgtWbJEr7zySl7GKjBHjx7VI488IsMwNGfOHLVs2dLsSIVSWlqapk+f\nrmefffaOf8HhlrS8V9yP3zt15swZTZ48WStXrtSFCxfUoEEDubm5yd/fX0OGDJGTk1Ou1rHl/SN/\n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\nFRWlqKgonT9/Xg4ODmratKk6dOigDh06qEWLFipZsqTJ74L0448/qm/fvho5cqQ++ugjyiIAKADH\njx9X3759FRERoffff1/PPvss59+/OXPmjJ5//nktWbJEY8eO1dtvvy0HBwezYwEAcNsojIAiZP/+\n/Zo7d64WLFig2NhYubq6qm3btvL19VX79u11//335/l8EXFxcQoLC9PGjRsVFhammJgYlSxZUj16\n9NDAgQPVqVMnU34QXrBggYKCgvT888/rww8/5JcVACgA3333nYYPH66aNWtq0aJF8vLyMjtSoTV3\n7lw9++yz8vLy0sKFC1WnTh2zIwEAcFsojIBC7uzZswoJCdHcuXO1d+9e1apVS/3791fPnj3l4+NT\n4BOKnjx5UqtWrdL8+fO1ZcsWubm5qV+/fho0aJB8fHwKJENISIgGDRqkV155Re+8806B7BMAirPk\n5GSNGDFC8+bN06hRozRt2jQ5OzubHavQi4qKUu/evXX8+HHNmjVLffv2NTsSAAC5RmEEFFLR0dF6\n6623tHDhQt13330KCgrSwIED1aBBA7OjZUtISNDixYs1d+5cbd26Va1atdK4cePUtWvXfNvn/7F3\n52FR1f3/x1+srii4Em64IApyi7izhKwFKmiKO6OYYbdliuWeuWSltgiVG2oigxqukJosAiqChoKa\nIqKGOyqiiAuyzvn90Vd+dbuAyvCZGV6P6+q67oaZc57InWd4zzmfExYWhnHjxmHmzJn46quvlLYf\nIiL6W35+PgYNGoQ//vgDP/74IyZMmCA6Sa08ePAAEydORHh4OJYuXYrp06eLTiIiIqoUDoyIVExW\nVhaWLl2KjRs3okWLFpgxYwbGjRuHWrVqiU57qYMHD+Lrr79GTEwMHB0dMXfuXLi5uVXpPkJDQzF+\n/HjMmjULixcvrtJtExHRs27dugUPDw/cvHkTe/bsQY8ePUQnqa0lS5Zgzpw5mDZtGr799lteSk1E\nRCqveq9lIaIXys/Px5QpU2Bubo7Dhw9j7dq1yMzMxMSJE1V+WAQAjo6OiI6ORkpKCgwNDfHOO++g\nX79+OHPmTJVsf+PGjRg/fjzmzJnDYRERUTU4d+4cevfujcLCQvzxxx8cFr2hWbNmYceOHVixYgXe\ne+89FBYWik4iIiJ6KQ6MiASTJAlyuRydOnXC1q1bERISgtOnT8PX11ct76rSs2dPRERE4MSJEygr\n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\nvTWMRJhbst+s2UtuC9qfLfZJrx1RZGQknnvuOZQtW1btUopl6tSp+M9//oPk5GTjNDc3NwQFBaFd\nu3aoW7euitWRUrVr18a0adPULoNcBLc3+/Htt9+iQ4cO+PDDD01OYugI8ruazKPi4uLyXCmT/ic9\nPR2TJ082XtXFGccCgIMHD+LcuXNYs2aNVcazB8yua7PXvDG7hWNuXZu9Zs0RcusyDaNff/0Vb731\nFjIzM5GWllbgZcgdSUxMDABg3rx5CA8PR5kyZSAiOHz4MObMmWMXlwIlIqL8+fv747vvvsP48eOx\nbNkyu7gaj1Li4FfMsQcXL17E/PnzrXJSSnsdKzExETNmzMDu3bvh4+NT7PHsBbPr2uw1b8xu4Zhb\n12avWXOE3Bb7KmmOIjg4GDk5OXBzc8PmzZuNl5l2ZKtWrcK///1vrF69GgEBAejYsSPCwsJw5MgR\nrF69Gg0aNFC7RCIiKsQTTzyB6dOn48svv1S7FCphzZo1s9oVTOxxrJycHKxatQpRUVGoUaOGFSqz\nL8yu67LHvFlzLGfOLnPruuwxa9Ycy5a5dZkjjGrXro2zZ8+qXYZV+fv78wWPiMjB1a1bF++//77a\nZRBZlYeHBz788EO1y7ApZpeckbNnl7klZ2TL3LrMEUZERERERERERKQMG0ZERERERERERGSCDSMi\nIiIiIiIiIjLBhhEREREREREREZlgw4iIiIiIiIiIiEywYURERERERERERCbYMCIiIiIiIiIiIhNs\nGBERERERERERkQk2jIiIiIiIiIiIyAQbRkREREREREREZIINIyIiIiIiIiIiMsGGERERERERERER\nmWDDiIiIiIiIiIiITJTKb+Ivv/yCu3fvlnQtREREVvfXX3+VyHwiIyNLZD5kHZmZmdBoNPD09FS7\nFCrApUuXUKdOHZvPg9klcjz8vGrfUlNT4e3tDY1Go3YppFBB+8t5GkY1atTgGycRETmVmjVr2mzs\nwMBAuLu744033rDZPIhcVZcuXWw2do0aNbBx40Zml8jK3N3dERgYaLPx+XmVyDby21/WiIioUAsR\nERGRKnQ6HXx8fHDv3j3ExMSgffv2apdERIV4++238cUXX2Dfvn3o2LGj2uUQUSHGjRuHzz//HCNG\njMDy5cvVLoeKiecwIiIiIpfy999/4969e3Bzc8N///tftcshokLk5uZizZo1AIC1a9eqXA0RFSY5\nORlLly4FAOzdu1flasga2DAiIiIil/Lbb7/Bw8MDer0eP/zwA06ePKl2SURUgF27duHOnTsAgNWr\nVyM7O1vlioioIAsWLEBOTg4AID4+HlqtVuWKqLjYMCIiIiKX8ttvv0Gv1wMAPDw8MHv2bJUrIqKC\nREVFwcPDAwCQlpaG6OholSsiovykpaVh/vz5yM3NBQBoNBrExMSoXBUVFxtGRERE5DJEBHv37oVO\npwMAZGdnY+3atYiPj1e3MCLKIyMjA999953xiAUPDw9ERUWpXBUR5Wfp0qXIyMgw/tvDwwP79+9X\nsSKyBjaMiIiIyGWcO3cuz6WY3d3d8dlnn6lUEREVZPv27cjKyjL+OycnB5s3b0Z6erqKVRHRo7Kz\ns/Hf//7X+GWMYdovv/yiYlVkDWwYERERkcvYt28f3N3dTaZlZ2cjMjISN2/eVKkqIsrPmjVr8s3r\ntm3bVKqIiPKzZs2afN9Dz5w5g+TkZBUqImthw4iIiIhcxr59+6DRaPJM1+v1WLhwoQoVEVF+kpOT\nsXPnTuP5UAzc3d2xevVqlaoiokfp9XpMnz4939tEBAcOHCjhisia2DAiIiIil7Fnz548H0CBBz91\nmT9/PtLS0lSoiogetXnzZohInum5ubnYtWsXbt++rUJVRPSorVu34tKlS8aLSTzM09OT5zFycGwY\nERERkUv4559/Cr3E77179xAZGVmCFRFRQVatWlXo7Zs2bSqhSoioMNOmTcvz01GDrKws7Nmzp4Qr\nImtiw4iIiIhcQkxMDNzcCt710el0+O9//4vs7OwSrIqIHpWYmIh9+/aZnED3YSJitqFERLa3d+9e\nHD16tMCsAsDRo0dx7969EqyKrIkNIyIiInIJsbGxBX4LanDjxg2sXbu2hCoiovxs3Lix0Kzq9Xoc\nOHAAV69eLcGqiOhRs2fPLvSLGODBlzF//vlnCVVE1saGEREREbmEX375BTk5OQAenDjX09MTHh4e\nee53+fLlki6NiB6yZs2aQo9YAB4cZbRx48YSqoiI8nP58mWTcxe5ubmhdOnSKF26tLGRpNFoeB4j\nB1ZK7QKIiIiISkJQUBD0ej2Cg4MRGBgIvV6PqKgoLF++HA0bNkRQUBD8/f3h6empdqlELi0jIwPl\nypUz/lun0yE7OxteXl7GaRqNhpfrJlLZ2bNnkZaWhqtXryIpKQnffvstfvjhBwwfPhxJSUm4fPky\nrl+/Dh8fH7VLpSLSSH6XHyAiIiJycufOnUPDhg1x5MgRPPnkk2qXQ0QF2LBhA1566aV8r5pGRPYj\nPDwcO3fuxNGjR9UuhayEP0kjIiIilxQQEAAAhV45jYiIiJTRarXG91ZyDmwYERERkUsqX748fHx8\n2DAiIiKyAjaMnA8bRkREROSyAgIC2DAiIiKygsTERDaMnAwbRkREROSy2DAiIiKyDq1Wi+rVq6td\nBlkRG0ZERETkstgwIiIiKr6MjAzcvXuXRxg5GTaMiIiIyGWxYURERFR8165dAwA2jJwMG0ZERETk\nsqpXr86GERERUTEZ3kvZMHIubBgRERGRywoICMCNGzeQm5urdilEREQOS6vVwt3dHf7+/mqXQlbE\nhhERERG5rICAAOj1eiQlJaldChERkcPSarXw9/eHu7u72qWQFbFhRERERC4rMDAQAPizNCIiomK4\ndu0af47mhNgwIiIiIpcVEBAAjUbDhhEREVExaLVa45cw5DzYMCIiIiKX5enpCT8/PzaMiIiIikGr\n1fIIIyfEhhERERG5tICAAOPlgImIiMhyWq0W1atXV7sMsjI2jIiIiMilBQQE8AgjIiKiYuARRs6J\nDSMiIiJyaWwYERERFV1qairS09PZMHJCbBgRERGRS2PDiIiIqOgM76FsGDkfNoyIiIjIpVWvXp0N\nIyIioiJiw8h5sWFERERELi0gIAC3b99GZmam2qUQERE5HK1WC09PT1SuXFntUsjK2DAiIiIilxYQ\nEAAR4ZXSiIiIiiAxMRHVqlWDRqNRuxSyMjaMiIiIyKUZDqHnz9KIiIgsd+3aNf4czUmxYUREREQu\nrVq1anBzc2PDiIiIqAi0Wi0bRk6KDSMiIiJyaR4eHqhSpQobRkREREXAhpHzYsOIiIiIXF5AQADP\nYURERFQEWq0W1atXV7sMsgE2jIiIiMjlBQQE8AgjIiIiC4kIjzByYmwYERERkctjw4iIiMhyycnJ\nyMrKYsPISbFhRERERC6PDSMiIiLLGd47AwMDVa6EbIENIyIiInJ5bBgRERFZzvDeySOMnBMbRkRE\nROTyAgICkJKSgoyMDLVLISIichharRblypVDxYoV1S6FbIANIyIiInJ5hm9GeZQRERGRcrxCmnNj\nw4iIiIhcHhtGRERElrt27Rp/jubE2DAiIiIil1e1alWUKlWKDSMiIiILaLVaNoycGBtGRERE5PLc\n3NxQrVo1NoyIiIgswIaRc9OIiKhdBBEREVFJS0pKQlxcHC5cuIALFy5g9erV8PLygpeXF5KTk5Gc\nnIzMzMwCH+/j4wM/Pz/4+vrCz88PQUFBqFevnvGvcePGKFu2bAkuEZHjeDR/Fy5cwM2bN3Hnzh3m\nj8jGrJm/f/75Bw0aNEDPnj2ZPyfEhhERERE5vfj4eBw8eBCHDx/GiRMncPz4cdy8eRMAULlyZdSq\nVQu1atWCv78//Pz8jH9eXl4FjpmSkoLk5GTcvn0bycnJSExMRHx8PC5fvozMzEy4ubmhbt26aNas\nGZo1a4Y2bdqgTZs28PHxKanFJrILzB+Repg/Kg42jIiIiMjpXLlyBdHR0YiOjsaBAweQlJQELy8v\ntGjRAs2bN8cTTzyB5s2bo1GjRihfvrzV56/VanHq1CkcO3YMx48fx9GjRxEXFweNRoPGjRujU6dO\neOaZZ/DUU0+hXLlyVp8/kZqYPyL1MH9kTWwYERERkVM4ceIE1q1bhy1btiAuLg4+Pj7o1q0bOnfu\njJCQEDRv3hweHh6q1Xfnzh0cOnQIBw8exM8//4w///wT7u7u6NixI8LCwhAWFobKlSurVh9RcTB/\nROph/shW2DAiIiIih5WQkIBvv/0Wa9euRVxcHIKDgzFgwAD07NkT7du3V3UH2Zxbt25h165d+OGH\nH7Bt2zZkZ2ejW7duGDp0KF588UWUKVNG7RKJCsX8EamH+aOSwIYREREROZTc3Fxs27YNX3/9NaKj\no+Hr64uXXnoJgwYNQrt27aDRaNQu0WLp6enYunUr1q5di+joaHh7e2Po0KEYNWoUmjZtqnZ5REbM\nH5F6mD8qaWwYERERkUO4c+cOFixYgMWLFyM1NRVhYWF4+eWX8dRTT8HNzU3t8qzm7t272LBhA1au\nXInY2Fi0b98eH3zwAXr37u2QHwbIOTB/zB+ph/lj/tTChhERERHZtbt37+Lzzz/HwoULcf/+fbz2\n2mt47733UKNGDbVLs7m9e/di1qxZ2LVrF1q0aIFJkybh+eef544zlRjmj/kj9TB/zJ/a2DAiIiIi\nu3Tnzh3Mnz8fCxYsgEajwbhx4/D222+jUqVKapdW4v766y/MnDkTmzdvRtOmTfHxxx/jhRdecKpv\nlsm+MH//w/xRSWP+/of5UxcbRkRERGRXsrOzMXPmTMydOxfe3t748MMP8dprr/HyuwAuXbqE2bNn\n4+uvv8bjjz+OhQuT0VqGAAAgAElEQVQXomPHjmqXRU6E+SsY80e2xvwVjPlTB9tyREREZDdiY2PR\ntm1bzJw5E6+99hpOnz6NcePGcWf5/6tTpw6WLFmC33//HeXLl0eXLl0watQo3Lp1S+3SyAkwf4Vj\n/siWmL/CMX/qYMOIiIiIVHf37l2MHj0aHTt2ROXKlXHs2DHMnz8fvr6+apdml1q0aIH9+/dj5cqV\n2LlzJxo1aoSVK1eqXRY5KObPMswfWRPzZxnmr2SxYURERESq2rx5M5o0aYJt27Zh3bp12LVrFxo3\nbqx2WXZPo9FgyJAhiIuLw9ChQzFy5EiEhobi0qVLapdGDoT5Kxrmj6yB+Ssa5q/ksGFEREREqkhN\nTcXw4cPx4osvom/fvoiLi8OAAQPULsvheHt7Y968efjjjz9w584dNG/eHN98843aZZGdY/6sg/mj\nomD+rIP5sz2e9JqIiIhKXExMDIYNG4asrCysWLECoaGhapfkFHJycjB58mTMnj0bffv2RWRkpEte\nVYcKx/zZBvNHSjB/tsH82QaPMCIiIqIStWDBAnTt2hXNmjXDiRMnuLNsRR4eHpgxYwZ++eUX/Pnn\nn2jVqhWOHTumdllkR5g/22H+yBzmz3aYP9tgw4iIiIhKRGpqKvr27Yv3338fX375JbZs2YLKlSur\nXZZT6ty5M06ePInmzZujbdu2WLZsmdolkcqYv5LD/NGjmL+Sw/xZl/vkyZMnq10EERERObekpCQ8\n++yz+Pvvv/H999+jf//+apfk9Dw9PREWFoaMjAxMnDgRWVlZeOqpp6DRaNQujUoY81fymD8yYP5K\nHvNnPTyHEREREdnUyZMn0bt3b3h5eWHHjh2oXbu22iW5nKioKIwcORJ9+/bFt99+Cy8vL7VLohLC\n/KmP+XNdzJ/6mL/i4U/SiIiIyGb27NmD9u3bIzg4GLGxsdxZVsngwYMRHR2Nn3/+GU8//TSSk5PV\nLolKAPNnH5g/18T82Qfmr3jYMCIiIiKb2L59O3r16oXu3btj165d8PPzU7skl9a5c2fExsYiISEB\nXbp0QVJSktolkQ0xf/aF+XMtzJ99Yf6Kjg0jIiIisrr169fjhRdeQFhYGNatWwdPT0+1SyIAjRo1\nwr59+5Ceno5OnTrhypUrapdENsD82SfmzzUwf/aJ+SsaNoyIiIjIqjZt2oQhQ4Zg+PDhWLFiBdzd\n3dUuiR5Su3Zt7Nu3DxqNBk899RQSExPVLomsiPmzb8yfc2P+7BvzZzk2jIiIiMhq1q9fj4EDB+KN\nN95AZGQk3Ny4q2GPgoKCEBMTgzJlyqBz587QarVql0RWwPw5BubPOTF/joH5swyvkkZERERW8euv\nv+LZZ5/FCy+8gJUrV/KbVQdw5coVdOrUCX5+fvjtt9/g4+OjdklURMyf42H+nAfz53iYP2XYMCIi\nIqJii4uLQ/v27dGpUyds2rQJpUqVUrskUuj8+fPo0KEDmjdvjh9//JHPnQNi/hwX8+f4mD/HxfyZ\nx4YRERERFUtCQgLatm2Lhg0b4qeffkLp0qXVLoksdOTIEXTu3Bm9e/dGVFQUNBqN2iWRQsyf42P+\nHBfz5/iYv8K5T548ebLaRRAREZFjys7ORu/evZGZmYmffvqJh3Q7qOrVq+Oxxx7D5MmT4e3tjZCQ\nELVLIgWYP+fA/Dkm5s85MH+FY8OIiIiIimzcuHHYtWsX9uzZg9q1a6tdDhVDo0aN4OHhgUmTJqFL\nly4IDg5WuyQyg/lzHsyf42H+nAfzVzD+JI2IiIiK5Ouvv8aoUaOwZcsWPPfcc2qXQ1YgIhg4cCB+\n/fVX/PXXXwgKClK7JCoA8+d8mD/Hwfw5H+Yvf2wYERERkcXOnj2LFi1a4PXXX8dnn32mdjlkRSkp\nKWjVqhWCgoKwe/duXhraDjF/zov5s3/Mn/Ni/vJiw4iIiIgscv/+fbRq1QoVKlTAb7/9xquKOKFT\np06hVatWmDhxIj7++GO1y6GHMH/Oj/mzX8yf82P+TPEcRkRERGSRDz74AL/++it27dqFSpUqqV0O\n2UDVqlXh7e2NSZMmITQ0FDVq1FC7JPr/mD/nx/zZL+bP+TF/pniEERERESl24MABdOzYEZGRkXj1\n1VfVLodsSK/Xo0ePHtBqtThy5Ag8PT3VLsnlMX+ug/mzP8yf62D+/ocNIyIiIlIkIyMDTZs2xRNP\nPIEtW7aoXQ6VAK1WiyZNmuCNN97ArFmz1C7HpTF/rof5sx/Mn+th/h7gWZyIiIhIkSlTpiA5ORmL\nFi1SuxQqIQEBAZg+fToiIiJw+PBhtctxacyf62H+7Afz53qYvwd4hBERERGZdfbsWTRt2hSzZ8/G\n+PHj1S6HSpBOp0NISAg8PDwQExMDjUajdkkuh/lzXcyf+pg/18X8sWFERERECvTs2RNarRZ//fUX\n3N3d1S6HStjRo0fRqlUrrFixAkOGDFG7HJfD/Lk25k9dzJ9rc/X8sWFEREREhfrpp5/Qs2dP7Nu3\nDx06dFC7HFLJqFGjsHPnTpw9exblypVTuxyXwfwRwPyphfkjwLXzx4YRERERFUhE0LJlS9SoUYMn\n+nRx165dQ8OGDfHJJ5/g//7v/9QuxyUwf2TA/JU85o8MXDl/POk1ERERFWjdunU4ceIE5syZo3Yp\npLLq1avjvffew4wZM3Dnzh21y3EJzB8ZMH8lj/kjA1fOH48wIiIionzl5uaicePGCAkJwYoVK9Qu\nh+xAamoqateujTfffBNTp05VuxynxvzRo5i/ksP80aNcNX88woiIiIjytX79ely6dAnh4eFql0J2\nwsfHB2PHjsXnn3+OlJQUtctxaswfPYr5KznMHz3KVfPHhhERERHla+7cuQgLC0PDhg3VLoXsyLhx\n46DX6xEZGal2KU6N+aP8MH8lg/mj/Lhi/tgwIiIiojx27dqF48eP89tVyqNixYoYPXo0IiIikJmZ\nqXY5Ton5o4Iwf7bH/FFBXDF/PIcRERER5dGrVy+kp6fjt99+U7sUskNXrlxBvXr18M0332Do0KFq\nl+N0mD8qDPNnW8wfFcbV8seGEREREZm4fPky6tWrh02bNqFfv35ql0N2asCAAUhMTERsbKzapTgV\n5o+UYP5sg/kjJVwpf/xJGhEREZmIjIxEUFAQnnvuObVLITs2ZswYHDhwAMeOHVO7FKfC/JESzJ9t\nMH+khCvljw0jIiIiMsrJycE333yD4cOHw93dXe1yyI516dIF9evXx/Lly9UuxWkwf6QU82d9zB8p\n5Ur5Y8OIiIiIjHbv3o0bN27glVdeUbsUsnMajQbDhw/HunXrkJubq3Y5ToH5I6WYP+tj/kgpV8of\nG0ZERERktHbtWoSEhKBOnTpql0IOYNiwYbh16xZ2796tdilOgfkjSzB/1sX8kSVcJX9sGBEREREA\nIDMzE1u3bkX//v3VLoUcRM2aNdGmTRts3LhR7VIcHvNHlmL+rIf5I0u5Sv7YMCIiIiIAwJ49e5CW\nlsYrw5BFwsLCsG3bNqc/LN/WmD8qCubPOpg/KgpXyB8bRkRERAQA2L59O/71r38hODhY7VLIgTz/\n/PO4desWDh06pHYpDo35o6Jg/qyD+aOicIX8sWFEREREAB7sMPfu3VvtMsjB1K1bFw0bNsSOHTvU\nLsWhMX9UFMyfdTB/VBSukD82jIiIiAinTp1CQkICnn32WbVLIQfUo0cP7Ny5U+0yHBbzR8XB/BUP\n80fF4ez5Y8OIiIiIsGfPHvj6+qJly5Zql0IOqFu3bjh+/Dhu376tdikOifmj4mD+iof5o+Jw9vyx\nYURERESIiYlBhw4d4O7urnYp5IA6duwIjUaDmJgYtUtxSMwfFQfzVzzMHxWHs+ePDSMiIiJCTEwM\nQkJC1C6DHFTFihXRuHFjHDhwQO1SHBLzR8XB/BUP80fF4ez5Y8OIiIjIxV29ehVarRZt27ZVuxRy\nYCEhITh48KDaZTgc5o+sgfkrGuaPrMGZ88eGERERkYv766+/4ObmxvM3ULG0bt0aR48ehV6vV7sU\nh8L8kTUwf0XD/JE1OHP+2DAiIiJycceOHUPdunXh7e2tdinkwJo1a4b09HRcuHBB7VIcCvNH1sD8\nFQ3zR9bgzPljw4iIiMjFHT9+HE888YTaZZCDe/zxx+Hu7o4TJ06oXYpDYf7IGpi/omH+yBqcOX9s\nGBEREbm4U6dO4fHHH1e7DHJwXl5eqFOnDk6dOqV2KQ6F+SNrYP6Khvkja3Dm/LFhRERE5MJ0Oh0u\nX76MBg0aqF0KOYH69es75SH5tsL8kTUxf5Zh/sianDV/bBgRERG5sMTEROTk5KBWrVpql0JOoHbt\n2rh8+bLaZTgM5o+sifmzDPNH1uSs+WPDiIiIyIXFx8cDeLCjQ1RczrrDbCvMH1kT82cZ5o+syVnz\nx4YRERGRC7t69So8PDzg7++vdilOKSUlpUTmk5OTg5iYmBKZV2Fq1qyJpKQk5Obmql2KQ2D+bIv5\no8Iwf7bF/DkHNoyIiIhc2K1bt1C5cmW4uXGXwJrmzJmDTp06oVKlSjadT3JyMiZNmgQ/Pz907NjR\npvNSokqVKtDr9UhOTla7FIfA/NkG88f8KcH82Qbz51z5YzqIiIhc2O3bt22+U+eK3nrrLZw8eRI6\nnc6m8/Hz88P06dNRpkwZm85HKcO2dPv2bZUrcQzMn20wf8yfEsyfbTB/zpU/NoyIiIhc2O3bt1G5\ncmW1y3A6Xl5eqFq1aonMS6PR2M2HHmfdYbYV5s82mD/mTwnmzzaYP+fKHxtGRERELiw1NRU+Pj5q\nl0FOokKFCgAebFdkHvNH1sT8WYb5I2ty1vyxYUREROTCsrKy4OnpWaLzzMjIwOrVqzFo0CC0a9cO\nmzZtQkBAAFq3bo0zZ87g2LFj6N69OypUqIBWrVrh9OnTJo9PT0/H9OnTMWLECLRs2RLdunXD33//\nbbz93Llz6NevHyZOnIihQ4eic+fOOH78OEQEW7duxeuvv47AwEDcuHED/fr1g4+PD1q3bm0yhhL3\n7t1DREQERowYgXfeeQdt2rTBrFmzoNfrTe6XkJCAHj16wMfHB61atcKJEycAAEuWLIFGo4FGowHw\nYCczIiLCOK049c6dOxelS5fG+PHjsX//fouWqzgM21JWVlaJzdORMX/MnzUxf5Zh/pg/a3La/AkR\nERG5rOeff16GDBlSovPU6XRy7tw5ASAVK1aU6Oho+eeffwSA1K1bV2bNmiV3796VY8eOCQDp3r27\n8bF6vV6GDRsmcXFxxmmhoaFStWpVSUlJERGR+vXrS506dUREJDs7WypUqCCNGjUSvV4vCQkJUr58\neQEgU6dOlfj4ePnxxx8FgLRr107xMuTk5EhoaKgMHTpUdDqdiIhERkYKANmyZYuIiDRs2FAAyKRJ\nk+Ty5cuyfft2ASAdOnQwjlOnTh15dHfMMM2Seg3zEhG5ffu2DBkyRI4fP654eazJ3d1d1q5dq8q8\nHQ3zx/xZG/OnHPPH/FmbM+aPDSMiIiIX1rNnT3nllVdKfL56vV4ASMOGDY3TgoKC8uw8+vv7i6+v\nr/Hf+/fvFwD5/v3www8iIrJ48WKJjIwUkQc753Xq1JFSpUoZx2jQoIHJfPR6vfj7+0vp0qUV1x8R\nESEA5MyZM8Zp2dnZsnz5cklOThaR/+3EGnaodTqd+Pn5iZeXl/ExD+/oFjRNSb2Gx1y8eFFGjhwp\nN27cULws1ubl5SXffvutavN3JMwf82dtzJ9yzB/zZ23OmL9Slh2PRERERM5ERFSZr+Ew9IeVK1cu\nz7SKFSvi7Nmzxn//+eefaNy4MU6dOlXg2G+88QZSUlKwYMEC3L17F1lZWcjNzS1w3hqNBhUrVsT1\n69cV179nzx4AQFBQkHGah4cHRowYkee+hks2u7m5oUqVKibLo4Ql9fbq1QvNmjXjiVwdBPPH/JF6\nmD/mj8zjOYyIiIhcmKenJ7Kzs9UuQ7H09HRcvnwZGRkZeW4zXMJ3//79aNKkCerXr4///Oc/KF++\nvNXrMFwF5fz581Yfuzjmzp2L9evXY/bs2arVkJWVZTeXObZ3zF/RMH8FY/6UY/6KhvkrmDPmjw0j\nIiIiF+ZoO8yNGzfG/fv38+wQnj59Gl988QUAYMSIEdBoNOjZsyeA/+1IW/Pb5JYtWwIAZsyYYXKS\nz/j4eGzcuFHxOIZvTzMzM43TDM9HUert1asXwsPDER4ejh07dlj8+OLKzc2FXq8v8RPJOirmr2iY\nv/wxf5Zh/oqG+cufs+aPP0kjIiJyYaVLl8bdu3dLfL6Gq4g8vFOYk5MD4MG3qIZvRQ330+l0cHd3\nR58+fVC/fn1MmzYNiYmJeOqppxAXF4c//vgDmzZtAgAkJycjJSUFsbGxiIuLQ0pKCgDgjz/+QEBA\ngHHnVESMO6xpaWkAHuysli5d2mz94eHhWLNmDTZt2oRu3brhxRdfRFJSEv7880989913xuUwjO3t\n7Q3gf5fbNSxj48aNcebMGUybNg2vvPIKoqOjjfVGR0cjNDRUUb2GnWy9Xo8pU6bg4MGDGDx4MPbu\n3Ysnn3xS2ZNiBYbny9l2mG2F+WP+rIn5swzzx/xZk7Pmz33y5MmT1S6CiIiI1LF3717Ex8fne+4B\nW7l+/TqmTZuGgwcPIi0tDSEhITh//jwWLVoEEUFGRgZat26N5cuXY+3atQAenN+hYcOG8Pb2xvPP\nP49Lly4hOjoav/zyC4KCgvDll1/Cz88PAFClShXs27cPsbGxGDZsGJo0aYIDBw7g3LlzuHXrFrZu\n3QrgwTkVmjdvjsWLFxt3tjMzM9GxY0d4eHgUugze3t4YMGAAEhMTceTIEezevRvVqlXDokWLUKFC\nBURERBh3nO/du4cOHTpg/vz52Lx5s3E+Xbp0Qbt27XDixAl89913iImJwZtvvonDhw+jU6dOqFGj\nBnbv3o0NGzYUWK9Wq8Xhw4exbds2AA8+ANWrVw8VKlTAunXrEBUVBQBo2rRpiRwmf/PmTXz22Wf4\n97//jRo1ath8fo6O+WP+rIn5swzzx/xZk7PmTyNqne2LiIiIVDdlyhRs2LCh0JNoEil1/PhxNG/e\nHGfOnEHDhg3VLsfuMX9kTcyfZZg/siZnzR/PYUREROTCKlWqhFu3bqldhl3RaDRm/86cOaN2mXbJ\ncDLUSpUqqVyJY2D+8mL+io75swzzlxfzV3TOmj+ew4iIiMiFVapUCcnJydDr9cbL37o6HnxddDdv\n3oSbmxsqVqyodikOgfnLi/krOubPMsxfXsxf0Tlr/pgMIiIiF1azZk3k5uYiMTFR7VLICcTHxyMg\nIAClSvE7SSWYP7Im5s8yzB9Zk7Pmjw0jIiIiF1arVi0AD3Z0iIorPj4etWvXVrsMh8H8kTUxf5Zh\n/sianDV/bBgRERG5sOrVq8PT05M7zGQVzrrDbCvMH1kT82cZ5o+syVnzx4YRERGRC3Nzc0NwcDAu\nXryodinkBC5evIg6deqoXYbDYP7Impg/yzB/ZE3Omj82jIiIiFzcE088gePHj6tdBjm49PR0XLx4\nEU888YTapTgU5o+sgfkrGuaPrMGZ88eGERERkYtr1qwZTpw4oXYZ5OBOnjwJvV7vlDvMtsT8kTUw\nf0XD/JE1OHP+2DAiIiJycU2bNkV8fDzS0tLULoUc2MmTJ1G+fHmnPIeDLTF/ZA3MX9Ewf2QNzpw/\nNoyIiIhcXIsWLaDX63H48GG1SyEH9scff+DJJ5+Emxt3Ly3B/JE1MH9Fw/yRNThz/pxviYiIiMgi\nQUFBqFWrFmJiYtQuhRzY/v370aFDB7XLcDjMH1kD81c0zB9ZgzPnjw0jIiIiQrt27XDw4EG1yyAH\ndfPmTZw9exbt27dXuxSHxPxRcTB/xcP8UXE4e/7YMCIiIiK0bdsWhw4dgk6nU7sUckCHDh0C8GA7\nIssxf1QczF/xMH9UHM6ePzaMiIiICD169MCdO3f4LSsVyY4dO9CyZUtUqlRJ7VIcEvNHxcH8FQ/z\nR8Xh7Pljw4iIiIjQoEED1KtXDzt37lS7FHJAP/74I5599lm1y3BYzN//Y+++46qs+z+Ovw9DcY/M\nypUrcVQK5URwEJaalpnZcDSsu9I7NUstG5amDe92OUozUdOGmuZExIHiBDEVFRV3KIoDUGRdvz/8\nyX2TI9QD3zNez8ejx+M+l4cv72Pn3c35cF3fCzeC/t0Y+ocb4er9Y2AEAAAkSSEhIVq8eLHpGHAy\nO3fu1MGDBxUSEmI6ilOjf7ge9M8+6B+uhzv0j4ERAACQJHXq1EnR0dHav3+/6ShwInPmzFGFChVc\ndv+GwkL/cD3on33QP1wPd+gfAyMAACDpwm9Yb775Zs2cOdN0FDiRn376SY899pi8vLxMR3Fq9A/X\ng/7ZB/3D9XCH/jEwAgAAkiQvLy916dJFv/zyi+kocBI7duxQbGysunfvbjqK06N/uFb0z37oH66V\nu/SPgREAAMj16KOPatOmTdq7d6/pKHACv/32m2677TYFBASYjuIS6B+uBf2zL/qHa+Eu/WNgBAAA\ncgUHB6tmzZqaMGGC6ShwcNnZ2Ro/fryefvppeXp6mo7jEugf8ov+2R/9Q365U/8YGAEAgFw2m029\ne/fW5MmTlZGRYToOHFhYWJgOHTqkPn36mI7iMugf8ov+2R/9Q365U/8YGAEAgDx69eqlpKQkzZ8/\n33QUOLBJkyYpICBANWvWNB3FpdA/5Af9Kxj0D/nhTv2zWZZlmQ4BAAAcy4MPPqiUlBStWLHCdBQ4\noP3796t27dqaPHmynnrqKdNxXA79w9XQv4JF/3A17tY/BkYAAOASkZGRCgwM1Jo1a9S8eXPTceBg\nXnnlFS1YsEA7d+50+f0bTKB/uBr6V7DoH67G3frHJWkAAOASLVu2VOPGjfXFF1+YjgIHc+rUKU2e\nPFn9+vVzix+WTaB/uBL6V/DoH67EHfvHwAgAAFzWkCFD9OuvvyouLs50FDiQzz//XEWKFHGLzT5N\non+4HPpXOOgfLscd+8claQAA4LIsy1LTpk1VpUoVzZo1y3QcOICjR4+qVq1aGj58uF577TXTcVwa\n/cPf0b/CQ//wd+7aP84wAgAAl2Wz2fT2229r9uzZWrdunek4cAAffvihypQpo379+pmO4vLoH/6O\n/hUe+oe/c9f+cYYRAAC4IsuydO+996pChQpavHix6Tgw6MCBA6pbt65GjBihQYMGmY7jFugfLqJ/\nhY/+4SJ37h8DIwAAcFVRUVEKCAjQ7Nmz9dBDD5mOA0Mee+wxbdmyRVu2bFGRIkVMx3Eb9A8S/TOF\n/kFy7/4xMAIAAP/oiSee0IYNG7Rt2zYVLVrUdBwUslWrVikoKEjz5s3Tgw8+aDqO26F/7o3+mUX/\n3Ju794+BEQAA+EcJCQmqX7++Ro0apYEDB5qOg0KUnZ2t5s2bq1SpUgoPDzcdxy3RP/dF/8yjf+6L\n/rHpNQAAyIcaNWpo+PDhGjZsmHbv3m06DgrRp59+qq1bt2r8+PGmo7gt+ue+6J959M990T/OMAIA\nAPmUlZWlpk2bqlSpUoqIiJDNZjMdCQVs9+7duvvuu/XOO+9o6NChpuO4Nfrnfuif46B/7of+XcDA\nCAAA5FtUVJRatmypCRMm6LnnnjMdBwUoJydH999/v/766y9FR0e73Uafjoj+uQ/653jon/ugf//F\nJWkAACDfmjdvrmHDhqlfv376888/TcdBAfrwww+1evVqzZw5061/WHYk9M990D/HQ//cB/37L84w\nAgAA1yQrK0tBQUFKSUnRhg0b5OPjYzoS7CwqKkpBQUH6+OOP2eTVwdA/10f/HBf9c330Ly8GRgAA\n4Jrt3LlT99xzj1544QV9+umnpuPAjk6fPq3GjRurSpUqWrp0qTw8OCHd0dA/10X/HB/9c13071Ke\nw4cPH246BAAAcC4VKlRQ/fr1NXDgQFWrVk1+fn6mI8EOsrOz1blzZyUmJiosLEwlS5Y0HQmXQf9c\nE/1zDvTPNdG/y2NkBgAArsvDDz+sl19+Wa+88oq2bdtmOg7s4KOPPtLy5cs1bdo0VaxY0XQcXAX9\ncz30z3nQP9dD/y6PS9IAAMB1y8jIUOvWrZWYmKi1a9fyQ5YTmzVrlrp166YxY8awb4OToH+ug/45\nH/rnOujflTEwAgAANyQ5OVkBAQEqVqyYVq5cyWncTmjZsmVq3769Xn75ZX322Wem4+Aa0D/nR/+c\nF/1zfvTv6hgYAQCAG7Z79261aNFCLVq00K+//iovLy/TkZBP8fHxCggIUPPmzTVr1ix5enqajoRr\nRP+cF/1zfvTPedG/f8bACAAA2MX69esVHByszp07a8qUKfzg5QT279+voKAgVa5cWUuXLlXx4sVN\nR8J1on/Oh/65DvrnfOhf/jAwAgAAdhMVFaWQkBC1b99eM2bM4IdmB7Zv3z4FBQXplltuUXh4uEqX\nLm06Em4Q/XMe9M/10D/nQf/yj7ukAQAAu2nevLlCQ0M1Z84cvfjii8rJyTEdCZdx6NAhPfDAAypa\ntKjmzZvHD8sugv45B/rnmuifc6B/14aBEQAAsKsuXbpo6tSp+vHHH9W7d29lZ2ebjoT/kZCQoKCg\nIOXk5Cg8PFy33nqr6UiwI/rn2Oifa6N/jo3+XTt25AIAAHbXvXt3lShRQt26dVN6erqmTp2qokWL\nmo7l9uLi4tSuXTuVK1dOS5Ys4YdlF0X/HBP9cw/0zzHRv+vDGUYAAKBAPPjgg5o/f76WLFmidu3a\nKTk52XQkt7ZixQoFBASoatWqWr58OT8suzj651jon3uhf46F/l0/BkYAAKDAtG3bVqtXr9b+/fsV\nEBCghIQE05Hc0rRp03T//fcrJCRE4eHhKl++vOlIKAT0zzHQP/dE/xwD/bsxDIwAAECBuvPOO7V2\n7VqVKlVKjRs31sKFC01HchuZmZkaNGiQevbsqVdffVUzZsxQsWLFTMdCIaJ/5tA/0D9z6J99MDAC\nAAAF7tZbb+jK2TEAACAASURBVFVkZKS6du2qjh07qn///srMzDQdy6Xt3btXzZo108SJEzV37lyN\nGjVKNpvNdCwYQP8KH/3DRfSv8NE/+/EcPnz4cNMhAACA6/P09FSnTp1UtmxZffDBB1qxYoWCg4NV\npkwZ09Fczrx589S5c2fl5ORo4cKFCgoKMh0JhtG/wkP/8Hf0r/DQP/viDCMAAFCo+vfvr4iICO3b\nt08NGzbUr7/+ajqSyzh37pz69u2rhx56SEFBQdqwYYMaNWpkOhYcCP0rOPQP/4T+FRz6VzAYGAEA\ngELXsmVLxcbGqlOnTurWrZt69Oih48ePm47l1CIjI+Xv76/Q0FBNnDhRv/76q2666SbTseCA6J/9\n0T/kF/2zP/pXcBgYAQAAI0qXLq0ff/xRs2bNUkREhOrXr6+ffvrJdCynk5KSon79+qlVq1aqWrWq\nNm/erGeeecZ0LDg4+mcf9A/Xg/7ZB/0reAyMAACAUV26dNH27dv1yCOP6KmnnlK7du20fft207Ec\nnmVZmjZtmurVq6eZM2fqhx9+0JIlS1SzZk3T0eBE6N/1oX+wB/p3fehf4WFgBAAAjCtTpozGjRun\nyMhInTp1So0aNdKAAQN08uRJ09Ec0saNGxUYGKjevXurU6dOiouLU69evUzHgpOif9eG/sGe6N+1\noX+Fi4ERAABwGC1atNDatWv13Xff6ZdfflGNGjU0fPhwnTp1ynQ0hxAbG6suXbqoSZMm8vHxUUxM\njMaOHasKFSqYjgYXQP+ujv6hING/q6N/ZjAwAgAADsXDw0O9e/dWfHy8hg0bpm+++UY1atTQu+++\nq2PHjpmOZ8T69evVtWtX+fn56ciRI1q0aJGWLl2qu+66y3Q0uBj6dyn6h8JC/y5F/8xiYAQAABxS\n8eLF9frrr2vv3r169dVX9e233+r222/X888/7xZ7POTk5GjOnDkKDAxU06ZNtX//fs2ZM0fr1q1T\nu3btTMeDi6N/9A/m0D/65yhslmVZpkMAAAD8k4yMDM2YMUMfffSRtm/frnvuuUcvvPCCnnzySZUs\nWdJ0PLvZs2ePvvvuO/34449KSkrSk08+qf79++uee+4xHQ1ujP7RP5hD/+ifKQyMAACAU8nKytLc\nuXM1ceJELV68WGXLltXjjz+uJ554Qi1atJDNZjMd8Zqlpqbq999/1/Tp07V48WKVLl1aPXr00PPP\nP89p93Ao9A8wh/6hsDEwAgAATuvgwYOaPHmyfvrpJ8XFxen2229Xt27dFBISosDAQBUrVsx0xCs6\ncuSIli5dqoULF2ru3LnKyMjQfffdpx49eqhr167y8fExHRG4KvoHmEP/UBgYGAEAAJewZcsWzZgx\nQ3PmzFFcXJx8fHwUEBCg1q1bKygoKPfOKqYcPXpUq1at0sqVKxUeHq7t27erSJEiCgwM1KOPPqpH\nH32Uu73AadE/wBz6h4LCwAgAALic/fv3a/HixVq8eLHWrFmjxMREFS1aVPfee6/uvPNO1a9fX/Xr\n11fdunVVpUoVu37vjIwM7dmzR9u3b1dcXJy2bdum2NhYxcXFycPDQ/Xr11dQUJAeeOABtW3bViVK\nlLDr9wdMo3+AOfQP9sTACAAAuLx9+/YpKipKGzdu1JYtWxQbG6ukpCRJF+5GU7t2bd1xxx269dZb\nVb58+dx/rnZK/+nTp5WcnKwTJ04oOTlZBw4cUHx8vA4cOKDs7Gx5eHiocuXKSkxMVP/+/dWuXTs1\nbdpUpUuXLqyXDTgEU/2rVauWGjZsqIYNG6pp06b0D27pYv9++OEHrVq1SqVKlaJ/yDcGRgAAwC0l\nJiYqPj5e+/btU0JCgvbv36+jR4/q2LFjSkxMVFJSktLT06/49WXKlNGtt96qm2++WTfffLOqVq2q\n6tWr6/bbb1f16tVVt25dTZw4Ua+88ooeeughzZkzpxBfHeDYCqN/xYsXL8RXBDiupKQk1apVSykp\nKUpMTJRlWfQP+cLACAAAoIAMGDBAX331lXJycrR8+XK1atXKdCTA6bzwwgv67rvvtHTpUgUHB5uO\nAzidl19+WRMmTFB2drYiIyMVEBBgOhKchIfpAAAAAK5q+/btysnJkaenp55//nllZmaajgQ4lYyM\nDM2cOVOSNH36dMNpAOezYcMGjRs3TtnZ2fL09NSuXbtMR4ITYWAEAABQQHbs2CFJys7O1t69ezV2\n7FjDiQDnsmDBAqWkpEiSZsyYoXPnzhlOBDgPy7LUt29feXp6SpK8vLwUHx9vOBWcCQMjAACAApCR\nkaHDhw/nPs7OztZbb72Vu9kogH82bdo0eXl5SZLOnTunBQsWGE4EOI+ffvpJGzduVFZWliQpMzOT\nM4xwTRgYAQAAFICEhATl5OTkOZaenq4333zTUCLAuZw5c0Zz587NvZTT09NT06ZNM5wKcA6pqaka\nOHBgnmM5OTnatm2boURwRgyMAAAACsDlTvvPzMzUxIkTtWHDBgOJAOfy+++/554ZIUlZWVmaP3++\nTp8+bTAV4BxGjx6t5ORk/f0eVwkJCZccA66EgREAAEABiI+PV5EiRS457unpqb59+/IDO/APpk6d\nKpvNludYVlaWZs+ebSgR4Bzi4+P18ccf5xm4XnT+/HkdOXLEQCo4IwZGAAAABSA+Pv6yQ6GsrCxt\n3LhRP/30k4FUgHM4duyYwsPDlZ2dnee4zWbT1KlTDaUCnMOrr756ybD1f7HxNfKLgREAAEABiIuL\ny9175XIGDhyo1NTUQkwEOI/ffvvtssezs7MVERGho0ePFnIiwDksWrRIf/zxxxX//4c7peFaMDAC\nAAAoADt37rzin1mWpeTkZH344YeFmAhwHqGhoVe8bNPDw0M///xzIScCHF9mZqb+/e9/y9PT84rP\n8fDwYGCEfGNgBAAAYGfp6elKTEy86nOysrI0ZswYnThxopBSAc5h3759Wrt27SV3GbwoJydHoaGh\nhZwKcHxTp07V7t27L7mU839lZmZq165dhZgKzszLdAAAAABXs3fv3jxnRxQtWlQ2m03p6emy2Wyq\nVq2amjZtqqZNm6pUqVIGkwKO5+eff5aXl9cVL6nJycnRxo0blZCQoBo1ahRyOsBxBQYGaujQoVq/\nfr02bdqk06dPy8PDQ8WKFVN6erqys7NlWZa2b99uOiqcBAMjAAAAO/vrr78kXTj1v0aNGmrWrJkS\nEhJ05swZrV69WqVLlzacEHBc06ZNu+r+X9KFyzp//vlnDRkypJBSAY6vdu3aGj16dO7jdevWqVmz\nZnrkkUeUlJSkDRs26MSJEzp27JjBlHAmDIwAAADsrHXr1oqJidEdd9yhEiVKSJK+++47DRgwIPcx\ngMsrUaKEKleunPs4MzNT586du2TQeqU9jgBccPToUdlsNn355ZcqW7aspAu/0EhLSzOcDM6CgREA\nAICdeXp6qlGjRnmO+fv76+zZs9q5c6fq169vKBng+NasWZPn8c8//6zu3bvrzJkzhhIBzik6Olo1\na9bMHRZJ0m233WYwEZwNm14DAAAUgrvuuktFihRRdHS06SgAADcQExMjPz8/0zHgxBgYAQAAFIIi\nRYqofv36iomJMR0FAOAGoqOjGRjhhjAwAgAAKCT+/v6cYQQAKHBHjx7VoUOH5O/vbzoKnBgDIwAA\ngELi5+enzZs3s1kvAKBAbd68WZIYGOGGMDACAAAoJP7+/jp16pT27t1rOgoAwIVFR0erSpUqqlix\noukocGIMjAAAAApJo0aN5OnpyWVpAIACFRMTw9lFuGEMjAAAAApJ8eLFVadOHTa+BgAUKDa8hj0w\nMAIAAChEbHwNAChIFy99ZmCEG8XACAAAoBD5+fkxMAIAFJiLN1fgkjTcKAZGAAAAhcjf319JSUk6\ndOiQ6SgAABcUHR2tm2++WVWrVjUdBU6OgREAAEAh8vPzk81m4ywjAECBYMNr2AsDIwAAgEJUtmxZ\n1axZk4ERAKBAREdHMzCCXTAwAgAAKGR+fn7cKQ0AYHdpaWnauXMnG17DLhgYAQAAFDI2vgYAFITY\n2FhlZ2czMIJdMDACAAAoZP7+/jp06JCOHj1qOgoAwIXExMSobNmyqlWrlukocAEMjAAAAArZxb0l\nNm/ebDgJAMCVxMTEqFGjRrLZbKajwAUwMAIAAChkFStWVJUqVbgsDQBgV2x4DXtiYAQAAGCAv78/\nG18DAOzm/Pnz2rZtG/sXwW4YGAEAABjAxtcAAHvaunWrMjIyOMMIdsPACAAAwAA/Pz/t3btXp06d\nMh0FAOACoqOjVaJECfn6+pqOAhfBwAgAAMAAf39/WZbFxtcAALuIiYnR3XffLU9PT9NR4CIYGAEA\nABhQtWpV3XzzzVyWBgCwi5iYGC5Hg10xMAIAADCEja8BAPaQlZWl2NhYNryGXTEwAgAAMMTf358z\njAAAN2zHjh06d+4cZxjBrhgYAQAAGOLn56edO3cqLS3NdBQAgBOLjo5W0aJF1aBBA9NR4EIYGAEA\nABji5+en7OxsxcbGmo4CAHBiMTExatCggYoUKWI6ClwIAyMAAABDatWqpbJly7KPEQDghkRHR3M5\nGuyOgREAAIAhNptNjRo1YmAEALhuOTk52rx5Mxtew+4YGAEAABjExtcAgBuxZ88enTlzhjOMYHcM\njAAAAAzy8/PTtm3bdP78edNRAABOKDo6Wl5eXmrYsKHpKHAxDIwAAAAM8vf3V0ZGhrZu3Wo6CgDA\nCcXExMjX11fFihUzHQUuhoERAACAQb6+vipRogSXpQEArgsbXqOg2CzLskyHAAAArmfw4MH65JNP\nTMeAGypSpIiWLVumgIAA01Fy0QeYQh+A/3LEPjgyL9MBAACAa9q3b5+aNWumV1991XQUuJnHHntM\nhw8fNh0jD/oAU+gD8F+O2AdHxsAIAAAUmKpVq6pbt26mYwAOgT4A/0UfAMfHHkYAAAAAAADIg4ER\nAAAAAAAA8mBgBAAAAAAAgDwYGAEAAAAAACAPBkYAAAAAAADIg4ERAAAAAAAA8mBgBAAAAAAAgDwY\nGAEAAAAAACAPBkYAAAAAAADIg4ERAAAAAAAA8mBgBAAAAAAAgDwYGAEAAAAAACAPBkYAAAAAAADI\ng4ERAAAAAAAA8mBgBAAAAAAAgDwYGAEAAIe0a9cujRkzRqmpqbr99tu1cOFC05GuW1BQkObOnStJ\nWrBggZo3b577Zzk5Ofrss8/UoEEDlSxZUo0bN9bMmTNlWZYkXffrtyxLEydOVLdu3TRs2DD16dNH\n06dPv678hblWVlaWBg8erEOHDl3X+q6KPtxYHyTp8OHDmjRpkh577LE83/Na0Qfz6MON9eGf1r0W\n9MG1eZkOAAAA8HfLly/XhAkTNHnyZFmWpUOHDuns2bOmY1233bt3q3bt2pKkPXv2qFatWrl/NnDg\nQJ04cUIvv/yydu3apQkTJujxxx9XSkqK+vTpI29v7+t6/SNGjNCkSZMUExOjcuXK6eTJk/Lz81NS\nUpL69+/vsGt5eXlpyJAhev755zVmzBjVrFnzmtZ3RfThxvsgSZUrV1aXLl303HPPydfX97rz0wez\n6MON9+Gf1r0W9MHFWQAAAAWgW7duVrdu3a7567Zt22ZVrVrVOn78eO6x2rVrW3/++ac94xWa1NRU\ny2azWWfPnrUsy7L69+9vvfPOO5ZlWVZCQoL1xBNP5Hn+4sWLLUmWr69v7rFrff379u2zvLy8rFGj\nRuU5PnLkSKt48eJ5/m4dda3NmzdbDRo0sFJSUvK9/kWSrJkzZ17z1xUk+nCBiT783d/Xuxb0wT7o\nwwUm+pDfdfODPrg+LkkDAAAOIycnRz179tQzzzyjm266Kfd4/fr1c38D62z27NmjKlWqqFixYrmP\nL/4G+dChQ/r000/zPD8kJEQVKlTQ4cOHc49d6+ufNm2asrKyFBwcnOd427ZtdfbsWX3//fcOv1bD\nhg1Vq1Ytvf766/le39XQB/v0wZ7ogzn0wT59yO+6+UEfXB8DIwAA4DDmzZun6OhoPfDAA3mO9+3b\nVz4+PpIu7F3RpUsXvfHGG+rRo4datWql2NhYZWdna/ny5RowYICqV6+uI0eOqFWrVqpcubJmzZp1\nyfFq1aopOTn5iutJUmhoqIoVKyabzabRo0crKytLkjR9+nQVKVJEP/744xVfy9dffy2bzaaGDRvq\n4MGDstlsstls+uOPP9S7d2/ZbDbVrVtXt9566yVfm5GRoRYtWlz29edHZGSkJKlKlSp5jletWlWS\ncl+fo691//3367vvvtOePXvy/T1cCX244Eb7YE/0wRz6cMGN9qFly5b5Wjc/6IMbMH2KEwAAcE3X\nc8nB448/bkmyMjIyrvicO+64w6pZs6ZlWZaVkZFhlSlTxqpXr56Vnp5urV692vLx8bEkWaNHj7bC\nwsKsHj16WIsXL77k+HPPPWelpKRccb2LhgwZYkmytm7dmnts79691sMPP3zV15KZmWmdO3fOeuut\nt6yXXnrJOnfunJWSkmJ5e3tbhw8fts6dO2fl5ORc8nWrVq2yihQpYq1du/aa/u7+V8OGDS1JuZc5\nXJSWlmZJspo1a+YUa0VHR+f+O7sWcsBLDuiDuT78nW7gkjT6YB/0wXH6cCPr0gfXx6bXAADAYURF\nRalMmTLy9va+4nMGDRokD48LJ0l7enrqpptuUnx8vIoWLaoWLVqoatWqio+P1wsvvKDy5cvrvvvu\nk6QrHr/SehcNHDhQX3zxhT777LPcU+KnTp2q55577qqvxcvLS15eXtqxY4dCQkLk4+OjHTt2qEKF\nCqpUqdJlvyYrK0tDhw7VhAkT1LRp03z+rV2qdOnSkiSbzZbn+MXHGRkZTrHWLbfcIklatWqVhg4d\nmu/v4yrog336YE/0wRz6UDB9uJF16YPrY2AEAAAcRmJiom677barPudf//qXTp8+rS+++EKnTp3S\n+fPncy8FkJT7w3358uXzfN2Vjv/Terfccov69Omj8ePH67333lOlSpUUERGhN954I/c5devWvSRn\nhQoVdPz4ce3fv19RUVH69NNPlZaWpuTkZNWtW1ddunTR6NGj83zNO++8o1atWql3795X/Tv4J3Xr\n1tWqVat06tSpPJcenDx5UpKu+IHE0dYqW7aspAvvC3dEH+zTB3uiD+bQh4Lpw42sSx9cH3sYAQAA\nh+Hp6ans7OyrPmfVqlVq0KCB7rjjDr377rsqWbLkDX3P/Kz3+uuvy7IsffbZZ9qwYYOaNWsmL6//\n/t5tx44dl/wTGRmpmJgYZWRkaOfOndqxY4eeeeYZvfzyy9qxY8clHwbmzJkjHx8fjRw58oZej3Rh\n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\n14wZMzRt2jStXbtWVatWVa9evfTvf/9bt9xyi7FcKDiJiYn66quvNGXKFB0+fFjNmjVTjx491L17\n92s+Y8OetmzZoqlTp2r69Ok6cuSIWrRooRdeeEFPPPGEvL29jeVCwVm7dq2+/PJLzZkzR5L00EMP\nqUePHmrXrp2xf+eZmZlatGiRpk2bprlz58pms+nhhx9W//791aRJEyOZgKthYAQAAOCk0tPTNWnS\nJH388cdKTEzUE088oV69ejnkmTy7d+/WtGnT9P333+vEiRN6/vnn9frrr7PfkYs4cOCAPvnkE02c\nOFEVKlTQc88955Bn8uTk5Gj58uUKDQ3VTz/9pEqVKmnw4MF65plnVLRoUdPxYAcRERH64IMPFB4e\nrsDAQD377LN65JFHVLp0adPR8rh45tOkSZMUGRmpkJAQDRs2TK1atTIdDcjFwAgAAMDJnDt3TmPH\njtWYMWOUkpKif/3rXxo0aJBuu+0209H+UUZGhqZMmaIPP/xQBw8eVO/evTVs2DDdfvvtpqPhOiQk\nJOiDDz5QaGioqlWrpqFDh6pnz565G6Y7siNHjmjMmDGaMGGCypYtq9dee00vvvjiNe3nBcexePFi\nvf/++4qKilL79u315ptvKiAgwHSsfImMjNSoUaO0cOFCtWzZUu+8845CQkJMxwLkWL96AgAAwFX9\n8ccfuvPOOzVixAj16dNH+/bt05gxY5xiWCRJRYoUUZ8+fbRz505NmjRJa9asUb169TRixIjcO6/B\n8Z07d07Dhw9X/fr1tW7dOk2ePFk7duzQc8895xTDIkmqVKmSPv30U+3bt09PP/20hg8frrvuuksL\nFiwwHQ3XYO/everUqZM6dOigSpUqadOmTZo/f77TDIskqWXLllqwYIE2bdqkihUr6v7779fDDz+s\nffv2mY4GN8fACAAAwAls27ZNbdq00cMPP6wHH3xQCQkJev/9943uC3MjPD099dRTT+nPP//UuHHj\n9OWXX6p27dqaMmWK6Wj4B1OmTFHt2rX17bffavz48dqyZYueeOIJeXp6mo52XSpUqKCRI0cqISFB\nHTp0UKdOnRQcHKzt27ebjoarSElJUf/+/VW3bl0dP35cmzZt0i+//CI/Pz/T0a6bv7+/fvvtN23a\ntEl//fWX6tSpo/79+ys1NdV0NLgpBkYAAAAOzLIsffTRR2rcuLESExO1dOlSffHFFypbtqzpaHZh\n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\n5s3l7e2tyMhIzpLJp5EjR2rkyJGKjIzUvffeazqOS1i/fr0CAwP13nvvaejQoabjwIkxMAIAACgk\ngwcP1rfffqv169erfv36puO4jMzMTLVq1Uqpqalat26dihUrZjqSQ0tLS1OTJk1Uvnx5RUREcHcv\nO9q6dauaNm2q/v37a9SoUabjOLw1a9aodevWGj16tAYNGmQ6jkv56KOP9M4772jlypXcVAHXjYER\nAABAIYiKilLLli31ww8/qFevXqbjuJwDBw6oUaNGeuGFF/Thhx+ajuPQXnvtNU2ePFmbN29WlSpV\nTMdxOZMmTdLzzz+vtWvXqnHjxqbjOKzz58/rrrvuUt26dfX777/LZrOZjuRSLMtSx44dlZCQoNjY\nWM54w3VhYAQAAFDAMjMz5efnpxo1amjevHmm47isiRMn6l//+pc2btzIpWlXsH79ejVv3lyTJk1S\n7969TcdxWR07dtSBAwcUHR0tb29v03Ec0ttvv62vv/5aO3bs0C233GI6jktKTExU3bp1NWDAAA0f\nPtx0HDghBkYAAAAF7JNPPtE777yjrVu3qlatWqbjuCzLshQQEKDs7GxFRUWx2evfZGdnq1mzZipZ\nsqSWLVvGGR0FaPfu3brrrrs0atQoDRw40HQchxMXF6dGjRrp448/Vv/+/U3HcWn/+c9/NGzYMMXG\nxsrX19d0HDgZBkYAAAAFaN++fWrQoIEGDx6sd99913Qcl/fnn3/K399fY8eO5a5pfzNu3Di98sor\niomJUYMGDUzHcXlvv/22vvjiC8XFxaly5cqm4zgMy7LUpk0bnT59Whs3bpSnp6fpSC4tKytL9957\nrypWrKglS5aYjgMnw8AIAACgAPXq1UurVq3Stm3bVLx4cdNx3MJLL72kWbNmae/evSpRooTpOA4h\nJSVFNWvW1OOPP66vvvrKdBy3kJaWpnr16um+++7TpEmTTMdxGPPmzdNDDz2kiIgItWrVynQctxAe\nHq777rtPCxYsUPv27U3HgRNhYAQAAFBA9u7dK19fX02cOJGNrgvRsWPHVKNGDY0cOZLLgf7fmDFj\nNHz4cO3bt08VKlQwHcdtTJo0SS+++KJ27dql6tWrm47jEJo2baqKFSuyn1sh69Chg06fPq3Vq1eb\njgInwsAIAACggPTp00crV65UXFwcl10UskGDBmnatGlKSEhQsWLFTMcx6uzZs6pRo4aefvppffTR\n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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 566,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.visualize()"
]
},
{
"cell_type": "code",
"execution_count": 571,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 7.47 s, sys: 7.32 s, total: 14.8 s\n",
"Wall time: 8.12 s\n"
]
}
],
"source": [
"%time rda10 = x.compute()"
]
},
{
"cell_type": "code",
"execution_count": 568,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.00019912, 0.00049127, -0.00192244])"
]
},
"execution_count": 568,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rda10"
]
},
{
"cell_type": "code",
"execution_count": 569,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.66527606, 1.64131859, -6.422865 ])"
]
},
"execution_count": 569,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ref10"
]
},
{
"cell_type": "code",
"execution_count": 570,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-0.66507693, -1.64082732, 6.42094256])"
]
},
"execution_count": 570,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rda10 - ref10"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**This is not good: the dask result is different from the reference.**"
]
},
{
"cell_type": "code",
"execution_count": 572,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"xx = u_d[0:1].compute()"
]
},
{
"cell_type": "code",
"execution_count": 573,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1, 3341, 3)"
]
},
"execution_count": 573,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xx.shape"
]
},
{
"cell_type": "code",
"execution_count": 574,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1, 3341, 3)"
]
},
"execution_count": 574,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u_d[0:1].shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"check these slices on `u_a` itself... maybe I made a mistake implementing the trajectory slicing:"
]
},
{
"cell_type": "code",
"execution_count": 575,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[[ 2.87066364, 10.60445595, 9.75028801],\n",
" [ 3.10920501, 11.32470894, 9.0389967 ],\n",
" [ 3.74609542, 10.24300766, 10.17991066],\n",
" ..., \n",
" [ -7.49935293, 10.89219856, 12.33476448],\n",
" [ -6.59658432, 10.83427048, 12.92472839],\n",
" [ -8.34826946, 10.59926796, 12.93470669]]], dtype=float32)"
]
},
"execution_count": 575,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u_a[(slice(0, 1, None), slice(0, 3341, None), slice(0, 3, None))]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the speed-up for using 3 workers (chunks of 20,000 frames)?"
]
},
{
"cell_type": "code",
"execution_count": 576,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.391625615763547"
]
},
"execution_count": 576,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"11.3/8.12"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Modest speedup (but seems to depend on what operations are done; for `u_d.mean(axis=(0,1))`.\n",
"\n",
"Test bigger trajectories to see if `dask.array` is the way to go... and I need to show that it produces correct results."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"TODO\n",
"* test for longer trajectories\n",
"* test without ChainReader\n",
"* speed-up as function of chunk size --- is there an optimum chunk size? Chunks should fit comfortably into memory, the docs recommend about 100 MB."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Not working: Fill dask array "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's try to fill a dask array by chunks:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"coordinates = da.empty((u.trajectory.n_frames, 3), dtype=np.float32, chunks=(5000, 3))"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"ename": "TypeError",
"evalue": "'Array' object does not support item assignment",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-46-8308092c5208>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mib\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mceil\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrajectory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_frames\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m5000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstop\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mib\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m5000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mib\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m5000\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mcoordinates\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstop\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mprotein\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpositions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mts\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrajectory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstop\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: 'Array' object does not support item assignment"
]
}
],
"source": [
"for ib in range(int(np.ceil(u.trajectory.n_frames/5000))):\n",
" start, stop = ib*5000, (ib+1)*5000\n",
" coordinates[start:stop] = [protein.positions.copy() for ts in u.trajectory[start:stop]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... does not work.\n",
"\n",
"I can, however read chunks fairly quickly as shown above."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
@mrocklin
Copy link

For performance, future readers might want to try using different schedulers that work with multiple processes. Perhaps the distributed scheduler.

http://dask.pydata.org/en/latest/scheduler-choice.html
http://distributed.readthedocs.io/en/latest/

@orbeckst
Copy link
Author

orbeckst commented Mar 12, 2017

Hi @mrocklin, we are still very interested in dask + MDAnalysis. A student, @mkhoshle , has recently been working with it and did some benchmarking, see

She found pretty good scaling on a single node using dask.multiprocessing.get but performance problems with distributed.Client.get and I think she was about to get in touch at some point. The report is pretty long and a lot in it relates to the difficulty of ingesting data (different file formats that are in use in our field were benchmarked) but towards the end there's data on distributed.

@mkhoshle is also on https://gitter.im/dask/dask (I think) so you can certainly also have a conversation there.

Oliver

@mrocklin
Copy link

Relevant conversation on blaze-dev mailing list (now defunct)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment