From cc8d2644bf079f04fa2fc5814f58b87fe1836ce1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ne=C4=8Dada?= Date: Tue, 23 Jun 2020 08:38:07 +0300 Subject: [PATCH] size_vs_lMax plot script as in the paper Former-commit-id: db19f07b9e2c2f92cab16dc2ecd72518e55ce19e --- examples/size_vs_lMax/AuSphere/_mode_r_dep.ipynb | 717 ++++++++++++----------- 1 file changed, 383 insertions(+), 334 deletions(-) rewrite examples/size_vs_lMax/AuSphere/_mode_r_dep.ipynb (86%) diff --git a/examples/size_vs_lMax/AuSphere/_mode_r_dep.ipynb b/examples/size_vs_lMax/AuSphere/_mode_r_dep.ipynb dissimilarity index 86% index 279b8b2..331d880 100644 --- a/examples/size_vs_lMax/AuSphere/_mode_r_dep.ipynb +++ b/examples/size_vs_lMax/AuSphere/_mode_r_dep.ipynb @@ -1,334 +1,383 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import re\n", - "import numpy as np\n", - "import matplotlib\n", - "from matplotlib import pyplot as plt\n", - "from scipy.constants import hbar, e as eV, c\n", - "eh = eV/hbar\n", - "import glob\n", - "def ri(z): return (z.real, z.imag)\n", - "#m = re.compile(r\"([^_]+)_r([0-9.]+)nm_\")\n", - "#removek = re.compile(r\"(k\\([^)]+\\)um-1_)\")\n", - "remover = re.compile(r\"r[0-9.]+nm_\")\n", - "\n", - "\n", - "markerdict = {\n", - " 4: \"3\",\n", - " -4: \"4\",\n", - " 3: \"^\",\n", - " -3: \"v\",\n", - " -2: 'x',\n", - " 2: '+',\n", - " 1: 's',\n", - " -1: 'd',\n", - "}\n", - "\n", - "prop_cycle = plt.rcParams['axes.prop_cycle']\n", - "colors = prop_cycle.by_key()['color']\n", - "colordict = {i: colors[(i+1)] for i in range(-4,8)}\n", - "\n", - "def markerfun(b):\n", - " if b in markerdict.keys():\n", - " return markerdict[b]\n", - " else: return 'X'\n", - "\n", - "def colorfun(b):\n", - " if (b+1) in colordict.keys():\n", - " return colordict[b+1]\n", - " else: return colordict[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L1_cn410.npz 203\n", - "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L2_cn410.npz 251\n", - "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L3_cn410.npz 251\n", - "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L4_cn410.npz 251\n", - "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L5_cn410.npz 251\n" - ] - } - ], - "source": [ - "allfiles=glob.glob('*sph*k(0_0)*.npz')\n", - "allgraphs=dict()\n", - "for f in allfiles:\n", - " base = remover.sub('', f)\n", - " if base in allgraphs.keys():\n", - " allgraphs[base] += 1\n", - " else:\n", - " allgraphs[base] = 1\n", - "for k in sorted(allgraphs.keys()):\n", - " print(k, allgraphs[k])" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['sph_r103nm_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L4_cn410.npz', 'sph_r238nm_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L5_cn410.npz', 'sph_r257nm_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L5_cn410.npz', 'sph_r147nm_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L5_cn410.npz'] collected_XXXsph_rXXX_p580nmx580nm_mAu_n1.52_bX2_k(0_0)um-1_LX_cnXXX.pdf\n" - ] - } - ], - "source": [ - "projectors = dict()\n", - "projectors_list = dict()\n", - "lMaxes = [lMax for lMax in range(1,6)]\n", - "for lMax in lMaxes:\n", - " proj = np.load('projectors_D4h_lMax%d.npz' % lMax)\n", - " irlabels = sorted(proj.keys())\n", - " proj = {f: proj[f] for f in irlabels}\n", - " proj_list = [proj[irlabels[i]] for i in range(len(proj))]\n", - " projectors[lMax] = proj\n", - " projectors_list[lMax] = proj_list\n", - "globpattern = '*sph_r*_p580nmx580nm_mAu_n1.52_b?2_k(0_0)um-1_L?_cn???.npz'\n", - "filenames=glob.glob(globpattern)\n", - "plotfilename = 'collected_' + globpattern.replace('*', 'XXX').replace('?', 'X').replace('npz','pdf')\n", - "print(filenames[:4], plotfilename)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "#projectors\n", - "#glob.glob('cyl_r100nm*L3*3100.npz')\n", - "#glob.glob('sph_r100*m5*.npz')\n", - "#dat['meta'][()],list(dat.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "inpure result detected [1. 0.99999999 1. 0.97991334 0.99999996 0.9999989\n", - " 0.99999983 0.99999966 0.99999322 0.99999721 0.99999653] [3.28735741e-04 2.66532534e-05 2.47011478e-05 1.45012420e-01\n", - " 2.44785416e-04 7.05405359e-04 1.60203586e-03 1.71245137e-03\n", - " 1.03244480e-02 9.18732728e-03 1.18651583e-02]\n", - "inpure result detected [1. 1. 0.99999998 0.99999999 0.99999996 0.96608887\n", - " 0.99999852 0.99999397 0.99998951 0.99999912 0.99982435] [2.66223026e-04 2.12357147e-05 3.54211968e-05 1.06651057e-04\n", - " 2.79595790e-04 2.41939163e-01 2.17645058e-03 3.41541473e-03\n", - " 1.14507609e-02 1.49639498e-02 2.33483138e-02]\n", - "inpure result detected [1. 1. 0.92521572 1. 0.99999627 0.99990293\n", - " 0.99946049] [1.59712906e-05 3.60193407e-05 2.48341492e-01 1.21848930e-03\n", - " 3.81805601e-03 2.42649228e-02 2.99534246e-02]\n", - "inpure result detected [1. 1. 0.99999998 0.99999961 0.93267685 0.99999964\n", - " 0.99999822 0.99921774 0.99995547 0.99997301] [5.22490396e-04 3.01556792e-05 4.88795563e-05 6.29703960e-04\n", - " 2.34414238e-01 3.72766210e-03 4.72444059e-03 7.62106094e-02\n", - " 6.32796684e-02 5.63231562e-02]\n" - ] - } - ], - "source": [ - "plotdata = {}\n", - "for file in filenames:\n", - " dat = np.load(file, allow_pickle=True)\n", - " kx = dat['meta'][()]['k'][0]\n", - " radius = dat['meta'][()]['radius']\n", - " b = dat['meta'][()]['band_index']\n", - " eigvals = dat['eigval']\n", - " lMax = dat['meta'][()]['lMax']\n", - " residuals = dat['residuals']\n", - " ef =dat['empty_freqs']\n", - " eigvecs = dat['eigvec']\n", - " irweights = []\n", - " #for proj in projectors_list[lMax]:\n", - " # try:\n", - " # irweights.append(np.linalg.norm(np.tensordot(proj, eigvecs, axes=(-1, -1)), axis=0,ord=2) if len(proj) != 0 else np.zeros((len(eigvecs),)))\n", - " # except ValueError as err:\n", - " # print(proj, len(proj))\n", - " # raise err\n", - " irweights = np.array(irweights)\n", - " #print(irweights)\n", - " irweights = np.array([np.linalg.norm(np.tensordot(proj, eigvecs, axes=(-1, -1)), axis=0,ord=2) if len(proj) != 0 else np.zeros((len(eigvecs),)) for proj in projectors_list[lMax]]).T\n", - " irclass = np.argmax(irweights, axis=-1)\n", - " purities = np.amax(irweights, axis=-1)\n", - " if (np.any(purities < 0.98)):\n", - " print(\"inpure result detected\", purities, residuals)\n", - " #print(purities)\n", - " \n", - " #for i in range(len(residuals)): \n", - " # if residuals[i] < 0.01:\n", - " # vec = eigvecs[i]\n", - " # for irlabel, proj in projectors.items():\n", - " # print(irlabel, np.linalg.norm(np.dot(proj, vec))) #maybe some conj() here?\n", - " # print('--->', irlabels[irclass[i]])\n", - "\n", - " \n", - " plotdata[(lMax,radius)] = (eigvals, residuals, b, ef, irclass,)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "collected_XXXsph_rXXX_p580nmx580nm_mAu_n1.52_bX2_k(0_0)um-1_LX_cnXXX.pdf\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+8AAAGFCAYAAACMisIwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydeXxU5b3/309WAkQCBlxQQLFQQ7UqLiVc6zKKFpdC29va1rYuXbzW0nv1F6ytiTWxrSZdY229tq63i61toSJoNQO2CmpFxQ2XIiQUVEAhECAh2/f3xzMnORlmOTOZs8zM8369zuvMnDkz88zkkzPP9/luSkQwGAwGg8FgMBgMBoPBEFwK/B6AwWAwGAwGg8FgMBgMhsQY491gMBgMBoPBYDAYDIaAY4x3g8FgMBgMBoPBYDAYAo4x3g0Gg8FgMBgMBoPBYAg4xng3GAwGg8FgMBgMBoMh4Bjj3WAwGAwGg8FgMBgMhoBjjHeDwWAwGAwGg8FgMBgCjjHesxyl1L+VUsf7PQ6DIRWMbg3ZhtGsIdswmjVkG0azBkNyjPGexSilxgIHA2v9HguAUuoqpdRqpdQ+pdQ9fo/HEEyCpFulVKlS6k6lVJtSqkMptUYp9TG/x2UIFkHSLIBS6jdKqXeUUruUUm8qpb7s95gMwSJomrVQSn1AKdWllPqN32MxBIugaVYp9XhEq7sj2xt+j8lgAGO8ZzvHAG+KyD6/BxLhbeAm4C6/B2IINEHSbRHwb+A0YAxwPfBHpdQUH8dkCB5B0izAD4ApInIAcCFwk1Jqps9jMgSLoGnW4jbgWb8HYQgkQdTsVSIyOrJN93swBgMY4z3bORZ42e9BWIjIX0RkMfC+32MxBJrA6FZE9ojId0WkVUT6ReQhYANgDCGDncBoFkBEXrVNcCWyTfVxSIbgESjNAiilLgLagbDfYzEEksBp1mAIIsZ4z26OAV5y68WVUg8ppdrjbA+59b6GnCewulVKHQRMA151a3yGrCRwmlVK/UIptRd4HXgHWObW+AxZSaA0q5Q6AKgHrnZrTIasJ1CajfADpdR7SqmVSqnT3RqbwZAKRX4PwDAsjgVcM6JF5Hy3XtuQ1wRSt0qpYuC3wL0i8npmR2XIcgKnWRG5Uin1DWAWcDoQpFBTg/8ETbMNwJ0iskkp5caQDNlP0DR7LTr/vhu4CFiilDpORN7K+OAMhhQwnvcsRelfvw/h4iqlwZBpgqpbpVQB8H/oH+mrfB6OIUAEVbMAItInIk8ChwH/5fd4DMEgaJpVSh0HnAX8xO+xGIJJ0DQLICLPiEiHiOwTkXuBlcBcv8dlMBjjPXs5AugTkTal1OlKqb8ppRYppV5USn0mcv+fSqkDlVIHKaVWKKWeUEr9SSlVqJSao5S6C0Apda9S6szoN1BKPWyrshm9Pez5JzbkAoHTbWTScCdwEPBJEelx+0swZBWB02wMijA574ZBgqbZ04EpwEal1LvA/wM+qZR63t2vwZBFBE2zsRDAhI0YfMcY79nLscArtvsFIjIfXcn1IhE5Bx0C/HFgB3C2iJwKbAbOFJFHgS6l1G3AThFZHv0GIvIxW5XN6G2/dlpKqSKl1AigEChUSo1QSpnUDIOdwOkW+CVwNHCBiHRm9NMacoFAaVYpNUEpdZFSanRk0noO8FlMETDDIIHSLHAHenHpuMh2O7AUOCejn9qQzQRKs0qpCqXUOdY8Vin1eeCjwCNufHiDIRWMYZW9RBf2sG6/bbu9GZgMHAj8UukemocC1mr3rejCXJMzNKbrgRts9y8GbgS+m6HXN2Q/gdKtUmoy8DV0vvC7ajAX82si8tvhvr4hJwiUZtHen/9CG0AFQBvw3yLyYAZe25AbBEqzIrIX2GvdV0rtBrpEZNtwX9uQMwRKs0AxuvXxB4E+dGHQeSLyZgZe22AYFsZ4z1JEpCH6UJzbCvgc8JCI/FopdSs6UlgBTcAVwC2Rc4Y7pu9iDHVDAoKmWxFpw4TBGRIQQM1uA04bzmsYcpugaTbG+L6bydczZD9B02zkOnvScF7DYHALEzafH4SBbyql/gqMjxy7AnhCRO4ANindf9VgCBJGt4Zsw2jWkG0YzRqyDaNZQ16jRCT5WQaDwWAwGAwGg8FgMBh8w3jeDQaDwWAwGAwGg8FgCDjGeDcYDAaDwWAwGAwGgyHgGOPdYDAYDAaDwWAwGAyGgGOMd4PBYDAYDAaDwWAwGAJO3rWKq6yslClTpvg9DEOW8txzz70nIuOTn5k5jGYNw8Fo1pCNeK1bo1nDcDHXWkO24YdmDcMn74z3KVOmsHr1ar+HYchSlFJtXr+n0axhOBjNGrIRr3VrNGsYLuZaa8g2/NCsYfh4FjavlLpLKbVVKfVKkvNOUkr1KqU+ZTv2JaXUvyLbl2zHZyqlXlZKrVNKNSullJufwWAwGAwGg8GQPmHeZjYPEeZtv4diMDjCaNYQJLzMeb8HODfRCUqpQuAW4FHbsXHADcApwMnADUqpsZGHfwl8BfhAZEv4+gaDwWAwGAwG/6jjeVaxlQU8bQwiQ1Zg1+wM/sIM/mJ0a/ANz4x3EfkHsD3Jad8A/gxstR07B3hMRLaLyA7gMeBcpdQhwAEi8rSICHAfMM+FoRsMBoPBYDAYMkA9J1DNBABWsZU6nh94rImXOYD7aOJlv4ZnMOyHXbNraWct7VzAY0zmDxzE7xjJvUazBs8ITM67UmoiMB84AzjJ9tBE4N+2+5sixyZGbkcfNxgMBoPBYDAEkBCHEuJQwrxNHc9TzwkDjzXwAh30ci3Pcj3PMZJCOunjIMq4i1MJcaiPIzfkK3bNLuBpNtBBJ31sZM/AOdfyLN9mNf0IBSgOZaTRrMEVAmO8Az8FrhWR/kynriulvgp8FWDSpEkZfW2DwQ2MZg3ZhtGsIdswmvUXyyCyU8vxfItn6Qe66aebfgA2sodzeQRQCKCAcZRSyQia+UheGUhGt/4R4lBe5RMDRvxueuiij210IUAvAkA/wkb2cBaPUIhCIYymmL30cbBZiDIMkyAZ7ycC90cM90pgrlKqF9gMnG477zDg8cjxw6KOb471wiJyB3AHwIknnigZHrfBkHGMZg3ZhtGsIdswmg0eNRzDCRzI5TzJO+xlJIXspCdiGAEM/pm20sVWujiLRyhGMYpi9tHLGRzKE7xLLcdTwzE+fRL3MLr1H8uItwjzNpfzJJvZM+B5twz5vsi+nR5AL0SdzSOMoZjdEVWPpsgY9gbHBMZ4F5EjrNtKqXuAh0RkcaRg3fdtRermANeJyHal1C6l1EeAZ4AvArd6PW6DwZCjNLVBQyvUToGayX6PxmAwGPKCEIfSyqcH7ltezvfoYjv7BjzvMOjp7EFopxuAZZGMSiuMGWA0xeymG4XiUEZxJ/9hDCRDxojWLOj6Ddezmj4Y8LxbC1HCoDEPQw37s3iECorpoJc+hEIUB+ZplIkhNp4Z70qp36M96JVKqU3oCvLFACJye7znRYz0BuDZyKF6EbEK312JrmJfBjwc2QwGg2H4NLRCR5/eG+PdYDDkOuEw1NVBfT2EQn6PZoBoL6fFoLdzNyrK8/4Im+hn0Li3DHsQ2tjNWTwy8DrGODJkhPB2qFsP9UdCaBw1HLNf5EeYt7mMJ9hCJ2UUDvG8W4Y9DDXs+5AhUSYAIyigHziEkWYhKg/xzHgXkc+mcO4lUffvAu6Kcd5q4EPDHpzBYPCH8BNQ1wj1CyF0qt+jGaSpDbr7oURpz7vBkA4BNYYMhpjU1cGqVTB/PixaFHjNxvJ2WtjDmEF73gcN+KFEG0cjKKA34vFsYGZOht4bXKBuPazapfehcTFPCXEobXwm5mOWZq10EcvzHouuSC0I+0JUAZhCeXmCl33eDQaDYSgLrodVq/U+GeEwzJ6t927T0Ar7BEoLjNfdkD4LFmhjaMECv0cyQPg9mL1K7w2GIdTXQ3k5dHRoQz6LsQz7Hi6lh0vZwcU0cpIjj1UX/fQi7KOfhTxLOfdRzN0UczeT+YPp722ITf2RUH2A3qeBpdl9XMIOvkAvl9LISZRRyCgKkz7fijSxQu8LuMtoNkcxxrvBYPCftW/CeRcnPsfyCnkxqTx1zNC9wZAj1L0Jq9r13mAYQigEtbXagJ83z+/RDCETi041HEMPlyGRrYVzmcQoSihIaBztppdeZMAwmsMjFHM3RdxNiTGODBahcbDyxAGve6Y0u5cvsZsv7afbZAacVf1+I3tYwNPpD8IQOIzxbjAY/KP5psHby8LQ9Iv459bXQ1UVtLe7631vaoNlkbIaT+x07328IBzmaPig38PIScJPwOwL9D4ezc1as+BNxEg8wtth9moIb6d+GlSNgvbeAHvfjW7dwYlmFy/WnveGBn81G4Ubi05WCPM+LhkwjizDqIj4LYstD2cfQo/dODr6EKPZTNP0CzjgqMRzg4BiaXb+c5m91lq67Ysy5otRFKFiKnct7RRyF6XcQxMvZ24wBl8wxrvBYPCP0Kkw15ZXef3NCc6NnLd2rbthyA2tg7ezPd99wQJGwii/h5GT1DXqlI85F8WfWHql2WRYuZjzXyb04nZQsHY3LFjr35DiEg7D/PlGt25gaXb+pfENeHvo/Pz5gTHg66dBdYXeu4llGPVwKS2cSxUVTGBEQmNeoY0jRpYYzWaahh9Dxx5Y2JB1Bnz9NCgv1HVv3Yx0sjTbHUkRecy2AGU35vuBbvpp4AX3BmPwBGO8GwwGf1n6Gygt0be7e5z9QG/Y4M6ksqkN9vVDqYLGqdmd7x4O6+/J4A71C/W+vz/xopOFW5p1Qv2Rtlnk+oFW2Rv2Bsz7HjHc6eign0hFJkPmqF8IJSXaGLrs6tjnhEK6WF3Act9DldoYqnvTO81aVe638LmExrxptO4itTadZpkBH6qE2qP0pXfeQR6+r20BqodLuYWTKKGAAqCEAmo53rvBGFzBGO8Gg8F/Gq4dvJ3oB7q5WU8qOzvdmVQ2tEK3QEmWF6oLh+GCC6CzEzFGkDuETnW26OS2Zp0QGqejSMoLYd54mmfom539mQ/pTBtLsx0dUFbGeljn95ByjtCpUBiZ9m3clDhiJIC5726FITsl2pi3iolVUEwJCnr6YpezN6RPzZXQWDt4v/YW/8aSBou3RDrOrvPvOlvDMezjEvq4jH1cYron5ADGeDcYDP4T/QMdz5Pp9qQyVwrVLVigjUWgmzj9kQzDx77oFG9SaXkyvajXkIjF2/QscvE2QpWwaKbuhNjRB5e95M+QhmDTLEccwU7o8HdAOcqNNYO3Ey2UBjD3vX4alBVozQYh5cMqJraDL7CPS+GlTSaZ2A1qroSSYn17X3dWed+HaPZVv0djyBWM8W4wGIJBzZXOPJluTiqtAnXZXKjOHi5fVsa/YaO/A8phnE4qg5D7Xn8kTC6FF3ZDUxuhysGHNnb57H2P0izNzT4OJsdx6skMYNu4UCUcUaZvBy7lw+AuN31r8HYWed9DlTA+Mq1ZZzRryBDGeDdkF7aqyYYcxIkn061JZVMbdPdrd2S2FqqzcoY7O/V3tGSJ8WC6jX1S6ST33S9C42B7r46VjxRlPKR08GFfve+W172sDJYsGVzsMLiDk0WngIbON8/QnszOfuPJzCuy2Ps+ukjvuwUuWG0MeMPwMca7IXsIb4f5L+uqyXXr/R6NwQ2cTirdCENuaIV9AqVZnO++YMFAzjCLFgXCCFpBmDOYzQqCEXqbcewRIyp+RepAtI2rnaIXp7r7oamNO49loOzWv/3yvtu97kccEQjNxiWXFo/ti04NP459TgBD50OVcMRIfXtDpzGE8gonmg0gzVV6wQn0olMg0pQMWY0x3g3ZQ916nThUXqhDQA1DaWqDA/6u99mME0+mG2HI2Z7vHlAjqJ46nmYV9QQj9NYVGq7VBrxIsEPnaybrxal9Ag2thCrh8BH6IcHddkYxiY4UCXq4vNVyb86a7L/O1lw52Kbz1I/EPieAofOgjaHAFVw0uI8TzQaQUCUsOTEAC6WGnCGvjfec9wjlEuHt0N4LVSNh0TE6BDQPSajZhtZIWdNWr4eVWZzmvltkogVXUxssi3jTsjXf3R56HCAj6ELmMZpyLiQ4obcZx4oY6e5x1s7Iz7ZxUYtUdx0LE4r1xHLGaI/HEsBIEYuY19r6I/WsqZ/sv84CPPG03i8LZ1XovFVw0Yse2tlEXsxpk2k2oPi+UGrIKfLaeE/oEcoVL2YuYIXLr90LFUWODfdc/CFLqNls9xzbsee+xwuPy2QLLvtEPBvz3QPqdQd4kMXspoMHWbz/gz5cZ8N/h9nn6H1GsfcjjlevIQht46KKMoYqtQEkwK83eegRCrBmIc61NjQOzo38/uTCddaJZgMYOg/+9dAOMkGa03pynQ163/eoNBtfF0oNOUVeG+911PMRqqmjfv8Hc8WLme00tekQxTTC5XMxXDehZnOhUrqFVRG5tMSbgkrWRHzuuOzMd6+rC2zocdCus3Xfh1X/1PuMki1FwKx+77ZFKqsasuBhQaUAaxYS6DbXrrPJNBvQ0HnIcA/t8BMw+wK9z1KCdK119TqbLX3frTSbSI2mWAul7xFmJbN5Lx0nUw5o1pAeeW28n0GIOuqpp25/72wueTGzlaY2WPiWDlEsIKVw+RWE2Uk7R1MV+4csS0mo2dopUKpgX39uRIzUXKn33T3ue4UCMiFPO1pk3jw9wa6tDZwHM6lmbQXUvKD+21A1Hdp3uuAVclKvwW9PZs1k/b03tA5853cdO7Sgkic9tAOs2YT4oFlw0ZNp12wsT6ZbBUIzQKy+72kbQ3WNsGq13uciHs9pXb3OZkvl+XnjI6Eh4wcOTbAtlF72ErxBHTtYxbPMN5o1OEdEXN+Au4CtwCtxHv848BKwBlgN/Efk+BmRY9bWBcyLPHYPsMH22HFOxjJz5kyxc7pUywhBTpfqIcel/HERwnpv8IfS5fpvQFiksTWlp8b9uw4TYLV48D8j6WhWJPd0W3K4CAfrrfG2/R9vaREpLxcBkeo0/9aNrSIly7XeUtRZpklLt0m+A6PZ/ak6RYQKvc84pZPc1+xwifGdt2wTKVkmwlK9b9nm4vs7+A681m1ea7bxtkHNlhweZwBV+u9VVeXCANKn6nGt2bKHtWaflGpZIsiTqf72t/xDZPKJImVTYv/fOsDva23QNFs9R2u2/DCRlky/rV2zpZMy/OIZovpZ/Z1XPztwqGWbiFqqNauWivytvUWWSXleadZsw9+88rzfA5yb4PEw8GEROQ64DPg1gIisEJHjIsfPBPYCj9qeV2M9LiJr0hlY3GJKPq2uGyI0temKyKD/DimGMudykayEn82HiBHXPEKQ3JOZiTDkhlbdgLXE3xZxaUWLWNW6Ozr0d1AfzCiToGnWVZLVawiCJzPGdx6qHOz73i0uF1SyF6oLqGbrqOdoqthJeyAiRlwl1SKhAeKSw3QOsdX3/WDmUUg5B6f62x86Fd7ZAp1d8aNmAk5SzXocmVf/bSgfDR27fUpT8pv6I2FSKbywe+A7D1XClw/TDwvwqadDFO5cxGiq6KE9Ne976FTYvkNrNuj5/4aM4onxLiL/AOI2RhWR3ZEVIIBRaE1H8yngYRHZm8mxxS2mZG+ps/Ct3PiBzibseVk3pd4WLmGRrCwn4Wezwr6XbfdMs1Zu2/yLXQqPSzapHE4YclObnoCXKN8L1dVTx2usZQwVnIHDMOIAV+u2EzTNNt+iQzrBJc06qdcA/rWNi5MmMqpw8LZrBZUCXqjO4gxCjKGC11i7f92UmsnaYtwnULvek/G4qllIvujU3KwXnCBQofOLt9gmjAreZTF9dPBuOr/9KtLMK8sWMCySalbQK3PXe6PZ0GlQW6MN+HnnufAGQe/7HhoHO3r1ypJtTvvq7sFTOvrgf9aEKKaC3azljVRrNDkpOmnIOQKT866Umq+Ueh1Yiva+R3MR8PuoY99TSr2klPqJUqo0wWt/VSm1Wim1etu2bUMeS7pSaWEK13mH3aBqnJqWNzRh4ZYsIJs06+rqOgydVMZaXR5OQaWGVj0BL81Sr3uAjKBs0mzoNKgYA2vfcEmzTuo1+Ekcz3HzjMFJwZ1uVJ4PWF/3RJqFJBEjErV3GU80m6iHtt8LTnGonwZVo6BqtO7/Pp369LyY4KzLSQBIpNuEmlVRew9YvFTPDRYvdeHFs6Hve4wop/ppOhXeYk/fMCJG7BEI4tHFyOA/XsXnA1OIk/Medd5HgZaoY4cA24DiqGMKKAXuBeqcjCM6r00kSZ7Q3BdECOu9wRsCnLdNAPKHRYKn2caf6by2xp+59Qa2/Lbyqfs/3tKiczGrqvRtpwTk/zutXHcrB7WsLOFnzgrNNrbqmgMl3tUdaHlc52RmPBfTwkm9hnQ0myniXGe/8qIIkZzMqkx/Nw41K+K9btPSrMe1Mloe1znvVae4pNvyqYk1G9C8d4uWbSLVK0Ue6k4z711Ef+6Sw3UedYp5xEG41hrNBow419mWbbpOg1WvIZ80a7bhb4HxvFuIDrE/UilVaTv8aWCRiPTYznsnor19wN3Ayem+Z96038oWYrQySoVc7O8eTdA06+rqOrjjFWpq06Ha4Pv/d8o1GgLmdXdCQs3WTNY1B7rFU+/7yr/pvSvYQzpjed/99mTGyYG1h3S+tTeD3vdc1KyVWpcrESPJQnADGjpvseBVWNUOf1z/hfS8mKB/a5TSKS9BjJpJQl5rNoh533Gus6FKuPEDg/Ua/nftMCJGslyzhtQJhPGulDpKKZ1spJQ6Ae1Nf992ymeJCplXSh0S2StgHvBKuu9/BiFWsDJ2nmmuFaYJMk1tcEAkmW/XaWmHMedif/eU8KkwjWttYSyeeFrvl4UT/0Bv2OBsYmmfvPic755SjYaAhR47JWHLOMi9wnWpFFRyqtlMEmfBpH6a/skDPcef/1yGDPgFC7Rmy8qMZofBvPNczCFOptlQCCoq9ILT/PnBM+Ajuj12wv+ln/cOg+HH1j6LyEvN2vu+B63YYIKFaXu9hkffDvHie6H08t4hqzVrSB1PjHel1O+Bp4DpSqlNSqnLlVJXKKWuiJzySeAVpdQa4DbgM5FwDpRSU4DDgWiT4LdKqZeBl4FK4CZXBu/DSmXecv16Xb1jGMVUcrW/ezQJFyh88mK6uroOQ1fYY/1ANzdrY7az01nuuzV5mTsuu/Lds6RIXSwS6jYXo5ySFVRKVbOZJk7V+aNG6dsKfUkeduX5LPS6WwRNs65HOSXr+15fr689HR2Byn0HuGSi1ux9b9bz7p40vZigv4OSYu3NDJon1wF5p9mAdUvYHIYHZ+s9EHfBJHqh9Pcbzqez5+D0IkZu+tbgd5CFmjWkhlfV5j8rIoeISLGIHCYid4rI7SJye+TxW0RkhuiWb7NE5Enbc1tFZKKI9Ee95pkicoyIfEhELhaR3dHvmwoJQ61zzSMURJratLEJwyqmklbF7iwkYQEw8MX77urqOiT/gU61bVxAjMWUNJvFRhAkSQ/wQbPgcqtDJ+kew211OBzi/A80V+kCYOOLoawA5h00jPfI0kgRi6Sa9Tgyz/Uop2hPZvSiUyikrz0esTkMf5qht81J7HDLk/nS+yF2dqdZvRsGf2v2dQe6cF08gtgyzvXIvAAVG3xqAWxdpfdA3Ots9ELpJ6feSFnxu+lFjFhRM909vn9+g/sEImw+CARtpTLvsHvbG1JvDWeRy/3d7SRsCQO+eN9dX12HoT/QsXK7nLaNC1CLuJQ0m4Whx3YSpgf4oFkYbHXoWsRIsnSP4bQ6HC4J8jErimBrj87HvOFfwwidz+JIEXCg2VzLIYbki04e5r4/Vwfta/X2VBJHf/00mDxi0Pu+aVc109ONwLM+d1CrmCcgacu4XIzMC2Dl+Y4NkQWnBHWcmqt0t4TxxfDAunr2duanZg2pYYz3CAmLfAyzgJohCXave6kaVghzLvd3jyZpOzyPI0Y8WV1P1hbFaUhnQFrEQQqazXKvOwRPs+BBxEiygkr2Vode5xEnmMjXT9OXY9AG/IK1aby+0awruK5ZSLzo5GGxxZn1UFimbw8YQ3EIVcKoQu19f/n9EDt33Mob1KUXOu+0xkpASTqnzUXve0D+ZrOaoagc+jrhsfmw+YTJ+jtvaN3v+w5VQkWxXih99r0QX3nibzzTk5+aNTjHGO9OqIn/j2fIABnyukP293dPhaSFaTyOGPFkdR10blf5qKG5mQODcBjSGaBUGMeazXKvOwRPs+BRPmayMORFiwYNeA9y34fkZMb5XwhVwtSRg/c3pFN53mjWFTyJcrIvOvkYhjsxBHOWRBlDieyayIKTAN99fTqPvzcivdD5gHx+V8hV73tA/mYTQ3D2Ir3o1NsRiRhpaNUFRGJ83/bc9z19xazZaTRrSIwx3iMkrVCe4B/PMAwy6HVfQZh66qijPqfz3e0k1K0PESOeed93rdP7WDgJ6QxIKoxjzeaAB9MibzXbWKsXnewTLAuPc9+fq9M5mY/Nh80rIrPGGP8LzTNg0ojBdkYpFa4zmnVvPEHQrIeh85YxVGA3huLQXKXrNAB09Y3iztd+xNadX0j9TQMYhp0KSee0PujWk7o4iTTrIRNDUB7xI3RsgM0XfTBufQx77nuflPLr136cvmYbawdz3433PXfxu9G819vMmTMlFsulRU6XalkuLTEfl8ZWkdLlIiXL9W1DZih/XISw3ob5vZ4u1TJCkNOlOkOD2x9gtQREsyIOdVv+uKearZ4jQoXe+0Z1tQiIlJeLtER9NwH6X3ak2ZYW/TnifZ4kGM0mJ/CazTCbWkTuLhf5FSJ3l/bJprI1cb/vqr+LsFRELRVpXJfCm1RV6c9TVpbW5/Fat0azaWD9jauqPHm7B6q0Zu8q0xqOR+M6kbKHRYof3issFfngky+l94blU0U4WO8dEKRrrdGs/2xq0Vr9FVq7A/Pd8sf3O7dlm8iksIha2js8zYqkpFs/NGu24W/G8x4haWicT8WUch5r9bdx6rC97vnQIi5lfIgY8SQfMxmJct8DlO/uqFhdlhf8ShmjWdfziC1PZlE59O4roH18Rfy0MBncNaxzGDqfQ153cDA/yFfNWmzY4EmthlnNOhS5rxMevSB++K9HTigAACAASURBVPziLTpSpL+/hAkj1jOudGN6OcS1V2etFzOImvUkYiRA2L3v7a/B24dG2nbESNcLVcLoQhAKKVadnD/lJ+lpFkzhujzAGO82koYZBShPNutpaoMDIlfvXacN24jKlxZx0QRRs57kYybDnvtun1g2tekiPaX+V5kHB8XqcswIAqPZuMTTrEtYBnxFFUz7d2vcibw9dL6jD+Y/l8SAz/LWcPFIGjrvccu4QGi2uVn/jTs7PanVYDeG+jrjh8/XT9M+gT4K2dY1meljV/BMT/61jAuaZj2rixMgZjWjLS2BZW9MYzNj46frRTKYDhzxDqdNvDs9zcJg4Tprb8g5jPFuI2nv7IDkyeYEtev1TLB2ffJzHZAvLeKiCaJmA7O6HmtiWbt+sMaCz153R9EiOVDwKxqj2QT4YAyVVMDbMkY72BN6hAYN+ISV53M0UiThb4wPLeMCoVmr2GJVFbS3e+p9h/jV50OVsGimNuCFQn73rxv50Yu3pveGtVcPGvBZ5n0PmmYhYBEjHjAxBCfdTMTaKuAxjmFz15iYCybNVVA1Gvb2TuCXr9zKJf9Yml6LziyOGDE4wxjvNpL2zjYt4zJDU5v+wYCBkMzhkk8t4uw40qzHLWECs7oeqwiYpbcM6W44JI0WyUGvOxjNJh6I98bQzHo4tGCndvok8QgN/NvE+//JUc2Cg98YjyNGAqVZ8KRtHDivPh+qhNqjYHRRO6HD7mZN+5HpGUJWe9LunqzzvgdNsxCQiBGP+XANfOzRSPV5iniuZ0rMBZNQpd7v6hnN5j1Hs/D48/jZ22n8BmR5xIghOcZ4jyJh26aayRkJ8c577Betm4bXGs4in1rERZNUsz7UagjM6vrixdoL2NAAXw1rI6REZUx3wyGpZnPQ625hNJsAH4yh4pun0F+k6OvoZ+dXY3uEygv17bICQMUJnc9XzUJ+R4xYeJT77rT6/OItUHfieazfdTw7uiuSp3zEI0tziI1mg4OV8jGGPcxkA51Hx1kwiSyMfv4DdRw9bhWnHV6XV5o1OMMY7wZvaWrTOVYlathF6izysUVcSuTz6np9/WD/7F9dBfueC0ShuqSazWEPJjgoppSvOcTReGQMUTOZvv4C3qWCx39VsZ8n0wpDrhoFfQJrd8OCV6New2g2f3OIPU73AG0MHWBvxRXjT1I/Df7yVj2nHvIHRhe1J0/5iEeW5hA70my+Rjn5wKxm+DirmcgOip6NvWDSPEMvlP7mX/W8tr2a+96sT61Fp0WWatbgDGO8R5G0mJIhfZraYOFbGa/0ne9/s6SfP59X160w5LIy4HXg7kAUnEz4N8vRgl/RJPwO8jWH2KK5WWu2s9MT7zvA3sunsIORfIw1tF+2/0Q+VAmowZIRGzqjvJg57HW3CJpmISARI7FSlDwgWfX5UCV8YlyIl9/7OA0nn8exB4bTS5nK4hzipJrN5ygnj5kYgtcnTKGNA/lz4SkJ6zXs6zqFHzz/IG/uOJ15B6XxZlmsWUNyjPEehaPwa6tSukcrlTnD9bbidBmsG5Cvxeoskmo231fX7VW82Q0r3vd1OJBEszla8CuapLrN1xxi8LzyPMCYOyZTVfYuJfRx9LbW2CdFDB+FbsU1EIac4153i6BpFgIUMWJPUfIiWgRn1ecXb4FPTK3jqIpVXD69Ln7KRyKyOIfY0fzARDl5xoG/m8yWogo+0fsM738u9vcdqgRVtIEd3QfS1V/ovEWnnSzWrCE5xniPImmYEfjSHzPraWobdNmUqoyGLedrsTqLpJo1q+swuxm4CSiG8jv8Hk18zeaJEeSIfI4YAV+87wU3ToHyQjounsKDs/f3ZDbP0KHzh4/Que8dffDX3+VHpIgj8lmz9fVarx0dnukVhlafjzmsSOj8a9urue2VH8ZO+XBC7dVQPkrvc4l8j3LymIkhOL6vlRL6+ODW1pjed4BDSns4uOxfFKp9Ot3DaNZgwxjvMUgahmyqzqeOvSVcQ2aLheVzsToLR5rN59X1+4uA3wFvQeUrfo8mvmbzIPTYIojX2cB63z3m1b+OYOuq/T2ZVjXkjV36T1NeCNfeXpMXkSJgNJt4IN5HiwBMfL6NObzIhMlduqd29LAq4aYjQtz+6u3s6D5EDy865SOHcZRW6LFuA6NZn+g9SbfmfIcxcbslfGfKCXznhEuYOOpfQH5p1pAcz4x3pdRdSqmtSqmYM2el1MeVUi8ppdYopVYrpf7D9lhf5PgapdSDtuNHKKWeUUqtU0r9QSlVkomxJjUGTdX51LC3hivJrNfdFKvTONKsD6vr1Sfrve+cOgb4KYy6St/3aGIZi7iazTOvuyPN1k7RevUwRSlQum1u1m3jwBvNRqLK3ts2AohTCCzSNm5bj/a8X/GfN9I+8gCjWTCa9aFwHQ2tTOx8nwu3PwMQM2IkVAlXT93KJ478McWqj87+NDyZDT+Gjj1ZF4IcVOdGYDTrA2WvRVpzouJ2SwhVwl/+dStdvSMpRGs25cJ1WapZQ3K89LzfA5yb4PEw8GEROQ64DPi17bFOETkusl1oO34L8BMROQrYAVye4TEbMoELreEs8r1YnYWjdA8fVtfrv61X1n0NjWtqg2XbgULY+zHPWnDFI6Zm86RInR2TouSAUAgqKrRm589334CPROjMLNrA6JKumH20rbZxAhT3dnPWC49R+8WbjGYt8lmzVoHQqipob/dmwal2is7hGFfEcwt62LoKHp4DLzYNPW3lDugX6LcOqFTf5+rBHOIsKgAWVM0GZn7gB5E6RM+j58PxuiWMLtnBx4/4KWVFnUwaAe29KXrfTdG6nMUz411E/gFsT/D4bhGx6oCOIklNUKWUAs4E/hQ5dC9kpmKZI4PQFK1zhgut4ezke7E6O0FcyKj7Pqz6p8+hcfYJyfiH9d7DsM5oYmo2T4rURZNUsz4UAAuEZu14mUscidCZ2LOdTxc+Q2Gkj7a9krdVDfnY/nb+fNMn+OaSW7l4xW8Jf9hoFvAlRSlQmrWuXV4tktZMhuNHQ9s+ZrJez2r74dlvDTWIPj+tjkc2fpU+KaREAZKiIVRz5aAhlGWeTEea9bioLQRMt14SqUN0MusopC9ut4SvHV3HE+98ht29o9nWHadFZ8L3MUXrcpVA5bwrpeYrpV4HlqK97xYjIqH0TyulrBnvgUC7iPRG7m8CJsZ53a9Gnr9627ZtScfhKMwon1fXU6GhNeOt4ezkarG6VDULDnTrg2Z9L0zT1KYnJKWRxaPfzRsM6/TCkxmD/TSbI+Hyrmg2nwuAWXidSxxZKCk4Y0zcSt6hSrj/v0/jgmeXsmXMeL79xe+l14vYZ1zRrCkANohXi6TzxkN5IRMvGcFJNzNgwD9ns1VPKa6nUI0EoFDB2j22bglOCUgBsIzPaU1RW++pncLE8l2UT+gDiBnldEpxPWce9AKjC3spL9LHUs59N9733EREPNuAKcArDs77KNBiuz8xsj8SaAWmApXAOts5hzt57ZkzZ0pGaGwVKVshMulJkZb3M/OauUhjq0j543rvAsulRU6XalkuLa68fjTAavHwf0YyrdmS5SKly137e8Sieo4IFXrvOeWPixDWe4uWFpGyMhEQqaryfEhDNGsfS1mZvp9hsl6zpcu1bvNFs7HwUrO2/5lNLSJ3lon8Cr3f1BIZS1WVbB53iLx8eJWc/92HpPwRkcZ1mR2G17rNmGZFROa+oL/DuS9k7jWTECjNen2NrX5Wf9/Vz4qI1ulfqyN6tQ9rm0jV4yKTwyIly0RYqu87pvE2kfKpeh+DrL7W5rtm/aCxVTaVrZEHJuyTO0v0dfaBqH+Xk1buEJaKHPBoR3qaFdGa5WC9j8IPzZpt+FugPO8WokPsj1RKVUbub47s1wOPA8cD7wMVSqnIehSHAZszNYYVhDmD2fFzhKxQrY37oG597HPynaY2vYpbO8UVr7spVjcUR5r12CMEPq+uxwq7tnsyX3sNmpr2f55L7KdZq7o8ZLXXPV0cadZ4hLzVrC2EduLzbZyzBArKoN/yvi9YAGvXcuj2d+gpHUH4pHN1QE86vYizkKSaBRMx4nW0SP2RUH2A3qPbcV24Uu/tfLgyzF7W09Y1eCwlT2YWFwBLqtt816wfRIotfqrzKQ44Sh+Kzn///LQ6Plixkv845B56rGTidOo1BCBixJA5khrvSqnblFKz3R6IUuqoSB47SqkTgFLgfaXUWKVUaeR4JTAbWBtZMVoBfCryEl8C/pqp8TjKH54xSn+DM0Zl6m1zh6Y2WPiWq2HaQczx9hNH34cPOcS+toyLNyFpboaCAhCBb33Ls/D5IX8je7h8HrSGi4XRbAp4pdmoBZOJITggYoft+lcff33tLjZzJpSVceuVjXRSiEJf6lMOQ47DCsKoo/ng8F8p8zhuveVxDnHg2m81N+vrWmen+7nvoXHacK9bD+GhpZU2hwcr0L9BHf1qLwCHlOo6dylVnk9QtC7ImoVg1moInGa9xvbbNqtZL5JGpyh9vvLj/PCkhfxzy8UIWrOQHwulhvg48by/CfxQKdWqlGpUSh2fzhsppX4PPAVMV0ptUkpdrpS6Qil1ReSUTwKvKKXWALcBn4kY6EcDq5VSL6KN9ZtFZG3kOdcCVyul1qFz4O9MZ2yxcJT3fv9WXbr0/q2ZetvcwW6wu1DdfAVhdtLO0VQFrgWKXzjSrE+r6760hLHnu0drMBSCm28GpaC/37Pq81axuq+HZwytLr9kSd553cFoNiUszRYUaM26WbMhqjPFrGYoKofCng62ySmsVt+HJUt45gSt2WKl5/0dfbBgbfyXdcIKwnya+TCSQK6KO9KsTxEjgdKt1973uvWwatd+kZBPLYCtq/R+OvVcXXUH00fvZlQhTLCaCzv1ZMYpWhd0zUIwazVAwDTrNbbfNvsiqd37XkmI84pXsnBKBeWF+rKccuG6LI4YMcQmqfEuIj8TkVnAaehQ9buUUq8rpW5QSk1z+kYi8lkROUREikXkMBG5U0RuF5HbI4/fIiIzRLeDmyUiT0aOrxKRY0Tkw5H9nbbXXC8iJ4vIUSLynyKyL+VvYDh43Hora3C5wjzoVeTXWMsYKkzIfATH7eJ8WF33pSXM9ev15FmIrcGaGjj6aH3bo8JKD7KYE8MdnH/Br/Oyunw0QWxxCAFuY1RTA48+6l31+QgTCfPZcR9mFt9gAis5Sn7DZkI0z9B/mm7RRcAANuxN3ytkGUG76YD+wa5eQcKRZsHMD2Bo33e3C4TWHwmTS+GF3TF/23a9Bf+4DI4peo4TDnyGtXtgazdMGqEfd6zZGCHI17BAa1aCqVnHGM16S1SEzqxmKIzyvr9HmJXM5oEt7XT0wbYefTyldA9TtC73SCdRHp1z/gLQ53fSfqqb0+Iep0u1jBDkdKl2dL4hQmOrCGHZr0hYhvG6UJ0FAS9I40i3sYq4uYwvhWlKl+vPWbo8/jktLSLl5SIgUlAg0tjo6pCWS4u8fHKkkJNHxZxyQrMuF76MRaCLKVVVaf0o5Y5mo68R1vuBbOMEWUrLQAG7xnUi5Y+IfOVFvWepSPXK9N72eKmSEYKMlTJhDG+I0WxKBFKzPhVbtNjUInJ3uS4G9ucnq2WJIA91V0vZw1qrA0XA/p7C+9gK1y2XFhkrZTJCEPUhOiWg11qj2YASpdkHqoYWCH1StGZ/uu0bA9fXgqV6X/6ILsLo7H1iF63zY35gtuFvjgvWKaWKlFIXKKV+CzwMvAF8IvPLCcHAUWicYX9cDpc3JMaRbn1YXfe8AJjleSlR0HBk/PNCIe35tkKRXcwlXkGYN5ou4+jnItWS8jTPPZqgtuYMdDElt/Pf7R6h85p0kTyAsjIen/x33iZEf6S10R/e1H+a+9+Biw7Rl5Z5B6X+lisI04quATGFI2AnHZn7QJnFaDYFvAyfj1EfY2IIzl6kPZq76+rpfqqaqS/Xc8TIoU9NKWIkEoa84h838Wnm00knoylH/s3GzHyQzGM0G1DipChZ19cDn69nLNV8vvLj1B6lT738MJ373tGXYr0GU7QuZ3BSsO5spdRd6D7qX0H3YJ8qIheJSMYKxAUNx6FxTW1wwN89C0EONB6Ey1uYYnXZhecFwBpade5eaUFyHXqU/17fvoDPNWyksE+04ZWnee5pYQqADcVtzdpztpfdpRcJIpqddedoKqqgoAR6O+C82/WE0jLg0608fw0L6KSTMsr4EcFe1ApyilIgNetV8bo49TEmhmDOEuh9KsSuK2/l6Usn8IP256kaDQfbCtc5Lrh46kcAuObne9hNByMo448sCvSCk9FsdmBfbOrtgKf+I8SBz9fzBnW80BUeuM6mXK/BkFM48bxfB6wCjhaRC0XkdyKyx+VxBQJHBqIPK5WBpXa9NpgUrhruYCIj4hFUzXpalCZRobp42PPf3WjF1dRE3X++xu++AL3FShtexnAHHGrWFADbH7tm162DGTMy69W8qBdoBS4GKgc0OzEEn3qVgdZGhy+BX74IVaNgXHF6hetWEGaDzeueDXVMkurWFAAbxCvve4KoMqsgWH97Bb0vHUP7dRUgsLELxpcMLkDVvengfZ54mhVn7qN1vLbVjzCaHd64gqhZr4gxH5sYgvLIv0tfJ7yp6tjBKj4/rW5Ap6MK9TUXHC44maJ1OYWTgnVnisivgXal1MVKqToApdQkpdTJro/QRxyHIJcVwLii/VqU5BVNbfqCD7pAmIuY/u7xcaxZH7yYnhUAa2jVRl6JA6+7HXso8rXXZs4Yamqi97qF7B4pfPb3iqKHH9OGlwFIYSHOh5ZxgccqCNbdDWvXwgUXZEyz3DkHGA/MAnXvfpqd1YyeQQh0Xge9exnaPzuFMORrWEBXlnjdLRzp1mh2EC+K19VM1r9vDa0xf9tmNYPaOQGA3s0T6H5FH9/WnWLKR+3VXHPrbjpHCiNyTbM+zA/ymjjRDlbxOoD3z1lKSfgbnFJcPxA6f8lhgIpUnneyUGrC5nMKxznvwC+AWcBnI/c70C3dchZHYUY1k+H40dC2b78WJXnF9bbPflOCHOMMYELm4+NYsz54Meu+D6v+6UFoXLoTZnsrLpHMGENNTbBwIUV9cNoKmPfyJONxj8JxipIPLeM802y6WDUbyiKzvM7OjGmW/n7gN6C64Mul+502MQQn3YyOtOqH8Y8OPmaFITvxYkbnuufUgqzR7CB2rbrZKSFBZNnEEMx5YLTOKd45mm8shDHtWquppHysqJnO+UtHsuWACdQ1HZxbmvVhfhBYzXpBnGgHK9WjoAz6tlWwa0EzlYRYvGVQp7t79bmOFkprrtSGe8OPTcX5HCAV4/0UEfk60AUgIjuAksRPyX4cGYr1R0L1AXqfr1h5N6XK9ZB5q1f2hcxz9X2yFUea9SG3zZPQuKY2WBaJgElnwmxvxQXpG0NNTTBypPbgo4NRflRbwoUTv576mPKAIGs28MWUQiFdP8Gu2TlzUk/9CIdh8mRtuFvMPRFGj4IPHBXzKR+ugYpI5P5Fv4TrroYjX4AjyqBqNLT3JJ5UWq3hrIJf2eLBhBQ067EXM9CatYfPu5GeBEkXb0tDYSZtnM2Ij4UZuRcu/SGM3aM9706LgF3DAv5fQykHdBTwjQaXQw0ziGPHh8cRI4HWrBfEuU7Ye793TQ6zvH02N8wID4TOb+tOsV6DCZ3PGVIx3nuUUoVEgqKVUuMhy3taOsBRmFFoHKw8Ue/zkaY2rYrSJJW9M8SDLGY3HTzIYtffKxtxpFmfcttcJxPdDmIZQ2edBaWlySeb4TBMmaINoM7OgUJf/9s4icaabqPZOARVs1lTTMnSbFXVYBG7hQuda3byZDj7bNhoK5bd2AhPnJy0PsasZqiogpECR74B37gRvhx5mbV7Eod0Wv2xyyIFv7LJg+lYsx57MQOvWbc7JSSJdniDOvZWrOLQ39VBAcx4AW78Ijy3bLAIWKIe2lZ9hh/U7mZPORTVZk8KlOMUJY8jRgKvWbdJcJ2wqs+P/I7WbZHUsWimDp3v7IcjRqZQr8GEzucMqRjvzcAiYIJS6nvAk0DO/5udQYgVrMyqSYWnNLXBwrfSyzFOE1OsLjGONevx6ronoXHWZ5k7bnhajDaGQOcVL1wIY8dqr7plFDU1aSOpsFAb+W02D9vkyfDoo0yvuctoNgFB1SxkUTGlUAhefRVuuWXwWHe3jv4oLh5qyFuRIWPHas1u3KiNKdCLVo2NOgrFQbRDdAG7dw6D9hug8p/6fryQzmwsUmfHsWZ98r4HVrNud0pI0gp1Orr11rEV9Zx0M/QXQlkXfOF7MOmtQaMolifTihTpopMSSillRGbH7jJGswEmjm6t6vO7/9+tbDvmJbZfeiuhSgZz3ycO3k6nRachO3HSKm6WUkqJyG+BhcAPgHeAeSLygNsD9JsVhDmD2YlzMUEXq5u9Ov+K1tXact096BtuitUlx7FmPV5d9yQ0LpOfyW4MldgyhNrbtVd94UJtFC1cqI2k/kggklKDBlBrKytCGM06wJFufcghzjpqarT2LM2KQG/v0MUnKzKkvX3weUrp5+3dO1icLoVoh1nNoEZAYR8cvgHOvHMwpDNWGHI2FqmLxpFmfaoxEmjsnRIyXX0+SdG6SkJMR7femlgTZtx0fbynBD7zDbhpRXxPpj1SpLZhDEUdXVkXghxUzXpa1DbLmBiC0UfvYMztV7C3YwcvNjEk9/2eTQ7rNZiw+dxBRBJuwC+B54H7gUuAg5M9J8jbzJkzJRVOl2oZIcjpUp34xOpnRQjrfb7Q2Ko/M2GRkuWevKXjv4dLAKslVzTb2CpSulz/7RpbU3qPdKmeI0KF3mecxlb9WUpd+jyNjSJlZSIVFSLaJBrclBIpKBApKdHn2TCadYaj76mxVaT8cc/0KuKyZt2mpUVk8mSRoqL9NQtayyUlIpMm6XNjMfcFfY2f+0LSt9vUInLdMSI3TBa57kMiR/1chKUiZQ+LtGwbPG+5tEiFlMkIQY6Xqpiv5bVuXdOsiOe6zQrNtrSIlJdrHRYU7HfdHBblj2vNlj8e8+EnpVqWCPKkVMumFpEHqkR+OEbkV+h9440i5Y+INK4bfM5+mm28TaR8qt63tIhUVcmHoFMCfq0NqmZFskS3bpFEs+EdWrN/frJaflUgcv+jWqMsFan6u77GWrfjEhDNmm34m5NWcf8lIicA3wXGAvcopZ5SSn1fKfXRSB58zuI4RDsfi9bVeldh3sIUq0uOY836sLruamjc9ev1ZxHcSd+oqdFeyR07Bj2bRUUwaRI89hj09cG+ffu11DKadYbjHOIEXjU3yOpwzlAIWluhp0drtqwMKioGI0N27NCabWuL3wUhhWiHiSF488vQVQbPVMOc++CI16HyzaFezFzwukNwU7iyQrNW9fmCAh21lMn89yTpNVbo/HTqB9I+Hq2BdR+Ev34Byuuh4o2hnkxLswOt4WquhIsugGsbYM58WLuWUoIfRx9UzUKW6NYtkqQqHFtRT8nmanbfUA/9UPjfQ0Pnj4iU6ElYed6qOH99PZx1TtZo1rA/jnPeReR1EfmJiJwLnInOef9P4Bm3BhcEHLcxyseidVaR1RL3K8xbmGJ1yXGsWUiaH5hpXA2NU1F7N6mp0UZPT09iwwej2YyToBWUG+RMOKd98ckeGp+MFK8R//U5+NVNMP4d2HYwfL0BjloLc7fqx3O6NVw8jGZjE53/Ptw2hxZJFpwqCTGblVTatLfwa3D3d+DYZ+DlE6G3OFJ5fu1QzR5habapCX71c5B90K8tJ8mlIs4eazYrCYdh9uzMaDaJM6WSEHMmrmTkO1qzHRvgD28OhstfcthgvYa4heuammDhVdC9DegDckyzeYRj410p1ayUelQp9TfgRuBtEfmGiJzo3vCCgeP2GvmS997UBgf8Hc4aq68WHnndIdirxkHCsWZ9wJXCddZKdYk3HQ9SwWjWGY4160MxpbzvQ5xCtEOoEv54Gjx0BRz5pu6jPf9e+FsYfvBE9raGi4XRbAaw57+n25ozGgff93uEWcls3osscIcq4f/Ngnu+q9cSZj4BtVfBIQ/AV9/7LZ1WpMjzl9haKvYCHVDQCVVVvAXrhjdw9zGazSB1dbBqFcyfnxkDPknEyHuEOaB5AYXlvfR1wmVfhBNeGjTgLzokTuG6IW1ABW2vF8KkSVmhWcP+pFJtfi3QBPwM2Ar8Ril1lZMnKqXuUkptVUq9EufxjyulXlJKrVFKrVZK/Ufk+HGREP1XI49/xvace5RSGyLPWaOUOi6Fz5ISjiffdeth1S69z2WuX6+vFi07YNdpnnndTbE65zjWrA+r666ExjW06qJapd50PHCK0axzgpzuMe88KB+t93lJiteJUCXcMB0e+xL0jtDVvD9xN3R+cxyHhk9iRBa2hotFkDWbVb2zm5uHtuacM2d4PeAdfN9vUMcOVvGGzYhdvAX2AL+7Gs7/I0zaABfct5uLzvkm08Jn8ul7ezjjxGttLRWV3i6/BF59lZ3Qkf6gvcFoNoPU10N5OXR0DF+z4KjNYXfoViYuupqCMih5D668cdCAv/+dqMJ14TDMmAFz5w5tA1oxFsomwFXXZoVmDfuTStj87SLymIgsE5EfAicCX3P49HuAcxM8HgY+LCLHAZcBv44c3wt8UURmRJ7/U6VUhe15NSJyXGRb4/SzpIrj9hr5kPfe1KYv5uBNeLKNIHuTg0ZKLWGStIIKPE1tevwlyrPwf6cYzTonpbacHreMW7wUOnbrfV6Sxve9eAs8fyz86gboPQr+dWaYP916FR/6y2eZ+O4Hst5wh2BrNqt6Z0e35uzv117C4RhDDlvGTbcZsfXT9FN2jIKll8CuynZ2H/RvJj//YT5xzS3cehm61KPVUaT0MOBAuH9Z+uP0GKPZDBJdt+Haa7WxnK4X3qFmTwh9nAOO0MekCy6/Rz/N8rx39MH8v3cQvub7lGew8wAAIABJREFUsHat7jQCgx1F+sZBp5iq81lMKp53AJRSVyilfoj2wO9y8hwR+QcQN5ZcRHaLiJVBPYpINrWIvCki/4rcfhvt8R+f6piHi+PWW/mQ925fgfU4PNmEH6eG45YwDltBZYqMh8bVrtfjVwTK6w5Gs6kS5DaHeVtICdL6vi1D6Plj4f/uhT/+4jtsmL2KZdf9kk+edzd/mgGbM9ghzC+CqlnIMt3aW3NaDMeAd9AyLjrvPVQJi2Zq3U6TJs48dDwfqriKbR9aycRxP6O4v5cuxrLzy7fouhEN34LyUboIWBZhNJtBrLoNBQV6YWft2vRTP1LQ7KxmKIgEq+zapQ32dx56lDe/cDg/uuN/ePj6c/nrKRfqE0pK9MLYY4/pNJXaq/nJt7sZ9/5G1LEck/ZnN/hGysY7sAx4DTgM3fM9Iyil5iulXgeWor3v0Y+fDJQAb9kOfy8STv8TpVRppsYSTUreMysfPFu9mMmwVgYbp3pqKJnw49RJKbfNQ+97xkPjJGpvyFqCqtmsKQDmFmkUtgxVDlZDPmbi83SVK9R7J3LSz29h/Ksn0L4WHj4bXhxmpKnfBDmHOCupqdHeQYuFC2HkyPSM+ATpHtE57wCEw4ROm8FT/3MS3/nLtRz3Ui8ztj7NnK4rGNl2MluoZjkP8Off1OiFJ6t6d8OPoekXqY/PJ4xmM0xNDTz66NDUj7PPdlWzE0NwzhIoKocP7F7CH+Y9x29vuJiDt21iwZJbmf36Kup+36Bz3Zct0wtjoRArCHML3+PyW4v42k+LoZiSYX12gz847SkHPAAcbbtfALyYwvOnAK84OO+jQEvUsUOAN4CPRB1TQClwL1CX4DW/CqwGVk+aNElSZbm0yOlSLcslTh9cO0l6NWY1PvT9tPC7V7YFHvUeHq5mRYKt24z1c3W7t/swCYJujWYzQ173IBZJ6/pfvVKEpSIFTz4lIwQp/PtaYanI7P/WPbWt7XeTdI94O17o1mg2wDQ26v7v2p+pt0mTdH9qp8x9QX/fc1/Y76GBXu87qkSqqkQmTBBRauC9vvC/U2XVyWXy8y9NlW/VfUU++D2RW0ttulUiv58ssqnsYhEOFimfmjXXWqNZl2hpESkrG9SrUvp+Y6Pz13CiWanWr1lSIn2FxfIEt8qvEPkHv5Q9aqx0VU6QNydXyaU/bpGWbfq5y6VFpslkKRMlS86vEOFg2Vk+QdSx7BMPNGu2zG6peN7/D/iDUuplpdQ9wB9xocWA6BD7I5VSlQBKqQPQ3vjviMjTtvPeieh5H3A3cHKC17xDRE4UkRPHj0896j7l1lu5ulJpFaq73vuCfPkWfjxczaaMx7ltGQuNc7u3+zDJJ90azbpAUxuMWAFq+dDtPNdKvMQnjeKW9dOgoHwNhdO/A/vGc5gcDsBLH4XCwwbP27NRe+Hvn+JtKL3RrEuct2aoXguWQ+mK1OZEljdz0qTBYxs3wllnQXGx9igmC02OF/YdDjP9c+sYuwo+dMZaHeq8das2uYA3phfwl0+M5sxnOrnuZwfy4Jl38PpxcP1v4N8Xot1GArvb4OHOe3mBBey8yLvQec/ntB5H5vkWNm/ptmh5ep/Vqt0waZLOLxfRXviFC7Vmp0xJX7NNTcwq+yezqmHWiGf0a3Z3U9DXw0xuZCwv8h4nc9+Yl3nytS3Mu+9V7p4eGmh1+EkuYCNtCMI3b99FR3k/a2pPQ17i5dQ/qMFvUilY96CIHAt8HlgOPASck4lBKKWOUkqpyO0T0N7095VSJcAi4D4R+VPUcw6J7BUwD4hZyT5TOA4z8qFCpyf4WKjOkB4ppXv4kNuWEbzs7Z4iJtUjdYKsWU9D55va9ARy4Vu6nkM0y7YPb5KZDmlM4gsqw5Sc8ClUybuof32PO2eM1gWVSuGbv4axN0BhJNJ0wBg6C34/GcoYU+7aZ8kgRrMRLM2q5VqfdgQ9f1j4FhSmoNlQCNradBi9FZIM0NurDflzz9VGUWEhjBixf5jyqf8ELoXd58PYsfrcoiI4+2wqf7+V2bNhjLUOVlQEpaV0TprA6U8LnZuvon97NZWt36d5BpQVwM6R8Kdr4KRbsP3mFPAc1/HAr6/kMI7NmvzhlOa0HtbF8TxFKZZu+9BaTecaa2n2scf0ApNFb68+fvbZWq/FxVqT0SkhlmZ7Pjmo7eJiuPZaCrp6OfApKNjXN3h+URHdE6azdfSHePLDJ3BL3URuXMRAGuFbXbu5cOf1dNIJgEJx1cSbKa+9gY82PM+hFEQ3ljNkASnnvIvISyJyn4jcIyJbnTxHKfV74ClgulJqk1Lq8kjhuysip3wSeEUptQa4DfiMiAjwaXQY/SUxWsL9Vin1MvAyUAnclOpnSYWUPGi5UMHbTlObvpBZ+NBH21TtTp2UNethxEhGitY1tekfqNLg9XYHo9l0CPp11pM+xNb1ti/5qQOTTC888WlM4q9hAYx6iwIpZcL7nwV0QbCyAu3ErzsTLt0LJzUyZAFuz0YYz5FHZf5DZJ4gX2chgJrtJ3UjvqZGF4hrbNTFtyx6e/XW3w/79ulq33aDZ9lCYCPIbmhv1+f29Q1UjJeiQvqKoG/yBHjkEVZ0LWVSWyftFULxxD8w9pW/UtauF16PiKwdbNgL710KH3sMRk2CglKAXhAopDhr8odT0q3HESOeadZaIE2kW+sam4peQRvxra1as6WlenHI8sb392sttrcPeuatxSVLs117BrXd2zug2X0TFL0jYffsCdDSAj09jNnyJBcuLmTNLPjMHVDyKjTPgNKD/oqceA7dxe8CUEYZS3mM/6FG12no2MNBFBw6jG/R4BfJ4urRBv6RQGHU8ZnA+X7H/ae6zZw5Uzwhl3LfS5brz0LYt7zilHK0XASPctokxzXb8rjOaWsZzluVRnRZujxj48oUy6VFjpcqOV6qjGbdxOPrbEZ0mwgr39G+FUZddxtb9bHo80o8qPuQQt77cmmRCimTEYKMfuUOYalI+SMiLdtEqh4XYaneW2xq0TnEd5bobTIzRYxmh43rmm1s3V+LBTE0WxBDs+nOKVpaBvPUi4p0brwtX33opkSo0FtRkUhhoUhpqUhj49AcYhE5XqpkhCBjpUyWS8sQnbZs0/plqa7lYOffJRfLA7wmRzJDJBevtfmgWWub+0Ls63Am5sCRPHUpKNBarKhIoNmvijBh8NxIvYdozdq5s0rXY/jxGJHm6e1yzMMXyghBSrtH7z8XabxNpHyqHErBv8VjzZpt+JsTz/vdwAvAc0qpC5RS9yml1gP/BD7jxoJCUHHcXgPSqs4bSOzh8qXKt7zilHqTGgZISbMerq5nJDQuwFXm66njNdYyhgqj2RQJqmZd57w1Q8ONS5Tu6tF75tDrbs1kfaxx6tDYOSssOSDRXtewgC46GUEZ3z1o5kD/4bo3tVeoahSgIPyePn9iCC5qhcv2wTnLoJu9e/wcfyqkPDfIlbo4560ZGpUHWpd9MTTbdybImTA3qpVuOpq12spt2QI9PdqbboUpFxXptl1FRTr3+ORfAn+GuSv0ub290NUFNTVDer2vIEwrGwCYwhH6um1Ly7J3T5gXFWh82E2z+FT5+XTx2qbUPoh/5K1moyNJQWtSIvpcepzeJIN6taip0REifX1aizt2DKaEVFRozZaUwNxvQclFUHo/3Lxen9vWBqHQEM1Gc04zdJeBUrspe2MM591wI9JfxNjXf0PTe6+auUgukcy6B/4XmBC5fTGwETgdOMTvlYd0tuGsUgahcrTnBMDrHiTIMi9mSprNpqqyAa8yH5RIERGj2UziWiXkaE9QjErDjp/r5rXa4fe9XFpkbMTrfrxU6WGu057LxnX6nFjedzte69bTuYGHuvVMs6lciwOo2Wivu4j2tlevlIGK3Vb3BCuCZPDz+OfFTFe3RrMp6C7W81K5RqdDGt/3cmmRae8fK9Mev1Cuq35Sjl30FTnlz0tia7Z8qggHy/EU9YnHmjXb8DcnnvefAxdGDP3fAL8GnhSRdzK9kBB0Uq4cne093wPidU9phdgwhCDnY6ZdVdZaOe8WXRwygFXmDekT5Lx3VyohR3sv547Tnh+n1EzW3k47bnngHXzfP6GJ85lDJ52Mppwf0QzA4i2RYvXrIt72iFdzQ+eg9z1bSXlu4GHEiCuajfZezh0HXWc4vxZbmi21FTpwU7NxoiCtvtktNLEh2uuO9ravrNZ70N0T7BEkA2Rh/nDea7Y0EtnkRLOWXktsel223d1aI3F0a+/1bmegovy4l2ib3cJPHvo6H1z2Gb588fmM2as1u2Ct/fWvhvJRbKH/bfc+hMEtnBjv3UC9UqpDKdUN1AF7lVJvK6W+4O7wspw0WusEilpbSzgfC4KZwl8e4XGnhLRD5+1jC2haitGsR2R7JeSmtqGh8o1TUzPcLbwyhhx839+ngX76KaCAP7JowBCqnzZYqG7BWmiu0vc7+2HBq5kdptek1HoLPK0670r1bvvcoFSlr9muM4YaRG5ptnaK1mvUa79BHTtYxct8i66oxaZYhCp1wcXqCq3nAbLQEMp7zaay2AT63H1nDA2jX7bdc+ecpdk3ouYW17BgoKJ8gRIOevhHnHZ3CDph/n36nA17bQulNVfCrnW8Tf8WD4dvyBBOjPfvA9cAY0WkBBgd2X8U+LqbgwsaKU/Iszkfs6ltsEVRiX9ed8ivXtmZJuiaTauqrDW2ueMC63U3mk2flDWbjZ0SLK63TSiHq2fLGLIb8PYJa6ZI4MlcQZhxjKWMMm7i5iE5lv+fvXuPj6o+8P//+szkQkJCLgYRogYpkhC5CUhdqd9qI22trSn1++tqd3vBS+uXWn+7tbFdlpvAWiv7rbvsVlup2EpLra61amtXJMXWlWoBEUEgCAhqAAEJ4Z6QzOf7x5lJJkOuM2dmzmTeTx95TOZ2zpnw9sz53KtK2mfsxgbv5zp3+0Pre59ym8qZDb82gNgr9hdFvH92HDLbRUOKM9Y9h4UEGEBOh8qmrkS2xgNOQWjOt1Oq5R2U2aj8fkLHAnw8zrHQbWYjx7w/wGK2sRVwZpRfePw5SoqqMMHz64U7YSBORWmHHiOLH+RSMi6NzweQeOpN4X0LsNda22KMuQr4UvDx08Cr8TowL+rzBXmqrp0NHU8YkV+uCaS1smMTdWYTVKP8+esgP8+57ZXwlkqP/n+lzMamz5lNcI+RPme2K9e90XFYUjStl50JvzBtsgltGbqLO3mXdxnORc5yRBGWXAKVec7vtYec1vd8fycXlSmoT7lN5cyGdz3ubbfj7kQO+2iOQ2a7KHhuwpmR+RRwUVh3+ags/CG+KJZfTiYvZ3bBLKgshyONMba+R3aXdyOzv5/Q3mOkycKA1fHJbCdDlEqoYiqvUEIVq6llIpfwz3wXi8WHj6d4jrsKqlh3LVz/G8jIhwu2wPf/Fq7fGNFjJAUzK47e/KPNBc4zxnwLyLXWLgs+Pha4O25H5kF9nvE8Vdd7X7zHOebQbMdJbN1U9+PYRJXZkAR8Qf/293DsuHPbK+oy3+9FtbJEAnuM9DmznYnsLu/msKTIwpDbXZG7aBEKn627K1UlUJgBW07A9PXOY09Pcgr0R86kdut7n3Ob6pl189qgs8y6OZ64i4JnqKtxDjnddpfvlTnfJuCsYp8yvHxNW/VxKCyALXUxtL53Ns7drcwuiqgkdbvHSC+GKN3FnWxlS1vBPbK3U2kVTHsa8EHOcfjcbKjYGLaBFMysOHosvAfnJfw1cBD4pjHm18aYOUAWUBrvA0xpCR6P6YrQya7JOsee5G7J6n4cuz5N+Bc+djYB3eP6PDGNusynhT5PUpnAHiMxT6bU2WRfbme5pix+49+7aMUMFYQG9FAQipz0q6oEsE6BPpXHvvfrzELH7sHxymx4Ad7tv0sXwz3GAItwWqNiUjOTDbRsiHUzidTnzIb+zeNRWO1EzLmNHOcez0rSePQY6aKC7xC1/AeX8A7O90gOOfyOlZ32diqtgsvuw5kgNAB/uTP8M6ReZsXRY+HdGBPqaPUD4AFgCXAA+BTwWPwOrZ9ItXHv4SfkJLdsqvuxO/rcEpzA7nF9mpgmBbrMizuiGvce4qXMdib8gjLaCep6Y+GI+Ix/7+T8EN7q3lP3407Xy+4HM8/368xGzoETr8zWlHUcTxzHAmKowDqDHC7k1FkTgKWDqHqJmYhbr4rMbF8nqOuNyAK823ntYujtX7mTJWzhNE3kkMNTPNftOXd8DRSOdn4/shU2Lnb3MCXxetNtPvTPvMNau8pa+4q19ifW2pnW2ivjeXD9QqqNew+dkJO4NFyIuh+7I6qW4ARWOvV6YhoPVSx1R7mNXVTj3kMX/V7KbKRETgQaOZu3m+Pfw1oxV1PLF5l+1tJw3YlcNq4/zDzfrzMb3lMk3nPg/H5Ce6WTm62ZEcM9Ql2O/8jgsyYASxdRXRuEKgUtce8xEtOkdeGVlfHMbHgvJ7db3zvpLbKaWr7OOxwP3h/ey7ka/mYJTonPwtrvQb1WXk5pvSm8lxpj/gnYaoy515jQ/IXSKwmeoTMmi/c4J2S3uxdF6Xo+Tx75XM/nk30o6SeBlU697hrnoYqlrqymlkaOMJpKdZuPQZ+XMQJvZjZSoi4ow4Xvx83W9+DyW/9UfyfHOUZOL2frhohl497qHzPPp0VmEzUHzsI4ZDZsvPbqX69oW9d9F3ltE4Clm6gym8CeeVFnNtGrJYXn1c0hSp0sc3gXd/IhpzhJFqOp7PVcDW3d531AAP7wSbXAp7KMXrzmDeA4kAl8HLjVGPM+sBF401r7QByPL/XVlLXX+IZqrz1a8GD2LueEnOSl4UKe5bcc5xjP8ttOx/JI74S3BPdpYprZu9onpvFAHlg4wvl/yeOt7lvZwuVcoaEeMepzbucMdy70mzyU2XDJWn6zpqz93B5qfXdj38HvtTm3f4n//dzsXrcAQXthfctx2irlllQ6k9iFxsKnIi9nturjzm2oFTN0v1v9KbPBa7HVl63li5+Z27au+/18jVeYSjkL0rIAH9X1wZUFzhC2OPcYiTqziewpAu3ZDO139i73/l8J6zGyumZHW6VTGefxHxRS3odNja+BkolOwZ2A0wKfQ0G+OweaXOvXrz83IyPjpzjTWPSXGfQDwOaWlpZbJ02adCD8CWOt7eI9XTPGXIDzBxpjrU2pupvJkyfbdevWJXan4SeTfD8c7c0ZKAkGrA5OVBccH5RkXhzzboxZb62dnMh9xprZqP+OCcrD1E85XeOumAKvvBC33SSEMutw4zwb1d9y0J+cC504n2ejymz26val4RK9ikf4d1CWgSYX/n9evIc//PmXfPPHP6Sh9CS/6WHcZaTaQ8Eu8sYpuFeVwOKdTlf6OSPh7pGJzW1/zyxEkdvQdwAkN7Nu7X/xHiZ+9uNsHb2nbaxwFnNpYA1FXMFUXolp86l4rlVmXRSPfV/3Bjx/mNX/9DY33PuPbasj3MNFXMSWqHK7cTGs/S5gYT5jT79vN+XEfqDJtXHjxmfPO++80YMHDz7q8/n6XrD1oEAgYA4ePFiwf//+LePHj78+/Lmoaieste9Za/+QagX3pEnw2LY+W7zHORlXFTknYw90mfdiIShVRbX0FjhDKMJv48SVmZA9QJl1l5eXjOtTZhfv6VhwT8awjziMy9zBDj72p3H87YpPRLVGdlUJFGY6re+hlvbwsfAMTL0Woagym8Dlt/qU2+veSE6re0gcJgPbwQ4C1lkZK9RTpJwFaTvmHfpZZpPVUyQkHsM9gkNq7vry9znFKcDJ7k0siTq34RPY+cnKcudAk25Mfyq4A/h8Pjt48OBGnMbyjs8l4XhSXp+X1wBvT1w3e5dzxbSqwalF9UB3U0365a6oMrtohPMFaIjrF3TMMyF7hDLrrpjOs3FefqtPmZ2zq73gDsmrHHV5XObQhU3kH8tl1sKvRL1G9oJRcEWhcxu6H1pGjvNGjIzpAJMgqswmePmtXolc0z1R8zNEcrnSaejCJh741p1c9mpFW2ZLqErbMe8hUS0ZZ3Ay61YhNVbJ6C4fqabM/QlC5wynJd9yeLAzRV1oKc5Yc/s3SyAjHwymv5QDff2p4B4S/Exn/Rsl7B/NGLPMGHPAGLO5i+erjTFvGmPeMMasM8Z8LOy5rxpj3g7+fDXs8UnGmE3GmB3GmCXGmIQsXhHVRXoCayr7ZPGe9gtLDy39obWy3RVVZmvKINvnfAnFeWKamGaV9Qhl1l1Rn2dDvJDZ8JYgSHw3znCRLZkxXHSvppaJW2/h+ev+Qv35B7l6cXTl7KoSeOWK4FrvwftPT3IK8Bhfyl1URl2Bl6Dlt3qd2fBCUDzWdO+L8EqnGCo3VlPLfXN+yeX/cwkvXvVvUWe2P4oqtwnqmdfra4PINd2TldlF7uQ1ZHXNDsZu/QrfeOBzDK8f1ufhSV0prYJpT0MzJ0/EvLF+Ijc399JkH0NvJfLL8WfAp7t5vhYYb62dANwM/BTAGFMMzAM+CkwB5hljioLveQi4Dbg4+NPd9l0T1UW6F2sqoeOxeKC7fEjUXb2lU1EXLL3YDVnSQtTn2fs/kpAVPnqV2fCLt2QW3ENcaBkKLQ33bul+7pv9Cyq2lrlaURIqwNOUeheVUZ9nF45o/3fxWmbjtaZ7b7nU+n4Xd/KvNStoyW4luymzQ2YPUcsrTOVQX3pM9CNR5TZBPfN6ldnIStJkXsu63FvkLu5kd+lenrxpNZtGP9Z2TexGZkurYB9bt8V0gP3cmTNnOtwPBAK0trYm6WjaJazwbq39M3C4m+eP2/bZ8wbSXp/3KeBFa+1ha20D8CLwaWPMUGCQtfbV4Pseg8SsKeb1McS9luzxQZIwUS0JAwnrhtwfqNu8u6LObE2Zc45tjm835B67zof3avLS8oYxLh23gLkc5xh55HPPnjlnrUPshqoS4L3Uu6iMKbMJqNxP2cy6OOTjp3NeOCuzdcFJ6+p07u698J55bi6PFqFXmXV7YsNYuZTX1dS2zS7/5Z99ioxmX9u2lNn4+d3vfpc/adKk8k984hMjL7744jF1dXVZw4cPHzN9+vTho0aNumTnzp1Zv/nNbwZNmDChorKycvS11147orGx0QdQWlo69vbbbz9/1KhRlWPHjh29efPm7Hgco6e6pRljphtjtgG/x2l9BygF3gt72fvBx0qDv0c+3tl2vx7sir/u4MGD7h94byWoprJXvDA+SLoUj8zG3A05jl/Q6jaf+jyTWfBGN+TZ3uzVFGvr+/V8njzymcUcrn53ahwOMHE8lVkvdEP2aE+8WCevC1WkjKaSz3XSxpNqk9a5nduoM5ugYUq9Ps96oeAOrk22eBd3cjo4u/y3Hv5ihyGMqZbZVLNly5bcBx988N3du3dvBnj33Xez77jjjoM7dux4Kz8/P3DvvfcO/fOf/7x9y5YtWydOnHhy4cKFQ0LvLSgoaNm+ffuWb3zjGwe+9a1vXRCP4/NU4d1a+7S1tgKnBX2hi9t92Fo72Vo7efDgwW5ttu+80nXeizWVYaKa9KefiUdmY+qGHBKnL+hU7zavmeY9lFlwCh7ZxikIJatLZ6jiwEstmCGLomsZWk0t97KQ4xzjWX7bYQ3iVOSpzHqhG3Ko4sCLPfGi7I4cGuaxlS0UUMjIhRlnZTbVJq1zO7dRZzZBKyml5Hk2PK9RVCKHt7oP5yIy5ozs0GMk1TKbasaNG3eioqKiOXR/6NChzVVVVScAXnrppYE7d+4cMGXKlIqKiorKxx9//Jx33323bdb+r371q4cBbrvttsMbNmzIi8fxearwHhLsYj/CGFMC1APhNRfnBx+rD/4e+bi3hb4c3ZqJMhrhF1oeK7iDuh/HS9TDPRLwBZ3qM84rs/ERU2YT0HW+WwtHeGbpzbNE2TJ0F3dynGMMIMe50PfqRKxJFFNmE9ANuVuLgpn1ak+8KJbiCmU2JzyzCZgTI5XENMdQAobWdXt94OXzbAxzWYRa3UOzy0ti5ebmBrq6b63lYx/72NFt27Zt2bZt25adO3e+9cQTT7T9A/vC5lo1xsSlL5VnCu/GmJGh2eKNMROBbOBD4AXgk8aYouBEdZ8EXrDW7gOOGmMuD77vK8AziTreqFuHw78Uk9FasXiPc6GVZTxZcAd1P46XmHo0JOALOpW7zoe6El+fmGk30kZMmQ21dri0rnlnus1sTZlnlt7sVB9bMldTy+5gS1Dbuu4JXJEilUSd2/BuyHGqdEr5zPZhyEdk62VbZrN8TuY1aV0bL2cWusmtlzMbZW/bTs+1nfRySvfMJstVV111Yt26dXmh8exHjx71vfnmm21j2x977LFigEceeaTo0ksvjcvEq4lcKu5XwF+AcmPM+8aYW4wxtxtjbg++5AZgszHmDeBHwN9ax2GcLvRrgz8Lgo8BzMSZlX4HsBP4Q6I+T9QtbaEWj2S1VszZ5ZxIDN482aGZ5uMlptbhBHxBp3LX+Wf5bXtXYnFNTJldGP+K0lTOLNDrlsxQ1+NTnCKP/I4tQXOGx2XSulQW0/VBDF1teyPlM9uHpbi6bL3sJLPpPgGYlzMLKZzbPva27fJc20mPkXTPbLIMGzas5Sc/+cnuG2+8ccSoUaMqJ0+eXLFp06YBoecbGhr8o0aNqnzwwQeHLFmy5L3uthWtRM42f5O1dqi1NtNae7619hFr7Y+ttT8OPv8Da+0l1toJ1tq/sdb+T9h7l1lrRwZ/Hg17fJ21doy19iPW2jvCZquPu5hah5PVWhE+u7xXZryXhIk9s/H9gk7lrvPqLRIfMWc2zsvGpXJmgV63ZIbPMP8ET6titQcx5TbO8zX0i8z2cex7W+tl+DbmDHeuv4LvT/cJwGLObAKWOkxJfext2+W5tpMeI+meWbedPHlyA8BnP/vZY6tXr94Rery8vLz57bfffiv8tddff/2xzZs3b92+ffuW7du3b/m7v/u7xtBzc+cuzV8aAAAgAElEQVTO/WD79u1bNm/evHXMmDFN8ThWz3SbTzVRLwkTkuixgppdPu3FnNkETAKWil3nNVld/MSc2QSMfU/FzHbQi4vLDjPMR2Y8xSet8xxltme96FUTPsN8p2OGI3KrCcBiEOrF2aTMnqWPcwZ1e66N6DGizKYvFd5jEFOXzkTPPO/xSeokMWLOLDgXlXHKbCp2jdNkdfEV8983zmPfUzGzHfRwcXnWDPORNAHYWZTZOOuhV03kDPOdVqqGsh7HWdJTiTIbR72cM6jHc614Xn19/aahQ4e2xHs/KrzHIOausgla1xVor7FTwT2tuZbZZK6W4DHqMh9fMf99o5ihOu10c3F51gzzkbqYACydeT2zKd91HrrtoXDWDPOdCWU+eJvuk3+5mtk4rJaQ0pkNnw+km3Nkj7mN6C2S7plNZyq8xyDmidUWjWgfuxXvgpCXZ+QM0vru8edKZkPi8AWdsl3jJG5izmwfZ6juq36R2fCLyy7+vz5r3HDk+zVpXRuvZxb6SW57aO0d3lNmw1ru033yL1cyG778ZBwqnVI2s72YqLrTlREiRQy3TffMpjMV3mMQc2HTC2sRe4i6H8efK5mN4xd0KnaNU27jy5VKvUXxa8lMxcyepYv/r3scNxz+/ogJwNJdzLmNc0Vpv8htJz0U+pTZsB4jmvzLpeuDOFY6pXRmexgqG1oZIae7dd0jJrtWZtOXCu8xcOWiPQFrEacKrZUdf65kNvIL+ro33Dk4Uq9r3GpqaeQIo6lUt/k4iUtmXTzXplpmuxT+NwoOj7mLO9nKFoCeW+Q0cV0HMec2AS2ZKS/WzIaNe9fkXy6da+NYUZryejFUttveIqDMCqDCe0xcGesaOU7IxYJQqtFa2fHn2vjs8C/oHiZh6atU6hq3gLndT4okMYtLZl1uyUylzHZrUXDJJwM7FteyO9iNs1c0AVgHruQ2jpVO/TGzq3+9om+ZjRj3nu6U2TgLy2r436XXvUVAmfUwv98/qaKiojL0M2vWrPMApkyZUl5XV5fl5r5UeI9BzGOE4Oza9ecPx35gKUoTf8VfzEtvhYTPUA3wvZ1Q6052U6lrnDIbf65mNvxc6+JQpVTKbLfClny6YHYLpzhFHvk9X1CCLirjJbzS6bvpeZ7tVlhm615+tW+ZTfSSvekiTq3vKZ/ZTpbU69XKCOEi5hfRpHXekZ2dHdi2bduW0M+99967P177UuHdC8ILQuEFojSitbITx7Ux2r+f4BSGfEAAmJteXeSU2cRxLbM1Ze2ThJruX5q2gn+XlowWRh8ayRM83bt8a8m4DlzNbHjXcJfOs/1muAe0ZfYbP6rm7sVf7nyN7M5EjCFO94JQ3DLrkn6RWdPxtlcrI4SLmF9Ek9Z5X2FhYYvf73d1XTEV3r3i9xPAfsK5TUOa9CtxXG0trimDlRPgikGwYETPr++FVOkap8wmjquZXTjCablY6E5eIXUy2ysLR3Ai9zSL5v+cQTuyel8xpSXjOnA1s4tGQI4PyrJdO89CP8rtwhG0+FsxGGb/09+Ts/hg798bNtwj3QtCrmc239+xFd4FKZ/ZhSPaKzbCKjl7HOveYRu72+YX0aR1nbh56wVMWVve40/5XyrJe2kC5X+p7PG1N2+9oKfdNjU1+cK7zS9durQIYOXKlTtHjhx5xs2PqMJ7jLS8mTvU/TiFVRXDK5OdWxekStc4ZTZxXBmiFBKHZTNTJbO9UlNG7ec3MHv+1/j2f3ypb+/VknFtXM/syatg91TXzrPQj3JbU8ZPv/8iR/NP8Mg3nuPWhZ/q/XtDwzyeP0z5r7+Z1gUhr59noR9kNmzW+dV//C+gl2Pdw4UN9yhZPFKT1kWrvimLEwE/9U2ujEeP7DZ/2223Nbix3c5kxGvD6SK89U1dZyUVeD2zVR93bkM166H7kt68PEyhP2V2NbX88FsryN+fzedWXA4T9rh+AZ4uvJzZ/mQ1tTxc83se/uJT/N+b/w8ZV57T+zfPGe5MYAmU3FZKyd++Ep+DTBHKbAIEO1DfM3cZW9nCaCr79reuKeu4uofOzx0tG/1er173zMF85r8zjPkX7aV68LE4H5Wr1PIeI7W+uUNdkBMnFTKbCl3jlNnE8vrfOxUy2xt3cSevXb6FexY+isH0bWZ+LRfXgTKbGKHl4QbtG8DVf5zYtxVQQhNZauI6QJlNiEUjINswce2o6LehXk6xqx58jA1T6lKt4A4qvMfM1W5GaSwVCpT9RSpkNhW6ximzieX1v3cqZLYvjo5qbr/T28K4Zu/uQJlNrIl7xrTf6UsFUtjEdS0L30rbCetAmU2ImjJasgJ87pmpfPTVPnaZ70S6T7ToFZFj3mfOnFkar32p8O4CjXuPjbppJZ4yGxtlViL1h5mQO6w3XPLj9tVPert2e9h4TjeXiJL46G+Z/dzffr3vmQ25sgCL5dCVG9J2wjpwcWnOOOkvmR279Ss0ZZ5h5VUPcPXikX3fSFgvp3SfaNErWltb14ePeX/wwQfr47WvhBTejTHLjDEHjDGbu3j+74wxbxpjNhlj1hhjxgcfLzfGvBH2c9QY8w/B5+YbY+rDnvtMIj5LZ7zezcjr9PdLPK//zb3eNc7rf7/+KBX+5l7PbU9C3Y/BuYgPn8yr1y3pNuI2jSmz8edKZgFebsRgKHnpUsp//c04HGnq8Hpu+0Nmd5fu5Xs/fIispozohhmFdZvXjPPpJ1Et7z8DPt3N8+8AH7fWjgUWAg8DWGvrrLUTrLUTgEnASeDpsPc9EHreWvt8fA69Z17vZuR11/N58sjnej6f7ENJG17PrNe7ximzief1zIL3c9tn4eMpe3uBGRzPCaR913llNgnCMzu7D70/gu/LODmAkq8MdfWQUo3Xc9tfMvvVJz7r/NLXXiLQYTb/Eqo043yaSchs89baPxtjhnfz/Jqwu68C53fysipgp7XWc1cDV1OlrrMxeJbfcpxjPMtv+Udqkn04aSGU11DNutfy6/XZu5XZxPN6ZlNdhy7zoTGYNWXwUoPTitmXrvOaCRlQZuOty8zO2eUM3TB92Fi075OE8/r1QXfCM/utH97gPBjqJZLG50rpGy+Oeb8F+EMnj98I/CrisTuC3e2XGWOKutqgMebrxph1xph1Bw8edPNYxQVer+VNhkRkVl3joqfMnk2Z9XZmu7OaWr7IdLayhQIKOxYyo+mGPGe40/re5O2J65TZ1M0sdNJlPmRhsPeHpW/5i/Z9CRbv3Ho9s5C6uQ3PbMacsLHuWqFD+sBThXdjzNU4hffvRjyeBVwPPBn28EPAR4AJwD7g/3a1XWvtw9baydbayYMHD3b9uCV6mvirc4nIrNcLoF7tGqfMdk6Z9W5me7KAuRznGHnkn/23jaYbcqgFqdnbE9cps6mb2W7VlEGWz8lfX5Y6rCkjkBWAZou9e4dnC/Dxzq3XMwv9JLc1ZdFPsBhGs82nH88U3o0x44CfAtXW2g8jnr4WeN1a+0HoAWvtB9baVmttAFgKTEnc0YpbUqGGt7/y+pJxXp1VVplNHmU2PkJzOMxiztl/25qy9jHsfelOrInrAGU2XjrtMh8umvkagD1zXsBiMRhPVzzFk9czm6o6zWyoZ1PoNgqabT79eKLwboy5EPgN8GVr7fZOXnITEV3mjTHhM4pMBzqdyT5RtPRWdFKhhre/SoXMerFrnDKbPMqs+1ZTy70sbJvDoVPRdCdeNMKZDXnRCNeONVV5PbepmNkuh3mERNmqmV/zKXZ/8xkC/ta0rnhSZt23gLlnZ3bOcMgy0Bz9ECPNNu8dy5cvLzTGTNqwYcMAgDVr1uRMmDChYuTIkZeMGjWqcunSpW1DvKdMmVJeV1eXBVBaWjq2L/tJ1FJxvwL+ApQbY943xtxijLndGHN78CVzgXOAB4PLvq0Le+9AYBpO4T7c/cGl5d4Ergb+Mf6fpGtqjYuOaniTJxUy2y+6xolrlFn3ddtlPiSabshhsyGnO6/ntl9mFqKar6GEKi4quwtfblZaVzwps+7rdJWamjLI9jkTJUY57l2zzXvH448/Xjxx4sTjjz32WDFAXl5eYPny5e/s2LHjrZUrV749a9asCw4dOuSPdT8JKbxba2+y1g611mZaa8+31j5irf2xtfbHwedvtdYWhS37NjnsvSestedYaxsjtvlla+1Ya+04a+311tp9ifgsXVFrnKQaZTY6Xr+o6c+UWfd122U+XJTdkMX7uU21rvNxz6wqnpRZl3XbwylFJviU7jU2NvrWrl2b9+ijj+5++umniwHGjRvXNHbs2CaA4cOHnykuLm7Zt29fBkBhYWGL3++3AEVFRS192VdClopLB1ouTlJNKixjFN41zgvLwaymlkaOMJpKz17U9GfKrPt6vexhqCCzcHfHQpH0C6mUW2VWILUy221vEReW1zxELXXMpZwFad8C/w1uvuAtNuf29LqjNPr3Up81jNLmQRS0dvfaSxhz8icse6+716xYsaLwqquuahw3blxTUVFRy8svv5x75ZVXngw9v3r16twzZ86YysrKJoCVK1fuDD23efPmrT1/snaeGPMuIsnh9VZkr3WN63TMmiSUMuuePldGqUUyKl7PLKRObhORWc3ercy6KTyzT/B059cOc4Y7c4REWcmkSev6bi/1WSc44d9LfZYb23viiSeKb7rppgaAG2644fDy5cuLQ8/t2bMnc8aMGSOWLl262++Pude8Wt5F0tlcFrQte+ZFodr00KQ0ya5d9/rfKx14/d/Aa5ntTqgy6nKuUGVUHHk9s6kkEZkNLwilayumMuueXmW2piymStFyFrS1vKe7nlrIQ57jmfxFzB82m/l7P0f1sVj2+cEHH/hfffXV/Lq6upw77riD1tZWY4yxgUDg/SNHjviuvfbakfPmzauvqqo6Ect+QtTyLpLGUmHCQC/NKpsKf6/+LhX+DbyU2e54fVxrf6HMuicRmdXs3cqsmxKRWU1a13efo/rYa2yoi7XgDrB8+fKi6dOnH967d++m+vr6Tfv373/z/PPPb37hhRfyrrvuupE33njjhzNmzGhw47hBhXcR8bhU6RonEpIqmU2FC3RJDGW2nQpCqUGZFa948skni7/whS90KJxXV1c33HrrrRetXbs2b8WKFSUVFRWVFRUVlWvWrMmJdX/qNi8inlb1cW93PRaJpMxKqlFmJdUos+IVr7322vbIx2bPnn1g9uzZB+KxP7W8i4iIiIiIiHicCu8iIiIiIiIiHqfCu4iIiIiIiIjHqfAuIiIiIiIi4nEqvIuIiIiIiIh4nArvIiIiIiIiIh6nwruIiIiIiIhIlJYvX15ojJm0YcOGAaHHrrzyyovz8/MnXH311SPDXztlypTyurq6rGj2o8K7iIiIiIiISJQef/zx4okTJx5/7LHHikOPfec7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IX+s+1HhXURERERERCQKjY2NvrVr1+Y9+uiju59++uligHHjxjWNHTu2CWD48OFniouLW/bt25cBUFhY2OL3+200+0qJ2eZFREREREREurKRmy84yubcnl53hkZ/E/VZ2ZQ2Z1LQ2t1rBzHm5HiWvdfda1asWFF41VVXNY4bN66pqKio5eWXX8698sorT4aeX716de6ZM2dMZWVlE8DKlSt39vYzRVLLu4iIiIiIiKSFJuqzWjnhb6I+qnHnkZ544onim266qQHghhtuOLx8+fLi0HN79uzJnDFjxoilS5fu9vtj7jWvlncRERERERFJbT21kIfs55n87cwfNor5e8+j+lgs+/zggw/8r776an5dXV3OHXfcQWtrqzHG2EAg8P6RI0d811577ch58+bVV1VVnYhlPyFqeRcREREREZG0cB7Vx/4XG+piLbgDLF++vGj69OmH9+7du6m+vn7T/v373zz//PObX3jhhbzrrrtu5I033vjhjBkzGtw4blDhXURERERERKTPnnzyyeIvfOELHQrn1dXVDbfeeutFa9euzVuxYkVJRUVFZUVFReWaNWtyYt2fus2LiIiIiIiI9NFrr722PfKx2bNnH5g9e/aBeOxPLe8iIiIiIiIiHqfCu4iIiIiIiIjHqfAuIiIiIiIi4nEqvIuIiIiIiIh4nArvIiIiIiIiIh6nwruIiIiIiIiIx6nwLiIiIiIiIhIFv98/qaKioheen8kAACAASURBVLK8vLyysrJy9IsvvjgQYM2aNTkTJkyoGDly5CWjRo2qXLp0aVHoPVOmTCmvq6vL6uu+tM67iIiIiIiISBSys7MD27Zt2wLw1FNPDZo1a9b506ZNq8vLywssX778nbFjxzbt3r0787LLLhs9ffr0oyUlJa3R7kuFdxEREREREZEYNTY2+gsKCloAxo0b1xR6fPjw4WeKi4tb9u3bl1FSUtJaWFjY4vf7bV+3r8K7iIiIiIiIpLSb7+CCzVvJ7el1jUfx1+8lq3QYzQWD6LYVfMxoTi77T97r7jVNTU2+ioqKyqamJnPo0KHM559/fnvka1avXp175swZU1lZ2QSwcuXKnT0dZ2dUeBcREREREZG0UL+XrBMnnQJ8wSBOxbq98G7zq1atGjhjxoyLtm/f/pbP50wvt2fPnswZM2aMeOSRR97x+/0x7UuFdxEREREREUlp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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig = plt.figure(figsize=(15,6))\n", - "axesR = {}\n", - "axesI = {}\n", - "for i, lMax in enumerate(lMaxes):\n", - " axesR[lMax] = fig.add_subplot(2,len(lMaxes),i+1)\n", - " axesR[lMax].set_xlim([50,300])\n", - " axesR[lMax].set_ylim([1.25, ef[1]/eh])\n", - " axesI[lMax] = fig.add_subplot(2,len(lMaxes),len(lMaxes)+i+1)\n", - " axesI[lMax].set_xlim([50,300])\n", - " axesI[lMax].set_ylim([-60, 30])\n", - " axesR[lMax].set_title('$l_\\max = %d $' % lMax) \n", - " axesR[lMax].tick_params(labelbottom=False) \n", - " if i == len(lMaxes)//2:\n", - " axesI[lMax].set_xlabel(\"Particle radius / nm\")\n", - " if i == 0:\n", - " axesR[lMax].set_ylabel('$\\hbar \\Re \\omega / \\mathrm{eV}$')\n", - " axesI[lMax].set_ylabel('$\\hbar \\Im \\omega / \\mathrm{meV}$')\n", - " else:\n", - " axesR[lMax].tick_params(labelleft=False) \n", - " axesI[lMax].tick_params(labelleft=False) \n", - "\n", - "res_thr = 0.00015\n", - "\n", - "ir_labeled=set()\n", - "if True:\n", - " for (lMax, radius), (eigvals, residuals, b, ef, irclass) in plotdata.items():\n", - " for i, (e, res, iri) in enumerate(zip(eigvals, residuals, irclass)):\n", - " #if i == 0:\n", - " if res < res_thr:# and e.real < 2.14e15:\n", - " if iri in ir_labeled: \n", - " label=None\n", - " else:\n", - " ir_labeled.add(iri)\n", - " label=irlabels[iri]\n", - " axesR[lMax].plot(radius*1e9, e.real/eh, \n", - " marker='.',\n", - " #marker=markerfun(b),\n", - " ms=3, #c=colorfun(b)\n", - " c=matplotlib.cm.hsv(iri/9),\n", - " #c = colorfun(iri),\n", - " label=label,\n", - " )\n", - " axesI[lMax].plot(radius*1e9, e.imag/eh*1000, \n", - " #marker='x', \n", - " #c=colorfun(b), \n", - " c=matplotlib.cm.hsv(iri/9),#colorfun(iri),\n", - " marker='.', #markerfun(b),\n", - " ms=3,\n", - " #label=label\n", - " )\n", - "fig.legend(title=\"Irrep\", loc=\"center right\")\n", - "#fig.suptitle('$l_\\mathrm{max}=%d$, residual threshold = %g' % (lMax, res_thr) )\n", - "fig.savefig(plotfilename)\n", - "fig.savefig(plotfilename.replace('pdf', 'png'))\n", - "print(plotfilename)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0. , 1.40635433, 1.98888536, 2.81270865, 3.14470387,\n", - " 3.97777072, 4.21906298, 4.44728287])" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ef / eh" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3/anaconda", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import re\n", + "import numpy as np\n", + "import matplotlib\n", + "from matplotlib import pyplot as plt\n", + "from scipy.constants import hbar, e as eV, c\n", + "eh = eV/hbar\n", + "import glob\n", + "def ri(z): return (z.real, z.imag)\n", + "#m = re.compile(r\"([^_]+)_r([0-9.]+)nm_\")\n", + "#removek = re.compile(r\"(k\\([^)]+\\)um-1_)\")\n", + "remover = re.compile(r\"r[0-9.]+nm_\")\n", + "\n", + "\n", + "markerdict = {\n", + " 4: \"3\",\n", + " -4: \"4\",\n", + " 3: \"^\",\n", + " -3: \"v\",\n", + " -2: 'x',\n", + " 2: '+',\n", + " 1: 's',\n", + " -1: 'd',\n", + "}\n", + "\n", + "\n", + "D4h_irlabels = {\"B2''\":\"$B_2''$\",\n", + " \"B2'\":\"$B_2'$\",\n", + " \"A1''\":\"$A_1''$\",\n", + " \"A1'\":\"$A_1'$\",\n", + " \"A2''\":\"$A_2''$\",\n", + " \"B1''\":\"$B_1''$\",\n", + " \"A2'\":\"$A_2'$\", \n", + " \"B1'\":\"$B_1'$\",\n", + " \"E'\":\"$E'$\",\n", + " \"E''\":\"$E''$\",}\n", + "\n", + "\n", + "prop_cycle = plt.rcParams['axes.prop_cycle']\n", + "colors = prop_cycle.by_key()['color']\n", + "colordict = {i: colors[(i+1)] for i in range(-4,8)}\n", + "\n", + "def markerfun(b):\n", + " if b in markerdict.keys():\n", + " return markerdict[b]\n", + " else: return 'X'\n", + "\n", + "def colorfun(b):\n", + " if (b+1) in colordict.keys():\n", + " return colordict[b+1]\n", + " else: return colordict[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L1_cn410.npz 203\n", + "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L2_cn410.npz 251\n", + "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L3_cn410.npz 251\n", + "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L4_cn410.npz 251\n", + "sph_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L5_cn410.npz 251\n" + ] + } + ], + "source": [ + "allfiles=glob.glob('*sph*k(0_0)*.npz')\n", + "allgraphs=dict()\n", + "for f in allfiles:\n", + " base = remover.sub('', f)\n", + " if base in allgraphs.keys():\n", + " allgraphs[base] += 1\n", + " else:\n", + " allgraphs[base] = 1\n", + "for k in sorted(allgraphs.keys()):\n", + " print(k, allgraphs[k])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['sph_r281nm_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L4_cn410.npz', 'sph_r121nm_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L3_cn410.npz', 'sph_r67nm_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L3_cn410.npz', 'sph_r208nm_p580nmx580nm_mAu_n1.52_b-2_k(0_0)um-1_L3_cn410.npz'] collected_XXXsph_rXXX_p580nmx580nm_mAu_n1.52_bX2_k(0_0)um-1_LX_cnXXX.pdf\n" + ] + } + ], + "source": [ + "projectors = dict()\n", + "projectors_list = dict()\n", + "lMaxes = [lMax for lMax in range(1,6)]\n", + "for lMax in lMaxes:\n", + " proj = np.load('projectors_D4h_lMax%d.npz' % lMax)\n", + " irlabels = sorted(proj.keys())\n", + " proj = {f: proj[f] for f in irlabels}\n", + " proj_list = [proj[irlabels[i]] for i in range(len(proj))]\n", + " projectors[lMax] = proj\n", + " projectors_list[lMax] = proj_list\n", + "globpattern = '*sph_r*_p580nmx580nm_mAu_n1.52_b?2_k(0_0)um-1_L?_cn???.npz'\n", + "filenames=glob.glob(globpattern)\n", + "plotfilename = 'collected_' + globpattern.replace('*', 'XXX').replace('?', 'X').replace('npz','pdf')\n", + "print(filenames[:4], plotfilename)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#projectors\n", + "#glob.glob('cyl_r100nm*L3*3100.npz')\n", + "#glob.glob('sph_r100*m5*.npz')\n", + "#dat['meta'][()],list(dat.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "inpure result detected [1. 1. 0.92521572 1. 0.99999627 0.99990293\n", + " 0.99946049] [1.59712906e-05 3.60193407e-05 2.48341492e-01 1.21848930e-03\n", + " 3.81805601e-03 2.42649228e-02 2.99534246e-02]\n", + "inpure result detected [1. 1. 0.99999998 0.99999999 0.99999996 0.96608887\n", + " 0.99999852 0.99999397 0.99998951 0.99999912 0.99982435] [2.66223026e-04 2.12357147e-05 3.54211968e-05 1.06651057e-04\n", + " 2.79595790e-04 2.41939163e-01 2.17645058e-03 3.41541473e-03\n", + " 1.14507609e-02 1.49639498e-02 2.33483138e-02]\n", + "inpure result detected [1. 0.99999999 1. 0.97991334 0.99999996 0.9999989\n", + " 0.99999983 0.99999966 0.99999322 0.99999721 0.99999653] [3.28735741e-04 2.66532534e-05 2.47011478e-05 1.45012420e-01\n", + " 2.44785416e-04 7.05405359e-04 1.60203586e-03 1.71245137e-03\n", + " 1.03244480e-02 9.18732728e-03 1.18651583e-02]\n", + "inpure result detected [1. 1. 0.99999998 0.99999961 0.93267685 0.99999964\n", + " 0.99999822 0.99921774 0.99995547 0.99997301] [5.22490396e-04 3.01556792e-05 4.88795563e-05 6.29703960e-04\n", + " 2.34414238e-01 3.72766210e-03 4.72444059e-03 7.62106094e-02\n", + " 6.32796684e-02 5.63231562e-02]\n" + ] + } + ], + "source": [ + "plotdata = {}\n", + "for file in filenames:\n", + " dat = np.load(file, allow_pickle=True)\n", + " kx = dat['meta'][()]['k'][0]\n", + " radius = dat['meta'][()]['radius']\n", + " b = dat['meta'][()]['band_index']\n", + " eigvals = dat['eigval']\n", + " lMax = dat['meta'][()]['lMax']\n", + " residuals = dat['residuals']\n", + " ef =dat['empty_freqs']\n", + " eigvecs = dat['eigvec']\n", + " irweights = []\n", + " #for proj in projectors_list[lMax]:\n", + " # try:\n", + " # irweights.append(np.linalg.norm(np.tensordot(proj, eigvecs, axes=(-1, -1)), axis=0,ord=2) if len(proj) != 0 else np.zeros((len(eigvecs),)))\n", + " # except ValueError as err:\n", + " # print(proj, len(proj))\n", + " # raise err\n", + " irweights = np.array(irweights)\n", + " #print(irweights)\n", + " irweights = np.array([np.linalg.norm(np.tensordot(proj, eigvecs, axes=(-1, -1)), axis=0,ord=2) if len(proj) != 0 else np.zeros((len(eigvecs),)) for proj in projectors_list[lMax]]).T\n", + " irclass = np.argmax(irweights, axis=-1)\n", + " purities = np.amax(irweights, axis=-1)\n", + " if (np.any(purities < 0.98)):\n", + " print(\"inpure result detected\", purities, residuals)\n", + " #print(purities)\n", + " \n", + " #for i in range(len(residuals)): \n", + " # if residuals[i] < 0.01:\n", + " # vec = eigvecs[i]\n", + " # for irlabel, proj in projectors.items():\n", + " # print(irlabel, np.linalg.norm(np.dot(proj, vec))) #maybe some conj() here?\n", + " # print('--->', irlabels[irclass[i]])\n", + "\n", + " \n", + " plotdata[(lMax,radius)] = (eigvals, residuals, b, ef, irclass,)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "collected_XXXsph_rXXX_p580nmx580nm_mAu_n1.52_bX2_k(0_0)um-1_LX_cnXXX.pdf\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(6,3))\n", + "axesR = {}\n", + "axesI = {}\n", + "for i, lMax in enumerate(lMaxes):\n", + " axesR[lMax] = fig.add_subplot(2,len(lMaxes),i+1)\n", + " axesR[lMax].set_xlim([50,300])\n", + " axesR[lMax].set_ylim([1.25, ef[1]/eh])\n", + " axesI[lMax] = fig.add_subplot(2,len(lMaxes),len(lMaxes)+i+1)\n", + " axesI[lMax].set_xlim([50,300])\n", + " axesI[lMax].set_ylim([-60, 30])\n", + " axesR[lMax].set_title('$l_\\max = %d $' % lMax) \n", + " axesR[lMax].tick_params(labelbottom=False) \n", + " if i == len(lMaxes)//2:\n", + " axesI[lMax].set_xlabel(\"Particle radius / nm\")\n", + " if i == 0:\n", + " axesR[lMax].set_ylabel('$\\hbar \\Re \\omega / \\mathrm{eV}$')\n", + " axesI[lMax].set_ylabel('$\\hbar \\Im \\omega / \\mathrm{meV}$')\n", + " else:\n", + " axesR[lMax].tick_params(labelleft=False) \n", + " axesI[lMax].tick_params(labelleft=False) \n", + " axesR[lMax].set_xticks([100,300])\n", + " axesI[lMax].set_xticks([100,300])\n", + "\n", + "res_thr = 0.00015\n", + "\n", + "ir_labeled=set()\n", + "if True:\n", + " for (lMax, radius), (eigvals, residuals, b, ef, irclass) in plotdata.items():\n", + " for i, (e, res, iri) in enumerate(zip(eigvals, residuals, irclass)):\n", + " #if i == 0:\n", + " if res < res_thr:# and e.real < 2.14e15:\n", + " if iri in ir_labeled: \n", + " label=None\n", + " else:\n", + " ir_labeled.add(iri)\n", + " label=D4h_irlabels[irlabels[iri]]\n", + " axesR[lMax].plot(radius*1e9, e.real/eh, \n", + " marker='.',\n", + " #marker=markerfun(b),\n", + " ms=1, #c=colorfun(b)\n", + " c=matplotlib.cm.hsv(iri/9),\n", + " #c = colorfun(iri),\n", + " label=label,\n", + " )\n", + " axesI[lMax].plot(radius*1e9, e.imag/eh*1000, \n", + " #marker='x', \n", + " #c=colorfun(b), \n", + " c=matplotlib.cm.hsv(iri/9),#colorfun(iri),\n", + " marker='.', #markerfun(b),\n", + " ms=1,\n", + " #label=label\n", + " )\n", + "fig.legend(title=\"Irrep\", loc=\"upper right\")\n", + "plt.subplots_adjust(bottom=0.3, right=0.82,left=0.10)\n", + "#fig.suptitle('$l_\\mathrm{max}=%d$, residual threshold = %g' % (lMax, res_thr) )\n", + "fig.savefig(plotfilename)\n", + "fig.savefig(plotfilename.replace('pdf', 'png'))\n", + "print(plotfilename)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0. , 1.40635433, 1.98888536, 2.81270865, 3.14470387,\n", + " 3.97777072, 4.21906298, 4.44728287])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ef / eh" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1207" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(plotdata)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([5, 3, 5, 0, 7, 8, 8, 9, 9])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "irclass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- 2.11.4.GIT