{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "338a339b", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:14.185418Z", "iopub.status.busy": "2024-03-26T18:58:14.185143Z", "iopub.status.idle": "2024-03-26T18:58:14.187791Z", "shell.execute_reply": "2024-03-26T18:58:14.187382Z" }, "nbsphinx": "hidden" }, "outputs": [], "source": [ "# Copyright 2024 Keysight Technologies Inc." ] }, { "cell_type": "raw", "id": "e296cbad", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "\n", "Example: Running KNR\n", "====================\n", "\n", "K-body noise reconstruction (:tqdoc:`KNR`\\) is an error diagnostic protocol\n", "that provides a detailed error profile of a cycle of interest. In this\n", "example, we will see how to generate and run :tqdoc:`KNR` circuits, and how to\n", "interpret the results. First, let's choose a cycle to benchmark:" ] }, { "cell_type": "code", "execution_count": 2, "id": "706d7715", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:14.189692Z", "iopub.status.busy": "2024-03-26T18:58:14.189430Z", "iopub.status.idle": "2024-03-26T18:58:16.435629Z", "shell.execute_reply": "2024-03-26T18:58:16.435118Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import trueq as tq\n", "import trueq.math as tqm\n", "import trueq.simulation as tqs\n", "\n", "# define the cycle to benchmark using KNR\n", "cycle_of_interest = tq.Cycle({(0, 1): tq.Gate.cx, 2: tq.Gate.z})" ] }, { "cell_type": "raw", "id": "22084874", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "This cycle is to be implemented on a quantum processor. For the sake of this\n", "example, the device in question will consist of a\n", ":py:class:`~trueq.Simulator`\\. To avoid confusion, we will name it\n", "``device``. Our device will be a minimalistic 3-qubit processor. Now, let's\n", "introduce a stochastic error map to our ``cycle_of_interest``:" ] }, { "cell_type": "code", "execution_count": 3, "id": "565eb6fc", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:16.438469Z", "iopub.status.busy": "2024-03-26T18:58:16.437794Z", "iopub.status.idle": "2024-03-26T18:58:16.446018Z", "shell.execute_reply": "2024-03-26T18:58:16.445610Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# define some simple 3-qubit errors, together with their probability\n", "error_profile = {\n", " # no error with prob 88%\n", " \"III\": 0.88,\n", " # IXI error with prob 1%\n", " \"IXI\": 0.01,\n", " # XII error with prob 3%\n", " \"XII\": 0.03,\n", " # IXX error with prob 6%\n", " \"IXX\": 0.06,\n", " # ZXZ error with prob 2%\n", " \"ZXZ\": 0.02,\n", "}\n", "\n", "# define Kraus operators based on the above error profile\n", "kraus_list = [\n", " np.sqrt(prob) * tqm.Weyls(pauli, dim=2).herm_mat\n", " for pauli, prob in error_profile.items()\n", "]\n", "\n", "# instantiate a superoperator based on the Kraus operators\n", "superop = tqm.Superop.from_kraus(kraus_list)\n", "\n", "# instantiate a device simulator based on the above error profile\n", "device = tqs.Simulator()\n", "device.add_cycle_noise(\n", " # the 3-qubit error map is applied to qubits 0, 1, and 2\n", " {(0, 1, 2): superop},\n", " # the error map is only applied to the cycle of interest\n", " match=tqs.CycleMatch(cycle_of_interest),\n", " # the error map occurs before the cycle of interest\n", " cycle_offset=-1,\n", ")" ] }, { "cell_type": "raw", "id": "0931e7f1", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Now that the ``device`` has been instantiated, let's try to learn the error\n", "profile of the ``cycle_of_interest``. For this, we will generate :tqdoc:`KNR`\n", "circuit collections. An important parameter when generating :tqdoc:`KNR`\n", "circuits is ``subsystems``. To understand this parameter, let's first identify\n", "the gate suppports of our cycle of interest, which are :math:`(0,1)` and\n", ":math:`(2)`\\. If ``subsystems=1``, the :tqdoc:`KNR` protocol will yield\n", "marginal error probabilities for each gate support in the cycle of\n", "interest.\n", "\n", "Given our example, if we look at qubit :math:`2`\\, which is a gate support for\n", "the cycle of interest, we should expect to see an :math:`X` error with\n", "probability :math:`6\\%`\\, and a :math:`Z` error with probability :math:`2\\%`\\.\n", "If we look at the gate support :math:`(0,1)`\\, we should expect to see an\n", ":math:`XI` error with probability :math:`3\\%`\\, a :math:`ZX` error with\n", "probability :math:`2\\%`\\, and a :math:`IX` error with probability\n", ":math:`7\\%`\\. To obtain the :math:`7\\%` value, we added the probabilities of\n", ":math:`IXI` and :math:`IXX`\\, which both yield an :math:`IX` error for the\n", "support :math:`(0,1)` (this is the marginal probability). These are indeed the\n", "reconstructed probabilities:" ] }, { "cell_type": "code", "execution_count": 4, "id": "d3836b9d", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:16.447966Z", "iopub.status.busy": "2024-03-26T18:58:16.447626Z", "iopub.status.idle": "2024-03-26T18:58:18.004854Z", "shell.execute_reply": "2024-03-26T18:58:18.004393Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# generate KNR circuits to benchmark the cycle, targeting only single gate supports\n", "knr_circuits_1 = tq.make_knr(\n", " cycle_of_interest, n_random_cycles=[4, 10], n_circuits=30, subsystems=1\n", ")\n", "\n", "# run the circuits on the device\n", "device.run(knr_circuits_1)\n", "\n", "# plot the reconstructed error profile with subsystems=1:\n", "layout = tq.visualization.Graph.linear(3, show_labels=True) # specify the chip layout\n", "knr_circuits_1.plot.knr_heatmap(layout) # plot the heatmap" ] }, { "cell_type": "raw", "id": "215e5be0", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "In the plot above, notice that the uncertainty for reconstructed error\n", "probabilities is seen in the variation of color in each cell. Some errors that\n", "are not included in the underlying ``error_profile`` might appear in dark\n", "purple due to the uncertainty of the estimates. These dark purple cells can be\n", "removed from the plot by simply changing the cutoff options (see the\n", ":py:class:`~trueq.visualization.plotters.nr.knr_heatmap` API reference).\n", "Moreover, notice the label :math:`\\{XX,XI\\}`\\, which is associated with a\n", "probability of :math:`3\\%`\\. This bracketed set of errors is short for\n", "\":math:`XX` or :math:`XI`\\\" and indicates that :tqdoc:`KNR` didn't\n", "differentiate between the two and instead outputs the sum of their respective\n", "probability of occuring. :math:`XX` and :math:`XI` are then said to be\n", "\"degenerate\". Here, we know from our construction that only :math:`XI` could\n", "occur, but on an actual device where the noise model is unknown, we cannot\n", "learn the individual error probabilities in a degenerate set.\n", "\n", "|\n", "\n", ".. dropdown:: **Advanced note**: KNR degeneracies\n", "\n", " Degeneracies are determined by the cycle of interest. Given a Clifford\n", " cycle of interest :math:`G`\\, the KNR degeneracies are determined by its\n", " *Weyl orbits*; the orbit of a Weyl operator :math:`W` with respect to\n", " :math:`G` is defined as\n", "\n", " .. math::\n", "\n", " W^{\\circlearrowright G}:= \\{W, G(W), G^2(W), \\cdots\\}~.\n", "\n", " For example, the orbit of :math:`XX` given a :math:`CX` gate is\n", "\n", " .. math::\n", "\n", " XX^{\\circlearrowright CX}&= \\{XX, CX(XX)\\} \\\\\n", " &= \\{XX, XI\\}~.\n", "\n", "|\n", "\n", "Aside from the :math:`\\{XX, XI\\}` degeneracy, we might want to resolve our\n", "error profile further. Indeed, from the current experiment (i.e. with\n", "``subsystems=1``), we can't know if some errors on different gate supports are\n", "correlated. For instance, we know that qubit :math:`2` sees a :math:`Z` error\n", "with probability of :math:`2\\%`\\, and that the qubit pair sees a :math:`ZX`\n", "error with probability of :math:`2\\%`\\, but we didn't learn if these errors\n", "occur at the same time or not (we know from our underlying error profile that\n", "they are perfectly correlated). To resolve the error correlations between any\n", "two gate supports, we can simply choose a :tqdoc:`KNR` circuit collection\n", "with ``subsystems=2``:" ] }, { "cell_type": "code", "execution_count": 5, "id": "fe7f15fe", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:18.007179Z", "iopub.status.busy": "2024-03-26T18:58:18.006740Z", "iopub.status.idle": "2024-03-26T18:58:21.961680Z", "shell.execute_reply": "2024-03-26T18:58:21.961217Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# generate KNR circuits to benchmark the cycle, targeting all pairs of gate supports\n", "knr_circuits_2 = tq.make_knr(\n", " cycle_of_interest, n_random_cycles=[4, 10], n_circuits=30, subsystems=2\n", ")\n", "\n", "# run the circuits on the device\n", "device.run(knr_circuits_2)\n", "\n", "# plot the reconstructed error profile with subsystems=2:\n", "knr_circuits_2.plot.knr_heatmap(layout) # plot the heatmap" ] }, { "cell_type": "raw", "id": "80701e9f", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Notice that this experiment yields marginal error probabilities for all pairs\n", "of gate supports. Since our cycle only contained a pair of gate supports\n", "(namely :math:`(0,1)` and :math:`2`\\), the above plot shows a complete\n", "reconstruction of the error profile.\n", "\n", "Specifying which subsystems to probe\n", "------------------------------------\n", "\n", "When the ``subsystems`` argument of :py:meth:`~trueq.make_knr` is an integer, it\n", "specifies the maximum number of gate-bodies whose correlated errors should be\n", "reported. For example, if the cycle is a CNOT on qubits :math:`(0, 1)` with idling\n", "qubits :math:`2` and :math:`3`\\, then when ``subsystems=2``, in addition to reporting\n", "single gate-body errors on each of the subsystems :math:`(0, 1)`\\, :math:`(2,)`\\, and\n", ":math:`(3,)`\\, errors will also be reported on the gate-body pairs corresponding to\n", ":math:`(0, 1, 2)`\\, :math:`(0, 1, 3)`\\, and :math:`(2, 3)`\\. In general, for\n", "``subsystems=k``, n-choose-k subsystems will be very large and require many circuits\n", "to reconstruct the errors.\n", "\n", "To reduce experiment cost, the ``subsystems`` argument can be specified as a\n", ":py:class:`~trueq.Subsystems` object where subsystems to reconstruct are explicitly\n", "defined. In this example, we demonstrate how this approach can allow for a less\n", "costly reconstruction by exploiting knowledge of the system being characterized.\n", "Consider a linear array of qubits and a cycle of single-qubit gates with underlying\n", ":math:`ZZ` couplings between adjacent qubits. Rather than reconstructing all\n", "combinations of :math:`2` operations, we expect distant pairs, e.g. :math:`(0, 4)`\\,\n", "to have no correlated errors and thus omit them." ] }, { "cell_type": "code", "execution_count": 6, "id": "22851621", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:21.964060Z", "iopub.status.busy": "2024-03-26T18:58:21.963581Z", "iopub.status.idle": "2024-03-26T18:58:22.034500Z", "shell.execute_reply": "2024-03-26T18:58:22.034016Z" } }, "outputs": [ { "data": { "text/plain": [ "Subsystems(((0,), (1,), (2,), (3,), (4,), (0, 1), (1, 2), (2, 3), (3, 4)))" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# define the cycle of interest to benchmark\n", "cycle_of_interest = tq.Cycle({range(5): tq.Gate.x})\n", "\n", "# define the layout of our device\n", "layout = tq.visualization.Graph.linear(5, show_labels=True)\n", "\n", "# define the ZZ couplings in our device\n", "error_profile = {\n", " \"IIIII\": 0.90,\n", " \"ZZIII\": 0.02,\n", " \"IZZII\": 0.01,\n", " \"IIZZI\": 0.03,\n", " \"IIIZZ\": 0.04,\n", "}\n", "\n", "kraus_list = [\n", " np.sqrt(prob) * tqm.Weyls(pauli, dim=2).herm_mat\n", " for pauli, prob in error_profile.items()\n", "]\n", "\n", "# instantiate a superoperator based on the Kraus operators\n", "superop = tqm.Superop.from_kraus(kraus_list)\n", "\n", "# instantiate a device simulator based on the above error profile\n", "device = tqs.Simulator()\n", "device.add_cycle_noise(\n", " {(0, 1, 2, 3, 4): superop},\n", " match=tqs.CycleMatch(cycle_of_interest),\n", " cycle_offset=-1,\n", ")\n", "\n", "# use from_cycle and nearest_neighbour methods to create subsystems to analyze\n", "subsystems = tq.Subsystems.from_cycle(cycle_of_interest).nearest_neighbour(layout)\n", "subsystems" ] }, { "cell_type": "raw", "id": "8bac3668", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "By using the methods of the :py:class:`~trueq.Subsystems` class, we specified that we\n", "only want to reconstruct the errors on adjacent pairs of qubits when calling\n", ":py:meth:`~trueq.make_knr`\\." ] }, { "cell_type": "code", "execution_count": 7, "id": "9e77ff5e", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:22.036666Z", "iopub.status.busy": "2024-03-26T18:58:22.036338Z", "iopub.status.idle": "2024-03-26T18:58:31.409004Z", "shell.execute_reply": "2024-03-26T18:58:31.408350Z" } }, "outputs": [ { "data": { "text/plain": [ "540" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "knr_circuits_1 = tq.make_knr(\n", " cycle_of_interest, n_random_cycles=[4, 10], n_circuits=30, subsystems=subsystems\n", ")\n", "device.run(knr_circuits_1)\n", "\n", "# plot the reconstructed error profile on the specified subsystems:\n", "knr_circuits_1.plot.knr_heatmap(layout)\n", "\n", "# print the total number of circuits\n", "knr_circuits_1.n_circuits" ] }, { "cell_type": "raw", "id": "3e8e913c", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Comparing the above output with a call to :py:meth:`~trueq.make_knr` with\n", "``subsystems=2``, we note that we were able to perform the reconstruction with fewer\n", "circuits and omit information about the errors on uncoupled pairs." ] }, { "cell_type": "code", "execution_count": 8, "id": "f2b21768", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:31.411380Z", "iopub.status.busy": "2024-03-26T18:58:31.410904Z", "iopub.status.idle": "2024-03-26T18:58:52.128847Z", "shell.execute_reply": "2024-03-26T18:58:52.128389Z" } }, "outputs": [ { "data": { "text/plain": [ "1200" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/oAAAEDCAYAAACF5H9ZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJGElEQVR4nO3deXgUVbrH8V91ZyWQhTWERZABRFHCIgF02AXUGUDvKCISBNRBZEbFywyigo6O6CiuMOIyqIgsIwq4IFtk0QsqEFAQUGTfEkRkC0uS7nP/gDTppAN0upNe+H6ep56kq885/dbpSlXerlOnLWOMEQAAAAAACAu2QAcAAAAAAAD8h0QfAAAAAIAwQqIPAAAAAEAYIdEHAAAAACCMkOgDAAAAABBGSPQBAAAAAAgjJPoAAAAAAISRiEAHAAAAvLMze7f2/pqlYydyFBsdo8qVknRZ3YayLCvQoQEAgCBAog8AQAjIzc/TgpWL9c68aVr909piz9etXksDuvfVnzr0VHxcpfIPEAAABA3LGGMCHQQAACjZ7K/m6snJz+ng0UOy2WxyOp3FyliyJEuKtEdo0A399L99hsluswcgWgAAEGgk+gAABLEJs/+j52eM97pe15YdNP6vzyo6KroMogIAAMGMRB8AgCD17vzpevydZ12Pu7Rorz+07a5mDa5Q1YQqcjqd2p69S1MW/lcfLvtEhU/pNsum69O66pW/jJXNxty7AABcTEj0AQAIQuu3bVTPR/q5Je/vjByvDs2u8Vj+vQUzNPrtZ4qtf2LgSKV361NmcQIAgODDR/wAAAShd+dPl81yP02fys3VW59NUbcR/6PL0tto6IsjlJefJ0nq1/UWVYlPcitvydJbn77n8Z5+AAAQvkj0AQAIMoeOHdac//tcDqfDbf3wfz+qf04Zp827t+pU3il9/u0iLftuuSTJZrOpbo06buWNjHb9skfLf/i23GIHAACBR6IPAECQmbn0Y+U78outzzl5vNi6wpPtZR/cX+x5u82uyQtm+DdAAAAQ1Ej0AQAIMl9vWCVdwAw6rS9robZXXC1J+mrd19r7a1axMg6nQyt+WOnvEAEAQBAj0QcAIMgcPHpI5jyZ/lWXXq7XH3pBdptd+37N1oiJY0osm3PiOPfpAwBwESHRBwAgyDgcjnM+36JhM733yEQlVkxQ1sH9uuOff1aWh2H7BYyMnIZEHwCAi0VEoAMAAADuKscnlvhcWpOWemvEy6oYG6dd+/eo3z//rF3795yzvdioGEXYOeUDAHCx4Io+AABBpkndRrLbip+ir70yTW///VVVjI3T1r3bdesTg86b5Nssmy67pFFZhQoAAIIQiT4AAEGmb5f/kdNZ/B79+3rfpdjoWEnSpSn1tGLCfG2btsa1/E/7Pxar4zRODeh+W5nHDAAAggeJPgAAQaZO9Vpq36yd7Da7z20lxMWrR+sufogKAACECm7YAwAgCN3c7kYt/e7/3Nb1ffJur9qwZOnGq69TdGSUP0MDAABBjiv6AAAEEWOMNmzYoP0/7VHreqmyZJWqHbvNrtqVa6qmM0lfffWV8vPz/RwpAAAIViT6AAAEiZMnT2rhwoX66quvdNlll+ndx19T96s7ed2O3WZT3Rq1NfOf76pzh0768ccfNWvWLB08eLAMogYAAMHGMsYUn+0HAACUq3379umLL75Qfn6+OnTooHr16kmSHE6Hxr7/kibNfV82myWH01liG3abXQ6nQ20vv1oTh49TfFwlSdLBgweVkZGhI0eOqF27drrssstkWaUbKQAAAIIfiT4AAAHkdDqVmZmpNWvWKDk5WZ06dVLFihWLlduZvVtTMz7U1IyZOnr8mGyWTTabTcYYOZwORdgj9Md23dW/Wx+lNmhaLJHPz8/XihUrtHHjRtWrV0/t27dXTExMeW0mAAAoRyT6AAAEyNGjR/XFF19o//79atmypVJTU2WznfuuulO5p5SxZpn2/ZqtIzlHFRsdqyrxSerSor0qxyed9zW3bdumpUuXKjIyUp07d1bNmjX9tTkAACBIkOgDABAAW7du1bJlyxQVFaXOnTsrOTm53F772LFj+uKLL5Sdna0WLVqoefPm5/2AAQAAhA4SfQAAylF+fr6WL1+uTZs2qX79+mrfvr2io6PLPQ6n06k1a9YoMzPznLcMAACA0EOiDwDABTLG6JuNq7V591YdOX5UdptdCXHxuqZpa9WtUfu89X/99VdlZGTo6NGjQTMpXuFJANu3b6/69euft87hY0f0xZov9euRgzpx6qQqVohTSpVkdUy9VtGRUeUQNQAAOBcSfQAAzuNIzlF9+OUnemfeNO3M3i1Llux2m4w5PSu+JUu/v6qNBnTvqw6p7WS32d3qG2O0YcMGff3110pISFCXLl2UlHT+++nLy8mTJ7Vs2TJt375dl19+udq0aaOIiIhi5dZv26j3FvxXs7/6TLn5ebLZbLJZlpxOp5zGKD6ukvp1+ZNu7/on1a6WEoAtAQAAEok+AADnNPuruRr5xhPKzc+TdDpp96Tgq+0uqVFHb//9VdWveYmk00n00qVLtWPHDl1xxRVKS0vzmEQHmjFGGzdu1IoVKxQfH68uXbqocuXKkqRjJ3L011dGavHar1zbWRK7zSan02jQDf30cL8Hin3oAQAAyh6JPgAAJXjz08l6+v0Xvapjt9kVFxOrKY+8rioxiVq8eLHy8/PVoUMH1atXr2wC9aODBw8qIyNDR44cUdu2bZVcu6Zuf+oebd6zVU6n06u2ul/dWePvf1YR9uD7YAMAgHBGog8AgAcfLvtE//vaaLd1l9SooyE971SLRs30u5T6rpnqG6enKTcv11XOZrOpQlSs+qf2VpNLG6tz586Ki4sr1/h9kZ+fr6+//lrfrfteH26Yp50H97qu4ndqfq0GXd9PDWs3UGLFBDmdDu36Za8Wrlysf8+ZpOOnTrjasSxLt3W6Sf+869GAz0UAAMDFhO/SAQCgiF8O/aqRb/yj2PpGdRrots43q1HtBuf8Ojqn06mck8e1bM8q3XjjjSGV5EtSRESErr32Wh2IPKrtB3a7DdVv0fAqXXtlG9VIqqboyCjFRseqUe0Guu+muzThgefc2jHGaNoXH+mLNV+W9yYAAHBRI9EHAKCI/y6Z7XGYevbB/Zow6y0N/tdftfbndedsw8joh10/atu+HWUVZpnKy8/Txyvny8h94N93W37QPeMeVOt7r9Nl6W109/MP6FTuKUlSx9RrlBAX71bebrNr8vzp5RY3AAAg0QcAwI3D6dDk+dPlNMUT/e+3btDz/52gL9Z8qZNnkttzsdvsen/RzLIIs8wtXL1EB4/8Vmz9otVLtXDVEv1y6IBO5Z3SotVL9dPuLa7n8x35buUdToe+/P5r7cjeVeYxAwCA00j0AQAoZPGar7T/0AG/tOVwOjRjySydKHTfeqiYPH+G7Oe4PUGSoiOjdV2rjmpUu4EkadaXnyrn5PFi5Ww2m6ZlfFQmcQIAgOKYBhcAgEI27PhREXa78h0lf4WcN46fPKE9B/bpd7Uu9Ut75eWH7ZvkKGGW/aoJVbRy4iK3dZ+umK+/vf6Ex/IOp0Prt230e4wAAMAzrugDAFDI4WNHZMm/M8QfOnbEr+2VNWOMxyvz5/KHtt313JDHS3z+4NHitwEAAICyQaIPAEAh55pNv7TONwQ+GNnO8XV4Bw7/qvp9m6vJgLa67R93ae+vWZKk3tfeqKb1m3isY7fZyyROAABQXOj95wEAQBlKrJggpzHnL+iF+CIz0Qc7y7JUMbbiecudzD2pbzau1uffnB3GXy+5rseySZUS/RUeAAA4DxJ9AAAKaX1ZC7fvjS8swh6hpEqJSqqUqAj72WlukiomKKlSomKiYorVqRJfWXWr1yqzeMtKm8tbebwK/8zdo9Xm8laqXClJUZFRatmomXq07uJ6ftf+3cXq2Cyb2jRpWabxAgCAs5iMDwCAQlo1TtXvatXXlj3bi32HfMtGzTR99FvF6nz97wWSpJdmTtTLH77uWm+zbErvdqsiIyLLNugykN6tj+av/KLY+j6db1Kfzjd5rLNw1RJ9t+WHYuttNku3dvJcBwAA+B9X9AEAKMSyLN3ZvW+xJL90jUl9QjTBbXvF1apbo7asIvfqT/r8fa3bukG/HT2kfEe+Dh87olU/rtXj7zyroS+NKNaO3WbXjW26qWpC5fIKHQCAi55ljJ9vRAQAIMQdO5GjdsN6KOfEcTmN56+YOx+7zabr067Tq399xs/RlZ/3FvxXo98e63M7H/3jXTVveJUfIgIAABeCK/oAABRRMTZObzz0omw2q1RftWe32XVJjbr65+BHyiC68tOv6590Y5tu55yB/3we7vcgST4AAOWMRB8AAA/aXN5KEx54ThEREV595Z7dZled6rX03iOvKT6uUhlGWPZsNpvGDX1SnVu0L1X9YTfdpbtv7O/nqAAAwPkwdB8AgHPI/Ok7PfjvR7Uze7fsNnuJM/LbLJuMMerSor2ev/cfSqgYWl+pdy4Op0PPzxiv/8x9X/mOfJX0r4PNsslpnIqPq6RR/R4M2fkJAAAIdST6AACchzFGy3/4VpPnz9Ci1UuL3bcfExmt9o3baNRdD+mSGnUCFGXZO3TssF6d/ro+/L9Pdfjk0WLPN2twhQZ076sb0roqOio6ABECAACJRB8AAK9kH9yvbVk7dSTnqCLsEUqoWEn5h3O1/vt1Sk9PV2Rk6H2VnjfmzJmjyKhI1b2svn498ptOnDqhShUqKrlyDTVIqRfo8AAAgKSIQAcAAEAoqVG5umpUru627siRI/puzVrt2rVLl156aYAiK3s5OTnKzs5Wx44d1ah+o0CHAwAASsBkfAAA+Cg+Pl5VqlTR1q1bAx1Kmdq+fbssy9Ill1wS6FAAAMA5kOgDAOAH9evX165du5Sfnx/oUMrM1q1bVatWLUVHc/89AADBjEQfAAA/qF+/vvLy8rR79+5Ah1ImTpw4oaysLNWvXz/QoQAAgPMg0QcAwA+SkpKUmJiobdu2BTqUMrF9+3ZJUr169QIaBwAAOD8SfQAA/OTSSy/Vjh075HA4Ah2K323btk3JycmKjY0NdCgAAOA8SPQBAPCT+vXrKzc3V3v37g10KH516tQp7dmzh2H7AACECBJ9AAD8pHLlyoqPjw+74fs7duyQMYZEHwCAEEGiDwCAn1iWpfr162v79u1yOp2BDsdvtm7dqho1aiguLi7QoQAAgAtAog8AgB/Vr19fJ0+eVFZWVqBD8Yvc3FyG7QMAEGJI9AEA8KNq1aopLi5OW7duDXQofrFz5045HA4SfQAAQgiJPgAAflR4+L4xJtDh+Gzbtm2qWrWqKlWqFOhQAADABSLRBwDAzy699FIdP35c2dnZgQ7FJ/n5+dq1axdX8wEACDEk+gAA+FmNGjUUGxsb8rPv79q1S/n5+ST6AACEGBJ9AAD8rGD4/rZt20J6+P62bdtUuXJlJSYmBjoUAADgBRJ9AADKQP369XXs2DEdOHAg0KGUisPh0I4dO7iaDwBACCLRBwCgDNSsWVPR0dEhO/v+nj17lJeXR6IPAEAIigh0AAAAhCObzab4qol64/PJenjGWP129JBO5Z5ShZgKqlMtRbd1uVk92/VQbHRswGJ0OB1a9t1yvbfwA/2wfZOOHT8mu92uSrEV1bBaPTVLbqKkpKSAxQcAAErHMqF88yAAAEFozc/rNHHO21q4eolkJCP3U63NsslpnIqLqaA+nW7Sn/84QNWTqpVbfKfycvX251M1ecF07fs1W3abXQ6no0iMlpzGqFmDK3TXjem6sc11siyr3GIEAAClR6IPAIAfffTlp/rbxMclqVjy7IndZleV+CRNHvWaGtf5XRlHJx0+dkR3PX+/Vv/03QVNFFjwocSdPfrq0f4PyW6zl3mMAADANyT6AAD4yYdLP9b/ThzjdT27zabY6FjNfvI9NahVdvfE55w8rj+NuVObd2+9oA8hirq1Y289c89oruwDABDkmIwPAAA/+HZTpv72xhMen6uRVE3PDXlCKycu0qZ3v9aC5z7UoOv7uRJmh9OpE6dOqv/T9+rwsSNlEp8xRn95+e/6afeWEpP839W6VD++9622TVujbdPW6Pauf3J7/r9LZuuNTyeXSXwAAMB/SPQBAPCDl2ZO9Li+SnySPnziXf2pQ09VTaii6KhoNax9qR5L/1/9Y+DDrnIOp0NZv+3XB0vnlEl83235QYvXfiWn01limX8MHKmoiMhztvPqR2/oxKkT/g4PAAD4EYk+AAA+2rJ3u1b8sNJjEn3/n4aoVrWakqS/vf64Wt7TWRmrl0qS7rjuFjVrcMXZwkZ6d/70cybjpfXeghnnvL++1zXXq+0VVyvn5PFztpNz8rg+WT7f3+EBAAA/ItEHAMBH7y/8wGMSbVmWerW7XpK0Zc82fbBkjg4e/U0T5kxylel1zQ2u342Mdv+yV1+u+9qv8f129JA+Xj6vxCH7FWPjNKrfgzpx6oTePM/QfMuy9Pa8qRc0kR8AAAgMEn0AAHw066vPPCbRdavXVnxcJUmnr/oX2LJ3m+v3pvUvc6tjt9n1yfJ5fo1vwarFynfkl/j88FuGqnpSNf17ziTt/mXvOdsyxmjTzs3anrXTrzECAAD/IdEHAMAHTqezxAn0KscnuX4/diLn7O/Hz/5eJb6yWx2H06FfDh3wa4wHDh9UhN3zsP0mdRupf7dbtW3fDr3xybtetQkAAIITiT4AAD44mXtKRt4NYy/89XSehsAfLfShgD8cP3lckuevxPvHoIcVYY/QmLefUW5+npdtAgCAYESiDwCAD2Kiokv8XvmDR35z/V6pQkXX73GxFc6WOfqbiko4M9zfX+JiKnj8QOGapmlq1ThVmT99rwNHDqrJJY2UUrWm6/malaurcZ3feWyzYoU4v8YIAAD8JyLQAQAAEMpsNpuqxCd5HMq+c/9uHT52RAkV43VpzUtc6xuk1Hf9vn7bJrc6dptdNZKq+zXGGpWre5xDoEJMrCSpRaOrNPeZGcWeH3bT3Urvdpua3dW+2HPVE6v5NUYAAOA/XNEHAMBHt3bsLZut+CnVGKOPV5yeWK9Brfr6U4eeqlwpSff1GuQqM+f/5rrVcTgdurn9H/waX7dWnRQTFe2Xtmw2m1o0bKY61Wv5pT0AAOB/luH7cQAA8MnuX/aq/V//4PFe/SrxSZrz1PuqVa1mseemLPxAj0162vXYkqVLUy7Rwuc/KvF2gNJ67D9Pa9oXH5X4FXsF/qf9H/X8vf+QJD3yn39q6qKZxcq88pex+mO7Hn6NDwAA+A9X9AEA8FHtainq2Pxa2T1c1f/1yG/6nzED9OGyT3Tg8EGdysvV5t1b9eTk5zX67bFuZY2M7uzR1+9JviT1u+6W8yb5FyKxYoK6t+7ih4gAAEBZ4Yo+AAB+sH7bRv3P6AHKy8/3ehZ+6fS9+fWS62rOP6coLqbC+SuUwoMTHtHH//e5nD6c+sfe/Zhu63yzH6MCAAD+xhV9AAD8oGn9Jhp//79kWZbXV+TtNrsSKyZo8qh/l1mSL0nP3DNGrRo3l80q3en/3p4DSfIBAAgBJPoAAPjJda066j9/e1lREVGy2+wXVMdmWapbo7ZmP/WeUqokl2l80ZFRemfkeHVp2f7Ma5//34CC7fjfPsM04ra/lGl8AADAPxi6DwCAn23dt0Nvfz5VM5fO0ancXElyG85vt9nlcDqUXLm6BnS/Tbd3/ZPiK1Qqt/gcTodmfzVX786brnXbNrjiKcxms8kYo64tO2jQ9f3U5vJW5RYfAADwDYk+AABl5NiJHM3+6jN9umKBDhw+qBO5JxRfoZLqVq+tPp1uUofUdhd85b+srNu6Qe8vmqkftm/SoWOHFWG3K7Fion5/VRvd1vnmMh9lAAAA/I9EHwAAAACAMMI9+gAAAAAAhBESfQAAAAAAwgiJPgAAAAAAYYREHwAAAACAMBIR6AAAAAAAAPDFyZMnlXvmK219ERUVpZiYGD9EFFghn+h3uOFfbo+NdY7CpXzOWCU8ea46jJUIHqV5b89T72z90rxmyc+dqGIrsX6xWD21U2Sdx9cqRRnP8Xioh/JzIe+Jv97/85UvoX5eJVNie8W+7uUccRTfLg9fFnOu7WJ/Dn6F39NS7ccl72sXcizXBdS/s/X/SZLsllOSZCu0F7vWnflpP/NcwWNP6yItx5n1zuLtnFlnPxNX4TJFX6NoncLrUL5c77GH96LguUgr3+2x5OE9de0rhfYxV9sF77sp3o7rNYs8Lhzjmf8lfj/5fyWd5xxQ9O/MU5kijz23V+SYXahMiectjskB53pvznXOPee5u+T3vcT31+vXOl1+x6C/6+TJk6p/SUVl7XeU0PiFS05O1rZt20I+2Q/5RB8AAAAAcPHKzc1V1n6Hfl5VR/GVSn/F9chRp37Xapdyc3NJ9AEAAAAACLQKlYwqVPIwMuAC5RcfcxiySPQBAAAAACEvzziV50OunmfC59YnEn0AAAAAQMjLl1N5PtYPFyT6AAAAAICQl2eM8kzpL+n7UjfYkOgDAAAAAEJerjHK9SFZ96VusCHRBwAAAACEvHxZyvPh+xnzw+i7HYPi297nzp0ry7JKXPr06RPoEAEAAAAAQSzPWD4v4SIoruh36tRJ+/btc1vncDg0cOBAZWZmatSoUQGKDAAAAAAQCvKMTXmm9NeyfZmxP9gERaIfGxur2NhY12OHw6F+/fopMzNTGRkZatasWQCjAwAAAAAEu1zZlevDoPXcMBq6HxSJfmEOh0N33HGHFi1aRJIPAAAAALgg+T5e0c/nin7ZKEjyFyxYQJIPAAAAALhgecauPGP3ob7Dj9EEVtAk+g6HQ/3793cl+ampqYEOCQAAAAAQIhyy5PBh+L0vdYNNUCT6BUn+/PnztWjRIpJ8AAAAAIBXfL+i78dgAizgib7D4VB6eroryW/evHmgQwIAAAAAhJg8E6FcnxJ9ruj7hdPpVHp6umbPnq2ZM2eqZs2aysrKcitTrVo12e2lf7MAAAAAAOGPK/pnBTTRX7lypaZOnSpJuuGGG4o9b1mWDh06pPj4+PIODQAAAAAQQvJMhI+JPlf0/SItLU3GhNHHJgAAAACAgMiTzbeh+wqf3DTg9+gDAAAAAOCrPBOhCFP6FJeh+wAAAAAABJE8Y1eET0P3wyfTJ9EHAAAAAIQ8Ev2zSPQBAAAAACEv30Qoz4eh+/nhk+eT6AMAAAAAQl+escvOFX1JYZDoL537t0CHAAAAAISMzQ8HOgKgbOQZm4+JvtOP0QRWyCf6AAAAAADkG7vyfEj088Mo0bcFOgAAAAAAAHyV57T7vHhrwoQJqlevnmJiYpSWlqZvv/32nOU/+OADXXbZZYqJidGVV16puXPnFiuzceNG9ezZUwkJCYqLi9PVV1+tnTt3ehUXiT4AAAAAIOTlnbmi78vijRkzZmj48OEaM2aMMjMz1axZM3Xv3l379+/3WH758uXq27evBg8erDVr1qh3797q3bu31q9f7yqzZcsWXXvttbrsssu0ZMkSff/993rssccUExPjVWyWMWE04wAAAAAA4KJy5MgRJSQk6N4vb1Z0xchSt3PqWJ5e+/1H2rVrl+Lj413ro6OjFR0dXax8Wlqarr76ao0fP16S5HQ6VadOHf3lL3/RyJEji5Xv06ePcnJy9Omnn7rWtWnTRqmpqZo4caIk6bbbblNkZKTee++9Um+HxBV9AAAAAEAYcDjtyvdhcZwZul+nTh0lJCS4lrFjxxZ7rdzcXK1evVpdu3Z1rbPZbOratatWrFjhMb4VK1a4lZek7t27u8o7nU599tlnatSokbp3767q1asrLS1Ns2fP9rovSPQBAAAAACHPIcvnRZJ27dqlw4cPu5aHHy7+VRUHDhyQw+FQjRo13NbXqFFDWVlZHuPLyso6Z/n9+/fr2LFjeuaZZ9SjRw8tWLBAN910k26++WYtXbrUq74g0b9IeTtpRFF79+5VUlKSXnnlFbf133zzjSIjI7VgwQJ/hguUaNmyZfrjH/+olJQUWZZVqk88c3Jy1KBBAw0fPtxt/fbt2xUfH68333zTT9EC5zZ27FhdffXVqlSpkqpXr67evXvrxx9/9KoNjs8IFq+99pquuuoqxcfHKz4+Xm3bttXnn3/uVRvszwhGzzzzjCzL0gMPPOBVPfbnspfvtPl0RT/feTo9LjhuFSyehu2XBafz9Kz/vXr10oMPPqjU1FSNHDlSf/jDH1xD+y8Uif5FyNtJIzxJSUnRq6++qocfflibN2+WJJ04cUIDBgzQXXfdpW7dupVV+ICbnJwcNWvWTBMmTCh1G3FxcXr77bf16quv6ssvv5QkGWM0cOBAXXPNNbr77rv9FS5wTkuXLtV9992nr7/+WgsXLlReXp66deumnJycC26D4zOCRe3atfXMM89o9erVWrVqlTp37qxevXrphx9+uOA22J8RbFauXKnXX39dV111ldd12Z/LXp6x+bxcqKpVq8putys7O9ttfXZ2tpKTkz3WSU5OPmf5qlWrKiIiQpdffrlbmSZNmng96z6T8V2EvJ004lxuvvlmZWdn68svv9Tw4cP1ySef6LvvvlPFihXLInTgnCzL0qxZs9S7d+9S1R8+fLg+/vhjfffdd3rzzTf1xBNPaP369apVq5Z/AwUu0C+//KLq1atr6dKlat++vVd1OT4jGFWuXFnPPfecBg8e7FU99mcEg2PHjqlFixb697//raeeekqpqal66aWXvG6H/dn/CibjuzWjv6LiokrdTm5Orv7b5T0dPnzYbTK+kqSlpal169Z69dVXJZ3Oq+rWrathw4aVOBnf8ePH9cknn7jWtWvXTldddZXrin27du3UoEEDt8n4brrpJsXGxmrq1KkXvC1c0b/IXOikEXfeeac6dux43vYmTpyozZs3q1+/fho/frzefvttDlIIOo8//rjq1at33nL//Oc/FRERoTvuuEOjRo3Sq6++SpKPgDp8+LCk08lRAY7PCEUOh0PTp09XTk6O2rZt61rP/oxQct999+nGG28sNplaAfbnwHMYm/J9WBxeXNGXTl8kevPNN/Xuu+9q48aNuvfee5WTk6OBAwdKktLT093u77///vs1b948jRs3Tps2bdLjjz+uVatWadiwYa4yI0aM0IwZM/Tmm2/q559/1vjx4/XJJ59o6NChXsUW4VVphLxzTRqxadMm1+OaNWu67hE5l+rVq+vJJ5/UkCFDdO+993p9xQkoD1WrVlWDBg3OWy42NlYvv/yyevTooeuvv1533HFHOUQHeOZ0OvXAAw/ommuuUdOmTV3rOT4jlKxbt05t27bVyZMnVbFiRc2aNcttSCr7M0LF9OnTlZmZqZUrV5ZYhv058PKddllnZs4vbX1v9OnTR7/88otGjx6trKwspaamat68ea5ca+fOnbLZzn540K5dO02dOlWPPvqoRo0apYYNG2r27Nlu5/mbbrpJEydO1NixY/XXv/5VjRs31ocffqhrr73Wq9gYun+R2bt3r2rVqqXly5e7faL+t7/9TUuXLtU333zjVXsOh0PXXnutvv/+ezVu3FjffvutIiL4/AiB4evQfUm69dZb9dlnn6ly5cpav369EhIS/Bcg4IV7771Xn3/+ub766ivVrl3b6/ocnxEMcnNztXPnTh0+fFgzZ87UW2+9paVLlxa7//R82J8RSLt27VKrVq20cOFC1735HTt2LPXQffZn/ysYun/j/LsU6cPQ/bycXH3W/a0LHrofzBi6f5EpzaQR5/L8889r69atWrVqlXbv3q2nn37aX6EC5W7GjBn69NNPtXz5clWqVEkPPvhgoEPCRWrYsGH69NNPtXjx4lIl+RLHZwSHqKgo/e53v1PLli01duxYNWvWTC+//LLX7bA/I5BWr16t/fv3q0WLFoqIiFBERISWLl2qV155RREREXI4HF61x/5cdk7Puu/bEi7CZ0twQaKiotSyZUtlZGS41jmdTmVk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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "knr_circuits_2 = tq.make_knr(\n", " cycle_of_interest, n_random_cycles=[4, 10], n_circuits=30, subsystems=2\n", ")\n", "device.run(knr_circuits_2)\n", "\n", "# plot the reconstructed error profile with subsystems=2:\n", "knr_circuits_2.plot.knr_heatmap(layout)\n", "\n", "# print the total number of circuits\n", "knr_circuits_2.n_circuits" ] }, { "cell_type": "raw", "id": "0b2de56c", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "KNR with qudits\n", "---------------\n", "\n", "KNR seamlessly supports qudits. To see this, let's recreate a similar example\n", "as above, but with qutrit instructions on a 2-qutrit processor:" ] }, { "cell_type": "code", "execution_count": 9, "id": "6e9e3cbc", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:52.131194Z", "iopub.status.busy": "2024-03-26T18:58:52.130714Z", "iopub.status.idle": "2024-03-26T18:58:52.137081Z", "shell.execute_reply": "2024-03-26T18:58:52.136658Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# setting the register dimension to 3 (i.e. qutrits)\n", "tq.settings.set_dim(3)\n", "\n", "# define the cycle to benchmark using KNR\n", "cycle_of_interest = {(0, 1): tq.Gate.cx3}\n", "\n", "# define some simple error profile by pairing Weyl errors with corresponding\n", "# probabilities\n", "error_profile = {\n", " # no error with prob 88%\n", " \"W00W00\": 0.88,\n", " # X3.I3 error with prob 2%\n", " \"W10W00\": 0.02,\n", " # X3.Z3 error with prob 8%\n", " \"W10W01\": 0.08,\n", " # I3.X3 error with prob 2%\n", " \"W00W10\": 0.02,\n", "}\n", "\n", "# define Kraus operators based on the above error profile\n", "kraus_list = [\n", " np.sqrt(prob) * tqm.Weyls(weyl).mat for weyl, prob in error_profile.items()\n", "]\n", "\n", "# instantiate a superoperator based on the Kraus operators\n", "superop = tqm.Superop.from_kraus(kraus_list)\n", "\n", "# instantiate a device simulator based on the above error profile\n", "device = tqs.Simulator()\n", "device.add_cycle_noise(\n", " # the 3-qutrit error map is applied to qutrits 0, 1, and 2\n", " {(0, 1): superop},\n", " # the error map is only applied to the cycle of interest\n", " match=tqs.CycleMatch(cycle_of_interest),\n", " # the error map occurs before the cycle of interest\n", " cycle_offset=-1,\n", ")" ] }, { "cell_type": "raw", "id": "2b9b7cd8", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Now that the ``device`` has been instantiated, let's try to learn the error\n", "profile of the ``cycle_of_interest``:" ] }, { "cell_type": "code", "execution_count": 10, "id": "885d5977", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:52.139073Z", "iopub.status.busy": "2024-03-26T18:58:52.138714Z", "iopub.status.idle": "2024-03-26T18:58:56.174853Z", "shell.execute_reply": "2024-03-26T18:58:56.174385Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgYAAAGpCAYAAAD2nf4GAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABpkElEQVR4nO3de1hU170//vcMw02QQUUZLhOxajQoSNVgID4VlYo030awptRTJXA8ydFvvRBEijZq2vQkbSkXv8DRJtYQtTly6Emtx6qVqPTQQMMvaGypMfUgRoKCCDoUilxm9u8PMpvZzAVmGEYu71ef/XRm7bX3Z63tzmbN2muvLRMEQQARERERAPnjLgARERGNHGwYEBERkYgNAyIiIhKxYUBEREQiNgyIiIhIxIYBERERidgwICIiIhEbBkRERCRiw4CIiIhEbBgQERGRiA0DIiIiErFhQERERCI2DIiIiEjEhgERERGJ2DAgIiIiERsGREREJGLDgIiIiERsGBAREZGIDQMiIiISsWFAREREIjYMiIiISMSGAREREYnYMCAiIiIRGwZEREQkYsOAiIiIRGwYEBERkYgNAyIiIhKxYUBEREQiNgyIiIhIxIYBERERidgwICIiIhEbBkRERCRiw4CIiIhEbBgQERGRiA0DIiIiErFhQERERCI2DIiIiEjEhgERERGJ2DAgIiIiERsGREREJGLDgIiIiERsGBAREZGIDQMiIiISsWFAREREIjYMiIiISMSGAREREYnYMCAiIiIRGwZEREQkYsOAiIiIRGwYENGIIAgCOru7IAjC4y7KqMZjSEOleNwFIKLxq6HlHk5cfB//WXoS9x7ch1anhZNcDqWHEnFLv4Hvfv0FfMVv+uMu5ojW0voAxX84hfcu/Bp37zegW9sDmUwGrwkT8Y1nvo4N0S8gOGjO4y4mjSIygU1LInKwz+r+FznFB1HycSkAQCfojPI4yZ2g1WkRMe9p7PjWv2LJU4scXMqRre5ePXJ+fRD/Xf57aHVak70E+mO4YOY8bI1/CdGLlj2GktJow4YBETnU//y5Av+alYrunm5oddoB88vlckAA3nxpL769PG74CzgKXK35K5J+8j38/R9tgzuGMjl0gg7p39mGzc8nQyaTOaCUNFqxYUBEDlPx1/8PG9/YAkEQTPYSDCRz8w+xbtnzw1Cy0ePa559h3f4kdHZ3Qaez/hjuStiK/xu3aRhKRmMFGwZE5BBfNN1BTPoLeNT5yKhR4DtpKtIStiIq7FlMdPfE7Xv1OHHxfbxz7j1JF7lcLsd/7v8lFj0Z5uDSjwwP2zT4etq38ODvD6A1aBRM91Vj8/NJWPjkAszyn9HbywJgTuISdHV3Ge3nF6nZWPX0coeVm0YXDj4kIocoPPcf6OzqNGoUTPGahP/64bsImOonps0O/Ar2JqZhht907D3yhpiuEwS8dCQd874xPscbfPFJLe5rmo3Sn1TPxHdWrB3UPmQyGQ781y/YMCCz2DAgomHX0dmBoku/MXk/fMe6zWKjIP0Xr+FC1f/gZ/+6HysXLcOGr7+AX//ht7ha89fezIKAB5834fOmL+Ds6erIKjx2giDgiz/XmlzX2HIPBb85jMs3/oxta19C2KwQi/u59vlnuFrzVyyYOW+4ikujGOcxIKJhd7riPNo62o3SZTIZ1kTGAgBq6mtRXPpbtPz9AQp+e0TMs+bZb/TbCPj73+4Pa3lHoo47rehpN74tAAB/vnkNP//PAly8UoZHXZ0D7stJ7oRj54vsXUQaI9gwIKJh97s/lZgcCf/EtEB4eUwEANTcuSWm19zp+2U8f8Zc6UYC0HazZVjKOZK133oA2OlhAq1Oi9MV5+2zMxpz2DAgomHX9PC+yefsJ3tNEj8b9ii0/aPv8xSvyUbbaR/12LmEI5/2UQ9gx6Hind2d6BxE7wKNP2wYENGw6+jssCq/Ye+CqQaFoLX+Mb3RTtdt/zr/w8p/Fxof2DAgomE3ccJEk+ktrQ8M8niKnz3cJ/Tl+fsD9Cd3drJj6UYHJ1f719nT3cPu+6TRjw0DIhp26mkBcJIb/2G7fe8LaNpaAUDyToSZ/jPEz9W11422U3i4DEMpRzaFh4vdxhgAwOSJk+CscLbfDmnMYMOAiIbdC1FrTD6qKAgCTlWcAwDMDJiBdcuex+SJk/C9Nf8s5vnth2eMtpv4pM/wFXaE8pw1xewYA4WTApMmemPSRG8onPqeQp/kqcSkid5wc3GT5HeSy/GdlYOb94DGH858SETDTqfT4Ws7/g/q7981WjfFaxJ+++NfSSY40jteUiyZ4AgA5E5yhCetgMJl/E3DcvX9P+Hv9x4aNRCWPLUIJ/YdNrtd7q8P4cB//UL8LpPJ8D8HTiNwqv8wlZRGs/H3XxYROZxcLseLMd/Bm+/lGg0mbG59gG/tfxG7vrMNyxY8i4kTPHG78QtxSmRDTnInfGd5PH4c/QNHFn/EOOV0Fjvy9wxpH05yJywLe5aNAjKLPQZE5BB//0cb4vduxK2GukG9EbA/uVwObw8vnHrjPQT4GPcujAddPd347o9fxpUbf7HtGMrkcHV2wfuvH8XcJ2YPQwlpLOAYAyJyiIkTPHF0z0FM9vI2ORDREid57x+0woyCcdsoAAAXhTPeTsvFE76BVh9DuUwOuVyGQzuz2Sggi9gwICKH8Z+iwm9//CvM8HsCsi//NxC5TI5JEyfh1z8sRMhXgh1QypHN21OJ93/0rvieA7ls4Mu4XC6Hu6sbjv/gF/haaMRwF5FGOd5KICKHa3/0D7z/P6dReO4/cPPuLTjJnSRd4/rvvpOmInFVAr6zYq1klkQCOru7cLr8HAp/fwLVtZ8aHUO5TA6doMMkTyX+KfoFfDd6Hfym+D7GEtNowYYBET02giCg8vplvF92GnfuN0DT1oqJEzww1dsH/yciBsu/utTqLvPx6M81f0Vx6W/x+ZfzQri7usFHOQWrw1dg1dMr4ML5CsgKbBgQERGRiGMMiIiISMSGAREREYnYMCAiIiIRGwZEREQkYsOAiIiIRGwYEBERkYgNAyIiIhKxYUBEREQiNgyIiIhIxIYBERERidgwICIiIhEbBkRERCRiw4CIiIhEbBgQERGRiA0DIiIiErFhQERERCI2DIiIiEjEhgERERGJ2DAgIiIiERsGREREJGLDgIiIiERsGBAREZGIDQMiIiISsWFAREREIjYMiIiISMSGAREREYnYMCAiIiIRGwZEREQkYsOAiIiIRGwYEBERkYgNAyIiIhKxYUBEREQiNgyIiIhIxIYBERERidgwICIiIhEbBkRERCRiw4CIiIhEbBgQERGRSPG4C0BERDSaPHr0CF1dXUbpLi4ucHNzewwlsi82DIhs8HX5C4+7CMNP7iT5KnPm5YKkZC4u0u8Kg3PExdl0usF5JCik55hknZPBOkVf57bg3JeuM0xXSDvABYWsL59z3zqdk8x0HoPPvd8N9mWwTemR72HGdE803NOiP5VKhdra2lHfOOB/6URERIPU1dWFhnta1FZNh9fEvgZH6991mLHoc3R1dbFhQERENN54TZRLGgZjCRsGREREVtIKOmgF6fexgg0DIiIiK+kgQAdB8n2sYMOAiIjISjrooOv3faxgw4CIiMhKWkGAVhAk38eKsTlygoiIaBjpbyUYLtYqKChAUFAQ3NzcsGTJElRWVlrMX1xcjLlz58LNzQ0hISE4c+aMZH1bWxu2bt2KwMBAuLu7Izg4GIcOHbK6XGwYEBERWUkHAVqDxdqGQVFREVJTU7F//35cvnwZCxYsQExMDO7du2cyf3l5OdavX49NmzbhypUriIuLQ1xcHKqrq8U8qampOHfuHI4fP45PP/0UKSkp2Lp1K06dOmVV2dgwICIistJQewyys7Px0ksvITk5WfxlP2HCBBw5csRk/gMHDmD16tXYtWsXnnrqKbz++utYuHAh8vPzxTzl5eV48cUXERUVhaCgILz88stYsGDBgD0R/bFhQEREZCX9GAPDBQBaW1slS2dnp9G2XV1dqKqqQnR0tJgml8sRHR2NiooKk/EqKiok+QEgJiZGkj8yMhKnTp1CfX09BEHApUuX8Le//Q2rVq2yqm5DahhkZWUhMDAQCoUCt27dGsquiB6b0tJSKBQKzJgxA4cPH37cxSGiUUBnYgEAtVoNpVIpLm+++abRtvfv34dWq4Wvr68k3dfXFw0NDSbjNTQ0DJg/Ly8PwcHBCAwMhIuLC1avXo2CggJ87Wtfs6puNjcMOjo6kJGRgcTERNTW1kKtVgMANmzYgPj4eEneS5cuQSaTYe/evZL0zMxM+Pn5mXwZxWA4MtZIKAPrOzyxIiMjUVNTg9jYWOzcuRPCGBpdTETDQ9tvjIH2y1sJdXV10Gg04rJ7926HlSkvLw9/+tOfcOrUKVRVVSErKwvf+9738MEHH1i1H5sbBk1NTejp6cHatWuhVqvh9OULL7y9vaHRaCR5s7Ky4OrqKknv6elBXl4etm3bBpd+L+IYLEfGGgllYH2HJ5aLiwumT5+O+Ph4tLa2oq2tzabyEhF5eXlJFldXV6M8Pj4+cHJyQmNjoyS9sbERKpXK5H5VKpXF/B0dHdizZw+ys7PxzW9+E6Ghodi6dSsSEhLw85//3Ko62Nww0Ol6O04UCulUCP0v5tevX0dJSQmSkpIk6cXFxWhubsbmzZttLYJDY42EMrC+w1tfZ+fet8FptcZvTSMiMqQVjJfBcnFxwaJFi3DhwgUxTafT4cKFC4iIiDC5TUREhCQ/AJSUlIj5u7u70d3dDblc+mfdyclJ/Hs9WDY3DB49egSg72Kq1/9inp2djYSEBAQHB0vSc3JykJycjMmTJ9taBIfGGgllYH2Ht776c9nUYCEiIkPmxhgMVmpqKt5++228++67+PTTT7Flyxa0t7cjOTkZAJCYmCi5DbFjxw6cO3cOWVlZuH79Ol577TV8/PHH2Lp1K4Denoply5Zh165dKC0tRW1tLQoLC3H06FGjW7IDsalhoNVqceLECbi7u2P69OmSdYYX86amJhw/fhxpaWlQKpViellZGaqqqpCSkgKg955MVFQUgoODERoaiuLiYovpjyOWOfYsAwCcPn0ac+bMwezZs40GwtkSCwDi4+MxadIkrFu3TkwbKfU1Vbah1tfUMRxMfWfOnAm5XI6ioiKOMyAii3SQQWuw6CCzant9F/++ffsQFhaGTz75BOfOnRMHGN6+fRt3794V80dGRuK9997DW2+9hQULFuDXv/41Tp48ifnz54t5Tpw4gaeffhrf/e53ERwcjJ/85Cf4t3/7N6t7U62eErmsrAwrVqyATCZDYWEhPD09JesNL+YFBQVYunQpQkNDUVNTI6ZnZ2djzZo1mDVrVm8hFArk5uYiLCwMDQ0NWLRoEb7xjW+YTffw8HB4LHPsWQZXV1ekpqbi0qVLUCqVWLRoEeLj4zFlyhSbYwG9Lc1//ud/xrvvviumjYT6enh4mCzbUGL19PSYPIaDqa9KpUJ+fj62bt2KtLQ0/O///i+eeOIJi8eDiMYnndC7GH631tatW8Vf/P2VlpYapb3wwgt44YUXzO5PpVLhnXfesb4g/VjdMFi8eDGqqqqQmZmJtLQ0rFu3TjLgy9vbG93d3Xjw4AEOHjyIY8eOAejt5tBoNKipqcGpU6dQVlYmbuPn5wc/Pz8AvRXz8fFBS0sL1Gq1yXTDhoGjYpljzzLU1dVh3rx5CAgIAADExsbi/PnzWL9+vc2xACAqKsroJDNXBkfW18PDw2TZhhKrsrLS7DEcqL76EcRbtmzB5s2b4e/vb/FYENH4pe8pMPw+Vlh9K8Hd3R2hoaFIT0/H3bt3cfPmTcl6b29vAL2PTahUKnFiBX33b25uLsLDwxEZGWly/1VVVdBqteLjj5bSHRnLHHuW4c6dO+IfNAAICAhAfX293WKZ87jqOxyxBjqGlspw7do1aDQaZGRkYP78+UYDa4mI9LT9biWMpYaBzVe+iRMnAugbhKinv5jn5OTgwIEDYrqXlxcePnyIwsJCs10dLS0tSExMxNtvvz2odEfGMmc4yjAcscxhffvoBx32vz1GRNSfTpBBJ8gk38cKm59K0M9b0P8xCP3F3MPDQ+wCB3p/5Wm1WkydOtXkCMnOzk7ExcUhIyND8gvQXLojYxUWFkImM/2Pbs8y+Pv7S37d1tfXS7qzbY1lzuOu70BsiWXpGA5UBv1jivpzm4jIHPYYmDBt2jTIZDJUVFRg4cKFYrqPj4/JEd2+vr5mR3oLgoCkpCSsWLECGzduHDDd0bFqa2uxbNkyk/uzZxnCw8NRXV2N+vp6KJVKnD17VjLDny2xzBkJ9R2ILbHMHcPBlKG8vBweHh5ibxgRkTlayKE1+G09lmY/kQlDeC4rJSUFeXl5UCgUuHHjhs0juP/4xz/ia1/7GkJDQ8W0Y8eOQaPRmEwPCQmxtcg2xQoPD0d+fj7Cw8NtjjuYMoSEhODUqVNIS0uDTqdDeno6Xn755SHHi46OxtWrV9He3o7JkyejuLgYWq12RNTXVNnMTfAxWKaOoaUylJWVYeXKlRAEAXv37sW+ffsGjPF1ufmRwWOGXNpzInPmmAuSkvWbaVRmOC7Hxdl0usF5JCj69c4ZrjPsuVP0/QEWnPvSdYbpCmkHuKAw6OZ37lunc5KZzqOQ/uLXGRRZMNjm/KGXoFQqcbFaDc+Jfftt+7sOK+b3Tofs5eWF0WxIDQMAaGtrQ1NTE9RqNQdr0ajU0dGBxsZG+Pr6wt3dfVDbsGFANL4bBhf+8gQ8DBoG7X/XYWXI7THRMBjyf+menp4crEWjmru7O4KCgh53MYhoFBnLjyvyJwAREZGVtIIcWsFgjMEYmiyVDQMiIiIr6SCDzmDwoQ5jp2XAhgHReGTwOKpMYXAv2MngPq0TxxjQAPo/2mswLkVm+JY/w8efDYa1yfrNIyz0aE2vEwziGDwi79RtYYyBvC+m3OC8NhwvAMPxBvJ+YwwM1zkZ3ybgrQQiIiISGd9KYI8BERHRuKXr90ZFa9+uOJKxYUBERGQlXb8JjjjGgIiIaBwby7cSbH5XAhEREY097DEgIiKykg5yPq5IREREvbSCDFqDVy1rx9Brl9kwICIispLx2xXZY0BERDRu6QQ5dAaDD3VjaPAhGwZERERWGss9BkN6KiErKwuBgYFQKBS4deuWnYpE5FilpaVQKBSYMWMGDh8+/LiLQ0SjgA594wy0ggy6AbcYPWxuGHR0dCAjIwOJiYmora2FWq0GAGzYsAHx8fGSvJcuXYJMJsPevXsl6ZmZmfDz80NXV5dNZXBkrJFQBtZ3eGJFRkaipqYGsbGx2LlzJ4Qx1CVIRMND/1SC4TJW2FyTpqYm9PT0YO3atVCr1XD68mUa3t7e0Gg0krxZWVlwdXWVpPf09CAvLw/btm2Di4uLTWVwZKyRUAbWd3hiubi4YPr06YiPj0drayva2tpsKi8RjR/6CY4MF2sVFBQgKCgIbm5uWLJkCSorKy3mLy4uxty5c+Hm5oaQkBCcOXNGsl4mk5lcMjMzrSqXzQ0D3ZdvuFIopMMU+l/Mr1+/jpKSEiQlJUnSi4uL0dzcjM2bN9taBIfGGgllYH2Ht77Ozr1vGdRqtQPkJKLxTv+uBMPFGkVFRUhNTcX+/ftx+fJlLFiwADExMbh3757J/OXl5Vi/fj02bdqEK1euIC4uDnFxcaiurhbz3L17V7IcOXIEMpkM3/rWt6wqm80Ng0ePHgHou5jq9b+YZ2dnIyEhAcHBwZL0nJwcJCcnY/LkybYWwaGxRkIZWN/hra/+XO7s7BzSfoiIBpKdnY2XXnoJycnJCA4OxqFDhzBhwgQcOXLEZP4DBw5g9erV2LVrF5566im8/vrrWLhwIfLz88U8KpVKsvz2t7/F8uXL8ZWvfMWqstnUMNBqtThx4gTc3d0xffp0yTrDi3lTUxOOHz+OtLQ0KJVKMb2srAxVVVVISUkBANTV1SEqKgrBwcEIDQ1FcXGxuL/4+HhMmjQJ69atMyqHI2OZY+8ynD59GnPmzMHs2bONBsLZEstSvR53fS0dh6HU19wxHKi+M2fOhFwuR1FREccZEJFF5m4ltLa2ShZTPzS6urpQVVWF6OhoMU0ulyM6OhoVFRUm41VUVEjyA0BMTIzZ/I2Njfjd736HTZs2WV03qxsGZWVlcHNzwxtvvIHDhw/D09NTst7wYl5QUIClS5ciNDQUXl5eYnp2djbWrFmDWbNmAei9HZGbm4tr167h/PnzSElJQXt7OwBgx44dOHr0qMmyODKWOfYsQ09PD1JTU3Hx4kVcuXIFmZmZaG5uHlIsS/V63PW19G9hayxLx3Cg+qpUKuTn5+OVV16Bq6srbt++bdWxIaLxQ/+4ouECAGq1GkqlUlzefPNNo23v378PrVYLX19fSbqvry8aGhpMxmtoaLAq/7vvvouJEydi7dq1VtfN6nkMFi9ejKqqKmRmZiItLQ3r1q2TDPjy9vZGd3c3Hjx4gIMHD+LYsWMAIF7Ma2pqcOrUKZSVlYnb+Pn5wc/PD0DvxdnHxwctLS3w8PBAVFQUSktLTZbFkbHMsWcZ6urqMG/ePAQEBAAAYmNjcf78eaxfv97mWADM1utx11etVpv9t7A1VmVlpdljOFB9NRoNdu/ejS1btmDz5s3w9/e36tgQ0fihE2TQGUyDrP9cV1cHLy8vMd3V1dXhZQOAI0eO4Lvf/S7c3Nys3tbqHgN3d3eEhoYiPT0dd+/exc2bNyXrvb29AQB5eXlQqVRYtWoVAIjdv7m5uQgPD0dkZKTJ/VdVVUGr1YqPP1riyFiOKMOdO3fEP2gAEBAQgPr6ervFsofhOuam0m2JNdAxtOTatWvQaDTIyMjA/PnzjQbWEhHp6fr1FugfV/Ty8pIsphoGPj4+cHJyQmNjoyS9sbERKpXKZDyVSjXo/GVlZfjss8/wL//yLzbVzebBhxMnTgTQNwhRT38xz8nJwc6dO8V0Ly8vPHz4EIWFhZJ0Qy0tLUhMTMRbb701qDI4MtZIKMNQYtnLcNTXXLqj66u/F9j/9hgRUX/6KZENl8FycXHBokWLcOHChb796XS4cOECIiIiTG4TEREhyQ8AJSUlJvP/8pe/xKJFi7BgwYJBl8mQzQ0D/bwF+scW9fQXcw8PD7ELHOj9lafVajF16lSjSWuA3otyXFwcMjIyBv2L11GxCgsLIZOZfhTFnmXw9/eX/Lqtr6+XdGfbGstajqqvpXRbYw10DC3RP6aoP7eJiMzRQma0WCM1NRVvv/023n33XXz66afYsmUL2tvbkZycDABITEzE7t27xfw7duzAuXPnkJWVhevXr+O1117Dxx9/jK1bt0r229raiuLiYpt7C4AhvCth2rRpkMlkqKiowMKFC8V0Hx8fkyO6fX19zY70FgQBSUlJWLFiBTZu3DjoMjgqVm1tLZYtWzbsZQgPD0d1dTXq6+uhVCpx9uxZyQx/tsSyhaPqO9C/hS2xBjqGlpSXl8PDw0PsDSMiMsf4JUrW/c5OSEhAU1MT9u3bh4aGBoSFheHcuXPiAMPbt29DLu/bZ2RkJN577z28+uqr2LNnD2bPno2TJ09i/vz5kv2eOHECgiBIfkxZSyYM4S9KSkoK8vLyoFAocOPGDTzxxBM27eePf/wjvva1ryE0NFRMO3bsGEJCQhAdHY2rV6+ivb0dkydPRnFxsdmuluGKFR4ejvz8fISHh9scd7BlOHXqFNLS0qDT6ZCeno6XX355yPHM1etx11ej0Zg9DkNh7hiaq29ZWRlWrlwJQRCwd+9e7Nu3b8AYX5e/MKQyPnYGPUIyRd9cJDIng4tbv54TmTPHXFA//XvX5H3fZQon0/ksnGOC4TqDP4ow2JfgJDOZR1BI/zAL8r58hvuVbG/w2TA/AOgM1xl8/u+iLVAqldj3UTTcPPv+23nU1o0fLfkAGo1GMvhwNBpSwwAA2tra0NTUBLVazcFaNCp1dHSgsbERvr6+cHd3H9Q2bBgQYVw3DF790yqjhsGPnzk/JhoGQ/4v3dPTk4O1aFRzd3dHUFDQ4y4GEdGIwJ8AREREVur/4iRbXqI0UrFhQEREZCWh34uTBCufShjJ2DAgIiKyEnsMiGhsMRhzLHR3GaT3XRKMfv9wfgfqr98pYXbwquHgQcNBrIp+gw+dDQcZGm5jepChYbrOqd/gQ4XBdMUK0wMJdc4Gn/vVRboNjJibEnksYMOAiIjISoYvTtJ/HyvYMCAiIrISewyIiIhIpDN4cZL++1jBhgEREZGVtIIMWoNeAi17DIiIiMYv3kogIiIikdDvJUrCGHpccezUhIiIiIaMPQZERERW0kIGrcFsH1rOfEhERDR+6QT0G2PwGAtjZ2wYEBERWUnXb4yBjmMMemVlZSEwMBAKhQK3bt2yU5GIHKu0tBQKhQIzZszA4cOHH3dxiGgU0H35EiXDZaywuWHQ0dGBjIwMJCYmora2Fmq1GgCwYcMGxMfHS/JeunQJMpkMe/fulaRnZmbCz88PXV1dsIUjY42EMrC+wxMrMjISNTU1iI2Nxc6dOyEIY6hPkIiGhX4eA8NlrLC5YdDU1ISenh6sXbsWarUaTl++8MLb2xsajUaSNysrC66urpL0np4e5OXlYdu2bXBxcbGpDI6MNRLKwPoOTywXFxdMnz4d8fHxaG1tRVtbm03lJaLxQ38rwXAZK2yuiU6nAwAoFNJhCv0v5tevX0dJSQmSkpIk6cXFxWhubsbmzZttLYJDY42EMrC+w1tfZ2dnAIBWqx3Sfoho7NNBJk5ypBN4KwEA8OjRIwB9F1O9/hfz7OxsJCQkIDg4WJKek5OD5ORkTJ482dYiODTWSCgD6zu89dWfy52dnUPaDxGNfUK/8QXCeG8YaLVanDhxAu7u7pg+fbpkneHFvKmpCcePH0daWhqUSqWYXlZWhqqqKqSkpAAA6urqEBUVheDgYISGhqK4uFjc3+nTpzFnzhzMnj3baGCYPWNZKoMl9q5vfHw8Jk2ahHXr1tkllrl9joT6DlQGW+tr6pwZTH1nzpwJuVyOoqIijjMgIoskvQX9pkce7axuGJSVlcHNzQ1vvPEGDh8+DE9PT8l6w4t5QUEBli5ditDQUHh5eYnp2dnZWLNmDWbNmgWg93ZEbm4url27hvPnzyMlJQXt7e3o6elBamoqLl68iCtXriAzMxPNzc3DEstc+kDsWQYA2LFjB44ePWq3WOb2ORLqO1AZbIll7pwZTH1VKhXy8/PxyiuvwNXVFbdv3x7weBARjTVWz2OwePFiVFVVITMzE2lpaVi3bp1kwJe3tze6u7vx4MEDHDx4EMeOHQMA8WJeU1ODU6dOoaysTNzGz88Pfn5+AHovzj4+PmhpaUFdXR3mzZuHgIAAAEBsbCzOnz+P9evX2z2WWq02me7h4WHxeNizDB4eHoiKikJpaandYgEwuU9LZXBUfQc65rbEqqysNHvODFRfjUaD3bt3Y8uWLdi8eTP8/f0tHgsiGr84j4EBd3d3hIaGIj09HXfv3sXNmzcl6729vQEAeXl5UKlUWLVqFQCI3b+5ubkIDw9HZGSkyf1XVVVBq9VCrVbjzp074gUeAAICAlBfXz8ssQaTbspwlWE4YpkzEuprKt2WWAOdM5bKcO3aNWg0GmRkZGD+/PlGA2uJiPTscSuhoKAAQUFBcHNzw5IlS1BZWWkxf3FxMebOnQs3NzeEhITgzJkzRnk+/fRTPP/881AqlfDw8MDTTz9tde+nzU2ciRMnAugbhKinv5jn5ORg586dYrqXlxcePnyIwsJCSbqhlpYWJCYm4q233hpUGYYj1kgow3DEMmck1NdcuqPrqx902P/2GBFRf0Od4KioqAipqanYv38/Ll++jAULFiAmJgb37t0zmb+8vBzr16/Hpk2bcOXKFcTFxSEuLg7V1dVinpqaGixduhRz585FaWkp/vznP2Pv3r1wc3Ozqmw2Nwz08xboH1vU01/MPTw8xC5/oPdXnlarxdSpU40mrQF6L8pxcXHIyMgQfwH6+/tLfu3V19dLunftGctSemFhIWQy0//o9i6DJbbGMmck1NfScbAllqVzZqBjrn9MUX9uExGZY67HoLW1VbKYe8opOzsbL730EpKTkxEcHIxDhw5hwoQJOHLkiMn8Bw4cwOrVq7Fr1y489dRTeP3117Fw4ULk5+eLeX7wgx/gG9/4Bn72s5/hq1/9KmbOnInnn38e06ZNs6puNjcMpk2bBplMhoqKCkm6j48PBEHAF198IXmU0dfXF4Ig4ObNm0YXXkEQkJSUhBUrVmDjxo1ienh4OKqrq1FfX4+2tjacPXsWMTExwxLLXDoA1NbWYtmyZSaPgz3LMBBbYpkzEuo70HGwJZa5c2Ywx7y8vBweHh5ibxgRkTnmGgZqtRpKpVJc3nzzTaNtu7q6UFVVhejoaDFNLpcjOjra6G+qXkVFhSQ/AMTExIj5dTodfve73+HJJ59ETEwMpk2bhiVLluDkyZNW183mhoGrqyu2b9+O7du3D3kE94cffoiioiKcPHkSYWFhCAsLw1/+8hcoFApkZWVh+fLlCAsLw86dOzFlyhSb41iKZS4dAM6ePYuf/exnQ4o7mDIAQHR0NF544QWcOXMGgYGBZk8Sa5ja50ior6Uy2MrcOWMpVllZGVxcXPCjH/0I6enp9qgyEY1x5hoGdXV10Gg04rJ7926jbe/fvw+tVgtfX19Juq+vLxoaGkzGa2hosJj/3r17aGtrw09+8hOsXr0a58+fR3x8PNauXYs//OEPVtVtSKOrcnNz8eMf/xhNTU1DGsG9dOlSo1sSes8//zyef/55m/dtTSxz6QMNCLFnGT744AO7xrK0z5FQX3PpQ2HqnLFUhsWLF+Nvf/sbfH194e7ubvfyENHY03/Aof6zl5cXvLy8HF+eL69va9aswSuvvAIACAsLQ3l5OQ4dOmS2F9iUIQ+79vT05GAtGtXc3d0RFBT0uItBRKOIAEgGHFozJZqPjw+cnJzQ2NgoSW9sbIRKpTK5jUqlspjfx8cHCoUCwcHBkjxPPfUU/vjHP1pRuiG+dpmIiGg8Gsrjii4uLli0aBEuXLjQtz+dDhcuXEBERITJbSIiIiT5AaCkpETM7+LigqeffhqfffaZJM/f/vY3oxmKB8IHtYmIiBwsNTUVL774IhYvXozw8HDk5uaivb0dycnJAIDExEQEBASIgxd37NiBZcuWISsrC8899xxOnDiBjz/+WPLo9a5du5CQkICvfe1rWL58Oc6dO4f//u//NjtpnjlsGBCRSOjpMfkZANBvzhIiI/K+p4Rkzn1/XmQGs+PKDCcOc5G+hE9uuE7Rty/BYF9wMpOukHaAC859+XQG6wTJZ4MxAk7SX/w6Z4N8Tsa9AebGGAxWQkICmpqasG/fPjQ0NCAsLAznzp0TBxjevn0bcnlfGSIjI/Hee+/h1VdfxZ49ezB79mycPHkS8+fPF/PEx8fj0KFDePPNN7F9+3bMmTMH//Vf/4WlS5daVTaZwLfFEFnt6/IXHncRiEaeITYMZKOgYfC74/8KpVKJr/33/4XCw1VM72nvxP9889+h0Wgey+BDe2KPARERkZWG2mMwkrFhQEREZCVBkEEwaAwIbBgQERGNX/3fj2DtuxJGMjYMiIiIrMRbCURERCTirQQiIiISsceAiIiIRGO5x4BTIhMREZGIPQZERERWEvrdSmCPwZeysrIQGBgIhUKBW7du2alIRI5VWloKhUKBGTNm4PDhw4+7OEQ0CggABMFgedwFsiObGwYdHR3IyMhAYmIiamtroVarAQAbNmxAfHy8JO+lS5cgk8mwd+9eSXpmZib8/PzQ1dVlUxkcGWsklIH1HZ5YkZGRqKmpQWxsLHbu3AnOEk5EA9HPY2C4jBU2NwyamprQ09ODtWvXQq1Ww+nL+au9vb2h0WgkebOysuDq6ipJ7+npQV5eHrZt2wYXg3m0reHIWCOhDKzv8MRycXHB9OnTER8fj9bWVrS1tdlUXiIaP/SDDw2XscLmhoFOpwMAKBTSYQr9L+bXr19HSUkJkpKSJOnFxcVobm7G5s2bbS2CQ2ONhDKwvsNbX2fn3he6aLXaIe2HiMY+/eOKhstYYXPD4NGXr2DVX0z1+l/Ms7OzkZCQgODgYEl6Tk4OkpOTMXnyZFuL4NBYI6EMrO/w1ld/Lnd2dg5pP0Q09knGF3y5jBU2NQy0Wi1OnDgBd3d3TJ8+XbLO8GLe1NSE48ePIy0tDUqlUkwvKytDVVUVUlJSxO3i4+MxadIkrFu3Tkyrq6tDVFQUgoODERoaiuLi4iHHsrRPU2UYiD3rCwCnT5/GnDlzMHv2bKOBcPaONRLqa6kMtsYydwwHqu/MmTMhl8tRVFTEcQZEZBFvJRgoKyuDm5sb3njjDRw+fBienp6S9YYX84KCAixduhShoaHw8vIS07Ozs7FmzRrMmjVL3G7Hjh04evSoZF8KhQK5ubm4du0azp8/j5SUFLS3tw8plqV9mirDQOxZ356eHqSmpuLixYu4cuUKMjMz0dzcPCyxRkJ9ByqDLbEsHcOB6qtSqZCfn49XXnkFrq6uuH37tlXHhojGDzYMDCxevBhVVVVISEhAWlqa0Shwb29vdHd348GDBzh48CDS0tIAQLyY19TU4NSpU2K6XlRUFCZOnChJ8/PzQ1hYGIDei7aPjw9aWlqGFMvSPk2VYSD2rG9lZSXmzZuHgIAAeHp6IjY2FufPnx+WWCOhvgOVwZZYlo7hQPXVaDTYvXs3tmzZgsuXL8Pf39+qY0NE4wfHGBhwd3dHaGgo0tPTcffuXdy8eVOy3tvbGwCQl5cHlUqFVatWAYDY/Zubm4vw8HBERkZaFbeqqgparVZ8LNIesUzt01r2rO+dO3cQEBAgfg8ICEB9ff2wxLKVI8tgS6yBjqEl165dg0ajQUZGBubPn280sJaIaDyw+cqn/+WlH4Sop7+Y5+Tk4MCBA2K6l5cXHj58iMLCQrzzzjtWxWppaUFiYiLefvttu8Uyt09rDUd9R0KskVAGR9dXP+iw/+0xIqL++g84HEvDkmx+KkE/b4H+sUU9/cXcw8MD69evF9OVSiW0Wi2mTp1qNGmNJZ2dnYiLi0NGRobRr1BbY1napymFhYWQyUx3E9mzvv7+/pJft/X19ZLubHsfW3McVd+B2BJroGNoif4xRf25TURkTm/DwHCMweMukf3Y3GMwbdo0yGQyVFRUYOHChWK6j4+PyRHdvr6+Vo/0FgQBSUlJWLFiBTZu3Gi03pZYA+3TlNraWixbtszkOnvWNzw8HNXV1aivr4dSqcTZs2clM/zZM5YljqrvQGyJNdAxtKS8vBweHh5Wj7sgovFnLL9d0eaGgaurK7Zv347t27cjNTUVN27cwBNPPGFzQaKjo3H16lW0t7cjMDAQxcXF0Gq1KCoqQmhoKE6ePAkAOHbsGEJCQmyO8+GHH5rdp6kyRERE4OzZs8jPz7c5pinmYmVlZWH58uXQ6XRIT0/HlClThi3WSKivuXRbKRQKs8fQXKyysjKsXLkSgiAMuhFBROObAOn7EcZQhwFkwhB/5rW1taGpqQlqtZqDtWhU6ujoQGNjI3x9feHu7j6obb4uf2GYS0U0Csn7bsPJnPv+HsgMpiqXGf6dcJFOkCdZp+jbl2CwLziZSVdI74wLzn35dAbrBMnnvl/5OifpL36ds0E+g3W/O/6vUCqV+MrRPXCa4Cama//xCDcT34BGo4GXlxdGsyG9XRHoHag1Y8YMNgpo1HJ3d0dQUNCgGwVERGKXgeFipYKCAgQFBcHNzQ1LlixBZWWlxfzFxcWYO3cu3NzcEBISgjNnzkjWJyUlQSaTSZbVq1dbXa4hNwyIiIjGnf6TG1k5xqCoqAipqanYv38/Ll++jAULFiAmJgb37t0zmb+8vBzr16/Hpk2bcOXKFcTFxSEuLg7V1dWSfKtXr8bdu3fF5T/+4z+srhobBkRERFYa6rsSsrOz8dJLLyE5ORnBwcE4dOgQJkyYgCNHjpjMf+DAAaxevRq7du3CU089hddffx0LFy40Gg/m6uoKlUolLpMmTbK6bmwYEBERWcnclMitra2SxdRL2bq6ulBVVYXo6GgxTS6XIzo6GhUVFSbjVVRUSPIDQExMjFH+0tJSTJs2DXPmzMGWLVsk0+oPFgcGENlgzsd9g6acZX2vaZbLpD8bzK0zTHeS6czkl84RItkGhvvqMRnDxSAdAOTQGawzHUeSDml8w3VEgOVzRHJewVy6dHvJfyMG65wk6YJBOgzSpZwM5mJxRt9nuSTdyWR+AFBI1vX9hm7Dv/Z+6H/74MvP/WfS3b9/P1577TVJ2v3796HVauHr6ytJ9/X1xfXr12FKQ0ODyfwNDQ3i99WrV2Pt2rWYMWMGampqsGfPHsTGxqKiosKq+VnYMCAiIrKTuro6yVMJrq6uDov9ne98R/wcEhKC0NBQzJw5E6WlpVi5cuWg98NbCURERFYyN8bAy8tLsphqGPj4+MDJyQmNjY2S9MbGRqhUKpPxVCqVVfkB4Ctf+Qp8fHzwv//7v1bVjQ0DIiIiaw3hcUUXFxcsWrQIFy5cENN0Oh0uXLhgdoK3iIgISX4AKCkpsTgh3BdffIHm5mb4+fkNvnBgw4CIiMhq5gYfDlZqairefvttvPvuu/j000+xZcsWtLe3Izk5GQCQmJiI3bt3i/l37NiBc+fOISsrC9evX8drr72Gjz/+GFu3bgXQO9ngrl278Kc//Qm3bt3ChQsXsGbNGsyaNQsxMTFWlY1jDIiIiGwxhHmDExIS0NTUhH379qGhoQFhYWE4d+6cOMDw9u3bkMv7frtHRkbivffew6uvvoo9e/Zg9uzZOHnyJObPnw+g9+Vvf/7zn/Huu+/i4cOH8Pf3x6pVq/D6669bPc5hyFMiE41HWy//k/iZTyXQeDUun0qYUAWlUgn1L/ZD7t43JbKu4xHq/vWHY2JKZPYYEBERWWsMv0WJDQMiIiKryb5cDL+PDWwYEBERWWsM9xgM6amErKwsBAYGQqFQ4NatW3YqEpFjlZaWQqFQYMaMGTh8+PDjLg4RjQZ2eLviSGVzw6CjowMZGRlITExEbW2tOA3khg0bEB8fL8l76dIlyGQy7N27V5KemZkJPz8/dHV12VQGR8YaCWVgfYcnVmRkJGpqahAbG4udO3eC43GJaDyzuWHQ1NSEnp4erF27Fmq1WpyH2dvbGxqNRpI3KysLrq6ukvSenh7k5eVh27ZtcHFxsakMjow1EsrA+g5PLBcXF0yfPh3x8fFobW1FW1ubTeUlonFE/64Ew2WMsLlhoNP1PkqiUEiHKfS/mF+/fh0lJSVISkqSpBcXF6O5uRmbN2+2tQgOjTUSysD6Dm99nZ17H3jSavlYHhFZNtTXLo9kNjcMHj16BKDvYqrX/2KenZ2NhIQEBAcHS9JzcnKQnJyMyZMn21oEh8YaCWVgfYe3vvpz2dRrUomIJDjGQEqr1eLEiRNwd3fH9OnTJesML+ZNTU04fvw40tLSoFQqxfSysjJUVVUhJSVF3C4+Ph6TJk3CunXrJPszl25rrLq6OkRFRSE4OBihoaEoLi4eVCxz7FlfS2Vz9LF1RH0B4PTp05gzZw5mz55tNPDP1ljm9jlQfWfOnAm5XI6ioiKOMyAiy3groU9ZWRnc3Nzwxhtv4PDhw/D09JSsN7yYFxQUYOnSpQgNDYWXl5eYnp2dLc7hrLdjxw4cPXrUKJ65dFtjKRQK5Obm4tq1azh//jxSUlLQ3t4+YCxz7FlfS2Wzd6yRUN+enh6kpqbi4sWLuHLlCjIzM9Hc3DykWJb2OVB9VSoV8vPz8corr8DV1RW3b9+26tgQ0fghE4yXscLqhsHixYtRVVWFhIQEpKWlGY0C9/b2Rnd3Nx48eICDBw8iLS0NAMSLeU1NDU6dOiWm60VFRWHixIlG8cyl2xrLz88PYWFhAHr/EPj4+KClpWXAWObYs76WymbvWCOhvpWVlZg3bx4CAgLg6emJ2NhYnD9/fkixLO1zoPpqNBrs3r0bW7ZsweXLl+Hv72/VsSGicYS3Evq4u7sjNDQU6enpuHv3Lm7evClZ7+3tDQDIy8uDSqXCqlWrAEDs/s3NzUV4eDgiIyOHXPihxqqqqoJWqxUftXwcZTDHVNkceWzNsWcZ7ty5g4CAAPF7QEAA6uvrhxRroH1acu3aNWg0GmRkZGD+/PlGA2uJiERj+FaCzVc+/S8v/SBEPf3FPCcnBwcOHBDTvby88PDhQxQWFuKdd96xNazdYrW0tCAxMRFvv/32YyuDOebK5shja85o+fe1hX7QYf/bY0RERjjzoTH9vAX6xxb19BdzDw8PrF+/XkxXKpXQarWYOnWq0aQ1trI1VmdnJ+Li4pCRkTGoX7aFhYWQyUy3Bu1dX0tlc9SxdVR9/f39Jb/m6+vrJd33tsQaaJ+W6B9T1J/bRERmjeFbCTb3GEybNg0ymQwVFRVYuHChmO7j42NyRLevr6/dR3rbEksQBCQlJWHFihXYuHHjoOLU1tZi2bJldiuDOQOVzVHH1lH1DQ8PR3V1Nerr66FUKnH27FnJjIa2xBpon5aUl5fDw8PD6nEXRERjic0NA1dXV2zfvh3bt29Hamoqbty4gSeeeMLmgkRHR+Pq1atob29HYGAgiouLERERYTbdVh9++CGKiooQGhqKkydPAgCOHTuGkJAQs7HOnj2L/Px8m2OaYiqWVqs1WzZ7x7J0bB1V34iICGRlZWH58uXQ6XRIT0/HlClThhRHoVCY3ae5MpSVlWHlypUQBGHQjQgiGufG8K0EmTDEn5ptbW1oamqCWq3mYC0alTo6OtDY2AhfX1+4u7sPaputl/9J/Ows65spUd7vmSVz6wzTnWQ6M/mlt+kk28BwXz0mY7gYpAOAHDqDdabjSNIhjW+4jgiwfI5IziuYS5duL/lvxGCdkyRdMEiHQbqUk8HtUGeDVyLLJelOJvMDgEKyru+ue9uEKiiVSqgzfwy5u5uYrut4hLpdr0Kj0cDLywuj2ZD/knt6enKwFo1q7u7uCAoKetzFIKJRpP/cBWNpHgP+xCciIrLWGL6VYPNTCURERDT2sMeAiIjISjL0u5Xw2Epif2wYENngs8Xdg8xprlPuMcyVIO+LKXPu+09fZjhvg8FnWf/BxE7sYKR++s35ITln5Abni8G5IyicTOcBAIN1gmT7vj+7gsIg3SCP4CT90ywYxpTLTOYz99l4m77007/SJ/ab7ZAzHxIREY1jHGNAREREIjvMfFhQUICgoCC4ublhyZIlqKystJi/uLgYc+fOhZubG0JCQnDmzBmzeTdv3gyZTIbc3Fyry8WGARERkYMVFRUhNTUV+/fvx+XLl7FgwQLExMTg3r17JvOXl5dj/fr12LRpE65cuYK4uDjExcWhurraKO9vfvMb/OlPf7L5DbFsGBAREVlJP4+B4WKN7OxsvPTSS0hOTkZwcDAOHTqECRMm4MiRIybzHzhwAKtXr8auXbvw1FNP4fXXX8fChQuNZqmtr6/Htm3b8Ktf/QrOzv2nfRocNgyIiIisZeZWQmtrq2TRv7XVUFdXF6qqqhAdHS2myeVyREdHo6KiwmS4iooKSX4AiImJkeTX6XTYuHEjdu3ahXnz5tlcNTYMiIiIrGWmYaBWq6FUKsXlzTffNNr0/v370Gq18PX1laT7+vqioaHBZLiGhoYB8//0pz+FQqHA9u3bh1AxPpVARERkNXNTItfV1UneleDq6uqQ8lRVVeHAgQO4fPkyZLKhPTrJHgMiIiJr6ecxMFwAeHl5SRZTDQMfHx84OTmhsbFRkt7Y2AiVSmUynEqlspi/rKwM9+7dwxNPPAGFQgGFQoHPP/8cO3futPpdMGwYEBERWWsIjyu6uLhg0aJFuHDhgpim0+lw4cIFREREmNwmIiJCkh8ASkpKxPwbN27En//8Z3zyySfi4u/vj127duH3v/+9VVXjrQQiIiIrDfXtiqmpqXjxxRexePFihIeHIzc3F+3t7UhOTgYAJCYmIiAgQByjsGPHDixbtgxZWVl47rnncOLECXz88cd46623AABTpkzBlClTJDGcnZ2hUqkwZ84cq8o2pB6DrKwsBAYGQqFQ4NatW0PZFdFjU1paCoVCgRkzZuDw4cOPuzhENBoMcYKjhIQE/PznP8e+ffsQFhaGTz75BOfOnRMHGN6+fRt3794V80dGRuK9997DW2+9hQULFuDXv/41Tp48ifnz59urRiKbGwYdHR3IyMhAYmIiamtroVarAQAbNmxAfHy8JO+lS5cgk8mwd+9eSXpmZib8/PzQ1dVlUxkcGWsklIH1HZ5YkZGRqKmpQWxsLHbu3AlBGENzmxLR8Og/h4ENl42tW7fi888/R2dnJz766CMsWbJEXFdaWorCwkJJ/hdeeAGfffYZOjs7UV1djW984xsW93/r1i2kpKRYXS6bGwZNTU3o6enB2rVroVar4fTlyzS8vb2h0WgkebOysuDq6ipJ7+npQV5eHrZt2wYXFxebyuDIWCOhDKzv8MRycXHB9OnTER8fj9bWVrS1tdlUXiKiscDmhoFOpwMAKPq9ga3/xfz69esoKSlBUlKSJL24uBjNzc3YvHmzrUVwaKyRUAbWd3jrq58lTKvVDmk/RDQO2OFdCSOVzQ2DR48eAYDRlIv9L+bZ2dlISEhAcHCwJD0nJwfJycmYPHmyrUVwaKyRUAbWd3jrqz+XTc1URkQkwYaBlFarxYkTJ+Du7o7p06dL1hlezJuamnD8+HGkpaVBqVSK6WVlZaiqqpLc+4iPj8ekSZOwbt06yf5Onz6NOXPmYPbs2UYDw2yJVVdXh6ioKAQHByM0NBTFxcUW0wdiz/oOVAZHxnJEfS2lDyWWqXNmMPWdOXMm5HI5ioqKOM6AiCwa6rsSRjKrGwZlZWVwc3PDG2+8gcOHD8PT01Oy3vBiXlBQgKVLlyI0NBReXl5ienZ2NtasWYNZs2aJ2+3YsQNHjx6V7Kunpwepqam4ePEirly5gszMTDQ3Nw8plkKhQG5uLq5du4bz588jJSUF7e3tZtMHYs/6DlQGR8ZyRH0tpdsay9w5M5j6qlQq5Ofn45VXXoGrqytu37494PEgIhprrG4YLF68GFVVVUhISEBaWprRKHBvb290d3fjwYMHOHjwINLS0gBAvJjX1NTg1KlTYrpeVFQUJk6cKEmrrKzEvHnzEBAQAE9PT8TGxuL8+fNDiuXn54ewsDAAvX8IfHx80NLSYjZ9IPas70BlcGQsR9TXUrqtscydM4Opr0ajwe7du7FlyxZcvnzZ5leWEtE4wFsJfdzd3REaGor09HTcvXsXN2/elKz39vYGAOTl5UGlUmHVqlUAIHb/5ubmIjw8HJGRkQPGunPnDgICAsTvAQEBqK+vt1usqqoqaLVa8VHLgdJNsWd9ByqDI2OZM1xlsFesgc4ZwHx9r127Bo1Gg4yMDMyfP99oYC0Rkd5YvpVg85VP/ytPPwhRT38xz8nJwYEDB8R0Ly8vPHz4EIWFhXjnnXdsDWu3WC0tLUhMTMTbb789qPThKIM55srgyFjmjJZ/X3Ms1Vc/6LD/7TEiIpPGUGPAkM1PJejnLdA/tqinv5h7eHhg/fr1YrpSqYRWq8XUqVONJq0xx9/fX/Jrr76+XtK9a2uszs5OxMXFISMjQ/Jr01x6YWGh2bdV2bO+lsrgyFiOrK8ltsSydM5YOrZA32OK+nObiMisMXwrweYeg2nTpkEmk6GiogILFy4U0318fEyO6Pb19bV6pHd4eDiqq6tRX18PpVKJs2fPSma8syWWIAhISkrCihUrsHHjxgHTAaC2thbLli0zuT971tdSGRwZy1H1HYgtscydMwMdWwAoLy+Hh4eH2TEPRER6Q31Xwkhmc8PA1dUV27dvx/bt25GamoobN27giSeesLkg0dHRuHr1Ktrb2xEYGIji4mJEREQgKysLy5cvh06nQ3p6utFLIqz14YcfoqioCKGhoTh58iQA4NixY9BoNCbTQ0JCcPbsWeTn5w8pbn+m6qvVas2WwZGxHFXfiIgIs+m2UigUJs+ZP/7xj2brW1ZWhpUrV0IQBKOplomITOrfSzCGGgYyYYg/89ra2tDU1AS1Ws3BWjQqdXR0oLGxEb6+vnB3dx/UNl+XvzDMpRoG8r5bJDLnvv9WZYa3Tgw+y/r/9+zEt7RTP/1uu0nOGbnB+WJw7ggKJ9N5AMBgnSDZvu/WpqAwSDfIIzhJb38KhjHlMpP5zH023qYv/fSvNkOpVGL2rjfg5Oompms7H+FG5h5oNBp4eXlhNBvyX3JPT08O1qJRzd3dHUFBQY+7GEQ0ivBWAhEREfUZw7cS2DAgIiKyFhsGRDTq6freGil0Gnw2l7/fI6syO7/Cm0Y/o3EoBmNX4OxikM9g7Ipg8OK9fmMUBINzzvCRaUFmMK5AZnpcgE4hHa9gOBZBpzA9RkGaLq2K4Tqdk/Hj27yVQERERH3YY0BEREQiNgyIiIhIj7cSiIiIqA97DIiIiEhvLPcYcCozIiIiErHHgIiIyFpj+FYCewyIiIisZYfXLhcUFCAoKAhubm5YsmQJKisrLeYvLi7G3Llz4ebmhpCQEJw5c0ay/rXXXsPcuXPh4eGBSZMmITo6Gh999JHV5WLDgIiIyEoyE4s1ioqKkJqaiv379+Py5ctYsGABYmJicO/ePZP5y8vLsX79emzatAlXrlxBXFwc4uLiUF1dLeZ58sknkZ+fj7/85S/44x//iKCgIKxatQpNTU3W1W2ob1ckGo9G5dsVrcWZD2kA/Wc+lA1i5kO4WJj50HB7wzctOht8VshNfnbUzIfnf/ESlEolgrcYv13x2sHBv11xyZIlePrpp8VX3Ot0OqjVamzbtg0ZGRlG+RMSEtDe3o7Tp0+Lac888wzCwsJw6NAhkzFaW1uhVCrxwQcfYOXKlQOWSW9IPQZZWVkIDAyEQqHArVu3hrIrosemtLQUCoUCM2bMwOHDhx93cYhoFNA/lWC4AL1/jA2Xzs5Oo227urpQVVWF6OhoMU0ulyM6OhoVFRUm41VUVEjyA0BMTIzZ/F1dXXjrrbegVCqxYMECq+pmc8Ogo6MDGRkZSExMRG1tLdRqNQBgw4YNiI+Pl+S9dOkSZDIZ9u7dK0nPzMyEn58furq6bCqDI2ONhDKwvsMTKzIyEjU1NYiNjcXOnTvBTjQiGpCZMQZqtRpKpVJc3nzzTaNN79+/D61WC19fX0m6r68vGhoaTIZraGgYVP7Tp0/D09MTbm5uyMnJQUlJCXx8fKyqms0Ng6amJvT09GDt2rVQq9Vw+rJLyNvbGxqNRpI3KysLrq6ukvSenh7k5eVh27ZtcLGxi9KRsUZCGVjf4Ynl4uKC6dOnIz4+Hq2trWhra7OpvEQ0zpgYeFhXVweNRiMuu3fvdmiRli9fjk8++QTl5eVYvXo1vv3tb5sdt2COzQ0DnU4HAFD0u8fU/2J+/fp1lJSUICkpSZJeXFyM5uZmbN682dYiODTWSCgD6zu89XV27r33qdVqB8hJROOduVsJXl5eksXV1dVoWx8fHzg5OaGxsVGS3tjYCJVKZTKeSqUaVH4PDw/MmjULzzzzDH75y19CoVDgl7/8pVV1s7lh8OjRIwB9F1O9/hfz7OxsJCQkIDg4WJKek5OD5ORkTJ482dYiODTWSCgD6zu89dWfy6buCRIRSQzhcUUXFxcsWrQIFy5cENN0Oh0uXLiAiIgIk9tERERI8gNASUmJ2fyG+7X2mmZTw0Cr1eLEiRNwd3fH9OnTJesML+ZNTU04fvw40tLSoFQqxfSysjJUVVUhJSVF3C4+Ph6TJk3CunXrJPs7ffo05syZg9mzZxsNDLMlVl1dHaKiohAcHIzQ0FAUFxcPWAZL7F1fS2VwZCxH1NfSv8VQYpk7Zwaq78yZMyGXy1FUVMRxBkQ0rFJTU/H222/j3XffxaeffootW7agvb0dycnJAIDExETJbYgdO3bg3LlzyMrKwvXr1/Haa6/h448/xtatWwEA7e3t2LNnD/70pz/h888/R1VVFf75n/8Z9fX1eOEF656isrphUFZWBjc3N7zxxhs4fPgwPD09JesNL+YFBQVYunQpQkND4eXlJaZnZ2djzZo1mDVrlqTSR48eleyrp6cHqampuHjxIq5cuYLMzEw0NzcPKZZCoUBubi6uXbuG8+fPIyUlBe3t7WbLMBB71negMjgyliPqa+nfwtZYls6ZgeqrUqmQn5+PV155Ba6urrh9+7ZVx4aIxg9ztxIGKyEhAT//+c+xb98+hIWF4ZNPPsG5c+fEAYa3b9/G3bt3xfyRkZF477338NZbb2HBggX49a9/jZMnT2L+/PkAACcnJ1y/fh3f+ta38OSTT+Kb3/wmmpubUVZWhnnz5llVNqunRF68eDGqqqqQmZmJtLQ0rFu3TjLgy9vbG93d3Xjw4AEOHjyIY8eOAYB4Ma+pqcGpU6dQVlYm2W9UVBRKS0slaZWVlZg3bx4CAgIAALGxsTh//jzWr19vcyw/Pz/4+fkB6P1D4OPjg5aWFnh4eJgsw0DsWV9L6Y6O5Yj6Wvq3sDWWpXNmoPrqBwpt2bIFmzdvhr+/v1XHhojGETtMibx161bxF39/pq5VL7zwgtlf/25ubnj//fetL4QJVvcYuLu7IzQ0FOnp6bh79y5u3rwpWe/t7Q0AyMvLg0qlwqpVqwBA7P7Nzc1FeHg4IiMjB4x1584d8QIPAAEBAaivr7dbrKqqKmi1WvFRS1vYs74jKZajy2Dq38KWWAOdM5Zcu3YNGo0GGRkZmD9/vtHAWiIivaH2GIxkNl/5Jk6cCKBvEKKe/mKek5ODAwcOiOleXl54+PAhCgsL8c4779ga1m6xWlpakJiYiLfffvuxlWEkx3JkGcz9Wzi6vvoBOv1vjxERGeFLlIzp5y3QP7aop7+Ye3h4iF3+QO+vPK1Wi6lTpxpNWmOOv7+/5NdefX29pHvX1lidnZ2Ii4tDRkbGoH7ZFhYWQtZvetihlsEWjorlyPpa+rewJdZA54wl+scUnfpN00pEZMQOL1EaqWzuMZg2bRpkMhkqKiqwcOFCMd3Hx8fkiG5fX1+rR3qHh4ejuroa9fX1UCqVOHv2rGTGO1tiCYKApKQkrFixAhs3bhxUOWpra7Fs2TKT6+xZ34E4Kpaj6jvQv4UtsQY6ZywpLy+Hh4eH2BtGRGRO/9sHvJUAwNXVFdu3b8f27duRmpqKGzdu4IknnrC5INHR0bh69Sra29sRGBiI4uJiREREICsrC8uXL4dOp0N6ejqmTJlicwwA+PDDD1FUVITQ0FCcPHkSAHDs2DGEhISYLcPZs2fFF13Yi7lY5tIdGctR9dVqtWb/LWylUCjMnjPm6ltWVoaVK1dCEIRBNyKIaJwbw7cShvx2xba2NjQ1NUGtVnOwFo1KHR0daGxshK+vL9zd3Qe1Dd+uSDS+364YtvHf4ORi8HbFrkf45NgPBv12xZFsyH/JPT09OViLRjV3d3cEBQU97mIQ0WgyhnsMhvTaZSIiIhpb2PdPRERkJQ4+JCIioj5j+FYCGwZENnAKflL8LMgN7sg5SQfsmVsnyA0+OxnkMUzvP5WEue0l+zKd3vsdJtcJTmbS+91o7P+dqP85BpnhOnOfB3eODe6zQcBB7mswZRxoHcAeAyIiIjLEHgMiIiLSY48BERER9WGPARERERkaS70EhtgwICIispYg9C6G38cINgyIiIisNJbHGPABJCIiIhKxx4CIiMhaHHxIREREejJd72L4fawY0q2ErKwsBAYGQqFQ4NatW3YqEpFjlZaWQqFQYMaMGTh8+PDjLg4RjQaCiWWMsLlh0NHRgYyMDCQmJqK2thZqtRoAsGHDBsTHx0vyXrp0CTKZDHv37pWkZ2Zmws/PD11dXTaVwZGxRkIZWN/hiRUZGYmamhrExsZi586dEMbQ6GIiGh76wYeGy1hhc8OgqakJPT09WLt2LdRqNZyceidc9/b2hkajkeTNysqCq6urJL2npwd5eXnYtm0bXFxcbCqDI2ONhDKwvsMTy8XFBdOnT0d8fDxaW1vR1tZmU3mJaBzRP65ouIwRNjcMdLreGyoKhXSYQv+L+fXr11FSUoKkpCRJenFxMZqbm7F582Zbi+DQWCOhDKzv8NbX2dkZAKDVaoe0HyIa++zRY1BQUICgoCC4ublhyZIlqKystJi/uLgYc+fOhZubG0JCQnDmzBlxXXd3N77//e8jJCQEHh4e8Pf3R2JiIu7cuWN1uWxuGDx69AhA38VUr//FPDs7GwkJCQgODpak5+TkIDk5GZMnT7a1CA6NNRLKwPoOb33153JnZ+eQ9kNE48AQxxgUFRUhNTUV+/fvx+XLl7FgwQLExMTg3r17JvOXl5dj/fr12LRpE65cuYK4uDjExcWhuroaAPCPf/wDly9fxt69e3H58mW8//77+Oyzz/D8889bXTWbGgZarRYnTpyAu7s7pk+fLllneDFvamrC8ePHkZaWBqVSKaaXlZWhqqoKKSkp4nbx8fGYNGkS1q1bJ9nf6dOnMWfOHMyePdtoYJgtserq6hAVFYXg4GCEhoaiuLh4ULHMGen1tTXWaK6vuX0OVN+ZM2dCLpejqKiI4wyIyKKh9hhkZ2fjpZdeQnJyMoKDg3Ho0CFMmDABR44cMZn/wIEDWL16NXbt2oWnnnoKr7/+OhYuXIj8/HwAgFKpRElJCb797W9jzpw5eOaZZ5Cfn4+qqircvn3bqrJZ3TAoKyuDm5sb3njjDRw+fBienp6S9YYX84KCAixduhShoaHw8vIS07Ozs7FmzRrMmjVL3G7Hjh04evSoZF89PT1ITU3FxYsXceXKFWRmZqK5uXlIsRQKBXJzc3Ht2jWcP38eKSkpaG9vHzCWOSO9vrbGGq31NbfPwdRXpVIhPz8fr7zyClxdXa3+j4mIxhEzYwxaW1sli6keyK6uLlRVVSE6OlpMk8vliI6ORkVFhclwFRUVkvwAEBMTYzY/AGg0GshkMnh7e1tVNasbBosXL0ZVVRUSEhKQlpZmNArc29sb3d3dePDgAQ4ePIi0tDQAEC/mNTU1OHXqlJiuFxUVhYkTJ0rSKisrMW/ePAQEBMDT0xOxsbE4f/78kGL5+fkhLCwMQO8fAh8fH7S0tAwYy5yRXl9bY43W+prb52Dqq9FosHv3bmzZsgWXL1+Gv7//gMeDiMiQWq2GUqkUlzfffNMoz/3796HVauHr6ytJ9/X1RUNDg8n9NjQ0WJX/0aNH+P73v4/169fDy8vLqjpYPcGRu7s7QkNDkZ6ejuPHj+PmzZuYO3euuF7fMsnLy4NKpcKqVasAQOz+zc3NRXh4OCIjIweMdefOHQQEBIjfAwICUF9fb7dYVVVV0Gq1UKvV+OijjyzGMmc01deaWKO1vub26ezsPGB9r127Bo1Gg4yMDAQGBg5YfiIav8y9K6Gurk7yh9jV1dXBJesdiPjtb38bgiDg4MGDVm9v88yH+l9/+kGIevqLeU5ODg4cOCCme3l54eHDhygsLMQ777xja1i7xWppaUFiYiLefvvtx1aGkRxrJJTB0fXVd/n1vz1GRGTEzJTIXl5eA/5C9/HxgZOTExobGyXpjY2NUKlUJrdRqVSDyq9vFHz++ee4ePGi1b0FwBCeStDPW6B/bFFPfzH38PDA+vXrxXSlUgmtVoupU6caTVpjjr+/v+RXXX19vaR719ZYnZ2diIuLQ0ZGhvhr01KswsJCyGQyk2UcDfW1NtZorq+5fQ4UC+h7TFF/bhMRmTOUwYcuLi5YtGgRLly4IKbpdDpcuHABERERJreJiIiQ5AeAkpISSX59o+DGjRv44IMPMGXKFOsq9SWbewymTZsGmUyGiooKLFy4UEz38fExOaLb19fX6pHe4eHhqK6uRn19PZRKJc6ePSuZ8c6WWIIgICkpCStWrMDGjRsHFau2thbLli0zub+RXl9bYo3m+prbp1KptBgL6H0cyMPDw2gsBBGREZ3Quxh+t0JqaipefPFFLF68GOHh4cjNzUV7ezuSk5MBAImJiQgICBDHKOzYsQPLli1DVlYWnnvuOZw4cQIff/wx3nrrLQC9jYJ169bh8uXLOH36NLRarTj+YPLkyVZN/mZzw8DV1RXbt2/H9u3bkZqaihs3buCJJ56wdXeIjo7G1atX0d7ejsDAQBQXFyMiIgJZWVlYvnw5dDod0tPTbW4B6X344YcoKipCaGgoTp48CQA4duwYQkJCzMY6e/as+EiIvTiqvrbEGs31VSgUZvdpLr2srAwrV66EIAhGjQUiIpOG+HbFhIQENDU1Yd++fWhoaEBYWBjOnTsnDjC8ffs25PK+Tv3IyEi89957ePXVV7Fnzx7Mnj0bJ0+exPz58wH09oKeOnUKAMQB9nqXLl1CVFTUoMsmE4b4wHZbWxuampqgVquNZkEkGg06OjrQ2NgIX19fuLu7D2qb1fN/IH4WDP7jhZP0Foy5dYLc4LOTQR7D9P53c8xtL9mX6fTe7zC5TnAyk97vRmP/70T9zzHIDNeZ+zy4c2xwnw0CDnJfgymjpXUffX8TlEolno3+IRQKNzG9p+cRPvxgPzQajU339UeSIf8l9/T05GAtGtXc3d0RFBT0uItBRKNJ//cjjKFJ0fgTn4iIyErmHlccC9gwICIistYQxxiMZGwYEBERWUkmCJAZ3D6Q8VYC0fimvfY3u+3L9IwR5tNtJu8bZShzMvxsMLLK4G2pknQA4PwO1J9cek7IFAbfDc8XyQDbvs+Cot85JRmsa5DPMF1hkG442FcuPV8lA3El+xrkYF2F+XVjHRsGRERE1tJ9uRh+HyPYMCAiIrISbyUQERFRHw4+JCIiIhHnMSAiIiI9zmNAREREfdhjQERERHoyXe9i+H2sYMOAiIjIWuwxICIiItEYfiqBL1IlIiIi0ZAaBllZWQgMDIRCocCtW7fsVCQixyotLYVCocCMGTNw+PDhx10cIhoF9BMcGS5jhc0Ng46ODmRkZCAxMRG1tbVQq9UAgA0bNiA+Pl6S99KlS5DJZNi7d68kPTMzE35+fujq6rKpDI6MNRLKwPoOT6zIyEjU1NQgNjYWO3fuhDCG/gMnomGiH2NguIwRNjcMmpqa0NPTg7Vr10KtVsPpyxdmeHt7Q6PRSPJmZWXB1dVVkt7T04O8vDxs27YNLi4uNpXBkbFGQhlY3+GJ5eLigunTpyM+Ph6tra1oa2uzqbxENI4I6Htfgg4cYwAAOl3vsxkKhXT8Yv+L+fXr11FSUoKkpCRJenFxMZqbm7F582Zbi+DQWCOhDKzv8NbX+cs3C2q12iHth4jGPt5KMOHRo0cA+i6mev0v5tnZ2UhISEBwcLAkPScnB8nJyZg8ebKtRXBorJFQBtZ3eOurP5c7OzuHtB8iGgcE9LuV8LgLZD82NQy0Wi1OnDgBd3d3TJ8+XbLO8GLe1NSE48ePIy0tDUqlUkwvKytDVVUVUlJSxO1Onz6NOXPmYPbs2eIAsLq6OkRFRSE4OBihoaEoLi4ecixL+4yPj8ekSZOwbt26QR8Le9Z3oDKMxfqaS38c9Z05cybkcjmKioo4zoCILOMYgz5lZWVwc3PDG2+8gcOHD8PT01Oy3vBiXlBQgKVLlyI0NBReXl5ienZ2NtasWYNZs2YB6L1HnJqaiosXL+LKlSvIzMxEc3MzFAoFcnNzce3aNZw/fx4pKSlob28fUixL+9yxYweOHj1q1fGwZ30HKsNYq6+l4/A46qtSqZCfn49XXnkFrq6uuH37tlXHhojGEZ2JZYywumGwePFiVFVVISEhAWlpaUajwL29vdHd3Y0HDx7g4MGDSEtLAwDxYl5TU4NTp06J6QBQWVmJefPmISAgAJ6enoiNjcX58+fh5+eHsLAwAL0XbR8fH7S0tAwplqV9RkVFYeLEiVYdD3vWd6AyjLX6WjoOj6O+Go0Gu3fvxpYtW3D58mX4+/tbdWyIaPzgGAMD7u7uCA0NRXp6Ou7evYubN29K1nt7ewMA8vLyoFKpsGrVKgAQu39zc3MRHh6OyMhIcZs7d+4gICBA/B4QEID6+nrJfquqqqDVasXHIm2NNdA+rTVc9bVXLEMjrb4DHQdH1/fatWvQaDTIyMjA/PnzjQbWEhGJ7HAroaCgAEFBQXBzc8OSJUtQWVlpMX9xcTHmzp0LNzc3hISE4MyZM5L177//PlatWoUpU6ZAJpPhk08+sbpMwBAGH+p/eekHIerpL+Y5OTnYuXOnmO7l5YWHDx+isLBQkj4YLS0tSExMxFtvvWW3WOb2aa3hqO9wxGJ9B6YfdNj/9hgRkb0VFRUhNTUV+/fvx+XLl7FgwQLExMTg3r17JvOXl5dj/fr12LRpE65cuYK4uDjExcWhurpazNPe3o6lS5fipz/96ZDKZnPDQD9vgf6xRT39xdzDwwPr168X05VKJbRaLaZOnWo0aY2/v7/kl2J9fb3YjdvZ2Ym4uDhkZGQY/TK0JdZA+zSlsLAQMpnM5Dp719eSsVbfgY6Do+qrp39MUX9uExGZNcQeg+zsbLz00ktITk5GcHAwDh06hAkTJuDIkSMm8x84cACrV6/Grl278NRTT+H111/HwoULkZ+fL+bZuHEj9u3bh+jo6CFVzea+0mnTpkEmk6GiogILFy4U0318fEyO6Pb19TU70js8PBzV1dWor6+HUqnE2bNnsXfvXgiCgKSkJKxYsQIbN2402s6WWAPt05Ta2losW7bM5Dp71ncgY62+SqXS4nFwVH31ysvL4eHhYfW4CyIah8y8XbG1tVWSzdXVFa6urpK0rq4uVFVVYffu3WKaXC5HdHQ0KioqTIarqKhAamqqJC0mJgYnT54cQiVMs7nHwNXVFdu3b8f27duHPIJboVAgKysLy5cvR1hYGHbu3IkpU6bgww8/RFFREU6ePImwsDCEhYXhL3/5i81xAFjcZ3R0NF544QWcOXMGgYGB4j/Q2bNn8bOf/WxIcQ2Zq6+lMthqJNfX0nGwlS31LSsrg4uLC370ox8hPT19yPUlonHAzFMJarUaSqVSXN58802jTe/fvw+tVgtfX19Juq+vLxoaGkyGa2hosCr/UMiEIT6w3dbWhqamJqjVag7WolGpo6MDjY2N8PX1hbu7+6C2+br8hWEu1TCQ990ikTkZfjb4fWAwYZkkHQB4i4X6k0vPCZnC4Lvh+WJ4Lsn7PguKfueUwTrDbQTDdIVBupPBLU+59Hw1XCdI9iUznUcuvX0qKEyv++8Tm6FUKhH9ZCoUTn09AT3aTnzwt2zU1dXBy8tLTDfVY6AfeF1eXo6IiAgxPT09HX/4wx/w0UcfoT8XFxe8++67ktuq//7v/44f/vCHaGxslOS9desWZsyYgStXrohPaVljyH/JPT09OViLRjV3d3cEBQU97mIQ0Whi5laCl5eXpGFgio+PD5ycnIz+oDc2NkKlUpncRqVSWZV/KIb02mUiIqJxSScYL4Pk4uKCRYsW4cKFC3270+lw4cIFSQ+CoYiICEl+ACgpKTGbfyjY909ERGQtMz0Gg5WamooXX3wRixcvRnh4OHJzc9He3o7k5GQAQGJiIgICAsQxCjt27MCyZcuQlZWF5557DidOnMDHH38seSS7paUFt2/fxp07dwAAn332GYDe3gZrehbYMCAiIrJa/0cUrWsYJCQkoKmpCfv27UNDQwPCwsJw7tw5cYDh7du3ITcYNxEZGYn33nsPr776Kvbs2YPZs2fj5MmTmD9/vpjn1KlTYsMCAL7zne8AAPbv34/XXntt0GUb8uBDovFoWayZCUT6zf8gGH41PTWEJF0wM3+EUT656XRp7H4rzOYbOI9RPiLA8vkuyTeIPJbyDeYcH+y5O5j/DiyUpTTrX3oHH87YBoXcYPChrhMf1OZBo9EMOMZgpOMYAyIiIhLxVgIREZG1dAIktw+sGHw40rFhQEREZC1B17sYfh8j2DAgIiKy1hCfShjJ2DAgIiKyFm8lEBERkYg9BkRERCQS0K9h8NhKYndsGBAREVmLPQZEREQk0hm8a1n8PjZwgiOyuw0bNiA+Pl6SdunSJchkMuzdu1eSnpmZCT8/P3R1dY3YOERERvQ9BobLGMGGAdmdt7c3NBqNJC0rKwuurq6S9J6eHuTl5WHbtm1wcXEZsXGIiMYTNgzI7vr/wb5+/TpKSkqQlJQkSS8uLkZzczM2b948ouMQERlhjwHR4PX/g52dnY2EhAQEBwdL0nNycpCcnIzJkyeP6DhEREZ0gvEyRrBhQHZn+Ae7qakJx48fR1paGpRKpZheVlaGqqoqpKSkAABOnz6NOXPmYPbs2Th8+LC4L3PptsYBgPj4eEyaNAnr1q2T7M9SLCIiQ4KgM1rGCjYMyO4M/2AXFBRg6dKlCA0NhZeXl5ienZ2NNWvWYNasWejp6UFqaiouXryIK1euIDMzE83NzWbTbY2jt2PHDhw9elRS5oFiERFJCP16C3grgcg8b29vdHd348GDBzh48CDS0tIAQPyDXVNTg1OnTonplZWVmDdvHgICAuDp6YnY2FicP3/ebLqtcfSioqIwceJESdpAsYiIJMbwGAPOY0B25+3tDQDIy8uDSqXCqlWrAEDs4s/NzUV4eDgiIyMBAHfu3EFAQIC4fUBAAOrr6+Hs7Gwy3dY4lpgrAxGRSTodIOPbFYkGRf8HOycnBwcOHBDTvby88PDhQxQWFuKdd94ZNXGIiIwI/V6iNIZ6DHgrgexO/wfbw8MD69evF9OVSiW0Wi2mTp0qmZjI399f8uu8vr4e/v7+ZtNtjWPJQLGIiAwJOp3RMlawx4DszsfHB4KJ1rOvr6/J9PDwcFRXV6O+vh5KpRJnz57F3r17oVQqTabbGscSc2UgIjJpDPcYsGFAj51CoUBWVhaWL18OnU6H9PR0TJkyBQDMpg9FdHQ0rl69ivb2dgQGBqK4uBgRERHDEouIxiidAMjGZsNAJlj704qIsCz2p6ZXyGSSr4LhV+kqk+mCzFymfvnkptOlsfutMJtv4DxG+YgAy+e7JN8g8ljKN5hzfLDn7mD+O7BQltKsf4FSqcQK129DIeubYr1H6MLFzv+ERqOBl5eX+cKMAuwxICIispYgQPJ2xTH0G5uDD4mIiKwk6ASjxVoFBQUICgqCm5sblixZgsrKSov5i4uLMXfuXLi5uSEkJARnzpyRlkkQsG/fPvj5+cHd3R3R0dG4ceOG1eViw4CIiMhags54sUJRURFSU1Oxf/9+XL58GQsWLEBMTAzu3btnMn95eTnWr1+PTZs24cqVK4iLi0NcXByqq6vFPD/72c/w//7f/8OhQ4fw0UcfwcPDAzExMXj06JFVZeMYAyIbcIwBEcb1GIMoWTwUMmcxvUfoRqnwm0GPMViyZAmefvpp5OfnAwB0Oh3UajW2bduGjIwMo/wJCQlob2/H6dOnxbRnnnkGYWFhOHToEARBgL+/P3bu3CnO9qrRaODr64vCwkJ85zvfGbBMeuwxICIislKP0IkencEidAIAWltbJUtnZ6fRtl1dXaiqqkJ0dLSYJpfLER0djYqKCpPxKioqJPkBICYmRsxfW1uLhoYGSR6lUoklS5aY3ac5HHxIZIM/nP3+4y4CET0Gjx49gkqlwh8bzhit8/T0hFqtlqTt378fr732miTt/v370Gq18PX1laT7+vri+vXrJuM2NDSYzN/Q0CCu16eZyzNYbBgQERENkpubG2pra9HV1WW0ThAEyPrdXnF1dXVU0eyGDQMiIiIruLm5wc3NzebtfXx84OTkhMbGRkl6Y2MjVCqVyW1UKpXF/Pr/b2xshJ+fnyRPWFiYVeXjGAMiIiIHcnFxwaJFi3DhwgUxTafT4cKFC4iIiDC5TUREhCQ/AJSUlIj5Z8yYAZVKJcnT2tqKjz76yOw+zWGPARERkYOlpqbixRdfxOLFixEeHo7c3Fy0t7cjOTkZAJCYmIiAgAC8+eabAIAdO3Zg2bJlyMrKwnPPPYcTJ07g448/xltvvQUAkMlkSElJwY9//GPMnj0bM2bMwN69e+Hv74+4uDirysaGARERkYMlJCSgqakJ+/btQ0NDA8LCwnDu3Dlx8ODt27chl/d16kdGRuK9997Dq6++ij179mD27Nk4efIk5s+fL+ZJT09He3s7Xn75ZTx8+BBLly7FuXPnrL7twXkMiGjEa25uxlNPPYXKykoEBQU5NPYzzzyDXbt24Vvf+pZD4xI9LhxjQEQj3r/9279hzZo1kkbB7du38dxzz2HChAmYNm0adu3ahZ6eHqv2+z//8z/45je/CX9/f8hkMpw8edIoz6uvvoqMjAzodNbNbAf0Pq/+s5/9DAsWLMCECRPg4+ODZ599Fu+88w66u7uh1WoRGRmJtWvXSrbTaDRQq9X4wQ9+AKC3YbR69Wr4+/vD1dUVarUaW7duRWtrq9VlIhoIGwZENKL94x//wC9/+Uts2rRJTNNqtXjuuefQ1dWF8vJyvPvuuygsLMS+ffus2nd7ezsWLFiAgoICs3liY2Px97//HWfPnrVq311dXYiJicFPfvITvPzyyygvL0dlZSW+973vIS8vD3/961/h5OSEwsJCnDt3Dr/61a/Ebbdt24bJkydj//79AHonv1mzZg1OnTqFv/3tbygsLMQHH3yAzZs3W1UmokERiIhGsOLiYmHq1KmStDNnzghyuVxoaGgQ0w4ePCh4eXkJnZ2dNsUBIPzmN78xuS45OVnYsGGDVfv76U9/KsjlcuHy5ctG67q6uoS2tjbx+4EDB4RJkyYJd+7cEU6ePCk4OzsLn3zyicX9HzhwQAgMDLSqTESDwR4DIhrRysrKsGjRIklaRUUFQkJCJLO8xcTEoLW1FX/961/tXobw8HCUlZWJ32/dugWZTIbS0lKz2/zqV79CdHQ0vvrVrxqtc3Z2hoeHh/h927ZtWLBgATZu3IiXX34Z+/btw4IFC8zu+86dO3j//fexbNky2ypEZAEbBkQ0on3++efw9/eXpJmbHla/zt78/f1RV1cnjjNwdnbGnDlzMGHCBLPb3LhxA3Pnzh3U/mUyGQ4ePIgLFy7A19fX5Et0AGD9+vWYMGECAgIC4OXlhcOHD1tfGaIBsGFARCNaR0fHkGaZswd3d3fodDrxhTgBAQG4fv06wsPDzW4jWPnA15EjRzBhwgTU1tbiiy++MJknJycHly9fxm9/+1vU1NQgNTXVqhhEg8GGARGNaD4+Pnjw4IEkzdz0sPp19tbS0gIPDw+4u7sPepsnn3zS7Atx+isvL0dOTg5Onz6N8PBwbNq0yWTDQqVSYe7cuXj++efxi1/8AgcPHsTdu3cHXSaiwWDDgIhGtK9+9au4du2aJC0iIgJ/+ctfcO/ePTGtpKQEXl5eCA4OtnsZqqurTY4VsOSf/umf8MEHH+DKlStG67q7u9He3g6g96mLpKQkbNmyBcuXL8cvf/lLVFZW4tChQxb3r7+tYeq1vkRDwYYBEY1oMTEx+Otf/yrpNVi1ahWCg4OxceNGXL16Fb///e/x6quv4nvf+55Vb7Nra2vDJ598gk8++QRA7zvtP/nkE9y+fVuSr6ysDKtWrRK/19fXY+7cuaisrDS775SUFDz77LNYuXIlCgoKcPXqVdy8eRP/+Z//iWeeeQY3btwAAOzevRuCIOAnP/kJACAoKAg///nPkZ6ejlu3bgEAzpw5g3feeQfV1dW4desWfve732Hz5s149tlnHT7hE40Dj/mpCCKiAYWHhwuHDh2SpN26dUuIjY0V3N3dBR8fH2Hnzp1Cd3e3uL62tlYAIFy6dMnsfi9duiQAMFpefPFFMc8XX3whODs7C3V1dVbtWxAE4dGjR8Kbb74phISECG5ubsLkyZOFZ599VigsLBS6u7uF0tJSwcnJSSgrKzPadtWqVcKKFSsEnU4nXLx4UYiIiBCUSqXg5uYmzJ49W/j+978vPHjwwGJ8IltwSmQiGvF+97vfYdeuXaiurpbMH2/JpUuXsHbtWty8eROTJk2yOfb3v/99PHjwQHxZDdFYx5coEdGI99xzz+HGjRuor6+HWq0e1DZnzpzBnj17htQoAIBp06Zx9D+NK+wxICIiIhEHHxIREZGIDQMiIiISsWFAREREIjYMiIiISMSGAREREYnYMCAiIiIRGwZEREQkYsOAiIiIRGwYEBERkej/B8paf9PvWuJcAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# generate KNR circuits to benchmark the cycle, targeting only single gate supports\n", "knr_circuits = tq.make_knr(\n", " cycle_of_interest, n_random_cycles=[6, 9, 12], n_circuits=30, subsystems=1\n", ")\n", "\n", "# run the circuits on the device\n", "device.run(knr_circuits)\n", "\n", "# plot the reconstructed error profile with subsystems=1:\n", "layout = tq.visualization.Graph.linear(2, show_labels=True) # specify the chip layout\n", "knr_circuits.plot.knr_heatmap(layout) # plot the heatmap" ] }, { "cell_type": "raw", "id": "7e1601a9", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Notice that for this cycle, some degeneracy orbits contain :math:`3` Weyl\n", "operators. This observation is expected as ``tq.Gate.cx3`` has a cyclicity of\n", ":math:`3`\\.\n", "\n", "Advanced Usage: Specifying a custom twirl to diagnose idle qubits\n", "-----------------------------------------------------------------\n", "\n", "For full-system diagnostics, we are often interested in the error that occurs on\n", "idling qubits. This can be done by specifying a custom :py:class:`~trueq.Twirl`\n", "that includes the labels of the idle qubits.\n", "\n", "For example, let's consider a cycle with a :math:`CX` gate on qubits ``0`` and ``1``\n", "and an additional, idling qubit with label ``2``. We instantiate a simulator that\n", "adds a stochastic :math:`Z` error to the idling qubit and define a twirl on all three\n", "qubit labels:" ] }, { "cell_type": "code", "execution_count": 11, "id": "262c488b", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:56.177198Z", "iopub.status.busy": "2024-03-26T18:58:56.176772Z", "iopub.status.idle": "2024-03-26T18:58:57.174441Z", "shell.execute_reply": "2024-03-26T18:58:57.173964Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tq.settings.set_dim(2)\n", "\n", "cycle_of_interest = tq.Cycle({(0, 1): tq.Gate.cx})\n", "\n", "twirl = tq.Twirl(\"P\", (0, 1, 2))\n", "\n", "circuits = tq.make_knr(\n", " cycle_of_interest, twirl=twirl, n_random_cycles=[4, 10], n_circuits=30, subsystems=1\n", ")\n", "\n", "sim = tq.Simulator().add_stochastic_pauli(pz=0.1, match=tq.simulation.LabelMatch(2))\n", "\n", "sim.run(circuits)\n", "\n", "layout = tq.visualization.Graph.linear(3, show_labels=True)\n", "circuits.plot.knr_heatmap(layout)" ] }, { "cell_type": "raw", "id": "97ca60d7", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "As expected, the resulting error map is dominated by a single-qubit :math:`Z` errors\n", "on qubit ``2``, whereas there is no significat error observed on the :math:`CX` gate." ] }, { "cell_type": "code", "execution_count": 12, "id": "acf7c39f", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T18:58:57.176822Z", "iopub.status.busy": "2024-03-26T18:58:57.176380Z", "iopub.status.idle": "2024-03-26T18:58:57.234967Z", "shell.execute_reply": "2024-03-26T18:58:57.234530Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
True-Q formatting will not be loaded without trusting this\n", "notebook or rerunning the affected cells. Notebooks can be marked as trusted by clicking\n", "\"File -> Trust Notebook\".
\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", "

\n", " One or more estimates with probabilities below the cutoff threshold have been omitted.\n", "

\n", "\n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", "\n", "\n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", "\n", "\n", "\n", " \n", "\n", "\n", "\n", "
\n", "
KNR Estimates
\n", "
K-body Noise Reconstruction
\n", "
\n", " \n", "

Paulis

\n", " (0, 1): Gate.cx\n", "
\n", "
\n", "
Cycle:
\n", "
\n", "
    \n", "
  • \n", " (0, 1): Gate.cx\n", "
  • \n", "
\n", "
\n", "
Twirl:
\n", "
\n", "
  • Paulis on [0, 1, 2]
\n", "
\n", "
\n", "
\n", "
 \n", " (2,) : Gate.id
\n", "
\n", "
\n", "
Cycle:
\n", "
\n", "
    \n", " \n", "
  • \n", " (0, 1): Gate.cx\n", "
  • \n", "
\n", "
\n", "
\n", "
\n", "
Z\n", " 9.3e-02 (9.5e-03)\n", "
\n", "
\n", "
Subcycle:
\n", "
\n", "
    \n", "
  • (2,): Gate.id
  • \n", "
\n", "
\n", "
Error Type:
\n", "
\n", "
    \n", "
  • Z
  • \n", "
\n", "
\n", "
Error Probability (std):
\n", "
\n", "
    \n", "
  • 0.09337612735601064 (0.009458431959658203)
  • \n", "
\n", "
\n", "
\n", "
\n", "
X\n", " 4.6e-03 (9.5e-03)\n", "
\n", "
\n", "
Subcycle:
\n", "
\n", "
    \n", "
  • (2,): Gate.id
  • \n", "
\n", "
\n", "
Error Type:
\n", "
\n", "
    \n", "
  • X
  • \n", "
\n", "
\n", "
Error Probability (std):
\n", "
\n", "
    \n", "
  • 0.0045526011419711465 (0.009458431959658203)
  • \n", "
\n", "
\n", "
\n", "
\n", "
\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "EstimateCollection(2)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "circuits.fit()" ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "raw_mimetype,nbsphinx,-all", "main_language": "python", "notebook_metadata_filter": "-all", "text_representation": { "extension": ".py", "format_name": "percent" } }, "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.10" } }, "nbformat": 4, "nbformat_minor": 5 }