{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "origin_pos": 0
   },
   "source": [
    "# Multivariable Calculus\n",
    ":label:`sec_multivariable_calculus`\n",
    "\n",
    "Now that we have a fairly strong understanding of derivatives of a function of a single variable, let us return to our original question where we were considering a loss function of potentially billions of weights.\n",
    "\n",
    "## Higher-Dimensional Differentiation\n",
    "What :numref:`sec_single_variable_calculus` tells us is that if we change a single one of these billions of weights leaving every other one fixed, we know what will happen!  This is nothing more than a function of a single variable, so we can write\n",
    "\n",
    "$$L(w_1+\\epsilon_1, w_2, \\ldots, w_N) \\approx L(w_1, w_2, \\ldots, w_N) + \\epsilon_1 \\frac{d}{dw_1} L(w_1, w_2, \\ldots, w_N).$$\n",
    ":eqlabel:`eq_part_der`\n",
    "\n",
    "We will call the derivative in one variable while fixing the other variables the *partial derivative*, and we will use the notation $\\frac{\\partial}{\\partial w_1}$ for the derivative in :eqref:`eq_part_der`.\n",
    "\n",
    "Now, let us take this and change $w_2$ a little bit to $w_2 + \\epsilon_2$:\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "L(w_1+\\epsilon_1, w_2+\\epsilon_2, \\ldots, w_N) & \\approx L(w_1, w_2+\\epsilon_2, \\ldots, w_N) + \\epsilon_1 \\frac{\\partial}{\\partial w_1} L(w_1, w_2+\\epsilon_2, \\ldots, w_N+\\epsilon_N) \\\\\n",
    "& \\approx L(w_1, w_2, \\ldots, w_N) \\\\\n",
    "& \\quad + \\epsilon_2\\frac{\\partial}{\\partial w_2} L(w_1, w_2, \\ldots, w_N) \\\\\n",
    "& \\quad + \\epsilon_1 \\frac{\\partial}{\\partial w_1} L(w_1, w_2, \\ldots, w_N) \\\\\n",
    "& \\quad + \\epsilon_1\\epsilon_2\\frac{\\partial}{\\partial w_2}\\frac{\\partial}{\\partial w_1} L(w_1, w_2, \\ldots, w_N) \\\\\n",
    "& \\approx L(w_1, w_2, \\ldots, w_N) \\\\\n",
    "& \\quad + \\epsilon_2\\frac{\\partial}{\\partial w_2} L(w_1, w_2, \\ldots, w_N) \\\\\n",
    "& \\quad + \\epsilon_1 \\frac{\\partial}{\\partial w_1} L(w_1, w_2, \\ldots, w_N).\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "We have again used the idea that $\\epsilon_1\\epsilon_2$ is a higher order term that we can discard in the same way we could discard $\\epsilon^{2}$ in the previous section, along with what we saw in :eqref:`eq_part_der`.  By continuing in this manner, we may write that\n",
    "\n",
    "$$\n",
    "L(w_1+\\epsilon_1, w_2+\\epsilon_2, \\ldots, w_N+\\epsilon_N) \\approx L(w_1, w_2, \\ldots, w_N) + \\sum_i \\epsilon_i \\frac{\\partial}{\\partial w_i} L(w_1, w_2, \\ldots, w_N).\n",
    "$$\n",
    "\n",
    "This may look like a mess, but we can make this more familiar by noting that the sum on the right looks exactly like a dot product, so if we let\n",
    "\n",
    "$$\n",
    "\\boldsymbol{\\epsilon} = [\\epsilon_1, \\ldots, \\epsilon_N]^\\top \\; \\text{and} \\;\n",
    "\\nabla_{\\mathbf{x}} L = \\left[\\frac{\\partial L}{\\partial x_1}, \\ldots, \\frac{\\partial L}{\\partial x_N}\\right]^\\top,\n",
    "$$\n",
    "\n",
    "then\n",
    "\n",
    "$$L(\\mathbf{w} + \\boldsymbol{\\epsilon}) \\approx L(\\mathbf{w}) + \\boldsymbol{\\epsilon}\\cdot \\nabla_{\\mathbf{w}} L(\\mathbf{w}).$$\n",
    ":eqlabel:`eq_nabla_use`\n",
    "\n",
    "We will call the vector $\\nabla_{\\mathbf{w}} L$ the *gradient* of $L$.\n",
    "\n",
    "Equation :eqref:`eq_nabla_use` is worth pondering for a moment.  It has exactly the format that we encountered in one dimension, just we have converted everything to vectors and dot products.  It allows us to tell approximately how the function $L$ will change given any perturbation to the input.  As we will see in the next section, this will provide us with an important tool in understanding geometrically how we can learn using information contained in the gradient.\n",
    "\n",
    "But first, let us see this approximation at work with an example.  Suppose that we are working with the function\n",
    "\n",
    "$$\n",
    "f(x, y) = \\log(e^x + e^y) \\text{ with gradient } \\nabla f (x, y) = \\left[\\frac{e^x}{e^x+e^y}, \\frac{e^y}{e^x+e^y}\\right].\n",
    "$$\n",
    "\n",
    "If we look at a point like $(0, \\log(2))$, we see that\n",
    "\n",
    "$$\n",
    "f(x, y) = \\log(3) \\text{ with gradient } \\nabla f (x, y) = \\left[\\frac{1}{3}, \\frac{2}{3}\\right].\n",
    "$$\n",
    "\n",
    "Thus, if we want to approximate $f$ at $(\\epsilon_1, \\log(2) + \\epsilon_2)$,  we see that we should have the specific instance of :eqref:`eq_nabla_use`:\n",
    "\n",
    "$$\n",
    "f(\\epsilon_1, \\log(2) + \\epsilon_2) \\approx \\log(3) + \\frac{1}{3}\\epsilon_1 + \\frac{2}{3}\\epsilon_2.\n",
    "$$\n",
    "\n",
    "We can test this in code to see how good the approximation is.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "origin_pos": 1,
    "tab": [
     "mxnet"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'approximation: 1.0819456577301025, true Value: 1.0821242332458496'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from IPython import display\n",
    "from mpl_toolkits import mplot3d\n",
    "from mxnet import autograd, np, npx\n",
    "from d2l import mxnet as d2l\n",
    "\n",
    "npx.set_np()\n",
    "\n",
    "def f(x, y):\n",
    "    return np.log(np.exp(x) + np.exp(y))\n",
    "def grad_f(x, y):\n",
    "    return np.array([np.exp(x) / (np.exp(x) + np.exp(y)),\n",
    "                     np.exp(y) / (np.exp(x) + np.exp(y))])\n",
    "\n",
    "epsilon = np.array([0.01, -0.03])\n",
    "grad_approx = f(0, np.log(2)) + epsilon.dot(grad_f(0, np.log(2)))\n",
    "true_value = f(0 + epsilon[0], np.log(2) + epsilon[1])\n",
    "f'approximation: {grad_approx}, true Value: {true_value}'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "origin_pos": 4
   },
   "source": [
    "## Geometry of Gradients and Gradient Descent\n",
    "Consider the expression from :eqref:`eq_nabla_use` again:\n",
    "\n",
    "$$\n",
    "L(\\mathbf{w} + \\boldsymbol{\\epsilon}) \\approx L(\\mathbf{w}) + \\boldsymbol{\\epsilon}\\cdot \\nabla_{\\mathbf{w}} L(\\mathbf{w}).\n",
    "$$\n",
    "\n",
    "Let us suppose that I want to use this to help minimize our loss $L$.  Let us understand geometrically the algorithm of gradient descent first described in  :numref:`sec_autograd`. What we will do is the following:\n",
    "\n",
    "1. Start with a random choice for the initial parameters $\\mathbf{w}$.\n",
    "2. Find the direction $\\mathbf{v}$ that makes $L$ decrease the most rapidly at $\\mathbf{w}$.\n",
    "3. Take a small step in that direction: $\\mathbf{w} \\rightarrow \\mathbf{w} + \\epsilon\\mathbf{v}$.\n",
    "4. Repeat.\n",
    "\n",
    "The only thing we do not know exactly how to do is to compute the vector $\\mathbf{v}$ in the second step.  We will call such a direction the *direction of steepest descent*.  Using the geometric understanding of dot products from :numref:`sec_geometry-linear-algebraic-ops`, we see that we can rewrite :eqref:`eq_nabla_use` as\n",
    "\n",
    "$$\n",
    "L(\\mathbf{w} + \\mathbf{v}) \\approx L(\\mathbf{w}) + \\mathbf{v}\\cdot \\nabla_{\\mathbf{w}} L(\\mathbf{w}) = L(\\mathbf{w}) + \\|\\nabla_{\\mathbf{w}} L(\\mathbf{w})\\|\\cos(\\theta).\n",
    "$$\n",
    "\n",
    "Note that we have taken our direction to have length one for convenience, and used $\\theta$ for the angle between $\\mathbf{v}$ and $\\nabla_{\\mathbf{w}} L(\\mathbf{w})$.  If we want to find the direction that decreases $L$ as rapidly as possible, we want to make this expression as negative as possible.  The only way the direction we pick enters into this equation is through $\\cos(\\theta)$, and thus we wish to make this cosine as negative as possible.  Now, recalling the shape of cosine, we can make this as negative as possible by making $\\cos(\\theta) = -1$ or equivalently making the angle between the gradient and our chosen direction to be $\\pi$ radians, or equivalently $180$ degrees.  The only way to achieve this is to head in the exact opposite direction:  pick $\\mathbf{v}$ to point in the exact opposite direction to $\\nabla_{\\mathbf{w}} L(\\mathbf{w})$!\n",
    "\n",
    "This brings us to one of the most important mathematical concepts in machine learning: the direction of steepest decent points in the direction of $-\\nabla_{\\mathbf{w}}L(\\mathbf{w})$.  Thus our informal algorithm can be rewritten as follows.\n",
    "\n",
    "1. Start with a random choice for the initial parameters $\\mathbf{w}$.\n",
    "2. Compute $\\nabla_{\\mathbf{w}} L(\\mathbf{w})$.\n",
    "3. Take a small step in the opposite of that direction: $\\mathbf{w} \\rightarrow \\mathbf{w} - \\epsilon\\nabla_{\\mathbf{w}} L(\\mathbf{w})$.\n",
    "4. Repeat.\n",
    "\n",
    "\n",
    "This basic algorithm has been modified and adapted many ways by many researchers, but the core concept remains the same in all of them.  Use the gradient to find the direction that decreases the loss as rapidly as possible, and update the parameters to take a step in that direction.\n",
    "\n",
    "## A Note on Mathematical Optimization\n",
    "Throughout this book, we focus squarely on numerical optimization techniques for the practical reason that all functions we encounter in the deep learning setting are too complex to minimize explicitly.\n",
    "\n",
    "However, it is a useful exercise to consider what the geometric understanding we obtained above tells us about optimizing functions directly.\n",
    "\n",
    "Suppose that we wish to find the value of $\\mathbf{x}_0$ which minimizes some function $L(\\mathbf{x})$.  Let us suppose that moreover someone gives us a value and tells us that it is the value that minimizes $L$.  Is there anything we can check to see if their answer is even plausible?\n",
    "\n",
    "Again consider :eqref:`eq_nabla_use`:\n",
    "$$\n",
    "L(\\mathbf{x}_0 + \\boldsymbol{\\epsilon}) \\approx L(\\mathbf{x}_0) + \\boldsymbol{\\epsilon}\\cdot \\nabla_{\\mathbf{x}} L(\\mathbf{x}_0).\n",
    "$$\n",
    "\n",
    "If the gradient is not zero, we know that we can take a step in the direction $-\\epsilon \\nabla_{\\mathbf{x}} L(\\mathbf{x}_0)$ to find a value of $L$ that is smaller.  Thus, if we truly are at a minimum, this cannot be the case!  We can conclude that if $\\mathbf{x}_0$ is a minimum, then $\\nabla_{\\mathbf{x}} L(\\mathbf{x}_0) = 0$.  We call points with $\\nabla_{\\mathbf{x}} L(\\mathbf{x}_0) = 0$ *critical points*.\n",
    "\n",
    "This is nice, because in some rare settings, we *can* explicitly find all the points where the gradient is zero, and find the one with the smallest value.\n",
    "\n",
    "For a concrete example, consider the function\n",
    "$$\n",
    "f(x) = 3x^4 - 4x^3 -12x^2.\n",
    "$$\n",
    "\n",
    "This function has derivative\n",
    "$$\n",
    "\\frac{df}{dx} = 12x^3 - 12x^2 -24x = 12x(x-2)(x+1).\n",
    "$$\n",
    "\n",
    "The only possible location of minima are at $x = -1, 0, 2$, where the function takes the values $-5,0, -32$ respectively, and thus we can conclude that we minimize our function when $x = 2$.  A quick plot confirms this.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "origin_pos": 5,
    "tab": [
     "mxnet"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"251.482813pt\" height=\"180.65625pt\" viewBox=\"0 0 251.482813 180.65625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n",
       " <metadata>\n",
       "  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n",
       "   <cc:Work>\n",
       "    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
       "    <dc:date>2022-03-24T10:42:56.140420</dc:date>\n",
       "    <dc:format>image/svg+xml</dc:format>\n",
       "    <dc:creator>\n",
       "     <cc:Agent>\n",
       "      <dc:title>Matplotlib v3.5.1, https://matplotlib.org/</dc:title>\n",
       "     </cc:Agent>\n",
       "    </dc:creator>\n",
       "   </cc:Work>\n",
       "  </rdf:RDF>\n",
       " </metadata>\n",
       " <defs>\n",
       "  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n",
       " </defs>\n",
       " <g id=\"figure_1\">\n",
       "  <g id=\"patch_1\">\n",
       "   <path d=\"M -0 180.65625 \n",
       "L 251.482813 180.65625 \n",
       "L 251.482813 0 \n",
       "L -0 0 \n",
       "L -0 180.65625 \n",
       "z\n",
       "\" style=\"fill: none\"/>\n",
       "  </g>\n",
       "  <g id=\"axes_1\">\n",
       "   <g id=\"patch_2\">\n",
       "    <path d=\"M 48.982813 143.1 \n",
       "L 244.282813 143.1 \n",
       "L 244.282813 7.2 \n",
       "L 48.982813 7.2 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_1\">\n",
       "    <g id=\"xtick_1\">\n",
       "     <g id=\"line2d_1\">\n",
       "      <path d=\"M 57.860085 143.1 \n",
       "L 57.860085 7.2 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_2\">\n",
       "      <defs>\n",
       "       <path id=\"m8c25e57396\" d=\"M 0 0 \n",
       "L 0 3.5 \n",
       "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use xlink:href=\"#m8c25e57396\" x=\"57.860085\" y=\"143.1\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_1\">\n",
       "      <!-- −2 -->\n",
       "      <g transform=\"translate(50.488991 157.698438)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-2212\" d=\"M 678 2272 \n",
       "L 4684 2272 \n",
       "L 4684 1741 \n",
       "L 678 1741 \n",
       "L 678 2272 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "        <path id=\"DejaVuSans-32\" d=\"M 1228 531 \n",
       "L 3431 531 \n",
       "L 3431 0 \n",
       "L 469 0 \n",
       "L 469 531 \n",
       "Q 828 903 1448 1529 \n",
       "Q 2069 2156 2228 2338 \n",
       "Q 2531 2678 2651 2914 \n",
       "Q 2772 3150 2772 3378 \n",
       "Q 2772 3750 2511 3984 \n",
       "Q 2250 4219 1831 4219 \n",
       "Q 1534 4219 1204 4116 \n",
       "Q 875 4013 500 3803 \n",
       "L 500 4441 \n",
       "Q 881 4594 1212 4672 \n",
       "Q 1544 4750 1819 4750 \n",
       "Q 2544 4750 2975 4387 \n",
       "Q 3406 4025 3406 3419 \n",
       "Q 3406 3131 3298 2873 \n",
       "Q 3191 2616 2906 2266 \n",
       "Q 2828 2175 2409 1742 \n",
       "Q 1991 1309 1228 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-32\" x=\"83.789062\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_2\">\n",
       "     <g id=\"line2d_3\">\n",
       "      <path d=\"M 93.440338 143.1 \n",
       "L 93.440338 7.2 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_4\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m8c25e57396\" x=\"93.440338\" y=\"143.1\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_2\">\n",
       "      <!-- −1 -->\n",
       "      <g transform=\"translate(86.069245 157.698438)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-31\" d=\"M 794 531 \n",
       "L 1825 531 \n",
       "L 1825 4091 \n",
       "L 703 3866 \n",
       "L 703 4441 \n",
       "L 1819 4666 \n",
       "L 2450 4666 \n",
       "L 2450 531 \n",
       "L 3481 531 \n",
       "L 3481 0 \n",
       "L 794 0 \n",
       "L 794 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_3\">\n",
       "     <g id=\"line2d_5\">\n",
       "      <path d=\"M 129.020591 143.1 \n",
       "L 129.020591 7.2 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_6\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m8c25e57396\" x=\"129.020591\" y=\"143.1\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_3\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(125.839341 157.698438)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \n",
       "Q 1547 4250 1301 3770 \n",
       "Q 1056 3291 1056 2328 \n",
       "Q 1056 1369 1301 889 \n",
       "Q 1547 409 2034 409 \n",
       "Q 2525 409 2770 889 \n",
       "Q 3016 1369 3016 2328 \n",
       "Q 3016 3291 2770 3770 \n",
       "Q 2525 4250 2034 4250 \n",
       "z\n",
       "M 2034 4750 \n",
       "Q 2819 4750 3233 4129 \n",
       "Q 3647 3509 3647 2328 \n",
       "Q 3647 1150 3233 529 \n",
       "Q 2819 -91 2034 -91 \n",
       "Q 1250 -91 836 529 \n",
       "Q 422 1150 422 2328 \n",
       "Q 422 3509 836 4129 \n",
       "Q 1250 4750 2034 4750 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_4\">\n",
       "     <g id=\"line2d_7\">\n",
       "      <path d=\"M 164.600844 143.1 \n",
       "L 164.600844 7.2 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_8\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m8c25e57396\" x=\"164.600844\" y=\"143.1\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_4\">\n",
       "      <!-- 1 -->\n",
       "      <g transform=\"translate(161.419594 157.698438)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_5\">\n",
       "     <g id=\"line2d_9\">\n",
       "      <path d=\"M 200.181097 143.1 \n",
       "L 200.181097 7.2 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_10\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m8c25e57396\" x=\"200.181097\" y=\"143.1\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_5\">\n",
       "      <!-- 2 -->\n",
       "      <g transform=\"translate(196.999847 157.698438)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_6\">\n",
       "     <g id=\"line2d_11\">\n",
       "      <path d=\"M 235.76135 143.1 \n",
       "L 235.76135 7.2 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_12\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m8c25e57396\" x=\"235.76135\" y=\"143.1\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_6\">\n",
       "      <!-- 3 -->\n",
       "      <g transform=\"translate(232.5801 157.698438)scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-33\" d=\"M 2597 2516 \n",
       "Q 3050 2419 3304 2112 \n",
       "Q 3559 1806 3559 1356 \n",
       "Q 3559 666 3084 287 \n",
       "Q 2609 -91 1734 -91 \n",
       "Q 1441 -91 1130 -33 \n",
       "Q 819 25 488 141 \n",
       "L 488 750 \n",
       "Q 750 597 1062 519 \n",
       "Q 1375 441 1716 441 \n",
       "Q 2309 441 2620 675 \n",
       "Q 2931 909 2931 1356 \n",
       "Q 2931 1769 2642 2001 \n",
       "Q 2353 2234 1838 2234 \n",
       "L 1294 2234 \n",
       "L 1294 2753 \n",
       "L 1863 2753 \n",
       "Q 2328 2753 2575 2939 \n",
       "Q 2822 3125 2822 3475 \n",
       "Q 2822 3834 2567 4026 \n",
       "Q 2313 4219 1838 4219 \n",
       "Q 1578 4219 1281 4162 \n",
       "Q 984 4106 628 3988 \n",
       "L 628 4550 \n",
       "Q 988 4650 1302 4700 \n",
       "Q 1616 4750 1894 4750 \n",
       "Q 2613 4750 3031 4423 \n",
       "Q 3450 4097 3450 3541 \n",
       "Q 3450 3153 3228 2886 \n",
       "Q 3006 2619 2597 2516 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-33\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"text_7\">\n",
       "     <!-- x -->\n",
       "     <g transform=\"translate(143.673438 171.376563)scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-78\" d=\"M 3513 3500 \n",
       "L 2247 1797 \n",
       "L 3578 0 \n",
       "L 2900 0 \n",
       "L 1881 1375 \n",
       "L 863 0 \n",
       "L 184 0 \n",
       "L 1544 1831 \n",
       "L 300 3500 \n",
       "L 978 3500 \n",
       "L 1906 2253 \n",
       "L 2834 3500 \n",
       "L 3513 3500 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-78\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_2\">\n",
       "    <g id=\"ytick_1\">\n",
       "     <g id=\"line2d_13\">\n",
       "      <path d=\"M 48.982813 113.757955 \n",
       "L 244.282813 113.757955 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_14\">\n",
       "      <defs>\n",
       "       <path id=\"ma933014347\" d=\"M 0 0 \n",
       "L -3.5 0 \n",
       "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use xlink:href=\"#ma933014347\" x=\"48.982813\" y=\"113.757955\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_8\">\n",
       "      <!-- −20 -->\n",
       "      <g transform=\"translate(20.878125 117.557173)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-32\" x=\"83.789062\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"147.412109\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_2\">\n",
       "     <g id=\"line2d_15\">\n",
       "      <path d=\"M 48.982813 75.15 \n",
       "L 244.282813 75.15 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_16\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#ma933014347\" x=\"48.982813\" y=\"75.15\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_9\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(35.620313 78.949219)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_3\">\n",
       "     <g id=\"line2d_17\">\n",
       "      <path d=\"M 48.982813 36.542045 \n",
       "L 244.282813 36.542045 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_18\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#ma933014347\" x=\"48.982813\" y=\"36.542045\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_10\">\n",
       "      <!-- 20 -->\n",
       "      <g transform=\"translate(29.257813 40.341264)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"text_11\">\n",
       "     <!-- f(x) -->\n",
       "     <g transform=\"translate(14.798438 83.771094)rotate(-90)scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-66\" d=\"M 2375 4863 \n",
       "L 2375 4384 \n",
       "L 1825 4384 \n",
       "Q 1516 4384 1395 4259 \n",
       "Q 1275 4134 1275 3809 \n",
       "L 1275 3500 \n",
       "L 2222 3500 \n",
       "L 2222 3053 \n",
       "L 1275 3053 \n",
       "L 1275 0 \n",
       "L 697 0 \n",
       "L 697 3053 \n",
       "L 147 3053 \n",
       "L 147 3500 \n",
       "L 697 3500 \n",
       "L 697 3744 \n",
       "Q 697 4328 969 4595 \n",
       "Q 1241 4863 1831 4863 \n",
       "L 2375 4863 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-28\" d=\"M 1984 4856 \n",
       "Q 1566 4138 1362 3434 \n",
       "Q 1159 2731 1159 2009 \n",
       "Q 1159 1288 1364 580 \n",
       "Q 1569 -128 1984 -844 \n",
       "L 1484 -844 \n",
       "Q 1016 -109 783 600 \n",
       "Q 550 1309 550 2009 \n",
       "Q 550 2706 781 3412 \n",
       "Q 1013 4119 1484 4856 \n",
       "L 1984 4856 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-29\" d=\"M 513 4856 \n",
       "L 1013 4856 \n",
       "Q 1481 4119 1714 3412 \n",
       "Q 1947 2706 1947 2009 \n",
       "Q 1947 1309 1714 600 \n",
       "Q 1481 -109 1013 -844 \n",
       "L 513 -844 \n",
       "Q 928 -128 1133 580 \n",
       "Q 1338 1288 1338 2009 \n",
       "Q 1338 2731 1133 3434 \n",
       "Q 928 4138 513 4856 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-66\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-28\" x=\"35.205078\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-78\" x=\"74.21875\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-29\" x=\"133.398438\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"line2d_19\">\n",
       "    <path d=\"M 57.860085 13.377273 \n",
       "L 59.994898 23.924209 \n",
       "L 62.129716 33.372638 \n",
       "L 64.264529 41.789917 \n",
       "L 66.399346 49.241592 \n",
       "L 68.534159 55.791383 \n",
       "L 70.313175 60.605381 \n",
       "L 72.092186 64.871021 \n",
       "L 73.871201 68.622323 \n",
       "L 75.650212 71.892454 \n",
       "L 77.429223 74.713697 \n",
       "L 79.208234 77.11746 \n",
       "L 80.987249 79.134306 \n",
       "L 82.766264 80.793908 \n",
       "L 84.545275 82.12507 \n",
       "L 86.324286 83.155745 \n",
       "L 88.103297 83.913002 \n",
       "L 89.882312 84.423051 \n",
       "L 91.661327 84.711221 \n",
       "L 93.440338 84.801989 \n",
       "L 95.575151 84.683495 \n",
       "L 97.709969 84.353801 \n",
       "L 100.200584 83.75192 \n",
       "L 103.402808 82.720233 \n",
       "L 107.672439 81.070916 \n",
       "L 116.2117 77.694626 \n",
       "L 119.769726 76.55376 \n",
       "L 122.616143 75.849427 \n",
       "L 125.462565 75.373347 \n",
       "L 127.953181 75.170635 \n",
       "L 130.4438 75.187543 \n",
       "L 132.934415 75.439723 \n",
       "L 135.425039 75.939492 \n",
       "L 137.915655 76.695826 \n",
       "L 140.40627 77.714368 \n",
       "L 142.896885 78.99742 \n",
       "L 145.387509 80.543957 \n",
       "L 147.878124 82.349598 \n",
       "L 150.36874 84.40664 \n",
       "L 153.215157 87.051064 \n",
       "L 156.061583 89.987498 \n",
       "L 159.263803 93.605527 \n",
       "L 162.821833 97.959546 \n",
       "L 167.09146 103.539554 \n",
       "L 174.919116 114.237211 \n",
       "L 180.256149 121.339941 \n",
       "L 183.81418 125.71637 \n",
       "L 186.660597 128.885487 \n",
       "L 189.151213 131.341003 \n",
       "L 191.286034 133.15996 \n",
       "L 193.420847 134.671238 \n",
       "L 195.199858 135.664354 \n",
       "L 196.978869 136.387583 \n",
       "L 198.402078 136.753774 \n",
       "L 199.825295 136.915813 \n",
       "L 201.248495 136.859133 \n",
       "L 202.671704 136.568834 \n",
       "L 204.09493 136.029606 \n",
       "L 205.518139 135.225868 \n",
       "L 206.941348 134.141624 \n",
       "L 208.364556 132.760528 \n",
       "L 209.787765 131.065885 \n",
       "L 211.210974 129.04067 \n",
       "L 212.634183 126.667467 \n",
       "L 214.057391 123.928508 \n",
       "L 215.836411 119.962806 \n",
       "L 217.615413 115.361109 \n",
       "L 219.394433 110.086411 \n",
       "L 221.173435 104.100767 \n",
       "L 222.952455 97.36545 \n",
       "L 224.731474 89.840711 \n",
       "L 226.866287 79.712073 \n",
       "L 229.0011 68.316758 \n",
       "L 231.135913 55.581276 \n",
       "L 233.270727 41.430441 \n",
       "L 235.40554 25.787153 \n",
       "L 235.40554 25.787153 \n",
       "\" clip-path=\"url(#p79332965ce)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_3\">\n",
       "    <path d=\"M 48.982813 143.1 \n",
       "L 48.982813 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_4\">\n",
       "    <path d=\"M 244.282813 143.1 \n",
       "L 244.282813 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_5\">\n",
       "    <path d=\"M 48.982812 143.1 \n",
       "L 244.282813 143.1 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_6\">\n",
       "    <path d=\"M 48.982812 7.2 \n",
       "L 244.282813 7.2 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "  </g>\n",
       " </g>\n",
       " <defs>\n",
       "  <clipPath id=\"p79332965ce\">\n",
       "   <rect x=\"48.982813\" y=\"7.2\" width=\"195.3\" height=\"135.9\"/>\n",
       "  </clipPath>\n",
       " </defs>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<Figure size 252x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(-2, 3, 0.01)\n",
    "f = (3 * x**4) - (4 * x**3) - (12 * x**2)\n",
    "\n",
    "d2l.plot(x, f, 'x', 'f(x)')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "origin_pos": 8
   },
   "source": [
    "This highlights an important fact to know when working either theoretically or numerically: the only possible points where we can minimize (or maximize) a function will have gradient equal to zero, however, not every point with gradient zero is the true *global* minimum (or maximum).\n",
    "\n",
    "## Multivariate Chain Rule\n",
    "Let us suppose that we have a function of four variables ($w, x, y$, and $z$) which we can make by composing many terms:\n",
    "\n",
    "$$\\begin{aligned}f(u, v) & = (u+v)^{2} \\\\u(a, b) & = (a+b)^{2}, \\qquad v(a, b) = (a-b)^{2}, \\\\a(w, x, y, z) & = (w+x+y+z)^{2}, \\qquad b(w, x, y, z) = (w+x-y-z)^2.\\end{aligned}$$\n",
    ":eqlabel:`eq_multi_func_def`\n",
    "\n",
    "Such chains of equations are common when working with neural networks, so trying to understand how to compute gradients of such functions is key.  We can start to see visual hints of this connection in :numref:`fig_chain-1` if we take a look at what variables directly relate to one another.\n",
    "\n",
    "![The function relations above where nodes represent values and edges show functional dependence.](../img/chain-net1.svg)\n",
    ":label:`fig_chain-1`\n",
    "\n",
    "Nothing stops us from just composing everything from :eqref:`eq_multi_func_def` and writing out that\n",
    "\n",
    "$$\n",
    "f(w, x, y, z) = \\left(\\left((w+x+y+z)^2+(w+x-y-z)^2\\right)^2+\\left((w+x+y+z)^2-(w+x-y-z)^2\\right)^2\\right)^2.\n",
    "$$\n",
    "\n",
    "We may then take the derivative by just using single variable derivatives, but if we did that we would quickly find ourself swamped with terms, many of which are repeats!  Indeed, one can see that, for instance:\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "\\frac{\\partial f}{\\partial w} & = 2 \\left(2 \\left(2 (w + x + y + z) - 2 (w + x - y - z)\\right) \\left((w + x + y + z)^{2}- (w + x - y - z)^{2}\\right) + \\right.\\\\\n",
    "& \\left. \\quad 2 \\left(2 (w + x - y - z) + 2 (w + x + y + z)\\right) \\left((w + x - y - z)^{2}+ (w + x + y + z)^{2}\\right)\\right) \\times \\\\\n",
    "& \\quad \\left(\\left((w + x + y + z)^{2}- (w + x - y - z)^2\\right)^{2}+ \\left((w + x - y - z)^{2}+ (w + x + y + z)^{2}\\right)^{2}\\right).\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "If we then also wanted to compute $\\frac{\\partial f}{\\partial x}$, we would end up with a similar equation again with many repeated terms, and many *shared* repeated terms between the two derivatives.  This represents a massive quantity of wasted work, and if we needed to compute derivatives this way, the whole deep learning revolution would have stalled out before it began!\n",
    "\n",
    "\n",
    "Let us break up the problem.  We will start by trying to understand how $f$ changes when we change $a$, essentially assuming that $w, x, y$, and $z$ all do not exist.  We will reason as we did back when we worked with the gradient for the first time.  Let us take $a$ and add a small amount $\\epsilon$ to it.\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "& f(u(a+\\epsilon, b), v(a+\\epsilon, b)) \\\\\n",
    "\\approx & f\\left(u(a, b) + \\epsilon\\frac{\\partial u}{\\partial a}(a, b), v(a, b) + \\epsilon\\frac{\\partial v}{\\partial a}(a, b)\\right) \\\\\n",
    "\\approx & f(u(a, b), v(a, b)) + \\epsilon\\left[\\frac{\\partial f}{\\partial u}(u(a, b), v(a, b))\\frac{\\partial u}{\\partial a}(a, b) + \\frac{\\partial f}{\\partial v}(u(a, b), v(a, b))\\frac{\\partial v}{\\partial a}(a, b)\\right].\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "The first line follows from the definition of partial derivative, and the second follows from the definition of gradient.  It is notationally burdensome to track exactly where we evaluate every derivative, as in the expression $\\frac{\\partial f}{\\partial u}(u(a, b), v(a, b))$, so we often abbreviate this to the much more memorable\n",
    "\n",
    "$$\n",
    "\\frac{\\partial f}{\\partial a} = \\frac{\\partial f}{\\partial u}\\frac{\\partial u}{\\partial a}+\\frac{\\partial f}{\\partial v}\\frac{\\partial v}{\\partial a}.\n",
    "$$\n",
    "\n",
    "It is useful to think about the meaning of the process. We are trying to understand how a function of the form $f(u(a, b), v(a, b))$ changes its value with a change in $a$.  There are two pathways this can occur: there is the pathway where $a \\rightarrow u \\rightarrow f$ and where $a \\rightarrow v \\rightarrow f$.  We can compute both of these contributions via the chain rule: $\\frac{\\partial w}{\\partial u} \\cdot \\frac{\\partial u}{\\partial x}$ and $\\frac{\\partial w}{\\partial v} \\cdot \\frac{\\partial v}{\\partial x}$ respectively, and added up.\n",
    "\n",
    "Imagine we have a different network of functions where the functions on the right depend on those that are connected to on the left as is shown in :numref:`fig_chain-2`.\n",
    "\n",
    "![Another more subtle example of the chain rule.](../img/chain-net2.svg)\n",
    ":label:`fig_chain-2`\n",
    "\n",
    "To compute something like $\\frac{\\partial f}{\\partial y}$, we need to sum over all (in this case $3$) paths from $y$ to $f$ giving\n",
    "\n",
    "$$\n",
    "\\frac{\\partial f}{\\partial y} = \\frac{\\partial f}{\\partial a} \\frac{\\partial a}{\\partial u} \\frac{\\partial u}{\\partial y} + \\frac{\\partial f}{\\partial u} \\frac{\\partial u}{\\partial y} + \\frac{\\partial f}{\\partial b} \\frac{\\partial b}{\\partial v} \\frac{\\partial v}{\\partial y}.\n",
    "$$\n",
    "\n",
    "Understanding the chain rule in this way will pay great dividends when trying to understand how gradients flow through networks, and why various architectural choices like those in LSTMs (:numref:`sec_lstm`) or residual layers (:numref:`sec_resnet`) can help shape the learning process by controlling gradient flow.\n",
    "\n",
    "## The Backpropagation Algorithm\n",
    "\n",
    "Let us return to the example of :eqref:`eq_multi_func_def` the previous section where\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "f(u, v) & = (u+v)^{2} \\\\\n",
    "u(a, b) & = (a+b)^{2}, \\qquad v(a, b) = (a-b)^{2}, \\\\\n",
    "a(w, x, y, z) & = (w+x+y+z)^{2}, \\qquad b(w, x, y, z) = (w+x-y-z)^2.\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "If we want to compute say $\\frac{\\partial f}{\\partial w}$ we may apply the multi-variate chain rule to see:\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "\\frac{\\partial f}{\\partial w} & = \\frac{\\partial f}{\\partial u}\\frac{\\partial u}{\\partial w} + \\frac{\\partial f}{\\partial v}\\frac{\\partial v}{\\partial w}, \\\\\n",
    "\\frac{\\partial u}{\\partial w} & = \\frac{\\partial u}{\\partial a}\\frac{\\partial a}{\\partial w}+\\frac{\\partial u}{\\partial b}\\frac{\\partial b}{\\partial w}, \\\\\n",
    "\\frac{\\partial v}{\\partial w} & = \\frac{\\partial v}{\\partial a}\\frac{\\partial a}{\\partial w}+\\frac{\\partial v}{\\partial b}\\frac{\\partial b}{\\partial w}.\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "Let us try using this decomposition to compute $\\frac{\\partial f}{\\partial w}$.  Notice that all we need here are the various single step partials:\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "\\frac{\\partial f}{\\partial u} = 2(u+v), & \\quad\\frac{\\partial f}{\\partial v} = 2(u+v), \\\\\n",
    "\\frac{\\partial u}{\\partial a} = 2(a+b), & \\quad\\frac{\\partial u}{\\partial b} = 2(a+b), \\\\\n",
    "\\frac{\\partial v}{\\partial a} = 2(a-b), & \\quad\\frac{\\partial v}{\\partial b} = -2(a-b), \\\\\n",
    "\\frac{\\partial a}{\\partial w} = 2(w+x+y+z), & \\quad\\frac{\\partial b}{\\partial w} = 2(w+x-y-z).\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "If we write this out into code this becomes a fairly manageable expression.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "origin_pos": 9,
    "tab": [
     "mxnet"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    f at -1, 0, -2, 1 is 1024\n",
      "df/dw at -1, 0, -2, 1 is -4096\n"
     ]
    }
   ],
   "source": [
    "# Compute the value of the function from inputs to outputs\n",
    "w, x, y, z = -1, 0, -2, 1\n",
    "a, b = (w + x + y + z)**2, (w + x - y - z)**2\n",
    "u, v = (a + b)**2, (a - b)**2\n",
    "f = (u + v)**2\n",
    "print(f'    f at {w}, {x}, {y}, {z} is {f}')\n",
    "\n",
    "# Compute the single step partials\n",
    "df_du, df_dv = 2*(u + v), 2*(u + v)\n",
    "du_da, du_db, dv_da, dv_db = 2*(a + b), 2*(a + b), 2*(a - b), -2*(a - b)\n",
    "da_dw, db_dw = 2*(w + x + y + z), 2*(w + x - y - z)\n",
    "\n",
    "# Compute the final result from inputs to outputs\n",
    "du_dw, dv_dw = du_da*da_dw + du_db*db_dw, dv_da*da_dw + dv_db*db_dw\n",
    "df_dw = df_du*du_dw + df_dv*dv_dw\n",
    "print(f'df/dw at {w}, {x}, {y}, {z} is {df_dw}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "origin_pos": 10
   },
   "source": [
    "However, note that this still does not make it easy to compute something like $\\frac{\\partial f}{\\partial x}$.  The reason for that is the *way* we chose to apply the chain rule.  If we look at what we did above, we always kept $\\partial w$ in the denominator when we could.  In this way, we chose to apply the chain rule seeing how $w$ changed every other variable.  If that is what we wanted, this would be a good idea.  However, think back to our motivation from deep learning: we want to see how every parameter changes the *loss*.  In essence, we want to apply the chain rule keeping $\\partial f$ in the numerator whenever we can!\n",
    "\n",
    "To be more explicit, note that we can write\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "\\frac{\\partial f}{\\partial w} & = \\frac{\\partial f}{\\partial a}\\frac{\\partial a}{\\partial w} + \\frac{\\partial f}{\\partial b}\\frac{\\partial b}{\\partial w}, \\\\\n",
    "\\frac{\\partial f}{\\partial a} & = \\frac{\\partial f}{\\partial u}\\frac{\\partial u}{\\partial a}+\\frac{\\partial f}{\\partial v}\\frac{\\partial v}{\\partial a}, \\\\\n",
    "\\frac{\\partial f}{\\partial b} & = \\frac{\\partial f}{\\partial u}\\frac{\\partial u}{\\partial b}+\\frac{\\partial f}{\\partial v}\\frac{\\partial v}{\\partial b}.\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "Note that this application of the chain rule has us explicitly compute $\\frac{\\partial f}{\\partial u}, \\frac{\\partial f}{\\partial v}, \\frac{\\partial f}{\\partial a}, \\frac{\\partial f}{\\partial b}, \\; \\text{and} \\; \\frac{\\partial f}{\\partial w}$.  Nothing stops us from also including the equations:\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "\\frac{\\partial f}{\\partial x} & = \\frac{\\partial f}{\\partial a}\\frac{\\partial a}{\\partial x} + \\frac{\\partial f}{\\partial b}\\frac{\\partial b}{\\partial x}, \\\\\n",
    "\\frac{\\partial f}{\\partial y} & = \\frac{\\partial f}{\\partial a}\\frac{\\partial a}{\\partial y}+\\frac{\\partial f}{\\partial b}\\frac{\\partial b}{\\partial y}, \\\\\n",
    "\\frac{\\partial f}{\\partial z} & = \\frac{\\partial f}{\\partial a}\\frac{\\partial a}{\\partial z}+\\frac{\\partial f}{\\partial b}\\frac{\\partial b}{\\partial z}.\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "and then keeping track of how $f$ changes when we change *any* node in the entire network.  Let us implement it.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "origin_pos": 11,
    "tab": [
     "mxnet"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "f at -1, 0, -2, 1 is 1024\n",
      "df/dw at -1, 0, -2, 1 is -4096\n",
      "df/dx at -1, 0, -2, 1 is -4096\n",
      "df/dy at -1, 0, -2, 1 is -4096\n",
      "df/dz at -1, 0, -2, 1 is -4096\n"
     ]
    }
   ],
   "source": [
    "# Compute the value of the function from inputs to outputs\n",
    "w, x, y, z = -1, 0, -2, 1\n",
    "a, b = (w + x + y + z)**2, (w + x - y - z)**2\n",
    "u, v = (a + b)**2, (a - b)**2\n",
    "f = (u + v)**2\n",
    "print(f'f at {w}, {x}, {y}, {z} is {f}')\n",
    "\n",
    "# Compute the derivative using the decomposition above\n",
    "# First compute the single step partials\n",
    "df_du, df_dv = 2*(u + v), 2*(u + v)\n",
    "du_da, du_db, dv_da, dv_db = 2*(a + b), 2*(a + b), 2*(a - b), -2*(a - b)\n",
    "da_dw, db_dw = 2*(w + x + y + z), 2*(w + x - y - z)\n",
    "da_dx, db_dx = 2*(w + x + y + z), 2*(w + x - y - z)\n",
    "da_dy, db_dy = 2*(w + x + y + z), -2*(w + x - y - z)\n",
    "da_dz, db_dz = 2*(w + x + y + z), -2*(w + x - y - z)\n",
    "\n",
    "# Now compute how f changes when we change any value from output to input\n",
    "df_da, df_db = df_du*du_da + df_dv*dv_da, df_du*du_db + df_dv*dv_db\n",
    "df_dw, df_dx = df_da*da_dw + df_db*db_dw, df_da*da_dx + df_db*db_dx\n",
    "df_dy, df_dz = df_da*da_dy + df_db*db_dy, df_da*da_dz + df_db*db_dz\n",
    "\n",
    "print(f'df/dw at {w}, {x}, {y}, {z} is {df_dw}')\n",
    "print(f'df/dx at {w}, {x}, {y}, {z} is {df_dx}')\n",
    "print(f'df/dy at {w}, {x}, {y}, {z} is {df_dy}')\n",
    "print(f'df/dz at {w}, {x}, {y}, {z} is {df_dz}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "origin_pos": 12
   },
   "source": [
    "The fact that we compute derivatives from $f$ back towards the inputs rather than from the inputs forward to the outputs (as we did in the first code snippet above) is what gives this algorithm its name: *backpropagation*.  Note that there are two steps:\n",
    "1. Compute the value of the function, and the single step partials from front to back.  While not done above, this can be combined into a single *forward pass*.\n",
    "2. Compute the gradient of $f$ from back to front.  We call this the *backwards pass*.\n",
    "\n",
    "This is precisely what every deep learning algorithm implements to allow the computation of the gradient of the loss with respect to every weight in the network at one pass.  It is an astonishing fact that we have such a decomposition.\n",
    "\n",
    "To see how to encapsulated this, let us take a quick look at this example.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "origin_pos": 13,
    "tab": [
     "mxnet"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "df/dw at -1.0, 0.0, -2.0, 1.0 is -4096.0\n",
      "df/dx at -1.0, 0.0, -2.0, 1.0 is -4096.0\n",
      "df/dy at -1.0, 0.0, -2.0, 1.0 is -4096.0\n",
      "df/dz at -1.0, 0.0, -2.0, 1.0 is -4096.0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[10:42:56] src/base.cc:49: GPU context requested, but no GPUs found.\n"
     ]
    }
   ],
   "source": [
    "# Initialize as ndarrays, then attach gradients\n",
    "w, x, y, z = np.array(-1), np.array(0), np.array(-2), np.array(1)\n",
    "\n",
    "w.attach_grad()\n",
    "x.attach_grad()\n",
    "y.attach_grad()\n",
    "z.attach_grad()\n",
    "\n",
    "# Do the computation like usual, tracking gradients\n",
    "with autograd.record():\n",
    "    a, b = (w + x + y + z)**2, (w + x - y - z)**2\n",
    "    u, v = (a + b)**2, (a - b)**2\n",
    "    f = (u + v)**2\n",
    "\n",
    "# Execute backward pass\n",
    "f.backward()\n",
    "\n",
    "print(f'df/dw at {w}, {x}, {y}, {z} is {w.grad}')\n",
    "print(f'df/dx at {w}, {x}, {y}, {z} is {x.grad}')\n",
    "print(f'df/dy at {w}, {x}, {y}, {z} is {y.grad}')\n",
    "print(f'df/dz at {w}, {x}, {y}, {z} is {z.grad}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "origin_pos": 16
   },
   "source": [
    "All of what we did above can be done automatically by calling `f.backwards()`.\n",
    "\n",
    "\n",
    "## Hessians\n",
    "As with single variable calculus, it is useful to consider higher-order derivatives in order to get a handle on how we can obtain a better approximation to a function than using the gradient alone.\n",
    "\n",
    "There is one immediate problem one encounters when working with higher order derivatives of functions of several variables, and that is there are a large number of them.  If we have a function $f(x_1, \\ldots, x_n)$ of $n$ variables, then we can take $n^{2}$ many second derivatives, namely for any choice of $i$ and $j$:\n",
    "\n",
    "$$\n",
    "\\frac{d^2f}{dx_idx_j} = \\frac{d}{dx_i}\\left(\\frac{d}{dx_j}f\\right).\n",
    "$$\n",
    "\n",
    "This is traditionally assembled into a matrix called the *Hessian*:\n",
    "\n",
    "$$\\mathbf{H}_f = \\begin{bmatrix} \\frac{d^2f}{dx_1dx_1} & \\cdots & \\frac{d^2f}{dx_1dx_n} \\\\ \\vdots & \\ddots & \\vdots \\\\ \\frac{d^2f}{dx_ndx_1} & \\cdots & \\frac{d^2f}{dx_ndx_n} \\\\ \\end{bmatrix}.$$\n",
    ":eqlabel:`eq_hess_def`\n",
    "\n",
    "Not every entry of this matrix is independent.  Indeed, we can show that as long as both *mixed partials* (partial derivatives with respect to more than one variable) exist and are continuous, we can say that for any $i$, and $j$,\n",
    "\n",
    "$$\n",
    "\\frac{d^2f}{dx_idx_j} = \\frac{d^2f}{dx_jdx_i}.\n",
    "$$\n",
    "\n",
    "This follows by considering first perturbing a function in the direction of $x_i$, and then perturbing it in $x_j$ and then comparing the result of that with what happens if we perturb first $x_j$ and then $x_i$, with the knowledge that both of these orders lead to the same final change in the output of $f$.\n",
    "\n",
    "As with single variables, we can use these derivatives to get a far better idea of how the function behaves near a point.  In particular, we can use it to find the best fitting quadratic near a point $\\mathbf{x}_0$, as we saw in a single variable.\n",
    "\n",
    "Let us see an example.  Suppose that $f(x_1, x_2) = a + b_1x_1 + b_2x_2 + c_{11}x_1^{2} + c_{12}x_1x_2 + c_{22}x_2^{2}$.  This is the general form for a quadratic in two variables.  If we look at the value of the function, its gradient, and its Hessian :eqref:`eq_hess_def`, all at the point zero:\n",
    "\n",
    "$$\n",
    "\\begin{aligned}\n",
    "f(0,0) & = a, \\\\\n",
    "\\nabla f (0,0) & = \\begin{bmatrix}b_1 \\\\ b_2\\end{bmatrix}, \\\\\n",
    "\\mathbf{H} f (0,0) & = \\begin{bmatrix}2 c_{11} & c_{12} \\\\ c_{12} & 2c_{22}\\end{bmatrix},\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "we can get our original polynomial back by saying\n",
    "\n",
    "$$\n",
    "f(\\mathbf{x}) = f(0) + \\nabla f (0) \\cdot \\mathbf{x} + \\frac{1}{2}\\mathbf{x}^\\top \\mathbf{H} f (0) \\mathbf{x}.\n",
    "$$\n",
    "\n",
    "In general, if we computed this expansion any point $\\mathbf{x}_0$, we see that\n",
    "\n",
    "$$\n",
    "f(\\mathbf{x}) = f(\\mathbf{x}_0) + \\nabla f (\\mathbf{x}_0) \\cdot (\\mathbf{x}-\\mathbf{x}_0) + \\frac{1}{2}(\\mathbf{x}-\\mathbf{x}_0)^\\top \\mathbf{H} f (\\mathbf{x}_0) (\\mathbf{x}-\\mathbf{x}_0).\n",
    "$$\n",
    "\n",
    "This works for any dimensional input, and provides the best approximating quadratic to any function at a point.  To give an example, let us plot the function\n",
    "\n",
    "$$\n",
    "f(x, y) = xe^{-x^2-y^2}.\n",
    "$$\n",
    "\n",
    "One can compute that the gradient and Hessian are\n",
    "$$\n",
    "\\nabla f(x, y) = e^{-x^2-y^2}\\begin{pmatrix}1-2x^2 \\\\ -2xy\\end{pmatrix} \\; \\text{and} \\; \\mathbf{H}f(x, y) = e^{-x^2-y^2}\\begin{pmatrix} 4x^3 - 6x & 4x^2y - 2y \\\\ 4x^2y-2y &4xy^2-2x\\end{pmatrix}.\n",
    "$$\n",
    "\n",
    "And thus, with a little algebra, see that the approximating quadratic at $[-1,0]^\\top$ is\n",
    "\n",
    "$$\n",
    "f(x, y) \\approx e^{-1}\\left(-1 - (x+1) +(x+1)^2+y^2\\right).\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "origin_pos": 17,
    "tab": [
     "mxnet"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"160.3717pt\" height=\"154.869035pt\" viewBox=\"0 0 160.3717 154.869035\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n",
       " <metadata>\n",
       "  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n",
       "   <cc:Work>\n",
       "    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
       "    <dc:date>2022-03-24T10:42:56.347286</dc:date>\n",
       "    <dc:format>image/svg+xml</dc:format>\n",
       "    <dc:creator>\n",
       "     <cc:Agent>\n",
       "      <dc:title>Matplotlib v3.5.1, https://matplotlib.org/</dc:title>\n",
       "     </cc:Agent>\n",
       "    </dc:creator>\n",
       "   </cc:Work>\n",
       "  </rdf:RDF>\n",
       " </metadata>\n",
       " <defs>\n",
       "  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n",
       " </defs>\n",
       " <g id=\"figure_1\">\n",
       "  <g id=\"patch_1\">\n",
       "   <path d=\"M 0 154.869035 \n",
       "L 160.3717 154.869035 \n",
       "L 160.3717 0 \n",
       "L 0 0 \n",
       "L 0 154.869035 \n",
       "z\n",
       "\" style=\"fill: none\"/>\n",
       "  </g>\n",
       "  <g id=\"patch_2\">\n",
       "   <path d=\"M 7.2 143.1 \n",
       "L 143.1 143.1 \n",
       "L 143.1 7.2 \n",
       "L 7.2 7.2 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "  </g>\n",
       "  <g id=\"pane3d_1\">\n",
       "   <g id=\"patch_3\">\n",
       "    <path d=\"M 27.353771 103.562447 \n",
       "L 64.605967 72.180617 \n",
       "L 64.163131 26.629517 \n",
       "L 25.441683 55.710636 \n",
       "\" style=\"fill: #f2f2f2; opacity: 0.5; stroke: #f2f2f2; stroke-linejoin: miter\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"pane3d_2\">\n",
       "   <g id=\"patch_4\">\n",
       "    <path d=\"M 64.605967 72.180617 \n",
       "L 125.110191 89.748064 \n",
       "L 126.905674 42.889988 \n",
       "L 64.163131 26.629517 \n",
       "\" style=\"fill: #e6e6e6; opacity: 0.5; stroke: #e6e6e6; stroke-linejoin: miter\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"pane3d_3\">\n",
       "   <g id=\"patch_5\">\n",
       "    <path d=\"M 27.353771 103.562447 \n",
       "L 90.880681 123.895948 \n",
       "L 125.110191 89.748064 \n",
       "L 64.605967 72.180617 \n",
       "\" style=\"fill: #ececec; opacity: 0.5; stroke: #ececec; stroke-linejoin: miter\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axis3d_1\">\n",
       "   <g id=\"line2d_1\">\n",
       "    <path d=\"M 27.353771 103.562447 \n",
       "L 90.880681 123.895948 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"text_1\">\n",
       "    <!-- x -->\n",
       "    <g transform=\"translate(41.918834 145.589348)scale(0.1 -0.1)\">\n",
       "     <defs>\n",
       "      <path id=\"DejaVuSans-78\" d=\"M 3513 3500 \n",
       "L 2247 1797 \n",
       "L 3578 0 \n",
       "L 2900 0 \n",
       "L 1881 1375 \n",
       "L 863 0 \n",
       "L 184 0 \n",
       "L 1544 1831 \n",
       "L 300 3500 \n",
       "L 978 3500 \n",
       "L 1906 2253 \n",
       "L 2834 3500 \n",
       "L 3513 3500 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "     </defs>\n",
       "     <use xlink:href=\"#DejaVuSans-78\"/>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"Line3DCollection_1\">\n",
       "    <path d=\"M 28.570929 103.952032 \n",
       "L 65.768725 72.518225 \n",
       "L 65.367148 26.941553 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 43.341325 108.679695 \n",
       "L 79.868006 76.611962 \n",
       "L 79.972193 30.726622 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 58.422054 113.506689 \n",
       "L 94.242643 80.785649 \n",
       "L 94.87289 34.588314 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 73.823 118.436177 \n",
       "L 108.900783 85.04165 \n",
       "L 110.078307 38.528977 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 89.554472 123.471459 \n",
       "L 123.850895 89.382427 \n",
       "L 125.597889 42.55106 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "   </g>\n",
       "   <g id=\"xtick_1\">\n",
       "    <g id=\"line2d_2\">\n",
       "     <path d=\"M 28.890418 103.682049 \n",
       "L 27.93081 104.492961 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_2\">\n",
       "     <!-- −2 -->\n",
       "     <g transform=\"translate(14.961875 124.605841)scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-2212\" d=\"M 678 2272 \n",
       "L 4684 2272 \n",
       "L 4684 1741 \n",
       "L 678 1741 \n",
       "L 678 2272 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-32\" d=\"M 1228 531 \n",
       "L 3431 531 \n",
       "L 3431 0 \n",
       "L 469 0 \n",
       "L 469 531 \n",
       "Q 828 903 1448 1529 \n",
       "Q 2069 2156 2228 2338 \n",
       "Q 2531 2678 2651 2914 \n",
       "Q 2772 3150 2772 3378 \n",
       "Q 2772 3750 2511 3984 \n",
       "Q 2250 4219 1831 4219 \n",
       "Q 1534 4219 1204 4116 \n",
       "Q 875 4013 500 3803 \n",
       "L 500 4441 \n",
       "Q 881 4594 1212 4672 \n",
       "Q 1544 4750 1819 4750 \n",
       "Q 2544 4750 2975 4387 \n",
       "Q 3406 4025 3406 3419 \n",
       "Q 3406 3131 3298 2873 \n",
       "Q 3191 2616 2906 2266 \n",
       "Q 2828 2175 2409 1742 \n",
       "Q 1991 1309 1228 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-32\" x=\"83.789062\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_2\">\n",
       "    <g id=\"line2d_3\">\n",
       "     <path d=\"M 43.655274 108.404071 \n",
       "L 42.712295 109.231937 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_3\">\n",
       "     <!-- −1 -->\n",
       "     <g transform=\"translate(29.757599 129.499052)scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-31\" d=\"M 794 531 \n",
       "L 1825 531 \n",
       "L 1825 4091 \n",
       "L 703 3866 \n",
       "L 703 4441 \n",
       "L 1819 4666 \n",
       "L 2450 4666 \n",
       "L 2450 531 \n",
       "L 3481 531 \n",
       "L 3481 0 \n",
       "L 794 0 \n",
       "L 794 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_3\">\n",
       "    <g id=\"line2d_4\">\n",
       "     <path d=\"M 58.730158 113.225245 \n",
       "L 57.804724 114.070602 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_4\">\n",
       "     <!-- 0 -->\n",
       "     <g transform=\"translate(49.055959 134.495709)scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \n",
       "Q 1547 4250 1301 3770 \n",
       "Q 1056 3291 1056 2328 \n",
       "Q 1056 1369 1301 889 \n",
       "Q 1547 409 2034 409 \n",
       "Q 2525 409 2770 889 \n",
       "Q 3016 1369 3016 2328 \n",
       "Q 3016 3291 2770 3770 \n",
       "Q 2525 4250 2034 4250 \n",
       "z\n",
       "M 2034 4750 \n",
       "Q 2819 4750 3233 4129 \n",
       "Q 3647 3509 3647 2328 \n",
       "Q 3647 1150 3233 529 \n",
       "Q 2819 -91 2034 -91 \n",
       "Q 1250 -91 836 529 \n",
       "Q 422 1150 422 2328 \n",
       "Q 422 3509 836 4129 \n",
       "Q 1250 4750 2034 4750 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_4\">\n",
       "    <g id=\"line2d_5\">\n",
       "     <path d=\"M 74.124939 118.148728 \n",
       "L 73.218011 119.012135 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_5\">\n",
       "     <!-- 1 -->\n",
       "     <g transform=\"translate(64.487292 139.599127)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_5\">\n",
       "    <g id=\"line2d_6\">\n",
       "     <path d=\"M 89.849908 123.177809 \n",
       "L 88.9625 124.059851 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_6\">\n",
       "     <!-- 2 -->\n",
       "     <g transform=\"translate(80.251899 144.812765)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axis3d_2\">\n",
       "   <g id=\"line2d_7\">\n",
       "    <path d=\"M 125.110191 89.748064 \n",
       "L 90.880681 123.895948 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"text_7\">\n",
       "    <!-- y -->\n",
       "    <g transform=\"translate(128.140773 132.279403)scale(0.1 -0.1)\">\n",
       "     <defs>\n",
       "      <path id=\"DejaVuSans-79\" d=\"M 2059 -325 \n",
       "Q 1816 -950 1584 -1140 \n",
       "Q 1353 -1331 966 -1331 \n",
       "L 506 -1331 \n",
       "L 506 -850 \n",
       "L 844 -850 \n",
       "Q 1081 -850 1212 -737 \n",
       "Q 1344 -625 1503 -206 \n",
       "L 1606 56 \n",
       "L 191 3500 \n",
       "L 800 3500 \n",
       "L 1894 763 \n",
       "L 2988 3500 \n",
       "L 3597 3500 \n",
       "L 2059 -325 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "     </defs>\n",
       "     <use xlink:href=\"#DejaVuSans-79\"/>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"Line3DCollection_2\">\n",
       "    <path d=\"M 26.274498 55.085164 \n",
       "L 28.152905 102.889244 \n",
       "L 91.617193 123.161192 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 36.072005 47.726904 \n",
       "L 37.561031 94.963692 \n",
       "L 100.280741 114.518304 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 45.520605 40.630685 \n",
       "L 46.646101 87.310288 \n",
       "L 108.633983 106.184982 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 54.63861 33.782755 \n",
       "L 55.424474 79.91525 \n",
       "L 116.693299 98.144885 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 63.443072 27.170306 \n",
       "L 63.911421 72.765713 \n",
       "L 124.473932 90.382806 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "   </g>\n",
       "   <g id=\"xtick_6\">\n",
       "    <g id=\"line2d_8\">\n",
       "     <path d=\"M 91.086983 122.991831 \n",
       "L 92.678752 123.500278 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_8\">\n",
       "     <!-- −2 -->\n",
       "     <g transform=\"translate(94.936434 141.897149)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-32\" x=\"83.789062\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_7\">\n",
       "    <g id=\"line2d_9\">\n",
       "     <path d=\"M 99.757156 114.355062 \n",
       "L 101.329014 114.845132 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_9\">\n",
       "     <!-- −1 -->\n",
       "     <g transform=\"translate(103.413135 133.042711)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_8\">\n",
       "    <g id=\"line2d_10\">\n",
       "     <path d=\"M 108.116894 106.027533 \n",
       "L 109.669232 106.500204 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_10\">\n",
       "     <!-- 0 -->\n",
       "     <g transform=\"translate(115.775782 124.505713)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_9\">\n",
       "    <g id=\"line2d_11\">\n",
       "     <path d=\"M 116.182576 97.992927 \n",
       "L 117.715782 98.44911 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_11\">\n",
       "     <!-- 1 -->\n",
       "     <g transform=\"translate(123.660742 116.269385)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_10\">\n",
       "    <g id=\"line2d_12\">\n",
       "     <path d=\"M 123.969449 90.236056 \n",
       "L 125.483907 90.676599 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_12\">\n",
       "     <!-- 2 -->\n",
       "     <g transform=\"translate(131.272802 108.318118)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axis3d_3\">\n",
       "   <g id=\"line2d_13\">\n",
       "    <path d=\"M 125.110191 89.748064 \n",
       "L 126.905674 42.889988 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"Line3DCollection_3\">\n",
       "    <path d=\"M 125.144834 88.84396 \n",
       "L 64.59741 71.300448 \n",
       "L 27.31692 102.640229 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 125.564474 77.892293 \n",
       "L 64.493798 60.642726 \n",
       "L 26.870408 91.46583 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 125.991492 66.748088 \n",
       "L 64.388439 49.805237 \n",
       "L 26.415795 80.088702 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 126.426084 55.406222 \n",
       "L 64.281288 38.783393 \n",
       "L 25.952858 68.503275 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "    <path d=\"M 126.868453 43.86139 \n",
       "L 64.172298 27.572451 \n",
       "L 25.481368 56.703777 \n",
       "\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8\"/>\n",
       "   </g>\n",
       "   <g id=\"xtick_11\">\n",
       "    <g id=\"line2d_14\">\n",
       "     <path d=\"M 124.640491 88.697827 \n",
       "L 126.154528 89.136517 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_13\">\n",
       "     <!-- −1.0 -->\n",
       "     <g transform=\"translate(128.338367 94.279774)scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-2e\" d=\"M 684 794 \n",
       "L 1344 794 \n",
       "L 1344 0 \n",
       "L 684 0 \n",
       "L 684 794 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-30\" x=\"179.199219\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_12\">\n",
       "    <g id=\"line2d_15\">\n",
       "     <path d=\"M 125.055597 77.748559 \n",
       "L 126.583254 78.18005 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_14\">\n",
       "     <!-- −0.5 -->\n",
       "     <g transform=\"translate(128.888887 83.363694)scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-35\" d=\"M 691 4666 \n",
       "L 3169 4666 \n",
       "L 3169 4134 \n",
       "L 1269 4134 \n",
       "L 1269 2991 \n",
       "Q 1406 3038 1543 3061 \n",
       "Q 1681 3084 1819 3084 \n",
       "Q 2600 3084 3056 2656 \n",
       "Q 3513 2228 3513 1497 \n",
       "Q 3513 744 3044 326 \n",
       "Q 2575 -91 1722 -91 \n",
       "Q 1428 -91 1123 -41 \n",
       "Q 819 9 494 109 \n",
       "L 494 744 \n",
       "Q 775 591 1075 516 \n",
       "Q 1375 441 1709 441 \n",
       "Q 2250 441 2565 725 \n",
       "Q 2881 1009 2881 1497 \n",
       "Q 2881 1984 2565 2268 \n",
       "Q 2250 2553 1709 2553 \n",
       "Q 1456 2553 1204 2497 \n",
       "Q 953 2441 691 2322 \n",
       "L 691 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-2212\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-30\" x=\"83.789062\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-35\" x=\"179.199219\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_13\">\n",
       "    <g id=\"line2d_16\">\n",
       "     <path d=\"M 125.477999 66.60686 \n",
       "L 127.019522 67.03083 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_15\">\n",
       "     <!-- 0.0 -->\n",
       "     <g transform=\"translate(133.638881 72.256662)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_14\">\n",
       "    <g id=\"line2d_17\">\n",
       "     <path d=\"M 125.90789 55.267612 \n",
       "L 127.463534 55.683725 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_16\">\n",
       "     <!-- 0.5 -->\n",
       "     <g transform=\"translate(134.208916 60.953623)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"xtick_15\">\n",
       "    <g id=\"line2d_18\">\n",
       "     <path d=\"M 126.345471 43.725515 \n",
       "L 127.915497 44.13342 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_17\">\n",
       "     <!-- 1.0 -->\n",
       "     <g transform=\"translate(134.789101 49.449344)scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_1\">\n",
       "   <g id=\"Line3DCollection_4\">\n",
       "    <path d=\"M 28.470214 79.828939 \n",
       "L 28.86038 79.519501 \n",
       "L 29.249995 79.210897 \n",
       "L 29.63906 78.903172 \n",
       "L 30.027577 78.596369 \n",
       "L 30.41555 78.290535 \n",
       "L 30.802981 77.985722 \n",
       "L 31.189872 77.68198 \n",
       "L 31.576227 77.379362 \n",
       "L 31.962047 77.077924 \n",
       "L 32.347334 76.777719 \n",
       "L 32.732094 76.478801 \n",
       "L 33.116325 76.181226 \n",
       "L 33.500032 75.885042 \n",
       "L 33.883215 75.590299 \n",
       "L 34.265878 75.297039 \n",
       "L 34.64802 75.005305 \n",
       "L 35.029644 74.715126 \n",
       "L 35.410752 74.426528 \n",
       "L 35.791343 74.13953 \n",
       "L 36.171416 73.854136 \n",
       "L 36.550975 73.570343 \n",
       "L 36.930016 73.288135 \n",
       "L 37.30854 73.007482 \n",
       "L 37.686547 72.728341 \n",
       "L 38.064032 72.450654 \n",
       "L 38.440996 72.174349 \n",
       "L 38.817435 71.899337 \n",
       "L 39.193348 71.625514 \n",
       "L 39.568732 71.35276 \n",
       "L 39.943581 71.080943 \n",
       "L 40.317894 70.809912 \n",
       "L 40.691667 70.539508 \n",
       "L 41.064896 70.269555 \n",
       "L 41.437576 69.99987 \n",
       "L 41.809704 69.73026 \n",
       "L 42.181276 69.460527 \n",
       "L 42.552289 69.190466 \n",
       "L 42.922737 68.919873 \n",
       "L 43.292619 68.648542 \n",
       "L 43.66193 68.376274 \n",
       "L 44.030669 68.102873 \n",
       "L 44.398833 67.828152 \n",
       "L 44.76642 67.551937 \n",
       "L 45.13343 67.274068 \n",
       "L 45.499861 66.994401 \n",
       "L 45.865714 66.71281 \n",
       "L 46.230989 66.429191 \n",
       "L 46.595687 66.14346 \n",
       "L 46.959811 65.855561 \n",
       "L 47.323363 65.565456 \n",
       "L 47.686346 65.273137 \n",
       "L 48.048763 64.978619 \n",
       "L 48.41062 64.681943 \n",
       "L 48.771921 64.383172 \n",
       "L 49.13267 64.082395 \n",
       "L 49.492874 63.77972 \n",
       "L 49.852538 63.475277 \n",
       "L 50.211667 63.169213 \n",
       "L 50.57027 62.861692 \n",
       "L 50.92835 62.55289 \n",
       "L 51.285915 62.242994 \n",
       "L 51.64297 61.932199 \n",
       "L 51.999523 61.620708 \n",
       "L 52.355578 61.308721 \n",
       "L 52.711141 60.996443 \n",
       "L 53.066217 60.684076 \n",
       "L 53.420813 60.371813 \n",
       "L 53.774931 60.059845 \n",
       "L 54.128576 59.74835 \n",
       "L 54.481753 59.437497 \n",
       "L 54.834464 59.127442 \n",
       "L 55.186714 58.818328 \n",
       "L 55.538504 58.510282 \n",
       "L 55.889836 58.203418 \n",
       "L 56.240713 57.897833 \n",
       "L 56.591136 57.593611 \n",
       "L 56.941107 57.290815 \n",
       "L 57.290625 56.9895 \n",
       "L 57.639692 56.689703 \n",
       "L 57.988309 56.391445 \n",
       "L 58.336474 56.09474 \n",
       "L 58.684189 55.799586 \n",
       "L 59.031455 55.50597 \n",
       "L 59.378268 55.213874 \n",
       "L 59.724629 54.923266 \n",
       "L 60.07054 54.63411 \n",
       "L 60.415998 54.346365 \n",
       "L 60.761003 54.059982 \n",
       "L 61.105554 53.774912 \n",
       "L 61.449653 53.491099 \n",
       "L 61.793297 53.20849 \n",
       "L 62.136487 52.927028 \n",
       "L 62.479223 52.646656 \n",
       "L 62.821502 52.36732 \n",
       "L 63.163327 52.088963 \n",
       "L 63.504697 51.811533 \n",
       "L 63.845612 51.53498 \n",
       "L 64.186071 51.259256 \n",
       "L 64.526075 50.984312 \n",
       "L 64.865625 50.710108 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 34.444936 81.676314 \n",
       "L 34.832579 81.370532 \n",
       "L 35.219698 81.066503 \n",
       "L 35.606294 80.764376 \n",
       "L 35.992373 80.464303 \n",
       "L 36.377943 80.166447 \n",
       "L 36.763005 79.870981 \n",
       "L 37.147565 79.578081 \n",
       "L 37.531631 79.287928 \n",
       "L 37.915204 79.00071 \n",
       "L 38.29829 78.716613 \n",
       "L 38.680895 78.435822 \n",
       "L 39.06302 78.158521 \n",
       "L 39.444671 77.884884 \n",
       "L 39.825851 77.615076 \n",
       "L 40.206563 77.349248 \n",
       "L 40.586806 77.087535 \n",
       "L 40.966584 76.830048 \n",
       "L 41.345897 76.576875 \n",
       "L 41.724743 76.328074 \n",
       "L 42.103121 76.08367 \n",
       "L 42.481029 75.843647 \n",
       "L 42.858463 75.607955 \n",
       "L 43.235417 75.376494 \n",
       "L 43.611887 75.14912 \n",
       "L 43.987864 74.925638 \n",
       "L 44.363341 74.705804 \n",
       "L 44.738308 74.489319 \n",
       "L 45.112757 74.275834 \n",
       "L 45.486675 74.064947 \n",
       "L 45.860051 73.856206 \n",
       "L 46.232873 73.64911 \n",
       "L 46.605128 73.443115 \n",
       "L 46.976802 73.237637 \n",
       "L 47.347884 73.032056 \n",
       "L 47.718358 72.825724 \n",
       "L 48.088214 72.617968 \n",
       "L 48.457437 72.408107 \n",
       "L 48.826017 72.195448 \n",
       "L 49.193942 71.979305 \n",
       "L 49.561203 71.759001 \n",
       "L 49.927791 71.533881 \n",
       "L 50.293699 71.303321 \n",
       "L 50.65892 71.066734 \n",
       "L 51.023452 70.82358 \n",
       "L 51.387291 70.573379 \n",
       "L 51.750436 70.315711 \n",
       "L 52.112889 70.050223 \n",
       "L 52.474653 69.776641 \n",
       "L 52.835733 69.494769 \n",
       "L 53.196135 69.20449 \n",
       "L 53.555866 68.905776 \n",
       "L 53.914938 68.598679 \n",
       "L 54.27336 68.283337 \n",
       "L 54.631146 67.959969 \n",
       "L 54.988308 67.628871 \n",
       "L 55.34486 67.290413 \n",
       "L 55.700818 66.945034 \n",
       "L 56.056196 66.593229 \n",
       "L 56.411012 66.235552 \n",
       "L 56.765279 65.8726 \n",
       "L 57.119014 65.505005 \n",
       "L 57.472231 65.133427 \n",
       "L 57.824947 64.758546 \n",
       "L 58.177174 64.38105 \n",
       "L 58.528927 64.001626 \n",
       "L 58.880216 63.620953 \n",
       "L 59.231056 63.239696 \n",
       "L 59.581454 62.858491 \n",
       "L 59.931421 62.477949 \n",
       "L 60.280965 62.09864 \n",
       "L 60.630092 61.721094 \n",
       "L 60.978809 61.345796 \n",
       "L 61.32712 60.973182 \n",
       "L 61.675028 60.603637 \n",
       "L 62.022537 60.237492 \n",
       "L 62.369647 59.875029 \n",
       "L 62.716361 59.516475 \n",
       "L 63.062676 59.16201 \n",
       "L 63.408593 58.811761 \n",
       "L 63.754112 58.46581 \n",
       "L 64.099227 58.124199 \n",
       "L 64.443939 57.786926 \n",
       "L 64.788246 57.453954 \n",
       "L 65.132142 57.125217 \n",
       "L 65.475625 56.800616 \n",
       "L 65.818694 56.480029 \n",
       "L 66.161343 56.163318 \n",
       "L 66.503571 55.850324 \n",
       "L 66.845373 55.540876 \n",
       "L 67.186747 55.234795 \n",
       "L 67.527691 54.931898 \n",
       "L 67.8682 54.631994 \n",
       "L 68.208275 54.334895 \n",
       "L 68.54791 54.040415 \n",
       "L 68.887105 53.748372 \n",
       "L 69.225859 53.458586 \n",
       "L 69.564169 53.170889 \n",
       "L 69.902034 52.885118 \n",
       "L 70.239454 52.601118 \n",
       "L 70.576426 52.318747 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 40.470661 83.570274 \n",
       "L 40.855806 83.273466 \n",
       "L 41.240463 82.980109 \n",
       "L 41.624637 82.690542 \n",
       "L 42.008336 82.40512 \n",
       "L 42.391571 82.124221 \n",
       "L 42.774348 81.848239 \n",
       "L 43.156676 81.577583 \n",
       "L 43.538563 81.312674 \n",
       "L 43.920015 81.053942 \n",
       "L 44.301041 80.801818 \n",
       "L 44.681648 80.556728 \n",
       "L 45.06184 80.319094 \n",
       "L 45.441624 80.089318 \n",
       "L 45.821002 79.86778 \n",
       "L 46.199979 79.654827 \n",
       "L 46.578553 79.450768 \n",
       "L 46.956727 79.25586 \n",
       "L 47.334499 79.070301 \n",
       "L 47.711863 78.894224 \n",
       "L 48.088815 78.727683 \n",
       "L 48.465349 78.570645 \n",
       "L 48.841452 78.422985 \n",
       "L 49.217115 78.284475 \n",
       "L 49.592325 78.154778 \n",
       "L 49.967064 78.033446 \n",
       "L 50.341316 77.919911 \n",
       "L 50.715061 77.813486 \n",
       "L 51.088278 77.713365 \n",
       "L 51.460946 77.618622 \n",
       "L 51.83304 77.528218 \n",
       "L 52.204537 77.441001 \n",
       "L 52.57541 77.355721 \n",
       "L 52.945636 77.271035 \n",
       "L 53.315189 77.18552 \n",
       "L 53.684043 77.097692 \n",
       "L 54.052176 77.006012 \n",
       "L 54.419564 76.908915 \n",
       "L 54.786187 76.80482 \n",
       "L 55.152024 76.692155 \n",
       "L 55.51706 76.569375 \n",
       "L 55.881281 76.434981 \n",
       "L 56.244674 76.28755 \n",
       "L 56.60723 76.125743 \n",
       "L 56.968946 75.948332 \n",
       "L 57.329819 75.754218 \n",
       "L 57.68985 75.542444 \n",
       "L 58.049044 75.31221 \n",
       "L 58.407409 75.06289 \n",
       "L 58.764957 74.794037 \n",
       "L 59.121703 74.505389 \n",
       "L 59.477663 74.196879 \n",
       "L 59.832857 73.868631 \n",
       "L 60.187309 73.520957 \n",
       "L 60.541041 73.154359 \n",
       "L 60.894081 72.769513 \n",
       "L 61.246454 72.367263 \n",
       "L 61.59819 71.948609 \n",
       "L 61.949316 71.514689 \n",
       "L 62.299861 71.066763 \n",
       "L 62.649853 70.606196 \n",
       "L 62.999319 70.134434 \n",
       "L 63.348287 69.652989 \n",
       "L 63.696782 69.163415 \n",
       "L 64.044827 68.667286 \n",
       "L 64.392445 68.166181 \n",
       "L 64.739654 67.661656 \n",
       "L 65.086475 67.155234 \n",
       "L 65.432922 66.648382 \n",
       "L 65.779009 66.142498 \n",
       "L 66.124747 65.638898 \n",
       "L 66.470146 65.138801 \n",
       "L 66.815212 64.643325 \n",
       "L 67.159952 64.153474 \n",
       "L 67.504366 63.670138 \n",
       "L 67.848457 63.194085 \n",
       "L 68.192225 62.725967 \n",
       "L 68.535668 62.266312 \n",
       "L 68.878781 61.815534 \n",
       "L 69.221561 61.373936 \n",
       "L 69.564003 60.941711 \n",
       "L 69.906101 60.518957 \n",
       "L 70.247848 60.105675 \n",
       "L 70.589238 59.701787 \n",
       "L 70.930263 59.307139 \n",
       "L 71.270915 58.921511 \n",
       "L 71.611189 58.544627 \n",
       "L 71.951076 58.176166 \n",
       "L 72.29057 57.815768 \n",
       "L 72.629665 57.463044 \n",
       "L 72.968354 57.117582 \n",
       "L 73.306631 56.778959 \n",
       "L 73.64449 56.446743 \n",
       "L 73.981929 56.1205 \n",
       "L 74.31894 55.799803 \n",
       "L 74.655521 55.484232 \n",
       "L 74.99167 55.173378 \n",
       "L 75.32738 54.866853 \n",
       "L 75.662652 54.564281 \n",
       "L 75.997483 54.26531 \n",
       "L 76.33187 53.96961 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 46.546595 85.470299 \n",
       "L 46.929035 85.180818 \n",
       "L 47.311001 84.896252 \n",
       "L 47.692501 84.617102 \n",
       "L 48.073545 84.343899 \n",
       "L 48.454143 84.077203 \n",
       "L 48.834301 83.817602 \n",
       "L 49.214029 83.565704 \n",
       "L 49.593337 83.322135 \n",
       "L 49.97223 83.087532 \n",
       "L 50.350716 82.862536 \n",
       "L 50.728804 82.647783 \n",
       "L 51.106495 82.443895 \n",
       "L 51.483795 82.251472 \n",
       "L 51.860707 82.071075 \n",
       "L 52.237232 81.903219 \n",
       "L 52.613369 81.74836 \n",
       "L 52.989115 81.606879 \n",
       "L 53.364467 81.479067 \n",
       "L 53.739416 81.365117 \n",
       "L 54.113954 81.265106 \n",
       "L 54.48807 81.178981 \n",
       "L 54.86175 81.106553 \n",
       "L 55.234977 81.047478 \n",
       "L 55.607734 81.001251 \n",
       "L 55.979999 80.967202 \n",
       "L 56.351751 80.944484 \n",
       "L 56.722964 80.932071 \n",
       "L 57.093614 80.928764 \n",
       "L 57.463672 80.933185 \n",
       "L 57.83311 80.943787 \n",
       "L 58.201901 80.95886 \n",
       "L 58.570014 80.976549 \n",
       "L 58.937422 80.99486 \n",
       "L 59.304096 81.011686 \n",
       "L 59.670009 81.024825 \n",
       "L 60.035137 81.031999 \n",
       "L 60.399456 81.030892 \n",
       "L 60.762945 81.019166 \n",
       "L 61.125586 80.994496 \n",
       "L 61.487364 80.954598 \n",
       "L 61.848268 80.897265 \n",
       "L 62.20829 80.820388 \n",
       "L 62.567426 80.721997 \n",
       "L 62.925676 80.600278 \n",
       "L 63.283044 80.453611 \n",
       "L 63.639538 80.280585 \n",
       "L 63.995171 80.080024 \n",
       "L 64.349957 79.851003 \n",
       "L 64.703916 79.592863 \n",
       "L 65.057072 79.305222 \n",
       "L 65.409448 78.987979 \n",
       "L 65.761073 78.641317 \n",
       "L 66.111977 78.265698 \n",
       "L 66.462191 77.861858 \n",
       "L 66.81175 77.430798 \n",
       "L 67.160685 76.973761 \n",
       "L 67.509031 76.492223 \n",
       "L 67.856821 75.987859 \n",
       "L 68.204089 75.462533 \n",
       "L 68.550866 74.918256 \n",
       "L 68.897182 74.357168 \n",
       "L 69.243066 73.781501 \n",
       "L 69.588544 73.193551 \n",
       "L 69.933641 72.595649 \n",
       "L 70.278377 71.990129 \n",
       "L 70.62277 71.379297 \n",
       "L 70.966838 70.765408 \n",
       "L 71.310593 70.150639 \n",
       "L 71.654044 69.537063 \n",
       "L 71.997201 68.926632 \n",
       "L 72.340067 68.32116 \n",
       "L 72.682645 67.722307 \n",
       "L 73.024936 67.131568 \n",
       "L 73.366936 66.55027 \n",
       "L 73.708643 65.979556 \n",
       "L 74.050051 65.420399 \n",
       "L 74.391154 64.87359 \n",
       "L 74.731943 64.339749 \n",
       "L 75.072409 63.81933 \n",
       "L 75.412545 63.312626 \n",
       "L 75.752338 62.819786 \n",
       "L 76.09178 62.340821 \n",
       "L 76.43086 61.875612 \n",
       "L 76.769569 61.42394 \n",
       "L 77.107896 60.98548 \n",
       "L 77.445833 60.559824 \n",
       "L 77.783371 60.1465 \n",
       "L 78.120501 59.744973 \n",
       "L 78.457216 59.354668 \n",
       "L 78.793511 58.974974 \n",
       "L 79.129376 58.605265 \n",
       "L 79.464809 58.244898 \n",
       "L 79.799804 57.893231 \n",
       "L 80.134357 57.54963 \n",
       "L 80.468464 57.213469 \n",
       "L 80.802123 56.884145 \n",
       "L 81.135331 56.561076 \n",
       "L 81.468087 56.243708 \n",
       "L 81.80039 55.931516 \n",
       "L 82.132237 55.624011 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 52.671909 87.293483 \n",
       "L 53.05121 86.995472 \n",
       "L 53.430007 86.701538 \n",
       "L 53.808302 86.412088 \n",
       "L 54.186103 86.127553 \n",
       "L 54.563415 85.848385 \n",
       "L 54.940241 85.575062 \n",
       "L 55.316589 85.308077 \n",
       "L 55.692462 85.047935 \n",
       "L 56.067864 84.795155 \n",
       "L 56.442799 84.550256 \n",
       "L 56.81727 84.313754 \n",
       "L 57.191279 84.086153 \n",
       "L 57.564827 83.86794 \n",
       "L 57.937914 83.659571 \n",
       "L 58.310541 83.461465 \n",
       "L 58.682704 83.273991 \n",
       "L 59.0544 83.09746 \n",
       "L 59.425626 82.932109 \n",
       "L 59.796374 82.778097 \n",
       "L 60.166638 82.635487 \n",
       "L 60.53641 82.504238 \n",
       "L 60.905677 82.384199 \n",
       "L 61.27443 82.275092 \n",
       "L 61.642657 82.176512 \n",
       "L 62.010342 82.087916 \n",
       "L 62.377472 82.008618 \n",
       "L 62.74403 81.937791 \n",
       "L 63.110002 81.87446 \n",
       "L 63.475369 81.817511 \n",
       "L 63.840116 81.765689 \n",
       "L 64.204226 81.717609 \n",
       "L 64.567683 81.671765 \n",
       "L 64.930471 81.626538 \n",
       "L 65.292577 81.580219 \n",
       "L 65.653987 81.531016 \n",
       "L 66.014689 81.477084 \n",
       "L 66.374674 81.416537 \n",
       "L 66.733934 81.347475 \n",
       "L 67.092462 81.268006 \n",
       "L 67.450256 81.176275 \n",
       "L 67.807315 81.070484 \n",
       "L 68.163641 80.948917 \n",
       "L 68.519237 80.809969 \n",
       "L 68.874112 80.652166 \n",
       "L 69.228275 80.474185 \n",
       "L 69.581736 80.27488 \n",
       "L 69.934512 80.05329 \n",
       "L 70.286617 79.808663 \n",
       "L 70.638071 79.540463 \n",
       "L 70.988892 79.248376 \n",
       "L 71.339102 78.932322 \n",
       "L 71.688722 78.592447 \n",
       "L 72.037777 78.229131 \n",
       "L 72.386287 77.842973 \n",
       "L 72.734277 77.434785 \n",
       "L 73.081768 77.005583 \n",
       "L 73.428783 76.556566 \n",
       "L 73.775343 76.089101 \n",
       "L 74.121467 75.604703 \n",
       "L 74.467174 75.10501 \n",
       "L 74.812479 74.591762 \n",
       "L 75.157399 74.066777 \n",
       "L 75.501945 73.53192 \n",
       "L 75.846129 72.989086 \n",
       "L 76.189958 72.440172 \n",
       "L 76.53344 71.887055 \n",
       "L 76.87658 71.331561 \n",
       "L 77.219379 70.775461 \n",
       "L 77.561838 70.220436 \n",
       "L 77.903956 69.66807 \n",
       "L 78.245731 69.119835 \n",
       "L 78.587159 68.577074 \n",
       "L 78.928235 68.041001 \n",
       "L 79.268951 67.512687 \n",
       "L 79.609301 66.99306 \n",
       "L 79.949277 66.482906 \n",
       "L 80.288872 65.982863 \n",
       "L 80.628075 65.493434 \n",
       "L 80.966879 65.014981 \n",
       "L 81.305277 64.547742 \n",
       "L 81.643258 64.091835 \n",
       "L 81.980816 63.647265 \n",
       "L 82.317943 63.213936 \n",
       "L 82.654632 62.791666 \n",
       "L 82.990876 62.380192 \n",
       "L 83.326671 61.979181 \n",
       "L 83.66201 61.588248 \n",
       "L 83.99689 61.20696 \n",
       "L 84.331306 60.834848 \n",
       "L 84.665257 60.471416 \n",
       "L 84.998739 60.116157 \n",
       "L 85.33175 59.768549 \n",
       "L 85.664291 59.42807 \n",
       "L 85.996358 59.094206 \n",
       "L 86.327953 58.76645 \n",
       "L 86.659076 58.444311 \n",
       "L 86.989727 58.12732 \n",
       "L 87.319906 57.815026 \n",
       "L 87.649617 57.507003 \n",
       "L 87.978858 57.202855 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 58.848348 89.021602 \n",
       "L 59.224268 88.696046 \n",
       "L 59.599633 88.370971 \n",
       "L 59.974441 88.046377 \n",
       "L 60.348696 87.722263 \n",
       "L 60.7224 87.398626 \n",
       "L 61.095551 87.075467 \n",
       "L 61.468153 86.752785 \n",
       "L 61.840207 86.430577 \n",
       "L 62.211712 86.108844 \n",
       "L 62.582671 85.787584 \n",
       "L 62.953085 85.466795 \n",
       "L 63.322955 85.146479 \n",
       "L 63.692282 84.826632 \n",
       "L 64.061068 84.507254 \n",
       "L 64.429314 84.188344 \n",
       "L 64.79702 83.869901 \n",
       "L 65.164188 83.551924 \n",
       "L 65.530821 83.234411 \n",
       "L 65.896916 82.917363 \n",
       "L 66.262477 82.600778 \n",
       "L 66.627506 82.284653 \n",
       "L 66.992002 81.968991 \n",
       "L 67.355967 81.653788 \n",
       "L 67.719403 81.339043 \n",
       "L 68.08231 81.024757 \n",
       "L 68.444689 80.710927 \n",
       "L 68.806542 80.397554 \n",
       "L 69.16787 80.084634 \n",
       "L 69.528674 79.772169 \n",
       "L 69.888954 79.460157 \n",
       "L 70.248713 79.148596 \n",
       "L 70.607951 78.837487 \n",
       "L 70.96667 78.526827 \n",
       "L 71.324871 78.216616 \n",
       "L 71.682554 77.906854 \n",
       "L 72.039722 77.597538 \n",
       "L 72.396374 77.288668 \n",
       "L 72.752512 76.980243 \n",
       "L 73.108137 76.672262 \n",
       "L 73.463251 76.364725 \n",
       "L 73.817854 76.05763 \n",
       "L 74.171948 75.750975 \n",
       "L 74.525533 75.444762 \n",
       "L 74.878611 75.138987 \n",
       "L 75.231183 74.833651 \n",
       "L 75.583249 74.528752 \n",
       "L 75.934812 74.22429 \n",
       "L 76.285872 73.920264 \n",
       "L 76.63643 73.616672 \n",
       "L 76.986486 73.313514 \n",
       "L 77.336044 73.010788 \n",
       "L 77.685102 72.708494 \n",
       "L 78.033663 72.406632 \n",
       "L 78.381728 72.105199 \n",
       "L 78.729297 71.804195 \n",
       "L 79.076371 71.50362 \n",
       "L 79.422953 71.203472 \n",
       "L 79.769042 70.90375 \n",
       "L 80.11464 70.604453 \n",
       "L 80.459747 70.305582 \n",
       "L 80.804365 70.007133 \n",
       "L 81.148495 69.709108 \n",
       "L 81.492138 69.411504 \n",
       "L 81.835296 69.114322 \n",
       "L 82.177968 68.817559 \n",
       "L 82.520156 68.521215 \n",
       "L 82.861861 68.22529 \n",
       "L 83.203084 67.929782 \n",
       "L 83.543826 67.634691 \n",
       "L 83.884088 67.340015 \n",
       "L 84.223871 67.045754 \n",
       "L 84.563177 66.751907 \n",
       "L 84.902006 66.458473 \n",
       "L 85.240358 66.165451 \n",
       "L 85.578236 65.87284 \n",
       "L 85.91564 65.58064 \n",
       "L 86.252571 65.288849 \n",
       "L 86.58903 64.997467 \n",
       "L 86.925018 64.706493 \n",
       "L 87.260537 64.415925 \n",
       "L 87.595586 64.125764 \n",
       "L 87.930167 63.836008 \n",
       "L 88.264283 63.546656 \n",
       "L 88.597931 63.257708 \n",
       "L 88.931114 62.969163 \n",
       "L 89.263834 62.681019 \n",
       "L 89.59609 62.393277 \n",
       "L 89.927884 62.105935 \n",
       "L 90.259217 61.818992 \n",
       "L 90.59009 61.532447 \n",
       "L 90.920504 61.246301 \n",
       "L 91.250459 60.960551 \n",
       "L 91.579958 60.675197 \n",
       "L 91.908999 60.390239 \n",
       "L 92.237585 60.105675 \n",
       "L 92.565717 59.821504 \n",
       "L 92.893395 59.537726 \n",
       "L 93.220621 59.254341 \n",
       "L 93.547396 58.971346 \n",
       "L 93.873719 58.688742 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 65.079284 90.764969 \n",
       "L 65.451999 90.411682 \n",
       "L 65.824143 90.055255 \n",
       "L 66.195716 89.695279 \n",
       "L 66.566719 89.331316 \n",
       "L 66.937156 88.962904 \n",
       "L 67.307025 88.589562 \n",
       "L 67.676331 88.210789 \n",
       "L 68.045077 87.826066 \n",
       "L 68.413264 87.434871 \n",
       "L 68.780897 87.036671 \n",
       "L 69.147981 86.63094 \n",
       "L 69.51452 86.217161 \n",
       "L 69.88052 85.794834 \n",
       "L 70.245987 85.363488 \n",
       "L 70.61093 84.922688 \n",
       "L 70.975355 84.47205 \n",
       "L 71.33927 84.011245 \n",
       "L 71.702687 83.540015 \n",
       "L 72.065613 83.058185 \n",
       "L 72.428059 82.565672 \n",
       "L 72.790036 82.062494 \n",
       "L 73.151554 81.548787 \n",
       "L 73.512625 81.024809 \n",
       "L 73.87326 80.490947 \n",
       "L 74.233468 79.947732 \n",
       "L 74.593262 79.395835 \n",
       "L 74.95265 78.836078 \n",
       "L 75.311643 78.269427 \n",
       "L 75.670247 77.697002 \n",
       "L 76.02847 77.120063 \n",
       "L 76.386318 76.540007 \n",
       "L 76.743795 75.958363 \n",
       "L 77.100902 75.376775 \n",
       "L 77.457641 74.796988 \n",
       "L 77.814009 74.220838 \n",
       "L 78.170004 73.65022 \n",
       "L 78.525618 73.087076 \n",
       "L 78.880845 72.533371 \n",
       "L 79.235672 71.991062 \n",
       "L 79.59009 71.462078 \n",
       "L 79.944082 70.94829 \n",
       "L 80.297633 70.451487 \n",
       "L 80.650726 69.973348 \n",
       "L 81.00334 69.515416 \n",
       "L 81.355457 69.079077 \n",
       "L 81.707054 68.665537 \n",
       "L 82.058111 68.275804 \n",
       "L 82.408606 67.910666 \n",
       "L 82.758517 67.57069 \n",
       "L 83.107824 67.256203 \n",
       "L 83.456506 66.967287 \n",
       "L 83.804547 66.703784 \n",
       "L 84.151927 66.465294 \n",
       "L 84.498634 66.251181 \n",
       "L 84.844652 66.060586 \n",
       "L 85.189973 65.892439 \n",
       "L 85.534587 65.745476 \n",
       "L 85.87849 65.61826 \n",
       "L 86.221679 65.509202 \n",
       "L 86.564153 65.416587 \n",
       "L 86.905916 65.338596 \n",
       "L 87.246972 65.273336 \n",
       "L 87.587329 65.218866 \n",
       "L 87.926997 65.173222 \n",
       "L 88.265988 65.134441 \n",
       "L 88.604316 65.10059 \n",
       "L 88.941997 65.06979 \n",
       "L 89.279047 65.040228 \n",
       "L 89.615483 65.010186 \n",
       "L 89.951324 64.97805 \n",
       "L 90.28659 64.94233 \n",
       "L 90.621299 64.901664 \n",
       "L 90.95547 64.854833 \n",
       "L 91.289121 64.800763 \n",
       "L 91.62227 64.738525 \n",
       "L 91.954935 64.667344 \n",
       "L 92.287133 64.586588 \n",
       "L 92.618876 64.495768 \n",
       "L 92.950179 64.394534 \n",
       "L 93.281057 64.282663 \n",
       "L 93.611517 64.160055 \n",
       "L 93.941571 64.026719 \n",
       "L 94.271227 63.882766 \n",
       "L 94.600492 63.728396 \n",
       "L 94.929371 63.563886 \n",
       "L 95.257869 63.389579 \n",
       "L 95.585988 63.205877 \n",
       "L 95.913731 63.013224 \n",
       "L 96.241098 62.812096 \n",
       "L 96.568091 62.602999 \n",
       "L 96.894708 62.386452 \n",
       "L 97.220947 62.162982 \n",
       "L 97.546809 61.933114 \n",
       "L 97.872288 61.697373 \n",
       "L 98.197383 61.456268 \n",
       "L 98.522092 61.210292 \n",
       "L 98.846409 60.959921 \n",
       "L 99.170334 60.705607 \n",
       "L 99.493862 60.447776 \n",
       "L 99.81699 60.186831 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 71.365941 92.635214 \n",
       "L 71.735679 92.27308 \n",
       "L 72.104867 91.906936 \n",
       "L 72.473507 91.536276 \n",
       "L 72.841602 91.160556 \n",
       "L 73.209159 90.779204 \n",
       "L 73.57618 90.391622 \n",
       "L 73.942672 89.997186 \n",
       "L 74.308642 89.595255 \n",
       "L 74.674095 89.185178 \n",
       "L 75.039039 88.766296 \n",
       "L 75.403484 88.337952 \n",
       "L 75.767437 87.899506 \n",
       "L 76.130908 87.450336 \n",
       "L 76.493909 86.989856 \n",
       "L 76.85645 86.517524 \n",
       "L 77.218543 86.032862 \n",
       "L 77.5802 85.535461 \n",
       "L 77.941434 85.024997 \n",
       "L 78.302256 84.501253 \n",
       "L 78.662681 83.964121 \n",
       "L 79.022721 83.413622 \n",
       "L 79.382387 82.849924 \n",
       "L 79.741692 82.273341 \n",
       "L 80.100648 81.684354 \n",
       "L 80.459261 81.083618 \n",
       "L 80.817544 80.471964 \n",
       "L 81.1755 79.850412 \n",
       "L 81.533138 79.220159 \n",
       "L 81.890458 78.582593 \n",
       "L 82.247461 77.93928 \n",
       "L 82.604146 77.291956 \n",
       "L 82.960508 76.642519 \n",
       "L 83.31654 75.993012 \n",
       "L 83.672232 75.345608 \n",
       "L 84.027568 74.702587 \n",
       "L 84.382535 74.06631 \n",
       "L 84.737112 73.439195 \n",
       "L 85.091276 72.823686 \n",
       "L 85.445004 72.222224 \n",
       "L 85.798268 71.637212 \n",
       "L 86.151038 71.070982 \n",
       "L 86.503284 70.525765 \n",
       "L 86.854974 70.003653 \n",
       "L 87.206074 69.506575 \n",
       "L 87.55655 69.036257 \n",
       "L 87.90637 68.594205 \n",
       "L 88.2555 68.181674 \n",
       "L 88.603909 67.799655 \n",
       "L 88.951567 67.44885 \n",
       "L 89.298445 67.129667 \n",
       "L 89.644519 66.842212 \n",
       "L 89.989767 66.586286 \n",
       "L 90.334171 66.361389 \n",
       "L 90.677714 66.16673 \n",
       "L 91.020387 66.001233 \n",
       "L 91.362182 65.863565 \n",
       "L 91.703098 65.752149 \n",
       "L 92.043136 65.665194 \n",
       "L 92.382303 65.600714 \n",
       "L 92.720608 65.556574 \n",
       "L 93.058065 65.530506 \n",
       "L 93.394693 65.520151 \n",
       "L 93.730513 65.52309 \n",
       "L 94.065548 65.536876 \n",
       "L 94.399825 65.559068 \n",
       "L 94.733372 65.587262 \n",
       "L 95.066221 65.619114 \n",
       "L 95.398402 65.652374 \n",
       "L 95.729947 65.684905 \n",
       "L 96.060888 65.714702 \n",
       "L 96.391258 65.739913 \n",
       "L 96.721088 65.758851 \n",
       "L 97.050409 65.77 \n",
       "L 97.379248 65.772028 \n",
       "L 97.707635 65.763788 \n",
       "L 98.035593 65.744316 \n",
       "L 98.363148 65.71283 \n",
       "L 98.690318 65.66873 \n",
       "L 99.017124 65.611582 \n",
       "L 99.343582 65.541112 \n",
       "L 99.669706 65.4572 \n",
       "L 99.995507 65.359859 \n",
       "L 100.320995 65.24923 \n",
       "L 100.646175 65.125564 \n",
       "L 100.971054 64.989207 \n",
       "L 101.295635 64.840588 \n",
       "L 101.619918 64.680206 \n",
       "L 101.943902 64.508614 \n",
       "L 102.267586 64.326407 \n",
       "L 102.590969 64.134211 \n",
       "L 102.914042 63.932674 \n",
       "L 103.236804 63.722448 \n",
       "L 103.559248 63.50419 \n",
       "L 103.881367 63.278548 \n",
       "L 104.203154 63.046156 \n",
       "L 104.524605 62.807627 \n",
       "L 104.845709 62.563553 \n",
       "L 105.166462 62.314493 \n",
       "L 105.486857 62.060977 \n",
       "L 105.806885 61.803505 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 77.707374 94.615708 \n",
       "L 78.074089 94.260729 \n",
       "L 78.440271 93.903208 \n",
       "L 78.805923 93.542801 \n",
       "L 79.171051 93.179142 \n",
       "L 79.53566 92.811843 \n",
       "L 79.899754 92.4405 \n",
       "L 80.263341 92.064693 \n",
       "L 80.626428 91.683987 \n",
       "L 80.98902 91.297944 \n",
       "L 81.351127 90.906118 \n",
       "L 81.712757 90.508066 \n",
       "L 82.073916 90.103356 \n",
       "L 82.434616 89.69157 \n",
       "L 82.794865 89.272312 \n",
       "L 83.154674 88.845219 \n",
       "L 83.51405 88.409967 \n",
       "L 83.873005 87.966284 \n",
       "L 84.23155 87.513952 \n",
       "L 84.589691 87.052827 \n",
       "L 84.94744 86.582839 \n",
       "L 85.304805 86.104004 \n",
       "L 85.661794 85.616439 \n",
       "L 86.018413 85.120359 \n",
       "L 86.37467 84.616092 \n",
       "L 86.730568 84.104083 \n",
       "L 87.086112 83.584895 \n",
       "L 87.441301 83.059219 \n",
       "L 87.796136 82.527866 \n",
       "L 88.150616 81.991774 \n",
       "L 88.504733 81.452 \n",
       "L 88.858484 80.909716 \n",
       "L 89.211857 80.366203 \n",
       "L 89.564843 79.822837 \n",
       "L 89.917426 79.281083 \n",
       "L 90.26959 78.742474 \n",
       "L 90.621318 78.208599 \n",
       "L 90.972588 77.681082 \n",
       "L 91.323377 77.161568 \n",
       "L 91.673661 76.651694 \n",
       "L 92.023415 76.153074 \n",
       "L 92.372612 75.667273 \n",
       "L 92.721224 75.195784 \n",
       "L 93.069222 74.740013 \n",
       "L 93.416579 74.301249 \n",
       "L 93.763267 73.88065 \n",
       "L 94.109259 73.479223 \n",
       "L 94.454529 73.09781 \n",
       "L 94.799053 72.737072 \n",
       "L 95.14281 72.397479 \n",
       "L 95.48578 72.079305 \n",
       "L 95.827947 71.78262 \n",
       "L 96.169295 71.50729 \n",
       "L 96.509817 71.252982 \n",
       "L 96.849503 71.019162 \n",
       "L 97.188352 70.805113 \n",
       "L 97.526363 70.609942 \n",
       "L 97.86354 70.432591 \n",
       "L 98.199892 70.271858 \n",
       "L 98.535428 70.126417 \n",
       "L 98.870164 69.994831 \n",
       "L 99.204116 69.875581 \n",
       "L 99.537305 69.767083 \n",
       "L 99.869752 69.667711 \n",
       "L 100.201484 69.575823 \n",
       "L 100.532525 69.489777 \n",
       "L 100.862902 69.407955 \n",
       "L 101.192645 69.32878 \n",
       "L 101.521782 69.250737 \n",
       "L 101.850342 69.172384 \n",
       "L 102.178354 69.092371 \n",
       "L 102.505845 69.009447 \n",
       "L 102.832842 68.922471 \n",
       "L 103.159372 68.83042 \n",
       "L 103.485457 68.732391 \n",
       "L 103.811122 68.627608 \n",
       "L 104.136386 68.515417 \n",
       "L 104.461268 68.395286 \n",
       "L 104.785784 68.266807 \n",
       "L 105.109949 68.129683 \n",
       "L 105.433777 67.983726 \n",
       "L 105.757274 67.82885 \n",
       "L 106.08045 67.665064 \n",
       "L 106.403313 67.492456 \n",
       "L 106.725864 67.311194 \n",
       "L 107.048107 67.12151 \n",
       "L 107.370043 66.923691 \n",
       "L 107.691671 66.718071 \n",
       "L 108.012989 66.505023 \n",
       "L 108.333994 66.284947 \n",
       "L 108.654684 66.058263 \n",
       "L 108.975051 65.825409 \n",
       "L 109.295092 65.586824 \n",
       "L 109.614802 65.34295 \n",
       "L 109.934172 65.094225 \n",
       "L 110.253198 64.841076 \n",
       "L 110.571874 64.583917 \n",
       "L 110.890192 64.323147 \n",
       "L 111.208146 64.059143 \n",
       "L 111.525732 63.792264 \n",
       "L 111.842942 63.522846 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 84.103334 96.623209 \n",
       "L 84.466843 96.277106 \n",
       "L 84.82982 95.930182 \n",
       "L 85.192265 95.582289 \n",
       "L 85.554184 95.233265 \n",
       "L 85.915582 94.88294 \n",
       "L 86.27646 94.531139 \n",
       "L 86.636823 94.177678 \n",
       "L 86.996678 93.822365 \n",
       "L 87.356026 93.46501 \n",
       "L 87.714875 93.105419 \n",
       "L 88.07323 92.743397 \n",
       "L 88.431094 92.378757 \n",
       "L 88.788474 92.011317 \n",
       "L 89.145376 91.640903 \n",
       "L 89.501806 91.267357 \n",
       "L 89.857768 90.89054 \n",
       "L 90.213268 90.510332 \n",
       "L 90.568313 90.12664 \n",
       "L 90.922906 89.739401 \n",
       "L 91.277052 89.348586 \n",
       "L 91.630758 88.954202 \n",
       "L 91.984023 88.556303 \n",
       "L 92.336854 88.154982 \n",
       "L 92.689254 87.750382 \n",
       "L 93.041221 87.342701 \n",
       "L 93.392758 86.932183 \n",
       "L 93.743865 86.519131 \n",
       "L 94.09454 86.103897 \n",
       "L 94.444781 85.686892 \n",
       "L 94.794583 85.268576 \n",
       "L 95.143943 84.849458 \n",
       "L 95.492853 84.430096 \n",
       "L 95.841307 84.011087 \n",
       "L 96.189296 83.593068 \n",
       "L 96.53681 83.176703 \n",
       "L 96.883838 82.762682 \n",
       "L 97.230369 82.351709 \n",
       "L 97.576389 81.944495 \n",
       "L 97.921885 81.541749 \n",
       "L 98.266844 81.144169 \n",
       "L 98.61125 80.75243 \n",
       "L 98.95509 80.367179 \n",
       "L 99.298349 79.989021 \n",
       "L 99.641012 79.618515 \n",
       "L 99.983065 79.256157 \n",
       "L 100.324497 78.902383 \n",
       "L 100.665294 78.557555 \n",
       "L 101.005445 78.221958 \n",
       "L 101.34494 77.895794 \n",
       "L 101.683772 77.57918 \n",
       "L 102.021933 77.272147 \n",
       "L 102.359419 76.974636 \n",
       "L 102.696226 76.686502 \n",
       "L 103.032353 76.407515 \n",
       "L 103.367802 76.137366 \n",
       "L 103.702574 75.875667 \n",
       "L 104.036674 75.621962 \n",
       "L 104.370109 75.375732 \n",
       "L 104.702887 75.136403 \n",
       "L 105.035018 74.903353 \n",
       "L 105.366513 74.675924 \n",
       "L 105.697385 74.453433 \n",
       "L 106.027647 74.235173 \n",
       "L 106.357314 74.020433 \n",
       "L 106.686402 73.8085 \n",
       "L 107.014927 73.598673 \n",
       "L 107.342904 73.390266 \n",
       "L 107.67035 73.182621 \n",
       "L 107.997282 72.975111 \n",
       "L 108.323714 72.767146 \n",
       "L 108.649663 72.558183 \n",
       "L 108.975143 72.347723 \n",
       "L 109.300168 72.135319 \n",
       "L 109.624751 71.920578 \n",
       "L 109.948905 71.703157 \n",
       "L 110.272638 71.482772 \n",
       "L 110.595964 71.259187 \n",
       "L 110.918888 71.032224 \n",
       "L 111.241418 70.80175 \n",
       "L 111.563563 70.56768 \n",
       "L 111.885325 70.329978 \n",
       "L 112.206709 70.088642 \n",
       "L 112.527719 69.84371 \n",
       "L 112.848356 69.595254 \n",
       "L 113.16862 69.343372 \n",
       "L 113.488515 69.088188 \n",
       "L 113.808036 68.829848 \n",
       "L 114.127185 68.568511 \n",
       "L 114.445959 68.30435 \n",
       "L 114.764357 68.037548 \n",
       "L 115.082376 67.768295 \n",
       "L 115.400013 67.496782 \n",
       "L 115.717266 67.223199 \n",
       "L 116.034131 66.947738 \n",
       "L 116.350605 66.670584 \n",
       "L 116.666686 66.391916 \n",
       "L 116.982369 66.111908 \n",
       "L 117.297653 65.830725 \n",
       "L 117.612534 65.54852 \n",
       "L 117.927009 65.265442 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 90.55483 98.616234 \n",
       "L 90.915011 98.273592 \n",
       "L 91.274655 97.93107 \n",
       "L 91.633762 97.588622 \n",
       "L 91.992334 97.2462 \n",
       "L 92.350376 96.903753 \n",
       "L 92.707887 96.561227 \n",
       "L 93.064871 96.218568 \n",
       "L 93.421331 95.875717 \n",
       "L 93.777268 95.532618 \n",
       "L 94.132686 95.189212 \n",
       "L 94.487588 94.845439 \n",
       "L 94.841975 94.501246 \n",
       "L 95.19585 94.156575 \n",
       "L 95.549217 93.811376 \n",
       "L 95.90208 93.4656 \n",
       "L 96.254438 93.119207 \n",
       "L 96.606295 92.772158 \n",
       "L 96.957655 92.424426 \n",
       "L 97.308519 92.075993 \n",
       "L 97.65889 91.726849 \n",
       "L 98.00877 91.376995 \n",
       "L 98.35816 91.026446 \n",
       "L 98.707062 90.675231 \n",
       "L 99.055479 90.323391 \n",
       "L 99.403409 89.970984 \n",
       "L 99.750855 89.618082 \n",
       "L 100.097816 89.264774 \n",
       "L 100.444292 88.911165 \n",
       "L 100.790283 88.557375 \n",
       "L 101.135788 88.203541 \n",
       "L 101.480805 87.849813 \n",
       "L 101.825332 87.496356 \n",
       "L 102.169367 87.143345 \n",
       "L 102.512908 86.790968 \n",
       "L 102.855951 86.439424 \n",
       "L 103.198493 86.088913 \n",
       "L 103.54053 85.739644 \n",
       "L 103.882057 85.391827 \n",
       "L 104.223072 85.045671 \n",
       "L 104.563568 84.701381 \n",
       "L 104.903543 84.359156 \n",
       "L 105.242991 84.019187 \n",
       "L 105.581908 83.681651 \n",
       "L 105.920289 83.346713 \n",
       "L 106.258132 83.014519 \n",
       "L 106.595431 82.685197 \n",
       "L 106.932184 82.358853 \n",
       "L 107.268387 82.03557 \n",
       "L 107.604039 81.715406 \n",
       "L 107.939137 81.398398 \n",
       "L 108.27368 81.084551 \n",
       "L 108.607668 80.773849 \n",
       "L 108.9411 80.466247 \n",
       "L 109.273978 80.161678 \n",
       "L 109.606303 79.860049 \n",
       "L 109.938076 79.561245 \n",
       "L 110.269301 79.26513 \n",
       "L 110.599982 78.971552 \n",
       "L 110.930121 78.680338 \n",
       "L 111.259724 78.391306 \n",
       "L 111.588796 78.10426 \n",
       "L 111.917342 77.818996 \n",
       "L 112.245369 77.535306 \n",
       "L 112.572881 77.252979 \n",
       "L 112.899887 76.971802 \n",
       "L 113.226391 76.691567 \n",
       "L 113.5524 76.412072 \n",
       "L 113.877922 76.133119 \n",
       "L 114.202962 75.854522 \n",
       "L 114.527527 75.576107 \n",
       "L 114.851623 75.29771 \n",
       "L 115.175255 75.019184 \n",
       "L 115.49843 74.740394 \n",
       "L 115.821151 74.461224 \n",
       "L 116.143425 74.181571 \n",
       "L 116.465255 73.901349 \n",
       "L 116.786645 73.620487 \n",
       "L 117.107599 73.338933 \n",
       "L 117.428119 73.056645 \n",
       "L 117.74821 72.773597 \n",
       "L 118.067872 72.489778 \n",
       "L 118.387107 72.205187 \n",
       "L 118.705919 71.919832 \n",
       "L 119.024306 71.633736 \n",
       "L 119.34227 71.346926 \n",
       "L 119.659812 71.059439 \n",
       "L 119.976932 70.771316 \n",
       "L 120.29363 70.482605 \n",
       "L 120.609907 70.193356 \n",
       "L 120.925762 69.903622 \n",
       "L 121.241194 69.613459 \n",
       "L 121.556203 69.322924 \n",
       "L 121.870789 69.032071 \n",
       "L 122.184951 68.740958 \n",
       "L 122.498689 68.449638 \n",
       "L 122.812003 68.158164 \n",
       "L 123.12489 67.866588 \n",
       "L 123.437351 67.574956 \n",
       "L 123.749388 67.283315 \n",
       "L 124.060996 66.991708 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 28.470214 79.828939 \n",
       "L 29.065397 80.011607 \n",
       "L 29.661088 80.194693 \n",
       "L 30.257284 80.378214 \n",
       "L 30.853989 80.562189 \n",
       "L 31.451205 80.746634 \n",
       "L 32.04893 80.931563 \n",
       "L 32.647164 81.116988 \n",
       "L 33.245911 81.302919 \n",
       "L 33.845168 81.48936 \n",
       "L 34.444936 81.676314 \n",
       "L 35.045217 81.863777 \n",
       "L 35.646007 82.05174 \n",
       "L 36.247308 82.240189 \n",
       "L 36.84912 82.429104 \n",
       "L 37.451443 82.618455 \n",
       "L 38.054273 82.808209 \n",
       "L 38.657611 82.998321 \n",
       "L 39.261458 83.188743 \n",
       "L 39.865807 83.379416 \n",
       "L 40.470661 83.570274 \n",
       "L 41.076019 83.761244 \n",
       "L 41.681876 83.952247 \n",
       "L 42.288232 84.143196 \n",
       "L 42.895088 84.334 \n",
       "L 43.502438 84.524564 \n",
       "L 44.110284 84.714789 \n",
       "L 44.718623 84.904574 \n",
       "L 45.327456 85.09382 \n",
       "L 45.93678 85.282427 \n",
       "L 46.546595 85.470299 \n",
       "L 47.156902 85.657346 \n",
       "L 47.767699 85.843484 \n",
       "L 48.378989 86.028639 \n",
       "L 48.990772 86.212746 \n",
       "L 49.603048 86.395753 \n",
       "L 50.21582 86.577621 \n",
       "L 50.829089 86.758326 \n",
       "L 51.442859 86.937863 \n",
       "L 52.057131 87.116239 \n",
       "L 52.671909 87.293483 \n",
       "L 53.287197 87.46964 \n",
       "L 53.902998 87.644771 \n",
       "L 54.519316 87.818958 \n",
       "L 55.136154 87.992296 \n",
       "L 55.753518 88.164897 \n",
       "L 56.37141 88.336885 \n",
       "L 56.989836 88.508399 \n",
       "L 57.608798 88.679586 \n",
       "L 58.228301 88.8506 \n",
       "L 58.848348 89.021602 \n",
       "L 59.468943 89.192755 \n",
       "L 60.090088 89.364222 \n",
       "L 60.711785 89.536164 \n",
       "L 61.334038 89.708738 \n",
       "L 61.956848 89.882091 \n",
       "L 62.580216 90.056363 \n",
       "L 63.204143 90.231681 \n",
       "L 63.82863 90.408158 \n",
       "L 64.453677 90.585893 \n",
       "L 65.079284 90.764969 \n",
       "L 65.70545 90.94545 \n",
       "L 66.332175 91.127384 \n",
       "L 66.959458 91.3108 \n",
       "L 67.587297 91.495712 \n",
       "L 68.215692 91.682114 \n",
       "L 68.844639 91.869984 \n",
       "L 69.47414 92.059285 \n",
       "L 70.104192 92.249968 \n",
       "L 70.734792 92.441969 \n",
       "L 71.365941 92.635214 \n",
       "L 71.997635 92.829621 \n",
       "L 72.629877 93.025098 \n",
       "L 73.262663 93.221552 \n",
       "L 73.895992 93.418882 \n",
       "L 74.529865 93.616988 \n",
       "L 75.16428 93.815768 \n",
       "L 75.79924 94.015126 \n",
       "L 76.434741 94.214962 \n",
       "L 77.070785 94.415185 \n",
       "L 77.707374 94.615708 \n",
       "L 78.344505 94.81645 \n",
       "L 78.982181 95.017337 \n",
       "L 79.620405 95.218301 \n",
       "L 80.259173 95.419284 \n",
       "L 80.89849 95.620233 \n",
       "L 81.538357 95.821106 \n",
       "L 82.178772 96.021865 \n",
       "L 82.819739 96.222482 \n",
       "L 83.461259 96.422935 \n",
       "L 84.103334 96.623209 \n",
       "L 84.745964 96.823293 \n",
       "L 85.389149 97.023185 \n",
       "L 86.032895 97.222886 \n",
       "L 86.677198 97.422399 \n",
       "L 87.322062 97.621735 \n",
       "L 87.967489 97.820905 \n",
       "L 88.613477 98.019922 \n",
       "L 89.260029 98.218805 \n",
       "L 89.907148 98.417569 \n",
       "L 90.55483 98.616234 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 32.347334 76.777719 \n",
       "L 32.940066 76.965117 \n",
       "L 33.533322 77.153782 \n",
       "L 34.1271 77.343789 \n",
       "L 34.721404 77.535213 \n",
       "L 35.316235 77.728121 \n",
       "L 35.911592 77.922573 \n",
       "L 36.507477 78.118618 \n",
       "L 37.10389 78.316294 \n",
       "L 37.700827 78.515624 \n",
       "L 38.29829 78.716613 \n",
       "L 38.896277 78.919247 \n",
       "L 39.494783 79.123488 \n",
       "L 40.093806 79.329275 \n",
       "L 40.693342 79.53652 \n",
       "L 41.293388 79.745105 \n",
       "L 41.893937 79.954881 \n",
       "L 42.494982 80.165668 \n",
       "L 43.096521 80.377256 \n",
       "L 43.698542 80.589397 \n",
       "L 44.301041 80.801818 \n",
       "L 44.904012 81.01421 \n",
       "L 45.507443 81.226237 \n",
       "L 46.111329 81.437538 \n",
       "L 46.715665 81.647731 \n",
       "L 47.320439 81.856411 \n",
       "L 47.925648 82.063167 \n",
       "L 48.531284 82.267575 \n",
       "L 49.137344 82.469214 \n",
       "L 49.743823 82.667669 \n",
       "L 50.350716 82.862536 \n",
       "L 50.958025 83.053437 \n",
       "L 51.565745 83.240018 \n",
       "L 52.17388 83.421965 \n",
       "L 52.782432 83.599008 \n",
       "L 53.391403 83.770926 \n",
       "L 54.0008 83.937556 \n",
       "L 54.61063 84.098801 \n",
       "L 55.2209 84.254627 \n",
       "L 55.831619 84.405074 \n",
       "L 56.442799 84.550256 \n",
       "L 57.05445 84.69036 \n",
       "L 57.666587 84.825648 \n",
       "L 58.27922 84.956453 \n",
       "L 58.892363 85.083178 \n",
       "L 59.506031 85.206289 \n",
       "L 60.120235 85.326312 \n",
       "L 60.734989 85.44382 \n",
       "L 61.350306 85.559431 \n",
       "L 61.966196 85.673795 \n",
       "L 62.582671 85.787584 \n",
       "L 63.199739 85.901483 \n",
       "L 63.817409 86.016176 \n",
       "L 64.435687 86.132341 \n",
       "L 65.054579 86.250631 \n",
       "L 65.674087 86.37167 \n",
       "L 66.294215 86.496044 \n",
       "L 66.914961 86.624285 \n",
       "L 67.536325 86.756871 \n",
       "L 68.158305 86.894218 \n",
       "L 68.780897 87.036671 \n",
       "L 69.404095 87.184505 \n",
       "L 70.027894 87.337919 \n",
       "L 70.652287 87.497037 \n",
       "L 71.277268 87.661912 \n",
       "L 71.902828 87.832522 \n",
       "L 72.528958 88.008775 \n",
       "L 73.155653 88.190518 \n",
       "L 73.782903 88.377538 \n",
       "L 74.4107 88.569567 \n",
       "L 75.039039 88.766296 \n",
       "L 75.667912 88.967374 \n",
       "L 76.297314 89.172423 \n",
       "L 76.92724 89.381038 \n",
       "L 77.557684 89.592804 \n",
       "L 78.188645 89.807296 \n",
       "L 78.820119 90.024089 \n",
       "L 79.452106 90.242765 \n",
       "L 80.084602 90.462917 \n",
       "L 80.717608 90.684157 \n",
       "L 81.351127 90.906118 \n",
       "L 81.985156 91.128457 \n",
       "L 82.619699 91.350864 \n",
       "L 83.25476 91.573056 \n",
       "L 83.890338 91.794781 \n",
       "L 84.526437 92.015823 \n",
       "L 85.163063 92.235999 \n",
       "L 85.800215 92.455153 \n",
       "L 86.437898 92.673165 \n",
       "L 87.076116 92.889942 \n",
       "L 87.714875 93.105419 \n",
       "L 88.354173 93.319555 \n",
       "L 88.994015 93.532335 \n",
       "L 89.634408 93.743761 \n",
       "L 90.275348 93.953854 \n",
       "L 90.916842 94.16265 \n",
       "L 91.558893 94.370199 \n",
       "L 92.2015 94.57656 \n",
       "L 92.844666 94.781799 \n",
       "L 93.488396 94.985991 \n",
       "L 94.132686 95.189212 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 36.171416 73.854136 \n",
       "L 36.762021 74.058688 \n",
       "L 37.353194 74.266794 \n",
       "L 37.944935 74.478688 \n",
       "L 38.537247 74.694593 \n",
       "L 39.130134 74.914713 \n",
       "L 39.723593 75.13923 \n",
       "L 40.317624 75.368293 \n",
       "L 40.912227 75.602019 \n",
       "L 41.507393 75.840472 \n",
       "L 42.103121 76.08367 \n",
       "L 42.699404 76.331566 \n",
       "L 43.296229 76.584046 \n",
       "L 43.893589 76.84092 \n",
       "L 44.49147 77.101918 \n",
       "L 45.08986 77.366679 \n",
       "L 45.68874 77.63475 \n",
       "L 46.288094 77.905583 \n",
       "L 46.887907 78.17853 \n",
       "L 47.488153 78.452844 \n",
       "L 48.088815 78.727683 \n",
       "L 48.689874 79.002113 \n",
       "L 49.291305 79.275109 \n",
       "L 49.893088 79.545572 \n",
       "L 50.495206 79.812335 \n",
       "L 51.097635 80.074175 \n",
       "L 51.700362 80.329832 \n",
       "L 52.303368 80.578024 \n",
       "L 52.906642 80.81747 \n",
       "L 53.510173 81.046904 \n",
       "L 54.113954 81.265106 \n",
       "L 54.717982 81.470918 \n",
       "L 55.322255 81.663271 \n",
       "L 55.92678 81.841206 \n",
       "L 56.531563 82.003899 \n",
       "L 57.136616 82.150681 \n",
       "L 57.741957 82.281053 \n",
       "L 58.347605 82.394711 \n",
       "L 58.953582 82.491556 \n",
       "L 59.559917 82.571701 \n",
       "L 60.166638 82.635487 \n",
       "L 60.773778 82.683476 \n",
       "L 61.38137 82.716459 \n",
       "L 61.989448 82.735444 \n",
       "L 62.598048 82.741651 \n",
       "L 63.207205 82.736492 \n",
       "L 63.816953 82.721559 \n",
       "L 64.427326 82.698598 \n",
       "L 65.038352 82.669484 \n",
       "L 65.650061 82.636195 \n",
       "L 66.262477 82.600778 \n",
       "L 66.875622 82.565318 \n",
       "L 67.489511 82.531908 \n",
       "L 68.104158 82.50261 \n",
       "L 68.719571 82.479425 \n",
       "L 69.335755 82.464264 \n",
       "L 69.952708 82.458913 \n",
       "L 70.570425 82.465011 \n",
       "L 71.188898 82.484023 \n",
       "L 71.808115 82.517222 \n",
       "L 72.428059 82.565672 \n",
       "L 73.048711 82.630217 \n",
       "L 73.670051 82.711475 \n",
       "L 74.292055 82.809831 \n",
       "L 74.914701 82.925445 \n",
       "L 75.537963 83.058255 \n",
       "L 76.161816 83.207987 \n",
       "L 76.786238 83.37417 \n",
       "L 77.411204 83.556152 \n",
       "L 78.036691 83.75312 \n",
       "L 78.662681 83.964121 \n",
       "L 79.289154 84.188084 \n",
       "L 79.916097 84.423847 \n",
       "L 80.543495 84.670178 \n",
       "L 81.171337 84.925798 \n",
       "L 81.799615 85.189409 \n",
       "L 82.428323 85.459709 \n",
       "L 83.057461 85.735417 \n",
       "L 83.687024 86.01529 \n",
       "L 84.317015 86.298137 \n",
       "L 84.94744 86.582839 \n",
       "L 85.578299 86.868348 \n",
       "L 86.209602 87.153712 \n",
       "L 86.841358 87.438067 \n",
       "L 87.473572 87.720649 \n",
       "L 88.106255 88.000795 \n",
       "L 88.739418 88.27794 \n",
       "L 89.373069 88.55162 \n",
       "L 90.007218 88.821461 \n",
       "L 90.641875 89.087182 \n",
       "L 91.277052 89.348586 \n",
       "L 91.912754 89.60555 \n",
       "L 92.54899 89.858022 \n",
       "L 93.185771 90.106016 \n",
       "L 93.823099 90.349593 \n",
       "L 94.460982 90.588865 \n",
       "L 95.099427 90.823983 \n",
       "L 95.738436 91.055126 \n",
       "L 96.378014 91.282501 \n",
       "L 97.018166 91.50633 \n",
       "L 97.65889 91.726849 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 39.943581 71.080943 \n",
       "L 40.532362 71.318578 \n",
       "L 41.121778 71.5639 \n",
       "L 41.711832 71.817424 \n",
       "L 42.302528 72.079641 \n",
       "L 42.893867 72.351002 \n",
       "L 43.485846 72.631904 \n",
       "L 44.078462 72.922681 \n",
       "L 44.67171 73.223578 \n",
       "L 45.265577 73.534743 \n",
       "L 45.860051 73.856206 \n",
       "L 46.455119 74.187861 \n",
       "L 47.050757 74.529452 \n",
       "L 47.646944 74.880555 \n",
       "L 48.243653 75.240566 \n",
       "L 48.840857 75.608684 \n",
       "L 49.43852 75.983903 \n",
       "L 50.036607 76.365008 \n",
       "L 50.635085 76.750566 \n",
       "L 51.233908 77.138922 \n",
       "L 51.83304 77.528218 \n",
       "L 52.432441 77.916386 \n",
       "L 53.032067 78.301168 \n",
       "L 53.631879 78.680139 \n",
       "L 54.231843 79.050723 \n",
       "L 54.83192 79.41023 \n",
       "L 55.432081 79.755884 \n",
       "L 56.032298 80.084862 \n",
       "L 56.632552 80.394344 \n",
       "L 57.232826 80.681549 \n",
       "L 57.83311 80.943787 \n",
       "L 58.433406 81.178513 \n",
       "L 59.033717 81.383374 \n",
       "L 59.63406 81.556256 \n",
       "L 60.234456 81.695343 \n",
       "L 60.834934 81.799152 \n",
       "L 61.435532 81.866582 \n",
       "L 62.036296 81.896948 \n",
       "L 62.637276 81.890015 \n",
       "L 63.238528 81.846021 \n",
       "L 63.840116 81.765689 \n",
       "L 64.442103 81.650243 \n",
       "L 65.044559 81.501396 \n",
       "L 65.647552 81.321351 \n",
       "L 66.25115 81.11277 \n",
       "L 66.855421 80.878749 \n",
       "L 67.46043 80.622778 \n",
       "L 68.066236 80.348697 \n",
       "L 68.672894 80.060632 \n",
       "L 69.280453 79.762944 \n",
       "L 69.888954 79.460157 \n",
       "L 70.498429 79.156885 \n",
       "L 71.108902 78.857762 \n",
       "L 71.720387 78.567369 \n",
       "L 72.332891 78.290157 \n",
       "L 72.946409 78.030378 \n",
       "L 73.560927 77.792021 \n",
       "L 74.176426 77.578747 \n",
       "L 74.792874 77.393836 \n",
       "L 75.410237 77.240143 \n",
       "L 76.02847 77.120063 \n",
       "L 76.647528 77.035495 \n",
       "L 77.267359 76.987836 \n",
       "L 77.887909 76.977968 \n",
       "L 78.509126 77.006264 \n",
       "L 79.130952 77.0726 \n",
       "L 79.753334 77.176379 \n",
       "L 80.376223 77.31656 \n",
       "L 80.999569 77.491695 \n",
       "L 81.623327 77.699977 \n",
       "L 82.247461 77.93928 \n",
       "L 82.871933 78.207222 \n",
       "L 83.496718 78.501209 \n",
       "L 84.121792 78.818492 \n",
       "L 84.747138 79.156221 \n",
       "L 85.372747 79.511499 \n",
       "L 85.998612 79.881425 \n",
       "L 86.624737 80.263143 \n",
       "L 87.251124 80.653886 \n",
       "L 87.877784 81.051004 \n",
       "L 88.504733 81.452 \n",
       "L 89.131985 81.854554 \n",
       "L 89.75956 82.256541 \n",
       "L 90.387482 82.656051 \n",
       "L 91.015771 83.051385 \n",
       "L 91.644453 83.441073 \n",
       "L 92.273553 83.823869 \n",
       "L 92.903092 84.198739 \n",
       "L 93.533095 84.564863 \n",
       "L 94.163585 84.92162 \n",
       "L 94.794583 85.268576 \n",
       "L 95.426106 85.605463 \n",
       "L 96.058173 85.932172 \n",
       "L 96.690802 86.248731 \n",
       "L 97.324003 86.555285 \n",
       "L 97.957789 86.852084 \n",
       "L 98.592173 87.139461 \n",
       "L 99.227158 87.41782 \n",
       "L 99.862752 87.687617 \n",
       "L 100.498962 87.949351 \n",
       "L 101.135788 88.203541 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 43.66193 68.376274 \n",
       "L 44.248781 68.650894 \n",
       "L 44.836319 68.937777 \n",
       "L 45.424546 69.237745 \n",
       "L 46.013466 69.551586 \n",
       "L 46.603078 69.880021 \n",
       "L 47.193375 70.223686 \n",
       "L 47.784351 70.583107 \n",
       "L 48.375994 70.95868 \n",
       "L 48.968284 71.35063 \n",
       "L 49.561203 71.759001 \n",
       "L 50.154726 72.183619 \n",
       "L 50.748819 72.62406 \n",
       "L 51.343448 73.07964 \n",
       "L 51.938574 73.549379 \n",
       "L 52.534154 74.031987 \n",
       "L 53.130137 74.52584 \n",
       "L 53.726473 75.028983 \n",
       "L 54.323111 75.539111 \n",
       "L 54.919992 76.05357 \n",
       "L 55.51706 76.569375 \n",
       "L 56.114263 77.08321 \n",
       "L 56.71154 77.591459 \n",
       "L 57.308843 78.090239 \n",
       "L 57.906124 78.575432 \n",
       "L 58.503335 79.042731 \n",
       "L 59.100443 79.487702 \n",
       "L 59.697416 79.905841 \n",
       "L 60.294234 80.292637 \n",
       "L 60.890884 80.643653 \n",
       "L 61.487364 80.954598 \n",
       "L 62.083683 81.221405 \n",
       "L 62.679862 81.440314 \n",
       "L 63.275932 81.607949 \n",
       "L 63.871936 81.721401 \n",
       "L 64.467927 81.778287 \n",
       "L 65.063971 81.776837 \n",
       "L 65.660141 81.715935 \n",
       "L 66.256518 81.59518 \n",
       "L 66.853191 81.414919 \n",
       "L 67.450256 81.176275 \n",
       "L 68.047809 80.881165 \n",
       "L 68.645952 80.53229 \n",
       "L 69.244781 80.133129 \n",
       "L 69.844397 79.687902 \n",
       "L 70.444891 79.201528 \n",
       "L 71.046349 78.679561 \n",
       "L 71.648852 78.12812 \n",
       "L 72.252466 77.553803 \n",
       "L 72.857251 76.963587 \n",
       "L 73.463251 76.364725 \n",
       "L 74.070497 75.764631 \n",
       "L 74.679007 75.170764 \n",
       "L 75.288785 74.590508 \n",
       "L 75.899817 74.031055 \n",
       "L 76.51208 73.499286 \n",
       "L 77.125534 73.001667 \n",
       "L 77.740128 72.544144 \n",
       "L 78.355801 72.132058 \n",
       "L 78.972482 71.770066 \n",
       "L 79.59009 71.462078 \n",
       "L 80.208541 71.211212 \n",
       "L 80.827748 71.019769 \n",
       "L 81.447619 70.889211 \n",
       "L 82.068066 70.820175 \n",
       "L 82.689 70.812488 \n",
       "L 83.310337 70.865203 \n",
       "L 83.931999 70.976654 \n",
       "L 84.553916 71.144505 \n",
       "L 85.176023 71.365837 \n",
       "L 85.798268 71.637212 \n",
       "L 86.420605 71.954769 \n",
       "L 87.043001 72.314303 \n",
       "L 87.665433 72.711363 \n",
       "L 88.287885 73.14133 \n",
       "L 88.910355 73.599507 \n",
       "L 89.532847 74.081195 \n",
       "L 90.155376 74.581775 \n",
       "L 90.77796 75.096762 \n",
       "L 91.400628 75.621873 \n",
       "L 92.023415 76.153074 \n",
       "L 92.646356 76.686616 \n",
       "L 93.269493 77.219072 \n",
       "L 93.89287 77.747357 \n",
       "L 94.516529 78.26874 \n",
       "L 95.140515 78.780853 \n",
       "L 95.764875 79.281693 \n",
       "L 96.389647 79.7696 \n",
       "L 97.014874 80.24326 \n",
       "L 97.640594 80.701681 \n",
       "L 98.266844 81.144169 \n",
       "L 98.893651 81.570302 \n",
       "L 99.521046 81.979911 \n",
       "L 100.149055 82.373047 \n",
       "L 100.777695 82.74995 \n",
       "L 101.406986 83.111027 \n",
       "L 102.036942 83.456822 \n",
       "L 102.667572 83.787985 \n",
       "L 103.298883 84.105258 \n",
       "L 103.930882 84.409442 \n",
       "L 104.563568 84.701381 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 47.323363 65.565456 \n",
       "L 47.907643 65.855189 \n",
       "L 48.4926 66.15921 \n",
       "L 49.078233 66.478482 \n",
       "L 49.664543 66.813919 \n",
       "L 50.251528 67.166364 \n",
       "L 50.839176 67.536554 \n",
       "L 51.427479 67.925105 \n",
       "L 52.016422 68.332472 \n",
       "L 52.605982 68.758919 \n",
       "L 53.196135 69.20449 \n",
       "L 53.786853 69.668982 \n",
       "L 54.3781 70.151893 \n",
       "L 54.969837 70.652423 \n",
       "L 55.562021 71.169425 \n",
       "L 56.154608 71.701387 \n",
       "L 56.747544 72.246414 \n",
       "L 57.340776 72.80222 \n",
       "L 57.934252 73.366114 \n",
       "L 58.527912 73.934999 \n",
       "L 59.121703 74.505389 \n",
       "L 59.715571 75.073421 \n",
       "L 60.309462 75.634877 \n",
       "L 60.903329 76.185229 \n",
       "L 61.49713 76.719681 \n",
       "L 62.090827 77.233218 \n",
       "L 62.684391 77.720672 \n",
       "L 63.277802 78.176799 \n",
       "L 63.871051 78.596349 \n",
       "L 64.464137 78.974156 \n",
       "L 65.057072 79.305222 \n",
       "L 65.649879 79.584816 \n",
       "L 66.242593 79.808558 \n",
       "L 66.835264 79.972517 \n",
       "L 67.427949 80.073297 \n",
       "L 68.020716 80.108127 \n",
       "L 68.613649 80.07493 \n",
       "L 69.206834 79.9724 \n",
       "L 69.800368 79.800054 \n",
       "L 70.394352 79.558282 \n",
       "L 70.988892 79.248376 \n",
       "L 71.584095 78.872547 \n",
       "L 72.180068 78.433923 \n",
       "L 72.776915 77.936534 \n",
       "L 73.374735 77.385279 \n",
       "L 73.97362 76.785869 \n",
       "L 74.573653 76.144762 \n",
       "L 75.174904 75.469079 \n",
       "L 75.777433 74.7665 \n",
       "L 76.381284 74.045159 \n",
       "L 76.986486 73.313514 \n",
       "L 77.593053 72.580219 \n",
       "L 78.200979 71.853991 \n",
       "L 78.810245 71.14346 \n",
       "L 79.420815 70.457042 \n",
       "L 80.032637 69.802797 \n",
       "L 80.645645 69.188302 \n",
       "L 81.259761 68.620532 \n",
       "L 81.874896 68.105756 \n",
       "L 82.490952 67.649446 \n",
       "L 83.107824 67.256203 \n",
       "L 83.725403 66.929698 \n",
       "L 84.343579 66.672644 \n",
       "L 84.962243 66.486775 \n",
       "L 85.581288 66.372851 \n",
       "L 86.200612 66.330687 \n",
       "L 86.82012 66.359183 \n",
       "L 87.439727 66.456392 \n",
       "L 88.059358 66.61959 \n",
       "L 88.678947 66.845356 \n",
       "L 89.298445 67.129667 \n",
       "L 89.917811 67.467997 \n",
       "L 90.53702 67.855422 \n",
       "L 91.156059 68.286724 \n",
       "L 91.774925 68.756489 \n",
       "L 92.393631 69.259215 \n",
       "L 93.012195 69.7894 \n",
       "L 93.630651 70.341627 \n",
       "L 94.249035 70.910648 \n",
       "L 94.867393 71.491448 \n",
       "L 95.48578 72.079305 \n",
       "L 96.104248 72.669834 \n",
       "L 96.722856 73.259024 \n",
       "L 97.341666 73.843271 \n",
       "L 97.960735 74.419382 \n",
       "L 98.580124 74.984591 \n",
       "L 99.199892 75.536557 \n",
       "L 99.820091 76.073347 \n",
       "L 100.440773 76.593426 \n",
       "L 101.061985 77.095639 \n",
       "L 101.683772 77.57918 \n",
       "L 102.306168 78.043559 \n",
       "L 102.929209 78.488582 \n",
       "L 103.552924 78.914311 \n",
       "L 104.177333 79.321031 \n",
       "L 104.802455 79.709219 \n",
       "L 105.428308 80.079514 \n",
       "L 106.054897 80.43268 \n",
       "L 106.68223 80.769581 \n",
       "L 107.310311 81.091159 \n",
       "L 107.939137 81.398398 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 50.92835 62.55289 \n",
       "L 51.509376 62.821826 \n",
       "L 52.091009 63.102903 \n",
       "L 52.673246 63.396941 \n",
       "L 53.256085 63.704715 \n",
       "L 53.839523 64.026943 \n",
       "L 54.423549 64.364253 \n",
       "L 55.008153 64.717167 \n",
       "L 55.593323 65.086077 \n",
       "L 56.179038 65.471207 \n",
       "L 56.765279 65.8726 \n",
       "L 57.352023 66.290083 \n",
       "L 57.939239 66.723238 \n",
       "L 58.526898 67.171386 \n",
       "L 59.114967 67.633557 \n",
       "L 59.70341 68.108473 \n",
       "L 60.292187 68.594527 \n",
       "L 60.881259 69.08978 \n",
       "L 61.470589 69.59195 \n",
       "L 62.060132 70.098409 \n",
       "L 62.649853 70.606196 \n",
       "L 63.239714 71.11203 \n",
       "L 63.82968 71.612328 \n",
       "L 64.419722 72.103241 \n",
       "L 65.009815 72.58069 \n",
       "L 65.599938 73.040408 \n",
       "L 66.190081 73.478003 \n",
       "L 66.780236 73.88901 \n",
       "L 67.37041 74.268962 \n",
       "L 67.960613 74.613461 \n",
       "L 68.550866 74.918256 \n",
       "L 69.141202 75.179319 \n",
       "L 69.731659 75.392923 \n",
       "L 70.322287 75.555723 \n",
       "L 70.913145 75.664838 \n",
       "L 71.504296 75.717909 \n",
       "L 72.095815 75.713181 \n",
       "L 72.687779 75.64955 \n",
       "L 73.280269 75.526619 \n",
       "L 73.873372 75.344734 \n",
       "L 74.467174 75.10501 \n",
       "L 75.061759 74.809346 \n",
       "L 75.657212 74.460422 \n",
       "L 76.25361 74.061684 \n",
       "L 76.851025 73.617317 \n",
       "L 77.449523 73.132194 \n",
       "L 78.049157 72.611819 \n",
       "L 78.649972 72.062256 \n",
       "L 79.251998 71.490042 \n",
       "L 79.855255 70.902089 \n",
       "L 80.459747 70.305582 \n",
       "L 81.065465 69.707865 \n",
       "L 81.672385 69.116327 \n",
       "L 82.28047 68.53828 \n",
       "L 82.889671 67.980848 \n",
       "L 83.499925 67.450843 \n",
       "L 84.111158 66.95467 \n",
       "L 84.72329 66.498216 \n",
       "L 85.33623 66.086767 \n",
       "L 85.949884 65.724933 \n",
       "L 86.564153 65.416587 \n",
       "L 87.178938 65.164814 \n",
       "L 87.794139 64.971888 \n",
       "L 88.40966 64.83926 \n",
       "L 89.025411 64.767555 \n",
       "L 89.641307 64.756603 \n",
       "L 90.257269 64.805464 \n",
       "L 90.873232 64.912488 \n",
       "L 91.489138 65.075361 \n",
       "L 92.104941 65.291191 \n",
       "L 92.720608 65.556574 \n",
       "L 93.336115 65.867687 \n",
       "L 93.951453 66.220366 \n",
       "L 94.566622 66.610203 \n",
       "L 95.181634 67.032623 \n",
       "L 95.79651 67.482976 \n",
       "L 96.41128 67.95661 \n",
       "L 97.025984 68.448948 \n",
       "L 97.640665 68.955551 \n",
       "L 98.255372 69.472177 \n",
       "L 98.870164 69.994831 \n",
       "L 99.485093 70.5198 \n",
       "L 100.100218 71.04369 \n",
       "L 100.715602 71.563447 \n",
       "L 101.331298 72.076364 \n",
       "L 101.947365 72.580098 \n",
       "L 102.563857 73.072662 \n",
       "L 103.180823 73.552415 \n",
       "L 103.798311 74.018054 \n",
       "L 104.416362 74.468595 \n",
       "L 105.035018 74.903353 \n",
       "L 105.654307 75.321907 \n",
       "L 106.274261 75.724092 \n",
       "L 106.894903 76.109957 \n",
       "L 107.51625 76.479739 \n",
       "L 108.138319 76.833842 \n",
       "L 108.761121 77.172803 \n",
       "L 109.384659 77.497269 \n",
       "L 110.008939 77.807971 \n",
       "L 110.633963 78.105705 \n",
       "L 111.259724 78.391306 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 54.481753 59.437497 \n",
       "L 55.059354 59.664507 \n",
       "L 55.637482 59.899051 \n",
       "L 56.216133 60.141634 \n",
       "L 56.795306 60.392739 \n",
       "L 57.374998 60.652807 \n",
       "L 57.955202 60.92223 \n",
       "L 58.535909 61.201333 \n",
       "L 59.117115 61.490359 \n",
       "L 59.698804 61.789451 \n",
       "L 60.280965 62.09864 \n",
       "L 60.863585 62.417822 \n",
       "L 61.446646 62.746745 \n",
       "L 62.030131 63.084994 \n",
       "L 62.614021 63.431976 \n",
       "L 63.198298 63.786906 \n",
       "L 63.78294 64.148795 \n",
       "L 64.367925 64.516452 \n",
       "L 64.953236 64.88847 \n",
       "L 65.538849 65.263227 \n",
       "L 66.124747 65.638898 \n",
       "L 66.710915 66.013453 \n",
       "L 67.297334 66.384678 \n",
       "L 67.883994 66.75019 \n",
       "L 68.470888 67.107465 \n",
       "L 69.058009 67.453859 \n",
       "L 69.645359 67.78665 \n",
       "L 70.232939 68.103066 \n",
       "L 70.820763 68.40034 \n",
       "L 71.408844 68.675741 \n",
       "L 71.997201 68.926632 \n",
       "L 72.585862 69.150512 \n",
       "L 73.174857 69.345073 \n",
       "L 73.764223 69.508242 \n",
       "L 74.354 69.638234 \n",
       "L 74.944232 69.733596 \n",
       "L 75.534968 69.793246 \n",
       "L 76.126256 69.816516 \n",
       "L 76.718149 69.803174 \n",
       "L 77.310699 69.753455 \n",
       "L 77.903956 69.66807 \n",
       "L 78.497971 69.548221 \n",
       "L 79.092791 69.395593 \n",
       "L 79.688456 69.212347 \n",
       "L 80.285005 69.001096 \n",
       "L 80.882469 68.764883 \n",
       "L 81.480873 68.507132 \n",
       "L 82.080233 68.231611 \n",
       "L 82.680557 67.942372 \n",
       "L 83.281845 67.643694 \n",
       "L 83.884088 67.340015 \n",
       "L 84.487269 67.035864 \n",
       "L 85.09136 66.735787 \n",
       "L 85.696326 66.444277 \n",
       "L 86.302125 66.1657 \n",
       "L 86.908709 65.904229 \n",
       "L 87.516021 65.663773 \n",
       "L 88.124003 65.447922 \n",
       "L 88.732591 65.259895 \n",
       "L 89.34172 65.102489 \n",
       "L 89.951324 64.97805 \n",
       "L 90.561338 64.888443 \n",
       "L 91.171698 64.835034 \n",
       "L 91.782343 64.818687 \n",
       "L 92.393218 64.839768 \n",
       "L 93.004271 64.898153 \n",
       "L 93.615457 64.993257 \n",
       "L 94.226738 65.124056 \n",
       "L 94.838085 65.28913 \n",
       "L 95.449473 65.486707 \n",
       "L 96.060888 65.714702 \n",
       "L 96.672323 65.970777 \n",
       "L 97.283779 66.252388 \n",
       "L 97.895263 66.55684 \n",
       "L 98.506789 66.881336 \n",
       "L 99.11838 67.223036 \n",
       "L 99.73006 67.579095 \n",
       "L 100.341863 67.946711 \n",
       "L 100.953819 68.32317 \n",
       "L 101.565969 68.705873 \n",
       "L 102.178354 69.092371 \n",
       "L 102.791011 69.480388 \n",
       "L 103.403983 69.867841 \n",
       "L 104.017314 70.252853 \n",
       "L 104.631039 70.633761 \n",
       "L 105.2452 71.009121 \n",
       "L 105.859834 71.377711 \n",
       "L 106.474972 71.738517 \n",
       "L 107.090646 72.090734 \n",
       "L 107.706885 72.433752 \n",
       "L 108.323714 72.767146 \n",
       "L 108.941152 73.090654 \n",
       "L 109.559219 73.404167 \n",
       "L 110.17793 73.707713 \n",
       "L 110.797293 74.001433 \n",
       "L 111.41732 74.285574 \n",
       "L 112.038018 74.560462 \n",
       "L 112.659386 74.826493 \n",
       "L 113.281428 75.084115 \n",
       "L 113.904144 75.333816 \n",
       "L 114.527527 75.576107 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 57.988309 56.391445 \n",
       "L 58.562773 56.581055 \n",
       "L 59.137714 56.774106 \n",
       "L 59.713128 56.970826 \n",
       "L 60.289014 57.171431 \n",
       "L 60.865374 57.376121 \n",
       "L 61.4422 57.58507 \n",
       "L 62.019491 57.798426 \n",
       "L 62.597244 58.0163 \n",
       "L 63.175453 58.238756 \n",
       "L 63.754112 58.46581 \n",
       "L 64.333217 58.697418 \n",
       "L 64.912759 58.933467 \n",
       "L 65.492733 59.173775 \n",
       "L 66.073131 59.418077 \n",
       "L 66.653946 59.666024 \n",
       "L 67.235169 59.917175 \n",
       "L 67.816792 60.170996 \n",
       "L 68.398812 60.426858 \n",
       "L 68.981217 60.684036 \n",
       "L 69.564003 60.941711 \n",
       "L 70.147168 61.198974 \n",
       "L 70.730704 61.45483 \n",
       "L 71.31461 61.70821 \n",
       "L 71.898888 61.957979 \n",
       "L 72.483535 62.202949 \n",
       "L 73.068558 62.441895 \n",
       "L 73.653961 62.673571 \n",
       "L 74.239753 62.89673 \n",
       "L 74.825944 63.110145 \n",
       "L 75.412545 63.312626 \n",
       "L 75.999573 63.50305 \n",
       "L 76.587043 63.680377 \n",
       "L 77.174975 63.843676 \n",
       "L 77.76339 63.992144 \n",
       "L 78.352308 64.125132 \n",
       "L 78.941755 64.242156 \n",
       "L 79.531752 64.342921 \n",
       "L 80.122322 64.427329 \n",
       "L 80.71349 64.495493 \n",
       "L 81.305277 64.547742 \n",
       "L 81.897705 64.584626 \n",
       "L 82.490793 64.606912 \n",
       "L 83.084556 64.615582 \n",
       "L 83.679009 64.61182 \n",
       "L 84.274162 64.597001 \n",
       "L 84.870023 64.572672 \n",
       "L 85.466593 64.54053 \n",
       "L 86.063873 64.5024 \n",
       "L 86.661858 64.460201 \n",
       "L 87.260537 64.415925 \n",
       "L 87.859898 64.371598 \n",
       "L 88.459925 64.329253 \n",
       "L 89.060595 64.290894 \n",
       "L 89.661886 64.258467 \n",
       "L 90.263771 64.233826 \n",
       "L 90.866221 64.218708 \n",
       "L 91.469206 64.214705 \n",
       "L 92.072695 64.223239 \n",
       "L 92.676656 64.245547 \n",
       "L 93.281057 64.282663 \n",
       "L 93.885867 64.335405 \n",
       "L 94.491057 64.404373 \n",
       "L 95.096599 64.489941 \n",
       "L 95.70247 64.592265 \n",
       "L 96.308646 64.711283 \n",
       "L 96.915109 64.84673 \n",
       "L 97.521844 64.998145 \n",
       "L 98.128839 65.164897 \n",
       "L 98.736086 65.346195 \n",
       "L 99.343582 65.541112 \n",
       "L 99.951327 65.748608 \n",
       "L 100.559324 65.967555 \n",
       "L 101.167581 66.196754 \n",
       "L 101.776106 66.434964 \n",
       "L 102.384913 66.680923 \n",
       "L 102.994017 66.933365 \n",
       "L 103.603438 67.191048 \n",
       "L 104.21319 67.452762 \n",
       "L 104.823295 67.717351 \n",
       "L 105.433777 67.983726 \n",
       "L 106.044651 68.250871 \n",
       "L 106.655943 68.517859 \n",
       "L 107.267673 68.783853 \n",
       "L 107.87986 69.048108 \n",
       "L 108.492522 69.309981 \n",
       "L 109.105681 69.568924 \n",
       "L 109.719349 69.824484 \n",
       "L 110.333543 70.076298 \n",
       "L 110.948276 70.324094 \n",
       "L 111.563563 70.56768 \n",
       "L 112.179409 70.806937 \n",
       "L 112.795826 71.041814 \n",
       "L 113.412821 71.272324 \n",
       "L 114.030396 71.498527 \n",
       "L 114.648558 71.720531 \n",
       "L 115.267309 71.938484 \n",
       "L 115.88665 72.152558 \n",
       "L 116.50658 72.362955 \n",
       "L 117.127102 72.569893 \n",
       "L 117.74821 72.773597 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 61.449653 53.491099 \n",
       "L 62.021327 53.659298 \n",
       "L 62.593455 53.828698 \n",
       "L 63.166035 53.999374 \n",
       "L 63.739069 54.171396 \n",
       "L 64.312556 54.34483 \n",
       "L 64.886494 54.519733 \n",
       "L 65.460883 54.696151 \n",
       "L 66.035724 54.874124 \n",
       "L 66.611012 55.05367 \n",
       "L 67.186747 55.234795 \n",
       "L 67.762931 55.417488 \n",
       "L 68.339556 55.601709 \n",
       "L 68.916624 55.787401 \n",
       "L 69.494133 55.974479 \n",
       "L 70.072083 56.162828 \n",
       "L 70.650468 56.352307 \n",
       "L 71.229289 56.542741 \n",
       "L 71.808546 56.733928 \n",
       "L 72.388234 56.92563 \n",
       "L 72.968354 57.117582 \n",
       "L 73.548908 57.309489 \n",
       "L 74.129891 57.501026 \n",
       "L 74.711307 57.691846 \n",
       "L 75.293158 57.88158 \n",
       "L 75.875442 58.06984 \n",
       "L 76.458166 58.256229 \n",
       "L 77.041329 58.440338 \n",
       "L 77.624938 58.621764 \n",
       "L 78.208997 58.800105 \n",
       "L 78.793511 58.974974 \n",
       "L 79.378486 59.146005 \n",
       "L 79.963929 59.31286 \n",
       "L 80.549848 59.475235 \n",
       "L 81.13625 59.632869 \n",
       "L 81.723143 59.78555 \n",
       "L 82.310535 59.933123 \n",
       "L 82.898435 60.075493 \n",
       "L 83.48685 60.212627 \n",
       "L 84.075788 60.344565 \n",
       "L 84.665257 60.471416 \n",
       "L 85.255263 60.59336 \n",
       "L 85.845813 60.71065 \n",
       "L 86.43691 60.823605 \n",
       "L 87.028559 60.932615 \n",
       "L 87.620763 61.038129 \n",
       "L 88.213522 61.140651 \n",
       "L 88.806836 61.240735 \n",
       "L 89.400705 61.338975 \n",
       "L 89.995124 61.435996 \n",
       "L 90.59009 61.532447 \n",
       "L 91.185598 61.628985 \n",
       "L 91.781639 61.726271 \n",
       "L 92.378207 61.824955 \n",
       "L 92.975292 61.925666 \n",
       "L 93.572885 62.029007 \n",
       "L 94.170975 62.135538 \n",
       "L 94.769552 62.245774 \n",
       "L 95.368604 62.360175 \n",
       "L 95.968121 62.479139 \n",
       "L 96.568091 62.602999 \n",
       "L 97.168506 62.73202 \n",
       "L 97.769355 62.866393 \n",
       "L 98.370629 63.006238 \n",
       "L 98.972322 63.151604 \n",
       "L 99.574426 63.302471 \n",
       "L 100.176935 63.45875 \n",
       "L 100.779846 63.620294 \n",
       "L 101.383156 63.786897 \n",
       "L 101.986863 63.958303 \n",
       "L 102.590969 64.134211 \n",
       "L 103.195472 64.314287 \n",
       "L 103.800377 64.498163 \n",
       "L 104.405687 64.685453 \n",
       "L 105.011406 64.875755 \n",
       "L 105.617541 65.068661 \n",
       "L 106.224096 65.263762 \n",
       "L 106.831082 65.460655 \n",
       "L 107.438502 65.658949 \n",
       "L 108.046366 65.858269 \n",
       "L 108.654684 66.058263 \n",
       "L 109.263459 66.258602 \n",
       "L 109.872703 66.458985 \n",
       "L 110.482424 66.659141 \n",
       "L 111.092626 66.858827 \n",
       "L 111.703319 67.057837 \n",
       "L 112.314511 67.255991 \n",
       "L 112.926204 67.453143 \n",
       "L 113.538406 67.649174 \n",
       "L 114.151122 67.843997 \n",
       "L 114.764357 68.037548 \n",
       "L 115.378113 68.229789 \n",
       "L 115.992394 68.420703 \n",
       "L 116.607204 68.610294 \n",
       "L 117.222543 68.798581 \n",
       "L 117.838412 68.9856 \n",
       "L 118.454816 69.171399 \n",
       "L 119.071752 69.356032 \n",
       "L 119.689221 69.539566 \n",
       "L 120.307226 69.722072 \n",
       "L 120.925762 69.903622 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 64.865625 50.710108 \n",
       "L 65.434699 50.869096 \n",
       "L 66.00422 51.028461 \n",
       "L 66.574185 51.18822 \n",
       "L 67.144595 51.348389 \n",
       "L 67.715452 51.508986 \n",
       "L 68.286754 51.670021 \n",
       "L 68.858502 51.831508 \n",
       "L 69.430698 51.993456 \n",
       "L 70.003339 52.155868 \n",
       "L 70.576426 52.318747 \n",
       "L 71.149961 52.48209 \n",
       "L 71.723941 52.645888 \n",
       "L 72.298368 52.810126 \n",
       "L 72.873241 52.974787 \n",
       "L 73.448563 53.139842 \n",
       "L 74.02433 53.305258 \n",
       "L 74.600543 53.470995 \n",
       "L 75.177206 53.637004 \n",
       "L 75.754314 53.80323 \n",
       "L 76.33187 53.96961 \n",
       "L 76.909875 54.136075 \n",
       "L 77.488328 54.302548 \n",
       "L 78.067231 54.468947 \n",
       "L 78.646585 54.635186 \n",
       "L 79.22639 54.801173 \n",
       "L 79.806648 54.966814 \n",
       "L 80.387359 55.132013 \n",
       "L 80.968527 55.296675 \n",
       "L 81.550153 55.460705 \n",
       "L 82.132237 55.624011 \n",
       "L 82.714784 55.786508 \n",
       "L 83.297794 55.948115 \n",
       "L 83.881271 56.108762 \n",
       "L 84.465216 56.268386 \n",
       "L 85.049631 56.426938 \n",
       "L 85.634521 56.584382 \n",
       "L 86.219886 56.740694 \n",
       "L 86.805729 56.895868 \n",
       "L 87.392052 57.049913 \n",
       "L 87.978858 57.202855 \n",
       "L 88.566148 57.354737 \n",
       "L 89.153924 57.505619 \n",
       "L 89.742187 57.655576 \n",
       "L 90.330938 57.804701 \n",
       "L 90.920179 57.9531 \n",
       "L 91.509909 58.100892 \n",
       "L 92.100128 58.248209 \n",
       "L 92.690837 58.39519 \n",
       "L 93.282034 58.541983 \n",
       "L 93.873719 58.688742 \n",
       "L 94.46589 58.835621 \n",
       "L 95.058546 58.982776 \n",
       "L 95.651684 59.130361 \n",
       "L 96.245304 59.278524 \n",
       "L 96.839402 59.427407 \n",
       "L 97.433977 59.577143 \n",
       "L 98.029025 59.727852 \n",
       "L 98.624545 59.879643 \n",
       "L 99.220534 60.03261 \n",
       "L 99.81699 60.186831 \n",
       "L 100.41391 60.342368 \n",
       "L 101.011293 60.499266 \n",
       "L 101.609138 60.657555 \n",
       "L 102.207443 60.817244 \n",
       "L 102.806206 60.97833 \n",
       "L 103.405426 61.140791 \n",
       "L 104.005105 61.304594 \n",
       "L 104.605241 61.469689 \n",
       "L 105.205833 61.636016 \n",
       "L 105.806885 61.803505 \n",
       "L 106.408396 61.972077 \n",
       "L 107.010367 62.141646 \n",
       "L 107.612801 62.31212 \n",
       "L 108.215697 62.483405 \n",
       "L 108.81906 62.655406 \n",
       "L 109.42289 62.828025 \n",
       "L 110.027192 63.001169 \n",
       "L 110.631965 63.174745 \n",
       "L 111.237214 63.348665 \n",
       "L 111.842942 63.522846 \n",
       "L 112.449148 63.697211 \n",
       "L 113.055837 63.871688 \n",
       "L 113.663014 64.046215 \n",
       "L 114.270676 64.220735 \n",
       "L 114.878828 64.395197 \n",
       "L 115.487474 64.569561 \n",
       "L 116.096612 64.743792 \n",
       "L 116.706246 64.917862 \n",
       "L 117.316377 65.09175 \n",
       "L 117.927009 65.265442 \n",
       "L 118.53814 65.438929 \n",
       "L 119.149772 65.612207 \n",
       "L 119.761909 65.785277 \n",
       "L 120.374547 65.958143 \n",
       "L 120.98769 66.130814 \n",
       "L 121.60134 66.303301 \n",
       "L 122.215494 66.475618 \n",
       "L 122.830154 66.64778 \n",
       "L 123.445322 66.819804 \n",
       "L 124.060996 66.991708 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n",
       "   </g>\n",
       "   <g id=\"Line3DCollection_5\">\n",
       "    <path d=\"M 26.795775 36.141082 \n",
       "L 27.254862 37.279946 \n",
       "L 27.711181 38.385877 \n",
       "L 28.164774 39.459116 \n",
       "L 28.615685 40.499905 \n",
       "L 29.063962 41.508498 \n",
       "L 29.509643 42.485113 \n",
       "L 29.952772 43.429986 \n",
       "L 30.393394 44.343341 \n",
       "L 30.831546 45.22539 \n",
       "L 31.267271 46.076348 \n",
       "L 31.700609 46.896422 \n",
       "L 32.131598 47.685805 \n",
       "L 32.560278 48.444698 \n",
       "L 32.986688 49.173294 \n",
       "L 33.410866 49.871771 \n",
       "L 33.832848 50.540314 \n",
       "L 34.252671 51.179097 \n",
       "L 34.670373 51.788287 \n",
       "L 35.085988 52.368055 \n",
       "L 35.499552 52.918559 \n",
       "L 35.911101 53.439955 \n",
       "L 36.320668 53.932393 \n",
       "L 36.728288 54.396023 \n",
       "L 37.133995 54.830986 \n",
       "L 37.537821 55.23742 \n",
       "L 37.9398 55.615459 \n",
       "L 38.339963 55.965235 \n",
       "L 38.738344 56.286871 \n",
       "L 39.134973 56.580487 \n",
       "L 39.529882 56.846202 \n",
       "L 39.923102 57.08413 \n",
       "L 40.314662 57.294378 \n",
       "L 40.704595 57.477052 \n",
       "L 41.092929 57.632252 \n",
       "L 41.479694 57.760075 \n",
       "L 41.864919 57.860615 \n",
       "L 42.248634 57.933963 \n",
       "L 42.630866 57.980203 \n",
       "L 43.011644 57.999418 \n",
       "L 43.390996 57.991684 \n",
       "L 43.76895 57.957077 \n",
       "L 44.145534 57.89567 \n",
       "L 44.520773 57.807526 \n",
       "L 44.894697 57.692712 \n",
       "L 45.26733 57.551288 \n",
       "L 45.638699 57.38331 \n",
       "L 46.008832 57.188831 \n",
       "L 46.377753 56.967901 \n",
       "L 46.745488 56.720566 \n",
       "L 47.112063 56.44687 \n",
       "L 47.477503 56.146852 \n",
       "L 47.841833 55.820548 \n",
       "L 48.205078 55.46799 \n",
       "L 48.567263 55.089207 \n",
       "L 48.928412 54.684228 \n",
       "L 49.288549 54.253072 \n",
       "L 49.647698 53.795761 \n",
       "L 50.005884 53.312312 \n",
       "L 50.36313 52.802733 \n",
       "L 50.71946 52.26704 \n",
       "L 51.074896 51.705235 \n",
       "L 51.429463 51.117323 \n",
       "L 51.783183 50.503303 \n",
       "L 52.13608 49.863171 \n",
       "L 52.488176 49.196923 \n",
       "L 52.839493 48.50455 \n",
       "L 53.190055 47.786035 \n",
       "L 53.539884 47.041364 \n",
       "L 53.889001 46.270518 \n",
       "L 54.23743 45.473472 \n",
       "L 54.585191 44.650206 \n",
       "L 54.932309 43.800686 \n",
       "L 55.278803 42.92488 \n",
       "L 55.624696 42.022755 \n",
       "L 55.97001 41.094272 \n",
       "L 56.314766 40.139389 \n",
       "L 56.658986 39.15806 \n",
       "L 57.00269 38.150237 \n",
       "L 57.3459 37.115872 \n",
       "L 57.688639 36.054904 \n",
       "L 58.030926 34.96728 \n",
       "L 58.372783 33.852938 \n",
       "L 58.714231 32.711813 \n",
       "L 59.055291 31.543838 \n",
       "L 59.395983 30.348941 \n",
       "L 59.736331 29.127049 \n",
       "L 60.076352 27.878081 \n",
       "L 60.416069 26.601963 \n",
       "L 60.755502 25.298606 \n",
       "L 61.094674 23.967917 \n",
       "L 61.433602 22.609815 \n",
       "L 61.77231 21.224201 \n",
       "L 62.110817 19.810974 \n",
       "L 62.449144 18.370039 \n",
       "L 62.787312 16.901289 \n",
       "L 63.125343 15.404606 \n",
       "L 63.463255 13.879896 \n",
       "L 63.80107 12.327028 \n",
       "L 64.138809 10.745886 \n",
       "L 64.476493 9.13636 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 33.284013 47.183032 \n",
       "L 33.729897 48.298417 \n",
       "L 34.17321 49.381283 \n",
       "L 34.613994 50.431876 \n",
       "L 35.05229 51.450434 \n",
       "L 35.488142 52.437196 \n",
       "L 35.92159 53.392387 \n",
       "L 36.352674 54.316236 \n",
       "L 36.781436 55.20896 \n",
       "L 37.207913 56.070768 \n",
       "L 37.632145 56.901871 \n",
       "L 38.054173 57.702477 \n",
       "L 38.47403 58.47277 \n",
       "L 38.891755 59.212949 \n",
       "L 39.307386 59.923202 \n",
       "L 39.72096 60.60371 \n",
       "L 40.13251 61.254645 \n",
       "L 40.542072 61.876184 \n",
       "L 40.949684 62.468492 \n",
       "L 41.355376 63.031733 \n",
       "L 41.759185 63.566062 \n",
       "L 42.161144 64.071636 \n",
       "L 42.561285 64.548599 \n",
       "L 42.959641 64.997098 \n",
       "L 43.356246 65.417274 \n",
       "L 43.75113 65.809261 \n",
       "L 44.144325 66.17319 \n",
       "L 44.535863 66.509189 \n",
       "L 44.925774 66.81738 \n",
       "L 45.314089 67.097883 \n",
       "L 45.700838 67.350812 \n",
       "L 46.08605 67.576278 \n",
       "L 46.469756 67.774388 \n",
       "L 46.851984 67.945244 \n",
       "L 47.232763 68.088946 \n",
       "L 47.612121 68.205588 \n",
       "L 47.990088 68.295263 \n",
       "L 48.366691 68.358057 \n",
       "L 48.741956 68.394055 \n",
       "L 49.115913 68.403337 \n",
       "L 49.488587 68.385979 \n",
       "L 49.860007 68.342054 \n",
       "L 50.230197 68.271632 \n",
       "L 50.599186 68.174779 \n",
       "L 50.966998 68.051556 \n",
       "L 51.33366 67.902022 \n",
       "L 51.699197 67.726234 \n",
       "L 52.063635 67.524242 \n",
       "L 52.426998 67.296095 \n",
       "L 52.789313 67.041838 \n",
       "L 53.150603 66.761514 \n",
       "L 53.510894 66.455159 \n",
       "L 53.870209 66.12281 \n",
       "L 54.228573 65.764498 \n",
       "L 54.58601 65.380251 \n",
       "L 54.942544 64.970094 \n",
       "L 55.298198 64.53405 \n",
       "L 55.652996 64.072136 \n",
       "L 56.006961 63.584369 \n",
       "L 56.360116 63.07076 \n",
       "L 56.712486 62.531319 \n",
       "L 57.064091 61.96605 \n",
       "L 57.414956 61.374957 \n",
       "L 57.765102 60.758039 \n",
       "L 58.114553 60.115292 \n",
       "L 58.463331 59.446709 \n",
       "L 58.811457 58.752281 \n",
       "L 59.158954 58.031992 \n",
       "L 59.505845 57.285827 \n",
       "L 59.85215 56.513768 \n",
       "L 60.197892 55.715789 \n",
       "L 60.543093 54.891867 \n",
       "L 60.887774 54.041971 \n",
       "L 61.231957 53.166069 \n",
       "L 61.575663 52.264127 \n",
       "L 61.918914 51.336104 \n",
       "L 62.26173 50.38196 \n",
       "L 62.604135 49.401649 \n",
       "L 62.946147 48.395125 \n",
       "L 63.287788 47.362335 \n",
       "L 63.629081 46.303222 \n",
       "L 63.970044 45.217734 \n",
       "L 64.3107 44.105806 \n",
       "L 64.651071 42.967374 \n",
       "L 64.991175 41.802373 \n",
       "L 65.331034 40.610733 \n",
       "L 65.67067 39.392373 \n",
       "L 66.010102 38.147223 \n",
       "L 66.349351 36.875203 \n",
       "L 66.688439 35.576227 \n",
       "L 67.027387 34.2502 \n",
       "L 67.366214 32.897046 \n",
       "L 67.704942 31.516665 \n",
       "L 68.043592 30.108954 \n",
       "L 68.382183 28.673819 \n",
       "L 68.720736 27.211157 \n",
       "L 69.059275 25.720853 \n",
       "L 69.397816 24.202803 \n",
       "L 69.736383 22.656889 \n",
       "L 70.074997 21.082993 \n",
       "L 70.413676 19.480998 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 39.653582 55.329539 \n",
       "L 40.087506 56.429284 \n",
       "L 40.519043 57.496763 \n",
       "L 40.948233 58.53222 \n",
       "L 41.375117 59.535896 \n",
       "L 41.799736 60.508024 \n",
       "L 42.222128 61.448825 \n",
       "L 42.642332 62.358528 \n",
       "L 43.060389 63.237348 \n",
       "L 43.476333 64.085492 \n",
       "L 43.890204 64.903167 \n",
       "L 44.302039 65.690579 \n",
       "L 44.711872 66.447911 \n",
       "L 45.11974 67.17536 \n",
       "L 45.525679 67.873112 \n",
       "L 45.929725 68.541342 \n",
       "L 46.331909 69.180228 \n",
       "L 46.732267 69.789938 \n",
       "L 47.130834 70.37064 \n",
       "L 47.52764 70.922492 \n",
       "L 47.922719 71.445651 \n",
       "L 48.316106 71.94027 \n",
       "L 48.707828 72.406493 \n",
       "L 49.09792 72.844464 \n",
       "L 49.486414 73.254323 \n",
       "L 49.873337 73.636201 \n",
       "L 50.258723 73.990231 \n",
       "L 50.6426 74.316536 \n",
       "L 51.024999 74.615238 \n",
       "L 51.405948 74.886456 \n",
       "L 51.785478 75.130302 \n",
       "L 52.163617 75.346885 \n",
       "L 52.540392 75.536312 \n",
       "L 52.915834 75.698684 \n",
       "L 53.28997 75.834098 \n",
       "L 53.662826 75.942649 \n",
       "L 54.034431 76.024426 \n",
       "L 54.404812 76.079516 \n",
       "L 54.773995 76.108003 \n",
       "L 55.142007 76.109964 \n",
       "L 55.508874 76.085476 \n",
       "L 55.874623 76.034611 \n",
       "L 56.23928 75.957437 \n",
       "L 56.602869 75.854018 \n",
       "L 56.965416 75.724416 \n",
       "L 57.326947 75.568689 \n",
       "L 57.687486 75.386892 \n",
       "L 58.047059 75.179075 \n",
       "L 58.40569 74.945286 \n",
       "L 58.763402 74.68557 \n",
       "L 59.120221 74.399967 \n",
       "L 59.476171 74.088514 \n",
       "L 59.831274 73.751247 \n",
       "L 60.185556 73.388195 \n",
       "L 60.539039 72.999388 \n",
       "L 60.891746 72.584849 \n",
       "L 61.243702 72.1446 \n",
       "L 61.594929 71.678658 \n",
       "L 61.945449 71.187039 \n",
       "L 62.295286 70.669753 \n",
       "L 62.644463 70.12681 \n",
       "L 62.993001 69.558216 \n",
       "L 63.340923 68.96397 \n",
       "L 63.688252 68.344074 \n",
       "L 64.035009 67.698521 \n",
       "L 64.381217 67.027306 \n",
       "L 64.726897 66.330417 \n",
       "L 65.072072 65.607841 \n",
       "L 65.416763 64.859561 \n",
       "L 65.760992 64.085558 \n",
       "L 66.10478 63.285807 \n",
       "L 66.448148 62.460284 \n",
       "L 66.79112 61.608957 \n",
       "L 67.133715 60.731796 \n",
       "L 67.475954 59.828764 \n",
       "L 67.81786 58.899823 \n",
       "L 68.159452 57.944931 \n",
       "L 68.500754 56.964041 \n",
       "L 68.841784 55.957109 \n",
       "L 69.182564 54.924081 \n",
       "L 69.523117 53.8649 \n",
       "L 69.863461 52.779513 \n",
       "L 70.203619 51.667858 \n",
       "L 70.543611 50.529867 \n",
       "L 70.883457 49.365479 \n",
       "L 71.223179 48.174619 \n",
       "L 71.562798 46.957213 \n",
       "L 71.902334 45.713185 \n",
       "L 72.241807 44.442458 \n",
       "L 72.58124 43.144945 \n",
       "L 72.920653 41.820553 \n",
       "L 73.260065 40.469205 \n",
       "L 73.599499 39.090799 \n",
       "L 73.938976 37.685236 \n",
       "L 74.278515 36.252423 \n",
       "L 74.618137 34.792253 \n",
       "L 74.957866 33.304613 \n",
       "L 75.297718 31.7894 \n",
       "L 75.637718 30.246499 \n",
       "L 75.977886 28.675787 \n",
       "L 76.318241 27.077148 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 45.946823 60.639982 \n",
       "L 46.36987 61.731696 \n",
       "L 46.790704 62.791242 \n",
       "L 47.209362 63.818859 \n",
       "L 47.625886 64.814787 \n",
       "L 48.040314 65.779264 \n",
       "L 48.452682 66.712505 \n",
       "L 48.86303 67.61474 \n",
       "L 49.271394 68.486183 \n",
       "L 49.67781 69.327042 \n",
       "L 50.082314 70.137521 \n",
       "L 50.484943 70.917827 \n",
       "L 50.885729 71.668142 \n",
       "L 51.284709 72.388663 \n",
       "L 51.681917 73.079574 \n",
       "L 52.077387 73.741052 \n",
       "L 52.47115 74.37327 \n",
       "L 52.86324 74.976401 \n",
       "L 53.253691 75.550609 \n",
       "L 53.642532 76.096051 \n",
       "L 54.029797 76.612886 \n",
       "L 54.415518 77.101264 \n",
       "L 54.799723 77.56133 \n",
       "L 55.182443 77.993227 \n",
       "L 55.563712 78.397094 \n",
       "L 55.943555 78.773064 \n",
       "L 56.322004 79.121265 \n",
       "L 56.699087 79.441823 \n",
       "L 57.074835 79.73486 \n",
       "L 57.449275 80.000491 \n",
       "L 57.822434 80.23883 \n",
       "L 58.194343 80.449987 \n",
       "L 58.565027 80.634066 \n",
       "L 58.934515 80.791167 \n",
       "L 59.302833 80.921389 \n",
       "L 59.670009 81.024825 \n",
       "L 60.03607 81.101565 \n",
       "L 60.40104 81.151694 \n",
       "L 60.764948 81.175296 \n",
       "L 61.127817 81.172448 \n",
       "L 61.489675 81.143226 \n",
       "L 61.850547 81.087702 \n",
       "L 62.210458 81.005944 \n",
       "L 62.569432 80.898014 \n",
       "L 62.927495 80.763976 \n",
       "L 63.284671 80.603887 \n",
       "L 63.640985 80.4178 \n",
       "L 63.996461 80.205766 \n",
       "L 64.351123 79.967832 \n",
       "L 64.704995 79.704043 \n",
       "L 65.0581 79.414438 \n",
       "L 65.410463 79.099056 \n",
       "L 65.762106 78.757929 \n",
       "L 66.113053 78.39109 \n",
       "L 66.463326 77.998565 \n",
       "L 66.81295 77.580378 \n",
       "L 67.161945 77.136549 \n",
       "L 67.510337 76.667098 \n",
       "L 67.858146 76.172039 \n",
       "L 68.205395 75.651382 \n",
       "L 68.552107 75.105136 \n",
       "L 68.898303 74.533305 \n",
       "L 69.244006 73.935893 \n",
       "L 69.589238 73.312896 \n",
       "L 69.934021 72.664311 \n",
       "L 70.278377 71.99013 \n",
       "L 70.622326 71.290342 \n",
       "L 70.965891 70.564933 \n",
       "L 71.309094 69.813887 \n",
       "L 71.651955 69.037182 \n",
       "L 71.994497 68.234796 \n",
       "L 72.33674 67.406703 \n",
       "L 72.678707 66.552871 \n",
       "L 73.020417 65.67327 \n",
       "L 73.361892 64.767863 \n",
       "L 73.703154 63.83661 \n",
       "L 74.044223 62.879471 \n",
       "L 74.385122 61.896398 \n",
       "L 74.725868 60.887346 \n",
       "L 75.066486 59.852262 \n",
       "L 75.406995 58.791087 \n",
       "L 75.747416 57.70377 \n",
       "L 76.08777 56.590247 \n",
       "L 76.42808 55.450451 \n",
       "L 76.768363 54.284319 \n",
       "L 77.108642 53.09178 \n",
       "L 77.448938 51.872754 \n",
       "L 77.789272 50.627169 \n",
       "L 78.129664 49.354945 \n",
       "L 78.470135 48.055999 \n",
       "L 78.810707 46.730233 \n",
       "L 79.1514 45.377572 \n",
       "L 79.492235 43.997914 \n",
       "L 79.833234 42.59116 \n",
       "L 80.174416 41.157215 \n",
       "L 80.515804 39.695974 \n",
       "L 80.857419 38.207321 \n",
       "L 81.19928 36.691158 \n",
       "L 81.54141 35.147364 \n",
       "L 81.883832 33.575818 \n",
       "L 82.226563 31.976407 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 52.205138 63.136206 \n",
       "L 52.618247 64.227443 \n",
       "L 53.02931 65.28645 \n",
       "L 53.438362 66.313463 \n",
       "L 53.845442 67.308727 \n",
       "L 54.250588 68.272476 \n",
       "L 54.653834 69.204933 \n",
       "L 55.055219 70.106323 \n",
       "L 55.454778 70.976863 \n",
       "L 55.852545 71.816762 \n",
       "L 56.248556 72.626226 \n",
       "L 56.642846 73.405462 \n",
       "L 57.035446 74.154653 \n",
       "L 57.426392 74.873997 \n",
       "L 57.815716 75.563679 \n",
       "L 58.203452 76.223876 \n",
       "L 58.58963 76.854763 \n",
       "L 58.974283 77.456512 \n",
       "L 59.357443 78.02929 \n",
       "L 59.739139 78.573254 \n",
       "L 60.119404 79.088562 \n",
       "L 60.498267 79.575367 \n",
       "L 60.875759 80.033812 \n",
       "L 61.251908 80.464044 \n",
       "L 61.626745 80.8662 \n",
       "L 62.000298 81.240414 \n",
       "L 62.372596 81.586815 \n",
       "L 62.743667 81.90553 \n",
       "L 63.11354 82.19668 \n",
       "L 63.482242 82.460382 \n",
       "L 63.8498 82.69675 \n",
       "L 64.216243 82.905893 \n",
       "L 64.581596 83.087916 \n",
       "L 64.945888 83.242921 \n",
       "L 65.309144 83.371006 \n",
       "L 65.671389 83.472265 \n",
       "L 66.032652 83.546787 \n",
       "L 66.392957 83.594659 \n",
       "L 66.752329 83.615964 \n",
       "L 67.110794 83.61078 \n",
       "L 67.468378 83.579182 \n",
       "L 67.825104 83.521244 \n",
       "L 68.180998 83.437033 \n",
       "L 68.536084 83.326612 \n",
       "L 68.890387 83.190044 \n",
       "L 69.243931 83.027388 \n",
       "L 69.596739 82.838694 \n",
       "L 69.948836 82.624016 \n",
       "L 70.300245 82.383401 \n",
       "L 70.650989 82.116892 \n",
       "L 71.001092 81.824531 \n",
       "L 71.350577 81.506353 \n",
       "L 71.699468 81.162395 \n",
       "L 72.047786 80.792685 \n",
       "L 72.395555 80.397252 \n",
       "L 72.742797 79.97612 \n",
       "L 73.089536 79.529308 \n",
       "L 73.435792 79.056836 \n",
       "L 73.781589 78.558719 \n",
       "L 74.126949 78.034965 \n",
       "L 74.471894 77.485584 \n",
       "L 74.816445 76.910582 \n",
       "L 75.160625 76.309958 \n",
       "L 75.504456 75.683711 \n",
       "L 75.847959 75.031838 \n",
       "L 76.191156 74.35433 \n",
       "L 76.534068 73.651177 \n",
       "L 76.876717 72.922363 \n",
       "L 77.219124 72.167872 \n",
       "L 77.561311 71.387684 \n",
       "L 77.9033 70.581773 \n",
       "L 78.24511 69.750116 \n",
       "L 78.586764 68.89268 \n",
       "L 78.928283 68.009433 \n",
       "L 79.269687 67.100339 \n",
       "L 79.610999 66.165359 \n",
       "L 79.952238 65.20445 \n",
       "L 80.293427 64.217565 \n",
       "L 80.634586 63.204658 \n",
       "L 80.975735 62.165677 \n",
       "L 81.316898 61.100562 \n",
       "L 81.658093 60.00926 \n",
       "L 81.999342 58.891708 \n",
       "L 82.340667 57.747838 \n",
       "L 82.682088 56.577588 \n",
       "L 83.023625 55.380884 \n",
       "L 83.365302 54.157648 \n",
       "L 83.707137 52.907805 \n",
       "L 84.049152 51.631276 \n",
       "L 84.391369 50.327977 \n",
       "L 84.733809 48.99781 \n",
       "L 85.076493 47.640699 \n",
       "L 85.419441 46.256541 \n",
       "L 85.762676 44.845237 \n",
       "L 86.106218 43.40669 \n",
       "L 86.450088 41.940795 \n",
       "L 86.79431 40.447438 \n",
       "L 87.138903 38.926516 \n",
       "L 87.483889 37.377911 \n",
       "L 87.82929 35.801498 \n",
       "L 88.175128 34.197166 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 58.469911 62.80271 \n",
       "L 58.873892 63.901143 \n",
       "L 59.275986 64.967112 \n",
       "L 59.676228 66.000867 \n",
       "L 60.074655 67.002649 \n",
       "L 60.471305 67.972699 \n",
       "L 60.866211 68.911241 \n",
       "L 61.259408 69.818504 \n",
       "L 61.650934 70.694707 \n",
       "L 62.040818 71.540062 \n",
       "L 62.429098 72.354778 \n",
       "L 62.815806 73.139063 \n",
       "L 63.200973 73.893104 \n",
       "L 63.584634 74.617101 \n",
       "L 63.96682 75.31124 \n",
       "L 64.347563 75.975703 \n",
       "L 64.726893 76.610666 \n",
       "L 65.104842 77.216302 \n",
       "L 65.481442 77.792781 \n",
       "L 65.85672 78.340261 \n",
       "L 66.230707 78.858904 \n",
       "L 66.603435 79.348863 \n",
       "L 66.974929 79.810284 \n",
       "L 67.345221 80.243314 \n",
       "L 67.714339 80.648094 \n",
       "L 68.08231 81.024757 \n",
       "L 68.449163 81.373436 \n",
       "L 68.814925 81.694258 \n",
       "L 69.179624 81.987346 \n",
       "L 69.543288 82.252819 \n",
       "L 69.905942 82.49079 \n",
       "L 70.267614 82.701373 \n",
       "L 70.628329 82.884672 \n",
       "L 70.988115 83.04079 \n",
       "L 71.346997 83.169826 \n",
       "L 71.705 83.271877 \n",
       "L 72.06215 83.347031 \n",
       "L 72.418473 83.395378 \n",
       "L 72.773993 83.417 \n",
       "L 73.128735 83.411977 \n",
       "L 73.482724 83.380386 \n",
       "L 73.835985 83.322299 \n",
       "L 74.188541 83.237785 \n",
       "L 74.540417 83.126909 \n",
       "L 74.891636 82.989734 \n",
       "L 75.242222 82.826317 \n",
       "L 75.5922 82.636715 \n",
       "L 75.941592 82.420977 \n",
       "L 76.290422 82.179152 \n",
       "L 76.638712 81.911284 \n",
       "L 76.986486 81.617415 \n",
       "L 77.333768 81.297581 \n",
       "L 77.680578 80.95182 \n",
       "L 78.026941 80.580159 \n",
       "L 78.372879 80.182627 \n",
       "L 78.718413 79.759248 \n",
       "L 79.063567 79.310045 \n",
       "L 79.408363 78.835034 \n",
       "L 79.752822 78.334232 \n",
       "L 80.096968 77.807647 \n",
       "L 80.440821 77.255289 \n",
       "L 80.784403 76.677163 \n",
       "L 81.127736 76.073271 \n",
       "L 81.470843 75.443609 \n",
       "L 81.813744 74.788175 \n",
       "L 82.156462 74.10696 \n",
       "L 82.499017 73.399953 \n",
       "L 82.841431 72.66714 \n",
       "L 83.183726 71.908503 \n",
       "L 83.525923 71.124021 \n",
       "L 83.868043 70.313671 \n",
       "L 84.210107 69.477427 \n",
       "L 84.552138 68.615256 \n",
       "L 84.894156 67.727126 \n",
       "L 85.236181 66.813001 \n",
       "L 85.578236 65.87284 \n",
       "L 85.920341 64.906602 \n",
       "L 86.262519 63.914237 \n",
       "L 86.604789 62.895701 \n",
       "L 86.947173 61.850939 \n",
       "L 87.289694 60.779892 \n",
       "L 87.632369 59.682506 \n",
       "L 87.975222 58.558717 \n",
       "L 88.318275 57.408456 \n",
       "L 88.661547 56.231661 \n",
       "L 89.00506 55.028256 \n",
       "L 89.348837 53.798163 \n",
       "L 89.692897 52.541308 \n",
       "L 90.037261 51.257608 \n",
       "L 90.381952 49.946979 \n",
       "L 90.726993 48.609322 \n",
       "L 91.072401 47.24456 \n",
       "L 91.418201 45.85259 \n",
       "L 91.764414 44.433311 \n",
       "L 92.111061 42.986625 \n",
       "L 92.458163 41.512425 \n",
       "L 92.805745 40.010597 \n",
       "L 93.153825 38.481037 \n",
       "L 93.502427 36.923622 \n",
       "L 93.851574 35.338232 \n",
       "L 94.201286 33.724746 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 64.783437 59.5856 \n",
       "L 65.178972 60.699181 \n",
       "L 65.572776 61.779897 \n",
       "L 65.964884 62.828012 \n",
       "L 66.355331 63.843766 \n",
       "L 66.744155 64.827405 \n",
       "L 67.131386 65.779158 \n",
       "L 67.517061 66.699264 \n",
       "L 67.901214 67.587939 \n",
       "L 68.283875 68.445401 \n",
       "L 68.66508 69.271869 \n",
       "L 69.044861 70.067548 \n",
       "L 69.423248 70.832633 \n",
       "L 69.800273 71.567328 \n",
       "L 70.175969 72.271823 \n",
       "L 70.550366 72.946301 \n",
       "L 70.923493 73.590943 \n",
       "L 71.295382 74.205928 \n",
       "L 71.666062 74.791426 \n",
       "L 72.035562 75.347601 \n",
       "L 72.403911 75.874616 \n",
       "L 72.77114 76.372628 \n",
       "L 73.137275 76.841786 \n",
       "L 73.502344 77.282241 \n",
       "L 73.866378 77.694135 \n",
       "L 74.2294 78.077605 \n",
       "L 74.591442 78.432787 \n",
       "L 74.952528 78.759809 \n",
       "L 75.312686 79.058798 \n",
       "L 75.671942 79.329875 \n",
       "L 76.030323 79.573155 \n",
       "L 76.387855 79.788754 \n",
       "L 76.744563 79.976779 \n",
       "L 77.100473 80.137335 \n",
       "L 77.455612 80.270524 \n",
       "L 77.810003 80.376441 \n",
       "L 78.163672 80.45518 \n",
       "L 78.516645 80.506831 \n",
       "L 78.868944 80.531478 \n",
       "L 79.220595 80.529203 \n",
       "L 79.571622 80.500084 \n",
       "L 79.92205 80.444195 \n",
       "L 80.271901 80.361606 \n",
       "L 80.621201 80.252385 \n",
       "L 80.969972 80.116594 \n",
       "L 81.318238 79.954292 \n",
       "L 81.666022 79.765537 \n",
       "L 82.013348 79.55038 \n",
       "L 82.360238 79.30887 \n",
       "L 82.706715 79.041053 \n",
       "L 83.052803 78.746971 \n",
       "L 83.398524 78.426662 \n",
       "L 83.7439 78.080162 \n",
       "L 84.088954 77.707502 \n",
       "L 84.433709 77.30871 \n",
       "L 84.778186 76.883813 \n",
       "L 85.122408 76.432831 \n",
       "L 85.466397 75.955783 \n",
       "L 85.810174 75.452683 \n",
       "L 86.153763 74.923544 \n",
       "L 86.497184 74.368374 \n",
       "L 86.84046 73.787179 \n",
       "L 87.183612 73.179959 \n",
       "L 87.526661 72.546714 \n",
       "L 87.869631 71.887438 \n",
       "L 88.212542 71.202124 \n",
       "L 88.555415 70.490763 \n",
       "L 88.898272 69.753336 \n",
       "L 89.241135 68.989829 \n",
       "L 89.584025 68.20022 \n",
       "L 89.926963 67.384484 \n",
       "L 90.269971 66.542597 \n",
       "L 90.613071 65.674523 \n",
       "L 90.956283 64.780233 \n",
       "L 91.299629 63.859687 \n",
       "L 91.64313 62.912847 \n",
       "L 91.986808 61.939668 \n",
       "L 92.330685 60.940101 \n",
       "L 92.67478 59.914101 \n",
       "L 93.019115 58.861613 \n",
       "L 93.363714 57.782576 \n",
       "L 93.708595 56.676936 \n",
       "L 94.053782 55.544627 \n",
       "L 94.399296 54.385581 \n",
       "L 94.745157 53.199732 \n",
       "L 95.091387 51.987006 \n",
       "L 95.43801 50.747322 \n",
       "L 95.785045 49.480604 \n",
       "L 96.132514 48.18677 \n",
       "L 96.48044 46.865734 \n",
       "L 96.828845 45.517396 \n",
       "L 97.177749 44.141672 \n",
       "L 97.527175 42.738468 \n",
       "L 97.877146 41.307672 \n",
       "L 98.227683 39.849186 \n",
       "L 98.578808 38.362907 \n",
       "L 98.930545 36.848714 \n",
       "L 99.282914 35.306502 \n",
       "L 99.63594 33.736145 \n",
       "L 99.989644 32.137528 \n",
       "L 100.344049 30.510519 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 71.189905 53.390155 \n",
       "L 71.577552 54.527315 \n",
       "L 71.963624 55.631042 \n",
       "L 72.348155 56.701594 \n",
       "L 72.731178 57.739223 \n",
       "L 73.112731 58.74418 \n",
       "L 73.492843 59.716703 \n",
       "L 73.87155 60.657035 \n",
       "L 74.248885 61.565402 \n",
       "L 74.624878 62.442028 \n",
       "L 74.999562 63.287131 \n",
       "L 75.372969 64.100935 \n",
       "L 75.745129 64.883631 \n",
       "L 76.116074 65.63543 \n",
       "L 76.485834 66.356529 \n",
       "L 76.85444 67.047119 \n",
       "L 77.221919 67.70738 \n",
       "L 77.588303 68.337501 \n",
       "L 77.95362 68.937656 \n",
       "L 78.317899 69.508012 \n",
       "L 78.681168 70.048738 \n",
       "L 79.043456 70.559996 \n",
       "L 79.40479 71.041939 \n",
       "L 79.765198 71.494721 \n",
       "L 80.124708 71.918491 \n",
       "L 80.483346 72.313387 \n",
       "L 80.841139 72.67955 \n",
       "L 81.198114 73.017112 \n",
       "L 81.554297 73.326203 \n",
       "L 81.909715 73.606948 \n",
       "L 82.264392 73.859465 \n",
       "L 82.618355 74.083875 \n",
       "L 82.971628 74.280285 \n",
       "L 83.324239 74.448806 \n",
       "L 83.676211 74.58954 \n",
       "L 84.027568 74.702588 \n",
       "L 84.378337 74.788046 \n",
       "L 84.728541 74.846004 \n",
       "L 85.078205 74.876552 \n",
       "L 85.427352 74.879772 \n",
       "L 85.776007 74.855745 \n",
       "L 86.124193 74.804548 \n",
       "L 86.471935 74.726252 \n",
       "L 86.819255 74.620928 \n",
       "L 87.166177 74.488639 \n",
       "L 87.512725 74.329447 \n",
       "L 87.858921 74.143411 \n",
       "L 88.204788 73.930583 \n",
       "L 88.550349 73.691015 \n",
       "L 88.895628 73.424753 \n",
       "L 89.240646 73.131842 \n",
       "L 89.585426 72.812321 \n",
       "L 89.929991 72.466226 \n",
       "L 90.274364 72.09359 \n",
       "L 90.618565 71.694442 \n",
       "L 90.962618 71.26881 \n",
       "L 91.306545 70.816714 \n",
       "L 91.650368 70.338175 \n",
       "L 91.994108 69.833208 \n",
       "L 92.337788 69.301825 \n",
       "L 92.68143 68.744036 \n",
       "L 93.025055 68.159846 \n",
       "L 93.368685 67.549257 \n",
       "L 93.712343 66.912269 \n",
       "L 94.056049 66.248875 \n",
       "L 94.399825 65.55907 \n",
       "L 94.743693 64.842842 \n",
       "L 95.087675 64.100176 \n",
       "L 95.431792 63.331056 \n",
       "L 95.776066 62.535459 \n",
       "L 96.120518 61.71336 \n",
       "L 96.46517 60.864736 \n",
       "L 96.810044 59.989551 \n",
       "L 97.155161 59.087771 \n",
       "L 97.500542 58.159363 \n",
       "L 97.84621 57.204279 \n",
       "L 98.192185 56.222482 \n",
       "L 98.538491 55.213918 \n",
       "L 98.885147 54.178541 \n",
       "L 99.232176 53.116296 \n",
       "L 99.579601 52.02712 \n",
       "L 99.927441 50.91096 \n",
       "L 100.27572 49.767748 \n",
       "L 100.624459 48.597411 \n",
       "L 100.97368 47.399885 \n",
       "L 101.323405 46.175097 \n",
       "L 101.673657 44.922958 \n",
       "L 102.024456 43.643397 \n",
       "L 102.375825 42.336328 \n",
       "L 102.727788 41.001659 \n",
       "L 103.080366 39.639292 \n",
       "L 103.433581 38.249147 \n",
       "L 103.787456 36.831114 \n",
       "L 104.142014 35.38509 \n",
       "L 104.497277 33.910973 \n",
       "L 104.853268 32.408655 \n",
       "L 105.210012 30.878013 \n",
       "L 105.567528 29.318941 \n",
       "L 105.925842 27.73131 \n",
       "L 106.284978 26.114998 \n",
       "L 106.644956 24.469884 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 77.736495 44.076919 \n",
       "L 78.116687 45.24681 \n",
       "L 78.495461 46.382496 \n",
       "L 78.87285 47.484231 \n",
       "L 79.248888 48.552293 \n",
       "L 79.623609 49.58694 \n",
       "L 79.997044 50.588416 \n",
       "L 80.369226 51.556975 \n",
       "L 80.740188 52.492851 \n",
       "L 81.10996 53.396277 \n",
       "L 81.478573 54.267481 \n",
       "L 81.84606 55.106688 \n",
       "L 82.212448 55.914104 \n",
       "L 82.577769 56.689945 \n",
       "L 82.942053 57.434417 \n",
       "L 83.30533 58.147716 \n",
       "L 83.667626 58.83003 \n",
       "L 84.028973 59.481555 \n",
       "L 84.389398 60.102469 \n",
       "L 84.748929 60.692949 \n",
       "L 85.107594 61.253169 \n",
       "L 85.465422 61.783299 \n",
       "L 85.822438 62.283492 \n",
       "L 86.17867 62.753913 \n",
       "L 86.534147 63.194717 \n",
       "L 86.888891 63.606044 \n",
       "L 87.242932 63.98804 \n",
       "L 87.596295 64.340847 \n",
       "L 87.949006 64.664594 \n",
       "L 88.30109 64.959413 \n",
       "L 88.652573 65.225429 \n",
       "L 89.003481 65.462763 \n",
       "L 89.353838 65.67153 \n",
       "L 89.703669 65.851842 \n",
       "L 90.052999 66.003806 \n",
       "L 90.401852 66.12753 \n",
       "L 90.750253 66.223106 \n",
       "L 91.098226 66.290638 \n",
       "L 91.445795 66.330211 \n",
       "L 91.792983 66.341914 \n",
       "L 92.139815 66.325831 \n",
       "L 92.486315 66.28204 \n",
       "L 92.832505 66.210619 \n",
       "L 93.178408 66.111635 \n",
       "L 93.524049 65.985161 \n",
       "L 93.86945 65.831258 \n",
       "L 94.214635 65.649986 \n",
       "L 94.559625 65.441402 \n",
       "L 94.904444 65.205559 \n",
       "L 95.249115 64.942505 \n",
       "L 95.59366 64.652288 \n",
       "L 95.938102 64.334946 \n",
       "L 96.282462 63.99052 \n",
       "L 96.626764 63.619043 \n",
       "L 96.97103 63.220547 \n",
       "L 97.315282 62.795057 \n",
       "L 97.659541 62.342599 \n",
       "L 98.003831 61.863192 \n",
       "L 98.348173 61.356856 \n",
       "L 98.69259 60.823599 \n",
       "L 99.037102 60.263435 \n",
       "L 99.381733 59.676368 \n",
       "L 99.726504 59.062403 \n",
       "L 100.071437 58.421537 \n",
       "L 100.416553 57.753766 \n",
       "L 100.761876 57.059087 \n",
       "L 101.107426 56.337482 \n",
       "L 101.453225 55.588943 \n",
       "L 101.799296 54.813448 \n",
       "L 102.145659 54.010978 \n",
       "L 102.492338 53.181507 \n",
       "L 102.839353 52.325008 \n",
       "L 103.186727 51.44145 \n",
       "L 103.534481 50.530798 \n",
       "L 103.882638 49.593011 \n",
       "L 104.231219 48.628052 \n",
       "L 104.580246 47.635874 \n",
       "L 104.929742 46.616421 \n",
       "L 105.279728 45.569655 \n",
       "L 105.630227 44.495514 \n",
       "L 105.981261 43.393933 \n",
       "L 106.332851 42.264858 \n",
       "L 106.685021 41.108222 \n",
       "L 107.037793 39.923949 \n",
       "L 107.391189 38.711973 \n",
       "L 107.74523 37.472218 \n",
       "L 108.099943 36.204596 \n",
       "L 108.455346 34.90903 \n",
       "L 108.811463 33.585435 \n",
       "L 109.168318 32.233717 \n",
       "L 109.525935 30.853776 \n",
       "L 109.884334 29.445524 \n",
       "L 110.243541 28.008855 \n",
       "L 110.603578 26.543661 \n",
       "L 110.964468 25.049837 \n",
       "L 111.326234 23.527271 \n",
       "L 111.688903 21.975839 \n",
       "L 112.052496 20.395431 \n",
       "L 112.417036 18.78592 \n",
       "L 112.782551 17.147164 \n",
       "L 113.149062 15.47905 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 84.474646 31.456041 \n",
       "L 84.847679 32.668763 \n",
       "L 85.219457 33.846277 \n",
       "L 85.590011 34.988878 \n",
       "L 85.959374 36.096827 \n",
       "L 86.327579 37.170419 \n",
       "L 86.694657 38.20989 \n",
       "L 87.06064 39.215512 \n",
       "L 87.42556 40.187542 \n",
       "L 87.789446 41.1262 \n",
       "L 88.152328 42.031749 \n",
       "L 88.514239 42.904405 \n",
       "L 88.875206 43.744398 \n",
       "L 89.235259 44.55195 \n",
       "L 89.594427 45.327269 \n",
       "L 89.95274 46.070569 \n",
       "L 90.310225 46.782045 \n",
       "L 90.66691 47.4619 \n",
       "L 91.022825 48.110322 \n",
       "L 91.377995 48.727498 \n",
       "L 91.732448 49.313605 \n",
       "L 92.086213 49.868822 \n",
       "L 92.439314 50.393316 \n",
       "L 92.791778 50.88725 \n",
       "L 93.143635 51.350789 \n",
       "L 93.494906 51.784083 \n",
       "L 93.845621 52.187284 \n",
       "L 94.195802 52.560538 \n",
       "L 94.545478 52.903981 \n",
       "L 94.894673 53.217756 \n",
       "L 95.243411 53.501986 \n",
       "L 95.591718 53.756802 \n",
       "L 95.939618 53.982328 \n",
       "L 96.287137 54.178672 \n",
       "L 96.634298 54.345956 \n",
       "L 96.981126 54.484284 \n",
       "L 97.327645 54.593761 \n",
       "L 97.673879 54.674489 \n",
       "L 98.019852 54.726562 \n",
       "L 98.365586 54.750072 \n",
       "L 98.711107 54.745105 \n",
       "L 99.056437 54.711748 \n",
       "L 99.401599 54.650075 \n",
       "L 99.746618 54.560164 \n",
       "L 100.091515 54.442087 \n",
       "L 100.436315 54.295908 \n",
       "L 100.781039 54.121696 \n",
       "L 101.125711 53.919504 \n",
       "L 101.470353 53.689388 \n",
       "L 101.814989 53.431405 \n",
       "L 102.15964 53.145601 \n",
       "L 102.504329 52.832017 \n",
       "L 102.849079 52.490695 \n",
       "L 103.193912 52.121676 \n",
       "L 103.538851 51.724986 \n",
       "L 103.883918 51.300654 \n",
       "L 104.229134 50.848713 \n",
       "L 104.574523 50.369177 \n",
       "L 104.920106 49.862068 \n",
       "L 105.265905 49.3274 \n",
       "L 105.611944 48.765182 \n",
       "L 105.958243 48.175426 \n",
       "L 106.304826 47.558131 \n",
       "L 106.651713 46.913299 \n",
       "L 106.998928 46.240927 \n",
       "L 107.346492 45.541008 \n",
       "L 107.694428 44.813531 \n",
       "L 108.042757 44.058479 \n",
       "L 108.391502 43.275841 \n",
       "L 108.740685 42.465586 \n",
       "L 109.090328 41.627698 \n",
       "L 109.440453 40.762147 \n",
       "L 109.791084 39.868896 \n",
       "L 110.142241 38.947916 \n",
       "L 110.493947 37.999164 \n",
       "L 110.846225 37.022598 \n",
       "L 111.199097 36.018174 \n",
       "L 111.552586 34.985836 \n",
       "L 111.906714 33.92554 \n",
       "L 112.261503 32.837223 \n",
       "L 112.616978 31.720821 \n",
       "L 112.97316 30.57628 \n",
       "L 113.330072 29.403525 \n",
       "L 113.687738 28.202486 \n",
       "L 114.046179 26.97309 \n",
       "L 114.40542 25.71526 \n",
       "L 114.765484 24.428905 \n",
       "L 115.126394 23.11395 \n",
       "L 115.488173 21.770296 \n",
       "L 115.850845 20.397858 \n",
       "L 116.214436 18.996531 \n",
       "L 116.578966 17.566215 \n",
       "L 116.944461 16.106817 \n",
       "L 117.310946 14.618204 \n",
       "L 117.678443 13.100288 \n",
       "L 118.046978 11.552947 \n",
       "L 118.416576 9.976041 \n",
       "L 118.78726 8.369477 \n",
       "L 119.159056 6.733103 \n",
       "L 119.531989 5.066798 \n",
       "L 119.906084 3.37042 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 91.461565 15.279214 \n",
       "L 91.827587 16.546141 \n",
       "L 92.192524 17.776644 \n",
       "L 92.556406 18.970991 \n",
       "L 92.919265 20.129495 \n",
       "L 93.281134 21.252439 \n",
       "L 93.642042 22.340092 \n",
       "L 94.00202 23.392743 \n",
       "L 94.361101 24.410637 \n",
       "L 94.719311 25.394051 \n",
       "L 95.076682 26.343217 \n",
       "L 95.433243 27.258397 \n",
       "L 95.789023 28.139813 \n",
       "L 96.14405 28.987702 \n",
       "L 96.498354 29.802301 \n",
       "L 96.851963 30.583811 \n",
       "L 97.204902 31.332458 \n",
       "L 97.557202 32.048444 \n",
       "L 97.908889 32.731976 \n",
       "L 98.259989 33.383251 \n",
       "L 98.610531 34.002446 \n",
       "L 98.96054 34.589757 \n",
       "L 99.310043 35.145361 \n",
       "L 99.659065 35.669441 \n",
       "L 100.007635 36.162147 \n",
       "L 100.355774 36.623651 \n",
       "L 100.703512 37.054122 \n",
       "L 101.050871 37.453695 \n",
       "L 101.397879 37.822531 \n",
       "L 101.744559 38.160771 \n",
       "L 102.090936 38.468545 \n",
       "L 102.437035 38.745995 \n",
       "L 102.78288 38.993246 \n",
       "L 103.128497 39.210427 \n",
       "L 103.473908 39.397658 \n",
       "L 103.819138 39.555041 \n",
       "L 104.164212 39.682702 \n",
       "L 104.509152 39.780738 \n",
       "L 104.853982 39.849252 \n",
       "L 105.198725 39.888339 \n",
       "L 105.543406 39.898101 \n",
       "L 105.888048 39.87861 \n",
       "L 106.232674 39.829965 \n",
       "L 106.577306 39.752235 \n",
       "L 106.921969 39.645504 \n",
       "L 107.266685 39.50984 \n",
       "L 107.611476 39.345307 \n",
       "L 107.956367 39.151973 \n",
       "L 108.301378 38.929895 \n",
       "L 108.646534 38.679132 \n",
       "L 108.991857 38.399726 \n",
       "L 109.33737 38.091734 \n",
       "L 109.683094 37.755189 \n",
       "L 110.029053 37.39014 \n",
       "L 110.375269 36.996618 \n",
       "L 110.721765 36.574656 \n",
       "L 111.068562 36.124279 \n",
       "L 111.415684 35.645512 \n",
       "L 111.763153 35.13838 \n",
       "L 112.110992 34.602888 \n",
       "L 112.459221 34.039062 \n",
       "L 112.807865 33.446895 \n",
       "L 113.156945 32.826407 \n",
       "L 113.506484 32.17759 \n",
       "L 113.856505 31.500444 \n",
       "L 114.207029 30.79496 \n",
       "L 114.558079 30.061137 \n",
       "L 114.909679 29.298946 \n",
       "L 115.26185 28.508381 \n",
       "L 115.614614 27.689421 \n",
       "L 115.967995 26.842035 \n",
       "L 116.322016 25.9662 \n",
       "L 116.676699 25.061873 \n",
       "L 117.032066 24.129028 \n",
       "L 117.388142 23.167626 \n",
       "L 117.744948 22.177611 \n",
       "L 118.102508 21.158954 \n",
       "L 118.460845 20.111591 \n",
       "L 118.819982 19.035463 \n",
       "L 119.179942 17.930529 \n",
       "L 119.54075 16.796713 \n",
       "L 119.902426 15.633956 \n",
       "L 120.264997 14.442178 \n",
       "L 120.628487 13.221314 \n",
       "L 120.992917 11.971288 \n",
       "L 121.358312 10.692014 \n",
       "L 121.724697 9.38341 \n",
       "L 122.092096 8.045378 \n",
       "L 122.460532 6.677841 \n",
       "L 122.83003 5.280691 \n",
       "L 123.200617 3.85382 \n",
       "L 123.572314 2.397144 \n",
       "L 123.945149 0.910534 \n",
       "L 124.319145 -0.606105 \n",
       "L 124.414687 -1 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 26.795775 36.141082 \n",
       "L 27.451179 37.378059 \n",
       "L 28.105004 38.58525 \n",
       "L 28.757291 39.762763 \n",
       "L 29.408086 40.910712 \n",
       "L 30.057436 42.029193 \n",
       "L 30.705382 43.118317 \n",
       "L 31.351968 44.178169 \n",
       "L 31.997241 45.208853 \n",
       "L 32.641241 46.210441 \n",
       "L 33.284013 47.183032 \n",
       "L 33.925601 48.1267 \n",
       "L 34.566045 49.041521 \n",
       "L 35.20539 49.927567 \n",
       "L 35.843678 50.784908 \n",
       "L 36.480953 51.613617 \n",
       "L 37.117255 52.413741 \n",
       "L 37.752626 53.185344 \n",
       "L 38.387112 53.92848 \n",
       "L 39.020749 54.643195 \n",
       "L 39.653582 55.329539 \n",
       "L 40.285655 55.987554 \n",
       "L 40.917005 56.61728 \n",
       "L 41.547675 57.218745 \n",
       "L 42.17771 57.791988 \n",
       "L 42.807145 58.337031 \n",
       "L 43.436027 58.853903 \n",
       "L 44.064393 59.342615 \n",
       "L 44.692288 59.803193 \n",
       "L 45.319751 60.235648 \n",
       "L 45.946823 60.639982 \n",
       "L 46.573546 61.016205 \n",
       "L 47.199961 61.364321 \n",
       "L 47.826109 61.684319 \n",
       "L 48.452032 61.976203 \n",
       "L 49.077769 62.239959 \n",
       "L 49.703364 62.475571 \n",
       "L 50.328857 62.683024 \n",
       "L 50.95429 62.862298 \n",
       "L 51.579702 63.013368 \n",
       "L 52.205138 63.136206 \n",
       "L 52.830636 63.230775 \n",
       "L 53.456241 63.297046 \n",
       "L 54.081993 63.334973 \n",
       "L 54.707934 63.344512 \n",
       "L 55.334106 63.325617 \n",
       "L 55.960551 63.278242 \n",
       "L 56.587312 63.202323 \n",
       "L 57.214431 63.097807 \n",
       "L 57.841949 62.964625 \n",
       "L 58.469911 62.80271 \n",
       "L 59.098359 62.611996 \n",
       "L 59.727336 62.392401 \n",
       "L 60.356885 62.143848 \n",
       "L 60.98705 61.866255 \n",
       "L 61.617875 61.559532 \n",
       "L 62.249403 61.223588 \n",
       "L 62.881679 60.858327 \n",
       "L 63.514746 60.463644 \n",
       "L 64.148651 60.039439 \n",
       "L 64.783437 59.5856 \n",
       "L 65.41915 59.102013 \n",
       "L 66.055836 58.588562 \n",
       "L 66.69354 58.045127 \n",
       "L 67.332309 57.471578 \n",
       "L 67.972189 56.867774 \n",
       "L 68.613226 56.233594 \n",
       "L 69.255469 55.568887 \n",
       "L 69.898964 54.873515 \n",
       "L 70.54376 54.147323 \n",
       "L 71.189905 53.390155 \n",
       "L 71.837447 52.601846 \n",
       "L 72.486437 51.782235 \n",
       "L 73.136923 50.931149 \n",
       "L 73.788955 50.048419 \n",
       "L 74.442586 49.133866 \n",
       "L 75.097863 48.187292 \n",
       "L 75.754842 47.208509 \n",
       "L 76.41357 46.197325 \n",
       "L 77.074103 45.153538 \n",
       "L 77.736495 44.076919 \n",
       "L 78.400796 42.967286 \n",
       "L 79.067062 41.824402 \n",
       "L 79.73535 40.648037 \n",
       "L 80.405712 39.437974 \n",
       "L 81.078204 38.193973 \n",
       "L 81.752886 36.915776 \n",
       "L 82.429812 35.603145 \n",
       "L 83.109041 34.255824 \n",
       "L 83.790632 32.873544 \n",
       "L 84.474646 31.456041 \n",
       "L 85.161139 30.003027 \n",
       "L 85.850175 28.514231 \n",
       "L 86.541817 26.989351 \n",
       "L 87.236123 25.428106 \n",
       "L 87.933159 23.830181 \n",
       "L 88.632991 22.195265 \n",
       "L 89.33568 20.523043 \n",
       "L 90.041294 18.813181 \n",
       "L 90.749901 17.065353 \n",
       "L 91.461565 15.279214 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 31.267271 46.076348 \n",
       "L 31.909759 47.288383 \n",
       "L 32.550802 48.47138 \n",
       "L 33.190438 49.625435 \n",
       "L 33.828713 50.750659 \n",
       "L 34.46567 51.847154 \n",
       "L 35.101349 52.915011 \n",
       "L 35.735794 53.954325 \n",
       "L 36.369048 54.965185 \n",
       "L 37.001151 55.947674 \n",
       "L 37.632145 56.901871 \n",
       "L 38.262075 57.827862 \n",
       "L 38.890977 58.72571 \n",
       "L 39.518895 59.595492 \n",
       "L 40.14587 60.437273 \n",
       "L 40.771945 61.251115 \n",
       "L 41.397156 62.037075 \n",
       "L 42.021547 62.79521 \n",
       "L 42.64516 63.525575 \n",
       "L 43.268032 64.22821 \n",
       "L 43.890204 64.903167 \n",
       "L 44.511719 65.550485 \n",
       "L 45.132614 66.170199 \n",
       "L 45.75293 66.762343 \n",
       "L 46.37271 67.326951 \n",
       "L 46.99199 67.864046 \n",
       "L 47.610812 68.373651 \n",
       "L 48.229215 68.855787 \n",
       "L 48.84724 69.31047 \n",
       "L 49.464927 69.737712 \n",
       "L 50.082314 70.137521 \n",
       "L 50.699443 70.509903 \n",
       "L 51.316353 70.854859 \n",
       "L 51.933084 71.172389 \n",
       "L 52.549677 71.462486 \n",
       "L 53.16617 71.725141 \n",
       "L 53.782604 71.960343 \n",
       "L 54.39902 72.168074 \n",
       "L 55.015457 72.348313 \n",
       "L 55.631956 72.501039 \n",
       "L 56.248556 72.626226 \n",
       "L 56.865298 72.723841 \n",
       "L 57.482224 72.793851 \n",
       "L 58.099372 72.836217 \n",
       "L 58.716784 72.850896 \n",
       "L 59.334501 72.837845 \n",
       "L 59.952564 72.797014 \n",
       "L 60.571014 72.728351 \n",
       "L 61.189892 72.631799 \n",
       "L 61.809239 72.507296 \n",
       "L 62.429098 72.354778 \n",
       "L 63.049509 72.174177 \n",
       "L 63.670515 71.965422 \n",
       "L 64.292158 71.728436 \n",
       "L 64.91448 71.463141 \n",
       "L 65.537524 71.169451 \n",
       "L 66.161333 70.847278 \n",
       "L 66.78595 70.496533 \n",
       "L 67.411417 70.117117 \n",
       "L 68.037779 69.708928 \n",
       "L 68.66508 69.271869 \n",
       "L 69.293363 68.805821 \n",
       "L 69.922673 68.310679 \n",
       "L 70.553055 67.786325 \n",
       "L 71.184554 67.23264 \n",
       "L 71.817215 66.649487 \n",
       "L 72.451082 66.036749 \n",
       "L 73.086205 65.394284 \n",
       "L 73.722628 64.72196 \n",
       "L 74.360397 64.019623 \n",
       "L 74.999562 63.287131 \n",
       "L 75.640167 62.524333 \n",
       "L 76.282263 61.731061 \n",
       "L 76.925897 60.907157 \n",
       "L 77.571118 60.052458 \n",
       "L 78.217976 59.166792 \n",
       "L 78.866519 58.249977 \n",
       "L 79.516801 57.301826 \n",
       "L 80.168868 56.322159 \n",
       "L 80.822774 55.31078 \n",
       "L 81.478573 54.267481 \n",
       "L 82.136312 53.192073 \n",
       "L 82.796047 52.084341 \n",
       "L 83.457833 50.944058 \n",
       "L 84.121721 49.771026 \n",
       "L 84.787767 48.565012 \n",
       "L 85.456028 47.325765 \n",
       "L 86.126556 46.053071 \n",
       "L 86.79941 44.746669 \n",
       "L 87.474648 43.406305 \n",
       "L 88.152328 42.031749 \n",
       "L 88.832507 40.622704 \n",
       "L 89.515245 39.178918 \n",
       "L 90.200604 37.700104 \n",
       "L 90.888642 36.185996 \n",
       "L 91.579422 34.636291 \n",
       "L 92.273009 33.050693 \n",
       "L 92.969463 31.428904 \n",
       "L 93.668849 29.770605 \n",
       "L 94.371234 28.075485 \n",
       "L 95.076682 26.343217 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 35.499552 52.918559 \n",
       "L 36.130996 54.110183 \n",
       "L 36.761113 55.273356 \n",
       "L 37.389942 56.408174 \n",
       "L 38.017526 57.514741 \n",
       "L 38.643908 58.59316 \n",
       "L 39.269125 59.643513 \n",
       "L 39.89322 60.665897 \n",
       "L 40.516237 61.660396 \n",
       "L 41.138211 62.627092 \n",
       "L 41.759185 63.566062 \n",
       "L 42.379201 64.477386 \n",
       "L 42.998296 65.361128 \n",
       "L 43.616511 66.217361 \n",
       "L 44.233886 67.046147 \n",
       "L 44.850463 67.847551 \n",
       "L 45.466277 68.621623 \n",
       "L 46.08137 69.36842 \n",
       "L 46.695784 70.087995 \n",
       "L 47.309553 70.780391 \n",
       "L 47.922719 71.445651 \n",
       "L 48.535323 72.083819 \n",
       "L 49.1474 72.694925 \n",
       "L 49.758992 73.279006 \n",
       "L 50.370138 73.836093 \n",
       "L 50.980874 74.366206 \n",
       "L 51.591242 74.869372 \n",
       "L 52.201278 75.345609 \n",
       "L 52.811025 75.794933 \n",
       "L 53.420518 76.217357 \n",
       "L 54.029797 76.612886 \n",
       "L 54.638902 76.981528 \n",
       "L 55.24787 77.323285 \n",
       "L 55.856742 77.638156 \n",
       "L 56.465556 77.926135 \n",
       "L 57.07435 78.187214 \n",
       "L 57.683165 78.421381 \n",
       "L 58.292038 78.628619 \n",
       "L 58.90101 78.80891 \n",
       "L 59.510118 78.962233 \n",
       "L 60.119404 79.088562 \n",
       "L 60.728905 79.187866 \n",
       "L 61.338663 79.260115 \n",
       "L 61.948715 79.305268 \n",
       "L 62.559103 79.323287 \n",
       "L 63.169865 79.314128 \n",
       "L 63.781043 79.277747 \n",
       "L 64.392675 79.214091 \n",
       "L 65.004803 79.123104 \n",
       "L 65.617467 79.004729 \n",
       "L 66.230707 78.858904 \n",
       "L 66.844565 78.685564 \n",
       "L 67.459081 78.484638 \n",
       "L 68.074297 78.256055 \n",
       "L 68.690254 77.999739 \n",
       "L 69.306994 77.715607 \n",
       "L 69.924559 77.403574 \n",
       "L 70.54299 77.063553 \n",
       "L 71.162331 76.695452 \n",
       "L 71.782624 76.299172 \n",
       "L 72.403911 75.874616 \n",
       "L 73.026237 75.421675 \n",
       "L 73.649644 74.940245 \n",
       "L 74.274177 74.430212 \n",
       "L 74.899879 73.891461 \n",
       "L 75.526796 73.323863 \n",
       "L 76.15497 72.727303 \n",
       "L 76.78445 72.101644 \n",
       "L 77.415279 71.44676 \n",
       "L 78.047502 70.762504 \n",
       "L 78.681168 70.048738 \n",
       "L 79.316321 69.305312 \n",
       "L 79.953011 68.532073 \n",
       "L 80.591283 67.728867 \n",
       "L 81.231185 66.895533 \n",
       "L 81.872768 66.031905 \n",
       "L 82.516078 65.137811 \n",
       "L 83.161166 64.213072 \n",
       "L 83.808081 63.257513 \n",
       "L 84.456872 62.270945 \n",
       "L 85.107594 61.253169 \n",
       "L 85.760294 60.204003 \n",
       "L 86.415026 59.12324 \n",
       "L 87.071843 58.010664 \n",
       "L 87.730796 56.866082 \n",
       "L 88.39194 55.689262 \n",
       "L 89.055331 54.47998 \n",
       "L 89.72102 53.238011 \n",
       "L 90.389064 51.963121 \n",
       "L 91.059521 50.655066 \n",
       "L 91.732448 49.313605 \n",
       "L 92.407899 47.938473 \n",
       "L 93.085936 46.529415 \n",
       "L 93.766618 45.086163 \n",
       "L 94.450001 43.608464 \n",
       "L 95.136149 42.096017 \n",
       "L 95.825124 40.548542 \n",
       "L 96.516985 38.965752 \n",
       "L 97.211796 37.347342 \n",
       "L 97.909625 35.693008 \n",
       "L 98.610531 34.002446 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 39.529882 56.846202 \n",
       "L 40.151986 58.021552 \n",
       "L 40.772872 59.168896 \n",
       "L 41.392576 60.288334 \n",
       "L 42.011141 61.379962 \n",
       "L 42.628608 62.443881 \n",
       "L 43.245013 63.480173 \n",
       "L 43.8604 64.488931 \n",
       "L 44.474808 65.47024 \n",
       "L 45.088273 66.424173 \n",
       "L 45.700838 67.350812 \n",
       "L 46.312542 68.25023 \n",
       "L 46.923421 69.122494 \n",
       "L 47.533516 69.96767 \n",
       "L 48.142866 70.785822 \n",
       "L 48.751512 71.577011 \n",
       "L 49.359487 72.341289 \n",
       "L 49.966833 73.078709 \n",
       "L 50.573589 73.789323 \n",
       "L 51.179791 74.473173 \n",
       "L 51.785478 75.130302 \n",
       "L 52.39069 75.76075 \n",
       "L 52.995463 76.364551 \n",
       "L 53.599835 76.941737 \n",
       "L 54.203847 77.492339 \n",
       "L 54.807533 78.016379 \n",
       "L 55.410934 78.513881 \n",
       "L 56.014086 78.984863 \n",
       "L 56.617028 79.429342 \n",
       "L 57.219799 79.847329 \n",
       "L 57.822434 80.23883 \n",
       "L 58.424974 80.603854 \n",
       "L 59.027456 80.9424 \n",
       "L 59.629918 81.254469 \n",
       "L 60.232398 81.540056 \n",
       "L 60.834934 81.799152 \n",
       "L 61.437565 82.031746 \n",
       "L 62.040329 82.237822 \n",
       "L 62.643263 82.417363 \n",
       "L 63.246408 82.570346 \n",
       "L 63.8498 82.69675 \n",
       "L 64.453479 82.796541 \n",
       "L 65.057485 82.869692 \n",
       "L 65.661854 82.916164 \n",
       "L 66.266628 82.935918 \n",
       "L 66.871843 82.928914 \n",
       "L 67.477541 82.895106 \n",
       "L 68.08376 82.834445 \n",
       "L 68.69054 82.746877 \n",
       "L 69.297921 82.632345 \n",
       "L 69.905942 82.49079 \n",
       "L 70.514644 82.322149 \n",
       "L 71.124067 82.126352 \n",
       "L 71.734252 81.903332 \n",
       "L 72.345239 81.653013 \n",
       "L 72.957069 81.375315 \n",
       "L 73.569784 81.070158 \n",
       "L 74.183425 80.737455 \n",
       "L 74.798034 80.377117 \n",
       "L 75.413653 79.989048 \n",
       "L 76.030323 79.573155 \n",
       "L 76.648087 79.129332 \n",
       "L 77.266989 78.657476 \n",
       "L 77.887071 78.157479 \n",
       "L 78.508378 77.629228 \n",
       "L 79.130952 77.072597 \n",
       "L 79.754837 76.487477 \n",
       "L 80.380079 75.873734 \n",
       "L 81.006722 75.231243 \n",
       "L 81.634811 74.559866 \n",
       "L 82.264392 73.859465 \n",
       "L 82.895509 73.129898 \n",
       "L 83.528212 72.371015 \n",
       "L 84.162546 71.582664 \n",
       "L 84.798557 70.764692 \n",
       "L 85.436295 69.916939 \n",
       "L 86.075806 69.039235 \n",
       "L 86.717142 68.13141 \n",
       "L 87.360347 67.19329 \n",
       "L 88.005473 66.224692 \n",
       "L 88.652573 65.225429 \n",
       "L 89.301693 64.195318 \n",
       "L 89.952887 63.134159 \n",
       "L 90.606207 62.041745 \n",
       "L 91.261703 60.917889 \n",
       "L 91.919428 59.762366 \n",
       "L 92.57944 58.574956 \n",
       "L 93.241788 57.355445 \n",
       "L 93.906528 56.103602 \n",
       "L 94.573716 54.819195 \n",
       "L 95.243411 53.501986 \n",
       "L 95.915664 52.151722 \n",
       "L 96.590536 50.768156 \n",
       "L 97.268087 49.351024 \n",
       "L 97.948372 47.900078 \n",
       "L 98.631452 46.41504 \n",
       "L 99.31739 44.895628 \n",
       "L 100.006243 43.341568 \n",
       "L 100.698076 41.752563 \n",
       "L 101.392954 40.128322 \n",
       "L 102.090936 38.468545 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 43.390996 57.991684 \n",
       "L 44.005333 59.15459 \n",
       "L 44.618549 60.289812 \n",
       "L 45.230681 61.397441 \n",
       "L 45.84177 62.477577 \n",
       "L 46.451858 63.530316 \n",
       "L 47.060978 64.555741 \n",
       "L 47.669172 65.553939 \n",
       "L 48.276481 66.524996 \n",
       "L 48.882939 67.468983 \n",
       "L 49.488587 68.385979 \n",
       "L 50.093465 69.276058 \n",
       "L 50.697607 70.139282 \n",
       "L 51.301053 70.97572 \n",
       "L 51.903842 71.785432 \n",
       "L 52.506012 72.568478 \n",
       "L 53.107598 73.324909 \n",
       "L 53.70864 74.054778 \n",
       "L 54.309176 74.758134 \n",
       "L 54.909241 75.43502 \n",
       "L 55.508874 76.085476 \n",
       "L 56.108115 76.709545 \n",
       "L 56.706996 77.307256 \n",
       "L 57.305558 77.878642 \n",
       "L 57.903839 78.423735 \n",
       "L 58.501873 78.942554 \n",
       "L 59.099701 79.435124 \n",
       "L 59.697357 79.901462 \n",
       "L 60.29488 80.341586 \n",
       "L 60.892307 80.755505 \n",
       "L 61.489675 81.143226 \n",
       "L 62.087023 81.504757 \n",
       "L 62.684386 81.840099 \n",
       "L 63.281803 82.149251 \n",
       "L 63.879311 82.432208 \n",
       "L 64.476947 82.688962 \n",
       "L 65.07475 82.919503 \n",
       "L 65.672757 83.123814 \n",
       "L 66.271005 83.301879 \n",
       "L 66.869533 83.453676 \n",
       "L 67.468378 83.579182 \n",
       "L 68.067578 83.678369 \n",
       "L 68.667173 83.751205 \n",
       "L 69.267199 83.797654 \n",
       "L 69.867695 83.81768 \n",
       "L 70.468701 83.811239 \n",
       "L 71.070254 83.778291 \n",
       "L 71.672394 83.718786 \n",
       "L 72.27516 83.632671 \n",
       "L 72.87859 83.51989 \n",
       "L 73.482724 83.380386 \n",
       "L 74.087603 83.214096 \n",
       "L 74.693265 83.020954 \n",
       "L 75.299751 82.800892 \n",
       "L 75.9071 82.553836 \n",
       "L 76.515354 82.27971 \n",
       "L 77.124553 81.978433 \n",
       "L 77.734738 81.649922 \n",
       "L 78.34595 81.294088 \n",
       "L 78.958231 80.91084 \n",
       "L 79.571622 80.500084 \n",
       "L 80.186166 80.061717 \n",
       "L 80.801904 79.595639 \n",
       "L 81.418879 79.101744 \n",
       "L 82.037136 78.579922 \n",
       "L 82.656715 78.03005 \n",
       "L 83.277662 77.45202 \n",
       "L 83.90002 76.845701 \n",
       "L 84.523834 76.210973 \n",
       "L 85.149147 75.547698 \n",
       "L 85.776007 74.855745 \n",
       "L 86.404456 74.134971 \n",
       "L 87.034543 73.385231 \n",
       "L 87.666314 72.606378 \n",
       "L 88.299813 71.798261 \n",
       "L 88.93509 70.960722 \n",
       "L 89.572191 70.093599 \n",
       "L 90.211167 69.196719 \n",
       "L 90.852062 68.269919 \n",
       "L 91.494927 67.313019 \n",
       "L 92.139815 66.325831 \n",
       "L 92.786772 65.308182 \n",
       "L 93.435849 64.259873 \n",
       "L 94.087101 63.180705 \n",
       "L 94.740575 62.070491 \n",
       "L 95.396325 60.929015 \n",
       "L 96.054407 59.756062 \n",
       "L 96.71487 58.551422 \n",
       "L 97.377771 57.314868 \n",
       "L 98.043164 56.046173 \n",
       "L 98.711107 54.745105 \n",
       "L 99.381652 53.411419 \n",
       "L 100.054859 52.044874 \n",
       "L 100.730786 50.645211 \n",
       "L 101.409489 49.212187 \n",
       "L 102.091028 47.745533 \n",
       "L 102.775467 46.244971 \n",
       "L 103.46286 44.710238 \n",
       "L 104.153272 43.141035 \n",
       "L 104.846768 41.537089 \n",
       "L 105.543406 39.898101 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 47.112063 56.44687 \n",
       "L 47.720097 57.60094 \n",
       "L 48.327101 58.727522 \n",
       "L 48.93311 59.826708 \n",
       "L 49.538166 60.898596 \n",
       "L 50.142307 61.943279 \n",
       "L 50.745569 62.96084 \n",
       "L 51.347991 63.951364 \n",
       "L 51.949614 64.914936 \n",
       "L 52.550472 65.851627 \n",
       "L 53.150603 66.761514 \n",
       "L 53.750048 67.644669 \n",
       "L 54.34884 68.501154 \n",
       "L 54.947019 69.331035 \n",
       "L 55.544622 70.134374 \n",
       "L 56.141688 70.911229 \n",
       "L 56.73825 71.661649 \n",
       "L 57.334347 72.385687 \n",
       "L 57.930018 73.083392 \n",
       "L 58.525297 73.754804 \n",
       "L 59.120221 74.399967 \n",
       "L 59.71483 75.018917 \n",
       "L 60.309157 75.611687 \n",
       "L 60.903241 76.178309 \n",
       "L 61.49712 76.718812 \n",
       "L 62.090827 77.233218 \n",
       "L 62.684401 77.721548 \n",
       "L 63.277878 78.183823 \n",
       "L 63.871297 78.620056 \n",
       "L 64.464692 79.030259 \n",
       "L 65.0581 79.414438 \n",
       "L 65.65156 79.7726 \n",
       "L 66.245107 80.104747 \n",
       "L 66.83878 80.410878 \n",
       "L 67.432614 80.690988 \n",
       "L 68.026646 80.945068 \n",
       "L 68.620914 81.173109 \n",
       "L 69.215456 81.375095 \n",
       "L 69.810308 81.551007 \n",
       "L 70.405507 81.700827 \n",
       "L 71.001092 81.824531 \n",
       "L 71.5971 81.922089 \n",
       "L 72.193569 81.993473 \n",
       "L 72.790537 82.038646 \n",
       "L 73.388041 82.057571 \n",
       "L 73.98612 82.050208 \n",
       "L 74.584812 82.016514 \n",
       "L 75.184156 81.956441 \n",
       "L 75.784191 81.869937 \n",
       "L 76.384955 81.756948 \n",
       "L 76.986486 81.617415 \n",
       "L 77.588826 81.451278 \n",
       "L 78.192012 81.258471 \n",
       "L 78.796085 81.038927 \n",
       "L 79.401085 80.792575 \n",
       "L 80.007051 80.519336 \n",
       "L 80.614024 80.219133 \n",
       "L 81.222045 79.891884 \n",
       "L 81.831154 79.537502 \n",
       "L 82.441393 79.155894 \n",
       "L 83.052803 78.746971 \n",
       "L 83.665426 78.310629 \n",
       "L 84.279303 77.846771 \n",
       "L 84.894477 77.355293 \n",
       "L 85.510992 76.836085 \n",
       "L 86.12889 76.289026 \n",
       "L 86.748212 75.71401 \n",
       "L 87.369006 75.110909 \n",
       "L 87.991313 74.479604 \n",
       "L 88.615177 73.819958 \n",
       "L 89.240646 73.131842 \n",
       "L 89.867762 72.415117 \n",
       "L 90.496573 71.669639 \n",
       "L 91.127123 70.895263 \n",
       "L 91.75946 70.09184 \n",
       "L 92.393631 69.259215 \n",
       "L 93.029681 68.397229 \n",
       "L 93.667662 67.505712 \n",
       "L 94.307619 66.584502 \n",
       "L 94.949601 65.633421 \n",
       "L 95.59366 64.652288 \n",
       "L 96.239843 63.640928 \n",
       "L 96.888201 62.599148 \n",
       "L 97.538788 61.526752 \n",
       "L 98.191651 60.423553 \n",
       "L 98.846844 59.289342 \n",
       "L 99.504423 58.123904 \n",
       "L 100.164436 56.927035 \n",
       "L 100.82694 55.698513 \n",
       "L 101.491989 54.438108 \n",
       "L 102.15964 53.145601 \n",
       "L 102.829946 51.820744 \n",
       "L 103.502965 50.463302 \n",
       "L 104.178757 49.07302 \n",
       "L 104.857376 47.649659 \n",
       "L 105.538883 46.192952 \n",
       "L 106.223339 44.702631 \n",
       "L 106.910802 43.178434 \n",
       "L 107.601334 41.620068 \n",
       "L 108.294999 40.027264 \n",
       "L 108.991857 38.399726 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 50.71946 52.26704 \n",
       "L 51.322573 53.415717 \n",
       "L 51.924739 54.536988 \n",
       "L 52.525994 55.630944 \n",
       "L 53.126378 56.697681 \n",
       "L 53.725929 57.737292 \n",
       "L 54.324683 58.749859 \n",
       "L 54.922678 59.735467 \n",
       "L 55.519953 60.694198 \n",
       "L 56.116543 61.626123 \n",
       "L 56.712486 62.531319 \n",
       "L 57.307821 63.409856 \n",
       "L 57.902581 64.261797 \n",
       "L 58.496806 65.087207 \n",
       "L 59.090532 65.886146 \n",
       "L 59.683797 66.658672 \n",
       "L 60.276635 67.404833 \n",
       "L 60.869084 68.124682 \n",
       "L 61.461182 68.818268 \n",
       "L 62.052962 69.485631 \n",
       "L 62.644463 70.12681 \n",
       "L 63.235722 70.741847 \n",
       "L 63.826773 71.33077 \n",
       "L 64.417653 71.893613 \n",
       "L 65.008401 72.430403 \n",
       "L 65.59905 72.941162 \n",
       "L 66.189639 73.425913 \n",
       "L 66.780201 73.884672 \n",
       "L 67.370777 74.317456 \n",
       "L 67.9614 74.724275 \n",
       "L 68.552107 75.105136 \n",
       "L 69.142935 75.460044 \n",
       "L 69.733921 75.789001 \n",
       "L 70.325101 76.092007 \n",
       "L 70.916513 76.369056 \n",
       "L 71.508191 76.620139 \n",
       "L 72.100175 76.845249 \n",
       "L 72.6925 77.044366 \n",
       "L 73.285203 77.217475 \n",
       "L 73.878322 77.364555 \n",
       "L 74.471894 77.485584 \n",
       "L 75.065956 77.580532 \n",
       "L 75.660547 77.649369 \n",
       "L 76.255702 77.692061 \n",
       "L 76.851461 77.70857 \n",
       "L 77.447861 77.698855 \n",
       "L 78.044941 77.662875 \n",
       "L 78.642738 77.600582 \n",
       "L 79.241291 77.511923 \n",
       "L 79.840639 77.396844 \n",
       "L 80.440821 77.255289 \n",
       "L 81.041875 77.087196 \n",
       "L 81.643841 76.892501 \n",
       "L 82.246758 76.671137 \n",
       "L 82.850666 76.423032 \n",
       "L 83.455606 76.14811 \n",
       "L 84.061616 75.846292 \n",
       "L 84.668739 75.517498 \n",
       "L 85.277013 75.161641 \n",
       "L 85.886482 74.77863 \n",
       "L 86.497184 74.368374 \n",
       "L 87.109163 73.930773 \n",
       "L 87.72246 73.465729 \n",
       "L 88.337118 72.973138 \n",
       "L 88.953179 72.452891 \n",
       "L 89.570685 71.90487 \n",
       "L 90.18968 71.328967 \n",
       "L 90.810209 70.725057 \n",
       "L 91.432313 70.093021 \n",
       "L 92.056038 69.432723 \n",
       "L 92.68143 68.744036 \n",
       "L 93.308532 68.026821 \n",
       "L 93.93739 67.280934 \n",
       "L 94.568052 66.506234 \n",
       "L 95.200561 65.702572 \n",
       "L 95.834966 64.869794 \n",
       "L 96.471314 64.007742 \n",
       "L 97.109654 63.116247 \n",
       "L 97.750032 62.195149 \n",
       "L 98.392497 61.244273 \n",
       "L 99.037102 60.263435 \n",
       "L 99.683892 59.252466 \n",
       "L 100.33292 58.211173 \n",
       "L 100.984238 57.13936 \n",
       "L 101.637895 56.036846 \n",
       "L 102.293943 54.903419 \n",
       "L 102.952439 53.73887 \n",
       "L 103.613431 52.542993 \n",
       "L 104.276976 51.315568 \n",
       "L 104.943128 50.056374 \n",
       "L 105.611944 48.765182 \n",
       "L 106.283477 47.441756 \n",
       "L 106.957785 46.085859 \n",
       "L 107.634928 44.697239 \n",
       "L 108.314959 43.27566 \n",
       "L 108.997941 41.820859 \n",
       "L 109.683934 40.332565 \n",
       "L 110.372995 38.810522 \n",
       "L 111.065189 37.254439 \n",
       "L 111.760577 35.66405 \n",
       "L 112.459221 34.039062 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 54.23743 45.473472 \n",
       "L 54.836939 46.6201 \n",
       "L 55.43558 47.739289 \n",
       "L 56.033388 48.831133 \n",
       "L 56.630402 49.895724 \n",
       "L 57.22666 50.933158 \n",
       "L 57.822197 51.943513 \n",
       "L 58.417052 52.926877 \n",
       "L 59.011263 53.883329 \n",
       "L 59.604864 54.812941 \n",
       "L 60.197892 55.715789 \n",
       "L 60.790388 56.591943 \n",
       "L 61.382384 57.441466 \n",
       "L 61.973917 58.264421 \n",
       "L 62.565025 59.060869 \n",
       "L 63.155747 59.830868 \n",
       "L 63.746113 60.574465 \n",
       "L 64.336163 61.291712 \n",
       "L 64.925935 61.982658 \n",
       "L 65.515461 62.647343 \n",
       "L 66.10478 63.285807 \n",
       "L 66.693929 63.898088 \n",
       "L 67.28294 64.484218 \n",
       "L 67.871852 65.044228 \n",
       "L 68.460703 65.578146 \n",
       "L 69.049525 66.085992 \n",
       "L 69.638356 66.56779 \n",
       "L 70.227233 67.023557 \n",
       "L 70.816191 67.453307 \n",
       "L 71.405268 67.857051 \n",
       "L 71.994497 68.234796 \n",
       "L 72.583918 68.586547 \n",
       "L 73.173565 68.912305 \n",
       "L 73.763475 69.21207 \n",
       "L 74.353686 69.485836 \n",
       "L 74.944232 69.733595 \n",
       "L 75.535152 69.955337 \n",
       "L 76.126482 70.151044 \n",
       "L 76.718258 70.320699 \n",
       "L 77.310518 70.464284 \n",
       "L 77.9033 70.581773 \n",
       "L 78.496639 70.673138 \n",
       "L 79.090575 70.738349 \n",
       "L 79.685143 70.77737 \n",
       "L 80.280383 70.790165 \n",
       "L 80.876331 70.776692 \n",
       "L 81.473026 70.73691 \n",
       "L 82.070506 70.67077 \n",
       "L 82.66881 70.57822 \n",
       "L 83.267976 70.459206 \n",
       "L 83.868043 70.313671 \n",
       "L 84.46905 70.141554 \n",
       "L 85.071036 69.942789 \n",
       "L 85.674041 69.71731 \n",
       "L 86.278104 69.465045 \n",
       "L 86.883265 69.185919 \n",
       "L 87.489565 68.879852 \n",
       "L 88.097044 68.546763 \n",
       "L 88.705742 68.186566 \n",
       "L 89.315702 67.79917 \n",
       "L 89.926963 67.384484 \n",
       "L 90.539568 66.942408 \n",
       "L 91.153559 66.472843 \n",
       "L 91.768978 65.975686 \n",
       "L 92.385868 65.450829 \n",
       "L 93.004271 64.898151 \n",
       "L 93.62423 64.317547 \n",
       "L 94.245791 63.708891 \n",
       "L 94.868996 63.072063 \n",
       "L 95.49389 62.406929 \n",
       "L 96.120518 61.71336 \n",
       "L 96.748924 60.991219 \n",
       "L 97.379157 60.240362 \n",
       "L 98.01126 59.460647 \n",
       "L 98.645279 58.651925 \n",
       "L 99.281265 57.814043 \n",
       "L 99.919261 56.946842 \n",
       "L 100.559319 56.050156 \n",
       "L 101.201484 55.123822 \n",
       "L 101.845806 54.167666 \n",
       "L 102.492338 53.181507 \n",
       "L 103.141124 52.165172 \n",
       "L 103.792219 51.11847 \n",
       "L 104.445674 50.041205 \n",
       "L 105.101538 48.933199 \n",
       "L 105.759865 47.794236 \n",
       "L 106.42071 46.624107 \n",
       "L 107.084123 45.42261 \n",
       "L 107.75016 44.189525 \n",
       "L 108.418876 42.924629 \n",
       "L 109.090328 41.627698 \n",
       "L 109.764569 40.29849 \n",
       "L 110.441659 38.936773 \n",
       "L 111.121656 37.542292 \n",
       "L 111.804614 36.114814 \n",
       "L 112.490597 34.654075 \n",
       "L 113.179665 33.159807 \n",
       "L 113.871875 31.631749 \n",
       "L 114.567291 30.06962 \n",
       "L 115.265978 28.473143 \n",
       "L 115.967995 26.842035 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 57.688639 36.054904 \n",
       "L 58.285817 37.202775 \n",
       "L 58.882202 38.323066 \n",
       "L 59.477826 39.415868 \n",
       "L 60.072729 40.481273 \n",
       "L 60.66695 41.51938 \n",
       "L 61.260522 42.530264 \n",
       "L 61.853484 43.514013 \n",
       "L 62.445875 44.470706 \n",
       "L 63.037728 45.400418 \n",
       "L 63.629081 46.303222 \n",
       "L 64.219972 47.179189 \n",
       "L 64.810435 48.02838 \n",
       "L 65.400506 48.850862 \n",
       "L 65.990224 49.646691 \n",
       "L 66.579625 50.415929 \n",
       "L 67.168743 51.15862 \n",
       "L 67.757614 51.874818 \n",
       "L 68.346278 52.564571 \n",
       "L 68.934766 53.227918 \n",
       "L 69.523117 53.8649 \n",
       "L 70.111368 54.475556 \n",
       "L 70.699552 55.059914 \n",
       "L 71.287706 55.618008 \n",
       "L 71.875869 56.149865 \n",
       "L 72.464072 56.655505 \n",
       "L 73.052355 57.13495 \n",
       "L 73.640752 57.588219 \n",
       "L 74.229301 58.015325 \n",
       "L 74.818037 58.41628 \n",
       "L 75.406995 58.791087 \n",
       "L 75.996214 59.139754 \n",
       "L 76.585728 59.462282 \n",
       "L 77.175576 59.758669 \n",
       "L 77.765793 60.028908 \n",
       "L 78.356414 60.272993 \n",
       "L 78.947479 60.490911 \n",
       "L 79.539022 60.682646 \n",
       "L 80.131082 60.84818 \n",
       "L 80.723695 60.987493 \n",
       "L 81.316898 61.100562 \n",
       "L 81.910729 61.187355 \n",
       "L 82.505225 61.247843 \n",
       "L 83.100424 61.28199 \n",
       "L 83.696364 61.289759 \n",
       "L 84.293082 61.271108 \n",
       "L 84.890617 61.225995 \n",
       "L 85.489007 61.15437 \n",
       "L 86.088291 61.056182 \n",
       "L 86.688507 60.931375 \n",
       "L 87.289694 60.779892 \n",
       "L 87.891891 60.601672 \n",
       "L 88.495138 60.396647 \n",
       "L 89.099475 60.164752 \n",
       "L 89.70494 59.905914 \n",
       "L 90.311575 59.620057 \n",
       "L 90.91942 59.3071 \n",
       "L 91.528515 58.966963 \n",
       "L 92.138902 58.599557 \n",
       "L 92.750621 58.204792 \n",
       "L 93.363714 57.782576 \n",
       "L 93.978223 57.332807 \n",
       "L 94.59419 56.855388 \n",
       "L 95.211658 56.350213 \n",
       "L 95.83067 55.817173 \n",
       "L 96.451269 55.256148 \n",
       "L 97.073497 54.667031 \n",
       "L 97.6974 54.049695 \n",
       "L 98.323022 53.404022 \n",
       "L 98.950407 52.729872 \n",
       "L 99.579601 52.02712 \n",
       "L 100.210648 51.295625 \n",
       "L 100.843596 50.535244 \n",
       "L 101.478491 49.745833 \n",
       "L 102.115379 48.927242 \n",
       "L 102.754308 48.079318 \n",
       "L 103.395325 47.201901 \n",
       "L 104.038482 46.294822 \n",
       "L 104.683822 45.357919 \n",
       "L 105.331398 44.391018 \n",
       "L 105.981261 43.393933 \n",
       "L 106.633458 42.366494 \n",
       "L 107.288043 41.308509 \n",
       "L 107.945067 40.219778 \n",
       "L 108.604581 39.100122 \n",
       "L 109.266638 37.949326 \n",
       "L 109.931295 36.767179 \n",
       "L 110.5986 35.553477 \n",
       "L 111.268612 34.307999 \n",
       "L 111.941385 33.030523 \n",
       "L 112.616978 31.720821 \n",
       "L 113.295444 30.378652 \n",
       "L 113.976841 29.003776 \n",
       "L 114.661232 27.595947 \n",
       "L 115.348669 26.154932 \n",
       "L 116.039216 24.68045 \n",
       "L 116.732935 23.172245 \n",
       "L 117.429884 21.630049 \n",
       "L 118.130127 20.053583 \n",
       "L 118.833729 18.442564 \n",
       "L 119.54075 16.796713 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 61.094674 23.967917 \n",
       "L 61.690764 25.120331 \n",
       "L 62.286131 26.244912 \n",
       "L 62.880807 27.341744 \n",
       "L 63.474833 28.410927 \n",
       "L 64.068247 29.452555 \n",
       "L 64.661082 30.466708 \n",
       "L 65.253376 31.453471 \n",
       "L 65.845169 32.412925 \n",
       "L 66.436493 33.345144 \n",
       "L 67.027387 34.2502 \n",
       "L 67.617889 35.12817 \n",
       "L 68.208032 35.979108 \n",
       "L 68.797853 36.803086 \n",
       "L 69.38739 37.600162 \n",
       "L 69.976679 38.370391 \n",
       "L 70.565754 39.113824 \n",
       "L 71.154653 39.830511 \n",
       "L 71.743413 40.520503 \n",
       "L 72.332067 41.183835 \n",
       "L 72.920653 41.820553 \n",
       "L 73.509208 42.430692 \n",
       "L 74.097766 43.014283 \n",
       "L 74.686363 43.571356 \n",
       "L 75.275039 44.101941 \n",
       "L 75.863825 44.606058 \n",
       "L 76.45276 45.083727 \n",
       "L 77.041879 45.534967 \n",
       "L 77.631219 45.959792 \n",
       "L 78.220817 46.358212 \n",
       "L 78.810707 46.730233 \n",
       "L 79.400928 47.075859 \n",
       "L 79.991514 47.395092 \n",
       "L 80.582505 47.687929 \n",
       "L 81.173934 47.954364 \n",
       "L 81.76584 48.194389 \n",
       "L 82.358259 48.407992 \n",
       "L 82.951229 48.595155 \n",
       "L 83.544785 48.75586 \n",
       "L 84.138966 48.890087 \n",
       "L 84.733809 48.99781 \n",
       "L 85.329352 49.079 \n",
       "L 85.925633 49.133625 \n",
       "L 86.522688 49.161648 \n",
       "L 87.120556 49.163032 \n",
       "L 87.719275 49.137734 \n",
       "L 88.318884 49.085711 \n",
       "L 88.919422 49.006912 \n",
       "L 89.520926 48.901286 \n",
       "L 90.123437 48.768776 \n",
       "L 90.726993 48.609322 \n",
       "L 91.331633 48.422864 \n",
       "L 91.937398 48.209333 \n",
       "L 92.544327 47.968661 \n",
       "L 93.152461 47.700776 \n",
       "L 93.76184 47.405598 \n",
       "L 94.372504 47.083048 \n",
       "L 94.984495 46.733044 \n",
       "L 95.597855 46.355496 \n",
       "L 96.212624 45.950309 \n",
       "L 96.828845 45.517396 \n",
       "L 97.446559 45.056646 \n",
       "L 98.06581 44.567965 \n",
       "L 98.686641 44.051247 \n",
       "L 99.309095 43.506379 \n",
       "L 99.933215 42.93324 \n",
       "L 100.559045 42.331722 \n",
       "L 101.18663 41.701695 \n",
       "L 101.816016 41.043039 \n",
       "L 102.447245 40.355614 \n",
       "L 103.080366 39.639292 \n",
       "L 103.715423 38.893933 \n",
       "L 104.352464 38.119387 \n",
       "L 104.991536 37.315509 \n",
       "L 105.632684 36.482151 \n",
       "L 106.275959 35.619157 \n",
       "L 106.921408 34.726363 \n",
       "L 107.569081 33.803597 \n",
       "L 108.219025 32.850698 \n",
       "L 108.871293 31.867487 \n",
       "L 109.525935 30.853776 \n",
       "L 110.183 29.809394 \n",
       "L 110.842542 28.734147 \n",
       "L 111.504614 27.627827 \n",
       "L 112.169265 26.490258 \n",
       "L 112.836551 25.32123 \n",
       "L 113.506529 24.120513 \n",
       "L 114.179249 22.887916 \n",
       "L 114.854769 21.623202 \n",
       "L 115.533145 20.326142 \n",
       "L 116.214436 18.996531 \n",
       "L 116.898695 17.634098 \n",
       "L 117.585984 16.238619 \n",
       "L 118.276363 14.809832 \n",
       "L 118.969888 13.347501 \n",
       "L 119.666622 11.851352 \n",
       "L 120.366628 10.321119 \n",
       "L 121.069966 8.756534 \n",
       "L 121.7767 7.157311 \n",
       "L 122.486897 5.523171 \n",
       "L 123.200617 3.85382 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "    <path d=\"M 64.476493 9.13636 \n",
       "L 65.072725 10.296678 \n",
       "L 65.668301 11.428784 \n",
       "L 66.263255 12.532773 \n",
       "L 66.857626 13.608746 \n",
       "L 67.451452 14.656784 \n",
       "L 68.044768 15.676987 \n",
       "L 68.637611 16.669427 \n",
       "L 69.230021 17.634197 \n",
       "L 69.82203 18.571358 \n",
       "L 70.413676 19.480998 \n",
       "L 71.004999 20.36318 \n",
       "L 71.596031 21.217972 \n",
       "L 72.18681 22.045435 \n",
       "L 72.777373 22.845632 \n",
       "L 73.367757 23.618624 \n",
       "L 73.957996 24.364455 \n",
       "L 74.548128 25.083178 \n",
       "L 75.138189 25.774841 \n",
       "L 75.728215 26.439483 \n",
       "L 76.318241 27.077148 \n",
       "L 76.908307 27.687872 \n",
       "L 77.498444 28.27169 \n",
       "L 78.088692 28.828625 \n",
       "L 78.679087 29.358712 \n",
       "L 79.269664 29.861967 \n",
       "L 79.86046 30.338417 \n",
       "L 80.451511 30.78807 \n",
       "L 81.042855 31.210948 \n",
       "L 81.634527 31.607061 \n",
       "L 82.226563 31.976407 \n",
       "L 82.819002 32.318996 \n",
       "L 83.411879 32.634831 \n",
       "L 84.005231 32.9239 \n",
       "L 84.599096 33.186206 \n",
       "L 85.19351 33.421736 \n",
       "L 85.788511 33.630474 \n",
       "L 86.384136 33.812408 \n",
       "L 86.980422 33.967517 \n",
       "L 87.577406 34.095778 \n",
       "L 88.175128 34.197166 \n",
       "L 88.773624 34.271647 \n",
       "L 89.372933 34.319195 \n",
       "L 89.973092 34.339768 \n",
       "L 90.574141 34.333325 \n",
       "L 91.176118 34.299827 \n",
       "L 91.779062 34.239229 \n",
       "L 92.383011 34.151475 \n",
       "L 92.988005 34.036519 \n",
       "L 93.594084 33.894296 \n",
       "L 94.201286 33.724746 \n",
       "L 94.809653 33.527812 \n",
       "L 95.419223 33.303418 \n",
       "L 96.030038 33.051498 \n",
       "L 96.642139 32.771975 \n",
       "L 97.255566 32.464772 \n",
       "L 97.87036 32.129805 \n",
       "L 98.486564 31.766989 \n",
       "L 99.104218 31.376231 \n",
       "L 99.723366 30.95744 \n",
       "L 100.344049 30.510519 \n",
       "L 100.966311 30.035364 \n",
       "L 101.590194 29.531873 \n",
       "L 102.215743 28.999938 \n",
       "L 102.843002 28.439445 \n",
       "L 103.472014 27.850268 \n",
       "L 104.102824 27.232299 \n",
       "L 104.735477 26.585405 \n",
       "L 105.37002 25.909463 \n",
       "L 106.006497 25.204335 \n",
       "L 106.644956 24.469884 \n",
       "L 107.285443 23.705961 \n",
       "L 107.928005 22.912427 \n",
       "L 108.572691 22.089128 \n",
       "L 109.219548 21.235913 \n",
       "L 109.868626 20.352625 \n",
       "L 110.519972 19.439089 \n",
       "L 111.17364 18.495139 \n",
       "L 111.829675 17.520605 \n",
       "L 112.488131 16.51531 \n",
       "L 113.149062 15.47905 \n",
       "L 113.812514 14.411668 \n",
       "L 114.478544 13.312953 \n",
       "L 115.147206 12.182701 \n",
       "L 115.818549 11.020725 \n",
       "L 116.492632 9.826812 \n",
       "L 117.16951 8.600735 \n",
       "L 117.849236 7.342286 \n",
       "L 118.531868 6.051241 \n",
       "L 119.217465 4.727362 \n",
       "L 119.906084 3.37042 \n",
       "L 120.597783 1.98016 \n",
       "L 121.292622 0.556347 \n",
       "L 121.990663 -0.901285 \n",
       "L 122.037073 -1 \n",
       "\" clip-path=\"url(#p283ef8d6b3)\" style=\"fill: none; stroke: #800080; stroke-width: 1.5\"/>\n",
       "   </g>\n",
       "  </g>\n",
       " </g>\n",
       " <defs>\n",
       "  <clipPath id=\"p283ef8d6b3\">\n",
       "   <rect x=\"7.2\" y=\"7.2\" width=\"135.9\" height=\"135.9\"/>\n",
       "  </clipPath>\n",
       " </defs>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<Figure size 252x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Construct grid and compute function\n",
    "x, y = np.meshgrid(np.linspace(-2, 2, 101),\n",
    "                   np.linspace(-2, 2, 101), indexing='ij')\n",
    "z = x*np.exp(- x**2 - y**2)\n",
    "\n",
    "# Compute approximating quadratic with gradient and Hessian at (1, 0)\n",
    "w = np.exp(-1)*(-1 - (x + 1) + (x + 1)**2 + y**2)\n",
    "\n",
    "# Plot function\n",
    "ax = d2l.plt.figure().add_subplot(111, projection='3d')\n",
    "ax.plot_wireframe(x.asnumpy(), y.asnumpy(), z.asnumpy(),\n",
    "                  **{'rstride': 10, 'cstride': 10})\n",
    "ax.plot_wireframe(x.asnumpy(), y.asnumpy(), w.asnumpy(),\n",
    "                  **{'rstride': 10, 'cstride': 10}, color='purple')\n",
    "d2l.plt.xlabel('x')\n",
    "d2l.plt.ylabel('y')\n",
    "d2l.set_figsize()\n",
    "ax.set_xlim(-2, 2)\n",
    "ax.set_ylim(-2, 2)\n",
    "ax.set_zlim(-1, 1)\n",
    "ax.dist = 12"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "origin_pos": 20
   },
   "source": [
    "This forms the basis for Newton's Algorithm discussed in :numref:`sec_gd`, where we perform numerical optimization iteratively finding the best fitting quadratic, and then exactly minimizing that quadratic.\n",
    "\n",
    "## A Little Matrix Calculus\n",
    "Derivatives of functions involving matrices turn out to be particularly nice.  This section can become notationally heavy, so may be skipped in a first reading, but it is useful to know how derivatives of functions involving common matrix operations are often much cleaner than one might initially anticipate, particularly given how central matrix operations are to deep learning applications.\n",
    "\n",
    "Let us begin with an example.  Suppose that we have some fixed column vector $\\boldsymbol{\\beta}$, and we want to take the product function $f(\\mathbf{x}) = \\boldsymbol{\\beta}^\\top\\mathbf{x}$, and understand how the dot product changes when we change $\\mathbf{x}$.\n",
    "\n",
    "A bit of notation that will be useful when working with matrix derivatives in ML is called the *denominator layout matrix derivative* where we assemble our partial derivatives into the shape of whatever vector, matrix, or tensor is in the denominator of the differential.  In this case, we will write\n",
    "\n",
    "$$\n",
    "\\frac{df}{d\\mathbf{x}} = \\begin{bmatrix}\n",
    "\\frac{df}{dx_1} \\\\\n",
    "\\vdots \\\\\n",
    "\\frac{df}{dx_n}\n",
    "\\end{bmatrix},\n",
    "$$\n",
    "\n",
    "where we matched the shape of the column vector $\\mathbf{x}$.\n",
    "\n",
    "If we write out our function into components this is\n",
    "\n",
    "$$\n",
    "f(\\mathbf{x}) = \\sum_{i = 1}^{n} \\beta_ix_i = \\beta_1x_1 + \\cdots + \\beta_nx_n.\n",
    "$$\n",
    "\n",
    "If we now take the partial derivative with respect to say $\\beta_1$, note that everything is zero but the first term, which is just $x_1$ multiplied by $\\beta_1$, so we obtain that\n",
    "\n",
    "$$\n",
    "\\frac{df}{dx_1} = \\beta_1,\n",
    "$$\n",
    "\n",
    "or more generally that\n",
    "\n",
    "$$\n",
    "\\frac{df}{dx_i} = \\beta_i.\n",
    "$$\n",
    "\n",
    "We can now reassemble this into a matrix to see\n",
    "\n",
    "$$\n",
    "\\frac{df}{d\\mathbf{x}} = \\begin{bmatrix}\n",
    "\\frac{df}{dx_1} \\\\\n",
    "\\vdots \\\\\n",
    "\\frac{df}{dx_n}\n",
    "\\end{bmatrix} = \\begin{bmatrix}\n",
    "\\beta_1 \\\\\n",
    "\\vdots \\\\\n",
    "\\beta_n\n",
    "\\end{bmatrix} = \\boldsymbol{\\beta}.\n",
    "$$\n",
    "\n",
    "This illustrates a few factors about matrix calculus that we will often counter throughout this section:\n",
    "\n",
    "* First, The computations will get rather involved.\n",
    "* Second, The final results are much cleaner than the intermediate process, and will always look similar to the single variable case.  In this case, note that $\\frac{d}{dx}(bx) = b$ and $\\frac{d}{d\\mathbf{x}} (\\boldsymbol{\\beta}^\\top\\mathbf{x}) = \\boldsymbol{\\beta}$ are both similar.\n",
    "* Third, transposes can often appear seemingly from nowhere.  The core reason for this is the convention that we match the shape of the denominator, thus when we multiply matrices, we will need to take transposes to match back to the shape of the original term.\n",
    "\n",
    "To keep building intuition, let us try a computation that is a little harder.  Suppose that we have a column vector $\\mathbf{x}$, and a square matrix $A$ and we want to compute\n",
    "\n",
    "$$\\frac{d}{d\\mathbf{x}}(\\mathbf{x}^\\top A \\mathbf{x}).$$\n",
    ":eqlabel:`eq_mat_goal_1`\n",
    "\n",
    "To drive towards easier to manipulate notation, let us consider this problem using Einstein notation.  In this case we can write the function as\n",
    "\n",
    "$$\n",
    "\\mathbf{x}^\\top A \\mathbf{x} = x_ia_{ij}x_j.\n",
    "$$\n",
    "\n",
    "To compute our derivative, we need to understand for every $k$, what is the value of\n",
    "\n",
    "$$\n",
    "\\frac{d}{dx_k}(\\mathbf{x}^\\top A \\mathbf{x}) = \\frac{d}{dx_k}x_ia_{ij}x_j.\n",
    "$$\n",
    "\n",
    "By the product rule, this is\n",
    "\n",
    "$$\n",
    "\\frac{d}{dx_k}x_ia_{ij}x_j = \\frac{dx_i}{dx_k}a_{ij}x_j + x_ia_{ij}\\frac{dx_j}{dx_k}.\n",
    "$$\n",
    "\n",
    "For a term like $\\frac{dx_i}{dx_k}$, it is not hard to see that this is one when $i=k$ and zero otherwise.  This means that every term where $i$ and $k$ are different vanish from this sum, so the only terms that remain in that first sum are the ones where $i=k$.  The same reasoning holds for the second term where we need $j=k$.  This gives\n",
    "\n",
    "$$\n",
    "\\frac{d}{dx_k}x_ia_{ij}x_j = a_{kj}x_j + x_ia_{ik}.\n",
    "$$\n",
    "\n",
    "Now, the names of the indices in Einstein notation are arbitrary---the fact that $i$ and $j$ are different is immaterial to this computation at this point, so we can re-index so that they both use $i$ to see that\n",
    "\n",
    "$$\n",
    "\\frac{d}{dx_k}x_ia_{ij}x_j = a_{ki}x_i + x_ia_{ik} = (a_{ki} + a_{ik})x_i.\n",
    "$$\n",
    "\n",
    "Now, here is where we start to need some practice to go further.  Let us try and identify this outcome in terms of matrix operations.  $a_{ki} + a_{ik}$ is the $k, i$-th component of $\\mathbf{A} + \\mathbf{A}^\\top$.  This gives\n",
    "\n",
    "$$\n",
    "\\frac{d}{dx_k}x_ia_{ij}x_j = [\\mathbf{A} + \\mathbf{A}^\\top]_{ki}x_i.\n",
    "$$\n",
    "\n",
    "Similarly, this term is now the product of the matrix $\\mathbf{A} + \\mathbf{A}^\\top$ by the vector $\\mathbf{x}$, so we see that\n",
    "\n",
    "$$\n",
    "\\left[\\frac{d}{d\\mathbf{x}}(\\mathbf{x}^\\top A \\mathbf{x})\\right]_k = \\frac{d}{dx_k}x_ia_{ij}x_j = [(\\mathbf{A} + \\mathbf{A}^\\top)\\mathbf{x}]_k.\n",
    "$$\n",
    "\n",
    "Thus, we see that the $k$-th entry of the desired derivative from :eqref:`eq_mat_goal_1` is just the $k$-th entry of the vector on the right, and thus the two are the same.  Thus yields\n",
    "\n",
    "$$\n",
    "\\frac{d}{d\\mathbf{x}}(\\mathbf{x}^\\top A \\mathbf{x}) = (\\mathbf{A} + \\mathbf{A}^\\top)\\mathbf{x}.\n",
    "$$\n",
    "\n",
    "This required significantly more work than our last one, but the final result is small.  More than that, consider the following computation for traditional single variable derivatives:\n",
    "\n",
    "$$\n",
    "\\frac{d}{dx}(xax) = \\frac{dx}{dx}ax + xa\\frac{dx}{dx} = (a+a)x.\n",
    "$$\n",
    "\n",
    "Equivalently $\\frac{d}{dx}(ax^2) = 2ax = (a+a)x$.  Again, we get a result that looks rather like the single variable result but with a transpose tossed in.\n",
    "\n",
    "At this point, the pattern should be looking rather suspicious, so let us try to figure out why.  When we take matrix derivatives like this, let us first assume that the expression we get will be another matrix expression: an expression we can write it in terms of products and sums of matrices and their transposes.  If such an expression exists, it will need to be true for all matrices.  In particular, it will need to be true of $1 \\times 1$ matrices, in which case the matrix product is just the product of the numbers, the matrix sum is just the sum, and the transpose does nothing at all!  In other words, whatever expression we get *must* match the single variable expression.  This means that, with some practice, one can often guess matrix derivatives just by knowing what the associated single variable expression must look like!\n",
    "\n",
    "Let us try this out.  Suppose that $\\mathbf{X}$ is a $n \\times m$ matrix, $\\mathbf{U}$ is an $n \\times r$ and $\\mathbf{V}$ is an $r \\times m$.  Let us try to compute\n",
    "\n",
    "$$\\frac{d}{d\\mathbf{V}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2} = \\;?$$\n",
    ":eqlabel:`eq_mat_goal_2`\n",
    "\n",
    "This computation is important in an area called matrix factorization.  For us, however, it is just a derivative to compute.  Let us try to imaging what this would be for $1\\times1$ matrices.  In that case, we get the expression\n",
    "\n",
    "$$\n",
    "\\frac{d}{dv} (x-uv)^{2}= -2(x-uv)u,\n",
    "$$\n",
    "\n",
    "where, the derivative is rather standard.  If we try to convert this back into a matrix expression we get\n",
    "\n",
    "$$\n",
    "\\frac{d}{d\\mathbf{V}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= -2(\\mathbf{X} - \\mathbf{U}\\mathbf{V})\\mathbf{U}.\n",
    "$$\n",
    "\n",
    "However, if we look at this it does not quite work.  Recall that $\\mathbf{X}$ is $n \\times m$, as is $\\mathbf{U}\\mathbf{V}$, so the matrix $2(\\mathbf{X} - \\mathbf{U}\\mathbf{V})$ is $n \\times m$.  On the other hand $\\mathbf{U}$ is $n \\times r$, and we cannot multiply a $n \\times m$ and a $n \\times r$ matrix since the dimensions do not match!\n",
    "\n",
    "We want to get $\\frac{d}{d\\mathbf{V}}$, which is the same shape as $\\mathbf{V}$, which is $r \\times m$.  So somehow we need to take a $n \\times m$ matrix and a $n \\times r$ matrix, multiply them together (perhaps with some transposes) to get a $r \\times m$. We can do this by multiplying $U^\\top$ by $(\\mathbf{X} - \\mathbf{U}\\mathbf{V})$.  Thus, we can guess the solution to :eqref:`eq_mat_goal_2` is\n",
    "\n",
    "$$\n",
    "\\frac{d}{d\\mathbf{V}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= -2\\mathbf{U}^\\top(\\mathbf{X} - \\mathbf{U}\\mathbf{V}).\n",
    "$$\n",
    "\n",
    "To show that this works, we would be remiss to not provide a detailed computation.  If we already believe that this rule-of-thumb works, feel free to skip past this derivation.  To compute\n",
    "\n",
    "$$\n",
    "\\frac{d}{d\\mathbf{V}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^2,\n",
    "$$\n",
    "\n",
    "we must find for every $a$, and $b$\n",
    "\n",
    "$$\n",
    "\\frac{d}{dv_{ab}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= \\frac{d}{dv_{ab}} \\sum_{i, j}\\left(x_{ij} - \\sum_k u_{ik}v_{kj}\\right)^2.\n",
    "$$\n",
    "\n",
    "Recalling that all entries of $\\mathbf{X}$ and $\\mathbf{U}$ are constants as far as $\\frac{d}{dv_{ab}}$ is concerned, we may push the derivative inside the sum, and apply the chain rule to the square to get\n",
    "\n",
    "$$\n",
    "\\frac{d}{dv_{ab}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= \\sum_{i, j}2\\left(x_{ij} - \\sum_k u_{ik}v_{kj}\\right)\\left(-\\sum_k u_{ik}\\frac{dv_{kj}}{dv_{ab}} \\right).\n",
    "$$\n",
    "\n",
    "As in the previous derivation, we may note that $\\frac{dv_{kj}}{dv_{ab}}$ is only non-zero if the $k=a$ and $j=b$.  If either of those conditions do not hold, the term in the sum is zero, and we may freely discard it.  We see that\n",
    "\n",
    "$$\n",
    "\\frac{d}{dv_{ab}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= -2\\sum_{i}\\left(x_{ib} - \\sum_k u_{ik}v_{kb}\\right)u_{ia}.\n",
    "$$\n",
    "\n",
    "An important subtlety here is that the requirement that $k=a$ does not occur inside the inner sum since that $k$ is a dummy variable which we are summing over inside the inner term.  For a notationally cleaner example, consider why\n",
    "\n",
    "$$\n",
    "\\frac{d}{dx_1} \\left(\\sum_i x_i \\right)^{2}= 2\\left(\\sum_i x_i \\right).\n",
    "$$\n",
    "\n",
    "From this point, we may start identifying components of the sum.  First,\n",
    "\n",
    "$$\n",
    "\\sum_k u_{ik}v_{kb} = [\\mathbf{U}\\mathbf{V}]_{ib}.\n",
    "$$\n",
    "\n",
    "So the entire expression in the inside of the sum is\n",
    "\n",
    "$$\n",
    "x_{ib} - \\sum_k u_{ik}v_{kb} = [\\mathbf{X}-\\mathbf{U}\\mathbf{V}]_{ib}.\n",
    "$$\n",
    "\n",
    "This means we may now write our derivative as\n",
    "\n",
    "$$\n",
    "\\frac{d}{dv_{ab}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= -2\\sum_{i}[\\mathbf{X}-\\mathbf{U}\\mathbf{V}]_{ib}u_{ia}.\n",
    "$$\n",
    "\n",
    "We want this to look like the $a, b$ element of a matrix so we can use the technique as in the previous example to arrive at a matrix expression, which means that we need to exchange the order of the indices on $u_{ia}$.  If we notice that $u_{ia} = [\\mathbf{U}^\\top]_{ai}$, we can then write\n",
    "\n",
    "$$\n",
    "\\frac{d}{dv_{ab}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= -2\\sum_{i} [\\mathbf{U}^\\top]_{ai}[\\mathbf{X}-\\mathbf{U}\\mathbf{V}]_{ib}.\n",
    "$$\n",
    "\n",
    "This is a matrix product, and thus we can conclude that\n",
    "\n",
    "$$\n",
    "\\frac{d}{dv_{ab}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= -2[\\mathbf{U}^\\top(\\mathbf{X}-\\mathbf{U}\\mathbf{V})]_{ab}.\n",
    "$$\n",
    "\n",
    "and thus we may write the solution to :eqref:`eq_mat_goal_2`\n",
    "\n",
    "$$\n",
    "\\frac{d}{d\\mathbf{V}} \\|\\mathbf{X} - \\mathbf{U}\\mathbf{V}\\|_2^{2}= -2\\mathbf{U}^\\top(\\mathbf{X} - \\mathbf{U}\\mathbf{V}).\n",
    "$$\n",
    "\n",
    "This matches the solution we guessed above!\n",
    "\n",
    "It is reasonable to ask at this point, \"Why can I not just write down matrix versions of all the calculus rules I have learned?  It is clear this is still mechanical.  Why do we not just get it over with!\"  And indeed there are such rules and :cite:`Petersen.Pedersen.ea.2008` provides an excellent summary.  However, due to the plethora of ways matrix operations can be combined compared to single values, there are many more matrix derivative rules than single variable ones.  It is often the case that it is best to work with the indices, or leave it up to automatic differentiation when appropriate.\n",
    "\n",
    "## Summary\n",
    "\n",
    "* In higher dimensions, we can define gradients which serve the same purpose as derivatives in one dimension.  These allow us to see how a multi-variable function changes when we make an arbitrary small change to the inputs.\n",
    "* The backpropagation algorithm can be seen to be a method of organizing the multi-variable chain rule to allow for the efficient computation of many partial derivatives.\n",
    "* Matrix calculus allows us to write the derivatives of matrix expressions in concise ways.\n",
    "\n",
    "## Exercises\n",
    "1. Given a column vector $\\boldsymbol{\\beta}$, compute the derivatives of both $f(\\mathbf{x}) = \\boldsymbol{\\beta}^\\top\\mathbf{x}$ and $g(\\mathbf{x}) = \\mathbf{x}^\\top\\boldsymbol{\\beta}$.  Why do you get the same answer?\n",
    "2. Let $\\mathbf{v}$ be an $n$ dimension vector. What is $\\frac{\\partial}{\\partial\\mathbf{v}}\\|\\mathbf{v}\\|_2$?\n",
    "3. Let $L(x, y) = \\log(e^x + e^y)$.  Compute the gradient.  What is the sum of the components of the gradient?\n",
    "4. Let $f(x, y) = x^2y + xy^2$. Show that the only critical point is $(0,0)$. By considering $f(x, x)$, determine if $(0,0)$ is a maximum, minimum, or neither.\n",
    "5. Suppose that we are minimizing a function $f(\\mathbf{x}) = g(\\mathbf{x}) + h(\\mathbf{x})$.  How can we geometrically interpret the condition of $\\nabla f = 0$ in terms of $g$ and $h$?\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "origin_pos": 21,
    "tab": [
     "mxnet"
    ]
   },
   "source": [
    "[Discussions](https://discuss.d2l.ai/t/413)\n"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}