{ "cells": [ { "cell_type": "markdown", "id": "c78ff5ff-bf16-4631-8e1c-9ed6fd0309e4", "metadata": { "tags": [] }, "source": [ "# Solving Equations with Grover's Algorithm\n", "\n", "This experiments is inspired by QISKITs introduction of the Grover algorithm, which can be found at https://qiskit.org/textbook/ch-algorithms/grover.html. \n", "\n", "Grover algrithm is one of the most famous algorithms for Quantum Computers. It is often discussed as a kind of database search agorithm but this is, quite possibly a pretty bad misnomer. I do like to think of it as a solver for otherwise completely unstructured problems, i.e. problem where you have to brute force search the an entire solutions space of size $N$ for the best possible solution. Grover gives you a solution in $\\sqrt{N}$ steps. For completeness sake: it does NOT speed up solutions exponentially (retaining polynomial speedup) and does thus not give an answer to the infamous $\\mathbf{P=NP}$ conjecture.\n", "\n", "We shall use it today to solve a simple mathematical problem, namely to find a solution to the problem $a+b=17$. This is, of course, NOT a completely unstructured problem and there are certainly MUCH quicker ways to solve the issue." ] }, { "cell_type": "code", "execution_count": 1, "id": "49c2a71d-9a72-4103-9ac4-d6b078fd01d9", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":219: RuntimeWarning: scipy._lib.messagestream.MessageStream size changed, may indicate binary incompatibility. Expected 56 from C header, got 64 from PyObject\n" ] } ], "source": [ "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, Aer, transpile\n", "from qiskit.visualization import plot_bloch_multivector, plot_histogram\n", "from numpy import pi\n", "import numpy as np\n", "import matplotlib.pylab as plt\n", "sim = Aer.get_backend('aer_simulator') " ] }, { "cell_type": "markdown", "id": "ad4c0f7b-896c-4575-9762-db6242ba4019", "metadata": {}, "source": [ "## Classical Problems on a Quantum Computer\n", "\n", "Since classical Physics is a subclass of Quantum Phyics it probably comes as no big surprise for you to finde, that any classical computation can be carried out on a Quantum Computer (and then some). If you want to port a classical computer programm into a Quantum circuit you could simply break down the classical software into its computational gates and you would find that there only NAND-gates on a classical computer.\n", "\n", "\n", "\n", "All other gates and hence all possible claculation a classical computer can implement can be composed of series of NAND-gates. See https://de.wikipedia.org/wiki/NAND-Gatter for a list, if you are interested. The Quantum Equivalent of the NAND gates can be implemented with the so-called Toffoli-Gate. The action of the gate is defined as $\\hat{TF}(|c_0\\rangle{}|c_1\\rangle{}|t\\rangle{})= |c_0\\rangle{}|c_1\\rangle{}|t\\oplus(c_0\\cdot{}_1)\\rangle{}$, hence it is the equivalent of the AND gate. It is defined is QISKIT:" ] }, { "cell_type": "code", "execution_count": 2, "id": "85eb6fe1-2514-4453-8d91-3a5bfba5175d", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAH0AAACoCAYAAADNc+G5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAJS0lEQVR4nO2dXUxU6RnHfzMKKlKLyAYV0RV0/JgIKttqaOpHaommXJitoqSl1ZJIxBtjeqlGgvGCeuGlpk1j2gvcSEmatUCiUfGD1i0quNo1I8uXuGqF4AcIgzKnF1NQZIQZODPnsM/zS+Zi3nPmPQ/8eN7zMpD/OAzDMFBE4bS6ACXyqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBTLa6gO8jhg86muH5I8CAGXMgIRWcNmkxm5QRGJ/Px/Hjx1m8eDFTp04lPT2d6upqlixZwp49e6wuLyAvn8D1P0FdOTTfgOav4M7f4dop6HxodXV+bC09Pz+f4uJiCgoKqKysJCcnh9zcXBobG8nIyLC6vGF0d8DNL6D31fBjfa/hdpn/h8JqbLu8l5aWcvr0aS5fvsz69esB2LhxI7du3aK8vJzVq1dbXOFwmm5A/1sgUDKfAT4fNNbAys8jXdlQbNvpx44dY/PmzYPCB1i0aBFRUVGkpaUB0NzczPr163G5XKxYsYKrV69aUS5v++DpfQILH8CA9kbwdkWqqsDYUnpbWxt3795l+/btw461trbidruZMmUKAAUFBezYsQOPx8OpU6fYuXMnfX19o17D4XCY+kiek4LhC+7rS1v2menXDwXbSgeYPXv2kPGenh6qq6sHl/b29nauXbtGfn4+AJmZmcydO5dLly5FtmDgde/LoM/t7n0RxkpGx5bSExISAPB4PEPGS0pKePz48eAmrrW1lcTExMGuB1i4cCEtLS2jXsMwDFMfL7rbmZkMjNR0Doj9BB7+94Hp1w8FW27kUlJSSEtL49ixY8THx5OUlERZWRkVFRUAtty5A3y6ZpRfywxYuAZCXI1Nx5ad7nQ6OXv2LG63m71797J7924SEhLYt28fkyZNGtzEzZ8/n6dPn+L1egdf29TUxIIFCyype9ansPTnfLTbF62DxKWRrCgwjokU/Z2Xl0d9fT137twZHMvKymLr1q0UFhZSU1PDtm3baG5uJjo62rI6Xz+HR3XQUut/nrwK5q2E6bMsK2kItuz0j1FbWztsaT958iRnzpzB5XKxZ88eSktLLRUOEBMHize8e77kZ/YRDja9pweiq6sLj8dDYWHhkPGUlBSuXLliUVUTkwkjPTY2lv7+fqvL+F4woZZ3xRxUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUeph4P9TFbgEvtpY+EQOBDR88vA3//PO7set/hJZ/g88mmQq2TqLIz8+nvLycQ4cOkZGRQU1NDbm5uTx79owDBw5YXd4wfD74+kt49mDoeO9LeFAN7U2w6nNwWvxdt630iRgI/PDWcOHv09nqDw1O/UnkagqEbZf3YAOBDx8+jMvlwul0UlZWZkWpgP++/fDW6Oe11Vm/zNtSeiiBwJs3b6aqqop169aFdA2zA3kTZyYTTDzsmx5YlJxmaSCwLZf30QKBt2zZMjiWmZkZ0do+htM5KfhzHcGfGw5s2enBBgKPB7MDeb971kzUtNGv64yC+023NRD4QyZiILBzEsxLh6Z/jXzeXDdMtjbQ0p6dHmwgsN1Y8GP4QeLHj8fEW79zB5t2OoDL5RoW1p+Xl8fy5cuZNi2IddQCJkdDxg749io8ugu+N/5x5ySY44bUnxLULSDsGBOIpUuXGrt27RoydvDgQSMpKcmIjo424uPjjaSkJKOhocGiCt/xxmsY5//gf/T1WF3NUGy5vAdiIBD4wzdliouLaWtrw+v10tHRQVtbG6mpqRZV+Y7379tRU62rIxC2Xd4/RAOBzWPCdLpiHipdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdIA7DsFvK2cTFMOD5I3+g0Mun0P6tf3zWQpiRCDOTYeZ8CDEtxHRUugkYBjz5BppvQHfHyOdOi4MFP4KkNOvkq/Rx4u2G/1RBR1Nor5uZDO4tMHVGeOoaCZU+Dnpfwc0voOf52F4/JdYfYhAz09SyRkU3cmOk/y3c/tvYhQN4u+B2Gbz1mlZWUKj0MdJ4HbrbRz5n0+/9j5HoeQGey6aVFRS2lm7XQODXz6Gl1rz5vvvav9uPFLaWnp+fT3FxMQUFBVRWVpKTk0Nubi6NjY2Wxoo9qgdM3gk9qjd3vpGwbfyInQOBn9wPw5zfwNJN4IhAG9q204MJBO7s7CQ7OxuXy0V6ejpZWVk0NDSEtS5vN3hfmT9v/xt43Wn+vIGwpfRgA4EdDgf79+/H4/FQX19PdnY2u3fvDmtto23exkNXGOd+H1su78EGAsfFxbFp06bB45mZmZSUlAR1jVCTkwdYuyyb4t99OWRstB36x45fOD70+a9/9Rsu3PzrmOoK5e0WW3b6WAOBT5w4wdatW8NaW9/b3vDN/aYnbHO/jy07fSyBwEVFRTQ0NHDx4sWgrjHWNyJ7X8G1U0PHPuzYAQY6/GPHP+QfF84S+8mYygoJW3Z6qIHAR48e5dy5c1RVVRETExPW2qbEQvR08+d1ToaYWebPGwhbdjoEHwhcVFRERUUF58+fJy4uLux1ORyQuCS4j+4IhUQXOCPUgraVHoja2lrWrl07+PzevXscOXKE1NRUNmzYMDheV1cX1jrmrTRf+rxV5s43EhNG+kAgcGFh4eCY2+0e8715PEyP94tvqzNnvtnL4IdzzJkrGPRPq2PkbR/c+Mv4/soG/j3Cmt9CdARz4G25kZsITI6GVdv80sZK1DRY9cvICgft9HHT+xLuVsDzttBeNyMR3L/w3yoijUo3AcPw399bvvL/Hj8S0dNhwWeQnBG53fqHqHQTMXz+z1Md+G/Yvm7/D0T09P//N+w8SEj1f6aLlah0gehGTiAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSD/A767tljqeP2lAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc = QuantumCircuit(3)\n", "qc.toffoli(0,1,2)\n", "qc.draw()" ] }, { "cell_type": "markdown", "id": "6aab23c8-cd76-47eb-bc98-98427c0f6b92", "metadata": {}, "source": [ "The NAND gate can be implemented quite easily by simply negating the result" ] }, { "cell_type": "code", "execution_count": 3, "id": "92b22db8-67fa-4532-bc55-a157722aa7ca", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def NAND_gate(as_gate=True):\n", " qc = QuantumCircuit(3)\n", " qc.toffoli(0,1,2)\n", " qc.x(2)\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"NAND\"\n", " return U_s\n", " else:\n", " return qc\n", "\n", "qc = NAND_gate(as_gate=False)\n", "qc.draw()" ] }, { "cell_type": "markdown", "id": "b2856f39-c263-4b86-a7c0-705419f7cf2c", "metadata": {}, "source": [ "We can use this function to create a truth-table and see that this is indeed equivalent to the gate:" ] }, { "cell_type": "code", "execution_count": 4, "id": "4c16f0dc-2f80-429e-8489-84151b15dc99", "metadata": {}, "outputs": [], "source": [ "def gate_test_onevalue(inp1, inp2, gate):\n", " qc = QuantumCircuit(3)\n", " if (inp1):\n", " qc.x(0)\n", " if (inp2):\n", " qc.x(1) \n", " qc.append(gate,[0,1,2])\n", "\n", " qc.measure_all() \n", " qc_t = transpile(qc, sim)\n", " results = sim.run(qc_t, shots=1).result().get_counts()\n", " for key, value in results.items():\n", " truth = int(key[0])\n", " break\n", " return truth\n", " \n", "def gate_test(gate):\n", " r = [[0,0],[0,0]]\n", " for idx1, inp1 in enumerate([False, True]):\n", " for idx2, inp2 in enumerate([False, True]):\n", " r[idx1][idx2] = gate_test_onevalue(inp1, inp2, gate)\n", " return r\n", "\n", "import pandas\n", "def print_truth_table(gate):\n", " t = gate_test(gate)\n", " print(pandas.DataFrame(t, [0, 1], [0, 1]))\n" ] }, { "cell_type": "markdown", "id": "8d43395c-e2f2-4ea6-90b3-d6429cf929e2", "metadata": {}, "source": [ "Which we apply into the NAND-gate:" ] }, { "cell_type": "code", "execution_count": 5, "id": "8c8b5979-004b-4804-b34d-c723a882b792", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NAND-gate\n", " 0 1\n", "0 1 1\n", "1 1 0\n" ] } ], "source": [ "print('NAND-gate') \n", "print_truth_table(NAND_gate(False))" ] }, { "cell_type": "markdown", "id": "c40be5da-43c9-4454-a8df-b86bb4ea26f6", "metadata": {}, "source": [ "We can equivalently define and Test shortcuts for ANDs and ORs, which will come in handy, later on. To create the OR and we use the fact that $A\\ \\mathrm{or}\\ B = \\mathrm{not}(\\mathrm{not}(A\\ \\mathrm{or}\\ B)) = \\mathrm{not}(\\mathrm{not}(A)\\ \\mathrm{and}\\ \\mathrm{not}(B))$. The XOR-gate is constructed from two CNOTs." ] }, { "cell_type": "code", "execution_count": 6, "id": "8bb31ed1-f52c-4281-a8fe-fa6799090b85", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "OR Gate\n", " 0 1\n", "0 0 1\n", "1 1 1\n", "\n", "AND Gate\n", " 0 1\n", "0 0 0\n", "1 0 1\n", "\n", "XOR Gate\n", " 0 1\n", "0 0 1\n", "1 1 0\n" ] } ], "source": [ "def OR_gate(as_gate=True):\n", " qc = QuantumCircuit(3)\n", " qc.x(0)\n", " qc.x(1)\n", " qc.toffoli(0,1,2)\n", " qc.x(2)\n", " qc.x(0)\n", " qc.x(1)\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"OR\"\n", " return U_s\n", " else:\n", " return qc\n", "\n", "def AND_gate(as_gate=True):\n", " qc = QuantumCircuit(3)\n", " qc.toffoli(0,1,2)\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"AND\"\n", " return U_s\n", " else:\n", " return qc\n", "\n", "def XOR_gate(as_gate=True):\n", " qc = QuantumCircuit(3)\n", " qc.cx(0,2)\n", " qc.cx(1,2)\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"XOR\"\n", " return U_s\n", " else:\n", " return qc\n", "\n", "print('OR Gate')\n", "print_truth_table(OR_gate())\n", "print('')\n", "print('AND Gate')\n", "print_truth_table(AND_gate())\n", "print('')\n", "print('XOR Gate')\n", "print_truth_table(XOR_gate())" ] }, { "cell_type": "markdown", "id": "3b6ec6a2-3d6b-4ffd-aa0f-1d12f43f5e1e", "metadata": {}, "source": [ "As NAND implements a complete basis set for classic computers, we therefore conclude that we can use to cast any classical algorithm in a quantum form. What does this mean? This means that the algorithm behaves exactly like the classical one, if we run it with CBS as an input (where the CBS are supposed to be read like binary numbers for the classical input). However, we can also run the algorithm with an entangled superposition state and retain a true quantum result. As a example we take an entirely fictitious algorithm that is fed with a four bit number. We run it twice, once with the input number “12” and once with the input “6”. Suppose the algorithm us VERY hard to compute, then we would, after a long wait compile the following table:\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Input\n", " \n", " 1100 (12)\n", " \n", " 0110 (6)\n", "
\n", " Output\n", " \n", " 1110 (14)\n", " \n", " 0011 (3)\n", "
\n", "We can now turn the algorithm into a quantum version by replacing all its NANDs with their quantum equivalents and we would be guaranteed to get:\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Input\n", " \n", " $|1100\\rangle\\ (12)$ \n", " \n", " $|0110\\rangle\\ (6)$\n", "
\n", " Output\n", " \n", " $|1110\\rangle\\ (14)$\n", " \n", " $|0011\\rangle\\ (3)$\n", "
\n", "This is certainly not an improvement. However, because the quantum algorithm is necessarily linear (it is a unitary matrix!) this means that if we input a superposition of CBS-states we obtain a result, which is superimposed of both classical runs:\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Input\n", " \n", " $\\alpha|1100\\rangle+\\beta|0110\\rangle$\n", "
\n", " Output\n", " \n", " $\\alpha|1110\\rangle+\\beta|0011\\rangle$\n", "
\n", "Of course, we can generalize this to all possible superpositions, if we wanted to. We are now in a position, where we can run a classical algorithm with all possible classical inputs at once! This is, however, not really useful, because upon a simple measurement in the CBS we would still collapse onto ONE particular solution of the algorithm and we would not even know which one. So, we can only get a real advantage out of this, if what we are really looking for are specific properties of groups of solutions." ] }, { "cell_type": "markdown", "id": "d2fee452-8690-48b2-8f93-6abd48a98123", "metadata": {}, "source": [ "### Task 1: Addition as an Example\n", "We shall implement a circuit for the addition of two n-bit numbers $a$ and $b$ in a quantum circuit. Bitwise addion is carried out in the same way as you would add number son paper, i.e. add digits from the least to the most significant and using carry-bits. The circuit is depicted in the following chart:\n", "\n", "
\n", "\n", "The circuit must be applied from the $0^{th}$ bit to the $n-1^{st}$ bit, starting without a carry input quibt and using the $c_{out}$ as $c_{in}$ for the next Qubit. The last $c_{out}$ is retained. The result thus has $n+1$ Qubits, namely $(s_0,...,s_{n+1}, c_{out})$.\n", "\n", "Implement a 4 bit Quantum-Adder and demonstrate that $13+6=19$." ] }, { "cell_type": "markdown", "id": "b3d5df46-7dbc-4fc5-a086-2435c5404485", "metadata": {}, "source": [ "We start with creating the half-adder:" ] }, { "cell_type": "code", "execution_count": 7, "id": "a6a822f2-2f6f-4803-8d2a-7f6b2186edd0", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def half_adder(as_gate=True):\n", " a_qubit = QuantumRegister(1, name='a')\n", " b_qubit = QuantumRegister(1, name='b')\n", " s_qubit = QuantumRegister(1, name='s')\n", " c_qubit = QuantumRegister(1, name='c')\n", " qc = QuantumCircuit(a_qubit, b_qubit, s_qubit, c_qubit)\n", "\n", " qc.append(AND_gate(), [a_qubit,b_qubit,c_qubit])\n", " qc.append(XOR_gate(), [a_qubit,b_qubit,s_qubit])\n", " \n", "\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"HalfAdd\"\n", " return U_s\n", " else:\n", " return qc\n", "\n", "half_adder(as_gate=False).draw()" ] }, { "cell_type": "markdown", "id": "7b2fb22b-03fc-4838-bcb6-f5e52f7954f4", "metadata": {}, "source": [ "We then create the full Adder from the Half Adder. This requires intermediate QuBits to store intermediate results (altogether three), corresponding to any of the lines not connected to input or output in the image above. We call these \"auxiliary\" qubits.\n", "\n", "We want to be able to reuse then, so we have to clean up (uncompute) them after usage. This is done after the or-gate. Uncomputing aux1, and aux2 is simple. We can just repeat the first line; where aux1 and aux2 are the output. Any bit-flip carried out on them will be undone by a second flip. If no flip was carried out a second no-flip will not do anthing either. However, can't do this as a first step in uncomputation because we also need to uncompute aux3 for which we need the intermediary result from aux2. We can use the same approach here (uncomputation through recomputation) but can't just invoke the half-adder again, because that would uncompute s_qubit as well. Thus we just enact the part of the half-adder again. This is a bit unelegant but I don't have time for a smoother solution." ] }, { "cell_type": "code", "execution_count": 8, "id": "5da7348a-e010-46d7-9777-5d7b513224a5", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def full_adder(as_gate=True):\n", " a_qubit = QuantumRegister(1, name='a')\n", " b_qubit = QuantumRegister(1, name='b')\n", " cin_qubit = QuantumRegister(1, name='cin')\n", " aux1_qubit = QuantumRegister(1, name='aux1')\n", " aux2_qubit = QuantumRegister(1, name='aux2')\n", " aux3_qubit = QuantumRegister(1, name='aux3')\n", " s_qubit = QuantumRegister(1, name='s')\n", " c_qubit = QuantumRegister(1, name='c')\n", " qc = QuantumCircuit(a_qubit, b_qubit, cin_qubit, aux1_qubit, aux2_qubit, aux3_qubit, s_qubit, c_qubit)\n", "\n", " #Compute Sum\n", " qc.append(half_adder(), [a_qubit, b_qubit, aux1_qubit, aux2_qubit])\n", " qc.append(half_adder(), [aux1_qubit, cin_qubit, s_qubit, aux3_qubit])\n", " qc.append(OR_gate(), [aux2_qubit, aux3_qubit, c_qubit])\n", " #Uncompute aux1-3\n", " qc.append(AND_gate(), [aux1_qubit, cin_qubit, aux3_qubit])\n", " qc.append(half_adder(), [a_qubit, b_qubit, aux1_qubit, aux2_qubit])\n", " \n", "\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"FullAdd\"\n", " return U_s\n", " else:\n", " return qc\n", "\n", "full_adder(as_gate=False).draw()" ] }, { "cell_type": "markdown", "id": "41651d24-0353-4ec0-ad07-446b67406a26", "metadata": {}, "source": [ "We then compose the addition circuit by stacking the full adder" ] }, { "cell_type": "code", "execution_count": 9, "id": "b1206afa-89c3-4189-b53d-94e471f16e8b", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc4AAAOtCAYAAAAIGYVtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABcsElEQVR4nO3de1zUdb7H8fcAykVITBIX8E5omamhu4Um2Horb6iVlrVqapbZestbgRsqlZ4utl3U0mQ3FSuzXVMzLwlqZgUqpXlJQ8kMFUQULyCX84e77LLe+OY4v4F5PR+PeTzyx8z8PvM55/hyfjN6bCUlJSUCAADl4mb1AAAAVCSEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAAx5WD4D/2POFdOqo1VM4ll8tqfE9Vk8BAOVHOJ3IqaPSiUNWTwEAuBIu1QIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBgwGXCmZSUpOjoaNWpU0deXl4KDg7WkCFDlJuba/VoAIAKxGX+5aC0tDS1bdtWQ4cOlZ+fn3bt2qWYmBhJ0ty5cy2e7sqKios0b+VErU5JUEHhOYXf3Emj7p+j6tUCrB4NAFyOraSkpMTqIRytuLhYxcXF+vOf/6x169Zpz549Vo8kSUpZfOl/cm/hunitSfmbXhyySjf41NTLHz6m/PNn9MKQzxw/pJ35h0it+lk9BQCUn0tcqi0qKtLChQvVtm1bBQYGyt3dXVWqVNGsWbPk6+srSTpw4IAiIyMVFhamZs2aaePGjRZP/R8rt7yjvu0n6Hc1G6qad3UN7TpD3+5ZpSM5B60eDQBcjkuEc8CAARo6dKgiIiI0d+5cbd68Wd988438/PzUrFkzSdKwYcPUt29f7d27V3PmzFG/fv1UUFBg8eRS3tkTOnoiQzcHh5ceCwpoJB+vG7T/cJqFkwGAa6r0n3Hu2LFDCxcu1Ny5czV48ODS419++aVOnTql8PBwZWVladOmTVq2bJkkKSIiQkFBQVq/fr06d+581XPYbDa7zPryE+vVvFFUmWNn8k9Jkqp5Vy9z3NfLX2fOnbTLea2UnJyk1g+1t3oMAFB5P7ms9O84MzIyJElNmjQpPXb+/HmNGTNGkhQeHq6MjAwFBgbK09Oz9D4NGjTQwYPWXwr18fSTJJ0+W/bbv3nnTsjH6wYrRgIAl1bp33E2b95cXl5emjhxomJjY5Wdna1XX31VOTk5cnd3V4sWLbR79+5rOoe9vl91qS8H+Xr7q5Z/Xe37ZatCg1tIkn7N/klnzp1Uw9/dbpfzWikyMkols1zu+2kAKrBK/44zODhYixYtUmZmpnr27KlXXnlF48aNU0REhBo3biwfHx/VrVtXR44cUX5+funj0tPTVa9ePQsn/4/77nxcHyRN16/H03X63Em9u3KCWoV1Vu0b61s9GgC4HJf86yiX0qlTJ0VHR2v48OHavHmz7r//fh04cEBVq1Z12AyX++soRcVFmrtiglanJOh8Ub7uuLmjRt//TqX4e5z8dRQAFQ3h/JeffvpJAwcOVGZmpqpWraq33npLkZGRDp3hcuGszAgngIqm0n/GWV4NGzbUhg0brB4DAODkKv1nnAAA2BPhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMCAh9UDAI625wvp1FGrp3A8v1pS43usngKo+AgnXM6po9KJQ1ZPAaCi4lItAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAZcJpxJSUmKjo5WnTp15OXlpeDgYA0ZMkS5ublWjwYAqEBc5l8OSktLU9u2bTV06FD5+flp165diomJkSTNnTvX4ungLIqKizRv5UStTklQQeE5hd/cSaPun6Pq1QKsHg2Ak3CZcI4cObL0v4uLixUREaG0tDStW7fOwqngbBavf0mbd/5Tbzz9tW7wqamXP3xM0xMf1QtDPrN6NABOwiUu1RYVFWnhwoVq27atAgMD5e7uripVqmjWrFny9fWVJE2ePFlhYWFyc3PTkiVLLJ4YVlm55R31bT9Bv6vZUNW8q2to1xn6ds8qHck5aPVoAJyES4RzwIABGjp0qCIiIjR37lxt3rxZ33zzjfz8/NSsWTNJUpcuXbRq1Sq1a9fO+PltNptdbsnJSXZ+5c4vOTnJbvu71j3nnT2hoycydHNweOmxoIBG8vG6QfsPpzloI9ePFbvmxq0i3cqr0l+q3bFjhxYuXKi5c+dq8ODBpce//PJLnTp1SuHhF36TjIiIsGpEOIkz+ackSdW8q5c57uvlrzPnTloxEgAnVOnDmZGRIUlq0qRJ6bHz589rzJgxklQazmtRUlJyzc8hSSmLXe//3VVkZJRKZtlnf+V1uT37ePpJkk6fLftN67xzJ+TjdYMjRruurNg1UBlV+ku1zZs3l5eXlyZOnKjVq1crMTFRERERys7Olru7u1q0aGH1iHASvt7+quVfV/t+2Vp67Nfsn3Tm3Ek1/N3tFk4GwJlU+nAGBwdr0aJFyszMVM+ePfXKK69o3LhxioiIUOPGjeXj42P1iHAi9935uD5Imq5fj6fr9LmTenflBLUK66zaN9a3ejQATqLSX6qVpF69eqlXr15ljj344IMWTQNn1q/9ROWdydGI11vrfFG+7ri5oyY+vMDqsQA4EVuJvT6gq+BiY2M1f/58HTt2TL6+vvL29lZycrIaNWrksBlc8TNO/xCpVT/HntMV9yxZs2ugMqr0l2rLa+rUqTp06JDy8/OVnZ2tQ4cOOTSaAICKgXACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYMDD6gEAVF57vpBOHbV6CsfzqyU1vsfqKXC9EE4A182po9KJQ1ZPAdgXl2oBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMOAy4UxKSlJ0dLTq1KkjLy8vBQcHa8iQIcrNzbV6NABABeIy/3JQWlqa2rZtq6FDh8rPz0+7du1STEyMJGnu3LkWTwe4lqLiIs1bOVGrUxJUUHhO4Td30qj756h6tQCrRwOuymXCOXLkyNL/Li4uVkREhNLS0rRu3ToLpwJc0+L1L2nzzn/qjae/1g0+NfXyh49peuKjemHIZ1aPBlyVS1yqLSoq0sKFC9W2bVsFBgbK3d1dVapU0axZs+Tr66ucnBx169ZNYWFhat68uTp16qR9+/ZZPTZQaa3c8o76tp+g39VsqGre1TW06wx9u2eVjuQctHo04KpcIpwDBgzQ0KFDFRERoblz52rz5s365ptv5Ofnp2bNmslms2nUqFHau3ev0tLS1K1bNw0aNMjqsYFKKe/sCR09kaGbg8NLjwUFNJKP1w3afzjNwsmA8qn04dyxY4cWLlyoN954QzNmzFD37t111113qaCgQKdOnVJ4eLj8/f3VoUOH0sdEREQoPT293Oew2Wx2uSUnJ12HDTi35OQku+2PPV+Zs+z6TP4pSVI17+pljvt6+evMuZOOWMV1Z8WuuV37rbwqfTgzMjIkSU2aNCk9dv78eY0ZM0aSFB4eftFjZs6cqejoaIfMB7gaH08/SdLps2W/0Z537oR8vG6wYiTASKX/clDz5s3l5eWliRMnKjY2VtnZ2Xr11VeVk5Mjd3d3tWjRosz94+LitG/fPn3xxRflPkdJSYldZk1Z7Hr/vwsjI6NUMss++ysvV9yz5Dy79vX2Vy3/utr3y1aFBreQJP2a/ZPOnDuphr+73aHzXS9W7BqOU+nfcQYHB2vRokXKzMxUz5499corr2jcuHGKiIhQ48aN5ePjU3rfadOmafny5Vq1alWZ4wDs6747H9cHSdP16/F0nT53Uu+unKBWYZ1V+8b6Vo8GXFWlf8cpSb169VKvXr3KHHvwwQfL/DouLk4rV67UmjVr5O/v78DpANfTr/1E5Z3J0YjXW+t8Ub7uuLmjJj68wOqxgHJxiXBezc6dO/X888+rUaNGioqKKj2+fft2y2YCKjN3N3cN6/6yhnV/2epRAGOEU1LTpk3t9jklAKByq/SfcQIAYE+EEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADHlYPAAC4dnu+kE4dtXoKx/OrJTW+x7HnJJwAUAmcOiqdOGT1FK6BS7UAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGHCZcCYlJSk6Olp16tSRl5eXgoODNWTIEOXm5lo9GgBcN0XFRXpn+Tjd//xN6hHjp7i/9VHu6Syrx6rQXCacaWlpatu2rWbPnq3Vq1dr8uTJ+uc//6mxY8daPRoAXDeL17+kzTv/qTee/lqJz134p4WmJz5q8VQVm8v8k3sjR44s/e/i4mJFREQoLS1N69ats3AqALi+Vm55R490nKzf1WwoSRradYYGTA/VkZyDCqxRz+LpKiaXeMdZVFSkhQsXqm3btgoMDJS7u7uqVKmiWbNmydfXV5IUHR2t22+/XS1bttTvf/97rV271uKpAeDa5J09oaMnMnRzcHjpsaCARvLxukH7D6dZOFnF5hLhHDBggIYOHaqIiAjNnTtXmzdv1jfffCM/Pz81a9ZMkpSQkKDvvvtO27Zt05w5c9SnTx8VFRWV6/ltNptdbsnJSddxC84pOTnJbvtjz1fGrh3HWXZ9Jv+UJKmad/Uyx329/HXm3ElHrOK6s+euy6vSX6rdsWOHFi5cqLlz52rw4MGlx7/88kudOnVK4eEX/iTm7+9f+rPc3FzZbDaVlJQ4elwAsBsfTz9J0umzZb8EmXfuhHy8brBipEqh0r/jzMjIkCQ1adKk9Nj58+c1ZswYSSoNpyQ99dRTatiwofr06aOPP/5YHh7l+3NFSUmJXW6RkVH2e+EVRGRklN32x56vjF07jrPs2tfbX7X862rfL1tLj/2a/ZPOnDuphr+73YEbuX7suevyqvThbN68uby8vDRx4kStXr1aiYmJioiIUHZ2ttzd3dWiRYvS+7711lv66aeftHTpUo0bN055eXnWDQ4AdnDfnY/rg6Tp+vV4uk6fO6l3V05Qq7DOqn1jfatHq7AqfTiDg4O1aNEiZWZmqmfPnnrllVc0btw4RUREqHHjxvLx8bnoMZGRkXJzc9OXX35pwcQAYD/92k/Unbd014jXW+uhacEqLi7SxIcXWD1WhVbpP+OUpF69eqlXr15ljj344IOl/52Xl6fs7GzVq3fhq9nbtm3T/v37dcsttzh0TgCwN3c3dw3r/rKGdX/Z6lEqDZcI59WcPn1affv2VV5enjw8POTl5aUFCxaobt26Vo8GAHAyhFNSYGCgtmzZYvUYAIAKoNJ/xgkAgD0RTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADLhMOA8fPiybzabExESrRwEAVGAuE87U1FRJUuvWrS2eBABQkXlYPYCjpKamqkaNGgoNDbV6FCPrty/Wss1v6afDaTp3/ow+n15o9UgA4NJc5h1nSkqKWrVqpUWLFqlFixby8fFRixYttHbtWqtHuyJf7xrqftdwPdljptWjAADkYu843dzcNG/ePMXFxclms2ny5Mnq2bOndu/erTp16lg94iW1btxZkpS2P8naQQAAklwknIcPH1ZmZqbuvvturV69Wu7u7pKk0NBQNW3aVMuXL9eTTz5p8ZQAgIrAJS7VpqSkSJKmTZtWGk1JuvXWW+Xh4aGjR49Kkg4cOKDIyEiFhYWpWbNm2rhxY7me32az2eWWnJxk99fu7JKTk+y2P/Z8Zezacdi149hz1+XlEuFMTU1VYGCg2rVrV+Z4VlaWCgsLFRISIkkaNmyY+vbtq71792rOnDnq16+fCgoKrBgZAOCkXCacQUFBFx1PTEyUm5ubOnXqpKysLG3atEmDBw+WJEVERCgoKEjr16+/6vOXlJTY5RYZGWXvl+70IiOj7LY/9nxl7Npx2LXj2HPX5eUSn3GmpqYqPz9f+fn58vT0lCTl5OTopZde0iOPPKI6depo69atCgwMLP25JDVo0EAHDx60amxJUlFxkYqKzut84YV3vgXnz0mSqnh4Gl1aAADYR6UP5y+//KLMzEw1aNBA/fv317Bhw5SVlaVp06bJz89Pr7/+utUjXtHa1Pf18oeDSn/d9VlvSdL7k9JV+8b6Fk0FAK6r0ofz3/9i0CeffKIXX3xRvXr1kre3t3r37q34+Hj5+/tLkurWrasjR46UeVeanp6uevXqWTW6JKlz64Hq3HqgpTMAAP6j0oezR48epdeuFy9efNn7BQQEqE2bNpo3b56GDx+uzZs365dfflH79u0dNSoAoAKo9OE0MXv2bA0cOFAzZ85U1apVlZiYqKpVq1o9FgDAiRDO/9KwYUNt2LDB6jEAAE7MJf46CgAA9kI4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADDgMuE8fPiwbDabEhMTrR4FAFCBuUw4U1NTJUmtW7e2eBIAQEXmYfUAjpKamqoaNWooNDTU6lHgpNZvX6xlm9/ST4fTdO78GX0+vdDqkQA4IZd5x5mSkqJWrVpp0aJFatGihXx8fNSiRQutXbvW6tHgJHy9a6j7XcP1ZI+ZVo8CwIm51DtONzc3zZs3T3FxcbLZbJo8ebJ69uyp3bt3q06dOlaPCIu1btxZkpS2P8naQQA4NZcI5+HDh5WZmam7775bq1evlru7uyQpNDRUTZs21fLly/Xkk09aPCUAoCJwiUu1KSkpkqRp06aVRlOSbr31Vnl4eOjo0aOSpMmTJyssLExubm5asmRJuZ/fZrPZ5ZacnGTX110RJCcn2W1/7PnK2LXjsGvHseeuy8slwpmamqrAwEC1a9euzPGsrCwVFhYqJCREktSlSxetWrXqovsBAPBvLnGpNjU1VUFBQRcdT0xMlJubmzp16iRJioiI+E3PX1JSck3z/VvKYunEIbs8VYURGRmlkln22V95ueKeJXbtSOzacazYtcuEMz8/X/n5+fL09JQk5eTk6KWXXtIjjzzCF4MgSSoqLlJR0XmdLyyQJBWcPydJquLhaXQZB0DlVunD+csvvygzM1MNGjRQ//79NWzYMGVlZWnatGny8/PT66+/bvWIcBJrU9/Xyx8OKv1112e9JUnvT0pX7RvrWzQVAGdT6cP5738x6JNPPtGLL76oXr16ydvbW71791Z8fLz8/f2tHRBOo3PrgerceqDVYwBwcpU+nD169Cj9DHLx4sUWTwMAqOhc4lu15RUbG6uQkBB99dVXGjZsmEJCQrR//36rxwIAOBHC+V+mTp2qQ4cOKT8/X9nZ2Tp06JAaNWpk9VgAACdCOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMOAy4Tx8+LBsNpsSExOtHgUAUIG5TDhTU1MlSa1bt7Z4EgBAReZh9QCOkpqaqho1aig0NNTqUQCXt377Yi3b/JZ+Opymc+fP6PPphVaPBJSby7zjTElJUatWrbRo0SK1aNFCPj4+atGihdauXWv1aIDL8fWuoe53DdeTPWZaPQpgzKXecbq5uWnevHmKi4uTzWbT5MmT1bNnT+3evVt16tSxekTAZbRu3FmSlLY/ydpBgN/AJcJ5+PBhZWZm6u6779bq1avl7u4uSQoNDVXTpk21fPlyPfnkkxZPCQCoCFziUm1KSookadq0aaXRlKRbb71VHh4eOnr0qHJyctStWzeFhYWpefPm6tSpk/bt21eu57fZbHa5JScnXY+X79SSk5Pstj/2fGXs2nHYtePYc9fl5RLhTE1NVWBgoNq1a1fmeFZWlgoLCxUSEiKbzaZRo0Zp7969SktLU7du3TRo0CCLJgYAOCuXCWdQUNBFxxMTE+Xm5qZOnTrJ399fHTp0KP1ZRESE0tPTy/X8JSUldrlFRkbZ6yVXGJGRUXbbH3u+MnbtOOzacey56/Jyic84U1NTlZ+fr/z8fHl6ekqScnJy9NJLL+mRRx655BeDZs6cqejoaAdPCriGouIiFRWd1/nCAklSwflzkqQqHp5Gl8wAK1T6cP7yyy/KzMxUgwYN1L9/fw0bNkxZWVmaNm2a/Pz89Prrr1/0mLi4OO3bt09ffPGFBRMDld/a1Pf18of/+Sik67PekqT3J6Wr9o31LZoKKJ9KH85//4tBn3zyiV588UX16tVL3t7e6t27t+Lj4+Xv71/m/tOmTdPy5cu1Zs0a+fj4WDAxUPl1bj1QnVsPtHoM4Dep9OHs0aNH6bXrxYsXX/G+cXFxWrlypdasWXNRUAEAkFwgnOW1c+dOPf/882rUqJGioqJKj2/fvt2ymQAAzodw/kvTpk2NvlUFAHBNLvHXUQAAsBfCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABlwnn4cOHZbPZlJiYaPUoAIAKzGXCmZqaKklq3bq1xZMAACoyD6sHcJTU1FTVqFFDoaGhVo8CAA6zfvtiLdv8ln46nKZz58/o8+mFVo9U4bnMO86UlBS1atVKixYtUosWLeTj46MWLVpo7dq1Vo8GANeNr3cNdb9ruJ7sMdPqUSoNl3rH6ebmpnnz5ikuLk42m02TJ09Wz549tXv3btWpU8fqEQHA7lo37ixJStufZO0glYhLhPPw4cPKzMzU3XffrdWrV8vd3V2SFBoaqqZNm2r58uV68sknLZ4SAFARuMSl2pSUFEnStGnTSqMpSbfeeqs8PDx09OhRSVJ0dLRuv/12tWzZUr///e/LfRnXZrPZ5ZacnGT31+7skpOT7LY/9nxl7Npx2LXj2HPX5eUS7zhTU1MVGBiodu3alTmelZWlwsJChYSESJISEhLk7+8vSdq2bZuioqJ0/PjxMrEFALg2l3jHmZqaqqCgoIuOJyYmys3NTZ06dZKk0mhKUm5urmw2m0pKSq76/CUlJXa5RUZG2eslVxiRkVF22x97vjJ27Tjs2nHsuevycpl3nPn5+crPz5enp6ckKScnRy+99JIeeeSRMl8Meuqpp/TZZ58pNzdXH3/8sTw8XGJFACqpouIiFRWd1/nCAklSwflzkqQqHp5GlyfxH5W+Cr/88osyMzPVoEED9e/fX8OGDVNWVpamTZsmPz8/vf7662Xu/9Zbb0mSkpOTNXr0aG3YsEG+vr5WjA4A12xt6vt6+cNBpb/u+qy3JOn9SemqfWN9i6aq2Cp9OP/9LwZ98sknevHFF9WrVy95e3urd+/eio+PL3N59r9FRkbKzc1NX375pTp37uzAiQHAfjq3HqjOrQdaPUalUunD2aNHj9Jr14sXL77s/fLy8pSdna169epJuvDloP379+uWW25xyJwAgIqh0oezvE6fPq2+ffsqLy9PHh4e8vLy0oIFC1S3bl2rRwMAOBHC+S+BgYHasmWL1WMAAJycS/x1FAAA7IVwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBgwOXCuWzZMnXo0EH+/v7y8fFRs2bN9N5771k9lsM98kJ9rU1dIEnKPH5AHcfZdOzEod/8fMdOHFLHcTZlHj9w2fsMeClUn3+b8JvPAQDOwMPqARwpNjZW8fHxGjBggIYPHy5vb29t2rRJx48ft3q0y3p3xQR9vWu5jp34WV6evvpDk64a0nW6bvC5UZI0dlaUdh38Su7uVUofE9Win8Y+MPeaz300J0OPvthAzRq208tPrL/m5wOAysBlwrl06VJNmzZNCQkJGjBgQOnxe++918Kprs7NzV0TH1qg+rVvU97ZE5qx+E/6vw8GauqgZaX36d8hVv07xNj93Cu/matq3v5K25+kQ8f2KuSmMLufAwAqGpe5VBsbG6v27duXieZ/O3DggCIjIxUWFqZmzZpp48aNDp7w0gbf+4JCg1vKw72K/H1vUq+2I/Xd/qQrPiZtf5I6Tyj7Z6K/r35e4+d0KPd5i4qLtOqbeXqo/STVr32bVmx5p8zPj5/MVOz8HuoZW10Dp4fp2z2ryvy8sOi8Zi8boweer6UH42pr8frp5T43ADgzlwhnRkaGfvjhB/Xr1++y9xk2bJj69u2rvXv3as6cOerXr58KCgocOGX5bNu3Tg2Dml/383z9w3KdyDuqDuGPqkvrx7Qm9W8qKMwv/fmLif3lbnPXomcz9OqTG7Q6JaHM4xd/8ZK27FqumSM26/1n03Xk+AEdyTl43ecGgOvNJcJ5+PBhSVJwcPAlf56VlaVNmzZp8ODBkqSIiAgFBQVp/fryfa5ns9nscktOTrrieTZ+97GWb5mt4T1eL3N80bp4Rcf6l952HdxSrrmvZPnXc/SHW7qqhl+gOoQ/qjPnTmrT90slSVm5v2j7vi/0eLeXVc27um68obYe7fiXMo9fs/Xv6tt+goIDQuVZxVuPd39ZNpvtovMkJyfZbX/22nNlxa4dh107jj13XV4uEc6goCBJ0o4dOy7584yMDAUGBsrT07P0WIMGDXTwoPO8Q0pO+0ivLRmqKQOX6eaQO8r87OE/Pqd/TD1Rerul3p3XdK4jOQeVuudzdW79mCSperUA3dm0h1ZsmSNJOpZ74du3gTXqlT6m9o0NyjxH1olDCqxRv/TX3lWryd+31jXNBQDOwCW+HFS3bl21b99e8fHxcnd3V3h4uI4fP641a9aof//+qlat2jU9f0lJiV3mTFksXepvhKz6dr7e+XSspgz6VLc1aHPV5/H29FNxcZEKCvNV1ePCHwayTx4u9xyffT1XxSXFeu2jIZq55MKfrfLPn9GZ/FP6+egeBdxw4Z37kZyDCgpodOG//+evoQRUD9aRnP8cO1twWrl5xy46V2RklEpm2Wd/5XW5PVd27Npx2LXjWLFrl3jHKUkffvihHnnkEb355pvq0qWLnn76aWVnZ+vWW29V3bp1deTIEeXn/+czvPT0dNWrV+8Kz+gYn2z6q95Z/oxeHPp5uaIpSSEBYfL29L0QwOJi7UjfpI3fLSnXY4uKCvXZt/PUr/1EzRnznWaP3q7Zo7dr/vi9qlOriVZ8/Y5u8g9R80ZRenfFeJ0+d1I5p45owdopZZ6nwx2P6qOk/9PhrP3KP39W7y4fr+KSYuPXDwDOxiXecUpSQECA3n777cv+vE2bNpo3b56GDx+uzZs365dfflH79u0dOOGlvf3PkXJ389Azs8vO8ml83mUf4+Plp2cenK93V4zXvM8mqlXjLurYaoDSf/3+quf76odPlXcmR73bjVaN/7m02ufu0Xrvs2f12L0vaNLDi/TakqF6OL6OavgG6sGo8fo+/T/fRO53zySdPHtcf37zTrnZ3NW73egyl3YBoKKyldjrOmMF99NPP2ngwIHKzMxU1apV9dZbbykyMtKhM7jipRb/EKnV5b/sfF244p4ldu1I7NpxrNi1y7zjvJqGDRtqw4YNVo8BAHByLvMZJwAA9kA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADDgcuFctmyZOnToIH9/f/n4+KhZs2Z67733rB4LldgjL9TX2tQFkqTM4wfUcZxNx04c+s3Pd+zEIXUcZ1Pm8QOXvc+Al0L1+bcJv/kcAC7Pw+oBHCk2Nlbx8fEaMGCAhg8fLm9vb23atEnHjx+3erTLGvJyUx3JOVj66+LiIhUUntPbI1N1c8gdFk5W+by7YoK+3rVcx078LC9PX/2hSVcN6TpdN/jcKEkaOytKuw5+JXf3KqWPiWrRT2MfmHvN5z6ak6FHX2ygZg3b6eUn1l/z8wG4flwmnEuXLtW0adOUkJCgAQMGlB6/9957LZzq6uY+s7PMr9/77Dlt3vkPonkduLm5a+JDC1S/9m3KO3tCMxb/Sf/3wUBNHbSs9D79O8Sqf4cYu5975TdzVc3bX2n7k3To2F6F3BRm93MAsA+XuVQbGxur9u3bl4nmf5s8ebLCwsLk5uamJUuWOHi68ikqKtTn376nrncOs3qUSmnwvS8oNLilPNyryN/3JvVqO1Lf7U+64mPS9iep84Syf/78++rnNX5Oh3Kft6i4SKu+maeH2k9S/dq3acWWd8r8/PjJTMXO76GesdU1cHqYvt2zqszPC4vOa/ayMXrg+Vp6MK62Fq+fXu5zAzDnEuHMyMjQDz/8oH79+l32Pl26dNGqVavUrl07B05m5sud/9Dpc7nqGP4nq0dxCdv2rVPDoObX/Txf/7BcJ/KOqkP4o+rS+jGtSf2bCgrzS3/+YmJ/udvctejZDL365AatTkko8/jFX7ykLbuWa+aIzXr/2XQdOX6gzOV9APblEuE8fPiwJCk4OPiy94mIiFDDhg1/0/PbbDa73JKTk654nhVb5iiyeV/5evv/pjmdUXJykt32Z689S9LG7z7W8i2zNbzH62WOL1oXr+hY/9LbroNbrnkHy7+eoz/c0lU1/ALVIfxRnTl3Upu+XypJysr9Rdv3faHHu72sat7VdeMNtfVox7+UefyarX9X3/YTFBwQKs8q3nq8+8uy2WwXncdZd10ZsWvHseeuy8slwhkUFCRJ2rFjh8WT/HaHs/Zr27516nbXE1aPUuklp32k15YM1ZSByy76LPnhPz6nf0w9UXq7pd6d13SuIzkHlbrnc3Vu/ZgkqXq1AN3ZtIdWbJkjSTqWe+Hbt4E16pU+pvaNDco8R9aJQwqsUb/0195Vq8nft9Y1zQXg8lziy0F169ZV+/btFR8fL3d3d4WHh+v48eNas2aN+vfvr7vvvvuanr+kpMQuc6Ysli73txRWbJmjhr9rrlvq/sEu53IWkZFRKplln/2V15X2vOrb+Xrn07GaMuhT3dagzVWfy9vT71/fdM5XVQ9PSVL2ycPlnuWzr+equKRYr300RDOXXPhzbP75MzqTf0o/H92jgBsuXCU5knNQQQGNLvz3//w1lIDqwTqS859jZwtOKzfv2EXncrZdV2bs2nGs2LVLvOOUpA8//FCPPPKI3nzzTXXp0kVPP/20srOzdeutt1o92lWdLyzQ6pQEdbuTd5vX0yeb/qp3lj+jF4d+Xq5oSlJIQJi8PX0vBLC4WDvSN2njd+X7cllRUaE++3ae+rWfqDljvtPs0ds1e/R2zR+/V3VqNdGKr9/RTf4hat4oSu+uGK/T504q59QRLVg7pczzdLjjUX2U9H86nLVf+efP6t3l41VcUmz8+gGUj0u845SkgIAAvf3221aP8Zts2rFUBYXn9Mc7+ls9SqX29j9Hyt3NQ8/Mbl/m+KfxeZd9jI+Xn555cL7eXTFe8z6bqFaNu6hjqwFK//X7q57vqx8+Vd6ZHPVuN1o1/ufSap+7R+u9z57VY/e+oEkPL9JrS4bq4fg6quEbqAejxuv79I2l9+13zySdPHtcf37zTrnZ3NW73egyl3YB2JetxF7XGSu42NhYzZ8/X8eOHZOvr6+8vb2VnJysRo0aOWwGV7zU4h8itbr8l52vC1fcs8SuHYldO44Vu3aZS7VXM3XqVB06dEj5+fnKzs7WoUOHHBpNAEDFQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADDgcuFctmyZOnToIH9/f/n4+KhZs2Z67733rB4LgB088kJ9rU1dIEnKPH5AHcfZdOzEod/8fMdOHFLHcTZlHj9w2fsMeClUn3+b8JvPgYrHw+oBHCk2Nlbx8fEaMGCAhg8fLm9vb23atEnHjx+3ejQ4gSEvN9WRnIOlvy4uLlJB4Tm9PTJVN4fcYeFklc+7Kybo613LdezEz/Ly9NUfmnTVkK7TdYPPjZKksbOitOvgV3J3r1L6mKgW/TT2gbnXfO6jORl69MUGatawnV5+Yv01Px9cj8uEc+nSpZo2bZoSEhI0YMCA0uP33nuvhVPBmcx9ZmeZX7/32XPavPMfRPM6cHNz18SHFqh+7duUd/aEZiz+k/7vg4GaOmhZ6X36d4hV/w4xdj/3ym/mqpq3v9L2J+nQsb0KuSnM7udA5eYyl2pjY2PVvn37MtH8t5ycHHXr1k1hYWFq3ry5OnXqpH379lkwJZxFUVGhPv/2PXW9c5jVo1RKg+99QaHBLeXhXkX+vjepV9uR+m5/0hUfk7Y/SZ0nlP2z/t9XP6/xczqU+7xFxUVa9c08PdR+kurXvk0rtrxT5ufHT2Yqdn4P9YytroHTw/TtnlVlfl5YdF6zl43RA8/X0oNxtbV4/fRynxuVh0uEMyMjQz/88IP69et3yZ/bbDaNGjVKe/fuVVpamrp166ZBgwaV+/ltNptdbsnJSXZ6xRVHcnKS3fZnzz1/ufMfOn0uVx3D/3T9l+AgzrprSdq2b50aBjW/vguQ9PUPy3Ui76g6hD+qLq0f05rUv6mgML/05y8m9pe7zV2Lns3Qq09u0OqUhDKPX/zFS9qya7lmjtis959N15HjB8pc3v83Z951ZWPPXZeXS4Tz8OHDkqTg4OBL/tzf318dOvznT60RERFKT093yGxwTiu2zFFk877y9fa3epRKb+N3H2v5ltka3uP1MscXrYtXdKx/6W3XwS3XfK7lX8/RH27pqhp+geoQ/qjOnDupTd8vlSRl5f6i7fu+0OPdXlY17+q68YbaerTjX8o8fs3Wv6tv+wkKDgiVZxVvPd79ZaPfcFE5uEQ4g4KCJEk7duwo1/1nzpyp6Ojocj9/SUmJXW6RkVG/4dVVbJGRUXbbn732fDhrv7btW6dudz3hmCU4iDPuOjntI722ZKimDFx20WfJD//xOf1j6onS2y317rym138k56BS93yuzq0fkyRVrxagO5v20IotcyRJx3IvfPs2sEa90sfUvrFBmefIOnFIgTXql/7au2o1+fvWuuhczrjrysqeuy4vl/hyUN26ddW+fXvFx8fL3d1d4eHhOn78uNasWaP+/fvr7rvvLr1vXFyc9u3bpy+++MLCiWGlFVvmqOHvmuuWun+wepRKbdW38/XOp2M1ZdCnuq1Bm6ve39vT71/fdM5XVQ9PSVL2ycPlPt9nX89VcUmxXvtoiGYuufCeIf/8GZ3JP6Wfj+5RwA0XrkgdyTmooIBGF/77f/4aSkD1YB3J+c+xswWnlZt3rNwzoHJwiXeckvThhx/qkUce0ZtvvqkuXbro6aefVnZ2tm699dbS+0ybNk3Lly/XqlWr5OPjY+G0sMr5wgKtTklQtzsr17tNZ/PJpr/qneXP6MWhn5crmpIUEhAmb0/fCwEsLtaO9E3a+N2Scj22qKhQn307T/3aT9ScMd9p9ujtmj16u+aP36s6tZpoxdfv6Cb/EDVvFKV3V4zX6XMnlXPqiBasnVLmeTrc8ag+Svo/Hc7ar/zzZ/Xu8vEqLik2fv2o2FziHackBQQE6O23377sz+Pi4rRy5UqtWbNG/v7+jhsMTmXTjqUqKDynP97R3+pRKrW3/zlS7m4eemZ2+zLHP43Pu+xjfLz89MyD8/XuivGa99lEtWrcRR1bDVD6r99f9Xxf/fCp8s7kqHe70arxP5dW+9w9Wu999qweu/cFTXp4kV5bMlQPx9dRDd9APRg1Xt+nbyy9b797Junk2eP685t3ys3mrt7tRpe5tAvXYCsxubBbSe3cuVO33XabGjVqJF9f39Lj27dvd+gcKYula/hHTiok/xCp1aW/7HzduOKeJXbtSOzacazYtcu847ySpk2bGn0wDABwXS7zGScAAPZAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAw4HLhXLZsmTp06CB/f3/5+PioWbNmeu+996weCwAqlEdeqK+1qQskSZnHD6jjOJuOnTj0m5/v2IlD6jjOpszjBy57nwEvherzbxN+8znsxcPqARwpNjZW8fHxGjBggIYPHy5vb29t2rRJx48ft3o0wKUMebmpjuQcLP11cXGRCgrP6e2Rqbo55A4LJ6tc3l0xQV/vWq5jJ36Wl6ev/tCkq4Z0na4bfG4svc/YWVHadfArubtXKT0W1aKfxj4w95rPfzQnQ4++2EDNGrbTy0+sv+bncxYuE86lS5dq2rRpSkhI0IABA0qP33vvvRZOBbimuc/sLPPr9z57Tpt3/oNo2pmbm7smPrRA9WvfpryzJzRj8Z/0fx8M1NRBy8rcr3+HWPXvEGP386/8Zq6qefsrbX+SDh3bq5Cbwux+Diu4zKXa2NhYtW/fvkw0/1t0dLRuv/12tWzZUr///e+1du1aB08IuKaiokJ9/u176nrnMKtHqXQG3/uCQoNbysO9ivx9b1KvtiP13f6kqz4ubX+SOk8o+77q76uf1/g5Hcp97qLiIq36Zp4eaj9J9WvfphVb3inz8+MnMxU7v4d6xlbXwOlh+nbPqjI/Lyw6r9nLxuiB52vpwbjaWrx+ernPfb25xDvOjIwM/fDDDxo5cuRl75OQkCB/f39J0rZt2xQVFaXjx4/L3d3dQVMCrunLnf/Q6XO56hj+J6tHqfS27VunhkHNHXKur39YrhN5R9Uh/FG5ubkr8YsXNOjeeFX18JQkvZjYX9U8b9CiZzOUf/6sprx/f5nHL/7iJW3ZtVwzR2xWQPVgzV42pszlfSu5xDvOw4cPS5KCg4Mve59/R1OScnNzZbPZVFJSUq7nt9lsdrklJyddy8uskJKTk+y2P/Z8Zc666xVb5iiyeV/5evtf9x04ijPueuN3H2v5ltka3uP1i362aF28omP9S2+7Dm655h0s/3qO/nBLV9XwC1SH8Ed15txJbfp+qSQpK/cXbd/3hR7v9rKqeVfXjTfU1qMd/1Lm8Wu2/l19209QcECoPKt46/HuL8tms110HnvuurxcIpxBQUGSpB07dlzxfk899ZQaNmyoPn366OOPP5aHh0u8IQcsczhrv7btW6dudz1h9SiVWnLaR3ptyVBNGbjskp8jP/zH5/SPqSdKb7fUu/Oaznck56BS93yuzq0fkyRVrxagO5v20IotcyRJx3IvfPs2sEa90sfUvrFBmefIOnFIgTXql/7au2o1+fvWuqa57MUlylC3bl21b99e8fHxcnd3V3h4uI4fP641a9aof//+uvvuuyVJb731liQpOTlZo0eP1oYNG+Tr63vV5y/vO9OrSVksXcO3uSukyMgolcyyz/7KyxX3LDnnrldsmaOGv2uuW+r+wXFDOYAz7XrVt/P1zqdjNWXQp7qtQZtyPZe3p9+/vumcX3ppNfvk4XLP8tnXc1VcUqzXPhqimUsuvD/LP39GZ/JP6eejexRww4Wrf0dyDioooNGF//6fv4YSUD1YR3L+c+xswWnl5h276FxW7Nol3nFK0ocffqhHHnlEb775prp06aKnn35a2dnZuvXWWy+6b2RkpNzc3PTll19aMCngGs4XFmh1SoK63cm7zevlk01/1TvLn9GLQz8vdzQlKSQgTN6evhcCWFysHembtPG7JeV6bFFRoT77dp76tZ+oOWO+0+zR2zV79HbNH79XdWo10Yqv39FN/iFq3ihK764Yr9PnTirn1BEtWDulzPN0uONRfZT0fzqctV/558/q3eXjVVxSbPT6rxeXeMcpSQEBAXr77bcv+bO8vDxlZ2erXr0Llw22bdum/fv365ZbbnHkiIBL2bRjqQoKz+mPd/S3epRK6+1/jpS7m4eemd2+zPFP4/Ou+DgfLz898+B8vbtivOZ9NlGtGndRx1YDlP7r91c951c/fKq8Mznq3W60avzPpdU+d4/We589q8fufUGTHl6k15YM1cPxdVTDN1APRo3X9+kbS+/b755JOnn2uP785p1ys7mrd7vRZS7tWslWYq/rjBXYkSNH1LNnT+Xl5cnDw0NeXl6KjY1V165dHTqHK15C9A+RWvVz7Dldcc8Su3Ykdu04VuzaZd5xXklgYKC2bLn2b5EBACo/l/mMEwAAeyCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGCCcAAAYIJwAABggnAAAGPCwegBHW7Zsmf76178qJSVFBQUFatSokUaPHq3HHnvM6tEAwO6GvNxUR3IOlv66uLhIBYXn9PbIVN0ccoeFk1VcLhXO2NhYxcfHa8CAARo+fLi8vb21adMmHT9+3OrRAOC6mPvMzjK/fu+z57R55z+I5jVwmXAuXbpU06ZNU0JCggYMGFB6/N5777VwKgBwnKKiQn3+7Xvqd88kq0ep0FzmM87Y2Fi1b9++TDQv5Z133pHNZtOSJUscNBkAOMaXO/+h0+dy1TH8T1aPUqG5RDgzMjL0ww8/qF+/fle8348//qj58+frzjvvNHp+m81ml1tyctI1vMqKKTk5yW77Y89Xxq4dx1l3vWLLHEU27ytfb//rvgNHseeuy8slwnn48GFJUnBw8GXvU1hYqMcee0yzZs2Sp6eno0YDAIc4nLVf2/atU7e7nrB6lArPJcIZFBQkSdqxY8dl7zN16lTde++9atGihfHzl5SU2OUWGRn1G19hxRUZGWW3/bHnK2PXjuOMu16xZY4a/q65bqn7B8cswUHsuevycokvB9WtW1ft27dXfHy83N3dFR4eruPHj2vNmjXq37+/qlatqi+++EJJSUlWjwoAdne+sECrUxI0oPNUq0epFFwinJL04YcfavLkyXrzzTf166+/qmbNmmrTpo1uvfVWvfvuu9q/f78aNWokScrMzNQPP/yggwcPauzYsRZPDgDXZtOOpSooPKc/3tHf6lEqBVuJyftTFxEVFaURI0bo/vvvd+h5UxZLJw459JSW8w+RWl35O1t254p7lti1I7Frx7Fi1y7xGScAAPbiMpdqTfBZJwDgcnjHCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAHCCQCAAcIJAIABwgkAgAGnDWdSUpKio6NVp04deXl5KTg4WEOGDFFubq4kqaioSNWqVVNcXFyZxxUWFsrLy0vTp08vPZaeni5PT0+NHj26zH1feOEFValSRcuWLbv+LwgAUCl4WD3A5aSlpalt27YaOnSo/Pz8tGvXLsXExEiS5s6dq927d+vMmTNq2bJlmcft3LlT+fn5ZY43aNBAw4cP16xZszR27FiFhITo3XffVUxMjP72t7+pR48eDn1tpt777Dmt37ZIJ89kq6qHl5o1bKcnur+qWjXqWj1apcOuHYddOwZ7tj9bSUlJidVDXE1xcbGKi4v15z//WevWrdOePXv0/vvv609/+pMyMjJUp06d0vsmJCRo0KBBOnr0qG666abS49nZ2WrUqJEeeOABdenSRX379tUrr7yikSNHWvGSLillsXTi0MXHM47uVk2/36mad3WdKzijhFUx2pWxRa+P2Oz4Ie3MP0Rq1c+x57zcniV2bW/s2nFc8fcPyZpdO+Wl2qKiIi1cuFBt27ZVYGCg3N3dVaVKFc2aNUu+vr6SpK1bt6pmzZplovnv48HBwWWiKUk1a9bUpEmTlJCQoP79++vZZ58tE80DBw4oMjJSYWFhatasmTZu3Hj9X2g51a3VRNW8q0uSSlQim81NPx/bY/FUlRO7dhx27Rjs2f6c8lLtgAEDtHTpUo0YMUITJkxQQECAPDw89Mc//lHNmjWTdCGQ/3uZVpK2bdt2yeOS1LhxYxUWFio0NFRTpkwp87Nhw4apb9++Gj58uDZv3qwHHnhA6enpqlq1qv1f4G/wxbZFen3pkzpz7qTc3Tz0RPdXrR6p0mLXjsOuHYM925fTvePcsWOHFi5cqDfeeEMzZsxQ9+7dddddd6mgoECnTp1SeHi4pAufgf5vIE+ePKlvv/32kuHcvHmz+vfvr4iICO3evVvr1q0r/VlWVpY2bdqkwYMHS5IiIiIUFBSk9evXl2tmm81ml1tyctJlz3FPy4f1z6m5+iD2Vz3a6Xk1+F2zcs3m7JKTk+y2P3vsWWLX7PraOduuK+ueJfvuurycLpwZGRmSpCZNmpQeO3/+vMaMGSNJCg8P16lTp5Sbm6uQkJAyj505c+ZFXwySpO+//15du3ZV7969tWHDBrVo0ULjx4/Xvz/ezcjIUGBgoDw9PUsf06BBAx08ePC6vMZrceMNtXXfH4Yq5r1uOnnmuNXjVGrs2nHYtWOwZ/twunA2b95cXl5emjhxolavXq3ExERFREQoOztb7u7uatGihfz8/BQUFKQlS5bo559/1sGDBxUXF6e33npLksqE86efflLnzp3Vpk0bzZ8/X+7u7oqPj9fWrVuVmJhol5lLSkrscouMjCrX+YqKCnWu4LSyTx62y/xWioyMstv+7L1niV2z69/GmXddmfYs2XfX5eV04QwODtaiRYuUmZmpnj176pVXXtG4ceMUERGhxo0by8fHR5L0/vvvKysrSzfffLM6deokT09PDR48WP7+/qpfv74kKTMzUx07dlSjRo300UcfycPjwke69913n9q2bavnnntOBQUFqlu3ro4cOaL8/PzSOdLT01WvXj2Hv/7/VVxcrH98+aZy8o5Kko6dOKQ3P3lKtWvUV92bmlzl0TDBrh2HXTsGe74+KsRfR3GETp06KTo6uvTLQffff78OHDjg0C8HXerr5MXFxYqZ300//pyicwWnVc3bX80bRWlApykKCmjksNmuF2f62j67tj927Tiu+PuHZM2unfJbtVaYPXu2Bg4cqJkzZ6pq1apKTEx0im/Uurm56YXBK60ewyWwa8dh147Bnq8PwvkvDRs21IYNG6weAwDg5JzuM04AAJwZ4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMCA04YzKSlJ0dHRqlOnjry8vBQcHKwhQ4YoNzdXklRUVKRq1aopLi6uzOMKCwvl5eWl6dOnlx5LT0+Xp6enRo8eXea+L7zwgqpUqaJly5Zd/xd0jYqLizXyzQh1HGfTsROHrB6nUmPXjsOuHYdd24+H1QNcTlpamtq2bauhQ4fKz89Pu3btUkxMjCRp7ty52r17t86cOaOWLVuWedzOnTuVn59f5niDBg00fPhwzZo1S2PHjlVISIjeffddxcTE6G9/+5t69Ojh0Nf2W3y88TV5VvGxegyXwK4dh107Dru2H6d9xzly5Eg988wz6tq1q9q2bavBgwfrgQce0MaNGyVJW7dulaSLwrlt27ZLHo+JiZGXl5fi4uL08ccf68knn9Rrr72mRx991AGv5tocOrZXn25+W493e9nqUSo9du047Npx2LV9OWU4i4qKtHDhQrVt21aBgYFyd3dXlSpVNGvWLPn6+kq6EM6aNWuqTp06ZR67detWBQcH66abbipzvGbNmpo0aZISEhLUv39/Pfvssxo5cmTpzydPnqywsDC5ublpyZIl1/9FllNxcbFe/vAxPd7tZfl6+1s9TqXGrh2HXTsOu7Y/pwzngAEDNHToUEVERGju3LnavHmzvvnmG/n5+alZs2aSLgTyf99VShfecV7quCQ1btxYhYWFatCggaZMmVLmZ126dNGqVavUrl0743ltNptdbsnJSRc99yebXteNfrXVtlkv47kqguTkJLvt71r2LLFrdm0/7Npx7Lnr8nK6cO7YsUMLFy7UG2+8oRkzZqh79+666667VFBQoFOnTik8PFzShc9A/zeQJ0+e1LfffnvJcG7evFn9+/dXRESEdu/erXXr1pX5eUREhBo2bHj9Xthv8EvWPi3Z8IpGRL9p9SiVHrt2HHbtOOz6+nC6LwdlZGRIkpo0aVJ67Pz58xozZowkKTw8XKdOnVJubq5CQkLKPHbmzJkXfTFIkr7//nt17dpVvXv3VkJCglq1aqXx48crJSXF6E8Zl1NSUnLNzyFJKYul//6y2470TcrNO6ahr9z2r/MUS5KGvXq7BnaZph4Rw+1yXitFRkapZJZ99lde/7tniV1fL+zacdi14zhdOJs3by4vLy9NnDhRsbGxys7O1quvvqqcnBy5u7urRYsW8vHxUVBQkJYsWaJevXqpuLhYCQkJevvttyWV/WLQTz/9pM6dO6tNmzaaP3++3N3dFR8fr65duyoxMVEPP/ywVS/1qiKbP6g7bu5Q+utjuYc08s279OLQ1apbq8kVHglT7Npx2LXjsOvrw+ku1QYHB2vRokXKzMxUz5499corr2jcuHGKiIhQ48aN5eNz4evU77//vrKysnTzzTerU6dO8vT01ODBg+Xv76/69etLkjIzM9WxY0c1atRIH330kTw8Lvw54b777lPbtm313HPPqaCgwKqXelVeVX10k39I6e1Gv9qSpBv9asvb09fi6SoXdu047Npx2PX1YSux13XGSiIqKkojRozQ/fff7/BzX+pSS2XnHyK16ufYc7riniV27Ujs2nGs2LXTveO0SmxsrEJCQvTVV19p2LBhCgkJ0f79+60eCwDgZAjnv0ydOlWHDh1Sfn6+srOzdejQITVq1MjqsQAAToZwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYMBpw5mUlKTo6GjVqVNHXl5eCg4O1pAhQ5SbmytJKioqUrVq1RQXF1fmcYWFhfLy8tL06dNLj6Wnp8vT01OjR48uc98XXnhBVapU0bJly67/CwIAVAoeVg9wOWlpaWrbtq2GDh0qPz8/7dq1SzExMZKkuXPnavfu3Tpz5oxatmxZ5nE7d+5Ufn5+meMNGjTQ8OHDNWvWLI0dO1YhISF69913FRMTo7/97W/q0aOHQ1+biRmLB+qLbQtVxcOz9NjQrjPUI2K4hVNVTuzacdi1Y7Dn68Npwzly5MjS/y4uLlZERITS0tK0bt06SdLWrVsl6aJwbtu27ZLHY2JiNH/+fMXFxalLly568skn9dprr+nRRx+9ni/DLjq2GqCxD8y1egyXwK4dh107Bnu2P6e8VFtUVKSFCxeqbdu2CgwMlLu7u6pUqaJZs2bJ19dX0oVw1qxZU3Xq1Cnz2K1btyo4OFg33XRTmeM1a9bUpEmTlJCQoP79++vZZ58tjXNOTo66deumsLAwNW/eXJ06ddK+ffsc82IBABWKU77jHDBggJYuXaoRI0ZowoQJCggIkIeHh/74xz+qWbNmki4E8n/fVUoX3nFe6rgkNW7cWIWFhQoNDdWUKVNKj9tsNo0aNUodOnSQJP31r3/VoEGDtHHjxuvw6sxt+v5jffn9Ut1QLUARTXvq0Y5/kbenr9VjVUrs2nHYtWOwZ/tzunecO3bs0MKFC/XGG29oxowZ6t69u+666y4VFBTo1KlTCg8Pl3ThM9D/DeTJkyf17bffXjKcmzdvVv/+/RUREaHdu3eXXvKVJH9//9JoSlJERITS09PLPbPNZrPLLTk56aLnjm77tN4bt1tLns/S8wM+0Xc/JevVJUPLPZuzS05Ostv+rmXPErtm1/bjLLuu7HuW7Lvr8nK6cGZkZEiSmjRpUnrs/PnzGjNmjCQpPDxcp06dUm5urkJCQso8dubMmRd9MUiSvv/+e3Xt2lW9e/fWhg0b1KJFC40fP14lJSWXnGHmzJmKjo6246v67cJCwlXDL1Bubm6qX7upnuj+mjZ+t0QFhflWj1bpsGvHYdeOwZ6vD6cLZ/PmzeXl5aWJEydq9erVSkxMVEREhLKzs+Xu7q4WLVrIz89PQUFBWrJkiX7++WcdPHhQcXFxeuuttySV/WLQTz/9pM6dO6tNmzaaP3++3N3dFR8fr61btyoxMfGi88fFxWnfvn2aMWNGuWcuKSmxyy0yMuqq53Kzuf37pOWez5lFRkbZbX/23LPErtn1b+esu65se5bsu+vycrpwBgcHa9GiRcrMzFTPnj31yiuvaNy4cYqIiFDjxo3l4+MjSXr//feVlZWlm2++WZ06dZKnp6cGDx4sf39/1a9fX5KUmZmpjh07qlGjRvroo4/k4XHhI9377rtPbdu21XPPPaeCgoLSc0+bNk3Lly/XqlWrSs9jtfXbFyvv7AlJ0qFjP2rO8rG669YeqlrFy9rBKiF27Tjs2jHY8/VhKzHJbCUWFxenlStX6vPPP5e/v78lM6Qslk4cKnts7Kwopf/6nc4X5svft5ba3NZLj3Z6XtW8brBkRnvzD5Fa9XPsOS+1Z4ldXw/s2nFc8fcPyZpdE05d+EcTbrvtNjVq1Kj0r7tI0vbt2x06x+V+k6nMnOU3GFfArh2HXTuOFbt2yr+O4mhNmzY1ur4NAHBdTvcZJwAAzoxwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYIBwAgBggHACAGCAcAIAYMClwpmSkqLevXsrJCREnp6eCgkJUXR0tM6ePWv1aFe1de9aPf3Gner+nK/6/CVAf1063OqRAMAleVg9gKNs375dbdq0UZ8+fTRr1iz5+fkpPT1d69evl7e3t9XjXVHa/iRNef9+jXlgru68tbtUUqKDR36weiwAcEkuE84FCxaoZs2aWrRoUemxqKgoDRo0yMKpymfeyknqdtcTanf7/aXHbg65w8KJAMB1ucyl2lq1aunXX3/ViBEjtHXr1ot+fuDAAUVGRiosLEzNmjXTxo0bLZjyYmcLTmvPz9+oqKhQT868Q33+EqCxs6K05+cUq0cDAJfkMuEcNWqUpk6dqtWrVys8PFz16tVTfHy8iouLJUnDhg1T3759tXfvXs2ZM0f9+vVTQUFBuZ7bZrPZ5ZacnHTRc+edyVFxSbHWb0/UuAcTtDj2sMLDOilm3n3KO3vCjhuyRnJykt32dy17dgXs2nHYtePYc9fl5TLhrFq1qmJiYrR37179+OOP6tChg2JiYrRkyRJlZWVp06ZNGjx4sCQpIiJCQUFBWr9+vcVTSz6efpKkzq0HqWHQ7ariUVUP3TNJhcXntfPAZounAwDX4zLh/G+hoaGaOHGiJKmwsFAZGRkKDAyUp6dn6X0aNGiggwcPluv5SkpK7HKLjIy66LmreVdX7Rr1ZVPZPw3ZZPYnJGcVGRllt/1dy55dAbt2HHbtOPbcdXm5xJeDnnrqKZ0+fVodO3ZUSEiIMjIyNGPGDIWGhqpHjx7au3ev1SNeUfeI4fpk0+tq3/IhhQSEacmGV1XFw1NN60VYPRoAuByXCGeTJk30wQcfaMWKFTp16pTq1Kmj6OhoTZgwQb6+vqpbt66OHDmi/Pz80ned6enpqlevnsWTX/BA5DM6k39K42bfo4LCcwoNbqn4wZ+pmnd1q0cDAJfjEuF8+umn9fTTT1/25wEBAWrTpo3mzZun4cOHa/Pmzfrll1/Uvn17B055eTabTQM7T9HAzlOsHgUAXJ5LhLM8Zs+erYEDB2rmzJmqWrWqEhMTVbVqVavHAgA4GcL5Lw0bNtSGDRusHgMA4ORc8lu1AAD8VoQTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAAD/AMITsSvltUTOJ4rvmYAFRvhdCKN77F6AgDA1XCpFgAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADLhfOlJQU9e7dWyEhIfL09FRISIiio6N19uxZq0cDAFQAHlYP4Ejbt29XmzZt1KdPH82aNUt+fn5KT0/X+vXr5e3tbfV4cBJb967V/M9jdCBzh6p6eCmy+YP6c++3rR4LgJNwqXAuWLBANWvW1KJFi0qPRUVFadCgQRZOBWeStj9JU96/X2MemKs7b+0ulZTo4JEfrB4LgBNxqUu1tWrV0q+//qoRI0Zo69atF/188uTJCgsLk5ubm5YsWWLBhLDavJWT1O2uJ9Tu9vtV1cNTVat46eaQO6weC4ATcalwjho1SlOnTtXq1asVHh6uevXqKT4+XsXFxZKkLl26aNWqVWrXrp3Fk8IKZwtOa8/P36ioqFBPzrxDff4SoLGzorTn5xSrRwPgRFwqnFWrVlVMTIz27t2rH3/8UR06dFBMTEzpu8uIiAg1bNjQ+HltNhu3CnRLTk665P8c887kqLikWOu3J2rcgwlaHHtY4WGdFDPvPuWdPXEN/5vnHJKTk5xm15Udu3Yce+66vFwqnP8tNDRUEydOlCQVFhZaPA2cgY+nnySpc+tBahh0u6p4VNVD90xSYfF57Tyw2eLpADgLl/ly0FNPPaXTp0+rY8eOCgkJUUZGhmbMmKHQ0FD16NHjmp67pKTETlPCEVIWSycOXXy8mnd11a5RXzaV/ZOnTWZ/GnVWkZFRKpnl2P9dvdyuKzt27ThW7NplwtmkSRN98MEHWrFihU6dOqU6deooOjpaEyZMkK+vr9XjwUl0jxiuTza9rvYtH1JIQJiWbHhVVTw81bRehNWjAXASLhPOp59+Wk8//bTVY8DJPRD5jM7kn9K42feooPCcQoNbKn7wZ6rmXd3q0QA4CZcJZ3nExsZq/vz5OnbsmL7//nuNGjVKycnJatSokdWjwUFsNpsGdp6igZ2nWD0KACflsl8OupSpU6fq0KFDys/PV3Z2tg4dOkQ0AQBlEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADBBOAAAMEE4AAAwQTgAADPAvB8Hl+NWyegJruOrrBuyNcMLlNL7H6gkAVGRcqgUAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMCAy4UzJSVFvXv3VkhIiDw9PRUSEqLo6GidPXvW6tEAl7J171o9/cad6v6cr/r8JUB/XTrc6pGAcvGwegBH2r59u9q0aaM+ffpo1qxZ8vPzU3p6utavXy9vb2+rxwNcRtr+JE15/36NeWCu7ry1u1RSooNHfrB6LKBcXCqcCxYsUM2aNbVo0aLSY1FRURo0aJCFUwGuZ97KSep21xNqd/v9pcduDrnDwomA8nOpS7W1atXSr7/+qhEjRmjr1q1lfpaTk6Nu3bopLCxMzZs3V6dOnbRv3z6LJgUqr7MFp7Xn529UVFSoJ2feoT5/CdDYWVHa83OK1aMB5eJS4Rw1apSmTp2q1atXKzw8XPXq1VN8fLyKi4tls9k0atQo7d27V2lpaerWrVu534nabDZu3Lhd4pacnHTR/73knclRcUmx1m9P1LgHE7Q49rDCwzopZt59yjt7wr7/R2+R5OQkp9i1K7DnrsvLpcJZtWpVxcTEaO/evfrxxx/VoUMHxcTEaMmSJfL391eHDh1K7xsREaH09HQLpwUqJx9PP0lS59aD1DDodlXxqKqH7pmkwuLz2nlgs8XTAVfnUp9x/rfQ0FBNnDhR7733ngoLCy/6+cyZMxUdHV2u5yopKbHzdEDlkLJYOnGo7LFq3tVVu0Z92VT2T/g2mf2p35lFRkapZJZjf1+41K5dgRW7dplwPvXUUzp9+rQ6duyokJAQZWRkaMaMGQoNDVWPHj3K3DcuLk779u3TF198YdG0QOXWPWK4Ptn0utq3fEghAWFasuFVVfHwVNN6EVaPBlyVy4SzSZMm+uCDD7RixQqdOnVKderUUXR0tCZMmCBfX9/S+02bNk3Lly/XmjVr5OPjY+HEQOX1QOQzOpN/SuNm36OCwnMKDW6p+MGfqZp3datHA67KVsJ1xlJxcXFauXKlPv/8c/n7+1s9DlDhuerlQ/8QqVU/x56TXTuOy7zjvJqdO3fq+eefV6NGjRQVFVV6fPv27ZbNBABwPoTzX5o2bcqXfAAAV+VSfx0FAIBrRTgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADDAP4AA4Lrxq2X1BNZw1dftKggngOum8T1WTwDYH5dqAQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADBAOAEAMEA4AQAwQDgBADDgcuFMSUlR7969FRISIk9PT4WEhCg6Olpnz561ejQAQAXgYfUAjrR9+3a1adNGffr00axZs+Tn56f09HStX79e3t7eVo8HANfF1r1rNf/zGB3I3KGqHl6KbP6g/tz7bavHqrBcKpwLFixQzZo1tWjRotJjUVFRGjRokIVTAcD1k7Y/SVPev19jHpirO2/tLpWU6OCRH6weq0JzqUu1tWrV0q+//qoRI0Zo69atF/08Ojpat99+u1q2bKnf//73Wrt2rQVTAoD9zFs5Sd3uekLtbr9fVT08VbWKl24OucPqsSo0l3rHOWrUKBUUFOjvf/+73nrrLdWtW1ePP/64Jk2aJDc3NyUkJMjf31+StG3bNkVFRen48eNyd3e3dnAA+A3OFpzWnp+/UdP6bfTkzDt0NCdD9Wvfpse7vazGdVpZPV6F5VLvOKtWraqYmBjt3btXP/74ozp06KCYmBgtWbJEkkqjKUm5ubmy2WwqKSm56vPabDZu3Lhxs/SWnJx00e9NeWdyVFxSrPXbEzXuwQQtjj2s8LBOipl3n/LOnrDT76zWSk5OstsOy8ulwvnfQkNDNXHiRElSYWFh6fGnnnpKDRs2VJ8+ffTxxx/Lw8Ol3pQDqER8PP0kSZ1bD1LDoNtVxaOqHrpnkgqLz2vngc0WT1dxuUwVnnrqKZ0+fVodO3ZUSEiIMjIyNGPGDIWGhqpHjx6l93vrrbckScnJyRo9erQ2bNggX1/fKz53ed6VAsD1lLJYOnGo7LFq3tVVu0Z92VT23ZRNZu+wnFlkZJRKZjn292CXecfZpEkT7du3T6NGjVLnzp01ZcoUdenSRV999dUlwxgZGSk3Nzd9+eWXFkwLAPbRPWK4Pk+Zr4NHflBRUaE+TPo/VfHwVNN6EVaPVmHZSni7JEnKy8tTdna26tWrJ+nCl4PuuecepaWlqW7duhZPBwBXdql3nNKFK2J/W/0XrdzyjgoKzyk0uKWe6P6aQoNbOHzG68E/RGrVz7HndJlLtVdz+vRp9e3bV3l5efLw8JCXl5cWLFhANAFUaDabTQM7T9HAzlOsHqXSIJz/EhgYqC1btlg9BgDAybnMZ5wAANgD4QQAwADhBADAAOEEAMAA4QQAwADhBADAAOEEAMAA4QQAwAD/AAIAVAJ+tayewBpWvG7+rVoAAAxwqRYAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAADhBMAAAOEEwAAA4QTAAAD/w+CGg7Ot+sQmAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def nbit_addition(nbits, as_gate=True):\n", " a_qubits = QuantumRegister(nbits, name='a')\n", " b_qubits = QuantumRegister(nbits, name='b')\n", " c_qubits = QuantumRegister(nbits+1, name='c')\n", " aux_qubits = QuantumRegister(3, name='aux')\n", " s_qubits = QuantumRegister(nbits, name='s')\n", " qc = QuantumCircuit(a_qubits, b_qubits, c_qubits, aux_qubits, s_qubits)\n", " \n", " for k in range(nbits):\n", " qc.append(full_adder(), [a_qubits[k], b_qubits[k], c_qubits[k], aux_qubits[0], aux_qubits[1], aux_qubits[2], s_qubits[k], c_qubits[k+1]])\n", " \n", "\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"Addition\"\n", " return U_s\n", " else:\n", " return qc\n", "\n", "nbit_addition(4,as_gate=False).draw()" ] }, { "cell_type": "markdown", "id": "f6453857-b2ae-4d53-8d80-a2df0d2d93fa", "metadata": {}, "source": [ "Let's now calculate 13 (1101) + 6 (0110) = 19 (1 0011)" ] }, { "cell_type": "code", "execution_count": 10, "id": "d9d52ed0-2aea-43fb-aa1d-2ddc6b8aeb00", "metadata": {}, "outputs": [ { "data": { "image/png": "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xsbKw8NDKSkpGjBgAGVaRHGVr6QyZcro0KFDevrpp7Vu3bos05KTk9W6dWtVq1ZNdevWVfPmzbVjxw6LkhY9kaFddPb8KW1KWKGMjAxt3LVM+5O2q36NllZHAzK1bt1avXr10rlz59S8efMcy/SSWrVqad68efLw8NDRo0fl7u6ucePG3eC0sAqFqos/2fTGG29o0aJFCgsLU4UKFTRixAhlZGTIZrNp4MCB2r59u+Lj49W6detc77nabDanGmJjY/L83JfwKaPGdTpp0CdNdd+L7vrPJ031WPNoVSp3a57XVZDExsZY/npc8u/bBXmwOvPlLhKy2+2ZJfjSSy8pLi4uV38D/7wAacGCBbrtttt09OhRNWvWTA8++OBl/mZiLX/+C8Ngxd9IblGoktzd3TV06FBt375df/75p5o1a6ahQ4dq1qxZ8vPzU7NmzTLnDQ8PV0JCgoVpi5apS97Qz+un6+NnN2jBqFR98my85vzyrn5cPdHqaIAkqU2bNgoJCdG2bdv0/vvv52qZf5dpVFSU9u/fr1dffVWS9NRTT93IyLAIhfovVatW1ZAhQyRJaWlp2aaPHTtWUVFRuVqXw+FwqiEiIjLPz/efB9aq4a3tVaFsTdlsNlUsV0vht0Zp1R/f5XldBUlERKTlr8cl/75dkAerM0dERGR7LR999FFJF8+hZmRk5PjaX65ML50znTJlik6fPq0mTZooJCTkX38zEZY//4VhsOJvJLecvlCfeuopde/eXdOmTVNsbKymTJmiDh06qGrVqmrbtm2WeaOjo7Vjxw69+eabFqUtnNIz0pWSel6paSmSpJTU80pJPS+Hw6FaFRtq5eZvtP/on5KkPYe3aOWmb3RzYJiVkYFMt99+uyTpxx9/zHHeq5WpJJ05c0bLli2TJDVo0ODGBIZlnP4q3xo1aujLL7/U999/r9OnTys4OFhRUVEaPHiwfHx8MucbPny45s+fr8WLF8vb29vCxIXPkrVTNOarv887t3rp4keRpryYoAcjBumv8yc15LN7dfKvJPl6l1STOg+oy91DrIoLZPLz81NQUJD++usv/fnnn1edN6cyvWT9+vW6//77VadOHc2ePftGRYcFnL5Q+/fvr/79+191nujoaP3www9avHix/Pz88idYEdKiQXe1aND9itN73T9Kve4flX+BgDz4+OOPde7cuase+vPy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vtO9994rPz8/BQQEKCkpSc8884wefPBB3XzzxW8W+frrr3Xu3Dm1aNEixyy5eVfjcDj08bR5OnHqjAY90UWurgX3s2sAYDUO+eaCp6en6tevr88//1x79uyRJFWpUkXjxo1T3759c72ekJAQjRgxQoMHD9aWLVsUEBCgjz76SL17977qcuPHj9ezzz6rVq1aKSUlRa+++qr69eunihUr6r333tP+/fvl5uamW265RV999ZXuv//+63q8l1z63GlU80aUKQAUYgXqYzPOKCUlVWs2btMddW+hUAEgB+yh4orc3d3UMOxWq2MAAK5ToSjUjIyMq34m1WazyV6AvzcTAFD0FdirfP/p8ccfl5ub2xWHKlWqWB0RAODkCsUe6muvvaann376itML4q/GAACcS6Eo1IoVK6pixYpWxwAA4IoKxSFfAAAKOgoVAAADKFQAAAygUAEAMIBCBQDAAAoVAAADKFQAAAygUAEAMIBCBQDAAAoVAAADKFQAAAygUAEAMIBCBQDAAAoVAAADKFQAAAygUAEAMIBCBQDAAAoVAAADKFQAAAygUAEAMIBCtciAAQMUFBQkV1dXq6MAgFOIiYlRrVq1VLVqVfXq1Uvp6elG10+hWuSBBx5QXFyc1TEAwClkZGSoV69e+vrrr7Vjxw6dOnVKU6dONboNCtUijRo1Urly5ayOAQBOYc2aNQoICFDNmjUlST179tTs2bONboNCBQAUefv371dwcHDm/ZCQEO3bt8/oNjiBBwAosFat/0O/bdiSbfx7k2Znux1YrpQ6tmwim82WbX6Hw3HjQv4Pe6gAgALrtlurKS0tTYeOHNOhI8cyx//79tHjJ9Tk9rqXLVNJCg4OzrJHunfvXgUFBRnNSqECAAosdzdXdW59t1xcLl+Ul9wXcYfK+PtdcXr9+vW1f/9+/fHHH5KkiRMnqkOHDiajOlehTp48WTabTZs2bcpxXpvNptdeey3z/qxZszR27FhjWfr06aOgoCClp6crKChITz31lLF1A0BRElS+tO4Ov+2K06tWCNRdYbWuug673a4JEyaoU6dOqlKlinx8fPToo48azck51Cv49ddfsxwOmDVrllatWqWBAwcaWf8nn3xyxWkOh+OKhy0AwBk1vauetu3cq32HjmYZ7+nhrgfuj5BLLv7PvPvuuzP3UG8Ep9pDzYs777zT+PH13Fr4yxp99X2MMvLhJDoAFAZ2Fxc92Lqp3FztWcZHNW+k4jf5WJQqq0JXqBs3blTHjh1VqlQpeXp66uabb9bLL7+cp3UcOXJEDz74oG666SYVL15cjz32mJKTk7PM889Dvt27d9eXX36pPXv2yGazyWazqWLFioYeUVZn/jqnFWs3yeHIyNU7LgBwFqVL+qnV3Xdl3q9To7JCa1a1MFFWheqQ79q1a9WkSRMFBwfrrbfeUoUKFZSQkKCVK1fmaT3dunVTVFSUZs2apc2bN2vYsGFKSEhQbGysXFyyv8cYNmyYDhw4oE2bNmnu3LmSJA8PDyOP6d9+WR2vtLR03X3Xlc8XAICzuiP0Fv3x5x4lHj2mqOaNrI6TRaEq1Oeff17FihXTb7/9puLFi2eO79mzZ57WExkZqQ8++ECS1Lx5c5UsWVLdu3fXwoULdd9992Wbv0qVKvL395eHh4fuvPPOXG9nyOhP85Trn96e8NU1LwsAzuD19/+bL9sZNfiJXM1XaA75nj17VsuWLdNDDz2UpUyvRZcuXbLc79y5s2w2m2JjY69rvQAA51Vo9lCTk5OVkZFh5EKhf3+Hrqenp2666SYdO3bsCktcm9y+q5Eunjsd/ckM3Vqtojq3vttoDgDAjVdoCrVEiRJycXHRgQMHrntdiYmJWe6fP39ep06dkr+//3Wv+5+u5ZDv+s07tH7zDqM5AADXrsgd8vX29laTJk00Y8YMnTp16rrWNXPmzCz3v/zySzkcDkVERFxxGQ8PD507d+66tgsAKLoKzR6qJI0ZM0ZNmjTRnXfeqRdeeEEVKlTQ3r17tWzZMk2YMCHX64mNjVX//v3Vpk0b/fHHHxo6dKgaNWqkFi1aXHGZmjVr6r///a8+/fRT1atXT56enqpdu/ZVt5PbdzU/LF2lZWs26rmeD6j0Vb46CwBQcBWqQg0LC9Ovv/6qYcOG6dlnn9X58+cVHByc7SKjnEyePFkff/yxOnXqJJvNpg4dOmjs2LGX/cjMJX379lVcXJxeeOEFnTx5UhUqVNDu3buv8xFdPHf66/o/FFqzCmUKAIWYzZEfv2mDK9pz4LBmfvezHn/gPgoVAAoxCrUAyMjIuOreMQCg4CsShepwOJSenn7Veex2O184DwC4YYrEblFsbKzc3NyuOvClDQCAG6lI7KGePn1a27Ztu+o81atXl6+vbz4lAgA4myJRqAAAWK1IHPIFAMBqFCoAAAZQqAAAGEChAgBgAIUKAIABFCoAAAZQqAAAGEChAgBgAIUKAIABFCoAAAZQqAAAGEChAgBgAIUKAIABFCoAAAZQqAAAGEChAgBgAIUKAIABFCoAAAZQqAAAGEChAgBgAIUKAIABFCoAAAZQqAAAGEChAgBgwP8Dk0crKofk0dIAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbits = 4;\n", "a_qubits = QuantumRegister(nbits, name='a')\n", "b_qubits = QuantumRegister(nbits, name='b')\n", "c_qubits = QuantumRegister(nbits+1, name='c')\n", "aux_qubits = QuantumRegister(3, name='aux')\n", "s_qubits = QuantumRegister(nbits, name='s')\n", "\n", "s_bits = ClassicalRegister(nbits, name='s_bits')\n", "c_bit = ClassicalRegister(1, name='c_bit')\n", "\n", "\n", "qc = QuantumCircuit(a_qubits, b_qubits, c_qubits, aux_qubits, s_qubits, s_bits, c_bit)\n", "\n", "#initiate the 13 (reverse order!)\n", "qc.x(a_qubits[3])\n", "qc.x(a_qubits[2])\n", "qc.x(a_qubits[0])\n", "\n", "#initiate the 6 (reverse order!)\n", "qc.x(b_qubits[2])\n", "qc.x(b_qubits[1])\n", "\n", "\n", "#this seems like a rather unelegant way to compile the list of qubits but it's the inly way I found that would work\n", "qlist = []\n", "for qubit in a_qubits:\n", " qlist.append(qubit)\n", "for qubit in b_qubits:\n", " qlist.append(qubit)\n", "for qubit in c_qubits:\n", " qlist.append(qubit)\n", "for qubit in aux_qubits:\n", " qlist.append(qubit)\n", "for qubit in s_qubits:\n", " qlist.append(qubit)\n", "qc.append(nbit_addition(4), qlist)\n", "#this seems like the more eleqgant solution but does not work\n", "#qc.append(nbit_addition(4), [a_qubits, b_qubits, c_qubits, aux_qubits, s_qubits])\n", "\n", "\n", "qc.measure(s_qubits, s_bits)\n", "qc.measure(c_qubits[nbits], c_bit)\n", "\n", "qc.draw()\n" ] }, { "cell_type": "markdown", "id": "e0eee6b6-a870-4b8a-83ec-0f6f0a80434a", "metadata": {}, "source": [ "Let's try this out" ] }, { "cell_type": "code", "execution_count": 11, "id": "5c490b38-b8bf-47c4-b709-7b5ad1699343", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{19: 1}\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAE6CAYAAAB00gm8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAZdElEQVR4nO3df5BdZZ3n8fcXIiAmKIQhpNMghlC4k4iAVwewgWiZZYAqRLAGKTRmUbLElYiUM6O7ykxc1Fl1WFidrEPPFhB0ZxlxR9cxQBiljQWhsZOZKOomqQWjhKRDJBodQgLxu3+c25lr0z+em9x0X9LvV9Wtvvd5nvPc7/kDPjn3nPOcyEwkSdLoDhnvAiRJeqkwNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQpPGu4DxdOyxx+ZJJ5003mVIktrI6tWrt2Xm7w3VN6FD86STTqKvr2+8y5AktZGI2Dhcnz/PSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZrSQejqq6/muOOOY86cOUP2ZyaLFy9m1qxZnHbaaaxZs2Zv35133skpp5zCKaecwp133rm3ffXq1bzuda9j1qxZLF68mMw84PshtRtDUzoILViwgPvuu2/Y/nvvvZcNGzawYcMGbrvtNhYtWgTAM888w5IlS+jt7eXRRx9lyZIlbN++HYBFixbR3d29d7uR5pcOVoamdBA677zzOOaYY4bt/8Y3vsH8+fOJCM466yx++ctfsnnzZu6//37mzZvHMcccw9FHH828efO477772Lx5Mzt27OCss84iIpg/fz5f//rXx26HpDZhaEoT0KZNmzjhhBP2fu7s7GTTpk0jtnd2dr6oXZpoDE1JkgoZmtIENGPGDH7+85/v/fzkk08yY8aMEduffPLJF7VLE42hKU1Al1xyCcuWLSMzeeSRR3jlK1/J9OnTueCCC1ixYgXbt29n+/btrFixggsuuIDp06dz1FFH8cgjj5CZLFu2jLe//e3jvRvSmJs03gVIar0rr7ySnp4etm3bRmdnJ0uWLOH5558H4Nprr+Wiiy5i+fLlzJo1iyOPPJLbb78dgGOOOYZPfOITvPGNbwTgxhtv3HtB0dKlS1mwYAE7d+7kwgsv5MILLxyfnZPGUUzke61qtVr29fWNdxmSpDYSEaszszZUnz/PSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqNKahGRHnRcT/iYhNEZERsaBgm9dFxHcjYmd9uxsjIgaNuTwifhwRu+p/33HAdkKSNGGN9ZHmZOAx4EPAztEGR8RRwANAP/DG+nZ/DNzQMOZs4G7gK8Dp9b9fjYg/aHHtkqQJbkzXns3M5cBygIi4o2CTq4Ajgfdm5k7gsYh4LXBDRNyc1RqA1wMPZuan6tt8KiLeUm+/srV7IEmayNr9nObZwPfqgTngfqADOKlhzIpB290PnHPAq5MkTSjt/pST44EnB7X1N/Q9Uf/bP8SY44eaMCIWAgsBOjo66OnpAWDmzJlMmTKFtWvXAjB16lRmz57NypUrAZg0aRJdXV2sWbOGHTt2AFCr1ejv7+cvvnny/uyjJKkFPnnFZtatWwdUz4zt7Oykt7cXgMmTJ1Or1Vi1ahW7du0CoKuri/Xr17N161YA5syZs7dvOOP2lJOI+A3wwcy8Y4QxK4AnM/PqhrYTgY3AOZm5KiJ2A+/PzGUNY+YD3Zl5+Eg1tOopJ9fcst9TSJL2U/f1rZnnpfyUky3AtEFt0xr6RhqzBUmSWqjdQ3MVcG5EHNHQNg94Cvhpw5h5g7abBzx8wKuTJE0oY32f5uSIOD0iTq9/94n1zyfW+z8TEd9u2OR/As8Cd0TEnIi4DPgoMHDlLMCtwFsj4qMR8dqI+BjwFuCWMdotSdIEMdZHmjXgn+qvlwNL6u8/We+fDuy9qiYzf0V11NgB9AF/BfwlcHPDmIeBdwELgB8A84ErMrP3wO6KJGmiGev7NHuAGKF/wRBtPwTOG2Xee4B79rM8SZJG1O7nNCVJahuGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVaio0I+KQiDik4fPxEfH+iHhz60uTJKm9NHuk+S3gOoCImAz0AZ8DeiJifotrkySprTQbmjXgO/X3lwE7gOOAa4CPlEwQER+IiCci4rmIWB0R544w9o6IyCFe/9IwZu4wY17b5L5JkjSiZkNzMvDL+vt/C/x9Zj5PFaQnj7ZxRFwB3Ap8GjgDeBi4NyJOHGaTDwHTB70eB/5uiLGzB43bULRHkiQVajY0fwa8OSJeAVwAPFBvPwZ4tmD7G4A7MrM7M3+SmdcBm4FFQw3OzF9l5paBF1UwzwS6hxi+tXFsZu5pct8kSRrRpCbH3wzcBfwG2AisrLefB/xwpA0j4jDgDcDnB3WtAM4p/P5rgB9l5sND9PVFxOHAj4GbMvPBYepYCCwE6OjooKenB4CZM2cyZcoU1q5dC8DUqVOZPXs2K1dWuzhp0iS6urpYs2YNO3bsAKBWq9Hf30/BQbYk6QDbvHkz69atA2DGjBl0dnbS29sLwOTJk6nVaqxatYpdu3YB0NXVxfr169m6dSsAc+bM2ds3nMjMpoqKiBpwAvBAZv6m3nYx8MvMfGiE7TqATcD5mbmyof1G4KrMPHWU730l1VHpxzLz1ob2U4G3AN8HDgPeA1xb/57vjTRnrVbLvr6+kYYUueaW/Z5CkrSfuq9vzTwRsToza0P1NXukSWb2UV0129j2rX2srRnvpvo5+a5B370OWNfQtCoiTgL+GBgxNCVJakbTixvUr379UUQ8GxEz621/GhF/NMqm24A9wLRB7dOALQVffQ3wtcx8pmBsL3BKwThJkoo1u7jB9cDHgduAaOh6CvjgSNtm5m5gNTBvUNc8qqtoR/reNwGvZ+gLgIZyOtVPuZIktUyzP89eC1yTmd+KiJsa2tdQ3fIxmpuBuyLiUeCh+nwdwJcAImIZQGYOXihhIbAhM3sGT1gP8p8CP6I6p/lu4FLg8sJ9kiSpSLOh+WrgsSHanwdePtrGmXl3REylOlqdXp/roszcWB/yovs1I2IK8C7gk8NMexjVqkSdwE6q8Lw4M5ePVo8kSc1oNjQfB86kut2k0UVUt3qMKjOXAkuH6Zs7RNuvqRZVGG6+zwKfLfluSZL2R7Oh+XngixFxJNU5zbMj4j3AnwBXt7o4SZLaSVOhmZm3R8QkqmXwjqS6/eMpYHFm3n0A6pMkqW3sy32a3UB3RBwLHJKZW1tfliRJ7afp0ByQmdtaWYgkSe1u1NCMiB9QLUm3PSJ+CAy77l5mntbK4iRJaiclR5pfA3Y1vG9usVpJkg4So4ZmZi5peP/nB7QaSZLaWLPL6H0nIl41RPtREfGdllUlSVIbanbB9rlUK/AMdgRw7n5XI0lSGyu6ejYizmz4eFpEND5p5FDgAqpnZUqSdNAqveWkj+oCoARWDNG/E7iuVUVJktSOSkPzNVTL5j0OvAl4uqFvN7A1M/e0uDZJktpKUWg2PIWk6YdWS5J0sChZ3OAy4JuZ+Xz9/bAy83+3rDJJktpMyZHmPcDxwNb6++Ek1UVBkiQdlEoWNzhkqPeSJE00hqAkSYVKz2kW8ZymJOlgVnpOs4TnNCVJB7WmzmlKkjSRGYiSJBXyPk1Jkgp5n6YkSYW8T1OSpEKGoCRJhZoOzYg4MyKWRURf/XXXoOdtSpJ0UGoqNCPiKuD7wHRgef01DXg0It7d+vIkSWofpc/THPAp4BOZ+enGxoj4GHAT8OVWFSZJUrtp9ufZ3wP+boj2rwLH7X85kiS1r2ZD80Fg7hDtc4Hv7m8xkiS1s2YXbL8X+ExE1IBH6m1nAZcBf97y6iRJaiP7umD7wvqr0ReApftdkSRJbcoF2yVJKmQgSpJUqNlbToiIo4ELgROBwxr7MvOTLapLkqS201RoRsRZwLeAXVS3n2yiWuhgF/BTwNCUJB20mv159nPAV4AZwHPAW6mOOPuA/9La0iRJai/NhuZpwBczM4E9wOGZ2Q/8Kd5yIkk6yDUbmrsb3vcDr66//w3Q0ZKKJElqU81eCLQGeCOwHugBboqIacC7gR+0tjRJktpLs0ea/wl4qv7+48DTVIsaHM2LFzuQJOmg0tSRZmb2Nbx/murWE0mSJoSm79MEiIiTgX9T//jjzHy8dSVJktSemr1PcyrwP4BLgN/+a3P8A3B1Zv6ixfVJktQ2mj2n+TfALOBc4Ij66zzgNUB3a0uTJKm9NBuaFwDXZOZDmflC/fUQ8O/rfaOKiA9ExBMR8VxErI6Ic0cYOzcicojXaweNuzwifhwRu+p/39HkfkmSNKpmQ/Np4F+GaH8WGPWn2Yi4ArgV+DRwBvAwcG9EnDjKprOplusbeG1omPNs4G6qlYpOr//9akT8wWj1SJLUjGZD85PALRExY6Ch/v4vKVt39gbgjszszsyfZOZ1wGZg0Sjbbc3MLQ2vPQ191wMPZuan6nN+iuoe0uuL90qSpAKjXggUET8EsqHpNcBPI2JT/fPAOrTHUZ3zHG6ew4A3AJ8f1LUCOGeUMvoi4nDgx8BNmflgQ9/ZVPeKNrof+OAoc0qS1JSSq2fvadF3HQscSrX8XqN+4G3DbDNwFPp9qseQvQf4dkScn5nfq485fpg5jx9qwohYSH0hho6ODnp6egCYOXMmU6ZMYe3atQBMnTqV2bNns3LlSgAmTZpEV1cXa9asYceOHQDUajX6+/uBk0fdeUnSgbV582bWrVsHwIwZM+js7KS3txeAyZMnU6vVWLVqFbt27QKgq6uL9evXs3XrVgDmzJmzt284Ua29fuBFRAfVo8TOz8yVDe03Aldl5qmF8ywHXsjMS+qfdwPvz8xlDWPmA92ZefhIc9Vqtezr6xtpSJFrbtnvKSRJ+6n7+tbMExGrM7M2VN++Lm7wVuD3qX62/VFm9hRsto3qySjTBrVPA7Y08fW9wLsaPm9pwZySJI2qqQuBImJGRDwKPED1OLCPUv1c2ls/khxWZu4GVgPzBnXNo7qKttTpVD/bDljVgjklSRpVs0ea/43qaHFWZj4BEBEzgS/X+945yvY3A3fVg/ch4FqqR4p9qT7XMoDMnF//fD3wU+BHVOc03w1cClzeMOetwMqI+CjwdeAdwFuArib3TZKkETUbmvOAuQOBCZCZj0fEYuDbo22cmXfXl+L7ONX9lo8BF2XmxvqQwfdrHgZ8DugEdlKF58WZubxhzocj4l3ATVS3vfw/4IrM7G1y3yRJGtG+nNMc6sqh4quJMnMpsHSYvrmDPn8W+GzBnPfQuqt8JUkaUrOLG3wb+EJEnDDQUF/N5xYKjjQlSXopazY0FwOvAB6PiI0RsZHq59BX1PskSTpoNfvz7C+ANwFzgYFF03+Smf/YyqIkSWpHxaEZEYcCvwJen5kPUN12IknShFH882x9kfSNVFe0SpI04TR7TvM/A38REcceiGIkSWpnzZ7T/AjVU042RcSTDHq2Zmae1qrCJElqN82G5j1U92TGAahFkqS2VhSaEXEk1co8lwIvo7on87rM3HbgSpMkqb2UntNcAiwAvgX8LdXzL//7AapJkqS2VPrz7GXA+zLzfwFExFeAhyLi0PpVtZIkHfRKjzRPAL438CEzHwVeoHpCiSRJE0JpaB4K7B7U9gL7+BBrSZJeikpDL4AvR8SuhrYjgO6IeHagITMvaWVxkiS1k9LQvHOIti+3shBJktpdUWhm5r870IVIktTuml1GT5KkCcvQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKjXloRsQHIuKJiHguIlZHxLkjjL0sIlZExNMR8euI6I2ISwaNWRAROcTriAO/N5KkiWRMQzMirgBuBT4NnAE8DNwbEScOs8n5wHeAi+vjlwN/P0TQPgtMb3xl5nOt3wNJ0kQ2aYy/7wbgjszsrn++LiL+EFgEfGzw4Mz80KCmJRFxMXAp8L3fHZpbDkC9kiTtNWZHmhFxGPAGYMWgrhXAOU1MNQXYPqjt5RGxMSKejIh/iIgz9qNUSZKGNJZHmscChwL9g9r7gbeVTBAR/wHoBO5qaF4HXA2spQrUDwEPRcTrM3PDEHMsBBYCdHR00NPTA8DMmTOZMmUKa9euBWDq1KnMnj2blStXAjBp0iS6urpYs2YNO3bsAKBWq9Hf3w+cXFK+JOkA2rx5M+vWrQNgxowZdHZ20tvbC8DkyZOp1WqsWrWKXbt2AdDV1cX69evZunUrAHPmzNnbN5zIzAO4Cw1fFNEBbALOz8yVDe03Aldl5qmjbH85VVhekZnfHGHcocA/Aw9m5uKR5qzVatnX11e+E8O45pb9nkKStJ+6r2/NPBGxOjNrQ/WN5YVA24A9wLRB7dOAEc9HRsQ7qQJz/kiBCZCZe4A+4JR9L1WSpBcbs9DMzN3AamDeoK55VFfRDiki/ogqMBdk5j2jfU9EBHAasHnfq5Uk6cXG+urZm4G7IuJR4CHgWqAD+BJARCwDyMz59c/vogrMjwArI+L4+jy7M/OZ+pg/Ax4BNgBHAYupQnPRGO2TJGmCGNPQzMy7I2Iq8HGq+ykfAy7KzI31IYPv17yWqsZb6q8B3wXm1t+/CrgNOB74FfBPwHmZ+WjLd0CSNKGN9ZEmmbkUWDpM39yRPg+zzYeBD7eiNkmSRuLas5IkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQmMemhHxgYh4IiKei4jVEXHuKOPPr497LiIej4hr93dOSZL2xZiGZkRcAdwKfBo4A3gYuDciThxm/GuA5fVxZwCfAb4QEZfv65ySJO2rsT7SvAG4IzO7M/MnmXkdsBlYNMz4a4GnMvO6+vhu4E7gI/sxpyRJ+2TSWH1RRBwGvAH4/KCuFcA5w2x2dr2/0f3AeyPiZUA0O2dELAQW1j/+JiLWFe2AdPA7Ftg23kVI++pvPtyyqV49XMeYhSbVf5CHAv2D2vuBtw2zzfHAPw4xflJ9vmh2zsy8DbituGppgoiIvsysjXcdUjvz6llJkgqN5ZHmNmAPMG1Q+zRgyzDbbBlm/Av1+WIf5pQkaZ+M2ZFmZu4GVgPzBnXNo7ridSirhhnfl5nP7+OckobmaQtpFJGZY/dl1e0hdwEfAB6iujr2fcDszNwYEcsAMnN+ffxrgMeAbuCvgTcDS4ErM/NrJXOO2c5Jkg56Y/nzLJl5d0RMBT4OTKcKxIsawu3EQeOfiIiLgP9KdQvJU8DigcAsnFOSpJYY0yNNSZJeyrx6VpKkQoamJEmFDE1pgouIaPwraXie05T0OwbCM/2fg/QiY3r1rKT2EhGXAkcDk4EngN7MfHpci5LamEea0gQUEVOALwIDz559FXA4sAZ4ALgtM7dERHjEKf0rz2lKE9NiYA5wSWbOBK6iug/6F/X3N0XEJANT+l2GpjQxXQx8MTMfq4fjvcAjQA/VqloXA38yjvVJbcnQlCaYiDiS6oEHpwJk5gv1rouAJzLzQWAZ8NaIOGp8qpTak6EpTTCZ+SzwbWBBRFwcEWdExC3AbzPzG/VhXwNOAF42TmVKbcmrZ6UJpn5Lye3A7wNfBY6getjBhxqGzQV2Z+YvxrxAqY159aw0gUVEB9WDDn42cKtJRJwJfAm4IzOXjmd9UrsxNKUJpH6O8teDr4oduLWkfhR6DnAm8KXMfH486pTalaEpTSAR8dfAo/XXzzLzV0OMeXlm7hzz4qSXAENTmiAi4krgK8AO4BmqRQzuA34APJWZOyPiFcDfAv8xMx8bt2KlNmVoShNERHQDe4DPApcB7wVOBtYBy6muqD0VuDUzDxuvOqV2ZmhKE0BETKJarOCozPxoQ/ts4BrgnVRX0b4KuDMz3zcedUrtztCUJoiIOBqYlpn/NyIOA55vvCAoIq6g+mn2zMz853EqU2pr3qcpTRCZuR3YXn+/GyAiDqH6x/Me4CjgOQNTGp6hKU1gmfnbho9TgD8br1qklwJ/npUEQES8DNgzKEglNTA0JUkq5ILtkiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEL/HxueL7TUsLHJAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc_t = transpile(qc, sim)\n", "result = sim.run(qc_t, shots=1).result()\n", "cts = result.get_counts().int_outcomes()\n", "print(cts)\n", "plot_histogram(cts)" ] }, { "cell_type": "markdown", "id": "6571c195-65de-4fac-bd25-519dbc169d4f", "metadata": {}, "source": [ "This gives 19, as expected. Feel free to play around with it." ] }, { "cell_type": "markdown", "id": "97377aa8-e6bb-4217-add9-cdfe864df6a9", "metadata": {}, "source": [ "### Task 2: Uncomputation\n", "The algorithm as such will probably need ancilla Qubits to store intermediate results. The carry lowest $n-1$ carry bits are such an example. For usage of the algorithm as an Oracle (see below) we MUST MAKE SURE that all ancillas are returned to their origina state, because otherwise the entire mathematics of the algorithms does not work anymore (it gets mixed up in entanglement, if you so wish). This process is called uncomputation.\n", "\n", "Implement a 4 bit Quantum-Adder and demonstrate that $13+6=19$ which is fully uncomputed, e.g. it does not change the input qubits and also does not change the ancillas. Only changing of result QuBits is permissible." ] }, { "cell_type": "markdown", "id": "5a4eb81d-e1c1-4f69-af4e-db0c72071454", "metadata": {}, "source": [ "We have already cleaned up the ancilla bits of the Full-Adder. We only need to clean up the lower n carry bits (the upper one is a part of the result). We thus redefine the nbit_addition function. We use the test approach of uncomputation by recomputation. To do so, we need to split off the Carry-Calculation-Part of the Full Adder, becuase we only need to uncompute this part. Also keep in mind that we have to do the uncomputation backwards, because we need the n-1-th carry but to calc the nth." ] }, { "cell_type": "code", "execution_count": 12, "id": "db4c3159-c54b-48ec-893a-62be7ec163e5", "metadata": {}, "outputs": [ { "data": { "image/png": "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AMAAhDMAAAAAMADhDAAAAAAMQDgDAAAAAAMQzgAAAADAAIQzAAAAADAA4QwAAAAADEA4AwAAAAADEM4AAAAAwACEMwAAAAAwAOEMAAAAAAxAOAMAAAAAAxDOAAAAAMAAhDMAAAAAMADhDAAAAAAMYGw4i42NVefOnVWhQgV5e3srJCRE/fv314kTJyRJ2dnZKlmypMaOHZtvu6ysLHl7e+v111/PG0tKSpKXl5eGDBmSb93x48erRIkSWrRoUdG/IQAAAAAogIfVBVxJYmKimjRpogEDBsjf31+//fabxowZI0maMWOGdu7cqbNnz+rOO+/Mt9327duVnp6eb7xKlSoaNGiQpkyZomHDhik0NFTTp0/XmDFj9OGHH6pjx44OfW/XYuKCPlrz81yV8PDKGxvQbqI6RgyysCrnRK8dh147Bn0uevQYBWF+4GqYI7iYseFs8ODBeT/n5OQoIiJCiYmJWr16tSRpy5YtknRJOPv5558vOz5mzBjNnj1bY8eOVZs2bfTkk0/qzTffVK9evYrybdhFywa9NeyhGVaX4RLotePQa8egz0WPHqMgzA9cDXMEf2fkbY3Z2dmaO3eumjRpoqCgILm7u6tEiRKaMmWK/Pz8JF0IZ2XKlFGFChXybbtlyxaFhISobNmy+cbLlCmj0aNHa86cOerZs6eef/75vACYlpam9u3bKywsTHXr1lWrVq20Z88ex7xZAAAAAJChV8569+6tL7/8Uk8//bRGjhypwMBAeXh46L777lOdOnUkXQhhF18dky5cObvcuCTVqFFDWVlZql69ul555ZW8cZvNpmeffVYtWrSQJL399tvq27ev1q1bVwTv7tqt//UL/fDrl7qpZKAiandSr5YvycfLz+qynBK9dhx67Rj0uejRYxSE+YGrYY7g74y7crZt2zbNnTtX77zzjiZOnKgOHTronnvuUUZGhk6dOqXw8HBJF76TdnEIO3nypDZv3nzZcLZhwwb17NlTERER2rlzZ97tkZIUEBCQF8wkKSIiQklJSYWu2Waz2WWJi4u9ZN+dmzyjWcN3auHLqXq591f65fc4/XvhgELXZrq4uFi79e9G+izRa3ptP6b02tn7LDm2167aY2fgiHnC/CjemCMoiD3mR2EZF84OHDggSapZs2beWGZmpoYOHSpJCg8P16lTp3TixAmFhobm23by5MmXPAxE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\n", "text/plain": [ "
" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def full_adder_c_only(as_gate=True):\n", " a_qubit = QuantumRegister(1, name='a')\n", " b_qubit = QuantumRegister(1, name='b')\n", " cin_qubit = QuantumRegister(1, name='cin')\n", " aux1_qubit = QuantumRegister(1, name='aux1')\n", " aux2_qubit = QuantumRegister(1, name='aux2')\n", " aux3_qubit = QuantumRegister(1, name='aux3')\n", " c_qubit = QuantumRegister(1, name='c')\n", " qc = QuantumCircuit(a_qubit, b_qubit, cin_qubit, aux1_qubit, aux2_qubit, aux3_qubit, c_qubit)\n", "\n", " #Compute Sum\n", " qc.append(half_adder(), [a_qubit, b_qubit, aux1_qubit, aux2_qubit])\n", " qc.append(AND_gate(), [aux1_qubit, cin_qubit, aux3_qubit])\n", " qc.append(OR_gate(), [aux2_qubit, aux3_qubit, c_qubit])\n", " #Uncompute aux1-3\n", " qc.append(AND_gate(), [aux1_qubit, cin_qubit, aux3_qubit])\n", " qc.append(half_adder(), [a_qubit, b_qubit, aux1_qubit, aux2_qubit])\n", " \n", "\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"FullAdd C-Only\"\n", " return U_s\n", " else:\n", " return qc\n", " \n", "def nbit_addition_clean(nbits, as_gate=True):\n", " a_qubits = QuantumRegister(nbits, name='a')\n", " b_qubits = QuantumRegister(nbits, name='b')\n", " c_qubits = QuantumRegister(nbits+1, name='c')\n", " aux_qubits = QuantumRegister(3, name='aux')\n", " s_qubits = QuantumRegister(nbits, name='s')\n", " qc = QuantumCircuit(a_qubits, b_qubits, c_qubits, aux_qubits, s_qubits)\n", " \n", " for k in range(nbits):\n", " qc.append(full_adder(), [a_qubits[k], b_qubits[k], c_qubits[k], aux_qubits[0], aux_qubits[1], aux_qubits[2], s_qubits[k], c_qubits[k+1]])\n", " for k in range(nbits-2,-1,-1):\n", " qc.append(full_adder_c_only(), [a_qubits[k], b_qubits[k], c_qubits[k], aux_qubits[0], aux_qubits[1], aux_qubits[2], c_qubits[k+1]])\n", "\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"Addition Clean\"\n", " return U_s\n", " else:\n", " return qc\n", "\n", "nbit_addition_clean(4,as_gate=False).draw()" ] }, { "cell_type": "markdown", "id": "50794c7f-58bd-4b05-be41-0643cd19a467", "metadata": {}, "source": [ "Let's see: we try this out but now we measure all the qubits, because we want to see that the aux's are all zero." ] }, { "cell_type": "code", "execution_count": 13, "id": "aa0d3cce-403d-40e0-a047-bba5af6799d1", "metadata": {}, "outputs": [ { "data": { "image/png": "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tBTdUfVu9e8QqbpVG5mOBgAAipjGjRvrnXfeka+vryTp+++/1/vvv6/Y2Fj9/vvv8vLykp+fn5o2barHHntMrVq1UsuWLTV9+nT5+Piod+/eunjxotq1a6evv/7a8NEAAIDCwG2LtVWrVmn8+PFauHChwsLCMra3bdvWYKqiZ8bqgbp4+azeGr5HJYqV1sINozR6QTu99+JBORwO0/EAAEAR0aJFC3344YcqXbq04uPjNWjQIG3evPm6cV988YXmzJmjf/3rXxo+fLiGDx+u559/XpIySrXPPvusoOMDAIBCym0vBR09erRatGiRqVS71i+//KLg4GDVq1dPDRs21BdffFHACYuGIyf2qvldj8u71K3y8iymNvc+rYQzh/THhZOmo8GmXC6X6QgAgELG19dXa9asUenSpbVw4ULdfffdWZZq1zp9+rRefPFFffjhhxnbvvjiC0o1AABwU9yyWDt48KB+/PFHPfHEEzcc069fP3Xt2lV79uzRnDlz9MQTTygpKakAUxYNj4cM0xffr9TpcwlKSr6kj76eqwa3N1PZ0uVNR4NN7dq1y3QEAEAh4uHhoYULF6pMmTJasmSJevXqpcuXL+c47+o91Tp16qRLly7p4sWLatWqlTp16pT/oQEAQJHhlpeCHjlyRJJUrVq1LF8/ceKEtmzZojVr1kiSgoKCVLVqVW3evFmtW7fO8f3d8RLHqf03q1HdkOu2N6jdVBtjFunxiIpyOj1UsWwNTei9vuADIksuV7QCu7UosP0NHTo0xzGRkZE5jouMjMyrSH/JiIlzJF35mb923c4KY2apcOYmc8EpjLkLY2bJnrn/+c9/6t5779XBgwfVv39/paen5zjn2gcVXL3808/PT//5z380Y8YMffjhh0pNTc00x+VyGT9WAABQcKz8P4XkpmesVa1aVZL0ww8/ZPn6wYMHValSJRUvXjxj2+23365ff/21QPIVFWlpaRo+t6WqV6in918+o7UTLqjbQy/q2ZkP6tTZ303HAwAARcDgwYMlSS+++KL++OOPHMdnVap99tlneuONN7R7927VqFFD7du3z+/YAACgiHDLM9Zq1qypFi1aaMKECfLw8FDjxo2VmJiojRs36sknn1Tp0qX/0vtbbTWLkpil0ulDmbedvZioY4kH1LHpEJUucYsk6eH7emveuhH68dev1LRBp4IPikyC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PilJOnDggK5du6bAwMBc6yUmJio5OTnX/fXr19e4ceMUGxurX3/9VZL07rvvKioqSh988IH69etXcm+slKvgfof6thunsf1iClzm3F8ntGLjq6pf3b/kggEAAADAf3l4eGjlypVauHChqlevrj179mj8+PFq1qyZPDw8VLVqVXl4eKhFixaaNGmSDh06pDp16ujTTz/VmjVrckq1+fPn65FHHlFGRobRbwlACSn4ECKTefzxx3NuZ2RkKCQkRLt379a3334rSdq5c6ck5SnWdu3ale/9UVFRmjdvnqKjo9WzZ0+NHTtWr732mh588MHifBtlTnDTcEnS7iNxBS7z6rJHNKrnLH25NbaEUgEAAABAFnd3d61Zs0YdO3bUxYsXFRkZqfnz5+dZLj09XYmJiUpMTNTrr7+u8ePH66WXXlLPnj0lSR999BGlGlAG2cURa+np6Vq0aJE6dOggb29vOTk5qVy5coqNjVWFChUkZRVrXl5eql27dq51d+7cqVq1aqlq1aq57vfy8tLTTz+t+fPna/jw4XrmmWdylXfTpk1TkyZN5OjoqBUrVhT/myyjVm19R24uHgoLGGZ0FJhEfHy80REAAABQhrz11lvq2LGjTp06peDg4HxLtZtlZmZq9+7due67cOECpRpQBtlFsTZixAg9+uijCgkJ0XvvvactW7bop59+kqenp/z9s04f3LlzZ56j0qSsI9byu1+SmjZtqrS0NNWvX18zZszI9VjPnj319ddfq1OnTkX/hiBJ+v2vk1r87fP6R8Qco6PARBITE42OAAAAgDKiV69eGjVqlK5fv66ePXvq8OHDVq2XPaeau7u7Vq9erbS0NEVGRiokJKSYEwMwG9MXa/v27dOiRYv0xhtv6KWXXlLfvn3Vrl07paSk6PLlywoKCpKUNQfbzQXapUuXtG3btnyLtS1btmj48OEKCQnRgQMHck4pzRYSEqIGDRrYlNnBwaHMjfj4uFveTq8uH637u0apSqVaNm1n3L74+LgS3U/mzp1rcYwbN87iMkbv79kj2823zTzsMbO95iYzuUtbZnvNbY+Z7TW3PWa219z2mPnGrEZlzu/MiOefz7p42r/+9S/9/PPPeR7Pz40XKpg/f7769eunl19+WY6OjnkupidlnZFh9LZnMBi3Pqxl+mLt5MmTkqRmzZrl3JeamqonnnhCkhQUFKTL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V2JiosqVK6dFixYZHcui/H7G2MPn4/xye3p66sUXX9Srr75qUKrC5Ze5fv36+u6777Rnzx7NmzdP9913n6l+KZbyz92qVStt375dCQkJ2rp1q1566SUdP37cmID5KOyz01NPPaUuXbqUcCLLCsp8991353z//vTTTw1IVrj8cl++fFkPPfSQPvzwQyUmJmrLli264447DEqYV36ZR48enbOdv/zyS3l4eCg8PNyghPnLL/dHH32ktLQ07d27V/v27VNCQoLWrFljUMK88ss8a9Ys+fj4aO/evdq4caOioqJs/hlDsVbCatSooTZt2kiSXFxcFBgYqJMnT2rlypUaOXKknJycVKtWLbVv315r1641OC2A4rBt2zbVrFlTzZs3lyQ98sgjpvwr/M06dOig6tWrGx3jlhT0PdceVKpUSVJWEZuUlCQHBweDE1mWnJysqVOn6pVXXjE6Sql2+fJlffHFF3riiSckSQ4ODqpWrZrBqW7N6dOntX37dg0YMMDoKIXKyMhQZmZmzgftixcvqkaNGganKtzPP/+su+++O+d7SHh4uD7++GODU1mW388Ye/h8nF/uO+64QyEhIXJzczMoVeHyyxwSEiIvLy9JUosWLZScnKyrV68aEa9A+eUuX758zhEoycnJpjs6s6DPThs2bFBycrK6du1qQKrC2ePnPSn/3IsXL1avXr3k6+srKeuzlbu7uxHx8mVpWy9evFgRERGm+15SUO6rV68qLS1NycnJSk5ONtV+lF/mffv2qWfPnpKkypUrq1mzZjaXgRRrBvrzzz/12WefqXv37vr1119Vu3btnMfq1KmjU6dOGZgOQHHh/3dj3Pg9114MHDhQ1apV08GDB/Xkk08aHceiGTNm6JFHHlHVqlWNjnLL+vbtq4CAAD377LNKTU01Ok6hjh49Km9vb02YMEGtW7fWwIEDdeLECaNj3ZIlS5ZowIABKl++vNFRClWhQgW9+eabatGihWrVqqUPP/xQM2fONDpWoVq2bKnNmzfr9OnTSk9P1/Lly+32Zww/L42xdOlS+fv7y9PT0+goVtm7d6/8/f1Vp04dPfXUU6pXr57RkQp1/fp1Pf3003b3R6gdO3YoMDBQnTp10jfffGN0HKscOHBAycnJ6tatmwIDAzV9+nRlZmYaHctqixYt0oMPPmh0DKs89NBDcnFxkbe3t7y9vdWj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\n", "text/plain": [ "
" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbits = 4;\n", "a_qubits = QuantumRegister(nbits, name='a')\n", "b_qubits = QuantumRegister(nbits, name='b')\n", "c_qubits = QuantumRegister(nbits+1, name='c')\n", "aux_qubits = QuantumRegister(3, name='aux')\n", "s_qubits = QuantumRegister(nbits, name='s')\n", "\n", "\n", "\n", "qc = QuantumCircuit(a_qubits, b_qubits, c_qubits, aux_qubits, s_qubits)\n", "\n", "#initiate the 13 (reverse order!)\n", "qc.x(a_qubits[3])\n", "qc.x(a_qubits[2])\n", "qc.x(a_qubits[0])\n", "\n", "#initiate the 6 (reverse order!)\n", "qc.x(b_qubits[2])\n", "qc.x(b_qubits[1])\n", "\n", "\n", "#this seems like a rather unelegant way to compile the list of qubits but it's the inly way I found that would work\n", "qlist = []\n", "for qubit in a_qubits:\n", " qlist.append(qubit)\n", "for qubit in b_qubits:\n", " qlist.append(qubit)\n", "for qubit in c_qubits:\n", " qlist.append(qubit)\n", "for qubit in aux_qubits:\n", " qlist.append(qubit)\n", "for qubit in s_qubits:\n", " qlist.append(qubit)\n", "qc.append(nbit_addition_clean(4), qlist)\n", "#this seems like the more eleqgant solution but does not work\n", "#qc.append(nbit_addition(4), [a_qubits, b_qubits, c_qubits, aux_qubits, s_qubits])\n", "\n", "\n", "qc.measure_all()\n", "\n", "qc.draw()" ] }, { "cell_type": "markdown", "id": "87546f89-76c2-4e5d-a67c-58424e7e8880", "metadata": {}, "source": [ "Let's go." ] }, { "cell_type": "code", "execution_count": 14, "id": "3eb12945-7020-4a58-85d9-ee66e5a173c7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'00110001000001101101': 1}\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc_t = transpile(qc, sim)\n", "result = sim.run(qc_t, shots=1).result()\n", "cts = result.get_counts()\n", "print(cts)\n", "plot_histogram(cts)" ] }, { "cell_type": "markdown", "id": "ac5c9256-ec45-4907-9f88-49944ba83ab4", "metadata": {}, "source": [ "This has worked. All results are fine, all low carry bit and aux bits are uncomputed. Congratulations, you can now compute a+b on a Quantum Computer." ] }, { "cell_type": "markdown", "id": "397d8226-c114-4282-b5c0-67d97d7ebca1", "metadata": {}, "source": [ "## Quantum Oracles\n", "\n", "For many computationally hard to solve problems, the best solution is systematically test possible solution candidates until a proper solution is found. This approach is said to use and “oracle” function: a function $O(x)$, which returns $O(x)=0$ for all $x$, which are not solutions to the problem and $O(x)=1$ for proper solutions to the problem. The name “oracle” is altogether fitting because it contains two central ideas to this solution approach\n", "- the answer is always correct but in the most cases of very minimal use, and\n", "- one it usually assumes that asking the oracle is connected to some cost.\n", "\n", "The difference of the 21st century and the 2nd century BC is that this cost is due in computational resources and not in sacrificial goats.\n", "\n", "
\n", "\n", "Using our understanding of Classical Problems on a Quantum Computer we can, of course, create a quantum version of the oracle $\\hat{O}$, i.e., $\\hat{O}|x\\rangle|o\\rangle=|x\\rangle|o\\oplus{}O(x)\\rangle$, where $|x\\rangle$ is the register of input Qubits and $|o\\rangle$ is the single output qubit, i.e. the Orcacle's answer.\n", "\n", "It is helpful to initialize the output Qubit into a superposition state $|q\\rangle=\\frac{1}{\\sqrt{2}}(|0\\rangle-|1\\rangle)$ because this implies that\n", "\n", "$$\\hat{O}|x\\rangle\\frac{1}{\\sqrt{2}}(|0\\rangle-|1\\rangle)=(-1)^{o(x)}|x\\rangle\\frac{1}{\\sqrt{2}}(|0\\rangle-|1\\rangle)$$.\n", "\n", "Which is a rather funny result, because it tells us that the result qubit $|o\\rangle$ does not change its state irrespective of the input being a solution. The quantum oracle rather marks solutions to search problems by shifting their phase by $\\pi$ with respect to all other solutions. You can also think in eigenstates: all possible CBS inputs are eigenstates to the Oracle operator (if $|o\\rangle$ is chosen appropriately) with the eigentvalue being +1 or -1 depending on the correctness of the result. Because the application of the oracle does not affect the oracle QuBit at all, it shall be omitted from the fruther discussion." ] }, { "cell_type": "markdown", "id": "5a8ab87f-d98f-4e32-b125-35c4e26bc9cc", "metadata": {}, "source": [ "## The Grover Algorithm\n", "The Grover Aogorithm uses the markdown-property imposed by the Oracle operator to amplify the quantum aplitude of correct solutions. It does so by the application of the Grover-Operator $\\hat{G}=(2|\\overline{\\psi}\\rangle\\langle\\overline{\\psi}|-\\hat{I})$, where $|\\overline{\\psi}\\rangle=\\sum_x|x\\rangle$ is the balaned superposition of all possible CBS-states (the average).\n", "\n", "The implementation of the Grover-Algorithm is discussed in detail in the QISKIT book and we give it here for reference." ] }, { "cell_type": "code", "execution_count": 15, "id": "9a26eaef-8162-4e62-980f-ec6ee7ccdb77", "metadata": {}, "outputs": [], "source": [ "def grover_operator(nqubits, as_gate=True):\n", " qc = QuantumCircuit(nqubits)\n", " # Apply transformation |s> -> |00..0> (H-gates)\n", " for qubit in range(nqubits):\n", " qc.h(qubit)\n", " # Apply transformation |00..0> -> |11..1> (X-gates)\n", " for qubit in range(nqubits):\n", " qc.x(qubit)\n", " # Do multi-controlled-Z gate\n", " qc.h(nqubits-1)\n", " qc.mct(list(range(nqubits-1)), nqubits-1) # multi-controlled-toffoli\n", " qc.h(nqubits-1)\n", " # Apply transformation |11..1> -> |00..0>\n", " for qubit in range(nqubits):\n", " qc.x(qubit)\n", " # Apply transformation |00..0> -> |s>\n", " for qubit in range(nqubits):\n", " qc.h(qubit)\n", " # We will return the diffuser as a gate\n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"G\"\n", " return U_s\n", " else:\n", " return qc" ] }, { "cell_type": "markdown", "id": "bf52c465-8d53-4f57-9871-a493712fef6e", "metadata": {}, "source": [ "This is what the circuit looks like:" ] }, { "cell_type": "code", "execution_count": 16, "id": "2266c2ca-26d6-432c-85be-930c77bed8d3", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grover_operator(4, as_gate=False).draw()" ] }, { "cell_type": "markdown", "id": "22d2fe86-9377-42a3-afe8-7e424bbf4db0", "metadata": {}, "source": [ "Use the grover_operator function in such as way:" ] }, { "cell_type": "code", "execution_count": 17, "id": "2a33bd76-93e4-4377-a723-76a0125aec96", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc = QuantumCircuit(4)\n", "qc.append(grover_operator(4), [0,1,2,3])\n", "qc.draw()" ] }, { "cell_type": "markdown", "id": "294e8b2c-b563-4303-b151-153629b1250e", "metadata": {}, "source": [ "## The Grover Algorithm\n", "\n", "The entire algrithm works in the following way:\n", "\n", "Initialization:\n", "1. Initiate the input $|x\\rangle$ in a balanced superposition using $\\hat{H}$-gates on all QuBits\n", "2. Initiate the Oracle $|o\\rangle$ into the state $o\\rangle=\\frac{1}{\\sqrt{2}}(|0\\rangle-|1\\rangle)$.\n", "\n", "Iteration:\n", "1. Apply the Oracle Operator $\\hat{O}$.\n", "2. Apply the grover-Operator $\\hat{g}$.\n", "3. Repeat Steps 1+2 for $\\frac{\\pi}{4}\\sqrt{\\frac{N}{M}}$ times, where $N=2^n$ is the size of the search space and $M$ is the number of correct answers.*\n", "\n", "$*$There is an efficient way of determining $M$ if it is unknown, called *Quantum Counting*.\n", "\n", "Why does the algorithm work? To answer that question it is useful to imagine the entire search space spanned by all as a high-dimensional vector space. This space is spanned by two linearily independent subspaces, the $M$-dimensional subspace of “correct” answers $|x'\\rangle$ and the $N-M$ dimensional subspace or incorrect answers $|x''\\rangle$. Within both of these subspaces we define normalized superposition states:\n", "\n", "$$ |\\alpha\\rangle = \\frac{1}{\\sqrt{N-M}}\\sum_{x''}|x''\\rangle$$\n", "$$ |\\beta\\rangle = \\frac{1}{\\sqrt{M}}\\sum_{x'}|x'\\rangle$$\n", "\n", "The initial state of the input register produced by an equal superposition of all CBS is then simply:\n", "\n", "$$|\\psi\\rangle=\\sqrt{\\frac{N-M}{N}}|\\alpha\\rangle+\\sqrt{\\frac{M}{N}}|\\beta\\rangle=\\cos{\\frac{\\theta_0}{2}}|\\alpha\\rangle+\\sin{\\frac{\\theta_0}{2}}|\\beta\\rangle$$\n", "\n", "where $\\theta_0\\ll1$ because there are many more wrong solutions than there are correct solutions. We find that the angle $\\theta$ is a measure of the “correctness”, e.g. $\\theta=0$ is a balanced superposition of all wrong results, whereas $\\theta=\\pi$ is a superposition of all correct answers. The Grover-Algorithm starts with $\\theta=\\theta_0$ and increases the angle for every iteration. It is also noteworthy that $|\\psi(\\theta_0)\\rangle=|\\overline{x}\\rangle$, i.e. the starting point of the algorithm is the average.\n", "\n", "The first step in the iteratation is the application of the Oracle and we had seen that the oracle flips the sign of the correct answers hence:\n", "$$\\hat{O}|\\psi(\\theta)\\rangle=\\cos{\\frac{\\theta}{2}}|\\alpha\\rangle-\\sin{\\frac{\\theta}{2}}|\\beta\\rangle=|\\psi(-\\theta)\\rangle$$\n", "\n", "If visualized in the $|\\alpha\\rangle-|\\beta\\rangle$-plane this amount to a reflecton at the $|\\alpha\\rangle$-axis.\n", "\n", "The application of the Grover operator $\\hat{G}=(2|\\psi(\\theta_0)\\rangle\\langle\\psi(\\theta_0)|-\\hat{I})$ changes the value to:\n", "\n", "$$\\hat{G}|\\psi(-\\theta)\\rangle=\\cos{\\frac{2\\theta_0+\\theta}{2}}|\\alpha\\rangle+\\sin{\\frac{2\\theta_0+\\theta}{2}}|\\beta\\rangle=|\\psi(2\\theta_0+\\theta)\\rangle$$\n", "\n", "This is because the Grover operator also does a reflection but this time about the initial state.\n", "\n", "Since we have started in the point $\\theta_0$ we find that after $k$ iterations we are in the state:\n", "\n", "$$(\\hat{G}\\hat{O})^k|\\psi(\\theta_0)\\rangle=|\\psi(\\frac{2k+1}{2}\\theta_0)\\rangle$$\n", "\n", "The geometric interpretation is indeed quite simple. The application of $\\hat{G}$ has the state $|\\psi\\left(\\theta\\right)\\rangle$ by $2\\theta_0$ counterclockwise from the $|\\alpha\\rangle$ towards the $|\\beta\\rangle$ direction and has thus increased the relative quantum amplitude and therefore the likelihood of observing a correct answer.\n", "\n", "
\n", "\n", "It is now a mere question of when to terminate, such that we do not “overrotate” and again decrease the likelihood of the system being in any of the CBS, which comprise $|\\beta\\rangle$. Quantitatively we must terminate the algorithm, when $\\frac{2k+1}{2}\\theta_0=\\frac{\\pi}{2}$ this means that: $k=\\frac{\\pi}{2\\theta}-\\frac{1}{2}$.\n", "\n", "Let’s assume for simplicity that $M\\ll N$, e.g. that a correct answer is a fairly rare event. Note that this approximation is an exclusively technical approximation. We can approximate $\\theta\\approx 2\\sqrt{M/N}$ and thus we get:\n", "\n", "$$K=\\frac{\\pi}{4}\\left(\\frac{N}{M}\\right)^{1/2}-\\frac{1}{2}\\approx\\frac{\\pi}{4}\\left(\\frac{N}{M}\\right)^{1/2}$$\n", "\n" ] }, { "cell_type": "markdown", "id": "d3d6116d-95ae-4199-81c4-0a1fdd919008", "metadata": {}, "source": [ "### Task 3: Grover Solution finding \n", "Use the grover algorithm and your 4-bit Adding-Circuit to find a solution to the problem $a+b=17$." ] }, { "cell_type": "markdown", "id": "95c3cb55-517d-407f-9878-e489e18ce785", "metadata": {}, "source": [ "We start by calculating the number of iteration we need to find a solution. We do so by cheating, as we, of course, know the solutions beforehand. There are $M=14$ solutions, namely $2+15$, $3+14$, ... , $15+2$. The total search space is $N=2^{8}=256$. We hance find that $K=\\frac{\\pi}{4}\\left(\\frac{N}{M}\\right)^{1/2}=3.2$, so we need roughly $K\\approx3$ iterations of the circuit. That was easy." ] }, { "cell_type": "markdown", "id": "71d115e9-dc31-440b-af29-9d0840b74d7f", "metadata": {}, "source": [ "Next we need to design the oracle. Let's first assume that we have the Addition carried out such that we have the (quantum superposition) of results stored in register $(s_0,...,s_{n+1}, c_{out})$. We must compare bitwise with 17=10001, e.g. the result is ONLY 17 if all the number are equal. To do so we employ an $n+1$ input Toffoli-Gate, which is a natural AND (e.g. it operates if all input are 1) together with $NOT$-gates at those bts, which are supposed to be $0$. Don't forget to uncompute those!" ] }, { "cell_type": "code", "execution_count": 18, "id": "b8145e8e-5d5e-4f59-b2d6-db89b7034e2e", "metadata": {}, "outputs": [], "source": [ "def comparator_17(as_gate=True):\n", " qc = QuantumCircuit(6)\n", " ##prepare for comparison with 10001 by flipping the middle three bits\n", " qc.x(1)\n", " qc.x(2)\n", " qc.x(3)\n", " ##compare and store result in qubit 6\n", " qc.mct(list(range(5)), 5) # multi-controlled-toffoli\n", " ##unflip \n", " qc.x(1)\n", " qc.x(2)\n", " qc.x(3)\n", " \n", " \n", " if (as_gate):\n", " U_s = qc.to_gate()\n", " U_s.name = \"Compare with 17\"\n", " return U_s\n", " else:\n", " return qc" ] }, { "cell_type": "markdown", "id": "96b85adf-05e5-4b79-9bcf-da583c7d8f58", "metadata": {}, "source": [ "This is what the circuit looks like" ] }, { "cell_type": "code", "execution_count": 19, "id": "d23631de-af00-4441-9b1c-147d02c6de85", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "comparator_17(as_gate=False).draw()" ] }, { "cell_type": "markdown", "id": "e5c7ef29-636d-4628-aeff-9e4e83b9e4dd", "metadata": {}, "source": [ "Use it in such a way" ] }, { "cell_type": "code", "execution_count": 20, "id": "effcd9c2-8c0b-4797-9a43-b9061358f722", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc = QuantumCircuit(6)\n", "qc.append(comparator_17(), [0,1,2,3,4,5])\n", "qc.draw()" ] }, { "cell_type": "markdown", "id": "5716bbd6-c9d2-4eef-9d39-ee95aeb5978a", "metadata": {}, "source": [ "The we need to initialize everything properly. Keep in mind that we have to initialize both the input qubits and the oracle qubits and we have to create empty ancilliaries." ] }, { "cell_type": "code", "execution_count": 21, "id": "e96e045e-31e9-4df7-8fd3-bcc88db866c6", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAH0AAACoCAYAAADNc+G5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAJS0lEQVR4nO2dXUxU6RnHfzMKKlKLyAYV0RV0/JgIKttqaOpHaommXJitoqSl1ZJIxBtjeqlGgvGCeuGlpk1j2gvcSEmatUCiUfGD1i0quNo1I8uXuGqF4AcIgzKnF1NQZIQZODPnsM/zS+Zi3nPmPQ/8eN7zMpD/OAzDMFBE4bS6ACXyqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBTLa6gO8jhg86muH5I8CAGXMgIRWcNmkxm5QRGJ/Px/Hjx1m8eDFTp04lPT2d6upqlixZwp49e6wuLyAvn8D1P0FdOTTfgOav4M7f4dop6HxodXV+bC09Pz+f4uJiCgoKqKysJCcnh9zcXBobG8nIyLC6vGF0d8DNL6D31fBjfa/hdpn/h8JqbLu8l5aWcvr0aS5fvsz69esB2LhxI7du3aK8vJzVq1dbXOFwmm5A/1sgUDKfAT4fNNbAys8jXdlQbNvpx44dY/PmzYPCB1i0aBFRUVGkpaUB0NzczPr163G5XKxYsYKrV69aUS5v++DpfQILH8CA9kbwdkWqqsDYUnpbWxt3795l+/btw461trbidruZMmUKAAUFBezYsQOPx8OpU6fYuXMnfX19o17D4XCY+kiek4LhC+7rS1v2menXDwXbSgeYPXv2kPGenh6qq6sHl/b29nauXbtGfn4+AJmZmcydO5dLly5FtmDgde/LoM/t7n0RxkpGx5bSExISAPB4PEPGS0pKePz48eAmrrW1lcTExMGuB1i4cCEtLS2jXsMwDFMfL7rbmZkMjNR0Doj9BB7+94Hp1w8FW27kUlJSSEtL49ixY8THx5OUlERZWRkVFRUAtty5A3y6ZpRfywxYuAZCXI1Nx5ad7nQ6OXv2LG63m71797J7924SEhLYt28fkyZNGtzEzZ8/n6dPn+L1egdf29TUxIIFCyype9ansPTnfLTbF62DxKWRrCgwjokU/Z2Xl0d9fT137twZHMvKymLr1q0UFhZSU1PDtm3baG5uJjo62rI6Xz+HR3XQUut/nrwK5q2E6bMsK2kItuz0j1FbWztsaT958iRnzpzB5XKxZ88eSktLLRUOEBMHize8e77kZ/YRDja9pweiq6sLj8dDYWHhkPGUlBSuXLliUVUTkwkjPTY2lv7+fqvL+F4woZZ3xRxUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUeph4P9TFbgEvtpY+EQOBDR88vA3//PO7set/hJZ/g88mmQq2TqLIz8+nvLycQ4cOkZGRQU1NDbm5uTx79owDBw5YXd4wfD74+kt49mDoeO9LeFAN7U2w6nNwWvxdt630iRgI/PDWcOHv09nqDw1O/UnkagqEbZf3YAOBDx8+jMvlwul0UlZWZkWpgP++/fDW6Oe11Vm/zNtSeiiBwJs3b6aqqop169aFdA2zA3kTZyYTTDzsmx5YlJxmaSCwLZf30QKBt2zZMjiWmZkZ0do+htM5KfhzHcGfGw5s2enBBgKPB7MDeb971kzUtNGv64yC+023NRD4QyZiILBzEsxLh6Z/jXzeXDdMtjbQ0p6dHmwgsN1Y8GP4QeLHj8fEW79zB5t2OoDL5RoW1p+Xl8fy5cuZNi2IddQCJkdDxg749io8ugu+N/5x5ySY44bUnxLULSDsGBOIpUuXGrt27RoydvDgQSMpKcmIjo424uPjjaSkJKOhocGiCt/xxmsY5//gf/T1WF3NUGy5vAdiIBD4wzdliouLaWtrw+v10tHRQVtbG6mpqRZV+Y7379tRU62rIxC2Xd4/RAOBzWPCdLpiHipdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdIA7DsFvK2cTFMOD5I3+g0Mun0P6tf3zWQpiRCDOTYeZ8CDEtxHRUugkYBjz5BppvQHfHyOdOi4MFP4KkNOvkq/Rx4u2G/1RBR1Nor5uZDO4tMHVGeOoaCZU+Dnpfwc0voOf52F4/JdYfYhAz09SyRkU3cmOk/y3c/tvYhQN4u+B2Gbz1mlZWUKj0MdJ4HbrbRz5n0+/9j5HoeQGey6aVFRS2lm7XQODXz6Gl1rz5vvvav9uPFLaWnp+fT3FxMQUFBVRWVpKTk0Nubi6NjY2Wxoo9qgdM3gk9qjd3vpGwbfyInQOBn9wPw5zfwNJN4IhAG9q204MJBO7s7CQ7OxuXy0V6ejpZWVk0NDSEtS5vN3hfmT9v/xt43Wn+vIGwpfRgA4EdDgf79+/H4/FQX19PdnY2u3fvDmtto23exkNXGOd+H1su78EGAsfFxbFp06bB45mZmZSUlAR1jVCTkwdYuyyb4t99OWRstB36x45fOD70+a9/9Rsu3PzrmOoK5e0WW3b6WAOBT5w4wdatW8NaW9/b3vDN/aYnbHO/jy07fSyBwEVFRTQ0NHDx4sWgrjHWNyJ7X8G1U0PHPuzYAQY6/GPHP+QfF84S+8mYygoJW3Z6qIHAR48e5dy5c1RVVRETExPW2qbEQvR08+d1ToaYWebPGwhbdjoEHwhcVFRERUUF58+fJy4uLux1ORyQuCS4j+4IhUQXOCPUgraVHoja2lrWrl07+PzevXscOXKE1NRUNmzYMDheV1cX1jrmrTRf+rxV5s43EhNG+kAgcGFh4eCY2+0e8715PEyP94tvqzNnvtnL4IdzzJkrGPRPq2PkbR/c+Mv4/soG/j3Cmt9CdARz4G25kZsITI6GVdv80sZK1DRY9cvICgft9HHT+xLuVsDzttBeNyMR3L/w3yoijUo3AcPw399bvvL/Hj8S0dNhwWeQnBG53fqHqHQTMXz+z1Md+G/Yvm7/D0T09P//N+w8SEj1f6aLlah0gehGTiAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSD/A767tljqeP2lAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc = QuantumCircuit(3)\n", "qc.toffoli(0,1,2)\n", "qc.draw()" ] }, { "cell_type": "code", "execution_count": 23, "id": "d77fefe9-6595-417f-aaf3-1eda1de5b121", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAACDoAAAQ1CAYAAABeYT2rAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdeZjVdd0//ieLuySaS4rgmgroLS5YoTGjt7mUuRLWrX21RRSl1Mq0XCkoLRWshDSX7l8upKDmrWZaybjdlpBYGmauKKgsqUkqCszvDx1uSWWGc4b5nM+Zx+O6uK7hzOfMec7wPq+n3fO6z+nS3NzcHAAAAAAAAACAEuhadAAAAAAAAAAAgLay6AAAAAAAAAAAlIZFBwAAAAAAAACgNCw6AAAAAAAAAAClYdEBAAAAAAAAACgNiw4AAAAAAAAAQGlYdAAAAAAAAAAASsOiAwAAAAAAAABQGhYdAAAAAAAAAIDSsOgAAAAAAAAAAJSGRQcAAAAAAAAAoDQsOgAAAAAAAAAApWHRAQAAAAAAAAAoDYsOAAAAAAAAAEBpWHQAAAAAAAAAAErDogMAAAAAAAAAUBoWHQAAAAAAAACA0rDoAAAAAAAAAACUhkUHAAAAAAAAAKA0uhcdAGrNI4880uo1P/nJTzJixIhlXrPNNtu0VyQAYDnpcwAoP30OAOXXHn2uywF4L17RASpw4YUXFh0BAKiSPgeA8tPnAFB++hyASlh0AAAAAAAAAABKw6IDAAAAAAAAAFAaFh2gAhMnTiw6AgBQJX0OAOWnzwGg/PQ5AJWw6AAAAAAAAAAAlIZFB6jAkCFDio4AAFRJnwNA+elzACg/fQ5AJboXHYCOcd2UZOaLHf+4vdZODt654x+3M/nb75NXZhedguXVY/1k6z2KTgFmSFm19wwp8hyYh2/xXCwn55daYYaUkz6vP56L5eT8UivMkHLS5+V1wgknZNq0aYU89oABAzJ27NhCHhugnlh06CRmvpg87j+U69Irs5OXni06BVBWZgiJc1AL/BsA1TBDSJyDWuDfAKiGGULiHHSkadOmpampqegYAFTBW1dABY477riiIwAAVdLnAFB++hwAyk+fA1AJiw5QgREjRhQdAQCokj4HgPLT5wBQfvocgEpYdIAKDB48uOgIAECV9DkAlJ8+B4Dy0+cAVMKiA1Rgzpw5RUcAAKqkzwGg/PQ5AJSfPgegEhYdAAAAAAAAAIDSsOgAFejXr1/REQCAKulzACg/fQ4A5afPAahE96IDQBlNmjSp6AgAQJX0OQCUnz4HgPIrS5937949/fr1y0YbbZQuXbpk9uzZeeihh7JgwYL3vH7NNdfMMccck/POOy/Nzc0dnBag/nlFB6jAGWecUXQEAKBK+hwAyk+fA0D51XKfd+vWLQceeGBuvfXWvPLKK3nwwQfz61//OrfcckumTJmSV155JXfddVcOP/zwrLLKKkvut+aaa+bWW2/ND3/4w4waNarA7wCgfll0eNvkyZNz4IEHpnfv3ll11VXTq1evfPnLX87LL79cdDRq0LXXXlt0BACgSvocAMpPnwNA+dVqn++444554IEHcv3112fvvffOqquumsceeyy/+c1v8utf/zp//etf061bt+y22275xS9+kUceeSR77LHHkiWHXXfdNTNmzMgll1xS9LcCUJe8dcXbHnzwwey222456qij0qNHj0yfPj2nnXZaknTKEpo4qjF9tt0zuxx4Wptup/YsWrwol95ySm6b8vO8sfD17PThvXLCkIuy1hrrFh0NKAEzhBbOQrH8/IFqmCEkzkEt8G8AVMMMIXEOijB8+PD86Ec/Svfu3fPkk0/mggsuyBVXXJF58+Ytdd2aa66ZoUOH5sQTT8y2226b3/3ud3nmmWfSu3fvzJgxI42NjXnyyScL+i4A6ptXdHjb8ccfn2984xv51Kc+ld122y1f+tKX8pnPfCZ33XVX0dGgIhPuODv3Pvyr/Pgrf8jVpz6bJDnn6s8XnAooCzOEFs5Csfz8gWqYISTOQS3wbwBUwwwhcQ462vDhwzNu3Lh07949Y8aMSf/+/XPBBRe8a8khSebPn5/LLrssO+ywQ77zne+kubk5vXv3zssvv2zJAWAFs+iQZNGiRbnyyiuz2267ZYMNNki3bt2y0korZfz48VlzzTWTJE899VQaGhqy1VZbZbvttrMA0ck1NTUVHaFVt9x3cQ7d/eRs+MHNs8Zqa+WoT/0g9//t1rzw4tNFRwNKwAyhRT2fBX0O1DszhKT+z4E+B+qdGUJS/+eglvp8hx12yI9+9KMkyTHHHJOvfe1ree2111q936qrrpr//M//TJcuXdLc3Jy11lorffv2XdFxATo1iw5JjjjiiBx11FEZNGhQLrnkktx777354x//mB49emS77bZLkhx99NE59NBD8+ijj+aiiy7KZz/72bzxxhsFJ6coDz/8cNERlmn+ay9l9ksz8uFeOy25baN1t8jqq34gj896sMBkQBmYIbSo97Ogz4F6ZoaQdI5zoM+BemaGkHSOc1Arfd61a9f8/Oc/T/fu3XPBBRfkoosuatP91lxzzdx6663ZddddM2PGjHz/+99Pklx88cXp0aPHiowM0Kl1LzpA0R566KFceeWVueSSS/KlL31pye333HNPXnnlley0006ZO3du7r777tx4441JkkGDBmWjjTbKHXfckb333rvVx+jSpcsKy99Wh5x6Rzbu27hc9/njr0Zn6i3nLnXbm6/PT59t92zz12hqmpyv7rX7cj1u0U488cRWrxkzZkyr140ZM6a9Ii3Tucfcke23aFzqtlcXvJIkWWO1tZa6fc1Ve+bV1//ZIblYtqamyRn4uXI9N6hPZkg5tfcMea9zkHTMWVhR81Cf0xH0ObXCDCmnjujzjjoH+vwtnovlpM+pFWZIOenz1rVHn3dUl3/qU5/Kf/zHf+Tpp5/Ot7/97Tbd59+XHBobG/P000/nE5/4RAYOHJjPf/7zGTdu3FL3aWpqqonfGwHUqubm5jZd1+lf0WHGjBlJkm222WbJbW+++Wa+9rWvJUl22mmnzJgxIxtssEFWWWWVJddsttlmefrp+nhZqPezywGnZvjFLy31Z6Otdis6Fm2w+ipvbYn+67WXl7p9/usvZfVVP1BEJKBEzBBaOAvF8vMHqmGGkDgHtcC/AVANM4TEOehIxxxzTJLkRz/6UV599dVWr3+vJYcnn3wyixcvzg9/+MMkyfDhw1doZoDOrNO/osP222+fVVddNaecckpOP/30zJs3L+eff35efPHFdOvWLQMGDMgjjzxS1WO0detkRfrx7cnjszv+cRsaGjNxVPHf//Joy7/3mDFjMmzYsGVec/7557dXpGWaMiF56dmlb1tztZ5Zv2efPDbzT9my14AkyXPznsirr/8zm2/4Hx2Si2VraGhM8/hyPTeoT2ZIObX3DHmvc5B0zFlYUfNQn9MR9Dm1wgwpp47o8446B/r8LZ6L5aTPqRVmSDnp89a1R5+viC5vbGxMU1PTkr937do1DQ0NSZIrrrii1fu/35JDixtuuCHz58/Ptttum3XXXTdz585d8rmGhoZMnjy5/b4ZgE6q07+iQ69evXLVVVfl+eefzwEHHJDzzjsvJ510UgYNGpStt946q6++evr06ZMXXnghCxYsWHK/J598MptsskmBySnSyJEji47Qqk9+dFh+OfmcPPePJ/Ov1/+Zn91ycnbeau98aJ1Ni44GlIAZQot6Pgv6HKh3ZghJ/Z8DfQ7UOzOEpP7PQS30+TbbbJM11lgjTz31VGbPXvb/12hrSw7JW68c/sADDyR565XDAWh/nf4VHZLkoIMOykEHHbTUbUOHDl3y8brrrptdd901l156aY499tjce++9mTlzZnbf3fv3dVbvPB+16rO7n5L5r76YERcMzJuLFmTHD38ip/xX65uoAIkZwv+p57Ogz4F6Z4aQ1P850OdAvTNDSOr/HNRCn2+44YZJkscff3yZ17VlyaHF448/no9//ONLvjYA7atLcy28r0IJPPHEEznyyCPz/PPPZ+WVV86FF1645GWMyqCot67YYv3kK5/o+MetRlteSqtv376ZPn36Mq/ZZptt2ivSMr3fy41T23punOz82aJTgBlSVu09Q4o8BytqHupzOoI+p1aYIeWkz1unz+kI+pxaYYaUkz5vXXv0+Yro8n9/64okWXnlldO9e/e8+uqr73u/D37wg/n973+fnj17LnPJIUlWW221LF68eKlXC0+8dQVAe/GKDm20+eab58477yw6BgAAAAAAAO3sjTfeyBtvvLHMa+bNm5c99tgjPXr0yFNPPbXMa1977bV2TAfAv7PoAAAAAAAAAG0wb968zJs3r+gYAJ1e16IDQBk1NjYWHQEAqJI+B4Dy0+cAUH76HIBKWHSACowfP77oCABAlfQ5AJSfPgeA8tPnAFTCogNUYPjw4UVHAACqpM8BoPz0OQCUnz4HoBIWHaACkydPLjoCAFAlfQ4A5afPAaD89DkAlbDoAAAAAAAAAACUhkUHAAAAAAAAAKA0LDpABaZPn150BACgSvocAMpPnwNA+elzACrRvegAdIxea3eux13RrrnmmgwdOrToGABAFfQ5AJSfPgeA8iuizwcMGFDR/Z6Y8VySZPM+Gy71cUc8NgBLs+jQSRy8c9EJ6suZZ57p/5ACACWnzwGg/PQ5AJRfEX0+duzYiu53yjkXJ0nOPnnYUh8D0PG8dQUAAAAAAAAAUBoWHQAAAAAAAACA0rDoABUYN25c0REAgCrpcwAoP30OAOWn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9a9/ncWLFy91bffu3XPggQfmm9/8ZgYOHJhbbrklL7/8ctZaa63cc8892WeffTJ//vwivg2gIF7R4W3HH398vvGNb+RTn/pUdtttt3zpS1/KZz7zmdx1111FR4Pl1rVrt5zyuSsyaeS8XHTig5n78rP54S+PLDoWUBJmCC2chWL5+QPVMENo4SwUy88fqIYZQgtngXp14YUX5uijj85rr72Wo446Ko2Njbn55pvfteSQJAsXLszEiRPz0Y9+NN/73vfS3NyctdZaK88884wlB+ikLDokWbRoUa688srstttu2WCDDdKtW7estNJKGT9+fNZcc828+OKL2W+//bLVVltl++23z1577ZXHHnus6NgUqKmpqegIy/Slfb+XLXvtkO7dVkrPNdfLQbsdnz8/PrnoWEBJmCG0qPezoM+BemaG0KLez4I+B+qZGUKLej8Ltd7nrBhDhw7NMccck9deey377rtvm19dfZNNNsnhhx+eLl26pLm5Ob17984uu+yygtMCtciiQ5IjjjgiRx11VAYNGpRLLrkk9957b/74xz+mR48e2W677dKlS5eccMIJefTRR/Pggw9mv/32yxe+8IWiY1Oghx9+uOgIy+WBx36XzTfavugYQEmZIbSot7Ogz4HOxAyhRb2dBX0OdCZmCC3q7SyUrc+pXs+ePXPhhRcmSU444YQ2L7tsttlmmTx5cvr06ZN77rkn3/nOd5Ikl156aVZZZZUVlheoTd2LDlC0hx56KFdeeWUuueSSfOlLX1py+z333JNXXnklO+20U3r27Jk999xzyecGDRqUH/zgB21+jC5durRr5koccuod2bhv43Ld54+/Gp2pt5y71G1vvj4/fbbd833u8W5NTZPz1b12X67HLdqJJ57Y6jVjxoxp9boxY8a0V6RlOveYO7L9Fo3v+/m7/jwpN93305x3jK3YWtLUNDkDP1eu5wb1yQwpp/aeIa2dg2TFnYUVNQ/1OR1Bn1MrzJBy0uet0+d0BH1OrTBDykmft649+ryjurwtTj77oiRv/d7nnR/XslrMfOSRR2bdddfNXXfdlYsvvrhN9/n3JYd99tknr7/+eg455JBsu+22GTJkSK688sql7tPU1FT49wosv+bm5jZd1+lf0WHGjBlJkm222WbJbW+++Wa+9rWvJUl22mmnd91n7NixOfDAAzskX5F2OeDUDL/4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9Dm1Qp+Xkz5vXXv0eUd1eVuccs7FSd76vc87P65lMneconM3NjYu9VYwK6+8cv7f//t/Sdr+yijvteTQ3NycN954I+PGjct5552Xo446KjfffPO77jd58uR2+16gLSw6TJ2ajTba6F23X3311enatWv22muvzJ07N3ffffeSrcJBgwZlo402yh133JG99967oyNDqx568u68PH9Ojjpv2yRJc/NbLyF09Pn/kSP3GZX9Bx1bZDyghpkftHAWiuffAKiU+UELZ6F4/g2ASpkftHAWgEptt912+cAHPpDp06fn4YcfbvX691tyaDFx4sScd9552XXXXVdkbGgziw5Tp2bBggVZsGBBVllllSTJiy++mLPPPjuHH354evfunT/96U/ZYIMNlnw+STbbbLM8/fTTRcWmYCNHjiw6wjI1bD80O354zyV/n/Pyszn+Jx/L94+6LX3W36bAZECtMz9o0RnOgj4H6pX5QYvOcBb0OVCvzA9adIazUOt9DmW1ww47JEmmTGn9FWFaW3JIkhkzZmTOnDlZb7310rt37zzzzDMrJDe0VadedJg5c2aef/75bLbZZjnssMNy9NFHZ+7cuRk1alR69OiRCy64oOiI1KihQ4cWHWGZVl159ay68upL/r5o8cIkyTo9PpTVVlmzqFhACZgftOgMZ0GfA/XK/KBFZzgL+hyoV+YHLTrDWaj1PoeyWrRoUaZPn56HHnpomdd97GMfa3XJocUf/vCHbLbZZllttdVWRGRYLp160WHq1KlJkuuvvz7f//73c9BBB2W11VbLwQcfnNGjR6dnz55Jkj59+uSFF15Y6lUfnnzyyWyyySZFRV/hhpw2eblu72z69u2b6dOnFx2jzT60zqa5/Ye1//5VQO0xP2hRj2dBnwOdhflBi3o8C/oc6CzMD1rU41koW59DWVx++eW5/PLLW73u0UcfzWOPPZYpU6Ysc8khST796U+3Z0SoSqdedNh///2XPFknTJjwvtetu+662XXXXXPppZfm2GOPzb333puZM2dm991376ioAAAAAAAAAO1q3rx5GTx4cP75z38uc8kBak2nXnRYHj/96U9z5JFHZuzYsVl55ZVz9dVXZ+WVVy46FgAAAAAAAEDFXn755aIjwHKz6NBGm2++ee68886iY1AjGhsbi44AAFRJnwNA+elzACg/fQ5AJboWHQDKaPz4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qJI+B4Dy0+cAUH76HIBKdC86AJTRpEmTio4AAFRJnwNA+elzACg/fQ7Uu969e+ejH/1oBgwYkLXXXjsLFy7ME088kalTp+aPf/xjFixY8K77HHPMMdlxxx1z9NFHp7m5uYDUtc8rOrxt1qxZ6dKlS66++uqio1ACZ5xxRtERAIAq6XMAKD99DgDlp8+BevXJT34yt912W2bMmJFrrrkm3/72tzN8+PB85StfyZgxY3LnnXfmmWeeydlnn50NNthgyf2OOeaYjB8/PkcddVT22GOPAr+D2mbR4W1Tp05NkgwcOLDgJJTBtddeW3QEAKBK+hwAyk+fA0D56XOg3qy33nq59tprc/PNN+cTn/hEXn311dx888357ne/m+OOOy4nnnhiLr744jz88MNZb731cvLJJ+evf/1r/uu//mvJkkOSfPWrX83vfve7gr+b2uWtK942derUrL322tlyyy2LjlITJo5qTJ9t98wuB57WptupTX969Le5/Den5annH8rK3VdNw/ZD89WDxxUdCygJM4QWzkKx/PyBapghJM5BLfBvAFTDDCFxDgDKYvPNN8/vfve7bLrppnnllVcycuTIXHLJJXn55Zff8/qPfOQjGTlyZPbee+9ceeWVS27/6le/mh//+McdFbuULDq8bcqUKdl5551z1VVX5Qc/+EEeffTRbLXVVjn33HOz5557Fh0PltuDj0/Od34xJF/7zCX5aL9PJ83NefqFvxYdCygJM4QWzkKx/PyBapghJM5BLfBvAFTDDCFxDgDKYt11112y5HDffffl0EMPzYwZM5Z5nz/84Q/ZZ599csUVV+Swww5Lktx0002WHNrAosPbpk6dmq5du+bSSy/NyJEj06VLl5xxxhk54IAD8sgjj6R3795FR6SGNDU1FR2hVZfe8q3s97FjMvg/hiy57cMb71hgIqBMzBBa1PNZ0OdAvTNDSOr/HOhzoN6ZIST1fw7K0OcAbXHhhRdm0003zR/+8Ifsueee+de//tWm+x1zzDFLlhwWL16cfffdNzvvvHOmTJmyIuOWnkWHJLNmzcrzzz+fj3/847ntttvSrVu3JMmWW26Z/v3756abbsrw4cMr/vpdunRpr6gVO+TUO7Jx38YOf9ympsn56l67d/jjVuPEE09s9ZrHH388W2yxxTKvGTNmTHtFWqZzj7kj22/RuNRtr73xr/zt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zj///PaKtExTJiQvPfven7v5vouy+Ybbp2+fj3RIFtquoaExzePL9dygPpkh5dTeM2RZ5yBZsWdhRc1DfU5H0OfUCjOknPR56/Q5HUGfUyvMkHLS561rjz7vqC5vi1POuTjJW7/3eefHtUzmjlPG3GXMnJQzd9GZGxsb09TUtNRt++67b5Lksssua9PXeL8lhyS566678ve//z0f/vCHM2DAgCXvqJAkDQ0NmTx5cvXfxL/xig55a9HhqaeeWurlOF588cWcffbZOfzww9O7d+8ltx933HHZfPPNc8ghh2TSpEkdtpFCbRk5cmTREVr15sI3ctuUn2e/j9ruBZafGUKLej4L+hyod2YILer5LOhzoN6ZIbSo57NQhj4HqDfdunXL9ttvnyT53//931avX9aSQ4v77rsvSbLTTju1b9j30ekXHWbOnJnnn38+PXv2zGGHHZbbb789V199dXbbbbf06NEjF1xwwVLXX3jhhXniiSdy3XXX5aSTTsr8+fMLSk6Rhg4dWnSEVt390HV5Y+Hr+c8dDys6ClBCZggt6vks6HOg3pkhtKjns6DPgXpnhtCins9CGfocoN5ssMEGWW211fL888/npZdeWua1bVlySJLp06cnSTbbbLP2jvueOv3LEUydOjVJcv311+f73/9+DjrooKy22mo5+OCDM3r06KXeruKdGhoa0rVr19xzzz3Ze++9OzBxxxhy2uTlur2z6du375Ina63afcBns/uAzxYdAygpM4QW9XwW9DlQ78wQWtTzWdDnQL0zQ2hRz2ehDH0OUG/mzJmT7bffPl27Lvt1EVZfffUcdNBBrS45JMnPf/7z/OY3v8msWbPaO+576vSLDvvvv/+S9z+ZMGHC+143f/78zJs3L5tsskmS5IEHHsjjjz+evn37dkhOAAAAAAAAAKjWm2++mT//+c+tXvfqq69mjz32yEc/+tHcfPPNy7z2ueeey3PPPddeEVvV6Rcd2upf//pXDj300MyfPz/du3fPqquumiuuuCJ9+vQpOhoAAAAAAAAAtLt58+a1uuRQBIsObbTBBhvkvvvuKzoGNaKxsbHoCABAlfQ5AJSfPgeA8tPnAFRi2W+6Abyn8ePHFx0BAKiSPgeA8tPnAFB++hyASlh0gAoMHz686AgAQJX0OQCUnz4HgPLT5wBUwqIDVGDy5MlFRwAAqqTPAaD8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bBl77733Zo+dO3dutGvXLvbcc8/Nbm/ZsmVcfvnlMWrUqJg0aVJcccUVmy1T/P3vf49zzz03Xn755WjcuHGMHz8+PvvZz+7Ar5IimzVrVt4RqtTjoL4RETF/ycwt7tu9WevKtzds2BD169WPDRs3xEuvL/YfQoD5QdnQ50BdZn5QLore584iUAozhHJR9D4HoJiSXHQ499xz48EHH4zhw4fHZZddFq1atYqGDRvGcccdFwcffHBEbFpo+NdXbYjY9IoOW7s9IuKggw6KdevWRadOneLqq6/e7L5vfOMb8cUvfjGGDh0aTz31VHzhC1+IpUuXRqNGjarMW69evQxfJXkZMWJEldcsWbIkOnbsuN1rKioqairSdt3wzRlxSMfemR7b78oWsWrNe7F+w7o4eP9jovuBJ9ZsOLZp1qyZ0ePLfUr+OKU8/6Qt7+8h8yNfNfX812X6nNqQ9ywmfXl/D5kf+dLnVSuXPncW81UTZ1GXlzd9Xt70edVqos9rq8ur47If3BYRm37u89G3i0zm2pNi7hQzR6SZO8XMEfnk3rhxY7WuS27R4S9/+Uvce++98ZOf/CTOP//8ytv/8Ic/xDvvvBPdu3ePiIj58+fH4MGbv5zX22+/HbNnz45LL710i4/71FNPxdlnnx09e/aMp556Kh577LE47rjjIiLitddeiyeffDKmT58eERE9e/aMtm3bxowZM6Jv37476kulwKZPn16tf0Erup9/761Ys251zF7063hxxV+jQf3kRgKQE/ODukCfA+XO/KAuqAt97iwCpTBDqAvqQp8DUPuS+7eeZcuWRURE586dK29bu3ZtfOtb34qIiO7du8c777wTK1eujPbt22/22JtvvjlWr169xSs6PPPMM3HKKafEmWeeGXfddVccccQRcemll8acOXOiXr16sWzZsthrr72icePGlY/Zb7/94oUXXqhW5upunVAMixYtqvKaioqKLRZp/tVNN91UU5G2a84DEW8tz/74Rg0bx1Gf7BdX/OfnolmTFvH5I79Rc+HYpl69esfGCaXPhlKff9JVhO8h8yM/NfX812X63HmsDUWYxaStCN9D5kd+9HnVyqnPncX81MRZ1OXlTZ+XN31etZro89rq8uoYOe72iNj0c5+Pvl1kMteeFHOnmDkizdwpZo4odu76eQf4uA455JBo0qRJjBw5Mn73u9/F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x7333htHH3107LXXXtGgQYPYaaedYsKECdGsWbOI2LTo0LJly9h77703e+zcuXOjXbt2seeee252e8uWLePyyy+Pu+66K84+++y44oorNlumGD16dBx44IFRv379mDp16o7/Iim0BQsW5B2hZA/98bZo0miX6H3oF/OOAiTG/KCu0OdAOTM/qCtS73NnESiFGUJdkXqfA5CPJF/R4dxzz40HH3wwhg8fHpdddlm0atUqGjZsGMcdd1wcfPCml+iaO3fuFq/aELHpFR22dntExEEHHRTr1q2LTp06xdVXX73ZfSeddFIMHDgwzjvvvI+dt169eh/7MeRnxIgRVV5TUVFR5XUVFRU1FWm7bvjmjDikY++P9ZhX31wW9z12Tdxy4Z92TCiqNGvWzOjx5T4lf5wszz91Q17fQ+ZHMdTU81+X6XNqgz6nVPq8vOnzqtX1PncWi6EmzqIuL2/6vLzp86rVRJ/XVpdXx2U/uC0iNv3c56NvF5nMtSfF3Clmjkgzd4qZI/LJvXHjxmpdl9wrOvzlL3+Je++9N374wx/G9ddfH6eeemoceeSRsWbNmnjnnXeie/fuERExf/78LRYa3n777Zg9e/ZWFx2eeuqpOPvss6Nnz56xaNGiyl+B8X969uwZ+++//477wqAW3TjlgvjKcaOi1W7t8o4CJMb8gOJwHoGszA8oBmcRKIUZAgCUu+Re0WHZsmUREdG5c+fK29auXRvf+ta3IiKie/fu8c4778TKlSujffv2mz325ptvjtWrV2+x6PDMM8/EKaecEmeeeWbcddddccQRR8Sll14ac+bMqZGNlOpunVAMixYtqvKaioqKGDx48Havuemmm2oq0nbNeSDireUf7zFzn3sknvvHn2Pib74bERHvrVoZf3txdsz522+jYugTOyAl/6pXr96xcULpsyHL80/dkNf3kPlRDDX1/Ndl+tx5rA36nFLp8/Kmz6tW1/vcWSyGmjiLury86fPyps+rVhN9XltdXh0jx90eEZt+7vPRt4tM5tqTYu4UM0ekmTvFzBHFzp3cosMhhxwSTZo0iZEjR8aVV14Zr7/+etx0003x5ptvRoMGDeLQQw+NnXfeOdq2bRtTp06NM844IzZs2BB33XVXjB8/PiJis0WH559/Pvr27RtHHXVUTJw4MRo0aBDXXnttnHLKKXH//ffHV77ylby+VAps7NixeUeo0voN62P9+rWxdt2aiIhYs3ZVRETs1LBx3PfdFze79nuTvhAH7/fZ6N/rklrPCRSP+UG50OdAXWZ+UC6K3ufOIlAKM4RyUfQ+B6CYklt0aNeuXdx3331x6aWXxumnnx7dunWLSy+9NB566KFo3Lhx7LzzzhERMWnSpBg+fHgccMABsc8++8SgQYPi/PPPjwkTJsS+++4bERGvvPJKnHDCCdGxY8eYMmVKNGy46Y/jc5/7XBx99NHx3e9+N/r37x+NGjXK68uloAYMGJB3hCo9+udJccPkQZXvn3JF04iImHT50mizx76bXbtTw8axc5NdY/fme9VmRKCgzA/KhT4H6jLzg3JR9D53FoFSmCGUi6L3OQDFlNyiQ0TEGWecEWecccZmt/1rER577LHx7LPPbvHY6667rvLtNm3axJIlS7b6OZ54wst7sW1dunSJhQsX5h1ju/r2GBh9ewys1rU3Dpm5Q7MAaTE/KBf6HKjLzA/KRdH73FkESmGGUC6K3ucAFFP9vAOk4sorr4z27dvHH//4x/jGN74R7du33+aSBAAAAAAAAACwY1h0qKbvfe97sXz58li9enW8/vrrsXz58ujYsWPesQAAAAAAAACgrFh0gAx69+6ddwQAoET6HADSp88BIH36HIAsLDpABhMmTMg7AgBQIn0OAOnT5wCQPn0OQBYWHSCDIUOG5B0BACiRPgeA9OlzAEifPgcgC4sOkMHMmTPzjgAAlEifA0D69DkApE+fA5CFRQcAAAAAAAAAIBkWHQAAAAAAAACAZFh0gAwWLlyYdwQAoET6HADSp88BIH36HIAsLDpABpMnT847AgBQIn0OAOnT5wCQPn0OQBYWHSCDMWPG5B0BACiRPgeA9OlzAEifPgcgC4sOAAAAAAAAAEAyLDoAAAAAAAAAAMmw6AAZjB8/Pu8IAECJ9DkApE+fA0D69DkAWVh0gAy6deuWdwQAoET6HADSp88BIH36HIAsLDpABr169co7AgBQIn0OAOnT5wCQPn0OQBYWHQAAAAAAAACAZFh0AAAAAAAAAACSYdEBMujRo0feEQCAEulzAEifPgeA9OlzALKw6AAZzJ49O+8IAECJ9DkApE+fA0D69DkAWVh0AAAAAAAAAACSYdEBAAAAAAAAAEiGRQfIYOrUqXlHAABKpM8BIH36HADSp88ByMKiAwAAAAAAAACQDIsOkEH//v3zjgAAlEifA0D69DkApE+fA5CFRQcAAAAAAAAAIBkWHQAAAAAAAACAZFh0gAyGDRuWdwQAoET6HADSp88BIH36HIAsLDpABsOHD887AgBQIn0OAOnT5wCQPn0OQBYWHSCDY445Ju8IAECJ9DkApE+fA0D69DkAWVh0gAxWrFiRdwQAoET6HADSp88BIH36HIAsLDoAAAAAAAAAAMmw6AAZdO3aNe8IAECJ9DkApE+fA0D69DkAWVh0gAymTZuWdwQAoET6HADSp88BIH36HIAsLDpABqNHj847AgBQIn0OAOnT5wCQPn0OQBbJLjrMnDkz+vXrF3vvvXc0adIk2rVrFxdccEGsXLkyIiLWr18fu+yyS4wdO3azx61bty6aNGkS48aNq7xt6dKl0bhx4xgxYsRm11533XWx0047xfTp03f8F0RSpkyZkncEAKBE+hwA0qfPASB9+hyALBrmHSCr+fPnx9FHHx1f//rXo3nz5rFw4cIYNWpURET85Cc/iUWLFsX7778fhx122GaPW7BgQaxevXqz2/fbb78YOnRoTJgwIS655JJo37593HHHHTFq1Kj46U9/Gqeddlqtfm1QE2bMeyCmP3VrPP/S/Fi19v347bh1lffNXzIzvv3jPtGk0S6Vt+3/iU/Ffwx/Ko+oQMGYH1AcziOQlfkBxeAsAqUwQwAAti3ZRYeLLrqo8u0NGzZEz549Y/78+fHYY49FRMTcuXMjIrZYdHj66ae3evuoUaNi4sSJMXbs2DjppJNiyJAhUVFREeecc86O/DJgh2nWdPc49cihsWbtB1ExbfAW99ev3yB+ee27OSQDis78gOJwHoGszA8oBmcRKIUZAgCwbUkuOqxfvz4eeOCBmDBhQjz33HPx6quvVt53+OGHR8SmRYeWLVvG3nvvvdlj586dG+3atYs999xzs9tbtmwZl19+eYwaNSomTZoUV1xxReUyxZtvvhnnnHNO/O1vf4umTZvGXnvtFePHj49OnTrt4K+Uopo1a1beEarU46C+EbFpuxvg4zA/KBf6HKjLzA/KRdH73FkESmGGUC6K3ucAFFOSiw7nnntuPPjggzF8+PC47LLLolWrVtGwYcM47rjj4uCDD46ITQsN//qqDRGbXtFha7dHRBx00EGxbt266NSpU1x99dWVt9erVy8uvvjiOP744yMi4pZbbolBgwbFE088Ua289erV+7hfIjkaMWJEldcsWbIkOnbsuN1rKioqairSdt3wzRlxSMfeH/txGzasj69cs3esW782DmjfPc47+bro2PaQmg/IVs2aNTN6fLlPyR8n6/NP+vL8HjI/8ldTz39dps+pDfqcUunz8qbPq1YOfe4s5q8mzqIuL2/6vLzp86rVRJ/XVpdXx2U/uC0iNv3c56NvF5nMtSfF3Clmjkgzd4qZI/LJvXHjxmpdV3+HptgB/vKXv8S9994bP/zhD+P666+PU089NY488shYs2ZNvPPOO9G9e/eIiJg/f/4WCw1vv/12zJ49e6uLDk899VScffbZ0bNnz1i0aFHlr8CIiGjRokXlkkNERM+ePWPp0qU76CskBdOnT887Qkn23rNz/HjEvJh0+dK489JFsf8nPhXfue3YeG3lS3lHAwrO/KAu0edAuTI/qEtS7nNnESiFGUJdknKfA5Cf5F7RYdmyZRER0blz58rb1q5dG9/61rciIqJ79+7xzjvvxMqVK6N9+/abPfbmm2+O1atXb7Ho8Mwzz8Qpp5wSZ555Ztx1111xxBFHxKWXXhpz5szZ6kbKzTffHP369at25upunVAMixYtqvKaioqKGDx4y9+L91E33XRTTUXarjkPRLy1/OM9Zo9d28Qeu7aJiIhmTVvE+Z/7fjz+zNSY/ddfx8mfPn8HpORf9erVOzZOKH02ZHn+qRvy+h4yP4qhpp7/ukyfO4+1QZ9TKn1e3vR51ep6nzuLxVATZ1GXlzd9Xt70edVqos9rq8urY+S42yNi0899Pvp2kclce1LMnWLmiDRzp5g5oti5k3tFh0MOOSSaNGkSI0eOjN/97ndx//33R8+ePeP111+PBg0axKGHHhrNmzePtm3bxtSpU+PFF1+MF154IcaOHRu33nprRMRmiw7PP/989O3bN4466qiYOHFiNGjQIK699tqYO3du3H///Vt8/rFjx8bixYvj+uuvr7WvGWpD/Xr1CzOYgLSYH1AcziOQlfkBxeAsAqUwQwCAcpLcokO7du3ivvvui1deeSVOP/30uPHGG+M73/lO9OzZMw466KDYeeedIyJi0qRJ8dprr8UBBxwQJ554YjRu3DjOP//8aNGiRey7774REfHKK6/ECSecEB07dowpU6ZEw4abXuDic5/7XBx99NHx3e9+N9as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AKBE+hwA0qfPASB9+hyALCw6AAAAAAAAAADJsOgAAAAAAAAAACTDogNkMGzYsLwjAAAl0ucAkD59DgDp0+cAZGHRATIYPnx43hEAgBLpcwBInz4HgPTpcwCysOgAGRxzzDF5RwAASqTPASB9+hwA0qfPAcjCogNksGLFirwjAAAl0ucAkD59DgDp0+cAZGHRAQAAAAAAAABIhkUHyKBr1655RwAASqTPASB9+hwA0qfPAcjCogNkMG3atLwjAAAl0ucAkD59DgDp0+cAZGHRATIYPXp03hEAgBLpcwBInz4HgPTpcwCysOjwL+bMmRNnnnlmtG/fPho3bhzt27ePfv36xQcffJB3NApkypQpeUcAAEqkzwEgffocANKnzwHIomHeAYpk3rx5cdRRR8VZZ50VEyZMiObNm8fSpUtjxowZ0bRp07zjwccyY94DMf2pW+P5l+bHqrXvx2/Hrau8777Hrov7f3/dZtevWvNe9DvqwhjW75bajkoN295zD9VhfkBxOI/lS59TKvMDisFZLG/6nFKZIQAA22bR4SPuueeeaNmyZdx3332Vt/Xu3TsGDRqUYyrIplnT3ePUI4fGmrUfRMW0wZvd95XjroivHHdF5fvLV/wtzvv3znHc4V+t7ZjsANt77qE6zA8oDuexfOlzSmV+QDE4i+VNn1MqMwQAYNssOnxE69at4+WXX47hw4fHeeedF4cffvhm948ePToeeOCBWLx4cUyePDn69++fU1LyNmvWrLwjVKnHQX0jImL+kplVXvurP90endoeFp07fHoHp6I2fJznHrbG/KBc6HOKTJ9TKvODclH0PncWy5s+p1RmCOWi6H0OQDFZdPiIiy++ONasWRN333133HrrrdGhQ4cYPHhwXH755VG/fv046aSTYuDAgXHeeed9rI9br169HZSYHWHEiBFVXrNkyZLo2LHjdq+pqKioqUjbdcM3Z8QhHXtnfvyadavjd3PuivNOvq7qi6kxs2bNjB5f7lPyxyn1+SddRfgeMj/yU1PPf12mz6kNRZjFpK0I30PmR370edXKqc+dxfzUxFnU5eVNn5c3fV61mujz2ury6rjsB7dFxKaf+3z07SKTufakmDvFzBFp5k4xc0Q+uTdu3Fit6+rv0BSJadSoUYwaNSr+9re/xXPPPRfHH398jBo1KqZOnRoRET179oz9998/55QU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7rnn8p3vfCdPPPHEfte+973v5S//8i+zevXqnH766dmzZ0+2bNmSV1999T195rY0NTXnX554MiOPG5KxtccdlvcAAAAAAACg844bMihnNMzIzl3/mfGjRxQ7TqcUCoUsWTQnN3/3wSxZNCdl3XgFincaN6omp82oS++ePVMzbHCx43RKeXlZLjp3fr5z349y3hmzih0HjnqFliO9UU0nNTU1Zfv27Rk5cmTWr1+fj3zkI5167tFHH828efPS0NCQxx9/vPX8Y489lrlz5+bv//7vc9lllyV5e0WHuXPn5o477kiSXHnllbn22msP2Lvn8ssvz4YNG/Lkk08e0me58tpbDuk5AAAAAAAAAHi/+LsvrOzUfd1m64qmpqZ89atfTV1dXXr37p3KysqMHDkySfLMM88c9Lxly5btdzxnzpwMHTo0jz322EHPOvnkk/PUU09l1apV+fGPf5xdu3Yd9AwAAAAAAAAA4L3rNltXXHXVVfna176WL37xi2loaEj//v2zd+/ezJw5M2+++eZBzxs6dOgB54YMGZKXX375oGctX748e/bsye23356bb745ZWVlWbBgQa677rpMnDixw+c72zpJkn97cnPuf/hnWXHhoowbVXPQWQEAAAAAAAA6sm9V+r/7wsr9Xnd3pZi7FDMn3Tt3t9m6oqamJgsXLsxtt93Weu43v/lNxo4dm6uvvjpr1qzp1Jx9W1fceOONWbVq1X7Xhg0bljlz5uTuu+9O0vmtK95p586d+elPf5rPf/7z2b17d37729+m0MF+RrauAAAAAAAAAID2ldzWFW+88UYqKyv3O3f77bcf8rx9ZYZ9Hnvssbz44ouZM2dOm89UV1cnSbsrSPTv3z+LFy/OpZdemueffz5//OMfDzkjAAAAAAAAAHBwus3WFWeffXa+9a1vpa6uLhMmTMiPfvSjPPDAA4c8r7GxMR/72MeyfPnyvPDCC7nqqqsyduzYfPKTn2zzmX3bUKxbty5nnnlmysvLU19fn0svvTR9+vTJaaedliFDhqSxsTE33XRTTjnllAwYMKDDLJ1pnTQ1Neert9ydY/r1yZ//2XkdrhIBAAAAAAAAcKi687YE7SnF3KWYOeneubtN0eHrX/96CoVC1qxZkz/96U+ZN29eHn744YwaNeqQ5q1bty4/+clP8vGPfzxvvfVWFixYkBtvvDG9evVq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\n", "text/plain": [ "
" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#create all Qubits, this time with names\n", "a_qubits = QuantumRegister(4, name='a')\n", "b_qubits = QuantumRegister(4, name='b')\n", "c_qubit = QuantumRegister(5, name='c')\n", "aux_qubits = QuantumRegister(3, name='aux')\n", "s_qubits = QuantumRegister(4, name='s')\n", "o_qubit = QuantumRegister(1, name='o')\n", "a_bits = ClassicalRegister(4, name='a_bits')\n", "b_bits = ClassicalRegister(4, name='b_bits')\n", "\n", "qc = QuantumCircuit(a_qubits, b_qubits, c_qubits, aux_qubits, s_qubits, o_qubit, a_bits, b_bits)\n", "\n", "#Initialize into to balanced superposition\n", "qc.h(a_qubits)\n", "qc.h(b_qubits)\n", "\n", "#Initialize Oracle Qubit onto Linear Down Polarization (could also use H->RZ->RZ)\n", "qc.initialize([1, -1]/np.sqrt(2), o_qubit)\n", "\n", "qlist = []\n", "for qubit in a_qubits:\n", " qlist.append(qubit)\n", "for qubit in b_qubits:\n", " qlist.append(qubit)\n", "for qubit in c_qubits:\n", " qlist.append(qubit)\n", "for qubit in aux_qubits:\n", " qlist.append(qubit)\n", "for qubit in s_qubits:\n", " qlist.append(qubit)\n", " \n", "qlist2 = []\n", "for qubit in s_qubits:\n", " qlist2.append(qubit)\n", "qlist2.append(c_qubit[4])\n", "qlist2.append(o_qubit)\n", "\n", "qlist3 = []\n", "for qubit in a_qubits:\n", " qlist3.append(qubit)\n", "for qubit in b_qubits:\n", " qlist3.append(qubit)\n", "\n", "#first grover iteration\n", "qc.barrier()\n", "qc.append(nbit_addition_clean(4), qlist)\n", "qc.append(comparator_17(),qlist2) \n", "qc.append(nbit_addition_clean(4), qlist)\n", "qc.append(grover_operator(8), qlist3)\n", "\n", "\n", "#second grover iteration\n", "qc.barrier()\n", "qc.append(nbit_addition_clean(4), qlist)\n", "qc.append(comparator_17(),qlist2) \n", "qc.append(nbit_addition_clean(4), qlist)\n", "qc.append(grover_operator(8), qlist3)\n", "\n", "\n", "#third grover iteration\n", "qc.barrier()\n", "qc.append(nbit_addition_clean(4), qlist)\n", "qc.append(comparator_17(),qlist2) \n", "qc.append(nbit_addition_clean(4), qlist)\n", "qc.append(grover_operator(8), qlist3)\n", "\n", "\n", "#that's it, we are ready to measure a and b\n", "qc.barrier()\n", "qc.measure(a_qubits, a_bits)\n", "qc.measure(b_qubits, b_bits)\n", "\n", "qc.draw(fold=-1)" ] }, { "cell_type": "markdown", "id": "eee564b1-1b32-423e-a650-4635e50d07f5", "metadata": {}, "source": [ "Now we run the code 100 times to see the results distribution. Keep the fingers crossed." ] }, { "cell_type": "code", "execution_count": 26, "id": "d2b1cf41-8d99-4b84-b26d-c54808e2fd98", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc_t = transpile(qc, sim)\n", "result = sim.run(qc_t, shots=100).result()\n", "cts = result.get_counts()\n", "plot_histogram(cts)" ] }, { "cell_type": "markdown", "id": "4d3e6435-7450-4e10-a3c4-4641bd3bb1d7", "metadata": {}, "source": [ "The results are all combinations of a and b that produce 17. You can verify by taking the first block of 4 bits and add them with the seocnd block of 4 qubits. Example from the first 0010 (2) + 1111 (15) = 17.\n", "\n", "The same is true for all results (at least to should be true for most, because we enver end up perfetly at $|\\beta\\rangle$. But, and this is important: with just three steps we (rbute force) find a solution in a serach space with 256 possible items. . This is amazing." ] } ], "metadata": { "kernelspec": { "display_name": "Qiskit v0.35.0 (ipykernel)", "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.8.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }