{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Single Point Energy using `pyxtp`\n", "\n", "## What this tutorial is about \n", "\n", "In this tutrial we will learn how to setup a simple single point calculation using the pyton interface to `XTP`, i.e. `pyxtp` and the Atomistic Simulation Environment (ASE). Let's first import the relevant modules:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2025-04-25T10:51:20.621830Z", "iopub.status.busy": "2025-04-25T10:51:20.621450Z", "iopub.status.idle": "2025-04-25T10:51:21.050912Z", "shell.execute_reply": "2025-04-25T10:51:21.050379Z" } }, "outputs": [], "source": [ "from pyxtp import xtp, Visualization\n", "from ase import Atoms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define the molecular structure \n", "\n", "The python interface is built to leverage the ASE molecular structure classes `Atoms` and `Molecule`. Therefore we cam simply define the atomistic structure we want to use via the ASE native functionalities. Let's for example define a `CO` molecule using the `Atoms` ASE class " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2025-04-25T10:51:21.053800Z", "iopub.status.busy": "2025-04-25T10:51:21.053377Z", "iopub.status.idle": "2025-04-25T10:51:21.056587Z", "shell.execute_reply": "2025-04-25T10:51:21.055926Z" } }, "outputs": [], "source": [ "atoms = Atoms('CO', positions=([0,0,0],[1.4,0,0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instantiate the `xtp` calculator\n", "\n", "ASE works with so-called calculators that handle the ab-initio calculation. Many quantum chemistry packages have their own dedicated calculators (see the exhaustive list here: https://wiki.fysik.dtu.dk/ase/ase/calculators/calculators.html). 'pyxtp' is nothing more than a dedicated ASE calculator for XTP. It can therefore be used as any other calculator. \n", "\n", "We first need to instantiate the calcultor. Here we use `nthreads=2` to indicate to the calculator to use two threads to perform the calculation. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2025-04-25T10:51:21.058796Z", "iopub.status.busy": "2025-04-25T10:51:21.058623Z", "iopub.status.idle": "2025-04-25T10:51:21.063703Z", "shell.execute_reply": "2025-04-25T10:51:21.063204Z" } }, "outputs": [], "source": [ "calc = xtp(nthreads=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Configure the `xtp` calculator\n", "\n", "The `xtp` calculator comes with many options. Those options are precisely those that can be accessed through the different XML files that are used to configure the `dftgwbse` tools of `XTP`. A summary of those options can be found here: https://www.votca.org/xtp/dftgwbse.html. These options can be easily navigated through the `calc.options` and using the autocomplete (tab) functionality. Let's for example change the basis set and auxilliary basis set of the calculations." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2025-04-25T10:51:21.066281Z", "iopub.status.busy": "2025-04-25T10:51:21.065871Z", "iopub.status.idle": "2025-04-25T10:51:21.068573Z", "shell.execute_reply": "2025-04-25T10:51:21.068017Z" } }, "outputs": [], "source": [ "calc.options.dftpackage.basisset = 'def2-svp'\n", "calc.options.dftpackage.auxbasisset = 'aux-def2-svp'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also give redirect all the logging output to a dedicated file" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2025-04-25T10:51:21.071244Z", "iopub.status.busy": "2025-04-25T10:51:21.070744Z", "iopub.status.idle": "2025-04-25T10:51:21.073490Z", "shell.execute_reply": "2025-04-25T10:51:21.072966Z" } }, "outputs": [], "source": [ "calc.options.logging_file = 'CO_energy.log'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run the calcuation\n", "\n", "As for any ASE calculator, the `xtp` calculator must be attached to the molecular structure. To do that we simply need to assign our `xtp` calculator to the `calc` attribute of or molecular structure" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2025-04-25T10:51:21.075836Z", "iopub.status.busy": "2025-04-25T10:51:21.075517Z", "iopub.status.idle": "2025-04-25T10:51:21.078104Z", "shell.execute_reply": "2025-04-25T10:51:21.077487Z" } }, "outputs": [], "source": [ "atoms.calc = calc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To run the calculation we can simply call the `.get_potential_energy()` of the molecular structure, and all the rest will be done automatically" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2025-04-25T10:51:21.080650Z", "iopub.status.busy": "2025-04-25T10:51:21.080234Z", "iopub.status.idle": "2025-04-25T10:51:24.914020Z", "shell.execute_reply": "2025-04-25T10:51:24.913437Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Using 2 threads\n", "... ... Reading structure from CO.xyz\n", "... ... Saving data to CO.orb\n", "... ... Writing output to CO_summary.xml" ] }, { "data": { "text/plain": [ "-113.00304600751193" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "atoms.get_potential_energy()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualize the results\n", "\n", "Several visualisations are directly provided by `pyxtp`. It is for example possible to directly plot the absorption spectrum of the molecular structure assuming a Gaussian broadening of the peaks" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2025-04-25T10:51:24.944574Z", "iopub.status.busy": "2025-04-25T10:51:24.944010Z", "iopub.status.idle": "2025-04-25T10:51:25.110966Z", "shell.execute_reply": "2025-04-25T10:51:25.110326Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHFCAYAAAAaD0bAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAafNJREFUeJzt3XlYVGX/BvB7GBhANkUUwQBxSVRcoQwVyQ0Tc0lN03JJrBRLgXpT1HLpVdLMsNzSXKpfLqW5ZGhgLlliKkKuaSkCGoiIgogywJzfHzHnnXEGnMHZZO7Pdc3lzJlnzvnOsN0+z3OeIxEEQQARERGRFbExdwFEREREpsYARERERFaHAYiIiIisDgMQERERWR0GICIiIrI6DEBERERkdRiAiIiIyOowABEREZHVYQAiIiIiq8MARCZ16tQpREZGolmzZnB0dISjoyNatGiBN954AydOnDB3eTo5ePAgJBIJDh48aPJjz5kzBxKJRG3bs88+i2effdbktTxo3LhxcHZ2NncZJiWRSDBnzhzx8blz5zBnzhxcuXJFo+2zzz6LwMBAo9Vy5coVSCQSbNiwwWjHeJxs3rwZHTp0gIODA7y9vREdHY3i4uKHvu7ixYt45513EBQUhLp168Ld3R1du3bF1q1ba1RHTEwMJBIJ/vzzzyrbzJw5ExKJBCdPnqzRMahmGIDIZD7//HMEBQXh999/x9SpU7F79278+OOPiI6OxtmzZ/HUU0/h0qVL5i7zoTp16oSUlBR06tTJ3KUAAFasWIEVK1aYuwyrlJKSggkTJoiPz507h7lz52oNQMbm5eWFlJQU9O/f3+THtjTffPMNRo4ciaeeegp79uzB7NmzsWHDBgwZMuShr01KSsKPP/6IoUOH4rvvvsM333yDFi1a4MUXX8S8efP0riUyMhIAsG7dOq3PKxQKfPXVV+jQoYPF/E6xGgKRCfz666+CjY2NMGDAAKG0tFRrm2+//Va4du2ayWt7nMyePVuw1B/bsWPHCk5OTuYuw6y+++47AYBw4MABjefCwsKENm3amKUua1JeXi54eXkJ4eHhatu/+eYbAYCQmJhY7etv3LghKBQKje39+/cX6tSpI9y/f1/vmp5++mmhUaNGQllZmcZze/bsEQAIn332md77pUfDHiAyiQULFkAqleLzzz+HTCbT2ubFF1+Et7e3+PjEiRN46aWX0KRJEzg6OqJJkyYYOXIkMjMz1V6nbVgIADZs2ACJRKL2v/H9+/fj2WefRf369eHo6AhfX18MHToUJSUlYpuVK1eiffv2cHZ2houLCwICAjBjxgzxeW1DYLrWqqzpwIEDmDRpEjw8PFC/fn0MGTIE//zzj96fK7QMgSmHQhYvXowlS5bA398fzs7OCAkJwdGjRzVef+LECQwcOBDu7u5wcHBAx44d8e2336q1KSkpwTvvvAN/f384ODjA3d0dwcHB2LRpk8b+/v77b0RERMDZ2Rk+Pj54++23UVpaqtZm7ty56Ny5M9zd3eHq6opOnTph7dq1ePDazE2aNMHzzz+P7du3o127dnBwcEDTpk3x6aefahy3qKhIrFEmk6Fx48aIjo7G3bt3q/38li9fDhsbG+Tl5YnbPv74Y0gkEkyePFncplAoUK9ePbz99tviNtUhsA0bNuDFF18EAPTo0QMSiUTrkNTx48cRGhqKOnXqoGnTpvjwww+hUCiqrREAvvvuO3Tu3Blubm7ia8ePHy8+X9UQ2M6dO9GuXTvY29ujadOmWLp0qdafGYlEgjfffBPr169Hy5Yt4ejoiODgYBw9ehSCIOCjjz4Sv5d69uyJv//+W+31ycnJGDRoEJ544gk4ODigefPmeOONN5Cfn//Q92ZIR48eRU5ODl599VW17S+++CKcnZ2xffv2al/v4eGh9ffJ008/jZKSEhQUFKht1+XnJzIyErm5udizZ4/GftevXw97e3u8/PLLer5TelS25i6Aar+KigocOHAAwcHB8PLy0vl1V65cQcuWLfHSSy/B3d0dOTk5WLlyJZ566imcO3cOHh4eetVx5coV9O/fH6GhoVi3bh3q1q2La9euYe/evZDL5ahTpw42b96MqKgovPXWW1i8eDFsbGzw999/49y5cwatdcKECejfvz82btyI7Oxs/Oc//8Err7yC/fv36/WeqrN8+XIEBAQgISEBAPDee+8hIiICGRkZcHNzAwAcOHAAzz33HDp37oxVq1bBzc0NmzdvxogRI1BSUoJx48YBAGJjY/H111/jv//9Lzp27Ii7d+/izJkzuHnzptoxy8rKMHDgQERGRuLtt9/GL7/8gg8++ABubm54//331T6vN954A76+vkDlH6233noL165dU2sHAOnp6YiOjsacOXPQqFEjfPPNN5g6dSrkcjneeecdoDKghYWF4erVq5gxYwbatWuHs2fP4v3338fp06exb98+rX/UAKB3794QBAE///wzRo4cCQDYt28fHB0dkZycLLY7ceIEbt++jd69e2vdT//+/bFgwQLMmDEDy5cvF4czmjVrJrbJzc3Fyy+/jLfffhuzZ8/G9u3bERcXB29vb4wZM6bKr2VKSgpGjBiBESNGYM6cOXBwcEBmZuZDv1/27t2LIUOGoHv37tiyZQvKy8uxePFiXL9+XWv73bt3Iy0tDR9++CEkEgmmTZuG/v37Y+zYsbh8+TKWLVuGwsJCxMbGYujQoUhPTxc/10uXLiEkJAQTJkyAm5sbrly5giVLlqBbt244ffo07Ozsqq21vLy82ueVpFJplV9LADhz5gwAoF27dmrb7ezsEBAQID6vrwMHDqBBgwZo2LCh2jZdfn5GjhyJmJgYrFu3DgMGDBBff+vWLezcuRMvvPAC6tWrV6O66BGYuwuKar/c3FwBgPDSSy9pPFdeXi6UlZWJN21dz6pti4uLBScnJ2Hp0qXi9qqGhdavXy8AEDIyMgRBEIStW7cKAIT09PQqj/Hmm28KdevWrfb9HDhwoMphjofVqqwpKipKrf2iRYsEAEJOTk61x9b2XsPCwoSwsDDxcUZGhgBAaNu2rVBeXi5uP3bsmABA2LRpk7gtICBA6Nixo0bX/PPPPy94eXkJFRUVgiAIQmBgoDB48OBqaxs7dqwAQPj222/VtkdERAgtW7as8nUVFRVCWVmZMG/ePKF+/fpq3wN+fn6CRCLR+Jr16dNHcHV1Fe7evSsIgiDEx8cLNjY2wvHjx9XaKb/mDxv2eOKJJ4Tx48cLgiAIpaWlgpOTkzBt2jQBgJCZmSkIgiDMnz9fsLOzE4qLi8XXARBmz54tPn7YEBgA4ffff1fb3rp1a6Fv377V1rd48WIBgHD79u0q2yi/7uvXrxe3PfXUU4KPj4/asPOdO3eE+vXra3wfARAaNWqk9v527NghABA6dOig9nVJSEgQAAinTp3SWotCoRDKysqEzMxMAYCwc+fOat+f8vi63FTfnzbz58+v8mcpPDxcePLJJx9ay4PWrFkjAFD7WRb0+PkRKn8+7OzshOvXr4vbPvvsMwGAkJycrHdN9Og4BEZmFRQUBDs7O/H28ccfi88VFxdj2rRpaN68OWxtbWFrawtnZ2fcvXsX58+f1/tYHTp0gEwmw+uvv44vv/wSly9f1mjz9NNP4/bt2xg5ciR27typc/e9vrUOHDhQ7bHyf6sPDpk9iv79+0MqlVZ5jL///ht//vmn2PVeXl4u3iIiIpCTk4MLFy4AlZ/Lnj17MH36dBw8eBD37t3TekyJRKL2P1zlcR98X/v370fv3r3h5uYGqVQKOzs7vP/++7h586baUBQAtGnTBu3bt1fbNmrUKBQVFYlnzezevRuBgYHo0KGD2vvo27evTmfs9erVC/v27QMAHDlyBCUlJYiNjYWHh4fYC7Rv3z6EhITAycmp2n1Vp1GjRnj66acf+vk86KmnngIADB8+HN9++y2uXbv20GPdvXsXJ06cwODBg9WGnZ2dnTW+Rko9evRQe3+tWrUCAPTr10+t10W5XbXuvLw8TJw4ET4+PrC1tYWdnR38/PwAQKef1+PHj+t0q6r2B1XVS1Rd75E2e/bsweTJkzFs2DC89dZb4nZ9fn5QOQxWVlaGr7/+Wty2fv16+Pn5oVevXnrVRIbBAERG5+HhAUdHR62/5Ddu3Ijjx49j165dGs+NGjUKy5Ytw4QJE/DTTz/h2LFjOH78OBo0aFDlH+DqNGvWDPv27UPDhg0xefJkNGvWDM2aNcPSpUvFNqNHj8a6deuQmZmJoUOHomHDhujcubPaUIg2+tZav359tcf29vYAUKP3VZWHHUM5DPLOO++ohVA7OztERUUBgBgAP/30U0ybNg07duxAjx494O7ujsGDB+Ovv/5SO0adOnXg4OCgcdz79++Lj48dO4bw8HAAwJo1a/Dbb7/h+PHjmDlzptbPoFGjRhrvTblNOQR3/fp1nDp1SuN9uLi4QBCEhwbZ3r17IysrC3/99Rf27duHjh07omHDhujZsyf27duHe/fu4ciRI1UOf+nqwa8JKj+fh33du3fvjh07dqC8vBxjxozBE088gcDAQK1zsJRu3boFQRDg6emp8Zy2bQDg7u6u9lgZnKrarvy6KhQKhIeH4/vvv8e7776Ln3/+GceOHRPnnOnyfd2hQwedbg/W8iDlZ/zg8CwAFBQUPPT1qn766ScMGTIEffr0wTfffKMWnvT5+QGA0NBQPPnkk1i/fj1QuSTIyZMn8eqrr+odysgwOAeIjE4qlaJnz55ISkpCTk6O2jyg1q1bA5VzQlQVFhZi9+7dmD17NqZPny5uLy0t1ZiEqPyDW1paKv6RxwO/fJRCQ0MRGhqKiooKnDhxAp999hmio6Ph6emJl156CQDw6quv4tVXX8Xdu3fxyy+/YPbs2Xj++edx8eJF8X+0Na3VkijnJcXFxVV5enDLli0BAE5OTpg7dy7mzp2L69evi71BAwYMqHZ9E202b94MOzs77N69Wy0s7dixQ2v73NzcKrcp/9gpQ3ZVpxo/bL6Y8n/g+/btQ3JyMvr06SNunzVrFn755ReUlpY+cgB6FIMGDcKgQYNQWlqKo0ePIj4+HqNGjUKTJk0QEhKi0b5evXqQSCRa5/to+0wfxZkzZ/DHH39gw4YNGDt2rLj9wYnS1XnYHCGl9evXi3NrtGnbti0A4PTp0+LvF1T20Pz555/iPK+H+emnnzB48GCEhYVh27ZtGidv6PPzozR+/HhMnz4dx44dw8aNG2FjY1PteyHjYgAik4iLi8OePXswceJEbN269aG/7CQSCQRBUAs0APDFF1+goqJCbVuTJk2Ayv9RKYcKAOCHH36ocv9SqRSdO3dGQEAAvvnmG5w8eVIMQEpOTk7o168f5HI5Bg8ejLNnz2oNQPrUaklatmyJFi1a4I8//sCCBQt0fp2npyfGjRuHP/74AwkJCSgpKUGdOnV0fr1EIoGtra3a8Ny9e/fUhgZUnT17Fn/88YfaMNjGjRvh4uIiTjR+/vnnsWDBAtSvXx/+/v4616Lk5eWF1q1bY9u2bUhNTRU/jz59+uCNN97AkiVL4Orqqvb9pY0xevK0HSMsLAx169bFTz/9hLS0NK0ByMnJCcHBwdixYwcWL14s/gEvLi7G7t27DVqTsgfjwZ+Bzz//XOd9HD9+XKd2D/v6du7cGV5eXtiwYQNGjBghbt+6dSuKi4t1Xgto8ODB6NatG3bs2KHxvlDDn5+xY8di1qxZ+Pzzz7Fr1y706tVL6+8UMg0GIDKJrl27Yvny5XjrrbfQqVMnvP7662jTpg1sbGyQk5ODbdu2AQBcXV3Ff7t3746PPvoIHh4eaNKkCQ4dOoS1a9eibt26avuOiIiAu7s7IiMjMW/ePNja2mLDhg3Izs5Wa7dq1Srs378f/fv3h6+vL+7fvy/2GCj/Z//aa6/B0dERXbt2hZeXF3JzcxEfHw83N7cq//jpU6ul+fzzz9GvXz/07dsX48aNQ+PGjVFQUIDz58/j5MmT+O6774DKPyrPP/882rVrh3r16uH8+fP4+uuvERISolf4QeXcpCVLlmDUqFF4/fXXcfPmTSxevFjrHxkA8Pb2xsCBAzFnzhx4eXnh//7v/5CcnIyFCxeKx46Ojsa2bdvQvXt3xMTEoF27dlAoFMjKykJSUhLefvttdO7cudq6evXqhc8++0z8+qPyj62/vz+SkpIwcOBA2NpW/ytTudLz6tWr4eLiAgcHB/j7+2sd+tLH+++/j6tXr6JXr1544okncPv2bSxduhR2dnYICwur8nXz5s1D//790bdvX0ydOhUVFRX46KOP4OzsbNDeyYCAADRr1gzTp0+HIAhwd3fHDz/88NChY1XBwcEGqUUqlWLRokUYPXo03njjDYwcORJ//fUX3n33XfTp0wfPPfec2PbQoUPo1asX3n//ffHsw19//RWDBw9Go0aNMGPGDKSnp6vtv3Xr1uLvKV1/fpQaNWqEiIgIrF+/HoIgiIskkpmYexY2WZf09HTh1VdfFfz9/QV7e3vBwcFBaN68uTBmzBjh559/Vmt79epVYejQoUK9evUEFxcX4bnnnhPOnDkj+Pn5CWPHjlVre+zYMaFLly6Ck5OT0LhxY2H27NnCF198oXYWWEpKivDCCy8Ifn5+gr29vVC/fn0hLCxM2LVrl7ifL7/8UujRo4fg6ekpyGQywdvbWxg+fLja2S7azgLTtVblWWAPnq2ky5llgp5ngX300Ucar3/wrCVBEIQ//vhDGD58uNCwYUPBzs5OaNSokdCzZ09h1apVYpvp06cLwcHBQr169QR7e3uhadOmQkxMjJCfny+2qWohRG01r1u3TmjZsqW4r/j4eGHt2rVqXy+h8iyw/v37C1u3bhXatGkjyGQyoUmTJsKSJUs0jlNcXCzMmjVLaNmypSCTyQQ3Nzehbdu2QkxMjJCbm1vt5yoIgrBz504BgNCnTx+17a+99poAQPj00091+jwTEhIEf39/QSqVqp21VNVCiGPHjhX8/PyqrW337t1Cv379hMaNGwsymUxo2LChEBERIRw+fFhso+0sMEEQhO3btwtt27YVZDKZ4OvrK3z44YfClClThHr16mm8l8mTJ6ttq+p7Sfn9+t1334nbzp07J/Tp00dwcXER6tWrJ7z44otCVlaW1s/IFDZu3Ci0a9dOkMlkQqNGjYQpU6YId+7c0fo+VOtTfr9WdXvwZ1SXnx9Vyu8zd3f3Gi2qSIYjER5ceYyIyEI0adIEgYGBBh+ysWZlZWXo0KEDGjdujKSkJHOXQ2Q2HAIjIqrFIiMj0adPH3FId9WqVTh//rza2Y9E1ogBiIioFrtz5w7eeecd3LhxA3Z2dujUqRMSExPNekYbkSXgEBgRERFZHS6ESERERFaHAYiIiIisDgMQERERWR1OgtZCoVDgn3/+gYuLC6/RQkRE9JgQBAF37tyBt7c3bGyq7+NhANLin3/+gY+Pj7nLICIiohrIzs7GE088UW0bBiAtXFxcgMoPULnkOREREVm2oqIi+Pj4iH/Hq8MApIVy2MvV1ZUBiIiI6DGjy/QVToImIiIiq8MARERERFaHAYiIiIisDgMQERERWR0GICIiIrI6DEBERERkdRiAiIiIyOowABEREZHVYQAiIiIiq8MARERERFaHl8IgIiKqpeTlCnydcgWZBSXwc6+D0SFNILNl3wcYgIiIiGqn+MRzWHM4Awrhf9vmJ57Ha6H+iItobc7SLAIDEBERUS0Tn3gOn/+SobFdIUDcbu0hiP1gREREtYi8XIE1hzXDj6o1hzMgL1eYrCZLxABERERUi3ydckVt2EsbhfBvO2vGAERERFSLZBaUGLRdbcUAREREVIv4udcxaLvaigGIiIioFhkd0gQ2kurb2Ej+bWfNGICIiIhqEZmtDV4L9a+2zWuh/la/HhBPgyciIqpllKe4P7gOkI0EXAeokkQQhIfMFbc+RUVFcHNzQ2FhIVxdXc1dDhERUY38c7sEXT48AACI6d0Ck55tXqt7fvT5+117PwUiIiIrpxp2Xn7Gt1aHH33xkyAiIiKrwwBEREREVocBiIiIiKwOAxARERFZHQYgIiIisjoMQERERGR1GICIiIjI6jAAERERkdVhACIiIiKrY/YAtGLFCvj7+8PBwQFBQUE4fPhwlW1zcnIwatQotGzZEjY2NoiOjtba7vbt25g8eTK8vLzg4OCAVq1aITEx0YjvgoiIiB4nZg1AW7ZsQXR0NGbOnIm0tDSEhoaiX79+yMrK0tq+tLQUDRo0wMyZM9G+fXutbeRyOfr06YMrV65g69atuHDhAtasWYPGjRsb+d0QERHR48KsV4NfsmQJIiMjMWHCBABAQkICfvrpJ6xcuRLx8fEa7Zs0aYKlS5cCANatW6d1n+vWrUNBQQGOHDkCOzs7AICfn59R3wcRERE9XszWAySXy5Gamorw8HC17eHh4Thy5EiN97tr1y6EhIRg8uTJ8PT0RGBgIBYsWICKiooqX1NaWoqioiK1GxEREdVeZgtA+fn5qKiogKenp9p2T09P5Obm1ni/ly9fxtatW1FRUYHExETMmjULH3/8MebPn1/la+Lj4+Hm5ibefHx8anx8IiIisnxmnwQtkUjUHguCoLFNHwqFAg0bNsTq1asRFBSEl156CTNnzsTKlSurfE1cXBwKCwvFW3Z2do2PT0RERJbPbHOAPDw8IJVKNXp78vLyNHqF9OHl5QU7OztIpVJxW6tWrZCbmwu5XA6ZTKbxGnt7e9jb29f4mERERPR4MVsPkEwmQ1BQEJKTk9W2Jycno0uXLjXeb9euXfH3339DoVCI2y5evAgvLy+t4YeIiIisj1mHwGJjY/HFF19g3bp1OH/+PGJiYpCVlYWJEycClUNTY8aMUXtNeno60tPTUVxcjBs3biA9PR3nzp0Tn580aRJu3ryJqVOn4uLFi/jxxx+xYMECTJ482eTvj4iIiCyTWU+DHzFiBG7evIl58+YhJycHgYGBSExMFE9bz8nJ0VgTqGPHjuL91NRUbNy4EX5+frhy5QoAwMfHB0lJSYiJiUG7du3QuHFjTJ06FdOmTTPxuyMiIiJLJREEQTB3EZamqKgIbm5uKCwshKurq7nLISIiqpH84vsI/u/PAIATs3rBw9nB3CUZlT5/v81+FhgRERGRqTEAERERkdVhACIiIiKrwwBEREREVocBiIiIiKwOAxARERFZHQYgIiIisjoMQERERGR1GICIiIjI6jAAERERkdVhACIiIiKrwwBEREREVocBiIiIiKwOAxARERFZHQYgIiIisjoMQERERGR1GICIiIjI6jAAERERkdVhACIiIiKrwwBEREREVocBiIiIiKwOAxARERFZHQYgIiIisjoMQERERGR1GICIiIjI6jAAERERkdVhACIiIiKrwwBEREREVocBiIiIiKwOAxARERFZHbMHoBUrVsDf3x8ODg4ICgrC4cOHq2ybk5ODUaNGoWXLlrCxsUF0dHS1+968eTMkEgkGDx5shMqJiKxbhUJAyqWb2Jl+DSmXbqJCIZi7JCKd2Zrz4Fu2bEF0dDRWrFiBrl274vPPP0e/fv1w7tw5+Pr6arQvLS1FgwYNMHPmTHzyySfV7jszMxPvvPMOQkNDjfgOiIis094zOZj7wznkFN4Xt3m5OWD2gNZ4LtDLrLUR6cKsPUBLlixBZGQkJkyYgFatWiEhIQE+Pj5YuXKl1vZNmjTB0qVLMWbMGLi5uVW534qKCrz88suYO3cumjZtasR3QERkffaeycGk/zupFn4AILfwPib930nsPZNjttqIdGW2ACSXy5Gamorw8HC17eHh4Thy5Mgj7XvevHlo0KABIiMjdWpfWlqKoqIitRsREWmqUAiY+8M5CAAUpSUo2Pc5bu75FBX37kA5ADb3h3McDiOLZ7YAlJ+fj4qKCnh6eqpt9/T0RG5ubo33+9tvv2Ht2rVYs2aNzq+Jj4+Hm5ubePPx8anx8YmIarNjGQViz8+tg+txJ/UHFJ9Kwq2fVwMABAA5hfdxLKPAzJUSVc/sk6AlEonaY0EQNLbp6s6dO3jllVewZs0aeHh46Py6uLg4FBYWirfs7OwaHZ+IqLbLu/Nv+BEUFbh77pC4veTiEQjlZRrtiCyV2SZBe3h4QCqVavT25OXlafQK6erSpUu4cuUKBgwYIG5TKBQAAFtbW1y4cAHNmjXTeJ29vT3s7e1rdEwiImvS0MUBAFBWcA2CvETcLpSVQn7jCuy9Wqi1I7JUZusBkslkCAoKQnJystr25ORkdOnSpUb7DAgIwOnTp5Geni7eBg4ciB49eiA9PZ1DW0REj+hpf3d4uTmgLC9D47myG1cgqTwb7Gl/d7PUR6Qrs54GHxsbi9GjRyM4OBghISFYvXo1srKyMHHiRKByaOratWv46quvxNekp6cDAIqLi3Hjxg2kp6dDJpOhdevWcHBwQGBgoNox6tatCwAa24mISH9SGwlmD2iNkT99rfFcWcE1AMDsAa0htanZVAYiUzFrABoxYgRu3ryJefPmIScnB4GBgUhMTISfnx9QufBhVlaW2ms6duwo3k9NTcXGjRvh5+eHK1eumLx+IiJr9FygF7o0VCDxge129wuw8pVOXAeIHgtmDUAAEBUVhaioKK3PbdiwQWObIOh3aqW2fRAR0aOpKMrT2NbKtYzhhx4bZj8LjIiIHj/KXneJnQNsHJwBAFd5Bi09RszeA0RERI8XQRCQmZkJALB1bQhIpVDcL8a1a9egUChgY8P/W5Pl43cpERHppbCwEPfv/7vOj9SlPmxd/l13raysDNevXzdzdUS6YQAiIiK95OX9b/6PtI4bpC7/W3j22rVrZqqKSD8cAiMiIr2oBiCbOm6wkTmKj2/evGmmqoj0wwBERER6uXHjhnhfWscNEjsHrc8RWTIGICIi0ot6D1Bd2NjJxMf5+flmqopIPwxARESklwfnAElsGYDo8cMAREREetEYArO10/ockSVjACIiIr08OAlaIv1fAGIPED0uGICIiEgvBQUF4n0bRxcGIHoscR0gIiLSS2FhIQBAIpHAxr4ObOzs4eTkBHAIjB4jDEBERKSX27dvAwBcXV0hkfz7Z6Seu7vac0SWjgGIiIj0ogw5bnXrittcXV0Bld4hIkvHAERERHpR7QFScnNzAwCUlJSgrKzMbLUR6YoBiIiIdHb//n3I5XIAQF21HiA38T57gehxwABEREQ6U53j4+amEoDcGIDo8cIAREREOlMLQHX/F3rcVIbDGIDoccAAREREOquqB0h1QjQDED0OGICIiEhnquHGTWXYS3UIjKfC0+OAAYiIiHSm3gPEITB6fDEAERGRztTnAHESND2+anQtsOzsbFy5cgUlJSVo0KAB2rRpA3t7e8NXR0REFkU1AKmeBu/G0+DpMaNzAMrMzMSqVauwadMmZGdnQxAE8TmZTIbQ0FC8/vrrGDp0KGxs2LFERFQbqc8Bqgvg3zWBVM8IYwCix4FOSWXq1Klo27Yt/vrrL8ybNw9nz55FYWEh5HI5cnNzkZiYiG7duuG9995Du3btcPz4ceNXTkREJqc+B+h/8344CZoeNzr1AMlkMly6dAkNGjTQeK5hw4bo2bMnevbsidmzZyMxMRGZmZl46qmnjFEvERGZkeZp8Pn/3ucQGD1mdApAH330kc47jIiIeJR6iIjIgqmGG9cqToNnAKLHgd6Tde7du4eSkhLxcWZmJhISEvDTTz8ZujYiIrIwd+7cEe+7uLiI952dnSGRSAAGIHpM6B2ABg0ahK+++gqo7Art3LkzPv74YwwePBgrV640Ro1ERGQhiouLAQB2dnZqZ//a2NiIV4fnHCB6HOgdgE6ePInQ0FAAwNatW+Hp6YnMzEx89dVX+PTTT41RIxERWQhlD5Czs7PGc8qFEVV7iYgsld4BqKSkROz2TEpKwpAhQ2BjY4NnnnkGmZmZxqiRiIgshLIHSHX4S0kZipRtiCyZ3gGoefPm2LFjB7Kzs/HTTz8hPDwcAJCXlyd2f+pjxYoV8Pf3h4ODA4KCgnD48OEq2+bk5GDUqFFo2bIlbGxsEB0drdFmzZo1CA0NRb169VCvXj307t0bx44d07suIiLSVF0PkHLb3bt3oVAoTF4bkT70DkDvv/8+3nnnHTRp0gSdO3dGSEgIUNkb1LFjR732tWXLFkRHR2PmzJlIS0tDaGgo+vXrh6ysLK3tS0tL0aBBA8ycORPt27fX2ubgwYMYOXIkDhw4gJSUFPj6+iI8PBzXrl3T960SEZEKhUKBu3fvAg/pARIEAffu3TN5fUT60DsADRs2DFlZWThx4gT27t0rbu/VqxcSEhL02teSJUsQGRmJCRMmoFWrVkhISICPj0+Vk6mbNGmCpUuXYsyYMWoX4VP1zTffICoqCh06dEBAQADWrFkDhUKBn3/+Wc93SkREqpThB1X0AKmGIg6DkaXTOwCNHz8eTk5O6Nixo9olL9q0aYOFCxfqvB+5XI7U1FRxCE0pPDwcR44c0besKpWUlKCsrAzu7u5VtiktLUVRUZHajYiI1KmGmup6gMCJ0PQY0DsAffnll1q7Nu/duyeeHq+L/Px8VFRUwNPTU227p6cncnNz9S2rStOnT0fjxo3Ru3fvKtvEx8fDzc1NvPn4+Bjs+EREtYVqqKluDhDYA0SPAZ0DUFFREQoLCyEIAu7cuaPWW3Lr1i0kJiaiYcOGehegXDhLSRAEjW01tWjRImzatAnff/89HBwcqmwXFxeHwsJC8ZadnW2Q4xMR1Sb69AAxAJGl0/lq8HXr1oVEIoFEIsGTTz6p8bxEIsHcuXN1PrCHhwekUqlGb09eXp5Gr1BNLF68GAsWLMC+ffvQrl27atva29urLehFRESa2ANEtYnOAejAgQMQBAE9e/bEtm3b1ObUyGQy+Pn5wdvbW+cDy2QyBAUFITk5GS+88IK4PTk5GYMGDdLnPWj46KOP8N///hc//fQTgoODH2lfRET0L/YAUW2icwAKCwsDAGRkZMDX19cgw1SxsbEYPXo0goODERISgtWrVyMrKwsTJ04EKoemrl27pja3KD09Haj84bpx4wbS09Mhk8nQunVroHLY67333sPGjRvRpEkTsYfJ2dlZ6/9YiIhINw/rAeJZYPQ40SkAnTp1CoGBgbCxsUFhYSFOnz5dZduHDTepGjFiBG7evIl58+YhJycHgYGBSExMhJ+fH1C58OGDawKprjWUmpqKjRs3ws/PD1euXAEqF1aUy+UYNmyY2utmz56NOXPm6FwbERGp41lgVJvoFIA6dOiA3NxcNGzYEB06dIBEIoEgCBrtJBIJKioq9CogKioKUVFRWp/bsGGDxjZtx1WlDEJERGRYnANEtYlOASgjIwMNGjQQ7xMRkfVRDTUMQPS40ykAKYekHrxPRETWQ7UHiJOg6XGn8yRoVRcvXsTBgweRl5enccG7999/31C1ERGRBXlYDxAnQdPjRO8AtGbNGkyaNAkeHh5o1KiR2tlgEomEAYiIqJZiDxDVJnoHoP/+97+YP38+pk2bZpyKiIjIIukzB4hngZGl0/taYLdu3cKLL75onGqIiMhicRI01SZ6B6AXX3wRSUlJxqmGiIgs1t27d8X7derU0XheJpPBzs4OYACix4DeQ2DNmzfHe++9h6NHj6Jt27biN7vSlClTDFkfERFZiJKSEqAy6Nja2kIuL9do4+zsjFu3bjEAkcXTOwCtXr0azs7OOHToEA4dOqT2nEQiYQAiIqqllAHIycmpyjbKAMQ5QGTp9A5AXAiRiMg6KQOQtuEvJWU4UrYlslR6zwEiIiLrpJwDVF0AUj7HAESWTu8eoPHjx1f7/Lp16x6lHiIislD69ACVl5dDLpdDJpOZrD4ifegdgG7duqX2uKysDGfOnMHt27fRs2dPQ9ZGREQWQhlo8JA5QKrhqKSkhAGILJbeAWj79u0a2xQKBaKiotC0aVND1UVERBbk3r174n1deoBQOWRWt25do9dGVBMGmQNkY2ODmJgYfPLJJ4bYHRERWZiHrQGk7TnOAyJLZrBJ0JcuXUJ5ueaaEERE9PhTDTP69AARWSq9h8BiY2PVHguCgJycHPz4448YO3asIWsjIiILoRqA9JkDRPQgebkCX6dcQWZBCfzc62B0SBPIbE1/UrreASgtLU3tsY2NDRo0aICPP/74oWeIERHR44k9QGQI8YnnsOZwBhTC/7bNTzyP10L9ERfR2qS16B2ADhw4YJxKiIjIYnEOED2q+MRz+PwXzcWUFQLE7aYMQVwIkYiIHoo9QPQo5OUKrDlc/ZUk1hzOgLxcYbKaGICIiOihOAeIHsXXKVfUhr20UQj/tjMVBiAiInooXXuAGIBIm8wC3b4XdG1nCAxARET0ULrOAeIQGGnj517190xN2hkCAxARET0Ue4DoUYwOaQIbSfVtbCT/tjMVgwWgEydO4JdffjHU7oiIyILoOgeIPUCkjczWBq+F+lfb5rVQf5OuB6T3afBVGT16NC5evIiKigpD7ZKIiCwEe4DoUSlPcX9wHSAbCR6PdYCq8vPPP6OsrMxQuyMiIgvCOUBkCHERrTG2SxN0+fDfNQVjerfApGebPx4rQVfF29vbULsiIiILwx4gMhTVsPPyM75mCT+oaQCqqKjA9u3bcf78eUgkEgQEBGDw4MGwtTVYniIiIgvCOUBU2+idWM6cOYNBgwYhNzcXLVu2BABcvHgRDRo0wK5du9C2bVtj1ElERGbEHiCqbfTud5owYQLatGmDq1ev4uTJkzh58iSys7PRrl07vP7663oXsGLFCvj7+8PBwQFBQUE4fPhwlW1zcnIwatQotGzZEjY2NoiOjtbabtu2bWjdujXs7e3RunVrbN++Xe+6iIjof3SdA2RnZwepVKrxGiJLo3cA+uOPPxAfH4969eqJ2+rVq4f58+cjPT1dr31t2bIF0dHRmDlzJtLS0hAaGop+/fohKytLa/vS0lI0aNAAM2fORPv27bW2SUlJwYgRIzB69Gj88ccfGD16NIYPH47ff/9dz3dKRERKuvYASSQScRiMPUBkyfQOQC1btsT169c1tufl5aF58+Z67WvJkiWIjIzEhAkT0KpVKyQkJMDHxwcrV67U2r5JkyZYunQpxowZAzc3N61tEhIS0KdPH8TFxSEgIABxcXHo1asXEhIS9KqNiIj+Rxlm7O3txR6eqigDEnuAyJLpFICKiorE24IFCzBlyhRs3boVV69exdWrV7F161ZER0dj4cKFOh9YLpcjNTUV4eHhatvDw8Nx5MgR/d9JpZSUFI199u3bt9p9lpaWqr3HoqKiGh+fiKg2Ugag6np/lNgDRI8DnSZB161bFxLJ/9awFgQBw4cPF7cJwr8rGg0YMEDnhRDz8/NRUVEBT09Pte2enp7Izc3V5z2oyc3N1Xuf8fHxmDt3bo2PSURU2yl7c3QJQOwBoseBTgHowIEDRitANVihMkw9uM3Y+4yLi0NsbKz4uKioCD4+Po9UAxFRbVKTHqD79+9DoVDAxoaXnSTLo1MACgsLAwCUl5dj/vz5GD9+/CMHBA8PD0ilUo2emby8PI0eHH00atRI733a29vD3t6+xsckIqrtlAGoujWAlFRD0r1793R6DZGp6RXLbW1tsXjxYoNc70smkyEoKAjJyclq25OTk9GlS5ca7zckJERjn0lJSY+0TyIia1ZeXg65XA7o2QMEDoORBdN7IcRevXrh4MGDGDdu3CMfPDY2FqNHj0ZwcDBCQkKwevVqZGVlYeLEiUDl0NS1a9fw1Vdfia9RnmpfXFyMGzduID09HTKZDK1b/3sRtalTp6J79+5YuHAhBg0ahJ07d2Lfvn349ddfH7leIiJrdO/ePfG+PnOAwInQZMH0DkD9+vVDXFwczpw5g6CgII2uzYEDB+q8rxEjRuDmzZuYN28ecnJyEBgYiMTERPj5+QGVCx8+uCZQx44dxfupqanYuHEj/Pz8cOXKFQBAly5dsHnzZsyaNQvvvfcemjVrhi1btqBz5876vlUiItJjEURtbdgDRJZK7wA0adIkoHINnwdJJBK9h8eioqIQFRWl9bkNGzZobFOecVadYcOGYdiwYXrVQURE2ul6HTBtbdgDRJZK7wCkUCiMUwkREVkkXVeB1taGPUBkqXhuIhERVUvfAMQeIHoc6N0DhMpEf+jQIWRlZYlnBihNmTLFULUREZEF4Bwgqo30DkBpaWmIiIhASUkJ7t69C3d3d+Tn56NOnTpo2LAhAxARUS3DHiCqjfQeAouJicGAAQNQUFAAR0dHHD16FJmZmQgKCsLixYuNUyUREZmNvpOg2QNEjwO9A1B6ejrefvttSKVSSKVSlJaWwsfHB4sWLcKMGTOMUyUREZkNe4CoNtI7ANnZ2YnX1fL09BTX6XFzc9NYs4eIiB5/nANEtZHec4A6duyIEydO4Mknn0SPHj3w/vvvIz8/H19//TXatm1rnCqJiMhsHuU0ePYAkaXSuwdowYIF8PLyAgB88MEHqF+/PiZNmoS8vDysXr3aGDUSEZEZPcpCiOwBIkuldw9QcHCweL9BgwZITEw0dE1ERGRBuBAi1UZcCJGIiKql7xwg1R4g1QupElkSnQLQc889hyNHjjy03Z07d7Bw4UIsX77cELUREZEF4Bwgqo10GgJ78cUXMXz4cLi4uGDgwIEIDg6Gt7c3HBwccOvWLZw7dw6//vorEhMT8fzzz+Ojjz4yfuVERGQSj7IOEAMQWSqdAlBkZCRGjx6NrVu3YsuWLVizZg1u374NVF4BvnXr1ujbty9SU1PRsmVLY9dMREQmpG8PkKOjo3ifc4DIUuk8CVomk2HUqFEYNWoUAKCwsBD37t1D/fr1YWdnZ8waiYjIjPSdAySVSuHg4ID79++zB4gsVo0uhorKhQ/d3NwMWw0REVkcfXuAlO0YgMiS8SwwIiKqljLE2NvbQyqV6vQaZVBiACJLxQBERETVUoYYXXt/VNtyDhBZKgYgIiKqljLE1CQAsQeILBUDEBERVasmPUDK0+XLyspQVlZmtNqIaqrGk6Dlcjny8vKgUCjUtvv6+hqiLiIishDKAKTLGkBKqmHp3r17PFuYLI7eAeivv/7C+PHjNVaGFgQBEokEFRUVhqyPiIjMqLy8HHK5HKjhEBgqA5Srq6tR6iOqKb0D0Lhx42Bra4vdu3fDy8sLEonEOJUREZHZ1eQU+AfbciI0WSK9A1B6ejpSU1MREBBgnIqIiMhiGCIAcSI0WSK9J0G3bt0a+fn5xqmGiIgsir7XAdPWlgGILJHeAWjhwoV49913cfDgQdy8eRNFRUVqNyIiqj3YA0S1ld5DYL179wYA9OrVS207J0ETEdU++l4HTFtbBiCyRHoHoAMHDhinEiIisjicBE21ld4BKCwszDiVEBGRxeEcIKqtarQQ4u3bt7F27VqcP38eEokErVu3xvjx43l1eCKiWoZzgKi20nsS9IkTJ9CsWTN88sknKCgoQH5+PpYsWYJmzZrh5MmTxqmSiIjMgnOAqLbSOwDFxMRg4MCBuHLlCr7//nts374dGRkZeP755xEdHa13AStWrIC/vz8cHBwQFBSEw4cPV9v+0KFDCAoKgoODA5o2bYpVq1ZptElISEDLli3h6OgIHx8fxMTE4P79+3rXRkRk7TgHiGqrGvUATZs2Dba2/xs9s7W1xbvvvosTJ07ota8tW7YgOjoaM2fORFpaGkJDQ9GvXz9kZWVpbZ+RkYGIiAiEhoYiLS0NM2bMwJQpU7Bt2zaxzTfffIPp06dj9uzZOH/+PNauXYstW7YgLi5O37dKRGT1ajoHiD1AZOn0DkCurq5aA0p2djZcXFz02teSJUsQGRmJCRMmoFWrVkhISICPjw9Wrlyptf2qVavg6+uLhIQEtGrVChMmTMD48eOxePFisU1KSgq6du2KUaNGoUmTJggPD8fIkSP1DmdERFTzHiBOgiZLp3cAGjFiBCIjI7FlyxZkZ2fj6tWr2Lx5MyZMmICRI0fqvB+5XI7U1FSEh4erbQ8PD9e40KpSSkqKRvu+ffvixIkTKCsrAwB069YNqampOHbsGADg8uXLSExMRP/+/auspbS0lAs6EhFpwTlAVFvpfRbY4sWLIZFIMGbMGJSXlwMA7OzsMGnSJHz44Yc67yc/Px8VFRXw9PRU2+7p6Ync3Fytr8nNzdXavry8HPn5+fDy8sJLL72EGzduoFu3bhAEAeXl5Zg0aRKmT59eZS3x8fGYO3euzrUTEVkLngVGtZXePUAymQxLly7FrVu3kJ6ejrS0NBQUFOCTTz6Bvb293gU8eDV55YrS+rRX3X7w4EHMnz8fK1aswMmTJ/H9999j9+7d+OCDD6rcZ1xcHAoLC8Vbdna23u+DiKg2MsQcIE6CJktUo3WAUPnN3bZt2xof2MPDA1KpVKO3Jy8vT6OXR6lRo0Za29va2qJ+/foAgPfeew+jR4/GhAkTAABt27bF3bt38frrr2PmzJmwsdHMfPb29jUKb0REtR17gKi20ikADRkyBBs2bICrqyuGDBlSbdvvv/9epwPLZDIEBQUhOTkZL7zwgrg9OTkZgwYN0vqakJAQ/PDDD2rbkpKSEBwcDDs7O6DyB+3BkCOVSiEIgthbREREuuEcIKqtdApAbm5u4hCTq6trtUNU+oiNjcXo0aMRHByMkJAQrF69GllZWZg4cSJQOTR17do1fPXVVwCAiRMnYtmyZYiNjcVrr72GlJQUrF27Fps2bRL3OWDAACxZsgQdO3ZE586d8ffff+O9997DwIEDIZVKDVI3EZG1qGkPkFQqhb29PUpLSxmAyCLpFIDWr18v3t+wYYPBDj5ixAjcvHkT8+bNQ05ODgIDA5GYmAg/Pz8AQE5Ojtop9/7+/khMTERMTAyWL18Ob29vfPrppxg6dKjYZtasWZBIJJg1axauXbuGBg0aYMCAAZg/f77B6iYishY1DUDK9gxAZKn0ngPUs2dPfP/996hbt67a9qKiIgwePBj79+/Xa39RUVGIiorS+py2sBUWFlbtJTdsbW0xe/ZszJ49W686iIhIkzK82Nvb692LXqdOHdy6dYuToMki6X0W2MGDByGXyzW2379//6GXsSAioseLMrzo2/sDlbPG2ANElkjnHqBTp06J98+dO6d2NlZFRQX27t2Lxo0bG75CIiIyG2V4qUkAUr6GAYgskc4BqEOHDpBIJJBIJOjZs6fG846Ojvjss88MXR8REZmRMrzoswaQkjIAyeVylJeXq11DksjcdP5uzMjIgCAIaNq0KY4dO4YGDRqIz8lkMjRs2JBnWRER1TKG6AFS7sfV1dWgtRE9Cp0DkPLMLIVCYcx6iIjIQpSXl4tzPhmAqLapUX/khQsX8Nlnn+H8+fOQSCQICAjAm2++iYCAAMNXSEREZvEop8CDV4QnC6f3WWBbt25FYGAgUlNT0b59e7Rr1w4nT55E27Zt8d133xmnSiIiMrmaXgdMiatBkyXTuwfo3XffRVxcHObNm6e2ffbs2Zg2bRpefPFFQ9ZHRERmohpaHB0d9X49AxBZMr17gHJzczFmzBiN7a+88orGhUqJiOjxpbqA4aP2AHExRLI0egegZ599VuuCh7/++itCQ0MNVRcREZmZIQMQe4DI0ug9BDZw4EBMmzYNqampeOaZZwAAR48exXfffYe5c+di165dam2JiOjx9KhzgDgJmiyZ3gFIed2uFStWYMWKFVqfAwCJRIKKigpD1EhERGag2gNkiNPgiSyJ3gGI6wAREVkHngVGtZlec4DKysrQo0cPXLx40XgVERGRRTBkDxAnQZOl0SsA2dnZ4cyZM5BIJMariIiILMKjToLmHCCyZHqfBTZmzBisXbvWONUQEZHF4BAY1WZ6zwGSy+X44osvkJycjODgYI0fiiVLlhiyPiIiMhNOgqbaTO8AdObMGXTq1AkANOYCcWiMiKj2MGQPEOcAkaXROwAdOHDAOJUQEZFFYQ8Q1WZ6zwFSdfXqVVy7ds1w1RARkcXgJGiqzfQOQAqFAvPmzYObmxv8/Pzg6+uLunXr4oMPPuAaQUREtQgnQVNtpvcQ2MyZM7F27Vp8+OGH6Nq1KwRBwG+//YY5c+bg/v37mD9/vnEqJSIik3rUITDVK8gzAJGl0TsAffnll/jiiy/UrvPVvn17NG7cGFFRUQxARES1xKP2ANna2kImk0Eul3MSNFkcvYfACgoKEBAQoLE9ICAABQUFhqqLiIjMTBlabGxsIJPJarQPZc8Re4DI0ugdgNq3b49ly5ZpbF+2bBnat29vqLqIiMjMlKHFycmpxsucKHuOGIDI0ug9BLZo0SL0798f+/btQ0hICCQSCY4cOYLs7GwkJiYap0oiIjI5ZQ9QTYa/lNgDRJZK7x6gsLAwXLx4ES+88AJu376NgoICDBkyBBcuXEBoaKhxqiQiIpNTBqCaTIBWUr6Wc4DI0ujdAwQA3t7enOxMRFTLqQ6B1ZQyAMnlcpSXl8PWtkZ/dogMTu8eoL179+LXX38VHy9fvhwdOnTAqFGjcOvWLUPXR0REZqBQKHDv3j3gEXuAVMOTcn9ElkDvAPSf//wHRUVFAIDTp08jNjYWERERuHz5MmJjY41RIxERmZhqWDFEDxA4D4gsjN4BKCMjA61btwYAbNu2DQMGDMCCBQuwYsUK7NmzR+8CVqxYAX9/fzg4OCAoKAiHDx+utv2hQ4cQFBQEBwcHNG3aFKtWrdJoc/v2bUyePBleXl5wcHBAq1atOEGbiEgPj3oZDCUGILJUegcgmUwmfhPv27cP4eHhAAB3d3exZ0hXW7ZsQXR0NGbOnIm0tDSEhoaiX79+yMrK0to+IyMDERERCA0NRVpaGmbMmIEpU6Zg27ZtYhu5XI4+ffrgypUr2Lp1Ky5cuIA1a9agcePG+r5VIiKr9airQGt7LSdCkyXRezZat27dEBsbi65du+LYsWPYsmULAODixYt44okn9NrXkiVLEBkZiQkTJgAAEhIS8NNPP2HlypWIj4/XaL9q1Sr4+voiISEBANCqVSucOHECixcvxtChQwEA69atQ0FBAY4cOQI7OzsAgJ+fn75vk4jIqj3qKtBK7AEiS6V3D9CyZctga2uLrVu3YuXKlWLPyp49e/Dcc8/pvB+5XI7U1FSxB0kpPDwcR44c0fqalJQUjfZ9+/bFiRMnUFZWBgDYtWsXQkJCMHnyZHh6eiIwMBALFixARUVFlbWUlpaiqKhI7UZEZM0MNQTGK8KTpdK7B8jX1xe7d+/W2P7JJ5/otZ/8/HxUVFTA09NTbbunpydyc3O1viY3N1dr+/LycuTn58PLywuXL1/G/v378fLLLyMxMRF//fUXJk+ejPLycrz//vta9xsfH4+5c+fqVT8RUW2mGlYMNQTGAESWpEYLMlRUVGD79u04f/48JBIJAgICMHjw4Bqt7/Dg8uqCIFS75Lq29qrbFQoFGjZsiNWrV0MqlSIoKAj//PMPPvrooyoDUFxcnNoZbEVFRfDx8dH7vRAR1RacBE21nd6J5cyZMxg4cCCuX7+Oli1bApXzfxo0aIBdu3ahbdu2Ou3Hw8MDUqlUo7cnLy9Po5dHqVGjRlrb29raon79+gAALy8v2NnZQSqVim1atWqF3NxcyOVyrRf0s7e3h729vU51ExFZA06CptpO7zlAEyZMQGBgIK5evYqTJ0/i5MmTyM7ORrt27fD666/rvB+ZTIagoCAkJyerbU9OTkaXLl20viYkJESjfVJSEoKDg8UJz127dsXff/8NhUIhtrl48SK8vLxqfDVjIiJrw0nQVNvpHYD++OMPxMfHo169euK2evXqYf78+UhPT9drX7Gxsfjiiy+wbt06nD9/HjExMcjKysLEiROByqGpMWPGiO0nTpyIzMxMxMbG4vz581i3bh3Wrl2Ld955R2wzadIk3Lx5E1OnTsXFixfx448/YsGCBZg8ebK+b5WIyGpxEjTVdnoPgbVs2RLXr19HmzZt1Lbn5eWhefPmeu1rxIgRuHnzJubNm4ecnBwEBgYiMTFRPG09JydHbU0gf39/JCYmIiYmBsuXL4e3tzc+/fRT8RR4APDx8UFSUhJiYmLQrl07NG7cGFOnTsW0adP0fatERFaLk6CpttMpAKmeFr5gwQJMmTIFc+bMwTPPPAMAOHr0KObNm4eFCxfqXUBUVBSioqK0PrdhwwaNbWFhYTh58mS1+wwJCcHRo0f1roWIiP5ljEnQnANElkSnAFS3bl21s68EQcDw4cPFbcozsQYMGFDtejtERPR4YA8Q1XY6BaADBw4YvxIiIrIYnANEtZ1OASgsLEynnek7CZqIiCwTh8CottP7LLAHFRYWYsWKFejUqROCgoIMUxUREZmVoYbA2ANElqrGAWj//v145ZVX4OXlhc8++wwRERE4ceKEYasjIiKzMFQPkLOzs3i/uLj4kesiMhS9ToO/evUqNmzYgHXr1uHu3bsYPnw4ysrKsG3bNrRu3dp4VRIRkUkZqgfI0dEREokEgiAwAJFF0bkHKCIiAq1bt8a5c+fw2Wef4Z9//sFnn31m3OqIiMgslD1AEokEDg4ONd6PjY2N2IPEAESWROceoKSkJEyZMgWTJk1CixYtjFsVERGZlTIA1alTp9oLVOvC2dkZxcXFDEBkUXTuATp8+DDu3LmD4OBgdO7cGcuWLcONGzeMWx0REZmFMqy4uLg88r6U84AYgMiS6ByAQkJCsGbNGuTk5OCNN97A5s2b0bhxYygUCiQnJ+POnTvGrZSIiExGGVZUJzHXFAMQWSK9zwKrU6cOxo8fj19//RWnT5/G22+/jQ8//BANGzbEwIEDjVMlERGZlDECkFwuh1wuf+T9ERnCI60D1LJlSyxatAhXr17Fpk2bDFcVERGZjWpQMeQQGLgYIlmQR14IEQCkUikGDx6MXbt2GWJ3RERkRqpDVYbsAXpw30TmZJAAREREtQcDEFkDBiAiIlLDAETWgAGIiIjUqIYUQ88BYgAiS8EAREREalSXNWEPENVWDEBERKSGQ2BkDRiAiIhIDQMQWQMGICIiUsMARNaAAYiIiNSozgHiJGiqrRiAiIhIDXuAyBowABERkRoGILIGDEBERKTGmAGI1wIjS8EAREREajgHiKwBAxAREakxdA+Qk5OT1n0TmRMDEBERqWEAImvAAERERGqUIUUikaBOnTqPvD87OzvY29ur7ZvI3BiAiIhIjTKkODs7QyKRGGSfyp4kBiCyFAxARESkRjkJ2hDDX0oMQGRpGICIiEiNag+QoTAAkaUxewBasWIF/P394eDggKCgIBw+fLja9ocOHUJQUBAcHBzQtGlTrFq1qsq2mzdvhkQiweDBg41QORFR7WTMAHT37l0oFAqD7ZeopswagLZs2YLo6GjMnDkTaWlpCA0NRb9+/ZCVlaW1fUZGBiIiIhAaGoq0tDTMmDEDU6ZMwbZt2zTaZmZm4p133kFoaKgJ3gkRUe0gl8tRVlYGGDgAqa4nxF4gsgRmDUBLlixBZGQkJkyYgFatWiEhIQE+Pj5YuXKl1varVq2Cr68vEhIS0KpVK0yYMAHjx4/H4sWL1dpVVFTg5Zdfxty5c9G0aVMTvRsiosefoRdBVHJ1dRXvFxUVGWy/RDVltgAkl8uRmpqK8PBwte3h4eE4cuSI1tekpKRotO/bty9OnDgh/o8FAObNm4cGDRogMjJSp1pKS0tRVFSkdiMiskaGXgNIyc3NTbzP37FkCcwWgPLz81FRUQFPT0+17Z6ensjNzdX6mtzcXK3ty8vLkZ+fDwD47bffsHbtWqxZs0bnWuLj4+Hm5ibefHx8avSeiIged8YKQKo9QIWFhQbbL1FNmX0S9INrTAiCUO26E9raK7ffuXMHr7zyCtasWQMPDw+da4iLi0NhYaF4y87O1vt9EBHVBqq9MxwCo9rM1lwH9vDwgFQq1ejtycvL0+jlUWrUqJHW9ra2tqhfvz7Onj2LK1euYMCAAeLzyrMNbG1tceHCBTRr1kxjv/b29uIqpURE1kw1nKgOWz0qDoGRpTFbD5BMJkNQUBCSk5PVticnJ6NLly5aXxMSEqLRPikpCcHBwbCzs0NAQABOnz6N9PR08TZw4ED06NED6enpHNoiInoI1eEp1V6bR8UhMLI0ZusBAoDY2FiMHj0awcHBCAkJwerVq5GVlYWJEycClUNT165dw1dffQUAmDhxIpYtW4bY2Fi89tprSElJwdq1a7Fp0yYAgIODAwIDA9WOUbduXQDQ2E5ERJqM1QPEITCyNGYNQCNGjMDNmzcxb9485OTkIDAwEImJifDz8wMA5OTkqK0J5O/vj8TERMTExGD58uXw9vbGp59+iqFDh5rxXRAR1R7G6gHiEBhZGrMGIACIiopCVFSU1uc2bNigsS0sLAwnT57Uef/a9kFERNqZogeIQ2BkCcx+FhgREVkOU8wBYg8QWQIGICIiEvEsMLIWDEBERCTiWWBkLRiAiIhIpNo7Y8gApLqoInuAyBIwABERkUjZOyORSAx6KQwbGxsxBLEHiCwBAxAREYmUvTMuLi6wsTHsnwhljxJ7gMgSMAAREZFI2TtjyAnQSsp9MgCRJWAAIiIikTKcGHL+j5Jyn8XFxaioqDD4/on0wQBEREQAgLKyMpSUlABG6gFSDVV37twx+P6J9MEAREREwAOhxBg9QFwLiCwJAxAREQEPnJ1l7B4gnglG5sYAREREgBHXANK2T/YAkbkxABEREQDg9u3b4n1jngUGBiCyAAxAREQEALh165Z4393d3eD75xAYWRIGICIyqx07diAqKgrr16+HQqEwdzlWraCgQLxfr149g+9ftQdItbeJyBxszV0AEVmvpUuXIjo6GgCwcuVKnDp1Cp988om5y7Jaqj1AxghAqvtUPRaRObAHiIjM4tKlS/jPf/6jti0hIQGHDx82W03WztgBSHVYjQGIzI0BiIjMYsmSJSgrKwMeGBr573//a8aqrJspA5DqcBuROTAAEZHJ3b9/H1999RUAwMnJCX/99Rf8/f0BAElJScjOzjZzhdbJlENgDEBkbgxARGRy+/btQ3FxMQBg2LBhaNCgAV599VXx+c2bN5uxOuvFITCyJgxARGRy27dvF+8PGTIEADBy5Ehx248//miWuqydaq9M3bp1Db5/R0dH2NvbaxyLyBwYgIjIpARBwA8//ABUDn/16dMHANC8eXM0b94cAHDkyBFeLNMMlL0ybm5ukEqlBt+/RCIRe5YYgMjcGICIyKT+/PNP3LhxAwDQo0cPODo6is8pw1BZWRkOHTpkthqtlTIAGWP4S0k5DMYhMDI3BiAiMinV09xDQ0PVngsPDxfv79u3z6R1WTtBEEwagO7evYvS0lKjHYfoYRiAiMikqgtAzz77rHj/yJEjJq3L2hUXF6OiogIwcgDiYohkKRiAiMiklAHI0dERQUFBas/VrVsXrVq1AgCkpaXh3r17ZqnRGhn7MhhKPBOMLAUDEBGZTHZ2NjIzMwEAnTt3hkwm02jzzDPPAADKy8uRlpZm8hqtlbFPgVfiYohkKRiAiMhkUlJSxPvdunXT2kYZgADg999/N0ldpB5GjHEleCUOgZGlYAAiIpM5efKkeL9z585a26gGoKNHj5qkLoJ4Zh4ANGjQwGjHUQ1XN2/eNNpxiB6GAYiITEY1AHXs2FFrmzZt2sDJyQl4oMeIjMtUAah+/frifQYgMiezB6AVK1bA398fDg4OCAoKeuiVoA8dOoSgoCA4ODigadOmWLVqldrza9asQWhoKOrVq4d69eqhd+/eOHbsmJHfBRE9jCAIYgBq2LAhvL29tbaTSqUIDg4GKucMqf5hJuPJy8sT7xszADVs2FDrMYlMzawBaMuWLYiOjsbMmTORlpaG0NBQ9OvXD1lZWVrbZ2RkICIiAqGhoUhLS8OMGTMwZcoUbNu2TWxz8OBBjBw5EgcOHEBKSgp8fX0RHh6Oa9eumfCdEdGDrl69Kv6Pv1OnTpBIJFW2Ve0d4kRo01ANmqohxdBUwxXDLZmTWQPQkiVLEBkZiQkTJqBVq1ZISEiAj48PVq5cqbX9qlWr4Ovri4SEBLRq1QoTJkzA+PHjsXjxYrHNN998g6ioKHTo0AEBAQFYs2YNFAoFfv75ZxO+MyJ6kOrwV6dOnaptqxqA0tPTjVoX/ctUQ2DsASJLYbYAJJfLkZqaqrbyKypXgq1qAbSUlBSN9n379sWJEydQVlam9TUlJSUoKyur9qyG0tJSFBUVqd2IyLBqGoDYA2QappwDpOz9YwAiczJbAMrPz0dFRQU8PT3Vtnt6eiI3N1fra3Jzc7W2Ly8vR35+vtbXTJ8+HY0bN0bv3r2rrCU+Ph5ubm7izcfHp0bviYiqpssEaKWAgADxquEMQKahDEB16tRBnTp1jHYcW1tbcSI0AxCZk9knQT84D0AQhGrnBmhrr207ACxatAibNm3C999/DwcHhyr3GRcXh8LCQvGWnZ1dg3dCRNVRBiA3Nzf4+/tX29bOzg6BgYEAgIsXL6K4uNgkNVozZQAyZu+PkvIYnANE5mS2AOTh4QGpVKrR25OXl6fRy6PUqFEjre1V/0ehtHjxYixYsABJSUlo165dtbXY29vD1dVV7UZEhnP9+nX8888/gA4ToJWUvUSCIOD06dNGr9GaVVRUiBPUTRGAlPOA7t69i7t37xr9eETamC0AyWQyBAUFITk5WW17cnIyunTpovU1ISEhGu2TkpIQHBwMOzs7cdtHH32EDz74AHv37hVPpyUi81EdxnrY/B8lzgMynYKCArE33ZQBCOwFIjMy6xBYbGwsvvjiC6xbtw7nz59HTEwMsrKyMHHiRKByaGrMmDFi+4kTJyIzMxOxsbE4f/481q1bh7Vr1+Kdd94R2yxatAizZs3CunXr0KRJE+Tm5iI3N5dd6ERmpM8EaCUGINMx1QRoJZ4JRpbA1pwHHzFiBG7evIl58+YhJycHgYGBSExMhJ+fHwAgJydHbU0gf39/JCYmIiYmBsuXL4e3tzc+/fRTDB06VGyzYsUKyOVyDBs2TO1Ys2fPxpw5c0z47ohISZ8J0Ept27aFRCKBIAgMQEZm6gDEtYDIEpg1AAFAVFQUoqKitD63YcMGjW1hYWFqv0wfdOXKFYPWR0SPTvkzW6dOHTz55JM6vcbZ2RlPPvkkLly4gNOnT6OsrExtqJsMRzk/C0CVK3QbkmoP0PXr141+PCJtzH4WGBHVbrdv30ZGRgYAoH379pBKpWrPy8sVWHv4Mt7feQZrD1+GvFwhPqfsLZLL5fjzzz9NXLn1UF0p3xQBSPVEl6qWPSEyNrP3ABFR7aa6kvOD83/iE89hzeEMKIT/bZufeB6vhfojLqI1OnbsiM2bNwOVvUht27Y1XeFWRLUHqHHjxkY/nuoxeJkiMhf2ABGRUVU1/yc+8Rw+/0U9/ACAQgA+/yUD8Ynn1NpXN/RNj8bUPUBPPPGEeP/q1atGPx6RNgxARGRU2k6Bl5crsOZwRrWvW3M4A4HtOoiPU1NTjVildTPHEJiNjY3GsYlMiQGIiIxKGYDs7OzQpk0bAMDXKVc0en4epBCAxIt30KRJE3E/FRUVxi/YCimHwOrVqwdHR0ejH8/W1hZeXl4Ae4DIjBiAiMhoSkpKcP78eQBAmzZtIJPJAACZBSU6vT6zoARBQUHivi5evGjEaq2TIAhiADLF/B8l5bHy8vIgl8tNdlwiJQYgIjKa06dPQ6H496wu1QnQfu66XWzTz72OGIDAYTCjuHnzJkpLSwETByDlPCBBEJCTk2Oy4xIpMQARkdFUNQF6dEgT2DzkcmA2kn/bqQYnBiDDM/UaQEo8E4zMjQGIiIymqmuAyWxt8Fpo9VeEfy3UHzJbG/YAGVl2drZ43xw9QOA8IDITBiAiMpoTJ04AACQSCdq1a6f2XFxEa7zR3V+jJ8hGArzR/d91gADAw8MDvr6+QGWgUg6pkWFcvnxZvO/vX30oNSTVAKQawohMhQGIiIyipKQEp06dAgAEBgbC2dlZo01cRGv8Oq2H+Dimdwv8+UE/MfwoKXuBiouL8ddffxm9dmuiGoCaNWtmsuOqhi3VGohMhQGIiIwiNTVVPG39mWeeqbKdzPZ/v4ZefsZX7bGS6jCYsleJDOPSpUvi/aZNm5rsuM2bNxfv//333yY7LpESAxARGcXRo0fF+507d36kfT311FPi/ZSUlEfaF6lT9r7Y29ubdA6Qh4cHXFxcAAYgMhMGICIyCtUAVF0PkC6eeeYZceXg33777ZFro38JgiAGIH9/f/EzNgWJRCL2AmVmZqKsrMxkxyYCAxARGYMgCGJPjaurK1q1avVI+3N1dRUvhHrq1CkUFRUZpE5rl5ubi3v37gEmHv5SUgagiooKZGZmmvz4ZN0YgIjI4DIzM8XF7Z566imD9Cx07doVAKBQKNR6l6jmVOf/mHICtBLnAZE5MQARkcEdOHBAvN+9e3eD7FMZgMBhMINRXqYEAFq0aGHy46uGLp7dR6bGAEREBrd//37xfs+ePQ2yT9UAdPjwYYPs09r98ccf4v0H12kyBdWh0TNnzpj8+GTdGICIyKAEQRADkJOTE55++mmD7NfX11e8Mvxvv/2G4uJig+zXminXaQIgzrEypbZt20Ii+XclzPT0dJMfn6wbAxARGdTFixfF60uFhoaKV4B/VBKJBM899xwAQC6X4+DBgwbZr7USBEEMQE888QTc3d1NXoOLi4s4DHbq1CmUl5ebvAayXgxARGRQ+/btE+8bavhLSRmAAGDv3r0G3be1yc7ORmFhIWCm4S+lDh06AADu37/PeUBkUgxARGRQO3fuFO/36dPHoPvu2bMnbG1tAQagR6Y65GQJAQgcBiMTYwAiIoO5ffu2eAZYkyZN0L59e4Pu38XFBd26dQMqT+FWPYuJ9HPkyBHxfnBwsNnq6Nixo3ifyxuQKTEAEZHB/Pjjj+I8jsGDB4sTXA1p4MCB4v0tW7YYfP/W4tdffxXvK0OlOXTp0kVcJ0p1+QQiY2MAIiKD+frrr8X7L7zwglGOMWLECDFYbdq0CYIgGOU4tdndu3dx/PhxoHItHk9PT7PVUrduXfFit6dPn0ZeXp7ZaiHrwgBERAaRnZ2NpKQkoPK6UsbqVfD29kZYWBhQecYZL46qv/3790MulwMAevXqZe5y1CbL8+w+MhUGICIyiNWrV4u9MePGjTPqhTVfffVV8f5nn31mtOPUVrt37xbv9+/f36y14IEAtGPHDrPWQtaDAYiIHllRURGWLVsGALC1tVULKMYwYsQINGjQAACwdetWZGRkGPV4tUlpaSm+++47AECdOnUsogfo2WefRf369YHKAHTnzh1zl0RWgAGIiB7Zxx9/jNu3bwMARo8eDR8fH6Mez97eHpMmTQIAlJeXY9asWUY9Xm2yY8cO3Lp1C6icp+Xk5GTukiCTyfDSSy8BAO7du4dvv/3W3CWRFWAAIqJHcuHCBXz44YdAZe/P9OnTTXLc2NhYsddg48aNagswknYKhUL8WgHA+PHjzVqPqtGjR4v34+PjUVZWZtZ6qPYzewBasWIF/P394eDggKCgoIde5PDQoUMICgqCg4MDmjZtilWrVmm02bZtG1q3bg17e3u0bt0a27dvN+I7IKq9KhQCUi7dxM70a0i5dBMVCvUzroqKijBkyBBxQm1sbCyefPLJh+5XXq7A2sOX8f7OM/jmaFaNanNzc8PcuXPFx2PGjEFmZmaN9mUt1qxZIy42GBQUhB49epi7JFHnzp3F4bhLly5h6dKl5i6JajmzBqAtW7YgOjoaM2fORFpaGkJDQ9GvXz9kZWn/hZiRkYGIiAiEhoYiLS0NM2bMwJQpU7Bt2zaxTUpKCkaMGIHRo0fjjz/+wOjRozF8+HD8/vvvJnxnRI+/vWdy0G3hfoxccxRTN6dj5Jqj6LZwP/aeyQEAZGVloUePHjh37hxQeWXv999//6H7jU88h4D39uCDH8/jq5RMfLKv5pc/mDRpkrjadE5ODnr27Kl2gU/6n/379yM6Olp8vGjRIqOs0/Qo5s+fL96Pi4vDnj17zFoP1W5mDUBLlixBZGQkJkyYgFatWiEhIQE+Pj5YuXKl1varVq2Cr68vEhIS0KpVK0yYMAHjx4/H4sWLxTYJCQno06cP4uLiEBAQgLi4OPTq1QsJCQkmfGdEj7e9Z3Iw6f9OIqfwvtr2nJt38OqH/4fBo19D69atcfLkSQCAu7s7du7c+dD5JPGJ5/D5LxlQVLF0z9Kf9QtDNjY2+L//+z+x1+ny5cvo1KkTXn31Vfz8889Wf8V4hUKBs2fPIjY2Fs899xzu3//36/nGG28Y/DpthtC5c2e8++67QOXcrgEDBuCtt95CWloaFAqFucujWsbWXAeWy+VITU3VmC8QHh6utkS7qpSUFISHh6tt69u3L9auXYuysjLY2dkhJSUFMTExGm0sIQCtX78eiYmJGturW8itquf4GvO/xtzHN9ZrBACnrxairOJ/f3CEijJUFBeg4u5tQFBgp8rrfH19kZiYiBYtWlR5TFQOe605XP3ZWt8czcJ7/dtAZqv7/80aNmyIn3/+GQMHDkRaWhoqKiqwYcMGbNiwAahcN6h+/fqoW7cu6tSpA6lUChsbG/EmlUq1fg7aHlf3nCFf+6jHuXPnDvLz85Gbm6sRAgcMGGDRw0vz58/H5cuXsXXrVlRUVGDZsmVYtmwZHBwc4O/vDzc3Nzg7O8PR0RFSqRRSqRSff/65OB+MSFdmC0D5+fmoqKjQWIHU09MTubm5Wl+Tm5urtX15eTny8/Ph5eVVZZuq9onK00JLS0vFx8orJBcVFdXovVXl999/x9atWw26TyJzsZPZ49VxYzFr1iy4ubk99OflqyMZKL9fUm0bBYDV+05jTBd/vWpxdXXF3r17kZCQgOXLl6vV8s8//+Cff/7Ra3+1kUwmQ0xMDN59912N33k1VSIvh6L0369pUVERymWG+ZOyZs0aBAQE4OOPP8a9e/eAyqvFV3Xtt/nz58POzs4gx65t7hTfF79Gd4qKIFPIzV2SUWtS/uzrskK82QKQ0oNj0IIgVDsura39g9v13Wd8fLzaZEolY5/KS/Q4K5OXYvXq1Vi9erVB9/tWAvCWQfdIqOx1X7hwIRYuXGiU/XuZsZM9ICDAfAd/jDQ1/0CIBmPVdOfOHbi5uVXbxmwByMPDA1KpVKNnJi8vr8rr0jRq1Ehre1tbW7H7s6o21V3rJi4uDrGxseJjhUKBgoIC1K9f3+CTBIuKiuDj44Ps7Gy4uroadN+PI34e6vh5qOPnoY6fhzp+Hur4efxvCNjb2/uhbc0WgGQyGYKCgpCcnKx20cTk5GQMGjRI62tCQkLwww8/qG1LSkpCcHCw2P0ZEhKC5ORktXlASUlJ6NKlS5W12Nvbw97eXm1b3bp1a/zedOHq6mq136Da8PNQx89DHT8Pdfw81PHzUGftn8fDen6UzDoEFhsbi9GjRyM4OBghISFYvXo1srKyMHHiRKCyZ+batWv46quvAAATJ07EsmXLEBsbi9deew0pKSlYu3YtNm3aJO5z6tSp6N69OxYuXIhBgwZh586d2LdvH3799VezvU8iIiKyLGYNQCNGjMDNmzcxb9485OTkIDAwEImJifDz8wMq1/VQXRPI398fiYmJiImJwfLly+Ht7Y1PP/0UQ4cOFdt06dIFmzdvxqxZs/Dee++hWbNm2LJlCzp37myW90hERESWx+yToKOiohAVFaX1OeVprKrCwsLEtUeqMmzYMAwbNsxgNRqSvb09Zs+erTHkZq34eajj56GOn4c6fh7q+Hmo4+ehH4mgy7liRERERLWI2a8FRkRERGRqDEBERERkdRiAiIiIyOowABEREZHVYQAyoRUrVsDf3x8ODg4ICgrC4cOHzV2SWcTHx+Opp56Ci4sLGjZsiMGDB+PChQvmLstixMfHQyKRIDo62tylmM21a9fwyiuvoH79+qhTpw46dOiA1NRUc5dlFuXl5Zg1axb8/f3h6OiIpk2bYt68eVZzdfRffvkFAwYMgLe3NyQSCXbs2KH2vCAImDNnDry9veHo6Ihnn30WZ8+eNVu9xlbd51FWVoZp06ahbdu2cHJygre3N8aMGcNr4VWBAchEtmzZgujoaMycORNpaWkIDQ1Fv3791NY5shaHDh3C5MmTcfToUSQnJ6O8vBzh4eG4e/euuUszu+PHj2P16tVo166duUsxm1u3bqFr166ws7PDnj17cO7cOXz88cdGX53dUi1cuBCrVq3CsmXLcP78eSxatAgfffQRPvvsM3OXZhJ3795F+/btsWzZMq3PL1q0CEuWLMGyZctw/PhxNGrUCH369MGdO3dMXqspVPd5lJSU4OTJk3jvvfdw8uRJfP/997h48SIGDhxollotnkAm8fTTTwsTJ05U2xYQECBMnz7dbDVZiry8PAGAcOjQIXOXYlZ37twRWrRoISQnJwthYWHC1KlTzV2SWUybNk3o1q2bucuwGP379xfGjx+vtm3IkCHCK6+8YraazAWAsH37dvGxQqEQGjVqJHz44Yfitvv37wtubm7CqlWrzFSl6Tz4eWhz7NgxAYCQmZlpsroeF+wBMgG5XI7U1FSEh4erbQ8PD8eRI0fMVpelKCwsBAC4u7ubuxSzmjx5Mvr374/evXubuxSz2rVrF4KDg/Hiiy+iYcOG6NixI9asWWPussymW7du+Pnnn3Hx4kUAwB9//IFff/0VERER5i7N7DIyMpCbm6v2u9Xe3h5hYWH83VqpsLAQEonEantQq2P2laCtQX5+PioqKjSuSO/p6alx5XprIwgCYmNj0a1bNwQGBpq7HLPZvHkzTp48iePHj5u7FLO7fPkyVq5cidjYWMyYMQPHjh3DlClTYG9vjzFjxpi7PJObNm0aCgsLERAQAKlUioqKCsyfPx8jR440d2lmp/z9qe13a2Zmppmqshz379/H9OnTMWrUKKu+OGpVGIBMSCKRqD0WBEFjm7V58803cerUKau+WG12djamTp2KpKQkODg4mLscs1MoFAgODsaCBQsAAB07dsTZs2excuVKqwxAW7Zswf/93/9h48aNaNOmDdLT0xEdHQ1vb2+MHTvW3OVZBP5u1VRWVoaXXnoJCoUCK1asMHc5FokByAQ8PDwglUo1envy8vI0/udiTd566y3s2rULv/zyC5544glzl2M2qampyMvLQ1BQkLitoqICv/zyC5YtW4bS0lJIpVKz1mhKXl5eaN26tdq2Vq1aYdu2bWaryZz+85//YPr06XjppZcAAG3btkVmZibi4+OtPgA1atQIqOwJ8vLyErdb++/WsrIyDB8+HBkZGdi/fz97f6rAOUAmIJPJEBQUhOTkZLXtycnJ6NKli9nqMhdBEPDmm2/i+++/x/79++Hv72/uksyqV69eOH36NNLT08VbcHAwXn75ZaSnp1tV+AGArl27aiyLcPHiRfj5+ZmtJnMqKSmBjY36r2qpVGo1p8FXx9/fH40aNVL73SqXy3Ho0CGr/N0KlfDz119/Yd++fahfv765S7JY7AEykdjYWIwePRrBwcEICQnB6tWrkZWVhYkTJ5q7NJObPHkyNm7ciJ07d8LFxUXsGXNzc4Ojo6O5yzM5FxcXjflPTk5OqF+/vlXOi4qJiUGXLl2wYMECDB8+HMeOHcPq1auxevVqc5dmFgMGDMD8+fPh6+uLNm3aIC0tDUuWLMH48ePNXZpJFBcX4++//xYfZ2RkID09He7u7vD19UV0dDQWLFiAFi1aoEWLFliwYAHq1KmDUaNGmbVuY6nu8/D29sawYcNw8uRJ7N69GxUVFeLvV3d3d8hkMjNWboHMfRqaNVm+fLng5+cnyGQyoVOnTlZ72jcArbf169ebuzSLYc2nwQuCIPzwww9CYGCgYG9vLwQEBAirV682d0lmU1RUJEydOlXw9fUVHBwchKZNmwozZ84USktLzV2aSRw4cEDr74uxY8cKQuWp8LNnzxYaNWok2NvbC927dxdOnz5t7rKNprrPIyMjo8rfrwcOHDB36RZHIvz7B4mIiIjIanAOEBEREVkdBiAiIiKyOgxAREREZHUYgIiIiMjqMAARERGR1WEAIiIiIqvDAERERERWhwGIiEhHN2/eRMOGDXHlyhWD7vf06dN44okncPfuXYPul4iqxgBERAY3btw4SCQSjdtzzz1n7tIeSXx8PAYMGIAmTZro1H7AgAHo3bu31udSUlIgkUhw8uRJtG3bFk8//TQ++eQTA1dMRFXhStBEZHDjxo3D9evXsX79erXt9vb2qFevntGOK5fLjXa9o3v37sHb2xuJiYkICQnR6TU7duzAkCFDkJGRoXEx19deew0nTpxAWloaAOCHH37AxIkTkZWVZXUXwCUyB/YAEZFR2Nvbo1GjRmo31fAjkUjwxRdf4IUXXkCdOnXQokUL7Nq1S20f586dQ0REBJydneHp6YnRo0cjPz9ffP7ZZ5/Fm2++idjYWHh4eKBPnz4AgF27dqFFixZwdHREjx498OWXX0IikeD27du4e/cuXF1dsXXrVrVj/fDDD3BycsKdO3e0vp89e/bA1tZWI/xUV+Pzzz+Phg0bYsOGDWqvKSkpwZYtWxAZGSlu69u3L27evIlDhw7V4NMmIn0xABGR2cydOxfDhw/HqVOnEBERgZdffhkFBQUAgJycHISFhaFDhw44ceIE9u7di+vXr2P48OFq+/jyyy9ha2uL3377DZ9//jmuXLmCYcOGYfDgwUhPT8cbb7yBmTNniu2dnJzw0ksvafROrV+/HsOGDYOLi4vWWn/55RcEBwerbXtYjba2thgzZgw2bNgA1c727777DnK5HC+//LK4TSaToX379jh8+PAjfaZEpCNzX42ViGqfsWPHClKpVHByclK7zZs3T2wDQJg1a5b4uLi4WJBIJMKePXsEQRCE9957TwgPD1fbb3Z2tgBAuHDhgiAIghAWFiZ06NBBrc20adOEwMBAtW0zZ84UAAi3bt0SBEEQfv/9d0EqlQrXrl0TBEEQbty4IdjZ2QkHDx6s8j0NGjRIGD9+vNo2XWo8f/68AEDYv3+/2KZ79+7CyJEjNY7xwgsvCOPGjauyBiIyHFtzBzAiqp169OiBlStXqm1zd3dXe9yuXTvxvpOTE1xcXJCXlwcASE1NxYEDB+Ds7Kyx70uXLuHJJ58EAI1emQsXLuCpp55S2/b0009rPG7Tpg2++uorTJ8+HV9//TV8fX3RvXv3Kt/PvXv34ODgoLZNlxoDAgLQpUsXrFu3Dj169MClS5dw+PBhJCUlabzG0dERJSUlVdZARIbDAERERuHk5ITmzZtX28bOzk7tsUQigUKhAAAoFAoMGDAACxcu1Hidl5eX2nFUCYIAiUSise1BEyZMwLJlyzB9+nSsX78er776qsbrVHl4eODWrVtq23StMTIyEm+++SaWL1+O9evXw8/PD7169dJ4TUFBAZo1a1ZlDURkOJwDREQWqVOnTjh79iyaNGmC5s2bq90eDD2qAgICcPz4cbVtJ06c0Gj3yiuvICsrC59++inOnj2LsWPHVltPx44dce7cuRrVOHz4cEilUmzcuBFffvlllWHrzJkz6NixY7V1EJFhMAARkVGUlpYiNzdX7aZ6BtfDTJ48GQUFBRg5ciSOHTuGy5cvIykpCePHj0dFRUWVr3vjjTfw559/Ytq0abh48SK+/fZb8Sws1dBRr149DBkyBP/5z38QHh6OJ554otp6+vbti7Nnz6r1Aulao7OzM0aMGIEZM2bgn3/+wbhx4zT2f+XKFVy7dq3KdYOIyLAYgIjIKPbu3QsvLy+1W7du3XR+vbe3N3777TdUVFSgb9++CAwMxNSpU+Hm5gYbm6p/dfn7+2Pr1q34/vvv0a5dO6xcuVI8C8ze3l6tbWRkJORyOcaPH//Qetq2bYvg4GB8++23NaoxMjISt27dQu/eveHr66ux/02bNiE8PFxjvSAiMg4uhEhEtd78+fOxatUqZGdnq23/5ptvMHXqVPzzzz86LaCYmJiId955B2fOnKk2hOmrtLQULVq0wKZNm9C1a1eD7ZeIqsZJ0ERU66xYsQJPPfUU6tevj99++w0fffQR3nzzTfH5kpISZGRkID4+Hm+88YbOq0dHRETgr7/+wrVr1+Dj42OwejMzMzFz5kyGHyITYg8QEdU6MTEx2LJlCwoKCuDr64vRo0cjLi4Otrb//p9vzpw5mD9/Prp3746dO3dqPY2diGo3BiAiIiKyOpwETURERFaHAYiIiIisDgMQERERWR0GICIiIrI6DEBERERkdRiAiIiIyOowABEREZHVYQAiIiIiq8MARERERFbn/wEVW0X6k/EYBwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "viz = Visualization(atoms, save_figure=True)\n", "viz.plot_absorption_gaussian()" ] } ], "metadata": { "kernelspec": { "display_name": "votca_test", "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.13.3" } }, "nbformat": 4, "nbformat_minor": 2 }