{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Pandas DataFrames and Data Visualization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{admonition} Learning Objectives\n", "* Be able to aggregate pandas data using [.groupby()](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html)\n", "* Be able to find the [.mean()](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.mean.html) or [.count()](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.count.html) the number of items in aggregated data\n", "* Be able to [groupby](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html) multiple columns and [.unstack()](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.unstack.html) as needed. \n", "* Be able to represent data in bar and pie charts using either pandas or matplotlib. See [matplotlib's cheatsheets and handouts](https://matplotlib.org/cheatsheets/) as well as [tutorials](https://matplotlib.org/stable/tutorials/index.html)\n", ":::" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## pandas.DataFrame.goupby()" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### Reading Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You will need [titanic.csv](https://drive.google.com/uc?id=1ELCvnr0WjQcglNlmxhqzsAOK8DnPaHW_&export=download) data file for this lesson. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{admonition} An aside\n", "Many datasets can be found on line for analysis to practice data science methods. These can be found from a simple [google search](https://www.google.com/search?q=open+datasets) and include such sites as: [data science dojo](https://code.datasciencedojo.com/datasciencedojo/datasets) or [openml](https://www.openml.org/search?type=data&status=active)\n", ":::" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "plt.style.use('seaborn-colorblind') #high contrast color palette" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you downloaded the titanic.csv file to your computer, you can use the following to read the file. \n", "```python\n", "import os\n", "path = r'C:\\Users\\Sean\\Downloads\\data' #change to your path\n", "filename='titanic.csv'\n", "fullpath=os.path.join(path,filename)\n", "raw=pd.read_csv(fullpath)\n", "``` \n", "Below, we are going to directly read the file from my google drive. The *1ELCvnr0WjQcglNlmxhqzsAOK8DnPaHW_* is the file id assigned by google for this file. Other formats are listed in the [Appendix: 3114 Data Files](Appendix_3114_Data_Files_direct) " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass \\\n", "0 1 0 3 \n", "1 2 1 1 \n", "2 3 1 3 \n", "\n", " Name Sex Age SibSp \\\n", "0 Braund, Mr. Owen Harris male 22.0 1 \n", "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", "2 Heikkinen, Miss. Laina female 26.0 0 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "0 0 A/5 21171 7.2500 NaN S \n", "1 0 PC 17599 71.2833 C85 C \n", "2 0 STON/O2. 3101282 7.9250 NaN S " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This is a direct read of the titanic file from my google drive. \n", "raw=pd.read_csv('https://drive.google.com/uc?id=1ELCvnr0WjQcglNlmxhqzsAOK8DnPaHW_')\n", "raw.head(3) #looking at only first 3 records" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "from jupyterquiz import display_quiz\n", "\n", "# tags: remove-input\n", "# menu: View/Cell toolbar/tags or in Jupyter lab use gear icon on top right\n", "# this will remove the code below when building Jupyter-book \n", "# could also use remove-cell but this code has no output\n", "\n", "example=[{\n", " \"question\": '''For the DataFrame, \"raw\" above, how would you select the columns: \"Name\" and \"Age\" and only the first 10 entries?''',\n", " \"type\": \"multiple_choice\",\n", " \"answers\": [\n", " {\n", " \"code\": \"raw.loc[0:9,['Name','Age']]\",\n", " \"correct\": True,\n", " \"feedback\": \"Correct. \"\n", " \"Here we use .loc[] and not .iloc[] since we are using the column names. We pass \"\n", " \"the column names as a list, ['Name','Age'], since we are skipping the column 'Sex.' \"\n", " \"If we wanted the columns Name, Sex, and Age, we could just write raw.loc[0:9,'Name':'Age']\"\n", " },\n", " {\n", " \"code\": \"raw.iloc[0:9,[3,5]]\",\n", " \"correct\": True,\n", " \"feedback\": \"Yes this works but .loc[] is cleaner to read so you don't have to count the column number \"\n", " \" to figure out which column is 3 or 5.\"\n", " },\n", " {\n", " \"code\": \"raw.iloc[1:10,['Name','Age']]\",\n", " \"correct\": False,\n", " \"feedback\": \"Not quite. Remember the first row is labeled, '0' and \"\n", " \"if we are using column names we need .loc not .iloc\"\n", " }\n", " ]\n", " }]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Slicing DataFrames using .loc and .iloc\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "var questionsgliyAFznUIOU=[{\"question\": \"For the DataFrame, \\\"raw\\\" above, how would you select the columns: \\\"Name\\\" and \\\"Age\\\" and only the first 10 entries?\", \"type\": \"multiple_choice\", \"answers\": [{\"code\": \"raw.loc[0:9,['Name','Age']]\", \"correct\": true, \"feedback\": \"Correct. Here we use .loc[] and not .iloc[] since we are using the column names. We pass the column names as a list, ['Name','Age'], since we are skipping the column 'Sex.' If we wanted the columns Name, Sex, and Age, we could just write raw.loc[0:9,'Name':'Age']\"}, {\"code\": \"raw.iloc[0:9,[3,5]]\", \"correct\": true, \"feedback\": \"Yes this works but .loc[] is cleaner to read so you don't have to count the column number to figure out which column is 3 or 5.\"}, {\"code\": \"raw.iloc[1:10,['Name','Age']]\", \"correct\": false, \"feedback\": \"Not quite. Remember the first row is labeled, '0' and if we are using column names we need .loc not .iloc\"}]}];\n", " // Make a random ID\n", "function makeid(length) {\n", " var result = [];\n", " var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n", " var charactersLength = characters.length;\n", " for (var i = 0; i < length; i++) {\n", " result.push(characters.charAt(Math.floor(Math.random() * charactersLength)));\n", " }\n", " return result.join('');\n", "}\n", "\n", "// Choose a random subset of an array. Can also be used to shuffle the array\n", "function getRandomSubarray(arr, size) {\n", " var shuffled = arr.slice(0), i = arr.length, temp, index;\n", " while (i--) {\n", " index = Math.floor((i + 1) * Math.random());\n", " temp = shuffled[index];\n", " shuffled[index] = shuffled[i];\n", " shuffled[i] = temp;\n", " }\n", " return shuffled.slice(0, size);\n", "}\n", "\n", "function printResponses(responsesContainer) {\n", " var responses=JSON.parse(responsesContainer.dataset.responses);\n", " var stringResponses='IMPORTANT!To preserve this answer sequence for submission, when you have finalized your answers:
  1. Copy the text in this cell below \"Answer String\"
  2. Double click on the cell directly below the Answer String, labeled \"Replace Me\"
  3. Select the whole \"Replace Me\" text
  4. Paste in your answer string and press shift-Enter.
  5. Save the notebook using the save icon or File->Save Notebook menu item



  6. Answer String:
    ';\n", " console.log(responses);\n", " responses.forEach((response, index) => {\n", " if (response) {\n", " console.log(index + ': ' + response);\n", " stringResponses+= index + ': ' + response +\"
    \";\n", " }\n", " });\n", " responsesContainer.innerHTML=stringResponses;\n", "}\n", "function check_mc() {\n", " var id = this.id.split('-')[0];\n", " //var response = this.id.split('-')[1];\n", " //console.log(response);\n", " //console.log(\"In check_mc(), id=\"+id);\n", " //console.log(event.srcElement.id) \n", " //console.log(event.srcElement.dataset.correct) \n", " //console.log(event.srcElement.dataset.feedback)\n", "\n", " var label = event.srcElement;\n", " //console.log(label, label.nodeName);\n", " var depth = 0;\n", " while ((label.nodeName != \"LABEL\") && (depth < 20)) {\n", " label = label.parentElement;\n", " console.log(depth, label);\n", " depth++;\n", " }\n", "\n", "\n", "\n", " var answers = label.parentElement.children;\n", "\n", " //console.log(answers);\n", "\n", "\n", " // Split behavior based on multiple choice vs many choice:\n", " var fb = document.getElementById(\"fb\" + id);\n", "\n", "\n", "\n", "\n", " if (fb.dataset.numcorrect == 1) {\n", " // What follows is for the saved responses stuff\n", " var outerContainer = fb.parentElement.parentElement;\n", " var responsesContainer = document.getElementById(\"responses\" + outerContainer.id);\n", " if (responsesContainer) {\n", " //console.log(responsesContainer);\n", " var response = label.firstChild.innerText;\n", " if (label.querySelector(\".QuizCode\")){\n", " response+= label.querySelector(\".QuizCode\").firstChild.innerText;\n", " }\n", " console.log(response);\n", " //console.log(document.getElementById(\"quizWrap\"+id));\n", " var qnum = document.getElementById(\"quizWrap\"+id).dataset.qnum;\n", " console.log(\"Question \" + qnum);\n", " //console.log(id, \", got numcorrect=\",fb.dataset.numcorrect);\n", " var responses=JSON.parse(responsesContainer.dataset.responses);\n", " console.log(responses);\n", " responses[qnum]= response;\n", " responsesContainer.setAttribute('data-responses', JSON.stringify(responses));\n", " printResponses(responsesContainer);\n", " }\n", " // End code to preserve responses\n", " \n", " for (var i = 0; i < answers.length; i++) {\n", " var child = answers[i];\n", " //console.log(child);\n", " child.className = \"MCButton\";\n", " }\n", "\n", "\n", "\n", " if (label.dataset.correct == \"true\") {\n", " // console.log(\"Correct action\");\n", " if (\"feedback\" in label.dataset) {\n", " fb.textContent = jaxify(label.dataset.feedback);\n", " } else {\n", " fb.textContent = \"Correct!\";\n", " }\n", " label.classList.add(\"correctButton\");\n", "\n", " fb.className = \"Feedback\";\n", " fb.classList.add(\"correct\");\n", "\n", " } else {\n", " if (\"feedback\" in label.dataset) {\n", " fb.textContent = jaxify(label.dataset.feedback);\n", " } else {\n", " fb.textContent = \"Incorrect -- try again.\";\n", " }\n", " //console.log(\"Error action\");\n", " label.classList.add(\"incorrectButton\");\n", " fb.className = \"Feedback\";\n", " fb.classList.add(\"incorrect\");\n", " }\n", " }\n", " else {\n", " var reset = false;\n", " var feedback;\n", " if (label.dataset.correct == \"true\") {\n", " if (\"feedback\" in label.dataset) {\n", " feedback = jaxify(label.dataset.feedback);\n", " } else {\n", " feedback = \"Correct!\";\n", " }\n", " if (label.dataset.answered <= 0) {\n", " if (fb.dataset.answeredcorrect < 0) {\n", " fb.dataset.answeredcorrect = 1;\n", " reset = true;\n", " } else {\n", " fb.dataset.answeredcorrect++;\n", " }\n", " if (reset) {\n", " for (var i = 0; i < answers.length; i++) {\n", " var child = answers[i];\n", " child.className = \"MCButton\";\n", " child.dataset.answered = 0;\n", " }\n", " }\n", " label.classList.add(\"correctButton\");\n", " label.dataset.answered = 1;\n", " fb.className = \"Feedback\";\n", " fb.classList.add(\"correct\");\n", "\n", " }\n", " } else {\n", " if (\"feedback\" in label.dataset) {\n", " feedback = jaxify(label.dataset.feedback);\n", " } else {\n", " feedback = \"Incorrect -- try again.\";\n", " }\n", " if (fb.dataset.answeredcorrect > 0) {\n", " fb.dataset.answeredcorrect = -1;\n", " reset = true;\n", " } else {\n", " fb.dataset.answeredcorrect--;\n", " }\n", "\n", " if (reset) {\n", " for (var i = 0; i < answers.length; i++) {\n", " var child = answers[i];\n", " child.className = \"MCButton\";\n", " child.dataset.answered = 0;\n", " }\n", " }\n", " label.classList.add(\"incorrectButton\");\n", " fb.className = \"Feedback\";\n", " fb.classList.add(\"incorrect\");\n", " }\n", " // What follows is for the saved responses stuff\n", " var outerContainer = fb.parentElement.parentElement;\n", " var responsesContainer = document.getElementById(\"responses\" + outerContainer.id);\n", " if (responsesContainer) {\n", " //console.log(responsesContainer);\n", " var response = label.firstChild.innerText;\n", " if (label.querySelector(\".QuizCode\")){\n", " response+= label.querySelector(\".QuizCode\").firstChild.innerText;\n", " }\n", " console.log(response);\n", " //console.log(document.getElementById(\"quizWrap\"+id));\n", " var qnum = document.getElementById(\"quizWrap\"+id).dataset.qnum;\n", " console.log(\"Question \" + qnum);\n", " //console.log(id, \", got numcorrect=\",fb.dataset.numcorrect);\n", " var responses=JSON.parse(responsesContainer.dataset.responses);\n", " if (label.dataset.correct == \"true\") {\n", " if (typeof(responses[qnum]) == \"object\"){\n", " if (!responses[qnum].includes(response))\n", " responses[qnum].push(response);\n", " } else{\n", " responses[qnum]= [ response ];\n", " }\n", " } else {\n", " responses[qnum]= response;\n", " }\n", " console.log(responses);\n", " responsesContainer.setAttribute('data-responses', JSON.stringify(responses));\n", " printResponses(responsesContainer);\n", " }\n", " // End save responses stuff\n", "\n", "\n", "\n", " var numcorrect = fb.dataset.numcorrect;\n", " var answeredcorrect = fb.dataset.answeredcorrect;\n", " if (answeredcorrect >= 0) {\n", " fb.textContent = feedback + \" [\" + answeredcorrect + \"/\" + numcorrect + \"]\";\n", " } else {\n", " fb.textContent = feedback + \" [\" + 0 + \"/\" + numcorrect + \"]\";\n", " }\n", "\n", "\n", " }\n", "\n", " if (typeof MathJax != 'undefined') {\n", " var version = MathJax.version;\n", " console.log('MathJax version', version);\n", " if (version[0] == \"2\") {\n", " MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n", " } else if (version[0] == \"3\") {\n", " MathJax.typeset([fb]);\n", " }\n", " } else {\n", " console.log('MathJax not detected');\n", " }\n", "\n", "}\n", "\n", "function make_mc(qa, shuffle_answers, outerqDiv, qDiv, aDiv, id) {\n", " var shuffled;\n", " if (shuffle_answers == \"True\") {\n", " //console.log(shuffle_answers+\" read as true\");\n", " shuffled = getRandomSubarray(qa.answers, qa.answers.length);\n", " } else {\n", " //console.log(shuffle_answers+\" read as false\");\n", " shuffled = qa.answers;\n", " }\n", "\n", "\n", " var num_correct = 0;\n", "\n", "\n", "\n", " shuffled.forEach((item, index, ans_array) => {\n", " //console.log(answer);\n", "\n", " // Make input element\n", " var inp = document.createElement(\"input\");\n", " inp.type = \"radio\";\n", " inp.id = \"quizo\" + id + index;\n", " inp.style = \"display:none;\";\n", " aDiv.append(inp);\n", "\n", " //Make label for input element\n", " var lab = document.createElement(\"label\");\n", " lab.className = \"MCButton\";\n", " lab.id = id + '-' + index;\n", " lab.onclick = check_mc;\n", " var aSpan = document.createElement('span');\n", " aSpan.classsName = \"\";\n", " //qDiv.id=\"quizQn\"+id+index;\n", " if (\"answer\" in item) {\n", " aSpan.innerHTML = jaxify(item.answer);\n", " //aSpan.innerHTML=item.answer;\n", " }\n", " lab.append(aSpan);\n", "\n", " // Create div for code inside question\n", " var codeSpan;\n", " if (\"code\" in item) {\n", " codeSpan = document.createElement('span');\n", " codeSpan.id = \"code\" + id + index;\n", " codeSpan.className = \"QuizCode\";\n", " var codePre = document.createElement('pre');\n", " codeSpan.append(codePre);\n", " var codeCode = document.createElement('code');\n", " codePre.append(codeCode);\n", " codeCode.innerHTML = item.code;\n", " lab.append(codeSpan);\n", " //console.log(codeSpan);\n", " }\n", "\n", " //lab.textContent=item.answer;\n", "\n", " // Set the data attributes for the answer\n", " lab.setAttribute('data-correct', item.correct);\n", " if (item.correct) {\n", " num_correct++;\n", " }\n", " if (\"feedback\" in item) {\n", " lab.setAttribute('data-feedback', item.feedback);\n", " }\n", " lab.setAttribute('data-answered', 0);\n", "\n", " aDiv.append(lab);\n", "\n", " });\n", "\n", " if (num_correct > 1) {\n", " outerqDiv.className = \"ManyChoiceQn\";\n", " } else {\n", " outerqDiv.className = \"MultipleChoiceQn\";\n", " }\n", "\n", " return num_correct;\n", "\n", "}\n", "function check_numeric(ths, event) {\n", "\n", " if (event.keyCode === 13) {\n", " ths.blur();\n", "\n", " var id = ths.id.split('-')[0];\n", "\n", " var submission = ths.value;\n", " if (submission.indexOf('/') != -1) {\n", " var sub_parts = submission.split('/');\n", " //console.log(sub_parts);\n", " submission = sub_parts[0] / sub_parts[1];\n", " }\n", " //console.log(\"Reader entered\", submission);\n", "\n", " if (\"precision\" in ths.dataset) {\n", " var precision = ths.dataset.precision;\n", " // console.log(\"1:\", submission)\n", " submission = Math.round((1 * submission + Number.EPSILON) * 10 ** precision) / 10 ** precision;\n", " // console.log(\"Rounded to \", submission, \" precision=\", precision );\n", " }\n", "\n", "\n", " //console.log(\"In check_numeric(), id=\"+id);\n", " //console.log(event.srcElement.id) \n", " //console.log(event.srcElement.dataset.feedback)\n", "\n", " var fb = document.getElementById(\"fb\" + id);\n", " fb.style.display = \"none\";\n", " fb.textContent = \"Incorrect -- try again.\";\n", "\n", " var answers = JSON.parse(ths.dataset.answers);\n", " //console.log(answers);\n", "\n", " var defaultFB = \"\";\n", " var correct;\n", " var done = false;\n", " answers.every(answer => {\n", " //console.log(answer.type);\n", "\n", " correct = false;\n", " // if (answer.type==\"value\"){\n", " if ('value' in answer) {\n", " if (submission == answer.value) {\n", " fb.textContent = jaxify(answer.feedback);\n", " correct = answer.correct;\n", " //console.log(answer.correct);\n", " done = true;\n", " }\n", " // } else if (answer.type==\"range\") {\n", " } else if ('range' in answer) {\n", " //console.log(answer.range);\n", " if ((submission >= answer.range[0]) && (submission < answer.range[1])) {\n", " fb.textContent = jaxify(answer.feedback);\n", " correct = answer.correct;\n", " //console.log(answer.correct);\n", " done = true;\n", " }\n", " } else if (answer.type == \"default\") {\n", " defaultFB = answer.feedback;\n", " }\n", " if (done) {\n", " return false; // Break out of loop if this has been marked correct\n", " } else {\n", " return true; // Keep looking for case that includes this as a correct answer\n", " }\n", " });\n", "\n", " if ((!done) && (defaultFB != \"\")) {\n", " fb.innerHTML = jaxify(defaultFB);\n", " //console.log(\"Default feedback\", defaultFB);\n", " }\n", "\n", " fb.style.display = \"block\";\n", " if (correct) {\n", " ths.className = \"Input-text\";\n", " ths.classList.add(\"correctButton\");\n", " fb.className = \"Feedback\";\n", " fb.classList.add(\"correct\");\n", " } else {\n", " ths.className = \"Input-text\";\n", " ths.classList.add(\"incorrectButton\");\n", " fb.className = \"Feedback\";\n", " fb.classList.add(\"incorrect\");\n", " }\n", "\n", " // What follows is for the saved responses stuff\n", " var outerContainer = fb.parentElement.parentElement;\n", " var responsesContainer = document.getElementById(\"responses\" + outerContainer.id);\n", " if (responsesContainer) {\n", " console.log(submission);\n", " var qnum = document.getElementById(\"quizWrap\"+id).dataset.qnum;\n", " //console.log(\"Question \" + qnum);\n", " //console.log(id, \", got numcorrect=\",fb.dataset.numcorrect);\n", " var responses=JSON.parse(responsesContainer.dataset.responses);\n", " console.log(responses);\n", " if (submission == ths.value){\n", " responses[qnum]= submission;\n", " } else {\n", " responses[qnum]= ths.value + \"(\" + submission +\")\";\n", " }\n", " responsesContainer.setAttribute('data-responses', JSON.stringify(responses));\n", " printResponses(responsesContainer);\n", " }\n", " // End code to preserve responses\n", "\n", " if (typeof MathJax != 'undefined') {\n", " var version = MathJax.version;\n", " console.log('MathJax version', version);\n", " if (version[0] == \"2\") {\n", " MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n", " } else if (version[0] == \"3\") {\n", " MathJax.typeset([fb]);\n", " }\n", " } else {\n", " console.log('MathJax not detected');\n", " }\n", " return false;\n", " }\n", "\n", "}\n", "\n", "function isValid(el, charC) {\n", " //console.log(\"Input char: \", charC);\n", " if (charC == 46) {\n", " if (el.value.indexOf('.') === -1) {\n", " return true;\n", " } else if (el.value.indexOf('/') != -1) {\n", " var parts = el.value.split('/');\n", " if (parts[1].indexOf('.') === -1) {\n", " return true;\n", " }\n", " }\n", " else {\n", " return false;\n", " }\n", " } else if (charC == 47) {\n", " if (el.value.indexOf('/') === -1) {\n", " if ((el.value != \"\") && (el.value != \".\")) {\n", " return true;\n", " } else {\n", " return false;\n", " }\n", " } else {\n", " return false;\n", " }\n", " } else if (charC == 45) {\n", " var edex = el.value.indexOf('e');\n", " if (edex == -1) {\n", " edex = el.value.indexOf('E');\n", " }\n", "\n", " if (el.value == \"\") {\n", " return true;\n", " } else if (edex == (el.value.length - 1)) { // If just after e or E\n", " return true;\n", " } else {\n", " return false;\n", " }\n", " } else if (charC == 101) { // \"e\"\n", " if ((el.value.indexOf('e') === -1) && (el.value.indexOf('E') === -1) && (el.value.indexOf('/') == -1)) {\n", " // Prev symbol must be digit or decimal point:\n", " if (el.value.slice(-1).search(/\\d/) >= 0) {\n", " return true;\n", " } else if (el.value.slice(-1).search(/\\./) >= 0) {\n", " return true;\n", " } else {\n", " return false;\n", " }\n", " } else {\n", " return false;\n", " }\n", " } else {\n", " if (charC > 31 && (charC < 48 || charC > 57))\n", " return false;\n", " }\n", " return true;\n", "}\n", "\n", "function numeric_keypress(evnt) {\n", " var charC = (evnt.which) ? evnt.which : evnt.keyCode;\n", "\n", " if (charC == 13) {\n", " check_numeric(this, evnt);\n", " } else {\n", " return isValid(this, charC);\n", " }\n", "}\n", "\n", "\n", "\n", "\n", "\n", "function make_numeric(qa, outerqDiv, qDiv, aDiv, id) {\n", "\n", "\n", "\n", " //console.log(answer);\n", "\n", "\n", " outerqDiv.className = \"NumericQn\";\n", " aDiv.style.display = 'block';\n", "\n", " var lab = document.createElement(\"label\");\n", " lab.className = \"InpLabel\";\n", " lab.textContent = \"Type numeric answer here:\";\n", " aDiv.append(lab);\n", "\n", " var inp = document.createElement(\"input\");\n", " inp.type = \"text\";\n", " //inp.id=\"input-\"+id;\n", " inp.id = id + \"-0\";\n", " inp.className = \"Input-text\";\n", " inp.setAttribute('data-answers', JSON.stringify(qa.answers));\n", " if (\"precision\" in qa) {\n", " inp.setAttribute('data-precision', qa.precision);\n", " }\n", " aDiv.append(inp);\n", " //console.log(inp);\n", "\n", " //inp.addEventListener(\"keypress\", check_numeric);\n", " //inp.addEventListener(\"keypress\", numeric_keypress);\n", " /*\n", " inp.addEventListener(\"keypress\", function(event) {\n", " return numeric_keypress(this, event);\n", " }\n", " );\n", " */\n", " //inp.onkeypress=\"return numeric_keypress(this, event)\";\n", " inp.onkeypress = numeric_keypress;\n", " inp.onpaste = event => false;\n", "\n", " inp.addEventListener(\"focus\", function (event) {\n", " this.value = \"\";\n", " return false;\n", " }\n", " );\n", "\n", "\n", "}\n", "function jaxify(string) {\n", " var mystring = string;\n", "\n", " var count = 0;\n", " var loc = mystring.search(/([^\\\\]|^)(\\$)/);\n", "\n", " var count2 = 0;\n", " var loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n", "\n", " //console.log(loc);\n", "\n", " while ((loc >= 0) || (loc2 >= 0)) {\n", "\n", " /* Have to replace all the double $$ first with current implementation */\n", " if (loc2 >= 0) {\n", " if (count2 % 2 == 0) {\n", " mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\[\");\n", " } else {\n", " mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\]\");\n", " }\n", " count2++;\n", " } else {\n", " if (count % 2 == 0) {\n", " mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\(\");\n", " } else {\n", " mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\)\");\n", " }\n", " count++;\n", " }\n", " loc = mystring.search(/([^\\\\]|^)(\\$)/);\n", " loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n", " //console.log(mystring,\", loc:\",loc,\", loc2:\",loc2);\n", " }\n", "\n", " //console.log(mystring);\n", " return mystring;\n", "}\n", "\n", "\n", "function show_questions(json, mydiv) {\n", " console.log('show_questions');\n", " //var mydiv=document.getElementById(myid);\n", " var shuffle_questions = mydiv.dataset.shufflequestions;\n", " var num_questions = mydiv.dataset.numquestions;\n", " var shuffle_answers = mydiv.dataset.shuffleanswers;\n", "\n", " if (num_questions > json.length) {\n", " num_questions = json.length;\n", " }\n", "\n", " var questions;\n", " if ((num_questions < json.length) || (shuffle_questions == \"True\")) {\n", " //console.log(num_questions+\",\"+json.length);\n", " questions = getRandomSubarray(json, num_questions);\n", " } else {\n", " questions = json;\n", " }\n", "\n", " //console.log(\"SQ: \"+shuffle_questions+\", NQ: \" + num_questions + \", SA: \", shuffle_answers);\n", "\n", " // Iterate over questions\n", " questions.forEach((qa, index, array) => {\n", " //console.log(qa.question); \n", "\n", " var id = makeid(8);\n", " //console.log(id);\n", "\n", "\n", " // Create Div to contain question and answers\n", " var iDiv = document.createElement('div');\n", " //iDiv.id = 'quizWrap' + id + index;\n", " iDiv.id = 'quizWrap' + id;\n", " iDiv.className = 'Quiz';\n", " iDiv.setAttribute('data-qnum', index);\n", " mydiv.appendChild(iDiv);\n", " // iDiv.innerHTML=qa.question;\n", "\n", " var outerqDiv = document.createElement('div');\n", " outerqDiv.id = \"OuterquizQn\" + id + index;\n", "\n", " iDiv.append(outerqDiv);\n", "\n", " // Create div to contain question part\n", " var qDiv = document.createElement('div');\n", " qDiv.id = \"quizQn\" + id + index;\n", " //qDiv.textContent=qa.question;\n", " qDiv.innerHTML = jaxify(qa.question);\n", "\n", " outerqDiv.append(qDiv);\n", "\n", " // Create div for code inside question\n", " var codeDiv;\n", " if (\"code\" in qa) {\n", " codeDiv = document.createElement('div');\n", " codeDiv.id = \"code\" + id + index;\n", " codeDiv.className = \"QuizCode\";\n", " var codePre = document.createElement('pre');\n", " codeDiv.append(codePre);\n", " var codeCode = document.createElement('code');\n", " codePre.append(codeCode);\n", " codeCode.innerHTML = qa.code;\n", " outerqDiv.append(codeDiv);\n", " //console.log(codeDiv);\n", " }\n", "\n", "\n", " // Create div to contain answer part\n", " var aDiv = document.createElement('div');\n", " aDiv.id = \"quizAns\" + id + index;\n", " aDiv.className = 'Answer';\n", " iDiv.append(aDiv);\n", "\n", " //console.log(qa.type);\n", "\n", " var num_correct;\n", " if (qa.type == \"multiple_choice\") {\n", " num_correct = make_mc(qa, shuffle_answers, outerqDiv, qDiv, aDiv, id);\n", " } else if (qa.type == \"many_choice\") {\n", " num_correct = make_mc(qa, shuffle_answers, outerqDiv, qDiv, aDiv, id);\n", " } else if (qa.type == \"numeric\") {\n", " //console.log(\"numeric\");\n", " make_numeric(qa, outerqDiv, qDiv, aDiv, id);\n", " }\n", "\n", "\n", " //Make div for feedback\n", " var fb = document.createElement(\"div\");\n", " fb.id = \"fb\" + id;\n", " //fb.style=\"font-size: 20px;text-align:center;\";\n", " fb.className = \"Feedback\";\n", " fb.setAttribute(\"data-answeredcorrect\", 0);\n", " fb.setAttribute(\"data-numcorrect\", num_correct);\n", " iDiv.append(fb);\n", "\n", "\n", " });\n", " var preserveResponses = mydiv.dataset.preserveresponses;\n", " console.log(preserveResponses);\n", " console.log(preserveResponses == \"true\");\n", " if (preserveResponses == \"true\") {\n", " console.log(preserveResponses);\n", " // Create Div to contain record of answers\n", " var iDiv = document.createElement('div');\n", " iDiv.id = 'responses' + mydiv.id;\n", " iDiv.className = 'JCResponses';\n", " // Create a place to store responses as an empty array\n", " iDiv.setAttribute('data-responses', '[]');\n", "\n", " // Dummy Text\n", " iDiv.innerHTML=\"Select your answers and then follow the directions that will appear here.\"\n", " //iDiv.className = 'Quiz';\n", " mydiv.appendChild(iDiv);\n", " }\n", "//console.log(\"At end of show_questions\");\n", " if (typeof MathJax != 'undefined') {\n", " console.log(\"MathJax version\", MathJax.version);\n", " var version = MathJax.version;\n", " setTimeout(function(){\n", " var version = MathJax.version;\n", " console.log('After sleep, MathJax version', version);\n", " if (version[0] == \"2\") {\n", " MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n", " } else if (version[0] == \"3\") {\n", " MathJax.typeset([mydiv]);\n", " }\n", " }, 500);\n", "if (typeof version == 'undefined') {\n", " } else\n", " {\n", " if (version[0] == \"2\") {\n", " MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n", " } else if (version[0] == \"3\") {\n", " MathJax.typeset([mydiv]);\n", " } else {\n", " console.log(\"MathJax not found\");\n", " }\n", " }\n", " }\n", " return false;\n", "}\n", "\n", " {\n", " show_questions(questionsgliyAFznUIOU, gliyAFznUIOU);\n", " }\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"Slicing DataFrames using .loc and .iloc\")\n", "display_quiz(example);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(3114:04:stop_and_think_1)= \n", "Let's take a subset of our data to inlcude the columns: 'Survived', 'Pclass','Sex','Age', and 'Fare'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "We have 891 records. Here are the first 5.\n" ] }, { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    SurvivedPclassSexAgeFare
    003male22.07.2500
    111female38.071.2833
    213female26.07.9250
    311female35.053.1000
    403male35.08.0500
    \n", "
    " ], "text/plain": [ " Survived Pclass Sex Age Fare\n", "0 0 3 male 22.0 7.2500\n", "1 1 1 female 38.0 71.2833\n", "2 1 3 female 26.0 7.9250\n", "3 1 1 female 35.0 53.1000\n", "4 0 3 male 35.0 8.0500" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data=raw.loc[:,['Survived', 'Pclass','Sex','Age','Fare']]\n", "print(f\"We have {data.shape[0]} records. Here are the first 5.\")\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{Note} \n", "This would be a good place to test the code above as outlined in [Problem 1](3114:04:Exercises:Problem_1). Notice the use of the f-string and the syntax {data.shape[0]}. What's happening here? Why are we using curly braces? What does .shape do? and why did we use .shape[0] and not .shape or .shape[1]? \n", ":::" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "(3114:04:groupby-1-column)=\n", "### groupby 1 column" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's find the average ticket price paid for those that died and those that survived? We can accomplish this by grouping by the column 'Survived.' This will aggregate all the data according to whether the value in this column is a 0 (died) or a 1 (survived). Then we just tell pandas what to do with this aggregated data. In our case, we want the mean. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    PclassAgeFare
    Survived
    02.53187630.62617922.117887
    11.95029228.34369048.395408
    \n", "
    " ], "text/plain": [ " Pclass Age Fare\n", "Survived \n", "0 2.531876 30.626179 22.117887\n", "1 1.950292 28.343690 48.395408" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby('Survived').mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see this gives us the mean value of Pclass, Age, and Fare for all those with a 0 (died) or 1 (survived) in the Survived column. The column values (0 or 1) have now been set as the row index. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{admonition} Something to try \n", "What do you expect to get if you grouped by 'Pclass' rather than 'Survived' i.e. `data.groupby('Pclass').mean()` ? Think about it first and then try it and see. The mean values given for 'Survived' is quite interesting. How would you interpret these results? \n", ":::" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's get the mean Fare price for those that died and survived and present those results as a bar plot. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHFCAYAAAAHcXhbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDj0lEQVR4nO3deXxN1/7/8fchswzmJAiC1Dwrkt7boI1Zo2gpram9V2lvKaqUoi2iuaWpautSU1tUa6pOKjVVDbdUqZquElOJIYggIpL1+8Mv59vTJOSQSDav5+NxHg977elzTpJz3tZeax+bMcYIAADAogrldwEAAAC3gzADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTCDAm3KlCmy2WyqVatWfpdS4DRr1kw2my3Lx2+//Zbf5Wns2LEONbm5uSk4OFgDBw7U+fPnnT5exYoV1bt375tut3btWtlsNq1du9bpc9ztjh49qgEDBui+++6Tp6enihcvrtq1a+sf//iHjh49mi813Ymf15w5c2Sz2XTo0KE8Owfyl0t+FwDcyKxZsyRJu3bt0n//+181adIknysqWCpVqqR58+Zlaq9cuXI+VJO1FStWyM/PT0lJSfrmm2/0zjvv6KefftLGjRtls9lyfJylS5fK19c3Dyu9ux07dkwNGjRQ0aJFNWTIEFWtWlWJiYnavXu3PvvsMx08eFBBQUF3vK4GDRpo06ZNqlGjxh0/N+4ehBkUWFu3btWOHTvUrl07ff3115o5c+YdDzPGGF25ckWenp539Lw55enpqaZNm+b6cS9fviwvL69cOVbDhg1VsmRJSVJERIQSEhL08ccfa+PGjXrggQdyfJz69evnSj13UnJysjw8PJwKbXllxowZOnPmjH766ScFBwfb2zt27KhXXnlF6enpuXKetLQ0Xbt2Te7u7jna3tfXN09+h3Fv4TITCqyZM2dKkiZOnKiwsDB9+umnunz5siQpNTVVpUuX1lNPPZVpv/Pnz8vT01ODBw+2t124cEFDhw5VcHCw3NzcVLZsWQ0aNEiXLl1y2Ndms+n555/XtGnTVL16dbm7u2vu3LmSpNdee01NmjRR8eLF5evrqwYNGmjmzJn663e1pqSkaMiQIQoICJCXl5cefPBB/fzzz1leJomPj1e/fv1Urlw5+2WY1157TdeuXbvt12/hwoVq2bKlAgMD5enpqerVq2v48OGZnnPv3r3l7e2tnTt3qmXLlvLx8dFDDz0kSbp69arGjRunatWqyd3dXaVKlVKfPn10+vTpW64r44Pr8OHDunLlioYMGaJ69erJz89PxYsXV2hoqL744otM+2X1+u3du1etW7eWl5eXSpYsqWeffVZJSUk3rWHZsmWy2WxatWpVpnUffPCBbDabfv31V3vb1q1b9cgjj6h48eLy8PBQ/fr19dlnnznsl3EpY+XKlerbt69KlSolLy8vpaSk6PTp0/rnP/+poKAg++v4wAMP6Pvvv7/h85OuX05s1qyZfTk9PV3jxo1T1apV5enpqaJFi6pOnTp65513bvicExISVKhQIZUuXTrL9YUK/d/HwV/PmaF3796qWLGiffnQoUOy2WyKjo7WuHHjFBwcLHd3d3322Wdyc3PTq6++mukYe/fulc1m05QpUyRlvswUExMjm82m33//PdO+L7/8stzc3HTmzBlJUmxsrCIjI1WuXDl5eHioSpUq6tevn3097h30zKBASk5O1oIFC3T//ferVq1a6tu3r5555hl9/vnn6tWrl1xdXfXkk09q2rRpeu+99xwuPyxYsEBXrlxRnz59JF3vZQgPD9exY8f0yiuvqE6dOtq1a5dGjx6tnTt36vvvv3f4n/OyZcu0fv16jR49WgEBAfY3/0OHDqlfv34qX768JGnz5s3617/+pT/++EOjR4+279+nTx8tXLhQw4YNU4sWLbR79249+uijunDhgsNzjI+PV+PGjVWoUCGNHj1alStX1qZNmzRu3DgdOnRIs2fPztFr9dfgU6hQIRUqVEj79+9X27ZtNWjQIBUpUkR79+7Vm2++qZ9++kmrV6922Ofq1at65JFH1K9fPw0fPlzXrl1Tenq6IiMjtX79eg0bNkxhYWE6fPiwxowZo2bNmmnr1q231GOV8SFVqlQppaSk6OzZsxo6dKjKli2rq1ev6vvvv1enTp00e/Zs9ezZM9vjnDx5UuHh4XJ1ddX7778vf39/zZs3T88///xNa2jfvr1Kly6t2bNn24Nbhjlz5qhBgwaqU6eOJGnNmjVq3bq1mjRpomnTpsnPz0+ffvqpunbtqsuXL2cKIH379lW7du308ccf69KlS3J1ddVTTz2lbdu2afz48brvvvt0/vx5bdu2TQkJCU6+elJ0dLTGjh2rUaNG6cEHH1Rqaqr27t1703FIoaGheu+999SpUycNHjxYoaGhuXbZbsqUKbrvvvv01ltvydfXVyEhIWrfvr3mzp2r1157zSEozZ49W25uburRo0eWx3ryySf18ssva86cORo3bpy9PS0tTZ988ok6dOhg7+k7cOCAQkND9cwzz8jPz0+HDh3S5MmT9be//U07d+6Uq6trrjw/WIABCqCPPvrISDLTpk0zxhiTlJRkvL29zd///nf7Nr/++quRZKZPn+6wb+PGjU3Dhg3ty1FRUaZQoUJmy5YtDtstWrTISDLffPONvU2S8fPzM2fPnr1hfWlpaSY1NdW8/vrrpkSJEiY9Pd0YY8yuXbuMJPPyyy87bL9gwQIjyfTq1cve1q9fP+Pt7W0OHz7ssO1bb71lJJldu3bdsIbw8HAjKdOjR48embZNT083qampZt26dUaS2bFjh31dr169jCQza9asLGtevHixQ/uWLVuMJPP+++/fsL4xY8YYSSY+Pt6kpqaac+fOmU8++cR4enqaoKAgk5ycnGmfa9eumdTUVPP000+b+vXrO6yrUKGCw+v38ssvG5vNZrZv3+6wXUREhJFk1qxZc8P6Bg8ebDw9Pc358+ftbbt37zaSzLvvvmtvq1atmqlfv75JTU112L99+/YmMDDQpKWlGWOMmT17tpFkevbsmelc3t7eZtCgQTes56/PL0N4eLgJDw93OG+9evVueKyspKenm379+plChQoZScZms5nq1aubF1980cTFxd3wnBl69eplKlSoYF+Oi4szkkzlypXN1atXHbZdvny5kWRWrlxpb7t27ZopU6aM6dy5s71tzZo1mX5enTp1MuXKlbO/tsYY88033xhJ5ssvv8z2+aWmpprDhw8bSeaLL76wr8v42fz1eeLuwWUmFEgzZ86Up6enunXrJkny9vbWY489pvXr12v//v2SpNq1a6thw4YOPRh79uzRTz/9pL59+9rbvvrqK9WqVUv16tXTtWvX7I9WrVplOYuiRYsWKlasWKaaVq9erYcfflh+fn4qXLiwXF1dNXr0aCUkJOjUqVOSpHXr1kmSHn/8cYd9u3TpIhcXx47Qr776Ss2bN1eZMmUc6mrTpo3DsW6kcuXK2rJli8PjjTfekCQdPHhQ3bt3V0BAgL3e8PBw++v0V507d85UX9GiRdWh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AIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClFZgwExUVJZvNpkGDBtnbjDEaO3asypQpI09PTzVr1ky7du3KvyIBAECBUyDCzJYtWzR9+nTVqVPHoT06OlqTJ0/W1KlTtWXLFgUEBCgiIkJJSUn5VCkAACho8j3MXLx4UT169NCMGTNUrFgxe7sxRjExMRo5cqQ6deqkWrVqae7cubp8+bLmz5+fjxUDAICCJN/DzHPPPad27drp4YcfdmiPi4tTfHy8WrZsaW9zd3dXeHi4Nm7ceKfLBAAABZRLfp78008/1bZt27Rly5ZM6+Lj4yVJ/v7+Du3+/v46fPhwtsdMSUlRSkqKffnChQu5VC0AACiI8q1n5ujRoxo4cKA++eQTeXh4ZLudzWZzWDbGZGr7s6ioKPn5+dkfQUFBuVYzAAAoePItzPz88886deqUGjZsKBcXF7m4uGjdunWaMmWKXFxc7D0yGT00GU6dOpWpt+bPRowYocTERPvj6NGjefo8AABA/sq3y0wPPfSQdu7c6dDWp08fVatWTS+//LIqVaqkgIAAxcbGqn79+pKkq1evat26dXrzzTezPa67u7vc3d3ztHYAAFBw5FuY8fHxUa1atRzaihQpohIlStjbBw0apAkTJigkJEQhISGaMGGCvLy81L179/woGQAAFED5OgD4ZoYNG6bk5GQNGDBA586dU5MmTbRy5Ur5+Pjkd2kAAKCAsBljTH4XkZcuXLggPz8/JSYmytfXN7/LAYBcYRvyZX6XgDvITOqQ3yXccc58fuf7fWYAAABuB2EGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABYGmEGAABY2i2FmfPnz+vDDz/UiBEjdPbsWUnStm3b9Mcff+RqcQAAADfj4uwOv/76qx5++GH5+fnp0KFD+sc//qHixYtr6dKlOnz4sD766KO8qBMAACBLTvfMDB48WL1799b+/fvl4eFhb2/Tpo1++OGHXC0OAADgZpwOM1u2bFG/fv0ytZctW1bx8fG5UhQAAEBOOR1mPDw8dOHChUzt+/btU6lSpXKlKAAAgJxyOsxERkbq9ddfV2pqqiTJZrPpyJEjGj58uDp37pzrBQIAANyI02Hmrbfe0unTp1W6dGklJycrPDxcVapUkY+Pj8aPH58XNQIAAGTL6dlMvr6++vHHH7V69Wpt27ZN6enpatCggR5++OG8qA8AAOCGnA4zGVq0aKEWLVrkZi0AAABOc/oy0wsvvKApU6Zkap86daoGDRqUGzUBAADkmNNhZvHixXrggQcytYeFhWnRokW5UhQAAEBOOR1mEhIS5Ofnl6nd19dXZ86cyZWiAAAAcsrpMFOlShWtWLEiU/u3336rSpUq5UpRAAAAOeX0AODBgwfr+eef1+nTp+0DgFetWqVJkyYpJiYmt+sDAAC4IafDTN++fZWSkqLx48frjTfekCRVrFhRH3zwgXr27JnrBQIAANzILU3N7t+/v/r376/Tp0/L09NT3t7euV0XAABAjtzyfWYk8V1MAAAg3+UozDRo0ECrVq1SsWLFVL9+fdlstmy33bZtW64VBwAAcDM5CjORkZFyd3eXJHXs2DEv6wEAAHBKjsLMmDFjJElpaWlq1qyZ6tSpo2LFiuVpYQAAADnh1H1mChcurFatWun8+fN5VA4AAIBznL5pXu3atXXw4MG8qAUAAMBpToeZ8ePHa+jQofrqq6904sQJXbhwweEBAABwJzk9Nbt169aSpEceecRhVpMxRjabTWlpablXHQAAwE04HWbWrFmT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verUqaM6deooOjpax44dy4v6AAAAbsjpMFOyZEk9//zz2rBhgw4cOKCuXbvqo48+UsWKFdWiRYu8qBEAACBbt/TdTBmCg4M1fPhwTZw4UbVr19a6detyqy4AAIAcueUws2HDBg0YMECBgYHq3r27atasqa+++io3awMAALgpp2czvfLKK1qwYIGOHz+uhx9+WDExMerYsaO8vLzyoj4AAIAbcjrMrF27VkOHDlXXrl1VsmRJh3Xbt29XvXr1cqs2AACAm3I6zGzcuNFhOTExUfPmzdOHH36oHTt2KC0tLdeKAwAAuJlbHjOzevVqPfnkkwoMDNS7776rtm3bauvWrblZGwAAwE051TNz7NgxzZkzR7NmzdKlS5f0+OOPKzU1VYsXL1aNGjXyqkYAAIBs5bhnpm3btqpRo4Z2796td999V8ePH9e7776bl7UBAADcVI57ZlauXKkXXnhB/fv350slAQBAgZHjnpn169crKSlJjRo1UpMmTTR16lSdPn06L2sDAAC4qRyHmdDQUM2YMUMnTpxQv3799Omnn6ps2bJKT09XbGyskpKS8rJOAACALDk9m8nLy0t9+/bVjz/+qJ07d2rIkCGaOHGiSpcurUceeSQvagQAAMjWbX03U9WqVe3fmL1gwYLcqgkAACDHbivMZChcuLA6duyo5cuX58bhAAAAcixXwgwAAEB+IcwAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLI8wAAABLy9cw88MPP6hDhw4qU6aMbDabli1b5rDeGKOxY8eqTJky8vT0VLNmzbRr1678KRYAABRI+RpmLl26pLp162rq1KlZro+OjtbkyZM1depUbdmyRQEBAYqIiFBSUtIdrhQAABRULvl58jZt2qhNmzZZrjPGKCYmRiNHjlSnTp0kSXPnzpW/v7/mz5+vfv363clSAQBAAVVgx8zExcUpPj5eLVu2tLe5u7srPDxcGzduzHa/lJQUXbhwweEBAADuXgU2zMTHx0uS/P39Hdr9/f3t67ISFRUlPz8/+yMoKChP6wQAAPmrwIaZDDabzWHZGJOp7c9GjBihxMRE++Po0aN5XSIAAMhH+Tpm5kYCAgIkXe+hCQwMtLefOnUqU2/Nn7m7u8vd3T3P6wMAAAVDge2ZCQ4OVkBAgGJjY+1tV69e1bp16xQWFpaPlQEAgIIkX3tmLl68qN9//92+HBcXp+3bt6t48eIqX768Bg0apAkTJigkJEQhISGaMGGCvLy81L1793ysGgAAFCT5Gma2bt2q5s2b25cHDx4sSerVq5fmzJmjYcOGKTk5WQMGDNC5c+fUpEkTrVy5Uj4+PvlVMgAAKGDyNcw0a9ZMxphs19tsNo0dO1Zjx469c0UBAABLKbBjZgAAAHKCMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACyNMAMAACzNEmHm/fffV3BwsDw8PNSwYUOtX78+v0sCAAAFRIEPMwsXLtSgQYM0cuRI/fLLL/r73/+uNm3a6MiRI/ldGgAAKAAKfJiZPHmynn76aT3zzDOqXr26YmJiFBQUpA8++CC/SwMAAAVAgQ4zV69e1c8//6yWLVs6tLds2VIbN27Mp6oAAEBB4pLfBdzImTNnlJaWJn9/f4d2f39/xcfHZ7lPSkqKUlJS7MuJiYmSpAsXLuRdoQVVyuX8rgB30D35O34v4+/7nnIv/n1nPGdjzE23LdBhJoPNZnNYNsZkassQFRWl1157LVN7UFBQntQGFBR+7+V3BQDyyr38952UlCQ/P78bblOgw0zJkiVVuHDhTL0wp06dytRbk2HEiBEaPHiwfTk9PV1nz55ViRIlsg1AuHtcuHBBQUFBOnr0qHx9ffO7HAC5iL/ve4sxRklJSSpTpsxNty3QYcbNzU0NGzZUbGysHn30UXt7bGysIiMjs9zH3d1d7u7uDm1FixbNyzJRAPn6+vJmB9yl+Pu+d9ysRyZDgQ4zkjR48GA99dRTatSokUJDQzV9+nQdOXJEzz77bH6XBgAACoACH2a6du2qhIQEvf766zpx4oRq1aqlb775RhUqVMjv0gAAQAFQ4MOMJA0YMEADBgzI7zJgAe7u7hozZkymS40ArI+/b2THZnIy5wkAAKCAKtA3zQMAALgZwgwAALA0wgwAALA0wgwszWazadmyZbd1jN69e6tjx465Ug+AvLd27VrZbDadP38+T8/De4N1EGZQIPXu3Vs2m002m02urq7y9/dXRESEZs2apfT0dPt2J06cUJs2bfKxUuDederUKfXr10/ly5eXu7u7AgIC1KpVK23atClPzxsWFqYTJ07k+IZquPtZYmo27k2tW7fW7NmzlZaWppMnT2rFihUaOHCgFi1apOXLl8vFxUUBAQH5XSZwz+rcubNSU1M1d+5cVapUSSdPntSqVat09uzZWzqeMUZpaWlycbnxR5Obmxt/+3BAzwwKrIz/6ZUtW1YNGjTQK6+8oi+++ELffvut5syZIynzZaY//vhDXbt2VbFixVSiRAlFRkbq0KFD9vVpaWkaPHiwihYtqhIlSmjYsGE5+kZWAI7Onz+vH3/8UW+++aaaN2+uChUqqHHjxhoxYoTatWunQ4cOyWazafv27Q772Gw2rV27VtL/XS767rvv1KhRI7m7u2vmzJmy2Wzau3evw/kmT56sihUryhjjcJkpMTFRnp6eWrFihcP2S5YsUZEiRXTx4kVJvDfc7QgzsJQWLVqobt26WrJkSaZ1ly9fVvPmzeXt7a0ffvhBP/74o7y9vdW6dWtdvXpVkjRp0iTNmjVLM2fO1I8//qizZ89q6dKld/ppAJbn7e0tb29vLVu2TCkpKbd1rGHDhikqKkp79uxRly5d1LBhQ82bN89hm/nz56t79+6ZvjDYz89P7dq1y3L7yMhIeXt7895wLzBAAdSrVy8TGRmZ5bquXbua6tWrG2OMkWSWLl1qjDFm5syZpmrVqiY9Pd2+bUpKivH09DTfffedMcaYwMBAM3HiRPv61NRUU65cuWzPBSB7ixYtMsWKFTMeHh4mLCzMjBgxwuzYscMYY0xcXJyRZH755Rf79ufOnTOSzJo1a4wxxqxZs8ZIMsuWLXM47uTJk02lSpXsy/v27TOSzK5duxz2O3funDHGmCVLlhhvb29z6dIlY4wxiYmJxsPDw3z99dfGGN4b7gX0zMByjDGZ/ncmST///LN+//13+fj42P/XWLx4cV25ckUHDhxQYmKiTpw4odDQUPs+Li4uatSo0Z0sH7hrdO7cWcePH9fy5cvVqlUrrV27Vg0aNLBfBs6pv/4NduvWTYcPH9bmzZslSfPmzVO9evVUo0aNLPdv166dXFxctHz5cknS4sWL5ePjo5YtW0riveFewABgWM6ePXsUHBycqT09PT3L7mlJKlWq1J0oDbjneHh4KCIiQhERERo9erSeeeYZjRkzRuvXr5ckh3EnqampWR6jSJEiDsuBgYFq3ry55s+fr6ZNm2rBggXq169ftjW4ubmpS5cumj9/vrp166b58+era9eu9oHEvDfc/eiZgaWsXr1aO3fuVOfOnTOta9Cggfbv36/SpUurSpUqDg8/Pz/5+fkpMDDQ/r89Sbp27Zp+/vnnO/kUgLtajRo1dOnSJXtIOHHihH3dnwcD30yPHj20cOFCbdq0SQcOHFC3bt1uuv2KFSu0a9curVmzRj169LCv473h7keYQYGVkpKi+Ph4/fHHH9q2bZsmTJigyMhItW/fXj179sy0fY8ePVSyZElFRkZq/fr1iouL07p16zRw4EAdO3ZMkjRw4EBNnDhRS5cu1d69ezVgwIA8v/EWcDdKSEhQixYt9Mknn+jXX39VXFycPv/8c0VHRysyMlKenp5q2rSpJk6cqN27d+uHH37QqFGjcnz8Tp066cKFC+rfv7+aN2+usmXL3nD78PBw+fv7q0ePHqpYsaKaNm1qX8d7w92PMIMCa8WKFQoMDFTFihXVunVrrVmzRlOmTNEXX3yhwoULZ9rey8tLP/zwg8qXL69OnTqpevXq6tu3r5KTk+Xr6ytJGjJkiHr27KnevXsrNDRUPj4+evTRR+/0UwMsz9vbW02aNNHbb7+tBx98ULVq1dKrr76qf/zjH5o6daokadasWUpNTVWjRo00cOBAjRs3LsfH9/X1VYcOHbRjxw6HXpbs2Gw2PfHEE1luz3vD3c9mDBPpAQCAddEzAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wA+COWrt2rWw2W67eXXXs2LGqV69erh0PgLUQZoB70KlTp9SvXz+VL19e7u7uCggIUKtWrbRp06Y8P3dYWJhOnDghPz+/PD/Xny1evFhNmjSRn5+ffHx8VLNmTQ0ZMsS+/lYD0Zw5c1S0aNHcKxSA0/jWbOAe1LlzZ6Wmpmru3LmqVKmSTp48qVWrVuns2bO3fExjjNLS0uzfVJwdNzc3BQQE3PJ5bsX333+vbt26acKECXrkkUdks9m0e/durVq16o7WASCPGAD3lHPnzhlJZu3atdluExcXZySZX375JdN+a9asMcYYs2bNGiPJrFixwjRs2NC4urqaadOmGUlmz549DsebNGmSqVChgklPT7fvd+7cOXP+/Hnj4eFhvv32W4ftFy9ebLy8vExSUpIxxphhw4aZkJAQ4+npaYKDg82oUaPM1atX7duPGTPG1K1bN9vnM3DgQNOsWbNs18+ePdtIcnjMnj3bXnutWrWMl5eXKVeunOnfv7+9rozn8ufHmDFjjDHGSDJLly51OI+fn5/9uCkpKea5554zAQEBxt3d3VSoUMFMmDAh2xoBZI/LTMA9xtvbW97e3lq2bJlSUlJu+3jDhg1TVFSU9uzZoy5duqhhw4aaN2+ewzbz589X9+7dZbPZHNr9/PzUrl27LLePjIyUt7e3JMnHx0dz5szR7t279c4772jGjBl6++23c1xjQECAdu3apd9++y3L9V27dtWQIUNUs2ZNnThxQidOnFDXrl0lSYUKFdKUKVP022+/ae7cuVq9erWGDRsm6fols5iYGPn6+tr3Gzp0aI5qmjJlipYvX67PPvtM+/bt0yeffKKKFSvm+DkB+JP8TlMA7rxFixaZYsWKGQ8PDxMWFmZGjBhhduzYYV/vTM/MsmXLHI49efJkU6lSJfvyvn37jCSza9cuh/3OnTtnjDFmyZIlxtvb21y6dMkYY0xiYqLx8PAwX3/9dbb1R0dHm4YNG9qXb9Yzc/HiRdO2bVsjyVSoUMF07drVzJw501y5ciXHx8jw2WefmRIlStiXZ8+ebfz8/DJtp5v0zPzrX/8yLVq0MOnp6Tc9J4Abo2cGuAd17txZx48f1/Lly9WqVSutXbtWDRo00Jw5c5w+VqNGjRyWu3XrpsOHD2vz5s2SpHnz5qlevXqqUaNGlvu3a9dOLi4uWr58uaTrA3V9fHzUsmVL+zaLFi3S3/72NwUEBMjb21uvvvqqjhw5kuMaixQpoq+//lq///67Ro0aJW9vbw0ZMkSNGzfW5cuXb7jvmjVrFBERobJly8rHx0c9e/ZUQkKCLl26lOPzZ6V3797avn27qlatqhdeeEErV668reMB9zLCDHCP8vDwUEREhEaPHq2NGzeqd+/eGjNmjKTrl1ak64N6M6SmpmZ5nCJFijgsBwYGqnnz5po/f74kacGCBXryySezrcPNzU1dunSxbz9//nx17drVPpB48+bN6tatm9q0aaOvvvpKv/zyi0aOHKmrV686/ZwrV66sZ555Rh9++KG2bdum3bt3a+HChdluf/jwYbVt21a1atXS4sWL9fPPP+u9996TlP3rkcFmszm8fn/dp0GDBoqLi9Mbb7yh5ORkPf744+rSpYvTzwkAYQbA/1ejRg17b0OpUqUkSSdOnLCv3759e46P1aNHDy1cuFCbNm3SgQMH1K1bt5tuv2LFCu3atUtr1qxRjx497Os2bNigChUqaOTIkWrUqJFCQkJ0+PBhJ55Z1ipWrCgvLy/7c3Zzc1NaWprDNlu3btW1a9c0adIkNW3aVPfdd5+OHz/usE1W+0nXX8M/v3779+/P1Avk6+urrl27asaMGVq4cKEWL158WzPKgHsVU7OBe0xCQoIee+wx9e3bV3Xq1JGPj4+2bt2q6OhoRUZGSpI8PT3VtGlTTZw4URUrVtSZM2c0atSoHJ+jU6dO6t+/v/r376/mzZurbNmyN9w+PDxc/v7+6tGjhypWrKimTZva11WpUkVHjhzRp59+qvvvv19ff/21li5d6tRzHjt2rC5fvqy2bduqQoUKOn/+vKZMmaLU1FRFRERIuh5u4uLitH37dpUrV04+Pj6qXLmyrl27pnfffVcdOnTQhg0bNG3aNIdjV6xYURcvXtSqVatUt25deXl5ycvLSy1atNDUqVPVtGlTpaen6+WXX5arq6t9v7fffluBgYGqV6+eChUqpM8//1wBAQHcswa4Ffk9aAfAnXXlyhUzfPhw06BBA+Pn52e8vLxM1apVzahRo8zly5ft2+3evds0bdrUeHp6mnr16pmVK1dmOQA4YyDvXz322GNGkpk1a5ZDe3b7vfTSS0aSGT16dKZjvfTSS6ZEiRLG29vbdO3a1bz99tsOg25vNnh39erVpnPnziYoKMi4ubkZf39/07p1a7N+/XqH16Vz586maNGiDlOzJ0+ebAIDA42np6dp1aqV+eijjzLV/+yzz5oSJUo4TM3+448/TMuWLU2RIkVMSEiI+eabbxwGAE+fPt3Uq1fPFClSxPj6+pqHHnrIbNu2LdvnACB7NmP+clEXAADAQhgzAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALI0wAwAALO3/Ae1TGSM89kMeAAAAAElFTkSuQmCC", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df=data.groupby('Survived').mean()\n", "\n", "dataforbar=df.loc[:,'Fare'] #all rows (:), column 'Fare'\n", "\n", "labels = ['Died','Survived']\n", "\n", "# the following code might be useful for your cheatsheet\n", "fig1, ax1 = plt.subplots()\n", "dataforbar.plot.bar(ax=ax1, rot=0) #notice format here for bar plots dataframe.plot.bar(ax= , rot=0)\n", "ax1.set_xticklabels(labels) # if not used, you will get the labels that are in the dataframe which is often fine\n", "ax1.set_xlabel('Survival Status') # will default to column label of dataframe if not used\n", "ax1.set_ylabel('Average Fare Price')\n", "ax1.set_title('Average Fare Paid versus Survival')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{admonition} Something to try \n", "Group by 'Pclass', `df=data.groupby('Pclass').mean()` and make a barchart for the data in column 'Survived', `dataforbar=df.loc[:,'Survived']`. How would you interpret these results for example, which class had the lowest survival rate? \n", ":::" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### groupby 2 columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What is the average age of male and female passengers in 1st, 2nd, and 3rd class? To answer this we want to know about a feature \"average age\" broken out by two other features \"Sex\" and \"Pclass.\" For this, we will groupby both Sex and Pclass. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    Pclass123
    Sex
    female34.61176528.72297321.750000
    male41.28138630.74070726.507589
    \n", "
    " ], "text/plain": [ "Pclass 1 2 3\n", "Sex \n", "female 34.611765 28.722973 21.750000\n", "male 41.281386 30.740707 26.507589" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Sex','Pclass']).mean().unstack().loc[:,'Age']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wow, we did this all in one step. When you see code with multiple steps in one line like this, you should break it down to better understand what each command is doing. We have already seen the first two `.groupby()` and `.mean()`. So let's start there:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    SurvivedAgeFare
    SexPclass
    female10.96808534.611765106.125798
    20.92105328.72297321.970121
    30.50000021.75000016.118810
    male10.36885241.28138667.226127
    20.15740730.74070719.741782
    30.13544726.50758912.661633
    \n", "
    " ], "text/plain": [ " Survived Age Fare\n", "Sex Pclass \n", "female 1 0.968085 34.611765 106.125798\n", " 2 0.921053 28.722973 21.970121\n", " 3 0.500000 21.750000 16.118810\n", "male 1 0.368852 41.281386 67.226127\n", " 2 0.157407 30.740707 19.741782\n", " 3 0.135447 26.507589 12.661633" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Sex','Pclass']).mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All the information we need is given in the column \"Age.\" We could get this by slicing on that column:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Sex Pclass\n", "female 1 34.611765\n", " 2 28.722973\n", " 3 21.750000\n", "male 1 41.281386\n", " 2 30.740707\n", " 3 26.507589\n", "Name: Age, dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Sex','Pclass']).mean().loc[:,\"Age\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this form, we get one column of data with 2 indices for each row. I can see this if I ask for the index of this data: " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('female', 1),\n", " ('female', 2),\n", " ('female', 3),\n", " ( 'male', 1),\n", " ( 'male', 2),\n", " ( 'male', 3)],\n", " names=['Sex', 'Pclass'])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Sex','Pclass']).mean().loc[:,\"Age\"].index" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If I wanted the average age of female passengers in 2nd class ('female',2) I would just use .loc again with these two indices including the \"( )\". " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "28.722972972972972" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Sex','Pclass']).mean().loc[:,\"Age\"].loc[('female',2)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What is the `.unstack()` for? This reduces the number of indices by moving the second indice \"Pclass\" back to the columns. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    SurvivedAgeFare
    Pclass123123123
    Sex
    female0.9680850.9210530.50000034.61176528.72297321.750000106.12579821.97012116.118810
    male0.3688520.1574070.13544741.28138630.74070726.50758967.22612719.74178212.661633
    \n", "
    " ], "text/plain": [ " Survived Age \\\n", "Pclass 1 2 3 1 2 3 \n", "Sex \n", "female 0.968085 0.921053 0.500000 34.611765 28.722973 21.750000 \n", "male 0.368852 0.157407 0.135447 41.281386 30.740707 26.507589 \n", "\n", " Fare \n", "Pclass 1 2 3 \n", "Sex \n", "female 106.125798 21.970121 16.118810 \n", "male 67.226127 19.741782 12.661633 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Sex','Pclass']).mean().unstack()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "...and now we can grab the \"Age\" data using `.loc[:,\"Age\"]`" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    Pclass123
    Sex
    female34.61176528.72297321.750000
    male41.28138630.74070726.507589
    \n", "
    " ], "text/plain": [ "Pclass 1 2 3\n", "Sex \n", "female 34.611765 28.722973 21.750000\n", "male 41.281386 30.740707 26.507589" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Sex','Pclass']).mean().unstack().loc[:,'Age']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compare this to the results we got above **without** the `.unstack()` and printed out again below for your convenience. " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Sex Pclass\n", "female 1 34.611765\n", " 2 28.722973\n", " 3 21.750000\n", "male 1 41.281386\n", " 2 30.740707\n", " 3 26.507589\n", "Name: Age, dtype: float64" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Sex','Pclass']).mean().loc[:,'Age']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see this is the same data but the former gives a DataFrame back rather than a Series and it is easier to read and use. Let's make a bar chart of our unstacked result. This data is the average age by 'Sex' and 'Pclass'. **We will put the Pclass on the x-axis and plot a bar for each Sex (male or female) with a height given by the average Age (y-axis).** " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{important}\n", "Don't use the code in the next cell. I'm showing it to you so you can see how much easier it is to use pandas plotting rather than matplotlib. \n", ":::" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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QYsWLXDu3Dl88cUXuHHjBr744ouarI2IiIioUlUemdmzZw8mTZqEDz74gB8qSURERDqjyiMzBw8eRG5uLtq3b4+OHTti+fLluHXrVk3WRkRERFSpKocZT09PfPnll0hPT8fYsWOxefNmNGjQAMXFxdi7dy9yc3Nrsk4iIiKiMml8NZOxsTGCg4Nx6NAhnDlzBlOnTsWiRYtgbW2Nt99+uyZqJCIiIirXc302k6urq/SJ2Zs2baqumoiIiIiq7LnCTAk9PT0EBATgp59+qo7NEREREVVZtYQZIiIiIm1hmCEiIiJZY5ghIiIiWWOYISIiIlljmCEiIiJZY5ghIiIiWWOYISIiIlnTapg5cOAA/P39YW9vD4VCge3bt6stHzlyJBQKhdqjU6dO2imWiIiIdJJWw0x+fj48PDywfPnycvv07t0b6enp0mPnzp21WCERERHpOn1tvrifnx/8/Pwq7KNUKmFra1vlbRYUFKCgoEB6npOT88z1ERERke7T+Tkz+/fvh7W1NZo1a4YxY8YgMzOzwv4REREwNzeXHo6OjrVUKREREWmDTocZPz8/bNiwAfHx8ViyZAmSkpLQrVs3tZGXf5o5cyays7Olx7Vr12qxYiIiIqptWj3NVJnBgwdLX7u5uaF9+/ZwcnLCjh070L9//zLXUSqVUCqVtVUiERERaZlOj8z8k52dHZycnHDhwgVtl0JEREQ6QlZh5s6dO7h27Rrs7Oy0XQoRERHpCK2eZsrLy8PFixel56mpqUhJSYGlpSUsLS0RHh6OAQMGwM7ODleuXEFYWBisrKzQr18/LVZNREREukSrYeb48ePw8fGRnoeEhAAAgoKCEB0djTNnzuDrr79GVlYW7Ozs4OPjgy1btsDU1FRbJRMREZGO0WqY6dq1K4QQ5S7fvXt3LVZDREREciSrOTNERERE/8QwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREsqbVMHPgwAH4+/vD3t4eCoUC27dvV1suhEB4eDjs7e2hUqnQtWtXnD17VjvFEhERkU7SapjJz8+Hh4cHli9fXubyyMhILF26FMuXL0dSUhJsbW3h6+uL3NzcWq6UiIiIdJW+Nl/cz88Pfn5+ZS4TQiAqKgqzZs1C//79AQDr16+HjY0NNm7ciLFjx9ZmqURERKSjdHbOTGpqKjIyMtCzZ0+pTalUwtvbG0eOHCl3vYKCAuTk5Kg9iIiI6MWls2EmIyMDAGBjY6PWbmNjIy0rS0REBMzNzaWHo6NjjdZJRERE2qWzYaaEQqFQey6EKNX2tJkzZyI7O1t6XLt2raZLJCIiIi3S6pyZitja2gJ4MkJjZ2cntWdmZpYarXmaUqmEUqms8fqIiIhIN+jsyIyzszNsbW2xd+9eqa2wsBAJCQnw8vLSYmVERESkS7Q6MpOXl4eLFy9Kz1NTU5GSkgJLS0s0bNgQkydPxsKFC+Hi4gIXFxcsXLgQxsbGCAwM1GLVREREpEu0GmaOHz8OHx8f6XlISAgAICgoCOvWrcO0adPw4MEDjBs3Dvfu3UPHjh2xZ88emJqaaqtkIiIi0jFaDTNdu3aFEKLc5QqFAuHh4QgPD6+9ooiIiEhWdHbODBEREVFVMMwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrDHMEBERkawxzBAREZGsMcwQERGRrOl0mAkPD4dCoVB72NraarssIiIi0iH62i6gMi1btsSvv/4qPdfT09NiNURERKRrdD7M6OvrczSGiIiIyqXTp5kA4MKFC7C3t4ezszOGDBmCy5cvV9i/oKAAOTk5ag8iIiJ6cel0mOnYsSO+/vpr7N69G19++SUyMjLg5eWFO3fulLtOREQEzM3NpYejo2MtVkxERES1TafDjJ+fHwYMGIBWrVqhR48e2LFjBwBg/fr15a4zc+ZMZGdnS49r167VVrlERESkBTo/Z+ZpderUQatWrXDhwoVy+yiVSiiVylqsioiIiLRJp0dm/qmgoADnz5+HnZ2dtkshIiIiHaHTYSY0NBQJCQlITU3Fb7/9hoEDByInJwdBQUHaLo2IiIh0hE6fZrp+/TqGDh2K27dvo379+ujUqRMSExPh5OSk7dKIiIhIR+h0mNm8ebO2SyAiIiIdp9OnmYiIiIgqwzBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyxjBDREREssYwQ0RERLLGMENERESyJosws3LlSjg7O8PIyAjt2rXDwYMHtV0SERER6QidDzNbtmzB5MmTMWvWLCQnJ+ONN96An58f0tLStF0aERER6QCdDzNLly7F6NGj8d577+HVV19FVFQUHB0dER0dre3SiIiISAfoa7uAihQWFuLEiROYMWOGWnvPnj1x5MiRMtcpKChAQUGB9Dw7OxsAkJOTUzNFFtyvme3qmgcFlfd5AdTY+0Qb+N58ofC9KUN8b1bLdoUQlfbV6TBz+/ZtFBUVwcbGRq3dxsYGGRkZZa4TERGBjz76qFS7o6NjjdRILxbz8cu1XQJRmfjeJF1V0+/N3NxcmJubV9hHp8NMCYVCofZcCFGqrcTMmTMREhIiPS8uLsbdu3dRr169ctehiuXk5MDR0RHXrl2DmZmZtsshkvC9SbqK783nJ4RAbm4u7O3tK+2r02HGysoKenp6pUZhMjMzS43WlFAqlVAqlWptdevWrakSXypmZmb8oSSdxPcm6Sq+N59PZSMyJXR6ArChoSHatWuHvXv3qrXv3bsXXl5eWqqKiIiIdIlOj8wAQEhICIYPH4727dvD09MTa9asQVpaGt5//31tl0ZEREQ6QOfDzODBg3Hnzh3MmzcP6enpcHNzw86dO+Hk5KTt0l4aSqUSc+fOLXX6jkjb+N4kXcX3Zu1SiKpc80RERESko3R6zgwRERFRZRhmiIiISNYYZoiIiEjWGGaIiIhI1hhmiOilcOXKFSgUCqSkpGi7FCKsW7eON3StRgwzhAMHDsDf3x/29vZQKBTYvn17ldft2rUrJk+eXGO10csnIiICHTp0gKmpKaytrREQEIA///xT22URAQCio6Ph7u4u3dnX09MTu3bt0nZZLz2GGUJ+fj48PDywfDk/yI60LyEhAePHj0diYiL27t2Lx48fo2fPnsjPz9d2aURwcHDAokWLcPz4cRw/fhzdunVD3759cfbs2TL7FxYW1nKFLylB9BQA4ocfflBrW7FihWjatKlQKpXC2tpaDBgwQAghRFBQkACg9khNTa39oumFlpmZKQCIhIQEqc3JyUksWLBAjBo1SpiYmAhHR0exevVqtfV+++030bp1a6FUKkW7du3Etm3bBACRnJxcy3tALzoLCwuxdu1aIcST9+bHH38sgoKChJmZmRgxYoQQQojY2Fjh6OgoVCqVCAgIEIsXLxbm5uZarPrFwpEZqtDx48cxadIkzJs3D3/++Sfi4uLQpUsXAMCyZcvg6emJMWPGID09Henp6XB0dNRyxfSiyc7OBgBYWlqqtS9ZsgTt27dHcnIyxo0bhw8++AB//PEHgCejjW+99RZcXV1x4sQJhIeHIzQ0tNZrpxdbUVERNm/ejPz8fHh6ekrtn376Kdzc3HDixAn85z//wW+//Ybg4GCMGzcOKSkp8PHxwfz587VY+QtI22mKdAv+MTLz/fffCzMzM5GTk1Nmf29vb/Hhhx/WTnH00ikuLhb+/v6ic+fOau1OTk5i2LBhav2sra1FdHS0EEKI1atXC0tLS5Gfny/1iY6O5sgMVYvTp0+LOnXqCD09PWFubi527NghLXNychIBAQFq/YcOHSp69+6t1jZ48GCOzFQjjsxQhXx9feHk5ITGjRtj+PDh2LBhA+7fv6/tsuglMWHCBJw+fRqbNm0qtczd3V36WqFQwNbWFpmZmQCA8+fPw8PDA8bGxlKfp/9zJnoerq6uSElJQWJiIj744AMEBQXh3Llz0vL27dur9T9//nyp9x/fj9WLYYYqZGpqipMnT2LTpk2ws7PDnDlz4OHhgaysLG2XRi+4iRMn4qeffsK+ffvg4OBQarmBgYHac4VCgeLiYgCA4EfOUQ0yNDRE06ZN0b59e0RERMDDwwPLli2TltepU0etP9+PNY9hhiqlr6+PHj16IDIyEqdPn8aVK1cQHx8P4MkPdVFRkZYrpBeJEAITJkzAtm3bEB8fD2dnZ4230aJFC5w6dQoPHjyQ2hITE6uzTCKJEAIFBQXlLm/RokWp9x/fj9VLX9sFkPbl5eXh4sWL0vPU1FSkpKTA0tISp0+fxuXLl9GlSxdYWFhg586dKC4uhqurKwCgUaNG+O2333DlyhWYmJjA0tISr7zCjEzPbvz48di4cSN+/PFHmJqaIiMjAwBgbm4OlUpVpW0EBgZi1qxZGD16NGbPno0rV65g8eLFNVk2vSTCwsLg5+cHR0dH5ObmYvPmzdi/fz/i4uLKXWfSpEnw8vJCZGQkAgICsGfPngr70zPQ7pQd0gX79u0rdYk1ABEUFCQOHjwovL29hYWFhVCpVMLd3V1s2bJFWvfPP/8UnTp1EiqVipdmU7Uo670IQMTGxkp9nJycxGeffaa2noeHh5g7d670/OjRo8LDw0MYGhqK1q1bi++//54TgOm5BQcHCycnJ2FoaCjq168vunfvLvbs2SMtL+u9KYQQMTExwsHBQahUKuHv789Ls6uZQgiezCMiIiL54vkAIiIikjWGGSIiIpI1hhkiIiKSNYYZIiIikjWGGSIiIpI1hhkiIiKSNYYZIiIikjWGGSIiIpI1hhkiIiKSNYYZIiIikjWGGSIiIpK1/wNkWn07TUq2MwAAAABJRU5ErkJggg==", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dataforbar=data.groupby(['Sex','Pclass']).mean().unstack().loc[:,'Age']\n", "\n", "labels = ['1st','2nd','3rd'] #for x-axis\n", "x = np.arange(len(labels)) # the label locations\n", "width = 0.35 # the width of the bars\n", "\n", "fig1, ax1 = plt.subplots()\n", "ax1.bar(x-width/2, dataforbar.loc['female'], label='female',width=width)\n", "ax1.bar(x+width/2, dataforbar.loc['male'], label='male',width=width)\n", "\n", "# Add some text for labels, title and custom x-axis tick labels, etc.\n", "ax1.set_ylabel('Average Age')\n", "ax1.set_title('Average Age of passengers versus Ticket Class')\n", "ax1.set_xticks(x)\n", "ax1.set_xticklabels(labels)\n", "ax1.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We did quite a bit of work above with matplotlib (i.e. plt) to get the bar chart to work out. Since pandas specializes in working with DataFrames, we can use **pandas** to plot rather than matplotlib. **The code (below) is much easier.** In fact, pandas uses matplotlib to plot but has its own plot functions designed to work with dataframes. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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ERFpCa0KMzExMSrPZTIZgoODERwcrJF6iIiISPtpVZghIiKistX011io+5UUv/76K5YvX46zZ88iLS0Nu3fvhq+vb/UU9xKN3zSPiIiIXg+5ublo2bIl1q5dW6P75cgMERERVQkfHx/4+PjU+H45MkNERESSxjBDREREksYwQ0RERJLGMENERESSxjBDREREksarmYiIiKhK5OTk4Pr168rnycnJSExMhIWFBerXr19t+2WYISIioiqRkJAALy8v5fPAwEAAgL+/P7Zu3Vpt+2WYISIikgh178hb07p27QohRI3vl3NmiIiISNIYZoiIiEjSGGaIiIhI0hhmiIiISNIYZoiIiEjSGGaIiIhI0hhmiIiISNIYZoiIiEjSGGaIiIhI0hhmiIiISNL4dQZEREQSIQsPqtH9iTGfq9U/JCQEu3btwu+//w6FQgF3d3csXboULi4u1VThCxyZISIioioRGxuLSZMmIS4uDtHR0SgoKEDPnj2Rm5tbrfvlyAwRERFViaioKJXn4eHhsLKywtmzZ+Hh4VFt++XIDBEREVWLzMxMAICFhUW17odhhoiIiKqcEAKBgYHo3LkzXF1dq3VfPM1EREREVW7y5Mm4ePEijh8/Xu37YpghIiKiKjVlyhT89NNP+PXXX2Fvb1/t+2OYISIioiohhMCUKVOwe/duxMTEwMnJqUb2yzBDREREVWLSpEnYvn07fvzxRxgbGyM9PR0AYGpqCoVCUW375QRgIiIiqhIbNmxAZmYmunbtCltbW+UjMjKyWvfLkRkiIiKJUPeOvDVNCKGR/Wp0ZGbDhg1wc3ODiYkJTExM0KlTJxw4cEC5fPTo0ZDJZCqPN998U4MVExERkbbR6MiMvb09PvvsMzRu3BgAsG3bNvTv3x/nz59H8+bNAQC9e/dGeHi4ch19fX2N1EpERETaSaNhpl+/firPFy9ejA0bNiAuLk4ZZuRyOWxsbDRRHhEREUmA1kwALiwsREREBHJzc9GpUydle0xMDKysrNCkSRO89957yMjIKHc7+fn5yMrKUnkQERHR60vjYebSpUswMjKCXC7HBx98gN27d6NZs2YAAB8fH3z77bc4cuQIVqxYgfj4eHTr1g35+fllbi8kJASmpqbKh4ODQ00dChEREWmATGhq6vH/9+zZM6SkpODx48f44YcfsGXLFsTGxioDzcvS0tLg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EhEREZVK7auZDA0NMXbsWBw/fhyXLl3CRx99hM8++wxWVlZ4++23q6NGIiIiojL9o+9mcnFxUX5j9o4dO6qqJiIiIqJK+0dhppiOjg58fX3x008/VcXmiIiIiCqtSsIMERERkaYwzBAREZGkMcwQERGRpDHMEBERkaQxzBAREZGkMcwQERGRpDHMEBERkaRpNMz8+uuv6NevH+zs7CCTybBnzx6V5aNHj4ZMJlN5vPnmm5oploiIiLSSRsNMbm4uWrZsibVr15bZp3fv3khLS1M+9u/fX4MVEhERkbbT1eTOfXx84OPjU24fuVwOGxubGqqIiIiIpEbr58zExMTAysoKTZo0wXvvvYeMjIxy++fn5yMrK0vlQURERK8vrQ4zPj4++Pbbb3HkyBGsWLEC8fHx6NatG/Lz88tcJyQkBKampsqHg4NDDVZMRERENU2jp5kqMmzYMOW/XV1d0a5dOzg6OmLfvn0YOHBgqevMnj0bgYGByudZWVkMNERERK8xrQ4zf2drawtHR0dcu3atzD5yuRxyubwGqyIiIiJN0urTTH/34MEDpKamwtbWVtOlEBERkZbQ6MhMTk4Orl+/rnyenJyMxMREWFhYwMLCAsHBwRg0aBBsbW1x8+ZNzJkzB5aWlhgwYIAGqyYiIiJtotEwk5CQAC8vL+Xz4rku/v7+2LBhAy5duoSvv/4ajx8/hq2tLby8vBAZGQljY2NNlUxERERaRqNhpmvXrhBClLn84MGDNVgNERERSZGk5swQERER/R3DDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSZpGw8yvv/6Kfv36wc7ODjKZDHv27FFZLoRAcHAw7OzsoFAo0LVrV1y+fFkzxRIREZFW0miYyc3NRcuWLbF27dpSly9btgwrV67E2rVrER8fDxsbG3h7eyM7O7uGKyUiIiJtpavJnfv4+MDHx6fUZUIIhIaGYu7cuRg4cCAAYNu2bbC2tsb27dsxYcKEmiyViIiItJTWzplJTk5Geno6evbsqWyTy+Xw9PTEyZMny1wvPz8fWVlZKg8iIiJ6fWltmElPTwcAWFtbq7RbW1srl5UmJCQEpqamyoeDg0O11klERESapbVhpphMJlN5LoQo0fay2bNnIzMzU/lITU2t7hKJiIhIgzQ6Z6Y8NjY2AF6M0Nja2irbMzIySozWvEwul0Mul1d7fURERKQdtHZkxsnJCTY2NoiOjla2PXv2DLGxsXB3d9dgZURERKRNNDoyk5OTg+vXryufJycnIzExERYWFqhfvz6mTZuGJUuWwNnZGc7OzliyZAkMDQ3h5+enwaqJiIhIm2g0zCQkJMDLy0v5PDAwEADg7++PrVu3YsaMGXj69CkCAgLw6NEjdOzYEYcOHYKxsbGmSiYiIiIto9Ew07VrVwghylwuk8kQHByM4ODgmiuKiIiIJEVr58wQERERVQbDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUkawwwRERFJGsMMERERSRrDDBEREUmaVoeZ4OBgyGQylYeNjY2myyIiIiItoqvpAirSvHlzHD58WPlcR0dHg9UQERGRttH6MKOrq8vRGCIiIiqTVp9mAoBr167Bzs4OTk5OGD58OG7cuFFu//z8fGRlZak8iIiI6PWl1WGmY8eO+Prrr3Hw4EFs3rwZ6enpcHd3x4MHD8pcJyQkBKampsqHg4NDDVZMRERENU2rw4yPjw8GDRqEFi1aoEePHti3bx8AYNu2bWWuM3v2bGRmZiofqampNVUuERERaYDWz5l5We3atdGiRQtcu3atzD5yuRxyubwGqyIiIiJN0uqRmb/Lz8/H1atXYWtrq+lSiIiISEtodZgJCgpCbGwskpOTcfr0aQwePBhZWVnw9/fXdGlERESkJbT6NNPt27cxYsQI3L9/H3Xr1sWbb76J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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dataforbar=data.groupby(['Sex','Pclass']).mean().unstack().loc[:,'Age']\n", "\n", "fig1, ax0 = plt.subplots()\n", "dataforbar.plot.bar(ax=ax0,rot=0) # again notice that the axis name, ax0, goes inside the bar() function\n", "ax0.set_ylabel(\"Average Age\")\n", "ax0.set_title('Average Age of passengers versus Ticket Class')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Wow!** That was much easier but notice that didn't get back exactly the same plot. Notice the x-axis and legend are reversed comparing the two plots. We can fix this easily by reversing the order of our groupby command from `.groupby(['Sex','Pclass'])` to `.groupby(['Pclass', 'Sex'])`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dataforbar=data.groupby(['Pclass','Sex']).mean().unstack().loc[:,'Age']\n", "\n", "fig2, ax2 = plt.subplots()\n", "dataforbar.plot.bar(ax=ax2, rot=0)\n", "ax2.set_ylabel('Average Age')\n", "ax2.set_title('Average Age of passengers versus Ticket Class')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{important} \n", "In general, the number of `unstack()` functions we apply is one less than the number of columns we used in our `groupby()` so if we perform a 3 column groupby we will apply two unstack functions. \n", ":::" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{admonition} Basic Forms \n", "Basic format for finding the average of columns: \n", "By **one** column: `data.groupby().mean()` \n", "By **two** columns: `data.groupby().mean().unstack()` \n", "By ***three*** columns: `data.groupby().mean().unstack().unstack()` \n", "etc... \n", "\n", "Basic format for counting the number of items in columns: \n", "By **one** column: `data.groupby().count()` \n", "By **two** columns: `data.groupby().count().unstack()` \n", "By ***three*** columns: `data.groupby().count().unstack().unstack()` \n", "etc... \n", ":::" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### groupby 3 columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What is the number of male and female passengers vs ticket class that died vs survived? To answer this question, we want to know about a feature \"number of passengers\" broken out by three other features \"Sex\", \"Pclass\", and \"Survived.\" For this, we will **groupby all three columns** and **use .count()** rather than .mean() and we will use **.unstack() twice**. We are also grabbing the count on the \"Fare\" data since this is complete while some records don't have an age recorded. " ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    Pclass123
    Sexfemalemalefemalemalefemalemale
    Survived
    037769172300
    1914570177247
    \n", "
    " ], "text/plain": [ "Pclass 1 2 3 \n", "Sex female male female male female male\n", "Survived \n", "0 3 77 6 91 72 300\n", "1 91 45 70 17 72 47" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Survived','Sex','Pclass']).count().unstack().unstack().loc[:,\"Fare\"]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArIAAAHFCAYAAAAOthpkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB+MUlEQVR4nO3dd1gU1/s28HtpC0jvggioiA0VxR7Fjo1giLEnELFFjQKixliAGCHq15rErmAvScQUezQittijiLGCYiGgIqggCp73D1/m50oRFFkG78917XWxZ86ceWZnZ/fh7JkzCiGEABERERGRzGioOwAiIiIiojfBRJaIiIiIZImJLBERERHJEhNZIiIiIpIlJrJEREREJEtMZImIiIhIlpjIEhEREZEsMZElIiIiIlliIktEREREslSiRDYqKgoKhQK6urq4fv16vuVt27ZFvXr1Si24kti/fz8UCgV+/vlntWy/pBITE9G9e3eYmZlBoVAgICCg0LqOjo5QKBTSw8DAAM2aNcPq1avLLmACABw+fBihoaF48OBBvmWOjo7o0aNHqW0rMzMToaGh2L9/f6m1WZYSExOhUCgQFRVV5tvO+6xKTEws820XxtHREX5+fm+0bkGvZWhoKBQKRekE9//5+fnB0dHxtfVK+71eFD8/PxgYGJTJttRh4cKFJTpHFAoFRo0a9e4CAnD79m2EhobizJkz+Za96fuuNPOD+Ph4hIaGlur5nZdDyPXztjS8zWeUOr1Rj2x2djYmT55c2rG8VwIDA/H3339j5cqVOHLkCAIDA4us36pVKxw5cgRHjhyRvqR9fX2xaNGiMoqYgBeJbFhYWIGJbGnLzMxEWFiYbD9YK1eujCNHjqB79+7qDqVCGjx4MI4cOaLuMOgtlTSRLQu3b99GWFhYgYlseXjfxcfHIywsrFz9o0rqo/UmK3Xp0gXr169HcHAwGjRoUNoxlWtZWVnQ1dV9656QuLg4NG3aFD179ixWfRMTEzRv3lx63rFjRzg4OGDOnDn44osv3iqW90lpHb/3kRACT548gZ6eXrHqK5VKlfcsla4qVaqgSpUq6g6jxJ49ewaFQgEtrTf6+iE1k+v7jiquN+qRHT9+PMzNzTFhwoQi6xX106JCoUBoaKj0PO/nirNnz+KTTz6BsbExzMzMEBQUhJycHFy8eBFdunSBoaEhHB0dMXPmzAK3+eTJEwQFBcHGxgZ6enrw8PDA6dOn89U7ceIEPvzwQ5iZmUFXVxdubm7YvHmzSp28ns/du3dj0KBBsLS0hL6+PrKzswvd5xs3bmDgwIGwsrKCUqlE7dq1MXv2bDx//hzA//18ceXKFezYsUMaLlDS/yxNTEzg4uIiDfE4ceIE+vbtC0dHR+jp6cHR0RH9+vXLNwQkMzMTwcHBcHJygq6uLszMzODu7o4NGzZIda5du4a+ffvC1tYWSqUS1tbW6NChQ77/zjdt2oQWLVqgUqVKMDAwgKenZ77XOu9nwStXrqBbt24wMDCAvb09xo4dm+91vHnzJnr16gVDQ0OYmJhgwIABOH78eIHvobc9fqmpqRg6dCjs7e2hVCphaWmJVq1a4c8//yz0NQ8NDcW4ceMAAE5OTtKxe7XHdOfOnWjUqBH09PRQq1YtrFy5UmV5amoqRowYgTp16sDAwABWVlZo3749YmNjpTqJiYmwtLQEAISFhUnbKupnn+fPn+Pbb7+Fi4sL9PT0YGJigvr162P+/Pkqx6Ogn44L+rkw7yfMxYsXo3bt2lAqlVi+fDmsrKzw6aef5mvjwYMH0NPTQ1BQkLQPLx+7rVu3QqFQYO/evfnWXbRokXT+5ynOMQaAo0ePolWrVtDV1YWtrS0mTpyIZ8+eFfo6vay4503ee+mvv/7CF198AQsLC5ibm8PHxwe3b99Wqfvs2TOMHz8eNjY20NfXxwcffIBjx44VKx7gRW9Y7969YWhoCGNjY/Tp0wfJycn56hX2E29xzsu8fXJxcZE+p95kqFJ0dDTq168PXV1dVKtWDQsWLFBZnvd5t2bNGowdOxZ2dnZQKpW4cuUKAGDlypVo0KCB9Fn00Ucf4cKFC6/d7qFDh2BhYYEePXrg8ePHAIDLly+jf//+Kp+9P/74Y4HxbNiwAZMmTYKtrS2MjIzQsWNHXLx4sVj7fPDgQXTo0AGGhobQ19dHy5YtsW3bNpU6hR2bV4e8ODo64vz584iJiZHO8eIM7QCAJUuWoGbNmlAqlahTpw42btwoLUtMTISWlhYiIiLyrXfgwAEoFAr89NNPBba7f/9+NGnSBADw+eefS3HlfV8Xtm/r169HixYtYGBgAAMDAzRs2BArVqwoch+io6Ohr6+PwYMHIycnB8Drz/uoqCh88sknAIB27dpJ8b2uV/vff/9Fv379YG1tDaVSiapVq+Kzzz4r8vtcHd+rbxpDWX5GLVq0CA0aNICBgQEMDQ1Rq1YtfP311yp1kpOTMWzYMFSpUgU6OjpwcnJCWFiYdJyFEOjWrRvMzc1x48YNldeybt26qF27tnRuv5YogcjISAFAHD9+XMyfP18AEHv37pWWe3h4iLp160rPExISBAARGRmZry0AIiQkRHoeEhIiAAgXFxcxbdo0sWfPHjF+/HgBQIwaNUrUqlVLLFiwQOzZs0d8/vnnAoD45ZdfpPX/+usvAUDY29sLb29v8fvvv4u1a9eKGjVqCCMjI3H16lWp7r59+4SOjo5o3bq12LRpk9i5c6fw8/PLF2ve/trZ2YmhQ4eKHTt2iJ9//lnk5OQU+PqkpKQIOzs7YWlpKRYvXix27twpRo0aJQCIL774QgghRHp6ujhy5IiwsbERrVq1EkeOHBFHjhwRT548KfR1d3BwEN27d1cpe/r0qbCyshK2trZCCCF++uknMXXqVBEdHS1iYmLExo0bhYeHh7C0tBSpqanSesOGDRP6+vpizpw54q+//hJ//PGH+O6778T3338v1XFxcRE1atQQa9asETExMeKXX34RY8eOFX/99ZdUZ/r06UKhUIhBgwaJP/74Q2zZskW0aNFCVKpUSZw/f16q5+vrK3R0dETt2rXF//73P/Hnn3+KqVOnCoVCIcLCwqR6jx49EjVq1BBmZmbixx9/FLt27RKBgYHCyckp33EpjePn6ekpLC0txdKlS8X+/fvF1q1bxdSpU8XGjRsLPQ5JSUniyy+/FADEli1bpGOXnp4uHacqVaqIOnXqiNWrV4tdu3aJTz75RAAQMTExUjv//vuv+OKLL8TGjRvF/v37xR9//CH8/f2FhoaG9Bo/efJE7Ny5UwAQ/v7+0rauXLlSaHwRERFCU1NThISEiL1794qdO3eKefPmidDQUJXj4eDgkG/dvPPvZXmvXf369cX69evFvn37RFxcnAgMDBR6enrSfudZuHChACDOnj0rhMh//j979kxYWVmJAQMG5Nt+06ZNRaNGjaTnxT3G58+fF/r6+qJOnTpiw4YN4tdffxWenp6iatWqAoBISEgo9PUSovjnTd57qVq1auLLL78Uu3btEsuXLxempqaiXbt2Km36+voKhUIhxo0bJ3bv3i3mzJkj7OzshJGRkfD19S0ynszMTFG7dm1hbGwsvv/+e7Fr1y4xevRoaX9e3veCjllxz8u8/Xn1s9Le3r7A98erHBwchJ2dnahatapYuXKl2L59uxgwYIAAIGbNmiXVy/tctrOzE7169RK//fab+OOPP8S9e/dEeHi4ACD69esntm3bJlavXi2qVasmjI2NxaVLl1Rez0qVKknPN23aJJRKpfjiiy+kz+Lz588LY2Nj4erqKlavXi12794txo4dKzQ0NFTe/3nxODo6igEDBoht27aJDRs2iKpVqwpnZ+dCP9vz7N+/X2hra4vGjRuLTZs2ia1bt4rOnTsLhUKh8tlR0LF5+XXPe1+eOnVKVKtWTbi5uUnn+KlTp4qMIe97Lu89/9tvv4kuXboIAOKnn36S6n300UeiatWq+fbpk08+Eba2tuLZs2cFtp+eni7FOXnyZCmupKSkQvdtypQpAoDw8fERP/30k/S+nzJlilTn1fxgzpw5QlNTU0ybNk0qK855n5KSIr13fvzxRym+lJSUQl+zM2fOCAMDA+Ho6CgWL14s9u7dK9auXSt69+4tMjIyhBD/9954+XuurL9XC1LePqM2bNggAIgvv/xS7N69W/z5559i8eLFYvTo0VKdO3fuSJ8lS5YsEX/++aeYNm2aUCqVws/PT6p39+5dUaVKFdGsWTPx9OlTKTY9PT3pe6Q43jiRzc7OFtWqVRPu7u7i+fPnQojSSWRnz56tUq9hw4ZS4pDn2bNnwtLSUvj4+EhleW/CRo0aSfEIIURiYqLQ1tYWgwcPlspq1aol3Nzc8p3IPXr0EJUrVxa5ubkq+/vZZ58V6/X56quvBADx999/q5R/8cUXQqFQiIsXL0plBSWnhXFwcBDdunUTz549E8+ePRMJCQnC19dXABDjxo0rcJ2cnBzx6NEjUalSJTF//nypvF69eqJnz56Fbuvu3bsCgJg3b16hdW7cuCG0tLTEl19+qVL+8OFDYWNjI3r37i2V5cW5efNmlbrdunUTLi4u0vMff/xRABA7duxQqTds2LB876HSOH4GBgYiICCg0H0szKxZswpNkBwcHISurq64fv26VJaVlSXMzMzEsGHDCm0zJydHPHv2THTo0EF89NFHUnlqamq+86QoPXr0EA0bNiyyTkkTWWNjY3H//n2V8rNnzwoAYunSpSrlTZs2FY0bN5aeF3T+BwUFCT09PfHgwQOpLD4+XgBQ+dAv7jHu06eP0NPTE8nJyVKdnJwcUatWrWIlsq8q7LzJey+NGDFCpf7MmTMFAHHnzh0hhBAXLlwQAERgYKBKvXXr1gkAr/2SWLRokQAgfv31V5XyIUOGvDaRLe55mZubK2xtbQv9rCxuIqtQKMSZM2dUyjt16iSMjIzE48ePhRD/97ncpk0blXppaWlCT09PdOvWTaX8xo0bQqlUiv79+0tlLyey3333ndDU1BQzZsxQWc/T01NUqVIl3z9Xo0aNErq6utJ7OC+eV7e7efNmAUAcOXKkyP1u3ry5sLKyEg8fPpTKcnJyRL169USVKlWk17O4iawQQtStW1d4eHgUud2XASj0PV+jRg2pLG9fo6OjpbJbt24JLS0tlU6Eghw/frzQ7+5X9+3atWtCU1OzwH9QX5aXH+Tm5opRo0YJHR0dsXbtWpU6xT3vf/rpp3xJZ1Hat28vTExMikx2C0pkX/Uuv1eLS92fUaNGjRImJiZF1hk2bJgwMDBQ+S4UQoj//e9/AoDKP9UHDx4UWlpaIiAgQKxcuVIAEMuXLy+y/Ve98fRbOjo6+Pbbb3HixIkCf+57U69eCVu7dm0oFAp07dpVKtPS0kKNGjUKnDmhf//+Kj97ODg4oGXLlvjrr78AAFeuXMG///6LAQMGAABycnKkR7du3XDnzp18PzF9/PHHxYp93759qFOnDpo2bapS7ufnByEE9u3bV6x2CrJ9+3Zoa2tDW1sbTk5O2Lx5M7788kt8++23AIBHjx5hwoQJqFGjBrS0tKClpQUDAwM8fvxY5ae6pk2bYseOHfjqq6+wf/9+ZGVlqWzHzMwM1atXx6xZszBnzhycPn1aGhaRZ9euXcjJycFnn32m8vrp6urCw8Mj30/tCoUCXl5eKmX169dXOX4xMTEwNDREly5dVOr169dP5XlpHb+mTZsiKioK3377LY4ePVrsn6Jfp2HDhqhatar0XFdXFzVr1sz3Xl28eDEaNWoEXV1daGlpQVtbG3v37i3Wz6qFadq0Kf755x+MGDECu3btQkZGxhu3lad9+/YwNTVVKXN1dUXjxo0RGRkplV24cAHHjh3DoEGDimxv0KBByMrKwqZNm6SyyMhIKJVK9O/fH0DJjvFff/2FDh06wNraWmpPU1MTffr0Kdb+Ffe8yfPhhx+qPK9fvz4ASMc373MmL/Y8vXv3LtaY0L/++guGhob5tpP32hSluOflxYsXcfv27UI/K4urbt26+a6R6N+/PzIyMnDq1CmV8lfPwSNHjiArKyvfUBl7e3u0b98+3/ATIQSGDRuGkJAQrF+/HuPHj5eWPXnyBHv37sVHH30EfX39fO+XJ0+e4OjRoyrtve44FuTx48f4+++/0atXL5VZFDQ1NfHpp5/i5s2bxR6e8LYKe89fuXIFN2/eBPBiloAGDRqoDK9YvHgxFAoFhg4dWmqx7NmzB7m5uRg5cuRr6z558gQ9e/bEunXrsHv3bpXz5E0+24sjMzMTMTEx6N27tzRcq7jK8nv1bWPI864/o5o2bYoHDx6gX79++PXXX3H37t18df744w+0a9cOtra2KscxL4+LiYmR6rZq1QrTp0/HvHnz8MUXX2DgwIHw9/d/bRwve6t5ZPv27YtGjRph0qRJpZYImJmZqTzX0dGBvr4+dHV185U/efIk3/o2NjYFlt27dw8A8N9//wEAgoODpcQw7zFixAgAyHdgKleuXKzY7927V2BdW1tbafmb+uCDD3D8+HGcOHEC8fHxePDgARYsWAAdHR0AL75AfvjhBwwePBi7du3CsWPHcPz4cVhaWqqcVAsWLMCECROwdetWtGvXDmZmZujZsycuX74MANIYRk9PT8ycORONGjWCpaUlRo8ejYcPHwL4v9ewSZMm+V7DTZs25Xv9Cjp+SqVS5fjdu3dP5YM5z6tlpXX8Nm3aBF9fXyxfvhwtWrSAmZkZPvvsswLHIpaEubl5vjKlUqlyDPIu0GvWrBl++eUXHD16FMePH0eXLl3yfQCWxMSJE/G///0PR48eRdeuXWFubo4OHTrgxIkTb9xmYe/9QYMG4ciRI/j3338B/F8y+uo/Hq+qW7cumjRpIiXBubm5WLt2Lby9vaVzvyTH+N69e4We88VR3PMmz6vHV6lUAoBUN+8cf3X7WlpaBb43XlXYeVCc/SnueVlYjMXdTlF188pe/ax79X2Ut7ywz8tX13/69Ck2bdqEunXrqnRq5LWVk5OD77//Pt9+d+vWDUD+z4TXHceCpKWlQQjxzj7jS6K4r/3o0aOxd+9eXLx4Ec+ePcOyZcvQq1evEh3n10lNTQWAYl0AlpKSgl27dqFFixb5/ml6k8/24khLS0Nubu4bXaBWlt+rbxtDnnf9GfXpp59i5cqVuH79Oj7++GNYWVmhWbNm2LNnj1Tnv//+w++//57vONatWxdA/uM4YMAA6OjoIDs7W7oOpSTe6rJRhUKBGTNmoFOnTli6dGm+5XnJy6uDqd/lyV5QIpKcnCwdIAsLCwAvvvR9fHwKbMPFxUXleXGvcDc3N8edO3fylecNtM7b9pswNjaGu7t7gcvS09Pxxx9/ICQkBF999ZVUnp2djfv376vUrVSpEsLCwhAWFob//vtP+i/Sy8tLSkocHBykQfqXLl3C5s2bERoaiqdPn2Lx4sXSfvz8889wcHB44316mbm5eYGDzV89nqV1/CwsLDBv3jzMmzcPN27cwG+//YavvvoKKSkp2Llz55vuRrGsXbsWbdu2zTd12us+0F5HS0sLQUFBCAoKwoMHD/Dnn3/i66+/hqenJ5KSkqR/KAq6uKGwL4jC3vv9+vVDUFAQoqKiMH36dKxZswY9e/bM13tbkM8//xwjRozAhQsXcO3aNdy5cweff/65tLwkx9jc3LzQc/51SnLeFFfe50xycjLs7Oyk8pycnGJ97hX3PChIcc/Ll2N8k+0UVTev7NUvxFffR3nLC/u8fPWzUqlU4q+//oKnpyc6duyInTt3Su81U1NTqVe0sF5BJyenYu5V4UxNTaGhoVGsz/iXv/vyEgngzRKxghT3te/fvz8mTJiAH3/8Ec2bN0dycnKxek5LIq+X8+bNm7C3ty+ybtWqVTFnzhx89NFH8PHxwU8//SS9Vm/y2V4cZmZm0NTUlHqqi6usv1ffNobietvPKODFZ/jnn3+Ox48f48CBAwgJCUGPHj1w6dIlODg4wMLCAvXr18f06dMLXD/vHz/gRWfGgAEDYGpqCqVSCX9/fxw6dEjqpCuOt76zV8eOHdGpUyd88803ePTokcoya2tr6OrqqlyJDAC//vrr2262UBs2bIAQQnp+/fp1HD58GG3btgXw4kRwdnbGP//8A3d39wIfhoaGb7TtDh06ID4+Pt/PaqtXr4ZCoUC7du3eeL+KolAoIIRQ+cAEgOXLlyM3N7fQ9aytreHn54d+/frh4sWLyMzMzFenZs2amDx5MlxdXaX98vT0hJaWFq5evVroa1hSHh4eePjwIXbs2KFS/vKVuMC7OX5Vq1bFqFGj0KlTp3zH7lXF6bl5HYVCke9YnT17Nt/cjG+zLRMTE/Tq1QsjR47E/fv3Va6STklJkXo/gBe9Xbt27SpR+6ampujZsydWr16NP/74A8nJya8dVpCnX79+0NXVRVRUFKKiomBnZ4fOnTtLy0tyjNu1a4e9e/eq7E9ubq7K0IXCvOl5U5S8z5l169aplG/evFm6Wrco7dq1w8OHD/Hbb7+plK9fv/616xb3vHRxcUHlypUL/awsrvPnz+Off/7JF6ehoSEaNWpU5LotWrSAnp4e1q5dq1J+8+ZN7Nu3Dx06dMi3jpubG2JiYnDz5k20bdsWKSkpAF784tOuXTucPn0a9evXL3C/i9PT9DqVKlVCs2bNsGXLFpVz8vnz51i7di2qVKmCmjVrAoA088Cr332///57vnZf/cWmOAp7z1evXl2l51FXVxdDhw7FqlWrMGfOHDRs2BCtWrV6bfsl+ezp3LkzNDU1iz2neefOnbFr1y4cOHBAZdaJkpz3JYkvb/ain376qUT/SJT192ppxlCUt/2MelmlSpXQtWtXTJo0CU+fPsX58+cBvBgiGhcXh+rVqxd4HF9OZENCQhAbG4t169Zh06ZN+Oeff0rcK1sqE/nNmDEDjRs3RkpKitR1DLw4CAMHDsTKlStRvXp1NGjQAMeOHSvWh/KbSklJwUcffYQhQ4YgPT0dISEh0NXVxcSJE6U6S5YsQdeuXeHp6Qk/Pz/Y2dnh/v37uHDhAk6dOlXotCSvExgYiNWrV6N79+745ptv4ODggG3btmHhwoX44osvpA+50mZkZIQ2bdpg1qxZsLCwgKOjI2JiYrBixQqYmJio1G3WrBl69OiB+vXrw9TUFBcuXMCaNWvQokUL6Ovr4+zZsxg1ahQ++eQTODs7Q0dHB/v27cPZs2el/wgdHR3xzTffYNKkSbh27Rq6dOkCU1NT/Pfffzh27Jj032lJ+Pr6Yu7cuRg4cCC+/fZb1KhRAzt27JASLA2N//uf622PX3p6Otq1a4f+/fujVq1aMDQ0xPHjx7Fz585CewLyuLq6AgDmz58PX19faGtrw8XFpUTJc48ePTBt2jSEhITAw8MDFy9exDfffAMnJyeVDxJDQ0M4ODjg119/RYcOHWBmZiYd34J4eXmhXr16cHd3h6WlJa5fv4558+bBwcEBzs7OAIA+ffpg6tSp6Nu3L8aNG4cnT55gwYIFb/ShOGjQIGzatAmjRo1ClSpV0LFjx2KtZ2Jigo8++ghRUVF48OABgoODVY4vUPxjPHnyZPz2229o3749pk6dCn19ffz444/FmralJOdNcdWuXRsDBw7EvHnzoK2tjY4dOyIuLg7/+9//YGRk9Nr1P/vsM8ydOxefffYZpk+fDmdnZ2zfvr1Y/2gU97zU0NDAtGnTMHjwYOmz8sGDBwgNDS3RT862trb48MMPERoaisqVK2Pt2rXYs2cPZsyYAX19/SLXNTExwZQpU/D111/js88+Q79+/XDv3j2EhYVBV1cXISEhBa5Xu3ZtxMbGomPHjmjTpg3+/PNPVKlSBfPnz8cHH3yA1q1b44svvoCjoyMePnyIK1eu4Pfff3+r6xNeFhERgU6dOqFdu3YIDg6Gjo4OFi5ciLi4OGzYsEHqee7WrRvMzMzg7++Pb775BlpaWoiKikJSUlK+Nl1dXbFx40Zs2rQJ1apVg66urvQ5UxgLCwu0b98eU6ZMQaVKlbBw4UL8+++/+f7xB4ARI0Zg5syZOHnyJJYvX16s/axevTr09PSwbt061K5dGwYGBrC1tVVJQPI4Ojri66+/xrRp05CVlYV+/frB2NgY8fHxuHv3boHfBR988AH27t2LLl26oHPnzti+fTuMjY2Lfd7n3SFs6dKlMDQ0hK6uLpycnAr9h2XOnDn44IMP0KxZM3z11VeoUaMG/vvvP/z2229YsmRJgZ/fZf29WpDy+Bk1ZMgQ6OnpoVWrVqhcuTKSk5MREREBY2Njadq2b775Bnv27EHLli0xevRouLi44MmTJ0hMTMT27duxePFiVKlSBXv27EFERASmTJki/fMaERGB4OBgtG3bFh999FHxdqokV4a9PGvBq/r37y8AqMxaIMSLqTwGDx4srK2tRaVKlYSXl5dITEwsdNaCl6eTECL/1Ct5Xp0hIe+KwzVr1ojRo0cLS0tLoVQqRevWrcWJEyfyrf/PP/+I3r17CysrK6GtrS1sbGxE+/btxeLFi4u1v4W5fv266N+/vzA3Nxfa2trCxcVFzJo1S7raMk9JZy14Xd2bN2+Kjz/+WJiamgpDQ0PRpUsXERcXJxwcHFSuQvzqq6+Eu7u7MDU1FUqlUlSrVk0EBgaKu3fvCiGE+O+//4Sfn5+oVauWqFSpkjAwMBD169cXc+fOzTeNy9atW0W7du2EkZGRUCqVwsHBQfTq1Uv8+eefUp3Cjl9BV/XeuHFD+Pj4CAMDA2FoaCg+/vhjsX379gKv4n6b4/fkyRMxfPhwUb9+fWFkZCT09PSEi4uLCAkJka62LsrEiROFra2t0NDQULnKtbDj5OHhoXJVcnZ2tggODhZ2dnZCV1dXNGrUSGzdurXAGQX+/PNP4ebmJpRK5WuvKJ09e7Zo2bKlsLCwEDo6OqJq1arC399fJCYmqtTbvn27aNiwodDT0xPVqlUTP/zwQ6GzFowcObLQ7eXm5gp7e3sBQEyaNCnf8qJmLdm9e7cAIACoTLX0suIcYyGEOHTokGjevLlQKpXCxsZGjBs3TixdurRYsxYU97wp7L1U0JXO2dnZYuzYscLKykro6uqK5s2biyNHjuRr83UxvXweHD58uFjTbwlRvPNSCCGWL18unJ2dhY6OjqhZs6ZYuXJlobNavCrvvf7zzz+LunXrCh0dHeHo6CjmzJlT4Ovz8rRQr8ZQv359oaOjI4yNjYW3t7fKFc1CFPwZcvPmTVGrVi3h6OgoTa2YkJAgBg0aJOzs7IS2trawtLQULVu2FN9+++1r4ynqvfqq2NhY0b59e1GpUiWhp6cnmjdvLn7//fd89Y4dOyZatmwpKlWqJOzs7ERISIhYvnx5vvdlYmKi6Ny5szA0NBQAXvv6552XCxcuFNWrVxfa2tqiVq1aYt26dYWu07ZtW2FmZiYyMzNfu395NmzYIGrVqiW0tbVVvq8Le9+tXr1aNGnSROjq6goDAwPh5uam8nq++p0thBBxcXHCxsZGNGrUSPruL+55P2/ePOHk5CQ0NTWLdezi4+PFJ598IszNzaXPRz8/P2nqy4LOZXV8r76qvH1GrVq1SrRr105YW1sLHR0dYWtrK3r37p1vuqzU1FQxevRo4eTkJLS1tYWZmZlo3LixmDRpknj06JG4ffu2sLKyEu3bt1fJj54/fy68vLyEiYlJsWedUQjx0m9LROVMeHg4Jk+ejBs3bvBuMkREJZSSkgIHBwd8+eWXhd5IiEjOeI9AKjd++OEHAECtWrXw7Nkz7Nu3DwsWLMDAgQOZxBIRlcDNmzdx7do1zJo1CxoaGhgzZoy6QyJ6J5jIUrmhr6+PuXPnIjExEdnZ2ahatSomTJiAyZMnqzs0IiJZWb58Ob755hs4Ojpi3bp1KleoE1UkHFpARERERLL01tNvERERERGpAxNZIiIiIpIlJrJEREREJEu82KsceP78OW7fvg1DQ8Ni3w6XiIiI1EsIgYcPH8LW1jbfjV2obDCRLQdu37792ntUExERUfmUlJTEaSLVhIlsOZB3e7ykpKRi3SKOiIiI1C8jIwP29vYluk05lS4msuVA3nACIyMjJrJEREQyw2GB6sMBHUREREQkS0xkiYiIiEiWmMgSERERkSxxjCwREVEJ5Obm4tmzZ+oOg8qAtrY2NDU11R0GFYGJLBERUTEIIZCcnIwHDx6oOxQqQyYmJrCxseEFXeUUE1kiIqJiyEtiraysoK+vz8SmghNCIDMzEykpKQCAypUrqzkiKggTWSIiotfIzc2Vklhzc3N1h0NlRE9PDwCQkpICKysrDjMoh3ixFxER0WvkjYnV19dXcyRU1vKOOcdFl09MZImIiIqJwwnePzzm5RsTWSIiIiKSpfc2kV20aBHq168v3Ra2RYsW2LFjh7RcCIHQ0FDY2tpCT08Pbdu2xfnz51XayM7OxpdffgkLCwtUqlQJH374IW7evFnWu0JERKTCz88PPXv2VHcYRO/ce5vIVqlSBd999x1OnDiBEydOoH379vD29paS1ZkzZ2LOnDn44YcfcPz4cdjY2KBTp054+PCh1EZAQACio6OxceNGHDx4EI8ePUKPHj2Qm5urrt0iIqIKws/PDwqFAgqFAtra2qhWrRqCg4Px+PFjdYdWpNzcXERERKBWrVrQ09ODmZkZmjdvjsjISHWHRhXQeztrgZeXl8rz6dOnY9GiRTh69Cjq1KmDefPmYdKkSfDx8QEArFq1CtbW1li/fj2GDRuG9PR0rFixAmvWrEHHjh0BAGvXroW9vT3+/PNPeHp6lvk+ERFRxdKlSxdERkbi2bNniI2NxeDBg/H48WMsWrRI3aEVKjQ0FEuXLsUPP/wAd3d3ZGRk4MSJE0hLS1N3aFQBvbc9si/Lzc3Fxo0b8fjxY7Ro0QIJCQlITk5G586dpTpKpRIeHh44fPgwAODkyZN49uyZSh1bW1vUq1dPqkNERPQ2lEolbGxsYG9vj/79+2PAgAHYunUrAOD8+fPo3r07jIyMYGhoiNatW+Pq1asFtrNz50588MEHMDExgbm5OXr06KFS9+nTpxg1ahQqV64MXV1dODo6IiIiQloeGhqKqlWrQqlUwtbWFqNHjy405t9//x0jRozAJ598AicnJzRo0AD+/v4ICgqS6gghMHPmTFSrVg16enpo0KABfv75Z2lZx44d0aVLFwghAAAPHjxA1apVMWnSpDd+Lalieq8T2XPnzsHAwABKpRLDhw9HdHQ06tSpg+TkZACAtbW1Sn1ra2tpWXJyMnR0dGBqalponcJkZ2cjIyND5UFERPQ6enp6ePbsGW7duoU2bdpAV1cX+/btw8mTJzFo0CDk5OQUuN7jx48RFBSE48ePY+/evdDQ0MBHH32E58+fAwAWLFiA3377DZs3b8bFixexdu1aODo6AgB+/vlnzJ07F0uWLMHly5exdetWuLq6FhqjjY0N9u3bh9TU1ELrTJ48GZGRkVi0aBHOnz+PwMBADBw4EDExMVAoFFi1ahWOHTuGBQsWAACGDx8Oa2trhIaGvtkLRxXWezu0AABcXFxw5swZPHjwAL/88gt8fX0RExMjLX91yg0hxGun4ShOnYiICISFhb154ERloM+2lFJvc1N3q1Jvk+h9cezYMaxfvx4dOnTAjz/+CGNjY2zcuBHa2toAgJo1axa67scff6zyfMWKFbCyskJ8fDzq1auHGzduwNnZGR988AEUCgUcHBykujdu3ICNjQ06duwIbW1tVK1aFU2bNi10W3PmzEGvXr1gY2ODunXromXLlvD29kbXrl0BvEiq58yZg3379qFFixYAgGrVquHgwYNYsmQJPDw8YGdnhyVLluDTTz/Ff//9h99//x2nT5+W9pUoz3vdI6ujo4MaNWrA3d0dERERaNCgAebPnw8bGxsAyNezmpKSIvXS2tjY4OnTp/nG/LxcpzATJ05Eenq69EhKSirFvSIioorijz/+gIGBAXR1ddGiRQu0adMG33//Pc6cOYPWrVsXO7G7evUq+vfvj2rVqsHIyAhOTk4AXiSpwIsLy86cOQMXFxeMHj0au3fvltb95JNPkJWVhWrVqmHIkCGIjo4utOcXAOrUqYO4uDgcPXoUn3/+Of777z94eXlh8ODBAID4+Hg8efIEnTp1goGBgfRYvXq1ynCHTz75BD4+PoiIiMDs2bOLTNTp/fVeJ7KvEkIgOzsbTk5OsLGxwZ49e6RlT58+RUxMDFq2bAkAaNy4MbS1tVXq3LlzB3FxcVKdwiiVSmnar7wHERHRq9q1a4czZ87g4sWLePLkCbZs2QIrKyvp1qnF5eXlhXv37mHZsmX4+++/8ffffwN48d0GAI0aNUJCQgKmTZuGrKws9O7dG7169QIA2Nvb4+LFi/jxxx+hp6eHESNGoE2bNkXe6UpDQwNNmjRBYGAgoqOjERUVhRUrViAhIUEazrBt2zacOXNGesTHx0vjZAEgMzMTJ0+ehKamJi5fvlyi/aX3x3s7tODrr79G165dYW9vj4cPH2Ljxo3Yv38/du7cCYVCgYCAAISHh8PZ2RnOzs4IDw+Hvr4++vfvDwAwNjaGv78/xo4dC3Nzc5iZmSE4OBiurq7SLAZERERvo1KlSqhRo0a+8vr162PVqlV49uzZa3tl7927hwsXLmDJkiVo3bo1AODgwYP56hkZGaFPnz7o06cPevXqhS5duuD+/fswMzODnp4ePvzwQ3z44YcYOXIkatWqhXPnzqFRo0bF2o86deoAeDGsoE6dOlAqlbhx4wY8PDwKXWfs2LHQ0NDAjh070K1bN3Tv3h3t27cv1vbo/fHeJrL//fcfPv30U9y5cwfGxsaoX78+du7ciU6dOgEAxo8fj6ysLIwYMQJpaWlo1qwZdu/eDUNDQ6mNuXPnQktLC71790ZWVhY6dOiAqKgoaGpqqmu3iIjoPTBq1Ch8//336Nu3LyZOnAhjY2McPXoUTZs2hYuLi0pdU1NTmJubY+nSpahcuTJu3LiBr776SqXO3LlzUblyZTRs2BAaGhr46aefYGNjAxMTE0RFRSE3NxfNmjWDvr4+1qxZAz09PZVxtC/r1asXWrVqhZYtW8LGxgYJCQmYOHEiatasiVq1akFLSwvBwcEIDAzE8+fP8cEHHyAjIwOHDx+GgYEBfH19sW3bNqxcuRJHjhxBo0aN8NVXX8HX1xdnz57Nd5E1vd/e20R2xYoVRS5XKBQIDQ0t8gpJXV1dfP/99/j+++9LOToiIqLCmZubY9++fRg3bhw8PDygqamJhg0bolWrVvnqamhoYOPGjRg9ejTq1asHFxcXLFiwAG3btpXqGBgYYMaMGbh8+TI0NTXRpEkTbN++HRoaGjAxMcF3332HoKAg5ObmwtXVFb///jvMzc0BvJiaKyoqComJiQAAT09PbNiwAREREUhPT4eNjQ3at2+P0NBQaGm9SDumTZsGKysrRERE4Nq1azAxMUGjRo3w9ddfIzU1Ff7+/ggNDZV6fENCQrB7924MHz4cmzZtercvLsmKQuRN0kZqk5GRAWNjY6Snp3O8LJUbnLWA6P88efIECQkJcHJygq6urrrDKVf8/PwAAFFRUWqN410p6tjz+1v93tseWSIiInp7MTExOHDggLrDoPcUE1kiIiJ6YwkJCeoOgd5jnH6LiIiIiGSJiSwRERERyRITWSIiIiKSJSayRERERCRLTGSJiIiISJaYyBIRERGRLDGRJSIiIiJZYiJLRERUgd27dw9WVlbSLWRLU2hoKKytraFQKLB169ZSb78kShpDcHAwRo8e/e4CojLBGyIQERG9BcXY38tsW2K2V4nXiYiIgJeXFxwdHaWyMWPG4ODBg4iLi0Pt2rVx5syZErd74cIFhIWFITo6Gs2bN4epqWmJ21Cn8ePHo3r16ggMDISTk5O6w6E3xB5ZIiKiCiorKwsrVqzA4MGDVcqFEBg0aBD69Onzxm1fvXoVAODt7Q0bGxsolcq3irWsWVlZoXPnzli8eLG6Q6G3wESWiIiogtqxYwe0tLTQokULlfIFCxZg5MiRqFat2hu1GxoaCi+vF73DGhoaUCgU0rLIyEjUrl0burq6qFWrFhYuXCgtS0xMhEKhwObNm9G6dWvo6emhSZMmuHTpEo4fPw53d3cYGBigS5cuSE1NldY7fvw4OnXqBAsLCxgbG8PDwwOnTp0qMsZbt26hT58+MDU1hbm5Oby9vfMNr/jwww+xYcOGN3oNqHxgIktERFRBHThwAO7u7qXebnBwMCIjIwEAd+7cwZ07dwAAy5Ytw6RJkzB9+nRcuHAB4eHhmDJlClatWqWyfkhICCZPnoxTp05BS0sL/fr1w/jx4zF//nzExsbi6tWrmDp1qlT/4cOH8PX1RWxsLI4ePQpnZ2d069YNDx8+LDC+zMxMtGvXDgYGBjhw4AAOHjwoJchPnz6V6jVt2hRJSUm4fv16ab9EVEY4RpaIiKiCSkxMhK2tbam3a2BgABMTEwCAjY2NVD5t2jTMnj0bPj4+AAAnJyfEx8djyZIl8PX1leoFBwfD09MTwIvxuv369cPevXvRqlUrAIC/vz+ioqKk+u3bt1fZ/pIlS2BqaoqYmBj06NEjX3wbN26EhoYGli9fLvUWR0ZGwsTEBPv370fnzp0BAHZ2dgBevE4ODg5v85KQmjCRJSIiqqCysrKgq6tbJttKTU1FUlIS/P39MWTIEKk8JycHxsbGKnXr168v/W1tbQ0AcHV1VSlLSUmRnqekpGDq1KnYt28f/vvvP+Tm5iIzMxM3btwoMJaTJ0/iypUrMDQ0VCl/8uSJNLYXAPT09AC86MEleWIiS0REVEFZWFggLS2tTLb1/PlzAC+GFzRr1kxlmaampspzbW1t6e+8HtNXy/LaAwA/Pz+kpqZi3rx5cHBwgFKpRIsWLVSGCbwaS+PGjbFu3bp8yywtLaW/79+/n6+M5IWJLBERUQXl5uaGtWvXlsm2rK2tYWdnh2vXrmHAgAGl2nZsbCwWLlyIbt26AQCSkpJw9+7dQus3atQImzZtgpWVFYyMjAqtFxcXB21tbdStW7dU46Wyw4u9iIiIKihPT0+cP38+X6/slStXcObMGSQnJyMrKwtnzpzBmTNnCu3hLK7Q0FBERERg/vz5uHTpEs6dO4fIyEjMmTPnrdqtUaMG1qxZgwsXLuDvv//GgAEDpGEBBRkwYAAsLCzg7e2N2NhYJCQkICYmBmPGjMHNmzelerGxsdLsCSRPTGSJiIgqKFdXV7i7u2Pz5s0q5YMHD4abmxuWLFmCS5cuwc3NDW5ubrh9+7ZUR6FQqFxwVRyDBw/G8uXLERUVBVdXV3h4eCAqKuqtbziwcuVKpKWlwc3NDZ9++ilGjx4NKyurQuvr6+vjwIEDqFq1Knx8fFC7dm0MGjQIWVlZKj20GzZsUBnPS/KjEEIIdQfxvsvIyICxsTHS09OL/AmEqCz12Zby+koltKl74V88ROXZkydPkJCQACcnpzK7eKq0bN++HcHBwYiLi4OGRvH6rxITE+Hs7Iz4+Hg4Ozu/4wjVY9u2bRg3bhzOnj0LLa3CR1oWdez5/a1+HCNLRERUgXXr1g2XL1/GrVu3YG9vX6x1du7ciaFDh1bYJBYAHj9+jMjIyCKTWCr/ePSIiIgquDFjxpSo/vDhw99RJOVH79691R0ClQKOkSUiIiIiWWIiS0RERESyxESWiIiIiGSJiSwRERERyRITWSIiIiKSJSayRERERCRLTGSJiIiISJaYyBIREVVg9+7dg5WVFRITE9UdSrGEhoaiYcOGxa6fkpICS0tL3Lp1690FReUWb4hARET0FhSRwWW2LfH5/0q8TkREBLy8vODo6CiVjRkzBgcPHkRcXBxq166NM2fOlF6QZczKygqffvopQkJCsHz5cnWHQ2WMPbJEREQVVFZWFlasWIHBgwerlAshMGjQIPTp00dNkZWuzz//HOvWrUNaWpq6Q6EyxkSWiIiogtqxYwe0tLTQokULlfIFCxZg5MiRqFat2hu37efnh549eyI8PBzW1tYwMTFBWFgYcnJyMG7cOJiZmaFKlSpYuXKlynoTJkxAzZo1oa+vj2rVqmHKlCl49uxZkduKjIxE7dq1oauri1q1amHhwoUqy11dXWFjY4Po6Og33h+SJw4tICIiqqAOHDgAd3f3d9b+vn37UKVKFRw4cACHDh2Cv78/jhw5gjZt2uDvv//Gpk2bMHz4cHTq1An29vYAAENDQ0RFRcHW1hbnzp3DkCFDYGhoiPHjxxe4jWXLliEkJAQ//PAD3NzccPr0aQwZMgSVKlWCr6+vVK9p06aIjY3FoEGD3tn+UvnDHlkiIqIKKjExEba2tu+sfTMzMyxYsAAuLi4YNGgQXFxckJmZia+//hrOzs6YOHEidHR0cOjQIWmdyZMno2XLlnB0dISXlxfGjh2LzZs3F7qNadOmYfbs2fDx8YGTkxN8fHwQGBiIJUuWqNSzs7OTzQVtVHrYI0tERFRBZWVlQVdX9521X7duXWho/F+fmLW1NerVqyc919TUhLm5OVJSUqSyn3/+GfPmzcOVK1fw6NEj5OTkwMjIqMD2U1NTkZSUBH9/fwwZMkQqz8nJgbGxsUpdPT09ZGZmltaukUwwkSUiIqqgLCws3ukFUNra2irPFQpFgWXPnz8HABw9ehR9+/ZFWFgYPD09YWxsjI0bN2L27NkFtp+33rJly9CsWTOVZZqamirP79+/D0tLy7faH5IfJrJEREQVlJubG9auXavuMCSHDh2Cg4MDJk2aJJVdv3690PrW1taws7PDtWvXMGDAgCLbjouLQ9u2bUsrVJIJJrJEREQVlKenJyZOnIi0tDSYmppK5Xk/6ycnJyMrK0uaR7ZOnTrQ0dF5Z/HUqFEDN27cwMaNG9GkSRNs27bttTMNhIaGYvTo0TAyMkLXrl2RnZ2NEydOIC0tDUFBQQCAzMxMnDx5EuHh4e8sdiqfeLEXERFRBeXq6gp3d/d8F1MNHjwYbm5uWLJkCS5dugQ3Nze4ubnh9u3bUh2FQoGoqKhSjcfb2xuBgYEYNWoUGjZsiMOHD2PKlClFrjN48GAsX74cUVFRcHV1hYeHB6KiouDk5CTV+fXXX1G1alW0bt26VOOl8k8hhBDqDuJ9l5GRAWNjY6Snpxc64J2orPXZlvL6SiW0qbtVqbdJVBaePHmChIQEODk5vdOLp96F7du3Izg4GHFxcSoXZhUlMTERzs7OiI+Ph7Oz8zuO8O01bdoUAQEB6N+/f6m3XdSx5/e3+nFoARERUQXWrVs3XL58Gbdu3ZLmcn2dnTt3YujQobJIYlNSUtCrVy/069dP3aGQGjCRJSIiquDGjBlTovrDhw9/R5GUPisrq0JvpkAVH8fIEhEREZEsMZElIiIiIlliIktEREREsvTeJrIRERFo0qQJDA0NYWVlhZ49e+LixYsqdfz8/KBQKFQezZs3V6mTnZ2NL7/8EhYWFqhUqRI+/PBD3Lx5syx3hYiIiOi99N4msjExMRg5ciSOHj2KPXv2ICcnB507d8bjx49V6nXp0gV37tyRHtu3b1dZHhAQgOjoaGzcuBEHDx7Eo0eP0KNHD+Tm5pbl7hARERG9d97bWQt27typ8jwyMhJWVlY4efIk2rRpI5UrlUrY2NgU2EZ6ejpWrFiBNWvWoGPHjgCAtWvXwt7eHn/++Sc8PT3f3Q4QERERvefe2x7ZV6WnpwMAzMzMVMr3798PKysr1KxZE0OGDEFKyv9NEn/y5Ek8e/YMnTt3lspsbW1Rr149HD58uNBtZWdnIyMjQ+VBRERERCXDRBaAEAJBQUH44IMPUK9ePam8a9euWLduHfbt24fZs2fj+PHjaN++PbKzswEAycnJ0NHRUbl/NQBYW1sjOTm50O1FRETA2NhYehR3gmoiIqKSunfvHqysrJCYmFjqbYeGhsLa2hoKhQJbt24t9fZLoqQxBAcHY/To0e8uICoT7+3QgpeNGjUKZ8+excGDB1XK+/TpI/1dr149uLu7w8HBAdu2bYOPj0+h7QkhoFAoCl0+ceJEBAUFSc8zMjKYzBIRyVS8b+Gf96WtzqqS31U+IiICXl5ecHR0BAD8888/+O6773Dw4EHcvXsXjo6OGD58eIlvmnDhwgWEhYUhOjoazZs3z9epU96NHz8e1atXR2BgIJycnNQdDr2h9z6R/fLLL/Hbb7/hwIEDqFKlSpF1K1euDAcHB1y+fBkAYGNjg6dPnyItLU3lBE5JSUHLli0LbUepVEKpVJbODhARERUiKysLK1asULlQ+eTJk7C0tJSu6Th8+DCGDh0KTU1NjBo1qthtX716FQDg7e1dZOdNeWVlZYXOnTtj8eLFmDFjhrrDoTf03g4tEEJg1KhR2LJlC/bt21es/8bu3buHpKQkVK5cGQDQuHFjaGtrY8+ePVKdO3fuIC4urshEloiIqCzs2LEDWlpaaNGihVQ2aNAgLFiwAB4eHqhWrRoGDhyIzz//HFu2bCl2u6GhofDy8gIAaGhoqCSykZGRqF27NnR1dVGrVi0sXLhQWpaYmAiFQoHNmzejdevW0NPTQ5MmTXDp0iUcP34c7u7uMDAwQJcuXZCamiqtd/z4cXTq1AkWFhYwNjaGh4cHTp06VWSMt27dQp8+fWBqagpzc3N4e3vnG17x4YcfYsOGDcXebyp/3ttEduTIkVi7di3Wr18PQ0NDJCcnIzk5GVlZWQCAR48eITg4GEeOHEFiYiL2798PLy8vWFhY4KOPPgIAGBsbw9/fH2PHjsXevXtx+vRpDBw4EK6urtIsBkREROpy4MABuLu7v7Zeenp6voudixIcHIzIyEgAkKanBIBly5Zh0qRJmD59Oi5cuIDw8HBMmTIFq1atUlk/JCQEkydPxqlTp6ClpYV+/fph/PjxmD9/PmJjY3H16lVMnTpVqv/w4UP4+voiNjYWR48ehbOzM7p164aHDx8WGF9mZibatWsHAwMDHDhwAAcPHpQS5KdPn0r1mjZtiqSkJFy/fr3Y+07ly3s7tGDRokUAgLZt26qUR0ZGws/PD5qamjh37hxWr16NBw8eoHLlymjXrh02bdoEQ0NDqf7cuXOhpaWF3r17IysrCx06dEBUVBQ0NTXLcneIiIjySUxMhK2tbZF1jhw5gs2bN2Pbtm3FbtfAwAAmJiYAoDJF5bRp0zB79mzpOhInJyfEx8djyZIl8PX1leoFBwdLU1SOGTMG/fr1w969e9GqVSsAgL+/P6KioqT67du3V9n+kiVLYGpqipiYGPTo0SNffBs3boSGhgaWL18u9RZHRkbCxMQE+/fvl2YbsrOzA/DidXJwcCj2/lP58d4mskIUPWBeT08Pu3btem07urq6+P777/H999+XVmhERESlIisrC7q6uoUuP3/+PLy9vTF16lR06tTprbaVmpqKpKQk+Pv7Y8iQIVJ5Tk4OjI2NVerWr19f+tva2hoA4OrqqlL28nSXKSkpmDp1Kvbt24f//vsPubm5yMzMxI0bNwqM5eTJk7hy5YpKxxMAPHnyRBrbC7z4rgde9OCSPL23iSwREVFFZ2FhgbS0tAKXxcfHo3379hgyZAgmT5781tt6/vw5gBfDC5o1a6ay7NVfKbW1taW/83pMXy3Law94ccv41NRUzJs3Dw4ODlAqlWjRooXKMIFXY2ncuDHWrVuXb5mlpaX09/379/OVkbwwkSUiIqqg3NzcsHbt2nzl58+fR/v27eHr64vp06eXyrasra1hZ2eHa9euYcCAAaXSZp7Y2FgsXLgQ3bp1AwAkJSXh7t27hdZv1KgRNm3aBCsrKxgZGRVaLy4uDtra2qhbt26pxktl57292IuIiKii8/T0xPnz51V6Zc+fP4927dqhU6dOCAoKki52fnmWgDcVGhqKiIgIzJ8/H5cuXcK5c+cQGRmJOXPmvFW7NWrUwJo1a3DhwgX8/fffGDBggDQsoCADBgyAhYUFvL29ERsbi4SEBMTExGDMmDG4efOmVC82NlaaPYHkiT2yREREb+FNblJQVlxdXeHu7o7Nmzdj2LBhAICffvoJqampWLduncpP7w4ODirTUykUCukC6OIaPHgw9PX1MWvWLIwfPx6VKlWCq6srAgIC3mo/Vq5ciaFDh8LNzQ1Vq1ZFeHg4goODC62vr6+PAwcOYMKECfDx8cHDhw9hZ2eHDh06qPTQbtiwAWFhYW8VG6mXQrzuqid65zIyMmBsbIz09PQifwIhKkt9tqW8vlIJbepuVeptEpWFJ0+eICEhAU5OTkVePFUebd++HcHBwYiLi4OGRvF+iE1MTISzszPi4+Ph7Oz8jiNUj23btmHcuHE4e/YstLQK79cr6tjz+1v92CNLRERUgXXr1g2XL1/GrVu3in079J07d2Lo0KEVNokFgMePHyMyMrLIJJbKPx49IiKiCm7MmDElqj98+PB3FEn50bt3b3WHQKWAF3sRERERkSwxkSUiIiIiWWIiS0RERESyxESWiIiIiGSJiSwRERERyRITWSIiIiKSJSayRERERCRLTGSJiIgqsHv37sHKykrl9rPlWWhoKBo2bFjs+ikpKbC0tMStW7feXVBUbvGGCERERG/h5Ncby2xbjcP7lnidiIgIeHl5wdHREQDwzz//4LvvvsPBgwdx9+5dODo6Yvjw4SW+aUJ5YWVlhU8//RQhISFYvny5usOhMsZEloiIqILKysrCihUrsH37dqns5MmTsLS0xNq1a2Fvb4/Dhw9j6NCh0NTUxKhRo9QY7Zv7/PPP0bRpU8yaNQumpqbqDofKEIcWEBERVVA7duyAlpYWWrRoIZUNGjQICxYsgIeHB6pVq4aBAwfi888/x5YtW0rUtp+fH3r27Inw8HBYW1vDxMQEYWFhyMnJwbhx42BmZoYqVapg5cqVKutNmDABNWvWhL6+PqpVq4YpU6bg2bNnRW4rMjIStWvXhq6uLmrVqoWFCxeqLHd1dYWNjQ2io6NLtA8kf+yRJSIiqqAOHDgAd3f319ZLT0+HmZlZidvft28fqlSpggMHDuDQoUPw9/fHkSNH0KZNG/z999/YtGkThg8fjk6dOsHe3h4AYGhoiKioKNja2uLcuXMYMmQIDA0NMX78+AK3sWzZMoSEhOCHH36Am5sbTp8+jSFDhqBSpUrw9fWV6jVt2hSxsbEYNGhQifeD5Is9skRERBVUYmIibG1ti6xz5MgRbN68GcOGDStx+2ZmZliwYAFcXFwwaNAguLi4IDMzE19//TWcnZ0xceJE6Ojo4NChQ9I6kydPRsuWLeHo6AgvLy+MHTsWmzdvLnQb06ZNw+zZs+Hj4wMnJyf4+PggMDAQS5YsUalnZ2cnmwvaqPSwR5aIiKiCysrKgq6ubqHLz58/D29vb0ydOhWdOnUqcft169aFhsb/9YlZW1ujXr160nNNTU2Ym5sjJSVFKvv5558xb948XLlyBY8ePUJOTg6MjIwKbD81NRVJSUnw9/fHkCFDpPKcnBwYGxur1NXT00NmZmaJ94HkjYksERFRBWVhYYG0tLQCl8XHx6N9+/YYMmQIJk+e/Ebta2trqzxXKBQFlj1//hwAcPToUfTt2xdhYWHw9PSEsbExNm7ciNmzZxfYft56y5YtQ7NmzVSWaWpqqjy/f/8+LC0t32g/SL6YyBIREVVQbm5uWLt2bb7y8+fPo3379vD19cX06dPLLJ5Dhw7BwcEBkyZNksquX79eaH1ra2vY2dnh2rVrGDBgQJFtx8XFoW3btqUVKskEE1kiIqIKytPTExMnTkRaWpo0LdX58+fRrl07dO7cGUFBQUhOTgbwoofzXfdo1qhRAzdu3MDGjRvRpEkTbNu27bUzDYSGhmL06NEwMjJC165dkZ2djRMnTiAtLQ1BQUEAgMzMTJw8eRLh4eHvNH4qf5jIEhERvYU3uUlBWXF1dYW7u7vKxVw//fQTUlNTsW7dOqxbt06q6+DgoHKxlEKhQGRkJPz8/EotHm9vbwQGBmLUqFHIzs5G9+7dMWXKFISGhha6zuDBg6Gvr49Zs2Zh/PjxqFSpElxdXREQECDV+fXXX1G1alW0bt261GIleVAIIYS6gyiJpKQkKBQKVKlSBQBw7NgxrF+/HnXq1MHQoUPVHN2bycjIgLGxMdLT0wsd8E5U1vpsS3l9pRLa1N2q1NskKgtPnjxBQkICnJycirx4qjzavn07goODERcXp3JhVlESExPh7OyM+Ph4ODs7v+MI317Tpk0REBCA/v37l3rbRR17fn+rn+ym3+rfvz/++usvAEBycjI6deqEY8eO4euvv8Y333yj5uiIiIjKl27dumHYsGG4detWsdfZuXMnhg4dKoskNiUlBb169UK/fv3UHQqpgeyGFsTFxaFp06YAgM2bN6NevXo4dOgQdu/ejeHDh2Pq1KlqjpCIiKh8GTNmTInqDx8+/B1FUvqsrKwKvZkCVXyy65F99uwZlEolAODPP//Ehx9+CACoVasW7ty5o87QiIiIiKgMyS6RrVu3LhYvXozY2Fjs2bMHXbp0AQDcvn0b5ubmao6OiIiIiMqK7BLZGTNmYMmSJWjbti369euHBg0aAAB+++03acgBEREREVV8shojK4SAk5MTrl+/jtzcXGlOPAAYOnQo9PX11RgdEREREZUlWfXICiHg7OyM//77TyWJBQBHR0dYWXFqHyIiIqL3hawSWQ0NDTg7O+PevXvqDoWIiIiI1ExWiSwAzJw5E+PGjUNcXJy6QyEiIiIiNZJdIjtw4EAcO3YMDRo0gJ6eHszMzFQeRERE9H/u3bsHKysrldvPlpbQ0FBYW1tDoVBg69atpd5+SZQ0huDgYIwePfrdBURlQlYXewHAvHnz1B0CERGRJP1WhzLblrHd3hKvExERAS8vLzg6OgJ4kdgOGDAAZ8+elZJcb29vhIeHl+g2qxcuXEBYWBiio6PRvHnzfNeulHfjx49H9erVERgYCCcnJ3WHQ29Idomsr6+vukMgIiKShaysLKxYsQLbt2+XyjQ0NODt7Y1vv/0WlpaWuHLlCkaOHIn79+9j/fr1xW776tWrAABvb28oFIpSj/1ds7KyQufOnbF48WLMmDFD3eHQG5Ld0ALgxckzefJk9OvXDykpKQBe3Bf6/Pnzao6MiIio/NixYwe0tLTQokULqczU1BRffPEF3N3d4eDggA4dOmDEiBGIjY0tdruhoaHw8vIC8CIxfjmRjYyMRO3ataGrq4tatWph4cKF0rLExEQoFAps3rwZrVu3hp6eHpo0aYJLly7h+PHjcHd3h4GBAbp06YLU1FRpvePHj6NTp06wsLCAsbExPDw8cOrUqSJjvHXrFvr06QNTU1OYm5vD29s73/CKDz/8EBs2bCj2flP5I7tENiYmBq6urvj777+xZcsWPHr0CABw9uxZhISEqDk6IiKi8uPAgQNwd3cvss7t27exZcsWeHh4FLvd4OBgREZGAgDu3Lkj3SJ+2bJlmDRpEqZPn44LFy4gPDwcU6ZMwapVq1TWDwkJweTJk3Hq1CloaWmhX79+GD9+PObPn4/Y2FhcvXoVU6dOleo/fPgQvr6+iI2NxdGjR+Hs7Ixu3brh4cOHBcaXmZmJdu3awcDAAAcOHMDBgwelBPnp06dSvaZNmyIpKQnXr18v9r5T+SK7oQVfffUVvv32WwQFBcHQ0FAqb9euHebPn6/GyIiIiMqXxMRE2NraFrisX79++PXXX5GVlQUvLy8sX7682O0aGBjAxMQEAGBjYyOVT5s2DbNnz4aPjw8AwMnJCfHx8ViyZInK0MDg4GB4enoCAMaMGYN+/fph7969aNWqFQDA398fUVFRUv327durbH/JkiUwNTVFTEwMevTokS++jRs3QkNDA8uXL5d6iyMjI2FiYoL9+/ejc+fOAAA7OzvpdXJwcCj2/lP5Ibse2XPnzuGjjz7KV25pacn5ZYmIiF6SlZUFXV3dApfNnTsXp06dwtatW3H16lUEBQW91bZSU1ORlJQEf39/GBgYSI9vv/1WGk+bp379+tLf1tbWAABXV1eVsryhgwCQkpKC4cOHo2bNmjA2NoaxsTEePXqEGzduFBjLyZMnceXKFRgaGkpxmJmZ4cmTJyqx6OnpAXjRg0vyJLseWRMTE9y5cyffFYanT5+W/rMiIiIiwMLCAmlpaQUus7GxgY2NDWrVqgVzc3O0bt0aU6ZMQeXKld9oW8+fPwfwYnhBs2bNVJZpamqqPNfW1pb+zusxfbUsrz0A8PPzQ2pqKubNmwcHBwcolUq0aNFCZZjAq7E0btwY69aty7fM0tJS+vv+/fv5ykheZJfI9u/fHxMmTMBPP/0kvdEPHTqE4OBgfPbZZ+oOj4iIqNxwc3PD2rVrX1tPCAEAyM7OfuNtWVtbw87ODteuXcOAAQPeuJ2CxMbGYuHChejWrRsAICkpCXfv3i20fqNGjbBp0yZYWVkVOaVYXFwctLW1Ubdu3VKNl8qO7IYWTJ8+HVWrVoWdnR0ePXqEOnXqoE2bNmjZsiUmT56s7vCIiIjKDU9PT5w/f16lV3b79u2IjIxEXFwcEhMTsX37dnzxxRdo1aqVNNfsmwoNDUVERATmz5+PS5cu4dy5c4iMjMScOXPeqt0aNWpgzZo1uHDhAv7++28MGDBAGhZQkAEDBsDCwgLe3t6IjY1FQkICYmJiMGbMGNy8eVOqFxsbK82eQPIkux5ZbW1trFu3Dt988w1Onz6N58+fw83NDc7OzuoOjYiI3kNvcpOCsuLq6gp3d3ds3rwZw4YNA/BiXOiyZcsQGBiI7Oxs2Nvbw8fHB1999ZXKugqFApGRkfDz8yv29gYPHgx9fX3MmjUL48ePR6VKleDq6oqAgIC32o+VK1di6NChcHNzQ9WqVREeHo7g4OBC6+vr6+PAgQOYMGECfHx88PDhQ9jZ2aFDhw4qPbQbNmxAWFjYW8VG6qUQeb8nkNpkZGTA2NgY6enpJbqrCtG71GdbyusrldCm7lal3iZRWXjy5AkSEhLg5ORU6MVT5dX27dsRHByMuLg4aGgU74fYxMREODs7Iz4+vsJ2FG3btg3jxo3D2bNnoaVVeL9eUcee39/qJ7se2cKuqlQoFNDV1UWNGjXg7e0NMzOzMo6MiIio/OnWrRsuX76MW7duwd7evljr7Ny5E0OHDq2wSSwAPH78GJGRkUUmsVT+ya5Htl27djh16hRyc3Ph4uICIQQuX74MTU1N1KpVCxcvXoRCocDBgwdRp06dQtuJiIjAli1b8O+//0JPTw8tW7bEjBkz4OLiItURQiAsLAxLly5FWloamjVrhh9//FFlUHh2djaCg4OxYcMGZGVloUOHDli4cCGqVKlS7H3if3RUHrFHluj/yLlHlt4Oe2TLN9ld7OXt7Y2OHTvi9u3bOHnyJE6dOoVbt26hU6dO6NevH27duoU2bdogMDCwyHZiYmIwcuRIHD16FHv27EFOTg46d+6Mx48fS3VmzpyJOXPm4IcffsDx48dhY2ODTp06qdxJJCAgANHR0di4cSMOHjyIR48eoUePHsjNzX1nrwERERERybBH1s7ODnv27MnX23r+/Hl07twZt27dwqlTp9C5c+cip+Z4VWpqKqysrBATE4M2bdpACAFbW1sEBARgwoQJAF70vlpbW2PGjBkYNmwY0tPTYWlpiTVr1qBPnz4AXtzqz97eHtu3b5fuWvI6/I+OyiP2yBL9H/bIvr/YI1u+ya5HNj09XeVuH3lSU1ORkZEB4MVNEwqbJLmodgFIY2sTEhKQnJws3cYOAJRKJTw8PHD48GEAL+4c8uzZM5U6tra2qFevnlSnINnZ2cjIyFB5EBEREVHJyC6R9fb2xqBBgxAdHY2bN2/i1q1biI6Ohr+/P3r27AkAOHbsGGrWrFnsNoUQCAoKwgcffIB69eoBAJKTkwH8363z8lhbW0vLkpOToaOjA1NT00LrFCQiIkK6xZ6xsXGxB98TERER0f+R3aV6S5YsQWBgIPr27YucnBwAgJaWFnx9fTF37lwAQK1atbB8+fJitzlq1CicPXsWBw8ezLcs79Z5eYQQ+cpe9bo6EydOVJl9ISMjg8ksERERUQnJLpE1MDDAsmXLMHfuXFy7dg1CCFSvXh0GBgZSnYYNGxa7vS+//BK//fYbDhw4oDLTgI2NDYAXva4v33c6JSVF6qW1sbHB06dPkZaWptIrm5KSgpYtWxa6TaVSCaVSWewYiYiIiCg/2Q0tyGNgYID69eujQYMGKklscQkhMGrUKGzZsgX79u2Dk5OTynInJyfY2Nhgz549UtnTp08RExMjJamNGzeGtra2Sp07d+4gLi6uyESWiIiIiN6e7BLZx48fY8qUKWjZsiVq1KiBatWqqTyKa+TIkVi7di3Wr18PQ0NDJCcnIzk5GVlZWQBeDCkICAhAeHg4oqOjERcXBz8/P+jr66N///4AAGNjY/j7+2Ps2LHYu3cvTp8+jYEDB8LV1RUdO3Z8J/tPRERUEvfu3YOVlRUSExPVHUqxhIaGluiX1ZSUFFhaWuLWrVvvLigqt2Q3tGDw4MGIiYnBp59+isqVK792vGphFi1aBABo27atSvnL95UeP348srKyMGLECOmGCLt374ahoaFUf+7cudDS0kLv3r2lGyJERUVBU1PzjeIiIiJ5eRdT1RXmTaawi4iIgJeXFxwdHQG8SGwHDBiAs2fPSkmut7c3wsPDZTmFlJWVFT799FOEhISU6PoYqhhkl8ju2LED27ZtQ6tWrd6qneJMn6tQKBAaGorQ0NBC6+jq6uL777/H999//1bxEBERlbasrCysWLEC27dvl8o0NDTg7e2Nb7/9FpaWlrhy5QpGjhyJ+/fvY/369WqM9s19/vnnaNq0KWbNmpVvJiGq2GQ3tMDU1FSa65WIiIgKt2PHDmhpaaFFixZSmampKb744gu4u7vDwcEBHTp0wIgRIxAbG1uitv38/NCzZ0+Eh4fD2toaJiYmCAsLQ05ODsaNGwczMzNUqVIFK1euVFlvwoQJqFmzJvT19VGtWjVMmTIFz549K3JbkZGRqF27NnR1dVGrVi0sXLhQZbmrqytsbGwQHR1don0g+ZNdIjtt2jRMnToVmZmZ6g6FiIioXDtw4ADc3d2LrHP79m1s2bIFHh4eJW5/3759uH37Ng4cOIA5c+YgNDQUPXr0gKmpKf7++28MHz4cw4cPR1JSkrSOoaEhoqKiEB8fj/nz50szERVm2bJlmDRpEqZPn44LFy4gPDwcU6ZMwapVq1TqNW3atMTJOMmf7BLZ2bNnY9euXbC2toarqysaNWqk8iAiIqIXEhMTYWtrW+Cyfv36QV9fH3Z2djAyMnqj8aVmZmZYsGABXFxcMGjQILi4uCAzMxNff/01nJ2dMXHiROjo6ODQoUPSOpMnT0bLli3h6OgILy8vjB07Fps3by50G9OmTcPs2bPh4+MDJycn+Pj4IDAwEEuWLFGpZ2dnJ5sL2qj0yG6MbN7du4iIiKhoWVlZ0NXVLXDZ3LlzERISgosXL+Lrr79GUFBQvp/sX6du3brQ0Pi/PjFra2vpDpkAoKmpCXNzc5Vby//888+YN28erly5gkePHiEnJ6fQi8xSU1ORlJQEf39/DBkyRCrPycmBsbGxSl09PT3+Wvsekl0iGxISou4QiIiIZMHCwgJpaWkFLrOxsYGNjQ1q1aoFc3NztG7dGlOmTFG5CdDraGtrqzxXKBQFlj1//hwAcPToUfTt2xdhYWHw9PSEsbExNm7ciNmzZxfYft56y5YtQ7NmzVSWvTo70P3792FpaVns2KlikF0iCwAPHjzAzz//jKtXr0oDyk+dOgVra2vY2dmpOzwiIqJywc3NDWvXrn1tvbyZfLKzs99pPIcOHYKDgwMmTZoklV2/fr3Q+nnf69euXcOAAQOKbDsuLi7flJpU8ckukT179iw6duwIY2NjJCYmYsiQITAzM0N0dDSuX7+O1atXqztEIiKicsHT0xMTJ05UuZX69u3b8d9//6FJkyYwMDBAfHw8xo8fj1atWklzzb4rNWrUwI0bN7Bx40Y0adIE27Zte+1MA6GhoRg9ejSMjIzQtWtXZGdn48SJE0hLS0NQUBAAIDMzEydPnkR4ePg7jZ/KH9klskFBQfDz88PMmTNVbkzQtWtX6Y5bREREZeVNblJQVlxdXeHu7o7Nmzdj2LBhAF6MJV22bBkCAwORnZ0Ne3t7+Pj44KuvvlJZV6FQqNwkqDR4e3sjMDAQo0aNQnZ2Nrp3744pU6YUOV/74MGDoa+vj1mzZmH8+PGoVKkSXF1dERAQINX59ddfUbVqVbRu3brUYiV5UIji3BmgHDE2NsapU6dQvXp1GBoa4p9//kG1atVw/fp1uLi44MmTJ+oOscQyMjJgbGyM9PR0Wd5VhSqmd3G3ovL8hU9UlCdPniAhIQFOTk6FXjxVXm3fvh3BwcGIi4tTuTCrKImJiXB2dkZ8fDycnZ3fcYRvr2nTpggICHgnHVpFHXt+f6uf7HpkdXV1kZGRka/84sWLHORNRET0im7duuHy5cu4desW7O3ti7XOzp07MXToUFkksSkpKejVqxf69eun7lBIDWSXyHp7e+Obb76R5pxTKBS4ceMGvvrqK3z88cdqjo6IiKj8GTNmTInqDx8+/B1FUvqsrKwwfvx4dYdBaiK7GyL873//Q2pqKqysrJCVlQUPDw/UqFEDhoaGmD59urrDIyIiIqIyIrseWSMjIxw8eBD79u3DqVOn8Pz5czRq1AgdO3ZUd2hEREREVIZkl8jmad++Pdq3bw/gxbyyRERE75rMro+mUsBjXr7JbmjBjBkzsGnTJul57969YW5uDjs7O/zzzz9qjIyIiCqqvLtV8Rao75+8Y/7qHcuofJBdj+ySJUuku5Ts2bMHe/bswY4dO7B582aMGzcOu3fvVnOERERU0WhqasLExAQpKS+mpdPX14dCoVBzVPQuCSGQmZmJlJQUmJiY5LslLpUPsktk79y5I00f8scff6B3797o3LkzHB0d892HmYiIqLTY2NgAgJTM0vvBxMREOvZU/sgukTU1NUVSUhLs7e2xc+dOfPvttwBe/OeUm5ur5uiIiKiiUigUqFy5MqysrPDs2TN1h0NlQFtbmz2x5ZzsElkfHx/0798fzs7OuHfvHrp27QoAOHPmDGrUqKHm6IiIqKLT1NRkckNUTsgukZ07dy4cHR2RlJSEmTNnwsDAAMCLIQcjRoxQc3REREREVFZkl8hqa2sjODg4X3lAQEDZB0NEREREaiO76bdWrVqFbdu2Sc/Hjx8PExMTtGzZEtevX1djZERERERUlmSXyIaHh0NPTw8AcOTIEfzwww+YOXMmLCwsEBgYqOboiIiIiKisyG5oQVJSknRR19atW9GrVy8MHToUrVq1Qtu2bdUbHBERERGVGdn1yBoYGODevXsAgN27d6Njx44AAF1dXWRlZakzNCIiIiIqQ7Lrke3UqRMGDx4MNzc3XLp0Cd27dwcAnD9/Ho6OjuoNjoiIiIjKjOx6ZH/88Ue0aNECqamp+OWXX2Bubg4AOHnyJPr166fm6IiIiIiorCiEEELdQbzvMjIyYGxsjPT0dBgZGak7HCIAQJ9tpX8bzk3drUq9TSIideH3t/rJbmhBnszMTNy4cQNPnz5VKa9fv76aIiIiIiKisiS7RDY1NRV+fn7YuXNngctzc3PLOCIiIiIiUgfZjZENCAjAgwcPcPToUejp6WHnzp1YtWoVnJ2d8dtvv6k7PCIiIiIqI7Lrkd23bx9+/fVXNGnSBBoaGnBwcECnTp1gZGSEiIgIaRYDIiIiIqrYZNcj+/jxY1hZvbhgxMzMDKmpqQAAV1dXnDp1Sp2hEREREVEZkl0i6+LigosXLwIAGjZsiCVLluDWrVtYvHgxKleurOboiIiIiKisyG5oQUBAAG7fvg0ACAkJgaenJ9atWwcdHR1ERUWpNzgiIiIiKjOyS2QHDBgg/e3m5obExET8+++/qFq1KiwsLNQYGRERERGVJdkMLcjMzMTIkSNhZ2cHKysr9O/fH3fv3oW+vj4aNWrEJJaIiIjoPSObRDYkJARRUVHo3r07+vbtiz179uCLL75Qd1hEREREpCayGVqwZcsWrFixAn379gUADBw4EK1atUJubi40NTXVHB0RERERlTXZ9MgmJSWhdevW0vOmTZtCS0tLuvCLiIiIiN4vsklkc3NzoaOjo1KmpaWFnJwcNUVEREREROokm6EFQgj4+flBqVRKZU+ePMHw4cNRqVIlqWzLli3qCI+IiIiIyphsEllfX998ZQMHDlRDJERERERUHsgmkY2MjFR3CERERERUjshmjCwRERER0cuYyBIRERGRLDGRJSIiIiJZeq8T2QMHDsDLywu2trZQKBTYunWrynI/Pz8oFAqVR/PmzVXqZGdn48svv4SFhQUqVaqEDz/8EDdv3izDvSAiIiJ6P8kikW3UqBHS0tIAAN988w0yMzNLpd3Hjx+jQYMG+OGHHwqt06VLF9y5c0d6bN++XWV5QEAAoqOjsXHjRhw8eBCPHj1Cjx49kJubWyoxEhEREVHBZDFrwYULF/D48WOYmpoiLCwMw4cPh76+/lu327VrV3Tt2rXIOkqlEjY2NgUuS09Px4oVK7BmzRp07NgRALB27VrY29vjzz//hKen51vHSEREREQFk0Ui27BhQ3z++ef44IMPIITA//73PxgYGBRYd+rUqaW67f3798PKygomJibw8PDA9OnTYWVlBQA4efIknj17hs6dO0v1bW1tUa9ePRw+fJiJLBEREdE7JItENioqCiEhIfjjjz+gUCiwY8cOaGnlD12hUJRqItu1a1d88skncHBwQEJCAqZMmYL27dvj5MmTUCqVSE5Oho6ODkxNTVXWs7a2RnJycqHtZmdnIzs7W3qekZFRajETERERvS9kkci6uLhg48aNAAANDQ3s3btX6hV9l/r06SP9Xa9ePbi7u8PBwQHbtm2Dj49PoesJIaBQKApdHhERgbCwsFKNlYiIiOh9I4uLvV72/PnzMkliC1K5cmU4ODjg8uXLAAAbGxs8ffpUuhAtT0pKCqytrQttZ+LEiUhPT5ceSUlJ7zRuIiIioopIdoksAFy9ehVffvklOnbsiE6dOmH06NG4evXqO9/uvXv3kJSUhMqVKwMAGjduDG1tbezZs0eqc+fOHcTFxaFly5aFtqNUKmFkZKTyICIiIqKSkV0iu2vXLtSpUwfHjh1D/fr1Ua9ePfz999+oW7euSkJZHI8ePcKZM2dw5swZAEBCQgLOnDmDGzdu4NGjRwgODsaRI0eQmJiI/fv3w8vLCxYWFvjoo48AAMbGxvD398fYsWOxd+9enD59GgMHDoSrq6s0iwERERERvRuyGCP7sq+++gqBgYH47rvv8pVPmDABnTp1KnZbJ06cQLt27aTnQUFBAABfX18sWrQI586dw+rVq/HgwQNUrlwZ7dq1w6ZNm2BoaCitM3fuXGhpaaF3797IyspChw4dEBUVBU1NzbfcUyIiIiIqikIIIdQdREno6uri3LlzcHZ2Vim/dOkS6tevjydPnqgpsjeXkZEBY2NjpKenc5gBlRt9tqWUepubuqtnfDsR0bvA72/1k93QAktLS2kowMvOnDmjtovAiIiIiKjsyW5owZAhQzB06FBcu3YNLVu2hEKhwMGDBzFjxgyMHTtW3eERERERURmRXSI7ZcoUGBoaYvbs2Zg4cSKAF3fTCg0NxejRo9UcHRERERGVFdklsgqFAoGBgQgMDMTDhw8BQOXiKyIiIiJ6P8gukX0ZE1giIiKi95fsLvYiIiIiIgKYyBIRERGRTDGRJSIiIiJZklUi++zZM7Rr1w6XLl1SdyhEREREpGaySmS1tbURFxcHhUKh7lCIiIiISM1klcgCwGeffYYVK1aoOwwiIiIiUjPZTb/19OlTLF++HHv27IG7uzsqVaqksnzOnDlqioyIiIiIypLsEtm4uDg0atQIAPKNleWQAyIiIqL3h+wS2b/++kvdIRARERFROSC7MbJ5rly5gl27diErKwsAIIRQc0REREREVJZkl8jeu3cPHTp0QM2aNdGtWzfcuXMHADB48GCMHTtWzdERERERUVmRXSIbGBgIbW1t3LhxA/r6+lJ5nz59sHPnTjVGRkRERERlSXZjZHfv3o1du3ahSpUqKuXOzs64fv26mqIiIiIiorImux7Zx48fq/TE5rl79y6USqUaIiIiIiIidZBdItumTRusXr1aeq5QKPD8+XPMmjUL7dq1U2NkRERERFSWZDe0YNasWWjbti1OnDiBp0+fYvz48Th//jzu37+PQ4cOqTs8IiIiIiojsuuRrVOnDs6ePYumTZuiU6dOePz4MXx8fHD69GlUr15d3eERERERURmRXY8sANjY2CAsLEzdYRARERGRGskykU1LS8OKFStw4cIFKBQK1K5dG59//jnMzMzUHRoRERERlRHZDS2IiYmBk5MTFixYgLS0NNy/fx8LFiyAk5MTYmJi1B0eEREREZUR2fXIjhw5Er1798aiRYugqakJAMjNzcWIESMwcuRIxMXFqTlCIiIiIioLsuuRvXr1KsaOHSslsQCgqamJoKAgXL16VY2REREREVFZkl0i26hRI1y4cCFf+YULF9CwYcOyD4iIiIiI1EIWQwvOnj0r/T169GiMGTMGV65cQfPmzQEAR48exY8//ojvvvtOXSESERERURlTCCGEuoN4HQ0NDSgUCrwuVIVCgdzc3DKKqvRkZGTA2NgY6enpMDIyUnc4RACAPttSSr3NTd2tSr1NIiJ14fe3+smiRzYhIUHdIRARERFROSOLRNbBwUHdIRARERFROSOLRPZVt27dwqFDh5CSkoLnz5+rLBs9erSaoiIiIiKisiS7RDYyMhLDhw+Hjo4OzM3NoVAopGUKhYKJLBEREdF7QnaJ7NSpUzF16lRMnDgRGhqymz2MiIiIiEqJ7DLBzMxM9O3bl0ksERER0XtOdtmgv78/fvrpJ3WHQURERERqJruhBREREejRowd27twJV1dXaGtrqyyfM2eOmiIjIiIiorIku0Q2PDwcu3btgouLCwDku9iLiIiIiN4Psktk58yZg5UrV8LPz0/doRARERGRGslujKxSqUSrVq3UHQYRERERqZnsEtkxY8bg+++/V3cYRERERKRmshtacOzYMezbtw9//PEH6tatm+9iry1btqgpMiIiIiIqS7JLZE1MTODj46PuMIiIiIhIzWSXyEZGRqo7BCIiIiIqB2Q3RpaIiIiICJBhj6yTk1OR88Veu3atDKMhIiIiInWRXSIbEBCg8vzZs2c4ffo0du7ciXHjxqknKCIiIiIqc7JLZMeMGVNg+Y8//ogTJ06UqK0DBw5g1qxZOHnyJO7cuYPo6Gj07NlTWi6EQFhYGJYuXYq0tDQ0a9YMP/74I+rWrSvVyc7ORnBwMDZs2ICsrCx06NABCxcuRJUqVd5o/4iIiIioeCrMGNmuXbvil19+KdE6jx8/RoMGDfDDDz8UuHzmzJmYM2cOfvjhBxw/fhw2Njbo1KkTHj58KNUJCAhAdHQ0Nm7ciIMHD+LRo0fo0aMHcnNz32p/iIiIiKhosuuRLczPP/8MMzOzEq3TtWtXdO3atcBlQgjMmzcPkyZNkqb7WrVqFaytrbF+/XoMGzYM6enpWLFiBdasWYOOHTsCANauXQt7e3v8+eef8PT0fLudIiIiIqJCyS6RdXNzU7nYSwiB5ORkpKamYuHChaW2nYSEBCQnJ6Nz585SmVKphIeHBw4fPoxhw4bh5MmTePbsmUodW1tb1KtXD4cPHy40kc3OzkZ2drb0PCMjo9TiJiIiInpfyC6RfXkMKwBoaGjA0tISbdu2Ra1atUptO8nJyQAAa2trlXJra2tcv35dqqOjowNTU9N8dfLWL0hERATCwsJKLVYiIiKi95HsEtmQkJAy3d6rU30JIYqc/qs4dSZOnIigoCDpeUZGBuzt7d8uUCIiIqL3TIW52Ku02djYAEC+ntWUlBSpl9bGxgZPnz5FWlpaoXUKolQqYWRkpPIgIiIiopKRTSKroaEBTU3NIh9aWqXXwezk5AQbGxvs2bNHKnv69CliYmLQsmVLAEDjxo2hra2tUufOnTuIi4uT6hARERHRuyGboQXR0dGFLjt8+DC+//57CCFK1OajR49w5coV6XlCQgLOnDkDMzMzVK1aFQEBAQgPD4ezszOcnZ0RHh4OfX199O/fHwBgbGwMf39/jB07Fubm5jAzM0NwcDBcXV2lWQyIiIiI6N2QTSLr7e2dr+zff//FxIkT8fvvv2PAgAGYNm1aido8ceIE2rVrJz3PG7fq6+uLqKgojB8/HllZWRgxYoR0Q4Tdu3fD0NBQWmfu3LnQ0tJC7969pRsiREVFQVNT8w33lIiIiIiKQyFK2o1ZDty+fRshISFYtWoVPD09ERERgXr16qk7rDeWkZEBY2NjpKenc7wslRt9tqWUepubuluVeptEROrC72/1k80YWQBIT0/HhAkTUKNGDZw/fx579+7F77//LuskloiIiIjejGyGFsycORMzZsyAjY0NNmzYUOBQAyIiIiJ6f8hmaIGGhgb09PTQsWPHIsefbtmypQyjKh38aYLKIw4tICIqGr+/1U82PbKfffbZa29EQERERETvD9kkslFRUeoOgajUnPx6Y6m21zi8b6m2R1QaFGN/L9X2xGyvUm2PiORPVhd7ERERERHlYSJLRERERLLERJaIiIiIZImJLBERERHJEhNZIiIiIpIlJrJEREREJEtMZImIiIhIlpjIEhEREZEsMZElIiIiIlliIktEREREssREloiIiIhkiYksEREREckSE1kiIiIikiUmskREREQkS0xkiYiIiEiWtNQdAFFpUkQGl3qb4vP/lXqbRERE9PbYI0tEREREssREloiIiIhkiYksEREREckSE1kiIiIikiUmskREREQkS5y1gKgCSL/V4R20uuEdtElEJfUuzm9ju72l3iaROrBHloiIiIhkiYksEREREckShxYQEdF7K95XUept1lklSr1NIioYe2SJiIiISJaYyBIRERGRLDGRJSIiIiJZYiJLRERERLLERJaIiIiIZImJLBERERHJEhNZIiIiIpIlJrJEREREJEtMZImIiIhIlpjIEhEREZEsMZElIiIiIlliIktEREREssRE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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dataforbar=data.groupby(['Survived','Sex','Pclass']).count().unstack().unstack().loc[:,'Fare']\n", "\n", "figure, axes = plt.subplots()\n", "dataforbar.plot.bar(ax=axes,rot=0)\n", "axes.set_ylabel(\"Number of Passengers\")\n", "axes.set_title('Number of Passengers that survived and died broken out by ticket class and sex')\n", "axes.set_xlabel(\"0 = Died, 1=Survived\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(04:groupby-3-columns:try_1)= \n", ":::{admonition} Try this... \n", "Replot the above but only using **one .unstack()** rather than two. Notice how the labels and plot change relative to the groupby order: 'Survived','Sex','Pclass'. The last column in this list, 'Pclass' becomes the legend. The x-axis contains combinations of the first two, 'Survived' and 'Sex' with 'Survived' being ordered first so we get (died, female), (died,male), (survived, female), and (survived, male). \n", ":::" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A pie chart might be a good way to represent our data. See the [pandas documentation](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.pie.html) for more information and examples of the pie chart. " ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    Pclass123
    Sexfemalemalefemalemalefemalemale
    Survived
    037769172300
    1914570177247
    \n", "
    " ], "text/plain": [ "Pclass 1 2 3 \n", "Sex female male female male female male\n", "Survived \n", "0 3 77 6 91 72 300\n", "1 91 45 70 17 72 47" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dataforpie=data.groupby(['Survived','Sex','Pclass']).count().unstack().unstack().loc[:,'Fare']\n", "dataforpie" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The pie chart uses only 1 column of data but the data we want to plot is represented above in rows so let's exchange the x and y axes i.e., transpose the DataFrame. " ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    Survived01
    PclassSex
    1female391
    male7745
    2female670
    male9117
    3female7272
    male30047
    \n", "
    " ], "text/plain": [ "Survived 0 1\n", "Pclass Sex \n", "1 female 3 91\n", " male 77 45\n", "2 female 6 70\n", " male 91 17\n", "3 female 72 72\n", " male 300 47" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dataforpie.transpose()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also could have changed the order of the groupby and used only one unstack to get the same data form. " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    Survived01
    PclassSex
    1female391
    male7745
    2female670
    male9117
    3female7272
    male30047
    \n", "
    " ], "text/plain": [ "Survived 0 1\n", "Pclass Sex \n", "1 female 3 91\n", " male 77 45\n", "2 female 6 70\n", " male 91 17\n", "3 female 72 72\n", " male 300 47" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby(['Pclass','Sex','Survived']).count().unstack().loc[:,'Fare']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can make a pie chart on the percentages of various classes of people that died (0) or survived (1). Let's look at those that survived. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using pandas plot: " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dataforpie=data.groupby(['Pclass','Sex','Survived']).count().unstack().loc[:,'Fare']\n", "fig1, ax0 = plt.subplots()\n", "dataforpie.plot.pie(ax=ax0, y=1) # y = column_index \"1\" is the second column = survived\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Adding some formatting changes:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoUAAAGZCAYAAAD/1UupAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACn+klEQVR4nOzdd3iTVfsH8O+Tvdqmu3S3UCijQNlDZMmQIYiIgiKI4Hj1Bw6cyEbR19etCCJDARkuRBSQ2bIpm1J2J917ppnn90doaEi66EiT3p/r6gU9ecadffec+5yHY4wxEEIIIYSQFo1n6wAIIYQQQojtUVJICCGEEEIoKSSEEEIIIZQUEkIIIYQQUFJICCGEEEJASSEhhBBCCAElhYQQQgghBJQUEkIIIYQQUFJICCGEEEJQx6Rw/fr14DjO9CMQCODv749nn30WqampjRVjk4mLi8OiRYuQmJho61BqtGjRInAch5ycnEY9z88//4wvvvjC6m0cx2HRokV1Ot6hQ4fAcRx+/fXX+gcHYMWKFVi/fn2DHKvCoEGDMGjQoAY9pj2peJ/bw/ugrr7++mu0adMGIpEIHMehoKDA1iGRWqrqsygxMREcx+F///tfg53Lnr4LrLHle3j69OkIDg6u1bZarRbh4eH46KOP6nSOiu+RQ4cO1T1AB/Pggw/i1VdfbbDj3VdP4bp163D8+HHs3bsXs2bNwubNmzFgwACUlpY2WGC2EBcXh8WLF9vtB0FjqC4pPH78OGbOnNm0Ad2jMZJC4pjOnz+P2bNnY/DgwThw4ACOHz8OJycnW4dFaqm6z6KGZu/fBaNHj8bx48fRqlUrW4dSrRUrViA/Px//93//Z+tQ7NbSpUuxYsUKXLt2rUGOJ7ifnTp16oQePXoAAAYPHgy9Xo+lS5di+/bteOqpp+oVUFlZGWQyWb2OQZpGnz59bB0CIbV2+fJlAMCsWbPQq1cvG0fT8tBn+/3TarWm0bna8PT0hKenZyNHVT86nQ6ffPIJZsyYAblcbutw7NbAgQPRrl07fPrpp/j+++/rfbwGqSmsSA6SkpIAAIwxrFixAl27doVUKoWrqysmTpyI+Ph4s/0GDRqETp06ITo6Gv369YNMJsOMGTMAAAUFBXjjjTcQGhoKsVgMLy8vjBo1ClevXjXtr9FosGzZMoSHh0MsFsPT0xPPPvsssrOzzc4THByMMWPGYPfu3ejWrRukUinCw8Oxdu1a0zbr16/H448/DsCY6FYMkVf0Qu3duxfjxo2Dv78/JBIJ2rRpgxdeeMHq8O2ff/6Jzp07QywWIzQ0FF9++aVpuLey2j5O1UlJScGECRPg7OwMFxcXPP3002b3/7nnnoObmxvKysos9h0yZAg6duxY5bEHDRqEv//+G0lJSWZlAxWsDR+npqbi+eefR0BAAEQiEXx9fTFx4kRkZmZWeZ6ioiKMGDEC3t7eOHXqFIDaPbfBwcG4fPkyoqKiTLHVNGxhMBjw9ddfmx5zpVKJPn36YMeOHdXut3jxYvTu3Rtubm5wdnZGt27dsGbNGjDGzLY7cOAABg0aBHd3d0ilUgQGBuKxxx4ze/y/++47dOnSBQqFAk5OTggPD8d7771X7fnrEkNtXu8VTpw4gf79+0MikcDX1xfvvvsutFptjbEAQHx8PJ588kn4+vpCLBbD29sbQ4cOxfnz582227p1K/r27Qu5XA6FQoERI0bg3LlzptuPHDkCoVCIuXPnmu1XMQS2Zs2aGmNZu3YtunTpAolEAjc3Nzz66KO4cuWK6fZBgwbh6aefBgD07t0bHMdh+vTpVR6v4v167ty5at9fFfdv+PDhaNWqFaRSKdq3b4933nnHYuSkNo9XbV4/Dfm5V+HIkSPo27cvJBIJ/Pz8MH/+fPzwww9WhyBrej4B4xCiQqHApUuXMHz4cDg5OWHo0KEAgHPnzmHMmDHw8vKCWCyGr68vRo8ejdu3b1f5fNT0WVThs88+Q0hICBQKBfr27YsTJ06Y3X769Gk8+eSTCA4OhlQqRXBwMCZPnmz67gJq/i6wJjs72/S5V/Gc9O/fH/v27TNtExwcbPU1d2+5SsXQ6IYNG/DGG2/Az88PYrEYly9frvL9sGvXLnAcZ/ocu3f4+NVXX4VcLkdRUZHFvk888QS8vb3N3ve1eY4rztOuXTuIxWK0b98eP/30U5WP0b127NiB1NRUTJ061eK2q1evYvLkyfD29oZYLEZgYCCeeeYZqNXqKo9Xm+cWMP5xMnfuXISEhJg+L3r06IHNmzebtqntZ9u9avM6AIB9+/Zh6NChcHZ2hkwmQ//+/bF//37T7Tdu3ICzs7PpdVjhwIED4PP5mD9/vln71KlT8fPPP6O4uLja+GqF1cG6desYABYTE2PW/uWXXzIA7Pvvv2eMMTZr1iwmFArZG2+8wXbv3s1+/vlnFh4ezry9vVlGRoZpv4EDBzI3NzcWEBDAvv76a3bw4EEWFRXFioqKWMeOHZlcLmdLlixhe/bsYb/99hubM2cOO3DgAGOMMb1ez0aOHMnkcjlbvHgx27t3L/vhhx+Yn58f69ChAysrKzOdJygoiPn7+7MOHTqwn376ie3Zs4c9/vjjDACLiopijDGWlZXFPvzwQwaAffvtt+z48ePs+PHjLCsrizHG2HfffceWL1/OduzYwaKiotiPP/7IunTpwtq1a8c0Go3pXLt27WI8Ho8NGjSI/fHHH+yXX35hvXv3ZsHBwezeh7u2j5M1CxcuZABYUFAQe/PNN9mePXvYZ599xuRyOYuMjDTFdOHCBQaArV692mz/y5cvm+5rVS5fvsz69+/PfHx8TI/H8ePHTbcDYAsXLjT9fvv2bdaqVSvm4eHBPvvsM7Zv3z62detWNmPGDHblyhXGGGMHDx5kANgvv/zCGGMsJSWFRUREsHbt2rFbt27V6bk9e/YsCw0NZZGRkabYzp49W+3jNnXqVMZxHJs5cyb7888/2a5du9gHH3zAvvzyS9M2AwcOZAMHDjTbb/r06WzNmjVs7969bO/evWzp0qVMKpWyxYsXm7ZJSEhgEomEDRs2jG3fvp0dOnSIbdq0iU2dOpXl5+czxhjbvHkzA8D+7//+j/37779s3759bOXKlWz27NnVxl3bGBir3eudMePzK5PJWIcOHdjmzZvZn3/+yUaMGMECAwMZAJaQkFBtPO3atWNt2rRhGzZsYFFRUey3335jb7zxBjt48KBpmw8++IBxHMdmzJjBdu7cyX7//XfWt29fJpfL2eXLl03bffTRRwwA+/PPPxljjMXGxjKZTMaefvrpGh+Xivft5MmT2d9//81++uknFhoaylxcXNj169dN9/X9999nANi6devY8ePH2c2bN6s8Zm3fX4wxtnTpUvb555+zv//+mx06dIitXLmShYSEsMGDB9fp8arN66ehP/cYM35GSCQS1rlzZ7Zlyxa2Y8cONmrUKNNnVuXXQW2fz2nTpjGhUMiCg4PZ8uXL2f79+9mePXtYSUkJc3d3Zz169GDbtm1jUVFRbOvWrezFF19kcXFxVT4f1X0WJSQkMAAsODiYjRw5km3fvp1t376dRUREMFdXV1ZQUGA6zi+//MIWLFjA/vjjDxYVFcW2bNnCBg4cyDw9PVl2djZjrObvAmtGjBjBPD092ffff88OHTrEtm/fzhYsWMC2bNli9nxMmzbNYt97P28qPiP9/PzYxIkT2Y4dO9jOnTtZbm4ui4yMZP3797c4xqRJk5iXlxfTarWMsbvf1RXPXVXfA/n5+UwsFrPXX3/d1Fbb57jiHOPGjWN//fUX27hxI2vTpg0LCAhgQUFBVT5WFWbMmMG8vLws2s+fP88UCgULDg5mK1euZPv372cbN25kkyZNYkVFRWaPUeXPmto8t4wx9sILLzCZTMY+++wzdvDgQbZz50720Ucfsa+//tq0TW0+26ypzetgw4YNjOM4Nn78ePb777+zv/76i40ZM4bx+Xy2b98+03ZbtmxhAEzfTenp6czb25sNHDiQ6XQ6s/OePHmSAWA7duyo8XGvyX0lhSdOnGBarZYVFxeznTt3Mk9PT+bk5MQyMjLY8ePHGQD26aefmu2bkpLCpFIpe+utt0xtAwcOZADY/v37zbZdsmQJA8D27t1bZSwVX66//fabWXtMTAwDwFasWGFqCwoKYhKJhCUlJZnaVCoVc3NzYy+88IKp7ZdffrF4oVljMBiYVqtlSUlJZl9kjDHWs2dPFhAQwNRqtamtuLiYubu7myWFdXmcrKn40nrttdfM2jdt2sQAsI0bN5raBg4cyLp27Wq23UsvvcScnZ1ZcXFxtecZPXp0lW/we5PCGTNmMKFQWO2He+Wk8Ny5c8zX15cNGDCA5ebmmrapy3PbsWNHiwSuKtHR0QwAmzdvXrXbWUsKK9Pr9Uyr1bIlS5Ywd3d3ZjAYGGOM/frrrwwAO3/+fJX7vvLKK0ypVNYq3upUFQNjtX+9P/HEE0wqlZr9AaLT6Vh4eHiNSWFOTg4DwL744osqt0lOTmYCgYD93//9n1l7cXEx8/HxYZMmTTK1GQwGNmrUKKZUKllsbCzr0KEDCw8PZyUlJdU+Dvn5+UwqlbJRo0ZZnFssFrMpU6aY2qr6o9aaury/Kqv4bIiKimIA2IULFxhjtXu8avP6aYzPvccff5zJ5XKzL069Xs86dOhg9jqoy/M5bdo0BoCtXbvWbNvTp08zAGz79u1V3seqVPVZVJEURkREmH1Znjp1igFgmzdvrvKYOp2OlZSUMLlcbvaHYW2/CyooFAr26quvVrtNXZPCBx980GLbr776igFg165dM7Xl5eUxsVjM3njjDVPbvUkhY4x169aN9evXz+x4K1asYADYpUuXGGO1f471ej3z9fVl3bp1M/vsSUxMZEKhsFZJYfv27dnIkSMt2ocMGcKUSmW1Sbi1pPBeVT23nTp1YuPHj69yv9q8V6tS0+ugtLSUubm5sbFjx5q16/V61qVLF9arVy+z9pdeeomJRCJ2/PhxNmTIEObl5cXS0tIsjqvRaBjHceztt9+uc8z3uq/h4z59+kAoFMLJyQljxoyBj48Pdu3aBW9vb+zcuRMcx+Hpp5+GTqcz/fj4+KBLly4Ws4VcXV0xZMgQs7Zdu3ahbdu2eOihh6qMYefOnVAqlRg7dqzZebp27QofHx+L83Tt2hWBgYGm3yUSCdq2bWvRtVyVrKwsvPjiiwgICIBAIIBQKERQUBAAmIapSktLcfr0aYwfPx4ikci0r0KhwNixYy3ir8vjVJV7azgnTZoEgUCAgwcPmtrmzJmD8+fP4+jRowCMw7UbNmzAtGnToFAoanWe2ti1axcGDx6M9u3b17jtnj17MGDAADz44IPYu3cv3NzcTLfV9bmtS3wA8PLLL9d53wMHDuChhx6Ci4sL+Hw+hEIhFixYgNzcXGRlZQEwvsZEIhGef/55/Pjjj1bLAHr16oWCggJMnjwZf/75Z51mj9cmhgq1eb0fPHgQQ4cOhbe3t6mNz+fjiSeeqDEWNzc3tG7dGp988gk+++wznDt3DgaDwWybPXv2QKfT4ZlnnjF7HiUSCQYOHGj2PHIch59++glOTk7o0aMHEhISsG3bthprjY4fPw6VSmUxLBcQEIAhQ4aYDcncj9q8v+Lj4zFlyhT4+PiYnpeBAwcCuPvZUJvHqzavn8b43IuKisKQIUPg4eFhauPxeJg0aZLZseryfFZ47LHHzH5v06YNXF1d8fbbb2PlypWIi4uz2Od+jR49Gnw+3/R7586dAcDsvpaUlODtt99GmzZtIBAIIBAIoFAoUFpaalZuUFe9evXC+vXrsWzZMpw4caLWJRjVufexA4yvR7FYbDaUvXnzZqjVajz77LPVHu/ZZ5/FsWPHzCYkrFu3Dj179kSnTp0A1P45vnbtGtLS0jBlyhSzYfygoCD069evVvcvLS0NXl5eZm1lZWWIiorCpEmT6lwTWdvntlevXti1axfeeecdHDp0CCqVyuw4tXmvVqWm18GxY8eQl5eHadOmmT2+BoMBI0eORExMjFnZyeeff46OHTti8ODBOHToEDZu3Gh18pBQKIRSqWyQVWDuKyn86aefEBMTg3PnziEtLQ0XL15E//79AQCZmZlgjMHb2xtCodDs58SJExZfgtbuYHZ2Nvz9/auNITMzEwUFBRCJRBbnycjIsDiPu7u7xTHEYrHFC8Iag8GA4cOH4/fff8dbb72F/fv349SpU6Z6lYpj5Ofnm+77ve5tq+vjVBUfHx+z3wUCAdzd3ZGbm2tqGzduHIKDg/Htt98CMNaBlJaW3ldyVJ3aPG8Vtm/fDpVKhZdeeglisdjstro+t3WJj8/nWzxmNTl16hSGDx8OAFi9ejWOHj2KmJgYzJs3D8Dd579169bYt28fvLy88PLLL6N169Zo3bo1vvzyS9Oxpk6dirVr1yIpKQmPPfYYvLy80Lt3b+zdu7dBYqhQm9d7bm6u1ceiNo8Px3HYv38/RowYgf/+97/o1q0bPD09MXv2bFNdS0Udac+ePS2ex61bt1p9jz7yyCMoLy/HyJEjERERUWMcFa9za58jvr6+Zu+D+1HT+6ukpAQDBgzAyZMnsWzZMhw6dAgxMTH4/fffAdx9XmrzeNXm9dMYn3u5ubm1/swCav98ymQyODs7m7W5uLggKioKXbt2xXvvvYeOHTvC19cXCxcurHcide99rfhcqXxfp0yZgm+++QYzZ87Enj17cOrUKcTExMDT07NW3wVV2bp1K6ZNm4YffvgBffv2hZubG5555hlkZGTc9zGtvabd3NzwyCOP4KeffoJerwdg/Dzv1atXtfXhgGVCGRcXh5iYGLNksrbPccXr/34/PwDj8yKRSMza8vPzodfra/09Ulltn9uvvvoKb7/9NrZv347BgwfDzc0N48ePx40bNwDU7r1alZpeBxWP78SJEy0e348//hiMMeTl5ZmOJxaLMWXKFJSXl6Nr164YNmxYleeWSCT1eg1XuK/Zx+3btzfNPr6Xh4cHOI7D4cOHLb7sAVi0WSsW9vT0rLbouOI87u7u2L17t9XbG3KpidjYWFy4cAHr16/HtGnTTO03b940287V1RUcx1mdVHHvh0NdH6eqZGRkwM/Pz/S7TqdDbm6u2Qckj8fDyy+/jPfeew+ffvopVqxYgaFDh6Jdu3a1Okdt1eZ5q/D5559j69atePjhh/HHH3+YEh6g8Z5bT09P6PV6ZGRk1Gmphi1btkAoFGLnzp1mH2Lbt2+32HbAgAEYMGAA9Ho9Tp8+ja+//hqvvvoqvL298eSTTwIw/sX+7LPPorS0FNHR0Vi4cCHGjBmD69evm3qf6xNDbbm7u1v90qrtF1lQUJCp6P369evYtm0bFi1aBI1Gg5UrV5p6nn799dcq71dle/fuxXfffYdevXrhjz/+wG+//Wa1t+Te+wAA6enpFrelpaWZ9X7dj5reXwcOHEBaWhoOHTpk6h0EYHX9w5oeL6Dm109jvDfc3d1r/ZkF1P75tPbZDgARERHYsmULGGO4ePEi1q9fjyVLlkAqleKdd96pc/y1VVhYiJ07d2LhwoVm51Gr1WZfxPfDw8MDX3zxBb744gskJydjx44deOedd5CVlWV6riQSidWJEjk5OVZfp1U9fs8++yx++eUX7N27F4GBgYiJicF3331XY4yurq4YN24cfvrpJyxbtgzr1q2DRCLB5MmTze4HUPNzXPH6r8/nh4eHh8Xj7ubmBj6fX+vvkQp1eW7lcjkWL16MxYsXIzMz09RrOHbsWNNE1tq8V6u6T9W9Dioe36+//rrK1Tsq/zEWGxuLBQsWoGfPnoiJicFnn32G119/3ep++fn59f68A9AwE00qO3LkCAPAtm7dWuPxBg4cyDp27GjRXlFTeG+tYWUbN2401TfWJCgoiI0ePdrq+SvXcuzYsYMBYP/884/ZdhcvXrRamzJ37lyLurra1hTW5XGypqaapw0bNpi15+fnM7lczgYPHlynmp4JEyZYLQZmrOqawqtXr1Z5vMo1hRqNhk2aNImJxWKzeOry3Hbr1s2iDqMqFTWF8+fPr3a7e18Xr7/+OlMoFGaTC8rKymo1IaOgoIABYG+++WaV22zfvp0BYH///XeV29Qlhtq+3utTU1iVrl27sp49ezLGjLVeAoGAffzxxzXul5aWxry8vNjgwYOZTqdjjzzyCHNxcWHx8fHV7ldRU/jII4+YtaekpDCxWMyeeuopU1tD1hRWvL8qPjMqT8BijLGJEyeaJrVUp/LjZc29r5/G+NyrbU1hXZ7PadOmMblcXuN2FZRKJXv88cer3aaqz6KKmsJPPvnE4rbKn1GFhYUMAFu+fLnZNt988w0DYFbvV9V3QV2MHz+eeXp6mn4fMWIE69Chg9k2165dYwKBwGpNYcVkvHvpdDrm5+fHJk2axObOncskEonZZBrGrNcUMmacCIk7ExJ8fHzY5MmTzW6v7XOs1+tZq1atWPfu3e+7pnDIkCEsMjLSarurq6vZ6/Fe99YU1uW5tebVV19lAFhpaWmV29T0Xq1K5ddBcXExUyqV7KWXXqpxv5KSEhYeHs7at2/PSkpK2CuvvMKEQqHV935qaqrZpJT6uK+ewur0798fzz//PJ599lmcPn0aDz74IORyOdLT03HkyBFERETgpZdeqvYYr776KrZu3Ypx48bhnXfeQa9evaBSqRAVFYUxY8Zg8ODBePLJJ7Fp0yaMGjUKc+bMQa9evSAUCnH79m0cPHgQ48aNw6OPPlqn2CvqKr7//ns4OTlBIpEgJCQE4eHhaN26Nd555x0wxuDm5oa//vrL6pDfkiVLMHr0aIwYMQJz5syBXq/HJ598AoVCYfYXS0M8TgDw+++/QyAQYNiwYbh8+TLmz5+PLl26WNQDKZVKPPPMM/juu+8QFBRkUeNYlYiICPz+++/47rvv0L17d/B4vCp7iZcsWYJdu3bhwQcfxHvvvYeIiAgUFBRg9+7deP311xEeHm62vVAoxObNmzFz5kxMnDgRP/30EyZPnlyn57ai12Hr1q0IDQ2FRCKpcthxwIABmDp1KpYtW4bMzEyMGTMGYrEY586dg0wmq3IB1dGjR+Ozzz7DlClT8PzzzyM3Nxf/+9//LHpzV65ciQMHDmD06NEIDAxEeXm5afmPivrYWbNmQSqVon///mjVqhUyMjKwfPlyuLi4oGfPnlU+D7WNoS7ef/997NixA0OGDMGCBQsgk8nw7bff1moR+osXL+KVV17B448/jrCwMIhEIhw4cAAXL140/aUeHByMJUuWYN68eYiPj8fIkSPh6uqKzMxMnDp1yvQXu16vx+TJk8FxHH7++Wfw+XysX78eXbt2xRNPPIEjR46Y1ehWplQqMX/+fLz33nt45plnMHnyZOTm5mLx4sWQSCRYuHDhfT8+QM3vr379+sHV1RUvvvgiFi5cCKFQiE2bNuHChQt1frxq8/ppjM+9efPm4a+//sLQoUMxb948SKVSrFy50vQ64PGMVUa1fT6rs3PnTqxYsQLjx49HaGgoGGP4/fffUVBQUO3QGFC3zyJrnJ2d8eCDD+KTTz6Bh4cHgoODERUVhTVr1kCpVJptW9V3gbXh+MLCQgwePBhTpkxBeHg4nJycEBMTg927d2PChAmm7aZOnYqnn34a//nPf/DYY48hKSkJ//3vf+tcO8fn8/HMM8/gs88+g7OzMyZMmAAXF5da7Tt8+HD4+/vjP//5DzIyMizqEGv7HPN4PCxduhQzZ87Eo48+ilmzZqGgoACLFi2q9fDxoEGDsGTJEov1Kz/77DM88MAD6N27N9555x20adMGmZmZ2LFjB1atWmW1N7wuz23v3r0xZswYdO7cGa6urrhy5Qo2bNiAvn37QiaT1eq9ChiH7Z999lmsW7cO06dPr9XrQKFQ4Ouvv8a0adOQl5eHiRMnwsvLC9nZ2bhw4QKys7NNvb4vvvgikpOTTY/7p59+iuPHj+PJJ5/EuXPnzO5XRSnb4MGDa/XYV6suGWRd/tJeu3Yt6927N5PL5UwqlbLWrVuzZ555hp0+fdq0TVU9hYwZewDmzJnDAgMDmVAoZF5eXmz06NFmvVBarZb973//Y126dGESiYQpFAoWHh7OXnjhBXbjxg3TdrX9i5kxxr744gsWEhLC+Hy+2V/6cXFxbNiwYczJyYm5urqyxx9/nCUnJ1v0ljHG2B9//MEiIiKYSCRigYGB7KOPPmKzZ89mrq6u9/U4WVPRk3HmzBk2duxYplAomJOTE5s8eTLLzMy0us+hQ4cYAPbRRx9Ve+zK8vLy2MSJE5lSqWQcx5n1dlq77ykpKWzGjBnMx8eHCYVC5uvryyZNmmSKydpfwQaDgc2ePZvxeDzTkgm1fW4TExPZ8OHDmZOTk2kJkero9Xr2+eefs06dOjGRSMRcXFxY37592V9//WXaxtrrYu3ataxdu3ZMLBaz0NBQtnz5crZmzRqzv8aPHz/OHn30URYUFMTEYjFzd3dnAwcONFsm4Mcff2SDBw9m3t7eTCQSmR6fixcv1vhc1CYGxur2ej969Cjr06cPE4vFzMfHh7355pvs+++/r7GnMDMzk02fPp2Fh4czuVzOFAoF69y5M/v8888tlkvYvn07Gzx4MHN2dmZisZgFBQWxiRMnmpZfmDdvHuPxeBYjA8eOHWMCgYDNmTOnxsfmhx9+YJ07dzY9p+PGjTNbPoOx++sprM3769ixY6xv375MJpMxT09PNnPmTHb27Fmzz4/aPF61ef0w1jife4cPH2a9e/c2ex18/PHHDIBFL1RNzydjVfcUXr16lU2ePJm1bt2aSaVS5uLiwnr16sXWr19f43NS1WdRbXsKGTMum/XYY48xV1dX5uTkxEaOHMliY2Otzgyu6rvgXuXl5ezFF19knTt3Zs7OzkwqlbJ27dqxhQsXmvU8GQwG9t///peFhoYyiUTCevTowQ4cOFDl7OOqegoZY+z69esMQJWrdFTVU8gYY++99x4DwAICApher7d6/No8x4wZ33dhYWFMJBKxtm3bsrVr17Jp06bVqqfw5s2bjOM4tm3bNovb4uLi2OOPP87c3d1N36PTp09n5eXljDHrs49r+9y+8847rEePHszV1dX0Wfraa6+xnJwcxljtP9u+/vprBoDt3r2bMVb71wFjjEVFRbHRo0czNzc3JhQKmZ+fHxs9erTpOV+9erXV19zNmzeZs7OzxezpqVOnsoiIiBof89rgGLtn5VvS4LRaLbp27Qo/Pz/8+++/NovjjTfewHfffYeUlBSrf/ESQowWLVqExYsXIzs7u2HqdOzQ8OHDkZiYiOvXr9s6FOKgKmbRV6wMYU8mTZqEhIQExMTE2DSOoqIi+Pr64vPPP8esWbPqfbwGHz4mxquIDBs2zDQ8uHLlSly5csVsFmFTOnHiBK5fv44VK1bghRdeoISQEGLm9ddfR2RkJAICApCXl4dNmzZh7969tbqaDCH3a/ny5YiMjERMTEy15TPNDWPMtESMrX3++ecIDAyscUmi2qKksBEUFxdj7ty5yM7OhlAoRLdu3fDPP/9Uu+5iY6qolRgzZgyWLVtmkxgIIc2XXq/HggULkJGRAY7j0KFDB2zYsMF0aUBCGkOnTp2wbt26ei3dYwscx1msDWsrzs7OWL9+fa2vi10TGj4mhBBCCCH3t3g1IYQQQghxLJQUEkIIIYQQSgoJIYQQQgglhYQQQgghBJQUEkIIIYQQUFJICCGEEEJASSEhhBBCCAElhYQQQgghBJQUEkIIIYQQUFJICCGEEEJASSEhhBBCCAElhYQQQgghBJQUEkIIIYQQUFJICCGEEEJASSEhhBBCCAElhYQQQgghBJQUEkIIIYQQUFJICCGEEEJASSEhhBBCCAElhYQQQgghBJQUEkIIIYQQUFJICCGEEEJASSEhhBBCCAElhYQQQgghBJQUEkIIIYQQUFJICCGEEEJASSEhhBBCCAElhYQQQgghBJQUEkIIIYQQUFJICCGEEEIACGwdACGE1EaJWoesEjWKynUoVuss/i1W66DWGWBgDAYGtPOUY2afIFuHTQghdoOSQkKIzWn1BtzMKcX17FLcLlAhtagcqYXmP8VqXZ2OOaKdJyWFhBBSB5QUEkKaTKlah8uZxbiaVYIrmSV3/i3Grdwy6AzM1uERQkiLRkkhIaRR6A0Ml9KLcCq5AKeSC3AyOR9Xskqgp+SPEEKaJUoKCSENokStw6FbuTh0MwcnkwtwNrUQZRq9rcMi9ZSbm4v27dvj1KlTCA4OtnU4NVq0aBG2b9+O8+fP12r7rKwsdOzYEefPn4efn1/jBkdIM0dJISHkvuj0BpxKLsC+GznYez0bJ5PzodVTL6CjWb58OcaOHWtKCHNzc/HUU0/h4sWLyM3NhZeXF8aNG4cPP/wQzs7Otg32Pnh5eWHq1KlYuHAhfvjhB1uHQ4hNUVJICKm1zGI1tsem458rWTh0KxdF5XWb/EHsi0qlwpo1a/DPP/+Y2ng8HsaNG4dly5bB09MTN2/exMsvv4y8vDz8/PPPNoz2/j377LPo1asXPvnkE7i6uto6HEJshtYpJIRUKyVfhS+j4/Hgt0fhu/hfvPjrJey4nEkJYQuwa9cuCAQC9O3b19Tm6uqKl156CT169EBQUBCGDh2K//znPzh8+HCdjj19+nSMHz8eH374Iby9vaFUKrF48WLodDq8+eabcHNzg7+/P9auXWu239tvv422bdtCJpMhNDQU8+fPh1arrfZc69atQ/v27SGRSBAeHo4VK1aY3R4REQEfHx/88ccfdboPhDga6ikkhFiIzy3FrxfS8duldMSkFIDRqHCLFB0djR49elS7TVpaGn7//XcMHDiwzsc/cOAA/P39ER0djaNHj+K5557D8ePH8eCDD+LkyZPYunUrXnzxRQwbNgwBAQEAACcnJ6xfvx6+vr64dOkSZs2aBScnJ7z11ltWz7F69WosXLgQ33zzDSIjI3Hu3DnMmjULcrkc06ZNM23Xq1cvHD58GDNmzKjz/SDEUVBPISEEgHG5mPWnUvDgt0fR+sMDePvvKziVTAlhS5aYmAhfX1+rt02ePBkymQx+fn5wdna+r3o8Nzc3fPXVV2jXrh1mzJiBdu3aoaysDO+99x7CwsLw7rvvQiQS4ejRo6Z93n//ffTr1w/BwcEYO3Ys3njjDWzbtq3KcyxduhSffvopJkyYgJCQEEyYMAGvvfYaVq1aZbadn58fEhMT63wfCHEk1FNISAt3LCEPa0+lYNuFtDovEO0o4gu1+CehDDyOAweAxwFiPgeZgINUwINUyEHK5yAVcJAKOcgFPCjFPDiLHfvvapVKBYlEYvW2zz//HAsXLsS1a9fw3nvv4fXXX7cYlq1Jx44dwePdfQy9vb3RqVMn0+98Ph/u7u7Iysoytf3666/44osvcPPmTZSUlECn01U5wSU7OxspKSl47rnnMGvWLFO7TqeDi4uL2bZSqRRlZWV1ip8QR0NJISEtUG6pButOpWBtTDKuZJbYOhyby1UZcDhVXef9hDzAVcyDm5QPdwkPbhI+3CQ8eEj58JXz4SPnQ8DjGiHipuHh4YH8/Hyrt/n4+MDHxwfh4eFwd3fHgAEDMH/+fLRq1arWxxcKhWa/cxxntc1gMAAATpw4gSeffBKLFy/GiBEj4OLigi1btuDTTz+1evyK/VavXo3evXub3cbn881+z8vLg6enZ61jJ8QRUVJISAsSm16ELw8nYNPZ21BpDbYOx+5pDUCWyoAslfXHks8B3jI+/J0E8Ffw4a8QwM+JD1+5ACJ+808WIyMjsXHjxhq3Y3dqDNTquifWdXH06FEEBQVh3rx5prakpKQqt/f29oafnx/i4+Px1FNPVXvs2NhYDBo0qKFCJcQuUVJISAuw52oW/nfoFvbdyLF1KM1CYXEJSsrKwON44DgOBUWNUzipZ0BaqR5ppXqcqtTO54BAJwHaugoRphQizFUAH3nz+zgeMWIE3n33XeTn55uWavnnn3+QmZmJnj17QqFQIC4uDm+99Rb69+/f6Itbt2nTBsnJydiyZQt69uyJv//+u8YZw4sWLcLs2bPh7OyMhx9+GGq1GqdPn0Z+fj5ef/11AEBZWRnOnDmDDz/8sFHjJ6S5a36fQoSQBqHTG/DzuVT879AtXEovtnU4zYaqXI1vftyCzJw8cJyxt06tDATaDG6yGPQMSCjSIaFIhz1JKgCAk4hDmFKINkoh2rsJ0dZVaPOh54iICPTo0QPbtm3DCy+8AMBYe7d69Wq89tprUKvVCAgIwIQJE/DOO++Y7ctxHNatW4fp06c3WDzjxo3Da6+9hldeeQVqtRqjR4/G/PnzsWjRoir3mTlzJmQyGT755BO89dZbkMvliIiIwKuvvmra5s8//0RgYCAGDBjQYLESYo84xmhuISGORG9g2HjmNpbuvY5buS23cH5EO0/sfr6PRXtRSSmWfPk9eDwOCpkMAFAo88FtX8ttbUkq4NDBTYguniJ08RTZrCfxn3/+wdy5cxEbG2s2KaQ6iYmJCAsLQ1xcHMLCwho5wvrr1asXXn31VUyZMsXWoRBiU9RTSIiDMBgYtpxPxZJ/r+Nadqmtw2n2xCIR5DIpAEAjEds4GksqHcOZLA3OZGkAAN4yHjp7iNHFU4QIDxEkgqbpRRw1ahRu3LiB1NRU01qBNdm9ezeef/55u0gIs7KyMHHiREyePNnWoRBic9RTSIidY4zhlwvpWPzvNcTRTGKTmnoKpRIxlM5OAIB8iRduuEU2dYj3TcwHunqK0ddXjG5eYojtYNIKIaT5o55CQuzYvuvZeGNHHC6mF9k6FNKE1HrgZIYaJzPUEPM5dPMSoW8rMSK9xHYxq5kQ0jxRUkiIHbqVU4rXd1zGjsuZtg6F2Jhaz3A8XY3j6WpI+Bx6eIswOECKju5C00QaQgipDUoKCbEjxeU6LN17HV8ejodGT5UfxFy5nuFImhpH0tRoJedjcIAEg/ylcHHwK68QQhoGJYWE2AGDgWF9TAre/ecKsko0tg6H2IH0Uj1+vlqKrddK0cNbjIcCpYjwoN5DQkjVKCkkpJmLTS/CjK3nEZNSaOtQiB3Ss7v1h94yHoYHyTA0UAKpgHoPCSHmKCkkpJnS6AxYtu86Ptp/E1oDDRWT+sssM2DDlRL8eqMUQwMkeDhEBg8pv+YdCSEtAiWFhDRDJ5LyMf3ns7iW03IXnyaNR6Vj2Jmgwq5EFR7wk+CRUBn8nejrgJCWjj4FCGlGStU6vLPzMlYcS4bB1sEQh6dnQNTtckTfLkcPbxEmhMkR6iK0dViEEBuhpJCQZuJoQh6e/CkGt4toIglpWgxATKYGpzM16N1KjCfayuGroK8HQloaetcTYmN6A8OCf+Lw0aF4UOkgsSUG4ES6Gqcy1BjoL8HEMDnVHBLSglBSSIgNJeeX4dEfjuFshsrWoRBiYmDAwZRyHEktx/AgKca3kcNZRLOVCXF0lBQSYiMbTybgxd9jUaqzdSSEWKc1AH8nqHAgpRzjWsswNlQGAY/WOSTEUVFSSEgTU2n1mPbjcfxyJd/WoRBSKyodw5ZrpYi6XY7pHRXo6im2dUiEkEZASSEhTehWdjGGr4hGfBHNLSb2J71Uj+WnCtHTW4xpHRTwlFG9ISGOhJJCQprI72du4ZmtsSjVU20WsW8xmWpczFFjfGs5xobKIOTTkDIhjoC+nRxQbm4uvLy8kJiY2ODHXrRoEby9vcFxHLZv397gx6+LusYwd+5czJ49u/ECqgJjDHO3HMPjP1+mhJA4DLUe2Hq9FG8ezkNsDi2jRIgjoG8oB7R8+XKMHTsWwcHBprY5c+age/fuEIvF6Nq1630d98qVK1i8eDFWrVqF9PR0PPzwww0TcBN56623sG7dOiQkJDTZOYtKVRj8yd/4NCYXBlBvCnE86aV6LDtZgLWxxVDraU0lQuwZJYUORqVSYc2aNZg5c6ZZO2MMM2bMwBNPPHHfx7516xYAYNy4cfDx8YFYbF/F5l5eXhg+fDhWrlzZJOe7nJSJiA93IyqTviiJY2MA9iSp8GZ0Hq7mUa8hIfaKkkIHs2vXLggEAvTt29es/auvvsLLL7+M0NDQ+zruokWLMHbsWAAAj8cDx93t9Vq3bh3at28PiUSC8PBwrFixwnRbYmIiOI7Dtm3bMGDAAEilUvTs2RPXr19HTEwMevToAYVCgZEjRyI7O9u0X0xMDIYNGwYPDw+4uLhg4MCBOHv2bLUxpqam4oknnoCrqyvc3d0xbtw4iyH0Rx55BJs3b76vx6Au9py9jv7fHEVyOZXtkpYjs0yPRccL8FNcMTTUa0iI3aGk0MFER0ejR48eDX7cuXPnYt26dQCA9PR0pKenAwBWr16NefPm4YMPPsCVK1fw4YcfYv78+fjxxx/N9l+4cCHef/99nD17FgKBAJMnT8Zbb72FL7/8EocPH8atW7ewYMEC0/bFxcWYNm0aDh8+jBMnTiAsLAyjRo1CcXGx1fjKysowePBgKBQKREdH48iRI6ZkU6O523PRq1cvpKSkICkpqaEfIgDGHtmV/5zA+E2XUWiga8iSlofBuLbh24fzcCNfa+twCCF1QN0YDiYxMRG+vr4NflyFQgGlUgkA8PHxMbUvXboUn376KSZMmAAACAkJQVxcHFatWoVp06aZtps7dy5GjBgBwFjfOHnyZOzfvx/9+/cHADz33HNYv369afshQ4aYnX/VqlVwdXVFVFQUxowZYxHfli1bwOPx8MMPP5h6MdetWwelUolDhw5h+PDhAAA/Pz8AxscpKCioPg+JBbVag/k/78fnl9TQcfTWIi1bWqkeC4/n44l2cjwSKjMbXSCENE/0zeVgVCoVJBJJk5wrOzsbKSkpeO655zBr1ixTu06ng4uLi9m2nTt3Nv3f29sbABAREWHWlpWVZfo9KysLCxYswIEDB5CZmQm9Xo+ysjIkJydbjeXMmTO4efMmnJyczNrLy8tNtZAAIJVKARh7FhtSUXEJXly9C1tui8A4WruNEADQM+Dnq6W4mqfFy12coaBL5RHSrFFS6GA8PDyQn980V8owGIwLMK9evRq9e/c2u43PN0+MhMK7Q6kVPQb3tlUcDwCmT5+O7OxsfPHFFwgKCoJYLEbfvn3NhoLvjaV79+7YtGmTxW2enp6m/+fl5Vm01Vd2bj6mfLcb+/IVoAnGhFg6m6XBO0fyMCfSBWGuVFZBSHNFSaGDiYyMxMaNG5vkXN7e3vDz80N8fDyeeuqpBj324cOHsWLFCowaNQoAkJKSgpycnCq379atG7Zu3QovLy84OztXuV1sbCyEQiE6duzYIHEmp2Vg8qp9OFbiUvPGhLRg2SoDFh7Px1PtFRgdIrN1OIQQK6gv38GMGDECly9ftugtvHnzJs6fP4+MjAyoVCqcP38e58+fr7LnrbYWLVqE5cuX48svv8T169dx6dIlrFu3Dp999lm9jtumTRts2LABV65cwcmTJ/HUU0+Zhn6teeqpp+Dh4YFx48bh8OHDSEhIQFRUFObMmYPbt2+btjt8+LBpFnR9Xb2ViInf7qGEkJBa0jPgp7gSfHqmECodXeqRkOaGkkIHExERgR49emDbtm1m7TNnzkRkZCRWrVqF69evIzIyEpGRkUhLSzNtw3Gc2WSP2pg5cyZ++OEHrF+/HhERERg4cCDWr1+PkJCQet2PtWvXIj8/H5GRkZg6dSpmz54NLy+vKreXyWSIjo5GYGAgJkyYgPbt22PGjBlQqVRmPYebN282q3+8X6cvxmHK9wcQU+5W72MR0tKcylBj/rF8ZJXpbR0KIaQSjjFGi0k5mH/++Qdz585FbGwseLza5f2JiYkICwtDXFwcwsLCGjlC2/j777/x5ptv4uLFixAI7r9yIurkWfzfL2dwifnUvDGxmRHtPLH7+T4W7UUlpVjy5feQSsRQOhsnJuVLvHDDLbKpQ2zxXEQc5vZQoi3VGRLSLFBPoQMaNWoUXnjhBaSmptZ6n927d+P555932IQQAEpLS7Fu3br7TggZYzh4/DRe3kYJISENoVDDsOREPo6mlts6FEIIqKeQkFphjOHQiTOY/esZxKLh14EkDY96Cu3LY2EyTGqrsHUYhLRo1FNISA0qegjf/PUUJYSENJLfbpThy3OFdHk8QmyIkkJCqlGREC747RjOwN/W4RDi0I6lqfFRTAHKaWYyITZBSSEhVahICD/4LRrHEAJamZqQxnc5V4ulJwtQoqXEkJCmRkkhIVU4cvo8Pv3tIKLRGowSQkKazM0CHRYfz0dBOS1ZQ0hToqSQECvOXLqCr379FwfQBjrQtYwJaWrJxXosPF6AbFrLkJAmQ0khIfeIuxGPFVv/wr/aEJSD1k8jxFYyyvRYeDwfaSU6W4dCSItASSEhlSSlpmPV5j+wq9QbRVz9L4VHCKmf3HIDFh3Px+1iSgwJaWyUFBJyR1ZOHlb+/Dv25EqRzqPL1xHSXBRqGJadLEBGKSWGhDQmSgoJAVBcUorVW7djf1IprgkCbB0OIeQe+WoDlp0sQI6KagwJaSyUFJIWT6fTYcP2f7DvcjLOi9vZOhxCSBWyVcbEsEBNy9UQ0hgoKSQtGmMMf+6Lxq7jF3BW3hlaeksQ0qyll+rxwcl8lGgoMSSkodE3IGnRTpy7hD/+PYTzso4oMtBMY0LsQXKxHh+cKkAZLXBNSIOipJC0WLeSbmPD9n8Qx/ngtkFh63AIIXUQX6jD/84UQmegayUT0lAoKSQtUl5BIdb+sgNX87S4QNc0JsQuXc7VYuXFYluHQYjDoKSQtDhqtQbrf9uJCzeTcU7WCQa6hB0hdutwajm2XSuxdRiEOARKCkmLs/PgERw9cxG3XLugQC+wdTiEkHrKLU2CunSvrcMgxO7RNyJpUS5evYG/9h9GrnMwrmqojpAQe8YBmBh8GcOUy1BeIARf4AuBuKOtwyLEblFPIWkxcvMLsHH7LuRoOBzT+do6HEJIPYh4wEthuzFMuexOixZleQth0GXaNC5C7BklhaRF0Ov12PzXv7iemIJYWXtoGb30CbFXfF0ZZod+i67yH83amSEfpXnzwQwqG0VGiH2jb0bSIuw/FoPoU+dQ6hmOJI3E1uEQQu6TsDwbrwa+i7aKI1ZvN2hvoSz/IzBGS9UQUleUFBKHdyMhGb/s2g+e3AWHVR62DocQcp/kJdexpNPbaOeVVe12uvIj0JT80kRREeI4KCkkDk1VXo5NO3Yjv7AIZwStoaZhY0LsknfxEXzUZzHcFbUbGi4vWgu95nojR0WIY6FvSOLQdkefwMWrN6H2CsfNcho2JsTuMIaO5duwdMC3EAvqclk7LcryP6D6QkLqgJJC4rBuJqZg54HDULi6Y3+Jm63DIYTUEWfQ4iH+15jT54/72t+guw1V4bcNHBUhjouSQuKQ1GoNtv69F4XFJYgVBEFloJc6IfaEry3BVNclmNT5eL2Ooy3bBa0qqoGiIsSx0TclcUj7jp3C2cvXIG8VivOlMluHQwipA5EqE68Hv4sHQm42yPHK8j+j9QsJqQW6oglxOEmp6fhzbzRcXZzwb6kHGF3bmDSB7NjjuPrbt8i/dRHleZnoP28d/PqOMt0eu+kTpBzejrLsVPAEIri26YyIZ96Fe7vuVR7z4DuPIjv2mEV7qx4PYcCiTQCApIO/4uKPH0BfXoaQ4VPQZcZC03almcmImv8Ehn3xL4Qypwa8t41HUXIV70d+DDd5ecMdlJWgLH855B6fguP4DXdcQhwMJYXEoeh0Omz7ey9yCwrA/DohJU9k65BIC6ErL4MytCNChk3GsQ9nWNzu5BeKbi9+CLlPEPTqclz/cxWi5z+Bh1efgMTF+lJJ/eathUGnNf2uKcrDv/83BP4PjAUAqAtzcfrrN9Dz1S+h8AnC4cVPwTOiH3x7DgMAnFnxNjpPf99uEkKf4mjM77sSQkHDrzGo11yCungTJM7PNPixCXEUlBQSh3Ly/GWcjr0Kf39/rCtwtnU4pAVp1WMoWvUYWuXtQYMeM/u968wlSPj3ZxQmxEHS9UGr+4idXM1+T4n+A3yxFAF3ksKSjCQIZU4IfHA8AMCrc38UJV+Hb89hSDr0G3gCIfz7ja7HvWoizIDOmq14ZcCORj2NungDBOLudH1kQqpANYXEYRSXlOLPfVEQ8Pk4p/VAsZ6GiUjzpNdqcGv3BgjlzlCG1D5BSfj3ZwQ+OB4CiRyAsfdRp1Yh/9YlqIvzkXf9PJTBHaAuzsflTf9FtxeXN9ZdaDCcXosRgi/xSu/GTQiNDCjL/xDMUNoE5yLE/lBPIXEY+47F4GbSbfiFtMa2LIWtwyHEQtqpf3Hivy9Ap1ZB6uqNgUu3QeziXqt9c6+dRWHSVfSY/bmpTaRQotdrX+PUZ69ArylH0JBJ8Ok+GKe+mIM2Y55DaWYyjix9BgadFh2nvGnqYWwu+NoSPOP5IfoGJzTZOZk+A+VF6yBVvtJk5yTEXlBSSBxCakYWdh06Bg9XFxwrUULHaHIJaX68OvfHsK8OQFOUi/g9G3H841kY+ukuSJSeNe6bsPdnuASFw71dN7N2/36j4N/v7oSWrItHUZh0Fd1eXI5/nu+DPm+uhMTVC/tfHwnPTn1qda6mIFal47WwZQj1yGvyc2tK/4RI/jD4wtZNfm5CmjMaPiZ2jzGGHfujkZNfAImbN86XSm0dEiFWCSRyOPmGwD28B3rO+QIcT4CEf3+ucT9deRlSorcjZPhT1W6n16px9rt30OPlT1CSngCm18Eroh+c/dtA4dcaedfONtRdqRen4jgs7fquTRJCIwNUBV+BsYaf0EKIPaOkkNi9i1dv4Ojpiwj09UZ0kRMMtAQNsRsMeq2mxq1SjuyAXqtB0OCJ1W4Xt+Uz+HQfAtc2ncEMBjC9/u6ZdFowg76avZuGb/FBfNxvGZRStU3j0GtioS3bY9MYCGluaPiY2DWdTocd+6Kh0WmhkypxsYB6CYltaFWlKEm/WxtXkpmM/PhYiBRKiJ1dEbf1C/j1HgGJmzc0Rfm4+c86lOWkm9X5nfz0FUjdfdB5+vtmx07492f49RkJsXPVl2ssTLqKlOg/Mfzr/QAAJ/82AI+H+H83QeLqhaLbN+EaFtnA97oOmAFdNJvx8oCdtovhHuVFqyGUPgCORzXIhACUFBI7d/rSFcTeiEewXyvsKnSihaqJzeTfOI9D700w/X7hB+Mi0sFDn0D3l/+L4ts3cWz/NqiL8iBydoVbWFcM+fhPuASFm/Ypy04FxzMfwClOvYWcuJN4cOm2Ks/NGMPpb+ai66wlppnJArEUvV79Eme/excGrRrdXvwQMo9WDXmXa42n12Ck+GuMjzxtk/NXhRkKUF60FlLlbFuHQkizwDEqqiB2SqPRYtm3a3EjMRlK/9ZYmeEBUFJI7hjRzhO7n+9j0V5UUoolX34PqUQMpbNxUed8iRduuNmwF82BCTRFmO69HL2CEm0dShV4UHh+B76oja0DIcTmqKeQ2K2Yi3G4Gp+I0ABf7CxSwG4TwlO/ADeOA3mpgEAE+IYDA6YBbv7m2+WmAId/BG7HAowB7gHAmLcB52pmk5aXAEc3AjePG//v4g08OAMI7WG8/coh4PBPgLYc6DQMGPjs3X0LM4HfFgJPfQaI6frRpO7EZWl4o90yBLvn2zqUahigKvwKco8vwXF2+hlCSAOhpJDYJbVag13RxyDg81HOlyGuTGLrkO5fSizQdTTgHQYwPXBkgzEZm/4tILxzvwrSga3vAJ0eAvpNBkRyIC8FEAirPq5eC/y2AJApjcmjkwdQnAOI7tRdqoqAf78BRs4BXHyAP5YAAZ2A0J7G2/d/Bwx4hhJCcl+ci2OxoMcncJbWPJHG1vSay9CW7YFIPtLWoRBiU5QUErt04nwsrsUnoU2gPw4Wy+27lvCxxea/j5gDrJwKZN4E/DsZ245uBEK6Aw9W6slT+lR/3Nh9xt7BJ/8L8O+81Z297t5ekGFM+NoNMP4eEGHsjQztCVyJMu4T1q9+9420SAEl+/Buv7UQ8O2nOokmnRBCSSGxQ6rycuyOOgaxUAgmFONciYPNOFbfuQSXxFjvBmYA4k8DPR819iBmxRuHgXtNBNpY1syZ3DoFtGoHHFgJ3DoJSF2A8AeBno8BPD7g6gvo1EDWLcDJC8i8YeyJVBUDxzYBkz5o/PtKHAszoJtuI158YJetI6kz46STnyBV/sfWoRBiM7ROIbE7py7E4UbSbQT6+uBMiQwa5kAvY8aAqLWAXwfAI8jYVlYIaFXAqd+A4G7GnsU2fYAdy41Dz1UpzABuHAMMBuDRhUDvScCZP4GTvxhvlyiAEa8Cu74Afn4DaD/YePzotUDkGGNN4YY5wI+vANePNvY9J3aOp9dgjOhTvNjT/hLCCpqynTDobbWgNiG2Rz2FxK7odDrsPxYDkVAAvlCIU9lyW4fUsA6sAnISgSc+utvGDMZ/W/cGuo8z/t8rFEi7ClzcZawDtIYxQOYCDHvZ2DPo3QYozQNO/wH0fdK4TVhf40+FlEtAThIw5EVg7QvAqLmAXAn8PBfw72isTyTkHgJNIZ5r9SG6ByTbOpT6YWqoS7ZB6vKirSMhxCYcqIuFtASXrt3CjYRk+Pt44XKZBEV6vq1DajgHVhmHfB9fZpwUUkHqbEzq3APMt3fzB4qzqz6e3BVw9TPua9onACjNN05CuZdOC+xfCTz0MlCQBhj0xoTTzd841Jx+vX73jzgkSdltvNPmbftPCO/QlP4Fg77A1mEQYhOUFBK7wRjDwROnodMbIJNKcLLYQXoJGTMmYzeOGxNCl3smkPCFxpnJ+anm7flpxlrAqvi1N85aruhpBIzHkLsZj3mvk1uBkG6Ad2vjPpUviWbQmx+HEAAuxRfwQbf3EOhWaOtQGg4rh7qk6oXCCXFklBQSu3Er6TbOx12Hn48HMjUCpGlEtg6pYRxYCVyNMg7ViqTGnrzSfEBb6dqwPR4Frh0BLu4xJoPndgLxp4Cuo+5us+tz4zqGFbo8bJw0cnC1MRmMjzGuiVh5nwo5ycC1w0C/p4y/u/oDHAdc+te4X95tY2JKyB1BJbvxUb+P4CSx0uts5zSlO2DQO1CiS0gtUU0hsRvRMedRUqZCSIAvduc70Np5F+4U5v/ynnn7iDlAx6HG/4f1BR56CTj1qzHJc/MDxr5jnJBSoTjbmMhVcPI0Tko59APw02xA4Q5EjjXOPq6MMWDfN8CgmXfXRRSKgZGvGnsw9VpgyAuAk3uD3m1ip5gePXU/YdYD/9o6ksbDVNCU/AKJy0xbR0JIk6LL3BG7kJGdg/mfr4JQwIebmxs+S/WGykAd3aRqdJm7hsfTqzFW9gVGtz9v61AaHyeDk88m8HjOto6EkCZD36rELpy6EIecvAJ4uCpxtUxCCSEhTUygLsDz3vNbRkIIAKwMmpLfbB0FIU2KvllJs6fRaHE45hxcnOTg8Xg4V+pAQ8eE2AFJaTLmtXsb3fxTbB1Kk1KX/AFmKLF1GIQ0GUoKSbN3+UY8UtIz4ePpgQIdH/HlDjLBhBA74Fp8Fh92fx9+yiJbh9L0WCnU1FtIWhBKCkmzd+rCZej0BkjEIpwvlQL2fJ1jQuxISOkufNjvEygccIZxbWlK/gBjGluHQUiToKSQNGs5eQU4E3sFXu6uAIDLpQ52nWNCmiHOoEcf/Rq82/8n8B1offj7wVgxtKooW4dBSJOgpJA0a+firiG3oAgeri7I1AiQo6NVlAhpTDxdOR6Vf4QZ3ffZOpRmQ1P6j61DIKRJ0Dcsabb0ej0Ox5yHVCwCj8dDbBn1EhLSmITqfLwQ8AE6+6bWvHELotdchF6bAr4woOaNCbFj1FNImq2bSbcRn5wKHy/joslXyiQ2jogQxyUtTcT74W9TQlgFTdnftg6BkEZHSSFpti5du4my8nIoZDJkaQTIpaFjQhqFW/FpfNTzfbRyKbZ1KM2WtuxfMNZyJ9yQloGSQtIsabU6nDwfCxcnOQDgiop6CQlpDK3LduKjAZ9CKtLbOpRmjRkKoVUdtXUYhDQqSgpJs3QzKQWpmdnwdDPOOr5KQ8eENCjOoEd/w/d4u98mW4diN7Q0hEwcHI3HkWYp9votlKs1kEklKNbzkKEV2jokQhwGT6fCROdP8VDby7YOxa7o1Odg0KWBJ/C1dSiENArqKSTNjk6nQ8ylK3BWGIeO41ViG0dEiOMQqvPwit88SgjvC6PlaYhDo6SQNDsJKWlIy8iGp5sSAOiydoQ0EGlpPBa0fxudWqXbOhS7pSnbA8ao/pI4JkoKSbNz5VYiytTlkEklYAyIL6eeQkLqy734FD7quQDeziW2DsWuMUMedOUnbR0GIY2CkkLSrDDGcO7yNcgkEnAchyytACWGFn6dLULqgzGElW3H8gGf0wzjBqItP2LrEAhpFDTRhDQr2bn5SE7PgJuLMwDgFvUSEnLfOIMOA7jVeLpftK1DcSi68pNgzACOo34V4ljoFU2alfiUVBQWl8LFSWH8nZJCQu4LT1eGJ50+wNORlBA2NGYogF5zxdZhENLgKCkkzcr1hGQADHw+D3oGJKlpkgkhdSUsz8Fs//cwOOyqrUNxWLryY7YOgZAGR0khaTZ0Oh0uXr1hWoomUyuAjnE2jooQ+yIvuYlFHd9BB59MW4fi0LTlx20dAiENjpJC0mzczshCVm4+XO/UE6ZSLyEhdeJZfBwf9V4ET6dSW4fi8Ay6JOh1abYOg5AGRUkhaTZuJd1GqaocCpkUAHBbTVcxIaRWGEO46nd8MOAriIU0w7ip0BAycTSUFJJm41pCMvh8HjjOOGScqqGeQkJqwhl0GMytwOt9f7F1KC2OVkVDyMSx0JI0pFnQ6XS4npBsqidUGTjk6mh9QkKqw9eW4UnX/2Jgm2u2DqVF0msugRlKwPEUtg6FkAZBPYWkWcjIzkVBUbEpKUxVCwHQJBNCqiIsz8arQe9SQmhTemjp6ibEgVBSSJqF1MxslJSVmeoJaeiYkKrJS65jcad30M4ry9ahtHg6moVMHAgNH5Nm4XZGFhgDeDzj3ymZGnppEmKNd/ERvN/3O4gFBluHQgDo1GdsHQIhDYa+eUmzcD0hCVLx3d7BbC3NPCbEDGPooP4Vrw743daRkEqYoQh6XSr4Aj9bh0JIvVFSSGyuTFWO5LRMON2pJ9QzII8mmRBiwhm0GCr4DpP60FBlc6TXXKGkkDgEqikkNpeakYWi4lLTJJM8nQAGmmRCCACAry3B08qlmNSZEsLmSq+hywkSx0A9hcTmMnJyodZqILkzfJytpZclIQAgUmViTptlCPPMsXUopBp6zRVbh0BIg6BvX2JzOXkFAGBatDqHkkJCoCi5ivcjP4abvNzWoZAa6LW3wJgGHEerJhD7RsPHxOZSMrIg4N9NBKmnkLR0PsXR+LjPEkoI7YYWeu0tWwdBSL3Rty+xKcYYUtIyIJdJTG25lBSSlooZEKHehv8b8KetIyF1pNdcgUDU3tZhEFIv9O1LbKqopBQFxSWQSe8mhYV66sAmLQ9n0GK48Fs8FklXyLBHVFdIHAElhcSmsnPzUVZWDjcXZwCAjgFlBlqOhrQsfG0JpnouR7/geFuHQu4TJYXEEVBSSGwqOy/fbOZxsZ4SQtKyiFUZeC1sKUI98mwdCqkHgz4dBn0BeHylrUMh5L7ROB2xqdyCQgB3Zx4X0aLVpAVxKonD0q7vUELoIPRaWq+Q2DdKColN5RcWA5UWqi6iekLSQvgWH8THfZdBKVXbOhTSQPRaGv4n9o2Gj4lNZeXmQyy6e53jIho+Jo6OGdBFsxkvD9hp60hIAzPoMmwdAiH1Qkkhsamc/ALzpJCGj4kD4+k1GCH+Bo9Gxtg6FNIIDPp0W4dASL1QUkhsRqvVobCoxCwpLDXQ8DFxTAJNEaZ7L0evoERbh0IaCdNRUkjsGyWFxGaKSkqg1mrgJJeZ2tQGrpo9CLFP4rI0vNFuGYLd820dCmlEBn0WGNOD42jEg9gn6pYhNlNUUgq1RmvWU6imnkLiYJyLY/FB5LuUELYIejB9jq2DIOS+UU8hsRljUqiBSHj3IvLljHoKiePwL9mH9/qthYDPbB0KaSIGfRp4Am9bh0HIfaGkkNhMSakKjAF8/t3eQeopJA6BGdBNtxEvPrDL1pGQJmbQZQBiW0dByP2hpJDYjFqjwb39glRTSOwdT6/BKMmXeCTyrK1DITZg0NOyNMR+UVJIbEat0VZetxqMARoaPiZ2TKApxLM+y9EzMMnWoRAbMdAMZGLHKCkkNqPWaMDY3VorDePALPoOCbEPkrLbmBu+DIFuhbYOhdgQrVVI7BklhcRmytUas9/1VItP7JRL8QUs6PkpnCRaW4dCbIyuakLsGVX1E5spVanA4+glSOxbYMkefNTvI0oICQCAGfLAmL7ex8nNzYWXlxcSExPrH9Q9Fi1aBG9vb3Ach+3btzf48euirjHMnTsXs2fPbryAWjj6RiY2U1qmMpt5TEPHxK4wPXpo1+P9B9aDT2sVk0qYoaTex1i+fDnGjh2L4OBgAMYkceTIkfD19YVYLEZAQABeeeUVFBUV1em4V65cweLFi7Fq1Sqkp6fj4YcfrnesTemtt97CunXrkJCQYOtQHBIlhcRmSlXlENC3KbFDPL0a4yT/w/M999g6FNIcsdJ67a5SqbBmzRrMnDnT1Mbj8TBu3Djs2LED169fx/r167Fv3z68+OKLdTr2rVu3AADjxo2Dj48PxGL7Wj/Hy8sLw4cPx8qVK20dikOipJDYjFanA49XuaeQkLpikPH08BJo4GMowIRwV7z/UBhWPBaB+cPaNsoZBeoCPO89H6Pbn2+U4xP7V9+ewl27dkEgEKBv376mNldXV7z00kvo0aMHgoKCMHToUPznP//B4cOHa33cRYsWYezYsQCMSSbH3R2dWbduHdq3bw+JRILw8HCsWLHCdFtiYiI4jsO2bdswYMAASKVS9OzZE9evX0dMTAx69OgBhUKBkSNHIjs727RfTEwMhg0bBg8PD7i4uGDgwIE4e7b6pZpSU1PxxBNPwNXVFe7u7hg3bpzFEPojjzyCzZs31/p+k9qjpJDYTOWZx4TcS8IzwFOoRahEjS7yMvR3LsFI10I87pGPGd45mOObhfcDMvCmfxae88zAQP1VfDDEH0sfDsdL/YLRP8St4WMqTca8dm+jm39Kgx+7Ofnsm0QMHh0D/3ZRaNPlMKY8dxE3bpn3fu34JwsTnjqP0IjDUPofwMXLxTUe98q1EkyddQkRfY5B6X8AK36wfBy3/Z6Bjj2PIrhjNOYvvWl2W1KKCt0HHEdRsa5+d7CRsXr2FEZHR6NHjx7VbpOWlobff/8dAwcOrPVx586di3Xr1gEA0tPTkZ5unCm9evVqzJs3Dx988AGuXLmCDz/8EPPnz8ePP/5otv/ChQvx/vvv4+zZsxAIBJg8eTLeeustfPnllzh8+DBu3bqFBQsWmLYvLi7GtGnTcPjwYZw4cQJhYWEYNWoUioutv1bKysowePBgKBQKREdH48iRI6ZkU6O5OzGxV69eSElJQVISLf3U0Gj2MbGZe5NCShFbBhFngBPfACe+vtK/lf4vMP4raGYlpsric1jQ83MoWsCEkqPHCzBzmj+6dXGCTs+w7ON4PDrlPE4e7AO5zFjyUVamR+8eLhg/2guz37paq+OqVAYEB0oxfowX3lt8w+L23DwNZr95FSs+b4/gQCkmTbuAB/opMWKoBwDgjXevYeG7reHs1Ly/upihfklhYmIifH19rd42efJk/Pnnn1CpVBg7dix++OGHWh9XoVBAqVQCAHx8fEztS5cuxaeffooJEyYAAEJCQhAXF4dVq1Zh2rRppu3mzp2LESNGAADmzJmDyZMnY//+/ejfvz8A4LnnnsP69etN2w8ZMsTs/KtWrYKrqyuioqIwZswYi/i2bNkCHo+HH374wdSLuW7dOiiVShw6dAjDhw8HAPj5+Zkep6CgoFrff1Kz5v3OIoTYDeE9yZ7CLOm7+6+I13DpP2MMWq0OparyBjumNcElu/B2v59azISS3zZ1Nfv928/ao02XIzh/sQj9+7gCAJ6c2AqAsfeutrp1dUa3rs4AgEXLb1ncnphUDmdnASY8Yrx28IB+rrh2vRQjhnrglz8yIBTx8Mgor/u5S02KsbJ67a9SqSCRSKze9vnnn2PhwoW4du0a3nvvPbz++utmQ711lZ2djZSUFDz33HOYNWuWqV2n08HFxcVs286dO5v+7+1tfI4iIiLM2rKysky/Z2VlYcGCBThw4AAyMzOh1+tRVlaG5ORkq7GcOXMGN2/ehJOTk1l7eXm5qRYSAKRSKQBjzyJpWJQUEpthDKhU0gIhR32FzREfzCyxU/ANcBJYJnySBk72dDo91FoNNBot1BotNNqKf3V3XjwAGCAUCiASCuHt0fDDxZxBj95sPWY8sK/Bj21PioqMw7WuSmGjnqd1iBQqlR4XYosR6CfB2QtFePqJVsjP1+LD/yXgr18iG/X8DYUxdb329/DwQH5+vtXbfHx84OPjg/DwcLi7u2PAgAGYP38+WrVqdV/nMhgMAIxDyL179za7jX/PX0FC4d3nv6In7962iuMBwPTp05GdnY0vvvgCQUFBEIvF6Nu3r9lQ8L2xdO/eHZs2bbK4zdPT0/T/vLw8izbSMCgpJDZz7/CxiJLCJsUDMyZ4Vnv27v5fxm/gZE+vh8Ysybvzr0YLBgaAA2MMQgEfIqEQYpEIIpEQnm6ucHd1gYerEi5OCjjJZcYfhRxOchkUMikUclmDxcrTlWO806cY2S62wY5pjxhjeG/JTfTt5YIO4YpGPZdSKcSKzzvgpTlxUJUb8ORjPhg6yB0vv3EFzz/rj6RkFSY/exE6HcM7r4Vg3Jhm2mvIrCc9tRUZGYmNGzfWfJo7n6Fq9f0nod7e3vDz80N8fDyeeuqp+z6ONYcPH8aKFSswatQoAEBKSgpycnKq3L5bt27YunUrvLy84OzsXOV2sbGxEAqF6NixY4PGSygpJDZlTAAq8DhAwDHo6PrH9cKBQW5l2Pbef2U8g1lPbX3pdPpKiZ7GlOiptdo7X17GZE/A50MsEkIkEt7p4XOHu9IZHq5KKJ2dzBK9iv8rZFKLXovGJFDn48WAD9DZN7XJztlcvfn+dVy+UoLdv3drkvONfdgTYx++2wN0+Fg+4q6W4JNlbdHtgeP44ZuO8PYSYeiY0+jXRwlPD1GTxFUXrJ5J4YgRI/Duu+8iPz8frq7G4fp//vkHmZmZ6NmzJxQKBeLi4vDWW2+hf//+prUM79eiRYswe/ZsODs74+GHH4Zarcbp06eRn5+P119//b6P26ZNG2zYsAE9evRAUVER3nzzTdPQrzVPPfUUPvnkE4wbNw5LliyBv78/kpOT8fvvv+PNN9+Ev78/AGOyWTELmjQsSgpJsyLmDNCxFlK4VWcMcp7BfBjXSsIn5xvAa8BkT6833E3yKvXqqbVaGPQG0zAuj8+DWGhM9sRCETzcXO8ke65wdXG6m+SZ9e7JIBQ2r48haWki3un0IVq51Dyb1tG9+f517Po3B3//1g1+vtZr3BqTWm3A3HnXsOqrjohPUEGnY3igrzFJah0qw+lzRXh4mEeTx1WjeiaFERER6NGjB7Zt24YXXngBgLGObvXq1XjttdegVqsREBCACRMm4J133jHbl+M4rFu3DtOnT6/1+WbOnAmZTIZPPvkEb731FuRyOSIiIvDqq6/W636sXbsWzz//PCIjIxEYGIgPP/wQc+fOrXJ7mUyG6OhovP3225gwYQKKi4vh5+eHoUOHmvUcbt68GYsXL65XbMS65vVpTFoUkVBkVn8CACIeQ6mhih0cmJRnsKzbu2cYV8E3gN+AyZ7BYLBI8ir+1en0d2qGGDiOg1hoHMIVi4RwdXaCm9I4jOumdL6T6MnhpKiU9MnlEIkat/6sMbgVn8b8Xl9CLm7eS540NsYY3nr/OnbuzsbOX7ohONA2PTKffJmAhwa7o2uEEy7EFkOnu1vKoNUy6JvrBdPrmRQCwPz58zF37lzMmjULPB4PgwcPxrFjx6rdJzExEQKBwDQb2Jrx48dbXQ5sypQpmDJlitV9goODLfYZNGiQRdv06dPNktHIyEjExMSYbTNx4kSz3+89ho+Pj8VSOJX9/fff4PP5FschDYOSQmIzUokY+nuTQgerKxSbzcitlOwJzJPAhlx+xWAwQKvVmSV5FZM1dDpdpRF77m7PnkgIZ7kcbn4u8HBzgbvSBQqZrFKid2c4VyGDWCQyW/TWEZSry9G6bCfeHmBZ4N4SzZ13Hb9sz8TPayKgUPCRmWWsWXN2EkAqNfbk5+drkZJWjowM4203bxlngnp7iuDtZbxKxgtz4uDrI8bCd1sDADQaA67eMC7XotUakJ6uxsXLxVDI+AgNMa8HvXKtBL/vyMLhf3sBANq2loHH4/DT5jR4e4lw41YZunWpuu7Mlhir/7JFo0aNwo0bN5CamoqAgIBa7bN79248//zzCAsLq/f5m6vS0lKsW7cOAgGlL42BY7SCMLGR7zb+iqhTZxHeOtjUtjbTHSnq5lcjdK97l1+x/q8ewgZcHp4xBs2dBE9jSvqMw7panb7yhqZ6PbFICIlYDLc7NXvuri5wNvXqVa7bk0EiFjtcsldZbnkp0sqKcCMvC9/v+AtqMQeNhIccbRmeuHoQYydK0TakBXZTW6H0P2C1/dvP2uOpScZZrpu2pePl169YbPP2a8F4941QAMDoiWcRGCDBd593AGBcvqZL3+MW+/Tvo8Tfv96tWWSMYeSjZ/HaK0EY+dDd4eHd+3Iwd941aDQM778ZimemWF/Lz9bEiichcZlV84aENDOUFBKb+fG3ndh54Ag6tg01tf2c5Yob5U1fu1RBwDEoeJY9effOyhU39Fp7Op1Fr55Ga/wxFe0BEAqMiZ5IKIRELILS2Qkeri7wcFPCWSG3SPSc5HLIpBKHTvYKNSqklRVV+ik0/qu6+3u6qhhqvfUh4dG3ruKjlL+R494R0vH90TbkFngN+PySlkfsNA0S52dsHQYhdUb9r8RmpBIxDPf8TSLnN05PDR/MbMkVq5M0BHpIG3qtvTvLr6gtlmDRmE2+FvAFphm5YmHNy684yWWQy6Rm1452NKVaNVIrJ3n3JnplxUhXFaFUd//1W4EF+ViUshc8AF65l5F8JAxHcnujW6eLUMhoYVxyfzhObOsQCLkvlBQSmxEJhRZLoijqmBRy1a611zjLrzDG7szIrdvyK2KhED6e7sZkT+nSbJZfaWrlOq1ZcmfRy3fntmJt/RYArolAr8fKyzshw92k0v/GTlxzCUJ0aV90bHsNQX63GzUG4qAoKSR2ipJCYjMioeXsVDnPWBvHgUHGs1K3d8+VNOQNvNaeXq+3uqhyTcuv3O3Zc4Wrs8Is0VNUWorFkYujtQa9KclLLys2S/AqJ4D5mtpfFq0xLT23G0HaLLM2nkGHkEsbcbXXHFy82hGZOZ7o0j4WYpHjX++YNBzqKST2ynG/oUizJxYJwcE8o+uiUKGDrByKBl5rz2Aw3K3Tu2f5Fb1ej4psz9ryK+6uynuWXzFfgkUhk9nl8iu1pTcYkKEqtlKrZ97Tl6suu3NFkubv0ZsXMLb4KmDlNSZR5SLw6m9I7DQFmTleiDrZH13bx8LLo+orMRBihpJCYqcoKSQ2I5dJYWAMjDHTRAgpj9Wprs+41l7FJA2NWcKnrbzWHjhToicSCuGsUMBd6Qx3V+PyK5WXXKm8BItIJHTYSRoGZkD2nRm5FsO4qru/Z5WXWNR+2rPgghwsSD9abQ+zW+YFlChDkePfB2qNGCcvdEOwfzI6tLkOfiPVvRLHQT2FxF5RUkhsRiGTgc/nQa83QCAwr6GrvPzKvTNytbqKWaTGb3WR8M4kDaEIcpkMAUpneCiVcHN1brHLr+SUl1ab6KWVFSFTVQwda1kJjkCvw5preyHS1zyE7X/jL5S6BELl5AuAQ+LtIOTku6Nbx4twcaKrnZBqUFJI7BQlhcRmFHIpREIhEm+nwXAnCawYxmUMpnX2REIhJBIxfL094a5Uwt3VucUuv1KgVlkkd/cuw5JRzfIrLd2nsYfgo0qr1bbG+sJNuNprNgwC45d8SakCR2L6ILz1DYQGJjZoPStxHNRTSOwVJYXEZjzdXBHRrjVKSlVVLL9yt4dPJpU49PIrJVo1Us169u5M2KhUy5euKkKZjiY83K/H4mMxNP9CnfaRqHJM9YUVDIyHuJvtkJXrga4dLkEqadxZ0sT+UFJI7BUtXk1II1LptFbW2bPs6SvRUWLRmIILcvDHpW21Gja2Jrndo8jx72PRLhRo0Ll9HHy9MusbInEgCq+14AuDbB0GIXVGPYWE3AeNXmfqvatqnb20siIUNJPlV1qyutQRVsXPrL7wLq1OhDOXuiKrVSo6tb0CgUBfxRFIS8JxtrsqEyH1QT2FhFSiM+jvLL9S1SXTjG15apXdLL/S0n1xYR+G1XHY2JpSsSuu934VTGj9C18mLUNkx4twcyms97mIPePg7PsPOK75X8OdkHtRUkhaBAMzIEtVYnGpNPPZuUXIdrDlV1q6CfGXsSR5t7XlCO9LiiIEad1mQCi0/oXPcQaEBccjLDierp/cQnE8Vzi3+tXWYRByXygpJHaNMYYcdRVr7d1ZhiW9rLhFLr/S0gUW5OLPS1vrNWxszRn3PigOHQhnZ7cqt3F1LkBkx4uQy6h8oKXhC8Oh8PrW1mEQcl8oKSR264+kS3jy0EZoDFTHRczx9TrsOf0LWtVy+Zm6YHwhogPGoUjijlatgsDjWb9ONZ+vQ6e2VxDo2/AxkOZLIHkQcveFtg6DkPviuGt8EIfnJpZRQkis+l9sVKMkhADA6bUYWBQDNydnJCZchaqsxOp2er0AF65E4PSlLtBoHfcyiMQcT+Bt6xAIuW+UFBK75S9zsXUIpBl6NP4yhuWfb9yT5CXhIUM8unR9AFnZqcjKuo2qBl3Ss3wQdbIfsvOqHm4mjoPHp6SQ2C8aPiZ249zVy0jLykJRaQlyC/ORUZCPD8Qptg6LNCONVUdYFe9nvkOSMhxHDv+FosI8+PqFQiSqauFihtDAJIS3vg4+TUJxWDK3pRBK+9k6DELuCyWFxC7kFRbgva/+h8y8HPD5Agj5fIiEIvwWxFBKq20SGOsId5/+Bb6NNGxsDSeUIGTBSRQIXXBw/6+4efMSXF09oXT1rHIfZ0URunW8CCdFaZPFSZqOwut78IWtbR0GIfeFho+JXZCKJQDHoZWHFzq1DkO74FCE+PnDiy4nRe74JDaqSRNCAGDactxeMQleru6Y8Ph/MHDwoygvL0NKyk3odTpYW8qyqMQZ0TF9EZ8S2KSxkqZBw8fEnlFSSOyCRCyGQiaDWqMxa3dn1E1IgPEJlzG8sesIq6BJv4a09S9ALJZiwIOPYMLEl+Dl5YekpKsQ5XAQaC1nJxsMfFy+3h4nznVDuZoWOXYYnBwcT2HrKAi5b5QUErvAcRw8lW5Qa82TQg9GszpbusCCXCy4Hd1gC1Tfj6LjPyP/0GpwHIfQ1p0w6ck56NFzKBLKbsIjUQ5FofWroGTneSLqZH9kZFc93EzsB4/vZesQCKkXSgqJ3Wjl6Uk9hcQMX6/Dmmv/Qqwvs3UoyNg4G+XJFwEATk5KjBw1FaPGTUOSWxpapbvB+7YLeHrL1FWjFSHmYjdcuNIBOr31NQ+JfaCkkNg7SgqJ3fByc7co0fIwUE9hS2aLOsKqMG054j8fD72qGADA4/EQ0bkfHnn6ReQGlsKtxAWBtzwhKbP+mk1OC0D0yb4oKHJuyrBJA+IJg20dAiH1QkkhsRvuLq4AYzAY7l6uzgV8CJgtBw6JrYxLuGKzOsIq5SXg7LJHUFZ6t+fS09MXw557FvoAIaQGCYKSveGWqbA6CaVUJceR071xIyEUtC6E/RGI2tk6BELqhZJCYjc8XF0hEYtRrlGb2jhw8KAh5BYnoCAXC28fsmkdYVXktw9h//LnkZKQZGoTCkXoMXMc+G4S8MCDd74bAuLdIdRYvnYZ4+FqfBiOne2FMpX1WkTSPPGFlBQS+0ZJIbEbHkpXyCRSlJWXm7W3MtDszZaEr9dh7bW9zaKOsCqByVvw17f/xdED0dBptQAAnlCA8GeGgBMa6wYVWjmC473gnC+zeoy8AldEneyH2xmtmixucv84ngt4Ah9bh0FIvVBSSOyGQiaH0skJZeXmV6vwY5QUtiT/jY2CryrV1mFUS8jpEZmzGft+/x2//rgZOZnZAACJlzOCxvcwbSeAAH6ZHvBJVoKnt/w41umFOHe5M87GRkCrpR7x5owvbGvrEAipN0oKid3gOA7+3q0segp9qaewxRiXcAUjmlsdYRVcWD76s2jEnr2IjSvX4eLpczAYDHCPDIF79xCzbV3LnBF8yxOyEuuLsadm+iLqZD/k5rs2RejkPvCpnpA4AEoKiV3x9/aBVqcza/NmQpps0gI05zrCqviWnENPtwyUFBfjj02/4O9f/kRJcTECH+kOibeL2bZigxiBt73gke4EzmB5LJVaimNne+LKzTAYDPb0KLQMVE9IHAElhcSutPLwBAcOlS/ZzQMHH1rE2qEZ1yNs3nWEVQlJ2YrWnhyU7m44EXUEm1b9iIT4BLSe3B88kfmQMAcOnoWuCIj3hEht7TXN4WZSKI6c7o2SUnnT3AFSK9RTSBwBJYXErvh6ekMmlaBUZZ4c0BCyY/s4Nhp+zbyOsCoC6ND6xkq4yEUIahOKtOTb2LpmI06cPYVWo7pY3UeukyI4wQsuuXKrS9cUFrsg+lRfJN4OaOToSW1wPA/w+O62DoOQeqOkkNiVVp6ecJYrUFxaatbuR0mhwxqXEIeRdlJHWBWFNhuBCRshEAgQ2DoYIokY+/7ag71nDkMWbn3GKh98+Ga7wzfJFXyd5Ue13sDHpWsdcOpCJNQaev3bEl9Ek0yIY6CkkNgVkVCEEL8AFN2TFAYy6wX6xL4Z6wijwFnrLrMzPoUx8Mg+DI7j4ObhDr/gAFyLjcPuG8cBp6rLH1zKnRB8yxuKIutrFmbmeOHQyX7IzPForNBJDfiicFuHQEiDoKSQ2J02AYHQ6LRmbUomgKuBrhvrSOy5jrAqwclbIb0zDC4WixHStg1UGjUOZFxAdXNHREyIgDQveN12AWdlQ41GjFMXuuPStfbQW1nahjQummRCHAV9ehC74+flAx7HmV3uDgBCDHT1B0fy0WX7rSOsirG+cBV4euNVeTiOg49fK0i8lThTEl/j/u4lLgi65QlxFddPTrwdiOiYvigsdmrQuEl1hBCIOto6CEIaBCWFxO74enpBLpWhuMx8CDmUkkKH8UhiHB7OO2/rMBqFQpuFwISNZm1yhRz8YCWSdXk17i/VSxCc7A3XLOuTUEpKFTgc0wc3k4Lp+slNQCDuAo4ntXUYhDQISgqJ3fF294CHqysKS4rN2kMMYqtfksS++BfmYVGKY9QRVsVYX3jErI3P56PAj49STlPj/jzw4JPnDv8Edwg1lmUTjPFw5WY7HD/XA6py+mOpMQkkvW0dAiENhq6bROwOn89HRJt2+Ct6v1m7DHx4MyEyOW0VezZT124Du2OAxEygsBR45RGgW9jd27cfA05dBfKKAQEfCPIGJjwAtK7mmrhRF4FjcUBqjvH3IG/gsQeA0Er7HL8C/BoNaHTAgE7ApIF3b8spBD79DVjwFCBtukk8fL0Oa686Vh1hVYKTt6BUEQKV1M/UxjggxV2NsBwh+LVYpttJI4c0XowMn3wUK1UWt+fmuyPqZD9EhMfBzzujQeMnRgJJH1uHQEiDoZ5CYpfCAoMBZq2u0A5nIau1QIAn8PRQ67f7uAJPDQWWTAPefRLwcAY++xUoqiZxupYC9A4H3poEzJsMuDsZk7z8O72rxWXA+n+BJwYCrz8GHL0MXKhU0/bTPmDigCZNCIGKOsLbTXpOW7m3vrCCWmBAqotlglf1cQTwz/C8c/1ky0RSqxPibGwXnLvcCVodTcZqSDxBAPgCX1uHQUiDoaSQ2KUQP384K+QoKi0xa29jsMPans4hxp6/7mHWb+/THugYBHgpAT8P4MlBgEoD3M6u+pjPjwaGdAUCvYBW7sD04QBjQFyy8fbsQkAqAnqFAyE+QHgAkJZrvO3EFWOPZFXxNJIxiVccto6wKtbqCwEgX6pFnrTmYeTKXMucEXTLC9JS62sW3s7wQ/TJfsgrUN5PqMQKGjomjoaSQmKXfDw80crDC/lFRWbtwQYxxI58HWSd3jg0LBUbexdrS60D9AZAfqe+zNvVOGyclAmUqICETOPxSlTG4eqnhzRO/FXwL8zDkpRDDl1HWBVjfeFRi/bbziqUC/R1OpbEIEZQijfcM5ys1teWlctw9EwvXI1vTddPbgBCGjomDoZqCold4jgOnduG42qi+TIefHBoa5DiEt/BatLO3wJW/Q1otICLApg7EXCS1X7/X6MBV4WxxxEwJofPjQR+2A1odUC/DkCnYGDtbmBoJJBdBHy13ZhIjusH9Gi8Kza0pDrCqtytL7w7FMk4IFFZhrBcBfh1+EOHAwevAlfIS8TICCiARqyz2OJGQhtk53qgW8eLkMtqP1RNKuHk4IsibB0FIQ2KegqJ3WrtHwgex0GnN+9NCdfb4RByTdoHAoumAu9NNiZv3/1VfU1hZbtOAaeuAS8/Aggr/R3YPQxYOg346DlgfD/gagpwOwd4MAJYuROYPBj4zyPAuj21P9d9WN6C6girIoAWrW+stF5f6HR/SZtcJ0Nwgjdccq3/8VBQpETUqX5ITvOzejupnkDcDRxH/SrEsVBSSOxWqH8AlE7OKCgqNGtvY5BA4GhDyGKhcci3tS8wYwTA4wGHL9W83+4YYOcp42SS6oabtTpgwz5g2jAgqwAwGIB2AUArN+N549Mb7K5UNjrxKka1sDrCqii0WQhM3GTRni/TIk9St/rCCsbrJ3ugVWIV10/WC3DhSifEXOwKjbbqS+0RSzR0TBwRJYXEbrm5KBEeHIqcwgKzdhF4aG2Ps5DrSltDvdmuGOCvE8DrE4yTSarz1wkgIsS4dI3BABgqFaTpDca2BuZXmIelt1tmHWFVfApOwd1afaFL3esLK1OWOyH4lhfkxdbXLMzI9sahE/2Qnet+3+doWTgIJL1sHQQhDY6SQmLXItt3hFartViaJlxfh3o7WyvXAMlZxh8AyCky/j+3yLhczW+HgVtpxvakTONwbl4x0LNSnd/qXcCvh+/+vusU8MdR4NkRgIeLcf3DwlLjue6VmmMcXn60v/H3Vm4AByD6knGZmvS8mpPKOuL0Bqy9thdiXWnNG7cwIclbIFWlmbUxDkh0KYOeu/8EWsRECEz1gmeas9XrJ6s1Epw43x2Xr7ej6yfXgC9sBx7fzdZhENLgqCCC2LXw4FC4ODmhsKQYrs4upvZ2Bgl4DLCLCZaJmcB/t939fcsh47/9OwLPPGRMyo7GGWcGyyXGBO3dJ43L01TIKwJ4le7sgQvGmcor/jI/1yN9jfWDFRgDftxrXOZGfGf4UCQEZowENu039kY+PQRwbdhr6X58OQr+ZS27jrAqAmgRemMlrnR6Hwbe3eVl1EJjfWFgUf3+4PEoUkJWapyEopbcu9A7h/iUYGTnu6Nbx4twVpRYPUZLJ5QNt3UIhDQKjjG6OiaxX4wxfPDDClyJv2lc0LqSLcIcXOPTzMrmZnTiVXyc+A8NG9cgQ9kLia1nWLQHFEjhVm59LcK6MMCALPd85HuUwtrFU3g8Pdq3vo6QgGRw9vDHVZMRwbnVL+B4ClsHQkiDozECYtc4jkOPDp2gKi/HvX/fdNXLbRQVqQrVEdaesb7wmEV7fesLK/DAg0+uO/wS3SDQWl7pxGDg4/KN9jh5vjvK1S2gRreWhNIBlBASh0VJIbF74cGt4SRXoLjUvD6trUECOaOXeHPB6Q1YQ3WEdRKSvLlR6gsrc1YrEHzLC4pC65NQsvM8EHWyH9KzvBrkfPZOJBtp6xAIaTT0jUnsXmArXwS28kV2QZ5ZOw8cOtnThBMH99HlKARQHWGdGOsLV4FnMJ8gpBYakHaf6xdaI4QQAele8E5xsXr9ZI1WhNOXInHhSkfoWvD1kzl+K/DFkbYOg5BGQ0khsXs8Hg99O0eitKzMYgg5koaQm4XRiVcxOu+crcOwS07aTKvXR86rx/qFVXErdUHQLS9Iqrh+cnKaP6JP9UV+oXODntdeiGTDwVGBJXFglBQSh9C1XXsonV2Qd89C1t5MBB8DLcprS1RHWH9V1RemOqtQzq9/fWFlxusne8E9U2H1+smlKjmOnumN6wmhLez6yTyIZCNsHQQhjYqSQuIQWnl6IaJNW2Tl5VrcRhNObIfqCBuOtfpCA894feSGqi+swAMPXvluCIh3h1BjuXIZYzxciw/DsbM9UaZywMtKWiEQdwNP4G3rMAhpVJQUEofAcRx6R3SFXm+AVqczu62LXg6Ro132zk4sj4umOsIG0lT1hZUptHIEx3vDOd964pdf6Iqok/2Qku7bKOdvToQ0wYS0AJQUEofRuW07+Hh4WPQWSsBDF+otbHIPJ13DmNyztg7DoThpMxGQYHl95MaoL6wgAB9+mZ5olaQE38qVTnR6Ac7HReDMpc7QaB3zeggc5wShtL+twyCk0VFSSByGQiZH74guyCsqsLitt956fRRpHL5F+ViWcpDqCBtBq4KTTVZfWJlS5Yygm16QlVhfszAtqxWiTvZDTr5ro8VgK0LZQ+C4+i8YTkhzR0khcSjd23eCRCRGqarMrN2dCRFmsL4OG2lYnN6AtVf3QkJ1hI0mJHkzJKp0szYDD0hSlsHQiIm4mIkQeNsLHmlO4AyWt5erpTh+tifibrSF3mEmofAgUjxq6yAIaRKUFBKH0i44FGGBwUjNyrS4rbe+Ya/fS6xbfjkKAWUptg7DoQmgResbKy3qC8uFBqQ6N+6lHTlw8CxyRWC8J8Tl1mb2c7iVHIIjMX1QXGr/ZRtC6SDwBX62DoOQJkFJIXEofD4fg3v2gVans5hw0toggafBMWuemouHk65hDK1H2CSM6xf+bNHemPWFlcl0UgQlekGZI7damlFU4ozoU32RcDug0WNpPBzETk/ZOghCmgwlhcTh9OgYAT9vH6RnZ1ncRr2FjYfqCJueT8EJuOcct2hv7PrCCnzw0SrHHb7VXD859loHnDzfDWqN/dXkCST9wRcG2zoMQpoMJYXE4cilMgzq3hv5xUUwGMwLn7rq5XBmLfcyXY2F0xuwhuoIbSIk6WdIyjPM2pqivrAyF7UCwfFeUBRZr9vNyvXEoRP9kJnj2STxNBQJ9RKSFoaSQuKQ+nTuCg+lK3IK8s3a+eDwgI56Cxvah5ejEUh1hDYhgBatr38Hzgb1hZUJmRABaV7wuu0MzsokE41WjFMXuuHi1fbQW1naprkRiHuCL2pr6zAIaVLN/51JyH3w8fBEn85dkWnlCieRegX1FjaghxOvYWwerUdoS07aTATZsL6wMvcSJYJueUJSZv3ykkmpgYg+1RcFRc37+slip6dtHQIhTY6SQuKw+nftDplYgqKSErN2ATj0p97CBuFTXIBldF3jZsGn4ATcbFhfWJlUL0FQsjfcsqyvD1pSpsCR071xIzEErBm+dPiiLhCIO9k6DEKaHCWFxGG1DQpBl3btkZKVYXFbN70CTtRbWC+c3oB1V/6FRFdS88akSYQ2g/rCCjzw4J3nBv8Edwg1lu81xni4eqstjp/tCVV581pDlGoJSUtFSSFxWDweDyP6DYBIIEBRqWVvIdUW1s8HcVRH2NxUrF9o6/rCypw0xusnO1Vx/eTcAjccOtkPqRk+TRyZdXxhewgk3W0dBiE2QUkhcWgdW4chMrwjUjKt9xZSbeH9GZl0DY/QdY2bJSdNBgITrdcX5jdxfWEFAQTwz/SET7ISPL3lJBSdToizl7vg7OUIaHW2XUtU7DTFpucnxJYoKSQOjcfjYXjfByASCFBspbdwsNbFRpHZL5/iAnyQQnWEzVmrfOv1hbdtUF9YmWuZM4JveUFaan3NwtQMX0Sd7IfcAmXTBnYHX9QFQmk/m5ybkOaAkkLi8Dq1aYuu7doj2UpvYReDDD4G67MkiSWqI7QfIcmbm019YWVigxhBKd7wSHeyOglFVS7FsTO9cPVWGxia9PrJPEiVLzfh+QhpfigpJA7PWFv4oNXeQg4chumUtgnMDi2jOkK7IWSaZldfWIEDB89CVwTe8oBIbW24mMONxNY4eqYXSspkTRKTSD4WfGHrJjkXIc0VJYWkRTD1FmakW9wWapCgrb55zX5sjkYkXcM4qiO0K8b6ws0W7basL6xMrpMhOMEbLrnWE7+CIiWiT/ZFUqpf4wbCOUPi/GzjnoMQO0BJoYPLzc2Fl5cXEhMTbR1KrSxatAhdu3at9fZZWVnw9PREampqtdvxeDyMemAQJGIx8osKLW4frlOCTyVyVfIpLsCHKVRHaI9a5R+HW84Ji3Zb1xdW4IMP32wP+Ca6gq+z/ErSGwS4eLUTYi50hUbTOKUeUpfnwPFoNQJCKCl0cMuXL8fYsWMRHBxsapszZw66d+8OsVhcpwSsOfLy8sLUqVOxcOHCGrft0DoM/bp0Q0pmBtg9K+a6MyF66elLwRqqI7R/IcnNZ/3CqriUOyH4lhfkxdZ77TNyvHHoZH9k5bo36Hk5QRsIZaMa9JiE2CtKCh2YSqXCmjVrMHPmTLN2xhhmzJiBJ554wkaRNaxnn30WmzZtQn5+frXbcRyH0QMGw83FBZl5ORa3D9Q504LWViyLO0x1hHbOWF+4CpxBa9beHOoLKxMxEQJTveCZav36yWqNGCfPd0fs9fAGuX4yYxxkytngOPoqJASgpNCh7dq1CwKBAH379jVr/+qrr/Dyyy8jNDT0vo89ffp0jB8/Hh9++CG8vb2hVCqxePFi6HQ6vPnmm3Bzc4O/vz/Wrl1rtt/bb7+Ntm3bQiaTITQ0FPPnz4dWq63iLEbr1q1D+/btIZFIEB4ejhUrVpjdHhERAR8fH/zxxx81xh3YyhcP9eqHzNxc6PXmQ2di8PCwVlm7B6CFGJ58HeNyz9g6DNIAnDTpzbq+sDKPYiUCb3lArLI2XMwhISUIh2P6oKhYUa/ziGRDIRB3rNcxCHEktl0llDSq6Oho9OjRo9GOf+DAAfj7+yM6OhpHjx7Fc889h+PHj+PBBx/EyZMnsXXrVrz44osYNmwYAgICAABOTk5Yv349fH19cenSJcyaNQtOTk546623rJ5j9erVWLhwIb755htERkbi3LlzmDVrFuRyOaZNm2barlevXjh8+DBmzJhRY9wj+w/EydgLSM5IQ4hfgNlt7Q0yhOvLcJXffHpPbMW7uBDLkw9SHaEDaZV/DMU57ZDn0dus/bazClItHxL93Z7yVYd/xeojv5lt5y53wZ7ZK6s8/pnkOHy+fyPis2/D08kVU3uPwcRuw0y3n0i4iP/uWYfcskIMCuuB90c9DyHf+DVUUl6GZ9bPw4rJ8+Dj4gGZXorgJDGy3POR71EK3NNxWFzqhMMxfRHe5jpCA5LA1XH1GgYpJC4v1G0nQhwc9RQ6sMTERPj6+jba8d3c3PDVV1+hXbt2mDFjBtq1a4eysjK89957CAsLw7vvvguRSISjR4+a9nn//ffRr18/BAcHY+zYsXjjjTewbdu2Ks+xdOlSfPrpp5gwYQJCQkIwYcIEvPbaa1i1apXZdn5+frWeTKN0dsbYgUNRVl6OcrXa4vZRWleIWVOuj9YMGaiO0FGFJG+CpDzTrK2q+sJQD3/s/r/vTD9bZv63yuOmFmRhzrb/ItK/HTbNWI5n+47D//b+iP1XTxrPwQyYv+NbTOj2ENZOXYzL6bfwx/kDpv2/OvQzJnR7CD4uHqY2HnjwyXWHX4IbBFrL0g4D4yHuRjhOnO8OVbm4To+D1HkqeHy3Ou1DiKOjnkIHplKpIJE03lIrHTt2BI939+8Kb29vdOrUyfQ7n8+Hu7s7srKyTG2//vorvvjiC9y8eRMlJSXQ6XRwdna2evzs7GykpKTgueeew6xZs0ztOp0OLi7mVyKRSqUoKyurdewPRHbH0fNncOnGNbQPaQ2uUjeDE/gYqnPBP8KCWh/P0Sy7fBhBZcm2DoM0gor1C+M6vgfGuzs8a6wvLEdA0d1rFAt4fHgolLU67m/n9sHH2R1vDDP24Id4+CEuIx4bT/6NoeG9UVBWjPyyIjzebRjEAhEeDOuOhJzbAIDzt6/hSno83h5uvaffWaOA9JYYGT4FKFFa9uLn5Hkg6mQ/dGl/Ga28sqwcwRzHD4RI8Vit7hchLQn1FDowDw+PGidf1IdQaF7vw3Gc1TaDwQAAOHHiBJ588kk8/PDD2LlzJ86dO4d58+ZBo7Fez1Sx3+rVq3H+/HnTT2xsLE6cMF9iIy8vD56enrWOXSQUYeJDIyGTSJGdn2dxew+9AgEG65ficnTDk69jPNUROrSq6ws1ZvWFyfkZGPn1S3hkxWy8u/0r3M7PtNinwqXUG+gT0tmsrW9IF8RlxEOn18FV5gwPhRInEi6iXKvB+ZSraOMVCK1eh492r8G7I58Dn1f1V5IQQgRkeMI7xcXq9ZO1OhFOX4rE+bhO0OmqnjDGGB9yt3fBcdQnQsi9KCl0YJGRkYiLi7N1GCZHjx5FUFAQ5s2bhx49eiAsLAxJSUlVbu/t7Q0/Pz/Ex8ejTZs2Zj8hISFm28bGxiIyMrJO8bQPbYMR/QYgPScbWp3O7DYOHMZq3Vrc2oVUR9hytMo/BrfcUxbtt51VUPP16OTbBovHvIRvnngX8x6ehdzSAjy3YSEKyoqtHi+3pABucvMefDe5C/QGPQpUxeA4Dh+Nn4M1R/7ApNVz0c47GOM6D8L643+iZ3AniAUizPhpISaseh1bT++pMm63UhcEVXP95JR0P0Sd6oe8QuvXNRc7PQW+qG2VxyekJaM/lRzYiBEj8O677yI/Px+urq6m9oqh24yMDKhUKpw/fx4A0KFDB4hEjdc71qZNGyQnJ2PLli3o2bMn/v777xpnDC9atAizZ8+Gs7MzHn74YajVapw+fRr5+fl4/fXXAQBlZWU4c+YMPvzwwzrHNHrAIJy/dgUJqSloG2SeaHoyIYboXLBXaLnYtUMyGLCW6ghblJCkjSiTB6Fc4m1qM/CARGUZ+rbuAt6d2R1tAHT2C8P4la9iZ2w0nu412urx7u2/Y6Y/Loy3dA0Ix0/PfmC6PSk3Hf/EHsGmGcsxa+NiTO75MPqFdsETP7yFboHhCPMKsnoeyZ3rJ2cr85HrXWJx4jKVDMfO9EJYcDzCguPB4xnjMHChkDg/XbsHh5AWiHoKHVhERAR69OhhMZFj5syZiIyMxKpVq3D9+nVERkYiMjISaWlppm04jsP69esbNJ5x48bhtddewyuvvIKuXbvi2LFjmD9/frX7zJw5Ez/88APWr1+PiIgIDBw4EOvXrzfrKfzzzz8RGBiIAQMG1DkmZ4UTJj40EgCHguIii9v76p0Qqq9bAbu9Wnr5MILtpI5w9SVg0t9Az5+BAduA/zsIJNyTuzMGfHseGPQL0G0TMH0PcLOg+uP+cRPo+JPlj7rS6kU744GhvwJ9twD/O22+f2oJMOoPoKR5rfBSJSHTIPTGSqvrF6Y5l5u1SUUStPYMQEqe+SLYFdwVSuSWmj8J+aVF4PP4UEotl45hjOGD3avx6tCnYGAGXMtMxEPhveEmd0G3wPY4k3yl2tg5cPAqcENAvAdEGsv+DcZ4uJ7QBtGnIlFYxIfBIICz53xwHK1FSkhVOHbvpR2IQ/nnn38wd+5cxMbGmk0KqU5iYiLCwsIQFxeHsLCwRo6w/nr16oVXX30VU6ZMua/9GWNY9etm7Dl2GBFt2lo8TsXQ4ztxBlScoSHCbZaGJV/H5/E77WbY+Pl9wMPBQIQHoDMAX50DrhcAOx4BZHfKWn+IBb6/BHzQDwh2BlZdAk5nAn+PB+RVXC3tj5vARzHAzvHm7Z535l7klwNDfzMe098J+M8BYFk/YKC/8fYX9gETw4Bh1ju4mq10t35ICnnGoj2wQArXcuPogUanxfiVr+LRrkMw6wHLSRpfHfwZh2+cxS/P/8/Utnz3GlzPTMK6aUsstt9+/gCOxl/AJxNeQ5GqBEO+mIVDr62BQiLDG79+iu6B7TGlV+2uNKKDHlle+Sh0M59sxhhDcvI1hISEYvwjgyFz7l+r4xHSUlFPoYMbNWoUXnjhhRqvDVzZ7t278fzzz9tFQpiVlYWJEydi8uTJ930MjuPw2NARCPBphcQ0y8fJCXw8onW1sqdjMNYR2td1jb9/CHi0DdBGCYS7Acv6A+mlQNydOUOMARuuAM9HGBO0MFfgw/5AuQ74O6H6Y3MwJoGVfyqklAAKIfBwiDEh7eUN3Cow3rYzHhDy7C8hBIBWeZb1hVu3/4p9WReQUJSO2NSbePuPL1CqVmFMxIMAgG8ObcaCv+4uJP9Y5ENIL8rBZ/s2ICEnFX9eOIg/LxzE070th5rzSgux5tgfePPOTGVnqQIh7n74OeYfXLx9HTFJsejsX/u6PwH48M3yQKskpdn1k/PzsyCVKvDgwCcpISSkFqimsAWYM2dOnbZ/8cUXGymShufl5VXlwtd14enmjokPjcSKbZtQUFwEpZP5MjnhBhm66cpxVlBa73M1K3fqCKU665MH7EXxneFalzslsbdLgBwV0L/V3W1EfKCHN3AuC5hUTb5RpgMe+g0wMCDcFfi/rkD7O5fbDXICyvXAlVyglQKIzTUmpwVq4JsLwLrhjXL3msS99YX5BQVYuWENSkpL4CZ1Rie/MKybtgStXIyz/HNKCpBRdPdykX5KL3w56S18tm8Dfjn7LzwVrpg7bBqGhve2ONf/9v6Ip3uNgZfT3XUCF455EYt2foetp/dgau8x6OTbps73QalyhvSWBBl++SgQFaKwMBdDH5oE/4C6H4uQloiGjwm5w2AwYPXvW7H7aDQ6hraBQGD+N5MWBqwSZSKXp6viCPZnSWw0HsuJsXUY9cIY8MpBoEgDbBhpbDuXBTy9Gzg4EfCS3d124XEgrQRYPcz6sS5kA8nFQJgSKNUaexsPpwK/jwWC7vydsC8Z+Oa8MTkcGwK83BV4/yjQzg1o7wYsPwXoGPCfLsAIO+s1LBL54krHd83WLwQA9zIR/CutX9jcMTAk8ZKhCxfh0Un/gUjUMuqCCakv6ikk5A4ej4cnho9GQmoKbqYkITyktdntQvDwuNYda0RZ0HL2/7fU0JQbmJBzuuYNm7llp4Dr+XcTwsosZsMyVHs5tC6exp8KkV7AxJ3ApqvAe72MbQ8FGn8qnMow1jPO6w08/AfwyQDAQwo8+Q/Qwwtwt59cCs6aNAQkbUFyyFSz9lyZBnIN31Rf2Nxx4BBsCIIgQwpdbhlErSgpJKQ2qKaQkEqUzs54atQ4SMRiZObmWNzuzUR4RGv/l8byLi7Ex0n2vx7hByeBQynGYVsf+d12jzuJWM49F7/IKwfc63CRHx4HdHIHkiwnpgMANHpg6UlgUR9jD6OeAT19gBAXY8/iRcuXULPnm3e02vUL7YkuT4WrK/Yi8/BV0KAYITWjpJCQe0SEtcOYB4cgKy8XKnW5xe2dDDL00VkusWE3HKCOkDFg2UnjUO7a4caZwJX5K4yJ4bH0u20avXH2caRX3c5zNd98skll310EBvgBHdwBg8E4E7qCzmCsS7RHIUkbrV4fOdHK9ZGbO6Y34Pau87ix9hA0hbW/FCYhLRElhYRYMebBIejeIQI3k5NMl9urbJhOiWA7Xb9wSdwRu1mPsCpLTxpn+/53gHEJmmyV8af8TrknxwFT2xvXM9yXDNzIB+YdBSQCYHSlNcrfPQJ8fvbu7ysuAEdSgZRi4EoeMP8YcC0PmNTOMoabBcDuROCVLsbfQ1yMPYu/3QCibhvXTezk0ViPQOMyrl+4qlbrF9qL4luZiPtqN/Ivpdg6FEKaLZpoQkgVUjLS8PG671FQVIQ2gZYzBkqhx/fiTBRx9jOkNjT5Br6I3wke7HvNxY4/WW9f1s84Gxgw9vKtuABsuwEUqYHOnsD7vYzL01SYvgfwVRiXqwGMaxTuSzYOOzuJjLOPX+4KdL3nstqMGSeyzIoABvnfbT9029iDqdEDsyONaxbaszS3/hb1hQAQVCCF0k7qC61x7xaCgLHdwBdXsWAlIS0UJYWEVOPUpQv4estPUEhl8Ha37PZJ4zRYJ8qCzg4mnngXF+LvC1vtetiYNL3rwc8hz72nWRvPALTNVUCst9+rg4jc5AiZ1BeKQDvtziWkEdDwMSHV6NmpM8YPHobs/HyUlFmuUejLRBindUOzL7MyGLDm6l5KCEmdhSRtgLg8y6zNwAOS7LC+sDJNXimufb8fafsugVkpESGkJaKkkJBqcByHRwYOxcDuPXHrdgq0Oss1CjsZZHhI52KD6GpvcdwRhJQm2ToMYoeETIPWVq6PrLLj+kITA0P6gcu4tmo/1Ln0BxMhlBQSUgOhUIipYx5Fh9A2uJaUYHVpi/56Z/RspjOSh6TcwIScM7YOg9gx4/qFWy3ac2UaFEg0NoioYZWm5CLu6z3IORNv61AIsSlKCgmpBaWzM2aMnwhPpSsSUq3PXnxYp0Q7ffNaqdizpBD/TTpo9xNLiO355h2BW57lYucpdrh+oTUGjQ5Jv53CrU1HoCtT2zocQmyCkkJCaql1QBCmjnkUDEBadpbF7Rw4PKZ1g5+hmczKNBiw9grVEZKGE5LomPWFlRVcvo24r3aj6GaGrUMhpMlRUkhIHfTtEoknRoxGYUkxcgsLLG4XgofJGg+4GWx/BcnFcUcQSnWEpAEJmRqtb1ZRX+hk5/WFlWiLVLix7hBS/jkHg87+e0EJqS1KCgmpA47jMOqBQXhk4FCkZ2ehuLTEYhs5+HhG4wmlwXbLdVAdIWkszuoq6gvljlFfaMKArCPXcHXFXqgyC20dDSFNgpJCQuqIx+Ph8eEPY0ivvohPvY1ytWX9kQsEmKb1ggtr+sSQ6ghJY/PNOwJXB64vrEyVUYAr3/6LrGPX6frJxOFRUkjIfRAJRZj2yAT0juiKa0kJVpeqUTIBntF4wakpE0ODAWuojpA0gdDEDRCrs83aHK2+sALT6ZGy8yxu/hgNbbHK1uEQ0mgoKSTkPsmlMsyaMAkdW4fhasIt6PWWPSRuTIBpGk8oWNO81RbGHUFrqiMkTUDI1FWvX+hA9YWVFV1PR9yXu1EQd9vWofx/e3ceHFWd/nv83VuS7qS7s3TSWUlYAgQIGgybI7LIoiACjowgIAjCeGccdLjI3CkVsWaU8mfNlFgzlnMVYe6AuI24XHHG31UxEURZBZIoS1ZC9j3dnV7P/SPaY0yCATorz6sqleR7Tp/zdIoin5zzfL9HiG4hoVCIqxAVHsEDi5cyNCmZvE6CYZSi415XDIZuDobTS85yl/QRih5kcpZ23l8Y7O7gFf2fx+7k/K7PKdp7GJ+r/R0CIfozCYVCXKVEaxwPLllBSnwieYX5+Dp4ZFa0omNVN95Kjm5u4L+K90sfoehxnfYXmu0Drr/wh6oPn6fhTFlvlyFEQEkoFCIABsXF8+slyxkUG0dewflOg+FqV0zgl6v5ro/Q4G4M7HGF6KJrqb/we1HjUogYk9TbZQgRUBIKhQiQwQlJ/Pru5SRaY/mmkyuG4YqW1a4YYn26gJ33idwD0kcoetWl+gvLBmB/YbDFSNL8G3q7DCECTkKhEAE0NCmZX/1iObGWaL4tKugwGIaiYaUrhkG+4Ks+37SSc9xV3f7WnRA9rbW/8I1249UDrL9QpVEz5O7JaIID94edEH2FhEIhAiw1OYVf/WIZ1igLeYX5HU4+CUHNcpeF4d6QKz6PpbmJZ4tlPULRd8TXZhNR236y00DqL4yfnY4hIbK3yxCiW0goFKIbjBw8lPVL7yU5Np68gvN4OljHUIeau90WMjyhl38Cn49X8j6SPkLR5wwp/D8Dtr9QnWQidkpab5chRLeRUChENxk2KIWHlq1kRMoQcvPP4XK3fwSYGhV3eCKZ7Q5HdRm/LzfnHmCorTBwxQoRIAO1v9BtUDN2zezeLkOIbiWhUIhulBQbz0PLVnH9yFHkFeR3+Eg8gMleI0vdFoIV1U8ec1rJORZLH6How0zOUpKK32w33l/7C11qH6PWzkQTFOCVA4ToYyQUCtHNYiKj+M3Se5k0tvWReDaHvcP9Un161risRPg6X8tQ+ghFfxFfk3WJ/sL+8+/Xi4/YRRmYrNJHKAY+CYVC9IAIk5lf372caZkTOX+hhNqG+g73i1Z03O+yktzRzGTpIxT9zOB+3l+oKArqcbEMvkH6CMW1QUKhED0kzBDKA4uXsmjGLCpra7hQUY6itP/FaEDDClc04z1hbcalj1D0N0H+/sK2E60cOm+/6C+0JwYz7s5pvV2GED1GQqEQPSg4KJhlcxeweuFivD4fZ4sLO1zLUIOKuZ4I5tbq0Lg80kco+q3W/sL+t35hU5iPSfffjlotvybFtUP+tQvRw9RqNbNvnML6e+7FEhFJbv453O72vxzdLhfKp1nM/ugIj1eclj5C0W/F1HyBzlnTbryv9hfatB4yHphLUHBQb5ciRI+SUChEL8kYOZr/uWINaUOGkVtwHpvD0WZ77uFsgmz1zBhxHSWDl1ARNb6XKhXiymli0zgY/yuKq9rPvO+L/YVOPAxbfhPmyPDeLkWIHiehUIhelByfwIYVq7l53HgKSkuoqKkGoOhMLq4L+aSljsJiiUZRaylKnMuZlLvxaPS9XLUQXRNxy69J/cMxJi26F7fLRVND+0lSfam/0KV4iLh9DPHDU3q7FCF6hUrpqNNdCNGjXG4X7+3/mPf2f0yLrZHGU4dJCjcxefLUdj1NOlcjQ4vfxmQr6qVqhbg0lzqEiCXbSJ6zDgCfz8e/9v5fDnz8GYOGDEYX1P65wcl1BsKdvfc8YZfiQXNTIhPmTeu1GoTobXKlUIg+IEgXxM9n3sr6e1YS5mrBjJex6RkdNrm7g0x8M3QlRfG34lVLz5PoW6qNaez1TCan7j8LPavVaqbdOpNhI4dzobC4w1n3vdlf6FG82EYZybzt5l45vxB9hVwpFKKPKSnOJ+u9Nzhz8gjmKAsRFisqVcdPOtG5Gkkp3UdE47c9XKUQbTl1ZvLCbyavXsPgkenMuWslCSlD2+xzsaSUPS/9nZYWJ3GJ8e2OoXdpGFYbipqffrJPoHgVH2XxCretWywTS8Q1T0KhEH2Q2+Xi0CcfcODf7+JytZCQPAyNtvNHbEU05JFc+iFB7qYerFIIUFBRZpnIMU8KTq+KzCkzmTpvMYYwY4f7n/jyKO/seYuIqEiMZlO77RZbEAlNPdM361V8FEe2MGfdXR3WIsS1RkKhEH3Y+byT/L+9uynJP0NcUgqhRnOn+6q9TpLKPiam5giqPjSbUwxcNn0c30bP4kxFM1Exccy4Ywljxv+s0yvb8F1/4dvvc+CTrE77C1PqDJi7ub/Qq/goNNuYvfYuwqMiuvVcQvQXEgqF6OMa62r59P3XOfllFiq1irikIZe8ahhqu8DgC+9jaKnswSrFtcSr1lFincZJZywtDgfDx2Yya9EyouMSu/R6u83O69v/Qf7Z86QMG9IuRKp9MLzGSLC3e9revYqP88ZGZt3/cywx0d1yDiH6IwmFQvQDPp+Pb74+TNa+f1JacJbImDjCo6I7vSKjUrzEVn5BfMVnaBRPh/sIcSXqjankmqdQXFlHlDWem+Ys5LpJU9HqLu/K3vf9hU6nk9iEnusv9Co+zhrqmblmEdb4uIAeW4j+TmYfC9EPqNVqRmVMZPlvHmXqvMU4HXaKzubicna8vpui0lBmvYnTI/4HteY0uZksrpojOIpvku7kEzIpa3Bww5RZrHjocW6YMvOyAyFAfFICt8ybg8vZyfqFQYFfv9CleMjT1zDt3vlXFQhramqIiYmhsLAwcMV1oy1btnD99dd3ef/Kykqio6MpLS3tvqJEnyShUIh+JMxkZuaie1j6q98xeGQ6pQXnqLxY0uESHwDO4EjOpfyCnNS11BuH9XC1YiBw6szkJ84nK+oujlcoRMcnsfj+3zJ/+S+JjLZe1bHHjs9gwk2TqCwrx+1q/6jH6lAXDQF6PrLd5yTHUMPMlQtJSE66qmNt3bqV+fPnk5KSAsDXX3/N0qVLSUpKQq/Xk5aWxrZt2wJQde+IiYlhxYoVPPHEE71diuhhnTcmCSH6rOTUNJY+sIljBz/h4H+/R/43p4hLGtzpjE+7IZ4zQ5YR1lxEUvknGG3FPVyx6G/c2lAuxtzEhdAxlJYUERLqZOq8xUy+ZR6hxsDM1FWr1Uy7bRYVF8vJP3OOlNSh7VoiSsx2Qq6yv7Dea+dsWAPz773rqgOhw+Fg+/bt7Nu3zz929OhRoqOj2bVrF0lJSRw8eJB169ah0Wh48MEHr+p8veW+++5jwoQJPPvss0REyESca4VcKRSinwoKCWHSjLmsWP8Y1028maryUkoLz+H1ejt9TXNYMnnD7uPbwfdg00s/lWjPowmhJHY6J0b+hlPuBEqKCxgyaiz3/Pp/MXPh0oAFwu8ZQg3MWXQ75sgIKi6WtdvuVUOR+cqfj1zpaeQbYz23ByAQAnz44YdotVomT57sH1u9ejXPP/88U6dOZciQISxfvpz77ruPt99++7KOvWrVKhYuXMjTTz+N1WolPDycJ598Eo/HwyOPPEJkZCSJiYm88sorbV73u9/9juHDh2MwGBgyZAiPP/44bvelr7Du2LGDtLQ0QkJCGDlyJC+88EKb7enp6cTGxrJ3797Leg+if5MrhUL0c9FxiSy67zeMGJtJ1odvU/jtaUwRUURZ4zt8IgpAgymVBuMwIhpySSzfj95Z3cNVi77Gq9ZRYZnARcuN1DQ0U3vmWyKircxbej8ZN84gKDi4284dn5TAzHlzeGfPWzQ1NLZbM/D7/sLLXb+wyFlNWZSLBcsWkxiAQAiQlZVFZmbmT+7X0NBAZGTkZR//k08+ITExkaysLA4cOMCaNWv44osvuPnmm/nyyy95/fXXeeCBB5g1axZJSa3vyWg0snPnTuLj4zl16hRr167FaDSyadOmDs/x0ksv8cQTT/CXv/yFjIwMjh8/ztq1awkNDWXlypX+/SZMmEB2djarV6++7Pch+ieZfSzEANLcUM+JQ/s5/NlH1FaWEW6JITI69pLrxqH4sNSdJKHiM4Jd9T1Wq+gbfCoNlVE3UBp9E7XNTqorLmIKj+S6SVPJnDKLyJjYnqnD5+PDf77HwU+zA7J+Ya6jFFeygTuW/Jzo2JiA1blw4UKioqLYvn17p/t88cUXTJ06lQ8++IBZs2Z1+dirVq1i//795Ofn+/+gGzlyJDExMWRlZQHg9Xoxm828/PLLLFmypMPjPPvss7z++uscOXIEaJ1o8s4773DixAkABg0axDPPPMPSpUv9r/njH//Ivn37OHjwoH9sw4YNHD9+nE8//bTL70H0b3KlUIgBJMwczk1zFpI+/iaOHfiYo59/TH7eyUsvYaNSUx15PdURY4lo+BZr9VeYbIU9XrvoWU6dicqoG6iKuoE6m4uq/EIMYSYmTZ/L+GlziIkPzJW1rlKr1UyfO5uKsgoKLtFfqK82EuTrvPPJh8JxeyFho+NZvHghpvDOF3y/Eg6Hg5CQkE635+TksGDBAjZv3nxZgfB7o0ePbnOF32q1MmbMGP/3Go2GqKgoKiv/sw7pW2+9xXPPPce5c+dobm7G4/FgMnV8m7+qqoqSkhLWrFnD2rVr/eMejwezue3PSq/XY7fbL/s9iP5LQqEQA5A50sL0+XczdsLNHM3+b04c+oz8b05hiU3AFB7ZaTisC0+jLjwNvaMSa81XRNWdROMLzOxP0Tc0hiZTYZlAnXkktuZmKs8VEKw3kDF5OhOm30Z8cvvFpHuKIdTArYtu59X/vZOKi2Xt1i/0qqEo3M7QTtYvdOPlK9t5kieOYs6ieYToA/+4PIvFQl1dXYfbcnNzmTFjBmvXruWxxx67ouPrfrS8j0ql6nDM5/MBcOjQIZYsWcKTTz7JnDlzMJvNvPbaa/zpT3/q8Pjfv+6ll15i4sSJbbZpNJo239fW1hIdLYt7X0skFAoxgEVZ45h9171cN3kaX+3/FzlHDlJTfpGY+CTCzOGdvs6hj6Ew8XZK4mYSXXucmOrDhLg6/kUo+j6vWkdNeDoVlgk49FYctmYqzn6DVqdjzPifMWHarQwaNrLXwuAPxSclcMvtc3h3zz9pamzCaGo7o97eSX9hIy0ctueTMfNGpt96yxWtndgVGRkZ7Nq1q914Tk4OM2bMYOXKlTz11FPdcu6OHDhwgOTkZB599FH/WFFRUaf7W61WEhISyM/PZ9myZZc89unTp5k2bVqgShX9gIRCIa4B1oRB3H7PWsbdOIMv93/INye+oqrsAlHWOIydXTkEvJoQyqMnU26ZhLnpLNbqrzA3nQ/wMyZEd2kJCqcyajxVkRl4NCHYm5uoPpeHCjXDx4xj4i1zGTxiTKcTknrLdePHcbH4Agc/zSYkJKRdf2F1qIswl9bfX1jirSPPV86MO29l/E2TuvX9zJkzh9///vfU1dX5l2rJyclh+vTpzJ49mw0bNlBeXg60Xnnr7ittw4YNo7i4mNdee43x48fzwQcf/OSM4S1btrB+/XpMJhO33XYbTqeTI0eOUFdXx4YNGwCw2+0cPXqUp59+ulvrF32LhEIhrhEqlYqEwcNYlPIgRWfzOHbgY86eOkZVeSmm8Egio2M7f6aySkWDaTgNpuGEOGuIrjlCZH0uwe72T6IQvcun0lJvGkZ1xPXUm4bjUxTqayqprz5LiCGU1FEZjLvpFlLTx7W7XdhXdLW/MLgmjDxbKXWhbubf+XPGZIzt9trS09PJzMzkjTfe4Je//CUAb775JlVVVezevZvdu3f7901OTm7z1BOVSsWOHTtYtWpVwOpZsGABv/3tb3nwwQdxOp3MmzePxx9/nC1btnT6mvvvvx+DwcCzzz7Lpk2bCA0NJT09nYcffti/z7vvvsugQYOYMmVKwGoVfZ/MPhbiGqUoCpUXS8g9dohTX2VTU1GGLigIS2wCIYbQrhyAMPsFIutziWiQgNibvg+CtebRrUFQE4TL6aSm4iIOWxPmyGhG3TCJMZk/IyFlWJ+7MtiZi8UXePWlv+NyuYlNaLuuptvl4kJBEdHxcdzxi0WkpA7psbr27dvHxo0bOX36dJd/loWFhaSmppKbm0tqamo3V3j1JkyYwMMPP8w999zT26WIHiShUAiBvbmJb08e4cShz7iQfwaPy0VkTCymiKiu9ZlJQOxxHQVBRVGwNTVQXXERFSqsiclk3DidkdeNxxxp6e2Sr8jxL4/w7qtvERFt8fcXNjU0UllWzvBRI7n15/OxxvXMsjk/tG3bNu68807/WoE/5cUXX+TUqVP89a9/7ebKrl5lZSU7d+7kkUce6RN9pqLnSCgUQvh5vV6KzuRy6vDnfHvyCE0NdRhN4UTGxHW9cV9RCLWXElWfIwExwLwqLQ2mVGrNo/xBEMDn9VJXXUl9bRWGUCODR6Zz3cSbGTrqum5ddLon+Hw+9r31Hl/s/5xBQ1KorarG2dLChCmTmT53NnpD4GcYC3GtklAohOhQdflFco8f4utDn1FTcRFFAXNkFOYIS+e9hz+mKIQ6LmJqysdoK8JoK0Hjc3Vv4QOIAthDrDSFJdMUmkKDcWibINjUUEd9TRU+r5dwSwxjMn/GqHGTenVZme5gt9l5bfs/yD1xipi4WG65fTYZEzP7zW1wIfoLCYVCiEty2G0UfHOK8zlfczb3OI11NQCYIi4zIAIoPkIdZRibCzE1FxFmK0brc3ZT5f2Pggq7PpbG70JgU+ggvNr/XAnzeb001tfSUFuNz+vFGB5ByvDRDBudwdC0sRjDI3qx+u5VduEiRw9+xXXjM0ganNzb5QgxIEkoFEJ0ma2pkaKzuZzP/ZqzOVcZEAEUHwZHOSZbEcbmIoy2IrTelm6ovG/yocZuiKMxNJmmsNYQ6NO0vd3bWRBMHTOOlOGj+m2voBCi75FQKIS4IramRorO5XE+5wRnc07QWFcNgCk8ijBzxJX1sikKIc4aQpzV6FuqWj+c1YQ4q/v1k1UUVDiDwnGERNMSbMEREt36ERztvx38Qx63m+bGegmCQogeJaFQCHHVfhgQz+WcoKmxHq/HjUarJcwUTpgxnKBLPC/2JykKQa569D8Oiy1Vfer2sw81zuDI7wKfhRZ/+ItCUXc+UcftdmFrbKC5sR6X04laoybMFE5K6qjWIDhiNOaIqB58J0KIa5GEQiFEQDnsNiouFFFRWkTxuW+4UHCW5sZ63C4XGq2mNSSawgkKDgnIZAi114XWY0Pntbd+9tjRen7wtdf+3ZgNrceOWvGAoqDC1+mTWRRUKCo1ikqNVxOCWxOKR2vArQ3Fo9Xj0Ybi1hrwaL77rDXg0Ybi0eihC+/J7XLS/F0I9LhcqDUawszhxCamkDJ8NNbEZGITUwgzma/65yOEEF0loVAI0a1aHHYqS4spLymkpOAMJflnaG6ow+10otZoMIQZCdGHEmIwoNUF9eys2e/CIYoCqFBUKlAFdkarx+2mxWGjxW7HbmvC43ah1eoIM4cTP2gIyamjsCYkY01MJtRoCui5hRDickgoFEL0KFdLCxUXW0PihYKzlBaew2FrosVuw+12oQI0Ol1rUNQbCNGHogsO7tNLrCiKgsftosVubw2ADjtulwuVCjQaLcF6A/rQMGITk0kaOpLYxBRiE5PRh4b1dulCCOEnoVAI0at8Ph9NDXU01FTRUFtNfU0VVeUXqCwtprmxnhaHHZezBRWg1mjRBQWj1enQanVodTo0/q+DUKvVAQ+PPq8Xj8eNx+32f/Z63HjcLtxuF16PBxTQ6nSEGELRh4YREz8Ia8IgzJEWzJHRhEdFYwqPvPzZ2UII0YMkFAoh+iRFUbA1NrQGxdoq6muqqK0oo76uGltTAy12W2tQc7taw5rHjc/rbQ2FCigoaDQaVCo1qFSovvsA/J8VRfF/gILiU/D6vKha7yb799Vodeh0QWi+C6IhegOhRjPG8Ags1gTMkRbCo6IxR0VjNEfIospCiH5JQqEQol/yejy0OOw4HXYcdhtOh52WFjst333tsNuwNzfi9XjweT34fL7WD68Xn+JDrVK3XllUq9FoNKg1WtRqDQaj8T+3rg2hrbd+9a2fvx/r8iP/hBCiH5FQKIQQQgghkHscQgghhBBCQqEQQgghhJBQKIQQQgghkFAoxIBWU1NDTEwMhYWFAT/2li1bsFqtqFQq3nnnnYAf/3Jcbg0bN25k/fr13VeQEEL0QxIKhRjAtm7dyvz580lJSQHg66+/ZunSpSQlJaHX60lLS2Pbtm2Xfdy8vDyefPJJ/va3v1FWVsZtt90W4Mq716ZNm9ixYwcFBQW9XYoQQvQZspKqEAOUw+Fg+/bt7Nu3zz929OhRoqOj2bVrF0lJSRw8eJB169ah0Wh48MEHu3zs8+fPA7BgwYI+/aSRzsTExDB79mxefPFFnnnmmd4uRwgh+gS5UijEAPXhhx+i1WqZPHmyf2z16tU8//zzTJ06lSFDhrB8+XLuu+8+3n777S4fd8uWLcyfPx+g3RNEduzYQVpaGiEhIYwcOZIXXnjBv62wsBCVSsUbb7zBlClT0Ov1jB8/njNnznD48GEyMzMJCwvj1ltvpaqqyv+6w4cPM2vWLCwWC2azmalTp3Ls2LFL1lhaWsrdd99NREQEUVFRLFiwoN0t9DvuuIM9e/Z0+X0LIcRAJ6FQiAEqKyuLzMzMn9yvoaGByMjILh9348aN7NixA4CysjLKysoAeOmll3j00Ud56qmnyMvL4+mnn+bxxx/n73//e5vXP/HEEzz22GMcO3YMrVbL0qVL2bRpE9u2bSM7O5vz58+zefNm//5NTU2sXLmS7OxsDh06RGpqKnPnzqWpqanD+ux2O9OnTycsLIysrCw+//xzf9h0uVz+/SZMmEBJSQlFRUVdfu9CCDGgKUKIAWnBggXK6tWrL7nPwYMHFZ1Op3z00UeXdey9e/cqP/7vIykpSXn11VfbjP3hD39QJk+erCiKohQUFCiA8vLLL/u379mzRwGUjz/+2D+2detWZcSIEZ2e2+PxKEajUXn//ff9Y4Cyd+9eRVEUZfv27cqIESMUn8/n3+50OhW9Xq/8+9//9o81NDQogLJ///7LeOdCCDFwSU+hEAOUw+EgJCSk0+05OTksWLCAzZs3M2vWrKs6V1VVFSUlJaxZs4a1a9f6xz0eD2azuc2+Y8eO9X9ttVoBSE9PbzNWWVnp/76yspLNmzfzySefUFFRgdfrxW63U1xc3GEtR48e5dy5cxiNxjbjLS0t/l5IAL1eD7ReWRRCCCETTYQYsCwWC3V1dR1uy83NZcaMGaxdu5bHHnvsqs/l8/mA1lvIEydObLNNo9G0+V73g+cGf9+P+OOx748HsGrVKqqqqnjuuedITk4mODiYyZMnt7kV/ONabrjhBnbv3t1uW3R0tP/r2tradmNCCHEtk1AoxACVkZHBrl272o3n5OQwY8YMVq5cyVNPPRWQc1mtVhISEsjPz2fZsmUBOeb3srOzeeGFF5g7dy4AJSUlVFdXd7r/uHHjeP3114mJicFkMnW63+nTp9HpdIwePTqg9QohRH8lE02EGKDmzJlDTk5Om6uFOTk5TJ8+nVmzZrFhwwbKy8spLy9vM9v3Sm3ZsoWtW7eybds2zpw5w6lTp9ixYwd//vOfr+q4w4YN4x//+Ad5eXl8+eWXLFu2zH/rtyPLli3DYrGwYMECsrOzKSgo4LPPPuOhhx7iwoUL/v2ys7P9s6CFEEJIKBRiwEpPTyczM5M33njDP/bmm29SVVXF7t27iYuL83+MHz++zWtVKhU7d+68rPPdf//9vPzyy+zcuZP09HSmTp3Kzp07GTx48FW9j1deeYW6ujoyMjJYsWIF69evJyYmptP9DQYDWVlZDBo0iDvvvJO0tDRWr16Nw+Foc+Vwz549bfofhRDiWqdSFEXp7SKEEN1j3759bNy4kdOnT6NWd+1vwMLCQlJTU8nNzSU1NbWbK+wdH3zwAY888ggnT55Eq5UuGiGEAOkpFGJAmzt3LmfPnqW0tJSkpKQuveZf//oX69atG7CBEMBms7Fjxw4JhEII8QNypVAIIYQQQkhPoRBCCCGEkFAohBBCCCGQUCiEEEIIIZBQKIQQQgghkFAohBBCCCGQUCiEEEIIIZBQKIQQQgghkFAohBBCCCGQUCiEEEIIIZBQKIQQQgghkFAohBBCCCGQUCiEEEIIIZBQKIQQQgghkFAohBBCCCGQUCiEEEIIIZBQKIQQQgghkFAohBBCCCGQUCiEEEIIIZBQKIQQQgghkFAohBBCCCGQUCiEEEIIIZBQKIQQQgghkFAohBBCCCGQUCiEEEIIIYD/D9qzuPT7ozNgAAAAAElFTkSuQmCC", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig2, ax2 = plt.subplots()\n", "\n", "dataforpie.plot.pie(ax=ax2, y=1, autopct='%.1f%%',shadow=True, startangle=90, explode = (0.1, 0, 0, 0.2,0,0), legend=False, ylabel='')\n", "ax2.set_title('Percentage by ticket class and sex of passengers that survived (class,sex) ')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(3114:04:Exercises:Problem_1)=\n", "### Problem 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Previously](3114:04:stop_and_think_1) in this lesson we had the code: \n", "\n", "```{code}\n", "data=raw.loc[:,['Survived', 'Pclass','Sex','Age','Fare']]\n", "print(f\"We have {data.shape[0]} records. Here are the first 5.\")\n", "data.head()\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice the use of the f-string and the syntax {data.shape[0]}. When you see code that is unfamiliar you should stop and test the coding to see what is going on. For example here, we might ask: Why are we using curly braces? What does .shape do? and why did we put [0] after it? \n", "\n", "Answer/Do the following: \n", " \n", "a. Remove the \"f\" in the print command and re-run. What do you get? \n", "b. Replace {data.shape[0]} with {data.shape[1]}. Now fix the word \"records\" in this statement so that the sentence makes sense. \n", "c. What does data.shape give you? \n", "d. Replace data.head() with data.head(2) and data.head(5). How does this compare to data.head()? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Group the titanic data [see section: groupby 1 column](3114:04:groupby-1-column) by 'Pclass', `df=data.groupby('Pclass').mean()` and make a barchart for the data 'Survived', `dataforbar=df.loc[:,'Survived']`. How would you interpret these results for example, which class had the lowest survival rate? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*2 column groupby*: Make a bar chart showing the average ticket price for 1st, second, and third class passengers broken out by sex. For this problem, put Pclass on the x-axis and plot a bar for each Sex (male or female) with a height equal to the average ticket price (y-axis). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem 4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a. Re-plot the [example in \"groupby 3 columns\"](04:groupby-3-columns:try_1) but now only using **one** .unstack() rather than two. Notice how the labels and plot change relative to the groupby order: 'Survived','Sex','Pclass'. The last column in this list, 'Pclass' becomes the legend. The x-axis contains combinations of the first two, 'Survived' and 'Sex' with 'Survived' being ordered first so we get (died, female), (died,male), (survived, female), and (survived, male). Make sure you include an appropriate title and y-label. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b. Now change the order of the groupby columns to: ['Sex','Pclass','Survived'] and replot again using only one unstack(). Comment on how the order of the groupby corresponds to changes in your x-axis and legend. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using **pandas**, make a pie chart showing the percentage of passengers that died on the titanic broken out by sex and ticket class. Your pie chart should have 6 pieces: (1st class, female), (1st class, male)... (3rd class, male). Explode only the pie piece for (2nd class,male) by 0.25. Remove both the legend and y-label. Make sure you correct the title. " ] } ], "metadata": { "jupytext": { "formats": "ipynb,md" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }