exercicesGAMOC1.ipynb 286 KB
Newer Older
Nicolas Ollinger's avatar
Nicolas Ollinger committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "982215b2",
   "metadata": {},
   "source": [
    "# Invitation à l'informatique quantique\n",
    "## Exercices GAMoC, séance 1\n",
    "\n",
    "Ce notebook est à compléter avec vos réponses puis à déposer sur la page Celene du cours __initiation à la recherche__ dans le dépôt aproprié avant le 29 septembre."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aeb913e6",
   "metadata": {},
   "source": [
    "## 0. Créer des circuits classiques avec un circuit quantique\n",
    "\n",
    "Les circuits quantiques sont suffisamment expressifs pour effectuer tout calcul réversible classique car ils disposent de portes comme la porte de Toffoli (aussi appelée CCX ou NON contrôlé contrôlé). C'est très pratique pour transformer des données et/ou faire subir une transformation à une superpositions de valeurs.\n",
    "\n",
    "Comme nous l'avons vu en cours, tout circuit booléen classique peut être reproduit efficacement sous forme de circuit réversible si on s'autorise à ajouter quelques bits de travail supplémentaires. Ces bits de travail sont initialisés à la valeur 0. En sortie du circuit, on récupère idéalement la sortie (si la fonction calculée est injective) ou l'entrée plus la sortie. Dans tous les cas, on peut remettre à 0 les bits de travail supplémentaires.\n",
    "\n",
    "Dans cette planche d'exercices, vous allez construire des circuits quantiques pour calculer des fonctions classiques avec Qiskit. Nous vous fournissons une fonction pour valider vos circuits. Ce validateur exécute une simulation quantique du circuit après avoir ajouté en entrée une superposition des bits d'entrée et en sortie des mesures sur les qubits vers de bits classiques.\n",
    "\n",
    "Dans vos circuits, vous vous contenterez d'utiliser les portes X (NON sur un seul qubit), CX (NON contrôlé) et CCX (NON contrôlé contrôlé)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "751ce118",
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit import QuantumCircuit, Aer, execute\n",
    "from qiskit.visualization import plot_histogram\n",
    "sim = Aer.get_backend('aer_simulator')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9c714b6",
   "metadata": {},
   "source": [
    "Un circuit se déclare en instanciant la classe `QuantumCircuit` avec en argument le nombre de qubits souhaités. On enfile ensuite les portes comme des perles sur les bits du circuit. À tout moment, il est possible de visualiser le circuit avec la méthode `draw`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7f12c383",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 162.08x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moncircuit = QuantumCircuit(3)\n",
    "moncircuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "54bc03b5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 203.885x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moncircuit.x(0) # ajoute une porte NON sur le qubit q0\n",
    "moncircuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a58ce552",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 287.496x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moncircuit.cx(0,1) # ajoute une porte NON contrôlé sur les qubits q0 (contrôle) et q1 (NON)\n",
    "moncircuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "034609c8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbIAAADuCAYAAABcSIIkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAdiElEQVR4nO3dfXRU9b3v8fdMHkkgEiEhQoBgQswDDyqpFYpgqKU9XNR6LIqnod6z7D31dHk554Ll4uKPUxerrOM6ltPVdW5VGmu7hLa0FkWeqhY8GhSwiBEkRR4TJiEZCJAHIAkks+8f2yiYB2YmM7PnN/m81soCsue3f99kNr/P7L1/e2+XZVkWIiIihnI7XYCIiMhAKMhERMRoCjIRETGagkxERIymIBMREaMpyERExGgKMhERMZqCTEREjKYgExERoynIRETEaAoyERExmoJMRESMpiATERGjKchERMRoCjIRETGagkxERIymIBMREaMpyERExGgKMhERMZqCTEREjKYgExERoynIRETEaAoyERExmoJMRESMpiATERGjKchERMRoCjIRETGagkxERIymIBMREaMpyERExGgKMhERMZqCTEREjKYgExERoynIRETEaAoyERExmoJMRESMpiATERGjxTtdgPTOsiwu+bqcLsNvKe44XC6X02WIxAzTxgBwbhxQkEWpS74u0ne85XQZfjs/5xukxmlzEgkV08YAcG4c0KFFERExmoJMRESMpiATERGjKchERMRoCjIRETGagkxERIymIBMREaMpyERExGgKMhERMZqCTEREjKYgExERoynIRETEaAoyEREx2qAIssbGRp588klyc3NJTk5m7NixLF26lLa2NsrKynC5XJSXlztdpoSJZcExL/xhD5S/A796F17/CE63OF1Z5LS3wvH3Yf/rUPkqHNwGZ46B5XO6ssjo7IJ91bD2Pfjlf8NvdsKOKrjQ7nRlEgox/9yN/fv3M3fuXLxeL6mpqRQVFVFXV8fq1auprq7m5MmTAEydOtXhSsOj61e/xvf7PxC35F9xf2tuj+Wdy1dgfbyf+J//J66JeQ5UGF5/OwUb90FDc89lO6rgliz4zh2QMSzytUXC5Uvw6XY4fdgO9KvVH4TkNLj5azC62Jn6ws2y4N1P4S8HofVLofVRDWz9GEomwAPTICnBmRrDbTCMATG9R9bY2Mj8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\n",
      "text/plain": [
       "<Figure size 538.33x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moncircuit.ccx(0,1,2)\n",
    "# et maintenant on remet les qubits 0 et 1 à leur valeur initiale\n",
    "moncircuit.cx(0,1)\n",
    "moncircuit.x(0)\n",
    "moncircuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ca7fef7",
   "metadata": {},
   "source": [
    "Voici le code de notre validateur. Il n'est pas nécessaire de comprendre comment il fonctionne pour l'utiliser dans les exercices de la planche."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d01a1f70",
   "metadata": {},
   "outputs": [],
   "source": [
    "def validator(ninput, circuit, outset):\n",
    "    \"\"\"Teste la fonction classique calculée par le circuit [circuit]\n",
    "       en considérant que les [ninput] premiers qubits reçoivent une\n",
    "       entrée binaire et que les autres qubits reçoivent en entrée 0.\n",
    "       Vérifie que l'ensemble des mesures des qubits en sortie du\n",
    "       circuit produit l'ensemble de valeurs [outset].\"\"\"\n",
    "    assert circuit.num_clbits == 0\n",
    "    n = circuit.num_qubits\n",
    "    nanc = n-ninput\n",
    "    assert nanc >= 0\n",
    "    head = QuantumCircuit(n, n)\n",
    "    for i in range(ninput):\n",
    "        head.h(i)\n",
    "    head.barrier()\n",
    "    tail = QuantumCircuit(n, n)\n",
    "    tail.barrier()\n",
    "    for i in range(n):\n",
    "        tail.measure(i, n-1-i)\n",
    "    full = head.compose(circuit).compose(tail)\n",
    "    display(full.draw(output='mpl'))\n",
    "    res = execute(full, sim, shots=65536).result()\n",
    "    display(plot_histogram(res.get_counts()))\n",
    "    expset = set(res.get_counts().keys())\n",
    "    return outset == expset\n",
    "\n",
    "def classicset(ninput, nanc, f):\n",
    "    rset = set()\n",
    "    fs = '{:0' + str(ninput) + 'b}'\n",
    "    ss = '0' * nanc\n",
    "    for i in range(pow(2,ninput)):\n",
    "        s = fs.format(i) + ss\n",
    "        res = f(*map(int,s))\n",
    "        rset.add(''.join(map(str,res)))\n",
    "    return rset"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0c76785f",
   "metadata": {},
   "source": [
    "Le validateur est appliqué à un circuit en lui indiquant le nombre de bits d'entrée et les sorties attendues lorsque l'entrée parcourt toutes les valeurs. Le validateur affiche le circuit qu'il exécute, le résultats de la simulation et retourne `True` ou `False` selon que le circuit proposé passe ou non le test.\n",
    "\n",
    "Pour notre circuit d'exemple,\n",
    "\n",
    "| q0 in | q1 in | q0 out | q1 out | q2 out |\n",
    "| :-: | :-: | :-: | :-: | :-: |\n",
    "|0|0|0|0|1|\n",
    "|0|1|0|1|0|\n",
    "|1|0|1|0|0|\n",
    "|1|1|1|1|0|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "0a2c75f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Z511liRpyZIl+u1vfxuQun0RFkPODh06pDvvvFM9evSQw+FQly5ddMcdd+jYsWOaPn26bDablixZYnSZANBopQelrM3e7xcdLzmaef71Rs5Whp4BgBkkJydrzZo12rhxo6666qpGhZma/f7yl78oOztb9913nyIjPf0eJ4aZ3NxczZs3L2D1+8LyPTTbt2/XhRdeqIKCAsXHx6t3797Kzc3VY489pn379mn//v2SVPskAYAZZG+V5A7yOb/mGjUAEMpmzZqlhx9+WAkJCbW3/fTTT3rppZe0ceNGbdmyRfv371d1dbXi4+OVnp6ugQMH6sILL9TFF18su92umJgYzZ8/X7/5zW90yy236IknnqgTZkaOHKk9e/YY9RDrZelAc+jQIU2YMEEFBQWaM2eO5s2bV/sEL1iwQPPmzVNkZKTsdrv69OljcLUA0DjVFZ7rxQRbwfdS6gjve3cAAIFls9n097//XX/4wx9qb8vKytL999+v5cuXq7y8/KR9CgsLtX79eq1fv17/+Mc/lJycrFtuuUV/+MMfFBERoYEDB+rTTz9VRESEpNANM5LFh5zdfPPNys7O1u23366FCxfWSav33nuv0tLSVF1drdTUVMXGxhpYKYIlPj5ew4cPD8kVOoDG+nG3Z7J+sLmdnlADmBntAKzob3/7W50w889//lN9+vTR888/X2+Yqc++fft022236eyzz9Z3330nSbVh5uDBgyEbZiQLB5qMjAwtX75c7du31/z580+632azaeDAgZLqDjd77bXXdNlll6lbt26Ki4tTWlqa7r33XpWWlgatdgROcnKylixZouTkZKNLAXxWbOBcluJ8484N+APtAKzmuuuu08033yxJcjqduuaaa3TDDTf4/Nk1MzNTVVV1vzWLiIhQcXFxk2sNFMsGmmXLlsnlcmn69OmKi4urd5uaSVLHB5pHHnlEERERevDBB7V69WrNmjVLTz75pC666KJTLmUHc3A6nSotLZXT6TS6FMBnxQXheW7AH2gHYCXdunXTI488Uvv3tddeqxdeeMHn49UsANCvXz9Jqu3dad26tZ588smmFRtAlg00H330kSRp1KhRDW6Tk5MjqW6geeedd/TKK6/od7/7nUaMGKFbb71VixYt0oYNG/T5558HtmgE3M6dOzV48GDt3LnT6FIAn5UeMu7cRw9Lbr7bgYnRDsBK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U3s5YqIDX2wAuN1u7cnK1YlTsb15/C2bxat921anPE9eXp4SE+u+Tmr+zsvLU3JychMehXcINCGiWbNm2rp1q8rKyrRhwwbdc889SkpK0syZM40uDQAAmEhp2TEtfe29eu8rO1auZ19Zdcrbplw8wutA8+STT2rhwoV6++23lZSU5H3RfhQTFam3Plinw4Ul9d5/4uM98e8zunTU76eND3idgWKz2bRnX64+/WJbvfef7vFHRkTopmsuaXINwcSQsxBht9vVs2dP9evXT7NmzdKcOXN07733Gl0WAAAwmbQeXTXkrDSf9u2dkqyBfVO92ueRRx7RXXfdpRUrVmjMmDE+ndefYmKiNXX8KJ8+VMdER2nq+JGy2839EXnMOYPUsb1vQ/8uOm+wEtu1Pu12HTt2VH5+fp3bCgoKJOmknptAM/ezZWEul0vl5eVGlwEAAExo/PlD1aZlc6/2SYiL1aVjz/UqCPzxj3/U//zP/2j16tUaPXq0t2UGTHLnRI349Vle7zdp9HC1atEsABUFV2RkhK6YMEoREd591O/etZOGD+7bqG2HDx+u999/v85t7733njp37qxu3bp5dd6mItCEgPvvv19r1qzR3r179f3332vx4sVauHChrrnmGqNLAwAAJhQTHaWpE7zrpbj04vOUEBfb6O1vvfVWPfzww3rhhReUmpqq/Px85efnq6ioyJeS/W70OQO96qVIT03Wr/qkeHWO0tJSbd26VVu3blVlZaXy8/O1detW7dmzx9ty/S6xXWtddN6QRm9f2zvVyNfMbbfdpv/85z+6++67tXPnTr3wwgtatGiR5s6dG/QhZzY3V2803G233aZ33nlHubm5cjgc6t69u6699lrNmjVLERERRpcHAABM6v3PvtInG78+7XaD+6XpsovP8+rYDX1oveaaa7R06VKvjhUo+QcP6/Hn36ydAN+QhPhY3XrtFK8CnSStXbu23lVpR4wYobVr13p1rEBwud1a/NK7yszOO+22U8eP1K/6eDfccOXKlfrv//5v7dy5U4mJibrpppt01113+Vquzwg0AAAAFlXtdOrJf7+lAwU/NbhN65bNdMuMyxRj0lW9Tmfdl9u18pNNp9xmxpSxSuvRNUgVBdeRohL97dnXVFFZ1eA2fVLP0O9+MzroPSv+wpAzk8nO+/GkpRgBAADqExkRoSsmnK/IBkZ82Gw2TR0/yrJhRpKGD+6r7l07NXj/kLPSLBtmJKlVi2aaNHp4g/c3i4/VJRd5N3cq1BBoTKTa6dSLb36ohU/9n/bnFhhdDgAAMIEObVtp7Ij651KM+PVZSvbhmjNmYrfZNHX8SMVER510X5uWzTX+/KEGVBVcv+qTovTU5Hrvm3LxCMXHOYJbkJ8RaE7gdDr1/PPPa8yYMWrbtq1iYmLUrVs3jR8/Xs8//7yhtW355nsVlRxVdHSUz0vxAQCA8DNsUB/16Fa3l6Jj+zYafc5AgyoKrpbNEzR5TN1eCtspgo7V2Gw2XXrReUqIrztH6Nf9e+lMC/ROEWiOU1xcrDFjxmjGjBlas2aNYmNj1a9fP1VVVWn16tWaMWOGYbVVO536eINnUt/IX/dXVBTXRAUAAI1jt9l0+biRcvw8tMwzFG1Ug0PRrGhAeor6pJ5R+/fIs8/y+gKiZhYf59CUi0fU/t2mVXONH3W2gRX5D4HmOP/1X/+lTz75RF27dtVnn32m7OxsffXVVzpw4ICys7N1//33G1ZbTe9Ms4Q4ny+WBQAAwtfxvRSNvXiildhsNl1y0blqFh+rTh3a6ILh4dE7dbyai67abDZdMX6Uoi3SO8UqZz/7z3/+o4EDByoqKkpbt25V7969/XbsRc+/oZLSYz7v73a7VVp2TG63WzHR0WHRNQoAAAKjsqpK0VHh+1mi2lktu80uuz1cv9d3q7KqOuReA80SYvWHay71aV/GLf3szTfflCSNHz/er2FGkkpKj6m49KhfjlVRWamKykq/HAsAAISn8go+S4Q7K70GCDQ/y8jIkCSdfbb/xxI2S/DuIk3Ho3cGAAAAVteUz8sEmp8VFxdLklq2bOn3Y/vafSZJX2z9Tm++v07NEuI057ppLAYAAAAAHIdPxz9r3ry5JKmwsNDvx/Z1Dk1N74wkVVZW6+Fnlvu7NAAAAMBwzKHxg/T0dL3xxhvatGmT34/tjzk0zJ0BAAAATkag+dmll16q+fPna+XKldq5c6fS0vy3NLIvYwKZOwMAAIBw0ZQ5NCzbfJwrrrhCr7zyipKTk/Xiiy9q+PBfrih74MABLV68OGjXomHuDAAAAHB6BJrjFBcXa9KkSfr0008lSV26dFFiYqJyc3OVl5cnt9utYPznqnY69cgzy1VYXKqJFwzT8EF9An5OAAAAwIzC9YpC9WrevLnWrFmjxYsX67zzzlNJSYm2b9+uqKgojRs3Ti+88EJQ6tjyzS4VFpeqWUKchpzlv6FvAAAAgNXQQxOCvt6xW6vXfqkRvz6L3hkAAADgFAg0Iaqqulo22RQZGWF0KQAAAEDIItAAAAAAMC3m0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwLQINAAAAANMi0AAAAAAwrf8P7fVxnOilY7wAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1040x367.889 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHICAYAAADeLlu/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGZElEQVR4nO3deXxOZ/7/8fdJ7ixEFkuoJbHVriUMYglChVI12mpVW3RoS01b7dCplkbKtKWtoVQXWqqGoWg7Y41BEjtthWotsdcuaKSpJcv5/eGX+ytNbhL3Hfet5/V8PDwecp0r53yOc0ne93U2wzRNUwAAALAML3cXAAAAgFuLAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMXY3F3AH1lOTo6OHz+uwMBAGYbh7nIAAMAfmGmaSk9PV6VKleTldf05PgJgMTp+/LjCwsLcXQYAALCQn3/+WVWqVLluHwJgMQoMDJR09UAEBQW5uRoAAPBHduHCBYWFhdnzx/UQAItR7mnfoKAgAiAAALglCnPZGTeBAAAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAArgpU6dOVfXq1eXv76+mTZtq7dq1DvsuWrRInTp1UmhoqIKCgtSyZUutWLEiT5+ZM2fKMIx8fy5dumTvk5SUpO7du6tSpUoyDENff/11ce0eAPyhEQABFNm8efM0dOhQvfbaa9q2bZuioqJ077336siRIwX2T0pKUqdOnbR06VJ99913io6OVvfu3bVt27Y8/YKCgnTixIk8f/z9/e3LMzIy1KhRI02ZMqVY9w/Fwx0fGoq6XXgWPmgWHwIggCKbMGGCBgwYoIEDB6pevXqaOHGiwsLC9OGHHxbYf+LEiXr55ZfVrFkz1apVS2+++aZq1aql//73v3n6GYahO+64I8+fa917770aO3asHnjggWLbNxQPd31oKOp24Tn4oFnMTBSbtLQ0U5KZlpbm7lIAl7l8+bLp7e1tLlq0KE/7888/b7Zt27ZQ68jOzjbDwsLMyZMn29tmzJhhent7m+Hh4WblypXNbt26md9//73DdUgyv/rqq5vaB9x6zZs3NwcNGpSnrW7duuYrr7xS6HXUr1/fjIuLs389Y8YMMzg4uNi3C/dw15i51u32c6YouYMZQABFkpqaquzsbFWoUCFPe4UKFXTy5MlCreO9995TRkaGHn74YXtb3bp1NXPmTP3nP//R3Llz5e/vr9atWyslJcWl9ePWu3Llir777jvFxMTkaY+JidGGDRsKtY6cnBylp6erTJkyedp//fVXVa1aVVWqVNF9992XZ7bHFduFe7hrzFgJARCSXH+dxbX+/e9/yzAM/fnPf87TnpWVpZEjR6p69eoqUaKEatSooTfeeEM5OTmu2i0UI8Mw8nxtmma+toLMnTtXo0eP1rx581S+fHl7e2RkpB5//HE1atRIUVFRmj9/vmrXrq3Jkye7vHbcWu760OCK7cI9+KBZ/GzuLgDul3udxdSpU9W6dWt9/PHHuvfee/XTTz8pPDw8X//c6yzefPNNhYSEaMaMGerevbs2b96siIiIPH0PHz6sYcOGKSoqKt96xo0bp48++kiff/65GjRooG+//VZPPvmkgoOD9cILLxTb/sI55cqVk7e3d74fwqdPn873w/r35s2bpwEDBujLL7/UPffcc92+Xl5eatasmSV/MP9ROfuh4Ztvvsn3oSEyMtL+devWrdWkSRNNnjxZ77//vtPbhfu5a8xYATOAKLYL+rOzs/XYY48pLi5ONWrUyLeejRs3qkePHurWrZuqVaumhx56SDExMfr222+LZT/hGr6+vmratKlWrlyZp33lypVq1aqVw++bO3eu+vfvrzlz5qhbt2433I5pmkpOTlbFihWdrhnu5YoPDfPnzy/yhwZntgv3cteYsRICoMUV53UWb7zxhkJDQzVgwIACv69NmzZatWqV9u7dK0navn271q1bp65du97EnuBWeumllzR9+nR99tln2rVrl1588UUdOXJEgwYNkiSNGDFCffv2tfefO3eu+vbtq/fee0+RkZE6efKkTp48qbS0NHufuLg4rVixQgcOHFBycrIGDBig5ORk+zqlq9fuJCcnKzk5WZJ08OBBJScnc0enh3PXh4ab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/vb+qampSk1NVbly5ex13YyaNWsqJiZG8fHxmj59ugYOHGhf9vbbb+uXX37R448/zicdAABw2/O4V8HZbDZNnz5dnTt3VlRUlB599FEFBQVp0aJFOnjwoMaOHavatWvb+0+ZMkVxcXGKjY3NV8+1QfHEiRP52t599908oXHq1Klq1aqVnnrqKX399deqW7eutm3bptWrV6tq1ap65513XL6/AAAAt5pHTmdFR0dr3bp1io2N1fz583XlyhU1aNBAY8aM0WOPPVbo9Xz++efXbRs9enSeAFizZk19++23ev3117V8+XLFx8frjjvu0JAhQ/T6669z1y0AAPhDcFkA3LBhg5KTk5WWlqbg4GA1btzYqZs1mjdvrmXLlt2w3+jRox3ORN7MDc5hYWGFetUcAADA7crpAJiUlKSnnnpK+/btk3Q1dOVeF1irVi1NmzZNUVFRzm4GAAAALuJUANy4caNiYmKUmZmprl27KioqShUqVNCpU6eUlJSkZcuWKSYmRmvWrFFkZKSragYAAIATnAqAr776qgzDUEJCQr5ZvpdfflmJiYnq3LmzXn31Va1evdqpQgEAAOAaTj2qe+vWrXrkkUccnuJt166dHnnkEW3ZssWZzQAAAMCFnAqA/v7+qly58nX7VK5cWf7+/s5sBgAAAC7kVADs2LHjDU/trl69Wvfcc48zmwEAAIALORUA33vvPR0/flxPPvmkjh07lmfZsWPH1L9/f508eVLvvvuuU0UCAADAdYp0E0iHDh3ytZUpU0azZs3Sv/71L1WtWlXly5fX6dOndfjwYWVnZ+vuu+9Wv379tGrVKpcVDQAAgJtXpACYkJDgcFlWVpb279+v/fv352nfvn27y98XDAAAgJtXpACYk5NTXHUAAADgFnHqGkAAAADcfgiAAAAAFuP0u4Al6ejRo1qzZo2OHz+uy5cv51tuGIZGjRrlik0BAADASU4HwOHDh2vSpEnKzs62t5mmab/xI/fvBEAAAADP4NQp4GnTpum9995TdHS0FixYINM01a9fP82dO1eDBg2SzWbTQw89xHuAAQAAPIhTM4CffPKJqlWrpmXLlsnL62qWrFatmh555BE98sgjevjhh9WpUyc9/PDDLikWAAAAznNqBnD37t3q0qWLPfxJV58HmKtdu3bq1q0bbwIBAADwIE7fBRwSEmL/e0BAgM6ePZtn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zz33nLKzs/Xcc8+pa9eu+s9//qNmzZrpp59+ytd/2LBhevDBB7Vnzx79+c9/1nPPPafq1atr2rRpaty4sXbu3OnK3QQAAHALm7sL+L2srCwNHDhQhmEoKSlJERERkqTY2Fi1bNlSsbGx6tWrl2rVqnXd9axZs0bTpk1TVFSUVq5cKT8/P0lS37591alTJw0ePFiJiYn2/idPntTEiRNVrVo1bd++XUFBQfZlEydO1IsvvqgJEybos88+K4a9BgAAuHU8bgZw9erV2r9/v/r06WMPf5IUGBioUaNGKSsrSzNmzLjheqZNmyZJGjt2rD38SVLHjh3VuXNnJSUlae/evfb2Q4cOKScnR61bt84T/iSpW7dukqTTp087tW8AAACewOMCYEJCgiQpJiYm37Lctmtn7q63noCAALVu3Trfss6dO+dbT61ateTr66v169crPT09T/+lS5dKkjp06FC4nQAAAPBgHncKOPcGjYJO8ZYuXVrlypVzeBNHroyMDJ04cUINGzaUt7d3vuW56752PWXLltU//vEPDR8+XPXq1dP999+vwMBA/fDDD/rf//6np59+Ws8995wzuwYAAOARPC4ApqWlSZKCg4MLXB4UFKSjR486vY5r++UaNmyYKlWqpGeeeUYffvihvb1Vq1Z6/PHH5ePjc93tXr58WZcvX7Z/feHCBUlSZmamMjMzJUleXl7y9vZWdna2cnJy7H1z27OysmSapr3d29tbXl5eDtvhWO6/uSQZhiGbzaacnBxlZ2fna3d0PFx1nK6tRZJstqv/9bKysgrV7uPj47D2ou4THPOk4+RJYw+OedJx8qSx54EnGD1GcR6novC4AOhOY8eO1RtvvKHRo0erb9++Kl26tJKTk/XSSy8pOjpa8+fP1wMPPODw+9966y3FxcXla4+Pj1fJkiUlSeHh4YqIiNCOHTt05MgRe586deqobt262rJli86cOWNvb9y4sapWraqkpKQ8p6Zbtmyp8uXLu2K3/7ByT91LV68h7dChg37++WclJyfb20NDQ9WqVSulpKRoz5499nZXH6f4+Pg8P7Cjo6NVokSJPDVKUteuXXXx4kWtWbPG3maz2dStWzelpqZq48aNTu8THPOk4+RJYw+OedJx8qSxJ/H7yZHiPE6VKlUqdB2GeW1s9wC9evXSggUL9O2336pp06b5loeGhsowjOve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\n",
      "text/plain": [
       "<Figure size 700x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "validator(2, moncircuit, classicset(2, 1, lambda x,y,z: (x,y,(1-x)*(1-y))))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d233d317",
   "metadata": {},
   "source": [
    "## 1. Portes logiques classiques\n",
    "\n",
    "Les circuits booléens classiques sont souvent composés avec les portes NON, ET et OU. À vous de proposer pour chacune des portes ci-dessous une version quantique qui accepte en entrée les bits d'entrée de la porte simulée et produit en sortie ces mêmes bits accompagnés de la valeur calculée par la porte. Nous fournissons le test de validation qui doit retourner `True` pour valider votre solution."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4679fde0",
   "metadata": {},
   "source": [
    "### Porte NON\n",
    "\n",
    "La porte `NON` inverse la valeur du bit reçu en entrée.\n",
    "\n",
    "|x|NON(x)|\n",
    "| :-: | :-: |\n",
    "|0|1|\n",
    "|1|0|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "006d0138",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 788.961x284.278 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHCCAYAAAB/tXjZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8tUlEQVR4nO3de1SUdeLH8c8wg+CFW4uad8wUlUrJKyYammC6ZZarpttalq5lttbP2s10gbRcq7UstrZ0s7WyctW2XdOCVFAML1teyguiaQhepwxYUmSY+f3hYdaRi8AMMvi8X+d4jvN9vvO9lM9zPvN9biaHw+EQAAAADMOnrgcAAACAK4sACAAAYDAEQAAAAIMhAAIAABgMARAAAMBgCIAAAAAGQwAEAAAwGAIgAACAwRAAAQAADIYACAAAYDBeGwC3b9+uYcOGKSQkRI0bN1bv3r21bNmyardTUFCg+Ph43XDDDWrUqJGCg4N18803KzExsVb7BQAA8FYmb3wXcGpqquLi4tSgQQONHTtWQUFBWrVqlQ4fPqznnntOM2fOrFI72dnZGjRokL777jvddtttioyMVFFRkQ4ePKjs7Gzt3r27VvoFAADwZl4XAG02mzp37qycnBxlZGQoMjJS0oWVvKioKGVmZmrv3r3q2LFjpe2UlJQoKipK3377rT799FPFxMSU6cdisXi8XwAAAG/ndaeA169fr0OHDmncuHHOECZJAQEBmj17tmw2m5YsWXLZdlasWKHt27drxowZZcKfJJfw58l+AQAAvJ3l8lWurNTUVElSbGxsmW2lZWlpaZdt56OPPpIk/epXv9LRo0f16aef6qefflKHDh10++23q0mTJrXS78XsdruOHTumgIAAmUyman0XAACgOhwOhwoKCtSyZUv5+FS+xud1ATArK0uSyj3VGhISotDQUGedyvznP/+RJKWnp+vxxx9XUVGRc1vTpk21fPly3XrrrR7tt6ioyKWf3Nxcde3a9bJjBQAA8JSjR4+qdevWldbxugCYl5cnSQoKCip3e2BgoHJyci7bzqlTpyRJ06ZN04wZM/Too4/K399fH3zwgWbMmKG77rpL+/btU4sWLTzW77x588q9u3jx4sVq1KiRJKl169bq1q2bdu3a5dJex44d1alTJ23dulVWq9VZfuONN6pt27ZKS0vTf//7X2d579691bRpU33+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T093hkbUPQIg6q0GDRqoR48eSklJcSlPSUlRv379qtzOjh071KJFC+fnqKioMm0mJye7tOlwOPToo49q1apVWr9+vdq3b1/DWQBA7ajJZTJZWVn6wx/+oPfff18WS/knCePi4rRgwQJlZWXJbrcrJSVFn3zyiY4fP+6s8/vf/1733nuvOnfuLF9fX0VGRmr69Om69957PTdBuIVTwKjXnnjiCd13333q2bOnoqKi9NZbbyk7O1tTpkyRJD399NPKzc3V0qVLJV04/REWFqaIiAidP39e7733nlauXKmVK1c62/zd736nAQMGaP78+RoxYoQ++eQTffHFFy6/bqdOnaply5bpk08+UUBAgPNgGhQUpIYNG17B/wIAULmqXtJSUlKicePGKTExUZ06daqwvYULF2rSpEnq3LmzTCaTOnTooAceeEBLlixx1vnoo4/03nvvadmyZYqIiNDOnTs1ffp0tWzZUhMmTPDc5FBzDtSavLw8hyRHXl5eXQ/lqvaXv/zF0a5dO0eDBg0cN998syMtLc25bcKECY6BAwc6P8+fP9/RoUMHh7+/vyMkJMTRv39/x6efflqmzX/84x+O8PBwh6+vr6Nz586OlStXumyXVO6fJUuW1NY0AaBaioqKHGaz2bFq1SqX8scee8wxYMCAMvXPnDnjkOQwm83OPyaTyVm2bt06l/pnz5515OTkOOx2u+Opp55ydO3a1bmtdevWjqSkJJf6c+bMcYSHh3twhrhUdXIHK4Co9x555BE98sgj5W575513XD4/9dRTeuqppy7b5qhRozRq1KgKtzt4fCYAL3fxZTIjR450lqekpGjEiBFl6gcGBuqbb75xKXv99de1fv16rVixosylLv7+/mrVqpWKi4u1cuVKjR492rnt559/lo+P61VmZrOZx8B4EQIgAABXqepcJuPj41PmUVbNmjWTv7+/S/nWrVuVm5ur7t27Kzc3VwkJCbLb7S4/ru+44w4999xzatu2rSIiIrRjxw4tWLBAEydOvDITx2URAAEAuEqNGTNGP/zwg5599lkdP35cN9xwg9asWaN27dpJko4fP37ZZwJe6ty5c5o1a5a+++47NWnSRMOGDdO7777r8nal1157TbNnz9YjjzyiU6dOqWXLlvrtb3+rP/7xj56cHtzAq+BqEa+CAwAAVwqvggMAAECFCIAAAAAGQwAE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z/uz2Wzy8fFxlh07dky33367srOzdebMmboaMgDUidOnTyspKUnLly/XgQMH1KhRI7Vq1UpNmjTRNddco/379+v06dOaOHGi/vKXv9T1cFEDBEBc9c6fP69NmzZp0aJFOnjwoBwOhxo2bKju3btr9OjRGjBgQJnv/Pzzz/rss8/UoEED/fKXv6yDUQPAledwOGS322U2m3X27FllZWVp+/bt2rx5s7Zu3ar9+/eradOmatu2rR588EH9+te/VuPGjet62KgBAiCuevPnz9fzzz+vgoICdenSRZK0b98+5/Z27dppypQpuu+++9SyZUtn+aU3iACAEdntdp07d04NGjRQXl6eTpw4oYiIiLoeFtxEAMRV7bvvvtONN96oXr16aenSpfLz81Pz5s11/Phxffrpp1q1apU+++wzSVK/fv304osvKioqqo5HDQBXxtmzZ5Wdna22bdu6vA1JuhD8TCaTy2NgLv5RXHo3MOonAiCuavHx8XrzzTe1bNkyDRo0SFLZg9iePXu0YMECffDBB2rVqpXee+899enThxVAAFe9P/3pT1q5cqXuvvtu9e3bV+Hh4WrevLnMZrOzzqUPg87Ly1NAQADhr54jAOKqds8992jHjh1KTU1V27ZtZbPZZLFYXK5zKfXXv/5VjzzyiO699169//77dThqALgyWrdurWPHjslsNisoKEj9+vVTbGys+vTpo+uuu06/+MUvXOoXFhZq4cKFstlsmj17Nj+S6zFLXQ8AqE2RkZH6+OOPVVBQIEmyWC78kzeZTM7wV3qaY8qUKUpNTdWmTZuUlZWljh071tm4AaC2HThwQHl5eYqKitK4ceOUkpKijIwMrV69Wm3bttWtt96q2267TZGRkWrVqpWCg4P1zTffaN68ebrtttsIf/Uc67e4qpWe9h0/frzWr1+v8+fPl6lT+mR7SerYsaOsVqt+/vnnKzpOALjSDhw4oHPnzik2NlZTp07VwoUL9e677yo+Pl7t2rXTypUr9cADD2jcuHFKTEzU559/rlWrVqmwsJDno14FOAWMq1pJSYl+//vfa8GCBercubOmTp2qUaNGqXnz5mXqnjlzRo8//rjWrFmjU6dO1cFoAeDKWbFihUaPHq0PP/xQo0ePdpYXFxfr+++/165du7Rp0yalpqZq37598vX1lcPhkJ+fH6/HvAoQAGEIb775pl588UV99913atmypUaOHKnbb79dbdq0kdlsVnBwsF577TW98sormjp1ql566aW6HjIA1CqHw6H9+/fL399f7du3L/fGt8LCQh04cECZmZlasmSJUlJS9Oijj+rVV1+to1HDUwiAMASHw6GDBw9q0aJF+vDDD5WTkyNJatasmXx9fXX8+HHZ7XaNHTtWL7zwAu+2BGBo5YXBxx57TElJSfrqq68UGRlZRyODpxAAYTiFhYXatm2b/vWvf+nYsWM6deqUAgMDNWbMGN19993y9/ev6yECgFcofdbfkSNHNGLECJ05c0bZ2dl1PSx4AHcBw3AaN26smJgYxcTEqLi4WL6+vnU9JADwSqXP+svNzVVxcbEeeeSROh4RPIUVQAAAUCmHw6GcnBxdc801vPv3KkEABAAAMBieAwgAAGAwBEAAAACDIQACAAAYDAEQAADAYAiAAAAABkMABAAAMBgCIAAAgMEQAAEAAAyGAAgAAGAw/w/pnm0m/aN+WgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 700x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuitNON = QuantumCircuit(2) # un bit d'entrée, un bit de sortie\n",
    "\n",
    "### AJOUTER ICI CE QU'IL FAUT POUR MODIFIER LE CIRCUIT\n",
    "### ALLEZ, C'EST LE PREMIER, ON VOUS PROPOSE UNE SOLUTION ;-)\n",
    "### CE N'EST PAS LA MEILLEURE, VOUS POUVEZ LE FAIRE AVEC UNE PORTE DE MOINS\n",
    "\n",
    "circuitNON.x(0)\n",
    "circuitNON.cx(0,1)\n",
    "circuitNON.x(0)\n",
    "\n",
    "### ET VOICI LE TEST QUI DOIT RENVOYER TRUE\n",
    "validator(1, circuitNON, classicset(1,1, lambda x,y: (x,1-x)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38301d59",
   "metadata": {},
   "source": [
    "### Porte ET\n",
    "\n",
    "La porte `ET` teste si les deux bits en entrée sont à 1.\n",
    "\n",
    "|x|y|ET(x,y)|\n",
    "| :-: | :-: | :-: |\n",
    "|0|0|0|\n",
    "|0|1|0|\n",
    "|1|0|0|\n",
    "|1|1|1|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9535d66f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 621.941x367.889 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHICAYAAADeLlu/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABETklEQVR4nO3dd3gU5f7+8XuSTSOkUALSi9JVmnQCBCQgiIgVUQEVFeTowYLnoGCIcERQERSxgIKoIAjYqEEghCoWAqIgoUsngkmMlGx2fn/wy36JyUKW3bCL835dF9dFnpmd+QzzZLnnmWaYpmkKAAAAlhHg6wIAAABweREAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGJuvC/gnczgcOnTokCIiImQYhq/LAQAA/2CmaSorK0sVK1ZUQMCFx/gIgMXo0KFDqlKliq/LAAAAFvLbb7+pcuXKF5yHAFiMIiIiJJ3bEZGRkT6uBgAA/JNlZmaqSpUqzvxxIQTAYpR32jcyMpIACAAALouiXHbGTSAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCICQJE2ePFk1atRQaGiomjZtqtWrV7ucd/78+ercubNiYmIUGRmpVq1aaenSpfnmmT59ugzDKPDn9OnTznlSUlLUo0cPVaxYUYZh6IsvviiuzQMAAOchAEKzZ8/WkCFD9Pzzz2vTpk2KjY3VTTfdpP379xc6f0pKijp37qxFixbphx9+UFxcnHr06KFNmzblmy8yMlKHDx/O9yc0NNQ5PTs7Ww0bNtSkSZOKdfsA+AcONAH/QQCExo8fr4ceekgDBgxQvXr1NGHCBFWpUkVvv/12ofNPmDBBzz77rJo1a6ZatWrppZdeUq1atfT111/nm88wDF111VX5/pzvpptu0ujRo3XbbbcV27YB8A8caOJS+OKgwd31XqkIgBZ39uxZ/fDDD4qPj8/XHh8fr3Xr1hVpGQ6HQ1lZWSpdunS+9j///FPVqlVT5cqVdfPNNxf44gZgHRxowl2+Omhwd71XKgKgxaWnpys3N1fly5fP116+fHkdOXKkSMt47bXXlJ2drbvuusvZVrduXU2fPl1fffWVZs2apdDQULVp00ZpaWlerR+A/+NAE5fCVwcN7q73SkUAhKRzvxDnM02zQFthZs2apZEjR2r27NkqV66cs71ly5a677771LBhQ8XGxmrOnDmqXbu23nzzTa/XDt/w9qmZ83366acyDEO33nprvna73a7hw4erRo0aCgsLU82aNfXiiy/K4XB4a7NQDDjQhLt8ddDgjfVeKQiAFle2bFkFBgYW+BI+duxYgS/rv5s9e7YeeughzZkzRzfeeOMF5w0ICFCzZs34Yv6HKK5TM5K0b98+PfPMM4qNjS0wbezYsXrnnXc0adIkbdu2TePGjdMrr7zCgcUVggNNFJWvDhq8sd4rBQHQ4oKDg9W0aVMtW7YsX/uyZcvUunVrl5+bNWuW+vfvr5kzZ6p79+4XXY9pmkpNTVWFChU8rhm+V1ynZnJzc3XvvfcqMTFRNWvWLLCc9evXq2fPnurevbuqV6+uO+64Q/Hx8fr++++LZTvhHRxo4lL56qDhUtd7JSEAQk899ZSmTp2qDz74QNu2bdOTTz6p/fv3a+DAgZKkYcOGqW/fvs75Z82apb59++q1115Ty5YtdeTIER05ckQZGRnOeRITE7V06VLt3r1bqampeuihh5SamupcpnRuGD41NVWpqamSpD179ig1NfUfd6HtP01xnpp58cUXFRMTo4ceeqjQz7Vt21bLly/Xjh07JEmbN2/WmjVr1K1bt0vYElwuHGjCXb46aPBkvVccE8UmIyPDlGRmZGT4upSLeuutt8xq1aqZwcHBZpMmTcxVq1Y5p/Xr189s37698+f27dubkgr86devn3OeIUOGmFWrVjWDg4PNmJgYMz4+3ly3bl2+da5cufKiy4H/OXjwoCnJXLt2bb72//3vf2bt2rWLtIxx48aZpUuXNo8ePepsW7NmjVmpUiXz+PHjpmme63c9e/bM9zmHw2H+97//NQ3DMG02m2kYhvnSSy95tkG4LD799FMzKCjIfP/9981ffvnFHDJkiBkeHm7u3bvXNE3T/O9//2vef//9zvlnzpxp2mw286233jIPHz7s/PPHH3845xk5cqS5ZMkSc9euXeamTZvMBx54wLTZbOa3337rnCcrK8vctGmTuWnTJlOSOX78eHPTpk3mvn37Lt/G45I0b97cHDRoUL62evXqmf/9739dfmbmzJlmaGio+fnnnxdpHQ6Hw7zhhhvMBx54wKP1+gt3cgcBsBhdSQEQKKq8APj3QD969GizTp06F/38zJkzzRIlSpjLli1ztmVmZprVq1c3Fy1a5GwrLADOmjXLrFy5sjlr1ixzy5Yt5owZM8zSpUub06dP92yjcFlwoAl3+Oqg4WLr9WcEQD9BAMQ/0ZkzZ8zAwEBz/vz5+dqfeOIJs127dhf87KeffmqGhYWZCxYsyNeeNzoTGBjo/GMYhmkYhhkYGGju3LnTNE3TrFy5sjlp0qR8nx01alSRgieAK48vDhoutl5/5k7uMEzTNIv5LLNlZWZmKioqShkZGYqMjPR1OYDXtGjRQk2bNtXkyZOdbfXr11fPnj01ZsyYQj8za9YsPfjgg5o1a1aBx7ucPn1aO3fuzNc2fPhwZWVlaeLEiapdu7aCg4NVpkwZjR49WoMGDXLON2bMGE2bNs15XSAAWJU7ucN2mWoC8A/y1FNP6f7779cNN9ygVq1a6b333itw49DBgwc1Y8YMSf9349DEiROdNw5JUlhYmKKiohQaGqprr7023zqio6MlKV97jx499L///U9Vq1ZVgwYNtGnTJo0fP14PPvjgZdhqAPjnIAACcNvdd9+t33//XS+++KIOHz6sa6+9VosWLVK1atUkSYcPH853N/e7774ru92uwYMHa/Dgwc72fv36afr06UVe75tvvqkRI0boscce07Fjx1SxYkU9+uijeuGFF7y2bQBgBZwCLkacAgYAAJeLO7mD5wACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMXYfF0APPPwBF9X4L+mDPF1BcA/A98zrvE9gysVI4AAAAAWwwggAADwKkaNC+dPI8aMAAIAAFgMI4CAxXBk7po/HZ0DQHFiBBAAAMBiCIAAAAAWQwAEAACwGL8NgN999526deumUqVKKTw8XM2bN9fMmTOL/Pk1a9bo6aefVtOmTVWmTBmFhoaqbt26+s9//qM//vijSMsYN26cDMOQYRjasGHDJW4JAACAf/HLm0CSk5PVpUsXBQcHq3fv3oqKitL8+fN17733au/evXruuecuuow77rhD6enpatu2rfr27SvDMJScnKxx48Zp3rx5WrduncqVK+fy89u2bdMLL7yg8PBwZWdne3PzAAAAfMrvAqDdbteAAQNkGIZSUlLUuHFjSVJCQoJatWqlhIQE3XnnnapVq9YFl/Pkk0+qb9++qlChgrPNNE0NHjxYb7/9thITE/XWW28V+tnc3Fz169dPDRs2VO3atfXxxx97bwMBAAB8zO9OAa9YsUK7du1Snz59nOFPkiIiIjRixAjZ7XZNmzbtosv5z3/+ky/8SZJhGBoxYoQkadWqVS4/O3bsWG3evFkffPCBAgMDL3FLAAAA/JPfBcDk5GRJUnx8fIFpeW0XCm8XExQUJEmy2Qof/Ny6dasSExM1fPhwNWjQ4JLXAwAA4K/87hRwWlqaJBV6irdUqVIqW7asc55L8cEHH0gqPGDa7Xb1799f9erV03//+1+3l33mzBmdOXPG+XNmZqYkKScnRzk5OZKkgIAABQYGKjc3Vw6HwzlvXrvdbpdpms72wMBABQQEuGyHa3n/5tK50V+bzSaHw6Hc3NwC7a72h7f20/m1SP93AGK324vUHhQU5LJ2d7cJrvnTfvKnvgfX/Gk/+VPf88PxJb9RnPvJHX4XADMyMiRJUVFRhU6PjIzUgQMHLmnZqampSkxMVLly5fTss88WmP7SSy9p8+bN+vbbby/pS2/MmDFKTEws0J6UlKQSJUpIkqpWrarGjRtry5Yt2r9/v3OeOnXqqG7dutq4caOOHz/ubG/UqJGqVaumlJQUZWVlOdtbtWp1wZtYIC1atMj594iICHXs2FG//fabUlNTne0xMTFq3bq10tLS9Ouvvzrbvb2fkpKS8n1hx8XFKSwsLF+NktStWzedOnVKK1eudLbZbDZ1795d6enpWr9+vcfbBNf8aT/5U9+Da/60n/yp70n8/+RKce6nihUrFrkOwzw/tvuB+Ph4LVu2TGlpabrmmmsKTL/66qt14MCBfCNtRbFnzx7FxsYqPT1dixcvVlxcXL7pmzdvVrNmzfT0009rzJgxzvb+/fvrww8/1Pr169WyZcsLrqOwEcAqVaooPT1dkZGRkrx/dM9rvVybPJgRwMJqp8+4dn6fka78URhv9T36jGvvPO4/+8mf+t6jbzACWJgpQ4p3BDA7O1tRUVHKyMhw5g5X/G4EMG/kL28k8O8yMzNdjg66sm/fPsXFxen48eOaN29egfAnSf369dPVV1+tkSNHul1znpCQEIWEhBRoDwoKKjCiGBgYWOjpOFfXJrpqh2uFjeIGBAQUOkzuan94az+5GlF2p91V7e5uE1zzp/3kT30PrvnTfvK3vofCFfd+KnIdl/zJYpJ37V9h1/mdPHlS6enpF30EzPn27t2rDh066NChQ5ozZ45uvvnmQufbvHmztm/frtDQUOfDnw3D0Icffijp3JC2YRj64osv3N8oAAAAP+J3sb19+/YaM2aMkpKS1Lt373zTkpKSnPMUxfnhb/bs2erZs6fLeR966KFC21NSUpSWlqZbbrlFMTExql69etE2BAAAwE/5XQDs1KmTatasqZkzZ+qJJ55Qo0aNJElZWVkaNWqUbDab+vfv75w/PT1d6enpKlu2rMqWLetszwt/Bw8e1OzZs9WrV68Lrnfq1KmFtvfv319paWkaNmzYRa8BBAAAuBL4XQC02WyaOnWqunTpotjYWN1zzz2KjIzU/PnztWfPHo0ePVq1a9d2zj9p0iQlJiYqISEh3/V7HTp00L59+9SyZUtt2bJFW7ZsKbAuT673AwAAuFL5XQCUzt3+vmbNGiUkJGjOnDk6e/asGjRooFGjRunee+8t0jL27dsnSdqwYYM2bNhQ6DwEQAAAYEV+GQAlqXnz5lq8ePFF5xs5cmShQc5bT7eZPn26pk+f7pVlAQAA+AO/uwsYAAAAxYsACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALMZWHAvds2ePvvnmG4WFhalXr14KDw8vjtUAAADgEng0Ajh27FjVqlVLJ0+edLYlJyfruuuu08CBA9WvXz81bdo033QAAAD4lkcB8Msvv1SlSpVUqlQpZ9vQoUPlcDiUmJioQYMGaceOHZo4caLHhQIAAMA7PAqAu3fvVoMGDZw///bbb/rhhx80ePBgDR8+XJMmTVKnTp00b948jwsFAACAd3gUAP/44w9FR0c7f16zZo0Mw1CPHj2cbU2aNNH+/fs9WQ0AAAC8yKMAWL58ee3bt8/587JlyxQSEqIWLVo4206fPi3DMDxZDQAAALzIo7uAmzVrpi+//FILFy5UaGio5syZow4dOigkJMQ5z+7du1WxYkWPCwUAAIB3eDQC+Nxzz8lut+uWW25RfHy8Tp8+rWHDhjmnZ2VlaeXKlflGBAEAAOBbHo0ANmnSRBs2bNBHH30kSbrjjjvUsmVL5/TNmzerc+fO6tOnj2dVAgAAwGs8fhB0w4YN1bBhw0KntW3bVm3btvV0FQAAAPAir70J5M8//9SOHTuUnZ2t2NhYby0WAAAAXubxu4D37t2rnj17qlSpUmrWrJni4uKc09auXav69esrOTnZ09UAAADASzwKgPv371fLli21aNEi9ezZU61atZJpms7pLVq0UHp6umbNmuVxoQAAAPAOjwJgQkKCTp48qVWrVmnu3Lnq3Llzvuk2m02xsbFau3atR0UCAADAezwKgEuXLlWvXr3UunVrl/NUrVpVBw8e9GQ1AAAA8CKPAuCJEydUvXr1i8535swZT1YDAAAAL/L4VXA7d+684Dxbt25V1apVPVkNAAAAvMijANi5c2d9/fXX2rp1a6HTV69ereXLl6tbt26erAYAAABe5FEAHD58uMLCwtS2bVu99NJLztHAxYsXa8SIEeratavKli2roUOHeqVYAAAAeM6jB0FXr15dS5cuVe/evTV8+HAZhiHTNHXzzTfLNE1VrVpVc+fOVYUKFbxVLwAAADzk8ZtAWrRoobS0NH399df69ttvdeLECUVGRqpFixbq2bOngoODvVEnAAAAvMQrr4Kz2Wzq1auXevXq5Y3FAQAAoBh5/Co4AAAAXFncGgGcMWOGJKlXr16KiIhw/lwUffv2da8yAAAAFAu3AmD//v1lGIZatmypiIgI588XYpqmDMMgAAIAAPgJtwLgBx98IMMwnHf1Tps2rViKAgAAQPFxewTwfP369fNmLQAAALgMPLoJJCUlRfv377/gPAcOHFBKSoonqwEAAIAXeRQA4+LiNH369AvO88knnyguLs6T1QAAAMCLPAqApmledB6Hw3HRG0UAAABw+RT7cwDT0tIUFRVV3KsBAABAEbn9JpAHH3ww389ffPGF9u7dW2C+3Nxc5/V/Xbt2veQCAQAA4F1uB8Dzr/kzDEOpqalKTU0tdF7DMNSsWTO9/vrrl1ofAAAAvMztALhnzx5J567/q1mzpoYMGaJ///vfBeYLDAxUqVKlFB4e7nmVAAAA8Bq3A2C1atWcf582bZoaNWqUrw0AAAD+ze0AeD4eBA0AAHDlcSsA5j3QuXnz5goNDXXrAc/t2rVzrzIAAAAUC7cCYIcOHWQYhrZt26batWs7fy6K3NzcSyoQAAAA3uVWAHzhhRdkGIbKli2b7+fi8N133ykhIUHr16/X2bNn1aBBAw0ZMkR9+vQp0uePHTum999/Xz/88IN++OEH56NqivLw6s8//1yTJ0/Wjz/+qL/++ktXXXWVWrZsqXHjxqlKlSqebBYAAIDPuRUAR44cecGfvSU5OVldunRRcHCwevfuraioKM2fP1/33nuv9u7dq+eee+6iy/jll1/03HPPyTAM1apVSyVKlNBff/11wc+YpqmBAwfqvffe09VXX63evXsrIiJChw4d0qpVq7Rv3z4CIAAAuOJ5dBNIcbDb7RowYIAMw1BKSooaN24sSUpISFCrVq2UkJCgO++8U7Vq1brgcurVq6dVq1apcePGioiIUN26dfXrr79e8DNvvvmm3nvvPQ0ePFgTJ05UYGBggdoAAACudMX+Kjh3rVixQrt27VKfPn2c4U+SIiIiNGLECNntdk2bNu2iyylfvrzatWuniIiIIq331KlTSkxMVM2aNTVhwoQC4U+SbDa/y8sAAABucyvRdOzY8ZJWYhiGli9fXqR5k5OTJUnx8fEFpuW1rVq16pLquJBly5bpxIkT6t+/v3Jzc/XVV19px44dio6O1o033qhrrrnG6+sEAADwBbcCYF44c5c7N4qkpaVJUqGneEuVKqWyZcs65/Gm77//XtK5Ub6GDRvmO10cEBCgJ598Uq+++qrX1wsAAHC5uRUAHQ5HcdXhlJGRIUmKiooqdHpkZKQOHDjg9fUeO3ZMkvTaa6+pSZMm2rhxo+rVq6dNmzbpkUce0Wuvvaarr75agwYNcrmMM2fO6MyZM86fMzMzJUk5OTnKycmRdC5MBgYGKjc3N9+/Z1673W7Pd6dyYGCgAgICXLbDtbx/c+ncQYjNZpPD4cj3SKK8dlf7w1v76fxapP+7nODv15W6ag8KCnJZu7vbBNf8aT/5U9+Da/60n/yp7/nhFWZ+ozj3kzu4qO3/y/tHDA4O1hdffKGKFStKkmJjYzV37lxdf/31eu211y4YAMeMGaPExMQC7UlJSSpRooQkqWrVqmrcuLG2bNmi/fv3O+epU6eO6tatq40bN+r48ePO9rxX7aWkpCgrK8vZ3qpVK5UrV86zjf6HW7RokfPvERER6tixo3777TelpqY622NiYtS6dWulpaXlG/X19n5KSkrK94UdFxensLCwfDVKUrdu3XTq1CmtXLnS2Waz2dS9e3elp6dr/fr1Hm8TXPOn/eRPfQ+u+dN+8qe+J/H/kyvFuZ/ysktRGGZRHox3Gd15552aO3euvv/+ezVt2rTA9JiYGBmG4RyxK6q8u4Bdbe7QoUP16quvKjY2ttA3nNSqVUs7d+7UyZMnFR0dXegyChsBrFKlitLT0xUZGSnJ+0f3D09w51/BWiYPZgSwsNrpM66d32ekK38Uxlt9jz7j2juP+89+8qe+9+gbjAAWZsqQ4h0BzM7OVlRUlDIyMpy5wxW/exVc3rV/aWlpBQLgyZMnlZ6ertatWxd5vUVVp04dSXIZ7vLaT5065XKekJAQhYSEFGgPCgoqcBolMDDQrTuNuQPZfYWdugoICCh0mNzV/vDWfnJ1Gs2ddle1u7tNcM2f9pM/9T245k/7yd/6HgpX3PupqPzuVXDt27fXmDFjlJSUpN69e+eblpSU5JzH2+Li4iRJ27ZtKzAtJydHO3fuVHh4uGJiYry+bgAAgMvJ714F16lTJ9WsWVMzZ87UE088oUaNGkmSsrKyNGrUKNlsNvXv3985f3p6utLT01W2bFlnXZfi6quvVnx8vJKSkjR16lQNGDDAOe3ll1/WH3/8ofvuu48jHQAAcMXzu1fB2Ww2TZ06VV26dFFsbKzuueceRUZGav78+dqzZ49Gjx6t2rVrO+efNGmSEhMTlZCQUKCe84Pi4cOHC7S9+uqr+ULj5MmT1bp1az388MP64osvVLduXW3atEkrVqxQtWrV9Morr3h9ewEAAC43vxzOiouL05o1a5SQkKA5c+bo7NmzatCggUaNGqV77723yMv58MMPL9g2cuTIfAHw6quv1vfff68XXnhBS5YsUVJSkq666ioNHjxYL7zwAnfdAgCAfwSvBcB169YpNTVVGRkZioqKUqNGjTy6WaN58+ZavHjxRecbOXKky5HIS7nBuUqVKkV61RwAAMCVyuMAmJKSoocfflg7d+6UdC505V0XWKtWLU2ZMkWxsbGergYAAABe4lEAXL9+veLj45WTk6Nu3bopNjZW5cuX19GjR5WSkqLFixcrPj5eK1euVMuWLb1VMwAAADzgUQB87rnnZBiGkpOTC4zyPfvss1q1apW6dOmi5557TitWrPCoUAAAAHiHR4/q/u6773T33Xe7PMXbvn173X333dq4caMnqwEAAIAXeRQAQ0NDValSpQvOU6lSJYWGhnqyGgAAAHiRRwGwU6dOFz21u2LFCt14442erAYAAABe5FEAfO2113To0CE98MADOnjwYL5pBw8eVP/+/XXkyBG9+uqrHhUJAAAA73HrJpCOHTsWaCtdurRmzJihTz75RNWqVVO5cuV07Ngx7du3T7m5ubr++uvVr18/LV++3GtFAwAA4NK5FQCTk5NdTrPb7dq1a5d27dqVr33z5s1ef18wAAAALp1bAdDhcBRXHQAAALhMPLoGEAAAAFceAiAAAIDFePwuYEk6cOCAVq5cqUOHDunMmTMFphuGoREjRnhjVQAAAPCQxwFw6NChmjhxonJzc51tpmk6b/zI+zsBEAAAwD94dAp4ypQpeu211xQXF6e5c+fKNE3169dPs2bN0sCBA2Wz2XTHHXfwHmAAAAA/4tEI4Hvvvafq1atr8eLFCgg4lyWrV6+uu+++W3fffbfuuusude7cWXfddZdXigUAAIDnPBoB3L59u7p27eoMf9K55wHmad++vbp3786bQAAAAPyIx3cBR0dHO/8eHh6u33//Pd/0OnXq6Oeff/Z0NQAAAPASjwJgpUqVdODAAefPV199tb799tt882zdulXh4eGerAYAAABe5FEAbNOmjTZs2OD8uWfPntq0aZMGDhyohQsXatiwYVq8eLHatWvncaEAAADwDo9uArn//vt16NAh7du3T9WqVdPQoUO1YMECvffee5oyZYpM01T16tX1yiuveKteAAAAeMijANihQwd16NDB+XPJkiW1YcMGffnll9q1a5eqVaumHj16cAoYAADAj3jlTSDnCwoK0h133OHtxQIAAMBLvBYA7Xa7duzYoYyMDEVFRal27dqy2byeLwEAAOAhjx8Dc/z4cT388MOKjo7Wddddp7Zt2+q6665TdHS0HnnkER0/ftwbdQIAAMBLPBqiO3jwoNq0aaP9+/crJiZG7dq1U/ny5XX06FH98MMPmjp1qpYtW6Y1a9aoUqVK3qoZAAAAHvBoBPDZZ5/V/v37lZiYqH379mnRokWaNm2aFi1apH379mnkyJHat2+f/vOf/3irXgAAAHjIoxHAJUuWqGvXrhoxYkSBaaGhoXrhhRe0bt06LV682JPVAAAAwIs8GgE8e/asmjRpcsF5mjZtqrNnz3qyGgAAAHiRRwGwadOm2r59+wXn2b59u5o2berJagAAAOBFHgXAUaNGacGCBZo+fXqh0z/44AMtWrRIo0eP9mQ1AAAA8CK3rgF88cUXC7TFxcXpoYce0rhx49SmTRuVK1dOx44d09q1a/Xrr78qPj5eK1euVNu2bb1WNAAAAC6dWwFw5MiRLqdt37690NPBS5cuVVJSUqE3igAAAODycysArly5srjqAAAAwGXiVgBs3759cdUBAACAy8TjV8EBAADgyuLRg6DzrFu3TtOnT1dqaqoyMjIUGRmpxo0bq2/fvtz8AQAA4Gc8DoDPPPOMXn/9dZmmKUkKCAiQw+HQDz/8oPfff1///ve/NX78eI8LBQAAgHd4dAp4xowZGj9+vOrUqaNZs2bp8OHDstvtOnLkiD799FPVrVtXEydO1IwZM7xVLwAAADzkUQB8++23VaVKFX377be6++67Vb58eUlSuXLldNddd2n9+vWqXLmyJk+e7JViAQAA4DmPAuDWrVt1++23KyIiotDpkZGRuu222/Tzzz97shoAAAB4kcd3Aedd++eKYRiergIAAABe5FEAvPbaazVv3jz9+eefhU7PysrSvHnz1KBBA09WAwAAAC/yKAAOHDhQBw4cUKtWrTRv3jylp6dLktLT0zV37ly1bt1aBw4c0KBBg7xSLAAAADzn0WNg+vXrp9TUVE2cOFF33XWXpP97DIx07vTw448/rn79+nleKQAAALzC4+cAvv7667r99ts1bdo0paamKjMz0/kg6H79+ik2NtYbdQIAAMBLPAqAKSkpioyMVNu2bXnjBwAAwBXCo2sA4+LiNGXKFG/VAgAAgMvAowBYrlw5BQcHe6sWAAAAXAYeBcAuXbpo1apVF30WIAAAAPyHRwHwpZde0u+//65HHnlEJ06c8FZNAAAAKEYe3QRy3333KTo6Wh988IE+/vhj1ahRQ+XLly/w9g/DMLR8+XKPCgUAAIB3eBQAk5OTnX8/c+aMtm/fru3btxeYj9fBAQAA+A+PAmDeA58BAABw5bikawA3bNigTp06KTIyUlFRUbrxxhu1ceNGb9cGAACAYuD2COBPP/2kjh076vTp0862FStWKC4uThs3blSDBg28WiAAAAC8y+0RwJdfflmnT5/W888/ryNHjujo0aN67rnndOrUKY0dO7Y4agQAAIAXuT0CuHr1arVt21ajRo1yto0ePVqrVq3SqlWrvFocAAAAvM/tEcCjR4+qZcuWBdpbtmypo0ePeqUoAAAAFB+3A2BOTo5KlixZoL1kyZLKycnxSlEAAAAoPh69CQQAAABXnkt6DuDHH3+sDRs25GvbuXOnJKlbt24F5jcMQwsXLryUVQEAAMDLLikA7ty50xn4/m7JkiUF2ngTCAAAgP9wOwDu2bOnOOoAAADAZeJ2AKxWrVpx1AEAAIDLhJtAAAAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAW47cB8LvvvlO3bt1UqlQphYeHq3nz5po5c6Zby3A4HJo0aZKuv/56hYWFKSYmRnfddZfS0tIKnd80Tc2fP19xcXGqUKGCSpQooTp16ujRRx/V7t27vbFZAAAAPueXATA5OVlt27bV6tWrdccdd2jQoEFKT0/Xvffeq5deeqnIyxk4cKAef/xx5ebm6vHHH1e3bt301VdfqVmzZvrll18KzP/MM8/o9ttv16+//qpbb71Vjz/+uGrUqKEpU6aoUaNG2rp1qzc3EwAAwCdsvi7g7+x2uwYMGCDDMJSSkqLGjRtLkhISEtSqVSslJCTozjvvVK1atS64nJUrV2rKlCmKjY3VsmXLFBISIknq27evOnfurEGDBmnVqlXO+Y8cOaIJEyaoevXq2rx5syIjI53TJkyYoCeffFLjx4/XBx98UAxbDQAAcPn43QjgihUrtGvXLvXp08cZ/iQpIiJCI0aMkN1u17Rp0y66nClTpkiSRo8e7Qx/ktSpUyd16dJFKSkp2rFjh7N97969cjgcatOmTb7wJ0ndu3eXJB07dsyjbQMAAPAHfhcAk5OTJUnx8fEFpuW1nT9yd6HlhIeHq02bNgWmdenSpcByatWqpeDgYK1du1ZZWVn55l+0aJEkqWPHjkXbCAAAAD/md6eA827QKOwUb6lSpVS2bFmXN3Hkyc7O1uHDh3XttdcqMDCwwPS8ZZ+/nDJlyuh///ufhg4dqnr16umWW25RRESEfvrpJ33zzTd65JFH9Pjjj3uyaQAAAH7B7wJgRkaGJCkqKqrQ6ZGRkTpw4IDHyzh/vjzPPPOMKlasqEcffVRvv/22s71169a67777FBQUdMH1njlzRmfOnHH+nJmZKUnKyclRTk6OJCkgIECBgYHKzc2Vw+FwzpvXbrfbZZqmsz0wMFABAQEu2+Fa3r+5JBmGIZvNJofDodzc3ALtrvaHt/bT+bVIks127lfPbrcXqT0oKMhl7e5uE1zzp/3kT30PrvnTfvKnvueHJxj9RnHuJ3f4XQD0pdGjR+vFF1/UyJEj1bdvX5UqVUqpqal66qmnFBcXpzlz5ui2225z+fkxY8YoMTGxQHtSUpJKlCghSapataoaN26sLVu2aP/+/c556tSpo7p162rjxo06fvy4s71Ro0aqVq2aUlJS8p2abtWqlcqVK+eNzf7Hyjt1L527hrRjx4767bfflJqa6myPiYlR69atlZaWpl9//dXZ7u39lJSUlO8LOy4uTmFhYflqlKRu3brp1KlTWrlypbPNZrOpe/fuSk9P1/r16z3eJrjmT/vJn/oeXPOn/eRPfU/i/ydXinM/VaxYsch1GOb5sd0P3HnnnZo7d66+//57NW3atMD0mJgYGYZxwRsysrOzVbJkSV177bX66aefCkxfuHChbr75Zg0dOlTjxo2TdO7mk06dOjnv9j3f8ePHVbNmTZUuXVr79u1zud7CRgCrVKmi9PR056ijt4/uH57gshzLmzyYEcDCaqfPuHZ+n5Gu/FEYb/U9+oxr7zzuP/vJn/reo28wAliYKUOKdwQwOztbUVFRysjIKHBD69/53Qjg+dfn/T0Anjx5Uunp6WrduvUFlxEeHq4KFSpoz549ys3NLXDaq7DrDBcuXCjp3FHX38XExOi6667T+vXrlZ6errJlyxa63pCQkHx3HOcJCgoqcBolMDCw0NNxeb/cRW2Ha4WdugoICCh0mNzV/vDWfnJ1Gs2ddle1u7tNcM2f9pM/9T245k/7yd/6HgpX3PupyHVc8ieLSfv27SWdOxXzd3ltefNcbDnZ2dlau3ZtgWlLly4tsJyzZ89KUr7h7fPltRcW8AAAAK4kfhcAO3XqpJo1a2rmzJn5zoVnZWVp1KhRstls6t+/v7M9PT1d27dvV3p6er7lPPLII5Kk4cOHO8OdJC1fvlxLly5Vu3btVLt2bWd73uNixo8fX+DmkA8//FA7d+5U06ZNFRER4a1NBQAA8Am/C4A2m01Tp06Vw+FQbGysHnnkET3zzDNq2LChfv75Z40cOTJfcJs0aZLq1aunSZMm5VtOXFycBgwYoNWrV6tx48Z69tln1a9fP3Xv3l2RkZH57vKVzl172KFDB/3888+qVauWBgwYoKFDhyo+Pl79+/dXSEiIJkyYcDn+CQAAAIqV3wVA6Vx4W7Nmjdq2bas5c+Zo8uTJKlOmjD7++GM9//zzRV7Ou+++qzfeeEOGYeiNN97QwoUL1aNHD23cuFH169fPN29gYKCWLFmisWPHqkqVKpo1a5YmTJigX375RX369NH333+vtm3bentTAQAALju/uwv4nyQzM7PId+NcKu7Oc23KEF9X4J/oM67RZwpHn3GNPlM4+kzhiru/uJM7/HIEEAAAAMWHAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMX4bQD87rvv1K1bN5UqVUrh4eFq3ry5Zs6c6dYyHA6HJk2apOuvv15hYWGKiYnRXXfdpbS0tGJdLwAAgD+z+bqAwiQnJ6tLly4KDg5W7969FRUVpfnz5+vee+/V3r179dxzzxVpOQMHDtSUKVNUv359Pf744zp69Khmz56tpKQkrVu3TvXr1y+W9QIAAPgzvwuAdrtdAwYMkGEYSklJUePGjSVJCQkJatWqlRISEnTnnXeqVq1aF1zOypUrNWXKFMXGxmrZsmUKCQmRJPXt21edO3fWoEGDtGrVKq+vFwAAwN/53SngFStWaNeuXerTp48zhElSRESERowYIbvdrmnTpl10OVOmTJEkjR492hn+JKlTp07q0qWLUlJStGPHDq+vFwAAwN/5XQBMTk6WJMXHxxeYltd2/sjdhZYTHh6uNm3aFJjWpUuXAsvx1noBAAD8nd+dAs67QaOwU62lSpVS2bJlL3gThyRlZ2fr8OHDuvbaaxUYGFhget6yz1+ON9Z75swZnTlzxvlzRkaGJOnEiRPKycmRJAUEBCgwMFC5ublyOBzOefPa7Xa7TNN0tgcGBiogIMBl+9nTFyzJ0n7/Pcf5d8MwZLPZ5HA4lJubW6Dd1f7w1n7K2/95bLZzv3p2u71I7UFBQS5rd3eb6DOund9nJN/uJ3/qe/QZ106e9J/95E997+xpvxtf8guZmSrW/ZSdnS1J+faHK34XAPNCU1RUVKHTIyMjdeDAAY+Xcf583lrvmDFjlJiYWKC9Ro0aF/wciseMYb6uAFca+gzcRZ+BOy5Xf8nKynKZZ/L4XQC8kg0bNkxPPfWU82eHw6ETJ06oTJkyMgzDh5VdHpmZmapSpYp+++03Z8gGXKG/wF30GbjLan3GNE1lZWWpYsWKF53X7wJgXmI9f3TufJmZmRdNtUVZxvnzeWu9ISEh+W44kaTo6OgLfuafKDIy0hK/aPAO+gvcRZ+Bu6zUZy6WVfL43Un6wq7Py3Py5Emlp6df9FEs4eHhqlChgvbs2ZPvfHqewq7388Z6AQAArgR+FwDbt28vSUpKSiowLa8tb56LLSc7O1tr164tMG3p0qUFluOt9QIAAPg7vwuAnTp1Us2aNTVz5kylpqY627OysjRq1CjZbDb179/f2Z6enq7t27crPT0933IeeeQRSdLw4cN19uxZZ/vy5cu1dOlStWvXTrVr177k9aKgkJAQJSQkFDgNDhSG/gJ30WfgLvqMa4ZZlHuFL7OVK1eqS5cuCgkJ0T333KPIyEjNnz9fe/bs0ejRo/X888875x05cqQSExOVkJCgkSNH5lvOww8/rKlTp6p+/frq3r2781VwoaGhhb4Kzp31AgAAXKn8bgRQkuLi4rRmzRq1bdtWc+bM0eTJk1WmTBl9/PHHboWwd999V2+88YYMw9Abb7yhhQsXqkePHtq4cWOB8OfN9QIAAPgzvxwBBAAAQPHxyxFAAAAAFB8CIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQCiWHGTOdxFn8GF5PUP+gmKij5TOB4DA684ceKE9uzZI8MwdOrUKVWuXFnVqlXLN49pmjIMw0cVwt/QZ+At9BO4iz5DAISHMjIy9OGHH2rChAnau3evgoODFRUVpfLly6tJkybq2rWrOnXqpJiYGF+XCj9Bn8GlyMnJ0fbt23Xy5EnZ7XYFBgaqdu3aqlChgq9Lg5+iz1wYARAeefTRRzVlyhQ1b95cDRs2VKlSpbRv3z6tWrVKR44ckSR17NhRAwYMUK9evXgfI+gzcNu2bds0bNgwLVy4ULm5uQoODlbJkiVVtWpVtWrVSjfffLNiY2NVsmRJX5cKP0GfuTgCIC7Znj17VLduXfXp00dTp05VYGCgcnJyFBAQoD///FOrVq3Shx9+qMWLFyssLEzPPPOMhg0b5uuy4UP0Gbjr0KFDio+P16+//qr+/furXLlystls+umnn7Ry5UplZGQoLCxMt956qwYOHKjY2Fhflwwfo88UkQlcorFjx5rR0dHm8uXLTdM0TbvdXmCe3Nxcc8mSJWbbtm1NwzDMyZMnX+4y4UfoM3DX8OHDzdKlS5vvv/++sy0nJ8c0TdM8duyYOX36dLNDhw5mQECAWbt2bfPzzz/3UaXwF/SZoiEA4pINGzbMDAkJMdPS0kzTNE2Hw+Fy3h9//NG89tprzauuusr8/fffL1eJ8DP0GbirYcOGZteuXc2jR4+apll4n8nIyDCnTp1qli9f3gwNDTU3b958ucuEH6HPFA2PgcEla9asmc6ePauPPvpI2dnZMgxDdru90FvtGzdurIcffljp6enasmWLD6qFP6DPwB0nTpxQUFCQTp48qXLlyklSoXduRkZGql+/fnr77bd15swZvfnmm5e7VPgJ+kzREQBxyfIu4h81apRmzJghSbLZbDIMQw6HQ7m5uZIkh8MhSQoKCpJhGAoMDPRZzfAt+gyKyjRNlS5dWk2aNNHGjRu1YMEC5ebmyjRN2e32AvPbbDb16tVLbdu21aZNm/T777/7oGr4En3GPQRAXBLTNFWpUiVNmzZNTZs21eDBg3XdddfpnXfe0bFjxxQQEOD8TzsgIEAZGRn65ptvFBkZad0Lbi2OPgN35I3a3HrrrZKkp59+WsuXL5dhGLLZbJKk3Nxc53/w0rlHDMXExCgzM1NlypTxSd3wHfqMm3x17hn/HMnJyeYtt9xiGoZhGoZhRkVFmT169DDffvttc+nSpeakSZPMzp07mwEBAeYLL7zg63LhB+gzcMcnn3xili9f3jQMw4yLizNnz55t/vnnn87pedd4LVy40KxYsaL58MMP+6pU+An6zMXxGBhcErOQp6ivXr1a7733nr744gtlZ2fnmxYVFaVnnnlGgwYNUunSpS9nqfBja9eu1bvvvqvPP/+cPgOXzpw5o7lz5+r111/Xjz/+KEkqV66c2rdvr86dOyskJERbt27V1KlTFRoaqqSkJDVo0MDHVcOXzpw5o3nz5mn8+PH0GRcIgPC6nJwcffPNN0pNTVWJEiUUHR2t+vXrq1mzZr4uDX7C4XAoIOD/rkDJycnR8uXLlZqaqrCwMPoMJBU80DRNU19++aWmTJmiZcuWFbiuq1WrVho+fLhuuummy10q/JRpmvr666/13nvvKSkpiT5zHgIg3LZr1y5t2LBB69evV0BAgBo1aqRrrrlGFStW1FVXXWXpJ6ujcLm5uQoICCgwapx30wc3ecBdGRkZWrlypfbs2aOKFSuqZMmSatasmfPOT1ibee4xd/kONDMyMpScnKzdu3fTZ0QAhJtmzZqlF154Qbt27crXXqJECTVu3Fjdu3dXjx49nEPped3L6i/dxjmFfSnnOX9U0G63Oy/ahjUtWLBAmzdv1qZNm1ShQgU1adJE11xzjapUqaKrrrpKoaGhvi4RfiY3N7fQg8nc3FwZhlHo946VEQBRZPv371fLli1VsmRJDR06VG3atNGvv/6q3bt3KzU1VevWrdOePXtUpUoVPfHEExo8eLBCQ0MLvV4Q1nDw4EE98cQTuv3229W5c2fFxMQ4p+U96oUvZZzvjz/+0OjRozV+/HgFBQUpJyfHOS06OlotWrRQz5491bNnT1WoUEFS4dckwzr+fkmJqwPN89tN01Rubq6lDzQJgCiy4cOH6+2339aMGTPUvXv3fNNOnjypbdu2afny5ZoxY4Z27dql+++/X++//76lf8GsbuTIkXrxxRcVFhamGjVq6MYbb1T37t3Vtm1bhYWFOedzOBxyOByy2WxKTk7W6dOn1bVrVx9WDl8ZN26cEhMT1a1bNz311FMqV66cNm/erJ07d2rjxo1at26djhw5ouuvv17Dhw/XHXfc4euS4WNvv/22kpOT1bdvX7Vv3z7fZUgcaLpGAESRdejQQX/99ZcWL16sMmXKyG63KyAgoMAvVmpqqoYPH67FixfrxRdf1PPPP++jiuFrLVq00NatW9WuXTutWrVKp0+fls1mU/PmzdW1a1d17dpVN9xwg3P+v/76S/fcc48WLFig7OxsTvNZUPXq1XXttddq+vTpKlu2bL5pR48e1ZYtW7RgwQJNnTpVp06d0ptvvqnBgwf7qFr4gxo1amjfvn0KCQlRw4YNFR8fr27duqlFixb5RobzLi05ffq0Zs+erbp166pFixY+rNzHLsezZnDl++uvv8zbb7/drFy5snns2DHTNE3Tbrfnm+f89y0eP37crF27ttmyZUvTbrdf8J2v+Gc6cOCAWatWLbNJkyamaZrm4cOHzXfeecds166d8/l/0dHRZo8ePcxJkyaZR44cMb/77juzQoUKZo8ePXxcPXxh27ZtZsmSJc1hw4Y52xwOR4HvjzNnzphLly4169SpY0ZFRZmrV6++3KXCT2zdutU0DMO84YYbzM6dOzu/W0qWLGl26dLFnDhxorlt27Z8n1m9erUZGRlp9uzZ0zdF+wnGRFEkYWFhat68uQ4ePKjJkydLyn/npnneNTh2u11ly5ZVmzZtdODAAe3evZvrcyzo2LFj+uOPP3T11VdLksqXL69HH31Uq1at0i+//KKRI0eqYsWKWrBggR5//HE1b95cgwYN0pEjR/TII4/4uHr4gmmaio6Odt5klvee6LzvD/P/X8MVHBys+Ph4TZgwQZmZmVq9erUvy4YP/fTTT5KkPn36KCkpSdu3b9fLL7+sa665RklJSRoyZIg6duyoPn366KOPPtLJkye1ceNGZWVlacCAAT6u3rc4BYwiMU1TmZmZ6t27t5YuXaqePXvqscceU4sWLRQZGemcLycnR0FBQcrMzNSgQYO0cuVKHTp0yIeVw1cOHz6sV199Va1bt9btt98uqfDnuq1Zs0afffaZPvvsMx09elTR0dE6ceKEr8qGj7Vs2VI///yz5syZU+DZbHn9J++i/5MnT6p58+a6/vrrNW/ePB9VDF967733NHDgQC1cuLBAf/nuu+80a9YszZ07VwcOHJAk1apVS5mZmTp9+rROnjzpi5L9h49GHnGFSklJMZs1a2YahmFWrlzZHDBggPnRRx+ZqampZnZ2tnO+d99914yKijIHDRrkw2rha9nZ2WZGRkah0/5+Wm/+/PmmYRjmY489djlKg5/J6w/ffvutWalSJdMwDHPIkCHmt99+a546dSrfvKdPnzZN0zTXrVtnVqxY0XziiScue73wPYfDYa5fv9588sknzZ07d+ZrP9+pU6fMBQsWmP369TOjoqJMwzDMf/3rX5e7XL/DCCAuyizkEQuTJk3StGnTtGXLFgUFBalq1aoqV66cSpUq5Twl07hxY82aNUvXXHONjyqHrxTWZy720Odnn31Wr776qr7//ns1adKk2GuEf8rNzdXHH3+sYcOG6ciRI6pfv77i4+PVunVr1a9fX3Xr1lVAQIAOHjyoZ555Rp999pk2btxIn7GwP//8U8HBwQoODi4w7e/fRf/61780efJk/fjjj2rUqNFlrNL/EABRJHm/RHv37lWVKlUUGBio33//XcuWLdM333yjjRs36ueff5ZpmrrmmmvUqFEjjRs3TtWrV/d16fCRvD5z8OBBVahQId/d4n+/g/zQoUO66aabtH//fk7LQJJ0/PhxTZo0SXPmzNGOHTtUokQJVapUSSVLllTp0qW1fft2HT9+XA8++KDeeustX5cLP5b3XbRr1y7dfffdysjIUFpamq/L8jkCIC7o7NmzWr16taZMmaKdO3fKNE2FhYWpadOmuueee9SyZUtJ537Bfv/9d+3cuVN169ZVdHS0s50bQKzFVZ9p1KiR7rrrLrVr167AZ/766y8tWbJEwcHBuvnmm31QNfyFaZpyOBwKDAzUqVOnlJaWpu+++05r167Vt99+q+3btysmJkZVq1bVQw89pPvuu0/h4eG+LhtXgAULFuiWW27R0KFDNXbsWF+X43MEQFzQ2LFj9dJLLykrK0v16tWTJG3bts05vUaNGho0aJDuueceVapUSVLBp7LDWi7WZ6pVq6aBAwfq/vvvV8WKFZ3tHCzAFYfDodOnTys4OFgZGRk6cuSI83WTQFG/O44ePaolS5aoR48eKl269GWozL8RAOHS7t27dd1116lZs2aaMWOGQkJCVL58eR0+fFgLFy7U/PnztWTJEklS69atNXbsWLVp08bHVcOX3O0zr7zyilq1auXjquFLp06d0v79+1W1atV8b4eRzgU/wzDyPQbm/P/oOdi0pgv1mYtx9b5gKyIAwqWEhAS9++67mjlzpjp27Cip4Bfwzz//rPHjx2vWrFmqVKmSPv74Y2s/Wd3iPOkzjABa08svv6x58+bptttuU8uWLVWnTh2VL1++wHNGJTn7R0ZGhiIiIgh/FlWUPvN3GRkZKlmyJOHvPARAuHT77bdr06ZNSk5OVtWqVZ2v0Tn/Gp0877zzjh577DHdc889+uSTT3xYNXyJPgN3Va5cWYcOHVJgYKCioqLUunVrxcfHq0WLFqpZs6bKlCmTb/7s7GxNnDhRdrtdI0aM4KDBgjzpM8OHD+fA4f+z+boA+K/GjRvr888/V1ZWliTJZjvXXQzDcP5HnneKZuDAgUpOTtbq1auVlpamWrVq+axu+A59Bu7YsWOHMjIy1KpVK/Xp00fLli3T+vXrtWDBAlWtWlUdOnTQjTfeqMaNG6tSpUqKjo7WTz/9pDFjxujGG28k/FmQp32G8Pd/+JeAS3mn8O69916tWLFCZ8+eLTBP3lP5pXNPWE9PT9dff/11WeuE/6DPwB07duzQ6dOnFR8fr8GDB2vixIn66KOPlJCQoGrVqmnevHl64IEH1KdPHyUmJmrp0qWaP3++srOz9dBDD/m6fPgAfcaLivlB07iC2e128+mnnzYNwzDr1atnTpo0yTxy5Eih8544ccLs16+fGRMTc5mrhD+hz8Adn332mWkYhjl79ux87WfPnjXT0tLMuXPnmv/+97/Nhg0bmsHBwWZ4eLhZokQJs1SpUj6qGL5Gn/EergHERb377rt65ZVXtHv3blWsWFG9evXSTTfd5HwgdHR0tN58801NmDBBgwcP1quvvurrkuFj9BkUhWma2r59u0JDQ1WjRo1CbwTKzs7Wjh079Ouvv2ratGlatmyZ/vWvf+mNN97wUdXwJfqM9xAAcVGmaWrnzp2aMmWKPv30U+dLtcuVK6egoCAdPnxYDodDvXv31rhx41S5cmUfVwxfo8/AU4X9x/7EE09o0qRJ+uGHH9S4cWMfVQZ/RZ9xDwEQbsnOztbGjRv11Vdf6dChQzp27JgiIyN1991367bbblNoaKivS4Sfoc/AE3nP+tu7d6969uypkydPav/+/b4uC36MPlM03AUMt4SHhysuLk5xcXHKyclRUFCQr0uCn6PPwBN5d20ePHhQOTk5euyxx3xcEfwdfaZoGAEEAPg90zR14MABlS5dmnf/okjoMxdGAAQAALAYngMIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMf8PeSlcoje8ML4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 700x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuitET = QuantumCircuit(3) # deux bits d'entrée, un bit de sortie\n",
    "\n",
    "### AJOUTER ICI CE QU'IL FAUT POUR MODIFIER LE CIRCUIT\n",
    "\n",
    "\n",
    "### ET VOICI LE TEST QUI DOIT RENVOYER TRUE\n",
    "validator(2, circuitET, classicset(2,1, lambda x,y,z: (x,y,x*y)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4bec661f",
   "metadata": {},
   "source": [
    "### Porte OU\n",
    "\n",
    "La porte `OU` teste si l'un des deux bits en entrée est à 1.\n",
    "\n",
    "|x|y|OU(x,y)|\n",
    "| :-: | :-: | :-: |\n",
    "|0|0|0|\n",
    "|0|1|1|\n",
    "|1|0|1|\n",
    "|1|1|1|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3f1c0e22",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 621.941x367.889 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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sXPnTuPo0aPGN998U2BMuSN7cofFMAzjDk86mkZ6erqCg4OVlpamoKAgV5cDAC7TqlUrNWvWTHPmzLG21a9fX3369Cn02ZFS/ssGfv94lytXriglJSVf2/jx45WRkaFZs2apdu3a8vHxKbDOixcvqnr16nrzzTc1fPhwx3cMxaZVq1Zq2rSp5s6da22rV6+eHnroIZtj5vcaNGig/v3767XXXrO25eTkqGPHjnriiSe0efNmXbp0Sf/5z3+sy1955RVt3br1po8pclf25A4eAwMAKHYvvvii5s+fr48//lj79+/XCy+8UOBms8GDB1v7591s9s4771hvNjt79qz12Y9+fn5q2LBhvj8hISEKDAxUw4YNreFv/fr1WrdunY4eParY2FhFRkaqTp06euKJJ+78PwKKrDifN3rjjUOF+frrr9W8eXM9+uijKleunMLDwxUdHX17O+LGCIAAgGLXv39/zZw5U6+//rqaNGmihISEIt9sVqFCBeuf5557zq7tpqWladSoUapbt64GDx6sdu3aKSYmRt7e3k7dPzhXcd84dLNAd+TIEc2dO1e1atXS+vXrNWLECD377LPWJ2H8UXAKuBhxChgAAPudPn1alSpV0rZt2/K9H/4f//iHPv30Ux04cOCmn1+yZImGDRumr776yvrIqYyMDDVq1Ehz5szR/fffL0kaOnRogVPAPj4+at68eb6ZxmeffVa7du3S9u3bnbiXzmdP7uAxMAAAwK0Ux/NGDx8+rGPHjql3797WttzcXEmSl5eXDh48qJo1a6pChQoF3klfr149LV++3NHdciucAgYAAG7lxueN3ig2NlZt2rSx+bklS5Zo6NChWrx4cYHnjdatW1c//PCDkpKSrH8efPBBRUZGKikpSVWqVJEktW3bVgcPHsz32UOHDlkvV/ijYAYQAAC4HWe/pSrvxqEbhYSESFK+9hdeeEFt2rTRtGnT1K9fPyUmJmrevHmaN2/eHdjrO4cZQAAA4HZcdeNQixYttHLlSi1ZskQNGzbUlClTNHPmTA0aNMip++dq3ARSjLgJBAAA3Ck8BxAAAAA2EQABAABMhgAIAABgMgRAAAAAkyEAAgAAmAwBEAAAwGQIgAAAACZDAAQAADAZXgV3l3tqpqsrcF/Rz7u6AgAA3BMzgAAAACbDDCBgMswa28asMQCzYAYQAADAZAiAAAAA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/Hjdf//9d7pUuCnDMPTf//5X8+bNU0xMDGPmBgRA2O3w4cPasWOHtm/fLg8PDzVp0kT33nuvKlasqHvuucfUT1ZH4XJycuTh4VFg1jjvpg9u8oC90tLStGnTJh09elQVK1ZUyZIl1aJFC+udnzA34/pj7vL9opmWlqa4uDgdOXKEMSMCIOy0ZMkSvfbaazp8+HC+9hIlSig8PFy9evVS7969rVPpecPL7C/dxnWFfVPOc+OsYHZ2tvWibZjTqlWrtGfPHu3evVsVKlRQ06ZNde+996pKlSq655575Ofn5+oS4WZycnIK/WUyJydHFoul0O87ZkYARJGdOHFCrVu3VsmSJfXSSy+pbdu2OnjwoI4cOaKkpCRt27ZNR48eVZUqVfTss89q1KhR8vPzK/R6QZjDqVOn9Oyzz+rhhx9Wt27dFBoaal2W96gXvinjRpcuXdLUqVP17rvvytvbW1lZWdZlISEhatWqlfr06aM+ffqoQoUKkgq/Jhnm8ftLSmz9onlju2EYysnJMfUvmgRAFNn48eM1d+5cLVq0SL169cq37OLFi9q/f782bNigRYsW6fDhw3r88cf10Ucfmfo/mNlNmjRJr7/+uvz9/VW9enV17dpVvXr1Urt27eTv72/tl5ubq9zcXHl5eSkuLk5XrlxRjx49XFg5XOXNN9/U5MmT1bNnT7344osqV66c9uzZo5SUFCUmJmrbtm06e/asGjVqpPHjx+uRRx5xdclwsblz5youLk6DBw9Wx44d812GxC+athEAUWSdOnXSb7/9prVr16pMmTLKzs6Wh4dHgf9YSUlJGj9+vNauXavXX39dr776qosqhqu1atVKe/fuVYcOHRQfH68rV67Iy8tLLVu2VI8ePdSjRw81b97c2v+3337TY489plWrVikzM5PTfCZUrVo1NWzYUAsXLlTZsmXzLTt37py+//57rVq1SvPnz9fly5f1/vvva9SoUS6qFu6gevXqOn78uHx9fdW4cWNFRUWpZ8+eatWqVb6Z4bxLS65cuaKlS5eqbt26atWqlQsrd7E78awZ3P1+++034+GHHzYqV65snD9/3jAMw8jOzs7X58b3Lf78889G7dq1jdatWxvZ2dk3fecr/phOnjxp1KpVy2jatKlhGIZx5swZ41//+pfRoUMH6/P/QkJCjN69exuzZ882zp49a+zatcuoUKGC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\n",
      "text/plain": [
       "<Figure size 700x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuitOU = QuantumCircuit(3) # deux bits d'entrée, un bit de sortie\n",
    "\n",
    "### AJOUTER ICI CE QU'IL FAUT POUR MODIFIER LE CIRCUIT\n",
    "\n",
    "\n",
    "\n",
    "### ET VOICI LE TEST QUI DOIT RENVOYER TRUE\n",
    "validator(2, circuitOU, classicset(2,1, lambda x,y,z: (x,y,max(x,y))))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5affb66",
   "metadata": {},
   "source": [
    "### Porte XOR\n",
    "\n",
    "La porte `XOR` teste si exactement un deux bits en entrée est à 1.\n",
    "\n",
    "|x|y|XOR(x,y)|\n",
    "| :-: | :-: | :-: |\n",
    "|0|0|0|\n",
    "|0|1|1|\n",
    "|1|0|1|\n",
    "|1|1|0|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "bcc7986f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 621.941x367.889 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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R0RE6LHHHlOTJk3UoUMHLV68WPXq1dM777zjlu3Cc4pzcuLVV19VeHi4nnzyyQLvyc7OVk5OTr7rSCUpKChIGzdudHIvvJufpwuAd3D1g/mLL74o8MEcERFhf92uXTs1b95c77zzjqZPn+7yduFZf/7zn/X444/r3nvvVZs2bfTee+/p6NGjGjZsmCRp9OjROnbsmObPny/p6jgZNGiQpk2bpoiICHvIDwoKUlhYmCQpNjZWERERqlu3rjIyMjR9+nQlJyfr3XfftW93xIgRWrBggb744guFhITY1xMWFqagoKBb+U8AJ7hj1viTTz5xetbYle3Cs4prcmLTpk16//33lZycXOh7QkJC1KZNG02YMEENGzZUhQoVtHDhQm3btk1169a96f3xRswAWpynTufxwXx7e/jhhzV16lS9+uqratq0qZKSkrRixQpVr15dknTixIl8d1nOnj1b2dnZGjFihCpWrGj/89xzz9n7nD9/XkOHDlXDhg0VFRWlY8eOKSkpSa1atbL3mTVrltLT09W5c+d861m0aNGt23k4zVOzxje7XXgPd84aX7hwQY899pji4uJUrlw5h+/96KOPZIxR5cqVFRAQoOnTp2vgwIHy9fV1bWe8TfFdiojb6SaQ4cOH52tr2LDhdW/GWLBggQkMDDSfffZZkbaRm5tr7r33XvPEE0+4tF0At6e8C/rff/9988MPP5hRo0aZ4OBgc/jwYWOMMX/729/M448/bu+/YMEC4+fnZ9599918TxI4f/68vc/48ePNqlWrzIEDB8zOnTvNE088Yfz8/My2bduKvF14J1du4Pn3v/9tgoKCzLJly/K179y500gyvr6+9j82m83YbDbj6+tr9u/fn6//L7/8Yo4fP26MuXpjSM+ePd2wZ8WLu4C9xO0SAPlgBnArvPvuu6Z69eqmRIkSpnnz5vke4B0dHW06depkf92pU6dCH/IcHR1t7zNq1ChTrVo1U6JECRMeHm6ioqIK3J1+o+3Ce7l7cuLixYvmu+++y/enT58+pkuXLua7774zly9fLnSdZ8+eNWFhYWb27Nku7c+tQAD0ErdLADSGD2YAgHcpjsmJ34qOji7wGJhVq1aZlStXmoMHD5r4+HjTpEkT06pVK3PlypVi2U93ciZ32Iwx5pafd7aIjIwMhYWFKT09XaGhoZ4uBwCA28rMmTM1ZcoUnThxQnfddZfefvttdezYUZI0ePBgHT58WAkJCZKkzp07KzExscA6oqOjNW/evELXP3jwYJ0/f16ff/65vW3x4sUaPXq0UlNTVbZsWfXr109///vf7TeseTNncgcBsBgRAAEAwK3iTO7gLmAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMX4eboAALfWU1M9XYH3ihvl6QoA4NZgBhAAAMBimAEEAFwXs8aOMWuM2xUB8DbHB7NjfDADAFA4AiAAAHArJicK500TE1wDCAAAYDEEQAAAAIshAAIAAFgMARAAAMBivDYAfv311+rZs6fKlCmj4OBgtWrVSgsWLCjy+zdu3Ki//OUvatGihe644w4FBgaqQYMG+utf/6rz588XaR1TpkyRzWaTzWbT1q1bb3JPAAAAvItX3gWckJCg7t27q0SJEhowYIDCwsK0dOlSPfroozp8+LDGjBlzw3U8+OCDSktLU/v27TVo0CDZbDYlJCRoypQpWrJkiTZv3qzy5cs7fP+PP/6oV155RcHBwcrMzHTn7gEAAHiU1wXA7OxsDRkyRDabTUlJSWrWrJkkKSYmRm3atFFMTIweeugh1a1b97rref755zVo0CBVrFjR3maM0YgRIzRr1izFxsbq3XffLfS9OTk5io6OVpMmTVSvXj19/PHH7ttBAAAAD/O6U8Dr1q3TgQMHNHDgQHv4k6SQkBCNGzdO2dnZmjt37g3X89e//jVf+JMkm82mcePGSZISExMdvnfy5MnatWuXPvjgA/n6+t7kngAAAHgnrwuACQkJkqSoqKgCy/LarhfebsTf31+S5OdX+OTn7t27FRsbq7Fjx6px48Y3vR0AAABv5XWngFNSUiSp0FO8ZcqUUbly5ex9bsYHH3wgqfCAmZ2drcGDB6thw4b629/+5vS6L1++rMuXL9tfZ2RkSJKysrKUlZUlSfLx8ZGvr69ycnKUm5tr75vXnp2dLWOMvd3X11c+Pj4O2+FY3r+5dHX218/PT7m5ucrJySnQ7uh4uOs4XVuL9H+/gGRnZxep3d/f32Htzu4THPOm4+RNYw+OedNx8qax54XzS16jOI+TM7wuAKanp0uSwsLCCl0eGhqq1NTUm1p3cnKyYmNjVb58eb300ksFlr/22mvatWuXtm3bdlMfepMmTVJsbGyB9vj4eJUsWVKSVK1aNTVr1kzffvutjh49au9Tv359NWjQQNu3b9eZM2fs7U2bNlX16tWVlJSkCxcu2NvbtGlz3ZtYIK1YscL+95CQEHXp0kU//fSTkpOT7e3h4eFq27atUlJStHfvXnu7u49TfHx8vg/syMhIBQUF5atRknr27KmLFy9q/fr19jY/Pz/16tVLaWlp2rJli8v7BMe86Th509iDY950nLxp7En8fHKkOI9TpUqVilyHzVwb271AVFSU1qxZo5SUFNWpU6fA8tq1ays1NTXfTFtRHDp0SB06dFBaWppWrlypyMjIfMt37dqlli1b6i9/+YsmTZpkbx88eLA+/PBDbdmyRREREdfdRmEzgFWrVlVaWppCQ0Mluf+3e75v0bGZI5gBLKx2xoxj144Z6fafhXHX2GPMOPbPkd5znLxp7D09nRnAwsSNKt4ZwMzMTIWFhSk9Pd2eOxzxuhnAvJm/vJnA38rIyHA4O+jIkSNHFBkZqTNnzmjJkiUFwp8kRUdHq3bt2ho/frzTNecJCAhQQEBAgXZ/f/8CM4q+vr6Fno5zdG2io3Y4Vtgsro+PT6HT5I6Oh7uOk6MZZWfaHdXu7D7BMW86Tt409uCYNx0nbxt7KFxxH6ci13HT7ywmedf+FXad37lz55SWlnbDR8Bc6/Dhw+rcubOOHz+uxYsX6/777y+0365du7Rnzx4FBgbaH/5ss9n04YcfSro6pW2z2fT55587v1MAAABexOtie6dOnTRp0iTFx8drwIAB+ZbFx8fb+xTFteFv0aJF6tOnj8O+Tz75ZKHtSUlJSklJ0QMPPKDw8HDVqFGjaDsCAADgpbwuAHbt2lW1atXSggUL9Oyzz6pp06aSpAsXLmjChAny8/PT4MGD7f3T0tKUlpamcuXKqVy5cvb2vPB37NgxLVq0SH379r3udufMmVNo++DBg5WSkqLRo0ff8BpAAACA24HXBUA/Pz/NmTNH3bt3V4cOHfTII48oNDRUS5cu1aFDhzRx4kTVq1fP3n/GjBmKjY1VTExMvuv3OnfurCNHjigiIkLffvutvv322wLbcuV6PwAAgNuV1wVA6ert7xs3blRMTIwWL16sK1euqHHjxpowYYIeffTRIq3jyJEjkqStW7dq69athfYhAAIAACvyygAoSa1atdLKlStv2G/8+PGFBjl3Pd1m3rx5mjdvnlvWBQAA4A287i5gAAAAFC8CIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFuNXHCs9dOiQvvrqKwUFBalv374KDg4ujs0AAADgJrg0Azh58mTVrVtX586ds7clJCTo7rvv1rBhwxQdHa0WLVrkWw4AAADPcikAfvHFF6pcubLKlCljb3vxxReVm5ur2NhYDR8+XPv27dO0adNcLhQAAADu4VIAPHjwoBo3bmx//dNPP2nHjh0aMWKExo4dqxkzZqhr165asmSJy4UCAADAPVwKgOfPn1fp0qXtrzdu3CibzabevXvb25o3b66jR4+6shkAAAC4kUsBsEKFCjpy5Ij99Zo1axQQEKDWrVvb2y5duiSbzebKZgAAAOBGLt0F3LJlS33xxRdavny5AgMDtXjxYnXu3FkBAQH2PgcPHlSlSpVcLhQAAADu4dIM4JgxY5Sdna0HHnhAUVFRunTpkkaPHm1ffuHCBa1fvz7fjCAAAAA8y6UZwObNm2vr1q366KOPJEkPPvigIiIi7Mt37dqlbt26aeDAga5VCQAAALdx+UHQTZo0UZMmTQpd1r59e7Vv397VTQAAAMCN3PZNIL/88ov27dunzMxMdejQwV2rBQAAgJu5/F3Ahw8fVp8+fVSmTBm1bNlSkZGR9mWbNm1So0aNlJCQ4OpmAAAA4CYuBcCjR48qIiJCK1asUJ8+fdSmTRsZY+zLW7durbS0NC1cuNDlQgEAAOAeLgXAmJgYnTt3TomJifr000/VrVu3fMv9/PzUoUMHbdq0yaUiAQAA4D4uBcDVq1erb9++atu2rcM+1apV07Fjx1zZDAAAANzIpQB49uxZ1ahR44b9Ll++7MpmAAAA4EYufxXc/v37r9tn9+7dqlatmiubAQAAgBu5FAC7deum//znP9q9e3ehyzds2KC1a9eqZ8+ermwGAAAAbuRSABw7dqyCgoLUvn17vfbaa/bZwJUrV2rcuHHq0aOHypUrpxdffNEtxQIAAMB1Lj0IukaNGlq9erUGDBigsWPHymazyRij+++/X8YYVatWTZ9++qkqVqzornoBAADgIpe/CaR169ZKSUnRf/7zH23btk1nz55VaGioWrdurT59+qhEiRLuqBMAAABu4pavgvPz81Pfvn3Vt29fd6wOAAAAxcjlr4IDAADA7cWpGcD58+dLkvr27auQkBD766IYNGiQc5UBAACgWDgVAAcPHiybzaaIiAiFhITYX1+PMUY2m40ACAAA4CWcCoAffPCBbDab/a7euXPnFktRAAAAKD5OzwBeKzo62p21AAAA4BZw6SaQpKQkHT169Lp9UlNTlZSU5MpmAAAA4EYuBcDIyEjNmzfvun3+9a9/KTIy0pXNAAAAwI1cCoDGmBv2yc3NveGNIgAAALh1iv05gCkpKQoLCyvuzQAAAKCInP4mkD/+8Y/5Xn/++ec6fPhwgX45OTn26/969Ohx0wUCAADAvZwOgNde82ez2ZScnKzk5ORC+9psNrVs2VJvv/32zdYHAAAAN3M6AB46dEjS1ev/atWqpVGjRum5554r0M/X11dlypRRcHCw61UCAADAbZwOgNWrV7f/fe7cuWratGm+NgAAAHg3pwPgtXgQNAAAwO3HqQCY90DnVq1aKTAw0KkHPHfs2NG5ygAAAFAsnAqAnTt3ls1m048//qh69erZXxdFTk7OTRUIAAAA93IqAL7yyiuy2WwqV65cvtcAAAC4fTgVAMePH3/d1+709ddfKyYmRlu2bNGVK1fUuHFjjRo1SgMHDizS+0+fPq33339fO3bs0I4dO+zPKizKt5d89tlnmjlzpr755hv9+uuvuvPOOxUREaEpU6aoatWqruwWAACAx7l0E0hxSUhIUPfu3VWiRAkNGDBAYWFhWrp0qR599FEdPnxYY8aMueE6fvjhB40ZM0Y2m01169ZVyZIl9euvv173PcYYDRs2TO+9955q166tAQMGKCQkRMePH1di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AAAAFuPydwFLUmpqqtavX6/jx4/r8uXLBZbbbDaNGzfOHZsCAACAi1wOgC+++KKmTZumnJwce5sxxn7jR97fCYAAAADewaVTwHFxcXrzzTcVGRmpTz/9VMYYRUdHa+HChRo2bJj8/Pz04IMP8j3AAAAAXsSlGcD33ntPNWrU0MqVK+XjczVL1qhRQw8//LAefvhh9e/fX926dVP//v3dUiwAAABc59IM4J49e9SjRw97+JOuPg8wT6dOndSrVy++CQQAAMCLuHwXcOnSpe1/Dw4O1s8//5xvef369fX999+7uhkAAAC4iUsBsHLlykpNTbW/rl27trZt25avz+7duxUcHOzKZgAAAOBGLgXAdu3aaevWrfbXffr00c6dOzVs2DAtX75co0eP1sqVK9WxY0eXCwUAAIB7uHQTyOOPP67jx4/ryJEjql69ul588UUtW7ZM7733nuLi4mSMUY0aNfSPf/zDXfUCAADARS4FwM6dO6tz587216VKldLWrVv1xRdf6MCBA6pevbp69+7NKWAAAAAv4pZvArmWv7+/HnzwQXevFgAAAG7itgCYnZ2tffv2KT09XWFhYapXr578/NyeLwEAAOAilx8Dc+bMGT311FMqXbq07r77brVv31533323SpcuraFDh+rMmTPuqBMAAABu4tIU3bFjx9SuXTsdPXpU4eHh6tixoypUqKBTp05px44dmjNnjtasWaONGzeqcuXK7qoZAAAALnBpBvCll17S0aNHFRsbqyNHjmjFihWaO3euVqxYoSNHjmj8+PE6cuSI/vrXv7qrXgAAALjIpRnAVatWqUePHho3blyBZYGBgXrllVe0efNmrVy50pXNAAAAwI1cmgG8cuWKmjdvft0+LVq00JUrV1zZDAAAANzIpQDYokUL7dmz57p99uzZoxYtWriyGQAAALiRSwFwwoQJWrZsmebNm1fo8g8++EArVqzQxIkTXdkMAAAA3MipawBfffXVAm2RkZF68sknNWXKFLVr107ly5fX6dOntWnTJu3du1dRUVFav3692rdv77aiAQAAcPOcCoDjx493uGzPnj2Fng5evXq14uPjC71RBAAAALeeUwFw/fr1xVUHAAAAbhGnAmCnTp2Kqw4AAADcIi5/FRwAAABuLy49CDrP5s2bNW/ePCUnJys9PV2hoaFq1qyZBg0axM0fAAAAXsbl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\n",
      "text/plain": [
       "<Figure size 700x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuitXOR = QuantumCircuit(3) # deux bits d'entrée, un bit de sortie\n",
    "\n",
    "### AJOUTER ICI CE QU'IL FAUT POUR MODIFIER LE CIRCUIT\n",
    "\n",
    "\n",
    "### ET VOICI LE TEST QUI DOIT RENVOYER TRUE\n",
    "validator(2, circuitXOR, classicset(2,1, lambda x,y,z: (x,y,x^y)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3ad8860",
   "metadata": {},
   "source": [
    "## 2. Produit scalaire booléen\n",
    "\n",
    "Pour l'algorithme de Bernstein-Vazirani étudié plus loin dans le cours, nous aurons besoin d'un circuit qui calcule le produit scalaire entre une suite de $k$ bits $x_1, x_2, \\ldots, x_k$ fournis en entrée et une chaîne constante $s_1, s_2, \\ldots, s_k$ choisie une fois pour toute. Plus précisemment, le circuit attendu prend en entrée les bits $x_1, x_2, \\ldots, x_k, y$ et retourne en sortie $x_1, x_2, \\ldots, x_k, z$ avec\n",
    "$$\n",
    "z = y\\cdot x_1\\cdot s_1 \\oplus x_2\\cdot s_2 \\oplus \\cdots \\oplus x_k\\cdot s_k\n",
    "$$\n",
    "\n",
    "Par exemple, sur 3 bits :\n",
    " - si $(s_1,s_2,s_3) = (1,0,1)$ alors $z = y \\oplus x_1 \\oplus x_3$ ;\n",
    " - si $(s_1,s_2,s_3) = (0,0,1)$ alors $z = y \\oplus x_3$ ;\n",
    " - si $(s_1,s_2,s_3) = (1,1,1)$ alors $z = y \\oplus x_1 \\oplus x_2 \\oplus x_3$.\n",
    " \n",
    " \n",
    " Vous devez écrire une fonction `circuitProduit(s)` qui reçoit en entrée la liste des valeurs $s_1, s_2, \\ldots, s_k$ et qui retourne un circuit à $k+1$ qubits qui calcule le produit scalaire entre son entrée et la suite $(s_i)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b83d840a",
   "metadata": {},
   "outputs": [],
   "source": [
    "### COMPLETER LA FONCTION circuitProduit POUR QU'ELLE PASSE LES TESTS DE VALIDATION !\n",
    "\n",
    "def circuitProduit(s):\n",
    "    k = len(s)\n",
    "    circuit = QuantumCircuit(k+1)\n",
    "    ### AJOUTER ICI CE QU'IL FAUT AU CIRCUIT !\n",
    "    return circuit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "cfcd8aa1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 705.552x451.5 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHTCAYAAAC3P6nnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPt0lEQVR4nO3deXQUVf7+8aeysGUD2UE2ZVFR2WQnYESCwrC4gYJDGEUUHRQc8SuKAoIiOjrqMCiGEVQEddRxRhYJIBB2GCUgyBL2fQlgEpAlSd/fH/3rJiEJJHR3upN6v87JOeRWpeveD1WVJ7erqyxjjBEAAABsI8jfHQAAAEDRIgACAADYDAEQAADAZgiAAAAANkMABAAAsBkCIAAAgM0QAAEAAGwmxN8dKMkcDocOHTqkiIgIWZbl7+4AAIASzBij9PR01ahRQ0FBl5/jIwD60KFDh1SrVi1/dwMAANjI/v37de211152HQKgD0VEREhy/kdERkb6uTcAAKAkS0tLU61atdz543IIgD7kets3MjKSAAgAAIpEQS4740MgAAAANkMABAAAsBkCIAAAgM0QAAEAAGyGAAgAAGAzBEAAAACbIQACAADYDAEQAADAZgiAAAAANkMABAAAsBkCIAAAgM0QAAEAAGyGAAgAAGAzBEAAAACbIQACAADYDAEQAADAZgiAAAAANkMABAAAsBkCIAAAgM0QAAEAAGyGAAgAAGAzBEAAAACbIQACAADYDAEQAADAZgiAAAAANkMABAAAsBkCIAAAgM0QAAEAAGyGAAgAAGAzBEAAAACbIQACAADYDAEQAADAZgiAAAAANkMALOYmT56sevXqqUyZMmrRooWWLVuW77qHDx9Wv3791KhRIwUFBWnYsGG51omPj1d0dLQqVKigChUq6M4779TatWtzrFO3bl1ZlpXr66mnnvL28FAI7AsAgIIiABZjX375pYYNG6aXXnpJ69evV3R0tO6++27t27cvz/XPnz+vypUr66WXXlKTJk3yXGfJkiV66KGHtHjxYq1atUq1a9dWbGysDh486F5n3bp1Onz4sPtrwYIFkqQHHnjA+4NEgbAvAAAKwzLGGH93oqRKS0tTVFSUUlNTFRkZ6fXXb926tZo3b64PPvjA3XbjjTeqd+/emjBhwmV/9vbbb1fTpk317rvvXna9rKwsVahQQZMmTdKAAQPyXGfYsGGaPXu2kpOTZVlWoccBz7EvAAAKkzuYASymLly4oJ9++kmxsbE52mNjY7Vy5Uqvbef3339XRkaGrrnmmnz7MWPGDD3yyCP8wvcT9gUAQGERAIuplJQUZWVlqWrVqjnaq1atqiNHjnhtOy+88IJq1qypO++8M8/l3333nX777TcNHDjQa9tE4bAv5OSPayHHjBmT6zrIatWqeXtoAOA1BMBi7tKZFmOM12Zf3nzzTc2aNUvffvutypQpk+c6//znP3X33XerRo0aXtkmrh77gv+uhZSkxo0b57ge8pdffvH6+AqDIAzkxDGREwGwmKpUqZKCg4NzzfAcO3Ys10zQ1fjrX/+q119/XQkJCbr11lvzXGfv3r1auHChBg0a5PH2cPXYFy5655139Oijj2rQoEG68cYb9e6776pWrVo5ro3Mrm7dunrvvfc0YMAARUVF5bnO559/rieffFJNmzbVDTfcoPj4eDkcDi1atCjHeiEhIapWrZr7q3Llyl4fX0ERhJGdP4JPdhMmTJBlWXm+VlHhmMiNAFhMlSpVSi1atHB/6tJlwYIFateunUev/dZbb2ncuHH64YcfdNttt+W73rRp01SlShV1797do+15yu4nN/YFJ39fC5mcnKwaNWqoXr16evDBB7Vr1y6vbbOwCMJOdj83SP4NPpLzTgEfffRRvn88FhWOidwIgMXYs88+q6lTp+rjjz/Wli1bNHz4cO3bt09PPPGEJGnkyJG5Pq2ZlJSkpKQknT59WsePH1dSUpJ+/fVX9/I333xTo0aN0scff6y6devqyJEjOnLkiE6fPp3jdRwOh6ZNm6a4uDiFhIT4frD54OTmxL7g32shW7durU8//VTz589XfHy8jhw5onbt2unEiRNe225BEYSdODc4+TP4nD59Wv3791d8fLwqVKjg9bEVFMdEPgx8JjU11UgyqampPtvGP/7xD1OnTh1TqlQp07x5c7N06VL3sri4ONOpU6cc60vK9VWnTh338jp16uS5zujRo3O8zvz5840ks23bNp+NrSBatWplnnjiiRxtN9xwg3nhhReu+LOdOnUyzzzzzBXXy8zMNBEREeaTTz7J0Z6enm4aNGhgFixYUODX8iW77wsHDx40kszKlStztI8fP940atToij9fkP/DiRMnmgoVKpgNGzZcdr3Tp0+bqlWrmrfffvuK2/U2Vx1WrFiRo/21114zDRs2vOLPF3RffvLJJ831119vzp49626bO3eu+frrr83GjRvdx0XVqlVNSkpKocfhKc4Nxpw/f94EBwebb7/9Nkf7008/bTp27HjFny9o39PS0kyZMmXM999/n6N9wIABZtiwYYV6LV+w0zFRmNzhvz/X4RVPPvmknnzyyTyXTZ8+PVebucJtH/fs2VOg7cbGxl7xtXzN9VfdCy+8kKO9qP6qe+qpp9S9e3fdeeedGj9+vNe2d7XsvC9IRXct5MKFC684qxMWFqZbbrlFycnJHm/3ahXFh4KWLFmS40NBd999t/vft9xyi9q2bavrr79en3zyiZ599lmvbLsgODc4+XNW/IsvvtDPP/+sdevWeW07nrLzMZEXAiCKLU5uyC77tZD33HOPu33BggXq1auXR6/91ltvafz48Zo/f/5lr4V0OX/+vLZs2aLo6GiPtns1CMKcGy5V1MFn//79euaZZ5SQkJDvXQOKEsdE3rgGEMVeUd/+xHVymzFjRkCc3HCRv66FfO6557R06VLt3r1ba9as0f3336+0tDTFxcUVzcCzCYQPBbm4gnD16tU92u7Vsvu5wV93CPjpp5907NgxtWjRQiEhIQoJCdHSpUv1/vvvKyQkRFlZWR5vuzA4JvLhkzehYYwpmmsA7czX17e89dZbJioqyqxbty5H+7///W8jyQQHB7u/JBnLskxwcLDJzMy8qvHAO/xxLWTfvn1N9erVTWhoqKlRo4a59957zebNm3080vx98cUXJjQ01Pzzn/80v/76qxk2bJgJCwsze/bsMcYY88ILL5g//vGPOX5m/fr1Zv369aZFixamX79+Zv369TnGMHHiRFOqVCnz9ddfm8OHD7u/0tPT3ev85S9/MUuWLDG7du0yq1evNn/4wx9MRESEe7tFhXPDRa1atTJDhgzJ0XbjjTd6fC3km2++aSIjI82qVatyLUtLSzO//PJLjq/bbrvNPPzww+aXX365qnF4yi7HRGFyBwHQhwiAvsfJDcib3YMw5wYnfwWfS9n1g3JFfUwQAAMEAdD3OLkByAvnhov8dYeA7AKhDnZAAAwQBMCiwckNQF44N8BuCpM7LGMC4P4NJVRaWpqioqKUmpqqyMhIf3cHAACUYIXJHXwKGAAAwGYIgAAAADZDAAQAALAZAiAAAIDNEAABAABshgAIAABg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YDMEQAAAAJshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAAJshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAAJshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAAJshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAAJshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAAJshAAIAANgMARAAAMBmQnzxort379bChQtVtmxZ3XPPPQoLC/PFZgAAAHAVPJoBnDhxoho0aKBTp06525YsWaJbbrlFTzzxhOLi4tSiRYscywEAAOBfHgXA//znP6pZs6YqVKjgbhsxYoQcDofGjh2rIUOGaPv27Xrvvfc87igAAAC8w6MAuGvXLjVu3Nj9/f79+/XTTz/pqaee0qhRozRp0iR17txZ33zzjccdBQAAgHd4FAB/++03lS9f3v398uXLZVmWevTo4W5r3ry59u3b58lmAAAA4EUeBcCqVatq79697u8XLFig0qVLq3Xr1u62c+fOybIsTzYDAAAAL/LoU8AtW7bUf/7zH82ZM0dlypTRV199pdtvv12lS5d2r7Nr1y7VqFHD444CAADAOzyaAXzxxReVmZmpnj17KjY2VufOndPIkSPdy9PT07V48eIcM4IAAADwL49mAJs3b67Vq1frs88+kyTdf//9atOmjXv5hg0b1KVLF/Xr18+zXgIAAMBrPL4RdJMmTdSkSZM8l3Xo0EEdOnTwdBMAAADwIq89CeT06dPavn27zpw5o+joaG+9LAAAALzM42cB79mzR7169VKFChXUsmVLxcTEuJetWLFCN910k5YsWeLpZgAAAOAlHgXAffv2qU2bNpo7d6569eqltm3byhjjXt66dWulpKRo1qxZHncUAAAA3uFRABw9erROnTqlpUuX6uuvv1aXLl1yLA8JCVF0dLRWrFjhUScBAADgPR4FwPnz5+uee+5Ru3bt8l2ndu3aOnjwoCebAQAAgBd5FABPnjypunXrXnG98+fPe7IZAAAAeJHHj4LbsWPHZdfZtGmTateu7clmAAAA4EUeBcAuXbro+++/16ZNm/JcvmzZMi1atEjdunXzZDMAAADwIo8C4KhRo1S2bFl16NBBr7/+uns2cN68eXr55Zd11113qVKlShoxYoRXOgsAAADPeXQj6Lp162r+/Pl68MEHNWrUKFmWJWOM/vCHP8gYo9q1a+vrr79W9erVvdVfAAAAeMjjJ4G0bt1aycnJ+v7777VmzRqdPHlSkZGRat26tXr16qVSpUp5o58AAADwEq88Ci4kJET33HOP7rnnHm+8HAAAAHzI40fBAQAAoHgp1Azgp59+Kkm65557FBER4f6+IAYMGFC4ngEAAMAnChUABw4cKMuy1KZNG0VERLi/vxxjjCzLIgACAAAEiEIFwI8//liWZbk/1Ttt2jSfdAoAAAC+U+gZwOzi4uK82RcAAAAUAY8+BJKYmKh9+/Zddp0DBw4oMTHRk80AAADAizwKgDExMZo+ffpl1/n8888VExPjyWYAAADgRR4FQGPMFddxOBxX/KAIAAAAio7P7wOYnJysqKgoX28GAAAABVToJ4E88sgjOb7/7rvvtGfPnlzrZWVlua//u+uuu666gwAAAPCuQgfA7Nf8WZalpKQkJSUl5bmuZVlq2bKl/va3v11t/wAAAOBlhQ6Au3fvluS8/u+6667TsGHD9Mwzz+RaLzg4WBUqVFBYWJjnvQQAAIDXFDoA1qlTx/3vadOmqWnTpjnaAAAAENgKHQCz40bQAAAAxU+hAqDrhs6tWrVSmTJlCnWD544dOxauZwAAAPCJQgXA22+/XZZlacuWLWrYsKH7+4LIysq6qg4CAADAuwoVAF955RVZlqVKlSrl+B4AAADFR6EC4JgxYy77PQAAAAKfz58EcrXWrVunbt26uW8l06pVK82cObNQr+FwODRp0iTdeuutKlu2rCpXrqw+ffooOTk5z/WNMfr2228VExOj6tWrq1y5cmrUqJEef/xx7dq1yxvDAgAA8LuADIBLlixRhw4dtGzZMt1///0aMmSIUlJS1L9/f73++usFfp0nnnhCQ4cOVVZWloYOHapu3brpv//9r1q2bKlff/011/rPPfec7rvvPm3btk29e/fW0KFDVa9ePcXHx6tp06batGmTN4cJAADgF4V6C/iOO+64qo1YlqVFixYVaN3MzEwNGjRIlmUpMTFRzZo1kySNHj1abdu21ejR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cDgcuX6Zbdq0ydSrV89UqVLFJCcnF3lffYUaOFEHJ+pw0dixY03lypXNggULjDHGZGZm5lpn1apVpn///sayLHPTTTeZdevWGWNyh+biiho4UQenkliHAH+DGr7SqFEjXbhwQfv375ckhYaGSnJe0J79GobMzEw1btxY48aN0/Hjx7Vq1Sq/9dnbqIETdXCiDhdt2rRJ4eHhql+/fo52h8PhviVOmzZtNGPGDH322WfasmWLXn31VUkl50Mx1MCJOjiVxDoQAG2qfv36uuWWW/Tmm28qPj5eqampudYJCgpy77gNGzZUuXLltGPHjqLuqs9QAyfq4EQdLmrevLn27NmjEydOSJKCg4MlOcfvCsNZWVnKzMxU//791bdvXyUlJWnLli1+67O3UQMn6uBUEutAALSpqKgovfHGGzp79qyefvppvfbaa/rf//6nM2fO5FjPtZNv3rxZZ8+eVevWrf3RXZ+gBk7UwYk6XBQdHS3LsjRo0CAtXLhQZ8+ezbVOUFCQuxaNGjVSSkpKnusVV9TAiTo4lcg6+Ps9aPhXYmKi6dixowkKCjI1atQwf/rTn8zMmTPN6tWrzbZt20xqaqqZN2+eadSokbnuuuv83V2foAZO1MGJOji98MILxrIsc91115m3337bbN261Zw9ezbXeqmpqWbAgAGmYsWKfuilb1EDJ+rgVNLqQAC0qaysLPeFqRs2bDBjx441t912mylVqpSxLMtUr17d1K5d21SpUsVYlmXq1q1rZs6c6ede+86mTZvMq6++assasC/kZuf9Ibvp06ebRo0aGcuyTIMGDczTTz9tvv76a7NixQqzbds2c/DgQTNixAgTFhZmhg0b5u/u+gQ1cKIOTiWpDtwIGm6//vqr1q5dq82bN2vv3r3as2ePLly4oG7duikuLk6NGjXydxd9bvv27VqzZo02btxo2xpI7Asudt0fMjMzFRISooyMDC1btkz//e9/NX/+fCUnJ0uSKlWqpAsXLuj8+fM6e/as+vTpo7feeku1atXyc8+9xxgjy7KUlZWl5cuX69///rftaiCxL7iUxP2BAGhDJ0+e1O7du2VZln7//XfVqFFD1113nXt5RkaGzp49q8jISGVkZLg/DVmSuQ5ul8zMTJ07d07h4eElugbsC3mz6/6Qn8zMTG3YsEE//fSTtm/frsOHD2vnzp2qXbu2unfv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9NNPvuxakaIOuWVmZprp06e7P+nauHFjM3z4cPOvf/3LbN682T3zdeDAAfPggw+a4ODgElcLauCUnp5uzp8/n+eyS4+dp556yliWZdavX18EPStadqwD9wEsgcz/v1/Xnj17VKtWLQUHB+vEiRNasGCBFi5cqLVr12rz5s0yxqh+/fpq2rSp3nzzTdWtW9ffXfcaauDkqsPBgwdVvXr1HPe0yszMVFBQkLvt0KFDuvvuu7Vv3z6dOnXKX132CeqQt+PHj2vSpEn66quvtH37dpUrV041a9ZUeHi4rrnmGm3dulXHjx/XI488on/84x/+7q5PUIPLcx07O3fuVN++fZWamqrk5GR/d6vIlcQ6EABLkAsXLmjZsmWKj4/Xjh07ZIxR2bJl1aJFCz300ENq06aNJOeOfOLECe3YsUM33HCDypcv724v7jd6pQZO+dWhadOm6tOnjzp27JjrZ37//Xf98MMPKlWqlP7whz/4odfeRx3yZoyRw+FQcHCwzp49q+TkZK1bt04rVqzQmjVrtHXrVlWuXFm1a9fWo48+qocffrjEPQaPGhTO7Nmz1bNnT40YMUITJ070d3f8pkTVoSinG+Fbb7zxhomMjDSWZZmbbropx6caLcsy1113nXnrrbfMgQMH3D9T0m5uSQ2crlSHunXrmjfeeMMcPHgwx8+VlNvfuFCHgsvKyjJnzpwxGRkZJiUlxWzatMnfXSpydqxBQff1I0eOmOnTp5sTJ074uEf+Ycc6EABLiJ07d5py5cqZTp06mb1795ojR44YY5yffoyPjzd33323+5de+/btzfLly/3cY++jBk6FrcPKlSv93GPfoA4X/f7772br1q25nnpijDP0ZP/ld+kvwpLyBxI1cLpcHa7kctfNFjfUgQBYYrzyyiumatWqZtGiRe62S09imzZtMo888ogpW7asqV+/frG+g3leqIGTJ3UoSTNf1OGiCRMmmNtuu828/vrr5scffzQHDx7M88bo2cf922+/lajgQw2cClKHS/32228lJvS4UAcCYIlx7733mnr16pm9e/caYy7e3NjhcOTaYT/44ANjWZbp169fkffTl6iBE3Vwog4XuW53EhISYipWrGh69Ohh/v73v5u1a9e6H5WY3enTp81rr71mxo4dW2LCMDVw8qQOJSkMUwcCYIkxbtw4Y1nWZa9Zyf42R9++fU2tWrVK1FMvqIETdXCiDk7btm0z4eHhpl27dmbSpEmmV69epkqVKsayLFOnTh0TFxdnPvvsM7Np0yZz6tQpY4wxq1atMuHh4aZ3797+7byXUAMn6uBEHZwIgCXEihUrjGVZpkmTJmbRokV53s8o+8zHqFGjTNmyZU1SUlJRd9VnqIETdXCiDk7ff/+9CQkJcT8Scc+ePWb+/PlmzJgxpmPHjiY8PNyEhISYW2+91QwbNsz88MMP7vsgFufHXGVHDZyogxN1cCIAlhCZmZnmL3/5i7Esy9x4443uB9rn5eTJkyYuLs5Urly5iHvpW9TAiTo4UQenf/3rX8ayLPPll1/maL9w4YJJTk42X3/9tXnmmWdMkyZNTKlSpUxYWJgpV65ciXoMHjVwog5O1MGJAFjCfPjhh+b66683lmWZmjVrmj//+c9mzpw5ZuPGjWbz5s3m4MGD5oUXXjBlypQxf/nLX/zdXZ+gBk7UwcnudXA4HObXX381u3btcn9/qdOnT5uff/7ZzJo1y8TGxhrLsszQoUOLuqs+Qw2cqIMTdXAiAJYwDofDbN++3YwYMSLHw6urVq1qrr32WhMcHGwsyzIPPfSQ2b9/v7+76xPUwIk6OFGH/OX1i2/o0KHGsizz888/+6FHRY8aOFEHJzvVgSeBlGBnzpzR2rVr9d///leHDh3SsWPHFBkZqb59++ree+9VmTJl/N1Fn6MGTtTBiTrkzeFwKCgoSHv27FGvXr106tQp7du3z9/dKlLUwIk6ONmhDiH+7gB8JywsTDExMYqJiVFGRoZCQ0P93aUiRw2cqIMTdcib6znIBw8eVEZGhp588kk/96joUQMn6uBkhzowAwgAkOR8Pu6BAwd0zTXX2Pa5t9TAiTo4leQ6EAABAABsJsjfHQAAAEDRIgACAADYDAEQAADAZgiAAAAANkMABAAAsBkCIAAAgM0QAAEAAGyGAAgAAGAzBEAAAACb+X+2gMiGnLnPXwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 700x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Circuit incorrect pour le vecteur [1, 0, 1]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def testscal(s):\n",
    "    k = len(s)\n",
    "    def aux(*xs):\n",
    "        y=xs[k]\n",
    "        for i in range(k):\n",
    "            if s[i] == 1:\n",
    "                y ^= xs[i]\n",
    "        return [*xs[:-1],y]\n",
    "    return aux\n",
    "\n",
    "check = True\n",
    "for ss in ['101', '00', '001', '111', '10111']:\n",
    "    s = list(map(int,ss))\n",
    "    k = len(s)\n",
    "    circ = circuitProduit(s)\n",
    "    outset = classicset(k,1,testscal(s))\n",
    "    check = validator(k, circ, outset)\n",
    "    if not check:\n",
    "        print('Circuit incorrect pour le vecteur', s)\n",
    "        break\n",
    "check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f5adb446",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "qiskitenv",
   "language": "python",
   "name": "qiskitenv"
  },
  "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.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}