From 6c79a06460195d257d0462498d12e34a970ad6af Mon Sep 17 00:00:00 2001 From: Ofir Date: Wed, 7 Jan 2026 21:31:57 -0500 Subject: [PATCH 1/4] attached is my first sampling assigment --- .../a1_sampling_and_reproducibility.ipynb | 389 +++++++++++++++++- 1 file changed, 378 insertions(+), 11 deletions(-) diff --git a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb index 11852458..63a035b0 100644 --- a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb +++ b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb @@ -9,42 +9,85 @@ "\n", "The code at the end of this file explores contact tracing data about an outbreak of the flu, and demonstrates the dangers of incomplete and non-random samples. This assignment is modified from [Contact tracing can give a biased sample of COVID-19 cases](https://andrewwhitby.com/2020/11/24/contact-tracing-biased/) by Andrew Whitby.\n", "\n", - "Examine the code below. Identify all stages at which sampling is occurring in the model. Describe in words the sampling procedure, referencing the functions used, sample size, sampling frame, any underlying distributions involved. \n" + "\n" ] }, { "cell_type": "markdown", - "id": "4ea73db3", + "id": "85c70f56", "metadata": {}, - "source": [] + "source": [ + "*Explanation/summary of the article (for my use, to ensure I understood the argument  before deciphering the code)*\n", + "- Whitby critiques the NYT article, arguing that small gatherings are not the primary cause of surges in Covid-19 infections. \n", + "- Only a small proportion of infections can be identified through contact tracing.\n", + "- Contact tracing does not provide a random sample and, therefore, is not representative of the overall situation.\n", + "- It is easier to trace infections from institutions or events that regularly document data compared to private gatherings, restaurants, supermarkets, etc.\n", + "- There is also a comment on the limitations of small sample sizes.\n", + "- Whitby presents a model based on a sample of 1,000 participants: 200 attended two weddings, while the other 800 participated in 80 branches, all occurring simultaneously. He initially determines a constant infection coefficient of 0.1 for all 82 events.\n", + "- To introduce randomness into his model, Whitby changes this coefficient to represent the probability of an individual being infected (known in epidemiology as the attack rate) at 10%. This indicates that the infection rate is not constant and can vary. If he were to repeat the trial 50,000 times (i.e., 50,000 samples of 1,000, with 800 attending branches and 200 attending weddings), he would see varying results.\n", + "- Primary contact tracing refers to the likelihood of linking an infection to a source event, while secondary contact tracing involves identifying all infections after a specific event has been identified.\n", + "- Understanding these two concepts helps clarify the difference between random sampling and observational data obtained through interviews, as weddings are traceable events, unlike branches. This difference accounts for the variations observed between the blue and red histograms." + ] + }, + { + "cell_type": "markdown", + "id": "a058afa6", + "metadata": {}, + "source": [ + "Question 1: Examine the code below. Identify all stages at which sampling is occurring in the model. Describe in words the sampling procedure, referencing the functions used, sample size, sampling frame, any underlying distributions involved. " + ] + }, + { + "cell_type": "markdown", + "id": "1338f7fe", + "metadata": {}, + "source": [ + "Answer:\n", + "\n", + "After creating a (hypothetical/theoretical) dataframe of 1,000 non-infected individuals (800 who attended brunches and 200 who attended weddings), the sampling process occurs in three stages:\n", + "\n", + "(1) Simple Random Sampling (SRS) Without replacement: the code first draws a simple random sample from the 1,000 individuals in the simulation, without replacement. The sample size is determined by multiplying the attack rate (theoretically known parameter) by the sampling frame (i.e., 0.1 * 1,000 = 100). From this sample, 100 individuals are considered infected. This sampling assumes that each individual has a 10% chance of being infected, which is based on a uniform distribution learned in the first lesson, where every outcome in a given set or interval is equally likely.\n", + "\n", + "(2) Primary contact tracing: next, the simulation/code examines the 100 infected individuals selected in the previous step. Here, the code uses a binomial distribution to model the success or failure of contact tracing. This involves 100 independent random Bernoulli trials (using the np.random.rand function). The parameter value for successful contact tracing is set at 0.2, implying that 80% (the complementary distribution) will not be traced. This process samples from this group of 100 individuals to determine how many of their infections have been traced. Drawing on the example from the first lesson (where p=0.5 and n=100), the expected outcome (mean) is 20, with a standard deviation of 4.\n", + "\n", + "(3) Repetition of the sampling process: Finally, the entire simulation is rerun 1,000 times. This process reminded me of bootstrapping. However, the current repetition procedure is not based on empirical data. Instead, it models the population when the parameters (as in our case) are known. It does not estimate population parameters such as mean, standard deviation, or confidence intervals. (I am unsure id this process considered as \"sampling\" per se)" + ] }, { "cell_type": "markdown", "id": "3d9b2ccc", "metadata": {}, "source": [ - "Modify the number of repetitions in the simulation to 10 and 100 (from the original 1000). Run the script multiple times and observe the outputted graphs. Comment on the reproducibility of the results." + "Question 2: Modify the number of repetitions in the simulation to 10 and 100 (from the original 1000). Run the script multiple times and observe the outputted graphs. Comment on the reproducibility of the results." ] }, { "cell_type": "markdown", "id": "4cf5d993", "metadata": {}, - "source": [] + "source": [ + "Answer: \n", + "\n", + "Since a random seed was not generated, the results vary with each execution of the script. Each time the script runs, the first two stages produce 1,000 different values. In the next stage, I will add a random seed, as we learned in the Python and LCR modules, to ensure reproducibility." + ] }, { "cell_type": "markdown", "id": "32603ce7", "metadata": {}, "source": [ - "Alter the code so that it is reproducible. Describe the changes you made to the code and how they affected the reproducibility of the script. The script needs to produce the same output when run multiple times." + "Question 3: Alter the code so that it is reproducible. Describe the changes you made to the code and how they affected the reproducibility of the script. The script needs to produce the same output when run multiple times." ] }, { "cell_type": "markdown", "id": "77613cc3", "metadata": {}, - "source": [] + "source": [ + "Answer:\n", + "\n", + "I set a random seed using the \"np.random.seed\" function with the integer 2026 as its argument. I positioned the random seed outside the simulation event function, before the simulation repetition function. This setup allows the simulation event function to generate different random values for the first two sampling procedures, depending on the number of repetitions required in the specified range (e.g., 10, 100, 1000)." + ] }, { "cell_type": "markdown", @@ -56,10 +99,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "ab8587a0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYiJJREFUeJzt3Ql4U2Xe/vEftEAplF02ZVMRqyIIbrgrCALjK4LjBorKqIO4774uIKggKq4IDqOAoqK4rygg6qi4gCAItaKioOwqay3QNv/rfuY9+SelLW3p07TJ93NdISQ5SZ5zTk6a+zxblVAoFDIAAAAAAFDmqpb9SwIAAAAAACF0AwAAAADgCaEbAAAAAABPCN0AAAAAAHhC6AYAAAAAwBNCNwAAAAAAnhC6AQAAAADwhNANAAAAAIAnhG4AAAAAADwhdAOAZ88884ztv//+Vq1aNatXr16si4NSqlKlig0bNizWxUA+F1xwgbVu3brSfyZiuR4FycnJsRtvvNFatGhhVatWtT59+pTbe//8889u206aNKnc3hMAfCJ0Ayg1/SDSD6O5c+daZffOO+94CVTfffed+zG9zz772IQJE+xf//rXLp+zYMECGzBggPuxW6NGDWvQoIF169bNJk6caLm5uebLZ5995rbBhg0bzKfnnnvOHnrooV0up7Lo87WrywknnOC1vIniww8/jNquOkm099572/nnn28//fRTrItXaQUBsqDLkUce6X1/vvTSS6V6/lNPPWX33XefnXHGGTZ58mS75pprYvZdUN7efPNNO/74461x48aWmprqjoMzzzzTpk+fHuuiAaikkmNdAACoKKF77NixZR689cM3Ly/PHn74Ydt33313ufy///1v++c//2lNmjSx8847z9q2bWubN2+2WbNm2aBBg2zVqlX2v//7v+YrdN95553uJIHPGnn90P7222/t6quvLnK5vn37Rm2zLVu22ODBg+300093jwW0rcrDX3/9ZcnJ8f9n88orr7TDDjvMduzYYV9//bU7UfT222/bokWLrHnz5lbR6GSWjrGK7pxzzrFevXpF3bfHHntYRfXBBx/YnnvuaQ8++GC5fxe0atXKHW868VPe7r//frvhhhtc6L7llltc6P7hhx9s5syZNnXqVDvllFPKvUwAKr/4//UAADG0du1ad12cEPv555+7wN2lSxd3EiAt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XyKiTzcAAABQyShwd0pL834pabBv2rRp+FK3bl1X8x3c/u677ywtLc3effdd69y5s9WoUcM++eQTV7N72mmnWZMmTVwoP+yww2zmzJlRr7tt2za76aabXFDV8/bdd1978sknw49/++231rNnT/d8vc55550X1QR/69atdv7557vHmzVrZg888ECR6zFp0iS788477ZtvvnHroIvuC1obqLx6rTp16tiZZ55pa9asKTJ068TD6tWrw/d99NFHdvPNN7uQHVi2bJn98ssvbnlZsWKFe+169epZgwYN3Hv+/PPP4eV1wuLaa691jzds2NBuvPFGdyIjUnHWW83LI5vYa13//e9/2+mnn26pqanWtm1be+ONN6Keo9u6PyUlxZV38uTJ7nlq2i5aj1NPPdXq16/vatEPPPBAe+eddyxREboBAAAAlBuFzVGjRllGRoYdfPDBtmXLFuvVq5fNmjXL5s+fb6eccooLbAq3AQXH559/3h555BH3vCeeeCJca66gd9JJJ9khhxxic+fOtenTp7sQrMAauOGGG1zQff311+399993Yffrr78utIxnnXWWXXfddS4sqvZeF92Xl5fnwu8ff/zhXm/GjBn2008/uccKc/TRR1u1atVc7bYsWbLE/vrrLxs0aJD9/vvvLmyLHleI7dKli+3YscN69OjhTlKoqfmnn37q1lfbZvv27W55BWidCHjqqafcyQuVKX+NeknXO6ATDtp+CxcudPumf//+7vVF5T3jjDOsT58+7qTEpZdearfeemvU84cMGeJOlHz88ce2aNEiu/fee6NaOSSa+G7LAQAAAKBCGT58uJ188snh26rF7dChQ/j2iBEjXHhUberll19u33//vb344osu4Hbr1s0ts/fee4eXf+yxx1zgvueee8L3KYiqVlzPbd68uasVnzJlinXt2tU9rprZvfbaq9Ay1qxZ04VENX1XLX1AZVCIVPDU68vTTz/twrn6RquWPj/V9B5++OEu8J5zzjnu+phjjnE19kcddZS73aZNG3etwK37VVYFfNU4B/3k1f9btdparnv37q52+pZbbrG+ffuG+4m/99574ffVyYySrndATd5VVtF21cmOL7/80oV+nfBo166d3Xfffe5x/V8tDe6+++7w83XCpF+/fta+ffud9lcioqYbAAAAQLk59NBDo24rHF5//fWWnp7uQqXC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Vr/tV1991Q444ABbsGCBq6muV69e1PIK2KtXr3b/13Vk4A4eDx4rzLZt29wloJAOAAAAAEDc1XS3a9fOBewvvvjCBg8ebAMHDnRNxn0aOXKk1a1bN3xp0aKF1/cDAAAAACSmmIdu1Wbvu+++1rlzZxeGO3ToYA8//LA1bdrUDZC2YcOGqOU1erkeE13nH808uB0sU5BbbrnFNm7cGL6sWLHCy7oBAAAAABJbzEN3fnl5ea7pt0J4tWrVbNasWeHHMjMz3RRhao4uulbz9LVr14aXmTFjhpt+TE3UC1OjRo3wNGXBBQAAAACAuOrTrRrnnj17usHRNm/e7EYq//DDD+29995zzb4HDRpk1157rTVo0MAF4yuuuMIFbY1cLt27d3fh+rzzzrPRo0e7fty33Xabm9tbwRoAAAAAgIQN3aqhPv/8823VqlUuZB988MEucJ988snu8QcffNCqVq1q/fr1c7XfGpn88ccfDz8/KSnJ3nrrLdcXXGG8Vq1ark/48OHDY7hWAAAAAABUgNCtebiLkpKSYmPHjnWXwrRq1creeecdD6UDAAAAACDO+nQDAAAAAJDQofunn34q+5IAAAAAABBnShW6NcXXiSeeaFOmTLHs7OyyLxUAAAAAAIkaur/++ms36JlGFtd82Jdeeql9+eWXZV86AAAAAAASLXR37NjRHn74YVu5cqU99dRTbvTxY445xg466CAbM2aMrVu3ruxLCgAAAABAIg2klpycbH379rVp06bZvffeaz/88INdf/311qJFi/BUYAAAAAAAJKrdCt1z5861yy67zJo1a+ZquBW4f/zxR5sxY4arBT/ttNPKrqQAAAAAACTCPN0K2BMnTrTMzEzr1auXPf300+66atX/Zvg2bdrYpEmTrHXr1mVdXgAAAAAA4jt0jxs3zi666CK74IILXC13QRo3bmxPPvnk7pYPAAAAAIDECt1Lly7d5TLVq1e3gQMHlublAQAAAABI3D7dalquwdPy032TJ08ui3IBAAAAAJCYoXvkyJHWqFGjApuU33PPPWVRLgAAAAAAEjN0L1++3A2Wll+rVq3cYwAAAAAAoJShWzXaCxcu3On+b775xho2bFgW5QIAAAAAIDFD9znnnGNXXnmlzZ4923Jzc93lgw8+sKuuusrOPvvssi8lAAAAAACJMnr5iBEj7Oeff7auXbtacvJ/XyIvL8/OP/98+nQDAAAAALA7oVvTgb3wwgsufKtJec2aNa19+/auTzcAAAAAANiN0B3Yb7/93AUAAAAAAJRR6FYf7kmTJtmsWbNs7dq1rml5JPXvBgAAAAAg0ZUqdGvANIXu3r1720EHHWRVqlQp+5IBAAAAAJCIoXvq1Kn24osvWq9evcq+RAAAAAAAJPpAavvuu2/ZlwYAAAAxk5WVYfG0HhkZ8bE+sdSoUSNr2bJlrIsBJF7ovu666+zhhx+2xx57jKblAAAAldz6vO1W1YXUARZPBgyIr/WJhdSUFMvIzCR4A+Uduj/55BObPXu2vfvuu3bggQdatWrVoh5/5ZVXdqdMAAAAKEebQzmmYXGH12ht+1RraJVdXm6Wbf0rww5IT7daqamxLk6llZGVZQMyMmz9+vWEbqC8Q3e9evXs9NNP3533BQAAQAXTpmpNS09Os8ouVycSzKxjaqqlpVX+9QGQgKF74sSJZV8SAAAAAADijLrvlEpOTo7NnDnTnnjiCdu8WecSzVauXGlbtmwpy/IBAAAAAJBYNd2//PKLnXLKKbZ8+XLbtm2bnXzyya7pzr333utujx8/vuxLCgAAAABAItR0X3XVVXbooYfan3/+aTVr1gzfr37es2bNKsvyAQAAAACQWDXd//nPf+yzzz5z83VHat26tf32229lVTYAAAAAABKvpjsvL89yczUuZLRff/2VESIBAAAAANid0N29e3d76KGHwrerVKniBlAbOnSo9erVqzQvCQAAAABA3ClV8/IHHnjAevToYQcccIBlZ2fbueeea0uXLrVGjRrZ888/X/alBAAAAAAgUUL3XnvtZd98841NnTrVFi5c6Gq5Bw0aZP37948aWA0AAAAAgESWXOonJifbgAEDyrY0AAAAAAAkeuh++umni3z8/PPPL215AAAAAABI7NCteboj7dixw7KystwUYqmpqYRuAAAAAABKO3r5n3/+GXVRn+7MzEw75phjGEgNAAAAAIDdCd0Fadu2rY0aNWqnWnAAAAAAABJVmYXuYHC1lStXluVLAgAAAACQWH2633jjjajboVDIVq1aZY899pgdffTRZVU2AAAAAAASL3T36dMn6naVKlVsjz32sJNOOskeeOCBsiobAAAAAACJF7rz8vLKviQAAAAAAMSZMu3TDQAAAAAAdrOm+9prry32smPGjCnN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sHXr1s3eeOONcE14nz597O6777bmzZtbu3bt3P2LFi2yk046yWrWrGkNGza0Sy65xLZs2RJ+zeB5d955p+2xxx5Wp04d++c//+lCe0Ah/8orr7TGjRtbSkqKHXPMMfbVV1+FH//www9dDfy7777rQqzKOWXKFPea33zzTbiGftKkSQU2Ly9uGe+//35r1qyZW0YnHHbs2FHk9ho3bpzts88+7uSDtsczzzwTfqx169b28ssv29NPP+3Ko/cozFNPPWUHHnigWy+9/+WXXx5+bMyYMda+fXvXRL1FixZ22WWXRZX9l19+sVNPPdXq16/vltHr6IRJ4Ntvv3W1/rVr17YmTZrYeeedZ+vXrw8//tJLL7nXD7aN9vnWrVuLXG8AAApD6AYAoAQUxCLD8axZsywzM9NmzJhhb731lgtnPXr0cIFPIXnatGk2c+bMqNAYPC8jI8OF5+eff95eeeUVF5gDN954owuokydPtq+//to1bdfr/vHHH1Gvc/PNN9uoUaPca6mv9HXXXedCpppw63LWWWfttA7FLePs2bNdzbSuVQ4F+CDEF+TVV1+1q666ypVBwfbSSy+1Cy+80D1f9F5qOXDmmWe6sj388MOFBncFfJ0I0MkBneTQ+geqVq1qjzzyiC1evNiV64MPPnDbK6Dn6qTFxx9/7J5/7733uoAtGzZscCcbDjnkEJs7d65Nnz7d1qxZ48okKtc555xjF110UXj/9O3b17UkAACgVEIAAKBAAwcODJ122mnu/3l5eaEZM2aEatSoEbr++uvDjzdp0iS0bdu28HP+9a9/herXrx/asmVL+L633347VLVq1dDq1avDz2vQoEFo69at4WXGjRsXql27dig3N9c9t1q1aqFnn302/Pj27dtDzZs3D40ePdrdnj17tlJg6LXXXosq89ChQ0MdOnTYaV207KuvvlqiMrZq1SqUk5MTXubvf/976Kyzzip0ex111FGhiy++OOo+PadXr17h29qeeu2iaD1vvfXWUHFNmzYt1LBhw/Dt9u3bh4YNG1bgsiNGjAh179496r4VK1a47ZOZmRmaN2+e+//PP/9c7PcHAKAo1HQDAFAE1V6rllRNvNUkWTXHGqwsoGbIkf24VTvaoUMH16w5cPTRR1teXp6rEQ9omdTU1PDtLl26uCbSK1ascLXLasat5wXUj/zwww93rx/p0EMPLfE6FbeMqjFPSkoK31Yz77Vr1xb5upFlDl43f5mLotdfuXKlde3atdBlVCuvx/fcc09LS0tzzcN///13y8rKco+rWf5dd93l3nvo0KG2cOHC8HPV9F4179qnwWX//fd3j2m7a7votbVf//73v9uECRPszz//LHb5AQDIj9ANAEARTjzxRDfS9tKlS+2vv/5yzZkjw2rk/2PB5/sr6EdSP2wFc9/N94vy888/29/+9jc7+OCDXfP7efPm2dixY91jQbP/f/zjH/bTTz+5MK7m5Tox8eijj7rHdGJD/b21TyMv2r/HHXecO8mgrgLqK3/AAQe456lv+rJly7yuNwAgfhG6AQDYRahVf+KWLVtacvKuJ/1IT093tamRA299+umnrh9yMNCaaBmF+MDnn3/ual01MFgwEJmeF1DNt/pEKwgWRc8rahTzkpSxpPS6kWUOXndXZY6kmmsNuKY+7wVRyFbwf+CBB+zII4+0/fbbz9WM56ftqMHp1FdefcxVYy2dOnVyfcH1HtqvkZfgBIZOLqiWXH3s58+f77ap+qsDAFAahG4AAMpQ//79XVP0gQMHusHE1JT5iiuucLWuGik7oFrZQYMG2ZIlS9zI2moGrYHMFHwV/jRS+g033OAG+tIyF198sWs+recURWFStbKqvdWI3BpQrLRlLCmVVwOtaSA01RxrlHGF3uuvv75Er6Pm+wrVGixNr6OB5IKaaoVjnYDQbdVma3T08ePHRz3/6quvtvfee89tBz1X66cTAsEgaxqMToOl6SSGmpRrWQ34ppMVX3zxhd1zzz1ukLXly5e78q9bty78fAAASorQDQBAGVI/bYU4BbvDDjvMzjjjDNdH+LHHHotaTvdprmo1aVY/8f/5n/+J6iuuEcn79evngrBqZ3/44Qf3uhpxvCh6jkYIV7N4TUemkdFLW8aS0hRjGpFc04ypP/gTTzzh5jg/4YQTSvQ6Ohnw0EMP2eOPP+5eR83JFb5Ffa4V5jUi+UEHHWTPPvusjRw5Mur5Cs8K1wrK2haqDddriaZ2U+27lunevbvru62QXq9ePXfCQ9O3adTzXr16uefddttt7gSA+vMDAFAaVTSaWqmeCQAASkXzU2vqqsh5swEAQHyiphsAAAAAAE8I3QAAAAAAeELzcgAAAAAAPKGmGwAAAAAATwjdAAAAAAB4QugGAAAAAMATQjcAAAAAAJ4QugEAAAAA8ITQDQAAAACAJ4RuAAAAAAA8IXQDAAAAAOAJoRsAAAAAAPPj/wETbmYv4phryQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Import necessary libraries\n", "import pandas as pd\n", @@ -146,6 +200,319 @@ "plt.show()" ] }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ada78e4e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9sAAAJOCAYAAACnVRSYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXRlJREFUeJzt3QeYVOXdP+6H3gRRULBrLIhdMSrR2LvxtSbGWNAYNfYao6+JvRt7TYw1Jtao0SRWbLErdiXYhYRilyZ9/tf3ef+zv9llgQXOMsvufV/XuMzMmTPPnHNmPJ/ztFalUqmUAAAAgMK0Lm5VAAAAQBC2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBCvKnP/0prbzyyqldu3ape/fu1S4Oc6hVq1bptNNOq3YxqGO//fZLyy677Hx/TFTzc9RnypQp6YQTTkhLLbVUat26ddp5553n2Xt/8sknedvedNNN8+w9AeYlYRuYpTgRihOiV155Jc3v/vnPfzZKkPr3v/+dT6KXX375dN1116U//OEPs3zN66+/nvbee+98ktuhQ4e08MILpy233DLdeOONaerUqamxPPfcc3kbfPPNN6kx/eUvf0mXXnrpLJeLssTxNavbpptu2qjlbSmefPLJWts1Lg5973vfS/vuu2/66KOPql28+VY5ONZ322CDDRp9f959991z9PobbrghXXjhhWn33XdPN998czrmmGOq9lswrz3wwANpk002SYsuumjq3Llz/h785Cc/SQ899FC1iwY0E22rXQCAeR22r7rqqsIDd5zwTps2LV122WVphRVWmOXyf/zjH9Mvf/nL1KtXr7TPPvukFVdcMY0ZMyYNHDgwHXDAAWnEiBHpf//3f1Njhe3TTz89XxxozBr4OMF+++2309FHHz3T5Xbdddda22zs2LHpkEMOSbvsskt+riy21bzw3XffpbZtm///Ho888sj0/e9/P02ePDm9+uqr+QLRP/7xj/TWW2+lxRdfPDU1cRErvmNN3Z577pm23377Wo8tssgiqal6/PHH0xJLLJEuueSSef5bsMwyy+TvW1zwmdd+97vfpV/96lc5bJ900kk5bH/wwQfpscceS7fffnvadttt53mZgOan+Z9NAMwDn332Wf7bkPD6wgsv5KDdv3//HP67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+2ejjTbKTfcrg3X8+7DDDktfffVV+uSTT2o9HuE8TJw4MR1//PFpiSWWSF26dEnrr7/+dOE8tndcpIntFtvvyy+/nO79zzvvvFzuKOsBBxyQJkyYMN0223nnnRt8PJVr5uNzxXGxyiqrpMceeyxv73Jri7iYEds7tmkss8wyy6Rzzz13htsIAACaG2G7mbj55ptzIHvxxRfTBRdckM4444z06KOP5udefvnltO2226af/OQnuSl5NBsOP/7xj/PcxhEUBw0alNZZZ520xRZb5AAY/vGPf+QAF83Co9/zwIEDczAN99xzT1pyySXz+8Q641afe++9Nx111FHpuOOOS2+//XZuIh0hNWpwK51++um5fG+++WZ+vwjX5XL89re/Te+++24u5+DBg3N4n1HT8PhsUaYoW5QpPnvlNorA/+yzz6Zrr702/fe//83vFRcT4iJDrPf6669PZ5111nTbNt7vpZdeysH7kEMOydsuas5fffXVtPXWW+f+8OPH19/1IPZLvEflZ47QHNt6ww03rHn8o48+yhcJymE7wurzzz+fbr/99rxd4j1jP77//vv5+djXEZ5juegeEK+rW/Y777wzB+VzzjknvfLKKzn8Xn311fWWs6HHU8xPH+E8An48/4c//CGdfPLJtV5/+eWX5wsm8f5DhgxJf/7zn2sufAAAQEugGXkzscYaa6RTTz01/ztqfq+88socjrfaaqtcIxw1t1ErXG7G/Mwzz+TwGGE7ngu/+93vcs1kDCx20EEHpbPPPjv99Kc/zUG4bM0118x/o8azTZs2uba0vM76xDqj5vTQQw/N94899tj0wgsv5MfLoTLEMnvuuWf+dwTDCGtRvgiXEUDXXnvttO666+bnZxbaokl0lCnKVrdcsV0iOJZFQIym3LGtolZ25ZVXTsOHD0+//vWv0ymnnJJat25d85l/85vf5H+fdNJJuaY4wveBBx6YH4tlI6hHII4m4PWJz3rXXXflf8eFg6hdjs+08cYb5+AdFyDib9QCxzriM0ftffxdfPHF8+uiljv6o8fjsY3iwkJsn6iBDiuttFIeAC+WKbv00ktzII9biDAetdB1a7dn53iK0B1N9aO85W0cx0o8VxbljtdF7Xds26jZBgCAlkTNdjMR4ahS1GBGkJ6RqMkdO3Zs6tGjR1pggQVqbh9//HEOUiFqS6P2dW5ETXTU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koYMGVLz2AILLFDz71KplKZOnZratm3eu3mzzTZL9957b63HnnjiibTUUkulJ598slbYjvsDBgyYp+UrT2UHAAC0HPpsz0AE7XW6dm302+wG+t69e9fcFlxwwVzTXb7/73//O3Xt2jU9+OCDqV+/fqlDhw7pmWeeyTW5O+20U+rVq1cO49///vfTY489Vmu9MY/5r3/96xxQ43UrrLBCuv7662uef/vtt9N2222XXx/r2WeffWo1tR83blzad9998/OLLbZYuuiii2b6OW666aZ0+umnpzfeeCN/hrjFY+XWBVHeWFe3bt3ST37ykzRq1KiZhu244DBy5Miax5566ql04okn5nBd9vHHH6dPP/00Lx+GDRuW1929e/e08MIL5/f85JNPapaPCxXHHntsfr5Hjx7phBNOyBcwKjXkc0cz8sqm9PFZ//jHP6Zddtklde7cOa244orp/vvvr/WauB+Px/R3Ud6bb745vy6asIf4HDvuuGNaaKGFcq35qquumv75z3/OdJsDAADzjrDdDEXIPO+889LgwYPTGmuskcaOHZu23377NHDgwPTaa6+lbbfdNge1CLVlERhvu+22dPnll+fX/f73v6+pJY+At/nmm6e11147vfLKK+mhhx7K4TeCatmvfvWrHHD/9re/pUceeSSH3FdffXWGZdxjjz3Scccdl0Ni1NbHLR6bNm1aDr1fffVVXt+jjz6aPvroo/zcjGy44YapXbt2uTY7vPvuu+m7775LBxxwQPryyy9zyA7xfITX/v37p8mTJ6dtttkmX5yIJuXPPvts/ryxbSZNmpSXj+AcFwBuuOGGfNEiylS3Bn12P3dZXGiI7ffmm2/mfbPXXnvl9Yco7+6775523nnnfDHi4IMPTieffHKt1x922GH5AsnTTz+d3nrrrXT++efXatUAAABUV/NuX9xCnXHGGWmrrbaquR+1tmuuuWbN/TPPPDOHxqg9Pfzww9N7772X7rzzzhxst9xyy7zM9773vZrlr7zyyhy0zznnnJrHIoBGLXi8dvHFF8+14LfeemvaYost8vNRE7vkkkvOsIydOnXK4TCauEetfFmUIcJjBM5Yf7jllltyKI++z1ErX1fU7K633no56O65557570YbbZRr6H/wgx/k+8stt1z+G0E7Ho+yRrCPGuZyP/jo3x212LHc1ltvnWujTzrppLTr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Imy//PLL6fe//31aY401aj1+zDHHpAceeCDddddd6amnnkrDhw9Pu+66a9XKCQAAAPNF2B47dmzaa6+90nXXXZcWWmihmse//fbbdP3116eLL744bb755qlfv37pxhtvTM8991x64YUXqlpmAAAAmJm2qcqimfgOO+yQttxyy3TWWWfVPD5o0KA0efLk/HjZyiuvnJZeeun0/PPPpw022KDe9U2cODHfykaPHt3InwAAoOWYMGFomjz5i2oXgwKMHz84/x08+P/+NoaePXvm83doiaoatm+//fb06quv5mbkdY0cOTK1b98+de/evdbjvXr1ys/NyLnnnptOP/30RikvAEBLD9qvvNQnTZk2odpFoUB77713o627c8eOafCQIQI3LVLVwvawYcPSUUcdlR599NHUsWPHwtZ70kknpWOPPbZWzfZSSy1V2PoBAFqqqNGOoH1W575pudadq10c5tK0qePTuO8Gp1X69k1dOhe/PwePH5/2Hjw4ffHFF8I2LVLVwnY0E//ss8/SOuusU/PY1KlT09NPP52uvPLK9PDDD6dJkyalb775plbtdoxG3rt37xmut0OHDvkGAEDjiKDdt23XaheDuTQ1pTQmpbRW586pa1f7E5pN2N5iiy3SW2+9Veux/fffP/fL/vWvf51ro9u1a5cGDhyYp/wKQ4YMSUOHDk39+/evUqkBAACgCYftuHq22mqr1XqsS5cueU7t8uMHHHBAbhK+8MILp27duqUjjjgiB+0ZDY4GAAAATUHVRyOfmUsuuSS1bt0612zHCOPbbLNNuvrqq6tdLAAAAJh/wvaTTz5Z634MnHbVVVflGwAAAMwvWle7AAAAANDcCNsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAoWNuiVwgAzH+GDh2avvjii2oXo9kbPHhw/jt+/P/9nd/Mr+UGqAZhGwBauAjaffv0SeMnTKh2UVqMwYP3TvOzUmlStYsA0OQJ2wDQwkWNdgTtW/v2TX07d652cZq1cePHp3cHD05dOvVNrdvMf9v62SlfpqsnfJJK06ZUuygATZ6wDQBkEbTX6dq12sVo1saklCKmdm3TObVpO/9t64+njq92EQDmGwZIAwAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEBzCtvXXHNNWmONNVK3bt3yrX///unBBx+seX7ChAnpsMMOSz169EgLLLBA2m233dKoUaOqWWQAAABo2mF7ySWXTOedd14aNGhQeuWVV9Lmm2+edtppp/TOO+/k54855pj0wAMPpLvuuis99dRTafjw4WnXXXetZpEBAABgltqmKtpxxx1r3T/77LNzbfcLL7yQg/j111+f/vKXv+QQHm688cbUt2/f/PwGG2xQpVIDAADAfNJne+rUqen2229P48aNy83Jo7Z78uTJacstt6xZZuWVV05LL710ev7552e4nokTJ6bRo0fXugEAAECLCttvvfVW7o/doUOH9Mtf/jLde++9aZVVVkkjR45M7du3T927d6+1fK9evfJzM3LuueemBRdcsOa21FJLzYNPAQAAAE0obPfp0ye9/vrr6cUXX0yHHHJIGjBgQHr33XfneH0nnXRS+vbbb2tuw4YNK7S8AAAA0KT7bIeovV5hhRXyv/v165defvnldNlll6U99tgjTZo0KX3zzTe1ardjNPLevXvPcH1RQx43AAAAmK9qtj/66KPUWKZNm5b7XUfwbteuXRo4cGDNc0OGDElDhw7NfboBAACgWdVsR030Jptskg444IC0++67p44dO85xk+/tttsuD3o2ZsyYPPL4k08+mR5++OHc3zrWf+yxx6aFF144z8N9xBFH5KBtJHIAAACaXc32q6++mtZYY40chKNJ98EHH5xeeuml2V7PZ599lvbdd9/cb3uLLbbITcgjaG+11Vb5+UsuuST96Ec/SrvttlvaeOON83vdc889c1JkAAAAaNo122uttVbuV33RRRel+++/P910001po402SiuttFL6+c9/nvbZZ5+0yCKLzHI9MY/2zESN+VVXXZVvAAAA0CJGI2/btm3adddd01133ZXOP//89MEHH6Tjjz8+T7cVNdYjRoworqQAAADQEsL2K6+8kg499NC02GKLpYsvvjgH7Q8//DA9+uijafjw4WmnnXYqrqQAAADQnJuRR7C+8cYb8+jg22+/fbrlllvy39at/y+7L7fccrlp+bLLLlt0eQEAAKB5hu1rrrkm983eb7/9cq12fRZddNFZ9skGAACA5miOwvb7778/y2Xat2+fBgwYMCerBwAAgJbXZzuakMegaHXFYzfffHMR5QIAAICWFbbPPffc1LNnz3qbjp9zzjlFlAsAAABaVtgeOnRoHgStrmWWWSY/BwAAAC3ZHIXtqMF+8803p3v8jTfeSD169CiiXAAAANCywvaee+6ZjjzyyPTEE0+kqVOn5tvjjz+ejjrqqPTTn/60+FICAABAcx+N/Mwzz0yffPJJ2mKLLVLbtv+3imnTpqV9991Xn20AAABavDkK2zGt1x133JFDdzQd79SpU1p99dVzn20AAABo6eYobJettNJK+QYAAADMZdiOPto33XRTGjhwYPrss89yE/JK0X8bAAAAWqo5CtsxEFqE7R122CGtttpqqVWrVsWXDAAAAFpS2L799tvTnXfembbffvviSwQAAAAtceqvGCBthRVWKL40AAAA0FLD9nHHHZcuu+yyVCqVii8RAAAAtMRm5M8880x64okn0oMPPphWXXXV1K5du1rP33PPPUWVDwAAAFpG2O7evXvaZZddii8NAAAAtNSwfeONNxZfEgAAAGjJfbbDlClT0mOPPZZ+//vfpzFjxuTHhg8fnsaOHVtk+QAAAKBl1Gx/+umnadttt01Dhw5NEydOTFtttVXq2rVrOv/88/P9a6+9tviSAgAAQHOu2T7qqKPSuuuum77++uvUqVOnmsejH/fAgQOLLB8AAAC0jJrtf/3rX+m5557L821XWnbZZdN///vfosoGAAAALadme9q0aWnq1KnTPf6f//wnNycHAACAlmyOwvbWW2+dLr300pr7rVq1ygOjnXrqqWn77bcvsnwAAADQMpqRX3TRRWmbbbZJq6yySpowYUL62c9+lt5///3Us2fPdNtttxVfSgAAAGjuYXvJJZdMb7zxRrr99tvTm2++mWu1DzjggLTXXnvVGjANAAAAWqK2c/zCtm3T3nvvXWxpAAAAoKWG7VtuuWWmz++7775zWh4AAABomWE75tmuNHny5DR+/Pg8FVjnzp2FbQAAAFq0ORqN/Ouvv651iz7bQ4YMSRtttJEB0gAAAGjx5ihs12fFFVdM55133nS13gAAANDSFBa2y4OmDR8+vMhVAgAAQMvos33//ffXul8qldKIESPSlVdemTbccMOiygYAAAAtJ2zvvPPOte63atUqLbLIImnzzTdPF110UVFlAwAAgJYTtqdNm1Z8SQAAAKCZKLTPNgAAADCHNdvHHntsg5e9+OKL5+QtAAAAoGWF7ddeey3fJk+enPr06ZMfe++991KbNm3SOuusU6svNwAAALQ0cxS2d9xxx9S1a9d08803p4UWWig/9vXXX6f9998//fCHP0zHHXdc0eUEgLkydOjQ9MUXX1S7GE3S4MGD899x48enMdUuTDMX2xhaynFZXm/5NwZmpmfPnmnppZdOzUmrUszbNZuWWGKJ9Mgjj6RVV1211uNvv/122nrrrZvUXNujR49OCy64YPr2229Tt27dql0cAKoUtPv06ZsmTBB0ZubalNJK1S5EC9GlyzqpXbv577zknxNHpd98Nzj9qVPftGqHXtUuDnNp8uQv07hxbzXa+t9LKf2y0dZOc9OxY+c0ZMjgJh24Zzdbtp3TN/n888+nezweGzPGNXEAmpao0Y6g3bfvralz577VLk6TM3784DR48N6pS6e+qWubztUuTrM2ecpXacKEj9Mc1HVA4UqlKflvx459Uru2CxS+/i5Tx6f03WC/vTT4/0Px/+umHLZn1xyF7V122SU3GY85tddbb7382Isvvph+9atfpV133bXoMgJAIeJkr2vX/ze2CLW1btM5tWnbtdrFaNamTtO6gqandevG+e6Xpz3y20tLNUdh+9prr03HH398+tnPfpYHScsrats2HXDAAenCCy8suowAAADQ/MN2586d09VXX52D9YcffpgfW3755VOXLl2KLh8AAADMd8qtO+bIiBEj8m3FFVfMQVv/IwAAAJjDsP3ll1+mLbbYIq200kpp++23z4E7RDNy034BAADQ0s1R2D7mmGNSu3bt8lQq0aS8bI899kgPPfRQkeUDAACAltFnO+bYfvjhh9OSSy5Z6/FoTv7pp58WVTYAAABoOTXb48aNq1WjXfbVV1+lDh06FFEuAAAAaFlh+4c//GG65ZZbau63atUqTZs2LV1wwQVps802K7J8AAAA0DKakUeojgHSXnnllTRp0qR0wgknpHfeeSfXbD/77LPFlxIAAACae832aqutlt5777200UYbpZ122ik3K991113Ta6+9lufbBgAAgJZstmu2J0+enLbddtt07bXXppNPPrlxSgUAAAAtqWY7pvx68803G6c0AAAA0FKbke+9997p+uuvL740AAAA0FIHSJsyZUq64YYb0mOPPZb69euXunTpUuv5iy++uKjyAQAAQPMO2x999FFadtll09tvv53WWWed/FgMlFYppgEDAACAlmy2wvaKK66YRowYkZ544ol8f4899kiXX3556tWrV2OVDwAAAJp3n+1SqVTr/oMPPpin/QIAAADmcoC0GYVvAAAAYDbDdvTHrtsnWx9tAAAAmIs+21GTvd9++6UOHTrk+xMmTEi//OUvpxuN/J577pmd1QIAAEDLDdsDBgyYbr5tAAAAYC7C9o033jg7iwMAAECLNFcDpAEAAADTE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoDmF7XPPPTd9//vfT127dk2LLrpo2nnnndOQIUNqLTNhwoR02GGHpR49eqQFFlgg7bbbbmnUqFFVKzMAAAA06bD91FNP5SD9wgsvpEcffTRNnjw5bb311mncuHE1yxxzzDHpgQceSHfddVdefvjw4WnXXXetZrEBAABgptqmKnrooYdq3b/ppptyDfegQYPSxhtvnL799tt0/fXXp7/85S9p8803z8vceOONqW/fvjmgb7DBBlUqOQAAAMwnfbYjXIeFF144/43QHbXdW265Zc0yK6+8clp66aXT888/X7VyAgAAQJOt2a40bdq0dPTRR6cNN9wwrbbaavmxkSNHpvbt26fu3bvXWrZXr175ufpMnDgx38pGjx7dyCUHAACAJlqzHX2333777XT77bfP9aBrCy64YM1tqaWWKqyMAAAAMN+E7cMPPzz9/e9/T0888URacsklax7v3bt3mjRpUvrmm29qLR+jkcdz9TnppJNyc/TybdiwYY1efgAAAGgyYbtUKuWgfe+996bHH388LbfccrWe79evX2rXrl0aOHBgzWMxNdjQoUNT//79611nhw4dUrdu3WrdAAAAoMX02Y6m4zHS+N/+9rc813a5H3Y0/+7UqVP+e8ABB6Rjjz02D5oWwfmII47IQdtI5AAAADRVVQ3b11xzTf676aab1no8pvfab7/98r8vueSS1Lp167Tbbrvlgc+22WabdPXVV1elvAAAANDkw3Y0I5+Vjh07pquuuirfAAAAYH7QJAZIAwAAgOZE2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUrG3RKwQAACgbP35wtYtAEze+mR4jwjYAAFC4L6ZNys1oBw/eu9pFYT7QOqU0YsSI1JwI2wAAQOHGlKakaSmlMzosm5Zv16PaxaEJ+3Dyl+mUiZ+kb775JjUnwjYAANBolmvdKfVt27XaxaAJmzZ1fGqODJAGAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAaE5h++mnn0477rhjWnzxxVOrVq3SfffdV+v5UqmUTjnllLTYYoulTp06pS233DK9//77VSsvAAAANPmwPW7cuLTmmmumq666qt7nL7jggnT55Zena6+9Nr344oupS5cuaZtttkkTJkyY52UFAACAhmqbqmi77bbLt/pErfall16afvOb36SddtopP3bLLbekXr165Rrwn/70p/O4tAAAADCf99n++OOP08iRI3PT8bIFF1wwrb/++un555+vatkAAACgydZsz0wE7RA12ZXifvm5+kycODHfykaPHt2IpQQAAID5qGZ7Tp177rm5Brx8W2qppapdJAAAAFqYJhu2e/funf+OGjWq1uNxv/xcfU466aT07bff1tyGDRvW6GUFAACA+SJsL7fccjlUDxw4sFaT8BiVvH///jN8XYcOHVK3bt1q3QAAAKDF9NkeO3Zs+uCDD2oNivb666+nhRdeOC299NLp6KOPTmeddVZaccUVc/j+7W9/m+fk3nnnnatZbAAAAGi6YfuVV15Jm222Wc39Y489Nv8dMGBAuummm9IJJ5yQ5+I+6KCD0jfffJM22mij9NBDD6WOHTtWsdQAAADQhMP2pptumufTnpFWrVqlM844I98AAABgftFk+2wDAADA/ErYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIK1LXqFzLmhQ4emL774otrFYD7Qs2fPtPTSS1e7GMwH/K78n8GDB+e/48f/319qs10AoHjCdhM6Ie7bp08aP2FCtYvCfKBzx45p8JAhAjcz5XdleoMH713tIjRppdKkahcBAJoNYbuJiJqnOCG+tW/f1Ldz52oXhyZs8Pjxae/Bg/MxI2wzM35X/p9x48endwcPTl069U2t27TsbVGfZ6d8ma6e8EkqTZtS7aIAQLMhbDcxcUK8Tteu1S4G0Iz4XUlpTEopYmTXNp1Tm7Yte1vU5+Op46tdBABodgyQBgAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAACiYsA0AAAAFE7YBAACgYMI2AAAAFEzYBgAAgIIJ2wAAAFAwYRsAAAAKJmwDAABAwYRtAAAAKJiwDQAAAAUTtgEAAKBgwjYAAAAUTNgGAACAggnbAAAAUDBhGwAAAAombAMAAEBLDNtXXXVVWnbZZVPHjh3T+uuvn1566aVqFwkAAADm37B9xx13pGOPPTadeuqp6dVXX01rrrlm2mabbdJnn31W7aIBAADA/Bm2L7744nTggQem/fffP62yyirp2muvTZ07d0433HBDtYsGAAAA81/YnjRpUho0aFDacsstax5r3bp1vv/8889XtWwAAAAwI21TE/bFF1+kqVOnpl69etV6PO7/+9//rvc1EydOzLeyb7/9Nv8dPXp0asrGjh2b/w4aMyaNnTq12sWhCRsyfnz+GxeiyscN1GfIkCH5r9+VlMaPH5/i/xodJ3+e2kwZU+3iNDkfTfm//1e+M+Xr9F2pZR8rjW3K1NEpzlI6TP4itZ02Ls1vHCvNS2Mfj44XGuqjqaNr/n/dlHNbuWylUqlBy7cqNXTJKhg+fHhaYokl0nPPPZf69+9f8/gJJ5yQnnrqqfTiiy9O95rTTjstnX766fO4pAAAALQEw4YNS0suueT8XbPds2fP1KZNmzRq1Khaj8f93r171/uak046KQ+oVjZt2rT01VdfpR49eqRWrVqlpnyVZKmllso7rlu3btUuDvMZxw9zw/HD3HD8MDccP8wNxw/z+viJeuoxY8akxRdfvEHLN+mw3b59+9SvX780cODAtPPOO9eE57h/+OGH1/uaDh065Ful7t27p/lF7Gg/Fswpxw9zw/HD3HD8MDccP8wNxw/z8vhZcMEFG7xskw7bIWqpBwwYkNZdd9203nrrpUsvvTSNGzcuj04OAAAATVGTD9t77LFH+vzzz9Mpp5ySRo4cmdZaa6300EMPTTdoGgAAADQVTT5sh2gyPqNm481FNH0/9dRTp2sCDw3h+GFuOH6YG44f5objh7nh+KGpHz9NejRyAAAAmB+1rnYBAAAAoLkRtgEAAKBgwjYAAAAUTNhuJFdddVVadtllU8eOHdP666+fXnrppZkuf9ddd6WVV145L7/66qunf/7zn7Wej671MSL7Yostljp16pS23HLL9P777zfyp6C5HD/77bdfatWqVa3btttu28ifgvnh+HnnnXfSbrvtlpeP4yKmV5zbdTJ/K/r4Oe2006b7/YnfK5qn2Tl+rrvuuvTDH/4wLbTQQvkW5zZ1l3f+07IUffw4/2lZrpqN4+eee+7JU0t37949denSJc949ac//anw3x9huxHccccdeX7wGN3u1VdfTWuuuWbaZptt0meffVbv8s8991zac8890wEHHJBee+21tPPOO+fb22+/XbPMBRdckC6//PJ07bXXphdffDEfFLHOCRMmzMNPxvx6/IT4n8uIESNqbrfddts8+kQ05eNn/Pjx6Xvf+14677zzUu/evQtZJ/Ovxjh+wqqrrlrr9+eZZ55pxE/B/HL8PPnkk/n/X0888UR6/vnn01JLLZW23nrr9N///rdmGec/LUdjHD/B+U/LcMdsHj8LL7xwOvnkk/Ox8+abb6b9998/3x5++OFif39iNHKKtd5665UOO+ywmvtTp04tLb744qVzzz233uV/8pOflHbYYYdaj62//vqlgw8+OP972rRppd69e5cuvPDCmue/+eabUocOHUq33XZbo30OmsfxEwYMGFDaaaedGrHUzK/HT6VlllmmdMkllxS6TuYvjXH8nHrqqaU111yz8LLS9Mztb8WUKVNKXbt2Ld188835vvOflqXo4yc4/2k51ivgXGXttdcu/eY3vyn090fNdsEmTZqUBg0alJsZlLVu3Trfjysn9YnHK5cPcdWkvPzHH3+cRo4cWWuZBRdcMDePmNE6mT81xvFTeQV40UUXTX369EmHHHJI+vLLLxvpUzA/HT/VWCdNU2Pu62h2t/jii+da8L322isNHTq0gBLT3I6faCkxefLkXOMUnP+0HI1x/JQ5/2n+Js3l8RPNxQcOHJiGDBmSNt5440J/f4Ttgn3xxRdp6tSpqVevXrUej/uxw+oTj89s+fLf2Vkn86fGOH7KTahuueWW/ENy/vnnp6eeeiptt912+b1o2cdPNdZJ09RY+zpOTG666ab00EMPpWuuuSafwEQ/yzFjxhRQaprT8fPrX/86X5Qpn9w6/2k5GuP4Cc5/WoYv5vD4+fbbb9MCCyyQ2rdvn3bYYYd0xRVXpK222qrQ35+2s/lZgPnQT3/605p/xwBqa6yxRlp++eXz1d4tttiiqmUDmrc4sS2L354I38sss0y6884781gTEKLf/+23357/vxSDG0ERx4/zH2ama9eu6fXXX09jx47NF2Siz3e0wNp0001TUdRsF6xnz56pTZs2adSoUbUej/szGjwmHp/Z8uW/s7NO5k+NcfzUJ35I4r0++OCDgkrO/Hr8VGOdNE3zal/HyK8rrbSS359mZm6On9/97nc5LD3yyCM5DJU5/2k5GuP4qY/zn+ap5xweP9HUfIUVVsgjkR933HFp9913T+eee26hvz/CdsGiGUK/fv3y1ZGyadOm5fv9+/ev9zXxeOXy4dFHH61Zfrnllss7tXKZ0aNH51HxZrRO5k+NcfzU5z//+U/usxRTGdCyj59qrJOmaV7t66hB+PDDD/3+NDNzevzEaL9nnnlm7mYQ0/BUcv7TcjTG8VMf5z/NU/uC/v8Vr5k4cWKxvz8NHkqNBrv99tvzSHU33XRT6d133y0ddNBBpe7du5dGjhyZn99nn31KJ554Ys3yzz77bKlt27al3/3ud6XBgwfnkVvbtWtXeuutt2qWOe+88/I6/va3v5XefPPNPLLicsstV/ruu++q8hmZf46fMWPGlI4//vjS888/X/r4449Ljz32WGmdddYprbjiiqUJEyZU7XPSNI6fiRMnll577bV8W2yxxfKxEv9+//33G7xOmo/GOH6OO+640pNPPpl/f+L3assttyz17Nmz9Nlnn1XlM9J0jp84t2nfvn3p7rvvLo0YMaLmFv/fqlzG+U/LUPTx4/ynZbl9No+fc845p/TII4+UPvzww7x8nEfH+fR1111X6O+PsN1IrrjiitLSSy+dfwRiKPoXXnih5rlNNtkkT0VQ6c477yyttNJKeflVV1219I9//KPW8zH8/G9/+9tSr1698oG0xRZblIYMGTLPPg/z7/Ezfvz40tZbb11aZJFFcgiP6XkOPPBAQakZm53jJ05A4rpr3Vss19B10rwUffzsscceOYjH+pZYYol8/4MPPpjnn4umd/zE/4/qO37ionGZ85+Wpcjjx/lPy3PFbBw/J598cmmFFVYodezYsbTQQguV+vfvnwN7pSJ+f1rFfxpeDw4AAADMij7bAAAAUDBhGwAAAAombAMAAEDBhG0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsA0Iy0atUq3XfffdUuRho5cmTaaqutUpcuXVL37t2rXRwAmOeEbQBavP322y+H1Li1b98+rbDCCumMM85IU6ZMSU3VaaedltZaa63pHh8xYkTabrvtUrVdcskluSyvv/56eu+996pdHACY59rO+7cEgKZn2223TTfeeGOaOHFi+uc//5kOO+yw1K5du3TSSSdNt+ykSZNyKK+GUqmUpk6dOsPne/funZqCDz/8MPXr1y+tuOKK1S4KAFSFmm0ASCl16NAhB9VlllkmHXLIIWnLLbdM999/f03N984775zOPvvstPjii6c+ffrkx9966620+eabp06dOqUePXqkgw46KI0dO7ZmneXXnX766WmRRRZJ3bp1S7/85S9zWC+LcH/kkUemRRddNHXs2DFttNFG6eWXX655/sknn8w17g8++GAOr1HOW2+9Na/zjTfeqKmRv+mmm+ptRt7QMv7ud79Liy22WF4mLjRMnjx5ptvrmmuuScsvv3y+6BDb409/+lPNc8suu2z661//mm655ZZcnniPGbnhhhvSqquumj9XvP/hhx9e89zFF1+cVl999dwUfamllkqHHnporbJ/+umnaccdd0wLLbRQXibWExdKyt5+++1cy7/AAgukXr16pX322Sd98cUXNc/ffffdef3lbRP7fNy4cTP93ADQUMI2ANQjAlhlKB44cGAaMmRIevTRR9Pf//73HMq22WabHPQiHN91113pscceqxUWy68bPHhwDs233XZbuueee3JQLjvhhBNyML355pvTq6++mpuwx3q/+uqrWus58cQT03nnnZfXFX2hjzvuuBwuo6l23PbYY4/pPkNDy/jEE0/kmuj4G+WI4F4O7/W5995701FHHZXLEIH24IMPTvvvv39+fYj3ipYCP/nJT3LZLrvsshkG9gj2cQEgLgrExY34/GWtW7dOl19+eXrnnXdyuR5//PG8vcritXGx4umnn86vP//883OwDt98802+yLD22munV155JT300ENp1KhRuUwhyrXnnnumn//85zX7Z9ddd80tBwCgECUAaOEGDBhQ2mmnnfK/p02bVnr00UdLHTp0KB1//PE1z/fq1as0ceLEmtf84Q9/KC200EKlsWPH1jz2j3/8o9S6devSyJEja1638MILl8aNG1ezzDXXXFNaYIEFSlOnTs2vbdeuXenPf/5zzfOTJk0qLb744qULLrgg33/iiSci/ZXuu+++WmU+9dRTS2uuueZ0nyWWvffee2erjMsss0xpypQpNcv8+Mc/Lu2xxx4z3F4/+MEPSgceeGCtx+I122+/fc392J6x7pmJz3nyySeXGuquu+4q9ejRo+b+6quvXjrttNPqXfbMM88sbb311rUeGzZsWN4+Q4YMKQ0aNCj/+5NPPmnw+wPA7FCzDQAp5drqqBWNptzR9DhqimMQsrJoblzZTztqQ9dcc83cfLlsww03TNOmTcs14GWxTOfOnWvu9+/fPzeFHjZsWK5Njuba8bqy6Ce+3nrr5fVXWnfddWf7MzW0jFFD3qZNm5r70Zz7s88+m+l6K8tcXm/dMs9MrH/48OFpiy22mOEyUQsfzy+xxBKpa9euuRn4l19+mcaPH5+fj+b3Z511Vn7vU089Nb355ps1r40m9lHTHvu0fFt55ZXzc7HdY7vEumO//vjHP07XXXdd+vrrrxtcfgCYFWEbAFJKm222WR45+/3330/fffddbrZcGVIr/10Njfn+EfArRT/rCOSN3Ux/Zj755JP0ox/9KK2xxhq5mf2gQYPSVVddlZ8rN+//xS9+kT766KMcwqMZeVyQuOKKK/JzcUEj+nPHPq28xf7deOON88WF6BIQfeFXWWWV/Lroe/7xxx836ucGoOUQtgHg/w+z0V946aWXTm3bznqyjr59++ba08oBtZ599tncz7g8gFqIZSK8l73wwgu5ljUG/CoPMBavK4ua7ujzHAFwZuJ1MxuVfHbKOLtivZVlLq93VmWuFDXVMZBa9GmvT4TrCPwXXXRR2mCDDdJKK62Ua8Lriu0Yg85FX/joQx411GGdddbJfb3jPWK/Vt7KFy7iokLUikcf+tdeey1v0+iPDgBFELYBYA7stddeucn5gAED8iBh0WT5iCOOyLWsMfJ1WdTCHnDAAendd9/NI2VHc+cYoCwCb4S+GPn8V7/6VR7AK5Y58MADczPpeM3MRIiMWtiorY0RtmOgsDkt4+yK8sYAajHAWdQUx6jhEXaPP/742VpPNNOPMB2DoMV6YoC4cs10hOK48BD3o/Y6Rju/9tpra73+6KOPTg8//HDeDvHa+HxxIaA8eFoMMheDoMXFi2g6HsvGQG5xkeLFF19M55xzTh48bejQobn8n3/+ec3rAWBuCdsAMAeiH3aEtwh03//+99Puu++e+wBfeeWVtZaLx2Ku6Wi6HP3A/+d//qdWX/AYYXy33XbLAThqYz/44IO83hhBfGbiNTHidzR/j2nFYqTzOS3j7IqpwmKE8ZguLPp7//73v89zlG+66aaztZ64CHDppZemq6++Oq8nmo1H6A7RpzpCfIwwvtpqq6U///nP6dxzz631+gjNEaojIMe2iNrvWFeIKdqitj2W2XrrrXPf7Ajn3bt3zxc6Yhq2GMV8++23z6/7zW9+k4N/9NcHgCK0ilHSClkTAFBLzC8dU1BVznsNALQMarYBAACgYMI2AAAAFEwzcgAAACiYmm0AAAAomLANAAAABRO2AQAAoGDCNgAAABRM2AYAAICCCdsAAABQMGEbAAAACiZsAwAAQMGEbQAAAEjF+v8A7lYEmUT5AnoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Import necessary libraries\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "# Note: Suppressing FutureWarnings to maintain a clean output. This is specifically to ignore warnings about\n", + "# deprecated features in the libraries we're using (e.g., 'use_inf_as_na' option in Pandas, used by Seaborn),\n", + "# which we currently have no direct control over. This action is taken to ensure that our output remains\n", + "# focused on relevant information, acknowledging that we rely on external library updates to fully resolve\n", + "# these deprecations. Always consider reviewing and removing this suppression after significant library updates.\n", + "import warnings\n", + "warnings.simplefilter(action='ignore', category=FutureWarning)\n", + "\n", + "# Constants representing the parameters of the model\n", + "ATTACK_RATE = 0.10\n", + "TRACE_SUCCESS = 0.20\n", + "SECONDARY_TRACE_THRESHOLD = 2\n", + "\n", + "def simulate_event(m):\n", + " \"\"\"\n", + " Simulates the infection and tracing process for a series of events.\n", + " \n", + " This function creates a DataFrame representing individuals attending weddings and brunches,\n", + " infects a subset of them based on the ATTACK_RATE, performs primary and secondary contact tracing,\n", + " and calculates the proportions of infections and traced cases that are attributed to weddings.\n", + " \n", + " Parameters:\n", + " - m: Dummy parameter for iteration purposes.\n", + " \n", + " Returns:\n", + " - A tuple containing the proportion of infections and the proportion of traced cases\n", + " that are attributed to weddings.\n", + " \"\"\"\n", + " # Create DataFrame for people at events with initial infection and traced status\n", + " events = ['wedding'] * 200 + ['brunch'] * 800\n", + " ppl = pd.DataFrame({\n", + " 'event': events,\n", + " 'infected': False,\n", + " 'traced': np.nan # Initially setting traced status as NaN\n", + " })\n", + "\n", + " # Explicitly set 'traced' column to nullable boolean type\n", + " ppl['traced'] = ppl['traced'].astype(pd.BooleanDtype())\n", + "\n", + " # Infect a random subset of people\n", + " infected_indices = np.random.choice(ppl.index, size=int(len(ppl) * ATTACK_RATE), replace=False)\n", + " ppl.loc[infected_indices, 'infected'] = True\n", + "\n", + " # Primary contact tracing: randomly decide which infected people get traced\n", + " ppl.loc[ppl['infected'], 'traced'] = np.random.rand(sum(ppl['infected'])) < TRACE_SUCCESS\n", + "\n", + " # Secondary contact tracing based on event attendance\n", + " event_trace_counts = ppl[ppl['traced'] == True]['event'].value_counts()\n", + " events_traced = event_trace_counts[event_trace_counts >= SECONDARY_TRACE_THRESHOLD].index\n", + " ppl.loc[ppl['event'].isin(events_traced) & ppl['infected'], 'traced'] = True\n", + "\n", + " # Calculate proportions of infections and traces attributed to each event type\n", + " ppl['event_type'] = ppl['event'].str[0] # 'w' for wedding, 'b' for brunch\n", + " wedding_infections = sum(ppl['infected'] & (ppl['event_type'] == 'w'))\n", + " brunch_infections = sum(ppl['infected'] & (ppl['event_type'] == 'b'))\n", + " p_wedding_infections = wedding_infections / (wedding_infections + brunch_infections)\n", + "\n", + " wedding_traces = sum(ppl['infected'] & ppl['traced'] & (ppl['event_type'] == 'w'))\n", + " brunch_traces = sum(ppl['infected'] & ppl['traced'] & (ppl['event_type'] == 'b'))\n", + " p_wedding_traces = wedding_traces / (wedding_traces + brunch_traces)\n", + "\n", + " return p_wedding_infections, p_wedding_traces\n", + "\n", + "# Run the simulation 100 times\n", + "results = [simulate_event(m) for m in range(100)]\n", + "props_df = pd.DataFrame(results, columns=[\"Infections\", \"Traces\"])\n", + "\n", + "# Plotting the results\n", + "plt.figure(figsize=(10, 6))\n", + "sns.histplot(props_df['Infections'], color=\"blue\", alpha=0.75, binwidth=0.05, kde=False, label='Infections from Weddings')\n", + "sns.histplot(props_df['Traces'], color=\"red\", alpha=0.75, binwidth=0.05, kde=False, label='Traced to Weddings')\n", + "plt.xlabel(\"Proportion of cases\")\n", + "plt.ylabel(\"Frequency\")\n", + "plt.title(\"Impact of Contact Tracing on Perceived Flu Infection Sources\")\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "a142fb87", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWGBJREFUeJzt3QeYVOXdP+4HqaIoig0UsSM27MbeUUl8bTFGUdEYY+xGjUrMGyUascQajRijojGxl5iiRo0ldsWuBMWGBXuhCVLmf32f9zf7n10WWGDPDrt739c14sycOfPMKbPzOU9rUyqVSgkAAABodAs0/ioBAACAIHQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAPMgz/96U9p9dVXT+3bt09du3atdnGYS23atEmnn356tYtBHQcddFBaYYUVmv0xUc3PUZ+pU6emk046KfXs2TMtsMACaffdd2+y937nnXfyth02bFiTvSdAtQndQL3iB1H8MHr22WdTc/fPf/6zkED13//+N/+YXnnlldOVV16Z/vCHP8z2NS+88ELaf//984/djh07psUXXzztsMMO6ZprrknTpk1LRXn88cfzNvjqq69Skf7yl7+kiy66aLbLRVni+JrdbZtttim0vK3FQw89VGu7xkWilVZaKR144IHprbfeqnbxmq1ygKzv9p3vfKfw/XnrrbfO1euvvvrqdN5556Xvf//76dprr00/+9nPqvZd0NT+9re/pa233jottdRSqXPnzvk8+MEPfpDuueeeahcNaMHaVbsAAE0Rui+77LJGD97xw3f69Onp4osvTqussspsl//jH/+YfvrTn6all146HXDAAWnVVVdN48aNSw888EA65JBD0pgxY9IvfvGLVFToHjx4cL5IUGSNfPzQfuWVV9Jxxx03y+X23HPPWtts/Pjx6fDDD0977LFHfq4stlVT+Oabb1K7di3/T+IxxxyTNtpoozRlypT03HPP5QtF//jHP9LLL7+cevTokeY3cTErzrH53b777pv69+9f67Ell1wyza/+/e9/p2WXXTZdeOGFTf5d0KtXr3y+xYWfpvbb3/42/fznP8+he9CgQTl0jxo1Kt1///3pxhtvTDvvvHOTlwloHVr+LwyAgnzyySf534aE2CeffDIH7k033TRfBOjSpUvNc/GjNFoUxA/U1mKdddbJt7LPPvssh+54LFoCzMykSZNShw4dcpPYxtSpU6fUGmy55Za5djMcfPDBabXVVstBPGo7I4TMiwkTJqSFFlooNaZqBLO5sf7668/yuJ0fv7uq1R0mauircb5Fk/ozzjgj7bjjjulf//rXTL/Pm1IR5wwwf9K8HGiwqCVdeOGF0+jRo9P3vve9/P9RWxK1yCFqy7bbbrv8IyJqM6Kmo74m64888kg67LDDUrdu3dIiiyySm7h++eWXtZb961//mr773e/m2rdohh1NuOMHU31NsJ966qlcy7TYYovl947gFrXP5TKXy1fZ9HN2fv/736c111wzv3eU4cgjj6zVNDv6Z5522mk1NVqz6/8ZtcyxzJ///Odagbtsww03zGWt/DF2wgkn1DRD7927d66lKZVKtV4X6zzqqKPSnXfemdZaa628bJS7sqlklCtqd8KKK65Ysw2iaWyIpu2x36K5Zbx+jTXWSJdffnm9n+Puu+/OtUTxGWLfRa1peT9HU/CoNX333Xdr3mNe+rGWm9BGDdQvf/nLfKxFzdTYsWPTF198kU488cS09tpr5+MwyrLLLrukF198sd6gHtsgAmb82O/evXuuTX/zzTdrbcfK/Vdu/h61YOXWAYsuumgOqhMnTqy1/qi1i+C6xBJL5O3yP//zP+mDDz5ocJ/g+LEfLR2iVj/K17dv3xyC62vGHMdA1E7H+RD7Krb/M888M5dbOOX9Ht5+++1a+zjCeZxL8XniPHz11Vfr/S6IbRjnXiw3YMCA/Fy59Ufsm/g8cX5EDWLdrirXX3992mCDDdKCCy6Yu1n88Ic/TO+9994M71M+hqJ2PpaLfVBXHBPxXnFMlE2ePDmfo9GiIrZVnEvRjzkerxT3o3l1lLO8/95///1UpPKxHf82Vn/nhhyz5fU/+OCDeZ+Wz9NyOWLfRZPw+A6J7RnHZHxX1/1+npfvgpl9xqh9Lx93UfbddtstjRgxYo4/48zEhb04TjbffPN6n4/vvzk9L+dkPzbVOfPGG2+kvfbaKy2zzDJ5Xcstt1xe7uuvv57l9gGKpaYbmCMReiPcbLXVVuncc8/NITJCX/xQOvXUU/OPiAg0Q4cOzWE6anYj6FWK5ePHUvyAGjlyZA548eOs/AMmxI+V+IFy/PHH53/jB9mvfvWr/KMp+iKW3XffffkCQASpY489Nv/QiB9qf//73/P9+MH44Ycf5uVi0LOGiHJFSI6+1lH7Wi5jhJvHHnss177FD9Prrrsu3XHHHfm5KGNlzW2l+DEYTchjmy2//PKzff8I1vHDP34Yx4++ddddN9177705OEeYq9sk9NFHH0233357OuKII/IPuUsuuST/6IqLI3FhI/bH66+/nm644Yb82giHlc1fo/zxIzveM5pYR5/HWFf8EIyLDWWxT370ox/lZaNWNPbh888/nwP+fvvtl/d//LCLwFIuY2yXeRUXW6J2OwJVBKT4/9deey1faNh7773z8fXxxx+nK664IoeAeK7cVDqO1zg+YvvHD884JqJJfxwP0bIgwuusRF/PWP+QIUNyc+zoIhA/zs8555xaP6Zvvvnm3GUg+vE+/PDDOag2RAT2CCgRIuK8iPe65ZZb8jrjIk+Ut1KEmih/HNdxrsQ5GPs3+mXPTa1w+cJDHCchzpGBAwemnXbaKX/GOHbj+Nhiiy3yvq68iBI1h7FcPBcXA+KCSIhjNo6V+J748Y9/nJf7z3/+k1t7xMWl8Jvf/Cb97//+b96+scynn36afve73+VzJN6nvlrY+HzR/SCO9djXcRyUxbEQx0bs4xDHbhzPcW785Cc/SX369MkXBeO4jHMhli+L948wE8fwZpttlr9rGrr/ymI7RairFGGwGjX1szpm45yPfRzbP7p0xDIhtk+I4yr2XYTYuJAUF2MuvfTSvE/K331FfBdE8+44XqJ/dXz/xnkRx0ME5PgMdS/eNeS8rCuej7Aa329HH310Dq2NdV42VNHnzLfffpvXH+dCfMb4exh/M+LvYZQ7jkmgSkoA9bjmmmuiSrX0zDPP1Dw2cODA/NhZZ51V89iXX35ZWnDBBUtt2rQp3XjjjTWP//e//83LnnbaaTOsc4MNNih9++23NY+fe+65+fG//vWvNY9NnDhxhjIddthhpc6dO5cmTZqU70+dOrW04oorlnr16pXLUWn69Ok1/3/kkUfm9TfEJ598UurQoUOpX79+pWnTptU8fumll+Z1XH311TWPxWeLxz799NNZrvPFF1/Myx177LENKsOdd96Zlz/zzDNrPf79738/b+dRo0bVPBbLRXkrHyu/3+9+97uax84777z82Ntvvz3D+9W3rXfaaafSSiutVHP/q6++KnXp0qW0ySablL755puZbuvvfve7eX/MqdiGdY+XBx98MD8W5ahbxjgGKvdPiM/WsWPH0q9//euax2J/xTouuOCCGd6zstx137u8b3/0ox/Ves0ee+xR6tatW8394cOH5+WOO+64WssddNBBM6yzPhdddFFe7vrrr695LM6NTTfdtLTwwguXxo4dW/PZYrl47y+++KJm2Thn4vG//e1vs3yf8raM7RHb+sMPPyz94x//KK2wwgr5mIrzfNy4caWuXbuWDj300Fqv/eijj0qLLrporcfL3wWnnHJKrWX//e9/58ePOeaYmW7vd955p9S2bdvSb37zm1rPv/zyy6V27drVejzep/J4uvfee+v9vP379691vP7pT38qLbDAAqX//Oc/tZYbOnRofv1jjz2W77/wwgv5/hFHHFFruf32269B+6+8X+q7xTaf2eco74/KZSrXF9+Vs1J+/S233DLHx2zYeuutS2uuuWatx2Jbxev//Oc/13r8nnvuqfX4vH4X1PcZ11133dJSSy1V+vzzz2t9j8U+PPDAA+fqM9bnV7/6VX79QgstVNpll13ysRbn8Nyel3OyH5vinHn++ednOC6A+YPm5cAci6vsZXF1PZo+R013XIEvi8fiufpGRo6ap8oaoKhNjhrW6OtcFjUSZVGzF7VI0fQwapRi1PAQV/ejJib6RNetGWtIE/KZ1bhEbUGss7Lf8KGHHpqbUEaTyTkVtfOhvmbl9Ynt0LZt21zTVCmam0c+jGadlaJGvrLGNmrco6wNHZW6cltH7VRs66gxjteXmyRGzXDsh1NOOWWG/phzu60bKmpeK8sYorlwef9Ebfbnn3+ea9LiuIuar7Lbbrst1+xHrU9dDSl39MOvFMdgvFd5n5ab8UfLgEr1vd/M9nXURsVAXGVxbsS+j5rIqDWvtM8+++RuFJXlCQ3d11E7GbWd0RIganOjG0M0mY3atNjHURsWZYljoHyLY3GTTTbJLS/qinO3Umzv2K7lrhf1be+oqY6a6Pi+qHyf2A4xuGB971PZHD7250033VTzWDR9jrLHtimLWsmovY3p/Crfo9ycvvwe5e+cuufa7AYCrO87LcpQeYvmyNUwu2N2ZmKbRU1o9Hmu3GbRnDnOrfI2a+zvghhAMmZ1iFrkytrn+B6LslT+XZjXzxgtmKK1yHrrrZdbD0WNfHy+6JNf2ZR9Ts/LOVHkOVOuyY7PNrvm9kDT0rwcmCPl/maV4g999Bur+4MrHq+vL2D8SKgUP+iieXi5j3GI/obRjzeaetb9IVUOguWmsdGXubFEM/cQ4a1SNGWNpo/l5+dEBOAQP1QbWoYIRXVDerkJaN0y1NdkPYJZfdu+PtFsNH7wPfHEEzP8UIttHfuxiG3dUHW7J1T2gYy+93HhpbKvf7mpdIhyx76c25HJ627bcuCNbRv7NfZFhP+6ZWzIaPYhXh/nQ92B4Rq6ryvL0xDRRSMCSgTpCK/xPuVtE31BQzmYzuw4LovXxXlfKbZ3HLuzarob7xMXj+p+D5TNqkl2vGd0nYjgFE1o4+JLBJLo710ZuuM9IkTNbATx8qBZ5f1Xt5tB3fN/duKzxMWv+cHsjtmZiW0W53vdvs11t1ljfxfM7Ds3xPEZAbLugGNz+xlDBOm4xd+VGA8kmnXH8bTrrrvmLifxN25Oz8uGKvqcie+h6JJ1wQUX5K5fca5HN4sY5E/TcqguoRuYI/FjfU4erzvwV0NEbVvUtMaPp1//+tf5B3H8EIoazJNPPrlZTCFUN4DFj63oU1qEedn28YNv++23zzWC8UMtBpuKCwxR0xN9MeeHbV23ljucddZZuX9j1NxGn+/4wRo/kKOGsjHL3JjH9fxQnhioaWbhsLzdos9v1KDVVffCRWVrgzkR7xMX6KLFRn2fZ3bjAES/7ejTHa/ffffdc3/6OH4ra5bjPeKzxjFdnzjOq2lmNcL1DRTZVMdIbLMI3BHW6jM/TYHWGOdl/H2JmvS4RWiNFh8RwuNvT1H7sSnOmfPPPz+3GojBSGOU9qidj77v0T+8buAHmo7QDTS5uGq/7bbb1tyP5nrRxLA8z20MqBZNBaMGKwaJKascYTmUa6eidmJWtUxz0uQxRl0PMXha1GyXRZPzeP+5qc2KwXKi9jBq7WOk2dn94I8yRDP3qBmvrO0uN6svl3FOzGwbxKBCUWN411131ao9qtvEt3Jbz6oWt+im5mW33nprPoauuuqqGS7YlAeKK5c7fkhHTWgRg1rFvogfxHFsVNZCxQBMDX39Sy+9lNdR+WN8Xvb13Crv4whec1trG+uImskYXX5mNXexTISjqJWLEeXnVHwnRMuYaGIeA1LFeRXNhOu+R4xkHxeUZnVMlvdfuUVEWZz/RSrXzFbOiDAvNaiNIbZZfO/E4GX1XeiqXK4xvwsqv3PrivMgzueip9WK7hURuuPv0Jycl42xH4s4Z+KCU9yitdjjjz+e92kMbnrmmWc2uFxA49KnG2hyMeVRhKCyGB05RmuNkVtD+Up+Za1FhN5oSlwp+uHFj5AYSbzuj57K15Z/sNVdpj4RNqKmN0YAr1xHhLtoejmnoxqXRfPtWF+McB0XGeoaPnx4zXQ0cfEhakpi1OBKUfMcP2TL22lOzGwb1Let43PGNGKV+vXrly8ARI1JTME1q23dFFPTRLnr1mpFn9QYqbdSNEWOvo91t2Vj1VbHSMGh7rEZowo3ROzrjz76qFYf5TgX4vVRezUntW6N8Vmi9i9aEVSen2UxWvLsxPaO7Rp9Z2e2vWO09dh/sUzdfRD344LbrEQIirnG44JR1MrH9qpsWh6i72scC1deeWW9I1NHc+VQPpfifK8U3ylFitAW2yCmT6xU9zhqSrHN4nsnWo7UFdu4/N3R2N8FcQElZmiI77/K76cI9VFTW74YO6+i60x0oalPeZyM8oWXhp6XjbEfG/OciSbzUc5KEb7jnKk7VR7QtNR0A00uAnTUQMWPvKjdiB8oUWMVfc9CTNsTNQgxgFY0jYugGT+u6/7YiB8SEdijL178aItpbuIHXNRGRJ/wqD0IMVBOiHVFsIgfL+WpheprQhlT4MSPm5gnNcpULmPMQxt94+ZGfKaYLzwG3IqmsBG+o2Y0arOjZj9qmsu1EPF5ohY3au+in3s0m40fn9FcMJpPz26aq/qUt0GsMz571PrG+8QP6LjIEP8f0wXFBYEIKlHbWa71CRHGIvTHIHqxHWJaoNhHUZsYP2bLFwzifeKHavQrjOXiB2qsu7HFNGDR9SD2eWzbaLofzWIrWyeEmLYupnaL8jz99NO5j2MErqjRi30RcwHPi/i88aM5Qlr88C1PGRbTUjWkti8G4Iqm0tEcNC68xNRIUYsf/exjnQ0dfK8xxD6O8ymOzbigFcdJnA8x9VwMIBi1ZfVdvKgUx228PkJstGiJcyhqC2P6o3gupl+K4zeO9TjP4viOJuLxOaO1QEzBF9ukcr7t+kTIjgAUF7MiVJT72pZFGaLZeQy4Fa02ouwRKOO7IR6P74ao3YzvjejfG+d3BMQ4lmJ6uYa2VJhb0b82pruLzxDHSGyTmNap3G+6GiJIxndAhOkY2Cy+G+J7IvZjXNCKMRTiYkcR3wUxDWRcAIkpJmP6rPKUYbGdGjLXfUNE2WL/xjkax2W0OIqQH9PHxfEZx2EMsDYn52Vj7MfGPGei1UcsH2WKGvEI4PG3M/7mxfcUUEXVHj4daF5ThsVUK3XVN/1MiOliYtqYuut8+OGHSz/5yU9Kiy22WJ5+ZcCAAbWmigkxpc93vvOdPB1Zjx49SieddFLNdEF1p2d59NFHSzvuuGOexibKt84669SaLiumFjv66KNLSy65ZJ4eqSFffTFF2Oqrr15q3759aemlly4dfvjhM0xL1tApwyrF9DQxHVF8plh3bIPtt9++dO2119aaAiumb/rZz35Ws9yqq66ap/2qnJInxPvHlGj1bfvYX5XOOOOM0rLLLpun4amcPuyuu+7K26xTp055CqlzzjmnZqqtulOMxbKbbbZZ3i+LLLJIaeONNy7dcMMNNc+PHz8+f76Yeipe39Dpw2Y1ZVh909/ElGEnnHBCqXv37rksm2++eemJJ57Ix2LcKsV0Y6eeemqeXi625TLLLJOnX3vzzTdnO2VY3X1bPoYrt8uECRPyPlh88cXz8bz77ruXRo4cmZc7++yzZ/vZP/7449LBBx9cWmKJJfL0b2uvvfYMU0aVpyCKY6CuhkxtNattWd+yMWVcTBMWx8TKK6+cp0B79tlnZ/tdUD7fopxx/sTnifMupmeqOzXTbbfdVtpiiy3yeuIWy8d2jG1X+T71HUNxHvTs2bPeqfUqp3iKYzm+m2IquTjXYrrCwYMHl77++uua5WLaq5iuKaacinLsuuuupffee2+Opgyrb79Uqu9zxLG111575WkQo2wxJeIrr7wyz1OGNeSYndl3dvjDH/6Qt1OcV/GdGsdjfP/GNHON8V0ws2nR7r///nwel9cX++G1116rtcycfMa6pkyZUrryyivz+RlliWMitv16662X99/kyZPn+Lyck/3YFOfMW2+9ladTi3M2zt34Ttp2223ztgWqq038p5qhH2g9YpTYqJl85plnci0TtFRRUxi1Ztdff30aMGBAtYsDAFSRPt0AMA+iKWxd0QQ1uj9UDgQIALRO+nQDwDw499xzc7/P6H8Z02rFoExxi36W1Z6aCgCoPqEbAOZBDM5033335VGfYyC6mHotBn+qO40VANA66dMNAAAABdGnGwAAAAoidAMAAEBBmnWf7unTp6cPP/wwdenSJbVp06baxQEAAKCVKJVKady4calHjx551pIWGbojcBsZFgAAgGp577330nLLLdcyQ3fUcJc/5CKLLFLt4gAAANBKjB07NlcCl3Npiwzd5SblEbiFbgAAAJra7Lo6G0gNAAAACiJ0AwAAQEGEbgAAAChIs+7T3VDTpk1LU6ZMqXYxoNVp3759atu2bbWLAQAAVdOupc+b9tFHH6Wvvvqq2kWBVqtr165pmWWWme0AEwAA0BK16NBdDtxLLbVU6ty5sx/90MQXvSZOnJg++eSTfL979+7VLhIAADS5di25SXk5cHfr1q3axYFWacEFF8z/RvCOc1FTcwAAWpsWO5BauQ931HAD1VM+B42rAABAa9RiQ3eZJuVQXc5BAABasxYfugEAAKBaWmyf7lkZPXp0+uyzz5rkvZZYYom0/PLLN8mgcQcccEB6/PHH8zRNRY3YPmzYsHTcccdVdUT4GKDrsMMOS7feemv68ssv0/PPP5/WXXfd1Bo0ZPuffvrp6c4770wvvPBCvn/QQQfl5eMxAACgabVrjYG7d+8+adKkiU3yfp06dU4jR46Yo+A9NyHpwgsvTGPGjMlBa9FFF02NYYUVVsgBL25l++yzT+rfv3+qpnvuuSeHz4ceeiittNJK+cJGNZ1yyil5X/33v/+teSz+v0+fPmngwIG5rGXx/3HBIPZveZCxol188cX5QgUAAND0Wl3ojhruCNx9+lyfOnfuU+h7TZw4Io0YsX9+z6Jru9988820wQYbpFVXXbXQ94mg2FRhcVafNaaf2myzzWa6zLfffps6dOjQJOXZdttt0znnnJNbG8R81OHBBx9MPXv2zBcGKsXj3/nOd5p0GzbWRRgAAGDOtdo+3RG4u3RZv9BbY4X6bbbZJh1zzDHppJNOSosvvngOdtGEuLJG+rbbbkvXXXddHrQqaspD1Kb++Mc/TksuuWRaZJFF0nbbbZdefPHFWuv+29/+ljbaaKPUqVOnXGO8xx571Lznu+++m372s5/ldZYHw4qa2q5du9Zax+WXX55WXnnlHHJ79+6d/vSnP9V6Pl77xz/+Ma87RrKOCwN33XVXzfPRRHzAgAG5nBFG4/lrrrmm3m0Rn+3oo4/OLRZivfHZy+U96qijcq18fI6ddtopP/7www+njTfeOHXs2DEH9aiVnjp1aq1tG+uL1y222GJp6aWXTldeeWWaMGFCOvjgg1OXLl3SKqusku6+++6Z7p8tttgiN+mvDNjx/0ceeWT64osv0jvvvFPr8QjpYfLkyenEE09Myy67bFpooYXSJptsMkNIj+0dF2xiu8X2+/zzz2d4/7PPPjuXO8p6yCGHpEmTJs2wzXbfffcGH0/lmvr4XHFcrLHGGun+++/P27vc+iIuasT2jm0ay/Tq1SsNGTJkptsIAABaq1Ybupuba6+9Ngezp556Kp177rnp17/+dbrvvvvyc88880zaeeed0w9+8IPcxDyaE4e99947z48cgXH48OFp/fXXT9tvv30OguEf//hHDnLRXDz6RT/wwAM5oIbbb789Lbfccvl9Yp1xq88dd9yRjj322HTCCSekV155JTedjrAaNbqVBg8enMv30ksv5feLkF0ux//+7/+m1157LZdzxIgROcTPrMl4fLYoU5QtyhSfvXIbRfB/7LHH0tChQ9MHH3yQ3ysuKsTFhljvVVddlc4888wZtm2839NPP50D+OGHH563XdSkP/fcc6lfv365v/zEifV3SYj9Eu9R+ZkjPMe23nzzzWsef+utt/LFgnLojtD6xBNPpBtvvDFvl3jP2I9vvPFGfj72dYToWC66DcTr6pb95ptvzoH5rLPOSs8++2wOwb///e/rLWdDj6eY4z5CegT9eP4Pf/hDOvXUU2u9/pJLLskXTuL9R44cmf785z/XXAABAAAqlJqxr7/+Ojqq5n/r+uabb0qvvfZa/rfS8OHD82s22GB4aZttSoXe4j3iveI958TAgQNLu+22W839rbfeurTFFlvUWmajjTYqnXzyyTX3Y/l4Xdl//vOf0iKLLFKaNGlSrdetvPLKpSuuuCL//6abbloaMGDATMvRq1ev0oUXXljrsWuuuaa06KKL1tzfbLPNSoceemitZfbee+9S//79a+7HNvjlL39Zc3/8+PH5sbvvvjvf33XXXUsHH3xwqaGiTFG2SrGN1ltvvVqP/eIXvyj17t27NH369JrHLrvsstLCCy9cmjZtWr3bdurUqaWFFlqodMABB9Q8NmbMmFzeJ554YqZlOvXUU0urrbZa/v9XX301b/tY11lnnVU68MAD8+NXXXVVqVOnTnmfvPvuu6W2bduWPvjgg1rr2X777UuDBg3K/7/vvvvW2o5hn332qbX9Yx8eccQRtZbZZJNNSn379p3r4yn2S7t27fLnLrvvvvvyNrjjjjvy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fpcuhd7mJtQvs8wyNbdFF10013yX7//3v/9NXbp0SXfffXfaYIMNUseOHdOjjz6aa3Z32223tPTSS+dQvtFGG+X5zytNnjw5nXzyyTmoxutWWWWVdNVVV9U8/8orr6Rddtklvz7Wc8ABB9Rqgj9hwoR04IEH5ue7d++ezj///Fl+jmHDhqXBgwenF198MX+GuMVj5dYGUd5Y1yKLLJJ+8IMfpI8//niWoTsuPHz00Uc1jz388MPplFNOySG77O23307vvvtuXj689957ed1du3ZNiy++eH7Pd955p2b5uGBx/PHH5+e7deuWTjrppBmmr2vI547m5ZVN7OOz/vGPf0x77LFH6ty5c1p11VXTXXfdVes1cT8e79SpUy7vtddem18XTdtDfI5dd901LbbYYrkWfc0110z//Oc/Z7nNAQCA+U+rDd3NWYTNs88+O40YMSKts846afz48al///7pgQceSM8//3zaeeedc2CLcFsWwfGGG25Il1xySX7dFVdcUVNrHkFvu+22S+utt1569tln0z333JNDcATWsp///Oc56P71r39N//rXv3LYfe6552Zaxn322SedcMIJOSxG7X3c4rHp06fn8PvFF1/k9d13333prbfeys/NzOabb57at2+fa7fDa6+9lr755pt0yCGHpM8//zyH7RDPR4jddNNN05QpU9JOO+2UL1JEU/PHHnssf97YNt9++21ePgJ0XAi4+uqr88WLKFPdGvU5/dxlccEhtt9LL72U982AAQPy+kOU9/vf/37afffd80WJww47LJ166qm1Xn/kkUfmCyWPPPJIevnll9M555xTq5UDAADQPLTsdskt1K9//eu044471tyPWty+ffvW3D/jjDNyeIza1KOOOiq9/vrr6eabb84Bd4cddsjLrLTSSjXLX3rppTlwn3XWWTWPRRCNWvF4bY8ePXKt+PXXX5+23377/HzUzC633HIzLeOCCy6YQ2I0fY9a+rIoQ4TICJ6x/nDdddflcB59o6OWvq6o6d14441z4N13333zv1tssUWusd9ss83y/RVXXDH/G4E7Ho+yRsCPGudyP/no/x212rFcv379cu30oEGD0p577lnTT/zee++ted+4mDGnn7ssmrxHWUNs17jY8fTTT+fQHxc8evfunc4777z8fPx/tDT4zW9+U/P6uGCy1157pbXXXnuG/QUAADQfarqboQ033LDW/QiHJ554YurTp08OlRF2oza7XNMdA5m1bds2bb311vWuL2pbo5Y4Xle+rb766vm5aLoet6gd3mSTTWoF/QiLcyrKFWG7HLjDGmuskcsdz81qxPByU/L4N+6H+EyVj5eblsdnGjVqVK7pLn+mKPOkSZPy5/n6669z7XvlZ4oLBJXbdl4+d7RAqLxoEM3oP/nkk3w/msrXvbgQFxUqHXPMMenMM8/MtfwxeF7UmAMAAM2P0N0M1R0pOwJ31GxHjWo0pY6QHTWk5WbUUes8KxHaozl6vK7y9sYbb6StttoqzQ8iTEet+wcffJDDdfkCQjl0R0COPtzRTL78maLfe93PFOvYb7/9Ci9vNIevFLXtUfPeUD/+8Y9zs/voWx8tA+JiwO9+97sCSgoAABRJ6G4Bor9yNGeOgbsibEdz7soBw+KxCHzRN7k+66+/fnr11VfzgGAxwFrlLQL+yiuvnEPkU089VfOaL7/8MgfYWenQoUMerKxS1MZHOI5bWfTRjn7lUeM9M9GMPNb3+9//PtdWR6AOUWP86aef5ubw5Wbo5c8UFw2WWmqpGT5TDFAXtxgYrfIzTZ06NQ0fPrzm/tx+7tmJmvLoO18pmtbXFa0BfvrTn6bbb78994+/8sor5+l9AQCApid0twAxCnYEs6jJjWbVUZNbWasaYTqm0frRj36U582O/tRROxz9vMuDdsUgX9EHOcJf1BpH3+aDDz44h+Zomh2DlsWgYv/+979z/+MI+QssMOvDJ9433ivKFSOhx8Bg0ac8LgLEwGIxIFn0c45B3qLGum6z+UpRWx/zdUdtbzS5jubyIYJ45ePlGuZY/xJLLJEHbYva//Jnjmbb77//fl7m2GOPzQPSxTaJkeGPOOKImtHDw9x+7tmJgdPi/WI0+XJ/+/LI7uX+58cdd1zeB1Hu2E7R/D8uWAAAAM1Lqx1ILebQbgnvES644IIcqKM2OIJmhLmxY8fWWubyyy9Pv/jFL3KwjBG/Y97wuB9ioLSoLY/XxQBjEY579eqVB/0qB8wY9KvcDD36SUfNa/SLnpUYCCwuBkTT8AizMZBZhNYYCfzoo4/OTddj/fE+DWk6HeuJ0bzL/bnLIrBHKC335w4xVVcsG58pBkobN25cWnbZZfOAaNG/OsRniH7dcUEiyhHbMFoLVH6uufncsxODvt166615XRdffHEe/C1GLz/88MPzIHAhLnbExZC4QBDljW104YUXztP7AgAATa9Nqe7ExM1IBMtoJhwhqBykyqIJctQSRsCJaaTKYnCxPr17p4mTJjVJGTt36pRGjByZQy7MTIxcHqOnVza7bylmdi4CQEsSLdOi+9vwDTZI63fpUu3iQLP23LhxaYPhw3PXz+g22hzzaKuu6Y7wGyE4mjs3hah5FripK/qmR3/0bt265VYGUaMe07sBAAAtS6sL3SFCsCBMNcUgbzElWPSlj2MxmprHnOEAAEDL0ipDN1Rb9M/WRxsAAFo+o5cDAABAQYRuAAAAKEiLD92V81UDTc85CABAa9Zi+3R36NAhz7384YcfpiWXXDLfb9OmTbWLBa1GzEb47bffpk8//TSfi3EOAgBAa9NiQ3f8yI95gceMGZODN1AdnTt3ziO0xzkJAACtTYsN3SFq1uLH/tSpU9O0adOqXRxoddq2bZvatWunlQkAAK1Wiw7dIX7st2/fPt8AAACgKWnvCQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAABoqaH7gw8+SPvvv3/q1q1bWnDBBdPaa6+dnn322WoXCwAAAOZZu1RFX375Zdp8883Ttttum+6+++605JJLpjfeeCMttthi1SwWAAAANP/Qfc4556SePXuma665puaxFVdcsZpFAgAAgJbRvPyuu+5KG264Ydp7773TUkstldZbb7105ZVXVrNIAAAA0DJqut966610+eWXp+OPPz794he/SM8880w65phjUocOHdLAgQNnWH7y5Mn5VjZ27NgmLjEAwPxl9OjR6bPPPqt2MVq9ESNG5H8nTJyYxqWWqX379qlTp07VLgY0O1UN3dOnT8813WeddVa+HzXdr7zySho6dGi9oXvIkCFp8ODBVSgpAMD8Gbh79+6TJk2aWO2i8P+8NmJEmppapgUWWCBtsvHGgjc0p9DdvXv3tMYaa9R6rE+fPum2226rd/lBgwblWvHKmu7oEw4A0BpFDXcE7j59rk+dO/epdnFatYkTR6QRI/ZPCy3YJ3Vp2zm1NNOmT8yfccqUKUI3NKfQHSOXjxw5stZjr7/+eurVq1e9y3fs2DHfAAD4/0Xg7tJl/WoXg6gNbts5tW3XJbU4LbX6Hlr6QGo/+9nP0pNPPpmbl48aNSr95S9/SX/4wx/SkUceWc1iAQAAQPMP3RtttFG644470g033JDWWmutdMYZZ6SLLrooDRgwoJrFAgAAgObfvDx873vfyzcAAABoaapa0w0AAAAtmdANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAtMXSffvrpqU2bNrVuq6++ejWLBAAAAI2mXaqyNddcM91///0199u1q3qRAAAAoFFUPeFGyF5mmWWqXQwAAABoeX2633jjjdSjR4+00korpQEDBqTRo0dXu0gAAADQ/Gu6N9lkkzRs2LDUu3fvNGbMmDR48OC05ZZbpldeeSV16dJlhuUnT56cb2Vjx45t4hIDAABAMwndu+yyS83/r7POOjmE9+rVK918883pkEMOmWH5IUOG5GAOAAAAzUHVm5dX6tq1a1pttdXSqFGj6n1+0KBB6euvv665vffee01eRgAAAGiWoXv8+PHpzTffTN27d6/3+Y4dO6ZFFlmk1g0AAADmV1UN3SeeeGJ6+OGH0zvvvJMef/zxtMcee6S2bdumfffdt5rFAgAAgObfp/v999/PAfvzzz9PSy65ZNpiiy3Sk08+mf8fAAAAmruqhu4bb7yxmm8PAAAAradPNwAAALQkQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACA+Sl0v/XWW41fEgAAAGhh5ip0r7LKKmnbbbdN119/fZo0aVLjlwoAAABaa+h+7rnn0jrrrJOOP/74tMwyy6TDDjssPf30041fOgAAAGhtoXvddddNF198cfrwww/T1VdfncaMGZO22GKLtNZaa6ULLrggffrpp41fUgAAAGhNA6m1a9cu7bnnnumWW25J55xzTho1alQ68cQTU8+ePdOBBx6YwzgAAAC0VvMUup999tl0xBFHpO7du+ca7gjcb775ZrrvvvtyLfhuu+3WeCUFAACAZqbd3LwoAvY111yTRo4cmfr375+uu+66/O8CC/xfhl9xxRXTsGHD0gorrNDY5QUAAICWXdN9+eWXp/322y+9++676c4770zf+973agJ32VJLLZWuuuqqBq/z7LPPTm3atEnHHXfc3BQJAAAAWkZN9xtvvDHbZTp06JAGDhzYoPU988wz6YorrsgjogMAAECrrumOpuUxeFpd8di11147R+saP358GjBgQLryyivTYostNjfFAQAAgJZT0z1kyJBcM11XNCn/yU9+0uAa7nDkkUem7373u2mHHXZIZ5555iyXnTx5cr6VjR07dg5LDgAAzK0JEydWuwi0AhNa2HE2V6F79OjRebC0unr16pWfa6gbb7wxPffcc7l5eUPD/uDBg+eorAAAwLyZXvo2/ztixIhqF4VW4PX/929LmYJ6rkJ31Gi/9NJLM4xO/uKLL6Zu3bo1aB3vvfdeOvbYY/P0Yp06dWrQawYNGpSOP/74WjXdMSc4AABQnFJpav63U6feqX27hatdHFq4TlM/T2nSO+mrr75KrTZ077vvvumYY45JXbp0SVtttVV+7OGHH84h+oc//GGD1jF8+PD0ySefpPXXX7/msWnTpqVHHnkkXXrppbkZedu2bWu9pmPHjvkGAAA0vQUW6JzatutS7WLQwrWdpnl5OuOMM9I777yTtt9++9Su3f+tYvr06enAAw9MZ511VoPWEa99+eWXaz128MEHp9VXXz2dfPLJMwRuAAAAaBWhO6YDu+mmm3L4jiblCy64YFp77bVzn+6GilrytdZaq9ZjCy20UG6eXvdxAAAAaDWhu2y11VbLNwAAAKCRQnf0vR42bFh64IEHcr/saFpe6d///vfcrDY99NBDc/U6AAAAaDGhOwZMi9Ad82tHU/A2bdo0fskAAACgNYbumF/75ptvTv3792/8EgEAAEALscDcDqS2yiqrNH5pAAAAoLWH7hNOOCFdfPHFqVQqNX6JAAAAoDU3L3/00UfTgw8+mO6+++605pprpvbt29d6/vbbb2+s8gEAAEDrCt1du3ZNe+yxR+OXBgAAAFp76L7mmmsavyQAAADQwsxVn+4wderUdP/996crrrgijRs3Lj/24YcfpvHjxzdm+QAAAKB11XS/++67aeedd06jR49OkydPTjvuuGPq0qVLOuecc/L9oUOHNn5JAQAAoDXUdB977LFpww03TF9++WVacMEFax6Pft4PPPBAY5YPAAAAWldN93/+85/0+OOP5/m6K62wwgrpgw8+aKyyAQAAQOur6Z4+fXqaNm3aDI+///77uZk5AAAAMJehu1+/fumiiy6qud+mTZs8gNppp52W+vfv35jlAwAAgNbVvPz8889PO+20U1pjjTXSpEmT0n777ZfeeOONtMQSS6Qbbrih8UsJAAAArSV0L7fccunFF19MN954Y3rppZdyLfchhxySBgwYUGtgNQAAAGjN2s31C9u1S/vvv3/jlgYAAABae+i+7rrrZvn8gQceOLflAQAAgNYdumOe7kpTpkxJEydOzFOIde7cWegGAACAuR29/Msvv6x1iz7dI0eOTFtssYWB1AAAAGBeQnd9Vl111XT22WfPUAsOAAAArVWjhe7y4GoffvhhY64SAAAAWlef7rvuuqvW/VKplMaMGZMuvfTStPnmmzdW2QAAAKD1he7dd9+91v02bdqkJZdcMm233Xbp/PPPb6yyAQAAQOsL3dOnT2/8kgAAAEAL06h9ugEAAIB5rOk+/vjjG7zsBRdcMDdvAQAAAK0zdD///PP5NmXKlNS7d+/82Ouvv57atm2b1l9//Vp9vQEAAKC1mqvQveuuu6YuXbqka6+9Ni222GL5sS+//DIdfPDBacstt0wnnHBCY5cTAAAAWkef7hihfMiQITWBO8T/n3nmmUYvBwAAgHkJ3WPHjk2ffvrpDI/HY+PGjZubVQIAAECLM1ehe4899shNyW+//fb0/vvv59ttt92WDjnkkLTnnns2fikBAACgtfTpHjp0aDrxxBPTfvvtlwdTyytq1y6H7vPOO6+xywgAAACtJ3R37tw5/f73v88B+80338yPrbzyymmhhRZq7PIBAABA62peXjZmzJh8W3XVVXPgLpVKjVcyAAAAaI2h+/PPP0/bb799Wm211VL//v1z8A7RvNx0YQAAADAPoftnP/tZat++fRo9enRual62zz77pHvuuWduVgkAAAAtzlz16f7Xv/6V7r333rTccsvVejyamb/77ruNVTYAAABofTXdEyZMqFXDXfbFF1+kjh07Nka5AAAAoHWG7i233DJdd911NffbtGmTpk+fns4999y07bbbNmb5AAAAoHU1L49wHQOpPfvss+nbb79NJ510Unr11VdzTfdjjz3W+KUEAACA1lLTvdZaa6XXX389bbHFFmm33XbLzc333HPP9Pzzz+f5ugEAAIC5qOmeMmVK2nnnndPQoUPTqaeeWkypAAAAoDXWdMdUYS+99FIxpQEAAIDW3rx8//33T1dddVXjlwYAAABa+0BqU6dOTVdffXW6//770wYbbJAWWmihWs9fcMEFjVU+AAAAaB2h+6233korrLBCeuWVV9L666+fH4sB1SrF9GEAAADAHIbuVVddNY0ZMyY9+OCD+f4+++yTLrnkkrT00ksXVT4AAABoHX26S6VSrft33313ni4MAAAAaKSB1GYWwgEAAIC5DN3RX7tun219uAEAAKAR+nRHzfZBBx2UOnbsmO9PmjQp/fSnP51h9PLbb799TlYLAAAALdIche6BAwfOMF83AAAA0Aih+5prrpmTxQEAAKBVm6eB1AAAAICZE7oBAACgIEI3AAAAFEToBgAAgJYYui+//PK0zjrrpEUWWSTfNt1003T33XdXs0gAAADQMkL3csstl84+++w0fPjw9Oyzz6btttsu7bbbbunVV1+tZrEAAACg6acMa2y77rprrfu/+c1vcu33k08+mdZcc82qlQsAAACafeiuNG3atHTLLbekCRMm5GbmAAAA0NxVPXS//PLLOWRPmjQpLbzwwumOO+5Ia6yxRr3LTp48Od/Kxo4d24QlBQAAgGY2ennv3r3TCy+8kJ566ql0+OGHp4EDB6bXXnut3mWHDBmSFl100Zpbz549m7y8AAAA0GxCd4cOHdIqq6ySNthggxyq+/btmy6++OJ6lx00aFD6+uuva27vvfdek5cXAAAAmk3z8rqmT59eqwl5pY4dO+YbAAAANAdVDd1Rc73LLruk5ZdfPo0bNy795S9/SQ899FC69957q1ksAAAAaP6h+5NPPkkHHnhgGjNmTO6jvc466+TAveOOO1azWAAAAND8Q/dVV11VzbcHAACAlj2QGgAAALRUQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAALTE0D1kyJC00UYbpS5duqSllloq7b777mnkyJHVLBIAAAC0jND98MMPpyOPPDI9+eST6b777ktTpkxJ/fr1SxMmTKhmsQAAAKBRtEtVdM8999S6P2zY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6eGHH05PPfVUreVPP/30NHjw4CqUFAAAAGb03nvvpeWWWy7NlzXdSyyxRGrbtm36+OOPaz0e95dZZpkZlh80aFAedK1s+vTp6YsvvkjdunVLbdq0aZIyw/xyVa1nz575BF9kkUWqXRyoCucBOA8gOA+olqi/HjduXOrRo8csl6tq6O7QoUPaYIMN0gMPPJB23333miAd94866qgZlu/YsWO+VeratWuTlRfmN/GHxR8XWjvnATgPIDgPqIZFF110tstUNXSHqLkeOHBg2nDDDdPGG2+cLrroojRhwoQ8mjkAAAA0Z1UP3fvss0/69NNP069+9av00UcfpXXXXTfdc889MwyuBgAAAM1N1UN3iKbk9TUnB+oX3SxOO+20GbpbQGviPADnAQTnAfO7qo5eDgAAAC3ZAtUuAAAAALRUQjcAAAAUROgGAACAggjdMJ+47LLL0gorrJA6deqUNtlkk/T000/Pcvlbbrklrb766nn5tddeO/3zn/+s9fxBBx2U2rRpU+u28847F/wpoOnOg1dffTXttddeefk4vmPKyXldJ7TE8+D000+f4e9B/P2AlnIeXHnllWnLLbdMiy22WL7tsMMOMywfw1jFbEndu3dPCy64YF7mjTfeaIJPAkI3zBduuummPGd9jLz53HPPpb59+6addtopffLJJ/Uu//jjj6d99903HXLIIen5559Pu+++e7698sortZaLkD1mzJia2w033NBEnwiKPw8mTpyYVlpppXT22WenZZZZplHWCS3xPAhrrrlmrb8Hjz76aIGfApr2PHjooYfy76IHH3wwPfHEE6lnz56pX79+6YMPPqhZ5txzz02XXHJJGjp0aHrqqafSQgstlNc5adKkJvxktFoxejlQXRtvvHHpyCOPrLk/bdq0Uo8ePUpDhgypd/kf/OAHpe9+97u1Httkk01Khx12WM39gQMHlnbbbbcCSw3VPQ8q9erVq3ThhRc26jqhpZwHp512Wqlv376NXlYoyrx+d0+dOrXUpUuX0rXXXpvvT58+vbTMMsuUzjvvvJplvvrqq1LHjh1LN9xwQwGfAGpT0w1V9u2336bhw4fnZk5lCyywQL4fV2vrE49XLh/iam3d5ePK71JLLZV69+6dDj/88PT5558X9Cmg6c+DaqwTilTkMRvNaHv06JFrxQcMGJBGjx7dCCWG+fM8iBYgU6ZMSYsvvni+//bbb6ePPvqo1joXXXTR3Gzd3wOagtANVfbZZ5+ladOmpaWXXrrW43E//kDUJx6f3fLRtPy6665LDzzwQDrnnHPSww8/nHbZZZf8XtASzoNqrBOKVNQxG8Fi2LBh6Z577kmXX355DiDR/3XcuHGNUGqY/86Dk08+OV9kKofs8uv8PaBa2lXtnYFC/fCHP6z5/xhobZ111kkrr7xyrv3efvvtq1o2AJpOXHAti78FEcJ79eqVbr755jw2CLQkMb7BjTfemH/vxCBsMD9Q0w1VtsQSS6S2bdumjz/+uNbjcX9mg+LE43OyfIgmhfFeo0aNaqSSQ3XPg2qsE4rUVMds165d02qrrebvAS3uPPjtb3+bQ/e//vWvfIGprPw6fw+oFqEbqqxDhw5pgw02yM3Ay6ZPn57vb7rppvW+Jh6vXD7cd999M10+vP/++7lPd0yVAS3hPKjGOqFITXXMjh8/Pr355pv+HtCizoMYnfyMM87I3Sg23HDDWs+tuOKKOVxXrnPs2LF5FHN/D2gSdQZWA6rgxhtvzCNoDhs2rPTaa6+VfvKTn5S6du1a+uijj/LzBxxwQOmUU06pWf6xxx4rtWvXrvTb3/62NGLEiDwybfv27Usvv/xyfn7cuHGlE088sfTEE0+U3n777dL9999fWn/99UurrrpqadKkSVX7nNCY58HkyZNLzz//fL517949H/Px/2+88UaD1wmt4Tw44YQTSg899FD+exB/P3bYYYfSEkssUfrkk0+q8hmhsc+Ds88+u9ShQ4fSrbfeWhozZkzNLX4PVS4T6/jrX/9aeumll/IMLyuuuGLpm2++qcpnpHURumE+8bvf/a60/PLL5z8aMVXGk08+WfPc1ltvnacAq3TzzTeXVltttbz8mmuuWfrHP/5R89zEiRNL/fr1Ky255JI5jMc0MoceeqigQYs6DyJAxLXjurdYrqHrhNZwHuyzzz45kMf6ll122Xx/1KhRTf65oKjzIH7n1HceRKVEWUwb9r//+7+lpZdeOgf67bffvjRy5Mgm/1y0Tm3iP01Tpw4AAACtiz7dAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0A0AK0adMm3XnnndUuRvroo4/SjjvumBZaaKHUtWvXahcHAKpO6Aag1TrooINyWI1bhw4d0iqrrJJ+/etfp6lTp6b51emnn57WXXfdGR4fM2ZM2mWXXVK1XXjhhbksL7zwQnr99derXRwAqLp21S4AAFTTzjvvnK655po0efLk9M9//jMdeeSRqX379mnQoEEzLPvtt9/mcF4NpVIpTZs2babPL7PMMml+8Oabb6YNNtggrbrqqtUuCgDMF9R0A9CqdezYMQfWXr16pcMPPzztsMMO6a677qqpCd99993Tb37zm9SjR4/Uu3fv/PjLL7+ctttuu7Tgggumbt26pZ/85Cdp/PjxNessv27w4MFpySWXTIssskj66U9/mkN7WYT8Y445Ji211FKpU6dOaYsttkjPPPNMzfMPPfRQroG/++67c4iNcl5//fV5nS+++GJNDf2wYcPqbV7e0DL+9re/Td27d8/LxAWHKVOmzHJ7XX755WnllVfOFx9ie/zpT3+qeW6FFVZIt912W7ruuutyeeI9Zubqq69Oa665Zv5c8f5HHXVUzXMXXHBBWnvttXMT9Z49e6YjjjiiVtnffffdtOuuu6bFFlssLxPriQsmZa+88kqu9V944YXT0ksvnQ444ID02Wef1Tx/66235vWXt03s8wkTJszycwPA3BK6AaBCBLHKcPzAAw+kkSNHpvvuuy/9/e9/z+Fsp512yoEvQvItt9yS7r///lqhsfy6ESNG5PB8ww03pNtvvz0H5rKTTjopB9Rrr702Pffcc7lpe6z3iy++qLWeU045JZ199tl5XdFX+oQTTsghM5pwx22fffaZ4TM0tIwPPvhgrpmOf6McEeDLIb4+d9xxRzr22GNzGSLYHnbYYenggw/Orw/xXtFy4Ac/+EEu28UXXzzT4B4BPy4ExMWBuMgRn79sgQUWSJdcckl69dVXc7n+/e9/5+1VFq+NixaPPPJIfv0555yTA3b46quv8sWG9dZbLz377LPpnnvuSR9//HEuU4hy7bvvvulHP/pRzf7Zc889c0sCAChECQBaqYEDB5Z22223/P/Tp08v3XfffaWOHTuWTjzxxJrnl1566dLkyZNrXvOHP/yhtNhii5XGjx9f89g//vGP0gILLFD66KOPal63+OKLlyZMmFCzzOWXX15aeOGFS9OmTcuvbd++fenPf/5zzfPffvttqUePHqVzzz0333/wwQcjBZbuvPPOWmU+7bTTSn379p3hs8Syd9xxxxyVsVevXqWpU6fWLLP33nuX9tlnn5lur80226x06KGH1nosXtO/f/+a+7E9Y92zEp/z1FNPLTXULbfcUurWrVvN/bXXXrt0+umn17vsGWecUerXr1+tx9577728fUaOHFkaPnx4/v933nmnwe8PAPNCTTcArVrUXkctaTTxjibJUXMcg5WVRTPkyn7cUTvat2/f3Ky5bPPNN0/Tp0/PNeJlsUznzp1r7m+66aa5ifR7772Xa5ejGXe8riz6kW+88cZ5/ZU23HDDOf5MDS1j1Ji3bdu25n408/7kk09mud7KMpfXW7fMsxLr//DDD9P2228/02WiVj6eX3bZZVOXLl1y8/DPP/88TZw4MT8fzfLPPPPM/N6nnXZaeumll2peG03vo+Y99mn5tvrqq+fnYrvHdol1x37de++905VXXpm+/PLLBpcfAOaU0A1Aq7btttvmkbbfeOON9M033+TmzJVhtfL/q6HI94+gXyn6YUcwL7r5/qy888476Xvf+15aZ511cvP74cOHp8suuyw/V272/+Mf/zi99dZbOYxH8/K4MPG73/0uPxcXNqK/d+zTylvs36222ipfZIiuAtFXfo011sivi77pb7/9dqGfG4DWS+gGoFWLUBv9iZdffvnUrt3sJ/Xo06dPrk2tHHjrsccey/2QywOthVgmQnzZk08+mWtdY2Cw8kBk8bqyqPmOPtERBGclXjerUcznpIxzKtZbWebyemdX5kpRcx0DrkWf9/pEyI7gf/7556fvfOc7abXVVss143XFdozB6aKvfPQxjxrrsP766+e+4PEesV8rb+ULGHFxIWrJo4/9888/n7dp9FcHgCII3QAwBwYMGJCbog8cODAPJhZNmY8++uhc6xojZZdFrewhhxySXnvttTyydjSDjoHMIvhG+IuR0n/+85/ngb5imUMPPTQ3n47XzEqEyaiVjdrbGJE7BhSb2zLOqShvDLQWA6FFzXGMMh6h98QTT5yj9UTz/QjVMVharCcGkivXVEc4jgsQcT9qs2N09KFDh9Z6/XHHHZfuvffevB3itfH54oJAeZC1GIwuBkuLixjRpDyWjQHf4mLFU089lc4666w8yNro0aNz+T/99NOa1wNAYxO6AWAORD/tCHER7DbaaKP0/e9/P/cRvvTSS2stF4/FXNXRpDn6if/P//xPrb7iMSL5XnvtlYNw1M6OGjUqrzdGHJ+VeE2MEB7N4mM6shgZfW7LOKdiirEYkTymGYv+4FdccUWe43ybbbaZo/XExYCLLroo/f73v8/riebkEb5D9LmOMB8jkq+11lrpz3/+cxoyZEit10d4jnAdQTm2RdSGx7pCTO0Wte+xTL9+/XLf7QjpXbt2zRc8Yvq2GPW8f//++XW//OUv8wWA6M8PAEVoE6OpFbJmAGilYn7qmLqqct5sAKB1UtMNAAAABRG6AQAAoCCalwMAAEBB1HQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEAqxv8HPP6/XVAu5mkAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Import necessary libraries\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "# Note: Suppressing FutureWarnings to maintain a clean output. This is specifically to ignore warnings about\n", + "# deprecated features in the libraries we're using (e.g., 'use_inf_as_na' option in Pandas, used by Seaborn),\n", + "# which we currently have no direct control over. This action is taken to ensure that our output remains\n", + "# focused on relevant information, acknowledging that we rely on external library updates to fully resolve\n", + "# these deprecations. Always consider reviewing and removing this suppression after significant library updates.\n", + "import warnings\n", + "warnings.simplefilter(action='ignore', category=FutureWarning)\n", + "\n", + "# Constants representing the parameters of the model\n", + "ATTACK_RATE = 0.10\n", + "TRACE_SUCCESS = 0.20\n", + "SECONDARY_TRACE_THRESHOLD = 2\n", + "\n", + "def simulate_event(m):\n", + " \"\"\"\n", + " Simulates the infection and tracing process for a series of events.\n", + " \n", + " This function creates a DataFrame representing individuals attending weddings and brunches,\n", + " infects a subset of them based on the ATTACK_RATE, performs primary and secondary contact tracing,\n", + " and calculates the proportions of infections and traced cases that are attributed to weddings.\n", + " \n", + " Parameters:\n", + " - m: Dummy parameter for iteration purposes.\n", + " \n", + " Returns:\n", + " - A tuple containing the proportion of infections and the proportion of traced cases\n", + " that are attributed to weddings.\n", + " \"\"\"\n", + " # Create DataFrame for people at events with initial infection and traced status\n", + " events = ['wedding'] * 200 + ['brunch'] * 800\n", + " ppl = pd.DataFrame({\n", + " 'event': events,\n", + " 'infected': False,\n", + " 'traced': np.nan # Initially setting traced status as NaN\n", + " })\n", + "\n", + " # Explicitly set 'traced' column to nullable boolean type\n", + " ppl['traced'] = ppl['traced'].astype(pd.BooleanDtype())\n", + "\n", + " # Infect a random subset of people\n", + " infected_indices = np.random.choice(ppl.index, size=int(len(ppl) * ATTACK_RATE), replace=False)\n", + " ppl.loc[infected_indices, 'infected'] = True\n", + "\n", + " # Primary contact tracing: randomly decide which infected people get traced\n", + " ppl.loc[ppl['infected'], 'traced'] = np.random.rand(sum(ppl['infected'])) < TRACE_SUCCESS\n", + "\n", + " # Secondary contact tracing based on event attendance\n", + " event_trace_counts = ppl[ppl['traced'] == True]['event'].value_counts()\n", + " events_traced = event_trace_counts[event_trace_counts >= SECONDARY_TRACE_THRESHOLD].index\n", + " ppl.loc[ppl['event'].isin(events_traced) & ppl['infected'], 'traced'] = True\n", + "\n", + " # Calculate proportions of infections and traces attributed to each event type\n", + " ppl['event_type'] = ppl['event'].str[0] # 'w' for wedding, 'b' for brunch\n", + " wedding_infections = sum(ppl['infected'] & (ppl['event_type'] == 'w'))\n", + " brunch_infections = sum(ppl['infected'] & (ppl['event_type'] == 'b'))\n", + " p_wedding_infections = wedding_infections / (wedding_infections + brunch_infections)\n", + "\n", + " wedding_traces = sum(ppl['infected'] & ppl['traced'] & (ppl['event_type'] == 'w'))\n", + " brunch_traces = sum(ppl['infected'] & ppl['traced'] & (ppl['event_type'] == 'b'))\n", + " p_wedding_traces = wedding_traces / (wedding_traces + brunch_traces)\n", + "\n", + " return p_wedding_infections, p_wedding_traces\n", + "\n", + "# Run the simulation 10 times\n", + "results = [simulate_event(m) for m in range(10)]\n", + "props_df = pd.DataFrame(results, columns=[\"Infections\", \"Traces\"])\n", + "\n", + "# Plotting the results\n", + "plt.figure(figsize=(10, 6))\n", + "sns.histplot(props_df['Infections'], color=\"blue\", alpha=0.75, binwidth=0.05, kde=False, label='Infections from Weddings')\n", + "sns.histplot(props_df['Traces'], color=\"red\", alpha=0.75, binwidth=0.05, kde=False, label='Traced to Weddings')\n", + "plt.xlabel(\"Proportion of cases\")\n", + "plt.ylabel(\"Frequency\")\n", + "plt.title(\"Impact of Contact Tracing on Perceived Flu Infection Sources\")\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "f6d17b39", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAX9JJREFUeJzt3QecFOX9P/CH3kRRULCBxoLYWyzRJPYafxYSjbGgMWqMvetPY++9a2JUNBpr1Kix18Su2PWCXTCAiA3kpO//9X1+/73X3nHAATcc3L3fr9ey7Ozs7DMzO3v7madMq1KpVEoAAABAo2vd+IsEAAAAgtANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A1QsL/+9a9phRVWSO3atUvdunVr6uIwi1q1apVOOeWUpi4Gdey1115pqaWWmuc/E025HvWZNGlSOuaYY9KSSy6ZWrdunXbYYYc59t6ffvpp3rYDBw6cY+8JUCShG5hl8YMofhi9+uqraV734IMPFhKo/vOf/+Qf08sss0y69tpr05///OcZvuaNN95Iu+++e/6x26FDh7TQQgulzTbbLN1www1p8uTJqSjPP/983gbffvttKtLf/va3dMkll8xwvihLfL5mdNtoo40KLW9L8fTTT9farnGS6Ec/+lHac88908cff9zUxZtnlQNkfbf11luv8P151113zdLrr7/++nT++eenX/7yl+nGG29Mhx9+eJN9F8xp999/f/r5z3+eFllkkdS5c+d8HOy8887p4YcfbuqiAfOotk1dAIC5JXRfeeWVjR6844fvlClT0qWXXpqWXXbZGc7/l7/8Jf3+979PPXv2THvssUdabrnl0pgxY9ITTzyR9tlnnzR8+PD0v//7v6mo0H3qqafmkwRF1sjHD+133nknHXbYYdOdb6eddqq1zb7//vt0wAEHpB133DE/Vxbbak744YcfUtu2zf/P5iGHHJJ+/OMfp4kTJ6bXXnstnyj65z//md5+++202GKLpblNnMyKY2xut+uuu6Ztttmm1rSFF144za2efPLJtPjii6eLL754jn8X9OnTJx9vceJnTrvgggvS0UcfnUP38ccfn0P3hx9+mB5//PF02223pa222mqOlwmY9zX/Xw8ATWjkyJH5viEh9sUXX8yBe/31188nAbp27VrzXPwojRYF8QO1pVh11VXzrWzUqFE5dMe0aAkwLePGjUvt27fPTWIbU8eOHVNL8NOf/jTXboa99947Lb/88jmIR21nhJDZMXbs2NSlS5fUmJoimM2KNddcc7qf27nxu6upusNEDX1THG/RpP70009Pm2++eXr00Uen+X0+JxVxzABznublQKOKWtL55psvDRkyJP3iF7/I/4/akqhFDlFbtskmm+QfEVGbETUd9TVZ/9e//pX233//1L179zT//PPnJq7ffPNNrXn/8Y9/pG233TbXvkUz7GjCHT+Y6muC/dJLL+VapgUXXDC/dwS3qH0ul7lcvsqmnzNy1VVXpZVWWim/d5ThwAMPrNU0O/pnnnzyyTU1WjPq/xm1zDHPLbfcUitwl6299tq5rJU/xo488siaZuh9+/bNtTSlUqnW62KZBx10ULr33nvTyiuvnOeNclc2lYxyRe1OWHrppWu2QTSNDdG0PfZbNLeM16+44orp6quvrnc9HnrooVxLFOsQ+y5qTcv7OZqCR63pZ599VvMes9OPtdyENmqgTjzxxPxZi5qp0aNHp6+//jodddRRaZVVVsmfwyjL1ltvnd588816g3psgwiY8WN/0UUXzbXpH330Ua3tWLn/ys3foxas3DpggQUWyEG1urq61vKj1i6Ca48ePfJ2+Z//+Z/03//+t8F9guPHfrR0iFr9KN9qq62WQ3B9zZjjMxC103E8xL6K7f/KK6/M4hZOeb+HTz75pNY+jnAex1KsTxyH7777br3fBbEN49iL+Xbbbbf8XLn1R+ybWJ84PqIGsW5XlZtvvjmttdZaqVOnTrmbxa9//es0dOjQqd6n/BmK2vmYL/ZBXfGZiPeKz0TZ+PHj8zEaLSpiW8WxFP2YY3qleBzNq6Oc5f33+eefpyKVP9tx31j9nRvymS0v/6mnnsr7tHyclssR+y6ahMd3SGzP+EzGd3Xd7+fZ+S6Y1jpG7Xv5cxdl33777VNVVdVMr+O0xIm9+JxssMEG9T4f338ze1zOzH6cU8fMBx98kPr375969eqVl7XEEkvk+b777rvpbh9g1qnpBhpdhN4INz/72c/Seeedl0NkhL74oXTCCSfkHxERaK655pocpqNmN4JepZg/fizFD6jBgwfngBc/zso/YEL8WIkfKEcccUS+jx9kJ510Uv7RFH0Ryx577LF8AiCC1KGHHpp/aMQPtQceeCA/jh+Mw4YNy/PFoGcNEeWKkBx9raP2tVzGCDfPPfdcrn2LH6Y33XRTuueee/JzUcbKmttK8WMwmpDHNuvdu/cM3z+Cdfzwjx/G8aNv9dVXT4888kgOzhHm6jYJffbZZ9Pdd9+d/vCHP+Qfcpdddln+0RUnR+LERuyP999/P9166635tREOK5u/RvnjR3a8ZzSxjj6Psaz4IRgnG8pin/z2t7/N80ataOzD119/PQf83/zmN3n/xw+7CCzlMsZ2mV1xsiVqtyNQRUCK/7/33nv5RMOvfvWr/Pn64osv0p/+9KccAuK5clPp+LzG5yO2f/zwjM9ENOmPz0O0LIjwOj3R1zOWf/bZZ+fm2NFFIH6cn3vuubV+TN9xxx25y0D0433mmWdyUG2ICOwRUCJExHER73XnnXfmZcZJnihvpQg1Uf74XMexEsdg7N/olz0rtcLlEw/xOQlxjAwYMCBtueWWeR3jsxufjw033DDv68qTKFFzGPPFc3EyIE6IhPjMxmclvid+97vf5fn+/e9/59YecXIpnHnmmemPf/xj3r4xz5dffpkuv/zyfIzE+9RXCxvrF90P4rMe+zo+B2XxWYjPRuzjEJ/d+DzHsbHffvulfv365ZOC8bmMYyHmL4v3jzATn+Gf/OQn+bumofuvLLZThLpKEQaboqZ+ep/ZOOZjH8f2jy4dMU+I7RPicxX7LkJsnEiKkzFXXHFF3ifl774ivguieXd8XqJ/dXz/xnERn4cIyLEOdU/eNeS4rCuej7Aa328HH3xwDq2NdVw2VNHHzIQJE/Ly41iIdYy/h/E3I/4eRrnjMwkUoAQwi2644YaoUi298sorNdMGDBiQp5111lk107755ptSp06dSq1atSrddtttNdP/85//5HlPPvnkqZa51lprlSZMmFAz/bzzzsvT//GPf9RMq66unqpM+++/f6lz586lcePG5ceTJk0qLb300qU+ffrkclSaMmVKzf8PPPDAvPyGGDlyZKl9+/alLbbYojR58uSa6VdccUVexvXXX18zLdYtpn355ZfTXeabb76Z5zv00EMbVIZ77703z3/GGWfUmv7LX/4yb+cPP/ywZlrMF+WtnFZ+v8svv7xm2vnnn5+nffLJJ1O9X33bessttyz96Ec/qnn87bfflrp27Vpad911Sz/88MM0t/W2226b98fMim1Y9/Py1FNP5WlRjrpljM9A5f4JsW4dOnQonXbaaTXTYn/FMi666KKp3rOy3HXfu7xvf/vb39Z6zY477ljq3r17zeNBgwbl+Q477LBa8+21115TLbM+l1xySZ7v5ptvrpkWx8b6669fmm+++UqjR4+uWbeYL97766+/rpk3jpmYfv/990/3fcrbMrZHbOthw4aV/vnPf5aWWmqp/JmK43zMmDGlbt26lfbdd99arx0xYkRpgQUWqDW9/F1w3HHH1Zr3ySefzNMPOeSQaW7vTz/9tNSmTZvSmWeeWev5t99+u9S2bdta0+N9Kj9PjzzySL3ru80229T6vP71r38ttW7duvTvf/+71nzXXHNNfv1zzz2XH7/xxhv58R/+8Ida8/3mN79p0P4r75f6brHNp7Ue5f1ROU/l8uK7cnrKr7/zzjtn+jMbfv7zn5dWWmmlWtNiW8Xrb7nlllrTH3744VrTZ/e7oL51XH311UuLLLJI6auvvqr1PRb7cM8995yldazPSSedlF/fpUuX0tZbb50/a3EMz+pxOTP7cU4cM6+//vpUnwugeJqXA4WIs+xlcXY9mj5HTXecgS+LafFcfSMjR81TZQ1Q1CZHDWv0dS6LGomyqNmLWqRoehg1SjFqeIiz+1ETE32i69aMNaQJ+bRqXKK2IJZZ2W943333zU0oo8nkzIra+VBfs/L6xHZo06ZNrmmqFM3NIx9Gs85KUSNfWWMbNe5R1oaOSl25raN2KrZ11BjH68tNEqNmOPbDcccdN1V/zFnd1g0VNa+VZQzRXLi8f6I2+6uvvso1afG5i5qvsr///e+5Zj9qfepqSLmjH36l+AzGe5X3abkZf7QMqFTf+01rX0dtVAzEVRbHRuz7qImMWvNKu+yyS+5GUVme0NB9HbWTUdsZLQGiNje6MUST2ahNi30ctWFRlvgMlG/xWVx33XVzy4u64titFNs7tmu560V92ztqqqMmOr4vKt8ntkMMLljf+1Q2h4/9efvtt9dMi6bPUfbYNmVRKxm1t3E5v8r3KDenL79H+Tun7rE2o4EA6/tOizJU3qI5clOY0Wd2WmKbRU1o9Hmu3GbRnDmOrfI2a+zvghhAMq7qELXIlbXP8T0WZan8uzC76xgtmKK1yBprrJFbD0WNfKxf9MmvbMo+s8flzCjymCnXZMe6zai5PdB4NC8HGl25v1ml+EMf/cbq/uCK6fX1BYwfCZXiB100Dy/3MQ7R3zD68UZTz7o/pMpBsNw0NvoyN5Zo5h4ivFWKpqzR9LH8/MyIABzih2pDyxChqG5ILzcBrVuG+pqsRzCrb9vXJ5qNxg++F154YaofarGtYz8Wsa0bqm73hMo+kNH3Pk68VPb1LzeVDlHu2JezOjJ53W1bDryxbWO/xr6I8F+3jA0ZzT7E6+N4qDswXEP3dWV5GiK6aERAiSAd4TXep7xtoi9oKAfTaX2Oy+J1cdxXiu0dn93pNd2N94mTR3W/B8qm1yQ73jO6TkRwiia0cfIlAkn0964M3fEeEaKmNYJ4edCs8v6r282g7vE/I7EucfJrbjCjz+y0xDaL471u3+a626yxvwum9Z0b4vMZAbLugGOzuo4hgnTc4u9KjAcSzbrj87TddtvlLifxN25mj8uGKvqYie+h6JJ10UUX5a5fcaxHN4sY5E/TciiO0A00uvixPjPT6w781RBR2xY1rfHj6bTTTss/iOOHUNRgHnvssfPEJYTqBrD4sRV9SoswO9s+fvBtuummuUYwfqjFYFNxgiFqeqIv5tywrevWcoezzjor92+Mmtvo8x0/WOMHctRQNmaZG/NzPTeUJwZqmlY4LG+36PMbNWh11T1xUdnaYGbE+8QJumixUd/6zGgcgOi3HX264/U77LBD7k8fn9/KmuV4j1jX+EzXJz7nTWlaNcL1DRQ5pz4jsc0icEdYq8/cdAm0xjgu4+9L1KTHLUJrtPiIEB5/e4raj3PimLnwwgtzq4EYjDRGaY/a+ej7Hv3D6wZ+oHEI3cBcKc7ab7zxxjWPo7leNDEsX+c2BlSLpoJRgxWDxJRVjrAcyrVTUTsxvVqmmWnyGKOuhxg8LWq2y6LJebz/rNRmxWA5UXsYtfYx0uyMfvBHGaKZe9SMV9Z2l5vVl8s4M6a1DWJQoagxvO+++2rVHtVt4lu5radXi1t0U/Oyu+66K3+GrrvuuqlO2JQHiiuXO35IR01oEYNaxb6IH8Tx2aishYoBmBr6+rfeeisvo/LH+Ozs61lV3scRvGa11jaWETWTMbr8tGruYp4IR1ErFyPKz6z4ToiWMdHEPAakiuMqmgnXfY8YyT5OKE3vM1nef+UWEWVx/BepXDNbeUWE2alBbQyxzeJ7JwYvq+9EV+V8jfldUPmdW1ccB3E8F31ZreheEaE7/g7NzHHZGPuxiGMmTjjFLVqLPf/883mfxuCmZ5xxRoPLBTScPt3AXCkueRQhqCxGR47RWmPk1lA+k19ZaxGhN5oSV4p+ePEjJEYSr/ujp/K15R9sdeepT4SNqOmNEcArlxHhLppezuyoxmXRfDuWFyNcx0mGugYNGlRzOZo4+RA1JTFqcKWoeY4fsuXtNDOmtQ3q29axnnEZsUpbbLFFPgEQNSZxCa7pbes5cWmaKHfdWq3okxoj9VaKpsjR97Hutmys2uoYKTjU/WzGqMINEft6xIgRtfoox7EQr4/aq5mpdWuMdYnav2hFUHl8lsVoyTMS2zu2a/Sdndb2jtHWY//FPHX3QTyOE27TEyEorjUeJ4yiVj62V2XT8hB9X+OzcO2119Y7MnU0Vw7lYymO90rxnVKkCG2xDeLyiZXqfo7mpNhm8b0TLUfqim1c/u5o7O+COIESV2iI77/K76cI9VFTWz4ZO7ui60x0oalPeZyM8omXhh6XjbEfG/OYiSbzUc5KEb7jmKl7qTyg8ajpBuZKEaCjBip+5EXtRvxAiRqr6HsW4rI9UYMQA2hF07gImvHjuu6PjfghEYE9+uLFj7a4zE38gIvaiOgTHrUHIQbKCbGsCBbx46V8aaH6mlDGJXDix01cJzXKVC5jXIc2+sbNilinuF54DLgVTWEjfEfNaNRmR81+1DSXayFifaIWN2rvop97NJuNH5/RXDCaT8/oMlf1KW+DWGase9T6xvvED+g4yRD/j8sFxQmBCCpR21mu9QkRxiL0xyB6sR3iskCxj6I2MX7Mlk8YxPvED9XoVxjzxQ/UWHZji8uARdeD2OexbaPpfjSLrWydEOKydXFptyjPyy+/nPs4RuCKGr3YF3Et4NkR6xs/miOkxQ/f8iXD4rJUDantiwG4oql0NAeNEy9xaaSoxY9+9rHMhg6+1xhiH8fxFJ/NOKEVn5M4HuLSczGAYNSW1XfyolJ8buP1EWKjRUscQ1FbGJc/iufi8kvx+Y3Pehxn8fmOJuKxntFaIC7BF9uk8nrb9YmQHQEoTmZFqCj3tS2LMkSz8xhwK1ptRNkjUMZ3Q0yP74ao3YzvjejfG8d3BMT4LMXl5RraUmFWRf/auNxdrEN8RmKbxGWdyv2mm0IEyfgOiDAdA5vFd0N8T8R+jBNaMYZCnOwo4rsgLgMZJ0DiEpNx+azyJcNiOzXkWvcNEWWL/RvHaHwuo8VRhPy4fFx8PuNzGAOszcxx2Rj7sTGPmWj1EfNHmaJGPAJ4/O2Mv3nxPQUUZA6MkA60sEuGxaVW6qrv8jMhLhcTl42pu8xnnnmmtN9++5UWXHDBfPmV3XbbrdalYkJc0me99dbLlyNbbLHFSsccc0zN5YLqXp7l2WefLW2++eb5MjZRvlVXXbXW5bLi0mIHH3xwaeGFF86XR2rI12NcImyFFVYotWvXrtSzZ8/SAQccMNVlyRp6ybBKcXmauBxRrFMsO7bBpptuWrrxxhtrXQIrLt90+OGH18y33HLL5ct+VV6SJ8T7xyXR6tv2sb8qnX766aXFF188X4an8vJh9913X95mHTt2zJeQOvfcc2sutVX3EmMx709+8pO8X+aff/7SOuusU7r11ltrnv/+++/z+sWlp+L1Db182PQuGVbf5W/ikmFHHnlkadFFF81l2WCDDUovvPBC/izGrVJcbuyEE07Il5eLbdmrV698+bWPPvpohpcMq7tvy5/hyu0yduzYvA8WWmih/HneYYcdSoMHD87znXPOOTNc9y+++KK09957l3r06JEv/7bKKqtMdcmo8iWI4jNQV0MubTW9bVnfvHHJuLhMWHwmlllmmXwJtFdffXWG3wXl4y3KGcdPrE8cd3F5prqXZvr73/9e2nDDDfNy4hbzx3aMbVf5PvV9huI4WHLJJeu9tF7lJZ7isxzfTXEpuTjW4nKFp556aum7776rmS8uexWXa4pLTkU5tttuu9LQoUNn6pJh9e2XSvWtR3y2+vfvny+DGGWLSyK+8847s33JsIZ8Zqf1nR3+/Oc/5+0Ux1V8p8bnMb5/4zJzjfFdMK3Loj3++OP5OC4vL/bDe++9V2uemVnHuiZOnFi69tpr8/EZZYnPRGz7NdZYI++/8ePHz/RxOTP7cU4cMx9//HG+nFocs3HsxnfSxhtvnLctUJxW8U9RgR5gZsUosVEz+corr+RaJmiuoqYwas1uvvnmtNtuuzV1cQCAgujTDQAFi6awdUUT1Oj+UDkQIADQ/OjTDQAFO++883K/z+h/GZfVikGZ4hb9LJv60lQAQLGEbgAoWAzO9Nhjj+VRn2Mgurj0Wgz+VPcyVgBA86NPNwAAABREn24AAAAoiNANAAAABdGnO6U0ZcqUNGzYsNS1a9fUqlWrpi4OAAAAc7noqT1mzJi02GKL5SuSTIvQnVIO3EaPBQAAYGYNHTo0LbHEEtN8XuhOKddwlzfW/PPP39TFAQAAYC43evToXHlbzpPTInTHEO7/v0l5BG6hGwAAgIaaURdlA6kBAABAQYRuAAAAKIjQDQAAAAXRpxsAAOZikydPThMnTmzqYkCL065du9SmTZvZXo7QDQAAc+k1gEeMGJG+/fbbpi4KtFjdunVLvXr1muFgadMjdAMAwFyoHLgXWWSR1Llz59n60Q/M/Emv6urqNHLkyPx40UUXTbNK6AYAgLmwSXk5cHfv3r2piwMtUqdOnfJ9BO84Fme1qbmB1AAAYC5T7sMdNdxA0ykfg7MzroLQDQAAcylNymHePwaFbgAAACiIPt0AADAPGTJkSBo1atQce78ePXqk3r17Fz5o3B577JGef/75fJmmokZsHzhwYDrssMOadET4GKBr//33T3fddVf65ptv0uuvv55WX3311BIMbMD2P+WUU9K9996b3njjjfx4r732yvPHtHmV0A0AAPNQ4O7bt18aN656jr1nx46d0+DBVQ0O3rMSki6++OI0fPjwHLQWWGCB1BiWWmqpHPDiVrbLLrukbbbZJjWlhx9+OIfPp59+Ov3oRz/KJzWa0nHHHZf31X/+85+aafH/fv36pQEDBuSylsX/44RB7N/yIGNFu/TSS/OJinmZ0A0AAPOIqOGOwN2v382pc+d+hb9fdXVVqqraPb9vkbXdH330UVprrbXScsstl4oUQXFOhcXprWtcfuonP/nJNOeZMGFCat++/Rwpz8Ybb5zOPffc3NogrkcdnnrqqbTkkkvmEwOVYvp66603R7fhAo10EqYp6dMNAADzmAjcXbuuWfitMYL9RhttlA455JB0zDHHpIUWWigHu2hCXFkj/fe//z3ddNNNedCqqCkPUZv6u9/9Li288MJp/vnnT5tsskl68803ay37/vvvTz/+8Y9Tx44dc43xjjvuWPOen332WTr88MPzMsuDYUVNbbdu3Wot4+qrr07LLLNMDrl9+/ZNf/3rX2s9H6/9y1/+kpcdI1nHiYH77ruv5vloIr7bbrvlckYYjedvuOGGerdFrNvBBx+cWyzEcmPdy+U96KCDcq18rMeWW26Zpz/zzDNpnXXWSR06dMhBPWqlJ02aVGvbxvLidQsuuGDq2bNnuvbaa9PYsWPT3nvvnbp27ZqWXXbZ9NBDD01z/2y44Ya5SX9lwI7/H3jggenrr79On376aa3pEdLD+PHj01FHHZUWX3zx1KVLl7TuuutOFdJje/fu3Ttvt9h+X3311VTvf8455+RyR1n32WefNG7cuKm22Q477NDgz1O5pj7WKz4XK664Ynr88cfz9i63voiTGrG9Y5vGPH369Elnn312KorQDQAAFOrGG2/Mweyll15K5513XjrttNPSY489lp975ZVX0lZbbZV23nnn3MQ8mhOHX/3qV/n6yBEYBw0alNZcc8206aab5iAY/vnPf+YgF83Fo1/0E088kQNquPvuu9MSSyyR3yeWGbf63HPPPenQQw9NRx55ZHrnnXdy0+kIq1GjW+nUU0/N5Xvrrbfy+0XILpfjj3/8Y3rvvfdyOauqqnKIn1aT8Vi3KFOULcoU6165jSL4P/fcc+maa65J//3vf/N7xUmFONkQy73uuuvSGWecMdW2jfd7+eWXcwA/4IAD8raLmvTXXnstbbHFFrm/fHV1/V0SYr/Ee1Suc4Tn2NYbbLBBzfSPP/44nywoh+4IrS+88EK67bbb8naJ94z9+MEHH+TnY19HiD7ooINyt4F4Xd2y33HHHTkwn3XWWenVV1/NIfiqq66qt5wN/TzFNe4jpEfQj+f//Oc/pxNOOKHW6y+77LJ84iTef/DgwemWW26pOQFSBM3LAQCAQq266qrp5JNPzv+PmuArrrgih+TNN9881xBHTW7UEpebNz/77LM5REbojufCBRdckGsqYwCy/fbbL5155pnp17/+dQ7EZauttlq+jxrQNm3a5NrT8jLrE8uMmtQ//OEP+fERRxyRXnzxxTy9HC5DzLPrrrvm/0dAjNAW5YuQGUF0jTXWSGuvvXZ+fnrhLZpKR5mibHXLFdslAmRZBMVo4h3bKmppV1hhhTRs2LB07LHHppNOOim1bt26Zp1PPPHE/P/jjz8+1xxHCN93333ztJg3AnsE42gaXp9Y1zvvvDP/P04gRG1zrNPPfvazHMDjRETcR61wLCPWOWrz436xxRbLr4ta7+ivHtNjG8UJhtg+xxxzTH5++eWXzwPlxTxll1xySQ7mcQsRyqNWum5t98x8niJ8RxP+KG95G8dnJZ4ri3LH66I2PLZt1HQXSU03AABQqAhJlaJGMwL1tETN7vfff5+6d++e5ptvvprbJ598kgNViNrTqI2dHVEzHbW5leJxTJ9W+aOGNZq7l8sfNctR2xsjkEfAjGA5K6JPe92yrb/++rWuEx1li+3y+eef11u2CPOxzVZZZZWaadF0O0xve0eT7ffffz/XvkdYjTAay/r5z39e02Q87qP2PE6CvP3227lGOYJ05f6J5vDl/RPljybnlWJ9KjVknpn9PEXNdZysqDypUW4BUXkSJT4/0Z0gmqo/+uijqUhqugEAgEJFn+FKESSnTJkyzfkjWEaQqttHOJT7ZM/JwbymV/6tt9469x9/8MEHcy1rnAiI/tBRWz4zIsw3Vtkqp5VD+/S2d4T5aNoeTcnjFmE7RLPzGEQvmpbHvojm9+X9E6E8mv3HfaUI33Pb56mu6KoQJ3CiS0DUrEfXgc022yy3oiiCmm4AAGCuEqEoRtNu27ZtHgis8lbuLx21ndGkeFoiREZt7PTEZbGiD3WleByDb82MaCIfl9e6+eabc5Pp6Ec8u6Js0We68nJZUbZonh59whtTnMAoD4QWtdVR810Ot9GcPPqSDx06tKbJfTQ9j20btct190+5hjnKH32qK0XT/UoNmWdmRe11lPWLL76omVbZd74sWivEJeRi4Lnbb789D+ZX7qff2NR0AwAAc5WodYxmxjEgVvRzjmbM0Z+5PHha9J+OPr1Rqxwjj0ff7hjVO2qbo89zuW/1v/71r/xcNImub3Czo48+OtdyRoiM94zR0GMQtqj9bKjoMx1Nw1daaaU8ovcDDzyQw+Tsin7mEeBjcLQYjCyaTcc6R7/zcn/uxhSBOq6XXj7pURa13lFrXx5wLcT+iMHk9txzz3ThhRfm7ffll1/mkyBxMmTbbbfNzbajBv2CCy5I22+/fXrkkUdq9ecOMYhdNPWO/RnzxoBm7777br5++ayKvtvxmYiTIPHZGTNmTE2f93Kt/0UXXZRbUkS5Y1tGf/Y4WVB3ZPvGInQDAFQMrhNNKWl+InAVeZ3pOS2un92c3qeuCEcRoGMwsRjEKwJdhKIY2KvcRzlqYyMsnX766XnwsKi5jOfLYkTraA4dASzCcGWNcVmE+hjwK4JhBMCll146DwRWrultiKhRjwHM4tJaUWP805/+NPfxnl1xKa7YBnFiIAZLi8HhYsCxcoAsInTHNovBz6KFQWXojrAflzGrbNYd2ykGPouR32Ok9TjGolb8F7/4RX4+/h+1yCeffHI+MREnNaLssb/KoqY5+oBHX/gYPK1///65j3wE9FkVzd1jwL243FycJIgAf/7556ftttsuDwQXorVABPIYaT3mj/liWxdxMiO0KtX36WthRo8enUcS/O677/LBCgC0zMDdr2/fVD2DUXOZN3Xu2DFVDR48zwTvCCDR5zRCYDkolD+nffv2S+PG1X/5pyJ07Ng5DR5cNc9sO6grmuXH4HAffvhhPgnTGMfizORINd0AACnlGu4I3Df365f6de7c1MWhEVVVV6fdq6ryPp7Xg2OUPwLwnGyR0dxaCdD83XPPPXlAt7gsWATtaMUQzddnNnA3FqEbAKBCBO41u3Zt6mLANEUAFoJh2qIfd/Ttj5YhcdIomrZH3/OmInQDAADQbOy55575NrdwyTAAAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEJcMAwCAeUhce3jUqFFz7P3iOsfN8brgG220UVp99dXTJZdckpqLvfbaK3377bfp3nvvbfB6L7XUUumwww7LN4ohdAMAwDwUuPv17Zuqx42bY+/ZuWPHVDV4cIOCd6tWrab7/Mknn5xOOeWUNC+IckZ4feONN2ZrOeutt14Ouddcc03NtPj/AQcckG644YYclMvi/x999FH697//neaUV155JXXp0mWOvV9LJHQDAMA8Imq4I3Df3K9f6te5c+HvV1VdnXavqsrv25DQPXz48Jr/33777emkk05KgwcPrpk233zz1fy/VCqlyZMnp7Ztm3ck2XjjjdM999xTa9pTTz2VllxyyfT000/XCt3xeMCAAXO0fAsvvPAcfb+WSJ9uAACYx0TgXrNr18JvMxvse/XqVXNbYIEFcs13+fF//vOf1LVr1/TQQw+ltdZaK3Xo0CE9++yzuWZ3++23Tz179syh/Mc//nF6/PHHay13/Pjx6dhjj81BNV637LLLpuuuu67m+XfeeSdtvfXW+fWxnD322KNWE/yxY8emPffcMz+/6KKLpgsvvHC66zFw4MB06qmnpjfffDOvQ9xiWrm1QZQ3ljX//POnnXfeOX3xxRfTDd1x4mHEiBE105555pl03HHH5ZBd9sknn6TPPvsszx+GDh2al92tW7e00EIL5ff89NNPa+aPExZHHHFEfr579+7pmGOOyScyKjVkvaN5eWUT+1jXv/zlL2nHHXdMnTt3Tsstt1y67777ar0mHsf0jh075vLeeOON+XXRtD3Eemy33XZpwQUXzLXoK620UnrwwQdTSyV0AwAAc0yEzXPOOSdVVVWlVVddNX3//fdpm222SU888UR6/fXX01ZbbZUDW4TbsgiOt956a7rsssvy6/70pz/V1JpH0Ntkk03SGmuskV599dX08MMP5xAcgbXs6KOPzkH3H//4R3r00Udz2H3ttdemWcZddtklHXnkkTksRu193GLalClTcvj9+uuv8/Iee+yx9PHHH+fnpmWDDTZI7dq1y7Xb4b333ks//PBD2meffdJXX32Vw3aI5yPErr/++mnixIlpyy23zCcpoqn5c889l9c3ts2ECRPy/BGg40TA9ddfn09eRJnq1qjP7HqXxQmH2H5vvfVW3je77bZbXn6I8v7yl79MO+ywQz4psf/++6cTTjih1usPPPDAfKLkX//6V3r77bfTueeeW6uVQ0vTvNtyAAAAc5XTTjstbb755jWPoxZ3tdVWq3l8+umn5/AYtakHHXRQev/999Mdd9yRA+5mm22W5/nRj35UM/8VV1yRA/dZZ51VMy2CaNSKx2sXW2yxXCt+8803p0033TQ/HzWzSyyxxDTL2KlTpxwSo+l71NKXRRkiREbwjOWHm266KYfz6BsdtfR1RU3vOuuskwPvrrvumu833HDDXGP/k5/8JD9eeuml830E7pgeZY2AHzXO5X7y0f87arVjvi222CLXTh9//PFpp512qukn/sgjj9S8b5zMmNn1Losm71HWENs1Tna8/PLLOfTHCY++ffum888/Pz8f/4+WBmeeeWbN6+OESf/+/dMqq6wy1f5qidR0AwAAc8zaa69d63GEw6OOOir169cvh8oIu1GbXa7pjoHM2rRpk37+85/Xu7yobY1a4nhd+bbCCivk56LpetyidnjdddetFfQjLM6sKFeE7XLgDiuuuGIudzw3vRHDy03J4z4eh1inyunlpuWxTh9++GGu6S6vU5R53LhxeX2+++67XPteuU5xgqBy287OekcLhMqTBtGMfuTIkflxNJWve3IhTipUOuSQQ9IZZ5yRa/lPPvnkXGPekgndAADAHFN3pOwI3FGzHTWq0ZQ6QnbUkJabUUet8/REaI/m6PG6ytsHH3yQfvazn6W5QYTpqHX/73//m8N1+QRCOXRHQI4+3NFMvrxO0e+97jrFMn7zm98UXt5oDl8patuj5r2hfve73+Vm99G3/u23384nAy6//PLUUgndAABAk4n+ytGcOQbuirAdzbkrBwyLaRH4om9yfdZcc8307rvv5gHBYoC1ylsE/GWWWSaHyJdeeqnmNd98800OsNPTvn37PFhZpaiNj3Act7Loox39yqPGe1qiGXks76qrrsq11RGoQ9QYf/nll7k5fLkZenmd4qTBIossMtU6xQB1cYuB0SrXadKkSWnQoEE1j2d1vWckasqj73ylaFpfV7QG+P3vf5/uvvvu3D/+2muvTS2V0A0AADSZGAU7glnU5Eaz6qjJraxVjTAdl9H67W9/m6+bHf2po3Y4+nmXB+2KQb6iD3KEv6g1jr7Ne++9dw7N0TQ7Bi2LQcWefPLJ3P84Qn7r1tOPQvG+8V5RrhgJPQYGiz7lcRIgBhaLAcmin3MM8hY11nWbzVeK2vq4XnfU9kaT62guHyKIV04v1zDH8nv06JEHbYva//I6R7Ptzz//PM9z6KGH5gHpYpvEyPB/+MMfakYPD7O63jMSA6fF+8Vo8uX+9uWR3cv9zw877LC8D6Lcr732Wm7+HycsWioDqQEAwDwmrp/dXN7noosuyoE6aoMjaEaYGz16dK15rr766vS///u/OVjGiN9xzfB4HGKgtKgtj9fFAGMRjvv06ZMH/SoHzBj0q9wMPfpJR81r9IuenhgILE4GRNPwCLMxkFmE1hgJ/OCDD85N12P58T4NaTody4nRvMv9ucsisEcoLffnDnGprpg31ikGShszZkxafPHF84Bo0b86xDpEv+44IRHliG0YrQUq12tW1ntGYtC3u+66Ky/r0ksvzYO/xejlBxxwQB4ELsTJjjgZEicI5p9//ryNLr744tRStSrVvZhbCxQHdTTRiA9g+UMMALQsURsTTT4HrbVWvj4xzcdrY8aktQYNyk1vo9nuvCCaIEctYQScuIxUWQwu1q9v31Q9btwcK0vnjh1T1eDBOehCfWLk8hg9vbLZfXMxbhrH4szkSDXdAAAwj4jgGwE4mjvPKVH7LHBTKfqmR3/07t2751YGUaMel3ejfkI3AADMQyIAC8E0pRjkLS4JFn3p47MYTc3jmuHUT+gGAACgwaJ/dkvuoz2zjF4OAAAABRG6AQAAoCBCNwAAzKUqr1cNzJvHoD7dAAAwl2nfvn2+9vKwYcPSwgsvnB+3atWqqYsFLUapVEoTJkxIX375ZT4W4xicVUI3AADMZeJHflwXePjw4Tl4A02jc+fOeYT2OCZnldANAABzoahZix/7kyZNSpMnT27q4kCL06ZNm9S2bdvZbmUidAMAwFwqfuy3a9cu34B5k4HUAAAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAANDcQ/c555yTWrVqlQ477LCaaePGjUsHHnhg6t69e5pvvvlS//790xdffFHrdUOGDEnbbrtt6ty5c1pkkUXS0UcfnSZNmtQEawAAAABzYeh+5ZVX0p/+9Ke06qqr1pp++OGHp/vvvz/deeed6ZlnnknDhg1LO+20U83zkydPzoF7woQJ6fnnn0833nhjGjhwYDrppJOaYC0AAABgLgvd33//fdptt93StddemxZccMGa6d9991267rrr0kUXXZQ22WSTtNZaa6Ubbrghh+sXX3wxz/Poo4+m9957L918881p9dVXT1tvvXU6/fTT05VXXpmDOAAAALTo0B3Nx6O2erPNNqs1fdCgQWnixIm1pq+wwgqpd+/e6YUXXsiP436VVVZJPXv2rJlnyy23TKNHj07vvvvuHFwLAAAAmFrb1IRuu+229Nprr+Xm5XWNGDEitW/fPnXr1q3W9AjY8Vx5nsrAXX6+/Ny0jB8/Pt/KIqQDAABAs6npHjp0aDr00EPTLbfckjp27DhH3/vss89OCyywQM1tySWXnKPvDwAAQMvQZKE7mo+PHDkyrbnmmqlt27b5FoOlXXbZZfn/UWMd/bK//fbbWq+L0ct79eqV/x/3dUczLz8uz1Of448/PvcZL9/iBAAAAAA0m9C96aabprfffju98cYbNbe11147D6pW/n+7du3SE088UfOawYMH50uErb/++vlx3McyIryXPfbYY2n++edPK6644jTfu0OHDnmeyhsAAAA0mz7dXbt2TSuvvHKtaV26dMnX5C5P32effdIRRxyRFlpooRyMDz744By011tvvfz8FltskcP1Hnvskc4777zcj/vEE0/Mg7NFsAYAAIAWO5DajFx88cWpdevWqX///nngsxiZ/Kqrrqp5vk2bNumBBx5IBxxwQA7jEdoHDBiQTjvttCYtNwAAAMx1ofvpp5+u9TgGWItrbsdtWvr06ZMefPDBOVA6AAAAmMeu0w0AAADNldANAAAABRG6AQAAoCBCNwAAABRE6AYAAICWMHo5ADRHQ4YMSaNGjWrqYjADVVVV+X5sdXUaM5352rVrl6+wAgANIXQDQMGBu2/ffmncuOqmLgoN9F5VVZo0nedbt26d1l1nHcEbgAYRugGgQFHDHYG7X7+bU+fO/Zq6OExHdXVVqqraPXXp1C91bdO53nkmT6nO802cOFHoBqBBhG4AmAMicHftumZTF4MGaN2mc2rTtmv9T06vChwA6mEgNQAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCtC1qwQAAzdXY6uqmLgKzsL+qqqqmeq5Hjx6pd+/eTVAqoKUQugEAGmhKacI0wxtzr/f///3uu+8+1XMdO3ZOgwdXCd5AYYRuAIAGKpUm5fuOHfumdm3na+ri0EBdJlen9ENV6tfv5tS5c7+a6dXVVamqavc0atQooRsojNANADCTWrfunNq07drUxWAmBzGKwN2165pNXBqgpTGQGgAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAM0xdF999dVp1VVXTfPPP3++rb/++umhhx6qeX7cuHHpwAMPTN27d0/zzTdf6t+/f/riiy9qLWPIkCFp2223TZ07d06LLLJIOvroo9OkSZOaYG0AAABgLgrdSyyxRDrnnHPSoEGD0quvvpo22WSTtP3226d33303P3/44Yen+++/P915553pmWeeScOGDUs77bRTzesnT56cA/eECRPS888/n2688cY0cODAdNJJJzXhWgEAAMD/aZua0HbbbVfr8Zlnnplrv1988cUcyK+77rr0t7/9LYfxcMMNN6R+/frl59dbb7306KOPpvfeey89/vjjqWfPnmn11VdPp59+ejr22GPTKaecktq3b99EawYAAABzUZ/uqLW+7bbb0tixY3Mz86j9njhxYtpss81q5llhhRVS79690wsvvJAfx/0qq6ySA3fZlltumUaPHl1TWw4AAAAtsqY7vP322zlkR//t6Ld9zz33pBVXXDG98cYbuaa6W7duteaPgD1ixIj8/7ivDNzl58vPTcv48ePzrSxCOgAAADS7mu6+ffvmgP3SSy+lAw44IA0YMCA3GS/S2WefnRZYYIGa25JLLlno+wEAANAyNXnojtrsZZddNq211lo5DK+22mrp0ksvTb169coDpH377be15o/Ry+O5EPd1RzMvPy7PU5/jjz8+fffddzW3oUOHFrJuAAAAtGxNHrrrmjJlSm76HSG8Xbt26Yknnqh5bvDgwfkSYdEcPcR9NE8fOXJkzTyPPfZYvvxYNFGflg4dOtRcpqx8AwAAgGbVpztqnLfeeus8ONqYMWPySOVPP/10euSRR3Kz73322ScdccQRaaGFFsrB+OCDD85BO0YuD1tssUUO13vssUc677zzcj/uE088MV/bO4I1AAAAtNjQHTXUe+65Zxo+fHgO2auuumoO3Jtvvnl+/uKLL06tW7dO/fv3z7XfMTL5VVddVfP6Nm3apAceeCD3BY8w3qVLl9wn/LTTTmvCtQIAAIC5IHTHdbinp2PHjunKK6/Mt2np06dPevDBBwsoHQAAADSzPt0AAADQXAjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAAMxNofvjjz9u/JIAAABAMzNLoXvZZZdNG2+8cbr55pvTuHHjGr9UAAAA0FJD92uvvZZWXXXVdMQRR6RevXql/fffP7388suNXzoAAABoaaF79dVXT5deemkaNmxYuv7669Pw4cPThhtumFZeeeV00UUXpS+//LLxSwoAAADzmLaz9eK2bdNOO+2Utt1223TVVVel448/Ph111FHpf//3f9POO++czj333LTooos2XmkBYC4wZMiQNGrUqAbNW1VVle+rq//vnrmXfQTAXBe6X3311VzTfdttt6UuXbrkwL3PPvukzz//PJ166qlp++231+wcgGYXuPv17ZuqZ3JMk6qq3QsrE42rVJrQ1EUAoKWH7mhCfsMNN6TBgwenbbbZJt100035vnXr/2utvvTSS6eBAwempZZaqrHLCwBNKmq4I3Df3K9f6te58wznH1tdnd6rqkpdOvVLrdvMeH6aznOTvkpXjfs0laZMauqiANDSQ/fVV1+dfvvb36a99tprms3HF1lkkXTdddfNbvkAYK4UgXvNrl1nON+YlFJEuK5tOqc2bWc8P03nk8nVTV0EAJqhWQrdH3zwwQznad++fRowYMCsLB4AAABa7ujl0bT8zjvvnGp6TLvxxhsbo1wAAADQMkP32WefnXr06FFvk/KzzjqrMcoFAAAALTN0x8itMVhaXX369MnPAQAAALMYuqNG+6233ppq+ptvvpm6d+/eGOUCAACAlhm6d91113TIIYekp556Kk2ePDnfnnzyyXTooYemX//6141fSgAAAGgpo5effvrp6dNPP02bbrppatv2/xYxZcqUtOeee+rTDQAAALMTuuNyYLfffnsO39GkvFOnTmmVVVbJfboBAACA2QjdZcsvv3y+AQAAAI0UuqMP98CBA9MTTzyRRo4cmZuWV4r+3QAAANDSzVLojgHTInRvu+22aeWVV06tWrVq/JIBAABASwzdt912W7rjjjvSNtts0/glAgAAgJZ8ybAYSG3ZZZdt/NIAAABASw/dRx55ZLr00ktTqVRq/BIBAABAS25e/uyzz6annnoqPfTQQ2mllVZK7dq1q/X83Xff3VjlAwAAgJYVurt165Z23HHHxi8NAAAAtPTQfcMNNzR+SQAAAKCZmaU+3WHSpEnp8ccfT3/605/SmDFj8rRhw4al77//vjHLBwAAAC2rpvuzzz5LW221VRoyZEgaP3582nzzzVPXrl3Tueeemx9fc801jV9SAAAAaAk13Yceemhae+210zfffJM6depUMz36eT/xxBONWT4AAABoWTXd//73v9Pzzz+fr9ddaamllkr//e9/G6tsAAAA0PJquqdMmZImT5481fTPP/88NzMHAAAAZjF0b7HFFumSSy6pedyqVas8gNrJJ5+cttlmm8YsHwAAALSs5uUXXnhh2nLLLdOKK66Yxo0bl37zm9+kDz74IPXo0SPdeuutjV9KAAAAaCmhe4kllkhvvvlmuu2229Jbb72Va7n32WeftNtuu9UaWA0AAABasraz/MK2bdPuu+/euKUBAACAlh66b7rppuk+v+eee85qeQAAAKBlh+64TneliRMnpurq6nwJsc6dOwvdAAAAMKujl3/zzTe1btGne/DgwWnDDTc0kBoAAADMTuiuz3LLLZfOOeecqWrBAQAAoKVqtNBdHlxt2LBhjblIAAAAaFl9uu+7775aj0ulUho+fHi64oor0gYbbNBYZQMAAICWF7p32GGHWo9btWqVFl544bTJJpukCy+8sLHKBgAAAC0vdE+ZMqXxSwIAAADNTKP26QYAAABms6b7iCOOaPC8F1100ay8BQAAALTM0P3666/n28SJE1Pfvn3ztPfffz+1adMmrbnmmrX6egMAAEBLNUuhe7vttktdu3ZNN954Y1pwwQXztG+++Sbtvffe6ac//Wk68sgjG7ucAAAA0DL6dMcI5WeffXZN4A7x/zPOOMPo5QAAADA7oXv06NHpyy+/nGp6TBszZsysLBIAAACanVkK3TvuuGNuSn733Xenzz//PN/+/ve/p3322SfttNNOjV9KAAAAaCl9uq+55pp01FFHpd/85jd5MLW8oLZtc+g+//zzG7uMAAAA0HJCd+fOndNVV12VA/ZHH32Upy2zzDKpS5cujV0+AAAAaFnNy8uGDx+eb8stt1wO3KVSqfFKBgAAAC0xdH/11Vdp0003Tcsvv3zaZpttcvAO0bzc5cIAAABgNkL34Ycfntq1a5eGDBmSm5qX7bLLLunhhx+elUUCAABAszNLfbofffTR9Mgjj6Qlllii1vRoZv7ZZ581VtkAAACg5dV0jx07tlYNd9nXX3+dOnTo0BjlAgAAgJYZun/605+mm266qeZxq1at0pQpU9J5552XNt5448YsHwAAALSs5uURrmMgtVdffTVNmDAhHXPMMendd9/NNd3PPfdc45cSAAAAWkpN98orr5zef//9tOGGG6btt98+Nzffaaed0uuvv56v1w0AAADMQk33xIkT01ZbbZWuueaadMIJJxRTKgAAAGiJNd1xqbC33nqrmNIAAABAS29evvvuu6frrruu8UsDAAAALX0gtUmTJqXrr78+Pf7442mttdZKXbp0qfX8RRdd1FjlAwAAgJYRuj/++OO01FJLpXfeeSetueaaeVoMqFYpLh8GAAAAzGToXm655dLw4cPTU089lR/vsssu6bLLLks9e/YsqnwAAADQMvp0l0qlWo8feuihfLmwWXX22WenH//4x6lr165pkUUWSTvssEMaPHhwrXnGjRuXDjzwwNS9e/c033zzpf79+6cvvvii1jxDhgxJ2267bercuXNeztFHH52bwAMAAMA8N5DatEL4zHrmmWdyoH7xxRfTY489li9HtsUWW9QK8ocffni6//7705133pnnHzZsWL4meNnkyZNz4J4wYUJ6/vnn04033pgGDhyYTjrppNkqGwAAAMzR5uXRX7tun+3Z6cP98MMP13ocYTlqqgcNGpR+9rOfpe+++y6Pkv63v/0tbbLJJnmeG264IfXr1y8H9fXWWy89+uij6b333suDukUz99VXXz2dfvrp6dhjj02nnHJKat++/SyXDwAAAOZY6I6a7b322it16NChpun373//+6lGL7/77rtnqTARssNCCy2U7yN8R+33ZpttVjPPCiuskHr37p1eeOGFHLrjfpVVVqnVr3zLLbdMBxxwQHr33XfTGmusMUtlAQAAgDkaugcMGDDV9boby5QpU9Jhhx2WNthgg7TyyivnaSNGjMg11d26das1bwTseK48T92B3MqPy/PUNX78+HwrGz16dKOtBwAAAMxS6I6m3UWJvt1xKbJnn302FS0GcDv11FMLfx8AAABattkaSK2xHHTQQemBBx7IlyJbYoklaqb36tUrD5D27bff1po/Ri+P58rz1B3NvPy4PE9dxx9/fG7KXr4NHTq0gLUCAACgpWvS0B19xCNw33PPPenJJ59MSy+9dK3n11prrdSuXbv0xBNP1EyLS4rFJcLWX3/9/Dju33777TRy5MiaeWIk9Pnnnz+tuOKK9b5v9EmP5ytvAAAA0KTNy4toUh4jk//jH//I1+ou98FeYIEFUqdOnfL9Pvvsk4444og8uFqE44MPPjgH7RhELcQlxiJc77HHHum8887LyzjxxBPzsssDvgEAAECLC91XX311vt9oo42m6jseo6SHiy++OLVu3Tr1798/D34WI5NfddVVNfO2adMmN02P0cojjMdI6jHg22mnnTaH1wYAAADmotAdzctnpGPHjunKK6/Mt2np06dPevDBBxu5dAAAANAMBlIDAACA5kjoBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABSkbVELBgCAeUFVVVVTF4FG0qNHj9S7d++mLgbUInQDANAiTZgwPDf83H333Zu6KDSSjh07p8GDqwRv5ipCNwAALdKkSd+mlKakpZa6NnXvvmZTF4fZVF1dlaqqdk+jRo0SupmrCN0AALRonTr1TV27Ct1AMQykBgAAAAVR0w0AQItpflzphx8++f/3g9OYMV2aqFTMrnbteqSOHTUnZ+4ldAMA0KyNmjIhN++M/r71+fTTfdOnn87xYtFI2rbumNZeZ3BTFwOmSegGAKBZG1OalKaklE7rsFRapl33mukTJ32Vxo37NHXs2De1aztfk5aRWfPJlOp0YnVVmjhxVFMXBaZJ6AYAoEVYunWn1K9t15rHE6ZUp+qUUufWnVP7iunMQyY1dQFgxgykBgAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAcwzd//rXv9J2222XFltssdSqVat077331nq+VCqlk046KS266KKpU6dOabPNNksffPBBrXm+/vrrtNtuu6X5558/devWLe2zzz7p+++/n8NrAgAAAHNZ6B47dmxabbXV0pVXXlnv8+edd1667LLL0jXXXJNeeuml1KVLl7TlllumcePG1cwTgfvdd99Njz32WHrggQdykN9vv/3m4FoAAABA/dqmJrT11lvnW32ilvuSSy5JJ554Ytp+++3ztJtuuin17Nkz14j/+te/TlVVVenhhx9Or7zySlp77bXzPJdffnnaZptt0gUXXJBr0AEAAKCpzLV9uj/55JM0YsSI3KS8bIEFFkjrrrtueuGFF/LjuI8m5eXAHWL+1q1b55pxAAAAaLE13dMTgTtEzXaleFx+Lu4XWWSRWs+3bds2LbTQQjXz1Gf8+PH5VjZ69OhGLj0AAADMxTXdRTr77LNzrXn5tuSSSzZ1kQAAAGiG5trQ3atXr3z/xRdf1Joej8vPxf3IkSNrPT9p0qQ8onl5nvocf/zx6bvvvqu5DR06tJB1AAAAoGWba0P30ksvnYPzE088UasZePTVXn/99fPjuP/222/ToEGDauZ58skn05QpU3Lf72np0KFDvsRY5Q0AAACaVZ/uuJ72hx9+WGvwtDfeeCP3ye7du3c67LDD0hlnnJGWW265HML/+Mc/5hHJd9hhhzx/v3790lZbbZX23XfffFmxiRMnpoMOOiiPbG7kcgAAAFp06H711VfTxhtvXPP4iCOOyPcDBgxIAwcOTMccc0y+lndcdztqtDfccMN8ibCOHTvWvOaWW27J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fvjhqQZXAwAAgDmpWYTuEE3Jp9WcvDmI5vAnn3zyVM3iad7s95bJfm+Z7PeWyX5vmez3lsl+b7nm+dHLAQAAYG7VuqkLAAAAAM2V0A0AAAAFEboBAACgIEJ3E7ryyivTUkstlTp27JjWXXfd9PLLL093/jvvvDOtsMIKef5VVlklPfjgg7Wej+75MYL7oosumjp16pQ222yz9MEHHxS8FjT1ft9rr71Sq1atat222mqrgteCIvf7u+++m/r375/nj/0Zl0Gc3WXSPPb7KaecMtXxHt8PzLv7/dprr00//elP04ILLphv8be77vz+vre8fe5ve/Pb73fffXe+vHG3bt1Sly5d8tWW/vrXv9aax7HefAndTeT222/P1xePEQxfe+21tNpqq6Utt9wyjRw5st75n3/++bTrrrumffbZJ73++utphx12yLd33nmnZp7zzjsvXXbZZemaa65JL730Uj6gY5njxo2bg2vGnN7vIf4QDx8+vOZ26623zqE1ooj9Xl1dnX70ox+lc845J/Xq1atRlknz2O9hpZVWqnW8P/vsswWuBUXv96effjp/zz/11FPphRdeSEsuuWTaYost0n//+9+aefx9b3n7PPjb3rz2+0ILLZROOOGEvM/feuuttPfee+fbI488UjOPY70Zi9HLmfPWWWed0oEHHljzePLkyaXFFlusdPbZZ9c7/84771zadttta01bd911S/vvv3/+/5QpU0q9evUqnX/++TXPf/vtt6UOHTqUbr311sLWg6bd72HAgAGl7bffvsBSM6f3e6U+ffqULr744kZdJvPufj/55JNLq622WqOXlcYzu8fmpEmTSl27di3deOON+bG/7y1vnwd/2+d+jfF3eI011iideOKJ+f+O9eZNTXcTmDBhQho0aFBuMlLWunXr/DjOftUnplfOH+LMV3n+Tz75JI0YMaLWPAsssEBu6jKtZTLv7/fKs+aLLLJI6tu3bzrggAPSV199VdBaMCf2e1Msk8ZV5D6KpoaLLbZYrhXfbbfd0pAhQxqhxMwt+z1aPEycODHXigV/31vePi/zt7357vdoRv7EE0+kwYMHp5/97Gd5mmO9eRO6m8CoUaPS5MmTU8+ePWtNj8dxsNUnpk9v/vL9zCyTeX+/l5uf3XTTTfnL+9xzz03PPPNM2nrrrfN7MW/u96ZYJo2rqH0UP74GDhyYHn744XT11VfnH2nRN3TMmDGNUGrmhv1+7LHH5pMq5R/e/r63vH0e/G1vnvv9u+++S/PNN19q37592nbbbdPll1+eNt988/ycY715a9vUBQBmz69//eua/8dAa6uuumpaZpll8hnyTTfdtEnLBjSu+NFdFsd6hPA+ffqkO+64I4/9wLwt+vPfdttt+fs7Bmai5e5zf9ubp65du6Y33ngjff/99/mESvQJj1ZLG220UVMXjYKp6W4CPXr0SG3atElffPFFrenxeFqD58T06c1fvp+ZZTLv7/f6xJd3vNeHH37YSCVnTu/3plgmjWtO7aMYBXf55Zd3vDeD/X7BBRfkAPboo4/mgFXm73vL2+f18be9eez3aIK+7LLL5pHLjzzyyPTLX/4ynX322fk5x3rzJnQ3gWhSstZaa+UzXGVTpkzJj9dff/16XxPTK+cPjz32WM38Sy+9dD4gK+cZPXp0HvlwWstk3t/v9fn8889zv6+43ATz5n5vimXSuObUPorako8++sjxPo/v9xix+PTTT8/dBuKSQpX8fW95+7w+/rY3z+/4eM348ePz/x3rzVxTj+TWUt122215NMKBAweW3nvvvdJ+++1X6tatW2nEiBH5+T322KN03HHH1cz/3HPPldq2bVu64IILSlVVVXkE23bt2pXefvvtmnnOOeecvIx//OMfpbfeeiuPern00kuXfvjhhyZZR4rf72PGjCkdddRRpRdeeKH0ySeflB5//PHSmmuuWVpuueVK48aNa7L1ZPb2+/jx40uvv/56vi266KJ5H8f/P/jggwYvk+a534888sjS008/nY/3+H7YbLPNSj169CiNHDmySdaR2d/v8be7ffv2pbvuuqs0fPjwmlt8v1fO4+97y9nn/rY3z/1+1llnlR599NHSRx99lOeP33bxG+/aa6+tmcex3nwJ3U3o8ssvL/Xu3Tt/8cZlB1588cWa537+85/ny0VUuuOOO0rLL798nn+llVYq/fOf/6z1fFxq4I9//GOpZ8+e+Utg0003LQ0ePHiOrQ9zfr9XV1eXtthii9LCCy+cw3hcZmjfffcVvObx/R4/suKcaN1bzNfQZdI89/suu+ySA3ksb/HFF8+PP/zwwzm+XjTefo/v7fr2e5xkLfP3vWXtc3/bm+d+P+GEE0rLLrtsqWPHjqUFF1ywtP766+fgXsmx3ny1in+aurYdAAAAmiN9ugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AaAFaNWqVbr33nubuhhpxIgRafPNN09dunRJ3bp1a+riAEDhhG4AmIa99torh9W4tW/fPi277LLptNNOS5MmTUpzq1NOOSWtvvrqU00fPnx42nrrrVNTu/jii3NZ3njjjfT+++83dXEAoHBti38LAJh3bbXVVumGG25I48ePTw8++GA68MADU7t27dLxxx8/1bwTJkzI4bwplEqlNHny5Gk+36tXrzQ3+Oijj9Jaa62VlltuuaYuCgDMEWq6AWA6OnTokANrnz590gEHHJA222yzdN9999XUhO+www7pzDPPTIsttljq27dvnv7222+nTTbZJHXq1Cl179497bfffun777+vWWb5daeeempaeOGF0/zzz59+//vf59BeFiH/kEMOSYssskjq2LFj2nDDDdMrr7xS8/zTTz+da+AfeuihHGKjnDfffHNe5ptvvllTQz9w4MB6m5c3tIwXXHBBWnTRRfM8ccJh4sSJ091eV199dVpmmWXyyYfYHn/9619rnltqqaXS3//+93TTTTfl8sR7TMv111+fVlpppbxe8f4HHXRQzXMXXXRRWmWVVXIT9SWXXDL94Q9/qFX2zz77LG233XZpwQUXzPPEcuKESdk777yTa/3nm2++1LNnz7THHnukUaNG1Tx/11135eWXt03s87Fjx053vQFgWoRuAJgJEcQqw/ETTzyRBg8enB577LH0wAMP5HC25ZZb5sAXIfnOO+9Mjz/+eK3QWH5dVVVVDs+33npruvvuu3NgLjvmmGNyQL3xxhvTa6+9lpu2x3K//vrrWss57rjj0jnnnJOXFX2ljzzyyBwyowl33HbZZZep1qGhZXzqqadyzXTcRzkiwJdDfH3uueeedOihh+YyRLDdf//90957751fH+K9ouXAzjvvnMt26aWXTjO4R8CPEwFxciBOcsT6l7Vu3Tpddtll6d13383levLJJ/P2KovXxkmLf/3rX/n15557bg7Y4dtvv80nG9ZYY4306quvpocffjh98cUXuUwhyrXrrrum3/72tzX7Z6eddsotCQBglpQAgHoNGDCgtP322+f/T5kypfTYY4+VOnToUDrqqKNqnu/Zs2dp/PjxNa/585//XFpwwQVL33//fc20f/7zn6XWrVuXRowYUfO6hRZaqDR27Niaea6++urSfPPNV5o8eXJ+bbt27Uq33HJLzfMTJkwoLbbYYqXzzjsvP37qqaciBZbuvffeWmU++eSTS6utttpU6xLz3nPPPTNVxj59+pQmTZpUM8+vfvWr0i677DLN7fWTn/yktO+++9aaFq/ZZpttah7H9oxlT0+s5wknnFBqqDvvvLPUvXv3mserrLJK6ZRTTql33tNPP720xRZb1Jo2dOjQvH0GDx5cGjRoUP7/p59+2uD3B4DpUdMNANMRtddRSxpNvKNJctQcx2BlZdEMubIfd9SOrrbaarlZc9kGG2yQpkyZkmvEy2Kezp071zxef/31cxPpoUOH5trlaMYdryuLfuTrrLNOXn6ltddee6bXqaFljBrzNm3a1DyOZt4jR46c7nIry1xebt0yT08sf9iwYWnTTTed5jxRKx/PL7744qlr1665efhXX32Vqqur8/PRLP+MM87I733yySent956q+a10fQ+at5jn5ZvK6ywQn4utntsl1h27Ndf/epX6dprr03ffPNNg8sPAHUJ3QAwHRtvvHEeafuDDz5IP/zwQ27OXBlWK//fFIp8/wj6laIfdgTzopvvT8+nn36afvGLX6RVV101N78fNGhQuvLKK/Nz5Wb/v/vd79LHH3+cw3g0L48TE5dffnl+Lk5sRH/v2KeVt9i/P/vZz/JJhugqEH3lV1xxxfy66Jv+ySefFLreADRfQjcAzCDURn/i3r17p7ZtZ3zRj379+uXa1MqBt5577rncD7k80FqIeSLEl7344ou51jUGBisPRBavK4ua7+gTHUFweuJ10xvFfGbKOLNiuZVlLi93RmWuFDXXMeBa9HmvT4TsCP4XXnhhWm+99dLyyy+fa8briu0Yg9NFX/noYx411mHNNdfMfcHjPWK/Vt7KJzDi5ELUkkcf+9dffz1v0+ivDgCzQugGgEa022675aboAwYMyIOJRVPmgw8+ONe6xkjZZVEru88++6T33nsvj6wdzaBjILMIvhH+YqT0o48+Og/0FfPsu+++ufl0vGZ6IkxGrWzU3saI3DGg2KyWcWZFeWOgtRgILWqOY5TxCL1HHXXUTC0nmu9HqI7B0mI5MZBcuaY6wnGcgIjHUZsdo6Nfc801tV5/2GGHpUceeSRvh3htrF+cECgPshaD0cVgaXESI5qUx7wx4FucrHjppZfSWWedlQdZGzJkSC7/l19+WfN6AJhZQjcANKLopx0hLoLdj3/84/TLX/4y9xG+4ooras0X0+Ja1dGkOfqJ/8///E+tvuIxInn//v1zEI7a2Q8//DAvN0Ycn554TYwQHs3i43JkMTL6rJZxZsUlxmJE8rjMWPQH/9Of/pSvcb7RRhvN1HLiZMAll1ySrrrqqrycaE4e4TtEn+sI8zEi+corr5xuueWWdPbZZ9d6fYTnCNcRlGNbRG14LCvEpd2i9j3m2WKLLXLf7Qjp3bp1yyc84vJtMer5Nttsk1934okn5hMA0Z8fAGZFqxhNbZZeCQDMkrg+dVy6qvK62QBA86SmGwAAAAoidAMAAEBBNC8HAACAgqjpBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAVIz/B+GZIExU75V2AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Import necessary libraries\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "# Note: Suppressing FutureWarnings to maintain a clean output. This is specifically to ignore warnings about\n", + "# deprecated features in the libraries we're using (e.g., 'use_inf_as_na' option in Pandas, used by Seaborn),\n", + "# which we currently have no direct control over. This action is taken to ensure that our output remains\n", + "# focused on relevant information, acknowledging that we rely on external library updates to fully resolve\n", + "# these deprecations. Always consider reviewing and removing this suppression after significant library updates.\n", + "import warnings\n", + "warnings.simplefilter(action='ignore', category=FutureWarning)\n", + "\n", + "# Constants representing the parameters of the model\n", + "ATTACK_RATE = 0.10\n", + "TRACE_SUCCESS = 0.20\n", + "SECONDARY_TRACE_THRESHOLD = 2\n", + "\n", + "\n", + "def simulate_event(m):\n", + " \"\"\"\n", + " Simulates the infection and tracing process for a series of events.\n", + " \n", + " This function creates a DataFrame representing individuals attending weddings and brunches,\n", + " infects a subset of them based on the ATTACK_RATE, performs primary and secondary contact tracing,\n", + " and calculates the proportions of infections and traced cases that are attributed to weddings.\n", + " \n", + " Parameters:\n", + " - m: Dummy parameter for iteration purposes.\n", + " \n", + " Returns:\n", + " - A tuple containing the proportion of infections and the proportion of traced cases\n", + " that are attributed to weddings.\n", + " \"\"\"\n", + " # Create DataFrame for people at events with initial infection and traced status\n", + " events = ['wedding'] * 200 + ['brunch'] * 800\n", + " ppl = pd.DataFrame({\n", + " 'event': events,\n", + " 'infected': False,\n", + " 'traced': np.nan # Initially setting traced status as NaN\n", + " })\n", + "\n", + " # Explicitly set 'traced' column to nullable boolean type\n", + " ppl['traced'] = ppl['traced'].astype(pd.BooleanDtype())\n", + "\n", + " # Infect a random subset of people\n", + " infected_indices = np.random.choice(ppl.index, size=int(len(ppl) * ATTACK_RATE), replace=False)\n", + " ppl.loc[infected_indices, 'infected'] = True\n", + "\n", + " # Primary contact tracing: randomly decide which infected people get traced\n", + " ppl.loc[ppl['infected'], 'traced'] = np.random.rand(sum(ppl['infected'])) < TRACE_SUCCESS\n", + "\n", + " # Secondary contact tracing based on event attendance\n", + " event_trace_counts = ppl[ppl['traced'] == True]['event'].value_counts()\n", + " events_traced = event_trace_counts[event_trace_counts >= SECONDARY_TRACE_THRESHOLD].index\n", + " ppl.loc[ppl['event'].isin(events_traced) & ppl['infected'], 'traced'] = True\n", + "\n", + " # Calculate proportions of infections and traces attributed to each event type\n", + " ppl['event_type'] = ppl['event'].str[0] # 'w' for wedding, 'b' for brunch\n", + " wedding_infections = sum(ppl['infected'] & (ppl['event_type'] == 'w'))\n", + " brunch_infections = sum(ppl['infected'] & (ppl['event_type'] == 'b'))\n", + " p_wedding_infections = wedding_infections / (wedding_infections + brunch_infections)\n", + "\n", + " wedding_traces = sum(ppl['infected'] & ppl['traced'] & (ppl['event_type'] == 'w'))\n", + " brunch_traces = sum(ppl['infected'] & ppl['traced'] & (ppl['event_type'] == 'b'))\n", + " p_wedding_traces = wedding_traces / (wedding_traces + brunch_traces)\n", + "\n", + " return p_wedding_infections, p_wedding_traces\n", + "\n", + "# add a random seed for reproducability of results \n", + "np.random.seed(2026) \n", + "# Run the simulation 1000 times with reproducability\n", + "\n", + "results = [simulate_event(m) for m in range(1000)]\n", + "props_df = pd.DataFrame(results, columns=[\"Infections\", \"Traces\"])\n", + "\n", + "# Plotting the results\n", + "plt.figure(figsize=(10, 6))\n", + "sns.histplot(props_df['Infections'], color=\"blue\", alpha=0.75, binwidth=0.05, kde=False, label='Infections from Weddings')\n", + "sns.histplot(props_df['Traces'], color=\"red\", alpha=0.75, binwidth=0.05, kde=False, label='Traced to Weddings')\n", + "plt.xlabel(\"Proportion of cases\")\n", + "plt.ylabel(\"Frequency\")\n", + "plt.title(\"Impact of Contact Tracing on Perceived Flu Infection Sources\")\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, { "cell_type": "markdown", "id": "f418c720", @@ -193,7 +560,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "sampling-env", "language": "python", "name": "python3" }, @@ -207,7 +574,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.0" + "version": "3.11.13" } }, "nbformat": 4, From eb7acfff53540b4afc3274942b01e09e14df9cd6 Mon Sep 17 00:00:00 2001 From: Ofir Date: Wed, 7 Jan 2026 21:43:04 -0500 Subject: [PATCH 2/4] attached is my first sampling assigment --- 02_activities/assignments/a1_sampling_and_reproducibility.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb index 63a035b0..beda05fb 100644 --- a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb +++ b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb @@ -99,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 22, "id": "ab8587a0", "metadata": {}, "outputs": [ From 60e1623efbba8292cb3f2193dcf9fef47e8085b8 Mon Sep 17 00:00:00 2001 From: Ofir Date: Thu, 15 Jan 2026 03:43:08 -0500 Subject: [PATCH 3/4] attached is my second assignment --- .../a2_survey_design_and_evaluation.md | 135 ++++++++++++++++-- 1 file changed, 122 insertions(+), 13 deletions(-) diff --git a/02_activities/assignments/a2_survey_design_and_evaluation.md b/02_activities/assignments/a2_survey_design_and_evaluation.md index a955d827..16526304 100644 --- a/02_activities/assignments/a2_survey_design_and_evaluation.md +++ b/02_activities/assignments/a2_survey_design_and_evaluation.md @@ -40,28 +40,53 @@ For the **Canadian General Social Survey on Giving, Volunteering, and Participat ## Part A - Survey Design: -The number of your chosen topic: `#` +The number of your chosen topic: `2` Describe the purpose of your survey: ``` -write your answer here... +The Democratic Squirrel Institute (DSI) is a registered, professional survey institute with over 80 years of experience in public opinion studies and pre-election polling surveys across Canada. The institute is not identified with any political party and has provided its survey and polling services to all Canadian parties. This survey was ordered by the Beaver & Moose Alliance Party (BMAP) in Canada. The purpose of the survey is to better understand what voters expect from the BMAP and its leader across an array of relevant areas, including welfare and social policies, economic policies, international relations, immigration, education, transportation, housing, climate change/environment, and healthcare. The survey is voluntary and confidential. Additionally, all data are anonymized before shared with the client (BMAP): i.e., all information that could allow for the identification of participants was removed from the data, in accordance with the Privacy Act. ``` -Describe your target population, sampling frame, sampling units, and observational units: +Describe your target population, sampling frame, sampling units, observational units nd overall sampling strategy ``` -write your answer here... +Target Population: Canadian citizens aged 18 years old and above who can prove their identity and address (voting eligibility criteria). + +Sampling Frame: Participants will be recruited from the Public Puffin Panel (PPP) [the rival of Léger Canada]. PPP owns and operates an Internet panel of more than 4.5 million Canadians. Almost 88% of PPP's members have been recruited randomly over the phone since 2002 to ensure that PPP's members' distribution across various demographic characteristics is similar to that of the real Canadian population. This is an electronic and written survey. Accordingly, participants need to have internet access, a computer/mobile phone with a browser, and the ability to read and write in English and/or French. + +Sampling Units: Individuals (Canadian citizens, age >= 18, who are eligible to vote) who are members of the PPP can read/write in French and/or English and can access the internet and a browser during the data collection period. + +Observational Units: Individuals who meet the inclusion criteria above and who completed the survey. + +Overall Sampling strategy: We aim for a sample size between 4000 and 10000, which is typically used in pre-election polling to learn patterns within subgroups. We will use a stratified-sampling method with proportional allocation to better reflect the national population composition. We will first startify our sample with proportional allocation by province (to ensure that larger provinces [e.g., Ontario, Quebec, British Columbia] are represented proportionally in the sample [e.g., participants from Ontario will comprise around 38.8% of the final sample]). Then we will stratify using proportional allocation the randomly selected individuals in each province about the following variables: age group (18-30, 30-45, 45-65, 65+), newcomer status (time in Canada less/more than 10 years), and gender (man, woman, nonbinary and other gender identities). Participants will be randomly selected better to reflect the proportions of these subgroups within each province. We chose these variables for stratification (first, province; then age, gender, and time in Canada), since research/literature shows their association with the outcome variables on which the survey collects data (e.g., positions on welfare, economics, climate, transformation).   + ``` Your 5-10 question survey: ``` -1. write your question here... -2. write your question here... -3. write your question here... -4. write your question here... -5. write your question here... -6. write your question here... (optional) -7. write your question here... (optional) -8. write your question here... (optional) +1. Which issue is most important for you that the newly elected government addresses first? + [choose one option from the following: a.housing; b.public transportation; c.daycare for children aged 0-5; d.immigration policy; e.environment/climate change; f. universal healthcare; g. socio-economic inequality h.other: please specify] + +2.How satisfied are you with public transportation in your area of residence (considering accessibility, efficiency/frequency, cost, and maintenance)? +[scale 1-5 with one being very dissatisfied and five being very satisfied] + +3. How well do the current government's immigration policies support the Canadian economy? +[scale 1-5, with one being poorly and five being excellent] + +4. How important is the government's role in reducing socioeconomic gaps/inequalities? +[scale 1-5, with one being not at all important and five being extremely important] + +5. Do you support increasing taxes on high-income earners to fund public services? +[choose one option from the following: a.Yes; b.No; C.Unsure]. + +6. How important is the federal government's role in regulating housing prices? +[scale 1-5, with one being not at all important and five being extremely important] + +7. To what extent do you agree with the following statement: "As one of the leading economies, Canada should play a more active role on the international stage." +[scale 1-5 with one being strongly disagree and five strongly agree] + +8. To what extent do you agree with the following statement: "The Canadian government should do more to comply with the Paris agreement and aim for net-zero emissions by mid-century." +[scale 1-5, with one being strongly disagree and five strongly agree] + 9. write your question here... (optional) 10. write your question here... (optional) ``` @@ -71,7 +96,91 @@ Your 5-10 question survey: Identify and describe survey features: ``` -write your answer here +1. Sample type = +The 2018 GSS GVP survey used a probability-stratified-sampling strategy, with a simple random sample without replacement within each stratum (household sampling). Then, a respondent from each household was selected using the age-order method to complete the survey. The age-order method is a probability procedure for selecting one participant (age >= 15) from a household. It aims to ensure a random selection without interviewer bias. However, it can be more time-consuming than other methods. It includes the following stages: list eligible members with age >= 15 in ascending order, assign each one an ordinal number, and generate a random number between 1 and the number of eligible members. The member with the assigned number is selected to complete the household’s survey. + +* The household is the sampling unit, while the selected individual from each sampled household is the unit of observation (to my understanding). + +2. Sample size = +The target sample size (i.e., the number of respondents excluding ‘rejected’ respondents) for the 2018 GSS GVP was 20,000, while the actual number of respondents (again excluding ‘rejected’ respondents) was 16,149. + +3. Target population = +All persons 15 years of age and older in Canada, excluding: Residents of the Yukon, Northwest Territories, and Nunavut; Full-time residents of institutions. + +4. Sampling frame = +Sampling frame data sources: +a. Lists of telephone numbers in use (both landline and cellular) available to Statistics Canada from various sources (Telephone companies, Census of population, etc.); and +b. The Address Register (AR) (i.e., the list of all dwellings within the ten provinces) was used to group all telephone numbers associated with the same valid address. + +Procedure of sampling frame generation: +a. The AR accounted for 86% of the telephones available from Statistics Canada (a). Using AR, telephone numbers were grouped by household [first landline, then cellular] to generate the sampling units [households, also referred to as “records” in the Public Use Microdata File]. The units of observation are the individuals who were selected from each household using an age-order sampling method (see my answer to 1) +b. The remaining 14% of telephone numbers that were not matched to the sampling frame were also included, and about 9% of these were grouped into households using address information from administrative sources. Each of the remaining telephone numbers constitutes a single record on the frame. + +5. Survey mode(s) +Respondents were given the option to complete the questionnaire online (referred to as rEQ – i.e., respondent-completed electronic questionnaire) or by telephone (referred to as iEQ – i.e., interviewer-assisted electronic questionnaire). + +6. Timeline +The 2018 GSS GPV is a cross-sectional survey. Data collection (i.e., interviews)  was conducted from September 4th to December 28th, 2018. For most questions in the 2018 GSS GVP questionnaire, the reference period was the 12 months preceding the interview. + +7. Response rate +The overall response rate was 41.9%. + +8. Weights +The sample weight is defined in the Public Use Microdata File (PUMF) User Guide document as WGHT_PER (= the basic weighting factor for analysis at the person level, i.e., to calculate estimates of the number of persons (non-institutionalized and aged 15 or over)) having one or several given characteristics. WGHT_PER is used for all person-level estimates. +To my understanding, WGHT_PER was calculated using the following formula: +Initial Household Weight x Factor 1 x Number of eligible household members +where: +- Initial Household Weight = (Number of records sampled in the stratum*)/(Total number of records in the stratum from the survey frame) +*stratum = geographic areas- i.e., one of the seven provinces +- Factor 1 = the adjustments done based on the response rate [to my understanding] +- Number of eligible household members (age>=15) + +* More weight adjustments were performed depending on the province, volunteer status, stratum, age and sex of the respondent. + +- I couldn’t find a total sampling weight [for the entire sample] since adjustments were explicitly made for the province. The WGHT_PER has no value but is a factor for analysis at the person level and is used to calculate estimates of the total number of persons in the Canadian population (non-institutionalized and aged 15 or over) ***who possess specific characteristics*** [that is, WGHT_PER is calculated per variable] + +9. Data processing +Data processing is defined in PUMF as: “all data handling activities – automated and manual – that occur after collection and before the dissemination of estimates”. In the case of the 2018 GSS GVP, the following data procedures took place: +- Re/coding of data into existing harmonized systems of variables (e.g., Statistics Canada classifications of occupation, education, etc. or International Classification of Nonprofit Organizations). Data that could not be standardized were coded as “not specified.” +- Edit, cleanup, and emputation (please refer to question 10 below) +- Some variables were created via a derivation process [e.g., collapsing several variables together]. For example, PHSDFLG [= respondent has a spouse/partner in the household] was derived from the 2018 GSS GVP household roster and relationship +question. + +10. Cleaning, imputation, etc + +- out of scope/non-response were dropped/removed and excluded from analysis +- Records with missing or incorrect information were, in a small number of cases, corrected deterministically or imputed from other information on the questionnaire. When there was missing data for a question that the respondent was expected to answer on [and when the answer can be completed based on other previous questions (i.e.,” on path”)], the expected response was imputed. When the missing response seemed intentional (“of path”), the response was considered inappropriate or not of interest, and the current question was coded as ‘Valid Skip’. +-For item and partial non-response, donor imputation was done for certain variables (i.e., completing the missing data using a “donor” respondent- a similar enough respondent that will donate the missing information). +- Variables were imputed in the following order: personal income and family income (not relevant for the 2018 GSS GVP survey), formal volunteering variables, informal volunteering variables, the donation file and the solicitation methods variables. + + +11. Sources of error: + + a. sampling errors: +-  Under coverage of the population due to the sampling frame - may exclude people without a registered phone number in one of the sources available to Statistics Canada. +- measuremnt error using the deffinition of The 19th International Conference of Labor Statisticians (ICLS) defines volunteer may exclude people that were included in the target population [the definition says: ““work performed by persons of working age who, during a short reference period, performed any unpaid, non-compulsory activity to produce goods or provide services for others”]. This definiton may exclude retired/older adult participants who volunteer/work. In addition the “working age” is not defined. +- The use of the age-order method may result in over-representation of younger adults/youth (aged 15-24) in one province, which can lead to a reduced response rate for this province (assuming youth are less patient to complete such a long survey) + * The PUNF assumes that survey estimates are normally distributed it is possible to estimate the sampling error. For example, the chance is 95% that the difference between the sample estimate and the true population would be less than two standard errors. + + b. non-sampling errors: + - social desirability - this is relevant for each social science survey/interview, especially in questions regarding the number of volunteering/donation hours + - questionnaire design - the questionnaire is very long (250 pages of survey!), which can cause attrition. + - using donor imputation in items/variables where the non-response was intentional + - not a representative sample due to over-representation of one subgroup (e.g., male respondents aged 15-24). + - Collapsing of variables/categories within variables may result in losing important data. + - Using an undated AR/Statistic Canada phonelist to create the sampling frame might exclude potential participants + -mistakes during data collection and coding + -Interviewers misunderstood the instructions + -respondents’ inability to recall the precise answer. +  +12. Limitations, known biases, etc: +* Ordering the first the landline and then cellular when grouping phone numbers into households may result in overrepresentation of households with landlines in the final sample since people have a smaller propensity to pick up a call from a survey institution on cellular (especially for the first time). Accordingly, they have a greater chance of being considered “non-response” records. +* Different provinces tend to have different response rates, and non-response rates vary with demographic characteristics. The PUMF provides the following example: “Non-respondents are often more likely to be males and more likely to be younger. In the responding sample, 2.6% of persons were males aged 15-24, while in the overall population, approximately 7.4% were males aged 15-24. Therefore, it is clear that unweighted sample counts cannot be considered to be representative of the survey target population”. + + +13. Link to documentation and any additional sources used: +https://www150.statcan.gc.ca/n1/pub/45-25-0001/cat5/c33_2018.zip + ``` ## Rubric From c079f4c4d13e5e116ef3136c1b144f947ce45670 Mon Sep 17 00:00:00 2001 From: Ofir Date: Thu, 15 Jan 2026 03:47:18 -0500 Subject: [PATCH 4/4] attached is my second assignment --- 02_activities/assignments/a2_survey_design_and_evaluation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_activities/assignments/a2_survey_design_and_evaluation.md b/02_activities/assignments/a2_survey_design_and_evaluation.md index 16526304..6d616068 100644 --- a/02_activities/assignments/a2_survey_design_and_evaluation.md +++ b/02_activities/assignments/a2_survey_design_and_evaluation.md @@ -179,7 +179,7 @@ question. 13. Link to documentation and any additional sources used: -https://www150.statcan.gc.ca/n1/pub/45-25-0001/cat5/c33_2018.zip +https://www150.statcan.gc.ca/n1/pub/45-25-0001/cat5/c33_2018.zip ```