{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## CS 132 Homework 03 B \n", "\n", "### Due Wednesday July 28th at Midnight (1 minute after 11:59pm) in Gradescope (with grace period of 6 hours)\n", "### Homeworks may be submitted up to 24 hours late with a 10% penalty (same grace period)\n", "\n", "\n", "Please read through the entire notebook, reading the expository material and then do the problems, following the instuctions to try various features; among the exposition of various features of Python there\n", "are three problems which will be graded. Each problem is worth 10 points. \n", "\n", "You will need to complete this notebook and then convert to a PDF file in order to submit to Gradescope. Instructions are given here:\n", "\n", "https://www.cs.bu.edu/fac/snyder/cs132/HWSubmissionInstructions.html\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Here are some imports which will be used in the code in the rest of the lab \n", "\n", "# Imports used for the code in CS 237\n", "\n", "import numpy as np # arrays and functions which operate on arrays\n", "\n", "import matplotlib.pyplot as plt # normal plotting\n", "\n", "\n", "# NOTE: You may not use any other libraries than those listed here without explicit permission." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Gaussian Elimination\n", "\n", "# number of digits of precision to print out\n", "\n", "prec = 4\n", "\n", "########################################################################################################\n", "\n", "# Returns the Row Echelon (upper triangular) form\n", "\n", "def forwardElimination(A,traceLevel=0):\n", " \n", " A = (np.copy(A)).astype(float)\n", " \n", " if (traceLevel > 0):\n", " print(\"\\nRunning Forward Elimination on:\\n\")\n", " print(np.round(A, decimals=4),\"\\n\")\n", " print()\n", " \n", " (numRows,numCols) = A.shape\n", " \n", " # r = row we are currently working on pivot value is A[r][c]\n", " r = 0 \n", " for c in range(numCols): # solve for variable in column c \n", " # find row in column c with first non-zero element, and exchange with row r \n", " r1 = r\n", " while(r1 < numRows):\n", " if (not np.isclose(A[r1][c],0.0)): # A[r1][c] is first non-zero element at or below r in column c\n", " break\n", " r1 += 1\n", " \n", " if(r1 == numRows): # all zeros below r in this column\n", " continue # go on to the next column, but still working on same row \n", " \n", " if(r1 != r): \n", " # exchange rows r1 and r\n", " A[[r1,r],:] = A[[r,r1],:] \n", " if (traceLevel == 2): \n", " print(\"Exchange R\" + str(r1+1) + \" and R\" + str(r+1) + \"\\n\") \n", " print(np.round(A, decimals=4)) \n", " print() \n", "\n", " # now use pivot A[r][c] to eliminate all vars in this column below row r\n", " for r2 in range(r+1,numRows):\n", " rowReduce(A,r,c,r2,traceLevel)\n", " \n", " r += 1 \n", " if (r >= numRows):\n", " break\n", " \n", " return A\n", "\n", "# for pivot A[r][c], eliminate variable in location A[r2][c] in row r2 using row operations\n", "\n", "def rowReduce(A,r,c,r2,traceLevel=0):\n", "\n", " if(not np.isclose(A[r2][c],0.0)):\n", "\n", " factor = -A[r2][c]/A[r][c] \n", " A[r2] += factor * A[r]\n", " \n", " if(traceLevel == 2):\n", " print(\"R\" + str(r2+1) + \" += \" + str(np.around(factor,prec)) + \"*R\" + str(r+1) + \"\\n\") \n", " print(np.round(A, decimals=4))\n", " print()\n", "\n", "# Take a Row Echelon Form and return a Reduced Row Echelon Form\n", "\n", "def backwardSubstitute(A,augmented=True,traceLevel=0): \n", " \n", " numRows,numCols = A.shape\n", " \n", " if (A.dtype != 'float64'):\n", " A = A.astype(float)\n", "\n", " # now back-substitute the variables from bottom row to top\n", " if (traceLevel > 0):\n", " print(\"Creating Reduced Row Echelon Form...\\n\") \n", "\n", " for r in range(numRows):\n", "\n", " # find variable in this row\n", " for c in range(numCols):\n", " if(not np.isclose(A[r][c],0.0)):\n", " break \n", " \n", " if ((augmented and c >= numCols-1) or (c >= numCols)): # inconsistent or redundant row\n", " continue \n", " \n", " # A[r][c] is variable to eliminate\n", " \n", " factor = A[r][c]\n", " \n", " if (np.isclose(factor,0.0)): # already eliminated\n", " continue\n", " \n", " if(not np.isclose(factor,1.0)): \n", " A[r] *= 1/factor\n", " if (traceLevel == 2):\n", " print(\"R\" + str(r+1) + \" = R\" + str(r+1) + \"/\" + str(np.around(factor,prec)) + \"\\n\") \n", " print(np.round(A, decimals=4))\n", " print()\n", "\n", " for r2 in range(r): \n", " rowReduce(A,r,c,r2,traceLevel)\n", " \n", " return A \n", "\n", " \n", "# try to find row of all zeros except for last column, in augmented matrix. \n", "\n", "def noSolution(A):\n", " numRows,numCols = A.shape\n", " for r in range(numRows-1,-1,-1): # start from bottom, since inconsistent rows end up there\n", " for c in range(numCols):\n", " if(not np.isclose(A[r][c],0.0)): # found first non-0 in this row\n", " if(c == numCols-1):\n", " return True\n", " else:\n", " break\n", " return False\n", "\n", "########################################################################################################\n", "\n", "# Runs GE and returns a reduced row echelon form\n", "\n", "# If b == None assumes that A is NOT an augmented matrix, and runs GE and returns Reduced Row Echelon Form\n", "\n", "# If b is a column matrix then adjoins it to A and runs GE;\n", "# Always returns the Reduced Row Echelon Form\n", "# If inconsistent then also prints out \"Inconsistent!\"\n", "\n", "# If b is a length n array instead of a 1 x n array (column vector)\n", "# b will be converted to a column vector, for convenience. \n", "\n", "# traceLevel 0 will not print anything out during the run\n", "# traceLevel 1 will print out various stages of the process and the intermediate matrices\n", "# traceLevel 2 will also print out the row operations used at each step. \n", "\n", "# If you want to produce an Echelon Form (NOT reduced), then use forwardElimination instead. \n", "\n", "# See examples for more explanation of how to use this\n", "\n", "def GaussianElimination(A,b=None, traceLevel = 0):\n", " if( type(b) != type(None)):\n", " if( (A.shape)[0] == 1 ):\n", " b = np.array([b]).T\n", " Ab = (np.hstack((A.copy(),b))).astype(float)\n", " else:\n", " Ab = A.copy().astype(float)\n", " \n", " if( traceLevel > 0 and type(b) == type(None)):\n", " print(\"\\nCreating Reduced Row Echelon Form:\\n\")\n", " print(np.round(Ab, decimals=4))\n", " elif( traceLevel > 0 ):\n", " print(\"\\nRunning Gaussian Elimination on augmented matrix:\\n\")\n", " print(np.round(Ab, decimals=4))\n", " \n", " B = forwardElimination(Ab,traceLevel)\n", " \n", " if( traceLevel > 0 ):\n", " print(\"\\nEchelon Form:\\n\")\n", " print( np.round(B, decimals=4) + np.zeros(B.shape),\"\\n\") # adding -0.0 + 0 gives 0.0\n", " \n", " if ( type(b) != type(None) and noSolution(B) ):\n", " print(\"No solution!\")\n", "\n", " C = backwardSubstitute(B,type(b)!=type(None),traceLevel)\n", " \n", " if( traceLevel > 0 ):\n", " print(\"Reduced Row Echelon Form:\\n\")\n", " print( np.round(C, decimals=4) + np.zeros(C.shape),\"\\n\") # adding -0.0 + 0 gives 0.0\n", " \n", " return C\n", "\n", "########################################################################################################\n", " \n" ] }, { "attachments": { "Screen%20Shot%202021-07-23%20at%203.12.04%20PM.png": { "image/png": "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LzlAjR1FmCbQCyYJ+BLMKbYvyK45bOoFe7+dWe/au579M3933lt/V7K8++bNe7/3+X5n57fz580yqC+FLxIgARIgARIgARKQiMAyJjASqcVQSYAESIAESIAEogSYwNAIJEACJEACJEAC0hFgAiOdZAyYBEiABEiABEiACQw9QAIkQAIkQAIkIB0BJjDSScaASYAESIAESIAEmMDQAyRAAiRAAiRAAtIRYAIjnWQMmARIgARIgARIgAkMPUACJEACJEACJCAdASYw0knGgEmABEiABEiABJjA0AMkQAIkQAIkQALSEWACI51kDJgESIAESIAESIAJDD1AAiRAAiRAAiQgHQEmMNJJxoBJgARIgARIgASYwNADJEACJEACJEAC0hFgAiOdZAyYBEiABEiABEiACQw9QAIkQAIkQAIkIB0BJjDSScaASYAESIAESIAEmMDQAyRAAiRAAiRAAtIRYAIjnWQMmARIgARIgARIgAkMPUACJEACJEACJCAdASYw0knGgEmABEiABEiABJjA0AMkQAIkQAIkQALSEWACI51kDJgESIAESIAESIAJDD1AAiRAAiRAAiQgHQEmMNJJxoBJgARIgARIgASYwNADJEACJEACJEAC0hFgAiOdZNkCnlD+58Tryn99cTtbxbnlv1uu/Hn9g0rJXcaqe14rck05829dyke3IoZCuevu7cqTuyuUFYZqs5K4BOjrRG3o60Qasr73wNP59v0JvvKMwCWEqv1QN2ljf/5G9IQlQhDuQaPf4Ng0BtUhDEo0PIaajgB9nbRN09fpjCJRuQeezrPvT0UitRmqIQIebBSG4nKoUp5tgA5RWQLN0NdMYPLN5h54Os++P5nA5Ns2gYSNYsn+SiODvLM1fa1KSl/nl69F1VPUuPTqM4HRM5G8RB7zuQeaDNxj61XL1JQJjFfec6tfUT0talx6HZjA6JlIXiKP+dwDTQbusfWqZWrKBMYr77nVr6ieFjUuvQ5MYPRMJC+Rx3xR0OFh9B9/Gc17d6CytAiKbw02Vu9CfesP8fMrE4hYUkMyBpbGuNRWyhdNZzA5OogLfe+gu/MneOPSTRNC5gsDE0PO66oO6BmZwJWef8ILDbtRrX1/ajcu+EtRVduA1h+8jSs3ZywQdCAuC71aWYUJjBVqQq8ji/kiCA+ewKHq1envlvJvRv0PzmHcdBYjCwOhjSRYcDJrOo3R82+grbUBD5evRdHGR9B89F/RdfYTjE6a2cHIzEAwOwkRjj09I2PvIrhrPQrW7sTzr/VicFy7nVT9Xh27iO7QAVQVFcBf/jQ6rkyaHK29uEx2Zqs6Exhb+ERcWQ7zRUZOoKGsUP21UI7ahucROHYMwdaD2LdjA/yJt4D77sP+47/CrCnUcjAwNaQlX1lGTdWdydA7eLnuq6qnferOZD9e7vkUN00n5HHxZWQQj53/9QRs6Bm+gFDNGvWIdSUOnRpNcaT6Dq53PY0S9bvUV/4iem+a+Qa1EZd+kK6WMIFxFa8XjUtgvsgQOuvKUFD1HN4amloEaRojva9gr5bcxBOZVQfQNZGfG+CiwfNjWgIS+Dop9klcOX5Q/RXsU328GtWHTmAwbDlzibUsG4MkIPygI2BVzxlc73wCK9Xvx4KaNlxNZ6vZDxCo0L5H12BPxzVd7+kLrMaVvkW3ljCBcYusZ+2Kb77ZgSC2rKxFaCDdoc0Ipj88ii0F8Qnr8ncD9Mwm0nUsvq/nkUZ+g97DD6EomoCvxrbDZzCWbiczv5KRNxIxMDKcJV/Hqp7D6NxXEv2B52/sQfp5SMfR01iq1vNhdfMp3DbM22pchjtwrCITGMdQitKQ6Oa7hYHgTmxqfQ/TGZGNoqte2/i0JKYA97S8izsZ6ycuFJ1BYqx8b4yALJqO42xgRyx5KULVC6ccSl40SrIwMKYoa1nVc2G9jEdg8KX6HXoPExgaTSYCC+YWchr9yKdo+7MD6BjO9ntAPUza8RiWx04jZf6lsVgfwRksDpefDRCQQVP1uoPug1jvmztyWLDlKD6cduTQS4yPDAwMSMkqNvW8ho496vUv2nejbytaz06kJjrzPlo3LFfr5e8RbB6BSS29xKWif8mpFzZOTmY47LmAPtzTGLugtxAVgQ9MXMgrOoOFMfKdUQISaHrjbTSvj1+7dS8ae740OjiD9SRgYHAkrKYRsKrnNC6HdqIg9uOuoOqv8e7Y4uPTvIiXHpOSgNWNQrTBRjDZ1QD1KdLqL4j16s7guokA84WBiSHnfVXRNU3eqfi2BDFg5rpzQ/qJzsDQIFhpnoANPW+eQUv5irmjMOo1LkXVz+HkYPyaQvVH4pUfYe/aAvjKnsJrvI16njjfCE/AxkYh1NimcCFw/9wGWvJX6LlhZm+QLwyEEsTjYATX9NYv0LyuILZD8WNL8AJm1UnGBs+8jn8JtKCpsQnNrUG0/eQ0Lo2lv+wyM2TBGWQOnkt1BOzoqSYpAyHURO9ymztl6VPng2np7MfFtw6jZm0RSncF0KO7y1MXRIoCO3GlaM7FIp5CchGuN03LY76MfGYvILjFr+4QVmBT4BzMTPdl/dBsxoi40FMCYvt6pr8VG2KH9BWlFPteegXPbFsH33zZ3E5mbqbUr6Lu++9buLhXbAae2kPKzu3qeQdjvUfVZEW7ziXBX+oR67pXLy6J+YaYwEhp/ExB290oMrWdu2Uz5wPYpF4M6Vv/LE6ZOvqixZgfDHJHW4aeRNZ0GpeC2xN2IsWoangFJ88OYjw694v6+IBr/Tj50mMoi13gq80Nsz14LsudeIt1EZnB4lj5OTsBJ/TUThf9O+oS582KTpr4Lbw6kP+PYmECk91lktVwYqPweMiRL9DVsEG9wr4CTd3DKWaZzBZfHjDINsQlt1xkTePzbWi/gn1Yufc1DKe8+eg2Rk5+eyGJyXQHSUp9RWaQMmAWZiTghJ5TGOpWTxmVlGHz5pLkI35FD6H11K8N3TCRHKYTcSW36NYnJjBukfWsXXnMlxqROond2cOo8KkTgAXeg5lH3S20JzuDhZHwXZyAyJomxJbtltXI5+jYuy52tMaHVfUnkeYm2PjAE/4n9FMdwmDCEr6VkYBNPdUJE/uCu1FaUInm7msIhz9Dd+ufYu38UT41obb0I9BmXDmUYpnWl3r+jK+8IfCx8r2vbVWe6futos4Dowz2HlTKZBpbuF/52+2PKO1/EFR6flSn/P5XllmIXnIGFkac/6vY0PT2VeXMT99SProx4xCmu5Tfubta2fuNTcrKqD0TYlNKlcae/1b+eac60XvKV0S5ceJJ5e49P1amtOWrm5XTv35FeVC9Jzb7K6EfGbft7ANcYjVs6Ikvlb4jf6nsOvKxUhXqVt44WKF8JUrvlnKt5yXlWw0vKW8P/98cz6JaJfTe68rB+woN8rURl8EeHKuWw2SJXeWEgDzZsw5HZBSnDlVhZU0IA7aeGyMxAx0UFswRsK7pnbOtuDfxV2nSBY+JFz+aeF/0F+gYic+98Rnaa4tjR1VK1Vv+xzOLNtSGHfF4fA+jbSjbpI7x5qwziLfA/yIRsKrnbQx3PB59FpKy/gX06SZLXHxdTKbTmql4WI0rVVvulvEUkrt8PWhdHvMlw5nE5bY9WLftCHp1kzIl18z+SVYG2Ue2dGuIrOkETjffG0tg7kF9V5YJ7MI9aPTHk6UdCA0ava1aZAZL15nWR25Rz5lzCGzS5oDJ9IiVRbdZFzyK9uF4wp0tYotxZWvWheVMYFyA6m2T8phvgVMYQ8cbsL7iOZyynbxorcrIYIEG36UiILKmdzDc/mhsZtQVqAr+MvOF54kJzPLH0HHd6CQBIjNIpRnLMhOwqOdwO2qjD7r1ozp0KUMX42pivTGWWN+L5tNGr7ayGFeGSNxaxATGLbKetSuP+eYQaXMZHMH2inoLM0amgywbg3TjYPkCAbE1jT5hPXZaqHBfZ+YLcye7UL8idgSmIoALhudoFJvBglZ8Z4yART0HQ6iOngbNlsAkzmZu4NTmfNAW45pfP3dvmMDkjnWOepLHfFCfL60lL9vW7UHb5fg02Okwac/2+Dv8Q3+2etr6MjFIN16WJxMQXFPtIaU1q+Z+7a46gK6J9FlJ5FIQVdEdkNlJGgVnkCwYP2UlYFHPqW40FvtUr/lQ3NiNqQz9zD9PLk+vtWICk0F8ORdZ3ChyPtjYhWYVX8fh3t9kPuSuLtWe7fHNB7+L84aOtsvCIOfQJe5QdE1ncePUs7EnUa/D3o7P03g6jKtttXOnm1Y+buCp7ImSic4gMVa+z07Aqp5foqcxds1Vxses3MJA8IHo3DAF20O4nD6nXhSq1bgWNZODj0xgcgA5t13IYL74VfIrUFS5G99ubERjpr/6h7HRvwrbQxcNPpFaBga5dYX8vUmgafQuusq5ycTWPo72FA/Ri4z9HIe0h/D57sP+478y6Oe4ehIwiIfK/wYIWNdzduin2B+dfbcIVS+cSvlYisj1n6GhRH0+l68KLb1jBuKJV7EeV7yFXP1nApMr0jnrR3zzRcbO4PC21bGLy+J3Y2T5v3w32r/g7aY5s5FwHYnv6yiyhMnEfKWPItB1HiOT2mHDMMYGTiKwaz18Rfej6fgneT1DqnD2ETIgO55WT7+f/UfUla9Uv0e1R1ccQ/fA9TlPhccw2PtDNFYVI/qAx5OXTXrNTly5Bc0EJre8c9Cb4Oab+SVCD5hMXtRzvZyxNAfWEboLwX2dxG4ao/3HEXz+CdRWlcKvXe/iW4ONDz2G5uBx9I9OJ9U2/kEmBsZHtXRr2tczcvMKzrz6HdTXVmPjmthDHf2lqKp9Ai2hkzhvyWv248qVpkxgckU6Z/3IYz73kJCBe2y9apma8uJ0r7znVr+ielrUuPQ6MIHRM5G8RB7zuQeaDNxj61XL1JQJjFfec6tfUT0talx6HZjA6JlIXiKP+dwDTQbusfWqZWrKBMYr77nVr6ieFjUuvQ5MYPRMJC+Rx3zugSYD99h61TI1ZQLjlffc6ldUT4sal14HJjB6JpKXyGM+90CTgXtsvWqZmjKB8cp7bvUrqqdFjUuvAxMYPRPJS+Qxn3ugycA9tl61TE2ZwHjlPbf6FdXTosal14EJjJ6J5CXymM890GTgHluvWqamTGC88p5b/YrqaVHj0uvABEbPRPISecznHmgycI+tVy1TUyYwXnnPrX5F9bSocel1YAKjZyJ5iTzmcw80GbjH1quWqSkTGK+851a/onpa1Lj0OjCB0TORvEQe87kHmgzcY+tVy9SUCYxX3nOrX1E9LWpceh2YwOiZSF4ij/ncA00G7rH1qmVqygTGK++51a+onhY1Lr0OTGD0TCQvkcd87oEmA/fYetUyNWUC45X33OpXVE+LGpdeByYweiaSl8hjPvdAk4F7bL1qmZoygfHKe271K6qnRY1LrwMTGD0TyUvkMZ97oMnAPbZetUxNmcB45T23+hXV06LGpdeBCYyeieQl8pjPPdBk4B5br1qmpkxgvPKeW/2K6mlR49LrwARGz0TyEnnM5x5oMnCPrVctU1MmMF55z61+RfW0qHHpdWACo2cieYk85nMPNBm4x9arlqkpExivvOdWvw57OjKJ0U8+QP/gDZsBOxyXzWgyrc4EJhMdKZfJY75MeCPX30TT+kIo1SEMZqqYcll+MEg5tCVbKLqmYVxtq0WBokAx/LcSO9oum1BUdAYmhsKqKgGbeo73o+NYAC1NT2HPjkqU+n2q9zai+fS4Tbo247LZu5nVmcCYoSVFXXnMlxZnZBjdTRXwaTsCJjBpMS2tBYL7evYCglv8JpIXLdG5H4ELUyZkFJyBiZGwqkbACT0jCI/8DI1ly+e8V7gfnROzNvE6EZfNEAyuvkyrp/5i4CtvCHysfO9rW5Vn+n6rqDt/ZbD3oFIm1djuKKMnnlYq97Qrw1rclsYgOwOpBMtRsCJrCiX83ovKH6penaz+hlL39T9S7v69u9JyiXz+pvKdY+8o/7uhVekfOKL8sZqpG3uJzMDYCFgrkYBDeuIj5e+3/onyXP+kUlDbrgy98aSyJrEb0+8dist0vxZWMJjosJo0BOTJnlMhjYz8B+pKiuBfoR0O5RGYVIyWZpnIvh7H6ebNKG9+EyPhSBZ5bmEg+IB6dHE5NrS+j5kstZMXi8wgOVJ+MkLAIT0nOrGvUDuiV4RtoQFkc2D2yByKK3tHtmvwFJJthKI1II/5dOQiQ+is24jylu/jb6pjh+N5CkmHaWkWCOzriZM48NB38eG0gV3H/KmmCrT0mb3YUmAGS9OUNkfthJ4RTPU0oTh63VUlWvsnbcakre5EXA6EYaAJJjAGIMlVRR7zJXO9jZHOp1BS/iJ6b15EiAlMMp4l/0lcX0fGL+HcoLEdR+RKCNt86q/ldYdw+paBhCdJd3EZJIXJDwYJOKHnDfS1VMwdrS5uQs+UWU+lCtWJuFK163wZExjnmXrcojzmSwQ1O/RjfLNkK1p6x9Riu2Owu35iZHwvBoF80DR+p1IB1jX/ArdMg80HBqYHnccrOKDn7AcIVKh3a6pHYAr3dWLCEVoOxOVIHNkbYQKTnZFkNeQx3zzY2ctof6RMPXV0BjejhXbHYHf9+cj4RhgCeaBp5FO01axSdzalqO8atUA2DxhYGHX+ruKAnsPtqC3Qrn8pRm37Zw6hciAuhyLJ1oznCcztviPYvCZ2C1j0PJ4mRvzPB3/pTgT6tLzyNq51PI3K0qKE5UUo3fcarmUb5ZJaLo/55mRRf5W270XxlqMJ1xDYHYPd9e0bhr62zzC5Be81TY7H/KfI1TbUaDubVQfQZelWV28Z0NPmNc+8hl09ZzHRuR+F0f1l8i35EfU0fGegATvK1P2lfwNqnv1PDBm+u9puXJlH7eTS/wcAAP//hAXJ5QAAGlVJREFU7Z0PcBRVnscf5rKag5qD2hwatgi1wQqeOUSOlXBuCLJXCa4VOFcBOQkeEHdvgyt/PNZQ7tagS5ZaN8vi4OpV7k5D7RLQ2+wdRk8HV6GQcJJ4YlQSgcwhwbsEiEQiARmSzPd6JjOT6emZpKe73/R7mV8oarrfvP693/v8vt39m9evuxkE+PN17UXZ5HQwxiL+ZyB3wx/R44ty0Pd/qC+bptTLwZKaVnijvqbVVrgKHIMcC1zwCA5k4PQLWDTxLlQe7Ynw1GwfzG4f4YqJRdK1CXiaTcWIqcYt3QV96Ki5F+nKMW7s8jpc1L1dZEX7GZCmI+NhdtlsPHvQUDFj8Fg/zYmmfr8/PnjbXsKa2d9Ezqx85GVlBM+pOVhdf1anw2b90tmMBdWYBTYsMHEVJ10LAjt3ZBITe0cfDFpafhVaBixoetSZkEd8GDiJmkXTkF/ZiKuqOJjtg9ntVc6YWCFdm4AXtakoMY1yS/fqGdQuzlJOJllYXHtG91bqiiIwIE2rY2JmzWQ8B95H5YyxiqbSMLH8DVxWXBlo34MVMxZg0xunlB/3SjLTtBnTAwMDDhS4WnU6a9Ivna1YUU2QBEbpysVXsDozLZgtBkdiMh5AbVcgrRzqa/+7cE7LQnH1CSU89KclIIv4enGy+n5MzN+Ko1ejI2m2D2a311I1XEK6NoxOvaFAMVU7pm+tqxaLM5TjWqxjmj4LSi1BGJCmdUds+Irm4ulrc6EwzX+uDCbFV9/DtgfWYldbb7DZAVysW4GxgQQmB+Xu7uHdCX9rzq+wmSQsjPG3oYx6CPDXww5vms8Knv4gwpdMVlx9mLl/kMvGBErBvIefYLcVfco2n6llD2amRdTluehl5z48wprPXrW4kTHsazfdxr494yb2Ncssf8J2zJ3D1jV8yViBi3kOrWVTLbNtlSGwa63PsoXz/oMVvvkK+8lMR5Rhs30wu32UO6ZWRdW1TJr2B0CkmCYqiAH2+e7lLHv5y6y/pIa1v7qSZSVqIlBfFAakaUPh02xkJp5Dmvoq/V5Wc3oHu2nbU6zxe1uZs2Bi8Hz5pXJOLVTOqR8y5q/T/nu2MutPNF5oC8z4pbXGtSQJSZLuJgZOujAvPXIeDEP6PBdOhi8VnYe7/FZkrn5lxGvIvt7TOFy7BauKfoJ9ZifK9B1B5cwJ6tEh1Xwdtc9KwHTWTYNj5hY09elGpKOiBNmztxmu4qkxLh2Fume2D2a3D/lhzadpXXs70KRoeXVJPnIcY5GVNx9LNrhQ33LB+CikVJr2x0GsmCamjA7ULZ+sHBMyTY4ci8PAtKbRh+7ml7BldQlm54wHS8vC9HseRmXdMVyKHpDVCzulNN2lnAtzB88zM57EW6/9DI/ujJoTGr7EpJyPZlSiOXweHQmoODobyVOBRmD8p/1TbOff3slWvXpuKGlLu4tVffQ623hrBmM99azs5p8yx78dZNvnTxiqE15Sftmfe5+5//MtVl+9nb3QdJ4xRzlzdz3PFlg3xBFuTcwFE9nztdPswJ7X2cc9/RZ17Tp2wzcK2JL7bmcTBofQFLuXWeuOZWze7jvZmwc3sZnXh7+IaNNEHwJWzG4f4YoVi2Z0fe0Eqy27j/39ni/YLfnfZDecbWXvn7o46JWjgG3aW8e2zr8x+IvLCmdFtSFYTBPBFDhu3cde7Pkuq277A/vBFKMHI4EYmNG0cgzw7P5Httj5CfvL+4vZHZMY63jPzXa91MA6Bm5k86peY/s2fotdnwhjKeuaiOfAEbY57zvsZyf6WfbKR9kDmd9mj/3yPnZT5OG0cydbOGUVe60vnU2peJt5fjGX6Rl/kWq0c6QMJ7nf96Or7iEoqUnECMY43F75HvqVf121DyAjPNs6lmeXcMZzLnBn0kBzJWb47TjK4TY7AhOrKWHL/gsb874Oh8OBP8vbiA8T8LOv0YlbAtdUI/mbXB6/DLWdoSEmZVJZiwvFmdF3HUU7afYXgHEG0Z5Ys25U1xfR6CxEbukLaLkUmgt2FWcbn8fyqf7Je0psJj8Cd4/un1bWdMcWK6LFVC8EZR5C/cPIVGJl/sYDkRgY1bQy0bTtX/BQ2T/jg+7QccHPshdtNQ9CyWXAMh9G/UXS9HAKG5r/koEbc1di5+nok5x6/ov+O5D8rYqks+EoKNNfhv/ahm97Xkd59C3VuZvQcOU4qouzkV/VDF3S9rhQkJIJjNmTP8+Ye+FxFUUkp4kmR3onognIwIiuu36PFXf/Gse80WPqSiJ4bBsKA5dbJ2N5XQfPoAliW8CY6iJzFvWrcxTNO/Qfu+LaFYyBEU2jGwe2bcfbFyKTl2CHAzdo+G/7LYLLE31CjgtF4i+MxjP4Y95/fmPjMMN5OOouTj+SiFusE544btSv5IdCvARGmd3SUDEz6iSXh7XPOzFvbAmqNZlmHGiUwECZxCvYc2BSOIFJWNf+X1AVWOs+H0fgodtyE7k9Mo4pKYrlOaiqcF55C+uzlWdcpd2FqpYrqq8SXxGNgZFjtQ/XvNdiz93yfYSq2eOgXO9AQ4z8JnFeom9hNJ6hOVVKApMe55wYMf8lvaQGif3EMepX8nkLmMAoQ4wtVchXXcpIwzjHOIxdXIsuvYwogREwgVFGDro/g8fjGeH/PjhnKQcy/y+MWU7sD9f/FGd7Q5dShhOCmDtgwrq+5oVm8CXc7W5lEp//lz2NwISRCLfgw5X9G5Dt1/Gwl771Oi6erhPW9DBdDUwMzizEprc7Yyc4w2wr51cG49n3DiqmDD74NSPeObGjBiWBEVojE8cN+mVDEIRMYDBwDK550Xf9JPIkQYWklQmMVLPb5RFffL2b7YPZ7eN7ZuobK3QdduAUakomGn+uiFSa9nda0JiG4xFroRv71+cpSWYGpjnfVWbxmf0TkIFFmvZdOIDNdz+ArUfOG09eUkTT4fmdoee/aGQVMf8lcuTvajtaT4WeEaPZKKJAQJ1FeBe5KNZdSOGZ5H2sY+ffsZtX/YF9FSrL3sD2H9/G5mdETrMOfRnj8392sLk3r2MNltyFJNMzM0zMbI+B0Z4is30wuz2vXlug65Brn+9mS7JXssaVr7Bjz3+XRT9JJ1Qt/qdMmvb3QtSYxifM+g+xTTf/DXu6/TbmbDrInrpDeaSYqT8RGZjTNC63s3dfeZFt3/osq2v5kjmmL2c//9dfsUdm/7mBO+tSQdP9rHPnEjZl1V7Wl14S5662iOe/THOyppan2B3XdTL3xp8zT9nT7Ee3jqRDEXUWZ8eJzGaEWlY97TF0J1ICHlo5ApNAs/ZXlSd7js/KbB/Mbh/Ls8HnVlSufwybdzbiQvS82libxCozq+uAzeDj3CetQl3ntVitjMIyHjHli6m/yYlp/stH2Ruw/4pRwUT6aDUDmzXt/RT7dz6HZyofR1nJdChJ+OBl4/ElcLXoGSmIZCPjspF4Rsx/iftsl5OoLhq8gjFudb1yf5f/qec/xEO63x1oxC97+It5CSnAIjT8qog6chhMLydKYAScA6M3eGZ3ILPbx/CzT3mFxS3BW5eVodsF1a367obTmDKpa8Wer/NllGYrcwXeOWd8uF3jl+gFHGLKtcu9aHLOUk7I6che/xbMTt8ddNViBgJpGsp9NJ2HtmNJ4PEAaboeVso1fEkxbiCe4fkv6ZhS8Y7yOMAYf143yh2hZHAW7l92DxY9eSCBH10G/IrhRjKKBE5gfLjasAm5SlaeXlyN04n+gKEEhhIY/y+6AovuxOqtx+pxwYOCYjetqBrthvZQk7r2tqJm6XdQuut4ir2JXZ6DakAW4VuCc5V30Oi+9WAERVnMQBRNh3vdh676f8Bk/36bEnciJR5P35l6bC4vR3n5Y3A1xNNVFw5tWYBJaRnImvUgnLuPojuh82fifoVDmOQFgRMYhcRAM6ryb1Gec/G/iWOhBMa6k3fi9G3egscO2IPm6lLkOSZgaslS3JP3qPEHJBrVte8cDj25Eg+nXPLilxOPmNos04Sbt5qBAJqOZhAaYUiJB5BaHc9omEbXRfVL2x+xExitv/pLKIGhBMbKERiV8pQdvGi98QRGZUvnSkonL35G8hxUdUbUQDWeDGzQdEwCg31MK3ShLaFRg5jGBC/kGU8zXRfVL22fKIHRMpG8RB7x8QPNmYH/V+K9v0niQwKVx6zv/DEeiTvycgHvNxyP8TROfoSTb5lzTJPfIQMtcmSQdE3H6X7gwX8TMc91zOAcszh2hSzmGE9T/RXVL22nKIHRMpG8RB7x8QPNl4Gv7Te4f1OcCXSWd0pJXnatxdJ4k/B8F9FS8xg2GLnMarmvPA3yjSlPz62zzY9B8jTdj0ueIzjwXjt6NSMsXpyuWYrswq1ovKTrhTHWobXFEr94muuOqH5pezVKE5ihiZJsXBnqtXuKlsSoKZFHfPyQ82RwBS1VD2HD/m5+7oct+5OXVZiqeir10ERi5ckIg7edpsQLHXnGNAxc8AVeDJKo6dDrAthY5JT8FLVNHYOT0b0daNr1OBYv3YaGWO9JEjwyxtzjFU9j3gxtJapfQx6GlkZZAuPF2eY/ou6FLVg9W3lKaeAAPxGzV/8Cu+r3ocHTE+r3KP6UR3z8gsCPga9rL76vXD46yf0HYj8uvPHoyMmL8pTX3IqDo/zykV8p/GLKT4dWW+bDIHma9vPohaf+Z1heMDX43JfxyJlVhCXrq1B7oA2XNKMyVjMUyR6feJrvoah+aXs2yhIYbQdTr0Qe8fGLDScGvg688egKbD6SjNEXfnTktMwpplLB4MCANG2jAjjE05LeiOqXtnOUwGiZSF4ij/j4gebBQHmFfd0T+H7cibT8ekOW/QR4xFQ2slYzIE3bqwCr42lVb0T1S9s/SmC0TCQvkUd8/EATA35s7bJMMaUkzi7t8WpXVE2L6pc2DpTAaJlIXiKP+PiBJgb82NplmWJKCYxd2uPVrqiaFtUvbRwogdEykbxEHvHxA00M+LG1yzLFlBIYu7THq11RNS2qX9o4UAKjZSJ5iTzi4weaGPBja5dliiklMHZpj1e7ompaVL+0caAERstE8hJ5xMcPNDHgx9YuyxRTSmDs0h6vdkXVtKh+aeNACYyWieQl8oiPH2hiwI+tXZYpppTA2KU9Xu2KqmlR/dLGgRIYLRPJS+QRHz/QxIAfW7ssU0wpgbFLe7zaFVXTovqljQMlMFomkpfIIz5+oIkBP7Z2WaaYUgJjl/Z4tSuqpkX1SxsHSmC0TCQvkUd8/EATA35s7bJMMaUExi7t8WpXVE2L6pc2DpTAaJlIXiKP+PiBJgb82NplmWJKCYxd2uPVrqiaFtUvbRwogdEykbxEHvHFAu3rPorax1dg0z4z7xuSm0EsLlQmUUx9F9Hmfg4VpSUoyMtCmiMHswpLUFrxHNxtF2H8fYUSMSDB6iDAL56+rtewJncsWIELHh2eqKvw80vdjvk1SmDMMxTMgjziU4O7jHZ3JRbmKDsdy0G5mxIYNZ9UX5ND174L76BqYS7SGFN0HOP/+Dux4Y3PDCYxcjBIdaXq7z+nePpf0LlmxqAGKYHRHw6qKQIBTjsFt6754O08CFfpTDjCB3xKYLjhltawBLq+dBiVhZMxqWg9qt3N6OztB7wX4Gn8d1RF6nvCg6jtuGYgEhIwMNCr1N2ERzyvobNuFSaFjqWUwKSuvOTsOY+dghMJXxeaa50oXbICP1xVhJy00C9WSmA4EZfYrOi6vohGZyFyS3+LNm+Mi0S+dtSVTg2OymSiuPqEgVEY0RlILC9bXLc+nr7Ol1E6eTwc49IGtUYJjC2RpUYNE7B+pzDsykgbfnEcDR90whuodwa1i7OCB3hKYEZCl3rfC67ri/VYc++zaImVvASDNdBShfxgku4odwd1n0gkBWeQSFeorkLA4ngGkuQ8TK94FlsKHJTAkMZkJGDxTpE0BN1wl+dQApM03rI1JLKufbjS9BJ+29wzPFSvG+UO/yhjBqY534VygSnBP5EZJNgVqq4QsDKeg5eOJk9/AocuHYOLEhhSmJwErNwpkkmAEphk0pavLVl1HUH6Yh2Wj/UnMHlYv9/IJPVRwCACBy1aF8+B9t9h6eQ5qDh0QcFq1q7Z7ZMXWboLKXmsk9SSPOJTA6EERs2D1tQEZNV1qBcD6HE/gsksHZOW/g7tA6HyRD5lZ5BIX1OhrkXxHDiJmkVTlUtHB3ApgM2sXbPbJy92lMAkj3WSWpJHfGoglMCoedCamoCsug72wnsUVYVZyFlYhYYLfequ6V6TnIHufqZKRSvi6cXpmiWYmL8VR6+GJo+btWt2++TFjxKY5LFOUkvyiE8NhBIYNQ9aUxOQVddKL7zHsav0VmTM+DHe6jKavPhpSMxAHUxaCxAwH8+B0y9g0cS7UHk0cv6VWbtmt09eeCmBSR7rJLUkj/jUQCiBUfOgNTUBCXUdeCLvMyibPTE4OZ0hbdJ8rK/9CJdCP5bVnRxhTUIGI/Qotb82Gc/ApaNpyK9sxFUVSJN2JUqUKYFRBX40rJgVr10MKIGxi7wc7cqk6ytoq9uEhXkTwomL+qm8WSh2NdNt1HIIj6OXZjTdi5PV90ddOgq5asau34bZ7UN+8P+kBIY/4yS3II/41GAogVHzoDU1ARl13Y/es6fQ2rgXrvV3RzyoUbkTKX0BXCfVv5vV/Y21JiODWP2gskECRuOpPL28xYXizOhLRyGuRu1atX3IDv9PSmD4M05yC2bFm2R3w81RAhNGQQsxCMiq61BX+nDh0FMoHB98QqpyN9KUineQ2IwY2RmEWNDnIAGD8fQ2w1U8NcaloxBXg3ZDm0s0AjPG77MyvEl/o4bAJ2zH3DlsXcOXTHkTKfMcWsumStG3L9i+Nd9id//TKcXbHFbu/m/2/IIJBj2XlYHB7qbEZiZieu00O7DndfZxT79FpK5jN3yjgC2573Y2YUwiJvvZ56/+iP3Vomr2mX+z2VWs9chG9he6bZhgkIibVDdJBIzE8zJr3bGMzdt9J3vz4CY28/pY4jFiN7LLZrePtMV5OZx00cIoIWA2+7YLA43A2EVejnaN67qv0Ylbwu/ZCr1vy+Tn+GWo7Uxs/CTAeaAZVfnBx7w7yuEefI+GzhAYZ6CzAaqWVAKJxnOkS0ch5xO1G9ou9Gl2+5Ad/p90CYk/4yS3II/41GAogVHzoDU1AVl1re4F0Ism56zByb2UwETDSbH1RDXthcdVFGdiuJ6EXO875hL1y76wUQJjH3tOLcsjPjUASmDUPGhNTUBWXat7oTwUJnwSSiuqRnv018OujxYGw3Yyhb5MNJ5D2lEuzBhIZCiBSSFxydrVRHcKUfpJCYwokRDTD1l1HU3zMpor/1o5+Rh5oeNoYRDNJFXXE42ncgmp+zN4PJ4R/u+Dc9a4wQRnlhP7w/U/xdlePa8QTdQv++JHIzD2sefUsjziUwOgBEbNg9bUBGTVtboX8J1AdXEm3UYdhSU1V3lp2qxds9snL5qUwCSPdZJakkd8aiCUwKh50JqagOi69v867hjhF64PVxs3Y0bajZhX9V7U01PVvY29JjqD2F5TaTwCvOJp1q7Z7eP11/pySmCsZ2qzRXnEpwZ1HvWrpwSv6+q9Vqu2MLQmK4OhHtBSNAGxY9rf/EvMcSjPeHHMwGLnHjR3R9+hpCQ4nj0oy5uE6WW70OY18i4BsRlER4zWRyLAK55m7ZrdfqR+W/c9JTDWsRTEkjziiwTm69qLssnpwQRmAua5jmEgskJCy3IySKiLKVdZ5Jj6cGX/BmRHTKxMm3QXyp+pw6HmE2hrPoi6Z9aguHAZnLuPottI7hKIt8gMUk6QFnSYVzzN2jW7vQVodJqgBEYnKHmqySM+9Hvgfm47KivKUBL93pi0bBQs34jKZ1x4zu2BnqlnQzGSiMGQ07Q0LAHBY6q8uLG1fjvWLynCrJzxgUm6WXlzUFhSinVOF3bvb8UFQ6MukVAEZxDpKi3rIMArnmbtmt1eR9ctqkIJjEUgxTEjj/j4MSMG/NjaZZliKtNL9uxSiVztiqppUf3SRpcSGC0TyUvkER8/0MSAH1u7LFNMKYGxS3u82hVV06L6pY0DJTBaJpKXyCM+fqCJAT+2dlmmmFICY5f2eLUrqqZF9UsbB0pgtEwkL5FHfPxAEwN+bO2yTDGlBMYu7fFqV1RNi+qXNg6UwGiZSF4ij/j4gSYG/NjaZZliSgmMXdrj1a6omhbVL20cKIHRMpG8RB7x8QNNDPixtcsyxZQSGLu0x6tdUTUtql/aOFACo2UieYk84uMHmhjwY2uXZYopJTB2aY9Xu6JqWlS/tHGgBEbLRPISecTHDzQx4MfWLssUU0pg7NIer3ZF1bSofmnjQAmMlonkJfKIjx9oYsCPrV2WKaaUwNilPV7tiqppUf3SxmGMv4jR3ygi8AnbMXcOW9fwJWM5i5lz3Vz29eF696fT2fdWz2eTrxuukkDf+c6wAy/Ws4+v+IZx6jw75Po1qzv1FWMFLuY5tJZNHaY2fSUDAdI1Y6RrGZSq30cbND3ajp/anIZK5CYQkT1HvJtF2amC7xmK+nSUw+2VqMdeN8odUX2I1zd/eYELHom6R67GI0C6Vu3DpOt4QpGo3AZNj7LjJ11Ckkju+ly1YafQ55g1tUbZDmgNlFSwQrqmBGa06dwGTY+y4yddQtI/3kc1iQARIAJEgAgQAUEIUAIjSCDIDSJABIgAESACREA/AUpg9LOimkSACBABIkAEiIAgBCiBESQQ5AYRIAJEgAgQASKgnwAlMPpZUU0iQASIABEgAkRAEAKUwAgSCHKDCBABIkAEiAAR0E+AEhj9rKgmESACRIAIEAEiIAgBSmAECQS5QQSIABEgAkSACOgnQAmMflZUkwgQASJABIgAERCEACUwggSC3CACRIAIEAEiQAT0E6AERj8rqkkEiAARIAJEgAgIQoASGEECQW4QASJABIgAESAC+glQAqOfFdUkAkSACBABIkAEBCFACYwggSA3iAARIAJEgAgQAf0E/h8GbvOJuyN6kAAAAABJRU5ErkJggg==" }, "Screen%20Shot%202021-07-23%20at%203.12.31%20PM.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkoAAACqCAYAAABS+GAyAAAK2GlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU9kWhs+9N52EkkAEpITekU4AKaGHIr2KSkgCCSWGhAAidgZHcCyoiGAZ0VERBUeHImNBLNgGxd4nyKCgjoMFGypzA48wM2+999bba52cb+3ss8/e55671n8BoIRyxOJcWB2APFGBJDbEn5GcksrADwAEqAEqIAHA4UrFrOjoCIDa5Px3e3cLQIr5up0i17///1+NyuNLuQBAaShn8KTcPJQ70fGMK5YUAIAcQP0mRQViBV9FWVOCFojybwrOmuAPCs4YZwx5PCY+NgBlBgAEMocjyQKAbIv6GYXcLDQPWdGDg4gnFKFcirIPV8DhoXwMZdu8vPkKHkTZEo0XA0BBTwcwM/6SM+tv+TOU+TmcLCVP9DVuhEChVJzLWfB/Hs3/trxc2eQe5uggCyShsYr90PO7kzM/XMmijFlRkyzkTdSkYIEsNGGSudKA1EnmcQLDlWtzZ0VMcqYwmK3MU8COn2S+NChukiXzY5V7ZUoCWJPMkYzvi94oSC7LSVD6BXy2Mn+JID5pkguFibMmWZoTFz4VE6D0S2Sxyvr5ohD/qX2Dlb3nSf/Sr5CtXFsgiA9V9s6Zqp8vYk3llCYra+PxA4OmYhKU8eICf+Ve4txoZTw/N0TplxbGKdcWoJdzam208gyzOWHRkwyEIBJwAJehNkkAFPCLCxSNBMwXL5AIswQFDBb6tvEZbBHX3pbh5ODkCIDi3Z24Dm/o4+8kRL845VtZhF71FhQYU75QAwCOBKKPZXjKZ+EHgCoegPP6XJmkcMKHUfxg0aenBjSBDjAAJsAS2AEn4Aa8gB8IAmEgCsSDFDAXrVUA8oAEFIFSsAyUg0qwDmwCtWAH2AX2gYPgMGgDx8ApcA5cAlfBTXAfyMEAeA6GwTswCkEQHqJANEgHMoTMIBvICWJCPlAQFAHFQilQOpQFiSAZVAqtgCqhKqgW2gk1QD9CR6FT0AWoF7oL9UFD0GvoE4zAZFgT1ofN4RkwE2bB4XA8PAfOgvPhErgMXgPXwPXwAbgVPgVfgm/Ccvg5PIIARAWhI0aIHcJEApAoJBXJRCTIYqQCqUbqkSakA+lGriNy5AXyEYPD0DAMjB3GCxOKScBwMfmYxZjVmFrMPkwr5gzmOqYPM4z5iqVg9bA2WE8sG5uMzcIWYcux1dg92BbsWexN7AD2HQ6Ho+MscO64UFwKLhu3ELcatw3XjOvE9eL6cSN4PF4Hb4P3xkfhOfgCfDl+C/4A/iT+Gn4A/4GgQjAkOBGCCakEEWE5oZqwn3CCcI3wlDBKVCeaET2JUUQecQFxLXE3sYN4hThAHCVpkCxI3qR4UjZpGamG1EQ6S3pAeqOiomKs4qESoyJUWapSo3JI5bxKn8pHMpVsTQ4gp5Fl5DXkveRO8l3yGwqFYk7xo6RSCihrKA2U05RHlA+qNFV7VbYqT3WJap1qq+o11ZdqRDUzNZbaXLUStWq1I2pX1F6oE9XN1QPUOeqL1evUj6rfVh/RoGk4akRp5Gms1tivcUFjkIqnmlODqDxqGXUX9TS1n4bQTGgBNC5tBW037SxtQBOnaaHJ1szWrNQ8qNmjOaxF1XLRStQq1qrTOq4lpyN0czqbnktfSz9Mv0X/NE1/Gmsaf9qqaU3Trk17rz1d20+br12h3ax9U/uTDkMnSCdHZ71Om85DXYyutW6MbpHudt2zui+ma073ms6dXjH98PR7erCetV6s3kK9XXqX9Ub0DfRD9MX6W/RP678woBv4GWQbbDQ4YTBkSDP0MRQabjQ8afiMocVgMXIZNYwzjGEjPaNQI5nRTqMeo1FjC+ME4+XGzcYPTUgmTJNMk40mXSbDpoamkaalpo2m98yIZkwzgdlms26z9+YW5knmK83bzActtC3YFiUWjRYPLCmWvpb5lvWWN6xwVkyrHKttVletYWtXa4F1nfUVG9jGzUZos82m1xZr62Ersq23vW1HtmPZFdo12vXZ0+0j7Jfbt9m/nGE6I3XG+hndM746uDrkOux2uO9IdQxzXO7Y4fjaydqJ61TndMOZ4hzsvMS53fmVi40L32W7yx1Xmmuk60rXLtcvbu5uErcmtyF3U/d0963ut5mazGjmauZ5D6yHv8cSj2MeHz3dPAs8D3v+4WXnleO132twpsVM/szdM/u9jb053ju95T4Mn3Sf733kvka+HN9638d+Jn48vz1+T1lWrGzWAdZLfwd/iX+L//sAz4BFAZ2BSGBIYEVgTxA1KCGoNuhRsHFwVnBj8HCIa8jCkM5QbGh46PrQ22x9NpfdwB4Ocw9bFHYmnBweF14b/jjCOkIS0REJR4ZFboh8MMtslmhWWxSIYkdtiHoYbRGdH/1zDC4mOqYu5kmsY2xpbHccLW5e3P64d/H+8Wvj7ydYJsgSuhLVEtMSGxLfJwUmVSXJk2ckL0q+lKKbIkxpT8WnJqbuSR2ZHTR70+yBNNe08rRbcyzmFM+5MFd3bu7c4/PU5nHmHUnHpiel70//zIni1HNGMtgZWzOGuQHczdznPD/eRt4Q35tfxX+a6Z1ZlTmY5Z21IWtI4CuoFrwQBghrha+yQ7N3ZL/PicrZmzOWm5TbnEfIS887KqKKckRn5hvML57fK7YRl4vl+Z75m/KHJeGSPVJIOkfaXqCJiqTLMkvZN7K+Qp/CusIPRYlFR4o1ikXFlxdYL1i14GlJcMkPCzELuQu7So1Kl5X2LWIt2rkYWpyxuGuJyZKyJQNLQ5buW0ZalrPsl+UOy6uWv12RtKKjTL9saVn/NyHfNJarlkvKb6/0WrnjW8y3wm97Vjmv2rLqawWv4mKlQ2V15efV3NUXv3P8rua7sTWZa3rWuq3dvg63TrTu1nrf9fuqNKpKqvo3RG5o3cjYWLHx7aZ5my5Uu1Tv2EzaLNssr4moad9iumXdls+1gtqbdf51zVv1tq7a+n4bb9u17X7bm3bo76jc8el74fd3dobsbK03r6/ehdtVuOvJ7sTd3T8wf2jYo7uncs+XvaK98n2x+840uDc07Nfbv7YRbpQ1Dh1IO3D1YODB9ia7pp3N9ObKQ+CQ7NCzH9N/vHU4/HDXEeaRpp/MftraQmupaIVaF7QOtwna5O0p7b1Hw452dXh1tPxs//PeY0bH6o5rHV97gnSi7MTYyZKTI53izhensk71d83run86+fSNMzFnes6Gnz1/Lvjc6W5W98nz3uePXfC8cPQi82LbJbdLrZddL7f84vpLS49bT+sV9yvtVz2udvTO7D1xzffaqeuB18/dYN+4dHPWzd5bCbfu3E67Lb/DuzN4N/fuq3uF90bvL32AfVDxUP1h9SO9R/W/Wv3aLHeTH+8L7Lv8OO7x/X5u//PfpL99Hih7QnlS/dTwacOg0+CxoeChq89mPxt4Ln4++qL8d43ft760fPnTH35/XB5OHh54JXk19nr1G503e9+6vO0aiR559C7v3ej7ig86H/Z9ZH7s/pT06elo0Wf855ovVl86voZ/fTCWNzYm5kg441IAQQecmQnA672oNk4BgIbqctLsCW09btDE98A4gf/EE/p73NwAaEI1RwyKLHQ+opCz6ExBh0ISxfsB2NlZOf5l0kxnp4lcZFRZYj+Mjb3RBwDfAcAXydjY6LaxsS+70WLvAtCZP6HpFYZDtXyToX7/UPSN4l/BP21C7/+lx3/OQFGBC/jn/CfvGBVP61KWlwAAAIplWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAACQAAAAAQAAAJAAAAABAAOShgAHAAAAEgAAAHigAgAEAAAAAQAAAkqgAwAEAAAAAQAAAKoAAAAAQVNDSUkAAABTY3JlZW5zaG90ojBGVwAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAdZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MTcwPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjU4NjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoCfRh9AAAAHGlET1QAAAACAAAAAAAAAFUAAAAoAAAAVQAAAFUAAA/b2xv0AQAAD6dJREFUeAHsnX9oXeUZx9/2ElhXFxoojCrt2BV0rHQp6rCT+GOFWhULmzY41hZmK8w40DimFYcpSpiwMmYUndkfc2zNNpgDzUSvOFtGMlznj3Rz9Ucbpi1odMU01bZrYnKf3TS59uY25+Y99z55z/ve87kQcs+5z3me5/083/c9z/117gIp3Aw3CEAAAhCAAAQgAIGzCCygUTqLCTsgAAEIQAACEIDAaQI0SggBAhCAAAQgAAEIRBCgUYoAw24IQAACEIAABCBAo4QGIAABCEAAAhCAQAQBGqUIMOyGAAQgAAEIQAACNEpoAAIQgAAEIAABCEQQoFGKAMNuCEAAAhCAAAQgQKOEBiAAAQhAAAIQgEAEARqlCDDshgAEIAABCEAAAjRKaAACEIAABCAAAQhEEKBRigDDbghAAAIQgAAEIECjhAYgAAEIQAACEIBABAEapQgw7IYABCAAAQhAAAI0SmgAAhCAAAQgAAEIRBCgUYoAw24IQAACEIAABCBAo4QGIAABCEAAAhCAQAQBGqUIMOyGAAQgAAEIQAACNEpoAAIQgAAEIAABCEQQoFGKAMNuCEAAAhCAAAQgQKOEBiAAAQhAAAIQgEAEARqlCDDshgAEIAABCEAAAjRKaAACEIAABCAAAQhEEKBRigDDbghAAAIQgAAEIECjhAYgAAEIQAACEIBABAEapQgw7IYABCAAAQhAAAI0SmgAAhCAAAQgAAEIRBCgUYoA4//uEfPPP/3B/PW9MbtUP7/KfHvrN83yhXbmiVvlD5s9v+o1r5/MW6Wy8LwrzfdubDbnWFlj5C8BdF1aG3RdSiPU+wlomvVTVyzCLVACb0hXS6MU1GD319gmudGAhjqak7ZGy7FNMmjpksGAhkeqUQTQ9Yw5ja6jhBLQ/gQ0zfqpqg+j6g1nDgkkMPkcjk6Y6C5pexQLXdMoeSRHlVQS0DTrp0rlik5olIokgvtfMvlS+6wTBsHJds6EqakIDOaUSVAGvtbT17z8Ky6Nkn81scwIkXNCsZRKUGboGl0HJViLZH3VtK95WSB1bEKj5Bi4XjhEzglFT03+eKozXedHZP9ve2TPyEQMxHXGIMbI69PU13r6mpd/KqBR8q8mlhmFLfL88GvSc/cWuef5YcvxzmYWNoPZRsS+sGo6caBLrmyo9KWDjCzd+rSMxCpsWAxiDS2Vxvr1ZP10KyQaJbe8FaPpTz7F5Cq4OiGHcp2yIbu48G29rLTlaJQqwErhQyHpelh2t6+s/K3TzBrp2BuvTeKV0nqTvaamWT+TUAfXUdK92oJDb2+ahy9fY+7o/9gUvhpvBvtuN+c7jB4/lJixD/rM43e1m/t2DZhC1oVb1rTlXjGPrW+K7+70EaExqHKYqTosnJrKUI+5aeW9Zui6a82qxtkvULbgi9ea7fdtMCtmfziisuEwiBgAu2cQ0Kgn6+cMpK43kujOiKlBQPNZikY+FXzkj8i+ng7Z3LpFbr15nWQzxbcqeEWpArWUPhSKrk/K/p1XSUPzDtl7Kq9cq1AYKA+7bt3VWE/Wz8SVwVtviZeg2gRqnHzVhq3muKNvSf/AkExd7/Kw9GxcNv12BY1SNTjr+5hAdH3sWWlb/mVp7XlHtNsk3nqrN4XXqGnWz8QFQaOUeAmqTaDGyVdt2JqPG5ZcW5ZGqWaO9eogBF2Pyfs935WmpZvlibc/mn4CoFmPEBhojrfefWnWk/UzCbXQKCVBXSWm5uRTScjSCRPdElRKzQLQ9fjL0rn6nOlmPyON2RbZ2NYhXU++JIePjyvULQAGCqNMjwvNerJ+JqEbGqUkqKvE1Jx8KglZOmGiW4JKqZnvup6QY7kfyPKo31hsbJbWn/xZDn5SS8PkO4OUSrPqYWvWk/Wz6jLUcCCNUg3wkj1Uc/K5HAkT3SXt8GL5ruuPZHfHBmm5bKUs++xLCcUvJxT/Z2TJFT+W5w6dqBK/7wyqHFZqD9OsJ+tnEjKiUUqCukpMzcmnkpClEya6JaiUmgWk6/xxGfrXi9Kzs102XnyuZGa8yjTZLN0vfR99WkUdA2JQxejSd4hmPVk/k9APjVIS1FViak4+lYQsnTDRLUGl1CxQXRd+quRg7meyeVVTyQUoF8sFtz0jR2J/LS5QBilV7NzD1qwn6+fcvPUtaJT0mTryqDn5HKV8OgwT3SXt8GKFqusp0vnhl6V701fPvLqUuUw6B47HLEPYDGIONgXmmvVk/UxCMDRKSVBXiak5+VQSsnTCRLcElVKzUHVdUq5Te6Xz0iXTrywtlubOVyXOT+JyHaUSlnVxV1PTrJ9JSIJGKQnqKjE1J59KQpZOmOiWoFJqFqquS8uVl1P998gF059ZOmdrr8R7TakeGJTySPt9zXqyfiahJn7rzfVvxqjF0/j9ILVkYjg6ap6/7RJzzS/+UziG33qLAS4lpjXoeuxds+f3z5rXj40rsVpoPndei2m9YbVpWhDT5cTfzY6Va80Db/+vit9irIFBzDQxd0FAs56sny4qdlaMJLozYmoQ0HyWopGPrQ+eEdmSSqdd9br+dG+HfCXyK/vFr+7H/L/kO9IzVM031/4rvVu/NPX2W0uXDMYqZvUMYoXB2BEBzXqyfjoq2owwvPU2A0dIG5qTz+W4meguaYcXK1Rdl5M+o/PGtlzMnzmpFwblTNK6rVnPM7oqvCIvbbnhGqBq5lVDGgEcSqMUQJFmTzFUkTPRZ68ne6cIhKrr8voVX1FaIld07Y/5w7n1wqCcSVq3NevJ+pmEimiUkqCuElNz8qkkZOmEiW4JKqVmoeq6rFwTr0pn82IxXB6gDEwaNzU1zfqZhIJolJKgrhJTc/KpJGTphIluCSqlZqHqema5xgc6ZXUmI02tu+R9Ljg5E07qtjQ1zfqZhHxolJKgrhJTc/KpJGTphIluCSqlZj7rOi+jh/bIrx/5pfxuz0H5JKoByh+SJzefL6bpRuk+EO/CAFNF95lBSmVZ07A168n6WVMpqjyYRqlKcMkfpjn5XI6m+NmNyW8f8WFEl+TDiOWzrg9I97riT5QsknPX3StPD5Y1QvkPpW/HWmk69zrp7Psw5meTihXymUExR/7bE9CsJ+unPXc9SxolPZaOPWlOPnep5488JduWN0xftbhJruz6d8yrFpfmGiaD0hFwv5yAzzU9Ii+2rz7z8ySTF5Rcska2/vQ30pvLyXN/fEjar14tq1oflNyhE+UDi7HtM4MYw8B0moBePVk/kxEVjVIy3BWi6k0+hWQquxgflNyjP5fO7dvk+pXFZ+TT17PJrJCWTT+Szoe65NHcoIxX9lT2aEAMyjJnM4qA5zUdfUdefOSH0rp2lSybvmZTZtlKuWxdq7Tt6JbegaGYlwKYjYPnDGZLmX0VCNRYT9bPCmzdPESj5IbzPESpcfLNQ0buXcLAPfP5jkhN+a23+daYa/++atrXvFzXZ+54NEpzM/LUApFzQvFUmjWlha7RdU0C8vBgXzXta17+lZBGyb+aWGaEyDmhWEolKDN0ja6DEqxFsr5q2te8LJA6NqFRcgxcLxwi54SipyZ/PKFrdO2PGnUy8VXTvualQ13TC42SJk2nvhA5JxSngnMUDF2ja0dScxbGV037mpezwlgHolGyRuWbISLnhOKbJjXyQdfoWkNHPvnwVdO+5uVT7aZyoVHyryaWGSFyTiiWUgnKDF2j66AEa5Gsr5r2NS8LpI5NaJQcA9cLh8g5oeipyR9P6Bpd+6NGnUx81bSveelQ1/RCo6RJ06kvRM4JxangHAVD1+jakdSchfFV077m5aww1oFolKxR+WaIyDmh+KZJjXzQNbrW0JFPPnzVtK95+VS7qVxolPyriWVGiJwTiqVUgjJD1+g6KMFaJOurpn3NywKpYxMaJcfA9cIhck4oemryxxO6Rtf+qFEnE1817WteOtQ1vdAoadJ06guRc0JxKjhHwdA1unYkNWdhfNW0r3k5K4x1IBola1S+GSJyTii+aVIjH3SNrjV05JMPXzXta14+1W4qFxol/2pimREi54RiKZWgzNA1ug5KsBbJ+qppX/OyQOrYhEbJMXC9cIicE4qemvzxhK7RtT9q1MnEV037mpcOdU0vNEqaNJ36QuScUJwKzlEwdI2uHUnNWRhfNe1rXs4KYx2IRskalW+GiJwTim+a1MgHXaNrDR355MNXTfual0+1m8qFRsm/mlhmFLbI88OvSc/dW+Se54ctxzubWdgMZhsR+3yv6ai82329NBgjxvqvSdZ1H4hRWt8ZxBgKpgUC+vVk/XQrLBolt7wVo+lPPsXkKrg6IYdynbIhu7hwoslKW45GqQKsFD7kua4n9snOSxtjNEmTDdU3pHPfiRi19JxBjJFgOklAs56sn0loasFk0MIzI27BEXjTPHz5GnNH/8fGtHSZwb7bzflej0HM2Ad95vG72s19uwZMIevCLWvacq+Yx9Y3VZl5aAyqHGaqDvO5pmJG/3av+Vphvh1vucFsvuYSc94XFkZWJ//OM+aBh14wRy/sMP/Yf7/5eibStOwBnxmUpcqmBQGNerJ+WoCeP5MkujNiahDQfJaikU8FH/kjsq+nQza3bpFbb14n2UzxbQteUapALaUP+azrYdndfpGsan9Ghkbzc9TnpOzfeZVkzCK5sOMlGZ/DeubDPjOYmSlbNgRqrCfrpw3kebXhrbd5xTufzmucfPOZWrnvo29J/8CQjJ7ef1h6Ni6bfuuCRqkcFdse63rkabll7YPy2qm5mqRCFT97i65Ztvcfi1lWjxnEHAnmkwRqrCfrZ+IyolFKvATVJlDj5Ks2bM3HDUuuLUujVDPHenXgr67zw2/Iy4PHrcDnD3bJFZOvnK64U3aftGisZnj1l8GMNNmwJKBZT9ZPS+iqZjRKqjhdOtOcfC7zZqK7pB1erFB1XUq6+M24BlnR/hc5WfqQ1f16YGA10JQYadaT9TMJ0ThrlMb675eLli2afiWh+BmV4v+MNGbXS2f/SIHBmBzu+b5cnF1SYrtEspt2yeEkCHkbU3PyuRxkfU10dK2tnVB1XcIh/7Z0X720sH5lZWvvByUP2N5NlgGatq2TrZ1mPetr/bQlmLSds0ZpcqD5I0/JtuUNJQ3QZKO0SC648wU5Vv7qdP496d124enFpvWJN6Y/35I0Lp/ia04+l+Oqv4mOrjX1E6quzzDIv9stVzcU1ralt0jvyMSZB6zvJc8ATVsXy8JQs571t35aAEzcxGmjJHJKDnStP+tibYs3PSmTryXNvB2T/u3Nkrl0p+yvZq2Z6awOtzQnn0s89TjR0bWegkLVdZHAp/L+E986vcbNvq4V7Sr994EBmq5UoXiPadazHtfPeDSTsP4/AAAA//8QFAOeAAAauElEQVTtnQ9wXMV9xxcuylS15ypPXRO5I3kqZWwGjSMTtTJJDxmYkQyMyNDgPxTLBEsQevZgZBqQh2RkAgpNqxJ8JJBRmiAPtYBMRYo1HXS0IE8secBy/iiJ5RhLOLbTysaKhIRlxWdJ9+2+O518d3rv9O7d3rvddz95PNLt29v97ef3fbu/93bfPga7f8YOoHapC4yxq/9zN6NteDrWkun30LgqH1UtHyAYe4Q+hQgch8/jDjP0+DCoDJVR+L1Fs74vgtc/moLlEjEgXafgx+ivSuTTaLNM/30WbRvyub7zsaHtrOlvxWaUhAFpOtYtlj+J9KdD+0/LbO354jVaNTxosfFnnB3efSvz/PMvo+pcyqpaDjP/V1eya0KpYIHDT7LPVf6O7Tnbxu5b6orKm84/A+yjX73P+s5fFlzJNezTn/kc+9vSz7BPCyv5t+yFm29ij/Z8wpjHxwa7d7JiYWWns6CP2dvb/5rd/v1TvJIi5vX/jL20fonFCmViIKuuVdK0JgOZfGpBln94lW0s3MLa2WbWZrnvkoUBadqCAnS+ItKfTu0/dbDJlGRPPBZby8xJH9blRN1R4neXctb5cHImku8Cv+twA5bWHsBYJMngd3DiNA63PYNtlV/H2wGDTGaTp95H041LZu92xNrHfZZCugvuG59B75RZQ8zkE3mVYqY+UXmce0WUsq4DQ+jlWq6tXosi9yLkl9yKjbt86OgfsX5XVSlNaxpTVdea7dMYbtuMXK0/q27FkJZk6UceBilrGlMY7Xsdz9RWo7woD8yVj9V3Poim9mO4aHWqIKs17dz+09KpYtOXmE31xFYT/BCtd10XG3i4bkFz/2Q4X+iW72rUdxlNywQROH8UB370T6grXxYux+2FP9VAKdZKyT/J05kmB8rBJ3oqug6cwP6aG+DiA0nJF7+IMm1QiQTnbg92d523Hiwl56AM51ZV1xq2IbRvKeB+W5rikgGJGKSiaUxgoO1hlBZXYMsTTdi7twlPbPFguUu76LwO65qP4nKG1WZP9SL96eD+0x5nWKolA1Nv2v20GfaHN2rZyg2vsI+1j6GfxWxN00H2s6/fyD5+dQsrfHoV+2n/N9nf6M66TbDffzjJritexj71q2+xz6/5BvuV28v8wy+x9eLmtiKGSfr7LHtj+0Ns728m2bWr69mPX7qHfcaspVdOs4OvvcV+Mz5t9hsL5LuW/clfetjGL69hS8Jzpwnyi7x1nAKDBBZaP2RV1+Osd8+X2NZTX2H/+f2vsBsWa6LnU2a9L7N/vO9x1vbhJcYKdjD/sRfYeve11s1T4puy+TQJaOMdrO6zX2Yvj9/BWgbeYF9dYbUzkomBVU0zFhz8Idv2bbBdzdvYmiWfmgV5iQ3u+ypbt+1VNrT0QdYx2MLu+jPStHmVObn/NE/B9pyWwisRXxp/C96CnKtXzdrV88rd6Jk8gZaqQqxt7sPcTFyi+gZ98Gjfzbo7SmfQ7q2Cx+NBhbcd5xIxijs2daQR14eu6lKZToz7bt69aDtnZm5R5BWRdQZxSMR9tKLr4f/A1tu/g2OB+LkIfuf02HOoCE1TF2BLu/XJHHENTHdJEvrUVJNnMNbxIJbyvsi1thn9pjovo4IlY2BF0xjFweeex7sjOn1C6EGdXN73V8I3mA3TACL96fD+0+iUyHB6ZqbeQo0eQ0/DjbGBEivBzpcasW5RNVpOmzyBsjZQEnk7104VijzRZWSQrK75ANvegJ3+CwZOiDxF5YbHd9wgj5OSZfSpGb7n0VGrPc3pNn+RZ1isbAyS1bTWsCCuBK7oTxcHf43m8sVgKxrQoxNHGWJR9oBIfzq9/5TTyRkMlICZ/masjbmz4cJi92Is2tCGYbO8KFACf+qNtgeQiEHSur4SwLybSXP6j3SM2XJHSeSgMgcx/X9MvoP6Qn6HPHqtpeVa5WOQtKYTtD20QHxpBXa/e04/kErwXTUPifRnpD/Q7ug7aHsVyR2b0UAJM8fgWxf/lFkRajvOm8cmMlBS6mkKkSefedyp58yCE12ErudAn0JrNX9gQW+vsbk8Cf5QStNaO1TUdRCTXbtQqC0BWNWI3rgt4RJ4x+CQhAwEaTo4chB7bt+MZ9+/YD1IympNZ0H/aXBWZDI5Q4u5I0uxptjQvr9nn932BvtjJKlwF+s68Ry7NXfBVcHhb3z4Arv5s4+yHiGLuVXac0bk3hwR+Hb8FrkYUVYGAnQdcUVoX54H2JEHDrBjL93B3JF0079V0rTWKFl9mgj4x+zgrpvZbXtP8Tipi/V/8yam+wxKoiJijsnIIDVN49IZ9t6Bl9nzz36Xtfd/wtyrt7Bv/fBf2Y7yv5jdOy8GwAIfslnT2dB/LuD+TBzOZJQWqjtm99fFWNN0lO9GksSPyDtKSVSb+awSXnWagiL7FVF435em+sewZ98RjMSvrzbVRp4pVV2H6rmMk771yFm+De3nrpitWfF8Cup66hAaVmgPppShsXdCAH/RDDKs6cDv0LXvRextegJ11avBg/3w2tS8avj6RfASgDytRYj0p+z9Z1pBZqzwzE69hZo9iq76kvCJY2V+nwIlxdYoXeCLXleE/S3jHPsUf3XO9Ytm7cvH+pbj5p6+nHcKp6hrXl7w3I9RU8jXchz6yPo0xTy7ZE8QOajY09bp3kas0gb/wl3omrQaWUfbKpiBRJoG3znpXPfz2FisnWMuU5sKR5NR82+R/pS8/1TTQQtaLUGgFMTlnt1YyTuanKoWnE62n6FASalAKTj8JurmtoVYgnW+YxYDEU3bIjug2XNlogO1i2eveLkmXZUtOLPgaaSXIUVdB46jddNtqNl/Aiaf/9QzQsG0NPg0rRQm0NtYxgf9HBTWv4PZLXNTrFEwA1k0PUdlCsMdD6NACy6z4sk3cf6Uvv+c87Gz/pAgUOJAZ/rQvPZ6vk/M/yZPlwIl+QOl6UH4X3weTQ11qC6JW7zvKoRny9fQtNeHF/2DyU27piNQwjj6WmpQ4l6C4upNuLPkEes7vlvVdfAjdD/1AB7MuiBJO/3FDSrJdyYWvjG3J9BK/oJn08/qLlCRaAYSaDq+xZHpyqzY/y5FfyrVf8Y72hmf5QiUUmFJgZL8gVIq/k343RQ7oIRlawd5+ZX11gOlBcvXyZDVQdIsc487PPXpUWnbCx1fWk5Kp64zoGldDuE2uip8GEh2FkG3PJkT0+nPVNotq12ptCk936VAKT1cbSiVRJ72uw/aVe/d37Nxjyr+bqx9j2OH4Z2kEfy854TD349Fuk6rrm3XtEFXGNp3almKU+8GZUuXLKumZbVLOgeCAiX5fGLSIhJ5WgcU7oXgwPdwz+5D/P3ndvzwIGn/Tmx66qD+k3bBMfS3PoZdVqan7TBfWB2k63Tq2j5NT+Pi4Ps4ePQMJubdMQrgdOsmFFY8iyMXU3rXizDVpbcgWTUtq13p9YaV0hUPlK4umGWL69Ax/4y0wkSR75DI0zmggC/L7W++H7u6Rm3QgxYkbUNxzC71VxeU821DwlNRBTvgH3f6wEK6Tp+ubdR05DUlbBGKqr+Btt6h8EMJgSH07n8CGzY9hx6998DZcLbZX4WsmpbVLvs9tFCNigZKAZzv+x+0/+gZ1JbzXYtDA8kylNd+G/s73kbP4PhC7XbAcRJ5+gYUfjeJP533EJ92O5n2uGQaI52PLBwksVysbPipw6fdtNOSdJ0uBvZpWvPjBAY7nsYWT/Hsvkl5KCqrxMb6ZrQdHMDFeXeZtO849UdWTctql3w6UDRQkg+k/RaRyNM1oCA4hM5HtmLP+3bcTbJfOXLXSLpOi65J0xmUvayaltWuDLrKoGoKlAzAyJ9MIk/LgMI3KBhufxIPGS6oll8ZaltIuhava9J0Zs8JWTUtq12Z9ZZe7RQo6VFRIo1ELn5AUcLxDjeSdE26dprEZdW0rHbJ538KlOTziUmLSOQ0oJiUilLZSNeka6UEa8JYWTUtq10mkNqchQIlm4GLq45ETgOKODXJUxLpmnQtjxrFWCKrpmW1Swx1kaVQoCSSpq1lkchpQLFVcDZVRromXdskNduqkVXTstplm2NMV0SBkmlUsmUkkdOAIpsmRdhDuiZdi9CRTGXIqmlZ7ZLJd2FbKFCSzycmLSKR04BiUipKZSNdk66VEqwJY2XVtKx2mUBqcxYKlGwGLq46EjkNKOLUJE9JpGvStTxqFGOJrJqW1S4x1EWWQoGSSJq2lkUipwHFVsHZVBnpmnRtk9Rsq0ZWTctql22OMV0RBUqmUcmWkUROA4psmhRhD+madC1CRzKVIaumZbVLJt+FbaFAST6fmLSIRE4DikmpKJWNdE26VkqwJowVrOngBM6f+Dl6U36nqWC7TJBQNQsFSqp6TrWXhwbHMOB/EQ011fCU5MPlLkJZRTVqGl6Ef2AM1t6RSSe6svI1NFwhn85qenfdPfAU5YVfzs11XV5dh8Yf/DcGLk4btjLxAYUYJG4IHQ0RSNGfo71o29uEhu3bsKGyDEVuF9daCeq7Un0XZYp2ZZF3KVBS1tnqiDw4cgjNd62Ei7HwYBL/O++L2NX5ewvBkjoMlJWZ7Yar4dOIpnOWr8cT+7sxOBrgpIIIjBxDp+9BlOflwL36YbQNTFggqAYDCw3L0q+I8CfX1rk34S3ODfehi7aifWwmRZ4i7ErRBEW+ToGSIo6ab6YiIr94GE0VBVheWY8Wfx/OTfCr7MAIBo/8BM01N8IdCZqW3Ie2oSvzm5kwRREGCdtAB2MJKODTQB98VflgrjLseve8ToA/heGOh1HAte1a/SS6LyY7oCnAINZp9CkhAUH+DP4azeWLQ4FSTnUrhhLWaeagILvMVKV4HgqUlHWgCiIfw5HGCqyseQUDAZ3JteAZtNcUz95lWoqqlg90Bp1EDlKBQSL76dh8ArL7dBrD7fdjCQ+CcqpacFpH1qE2zfwcTaWLuLbzsaHt7PxmJkyRnUFC4+ngPAKC/DnWji2LtLvyeajw9SfZV84ziicIskuvaIelUaCkrEMVEPlYB7bf/V306wVJs9xn+pux1hWeknN7/dAmMMz/KMDAfGMoZ4iA7D4dQvuWglBwn1ivo/B7i3g+F66rfxfJ3SuVnQFJNTkCIvwZxCX/diwL3YEvQ2OvlSndeKtF2BVfpjM/U6CkrF9lF3kQk72v45W+8cSEA3543VqglItVje8hueWvsjNI3HQ6qkdAdp9etS/hHSVcQEftCgqU9FycdWlXNcM8Pgxaav84ehpKQwE6W7Yd/ktGtzKTKVyEXcnUp25eCpSU9Z1DRD53O9nKUxwOYaCsBtNhuOw+PYu2DXx9knZl77oJjUfG9CFMv4fGVdrCW5p60weUTakCND03lcuwaEs7DFSXJFQBdiVZo6rZKVBS1XOOmF+ewbh/B1/0moPlm/4dZ5Jd8+oIBsoKME2Gy955X8ZJ33rkhKZA+Dql8m/g0MhUHAtazB0HJMs/CtD0UCuqc7Q778tQ3XpKEE8BdgmyRPZiKFCS3UOG9jlA5IFfoLkiH0V3NaNn3mBj2PCoAw5gENUa+lMjoIBPLx5Ew+rw00faGqQ8z+M4MBhZM8If4x74ETYuz4GreBv20/YAJOuUNT2DsfatWBQKzr+Apr5Lc0yDF4+hvakOlcV8Hy/3KlQ99pMkLjgVONfmWprZPyhQyiz/FGpXXOSBE9hfcwNySx/HO8PxV+RmsSjOwGwzsyqfCj7lwVC/D1V52sZ/4QcRXHw/pYb2Xhx7aw+qlufx4L8J/jNXB7TkXKgCg+RalN25U/Vn1PqkVY3oDS3k1ALy17G9/K9QVLYWJfmz+yuxItR2nDeJO1W7TFbjgGwUKCnrREVFHtrNeC/qypdFDTK3or7t17iY9PpERRkoqzk7DFfFp1MY6X6WB0WRASocMDG2EjX7jlnQcjRbVRhE20x/GxNI0Z9z65NcWObthBZ+z5x5DVtL12N35yn+pDAPmnr3YHUoaHfD4ztubErMkRTtiinL2R8oUFLWv6qJfBID7btxV8mSuQApcjUe/p2PKl8fbQ+grB5FGa6SrrWr+ldQU6ztlxQJlFx8R+6HsK/f6mt5NI4qMRDldyeXk5o/gwM+VIS2UJl9MODyUTy3eWfUtG701FwRvH6zrzZJzS4neyy+bRQoxRNR5rOqIp/GxPlTOH7kTfjqb0fR7B5KoYEmZz18Jy8n4QFVGSTRxKzLqpJPL+FMJ59qKyjG5z9fEPuKnrzb0Pju75MM/CPOVolBxGb6bUwgFX/yDU7bNiNXC8Rz7kbr/51F52N1eKr7o6gNJ6Om5rQ8Q2aXMqRil3FrnXiEAiVlveoEkWvTF99ExdxajxysaDgEs6c5XXkrK94Ehiui6+BH6Gm+B0U5ZajvPItA4BQ6G+/A8ujA31WK7Z1DUQNagmbHHFKEQYzN9MGYQCr+HOYbl64M37EsfQrv/NfTeGTf8dgAfG5qjgdTpU3oM/30cCp2GbfWiUcoUFLWq04R+dVHqUN3lcqbcdz0WiWnMFBWhGkwXAGf8iCpe89tyON7JMVOF8/eYYpet5RXDV9/5Ik4s7gUYGC2KZSPE0jBn3P7ceWg8IHH8PjX3sC5+P5xbusAutBMl9woUEoX2bSXm8LJl3bbkqxgpg/Na93hqya3F37T7zFxEIMkkTk3u+w+vYKhtvtC73pjK3ej53L8qBW/bsmFJRv3Yyg+W0IHys4gofF0cB4B6/68uj4pF9etfAD7Tsd3jrHrk8w/8aYZad2ueU10eAIFSso62Ekin0BvYxkFSspqUaThkut6+iia1mh7KCW6eufBUvT2AUmtG9FYSs5ApLuzoiyr/oxan8QWo7TxMOav4Ixan5S7GW3DybwEyqpdWeG0mEZSoBSDQ6UPThJ5AIO+ylCg5KpswRnTbnASA9ONdnhGyX06N82x0GPYo+iqLwkH/+x61Hcl89IJyRk4XIHim2fVn1dfwMxyqtEy724StzRqfVJOdSuGkjLeql1JVeKIzBQoKetGJ4n8EvqavsAHlWRfjOskBsoKUbDhkvt00AePqf1qgpjoqMPiUN5kHtnWcErOQLDHnV+cRX9OHULDipxQsJ27oQ3DeqDmAvelqGr5IMkHByzapWeHw9MoUFLWwQ4SefADtFQt5Y+/0vYAyspRmOGS6/pSJ7zLtB25r27+Z9T0gN8LtxYoue5Ey5krRtl00iVnoGMxJSUiYM2fM31NKA0F2kYvVo5an+S6Bc39k2EjLp/B8VNmHiCwZleiljr1GAVKynpWBZHztRqjQzg/kWjePIjLR/ag1HUd1jUf1ZmDT+QgFRgksp+OzScgu08v8Me1rw9PqRXsgH/c6FnsSfQ33xLaWylnnQ8njbLNB8BTZGegazQlGhKw4s8pDLXeHX75stG0G6LWJ0VebRIc4vss7cB3TT1pacUuw0Y6+gAFSsq6V36RT/f9C25y86tvdyk2NL6GvtH4HZJ4IDX4GupKlmN13X4MBJJ6NIh7Tn4GysorY4bL79PQ6yNCu3HnoXz3uxjRkW1w+E3UFfBpE1c5GrpHkqQpP4MkG5Tl2a34M2p9kuHeSCfRUhl+08Hi2g5M8H8nW/4B97fG7bNkSN+KXYaFOfoABUrKuld2kQcx2bULhaFbx+HXO7iW3wLv3nZ0932Agb6fon3vdlRV3IvGV3+BUZ3BZmHXyM5g4RZQjngCKviUb5R65HuoWa0NUstQXrcXnf3D4U0AAyMY7P43ePm7DEMvyj1wMnZzwPjm6n5WgYGu4ZSoS8CCP+fWJyV4ujLgh9cd7ltZXhnuufdOfOmpg7qBu65ZdKGpj0UnlQIlHShqJFk4+exuGH8B7vGO51G/sRJlRXl8UMlFfslNqKiuwaONPrzadRwjSd9Fim6EAgyizaW/TRBQx6fBiwM4uO9p1FZ7rr693V2E8ur70eA7gF+en/8wtwkAPIs6DMy1J9tzJe/P4NkO7PF64fU+Bl+P7jJuDnUY3c+s57vB83617D4LF5zJ25WtnqRASVnPk8hpQFFWvAkMJ12TrhPIQ8lDsmpaVrvkczIFSvL5xKRFJHIaUExKRalspGvStVKCNWGsrJqW1S4TSG3OQoGSzcDFVUcipwFFnJrkKYl0TbqWR41iLJFV07LaJYa6yFIoUBJJ09aySOQ0oNgqOJsqI12Trm2Smm3VyKppWe2yzTGmK6JAyTQq2TKSyGlAkU2TIuwhXZOuRehIpjJk1bSsdsnku7AtFCjJ5xOTFpHIaUAxKRWlspGuSddKCdaEsbJqWla7TCC1OQsFSjYDF1cdiZwGFHFqkqck0jXpWh41irFEVk3LapcY6iJLoUBJJE1byyKR04Biq+Bsqox0Tbq2SWq2VSOrpmW1yzbHmK6IAiXTqGTLSCKnAUU2TYqwh3RNuhahI5nKkFXTstolk+/CtlCgJJ9PTFpEIqcBxaRUlMpGuiZdKyVYE8bKqmlZ7TKB1OYs12j1MfpRkMBv2Qs338Qe7fmEsaINrPHRm9mfJ2rFn65mf1d7Kyu4NlEmiY4Fz7KDL3ew30wGExh1gXX7vsPaT/2RMY+PDXbvZMUJctMhFQiQrhkjXaugVPM2ZkDT1H+ad4+ZnDYHZlSdMAJRVwNRL57lPtcC3/n/3V74A8IqT39B0S981GtPfJrHh8H0W0U1pJ0A6Trm/CVdp11x6a8gA5qm/lOoW2nqTShOOwvLwMlnZ/PoRLeTtkR1ka4pUJJIjkJMyYCmqf8U4rlIITT1xnsl+iECRIAIEAEiQASIgB4BCpT0qFAaESACRIAIEAEiQAQ4AQqUSAZEgAgQASJABIgAETAgQIGSARhKJgJEgAgQASJABIgABUqkASJABIgAESACRIAIGBCgQMkADCUTASJABIgAESACRIACJdIAESACRIAIEAEiQAQMCFCgZACGkokAESACRIAIEAEiQIESaYAIEAEiQASIABEgAgYEKFAyAEPJRIAIEAEiQASIABGgQIk0QASIABEgAkSACBABAwIUKBmAoWQiQASIABEgAkSACFCgRBogAkSACBABIkAEiIABAQqUDMBQMhEgAkSACBABIkAEKFAiDRABIkAEiAARIAJEwIAABUoGYCiZCBABIkAEiAARIAIUKJEGiAARIAJEgAgQASJgQOD/AcwoUmapc04NAAAAAElFTkSuQmCC" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 5\n", "\n", "(A) Consider the following vectors, the last one of which has an unknown value $h$:\n", "\n", "\n", "![Screen%20Shot%202021-07-23%20at%203.12.04%20PM.png](attachment:Screen%20Shot%202021-07-23%20at%203.12.04%20PM.png)\n", "\n", "For what values of $h$ is the set of vectors *linearly dependent*?\n", "\n", "(B) Again, for this set of vectors:\n", "\n", "![Screen%20Shot%202021-07-23%20at%203.12.31%20PM.png](attachment:Screen%20Shot%202021-07-23%20at%203.12.31%20PM.png)\n", "\n", "\n", "for what values of $h$ is the set of vectors *linearly dependent*?\n", "\n", "(C) Consider a $2\\times 2$ matrix with linearly dependent columns. List all the possible echelon forms of this\n", "matrix, using $\\blacksquare$ for a pivot, $0$ for a zero, and $\\ast$ for any real value.\n", "\n", "(D) Consider a $2\\times 3$ matrix whose column space is all of $\\mathbb{R}^2$. List all the possible echelon forms of this\n", "matrix, using $\\blacksquare$ for a pivot, $0$ for a zero, and $\\ast$ for any real value.\n", "\n", "(E) Consider a $4\\times 3$ matrix $A$ whose columns are linearly independent. List all the possible echelon forms of this matrix, using $\\blacksquare$ for a pivot, $0$ for a zero, and $\\ast$ for any real value.\n", "\n", "\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "**Solution:**\n", "\n" ] }, { "attachments": { "Screen%20Shot%202021-07-23%20at%203.38.13%20PM.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 6\n", "\n", "(A) Find all ${\\bf x}\\in \\mathbb{R}^4$ that are mapped into the zero vector by the transformation ${\\bf x}\\mapsto A{\\bf x}$ for\n", "\n", "![Screen%20Shot%202021-07-23%20at%203.38.13%20PM.png](attachment:Screen%20Shot%202021-07-23%20at%203.38.13%20PM.png)\n", "\n", "Show all work, e.g., traces of running the GE algorithm. \n", "\n", "(B) Let ${\\bf b} = \\begin{bmatrix} -1 \\\\ 3 \\\\ -1 \\\\ 4 \\end{bmatrix}$. Answer the following question *without* running the GE algorithm on the augmented $A:b$, but by just considering the RREF created in Part A: **Is ${\\bf b}$ in the span of the columns of $A$?** Explain carefully why running the GE algorithm again is not necessary to answer the question. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution:**\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 7\n", "\n", "Transformation $S$ and $T$ *commute* if for every vector $\\bf x$, \n", "\n", "$$S(T({\\bf x})) \\ = \\ T(S({\\bf x})).$$\n", "\n", "(A) Consider the following geometric 2D transformations: \n", "\n", "- D -- a dilation (in which x-coordinates and y-coordinates are scaled by the same factor $d$); \n", "- R -- a rotation (about the origin, for some $\\theta$), \n", "- F -- a reflection across the $x$-axis, \n", "- S -- a shear (by some factor $f$ in the $x$-direction), \n", "\n", "Assume each of these transformations is fixed with specific parameters (e.g., a specific line for F, or some $\\theta$ for R).\n", "\n", "Which pairs of transformations commute? (There are 6 pairs to consider.) Justify briefly in each case. \n", "\n", "(B) Let us define an *x-dilation* as a 2D transformation which multiplies every $x$ value by a scalar $a$,\n", "and a *y-dilation* as a 2D transformation which multiplies every $y$ value by a scalar $b$. Prove/show the\n", "following fact: For any $a$ and $b$, the corresponding x-dilation and y-dilation commute. \n", "\n", "(C) From your result in Part B, you may conclude *immediately* that a reflection across the x-axis commutes\n", "with a reflection across the y-axis. Why is this the case?\n", "\n", "Hint: When the professor in your math class asks you to justify/show/explain why, he/she is NOT asking\n", "for intuition expressed in English...." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution:**\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 8\n", "\n", "(A) Find a matrix that implements the linear transformation\n", "\n", "\n", "$$T\\left (\\begin{bmatrix} x_1 \\\\ x_2 \\\\ \\end{bmatrix} \\right ) = \n", "\\begin{bmatrix} 2x_2 - 3x_1 \\\\ x_1 - 4x_2 \\\\ 0 \\\\ x_2\\end{bmatrix} $$\n", "\n", "\n", "(B) Find a vector in $\\mathbb{R}^2$ which is mapped to $\\begin{bmatrix}-29\\\\ -7\\\\ 0\\\\ 5\\end{bmatrix}$ by the transformation in (A). \n", "\n", "\n", "(C) Is $T$ *onto*? Explain why or why not.\n", "\n", "(D) Is $T$ *1-to-1*? Explain why or why not. \n", "\n", "Hint: For C and D, think about the pivots...." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution:**\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 8 \n", "\n", "(A) Find a matrix that implements the linear transformation \n", "\n", "$$T'\\left (\\begin{bmatrix} x_1 \\\\ x_2 \\\\ x_3 \\\\ x_4 \\\\ \\end{bmatrix} \\right ) = \n", "\\begin{bmatrix} 2x_1 + 3x_3 - 4x_4 \\end{bmatrix} $$\n", "\n", "(B) Find a vector in $\\mathbb{R}^4$ which is mapped to $\\begin{bmatrix}5\\end{bmatrix}$ by the transformation in (A). \n", "\n", "(C) Is $T$ *onto*? Explain why or why not.\n", "\n", "(D) Is $T$ *1-to-1*? Explain why or why not. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution:**\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 9\n", "\n", "(A) Suppose $(B-C)D = {\\bf 0}$, where $B$ and $C$ are $m\\times n$ matrices and $D$ is invertible. Show that $B =C$.\n", "\n", "(B) Suppose $A$ and $B$ are $n\\times n$, $B$ is invertible, and $AB$ is invertible. Show that $A$ is invertible. (Hint: Let\n", "$C = AB$, and solve the equation for $A$.)\n", "\n", "(C) Suppose $P$ is invertible and $A = PBP^{-1}$. Solve for $B$ in terms of $A$.\n", "\n", "(D) Suppose that $AB = I_n$ and $BC = I_n$. Show that $B=C$. " ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "**Solution:**\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.6" } }, "nbformat": 4, "nbformat_minor": 2 }