{ "cells": [ { "cell_type": "markdown", "id": "cd52381f", "metadata": {}, "source": [ "[Home](Home.ipynb)\n", "\n", "# Sympy: A Computer Algebra System (CAS)\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "64f7c88b", "metadata": {}, "outputs": [], "source": [ "from sympy import *\n", "import sympy" ] }, { "cell_type": "code", "execution_count": 2, "id": "3df91f10", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IPython console for SymPy 1.7.1 (Python 3.7.9-64-bit) (ground types: gmpy)\n", "\n", "These commands were executed:\n", ">>> from __future__ import division\n", ">>> from sympy import *\n", ">>> x, y, z, t = symbols('x y z t')\n", ">>> k, m, n = symbols('k m n', integer=True)\n", ">>> f, g, h = symbols('f g h', cls=Function)\n", ">>> init_printing()\n", "\n", "Documentation can be found at https://docs.sympy.org/1.7.1/\n", "\n" ] } ], "source": [ "init_session()" ] }, { "cell_type": "code", "execution_count": 3, "id": "c925b12c", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACEAAAAUCAYAAAADU1RxAAAB10lEQVR4nM3VTYiNURgH8N8MSRGKjGR1S40sSBSZKItpSuJO9mxYsJq6G1LuRpGFGjsrDSsLkyTKxxQ1SyJZ+EgaC58jIlKDxXPeut5573jde4t/nZ7zPu9zzvmf83/Oc7rq9bp/je7c926cxh18wk+cLzFPD6Yw3OA7gZuYwFdM4h6OYnHj4Nm5yY5gDT7jJXpLEICdYkOjDb4h3MV1vME8bEQd+1N/oojEUFr8KbZirCSJKt7jdoNvAb4VxB7DYRzCAabLMYYnQoayWIhtuCwkyVBEAC4kuzJz5Em0gu2Yg4sl43ck+yBz5OVoBVV8EdoXoYb54sTWoy8RON4pEnMxgKuaH39N3J4M17AXbzNHu3L0i12OzhCzDF3JDqIiruq6TpGo4juulIh9Lcj2izox0gkSs0SS3cLHvxj3Ao+wGkvaJbFF7GgmKZphebJT7ZIYxA9cKvjXK3Igj25RrJZiHB+Yfjt2paZhkk04m/rvRLZnseNC6zwGcFJU0GeimvaIKlzBK+zLgvMk1mJPzldJjdCzhg1YgVMFBOAGzmCzeIsWiVryGOfEQzfZjEQ9tT+hmmyzfHiIgyXmQes5UcV9PG9x/G9otWKu6sTiGTrxgLWN/4LEL7mXWXwgnHQbAAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle \\frac{1}{3}$" ], "text/plain": [ "1/3" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Integer(1) / Integer(3)" ] }, { "cell_type": "code", "execution_count": 5, "id": "6debb732", "metadata": {}, "outputs": [], "source": [ "phi = (1 + sqrt(5))/2" ] }, { "cell_type": "code", "execution_count": 6, "id": "3c6699b6", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGgAAAAdCAYAAABG8ynTAAADz0lEQVR4nO3aW2gdVRSA4S9NtZUoikUUEa94KSqtDz7Eh1ot1hvWptoHwUtFHwRBFBUvWEhFxAfReAErCIlUfNMSpbYqGNOWCoIQL0irxUQRrFLF2HpBm+rDmtLDOOecOWcmnBDmh2GG2XuvvWattfdee5/T1d/fr2LmMqfTClQ0pnLQYY7BFfi3xKswc8sQMku4EvvQ1WlFaqlG0GGWYqTTSqSpHBR0J9ffnVYkTeWg4BLs6LQSWVQOCq7BO51WIovKQcEC/NxpJbJIO+hGvIBt+E2kiq/lkHMipvC8+Ng7sRG78ScmsR13ZPTZac7GrgblE+qn0Xty9tG2fdJp9mNYhP34HuflVOD6RPBGrMZL+EFkRd8lCq7CK7g6qVPKPqEEVuDtJnUmMZDxfn/OPtq2T9pB9wnH7Mal8qedfWKK2Cr2ESuwCQdr6jyKj3FDoswbOWXXsgaDuAwfttE+i3PwVZM6v6K/QB9t2yc93Yzga61F97G4XEThFD5Ing+m6u3B+uR5aQvyy2AOnhDRWcvxpn/tKWSfMk4SrsWReDNH3X+S+4ES+m2F5ejFydhc8z5v9jYPN+NU/I7PxGiYytG2kH3KcFCfUPr9JvXm4tbkeUsJ/bbCFhGh74nRdCh6e/F6jvYnYUPq3Thux2iTtoXsUzSjmo+rRFT+1aTuU7hAROy7BftthzH8ITalcIQYAempJs0glgkn9eBCvIzTxXcvatC2sH2KOmg5jhbZSSPuwf3YiVtyyp7w/7R2MCkbySgbyiHzLZFREfN8s+iHdWLd+FE4+AvchWdwlMbJQ2H7FJ3i+sT51aYGde7Gc/hSROIvOWUP4LjUu8XCwK8KB9YylkPmsEhxHxTGW5dTlyzWC6MuaVCnsH2KOKgb14nomqxT5148K6JuGX5qQf5Axrs1wkFD2kuzR3ECForpKu8+JotD39JTp7wU+xSZ4paIXXG94ftQ0vmY2Le04pzp4oCY49fi84KyepP7N3XKS7FPEQetEgvscEbZWrHofSIiY2+BfspmGDdpfnoA54u9UprT8GLyXO8orBT7pKe4lclFZC1EpAwlz3vxQE3dHWLxrOU2PC4ypG1iAUwzId+iPh1sxkfixKQZq/GwSErGxS+uZ4m9zXwxGp+u03alEuyTdtDiREAtZyYXfCscdDFOEUM0zRnJvVvMsVmM6pyD9gkD52EE5+IiEag94thnu9gXbZB96lKafbra/NvVk3hEOG68HQGznNLs0+4a1IdPi3Y+iynNPu2m2QuLdjzLKc0+M+3Hs4oUlYNmOJWDZjj/ATkvGqPm/PUhAAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle \\frac{1}{2} + \\frac{\\sqrt{5}}{2}$" ], "text/plain": [ "1 √5\n", "─ + ──\n", "2 2 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phi" ] }, { "cell_type": "code", "execution_count": 7, "id": "42c2927e", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAMZ4AAAASCAYAAABDE/MEAABmrklEQVR4nO29e7BtX1bX9+m2iRDeD7Erajx0BwNI4oEoAVG4IBIChBwpSKVSYi5GkEiFOiFELSJySMoKGKGuj1TEYIKgVVFJICiEh0CJRAhVwRuDqGCarYAC8vgR3mhD/th7VS8Wa629xphjfOc8J+NT1XV+fc+ee77HHK85z6seHh4oiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqIoiqL4/xOvXvz/jwH+JPA3gP8X+AXgzzfW8VuB/xn4J8DPXn5+DfDhQXV/xOX7vhf4aeANwF8G3m+nzK8G/gfgH1/adAJeAG+/8tnPAb4O+J7L9/8I8LeAzwTeceP7PWVeBfxu4FuAHwd+6lLmU4BfttMXa/8tn3/OeR72/vfGnbZNfNzs879n4zOe/lv77h1ja188a9Jah7Wed7x815cC/+Dy+R8Dvgn4j/ilsmDCsle8fTmxvb6+f+e7PeN8VB556/Ds/TlHxqulDkv/T/jmxVKHty+WefGcLdYyz7HJSuvnwb+HIf/Ms9YBPnlsmZfn+M4v1VkMtjE77fRjvh+f73zuyLl9dP+2rMdM2e1tl0dOWPfKCZ9MnXNUP7CW8eotmfNiLfMc/9q3yq/TTh1rc9myX6x6i0Jvs7RLKSs8+1hlS1jmpWXMJrJkhaX/z9HsSU89Crto1HatcWTuFb4az/5S+V2s/VfoFc9p0/kgx+/gqef5Th+2+nLa+Wy0XuXZY5l+Ok+7nqMZY4V9P8eiJynOfIW9etr5fKQeaulLq+5i1XetZazrcsR1rLCnvGVAYxurfKHWve9pV7bP0dMPVV8mrPvFcxZ7deQsG/w5bbpblqz0tEsp95+K700VY1acYQq/iKddc46usRO29eLpu6WOUW1iSx/mZMevVWvxhK//o8VJrfUodckJ61ln+bzCT+Opx7OOLWVUvvlR97AiLvMcv47nOecUejTk9v+089no+Fqm/vF8px899XtPX8C+Jz3zcsJ3plrnUeGfU+QfzTk69y35kIq4r8J+tq6XEfUjhT93QhFftOpUnv4r9pdCr4B8u3OLx5pTpKrDK1+z7ULr2lf52Fv25ITVP5eZb63IW5oTnbcD2li86m6K5QyzzonaJ6LI656TlSORne8AunsminWs8tHOycolbG1bRj6Rty8qv5u1XaA5i6175YRv7kfTj1U60pLMnD1Fu1rKZOg7EXsyM4e2xf7OmhOFvQ65+Y3Wz0+oYkZLRtgrnnqe4xtnhd9JqVNZZKu3npY8bcv6yo6BKeJfp502RcUbFPdKn+/0I1LXVeUftcqkjDNPZeMrfA/QxzbM0FufY1v71s/P8ZxHijjunKyzWOGrUdzLOqE7V0c7iyey7wx5+pKd7zRnRN+eZR2rfUiZ+fbPaVtfmTq14vx+vtOmyPPotPP9y7572mT5/gnVWKnurWefESofgiJPwvp5tZ6ryEWYo/DVZMj75/j2y2nn81vzMuJ7HROZsYnnaM6IJSPoB54yLXsyM39DmbMHuf5TT1+e41/HkCuTs3URb989c28to9DDrGU8dUxk34M47bQp8s66wreR3a7nO22KXvdLsnTdzPsG3jLP8Y2z6s04yL3H5ylz4vh+UfmnVOse8sdXoeeOGl9TyHtPu+YcnUtVvsNppx9ReWEw3vshz/HPY/YbCi1tm8jMV8v2M6tsL2s9I8uX7Jwarx3t9Z9a5ctof6NCaaufdj7fK8YCT+vvgCjOVu9eGe0dlec733/t/FL8HZBsXUSVtwQ6vcJSz2nn+yPzNbPtw+c7/YgcL8/cZ9t5qr5D/t/yUfbF2rbTTpt63+HMXsOqmJHKJ6SwW5RxTMh7Hxd0b89Yyyj0sNYchqPnpOLtGdDlhGa36/lOu/b2y4g65WmnD9H7a05mfMJSh+ruBBw/j1r3/UR0/59jX/eeMnMy5x7y38RRnPcqHSl73XvrsY6x6lydyB5jlU8oW1Yo5J63DuVbEpk+tNPOZ6Pf8bT0BfL3vbeMtS8n7DrViHc4FfvxOfY1DNq/gwG58eIRcwm9c6/oywmfzaK4K+jpv+Lva3n2i+LeviKHZURZ0SJbM/W2OYp7soqcnxPH16XKR+0po9BdIP9vm2f72lX28JysHNrn+Mb4tPP5KD1flbsBmjd6rO3y9F/1986y9RbFuW2t5zk6/fu0U0evHHXFPWRrHV5ZnJ1LpYqRZuctePqirOcpvf2linkp+mJp13N8ax/y7+tnn0Mj2wOqd3Y8Y5ydZ/8c+5pssQsy8wkmRvwbO6edOiL0nIns8fXOiTf+DPnvrWf6maxzqTpTFTJP4WdRyvus96iUZbzrOPsenrIvc7J0NoVPQ3FPRjHGEyqfjuKdndH+ZqOnL556IP/M87ZrSUY8XaF/g/ZveUxc28eKNZb9+YnTzufXxjc7H0TVb8j9uypemXra6UdUDrtHX1X5DLN9LROZep7yDDrtfD7K/+mpY8R4j9JnCPk25Il8WeEdM4Uf31rGOsYj+3KXZN5fyPa5ZOelbjGCXuyde0WcsMWvZannRO4+fr7z/dd0xEwbWjX3z3f6vdV/hc9lYpR3Pp/vfG5rnDxlrPPuqWNi1PtqljomFLmfqny+zL9dApocXlVM4sRxuaI+T7NzPE4c7zuMee9sjQzdC8Z8uwjGzG/w9kXxLp5iHSv8YIoYrFKfyPybIi3tgvx3vka9R2Ptywm7nq7I41X7pTN1NmVfRtTxT9jXWKu/ITq+AGPrCOp7ihPXxllxf+E5/nk52g8Y9822iawzT20bKPKusuXkc/LXpHdevGdLZpyoZY2Nch8y+/tb+g757zh75lBxbj3f6cfWvCjsKGsZTx2g8ZnBmLmcLbGx7HsF1rap73Ve7f+rHh4e5gVeAr8B+AnOB+u7AX8B+J1XKtriDwH/FfBDwF+9NOCdgPcCvgH4/Y11f87lO34Y+LJLPf8K8FHAa4DfxS+dxNcDfxN4Z+B/Bf4e8D7ABwF/H3j/y/dN/BzwbcB3AD8IvCXwvsBv5LxR3pfz5NBY5os4Kww/CPwV4CeBDwHeg/MkfiznRdnSf+vnb4E71vmtwAcDXwF85MZnAH4N8H9zXuBvBXwC8AUrn7P23zP3njG29sXTLmsdnno+CfjvOO/BbwD+EfArgY8G3pb1/lv3ircvJ+DtOB82S34C+GMr/+4ZZ4s88tbh2fsTR8fLW4e1/yfs82Ktw9MX67y8xH62WMvcYpOV1s+Dbw+D5szzyAqPPH7J8Xm5xXd+Kc5isI/ZiWP78Rb/uW3Zv971mC27ve16iV1OWPfKCbtMnXP0jLCW8eot2fNiLXOLb+175NcJ21x616X1TFXpbaPKipfY9rHKlrDOi3fMJrJkhbX/t2j2pKcehV00aruWHJ37l+T7ajz7S+V3sfbf+nlPX25p89Vk+R089Xj6ckKjV3n2WLafztOuWzRjrLDvJyz6iOrMf0m+vXpCo4da+tKiu1j1XU8Z67occR0r7ClvGc+YndDIF7CvF+ve97TrJbk+R08/VH0B+37xnMVeHTnTBr9F46+zlvG0Syn3n4rvTRVjVpxhCr+Ip10TljV2wrZePH231DGqTWzpw4Qifq1ai57+jxgntdaj1CU9Y2b9/Evy/TSeejzr2FJG5ZsfdQ8r4jK3+HQ8zx5W6NGK/p/Q+DWy9Y9bxtTvPX0B+570zMsJ+5nqmceX5PvnLHW0lAHb3HvzIRVxX4X97FkvI+pHqnwXVXzRqlN5+m/t+4Ri7Wf7JkHjCxk1p0hVh2deFHbhS2xrX+Vjt7ZridU/lyWPQJO35OmLdU3eookTq+6mWM+wl9jmRHl+W/vScjcB8nIkFPkOoFmXqnWs8NHOyYp9tLYtK5/IUw9o/G6edinOYs8+PpHvO1foxyodac7RuVfclfO0q6VMlr6jyrl+iX1/tdjfmXOisNetfb8l/z4e6GJGc0bZK556brGPs8rvpNKprLLVU09LnrZlfWXHgBTxL9DEGxT3Sm/R6Lqq/KMWmZR15qls/Jfk+x5Abxtm6a23aM58z3nk0aezdfBbNPLYM16Ke1knNOfqiGcxaO4MefqSne80Mapv7yWaezYTWX5da5lbdHkyJ/Jzi16Sf58D8t4R8bbJ8v0TL9GMlUVOeOtQnBEqH8JL8vMkrJ9X6rmKds1R+Gqy5P0tmvuro77XAfmxiVt0NsvEKPqBp4wqtx00epuljols/6mnL7eM+0bZS8Z7+8/TLk8Z6+c9fbGW8dQBmnsQJzR31l+S79vIbtctunU/J0vX9awXT1+sZW4ZN8YG+ff4PGVO5N7DVfgzlxydE8X4KvTcUeNro74FMmGZS2u7wNf/E/l5YSp7xdK2W3T2nTq2nBX3A42f+SUa28taz8jyJTunxmtHe8bMKl9G/BsVSlv9xHgxFnhafwdEcbZ66lDZ0pY9eYsunmMdM4UuospbUukV1npOaPI1s+3DWzTj5Zn7bDtP1XfI/1s+yr5Y23ZizDucijWsihmpfEKeMtm5zbfk+yuUeQKK81uhh7XkMFjOSa8Obj2LX5IfN1G06xaNT1+xXk5o9teczPiEtQ7V3QnLeaTMXbL05Zb8+PKc7LlXvInzkvzzXqUjqd5esdbzEs3dHMj3O6rkkUeGZ8sKhdzz1mHRkVTr65Zx3/G09gXy9723jLUvJzT5Ptl3OBX78RaffqCIs01kx4s97bKWsX5emRNrLXNi3LuC1r4odFCw7xfVvf2X5OewjCgrvPsrW2+bUNyTVeX8nDi+LlU+alV8HfLyL2/R/U33l+Tf51DJYkWc/ES+nq/I3QDNGz2edln7n52vOKHQW6yfh6d1p+HEeDnqinvI1jqUOYEn8ubkFp2dOpElh1T1PKW3v1QxL0VfrO26xbf2LeeW0t9g2ZMj2wOKOzYw5l28W3Txhex8Ahj3b+ycyNVzQDO+njLe+DPkv7ee7WeyzqXqTFXIvJeM+feIFGN8wr4eFWU84+VZXwqdtTWulqmzKXwainsyijGGMf+GvTK28JJc/4ynL556IP/M87ZrTlY8/SWaO6gnNH/LY+LIPlassezPT5ywjW92Poi1H9bPT2T/XRWvTD2Rn8P+kjHv3UK+rwXy9TzlGXQi3//pqeMl48V7lD5DhQ15Il9WeMZM5ce3lnnJmH8PUmV7jPr+f3Ze6hqj6MXKeOfE0fVi7Yu3nhO5+/iWfP+3ct9b597Tf4XPBcZ65/MWzX0167x76oBx76tZ6wBN7qcqny/7b5eAJodXFZM4kZuPC7o7cXOOnI8nxvLPTGTGOm/RyDtVPaPmN3j6onoXT7GOX5LvB1PEYFX6hLVd1nq87YL8d75UcUvF/jqRf99UdV9FlUOk8Oep8vOs/ff05YTGZzyREV+AsXUE5T3FiSPjrLi/cIvmPeuXjPlmG+SeeUrbQJF3pZCTt+SvSVV+prXvSv+nYk5O5N5pPfr9Syx9z87fBt8cKs6tW8b0y1rLeOoAjc9s1FxOb2zMem69JD/HwSO3U/v/qoeHh3mhD7p0/h8AH3j5oEWhnPOxwF8C/hrnxffji9+/GfDPGup+LfB9wD8F/nXOgzP/rq8Hvht43aLcVwMfCnwK8Cdn//55wH8KfD7nTTTx5sDPrNT/R4BP57zZft/id9Yyd8CXXtr7PpwnDc5j9Jcuv/944AtnZaz9947XFt/MefH9u8CXb3zmVcDXAu8C/C/Ap7GuCN1h67+nL9Y6PH1pHeOj4+Wp54M5C4+vAH5+8V3fyllh/RjOgmjCulc8fYHzoQBws/FdSzz9t8oj71x65AXYxstTh7X/YJ8XTx3WvnjmxXOuRZ6FR2Tlkc979jBozjxrHXf45HHUvGyNsaddKl3kdPl5c7V32+ytRev+9axHhez27hPP2rLuldPl583Od25hOSMsZbzrVzEv3rlcY2/te3Sd0+XnzYG6wdcXz5mq0NtGlRXT747uY6UtYZ2XlrWfJSug3ZaaE70nrfWo7aJR22VZL9m+mjt860vhd5nabOm/Qq/Y45r9kel38NTj6cvp8vPG8F2edln3mMpPp5BJp8vPm4PfAxr7Hmz6iPLMz7ZXQaOHgq0v3jo8+q7C7zTiOlbZU965VNjGCl/oHfa972lXts/R0w9VXzz7xXPmecqobfA5kf46bxlLu5Ry/yn43kATY/aUUdlt2Tr1hHWNnS4/b7jOHb6+H63D+/0Km/hoHyYU8WtPP0DjBx41TmqtR6lLWsfMM8YqP42lnjvs69haRuWbH3UPq+IyW2zpUp4xVunRiv6fLj9vDn6PKj+i1Q86p7d+r9DxPPNyuvy84Tiedazwz6nyjyxzf4dPtlrXl2pPbhEdXxxRP1Llu6jii1adytP/7P3lbZfCNwn5vpCRc4oUddxhnxeFXQj2ta/wsXvaNcfqn8uUR4q8JU9f7ojL24E4vT1Sn95rF9jPMOucKM9vRV73RFaOhDLf4XT5ebPRxyWq3I0tInPUT5efNwfrnpMZ+2hpW2Y+kaeeO/L9bp52Kc5i79o/XX7ebHzvklH1Y5WONJGZs6doV0uZTH1HlXPt0fW89nf2nCjsdUV+o+fz6tzekfZKS7vW2Bpnhd/pDo1O5ZGt1npa9FDLPGbHgFTxL8iPN9yhu1e6RaSuq8g/usMvkzLPPJWNr/A9gNY2zNRb94g8863nkSKOOyfrLFb5au7Q3LU4XX7ebPx+ifI8gvyzWKlTZ+phnjKj+vam78u+ZzOR5ddtKbNGdJ7M6fLz5kDdoIsxbxF5Hp0uP28c7TjSJs/3K8bqjvx766ozQuVDUORJKOLxkO9rVsniOzR2kUo/OF1+3hz4Hs9euUOTR6yKTWyR8ZbGiPqBpYwqt336XbbepowbwLH5b5V7S3q/UabS26yf97TLWqZn3z1lIvUwRU4JaHL2Rm3XFtHrfiJT11XdN1DsSVVud7Zt4C1zuvy8WWnznDs0/inQrHvF+N6Rr+d66lD59HrK1b12Qf47/eDr/+ny82bne+eo/N8970pG2nfq+Fp23E/hZ1bZXtZ6RpUvd+Tn1HhtT+uYWfew0k81MZqtfrr8vDn4XQpb/Y6n83dAQHO2euoY9R2VLSL9CGAfM4UuoshbUukVnnpOl583B+sGja3jKbNF5HhZ5z6yH3t9sX5etYcnsvKvWvpibdvp8vPmYHsV+16xhr1lrG27Q+cTyrZbvH3ZIspfocyHVZzfCj3MO2aWeblD8/YMaOIminbtEenTV6yX0+XnzfWuNfVlIjM+4anDs4+tZaznkTKPtCV3bU50fDl77r06ksJHr9j3ijxHla5vHWPFuTp9X/YYe8tkv7e2R/R75RNZPtc7NG9JKHxop8vPm4Pfo+xL9r73lrH25XT5ebPznUsU+/6OMd9E2WJPP1DF2RTx4hFzCZU5sdl2oecc9uoulr6odFCw7Rdvu06Xnzcr9WyhyGEZUVZ495dCb2vxH1tkvirn53T5ebPShiUqH7UqF94jK06Xnzc733uN6Ht/lr4r75lYx1eh40O+nn+H5o0i9fo92q477P1X5Csq9BbP5+Fp3Wk4XX7eXKn3Dl0OQot/5ui6t9ahygmE/L/ftUW0nQrjvRVnrUdpQyji46qYlzLWn5kbYz23lP4Gy54c1R64Q3fHxjrGPf/2D8TGFzz6pyLmt0X0uwOny8+bK/XeMW4eiadMi51mkauny8+bnba3tE0R77J+fkLxFp1H5in8LCp7W/EelaKMZx2r7uEp+jKRqbPdofFpZNp2E6oxVt1BzX5nx9uXbP+M6o7cHZozz9quOZnxdIX+DZr7bhNHx0t5DzP786fLz5sD33OHNh9kSc87RSr/xOny82a/a78Ia9use/cOnd8o29cC+Xqect2fLj9vDn4XaHT8EeM9Kp+hyoY8XX7e7HxmSbYcU/rxrWUUOW2qMhNHZat3XhQ+l+y81CUj6cXKeCfkvx/tqed0+Xlz4Htb27Ukyv+t3PctNs6SyHfPTpefNwfr9sgk1TufSyLvq0Xqh9FvDWTbEp46ID/3UzVe1nq87VLk8KpiEqfLz5uV/ixRylRFjsfp8vNm43vm3DH+vbMs3cu7TxT1jJrfoJBFd+TnM6rsemu7PH0H3bsfa2T8HQprPdbPW+XRHWPGLVX763T5ebPSti2sfVHcV7lDk0Ok8Od5+jKyjn+6/LzZ+cwS75mXFV+4Rm8dIdtfvuTION/R9w1FiHvPGsZ8sw3yzzylbZAdj1PJyT2i1qQiPxM08W5VfvUW0XHV7O+39l3hK/XMofrcWtLTLxtZJmp9KfP/FHEFTx0euZKd43CH7l7n4f6/evGLbwC+C/iFlQotvBr4HOCngP9gpQHwSyfAWvevvdTzf/CLlYDpu34c+BWLf38d50V+Av7bxe8+E/hJ4OM4b6CJtcGH8wADvOvK76xlPvry83N508KA8xh9xuW//5NFGWv/PeO1xXtyFlbfx1nQbPEpnAXSx3Me2y2s/ff0xTPGc470pXWMj46Xp56vB/4Kv/hQAPh+4E9f/vvZ7N89e2XO0b54sPbfI4+8c+mRF2AbL2sdnv5b8dZh7YtnXjznWtRZeFRWHvm8dQ+D5szz1OGVxxHzsjfGirMY2uWrh71+e/avZz0qZLenXVP91rXllfcePGdqlt6imhfvXC7ZW/uqvWjti2eMFXrbqLJi/ruj+1hlS3jmpWXtZ8kKaLelJlR7MlKneqrtsqyXbF+Nd30p/C5Tmy3976lXHLE/Mv0Onnq2sNpSRznaLs8eU/jpVDLJg8K+t+ojSv9htr3qQWEfeerw6JUqv9OI61hlT3nXi8I2VvhCPXvf0/dsn6NKr4J8HdFz5nnK9LDBJ6L9dVFxgGgftUqGt5BpTytizJ4yCrtNoVNDfgwsyicS/f0qm9iCIn6tWotWRo6TWutR6ZLWMfOOscpPY6nHs46tZVS++VH3sCIus8WeLuUZY4Uereq/FVV+RFQu3Qj6vULHi4rh7uE9uxX+OUX+kXXuPfOoivsq7GdvHSPqRwp/rjK+aNWpPP3P3l+edql8k6085pwilQyzzovSB2Zd+6p845az2Oqfy5RHirylOeq8HYjV26P06Wvt8pxh1jlRnd+KvO45WTkSvfMd9lDkbmwRnaPeQmbsQ92uOb3vsbXaxVm5uqC5j2llZP1YfScrK2dP1a6WMpn6jirn2rq/Ws687DnJttd75jdm+PYUepj1861yMussVvmdFOdEdg7CRMtZfHS8FDEgRfzLi3VdetaXyp6YM1LOUsuezDzzVDa+wvfQStZ51GPtH/m8dd/3yNPMOotVvhrvvo/Kn95CfR5lnsVqnTpTD1OcrUp5lH3PZk7m3TdFHF+lUyvO7y1GeLvA0iYPirGKsvF65+yBzoeQnSehisdb6dEuha8iU95v0TtWrMgj7h2byDojRtMPrGVGfXdGkbMHGv9ppDwe4Y0yhS7i+bwij7hX3z1lIvUwpR7d8274Hr3albHuJ7J0Xe96UezhLXrH2BS2QbY/QOWfgvx1rxpfhZ47cnytp7yP1qfU+Q5HUPm/PWWi5FG0faeOr2XG/RR+5ql+he1lrWdU+aLIqVG8TeXZwyo/1ZyRbHUPCltdMcatsjUz99KDtQ6FLa3IPwPNOyoqXUSRt6TSKxR5fipbZ9S4pOK9li16+gInvLI1816S8myxoNj3ijXsLWNtm9InlG23qPa9VR6r8mFV57dCD1O8z+ZZL159Lztu0rtdkT591XqxMmp8wlMHjPl2qyp3CWJs1uj4smLuPfqLwkev2veKPEeVrm8dY8W5CrpcUpVPKFtWKOSe4v0o1fraovc7nt6+ZO97TxnVnYYR73Aq9ZAl19awIs6miBd72uUpozgjPfV4y1jwnMNe3cXSF5UOCrb9ovDnz78vO4dlRFmhemcOdHo7jHdHwYrKR62Ir6t0lyUZeSiWvqvsYUUO7Ra98z0UuRs91m/WvT9VvqJCb/F8Hp7mnYZrKHMQWvwzWW8NKXICrShzI7LzFhRy2FOPyoZQxMdVMS91rD8rN8Zzbin9DZY9Oao9oLxjYxljVZ79FpHxBVU+geLORLbtPHoeiaVMq92RldfnaZsi3qU6U1UyT+FnUch7hb9MhXW8PH1X6awtcbXMfGaFTwM092QUY6zy6VjrUcYWsv0zqjtyijPP0645mfF0hf7tQeHT6nkPM/vze6jzQeb0vFOk9E9YUeSYKv1G2b4WhZ438j1tlY4/YrxH5TNU2JAeFHJMmQtkRZHTpiozMdrbLJ6zIjsvdclIerE63mnpe4tMyvRpKmwPhQ3dO9Yd/e6ZFatM6uWfjL6vFqUfRr81oLAlFP4sTxnVeFnr8epTihzenm+MbKGSqaocDwuP4d5Zlu4VaXeM8Da1QsdRyCJFPqPKrh81zq3QJyJ1r0hfrkcejRq3VO0vD4o8XoVfWpUjr+jLqDq+F2896vdLYAwdQX0/4sg4K+8vrBH5njWM+Wab4sxT2QaKeJxKTm4RuSYV+ZmqeLcqv3qN6Lhq9vdb+67ylXrmXX1uzentl40q0/vNnpFzOa11KO8VWNrm1YtS+/+ajS9v5TcD7wJ8CfCjwEdwXuQ/A3wr8M0BdXwX8HPA+wDvxC8e1A8A3hr4skWZD778/Bp+6Qb5ceB/57wR3hf4uiv1/zuXn3/b0OatMq+9/HzDSpnp394beDvglcv/t/bfM15b/N7Lzz8LvHHjM+8OfDbwx4Fv5E1jv4a1/56+eMZ44mhfWsbYMl6RcwlvEgj/fPZvLXvF0peJXw78TuBf5nzg/O1L2bX1Ze2/Rx5Fj/GevPCMl6WOFnl8dF6iZf5WX6LnJZsjsrLl8xNrexg0Z56njhZ53MreGCvOYvDPi0VOLtnrd/T+3VqPCtntaVc0e/LeM4eeMyJTbxlhXixl9tZ+i4xs2Y9z1vriGWOF3jaqrPCgsiUiz2HYX/uZsgLizu6sPWmpZ49ou2jUdkXZH1tY91i0bhjpd+mN1e90bY2p/A4Ra+xaX7L1Ks8eU/jplDIpSt+JtO+t+ojaf9jKkXMiUw+NZqsOj16p8jtZP9/bpsq2p1rKRNvGljo8Yxy59z1xIytb8kKlV3mw7hfPmecpo7bB50T766LkS7SPWinDR/O97REZY/aUUdhtCp0a/Gvs6Hppka1H6hjdJs6M315jTa6ofXRPPU5qlSuRuqR1zBT5R9eI0o086zhSVqh88yPs4aPtilxfe7qUZ4wVerSq/5Dv11DpH2uMoN/39s3vnROWuY/e9xa89lAk1rn3zKMq7quwn6PXS0/9KLrMGiPEFz06VVT/FWtf7ZvM9IX09n9Dvu62VQfY56V3HMNDRr6xB6t8yZZHyhzlHnk7EKu3q+6m9NQRIfb8juzLNVmRmSOhznfIXJeqdazw0U6oYh/Wtinyiaz1KPxu1napzuKWtZ/pO1frx0sydKTMnD1Vu7xleu1HiM+5tuA983rFriHOXo/UdVT38TxE6mHWz7fslcyzWOV3UuhULbJVYU9ZxksRA1LEv+ZkxhtU90q3iNZ1t4jMP/LuyZ5nXk8ffUsdCtuw1xsXkWe+dd+r8zQzz2KVr0Z51yL7XB31LFbq1Nl6mOJs7SmPvET5kMC3XhRxfJVOvUf2+Z0R02jtuypvy0qG39xSh9pmWRLtQ7DSO1c3Ss9Vt0vhq8iW91tE3l8d9b2O3vcKM86IEfWDyHXZ890ZT7s8qPynW1j7MsIbZVGMHGvIxtOXyPFS3IOYyL6z7mXUdi3JWveZum7kOaSid4xNYRtk+wN638c7QmZu0Kh67mOIry3Jlqug1aesXOt/pq2usj2ixjjavlOu/ey4n8LP7KG3jtBbvijzlNeIeptKca8W+udgRdrqE6PFWBRj3CJbVbmXmbnNCltakX8GmndUevtBIS5vSaVXeOvJztfsaR8q13HUey1b9PQFXmNPtmbfS1KeLaPd4VSsYW+Z3u+oRGI9W1T7PvLMj8yH7X1+Z+hha0S9z+ZZL0pflepORwSRPn2lTql620lxp6XnfbmtMpFnZWTu0h6W/kfHlxVzP8KbOGuo9r0iz1Gp60cRda6CNpfUUiZ6jWXLCtDIvaj3ozx1qHxokO8HjpaTin2/hbcvPfN9tsoo1vFE6370yonItaKIFz9GFHdkrzHqXUELI+iga/tFdW8/GuveH1FWgOadOYjX20e8ozARsS5V7wlEydde9zEV9/68RNrDPe/X9c73UORuqNdv5r0/Vb5i7/tSHrLtuyz9+7HkqF8b315vDUXlBM7JmpMtMuzUEd+Ks9bzlN7+UsW8lLH+zNyYx3Y3dMIqw3raA73v2GwRbaNaiYwvqPIJosYs490ByDtTe+drbNHSruz31hV+Jutcqs7UUWWe4rxT6i0e21lVZo218fL0fQS/955+kJ3PrPBp7BFh2x0haoxVPp3IcVbFFixk5YRY6lGceZ52TfSKp1tR+aUVPi3IuYeZ/fmj46vMB1nS806R2j8xWg57b78RxPla1Hre0XZtES0flTp+FD3zeD0oY2o9ZUX0HeKeNqGVEXI7RnybJVJHyMhLfSx6McTHO7Pfj26pp8c+zvJ/L1HJCus5mfHuWWaebXZMYovo+2p7WOY9+q0BhS2h8mdZy6jGy1qP6k7c6G+M9MrH3RovVY4HjOWfUcc656jeiYmsZ+T8BoUs6p3PGGnXjxrn3iNKn4hsV6Qv1yOPRo1bqvYX9L1vGrUnVTlECn+eKldFmUOlsOl7xRdG1hEy/OVHx7n3eX/tbFH5wCxY519x5u0RaRso4nG95aRqTUblZ46Qj5+dX52ddxL9/da+9/KVzrHOuyLO29svG1VGlTfV+22BicwcsBHuFay1TXWv09T/1xyoyMNvuvz8AeDbgH9t8ftvBD4G+KcNdfwI8AeAzwO+g/Oh/8PA64GPAr6WN22siX/18vM7N77zuzgv9F/HL13onwa8FfC2wG8Efgvnwf/snTYeLTMpMe+y8h2vm/33uwHfcvlva/8947XGW3DevD8PfMHGZ14DfDHwj4BPP/Cd1v57+uIZY7D1xTvG1vGKmsup7t91+e+vmv27d69Y+zLx2ku5Od8NfDzw1xf/bu2/Rx61jvHRve8dL0sdLfL46Ly0yvyjfYlc+9kckZUtn5/Y2sOgOfM8dXjlcSvXxlhxFoN/Xixycs61fkfqbHvrUSG7Pe1qxaIfWufQc0Zk6y2958VS5trab5GR3v04Z6svnjFW6G2jygoPKluiZY0t2RuzbFkBMWd35p601LNFtF00arta7I+jWPdY6/rK9Luo8fidJq6tMZXfIWKNHdkv2XqVZ48p/HRKmeTVdzLte6s+ovQftnL0nMjUQyPZq8OjV6r8TtbP97Spsu0pa5lM29hah2eMW/Z+y/ntYU9eqPQqD9b94jnzPGWUNvicDH9dhHzJ8FErZfhovrc5mTFmTxmF3abQqcG/xo6ulxbZeqSO0W3izPjtHltyRe2je2px0pazPlqXtI6ZIv9oSZZu5FnHUbaqyjc/yh4+2q6o9XVNl/KMsUKPVvUf8v0aKv1jySj6vdo3P+faOWGZ+8h9b8FrD0VjnXvPPKrivgr7ubWOkfSjyDJb9IgvtupUkf1XrH21bzLTFzJqTpFKhlnnRR3H8KDIN7ZilS8KeaTIW4I+eTsQr7dHjZcqp8hD9PmtusuUnSOhznfIXJeqdazw0YI29mFpmyqfqJd8vSYreuXq7tGy9jN950r9GPJ1pOycPVW7PGV67cep7q09qcih9Zx5SvkNefZ6r5zrbN9eph6m2ivZZ7HK76TQqRT3cMF3FlvHSxEDUsS/5mTGGzzrS2VPwJg5S54xU595y+/p6aNvqSPbNszWW7eIPvOt+16Zp5l9Fqt8Ncq7Ftnn6qhnsUqnVuhhirO1lzzyEulDAl2+/ZLMdyuyc4siyIpptPRdlbdlJctvbqlDbbNk+hA89MzVjdRzle1SnJEKeb9G9P1Vz15R5BGrYxNzMs6IUfWDqHWpym23Eq1P9HwXxNqXUd4oi2C0WIMST1+ix8u6h3u8AZadszdqu+ZkrftsXbdnLpmHEWJsCtsg2x/Q8z7eEbJzg0bVc0ePr8FYb4GA/p6stf+ZtvrI74csybDvVGtfEfdT+Jk9qHWE0eSLKk95jaP23ZExU/39gJ45WNG2+sRoMRbFGHtlqzL3MjO3+TG8ozKREc+Zc2TMevpBITZvSaVXeOvJztfsZR9mr+M5W3OvimdYP6/Yw6C5l6Q8W0a7w6lYw94y1rYpfUJWFLnNa6j8FdH5sOrzW6GHLdkbs8f29sw1VHc6Won26St1yuz9NbUhO49WfV/uaJmoszI6d2mO11+VEV9WzL1nThTyRbXvW9akat2rfaiR5yrockmtZXq9t5bxXvn0+0yfa5ROHb2+1hjhHc/H8H7WUbLfKl+Sue8V63j6fct+tMiJzLXS8280jEp2ruZRRrwraKWHDnpkv7T0XXnXyLr3R5cVkPsWb6bePuodhYnWdRnto44ss0WP+5iKe39eou3hXvfrRsj3UORuKNevVX5Z+6/KV1ToLa08hTsNMG6OumV8vbZa6xxG5gTOyZqTNTLs1Gw5pKpHZUMo4uOqmJcq1p+dG/NY7oa2yLDe9oBn7hW6Qc+7eNHxBVU+geLORLbtPHoeiQX1m289clwi412qM3VUmac475R6i8dvoCqzZGu81PfwsmOqinxmhU9jToZtd43IMVb5dBTv7PTS27JyQqz1KM48T7tAG09vIdMvrfBprX1P5BpTff7o+KryQZb0vlM06juH0W3booffKMvX0vO9hax1r8jHHzlPo5Von6EyptZLVmyNmdomUq7Lid6+3Ol3I77N0qIjZOelPha9GOLjnVE67jUUPs0IVH9vNlNWtJyTWe+eZebZ9sjnU7yHOmFZKxlvDShsiVHfe1ONl7WeVl0yM4d3i+gcQNDl4x4dL1WOB4zln+n1961Ub+SM9DZ1K9F98Yxxj3zGiWi7ftQ49xaR+kRUu6J9uYp3vka+R+PdK97zVJXHewRVDpHCn6fKVRn1LR4PveILo+kI2f5yyzj3PO+j37NWYZ3/nu/4R9sGinhcTzmpWpOR+Zm98/Gz86uz70NmfL+17z3vPsOxeVfHeUfwy0aUUd3nzcz/U+RyHq2jx72CI21rPbNT+v/qjQ618s6Xn5/EeYF/CPDWwHsCXw18APCXA+p5AXw058X9CcAfBD4W+B7gC4EfXHz+bS8/f2zj+6Z/f7uV330a8JnAPefB/yrOm2JvIR0t81cvPz8VeIfZv78G+KzZ/3/7RbkX2Ppv/fwa/x7n8fnfLuXW+MPAewHPgZ8+8J2e/r/A1hfvGFv7Ym2Xpw5vPWt8Nud9+ZWc9+aEd694+vI/Ar+N88HwlpyF1ucDN5zX2W9YKfOC4/33yiNLHUuO7n3PeFnr8PbfMi+tMt8iX18Qs/azOSIrWz4/sbWHQXPmeerwyuNWro2x6iz2jJlHTk5c63ekzra3HkEjuz3tauHoXvHMoeeMyNZbes+Lpcy1te+VkS37cc5WXzxjrNDbRpUVXqx1eM6IlnN4yd6YKWRFxNmdtSet9WwRbReN2q4W+8PCC47vsdb1le13UeLxO01cW2Mqv0PEGrvWF4Ve5d1jL8j106lkUou+k2nfe/QRax2j2quQr4dGsleHZx6Vfifr51/Qx6bKtqesZTJtY2sdnjFu2fst57eHPXmh0qu8vOD4fvGceZ4ySht8Toa/LkK+ZPioVTJ8VN/bRGaM2VvmBbl2m0qn9qwxy3rxytajdYxsE2fHb/fYkivKtfgU46QtZ320LmkdM1X+0Zws3cizjqNsVZVvfoQ9bGlX1Po6oku9wD7GljIqnXiNTH/TnIz8iBe0rf2R9HtLXyL9YHvzYp37yH1vwWsPRWOde888quK+Cvu5tY6R9KPIMlv0iC+26lSR/VesfaVvUuELecF4OUUqGWadF3Ucw0N2vrEH65pUyaMX5Oct9cjbgRy9/QX5d1N66YgQf36r7jIpciReoMl3UKxL6+fXyMhRHzn2YW2bIp/IU4/K79YrV/caL7Cv/WzfuVI/hnwdKTtnT9mubN1N5atS5NB6zjxl7Bry7PVeOdfZvr1MPUy1V7LPYpXfSaFTeWWrQm+1jpcqBmTth7dMdrzBu788fVmSoetOZOYfecZMfebN6e2j99ahsA17vXERfeZb970yjquwi1+Q76uJ1Nv3UPkprWUUZ7FKp1boYaqz1fr5NVT5ApE+JNDl2y/JyJOBx3NnKiOm0dp3Vd6WlQy/ubUO0NkskOtD8NAzVzdSz1W2S3FGqu46L8m4v/qC8d7rUN8rnJNxRoyqH0StS1Vuu5VofaLnuyDWvmTpehFtszJarEGJpy8Z4/WC3HsQoHsTw8qo7VqSte6zdd2euWQeRoixKWyDbH9Az/t4R8jODRpVzx09vgZjvQUC+nuylv5n2+ojvx+yJCuv+QX5a18R91P4mT2odYTR5IsqT3mNo/bdkTFT3KuFvjlY0bY6jBljUY3xC7TvZGadrZ46HsM7KhNZ8ZyJI2PW0w8K8XlLL9Do1NZ6FPmavezD7HU8Z2vuVfEMz+dfMPbf8pnI6ou1baPe4YyoA3JyNS1tU/qErKhym5eo/BXR+bDq8ztbD1tjb8ys8+JZLypflepORwTRPn3VelG97aTIo1Xfl7OUeUH7WRmduzTH66/KiC+r5v4F/d7E2UJpS74gP8/RW4e1nggiz9WJF+SPsbVM6xpTygrIlXtH6ojSqTPW1xJVPnhmX9T7fg9PX9T5Ppl3ONfI3o8WOZG5VhTx4sdGdq7mEUa9K+jBWodKtlrbBfq7Rta9P7qsgNy3eDP19lHvKEDMuszwUUeV2aLHfUzFvT8v0fZwr/t1I+R7KHI3lOs3+96fMl/xBX3uSx3lKdxpGDlH3TK+yreG5kTmBE5kzskaGXbqqG/Feep5wdN4+0sV81LF+rNzYx7L3dAWGdbbHuh5x2aPnnfxouMLqnwCxZ2JbNt55DwSK952Kd5bV/iZrHOpOlNHlXmK8041xh7bWVVmja3xUt7DU8RUFfnMCp/GnAzb7hqRY6zy6UTpVJmxBS9ZOSHWehRnnqddoI2nt5Dpl1b4tJZErzHF5y3jq8oHWdL7TpHSPzFiDnsPv1GWr6XnewsZ616Rjz96nkYrGT7DF+TH1HrKir0xe4HGJlKvy4nevlwY922WFh0hOy/1sejFEB/vVLwf7a2nxz7O8n8vyZQVLefk0bWc7XN5wdjvfGbcV9vCslaibRzQ2BIqf5anzAs042Wtx/r5Oaq7d3OiY9DKfNzsO3GZb3mMfO9MoXu9YLy3i0bPb3hBrizqkc84EW3Xjxrn3iJSn4hqV7Qv1yOPRo5bviB/f6nvm86J3JPKHKIX5PrzVLkqqhwqhU3fK74wmo6Q7S+3jHPP8/7avKh8YFas868487aItg1U8Tjr51V37xS5B9a5752Pn51fnX0fMuP7rX3vefcZjs27Os47il+2tYzqPm9m/p8il/NoHT3uFRxpW+uZndL/V+/3y80vu/x8FfAxwNcBPwH8HeB3AN8LfCDwfo31/H7gSzgf+q/nvKD+DeANwF8A/qjx+151+fkLK7977eX3r+WsfLwO+FvAe+9839Ey/xPnxf964DuAP8NZyXkJfDjwXZfPvXFRztr/iPH6xMvPz9/4/fsAnw58LvDNB74PfP239sVTh6cv1nZ56vDUs8anAP8Z8PeAjzPUDet7xduXzwK+HvgB4KeAb+cswD6PsxB7WClj6b9XHrWM8ZG97x0vSx3g779lXlplvkW+Rsv9LK7JytbPQ9sehvgz72gd3jOvlWtjrDqLr7E2Zh45OXGt31E625H1qJDdnna1cHSvWOfQc0Yo9Jae82It45Grc7ZkZMt+nNjrS4YdFaG3jSorvChsiWvsncNz9sZMJSsi+p+1JyPqibaLRm1Xq/1hwbLHWtdXtt9FSYsOvrfGVH6HqDV2bb8o9KprbO39Hn66I+1aEj3GczLte48+MsKZf4Qj50S2HhrFtTo886j0O1k/38OmUthT1jJZtrGnDs8Yt+z9KB/aUfbkhUqv8hJ57h09866VUdngSzL8dRF9ybBbVDJ8VN/bRGaM2VtGabetEaVTe9aYZb14+360jpFt4uz47RZ7ckW5Fp9inNR71mfoktYxU+UfzcnSjTzrOGLtq3zzo+xhS7ui1tcRXcozxtl6tKr/I/g1ovSPJSPp9z10vGvzEjH3czz24BFa41hRWOfeM4+j5GJE2M+tdYykH0WVaSEjvtiiU0X3X7H2lb5JhS9kxJwilQyzzos6juEhO9/YinVNKuVRdt5Sr7wdyNHbFXdTrpGlI/Y4vyPyulU5Eqp8B8W6VKxjhY9WGfuwtE2VT9RLvl7b971ydY/gWfvZvnOVfjyRqSMpcvZU7VLobgpflTKHdo/lmaeOXUM/ez0r5zrbt5elh6n2iuos3iPK76TQqbxncbbe6hkvVQxIFf/Kjjd4zyKFPTFqzpJ1zHqceROj+uiP1JFtG6rumqyhPvOX+14Vx1WdxQpfjequhcpP+VjO4jkROrVKD1OdrSP4qI8Q7UM6QlS+/ZKMPBkYI7foCBkxjda+K/K2PGT4za11gDZnr2csZ41eubrReq6qXYozsqe8P7JfrPLCulcUecTK2MSS6DPiMekHnjKq3HYr6pw9yHsXxNOXLF0vom1WRos1KPH0JWO8IvdwZE7JRGbO3qjtWpKx7keIyWblknkZIcamsA2y/QG97uMdQZEbNKqeO3J8bUIpV4+0S5kbBrb+97DV50TZHhFty8przl77PeN+cxT3xTxE6wijyRfVWxJLLPbdkTHz7mGFn2pUWx3GjLGoxtg698rcy+zc5mtE2NKq/DPo847KnEzfaUbekkqnttajyNfsZR+q/GGK91pG8wUe2cPKXGjF2TLqHc7sNdxSxtI2lU8og6jc5iUKf0VGPuw1os/vbD1sybUxs86LZ72ofFWqOx0RRPv0o8pcWy+K/aWITyhtNk+Z1rMyO4/UK8cy4suqubfOSU/5MhFpS2bnObbUYa2nlehzdUIxxi1l1ri2xpSyQpE/f62OCJ06a30tUeSDZ/dFHTvZw9MXdb5P1h3ONRT70SInMtfKCPHikeiRE7uGyh+myDtW66BH94un79G25DWse390WdG6vyL1Nsv8j35HoXVdqt4TiJav2fmXayju/XnIsIcVObRrjJDvocjdUK1fxb2/a0TmK/a4L2Xhsd9pgLFz1I+Ob8u53TKH0TmBE5lzska0naqSQ6p6RrAhsuLje3WARifulaMK+2s/Ss/J9jd4ZdgI9oB3HffWDaLz7OdExxdGiPdN9UOfv7GTeaaOMr5LPO3yytUeOS7R8S7VmTqqzFOcd6ox9uhfqjJLWvSDLXnXS2fd64sqn1nh05iTYdvtoRjjOZE+HWs9S7JjC14yckI89fQ68661Sx1PbyHTL63wac3JuoeZ/XnL+CryQbz9sH7ecm4r/RMj5rD38BspfS1zIvW81nap4nZzonT8FkbK4/Wi8Jv1khUZd4h72YRWRvDlqu4vXCPS5wK5eamPSS+Ojndm2KprqHyaEWT5v+dky4qWc/Jo/7N9LpEyKSOfL+O+2hrWtRJt44DGlujlzzpSRjVe1npUd+Ii9mJGTEKZjxtle0TleIzmn1HGOudkyLue9Uz0zm/IlkU98hkhx64fNc69RoY+EdGuaF+uRx6NHLdU7K+W81SVx3sEZQ5Rtj9PlauiyqHKtul7xRdgPB0h019uHede5z3kvGc9Asv573XmZdgG14iKx/WSk4o1GZ2fqYx3W8oo5mQi22fYO86f4SudODrvyjgvjOOXbS2jyAvIzv9T5HIeraPHvYIjbWs9s1P6/2pTN4/zo5efbwD+r8Xvfhr46st/v09DHc+AzwG+HPjUS10/BXwb545+H+dF/7pZmR+7/Hzbje98m8Xn1vgB4EuBDwXeEfiiA229VubngY8CPg34fs6b9HdznqzfAvzw5XM/OCvzDFv/rZ9f4z2A33xp11eu/P41wBcD3wl8xs73LLH239MXax2evljb5R0vaz1rfDLwxzkLow8CfmTxe+te8fZljz99+fkBi39/hq3/HnlkrWOLrb0fOV7X5Eu0PF6bl6g6rvXlGTHzks01Wdn6ebi+h0Fz5nnq8Jx5rRwZY8VZDDHzMrElJyeO9Dti/x5Zj8/Il92edkXh0Q9hfQ49Z4RCb4F+82Itc2TtR+5FuL4fJ671xTPGCr1tVFnhwVOH54yIWGN7Y6aSFdB+dqv2ZIZO9VTalWGvbfEM2x6L0g0z/C69sOoVe2tM5XeIWmOe/TIRpVeBb+8/I99P10smTRzVdyDHvrfqI546RrVX94jSQyM4UodHr1T5nayff4beplLYU94yEGsbe+vwjHHE3vf23cI1eaHSqzw8w7ZfPGeep4zCBl+S5a9rlS9ZPupeMnyip+9tjYwYs6fMM/LtNoVODbExsLX1Eq0fLut4jDZxVPx2jWtypZePbs5TiJNa5EqWLmkdM0X+0RbRupFnHbfuYZVvftQ9nBGXWXJEl3qGfYytZVQ68RKFvykrP+IZbWt/JP3e2pcI/aDF37Q199Fn9xFa/XORWOfeM4+quK/Cfo5aLyPoRxFlrtEzvmjVqTL6r1j7vXyTc6J8Ic8YM6dIJcOs89LbB2ZBnW+8hnVNKuXRM3Lzlnrl7UCO3v6M/Lsp0EdHzDq/I/qyt45VORLP6Js7DXHr0tOXJVk56luMFvvYa5sqn6iXfL2273vl6h7hGbFnXpTvXKEfrxGtI6ly9hTtUulu2b4qZQ6t5czrLb+j7fWI815xH89LpB6m2iuqs1jld1LEvRX3cMEm873jpYgBWfrRUmaPqHiDZ31F9CVL113S+12MnmfeKD766DoibEOV3rpGxplv3feKOK7qLH6GxlcTbbNZifRTWsooz+JsnVqphynOVuvn11DYFBk+JNDl28/JypPZY6Q7U+qYxpG+q+4JWlH4zUfJ2VsjI5bjoUeuboaeq2iX4oxUyvslGfdXnzHmex29YhPRZ8To+kHruhzl3RlPuzyo/KdzPH1R6Xqj6G0tnx8ZT18yxusZ+fcg9oi8sx7JSO3KWPcqXTd6vWQySoxNYRtk+wNU/ikrqtygUfXcUeNra4zwFgj0uyfb0v8oW11leyje3PC06xm5a18Z91P4mT300hFGkS+R5162X35vzBT3aqFPDlaWrb5HzxiLYoyf0eedTIg/Wz11KGzpkd9gWGNvzHr4QSEnb+kZGp06op6JyHzNHvaharwy3mvx9MX6+Wc8jr/lk9GXaH9YzzucEXVk5Wpa26bwCXmxni2qfd/jfdw5kW/PRJzfCj0s4302z3rp+aYb6O50HCXap+8ts2SEt50U8YneNlv2GxRZuUtrWPqfFV9WzP0z+r5bu4Vq3z8jN88xqo4j9bSS9S72M/LH2FMmyieULSsUci/j/ShPHU/pHc/H9H7WNSJlfna+T+QdzjUU+9G7hjPWiiJe/FhQ/t1WL73uCnrx1KGQrZ527ZF51wji/16UB4U/TKW3PSP/nmwvn8icI+vyMb8TrL6Pqc5DOUqWPdzjft0o+R7WeVTlxO4R+fdHrf33yK5ePgcVj/FOwzVGylFX3EOOfl8uqp45GX+/K9pOVckhVT3PeDpvf6liXtl9UeXGPJa7oRMW2TKKPeBZx8/I1w2ibbSjZMQXVPkErWOWdS9lj4gztXceyRa93nybk5XjkhHvUpyp3nqekS/zFOedaoy38PhwM8tkvFP9jD5+b8W75hm+uR55BEt6jrHKp9M6zsrYgoUMnc1bj+LMs7arZzxdXU/EfbcoWam4h5n9+SVr49u6hkcZp2fk/l2VNbLuLyhsol5+I4j3tfTQ80a6p91bx7cwQh6vh2f0jallygrFHeI5KjvyCCP4ckd/myVCz43OS31MenF0vDPD17iG0qfZisL/rczpsp6TnrWc4XN5xtjvfGbdV1tinfesdxMUtsSo7709QzNe1no87VpDcfdO8cbInKx8XIi/E6d4y0Phn+kR68ySd4p6evjJIacv1s9Dn3zGLLte4fOPWC8Z+kREuzJ8uYp3vlRxy2do9tcWmfdNR3gPEsbNkff0xdOu3jlUETZ9r/gCjK0jRPvLPePc47yHnPesVVjnX/W25ZysdxwU8Tjr5719WaJYkxn5mb3i3Yr86uy8k6zvt/Zd7Sud8My74t2WUfyyrWUUeVMjvS2wR9Sb5z114r22Rdl2of1/9ZXKvPz9y89XNn4/NfItGur4yMvPb1j53U8B38q5f++10q5ft/Gd73r5+Z0H6v+HnDfVrwfe6cDnr5X558DnArecx+VtgA+7fP6W8+T9ndnnrf33jNeS33v5+WeBN678/q04j+27Az8D/MLsf595+cx/f/n/LxZlLf339sVSh6cv1nZ5x6t1Lu+BPwV8O+dD4ftXPmPdKy1zv8UkDN9y8e/W/nvkUcR+mbPc+xnjtSVfouXx2rxE17HVl+h5yeKarGz9/D3X9zBozjxvHdYzr5WjY5x9FkPsvGzJyYkj/W7dv/ccW48K2e1pVzRW/XBtDj1nhEJvgT7z4iljWfsRexGu70ew6WCvbHzH2hgr9LZRZYUHhS0B7Wvsnv0xU8mKiZazW7UnM3Sqp9KuDPtjC88ei9QNI/0uvTmqV+ytMZXfIWqNWffLnCi9Cnx7X+Gn6yGT5hzRd5ZE2vdWfUR15rfSMicQp4e2crSOFn3XUmYPq93Wcx3PuUdjT3nKLImwjb11eMc4au974kZHOSIvVHqVFa9fyHLmtZR5ZaNMhA2+JMtf1yors33U3nYteUy+t8h+RJdR2G0KnXpezysb9VjW2NZ5FClb1+p4bDZxVPx2yT3H5IraR7fkKcVJr8mVe/J0SeuYKfKPrhGpG3n2o3cP36PxzR+tZzQ/+7yOVza+48j6OqJLecZYqUe/slEmqv9bRPo1VPrHnJH0e7Vv/p42/8HW3Eef3Udo9c9F4pl7r2y11DHnHk3OUo+Yf0/9qLXMEUaILx7Rqe7J7f8rG7+PWPu9fZMQ5wsZNadImbdkmZfePjAPqnzjNaxrUimPsvOWeuXtQI7erribAnod8Z58n0hWXrcqR6J37jTErUvVOoZcH+0IsY+1tqnyiXrI13uu7/seubpHiT7zIn3n2frxHlE6kipnT9Eupe6W6atS5tBazrxR5HeUvd4jv7GHby9CD1PtFdVZrPQ7Zce9o8/iCL21Vc9/ZaNtR/pybe4V8a9rRMYbFPdKl2Tqumv0ehej15l3zzg++ug6ImzDXm9cQM6Zb933ijiu6ixW+mp63suK9FOOehZn69RqPewpvJ/Uyj05PiTQ5dvPUbxbsWSUO1Ogj2kc6bv6nuBRFH7zUXL29oiM5XhQ5+rek6PnKtqlOCOV8n5Jxv3VUd/r6BWbiD4jRtcPWtblPeO8O+Nplwd13t49vr6M9EZZK48h1pCFpy8Z46W4B7FH5J31SEZqV8a6V+m66lyyFkaJsSlsA4U/QHkf7yiq3KCR9dwR42t79H4LRJUbtoWn/1G2utpesbRtTpYPMHvtK+N+Cj+zh946Qm/5Avk5NXPuyXmbyrOHFX6qkW31PXrHWLLHuNc7mXOizlZPHQpbWpF/Bpp3VHrEVu/JyVtS6dSR8xKdr6m2DxXjdU/Oey1LRvAFXmO5h1X5V9D/bOl5h1O1hj1l1O+oZKLIbV6S7a+4JydPYN4u5fk9J0sPuyfv/U712zOtqO50HCXap+8tM+eeMd52UsQnRrHZMt6guCc3d8nalzlZ8WXF3Pd4E+cIqn2fnecYXcdePS3ck3euKsbYUybaJ5QhK+7Jl3tH6pjIfEsCnuY7nq9s/N4qJxW5OFtE9kWV7xNxh3PJPRo9pDWeEblWFPHix8A9ff5uq5VedwW9jKCDru0X1b39aKx7fxRZcY/+nTmI0dtHv6Owx7V1ec/TeCf4lY3fR+RfzlHnoRzhnjx7WJFDu2SkfI/s3A3F+lXdjVflK6rvS0XwmO40XGPEHHXFPeSo9+Ui6lkSNSdzou3Ux/BWnKWep/T2lzrmldUX9TuBr2yUv3Zu39PH33BNtnjalVmmxx2ba/TKs8+IL6jyCRR3JhS282PLI9nC2q6M+HtGjss9efGu7DPVW49S5r2y8fuo8041xmt4fLhZZe7Jeae6h9/7Hs275hm+uR55BEt6jrHKp9Myzvf0iS0cIetv2HvryT7zrO0aIZ5+FIVfek6WT+sezT1M9btEW+Obnde0ZIQ7RSP4J3rnsPfwG82J8rWo9byj7VqStX976/geeubxeugdU8uSFfdo7hDPUdmR17hnDF/uY3ibJSoWGZWX+lj04nvi452qN/WUPs1Wsv3f9/TJ6Tp6TqrfPYvKs1Xn8yneQ73HPu9Z7yYo76tZ6lDkfqrGq8ffLpmTdffuHs0bI3My8nGXRN2JU73lMdq9M5XuNerbRSPnN6hkkTKf8Z7cXKBR49wT9+ToExHrOPNv+r2y8fstnWXEuKVyf62Rdd/0njHeg4Sxc+QVuSq9c6gibPqe77c8Bh0hyl/uHece9xey/p6lAuv8K868OffkveOgiMf1kpPZa/KenPzMHvHuI2Wy5+QIGT7DI99v7bvaVwrtel7muy2j+GVby2Sv33vGeltgj4gcMOivE8N227LvdYKx/685WJmVb+Tc2XcF/gXg5xa/f8/Lz1NDHb/88vNXbPx++vd53ZPS8KGclYSfn/3urYH35zwJ33KwDf/S5adl81rLfBzw5sCfA/7Z7N+t/feM15w3v7Tl5zkLrDV+dud3781ZKfsmzov0mzc+t2St/619OVKHpy/WdnnHq6X/fwD4bOAl8NuBH9r4DuteyZj797v8fMPi363998ij6DUGv3jvZ4zXso6JaHm8Ni8ZMn+tLxnzEs0RWdny+aN7GDRnXnQdW2deC9YxtrSrty6yJSfheL9b9q9lPSpkt6ddGVh0vbU59JwRCr0F9PPiKXN07UfLr739CMf74hljhd42qqzwoLAloG2NHRkzlay4xrWzW7Uns3Sqp9KuLPtjjcg95tUNo/wuI3CtL9fWmMrvELHGWvX2KL0KfHtf4adTy6Ql1/SdLaLse6s+ojrzW4iwV6P00BYsdXj0SpXfyfp5pU2lsqci10urbeytI3q9ePa+J250jVZ5odKrtrDuF8+Z5ymjsMHnZPrrWtZ+po+6twzv6Xu7hiLGvFVGYbcpdGqIXWPW88gjWy11jGoTR8Vv50ToIBk+ujWeWpx0a71k65LWMVPkHx0hQ8+b49n3e2VUvvlR93BmXGbOUV3KM8YKPVrV/y0i/Roq/WNiNP1e6ZuP2Pdbcx99dl8jwj8XSeSZtzWPqrivwn7OWC+99KOWMkcZJb64p1Nl9l+x9kfwTUb5QkbNKRohn2xtXnr7wLwofOxrWNekUh5l5y31yNuBPL1dcTcFtDpi9vmdndetypHonTsNcetStY73iPDRjhL7WLZNlU+klq9H9706V9dC9Jmn8J1nx2UmInQkVc6eol0j6G4RviplDq3lzNuTbUr5DTH2ujq/sadvr1UPU+0V1Vk8gt8pKu6tuIcLNpnvHS9FDEgR/7qGIt6wtb4U9sRjzVlajlkPm2U0H310HRG2YY83LiDvzLfue0UcV3UWj+Cr8ea6WYj0U456Fmfr1CPoYXtlHqNvb49MHxLo8u0nMvNk9hjhzhT0iWlc63uve4LXUPjNR8rZu0ZULMeDMlc3U89VtEtxRirl/Zys+6vRe2Vr3yv0fE+75mScER7fsbUOdRkY790ZT7s8KP2n3r4odL3R9Dbv50fG05es8VLcg9gj8s56JKO0K2vdq3Rd9X0DLyPF2BS2gdofMCfSP2VFlRs0sp5rrWMEn17Pt0BGuCdr7X+UrT7y+yETmT7A7LWvjPsp/MweRtARRnxrCOJyaiYi7bvlmPW+VwvxOVjZtvoeo8RYlkSNsXXue+RerhGV2/wY3lHJjOdcYzlm6thqZt6SSqeOnBdVvmaGfagYrwh5nGHnjbKHVflX0P9s6XmHU72Ge8WMonxCXhS5zXOy/RWZeQKgP7/XiNbDLGM2+tszEah0hCNk+PS9ZSYi9ljU/lLEJ0ax2bbKeM+jnrlLsN//zPiyYu49c6KQL6p9n53nmFHHVj1ess9VxRh7yijfW4O898p7+FyX7OnUSr0tOx+8lw46oXg/a43IvijzfVrvcM5R6SFR8b+otaKIF49Or/iPh153Bb2MooMu90t037PuGq1h3fu9ZYVlf6n0NsU92RH8dHvrMttH3VLmKMr8yx55KNfItoeV9+vg8eR7ROVuKNav6m68Kl9ReV8qksdyp+Eao+aoK+4hR7wv11rPGtFzkmGnPqa34o7Uo7IhFPFxVcwruy+q3JjHcDd0iy3Z8pjsga11rNANeuTZZ8UXVPkEj/Fv7EScqb3zSLbo8ebbkugcF0W8y/J51Vt0CpnX+7xTjLHHh5tR5uh49biHtySiL8p85j2ifBrXiLbtMsd49L9h3zu2sEeWztZazxpRZ561XaPE06+h8EuvEe3TUq2x7M+vYR3fqLymOaPcKeqtr8FYOexzVD5DiPG1KPW8Ee9p99bxvfTK4/XQO6aWIStUd4iXqOzIPUby5T6Wt1nW8MQiI/JSH4NenBXvVL2pp/RptpDt/+6d03Vtv0Ss5Sifi1UmKWMSmffVJjzznmXjgMaWGPW9N9V4WetR3YlrqSczJrFHdD7uFhF34lRveWwR5Z9Rxzoz5Z2inpHzG3rLouh8xp65QCPEuTP1iVH/jq/ina8R79EcwbomM+6b9tqTkTlEvf15kbkqveMFETZ9r/dbHpOOEOEvjx7n6PN+4tq8qHxgXkb+e1XZ7zgo4nE95GT2mszMz1THu1X51dl5EZnfb+27On87aj1mvNsykl+2pUz2+u2d/5d5T2+vjt468YSl/x5daqsOU/9fbahsjdcD7wa82eLffwj4i8DbAn948bvfDvxbwI8BX9VQ99+4/PxE4Fctfvdvc160PwP8zdm//z/A1wA3wCcvynwW8JbAFwE/efm3dwNeu1L3q4E/Arzz5ft/dPY7TxmAt1kp85s4b+KfAP7Lxe+s/feM15yPBd4e+ErgezY+89PA79n435dfPvPnLv//Ly7KWvrv7YulDk9frO3yjpe3/59x6ev/Cfw29g8F617x9uXXA++wUv+vBf7U5b///OJ31v575JFnjC173zteHvni6b91Xjx1ePrSKscUHJGV3s9b9jBozjxrHRPWM68Fyxhnn8VgHzOPnITj/fbqbNb1qJDdnnZ5sO4V6xx6zgiF3gLaefHO5dG175Ff3v1o6YtnjBV626iywoPClgD/GXl0zFSyYsJ7dmfuSU89kGsXjdqulrm34tlj1vWl8rso8PZl4toaU/kdItbYkf2i0KvAt/cVfjqFTPLoOyr73qqPqM78Fo6eEwo91Iu1Do9eqfA7jbqOQWdPWctk28aeOsBvu1j2fuv57eGovFDpVVas+8Vz5nnKKGzwOZn+upa4bKaPWiHDR/W9qWLMqjNM4RdRnK2e88jad2sdI9rEivjthFWuKNbiU4qTeupR6JLWMVPkH4FON/LYndYyKt/8iHvY2q7W9XVUl/KMsUKPVvRf5ddQ6R8To+n3Ch0PbPPimftWH6gVa45PNp65t86jKu6rsJ89dYyqH3nLWFDFF706VXb/FWtf4ZsEjS9k1JwiZd6SZV5UdqEVpY/dgnVNKuVRdt5Sj7wdyNPbFXdTQKcjKs7v7LxuVY6EKt9BsS5V6xhyfbTKXEJL21T5REr5atn3ylxdK561r/CdQ75+rNCRVDl7inapdDfI9VUpc2gtZ55SfivsdWXOtefzFrL1MNVeUZ3Fyrz27Li34h4u2GS+d7wUMSBF/At08QbFvdI5WbquKv8Ijo+Z+v7TiD56Tx3ZtqH6jYuJrDPfuu8VcVzVWay8m5J910Llpxz1LM7WqdU221N4P8lLtg8JdPn2E5l5MqrcohayziNv34+2qeX7vWT5zT11KGwWVSzHgypXN1vPVbRLcUYq5f2co/vFOi+jvtehik3MyTgjRtcPPGVGfHfG0y4PKv9pS18ydb3WtlkZKdagxtOXrPFS3IPw6LqKnL1R2zUna92rdF31fQMvI8XYFLaBwh+g8E9ZUeUGjaznjhhfU8vVo+0CTW6Yp/8KW33k90MmMvOas9e+Mu6n8DN7UOgII8sXyM+pgfy3qVT3akGTg6Ww1UeOsTyVvwOiOFs9dYz6jsqczHiOdcyUsdXsvCVVnNxajypfE7T2YeY6hvz3WuaM4gsEzd/yUfTF0zZVbtScrPwz0ORqqt5RUaDIbZ6T6a/IzhMAzfmt0sNA836n6u0ZC0odoYUMn763DIz3tpMiPqG02TxlPOeRInepxV+VGV9WzL3yTRwLqnMiO8/RU4e3Hg+Kc1UxxipdRCUrFHIv+/0oTx1P6R3PUd/P8qB4q1y172G8N1HmHJUTqrWi+hsNo6LM1TyKyh+myDtW6aDW/aK6t+/B2peRZUX2O3OQr7ePfkfBsy5V7wlky1flfcysPBQvipiB+m9hjJbvkZ27oVi/qrvxqnxF1X0pK2r7LlP/HjFH3Tq+qreGID8nEDRzMpFhpz6Gt+Is9Tylt79UMa/svqhyY0a+G+qRLaPaA+o7NkfocRcvK76gyidQ3JlQ2M4j5pF4UL35pspxUcS7VH8bcESZpzrvssfYsx5VZSD/nWql3/toX5T5zJDv01DYdhPZY6zy6Sje2VHrbVk6W0s92WeetV2qeHorWX5phU9rQrXGMj/vkZPZeU1zsvptPbdHfeewpW1WFH4jha9FpeeNek9boeN7UMV7FD5DhQ2plBXZd4iVNqGV0Xy5j+FtFstZochLHV0vzox3qt7UU/o0W8j0fytkRes5eaT/Kp+LVSap8vkg/z1Urx6SZeOAxpYY9b031XhZ61HdiRv1jRFFPq5nvBQ5HiP6Z9R/3ypT3inqGTm/QSGLQJPPqLp7NGqcO1ufaF3HWb5cxTtfI96j8fbFc6ao8ng9KHKIVDnyilyVUd/isdDj/RIYS0dQ+Mu946x+Y//avCj/hpoH6/yr3rZUvOOgiMf1kJOZazI7P1OZj6/Mr86Mq2Z/v7XvSl+pZQ5Vcd45I/llW8pkrq9R3xbIzgEDXQ6Np23Z9zrB2P/XLD5wd/kfs4rfD/jC2Zd/2uzzX8d58t4FOC2+61OBfxP4L4APAL718tnfAbwR+ATglYa6vwT4a8CHAH8X+FLg+4F3Bz4SeBXwB4EfXrTr93EetD/BeXP83Us7Pwj4zkt7Jz4M+G+Ab+S8SX4Y+JXABwKvu9T3CYvv95QB+FrOisS3Az/OebN8OPCzwEcDb1h83tp/73hNfOLl55/Z+H0rlv57+2IdYyutY5xZz3/IWcC8kbMS/Skr33viTfsNbHvFy8de2voNwHdznpfXAx8BvDnnA/KPLcp4+m+VR546vHvfgrcOa/8982Ktw9MXz7zcYTtbvGUmrLLy6Oc9exjyzzxrHRMeeXyHb14sc5J9Fk9YxsyzH639tu5fz3pUyG7vPrnDtrase8U7h9l4169iXrxzCba1b5Vfnrn09MU6xp6+eBhVVoBtHyttCeu8tKz9bLy2VOae9NSjtotGbZeFO/J9Ndb1pfK7ePpv/XyrHZnlq1H5N+Yc6YtSr7LuMZWfLlsmecZYZd+DTR9Rnvl35NqrKj0UbH3x1uHRd7P9TqOuY5U95SmjsI1VvlCw7X1vu+7I9zmq9CprXzz7xXPmecoobfBMf523jKVdKrn/VHxvqhiz6gxT+EUUZ6tnvVj7bq1jRJtYFb/1yBXFWnxKcVJrPUp/vnXMPOfcHRo/jbUezzq2lFH55kfdw6q4zMRRXcozxio9Orv/Sr+GSv+A8fR7hY5nnRevru5Zx3fk55N46vCUsc69R7aqcjEU9rO1jlH1I1W+iyK+6NGpPP2/I39/qfSKbLvTw8g5RSoZZp0XhV0ItrWv9LFb2qVCGfu5I7//3rwdyNPbW/MKMs/8O2xzojy/FXndHiztUuU7KNalch1n+2hVqNs20j027763ojiLPWtf4TuHfP1YqSNZUdy3GJlsX5WXO+y6niq/14LKXlfkXHs+f4c2tzeTFtvAw9FxVq17hU5lla097KmjZMeAVPEvVbzBur+U9oQFVf4R6GXSEVQ2/h35vodRbUP12s/0ISnzNL1kyWMY820A1bk68lms1KktZOc7wdi+vTvy79l4UOXbQ26ejCq36A7NGzKWMW457zPvYt6hGSuvPjlSzp7Sh3BHfp6EIh6v8DUrZbHCLlLoB9Z58Z7DijxiRWxijuotjaOo9ANLGVVuO2j0NksdE9lz3yr3Rnuj7I7x3v7ztstaxlPHhMcmzBovxT0I5Z31O3J9G4p2zcle9x6s9ajuG3jKTIwWY8u2DTxlsu/hesvckb/uVb5phZ47YnxNLVePtmvCOpfWdnn6r8oLU9kr3lhOpn03amxZGWOCfD0kW0cYXb5k59R47DvPmFn3sNJPZUFlq48cY8keY1XMV3G2euWLwpbOzj8D3d8BUegiirwllV5hrUeVrwk6+xBy17FnvajiGZbPq/ZwC5l9sTLqHU7VGlbFjFQ+IU+Z7NzmOVn+CmU+bPb5rdLDvPaB9Zz0rBfPWXxHbtxE0a4lmT797PWi3F8esvOuPfvYU8Z6Hqlyl1r0quz4cvbce3WkbB89aM4JRZ6jSte/I/9uDuT7HVXyCPLfW5tzdN8r5J63DouOpFpfc7LywVV9Uex7bxlLX1T5Pt79qFjHXo7KCWWcTREv9rTLWsb6eWVOrKXM6HcFLX1R6aDW/eJpl+qukbUvo8oK7/5S6G2qmKnCJ2JdlyoftSq+bpUV3n2cfe/vjtz7HCpZrIiTq/T87NwN0K1fD9b+K/IVFXqL5/PKcxhy9e8Rc9QVMXJPHR654qlHMScT2XaqFYUcttajtCEU8XFVzEsZ6/dwdO1bzy2Vv8G6J0e2B6xzr9INsvPsl2TGF1T5BIo7E9m284h5JN4y2fFn0OS4KOJdns+D5i06j8y7Y8y/R5Q9xp71qCrjGS/r+lLprKPG1SDfp6Gw7UA3xgqfjrUeVWwB8v0zrfOYufYVPoQWVO96ZPmlVf4T5RrL/LxHTirzQUa6U6TQ11Q57HeMd+8WNL4WyNfzVOte4f8cNU/DU4/KZ6iwIVWywjpmKpvIU+aO/Jw2VRkrXl9uts/Fu++VcYxMvVgV7/RwR/4bZop9PCfL/63a961zn/XumSrPNjsmMZF5X61F3me/NaCwJbL9WZ4yqvGy1uNpl2f/eupRxCQU+bhemZqd4zGqf0YR65xQva2SWc+o+Q0KWQT5+Ywqu97TF0WcW6FPeNrlrcf6eY88GjFuqdhfqvumnjV5h8Yvna2zqfoyqo6v8hlbUdjOoNERFP5yL9nn/ZLM2PgdY77Zln3mKW2D7HicSk7OyVqTqvxMRbzbU0YxJ9k+Q1XsTuErtc5hj3NrJL9sS5ms9aXKo1DEFbzryyNX7sjPcbDK7fT+v+rh4WFe8AH4zJUvnPiHwM3s/58uX/wul/9e8g7AH7pU/Ks4d/qbgP8a+JbFZ611A7wZ8MnAvw+8B/AvAj/CucN/Aviaje/6NZw3yYcB7wj8E+DLgM+6lJ94T+A/Bt4f+NXA2wE/yXlDfMWljvnnvWUA/vNLP14PvAXwj4GvBj6b9bH19N87Xu8OfAfwvZzn4I0bn9vjgfP8fgLwBSu/t/bf0xfPGFv74h1jSx2eeqbv2+OvA88W/3Z0r+wx1b3Wlw8EPgl4L86C9y05C6eXwBdf/vcLK9/pGWeLPPLU4d37Sx7YHq+WOiz9986LpQ5vX6LX/trZ4ikDdllp+fy1NsH6HobcM89ax4RHHj9gnxfrnCjO4omjY+bZj55zO1Jng/X1mC27ve26Vm65tqx7xStT15jauqUfWMt412/2vHjKgG/tW+SXZy4f8PXFqrdY+7LF1N6tNTaqrLhW13IfK20Jy7xc6wdsn/dr3xMlK8DX/+w96annAZ1dNGq7turemvtrbYvw1VjXl9Lv8oCt/9bPt+jgrb6aqa1RfgdvPXC8L2q9yrrHVH66TJnkGWOVfT9h0UdUZ/4DufaqUg+9Vm7eF28d4NN3M/1Oo67jBzT2lKeMwjZW+ULBtve97Xog3+eo0qs8ffHsF8+Z5ymjsMGz/XXeMiofdaYMH9X3pooxq84whV/E066Jo2vMs16sfbfWMaJNrIrfPmCXK4q1+JTipNZ6HtD588F+blk/f61tUX4aaz2edWwpc609EOOb99Qzsp/do3tZdTzPOafSozP7r/RrgEb/GFW/z9bxHrDNS4uubp3Ha22LyCfx1OEpA7a598pWRdwXNPazpY5R9SNPmSPl1tZYdnzRo1Nd6wfYxyxif3naZa0D8u3OPR54fDlFqjo88lVhF17rz3ztK33slnbtMX3PUf/c3ueVsZ+pHVsc6f9eX8B/5mfH4r2yIvvMfyA21wNifSKKvO4lU3ujciQU+Q6qdalaxwof7RoPxOYSRrXtSLtGu8c2fdceW/ve2i7FWWxd+wrfOeTrx0odaY0H4nP2FO2KKHPt89m+Km+7rtWzpeu12t/X2mUto7LXIT/n2vP5B3S5vVt199orLe2yjrMir12lU1lkq9qemvPA9XnMjoEp4l+qeINnfynt4iUP9M1ZghiZtNUPb5npd3so/PoRvoeetuG1z6vWvuJemiKOu8YDsWexwlcD+XctlOfqyGexQqde8kC8Hqo4W1Xy6AHNPZuteqP8ut4y2Xkyqtyia2W2bPzM88gr97LjPw9oxsojJ0bL2VP6EKbfbxGRJ2H9/LU2QZyeq8gTWGP6rkxfzbU6IF8/8MyLZ3+p7qVkxyYmFDbLkgfG0A8sZaY277G2J7PzN7ztstQxJ9N/eq1NsC33snU9T9uulYnSRUbMI/bUAb55zB6v7HsQnrNLkbM3arsmFOt+73sidV3FfQNPGRgzxgb59/isZaz7ReWfekCz7hW+aYWeO2J8TSlXLe2aE6lPReQ7qPLCYNz3QxT2Xa/Y8gM5cb9sP/PU7i2ibC9LPaPLl+ycmmv9gPa3qSase1jpp1ryQF9bfeQYiyLPLSLme60OxdnaEmsY7R2ViWw/gnfMsnWRBzR5Syq9wlKPKl8TdPZh9jp+QPdey2i+wKgY6wPxudDZZ4s65zgz/2zq4x4RMs/TNpVPyFMG8nObIddf8YA2Hzbz/FbpYQ9o3mfzrhfrWXytPxE5odntmqPw6WeuF/X+WjK1NzqP9mgdyrsTlvNoavMeEblL3r4o4suQO/cwxps4Eef9tTqgXUdSvb2ScYfVmlcBce+eZo+xShdRyIoH8uWetw6LjuStA57WO56Wvij2vbcM5L5VPuodzgd0OdQWOaGOs2XHiz3tspaJ/jzE5cRayij9Ydl5x946IF+2Wtulumtk7cuosuLa90PMW7wqvX2NB/rfUbCuy6nNe0T4qDPKRJxfnn2suPf3QP59DoUs9nwexsz3UORugOaNHk+7PP1X5Csq9Bbr55/SnYYRc9QV95AzbHSIyQlUzAlo7NQlD4zxVpy1HpUNAZr4uCrmpeiLp11WuRoZJ4EYf4N1T3rapSrjmXuFbgCau3igiS+o8glG+xs7qjNVMb6eMq3x53m9a3JVkeMy1b9Ha7zL8/kJxVt00XmKEX6Wa3WA/u8vetajqswDvnWcfQ9PHVNd+55InS3bp6G6g/qAboxVf68z+50dT1+u1dXqn7n2/RD3no3qzGu9swux8fT5920RoX9b97HCpzX/3R5Rayzz8x45qcoHGe1OEYz7zmF029b2rsJvpPC1TGTqeS3tyt6/E9lvzj4wXrzn2mchLkcp24YcRVZA+x3iUWxCa8wS+v4N6CXT90TfX8j0uSjyUvd4oK9efO3zEPcGylZbt/p+rW1bOr6lHsU+nsj0f19rE8Ts+5a5P9p/lc8FxnznM/u+2gM+ea96ayDblrDWMZGd+6nK57PWo7gT56nngfyYhCIfV3UnboupzcvzcWT/THasE3TyTlHPiPkNoPk7Stn5jA/o7PoR49zX+gEx+oS1Xd56FHf/R4xbQv7+8pwpqjzea2Ui/dLZOpuqLyPq+Cqf8RrTd0TEF+aMpiOo7ylufc/aOCvuL0y0xsYfiPeBecrAWH+v6lofINY2yM67Utn2kLsmp9/tsTYvnv2VHSfylLG2ayI7rqqK21r7nu0rfcA2h+pza0S/rKdM5vp6YNy3BZQ5YNa99UB+joPyXueh/r/q4eFhu8tFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRFURRPkFf3bkBRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFEVRFIWaV/duQFEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEURVEUhZr/D/TC7Cw2ydvmAAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle 1.618033988749894848204586834365638117720309179805762862135448622705260462818902449707207204189391137484754088075386891752126633862223536931793180060766726354433389086595939582905638322661319928290267880675208766892501711696207032221043216269548626296313614438149758701220340805887954454749246185695364864449241044320771344947049565846788509874339442212544877066478091588460749988712400765217057517978834166256249407589069704000281210427621771117778053153171410117046665991466979873176135600670874807101317952368942752194843530567830022878569978297783478458782289110976250030269615617002504643382437764861028383126833037242926752631165339247316711121158818638513316203840052221657912866752946549068113171599343235973494985090409476213222981017261070596116456299098162905552085247903524060201727997471753427775927786256194320827505131218156285512224809394712341451702237358057727861600868838295230459264787801788992199027077690389532196819861514378031499741106926088674296226757560523172777520353613936$" ], "text/plain": [ "1.6180339887498948482045868343656381177203091798057628621354486227052604628189\n", "024497072072041893911374847540880753868917521266338622235369317931800607667263\n", "544333890865959395829056383226613199282902678806752087668925017116962070322210\n", "432162695486262963136144381497587012203408058879544547492461856953648644492410\n", "443207713449470495658467885098743394422125448770664780915884607499887124007652\n", "170575179788341662562494075890697040002812104276217711177780531531714101170466\n", "659914669798731761356006708748071013179523689427521948435305678300228785699782\n", "977834784587822891109762500302696156170025046433824377648610283831268330372429\n", "267526311653392473167111211588186385133162038400522216579128667529465490681131\n", "715993432359734949850904094762132229810172610705961164562990981629055520852479\n", "035240602017279974717534277759277862561943208275051312181562855122248093947123\n", "414517022373580577278616008688382952304592647878017889921990270776903895321968\n", "19861514378031499741106926088674296226757560523172777520353613936" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phi.evalf(1000)" ] }, { "cell_type": "markdown", "id": "e5354fd7", "metadata": {}, "source": [ "![phi diagram](https://photos1.blogger.com/blogger/1134/545/1600/pentatrig.jpg)" ] }, { "cell_type": "markdown", "id": "22d96b0f", "metadata": {}, "source": [ "We can derive Phi by asking: what whole, consisting of $1 + x$, ratioed to 1, equals 1 ratioed to that smaller $x$? The whole $1 + x$ is to 1, as 1 is to what number $x$?\n", "\n", "Check out how we symbolize equality between two symbolic expressions." ] }, { "cell_type": "code", "execution_count": 22, "id": "9a916658", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGwAAAAUCAYAAABoF9hhAAACkElEQVR4nO3ZT4hNYRjH8c8wyUIoCxbKNEmszEZRSMoQycykZCFTLFgZohA1C6Qog6WFESvJn5BQiLKyYKGUhFIIC0JS/iyei9txh3POnLl3bt1vvXV73/c87+88z32f9znnNPX29mpQP4yotYD/sBJHcQcf8AOnaqooyKtrIr7hSN6Fm/NeWCV2YSY+4gWm11bOb/LqWiE2ybm8C1djh3WLf+CCHNduxjSMxcbiJA2avLo68Q638y6cDNg14dyuRH8T+ktj+/MuloObeFxadziRR9c4LMRFkRZ/kcnnyYBtw3fswciy/oNYi2PYnkFkgz8swyicTfRn8nnyDHuAk6WJa0SEd2ILTmNDUeqrSA/GZ5h/H+eHQEcnPuF6oj+TzysVHbuwCr0Yg724WjL2vSDx1aQHUzLMP6H4gI3GElzBlwrjqX1eqeh4gT5xk0dxV+TXrymEPRM5t7wdL43drDDWn8LmYGkR50Ha1j0EGtpFIAaqDlP7fKCy/k3Z73X4nFJYn7/TT5soZ0+IgJZzP6XdeqdTOP/yP+ak8nmlgK0WB94rTMIm6UvXvgp93SJg/biV0k6R9KjtGTYSy3ED7weYk9rnyYAtFTvhoShBb2M9DuPRIIXXih61PcPmY4KB02Emn5efYXNxRuTTdrFFd4ugVvPZq2ha1PYM6xKFw4UKY5l9/muHzcQlsWUX4WWp/wzuiZQ2T7w7qyYdpUakCpjjT7HyFlurqijokF5XhygiXids5PJ5M6aKEvIHFuNJwvAO8exwALOz3FUBtInnk3JaSw2eq03A2qTTNQuTcSgxN7fPmxqfV4aUfcL5rXhahMHh/nml3ukUbzIKCRbD//NKvTOjaIONHVZnNAJWZ/wEzUuzlXRlrikAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle x + 1 = \\frac{1}{x}$" ], "text/plain": [ " 1\n", "x + 1 = ─\n", " x" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "equation = Eq((x+1)/1, 1/x)\n", "equation" ] }, { "cell_type": "markdown", "id": "e3a4e461", "metadata": {}, "source": [ "Since our equation is in one variable, we should be able to solve it, using ```solve```." ] }, { "cell_type": "code", "execution_count": 23, "id": "68e2d660", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAARcAAAAdCAYAAACAPygGAAAFWUlEQVR4nO3decgVVRjH8Y/ZYlgURRTtC21UaH+0WGGWZBuVtvzRbuQfQRBFeyRYRARtVkIFgUYRQZRYmFaQWVEQBFLRavoWYQsVmbZYWv3xXHnfrvO+d+51Zu7cy/nC8A4zz8yc53fPec6Zc55731GzZs2SSCQSRbNlxrF7cQxW4FPcU2mJEolErzEDJ2AP/ICLYYsMw72wCtOlwFIk2+MU/Fvglvg/SePu8ISIF+/jgI0Hs0YuiXI4FWswqtsF6WOSxjUia+SSKIdJWNLtQvQ5kySNa0MKLtUwurH91e2C9DFJ45qRgks1HId3ul2IPidpXDNScKmGM/BytwvR5ySNa0YKLtWwM37qdiH6nKRxzagyuJyPR/AWfhXLfE/nvHZXbMDDohLNwHwsxx9YjbdxpfoFzAPx2QjnBwy/DPpdzmf0sj5FkDQepNN2Vrh/VS5F345xWItvcEgb154jHJqPC/AovhUrA18LYc4V6+2nN2zqkqNwNl5qYbMaszOOr835jF7WpwiSxoN02s4K96/K4HKdcHY5TtTekuE0MeR9U+QwnI2F+GeIzW14D+cJEZ7voIzTMRcn4Y0Ors/iIHzewuYXzNqMZ1SlT11JGg/SaTsr3L8qh29L8IX2o/kOOFn0TBvwemP/nya77/BYY39Sx6XsjC1wl4joQ9lJ+fMAvaBPESSN89FJOyvFv17I0D0TW+OFHLZ/N/6uL684mUzBBOyORUOO513B2AaXYG/8hg9ED7Ihx7W9oE8RJI3LoxT/eiG4TBOV4bUWdlvissb+4lJLtCmLRVR/VfSwGyP+BDyT4/rd8FTTsZW4AktbXNsL+hRB0rg8SvGv7isHY3Ca6Kn+bGF7Dw4XvdgrJZcri2X4XSRzwVaiV2weWjYzF5NF5R+LI/A49hV+jxvh2l7SpwiWSRoXTWn+tRNcBrT3bdK8y8wjMQXbiRnskbgG14ufiLg0570HbFrmuY1zSzLOzctxzxfFrDvxTtqqR4Q7xDvu96LhfISr8AC2NfIkZJn6FMGA4utMP2k8oPo21Uxp/rXzWvSl1pFtKKvasB2OaeK7IgtHsLkaD+Fj0Tv9nPPes7Fj07HxouI+KT74oSzLcc8FYgnvRvGh3ZGzLFk8Jj7MiSPYlKlPEZRRZ/pJ4260qWZK86+d4DK5DdsiGI2zRI+zehiba/Gg6Ikmix+qycvsjGPTRXCZp7Ol6KXYBYeK4XfeHIosNvoydpjzZetTBGXUmX7SuOo21Uyp/tV5zmWiyBQcbrh2s3B6mchLqbrhZLFevI/OxIebea8Jjb8rhjnfi/oUQdK4OEr1r87B5VwxUbcg49xMMbn0voimP1ZYrlYswIVaZ4zCYSJPo5l9MKexP9x7dtH6zBPv9dNz2HabXtW4bpTqX5VL0VMbGzFrT/Qc8xr7P+KGJvt3xCTcUC7HnWKV4C0x0dTMgHwTsGWwCO+KLMlWXIBbxATySvErageIvIMxooe+b5hrpypWn40dTS/kZ/SqxlUwVf52NlWJ/lUZXMaLQg9l/8YGXxl0+ijsKYZkzezX+DtavA9msVT3gssaUXHzsAQH40hRAcaKNPW3RU7GU7IzLcvQ54hG2Uea2KsLvapxFYyXr52V7t+ojH8t8qz4IBaJ7yfMaTaogLtxqxBkZReeX3eK1mdHkUJ/P24q4H79QL/XwSL9uwhH43gx2jmW7OCyjUhO0jD8YzMf3AmfYJ2IwolNKVqfs/CcSCrL+xME/U6/18Ei/cuMGVmvResaWzc5tMvPrztF6/OSmH9IDNLvdbBI/zJjRp1XixKJRA+TgksikSiFFFwSiUQp/Ac/Jm4+gZ5UoAAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle \\left[ - \\frac{1}{2} + \\frac{\\sqrt{5}}{2}, \\ - \\frac{\\sqrt{5}}{2} - \\frac{1}{2}\\right]$" ], "text/plain": [ "⎡ 1 √5 √5 1⎤\n", "⎢- ─ + ──, - ── - ─⎥\n", "⎣ 2 2 2 2⎦" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve(equation, x)" ] }, { "cell_type": "markdown", "id": "ea2cd3b7", "metadata": {}, "source": [ "We have one positive root and one negative root. The positive root corresponds to a length or distance, and therefore should be our mystery $x$." ] }, { "cell_type": "code", "execution_count": 18, "id": "bfbb86e7", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHkAAAAdCAYAAACOn8MFAAAD8ElEQVR4nO3aWYgcVRSA4W+SqJFRFEUUEVdcgkrigw/jQ4wOxg1jJpoHwSWiD4IgiooLBiYi4oNoXMAIwoxEfNMwSkxUcBwTIghCXBCX6IwiGiWKY+KCZqIPp6JNpbq7urs6NZr6oaii6txbp865595zbnfP4OCgiv83M8pWoKL7VE4uloNxAf4q8OiYWUV0UvEPF2I7espWpJYqkotlAUbLViJN5eTimJkcf5StSJrKycVxDjaVrUQWlZOL4xK8UrYSWVROLo7D8UPZSmRRtJOvxBPYgJ9FCfBczrZHYgqPC4PdiDXYgt8wiY24wfQbnCfjkwbPJ9QvkbbmfEfb9im6hLoPc7EDX+O0FtpeLpRbg6V4Ct+KbPUr8ZFL8AwuTmQKqSMLYBFebiIziZUZ93fkfEfb9inaybcJ527BuVorJwbEdPeWqDMXYS121cjci3dwhfigF9rQcRmGcB7ebKN9Fqfg0yYyP2Gwg3e0bZ+ip71RfKb1CDsE54tomMIbyfWulNxWrEquF7StZXvMwAMiSmo5TPfX4o7sM112vC7F/ngxh+yfyXln99TJZCH6cDTW1dzPm1UfgKtxLH7B+yIqp3K07cg+08XJA+LDX28iNwvXJtfru6rRnqwXkfKaiOrdUdSH53O0PwqrU/fGcT3GmrTtyD7TIUudjYtEdPzeRPYhnCEi59Uu65XFZvwqNj5gPxGJ6WkzzRD6haN7cSaexvHiu+c2aNuxfdJOntDaLyR5y6NGLMRBImtsxC24HR/jmpx9T9hT56Hk2WjGs+Ecfb4kMl1i3WsWhbBCrKPfiUHyIW7CIzhQ44SsY/ukp+vPNR8ttXzTgmw9BsR+79oGMjfjMXwkIuLHnH2vxKGpe/OEk54Vg6CWzTn6HBHly53CASty6pLFKuGY+Q1kOrZP2sn9LavZGTNxmRjlk3VkbsWjYvT34/sW+l+ZcW+ZcPKw9kqoMRyBOWLqzVvnZrH7W3rrPC/EPmWvyfPF7k29qegu8QGbRV3bioO7xU6x5i3HBx321Zecv6jzvBD7lO3kJSJpGcl4tlwkEu+KEbptL+rVjBFcpfkuF5wuauk0x+HJ5LpeblOIfYouoRYnB5FJEqN1OLnehjtS8ptEQlLLdbhfZK4bRFKRZkK+RKkbrMPbYnevGUtxt0j0xsU/R04Ste9sMSs8XKftYgXYp2gnz0sUqOXE5IAv/evks3GMmG7SnJCcZ4o1J4sx5Tl5u3BSHkZxKs4SA75XbHFuFHXzatk7hIXZp6fEv+Q+iHvEABgvS4lpTGH2KXNNHsB7KgfXozD7lLmtOafEd/8XKMw+ZWfXFXuBysn7AJWT9wH+BtnOKhpazaY8AAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle - \\frac{1}{2} + \\frac{\\sqrt{5}}{2}$" ], "text/plain": [ " 1 √5\n", "- ─ + ──\n", " 2 2 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tau = (-1 + sqrt(5))/2\n", "tau" ] }, { "cell_type": "code", "execution_count": 19, "id": "49f41ee9", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle 0.61803398874989484820458683436563811772030917980576$" ], "text/plain": [ "0.61803398874989484820458683436563811772030917980576" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tau.evalf(50)" ] }, { "cell_type": "markdown", "id": "0e7c2aa1", "metadata": {}, "source": [ "The question though, was what is the whole, or 1 + x? \n", "\n", "We can just take the reciprocal of our answer for x, i.e. tau." ] }, { "cell_type": "code", "execution_count": 20, "id": "d9a5d200", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle 1.6180339887498948482045868343656381177203091798058$" ], "text/plain": [ "1.6180339887498948482045868343656381177203091798058" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/tau.evalf(50)" ] }, { "cell_type": "code", "execution_count": 64, "id": "358bf467", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG0AAAAuCAYAAAAiNJeUAAAEG0lEQVR4nO3cb4hUVRjH8c/ahoQGSxQYURoVZS9UxCCiYrO/RpBZlr2olv5ASZSEQS4JS2V/MGgrqKiold5ESUF/LRbciOpFQVoEQRq+aEsKzBAKe+H24rljM3dndke9c+eOc79w2Dvnnnnuw/zmnPM855zZnqGhISWdxYx2O1BALsb7+BUTuKG97kymFG0ys7Ad97bbkUb0ttuBAvJxUgpL2dM6kFK0DqQUrQPJQ7QBEYX15/CsriAt2qfiA16Rqu/BSHLvyda7VTIVadEexAE8hmOq6p/GbXgFD+XjWtuYjUVJgXnJ9Wlt8aYOadG24w3Mxy1J3SAewFu4Oz/X2sYSfJsU2JhcP9I2j1LUy9Mexk0YEt+6DfhEiHggN8/ax5iYDgpLvUDkFwxjLp7Hl2KO+7cJe7vEvFddXk/uba1zb+RwHe9mGq2I/FF1fQf+btLeMPpSdYtwLTYJUavZ1qTdkirqiXazCDx2Yw7uxz1N2huuUzcgRBsRQ08zTDTZritJD49Xix7xAxbgR9yJc3L2q6csjUu1aBdis5jTrhBD5HrRG8vcbHrew5/iM2wpFdEW4gP8hcvxW1K/Gd+I4e2iVjvT4TyDW/N40AycKUL6CVyJnak265K/G/NwqIPZin15PKgXO0TA0YhRR5a3jChD+0w5Wlf5R8TiwFFJkUVbif0iya/wLH7CSW3xqCAUWbTN+F4sq8FarMJVapP/rqPIZ0QmxGL1hyI4GsRSkwOlojAqovBZIm1aia9a8aAii0bs730ttoquEelHPQaTUmGmEH1tVd0yfN4CHytc1kLbNRRdtKXi2zsDv0/R7iWxdVThKYzjuaq68cy9axNFFm0h3sFqXCe2iJY1aLsnKRX2Ja93TPOMTlvj7KG4os3FRyKh3yQ2IbeJVZksh7hC75s1oojR4wnYIpbVNiR134lo8ol2OZUB8/Aa3jxSQ0XsaXvEcYc0Nx6CjYFsXMmUXbhdBqIVsacVlX4FWWUpReMLnJ9cv6w2TSgkpWg8KnK8+3Cs2LVvBX0iNVkiTrcdNkWc0/Jmiwh4VojN3zSjOFGcTJuN5Un9cpPPvEzFXhkdQSxF4zwRsY6rf+KsstLRr/G8lke+dzA96fbh8RS8iktxsv9PFR8qeZwNOUg3i3Yc3hZz2c94XJyJyZoFareXaJyzrca50xnsZtH+wQX4LHn9Lq6fov2YxiH/HLyIs/CC2p6xGKen2u8SOVua+SJPbWQL5ZyWFbvFSaz1uEvMcWeIH7ScLdZCV4kfr+xtYGOmOBRcz1YNpWjZcDxOFYHM/qRup4gWB0TPGpvGxiWi19ezVUM3D49Z0SuOz60TEejiJt7TZ3LO1i8Ww6e11VP+85fCMIw1zTQse1pxWNNsw1K0DqQUrQMpRetA/gOSB8KDhjJnRAAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle x + \\frac{1}{x + \\frac{1}{x + \\frac{1}{x + \\frac{1}{x}}}}$" ], "text/plain": [ " 1 \n", "x + ─────────────\n", " 1 \n", " x + ─────────\n", " 1 \n", " x + ─────\n", " 1\n", " x + ─\n", " x" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def list_to_frac(l):\n", " expr = Integer(0)\n", " for i in reversed(l[1:]):\n", " expr += i\n", " expr = 1/expr\n", " return l[0] + expr\n", "\n", "list_to_frac([x]*5)" ] }, { "cell_type": "code", "execution_count": 40, "id": "59fdbbea", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{20365011074}{12586269025}$" ], "text/plain": [ "20365011074\n", "───────────\n", "12586269025" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "continued_fraction = list_to_frac([x]*50)\n", "continued_fraction.subs(x, 1)" ] }, { "cell_type": "code", "execution_count": 42, "id": "0ede0dbb", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle 1.6180339887498948482$" ], "text/plain": [ "1.6180339887498948482" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "continued_fraction.subs(x, 1).evalf(20)" ] }, { "cell_type": "markdown", "id": "ba90f38a", "metadata": {}, "source": [ "# Polynomials\n", "\n", "Polynomials of the 2nd degree conventionly get a lot of focus in high school. We learn to factor them, solve them, and plot them.\n", "\n", "Lets take an example:" ] }, { "cell_type": "code", "execution_count": 7, "id": "ad6b320d", "metadata": {}, "outputs": [], "source": [ "parabola = x**2 - 81" ] }, { "cell_type": "code", "execution_count": 8, "id": "b0b2169d", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEkAAAAWCAYAAACMq7H+AAAC/ElEQVR4nO3YW6hUVRzH8c8pIch6iUTBB6F6SBAvCGKapllJJqgVpFAaeA0fxPKOwRSFpgWSIKIQSvpSBwqUwJOXB0G8ROSDF9TE4KCWF9DERPTkw38fnLPYc2bOzCiDnC8s9p51+a+1fnut//qvaSoUCrrpnMdqbL8cR3Adl7ADA2odVKNRq0hjsAEj8CruYDeeqdFuQ9Gjxvbjk98f4BpGilX1SFDrSkp5OrN5tc52K+UttKAV/+EsfsRLOXXfxXrsF+7if2zLM1rrSkpZhz9wsM52K+ErLMEV/IzLeAGT8A6m6yjCSgzCDSHqi6UM11OktRiNUbhbR7uV0AeL8DcG4p+isrHYi891FGmhEOcMXsG+UsbT7dYilt3bSX4TtmRlq3PsfCO+1Lis04dNPzGXQzoKREz+X/TKyT8t5tQpqUiL0YYv8HhR/teYgc1YlrT5Fu+LL3a8XIcPiNO4jWF4NikbLXzl7mqNpyIdxffoL04qWIGP8QPmJfU34ENME866T5aeqnZAVXIVS9FbfKhNWCXG3IJfMbda43k+aSXeQ0FM9kvsEqK1JXU/yp57kvzPsvYPk3U4h+8wuyj/jHAV6TasmLwQoDXrsJ84Ig8IH3U7p25TiVQo0+854QsqTblHc8ISNAtBnkdPDBVhwHasqcBGLqVOt0tF7zNxs9oOSvAnbnWh/vky5WNECPCTcA3t/I4pOIVPsFGI1iXyRJomHPVF4V8WuL+t6sW4OtubmD3zjvGbOCzEGqIKkdLtNgFbcUzEGycxSyeBVoPwRPZMj3lJfp7LKEuxSC+LPd2KN8SW+1SstrzYqJHYnz3noG9S9qa4S94S/rXLtG+3QdgpLqev40KW34zfRGg/qmgwjUaziINewwnhmy6KUGaiOEyWiStLO5OzRLgV4o63JXu/LKJ4PcT9Zpc4RcYLp1rMchFnrMXwOkzoQdAmXMV8TBX+50kRP/0iAt6WpM1gESAX81yW4C+ZSE3d/0yWp95/lTySdItUAd0iVcA9T7CmPXDGOxIAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle x^{2} - 81$" ], "text/plain": [ " 2 \n", "x - 81" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "parabola" ] }, { "cell_type": "markdown", "id": "93e1046d", "metadata": {}, "source": [ "In $\\LaTeX$, the multiplication symbol goes away:" ] }, { "cell_type": "code", "execution_count": 9, "id": "d0458115", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIIAAAAVCAYAAACKYDYGAAAD/0lEQVR4nO3aW4hVVRgH8N/YEA1WdnuQAsu0LKQSK+jBosAMfCippyBTVKggC4aCjIQpuggV2QWKLLIbqDhQIIT1YBRFlNEE3aAs6SZdKOxqmU4P3x7YrFlnnzNnzjjH4/zhsPb+vrXWWf///vb+1lp7d/X19ZnABCbVsD+HHzH5AI5lrHEuBrG8gbqdyJ8KDXKBcB6uwRr8ObbjGjW6sAzv4Hf8hQ9wEw5L6r6Pl3A3jqzos1P5U6FBLhDuxW94vGXDHTs8i6cxHRuxDofj4eK8K6l/H6YKoWqhk/lTQ4M0EE7HfGzC3y0dcuuxCIvxFWZjBW7GHBH1V2FJ0uZdfIbr5O+Y8eC/VDyuLx5hu0VGzp8aGqSBsExE0cZMB68WA74ysXdhfeFb0zCN0WNoHA/i55J9L1YXxysz7TZgmrjgKar4014aNMufjAZpIMzHPpFzUtyK/SK/lO+mB0TkrcNtdYffOkwtyi8zviHbXByT+N4qyksz7ar4014aNMufjAblQJgsHiufyk+SPsTzOFM8kuB29IpH6fX1Rt5iDN0F0zO+U0vHZyS+94ryosRejz/tpUGz/MloUA6Ek0SU76r48zuwB324EfdgqxBlf0W7scCWouzFcSV7N+4snR+btNstOExL7I3wp300aJY/GQ3KgXB8Uf5a8effYi1OxqN4W+Sqf+uP206RQxv9vVCnvw14BTPwCZ4sxjaAhfi8qLcv0/YXnJDYGuFP6zV4pvBty/jWV/Q1Gv4kGnSXHEOz5CPqkPmpdLxcrF0bwQ4RhY3i+zr+/bhczJQXF7+94sIswWM4TWwMpegxfFXQKH+a12Ct4Tl7Dq4QS8GdiW+goq/R8CfRoKu0xXwivhMTiXk1Gl+NF/GDmKw8gRsqBjte6BERP4gpQqAhTMJ/Ytk1o2RvhD+t12CpeCpcgtdH0U8ZVfzJaFBODbtEpM+q0flCEbUf42yxFl0hPxkZbywWd/Ymw0WYJZZ7A4m9Hn8OHg2q+JPRoBwIg3hD5I2ZScN52Czy4wIh2GqRWg7k3kGKozO288WY/sBdGf8FRbktsVfxpz01aIY/GQ26kwr9YkfqMnxR2M4RM9TdYt05NKvejO0iv12IN0fCoEV4TeS5j8Re+2xx1/4jJnC5NfYCMYF6OePL8ad9NWiGPxkN0g2lfpH7ri3OZ4ql0aAQZ0dSf1VR3t8EiVZgM44SL4l6cRaeEoJszdSfIrZmt+CbjD/lT3trMFL+1NCgK/M9wirx4mWueJPVSViJR8RGSq27t5P5U0OD3NvHh/C12vnlYEWPuMj9qh/hncqfCg1ygbBHzDq366wPM04Rmy631KnXqfyp0CCXGiZwCKLWp2oTOMTwP5TqWY+Z5yJ+AAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle \\left(x - 9\\right) \\left(x + 9\\right)$" ], "text/plain": [ "(x - 9)⋅(x + 9)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "factor(parabola)" ] }, { "cell_type": "markdown", "id": "16f424e6", "metadata": {}, "source": [ "You're not confined to polynomials of the 2nd degree of course." ] }, { "cell_type": "code", "execution_count": 10, "id": "4a1a7ea2", "metadata": {}, "outputs": [], "source": [ "polynomial = (x - 4)*(x + 1)*(x - 3)*(x + 2)" ] }, { "cell_type": "code", "execution_count": 11, "id": "c1186366", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAAWCAYAAAAPQ0qAAAAFb0lEQVR4nO3bd4gcZRjH8c9pQAXFWFD/ERUEUSyxIHZjRwWViErAmBN7IYgFNZpwERuomFOxiy0B0djQ2LtBxQJnRUXh0Nhr7CUm/vHMeZt1b3dmdvZ29zJfGGZ35tn3fX/vvM+8z/vMbE9fX5+SkpLljxUKLGs6luKaAsvsJE7BW/gp2V7GgW1tUWs5F68Jrd/gIWze1haVFEpRzr8DjhPOMVZZiHOwLbbDM3gAW7axTa1kIq7FTtgTi/EU1mxjm0oKZFwBZayOuTgGMwsor1N5sOr7eTgJOxqbN739qr5PwSLsLKKAki6niJn/RswTM2EnMUUsQ5bi2ILLXhGTsSpeKrjsRvQa1jXS9k8L6l1NjJfvW1B2PdYS1+9+fITfxU1ogZhwqsdwVvtOpQgddX2g2Zn/OGycVNJJrI+r8Ytw0KLYQqz1V8bPOARvF1h+GgYwa4Rzu4oQ/dEW1Ds7qfuVFpRdj8NwHb7As/gE62ISbsb+ic3SnPadSrM6GvpAM86/CS4WA+6vJsopmh7ciu9wH84ssOwPMAHjcSjuEGvjdwqsoxEDyVaLl5P9jQXXeRl2E9c6T1TRK67JHngu428/xEGYjyUVx6fjVXEdJuHenPatpNfo6a4klQ9Uhw5PiDvJpBqF3ZacuzQ5tiPWFgN/cbLtjpOTzyvV19YyponZ72j8Wscui9Yh/hIh2OsiGz6A05psb1FsLhKvn4kBU00evXAFjsJeQvto84zIMSypOv4lrk8+T2zCfoi8/dMq8uogpQ9UO/9ZSWUXinXtEJdjKm4SGW8i072FmAmHttdxV/K5HdHApuIC9eOFBrZZtI7ECmIJ0AmckOxvUXt2zqP3KhwpZq73imxsQfyd7BcXYF/EeBgt6ulI7QPVzv8m7kwKGFrHT8fpuBsnVtj+KGb9yu1XkRB6x+ivqcaJtn8i2tyILFqJDt0VG4qb3iXizju3uWYXwirCSZeI9WAtsuq9VoStk8U1XS/ZisyhNMM4EZHAYwXYZ+2fdlFPRyYfqLXmPx9HoE9c6IvwuOiQ6hCkk5iJrbGLyIymIYvW9TAn2S8Sj/f2T+zbzeEiDzEfn9axy6L3pGT/dNXxWcnv282lYqnziHTXII19N4z9ejoy+UCtxwULRWZ3A5EtfEmsg9KE8RNxagq7QY0fV1VucxqUt724011hOOmVhixaexO7lbAO9pbe8QcVq7ea45P9DQ3ssujtGWHra1DHoP/ruTU592yNc7c1KK8W03AG3pfuSVNa+2bG/qD26s7sAyNl+7+p+HwMfsvWxoZ8jD8y2H9e59xQqPMhZuRoS6u1UqzeajYTb+EtFLNBI1qtd7aIQiqZgINxu3CSSgYyln+KWM++J5KQjd47yGqft39ma5/uXD7QU+OPPZPFOvYrEeJebzgE7ETG44eUtv2Wzc53m9Za9IsZIU043i69vfI/8qrkNFwpckp74euC7Yvun16jo3u8HD5QPfMfIO5S74pHBS+IN4P6RajRifwpMty12EasgRaIZ/SV4VA3aq1mZcPr0ZH6YIhu13u2WO8OYB98W7B9p/ZPGh25fKDS+XcRr+kuxL4i/JmBe5LKD8nf/pbyu5Ff3+0Twm+3bBa8W7VWcxjWwMPqJ/q6Xe8MXIA3RPsbhe5Z7Tu1f9LqyOMD/zn/VmIALRJ3ly+S4/PEs/uDxWOuF3MI6DTGktahRF+9N/q6Xe9U4QD/iDZOq2EzaDiBltW+U/snq47MjBPv5j8uMpD7ieRUJefiSfGK5w55K+oQxpLWTcWMVS/RNxb0bpTsVzTy25TPG3aCLPad3D9ZdWemVsKvpKRkOaBb/t5YUlJSMKXzl5Qsp5TOX1KynPIvF1A4WhIg5yMAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle x^{4} - 4 x^{3} - 7 x^{2} + 22 x + 24$" ], "text/plain": [ " 4 3 2 \n", "x - 4⋅x - 7⋅x + 22⋅x + 24" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expand(polynomial)" ] }, { "cell_type": "markdown", "id": "1208a9dc", "metadata": {}, "source": [ "The factors of the polynomial let you determine its \"zeroes\" which is where the plot crosses the x-axis, presuming the solution is in the set of real numbers. Sympy assumes the complex field as its default domain, with real numbers of subset." ] }, { "cell_type": "code", "execution_count": 12, "id": "b0705216", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left(x - 4\\right) \\left(x - 3\\right) \\left(x + 1\\right) \\left(x + 2\\right)$" ], "text/plain": [ "(x - 4)⋅(x - 3)⋅(x + 1)⋅(x + 2)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "factor(expand(polynomial))" ] }, { "cell_type": "markdown", "id": "5764ad94", "metadata": {}, "source": [ "AKS Test for Primality: are the coefficients of the polynomial expansion of $(x-1)^{p}$ all multiples of p? \n", "\n", "We're ignoring when the coefficients are 1. \n", "\n", "$(x+1)^{p}$ would have the same coefficients but for differences in sign." ] }, { "cell_type": "code", "execution_count": 46, "id": "8a2612a4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]\n" ] } ], "source": [ "def isprime(p):\n", " poly = Poly(expand((x-1)**p - (x**p - 1)))\n", " return 0==sum([C % p for C in poly.coeffs()[:p//2]])\n", "\n", "print(list(filter(isprime, [2] + list(range(3,200,2)))))" ] }, { "cell_type": "markdown", "id": "72b85ccc", "metadata": {}, "source": [ "Sympy makes use of ```matplotlib``` to implement its own plotting API." ] }, { "cell_type": "code", "execution_count": 14, "id": "88d7af98", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline \n", "plotting.plot(polynomial, (x, -3, 5), x=\"x\", title=\"Four Zeroes or Roots\");" ] }, { "cell_type": "code", "execution_count": 76, "id": "a37e857b", "metadata": {}, "outputs": [], "source": [ "f = lambdify(x, polynomial, \"numpy\")" ] }, { "cell_type": "markdown", "id": "5c91b4ec", "metadata": {}, "source": [ "Below we tap ```matplotlib``` more directly. Sometimes we might want to use legacy code with already well-thought-out cosmetic arguments. Why reinvent the wheel? A lot of this legacy code is using ```matplotlib.pyplot``` imported as ```plt```. We find it convenient to recycle a lot of what we find." ] }, { "cell_type": "code", "execution_count": 82, "id": "4de6f0b5", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 95, "id": "89c77c91", "metadata": {}, "outputs": [], "source": [ "a = np.arange(-3, 5, 0.1) # start, up to, interval" ] }, { "cell_type": "code", "execution_count": 96, "id": "5c6f769c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([84. , 69.6141, 56.7936, 45.4461, 35.4816, 26.8125, 19.3536,\n", " 13.0221, 7.7376, 3.4221])" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(a)[:10] # the target polynomial f is from a lambdification" ] }, { "cell_type": "code", "execution_count": 97, "id": "517d070c", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# familiar looking code, anchored by plt\n", "plt.title(\"Polynomial\") \n", "plt.xlabel(\"X axis\") \n", "plt.ylabel(\"Y axis\") \n", "plt.grid()\n", "plt.plot(a, f(a), color =\"red\") \n", "plt.show()" ] }, { "cell_type": "markdown", "id": "892ed6f1", "metadata": {}, "source": [ "# Sequences\n", "\n", "A great way to unify algebraic and geometric thinking is with rules giving the growth pattern of various objects.\n", "\n", "For example, we start with a box of unit radius balls, like ball bearings or uniformly sized marbles, and pack them in what's known as the CCP arrangement, as dense as it gets (about 74% solid).\n", "\n", "Start with a ball at the top and build downward by layers, using triangular numbers of balls: 1, 3, 6, 10, 15, 21, 28... That's the number in each layer, but what is the cumulative number, the number in an n-frequency tetrahedron?\n", "\n", "Now we ask the same question for a half-octahedron, and a full octahedron, and maybe a cuboctahedron...\n", "\n", "What are the numeric sequences. With the octahedron, we're starting again at the top, with one ball, which we underpin with 4, the 9, then 16... the \"square\" numbers. What's the cumulative number?\n", "\n", "Finally, instead of counting balls, perhaps we would like to count \"kissing points\" i.e. the number of points at which two balls are intertangent. Balls at the boundary have fewer touching neighbors. Balls in the thick of the CCP, completely surrounded, have exactly 12 neighbors.\n", "\n", "The formulae below correspond to these edge counts." ] }, { "cell_type": "code", "execution_count": 34, "id": "05ad245e", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIYAAAAWCAYAAAAFH+TSAAAEBklEQVR4nO3Za4xdUxQH8N9M54PEEFHRppF4hGQk6CRIvEqRot4hIhOPTlpE06CkQj1iPDtSYvhQgg+lfBEJDZGirUelJKrGqynRZKhEtTUyxCOU+rDOpOPk3pl7zzm3c2fcf3Ky7917n73Xf5+11/mvfZq6uro00EAazTnvn4dP8XNyvY9z8hpVp1iIDwXPbXgFR4yqRTVEXsf4DrfiaByD1XgZR+Uctx4xHUtwAk7DDqzEvqNoU83QkvP+5an/t2MujheRZDzhzNT/KzCAE0X0GFfIGzGGYgI60Iq1BY5bKR7EKmzG7+jHx7gLE2sw315i/fprMPZwmIir8BK+FlwH8B7mKOiZ5o0YcKTQFnvgF1yIzwoYt1rciPV4E1uxJ45DF65Jfm8ucL4e9OKDAsesBJfgcXyPt/AtJuEiPI2ZSZ+deSYpwru+RLtY+CfwrGyirFOQmZ7Rjr0TG2YL3XMdjsUDmCLEY1FYjJPFA/g74xidsvH9CufjAFwmeM1Gm3D8i4WT5ELaMd4QxqYHbsLSpK071fanCGnrEiN7MT+vYRnwR5n6F5LysFR9Fq7wMK7E6YL37sZqoWn+SdVvERuT0s5WFd+0Y9ycTHif0AyDeAiz8JTYjcOhWbxW6gXnJWVaDGfh+hgux6nYULil+fFXUu4o0VYV37RjfIJlOFyobrgNN4mdd22qfzem4SChNRYJb32+ci6FY4HQFY9gDe4VTpHe/dVyXSLCf4cQnJOTq7Vg+7OiRUQyWFGivSq+pcTnHbhULG4r7sfryWDp8DUZzyXlgHgAM5P+o4UFQowNYoV4oNtK9K2G69ykXJWqvzu5f7TRLbTda8qvf8V8m8ociS+yK6ysxQz8lsvs/6IPB1bR/xnxcKvBJHEY1S1Sy3NF1pJGrblSe77X41FsFOcqw6XQFfEtl64O3V1zSt2YEz3YJ1XXjgvEovSl2nozzPGDyPXXCyVfLluqNVdqy3eecIoNQhCPdK5SEd9SjtEhBMkW8Yq4wa4wWhR6StR1ioVaircLnOsbsWjt2A/bh7TtDq7Uju98oaU+F06xdYT+FfNNi8+zhQd/Ib53bBSnbG3Z7K4bTEnKoWcOY53rLcIpekWWNJJTVMV3qGOchBfFh7EzRMi5U0SVUvl8PaFN7IA0moXA2l+8T39K6scyV8LWbnwkIsX24btXz3fwVTIVr4rMYoY4bpUMtk6EvGki/atHnCVOI9/FJvwoxOcpOESEzquTvmOd6yzcI6LfGiE80+gTrygy8m3BoSJl2Sm+IG5KTbJQfH9YLI6c6xEr8aRQ5FOF0PtViM5l4mCq3/jgenBSTlD+hPkd4RiZ+ZZLVxv4n6PIz+4NjCM0HKOBkmg4RgMl8S+2VyaoXivkxAAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle x^{3} + 3 x^{2} + 2 x$" ], "text/plain": [ " 3 2 \n", "x + 3⋅x + 2⋅x" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expand(x*(x+1)*(x+2)) # a007531" ] }, { "cell_type": "code", "execution_count": 33, "id": "4eaa8912", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJIAAAAWCAYAAAArWsVAAAAE00lEQVR4nO3aaaiVRRgH8N/V2yIYRatfwoQKBCvbzcostdAgy/KDkXnDAsVQsaI0jUsL3ShJCyywULM+VLanlbnkgkUbtigZFRKCZpaZlksufXjewz0ez7lnua9Hr5w/DHPemXlnnv87zzzzPDOnrrGxUQ01tBbtqjzeKHyLv5P0Ka6vsgzVwnh8IXj+jvfQ7ZBKdBBRbUVahwdwIS7CIryNc6ssRzXQG9PQE9dgNxbgxEMo00FDfZXHeyfn+UGMxGXCUh1JuC7neSi24HJhnY4oFLNIQ7EvSXemPHZ7DEFHrEi573JwJd7AeuxM8vkYkPI4x4nv/WfK/RbDSWLu3sJP2C4UejmGS2lXaskinY5nsU1Mdlo4R/hGx2IrbsR3KfZfDibiEWzC+0KJTsb5Ymual+JYU7ASn6XYZykYjOcEt8X4FadhEF5A/6TNvtYMUkiR6jADf+BN3NuaQXKwBt1xAm7GS2LSvi+znwYh49X4pAI5BgslWiA+6tac+qMq6LMQnkQvYf32VNhHg8r4/ogbMBd7s8on4HMxB4OEVa4YhczaaOEg3oF/Wnh/vtDkQTnldZiZ1DXl1O0SJvZLEdmsxNjSRU4F7fAE/sWtDlQi+C9PWSV8J+N29BG8q41Fwifbm1O+Ac8nv3vnea8srvkUqWvSYCqWFhHyvkTAR4XPk8FTGIbpIkprCe3ENldN9EQXsXVtFkcQ92OMcPwLoVy+z+A2YUVWpyR7msgslt156srimqtI9Zgt9tEJJQjyTdK+q3DMJe+Nw2sYkdO+SZj3M4Sv9LhYDa+UMFaauDjJf8PXwj9qEn7MCizBKXneK4fvNLEdDREOdqckpelvtgb1wlLCh3nqy5rbXEV6SDiaDcK7LwUTsQONuBuP4aNk8Fxz2gkvCz9poZjQ/vigxLHSwqlJPgId0FdEVd2E7L3weoF3S+U7MulzoXB0MylNf7M1aBJ85wn586Hkuc1WpEuExk0WUVWpWCdWcmcR5a0Q++quPG0bknbHiMns2wKJbKzVfAyRSTOSusV56mYW6S9jqutwi5jsbViFmxJOV8m/zZXKt65AaiwiG+nzzcVo3IMfNFubfCh5buuz8tnCw59UplDEFUAGw4UTmyamiCgvG90xELPEh8/GyiL9bU7yX4QJz8Z2odzDxeLKt6jaGt9sjBL+72oRABQ71yqJa0aROuLs5PeOAh1OT9JU+0dZQ4QDtkFsXWOEWU8TU/KUNYgPO1P54f+aJP+rQH1G0TrkqWuLfDMYi6fFUUsfbCzSvmSuGUXaiRcLdHaB8JuWiwnIXqEDxApZJY4LlopT1KnCbB6uWCoilbNwtANNdeZydW1OeVvlS0SlTcJ69ROHsC2hLK4ZH2l70ihfejdpMyt5fjV5vgJzxD56rTCBk4Ry5p6lHG7YJHgcLwKMbPQT92Rb7B/NtGW+k4SMXwlLVEyJyuZa6aXteSJk3iI+/PqkfI44aBwowvxlFfZfDYzDpeLiuJc45e0snO09uEvz1teW+Q7Dw4LTMuFo52KtZoe9Iq6VKNKZwhndJ1buzzn14/GxuBboUUH/1cJGoUgThfL0ECfcc8X5VuZOrK3z7ZLk7RW+QVgiFKlirnW1f0jWkAaq/ce2Go5Q1BSphlRQU6QaUsH/eI5z4bIXjyAAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle 4 x^{3} + 6 x^{2} + 2 x$" ], "text/plain": [ " 3 2 \n", "4⋅x + 6⋅x + 2⋅x" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expand(2*x*(x+1)*(2*x+1)) # a300758" ] }, { "cell_type": "code", "execution_count": 44, "id": "57ce14ea", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJIAAAAWCAYAAAArWsVAAAAD/klEQVR4nO3aW4hVVRzH8c/ReeihQOohH4oKeijoYhfCSmMsTCyoKCKGmpzSh0SQoYi0mpiiaKAkp8CEirTLQxF0JbKLlokFGUw3KSkYTOhiF+wmmWUP/z3MYXvOmb3PZY9nOF/Y7Nl7rb3W/7f/a//Xf60zpcHBQR06NMq0gvtbhk/xW3J8gEsLtqEoVuIjoXM3XsUpk2pRCyl6IO3CCpyFs7ERL+G0gu0ogm6swXm4EPvxNo6cRJtaRlfB/b2cur4DS3GuiFRTiQWp617swfkiOk0pyiPSUViCF/E19grhW7BY86PXdPTgcGxtctv10IsDybGkBe0fId7hLy1ouxaF+LU8Il2NR/EdNmEnjsaVeBwLkzoHGuzzVJEbHYbfcQU+a7DNRjkWj+APMbBbwWqM4MMWtV+NQvxaPhp34DIcg2tFsngjTsK3uCrpvFG+wizMxlo8pb4ktE+I727QnhKexM+JPa3gAVwgHPZvnW30qU9vIX4tH0gbxdz9X6rO98ZfcHeq7E0hLm1ICeuSsqFU2T4RYrcJUSPoz2l3M1kukuEb8OcEdevRuwrX4yKhu2jq8Ss5tWadH/9JzvtT929NDLxX5DxjPIhFeEys0moxTUxzk8HJ4mUMY3OG+nn1PozrMA/bm2Bvs6nmV3JqzTKQusQXBW+kyj7B08Ihvcm923EznsdNqfpDmIvjRa50v/gans1gR7PpErbvFDZnIY/eNWI66hEJ9szkaFUOlpdafiWnb7Ms/4dEDvM6NlQovxPXYFC8pPuSer0ODqcz8Uxy3iOW/AurtNtq7sIZmCNWMlnJqndpcn4n9fzdybOTzUR+JYdvJxpIy3ELvjQ+KtPsEiuSFWLls1XMq/sq1O2boL9qjOK4KmWbKtxbP0Ff54iva5VYQeYhq95SznbLGdVcvWmy+JUcvq01kJaJ3GG7SBRr7X/sLvt7Mf6qUbceVmNG6t4sXC5e4miqbKRGW2NT2g4M1GlPO+lNk8evZNRaqvKjbT8ewudJZz/W6KhH5Dg/iClrrfGw3kr6xLJ9Ht7N8dwM/Jqx7rCDV5Ttprecftn9Sg6tlSLSbWL+HMF8/FSjo0vEF/KFWEJvFruowyJsHor8jSeqlJ0p8qYtYr8rPe21o94x8viVnFrTq7aBpLOPxYit1dkcvCDm0YtFCBwQgzO9l3IosVe8kErHK0md9cn1c2XPtate8vmVOrSWR6RFuEfsvL4vErI0o2Iz6nS8JlZe88X2u6TzbWIun5u0MxVoZ715/EqdWssH0gnJebrqO83vibC/QexsLsA3qTor8Zb4WWB2lXbaiRO1t96sfl2nAa3Vku0OHXJR9D+2dZiidAZSh6bQGUgdmsL/AhZM8RT7v8EAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle 2 x^{3} + 4 x^{2} + 2 x$" ], "text/plain": [ " 3 2 \n", "2⋅x + 4⋅x + 2⋅x" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expand(x*2*(x+1)**2) # a035006" ] }, { "cell_type": "code", "execution_count": 48, "id": "40788c44", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKwAAAAWCAYAAABdYHfLAAAFK0lEQVR4nO3bd4wVVRTH8c8qfxgLWBLlD42ICppYsAS7QQyomKixxBBdWcsflgSwRVBRIBpJlLhgRBIs2P7QmFhjrGDXRE3WLoska4kaW6KoCJb1jzNPh9n33s68fevuW983mczbO3funPubM+eee2e2Ze7cuZo0aRQ2GWgDcnAR3sVPyfY6jh9QiwYXs/Gm0OZbPI69BtSifqQRHPYLzMIBOBAr8Aj2GUCbBhMTsASHYiL+wHPYdgBt6jeGDbQBOXg08/dVuACHiMj7f+eYzN+t+BGHiWg7pEhH2O1wHh7GJ1gnOv4KzlU5Gu+IO/El1qML7dimH+zdFFOxJV7rh/Z741TcgpfFENyN+yrUrVXPvrJV0vYP/dR+EVqFRt1Ciz6TjrCn4TZ8hZX4DDvgZNyO45I63alzdhWOs72IhB9jPGbgWPGUf18HO/cWuetmWIuT8F4d2i3K1dgXP4tUZY8qdWvRsx60owNv1LndouwkHu6fRYCpC+mnvBMniIh5hkjmzxE35XOcIsROs0Q463ThRLNEHnUzxuL6Otm5CuNwMJbiHrVNLNqEg0yo0Y6LMQbDRVpSjVr07Cs34kjxIPxZw/lt+qZPiRbcJYLV0j62tRFph10hcp6/MnW+Tl10Qqp8NCaLFODWzDnX4hcxJGyROfaMECV7s1qwPDm2IHNsgxhW3xI3vgMze3an31mJ1fJFxaJ6lqhFH1iIs3C00GogmS4C19nCD6pRqL9586jfk/0fqbKJqQtmb8pavIrNRVRMc3lS/zqRk5a4CdOwTETqamwi0oNGpZyeJWrRZzHOxFH4sK6WFmdP4WCL8FKO+oX6m8dhh4knF55KlY9N9p0Vzlud7Mdkyt/BvaJjrUnZlbgED+L8TP0FOAKjRC57g4hM9+ewfTBSSc8SRfVZIobyqWKiNTLZ6pY3FmCYsP0zYXMeCvU3z7LWApEvPomnU+Ujkv2PFc4rlW9d5tjVOB1zhbDXJ2236hmtR4qZ+MikzXfFhOVpjUklPdMU0aeUSz+fKZ+XnP9fcg32w+FiVSQvufvbm8NOx6Vi9t/aS90sLcm+XL73hZjNzhIzyddEDrOhTN22gtct0YWdKxxbWabs7j5cKy959SyiT0uZsjx0qa8+40VkXChWdIqQu7/VHPYikYd8KBL57LpeKYKOUJ7hmXpZvk39Phe/VrGlFtr1jO7jcKIQvytzrKPO18/Sm55ZGkmfUirQiTk12pOrv5UcdqZYmnpfiPtNmTqrkn02Ry2xe7Ivl+NOFUn112Kon6H3ZaKitJcpaxM3ZDleqPP1qjFT73qmaTR9tvSvH/xWoc6yZFuk5wpP7v6Wc9grRJ7VgUn4roIBpWFjspi8pXONrcRLg3V6LmBPEU/wB2Kl4SXxFmSRGCqHGnn1LNGI+qzHHRWO7S/y2ldEkMumC4X6m10lmCPEfVtEgmrirhFLWqPEcJdmnlh/vcfG63CH4yGRs0wWw8Ac8eCUW1tsdIroSePqs044WbntsaTO3cnfD6TOK9zfdISdhvniDcnLYoKQpUsMFyUuFAnyYnFDPsJBYj2wU3yoUmJfPCFy2knilaXE4LfEUHREcu3ByknJRgxdxEc4y5Pf3+Gy5HdRPYeCPkWoqb9ph90l2W+q8lukF23ssGvEJ3/zxbcDU5ILLxZRtjSx2E0sU3SLr4vWZNqdjWfFq8Xsi4bBxDjhiGlGJxt86l+HLaLnUNEnLzX3t6X5HwdNGolG+IC7SZN/aDpsk4ai6bBNGoq/ATDQi7588rETAAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle 20 x^{3} + 12 x^{2} + 4 x$" ], "text/plain": [ " 3 2 \n", "20⋅x + 12⋅x + 4⋅x" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expand(20*(x+1)**3 - 48*(x+1)**2 + 40*(x+1) - 12)" ] }, { "cell_type": "code", "execution_count": 49, "id": "dcccc13c", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle 20 x^{3} - 48 x^{2} + 40 x - 12$" ], "text/plain": [ " 3 2 \n", "20⋅x - 48⋅x + 40⋅x - 12" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "20*x**3 - 48*x**2 + 40*x - 12" ] }, { "cell_type": "code", "execution_count": 52, "id": "3e420747", "metadata": {}, "outputs": [], "source": [ "def ruleVE(f): \n", " \"\"\"\n", " cumulative number of edges in x frequency\n", " cuboctahedral ball packing\n", " \"\"\"\n", " x = f + 1\n", " return 20*x**3 - 48*x**2 + 40*x - 12" ] }, { "cell_type": "code", "execution_count": 53, "id": "7e6a6eba", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left[ 0, \\ 36, \\ 216, \\ 660, \\ 1488, \\ 2820, \\ 4776, \\ 7476, \\ 11040, \\ 15588\\right]$" ], "text/plain": [ "[0, 36, 216, 660, 1488, 2820, 4776, 7476, 11040, 15588]" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[ruleVE(x) for x in range(0, 10)]" ] }, { "cell_type": "code", "execution_count": 56, "id": "c5bce7d9", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle 8 n^{3} + 36 n^{2} + 52 n + 24$" ], "text/plain": [ " 3 2 \n", "8⋅n + 36⋅n + 52⋅n + 24" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq = expand((2*n+2)*(2*n+3)*(2*n+4) )\n", "eq" ] }, { "cell_type": "code", "execution_count": 70, "id": "5acbbf75", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABsAAAASCAYAAACq26WdAAABiElEQVR4nN3Vv0tVYRzH8dctR7eGFhtcIqGlBicHDQxcGoqmqNDcAgkcwuDmxclFKAoKSlL8AxqCqEXRBKegISLFIWroDiUIiYrVbXie6vFwzj0XgoI+cHiew/fL9/18f5znVGq1mr+lA8n+EIbxGOvYxiaWcSXjW6SLaMRnOGtsS/bncQ8fsYD3OIyzeIiB6NMoAB3BHXxBe1lmaziDDlzAGIZwDB9wLoLzVMEjfMb9Ap99sHk8wfeMTz0J0FsQZwSnMIitVmDNtBfXrzm2LkziNpaaBWkF1oZLcf8sxzYn9PdGK4HKNInjeIrnGdtNnECPML1NVZbZCEbxVhjrVN1CNlNYKT1yCeyq0Ic36MNGYvtZvjVUWwE1g13DXbyOoHrG3o6jwnDs+P0hNzAefR7E91vpCbO6LvTpFfrxKcdnF9MFBz0p9HEZq5ISZ2FVTOAlTttfulTbcq6jqFqEzQo3zy+lsMsR9A0vhOHI6h1mCiClSmGdcT0o9CxPi38Cq/yrX8z/BfsBr1RRpWLeV/YAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle 24$" ], "text/plain": [ "24" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq.subs(n, 0)" ] }, { "cell_type": "code", "execution_count": 67, "id": "e796eeaa", "metadata": {}, "outputs": [], "source": [ "a = np.arange(10) " ] }, { "cell_type": "code", "execution_count": 68, "id": "9385eab3", "metadata": {}, "outputs": [], "source": [ "f = lambdify(n, eq, 'numpy')" ] }, { "cell_type": "code", "execution_count": 69, "id": "568d44be", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 24, 120, 336, 720, 1320, 2184, 3360, 4896, 6840, 9240])" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(a)" ] }, { "cell_type": "code", "execution_count": null, "id": "ddb2d2bf", "metadata": {}, "outputs": [], "source": [] } ], "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.9" } }, "nbformat": 4, "nbformat_minor": 5 }