{ "cells": [ { "cell_type": "markdown", "id": "91ad3d04-8f28-49c8-91bc-39fec385235d", "metadata": {}, "source": [ "# Practice Exercises 1 (due October 14)" ] }, { "cell_type": "code", "execution_count": 4, "id": "4695ad83-81f7-4aab-b442-c190e2c26648", "metadata": {}, "outputs": [], "source": [ "from qiskit import QuantumCircuit, transpile\n", "from qiskit_aer import AerSimulator\n", "from qiskit.visualization import plot_histogram\n", "import numpy as np\n", "from scipy.linalg import expm" ] }, { "cell_type": "markdown", "id": "1aa322a6-03e6-4a2d-8e0f-c01867c73dca", "metadata": {}, "source": [ "## Question 1: Generating entanglement \n", "\n", "Bell states are foundational to quantum information science and represent the simplest examples of entangled states. The four Bell states are typically denoted\n", "\n", "$$\\vert \\Phi^+\\rangle=\\frac{1}{\\sqrt{2}}\\left(\\vert 00\\rangle+\\vert 11\\rangle\\right),$$\n", "$$\\vert \\Phi^-\\rangle=\\frac{1}{\\sqrt{2}}\\left(\\vert 00\\rangle-\\vert 11\\rangle\\right),$$\n", "$$\\vert \\Psi^+\\rangle=\\frac{1}{\\sqrt{2}}\\left(\\vert 01\\rangle+\\vert 10\\rangle\\right),$$\n", "$$\\vert \\Psi^-\\rangle=\\frac{1}{\\sqrt{2}}\\left(\\vert 01\\rangle-\\vert 10\\rangle\\right).$$" ] }, { "cell_type": "markdown", "id": "40dde07a-fbc8-48ef-b65a-4418f8ee9959", "metadata": {}, "source": [ "The following Qiskit code generates a quantum circuit that prepares the Bell state $\\vert \\Phi^+\\rangle$:" ] }, { "cell_type": "code", "execution_count": 19, "id": "86507470-9c79-4640-a1e9-c931f4ad3a1d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
┌───┐ ┌─┐ \n",
"q_0: ┤ H ├──■──┤M├───\n",
" └───┘┌─┴─┐└╥┘┌─┐\n",
"q_1: ─────┤ X ├─╫─┤M├\n",
" └───┘ ║ └╥┘\n",
"c: 2/═══════════╩══╩═\n",
" 0 1 "
],
"text/plain": [
" ┌───┐ ┌─┐ \n",
"q_0: ┤ H ├──■──┤M├───\n",
" └───┘┌─┴─┐└╥┘┌─┐\n",
"q_1: ─────┤ X ├─╫─┤M├\n",
" └───┘ ║ └╥┘\n",
"c: 2/═══════════╩══╩═\n",
" 0 1 "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qc = QuantumCircuit(2,2)\n",
"qc.h(0)\n",
"qc.cx(0,1)\n",
"qc.measure([0,1],[0,1])\n",
"qc.draw()"
]
},
{
"cell_type": "markdown",
"id": "a701a1ee-998d-40d0-8705-218d1c02fd0a",
"metadata": {},
"source": [
"We can sample the measurement outcomes using the ```AerSimulator```:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "cc082fc1-bcaa-4035-a2ab-3a8ab979f81d",
"metadata": {},
"outputs": [],
"source": [
"backend = AerSimulator()\n",
"job = backend.run(qc, shots=1024)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "b17f5172-ede9-4dff-843d-9b715258cff5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKA9JREFUeJzt3X9U1HW+x/HXzDCM6AIKyq8LIrmmm7hJeiv1pqKoIZmZq9tux9RrP3brduKo1ZbHVvb6q/ak3VM3vZYrq+VSu/fadsvrr1WzJNNl5Sa38rKbBiaISIAajjDM/cPLnAhGYWCY4dPzcQ7nyOf7Zeb99fCd85yvM6PF7Xa7BQAAgG7PGugBAAAA0DkIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQIYEeIFg1Njbq9OnTCg8Pl8ViCfQ4AADgO8rtduv8+fNKSEiQ1Xr1a3KEnRenT59WUlJSoMcAAACQJJWWlioxMfGq+xB2XoSHh0u68pcYERER4GkAAMB3VW1trZKSkjxtcjWEnRdN//waERFB2AEAgIBry0vDePMEAACAIQg7AAAAQxB2AAAAhiDsAAAwwLJly2SxWJp9xcXFebb/x3/8h6ZMmaK+ffvKYrGosLCwxW089NBDGjhwoMLCwtSvXz9Nnz5dn332WRceBTqKsAMAwBBDhw5VWVmZ5+vYsWOebRcvXtSYMWO0evVqrz8/YsQIbdq0SZ9++ql27twpt9utyZMny+VydcX46ASEHYJWZzz73LBhg8aPH6+IiAhZLBZVV1d33QEAQBcLCQlRXFyc56tfv36ebXPmzNEzzzyjjIwMrz//4IMPauzYsRowYIBuuukmLV++XKWlpTp58mQXTI/OQNghqHX02efXX3+t22+/XU8//XRXjAsAAVVcXKyEhASlpKTonnvu0eeff+7zbV28eFGbNm1SSkoKH9jfjfA5dghqTc8+WzNnzhxJuuozyezsbEnS/v37O3kyAAgut9xyizZv3qzrr79eZ86c0fLlyzV69Gj9z//8j6Kjo9t8Oy+//LKeeOIJXbx4UUOGDNHu3bsVGhrqx8nRmbhih6DWmc8+AcBkmZmZmjlzpoYNG6aMjAy9++67kqTf/va37bqde++9V0ePHtV7772nQYMGafbs2bp06ZI/RoYfEHYIWk3PPnfu3KlXXnlF5eXlGj16tM6dOxfo0QAg6PXq1UvDhg1TcXFxu34uMjJSgwYN0tixY/WHP/xBn332mbZt2+anKdHZCDsErc569gkA30VOp1Offvqp4uPjO3Q7brdbTqezk6aCv/EaO3Qbvj77BIDvgsWLF2vatGnq37+/KioqtHz5ctXW1mru3LmSpKqqKpWUlOj06dOSpOPHj0uS5x20n3/+ud544w1NnjxZ/fr105dffqlnn31WYWFhmjp1asCOC+3DFTt0G5317BMATHTq1Cn95Cc/0eDBg3X33XcrNDRUhw4dUnJysiTp7bffVlpamrKysiRJ99xzj9LS0rR+/XpJUo8ePfT+++9r6tSp+v73v6/Zs2erV69eys/PV0xMTMCOC+3DFTsErY4++5Sk8vJylZeX669//ask6dixYwoPD1f//v0VFRUVgKMCAP/Iy8u76vZ58+Zp3rx5XrcnJCRo+/btnTwVuhpX7BC0OvrsU5LWr1+vtLQ0PfDAA5KksWPHKi0tTW+//XbXHxAAAH5mcbvd7kAPEYxqa2sVGRmpmpoaRUREBHocAADwHdWeJuGKHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhggJ9AAAALTVgF+8G+gRgBZOrs4K9AgeXLEDAAAwBFfsAoxnnwhGwfTsEwDQdlyxAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMEdRht2rVKlksFmVnZ3vW5s2bJ4vF0uzr1ltvbfZzTqdTjz76qPr27atevXrpzjvv1KlTp7p4egAAgK4VtGF35MgRbdiwQT/84Q9bbLv99ttVVlbm+dq+fXuz7dnZ2dq2bZvy8vL0wQcf6MKFC7rjjjvkcrm6anwAAIAuF5Rhd+HCBd1777165ZVX1KdPnxbbHQ6H4uLiPF9RUVGebTU1Ndq4caOef/55ZWRkKC0tTa+99pqOHTumPXv2dOVhAAAAdKmgDLtHHnlEWVlZysjIaHX7/v37FRMTo+uvv14PPPCAKioqPNsKCgpUX1+vyZMne9YSEhKUmpqq/Px8v88OAAAQKCGBHuDb8vLy9Je//EVHjhxpdXtmZqZmzZql5ORknThxQkuXLtWECRNUUFAgh8Oh8vJyhYaGtrjSFxsbq/Lycq/363Q65XQ6Pd/X1tZKkurr61VfXy9Jslqtstlscrlcamxs9OzbtN7Q0CC32+1Zt9lsslqtXtebbhcINk2/myEhVx4iGhoamm232+1qbGxs9vIGi8WikJAQr+vezht/nU/eZueYuvcxAcGoK86ntgqqsCstLdVjjz2mXbt2qUePHq3u8+Mf/9jz59TUVI0cOVLJycl69913dffdd3u9bbfbLYvF4nX7qlWrlJOT02J9165d6tmzpySpf//+SktL08cff6ySkhLPPoMHD9aQIUN0+PBhnT171rM+fPhwJScn68CBAzp//rxnfdSoUYqJidGuXbu8zgMEUtPrVqdOnaq6ujrt27fPsy0kJERZWVmqrKzUhx9+6FkPDw/XhAkTVFpaqsLCQs96v379NHr0aBUXF+v48eOedX+cT9988EtPT1dYWFiL1+ByTN37mIBg5O/z6eDBg22exeL+ZhoG2FtvvaUZM2bIZrN51lwulywWi6xWq5xOZ7NtTQYNGqT7779fTz75pPbu3auJEyeqqqqq2VW7G2+8UXfddVer8Sa1fsUuKSlJlZWVioiIkOSfZ66DlhJ3CD7F/3zlpQzfpStBHFP3OCYeMxGMPl+Z6dfzqaqqStHR0aqpqfE0iTdB9fRn4sSJOnbsWLO1+fPna8iQIXryySdbjbpz586ptLRU8fHxkqQRI0bIbrdr9+7dmj17tiSprKxMRUVFeu6557zet8PhkMPhaLFut9tlt9ubrdlstlZn8fZs0tv6t28XCBbf/t1s7XfVarXKam35Ml1v697OG3+fT+1Z55i6xzEBwSZQ51Or+7Z5zy4QHh6u1NTUZmu9evVSdHS0UlNTdeHCBS1btkwzZ85UfHy8Tp48qaefflp9+/bVjBkzJEmRkZFasGCBFi1apOjoaEVFRWnx4sUaNmyY1zdjAAAAmCCowu5abDabjh07ps2bN6u6ulrx8fFKT0/XG2+8ofDwcM9+a9euVUhIiGbPnq26ujpNnDhRubm5rdYxAACAKYI+7Pbv3+/5c1hYmHbu3HnNn+nRo4defPFFvfjii36cDAAAILgE5efYAQAAoP0IOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADOFz2B04cEAlJSVX3efUqVM6cOCAr3cBAACAdvA57NLT05Wbm3vVfV5//XWlp6f7ehcAAABoB5/Dzu12X3OfxsZGWSwWX+8CAAAA7eDX19gVFxcrMjLSn3cBAACA/xfSnp3/8R//sdn3b731lk6ePNliP5fL5Xl93e23396hAQEAANA27Qq7b76mzmKxqLCwUIWFha3ua7FY9Pd///dau3ZtR+YDAABAG7Ur7E6cOCHpyuvrrrvuOmVnZ+uxxx5rsZ/NZlOfPn3Uq1evzpkSAAAA19SusEtOTvb8edOmTUpLS2u2BgAAgMBpV9h909y5cztzDgAAAHSQz2HX5PDhwzpy5Iiqq6vlcrlabLdYLFq6dGmbb2/dunVat26d500ZQ4cO1TPPPKPMzExJV/4ZOCcnRxs2bNBXX32lW265Rf/6r/+qoUOHem7D6XRq8eLF+t3vfqe6ujpNnDhRL7/8shITEzt2sAAAAEHM57CrqqrSXXfdpYMHD171M+3aG3aJiYlavXq1vv/970uSfvvb32r69Ok6evSohg4dqueee05r1qxRbm6urr/+ei1fvlyTJk3S8ePHFR4eLknKzs7Wf/7nfyovL0/R0dFatGiR7rjjDhUUFMhms/l6yAAAAEHN57BbuHChPvjgA40fP15z585VYmKiQkI6fAFQ06ZNa/b9ihUrtG7dOh06dEg33HCDXnjhBS1ZskR33323pCvhFxsbq61bt+qhhx5STU2NNm7cqC1btigjI0OS9NprrykpKUl79uzRlClTOjwjAABAMPK5xN555x3dfPPN+tOf/uS3/13C5XLp97//vS5evKhRo0bpxIkTKi8v1+TJkz37OBwOjRs3Tvn5+XrooYdUUFCg+vr6ZvskJCQoNTVV+fn5XsPO6XTK6XR6vq+trZUk1dfXq76+XpJktVpls9nkcrnU2Njo2bdpvaGhodnVS5vNJqvV6nW96XaBYNP0u9n0ZK2hoaHZdrvdrsbGxmYvv7BYLAoJCfG67u288df55G12jql7HxMQjLrifGorn8Pu0qVLGjt2rF+i7tixYxo1apQuXbqk733ve9q2bZtuuOEG5efnS5JiY2Ob7R8bG6svvvhCklReXq7Q0FD16dOnxT7l5eVe73PVqlXKyclpsb5r1y717NlTktS/f3+lpaXp448/VklJiWefwYMHa8iQITp8+LDOnj3rWR8+fLiSk5N14MABnT9/3rM+atQoxcTEaNeuXW39KwG61Pbt2yVJU6dOVV1dnfbt2+fZFhISoqysLFVWVurDDz/0rIeHh2vChAkqLS1t9vmW/fr10+jRo1VcXKzjx4971v1xPn3zwS89PV1hYWGeY2nCMXXvYwKCkb/Pp4MHD7Z5Fou7Lf/paytuu+02xcfH68033/Tlx6/q8uXLKikpUXV1tf793/9dr776qt577z1VV1drzJgxOn36tOLj4z37P/DAAyotLdWOHTu0detWzZ8/v9nVN0maNGmSBg4cqPXr17d6n61dsUtKSlJlZaUiIiIk+eeZ66ClxB2CT/E/X7ni/V26EsQxdY9j4jETwejzlZl+PZ+qqqoUHR2tmpoaT5N44/PTn2XLlikrK0uHDh3Srbfe6uvNtCo0NNTz5omRI0fqyJEj+pd/+Rc9+eSTkq5clftm2FVUVHiu4sXFxeny5cv66quvml21q6io0OjRo73ep8PhkMPhaLFut9tlt9ubrdlstlbfhOHt2aS39W/fLhAsvv272drvqtVqldXa8r+b9rbu7bzx9/nUnnWOqXscExBsAnU+tbpvm/f8li+//FJ33HGHxo0bp3vvvVdpaWmKjIxsdd/77rvP17uRdOUjTpxOp1JSUhQXF6fdu3crLS1N0pWre++9956effZZSdKIESNkt9u1e/duzZ49W5JUVlamoqIiPffccx2aAwAAIJj5HHbz5s2TxWKR2+1Wbm6ucnNzW7zezu12y2KxtCvsnn76aWVmZiopKUnnz59XXl6e9u/frx07dshisSg7O1srV67UoEGDNGjQIK1cuVI9e/bUT3/6U0lSZGSkFixYoEWLFik6OlpRUVFavHixhg0b5nmXLAAAgIl8DrtNmzZ15hweZ86c0Zw5c1RWVqbIyEj98Ic/1I4dOzRp0iRJ0hNPPKG6ujo9/PDDng8o3rVrl+cz7CRp7dq1CgkJ0ezZsz0fUJybm8tn2AEAAKP5/OYJ09XW1ioyMrJNL1TsiAG/eNdvtw346uTqrECPALSKx0wEI38/ZranSVq+0g8AAADdks//FPvNz1+5lv79+/t6NwAAAGgjn8NuwIABbfpwYovFwieHAwAAdAGfw+6+++5rNexqamr03//93zpx4oTGjRunAQMGdGQ+AAAAtJHPYZebm+t1m9vt1vPPP6/nnntOGzdu9PUuAAAA0A5+efOExWLR4sWLNXToUD3++OP+uAsAAAB8i1/fFTty5Ejt3bvXn3cBAACA/+fXsPvb3/7GGycAAAC6iM+vsfOmsbFRX375pXJzc/XHP/5REydO7Oy7AAAAQCt8Djur1XrVjztxu93q3bu3fv3rX/t6FwAAAGgHn8Nu7NixrYad1WpVnz59NHLkSM2fP1+xsbEdGhAAAABt43PY7d+/vxPHAAAAQEfxf8UCAAAYolPePJGfn6/CwkLV1NQoIiJCw4cP15gxYzrjpgEAANBGHQq7jz76SHPnzlVxcbGkK2+YaHrd3aBBg7Rp0yaNGjWq41MCAADgmnwOu08//VQZGRm6ePGipkyZovHjxysuLk5nzpzR/v37tWPHDk2ZMkWHDh3SDTfc0JkzAwAAoBU+h11OTo4uX76snTt3atKkSc22PfHEE9qzZ4+ysrL0q1/9Snl5eR0eFAAAAFfn85sn9u3bpx/96Ectoq5JRkaGZs6cqX379vk8HAAAANrO57CrqanRgAEDrrpPSkqKampqfL0LAAAAtIPPYZeQkKBDhw5ddZ+PPvpICQkJvt4FAAAA2sHnsJs+fbr279+vpUuX6tKlS822Xbp0Sb/85S+1b98+TZ8+vcNDAgAA4Np8fvPE0qVL9c4772jlypX6t3/7N918882KjY3VmTNndOTIEZ09e1bXXXedli5d2pnzAgAAwAufwy4qKkofffSRHn/8ceXl5Wn79u2ebT169ND8+fP17LPPKioqqlMGBQAAwNV16AOKo6KitHHjRq1fv16fffaZamtrFRERoSFDhshut3fWjAAAAGiDdofdihUrdPHiReXk5HjizW63a9iwYZ59Ll++rCVLlig8PFy/+MUvOm9aAAAAeNWuN0/s2bNHzzzzjKKjo696RS40NFTR0dFasmSJ9u7d2+EhAQAAcG3tCrvNmzerT58++qd/+qdr7vvII48oKipKmzZt8nk4AAAAtF27wi4/P18ZGRlyOBzX3NfhcCgjI0P5+fk+DwcAAIC2a1fYnT59Wtddd12b909JSVFZWVm7hwIAAED7tSvsrFar6uvr27x/fX29rFafPwMZAAAA7dCu6kpISFBRUVGb9y8qKtLf/d3ftXsoAAAAtF+7wu62227T3r17dfLkyWvue/LkSe3du1djx471dTYAAAC0Q7vC7pFHHlF9fb1+9KMfqbKy0ut+586d06xZs9TQ0KCf//znHR4SAAAA19auDyi+6aablJ2drRdeeEE33HCDfvaznyk9PV2JiYmSpC+//FJ/+tOftGHDBp09e1YLFy7UTTfd5JfBAQAA0Fy7/+eJ559/Xj169NCvf/1rrVixQitWrGi23e12y2az6amnntLy5cs7bVAAAABcXbvDzmKxaOXKlVqwYIE2bdqk/Px8lZeXS5Li4uI0ZswYzZs3TwMHDuz0YQEAAOBdu8OuycCBA7kiBwAAEET4kDkAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBBBF3YHDhzQtGnTlJCQIIvForfeeqvZ9nnz5slisTT7uvXWW5vt43Q69eijj6pv377q1auX7rzzTp06daoLjwIAAKDrBV3YXbx4UTfeeKNeeuklr/vcfvvtKisr83xt37692fbs7Gxt27ZNeXl5+uCDD3ThwgXdcccdcrlc/h4fAAAgYEICPcC3ZWZmKjMz86r7OBwOxcXFtbqtpqZGGzdu1JYtW5SRkSFJeu2115SUlKQ9e/ZoypQpnT4zAABAMAi6sGuL/fv3KyYmRr1799a4ceO0YsUKxcTESJIKCgpUX1+vyZMne/ZPSEhQamqq8vPzvYad0+mU0+n0fF9bWytJqq+vV319vSTJarXKZrPJ5XKpsbHRs2/TekNDg9xut2fdZrPJarV6XW+6XSDYNP1uhoRceYhoaGhott1ut6uxsbHZVXCLxaKQkBCv697OG3+dT95m55i69zEBwagrzqe26nZhl5mZqVmzZik5OVknTpzQ0qVLNWHCBBUUFMjhcKi8vFyhoaHq06dPs5+LjY1VeXm519tdtWqVcnJyWqzv2rVLPXv2lCT1799faWlp+vjjj1VSUuLZZ/DgwRoyZIgOHz6ss2fPetaHDx+u5ORkHThwQOfPn/esjxo1SjExMdq1a5fPfw+APzW9vGHq1Kmqq6vTvn37PNtCQkKUlZWlyspKffjhh5718PBwTZgwQaWlpSosLPSs9+vXT6NHj1ZxcbGOHz/uWffH+fTNB7/09HSFhYW1eKkGx9S9jwkIRv4+nw4ePNjmWSzub6ZhkLFYLNq2bZvuuusur/uUlZUpOTlZeXl5uvvuu7V161bNnz+/2dU3SZo0aZIGDhyo9evXt3o7rV2xS0pKUmVlpSIiIiT555nroKXEHYJP8T9fueL9XboSxDF1j2PiMRPB6POVmX49n6qqqhQdHa2amhpPk3jT7Z/+xMfHKzk5WcXFxZKkuLg4Xb58WV999VWzq3YVFRUaPXq019txOBxyOBwt1u12u+x2e7M1m80mm83WYl9vzya9rX/7doFg8e3fzdZ+V61Wq6zWlu+/8rbu7bzx9/nUnnWOqXscExBsAnU+tTpLm/cMUufOnVNpaani4+MlSSNGjJDdbtfu3bs9+5SVlamoqOiqYQcAANDdBd0VuwsXLuivf/2r5/sTJ06osLBQUVFRioqK0rJlyzRz5kzFx8fr5MmTevrpp9W3b1/NmDFDkhQZGakFCxZo0aJFio6OVlRUlBYvXqxhw4Z53iULAABgoqALuz//+c9KT0/3fL9w4UJJ0ty5c7Vu3TodO3ZMmzdvVnV1teLj45Wenq433nhD4eHhnp9Zu3atQkJCNHv2bNXV1WnixInKzc1t9bInAACAKYIu7MaPH6+rvZ9j586d17yNHj166MUXX9SLL77YmaMBAAAEtW7/GjsAAABcQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCKPD7uWXX1ZKSop69OihESNG6P333w/0SAAAAH5jbNi98cYbys7O1pIlS3T06FHddtttyszMVElJSaBHAwAA8Atjw27NmjVasGCB7r//fv3gBz/QCy+8oKSkJK1bty7QowEAAPiFkWF3+fJlFRQUaPLkyc3WJ0+erPz8/ABNBQAA4F8hgR7AHyorK+VyuRQbG9tsPTY2VuXl5a3+jNPplNPp9HxfU1MjSaqqqlJ9fb0kyWq1ymazyeVyqbGx0bNv03pDQ4Pcbrdn3WazyWq1el2vr69Xo/Prjh8w0MnOnTsnSQoJufIQ0dDQ0Gy73W5XY2OjXC6XZ81isSgkJMTrurfzpjPPp2/yNjvH1L2PicdMBKPq6mq/nk9VVVWS1GybN0aGXROLxdLse7fb3WKtyapVq5STk9NiPSUlxS+zAcGs7wuBngAAuo8+L3TN/Zw/f16RkZFX3cfIsOvbt69sNluLq3MVFRUtruI1eeqpp7Rw4ULP942NjaqqqlJ0dLTXGETwqK2tVVJSkkpLSxURERHocQAgqPGY2b243W6dP39eCQkJ19zXyLALDQ3ViBEjtHv3bs2YMcOzvnv3bk2fPr3Vn3E4HHI4HM3Wevfu7c8x4QcRERE8SAFAG/GY2X1c60pdEyPDTpIWLlyoOXPmaOTIkRo1apQ2bNigkpIS/exnPwv0aAAAAH5hbNj9+Mc/1rlz5/SrX/1KZWVlSk1N1fbt25WcnBzo0QAAAPzC2LCTpIcfflgPP/xwoMdAF3A4HPrlL3/Z4p/TAQAt8ZhpLou7Le+dBQAAQNAz8gOKAQAAvosIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADCE0Z9jh++WTz75RJ988olqamrUs2dP3XrrrUpJSQn0WAAAdBk+xw5GWL16tV5//XX97W9/U2JioqKjo+V2u5WWlqaf/vSnGjNmjCwWiywWS6BHBQDAbwg7dHvnzp3TgAED9Pzzz+vBBx/UqVOn9Oc//1kffvihCgoK9PXXX2vlypUaP358oEcFgKDQ0NCgqqoqxcTEBHoUdDJeY4du7/e//71+8IMf6MEHH5QkJSYm6q677tKzzz6rtWvXKjExUXfeeac+//zzAE8KAMHhpZde0vXXX69HH31U77//vr7++usW+9TW1uq//uu/VF9fH4AJ4SvCDt1edHS0Kisr9cEHH0iSXC6XXC6XJGnYsGHasmWLhg4dqh07dgRyTAAIGnl5eRo6dKg++ugjjR8/XiNGjNCyZctUVFTkefx8/fXXlZOTI7vdHuBp0R6EHbq9rKwsJScna82aNfr0009ls9lks9nU9CoDh8Mhm82mc+fOBXhSAAi8s2fPKjQ0VD//+c91+PBhFRUVacaMGcrNzdXw4cM1btw4rV+/Xi+//LJuueWWQI+LduI1dujW3G63LBaLDh48qEcffVRFRUWaOnWq7r//ft14442qrKzUwYMHtXTpUh09elQDBgwI9MgAEFBlZWWeK3aTJ0/2rLtcLuXn5+s3v/mNtm3bptraWpWUlCgxMTGA06K9CDsYoba2Vk6nUwUFBdqyZYveffddXb58WfHx8bLZbHrkkUf02GOPBXpMAAgKdXV1kqSwsDDPE+RvWrx4sfbu3au//OUvgRgPHcDn2KHbqqio0JYtW7RmzRr17dtXoaGhio+PV1ZWlnJyclRdXa0vvvhC//AP/6DY2NhAjwsAQSMsLMzz529H3aVLl/TOO+9o/vz5XT0WOgFX7NBtzZ07V5999pmmTZum6OhoffXVVyosLNQnn3yi+Ph4rVixQjfffHOgxwSAoFFXV9cs6rzt8+abb+onP/mJQkNDu2gydBbCDt2S2+1WeHi4tm/frrFjx3rWTp06pcOHD+s3v/mN/vd//1dvvvmm0tLSAjwtAASHRYsWacyYMRoxYoTi4uLkcDha7FNdXa3evXt3/XDoFLwrFt3SJ598opSUlGYPShaLRUlJSZo5c6a2bdumPn366M033wzglAAQPLZu3aq1a9fqnnvuUXp6up566int27dPFRUVamhokCRdvHhR9913n4qKigI8LXzFFTt0S3V1dZo2bZouXbqkzZs3a8CAAbJamz9Peemll/Tqq6+qsLAwMEMCQBC5//77FRoaqkWLFikvL0+vvvqqvvjiC6WlpWnWrFmaMmWKCgsL9eCDD/KhxN0YV+zQLYWFhWn58uW6cOGC5syZo61bt6qsrMzzTq+6ujq99957Sk1NDfCkABB4DQ0Nuu6669S7d28NHDhQS5Ys0YkTJ1RYWKiRI0dq9erVGjt2rB566CHNmTMn0OOiA7hih27t2LFjWr58ud5++21973vf05gxYxQTE6OdO3cqLi5Or776qoYNGxboMQEg4Kqrq3XmzBkNHjxYly9flt1ub/aO2Ndff11z5szR0aNHdeONNwZwUnQEYQcjVFRU6J133tEf//hH9ejRQ6mpqZo1a5aGDBkS6NEAIGg1NjbK7XbLZrPplVde0WOPPdbq/xuL7oOwg3EaGxtbvN4OAHB1a9askcvl0uOPPx7oUdABhB0AAFB9fb1sNhtPjLs5wg4AAMAQZDkAAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIf4PbVSME7ob73UAAAAASUVORK5CYII=",
"text/plain": [
"